UNPKG

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