ku4web-components 6.4.85 → 6.4.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/cjs/ku4-carousel-controls.cjs.entry.js +2 -2
  2. package/dist/cjs/ku4-carousel-slide.cjs.entry.js +1 -1
  3. package/dist/cjs/ku4-carousel.cjs.entry.js +3 -3
  4. package/dist/cjs/ku4-col.cjs.entry.js +1 -1
  5. package/dist/cjs/ku4-drawer.cjs.entry.js +1 -1
  6. package/dist/cjs/ku4-feature.cjs.entry.js +2 -2
  7. package/dist/cjs/ku4-focus-trap.cjs.entry.js +26 -26
  8. package/dist/cjs/ku4-form.cjs.entry.js +3 -3
  9. package/dist/cjs/ku4-grid.cjs.entry.js +1 -1
  10. package/dist/cjs/ku4-label.cjs.entry.js +2 -2
  11. package/dist/cjs/ku4-mask.cjs.entry.js +3 -3
  12. package/dist/cjs/ku4-modal.cjs.entry.js +9 -4
  13. package/dist/cjs/ku4-panel.cjs.entry.js +1 -1
  14. package/dist/cjs/ku4-preview.cjs.entry.js +14 -43
  15. package/dist/cjs/ku4-tab-list.cjs.entry.js +4 -4
  16. package/dist/cjs/ku4-tab-panel.cjs.entry.js +3 -3
  17. package/dist/cjs/ku4-tab.cjs.entry.js +3 -3
  18. package/dist/cjs/ku4-table.cjs.entry.js +1 -1
  19. package/dist/cjs/ku4-tooltip.cjs.entry.js +2 -2
  20. package/dist/cjs/ku4-validation.cjs.entry.js +2 -2
  21. package/dist/cjs/ku4web-components.cjs.js +7 -102
  22. package/dist/cjs/loader.cjs.js +2 -18
  23. package/dist/esm/ku4-carousel-controls.entry.js +2 -2
  24. package/dist/esm/ku4-carousel-slide.entry.js +1 -1
  25. package/dist/esm/ku4-carousel.entry.js +3 -3
  26. package/dist/esm/ku4-col.entry.js +1 -1
  27. package/dist/esm/ku4-drawer.entry.js +1 -1
  28. package/dist/esm/ku4-feature.entry.js +2 -2
  29. package/dist/esm/ku4-focus-trap.entry.js +3 -3
  30. package/dist/esm/ku4-form.entry.js +3 -3
  31. package/dist/esm/ku4-grid.entry.js +1 -1
  32. package/dist/esm/ku4-label.entry.js +2 -2
  33. package/dist/esm/ku4-mask.entry.js +3 -3
  34. package/dist/esm/ku4-modal.entry.js +9 -4
  35. package/dist/esm/ku4-panel.entry.js +1 -1
  36. package/dist/esm/ku4-preview.entry.js +5 -34
  37. package/dist/esm/ku4-tab-list.entry.js +4 -4
  38. package/dist/esm/ku4-tab-panel.entry.js +3 -3
  39. package/dist/esm/ku4-tab.entry.js +3 -3
  40. package/dist/esm/ku4-table.entry.js +1 -1
  41. package/dist/esm/ku4-tooltip.entry.js +2 -2
  42. package/dist/esm/ku4-validation.entry.js +2 -2
  43. package/dist/esm/ku4web-components.js +7 -102
  44. package/dist/esm/loader.js +2 -18
  45. package/dist/esm-es5/ku4-mask.entry.js +1 -1
  46. package/dist/esm-es5/ku4-modal.entry.js +1 -1
  47. package/dist/esm-es5/ku4web-components.js +1 -1
  48. package/dist/esm-es5/loader.js +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/ku4web-components/index.esm.js +0 -1
  51. package/dist/ku4web-components/ku4web-components.css +1 -299
  52. package/dist/ku4web-components/ku4web-components.esm.js +1 -129
  53. package/dist/ku4web-components/ku4web-components.js +1 -1
  54. package/dist/ku4web-components/p-479f3ff2.entry.js +1 -0
  55. package/dist/ku4web-components/{p-5a60b1d4.system.entry.js → p-cf860f7a.system.entry.js} +1 -1
  56. package/dist/ku4web-components/p-d66b1c43.system.js +1 -1
  57. package/dist/ku4web-components/p-eace33d2.system.entry.js +1 -0
  58. package/dist/ku4web-components/p-f6b9d36e.entry.js +1 -0
  59. package/dist/types/components/ku4-modal/ku4-modal.d.ts +5 -0
  60. package/dist/types/components.d.ts +10 -2
  61. package/package.json +1 -1
  62. package/dist/cjs/app-globals-3a1e7e63.js +0 -5
  63. package/dist/cjs/css-shim-af499675.js +0 -6
  64. package/dist/cjs/dom-0e8e7262.js +0 -75
  65. package/dist/cjs/index-31267995.js +0 -3093
  66. package/dist/cjs/index-517c4086.js +0 -14
  67. package/dist/cjs/index-d6fca091.js +0 -10
  68. package/dist/cjs/uid-8ec2f63e.js +0 -11
  69. package/dist/collection/capabilities/a11y/aria.js +0 -26
  70. package/dist/collection/capabilities/angular/index.js +0 -24
  71. package/dist/collection/capabilities/decorators/deprecated.js +0 -20
  72. package/dist/collection/capabilities/decorators/index.js +0 -3
  73. package/dist/collection/capabilities/decorators/memoize.js +0 -7
  74. package/dist/collection/capabilities/dom/isFocusable.js +0 -7
  75. package/dist/collection/capabilities/dom/queryFocusable.js +0 -2
  76. package/dist/collection/capabilities/identity/uid.js +0 -6
  77. package/dist/collection/capabilities/mask/index.js +0 -5
  78. package/dist/collection/capabilities/mask/patterns/date.js +0 -40
  79. package/dist/collection/capabilities/mask/patterns/index.js +0 -7
  80. package/dist/collection/capabilities/react/index.js +0 -25
  81. package/dist/collection/capabilities/testing/html.js +0 -14
  82. package/dist/collection/capabilities/testing/styles.js +0 -14
  83. package/dist/collection/capabilities/vue/index.js +0 -28
  84. package/dist/collection/capabilities/vue3/index.js +0 -26
  85. package/dist/collection/collection-manifest.json +0 -31
  86. package/dist/collection/components/ku4-carousel/ku4-carousel.css +0 -221
  87. package/dist/collection/components/ku4-carousel/ku4-carousel.js +0 -369
  88. package/dist/collection/components/ku4-carousel-controls/ku4-carousel-controls.css +0 -32
  89. package/dist/collection/components/ku4-carousel-controls/ku4-carousel-controls.js +0 -112
  90. package/dist/collection/components/ku4-carousel-slide/ku4-carousel-slide.css +0 -3
  91. package/dist/collection/components/ku4-carousel-slide/ku4-carousel-slide.js +0 -159
  92. package/dist/collection/components/ku4-col/ku4-col.css +0 -601
  93. package/dist/collection/components/ku4-col/ku4-col.js +0 -288
  94. package/dist/collection/components/ku4-drawer/ku4-drawer.css +0 -56
  95. package/dist/collection/components/ku4-drawer/ku4-drawer.js +0 -163
  96. package/dist/collection/components/ku4-feature/ku4-feature.js +0 -70
  97. package/dist/collection/components/ku4-focus-trap/ku4-focus-trap.css +0 -3
  98. package/dist/collection/components/ku4-focus-trap/ku4-focus-trap.js +0 -441
  99. package/dist/collection/components/ku4-form/ku4-form.js +0 -225
  100. package/dist/collection/components/ku4-grid/ku4-grid.css +0 -751
  101. package/dist/collection/components/ku4-grid/ku4-grid.js +0 -408
  102. package/dist/collection/components/ku4-label/ku4-label.css +0 -36
  103. package/dist/collection/components/ku4-label/ku4-label.js +0 -115
  104. package/dist/collection/components/ku4-mask/ku4-mask.css +0 -3
  105. package/dist/collection/components/ku4-mask/ku4-mask.js +0 -458
  106. package/dist/collection/components/ku4-modal/ku4-modal.css +0 -85
  107. package/dist/collection/components/ku4-modal/ku4-modal.js +0 -208
  108. package/dist/collection/components/ku4-panel/ku4-panel.css +0 -14
  109. package/dist/collection/components/ku4-panel/ku4-panel.js +0 -119
  110. package/dist/collection/components/ku4-preview/ku4-preview.css +0 -23
  111. package/dist/collection/components/ku4-preview/ku4-preview.js +0 -266
  112. package/dist/collection/components/ku4-tab/ku4-tab.css +0 -82
  113. package/dist/collection/components/ku4-tab/ku4-tab.js +0 -191
  114. package/dist/collection/components/ku4-tab-list/ku4-tab-list.css +0 -6
  115. package/dist/collection/components/ku4-tab-list/ku4-tab-list.js +0 -118
  116. package/dist/collection/components/ku4-tab-panel/ku4-tab-panel.css +0 -26
  117. package/dist/collection/components/ku4-tab-panel/ku4-tab-panel.js +0 -166
  118. package/dist/collection/components/ku4-table/ku4-table.css +0 -116
  119. package/dist/collection/components/ku4-table/ku4-table.js +0 -120
  120. package/dist/collection/components/ku4-tooltip/ku4-tooltip.css +0 -56
  121. package/dist/collection/components/ku4-tooltip/ku4-tooltip.js +0 -274
  122. package/dist/collection/components/ku4-validation/ku4-validation.css +0 -19
  123. package/dist/collection/components/ku4-validation/ku4-validation.js +0 -364
  124. package/dist/collection/components/ku4-validation/validate.js +0 -14
  125. package/dist/collection/index.js +0 -1
  126. package/dist/collection/security.js +0 -27
  127. package/dist/esm/app-globals-0f993ce5.js +0 -3
  128. package/dist/esm/css-shim-5697df59.js +0 -4
  129. package/dist/esm/dom-1d32cb7b.js +0 -73
  130. package/dist/esm/index-135dacad.js +0 -3
  131. package/dist/esm/index-52b04dce.js +0 -3057
  132. package/dist/esm/index-f13d1b41.js +0 -3
  133. package/dist/esm/uid-a7ff854d.js +0 -9
  134. package/dist/ku4web-components/app-globals-0f993ce5.js +0 -3
  135. package/dist/ku4web-components/app-globals-497eb362.system.js +0 -1
  136. package/dist/ku4web-components/css-shim-2eb8ce1f.system.js +0 -1
  137. package/dist/ku4web-components/css-shim-5697df59.js +0 -4
  138. package/dist/ku4web-components/dom-1d32cb7b.js +0 -73
  139. package/dist/ku4web-components/dom-e6a9d306.system.js +0 -21
  140. package/dist/ku4web-components/index-135dacad.js +0 -3
  141. package/dist/ku4web-components/index-4036ffa2.system.js +0 -1
  142. package/dist/ku4web-components/index-52b04dce.js +0 -3057
  143. package/dist/ku4web-components/index-9bb2580f.system.js +0 -1
  144. package/dist/ku4web-components/index-dcd9a8a7.system.js +0 -1
  145. package/dist/ku4web-components/index-f13d1b41.js +0 -3
  146. package/dist/ku4web-components/index.system.js +0 -1
  147. package/dist/ku4web-components/ku4-carousel-controls.entry.js +0 -89
  148. package/dist/ku4web-components/ku4-carousel-controls.system.entry.js +0 -1
  149. package/dist/ku4web-components/ku4-carousel-slide.entry.js +0 -47
  150. package/dist/ku4web-components/ku4-carousel-slide.system.entry.js +0 -1
  151. package/dist/ku4web-components/ku4-carousel.entry.js +0 -175
  152. package/dist/ku4web-components/ku4-carousel.system.entry.js +0 -1
  153. package/dist/ku4web-components/ku4-col.entry.js +0 -75
  154. package/dist/ku4web-components/ku4-col.system.entry.js +0 -1
  155. package/dist/ku4web-components/ku4-drawer.entry.js +0 -35
  156. package/dist/ku4web-components/ku4-drawer.system.entry.js +0 -1
  157. package/dist/ku4web-components/ku4-feature.entry.js +0 -29
  158. package/dist/ku4web-components/ku4-feature.system.entry.js +0 -1
  159. package/dist/ku4web-components/ku4-focus-trap.entry.js +0 -323
  160. package/dist/ku4web-components/ku4-focus-trap.system.entry.js +0 -1
  161. package/dist/ku4web-components/ku4-form.entry.js +0 -112
  162. package/dist/ku4web-components/ku4-form.system.entry.js +0 -1
  163. package/dist/ku4web-components/ku4-grid.entry.js +0 -108
  164. package/dist/ku4web-components/ku4-grid.system.entry.js +0 -1
  165. package/dist/ku4web-components/ku4-label.entry.js +0 -70
  166. package/dist/ku4web-components/ku4-label.system.entry.js +0 -1
  167. package/dist/ku4web-components/ku4-mask.entry.js +0 -342
  168. package/dist/ku4web-components/ku4-mask.system.entry.js +0 -1
  169. package/dist/ku4web-components/ku4-modal.entry.js +0 -75
  170. package/dist/ku4web-components/ku4-modal.system.entry.js +0 -1
  171. package/dist/ku4web-components/ku4-panel.entry.js +0 -49
  172. package/dist/ku4web-components/ku4-panel.system.entry.js +0 -1
  173. package/dist/ku4web-components/ku4-preview.entry.js +0 -128
  174. package/dist/ku4web-components/ku4-preview.system.entry.js +0 -1
  175. package/dist/ku4web-components/ku4-tab-list.entry.js +0 -76
  176. package/dist/ku4web-components/ku4-tab-list.system.entry.js +0 -1
  177. package/dist/ku4web-components/ku4-tab-panel.entry.js +0 -72
  178. package/dist/ku4web-components/ku4-tab-panel.system.entry.js +0 -1
  179. package/dist/ku4web-components/ku4-tab.entry.js +0 -63
  180. package/dist/ku4web-components/ku4-tab.system.entry.js +0 -1
  181. package/dist/ku4web-components/ku4-table.entry.js +0 -79
  182. package/dist/ku4web-components/ku4-table.system.entry.js +0 -1
  183. package/dist/ku4web-components/ku4-tooltip.entry.js +0 -120
  184. package/dist/ku4web-components/ku4-tooltip.system.entry.js +0 -1
  185. package/dist/ku4web-components/ku4-validation.entry.js +0 -162
  186. package/dist/ku4web-components/ku4-validation.system.entry.js +0 -1
  187. package/dist/ku4web-components/ku4web-components.system.js +0 -1
  188. package/dist/ku4web-components/p-138904dc.system.entry.js +0 -1
  189. package/dist/ku4web-components/p-dd0d306b.entry.js +0 -1
  190. package/dist/ku4web-components/p-ef0b529f.entry.js +0 -1
  191. package/dist/ku4web-components/shadow-css-6a0a96e7.system.js +0 -13
  192. package/dist/ku4web-components/shadow-css-dfa0587f.js +0 -388
  193. package/dist/ku4web-components/uid-3373ce49.system.js +0 -1
  194. package/dist/ku4web-components/uid-a7ff854d.js +0 -9
@@ -1,458 +0,0 @@
1
- import { Component, Prop, Watch, h } from '@stencil/core';
2
- import { Assert, string, wait } from 'ku4es-kernel';
3
- /**
4
- * @description ku4-mask
5
- */
6
- export class Ku4Mask {
7
- constructor() {
8
- this.charIndexes = [];
9
- this.reverseCharIndexes = [];
10
- this.previousValue = '';
11
- this.currentValue = '';
12
- this.touchStart = false;
13
- /**
14
- * Mask template
15
- */
16
- this.template = '';
17
- /**
18
- * A regex of characters to ban from
19
- * entry. A user will not be able to input
20
- * any character in this set of characters.
21
- * E.g. ban="[()-]" will not allow a user to
22
- * input (, ), or - into the target input.
23
- */
24
- this.ban = '';
25
- /**
26
- * A test pattern for the mask to allow or
27
- * disallow characters at targeted points
28
- * in the input. The pattern is a character
29
- * separated value of regular expressions
30
- * where the first character denotes the
31
- * character separator at each subsequent
32
- * value is a regular expression for the
33
- * character at that indicated index.
34
- * E.g. `pattern=",[345],,,[^abc]"` would mean
35
- * that "," is the separator and that the
36
- * first character must be a 3, 4, or 5, and
37
- * the fourth character cannot be an a, b or c.
38
- */
39
- this.pattern = '';
40
- /**
41
- * Mask Character
42
- */
43
- this.char = '_';
44
- /**
45
- * Hide mask
46
- */
47
- this.hidden = false;
48
- this.handleFocus = this.handleFocus.bind(this);
49
- this.handleBlur = this.handleBlur.bind(this);
50
- this.handleKeyDown = this.handleKeyDown.bind(this);
51
- this.handleInput = this.handleInput.bind(this);
52
- this.handleTouchStart = this.handleTouchStart.bind(this);
53
- this.init();
54
- }
55
- init() {
56
- this.chars = this.char && new RegExp(this.char);
57
- this.banned = this.ban && new RegExp(this.ban);
58
- const pattern = this.pattern.replace(/[\s\n]/gm, '');
59
- this.patterns = pattern.substr(1).split(pattern[0]).map((v) => {
60
- try {
61
- return v && new RegExp(v) || null;
62
- }
63
- catch (e) {
64
- /**
65
- * TODO: Remove try/catch when Safari supports lookbehinds.
66
- * Safari does not support lookbehinds and blows up everything
67
- * because of this. This try catch allows all masking behaviour
68
- * to continue to work except for patterns that include lookbehinds.
69
- */
70
- }
71
- });
72
- this.charIndexes = this.template.split('')
73
- .reduce((acc, char, i) => {
74
- if (this.chars.test(char)) {
75
- acc.push(i);
76
- }
77
- return acc;
78
- }, []);
79
- this.reverseCharIndexes = [...this.charIndexes].reverse();
80
- return this;
81
- }
82
- templateHandler(newTemplate, oldTemplate) {
83
- const { input, previousCharIndex, previousValue, currentValue, value, char } = this;
84
- const previousLength = string.unmask(previousValue, oldTemplate, char).length;
85
- const currentLength = string.unmask(currentValue, oldTemplate, char).length;
86
- const nextIndex = previousLength < currentLength ? previousCharIndex + 1 : previousCharIndex;
87
- this.init().value = string.mask(string.unmask(value, oldTemplate, char), newTemplate, char);
88
- input.setSelectionRange(nextIndex, nextIndex);
89
- }
90
- charHandler(newChar, oldChar) {
91
- const { value, template } = this;
92
- this.init().value = string.mask(string.unmask(value, template, oldChar), template, newChar);
93
- }
94
- get previousCharIndex() {
95
- return this.reverseCharIndexes.find(i => this.selectionStart > i) || this.charIndexes[0];
96
- }
97
- get value() {
98
- return this.currentValue;
99
- }
100
- set value(value) {
101
- const { chars, hidden, input } = this;
102
- const indexOfChar = value.search(chars);
103
- this.currentValue = value;
104
- input.value = hidden && indexOfChar > -1 ? value.substring(0, indexOfChar) : value;
105
- }
106
- handleTouchStart() {
107
- this.touchStart = true;
108
- }
109
- handleFocus() {
110
- // Abort if the browser is IE11
111
- // @ts-ignore - Leveraging documentMode to determine unsupported browser
112
- if (window.document.documentMode) {
113
- return;
114
- }
115
- const { input, template, char, chars, touchStart } = this;
116
- const inputUnmasked = string.unmask(input.value, template, char);
117
- const valueUnmasked = string.unmask(this.value, template, char);
118
- this.value = inputUnmasked !== valueUnmasked
119
- ? string.mask(input.value, template, char)
120
- : string.mask(valueUnmasked, template, char);
121
- wait(0).then(() => {
122
- const index = input.value.search(chars);
123
- const selection = index < 0 ? input.value.length : index;
124
- this.input.setSelectionRange(index < 0 && !touchStart ? 0 : selection, selection);
125
- this.touchStart = false;
126
- });
127
- }
128
- handleBlur() {
129
- const { template, char } = this;
130
- if (Assert.isEmpty(string.unmask(this.value, template, char))) {
131
- this.value = '';
132
- }
133
- }
134
- handleKeyDown(e) {
135
- // Abort if the browser is IE11
136
- // @ts-ignore - Leveraging documentMode to determine unsupported browser
137
- if (window.document.documentMode) {
138
- return;
139
- }
140
- const { banned, hidden, template, char } = this;
141
- if (e.key &&
142
- e.key.length === 1 &&
143
- banned &&
144
- (banned.test(e.key) &&
145
- !(e.altKey || e.ctrlKey || e.metaKey))) {
146
- e.preventDefault();
147
- }
148
- this.previousValue = hidden ? string.mask(string.unmask(e.target.value, template, char), template, char) : e.target.value;
149
- this.selectionStart = e.target.selectionStart;
150
- this.selectionEnd = e.target.selectionEnd;
151
- }
152
- handleInput(e) {
153
- // Abort if the browser is IE11
154
- // @ts-ignore - Leveraging documentMode to determine unsupported browser
155
- if (window.document.documentMode) {
156
- return;
157
- }
158
- const { input, template, char, chars, previousValue, banned, selectionStart, selectionEnd, previousCharIndex, patterns, charIndexes, reverseCharIndexes } = this;
159
- if (!chars.test(this.previousValue) &&
160
- !(e.type === 'input' && !e.inputType) &&
161
- e.inputType !== 'insertFromPaste' &&
162
- e.inputType !== 'deleteContentBackward' &&
163
- e.inputType !== 'deleteContentForward' &&
164
- e.inputType !== 'deleteByCut' &&
165
- selectionStart === selectionEnd) {
166
- this.value = previousValue;
167
- return;
168
- }
169
- if (e.inputType === 'insertFromPaste') {
170
- try {
171
- navigator.clipboard.readText()
172
- .then((rawData) => {
173
- const data = rawData.replace(new RegExp(banned, 'g'), '');
174
- if (Assert.isNullOrEmpty(data)) {
175
- this.value = previousValue;
176
- input.setSelectionRange(selectionStart, selectionStart);
177
- return;
178
- }
179
- if (!banned || !banned.test(data)) {
180
- let nextValue = previousValue;
181
- if (selectionStart < selectionEnd) {
182
- const startValue = reverseCharIndexes.find(v => v <= selectionStart - 1);
183
- const endValue = reverseCharIndexes.find(v => v <= selectionEnd - 1);
184
- const startInsertIndex = charIndexes.findIndex(v => v === startValue);
185
- const endInsertIndex = charIndexes.findIndex(v => v === endValue);
186
- const unmasked = string.unmask(previousValue, template, char);
187
- const newValue = unmasked.substring(0, startInsertIndex + 1) + unmasked.substring(endInsertIndex + 1, previousValue.length);
188
- nextValue = string.mask(newValue, template, char);
189
- }
190
- const charIndex = charIndexes.find(v => v >= selectionStart);
191
- const insertIndex = charIndexes.findIndex(v => v === charIndex);
192
- const unmasked = string.unmask(nextValue, template, char);
193
- nextValue = unmasked.substring(0, insertIndex) + data + unmasked.substring(insertIndex, previousValue.length);
194
- this.value = string.mask(nextValue, template, char);
195
- const index = charIndexes[insertIndex + data.length] || this.value.search(chars) || this.value.length;
196
- input.setSelectionRange(index, index);
197
- }
198
- });
199
- this.value = previousValue;
200
- input.setSelectionRange(selectionStart, selectionStart);
201
- return;
202
- }
203
- catch (e) {
204
- this.value = previousValue;
205
- input.setSelectionRange(selectionStart, selectionStart);
206
- return;
207
- }
208
- }
209
- if (e.inputType === 'deleteContentBackward' || e.inputType === 'deleteByCut') {
210
- const startValue = reverseCharIndexes.find(v => v <= selectionStart - 1);
211
- const endValue = reverseCharIndexes.find(v => v <= selectionEnd - 1);
212
- const startInsertIndex = charIndexes.findIndex(v => v === startValue);
213
- const endInsertIndex = charIndexes.findIndex(v => v === endValue);
214
- const unmasked = string.unmask(previousValue, template, char);
215
- if (startInsertIndex < endInsertIndex) {
216
- const newValue = unmasked.substring(0, startInsertIndex + 1) + unmasked.substring(endInsertIndex + 1, previousValue.length);
217
- this.value = string.mask(newValue, template, char);
218
- newValue && startInsertIndex > -1
219
- ? input.setSelectionRange(previousCharIndex + 1, previousCharIndex + 1)
220
- : input.setSelectionRange(previousCharIndex, previousCharIndex);
221
- }
222
- else {
223
- const newValue = unmasked.substring(0, startInsertIndex) + unmasked.substring(endInsertIndex + 1, previousValue.length);
224
- this.value = string.mask(newValue, template, char);
225
- input.setSelectionRange(previousCharIndex, previousCharIndex);
226
- }
227
- return;
228
- }
229
- if (e.inputType === 'deleteContentForward') {
230
- const charIndex = charIndexes.find(v => v >= selectionStart);
231
- const insertIndex = charIndexes.findIndex(v => v === charIndex);
232
- const unmasked = string.unmask(previousValue, template, char);
233
- const newValue = unmasked.substring(0, insertIndex) + unmasked.substring(insertIndex + 1, previousValue.length);
234
- this.value = string.mask(newValue, template, char);
235
- input.setSelectionRange(selectionStart, selectionStart);
236
- return;
237
- }
238
- //Abort if auxiliary key is pressed.
239
- if (e.altKey || e.ctrlKey || e.metaKey) {
240
- return;
241
- }
242
- //Abort if disallowed character
243
- if (!e.data) {
244
- if (e.type === 'input' && !e.inputType) {
245
- const { value } = e.target;
246
- const charIndex = charIndexes.find(v => v >= selectionStart);
247
- const insertIndex = charIndexes.findIndex(v => v === charIndex);
248
- const unmasked = string.unmask(value, template, char);
249
- const allowed = value.replace(new RegExp(banned, 'g'), '');
250
- const nextValue = unmasked.substring(0, insertIndex) + allowed;
251
- const index = charIndexes.find(v => v > charIndex);
252
- this.value = string.mask(nextValue, template, char);
253
- const patternIndex = charIndexes.findIndex(v => v >= index);
254
- const validationIndex = patternIndex < 0 ? charIndexes.length - 1 : patternIndex - 1;
255
- this.validate(nextValue, patterns[validationIndex]);
256
- }
257
- else {
258
- this.value = previousValue;
259
- input.setSelectionRange(selectionStart, selectionStart);
260
- }
261
- return;
262
- }
263
- //Append
264
- if (chars.test(previousValue.charAt(selectionStart)) ||
265
- selectionStart === template.length) {
266
- const unmasked = string.unmask(previousValue, template, char);
267
- this.value = string.mask(unmasked + e.data, template, char);
268
- const charIndex = this.value.search(chars);
269
- const index = charIndex < 0 ? template.length : charIndex;
270
- input.setSelectionRange(index, index);
271
- const patternIndex = charIndexes.findIndex(v => v >= index);
272
- const validationIndex = patternIndex < 0 ? charIndexes.length - 1 : patternIndex - 1;
273
- this.validate(e.data, patterns[validationIndex]);
274
- }
275
- //Insert
276
- else {
277
- let nextValue = previousValue;
278
- if (selectionStart < selectionEnd) {
279
- const startValue = reverseCharIndexes.find(v => v <= selectionStart - 1);
280
- const endValue = reverseCharIndexes.find(v => v <= selectionEnd - 1);
281
- const startInsertIndex = charIndexes.findIndex(v => v === startValue);
282
- const endInsertIndex = charIndexes.findIndex(v => v === endValue);
283
- const unmasked = string.unmask(previousValue, template, char);
284
- const newValue = unmasked.substring(0, startInsertIndex + 1) + unmasked.substring(endInsertIndex + 1, previousValue.length);
285
- nextValue = string.mask(newValue, template, char);
286
- }
287
- const charIndex = charIndexes.find(v => v >= selectionStart);
288
- const insertIndex = charIndexes.findIndex(v => v === charIndex);
289
- const unmasked = string.unmask(nextValue, template, char);
290
- nextValue = unmasked.substring(0, insertIndex) + e.data + unmasked.substring(insertIndex, previousValue.length);
291
- const index = charIndexes.find(v => v > charIndex);
292
- this.value = string.mask(nextValue, template, char);
293
- input.setSelectionRange(index, index);
294
- const patternIndex = charIndexes.findIndex(v => v >= index);
295
- const validationIndex = patternIndex < 0 ? charIndexes.length - 1 : patternIndex - 1;
296
- this.validate(e.data, patterns[validationIndex]);
297
- }
298
- }
299
- validate(data, pattern) {
300
- const { previousValue, input, value, selectionStart } = this;
301
- if (Assert.exists(pattern) &&
302
- !(pattern.test(data) || (/\(\?[!<=]/.test(pattern.toString()) && pattern.test(value)))) {
303
- this.value = previousValue;
304
- input.setSelectionRange(selectionStart, selectionStart);
305
- }
306
- }
307
- componentWillLoad() {
308
- this.input = document.getElementById(this.for);
309
- if (Assert.exists(this.input)) {
310
- this.input.addEventListener('focus', this.handleFocus);
311
- this.input.addEventListener('blur', this.handleBlur);
312
- this.input.addEventListener('keydown', this.handleKeyDown);
313
- this.input.addEventListener('input', this.handleInput);
314
- this.input.addEventListener('ku4-mask-input', this.handleInput);
315
- this.input.addEventListener('touchstart', this.handleTouchStart, { passive: true });
316
- }
317
- else {
318
- // eslint-disable-next-line no-console
319
- console.error('ku4-mask must have a valid `for` referencing target field `id`.');
320
- }
321
- }
322
- disconnectedCallback() {
323
- if (this.input && this.input.removeEventListener) {
324
- this.input.removeEventListener('focus', this.handleFocus);
325
- this.input.removeEventListener('blur', this.handleBlur);
326
- this.input.removeEventListener('keydown', this.handleKeyDown);
327
- this.input.removeEventListener('input', this.handleInput);
328
- this.input.removeEventListener('touchstart', this.handleTouchStart);
329
- }
330
- }
331
- render() {
332
- return h("slot", null);
333
- }
334
- static get is() { return "ku4-mask"; }
335
- static get encapsulation() { return "shadow"; }
336
- static get originalStyleUrls() { return {
337
- "$": ["ku4-mask.scss"]
338
- }; }
339
- static get styleUrls() { return {
340
- "$": ["ku4-mask.css"]
341
- }; }
342
- static get properties() { return {
343
- "for": {
344
- "type": "string",
345
- "mutable": false,
346
- "complexType": {
347
- "original": "string",
348
- "resolved": "string",
349
- "references": {}
350
- },
351
- "required": false,
352
- "optional": false,
353
- "docs": {
354
- "tags": [],
355
- "text": "Mask for input having id of value"
356
- },
357
- "attribute": "for",
358
- "reflect": false
359
- },
360
- "template": {
361
- "type": "string",
362
- "mutable": false,
363
- "complexType": {
364
- "original": "string",
365
- "resolved": "string",
366
- "references": {}
367
- },
368
- "required": false,
369
- "optional": false,
370
- "docs": {
371
- "tags": [],
372
- "text": "Mask template"
373
- },
374
- "attribute": "template",
375
- "reflect": false,
376
- "defaultValue": "''"
377
- },
378
- "ban": {
379
- "type": "string",
380
- "mutable": false,
381
- "complexType": {
382
- "original": "string",
383
- "resolved": "string",
384
- "references": {}
385
- },
386
- "required": false,
387
- "optional": false,
388
- "docs": {
389
- "tags": [],
390
- "text": "A regex of characters to ban from\nentry. A user will not be able to input\nany character in this set of characters.\nE.g. ban=\"[()-]\" will not allow a user to\ninput (, ), or - into the target input."
391
- },
392
- "attribute": "ban",
393
- "reflect": false,
394
- "defaultValue": "''"
395
- },
396
- "pattern": {
397
- "type": "string",
398
- "mutable": false,
399
- "complexType": {
400
- "original": "string",
401
- "resolved": "string",
402
- "references": {}
403
- },
404
- "required": false,
405
- "optional": false,
406
- "docs": {
407
- "tags": [],
408
- "text": "A test pattern for the mask to allow or\ndisallow characters at targeted points\nin the input. The pattern is a character\nseparated value of regular expressions\nwhere the first character denotes the\ncharacter separator at each subsequent\nvalue is a regular expression for the\ncharacter at that indicated index.\nE.g. `pattern=\",[345],,,[^abc]\"` would mean\nthat \",\" is the separator and that the\nfirst character must be a 3, 4, or 5, and\nthe fourth character cannot be an a, b or c."
409
- },
410
- "attribute": "pattern",
411
- "reflect": false,
412
- "defaultValue": "''"
413
- },
414
- "char": {
415
- "type": "string",
416
- "mutable": false,
417
- "complexType": {
418
- "original": "string",
419
- "resolved": "string",
420
- "references": {}
421
- },
422
- "required": false,
423
- "optional": false,
424
- "docs": {
425
- "tags": [],
426
- "text": "Mask Character"
427
- },
428
- "attribute": "char",
429
- "reflect": false,
430
- "defaultValue": "'_'"
431
- },
432
- "hidden": {
433
- "type": "boolean",
434
- "mutable": false,
435
- "complexType": {
436
- "original": "boolean",
437
- "resolved": "boolean",
438
- "references": {}
439
- },
440
- "required": false,
441
- "optional": false,
442
- "docs": {
443
- "tags": [],
444
- "text": "Hide mask"
445
- },
446
- "attribute": "hidden",
447
- "reflect": false,
448
- "defaultValue": "false"
449
- }
450
- }; }
451
- static get watchers() { return [{
452
- "propName": "template",
453
- "methodName": "templateHandler"
454
- }, {
455
- "propName": "char",
456
- "methodName": "charHandler"
457
- }]; }
458
- }
@@ -1,85 +0,0 @@
1
- @keyframes ku4-modal-content-enter {
2
- 0% {
3
- transform: var(--ku4-modal-content-animation-start-transform, scale(0.5));
4
- opacity: var(--ku4-modal-content-animation-start-opacity, 0);
5
- }
6
- 50% {
7
- transform: var(--ku4-modal-content-animation-mid-transform, scale(1.2));
8
- opacity: var(--ku4-modal-content-animation-mid-opacity, 0.8);
9
- }
10
- 100% {
11
- transform: var(--ku4-modal-content-animation-end-transform, scale(1));
12
- opacity: var(--ku4-modal-content-animation-end-opacity, 1);
13
- }
14
- }
15
- @keyframes ku4-modal-overlay-enter {
16
- 0% {
17
- transform: var(--ku4-modal-overlay-animation-start-transform, none);
18
- opacity: var(--ku4-modal-overlay-animation-start-opacity, 0);
19
- }
20
- 50% {
21
- transform: var(--ku4-modal-overlay-animation-mid-transform, none);
22
- opacity: var(--ku4-modal-overlay-animation-mid-opacity, 0.35);
23
- }
24
- 100% {
25
- transform: var(--ku4-modal-overlay-animation-end-transform, none);
26
- opacity: var(--ku4-modal-overlay-animation-end-opacity, 0.4);
27
- }
28
- }
29
- :host {
30
- position: fixed;
31
- display: none;
32
- top: 0;
33
- left: 0;
34
- width: 100vw;
35
- height: 100vh;
36
- justify-content: center;
37
- align-items: center;
38
- background: transparent;
39
- overflow: auto;
40
- transform-style: var(--ku4-modal-transform-style, initial);
41
- }
42
-
43
- .ku4-modal-content {
44
- position: relative;
45
- top: 0;
46
- left: 0;
47
- }
48
-
49
- .ku4-modal-overlay {
50
- position: fixed;
51
- display: flex;
52
- top: 0;
53
- left: 0;
54
- width: 100%;
55
- height: 100%;
56
- opacity: 0;
57
- background: var(--ku4-modal-overlay-background, #000);
58
- }
59
-
60
- :host([visible]) {
61
- display: flex;
62
- z-index: var(--ku4-modal-z-index, 5);
63
- }
64
-
65
- :host([visible]) .ku4-modal-content {
66
- animation-name: ku4-modal-content-enter;
67
- animation-duration: var(--ku4-modal-content-animation-duration, 0.4s);
68
- animation-timing-function: var(--ku4-modal-content-animation-timing-function, ease);
69
- transform: var(--ku4-modal-content-transform, none);
70
- opacity: var(--ku4-modal-content-opacity, 1);
71
- z-index: calc(var(--ku4-modal-z-index, 5) + 1);
72
- }
73
-
74
- :host([visible]) .ku4-modal-overlay {
75
- animation-name: ku4-modal-overlay-enter;
76
- animation-duration: var(--ku4-modal-overlay-animation-duration, 0.4s);
77
- animation-timing-function: var(--ku4-modal-overlay-animation-timing-function, ease);
78
- transform: var(--ku4-modal-overlay-transform, none);
79
- opacity: var(--ku4-modal-overlay-opacity, 0.4);
80
- z-index: calc(var(--ku4-modal-z-index, 5));
81
- }
82
-
83
- :host([visible=false]) {
84
- display: none;
85
- }