1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | import { __assign, __extends } from "tslib";
|
24 | import { MDCFoundation } from '@material/base/foundation';
|
25 | import { cssClasses, numbers, strings } from './constants';
|
26 | var MDCCheckboxFoundation = (function (_super) {
|
27 | __extends(MDCCheckboxFoundation, _super);
|
28 | function MDCCheckboxFoundation(adapter) {
|
29 | var _this = _super.call(this, __assign(__assign({}, MDCCheckboxFoundation.defaultAdapter), adapter)) || this;
|
30 | _this.currentCheckState = strings.TRANSITION_STATE_INIT;
|
31 | _this.currentAnimationClass = '';
|
32 | _this.animEndLatchTimer = 0;
|
33 | _this.enableAnimationEndHandler = false;
|
34 | return _this;
|
35 | }
|
36 | Object.defineProperty(MDCCheckboxFoundation, "cssClasses", {
|
37 | get: function () {
|
38 | return cssClasses;
|
39 | },
|
40 | enumerable: false,
|
41 | configurable: true
|
42 | });
|
43 | Object.defineProperty(MDCCheckboxFoundation, "strings", {
|
44 | get: function () {
|
45 | return strings;
|
46 | },
|
47 | enumerable: false,
|
48 | configurable: true
|
49 | });
|
50 | Object.defineProperty(MDCCheckboxFoundation, "numbers", {
|
51 | get: function () {
|
52 | return numbers;
|
53 | },
|
54 | enumerable: false,
|
55 | configurable: true
|
56 | });
|
57 | Object.defineProperty(MDCCheckboxFoundation, "defaultAdapter", {
|
58 | get: function () {
|
59 | return {
|
60 | addClass: function () { return undefined; },
|
61 | forceLayout: function () { return undefined; },
|
62 | hasNativeControl: function () { return false; },
|
63 | isAttachedToDOM: function () { return false; },
|
64 | isChecked: function () { return false; },
|
65 | isIndeterminate: function () { return false; },
|
66 | removeClass: function () { return undefined; },
|
67 | removeNativeControlAttr: function () { return undefined; },
|
68 | setNativeControlAttr: function () { return undefined; },
|
69 | setNativeControlDisabled: function () { return undefined; },
|
70 | };
|
71 | },
|
72 | enumerable: false,
|
73 | configurable: true
|
74 | });
|
75 | MDCCheckboxFoundation.prototype.init = function () {
|
76 | this.currentCheckState = this.determineCheckState();
|
77 | this.updateAriaChecked();
|
78 | this.adapter.addClass(cssClasses.UPGRADED);
|
79 | };
|
80 | MDCCheckboxFoundation.prototype.destroy = function () {
|
81 | clearTimeout(this.animEndLatchTimer);
|
82 | };
|
83 | MDCCheckboxFoundation.prototype.setDisabled = function (disabled) {
|
84 | this.adapter.setNativeControlDisabled(disabled);
|
85 | if (disabled) {
|
86 | this.adapter.addClass(cssClasses.DISABLED);
|
87 | }
|
88 | else {
|
89 | this.adapter.removeClass(cssClasses.DISABLED);
|
90 | }
|
91 | };
|
92 | |
93 |
|
94 |
|
95 | MDCCheckboxFoundation.prototype.handleAnimationEnd = function () {
|
96 | var _this = this;
|
97 | if (!this.enableAnimationEndHandler) {
|
98 | return;
|
99 | }
|
100 | clearTimeout(this.animEndLatchTimer);
|
101 | this.animEndLatchTimer = setTimeout(function () {
|
102 | _this.adapter.removeClass(_this.currentAnimationClass);
|
103 | _this.enableAnimationEndHandler = false;
|
104 | }, numbers.ANIM_END_LATCH_MS);
|
105 | };
|
106 | |
107 |
|
108 |
|
109 | MDCCheckboxFoundation.prototype.handleChange = function () {
|
110 | this.transitionCheckState();
|
111 | };
|
112 | MDCCheckboxFoundation.prototype.transitionCheckState = function () {
|
113 | if (!this.adapter.hasNativeControl()) {
|
114 | return;
|
115 | }
|
116 | var oldState = this.currentCheckState;
|
117 | var newState = this.determineCheckState();
|
118 | if (oldState === newState) {
|
119 | return;
|
120 | }
|
121 | this.updateAriaChecked();
|
122 | var TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;
|
123 | var SELECTED = cssClasses.SELECTED;
|
124 | if (newState === TRANSITION_STATE_UNCHECKED) {
|
125 | this.adapter.removeClass(SELECTED);
|
126 | }
|
127 | else {
|
128 | this.adapter.addClass(SELECTED);
|
129 | }
|
130 |
|
131 |
|
132 | if (this.currentAnimationClass.length > 0) {
|
133 | clearTimeout(this.animEndLatchTimer);
|
134 | this.adapter.forceLayout();
|
135 | this.adapter.removeClass(this.currentAnimationClass);
|
136 | }
|
137 | this.currentAnimationClass =
|
138 | this.getTransitionAnimationClass(oldState, newState);
|
139 | this.currentCheckState = newState;
|
140 |
|
141 |
|
142 | if (this.adapter.isAttachedToDOM() &&
|
143 | this.currentAnimationClass.length > 0) {
|
144 | this.adapter.addClass(this.currentAnimationClass);
|
145 | this.enableAnimationEndHandler = true;
|
146 | }
|
147 | };
|
148 | MDCCheckboxFoundation.prototype.determineCheckState = function () {
|
149 | var TRANSITION_STATE_INDETERMINATE = strings.TRANSITION_STATE_INDETERMINATE, TRANSITION_STATE_CHECKED = strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;
|
150 | if (this.adapter.isIndeterminate()) {
|
151 | return TRANSITION_STATE_INDETERMINATE;
|
152 | }
|
153 | return this.adapter.isChecked() ? TRANSITION_STATE_CHECKED :
|
154 | TRANSITION_STATE_UNCHECKED;
|
155 | };
|
156 | MDCCheckboxFoundation.prototype.getTransitionAnimationClass = function (oldState, newState) {
|
157 | var TRANSITION_STATE_INIT = strings.TRANSITION_STATE_INIT, TRANSITION_STATE_CHECKED = strings.TRANSITION_STATE_CHECKED, TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;
|
158 | var _a = MDCCheckboxFoundation.cssClasses, ANIM_UNCHECKED_CHECKED = _a.ANIM_UNCHECKED_CHECKED, ANIM_UNCHECKED_INDETERMINATE = _a.ANIM_UNCHECKED_INDETERMINATE, ANIM_CHECKED_UNCHECKED = _a.ANIM_CHECKED_UNCHECKED, ANIM_CHECKED_INDETERMINATE = _a.ANIM_CHECKED_INDETERMINATE, ANIM_INDETERMINATE_CHECKED = _a.ANIM_INDETERMINATE_CHECKED, ANIM_INDETERMINATE_UNCHECKED = _a.ANIM_INDETERMINATE_UNCHECKED;
|
159 | switch (oldState) {
|
160 | case TRANSITION_STATE_INIT:
|
161 | if (newState === TRANSITION_STATE_UNCHECKED) {
|
162 | return '';
|
163 | }
|
164 | return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
|
165 | case TRANSITION_STATE_UNCHECKED:
|
166 | return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;
|
167 | case TRANSITION_STATE_CHECKED:
|
168 | return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;
|
169 | default:
|
170 | return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;
|
171 | }
|
172 | };
|
173 | MDCCheckboxFoundation.prototype.updateAriaChecked = function () {
|
174 |
|
175 | if (this.adapter.isIndeterminate()) {
|
176 | this.adapter.setNativeControlAttr(strings.ARIA_CHECKED_ATTR, strings.ARIA_CHECKED_INDETERMINATE_VALUE);
|
177 | }
|
178 | else {
|
179 |
|
180 |
|
181 | this.adapter.removeNativeControlAttr(strings.ARIA_CHECKED_ATTR);
|
182 | }
|
183 | };
|
184 | return MDCCheckboxFoundation;
|
185 | }(MDCFoundation));
|
186 | export { MDCCheckboxFoundation };
|
187 |
|
188 | export default MDCCheckboxFoundation;
|
189 |
|
\ | No newline at end of file |