1 | import { bindingBehavior, bindingMode } from 'aurelia-binding';
|
2 | import { mixin } from 'aurelia-metadata';
|
3 |
|
4 | let modeBindingBehavior = {
|
5 |
|
6 | bind(binding, source, lookupFunctions) {
|
7 | binding.originalMode = binding.mode;
|
8 | binding.mode = this.mode;
|
9 | },
|
10 |
|
11 |
|
12 | unbind(binding, source) {
|
13 | binding.mode = binding.originalMode;
|
14 | binding.originalMode = null;
|
15 | }
|
16 | };
|
17 |
|
18 | @mixin(modeBindingBehavior)
|
19 | @bindingBehavior('oneTime')
|
20 | export class OneTimeBindingBehavior {
|
21 |
|
22 | mode: bindingMode;
|
23 |
|
24 | constructor() {
|
25 | this.mode = bindingMode.oneTime;
|
26 | }
|
27 | }
|
28 |
|
29 | @mixin(modeBindingBehavior)
|
30 | @bindingBehavior('oneWay')
|
31 | export class OneWayBindingBehavior {
|
32 |
|
33 | mode: bindingMode;
|
34 |
|
35 | constructor() {
|
36 | this.mode = bindingMode.toView;
|
37 | }
|
38 | }
|
39 |
|
40 | @mixin(modeBindingBehavior)
|
41 | @bindingBehavior('toView')
|
42 | export class ToViewBindingBehavior {
|
43 |
|
44 | mode: bindingMode;
|
45 |
|
46 | constructor() {
|
47 | this.mode = bindingMode.toView;
|
48 | }
|
49 | }
|
50 |
|
51 | @mixin(modeBindingBehavior)
|
52 | @bindingBehavior('fromView')
|
53 | export class FromViewBindingBehavior {
|
54 |
|
55 | mode: bindingMode;
|
56 |
|
57 | constructor() {
|
58 | this.mode = bindingMode.fromView;
|
59 | }
|
60 | }
|
61 |
|
62 | @mixin(modeBindingBehavior)
|
63 | @bindingBehavior('twoWay')
|
64 | export class TwoWayBindingBehavior {
|
65 |
|
66 | mode: bindingMode;
|
67 |
|
68 | constructor() {
|
69 | this.mode = bindingMode.twoWay;
|
70 | }
|
71 | }
|