@ongov/ontario-design-system-component-library 4.3.1-alpha.1 → 5.0.0-alpha.3

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 (163) hide show
  1. package/dist/cjs/app-globals-6f6b30a8.js.map +1 -1
  2. package/dist/cjs/index-88d5cf20.js +2 -2
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/{ontario-accordion_43.cjs.entry.js → ontario-accordion_44.cjs.entry.js} +358 -85
  5. package/dist/cjs/ontario-accordion_44.cjs.entry.js.map +1 -0
  6. package/dist/cjs/ontario-design-system-components.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/ontario-card/ontario-card-types.js +29 -2
  9. package/dist/collection/components/ontario-card/ontario-card-types.js.map +1 -1
  10. package/dist/collection/components/ontario-card/ontario-card.css +252 -34
  11. package/dist/collection/components/ontario-card/ontario-card.js +102 -78
  12. package/dist/collection/components/ontario-card/ontario-card.js.map +1 -1
  13. package/dist/collection/components/ontario-card/test/ontario-cards.spec.js +23 -13
  14. package/dist/collection/components/ontario-card/test/ontario-cards.spec.js.map +1 -1
  15. package/dist/collection/components/ontario-date-input/test/ontario-date-input.spec.js +58 -0
  16. package/dist/collection/components/ontario-date-input/test/ontario-date-input.spec.js.map +1 -1
  17. package/dist/collection/components/ontario-date-input/utils/date-validation-utils.js +14 -4
  18. package/dist/collection/components/ontario-date-input/utils/date-validation-utils.js.map +1 -1
  19. package/dist/collection/components/ontario-header/service-ontario-header.css +0 -3
  20. package/dist/collection/components/ontario-search-box/assets/ontario-icon-close.svg +1 -0
  21. package/dist/collection/components/ontario-search-box/assets/ontario-logo--mobile.svg +6 -0
  22. package/dist/collection/components/ontario-search-box/ontario-search-box.css +823 -0
  23. package/dist/collection/components/ontario-search-box/ontario-search-box.js +584 -0
  24. package/dist/collection/components/ontario-search-box/ontario-search-box.js.map +1 -0
  25. package/dist/collection/components/ontario-search-box/test/ontario-search-box.e2e.js +20 -0
  26. package/dist/collection/components/ontario-search-box/test/ontario-search-box.e2e.js.map +1 -0
  27. package/dist/collection/components/ontario-search-box/test/ontario-search-box.spec.js +19 -0
  28. package/dist/collection/components/ontario-search-box/test/ontario-search-box.spec.js.map +1 -0
  29. package/dist/collection/components/ontario-step-indicator/ontario-step-indicator.js +5 -5
  30. package/dist/collection/components/ontario-table/ontario-table.js +5 -5
  31. package/dist/collection/components/ontario-textarea/ontario-textarea.js +3 -3
  32. package/dist/collection/fonts/open-sans-400/LICENSE.txt +0 -0
  33. package/dist/collection/fonts/open-sans-400/open-sans-400.eot +0 -0
  34. package/dist/collection/fonts/open-sans-400/open-sans-400.svg +0 -0
  35. package/dist/collection/fonts/open-sans-400/open-sans-400.ttf +0 -0
  36. package/dist/collection/fonts/open-sans-400/open-sans-400.woff +0 -0
  37. package/dist/collection/fonts/open-sans-400/open-sans-400.woff2 +0 -0
  38. package/dist/collection/fonts/open-sans-700/LICENSE.txt +0 -0
  39. package/dist/collection/fonts/open-sans-700/open-sans-700.eot +0 -0
  40. package/dist/collection/fonts/open-sans-700/open-sans-700.svg +0 -0
  41. package/dist/collection/fonts/open-sans-700/open-sans-700.ttf +0 -0
  42. package/dist/collection/utils/common/input/input.js +3 -0
  43. package/dist/collection/utils/common/input/input.js.map +1 -1
  44. package/dist/collection/utils/common/input-caption/input-caption.js +5 -3
  45. package/dist/collection/utils/common/input-caption/input-caption.js.map +1 -1
  46. package/dist/collection/utils/helper/utils.js +4 -2
  47. package/dist/collection/utils/helper/utils.js.map +1 -1
  48. package/dist/collection/utils/helper/utils.spec.js +99 -1
  49. package/dist/collection/utils/helper/utils.spec.js.map +1 -1
  50. package/dist/components/error-message.js +1 -324
  51. package/dist/components/error-message.js.map +1 -1
  52. package/dist/components/event-handler.js +330 -0
  53. package/dist/components/event-handler.js.map +1 -0
  54. package/dist/components/input.js +3 -0
  55. package/dist/components/input.js.map +1 -1
  56. package/dist/components/ontario-card.js +116 -64
  57. package/dist/components/ontario-card.js.map +1 -1
  58. package/dist/components/ontario-checkboxes.js +2 -1
  59. package/dist/components/ontario-checkboxes.js.map +1 -1
  60. package/dist/components/ontario-date-input.js +15 -4
  61. package/dist/components/ontario-date-input.js.map +1 -1
  62. package/dist/components/ontario-dropdown-list.js +2 -1
  63. package/dist/components/ontario-dropdown-list.js.map +1 -1
  64. package/dist/components/ontario-header.js +4 -6
  65. package/dist/components/ontario-header.js.map +1 -1
  66. package/dist/components/ontario-icon-search2.js +6 -0
  67. package/dist/components/ontario-icon-search2.js.map +1 -0
  68. package/dist/components/ontario-input.js +2 -1
  69. package/dist/components/ontario-input.js.map +1 -1
  70. package/dist/components/ontario-radio-buttons.js +2 -1
  71. package/dist/components/ontario-radio-buttons.js.map +1 -1
  72. package/dist/components/ontario-search-box.d.ts +11 -0
  73. package/dist/components/ontario-search-box.js +269 -0
  74. package/dist/components/ontario-search-box.js.map +1 -0
  75. package/dist/components/ontario-step-indicator.js +5 -5
  76. package/dist/components/ontario-table.js +5 -5
  77. package/dist/components/ontario-textarea.js +5 -4
  78. package/dist/components/ontario-textarea.js.map +1 -1
  79. package/dist/components/utils.js +4 -2
  80. package/dist/components/utils.js.map +1 -1
  81. package/dist/esm/app-globals-70748594.js.map +1 -1
  82. package/dist/esm/index-603026f7.js +2 -2
  83. package/dist/esm/loader.js +1 -1
  84. package/dist/esm/{ontario-accordion_43.entry.js → ontario-accordion_44.entry.js} +358 -85
  85. package/dist/esm/ontario-accordion_44.entry.js.map +1 -0
  86. package/dist/esm/ontario-design-system-components.js +1 -1
  87. package/dist/esm/polyfills/core-js.js +0 -0
  88. package/dist/esm/polyfills/dom.js +0 -0
  89. package/dist/esm/polyfills/es5-html-element.js +0 -0
  90. package/dist/esm/polyfills/index.js +0 -0
  91. package/dist/esm/polyfills/system.js +0 -0
  92. package/dist/ontario-design-system-components/fonts/open-sans-400/LICENSE.txt +0 -0
  93. package/dist/ontario-design-system-components/fonts/open-sans-400/open-sans-400.eot +0 -0
  94. package/dist/ontario-design-system-components/fonts/open-sans-400/open-sans-400.svg +0 -0
  95. package/dist/ontario-design-system-components/fonts/open-sans-400/open-sans-400.ttf +0 -0
  96. package/dist/ontario-design-system-components/fonts/open-sans-400/open-sans-400.woff +0 -0
  97. package/dist/ontario-design-system-components/fonts/open-sans-400/open-sans-400.woff2 +0 -0
  98. package/dist/ontario-design-system-components/fonts/open-sans-700/LICENSE.txt +0 -0
  99. package/dist/ontario-design-system-components/fonts/open-sans-700/open-sans-700.eot +0 -0
  100. package/dist/ontario-design-system-components/fonts/open-sans-700/open-sans-700.svg +0 -0
  101. package/dist/ontario-design-system-components/fonts/open-sans-700/open-sans-700.ttf +0 -0
  102. package/dist/ontario-design-system-components/ontario-design-system-components.esm.js +1 -1
  103. package/dist/ontario-design-system-components/ontario-design-system-components.esm.js.map +1 -1
  104. package/dist/ontario-design-system-components/p-103a233b.js.map +1 -1
  105. package/dist/ontario-design-system-components/{p-abe58ec9.entry.js → p-ac4e76b2.entry.js} +1927 -1728
  106. package/dist/ontario-design-system-components/p-ac4e76b2.entry.js.map +1 -0
  107. package/dist/types/components/ontario-card/ontario-card-types.d.ts +4 -4
  108. package/dist/types/components/ontario-card/ontario-card.d.ts +40 -29
  109. package/dist/types/components/ontario-date-input/utils/date-validation-utils.d.ts +14 -0
  110. package/dist/types/components/ontario-search-box/ontario-search-box.d.ts +180 -0
  111. package/dist/types/components.d.ts +199 -16
  112. package/dist/types/utils/common/input/input.d.ts +2 -1
  113. package/dist/types/utils/common/input-caption/input-caption.d.ts +7 -1
  114. package/package.json +3 -3
  115. package/src/components/ontario-card/ontario-card-types.tsx +33 -4
  116. package/src/components/ontario-card/ontario-card.scss +54 -40
  117. package/src/components/ontario-card/ontario-card.tsx +94 -68
  118. package/src/components/ontario-card/readme.md +57 -27
  119. package/src/components/ontario-card/test/__snapshots__/ontario-cards.spec.tsx.snap +66 -0
  120. package/src/components/ontario-card/test/ontario-cards.spec.tsx +27 -13
  121. package/src/components/ontario-card-collection/readme.md +13 -13
  122. package/src/components/ontario-checkbox/ontario-checkboxes.scss +0 -1
  123. package/src/components/ontario-date-input/test/ontario-date-input.spec.tsx +76 -0
  124. package/src/components/ontario-date-input/utils/date-validation-utils.ts +18 -4
  125. package/src/components/ontario-header/service-ontario-header.scss +0 -4
  126. package/src/components/ontario-hint-text/readme.md +2 -0
  127. package/src/components/ontario-radio-buttons/ontario-radio-buttons.scss +0 -1
  128. package/src/components/ontario-search-box/assets/ontario-icon-close.svg +1 -0
  129. package/src/components/ontario-search-box/assets/ontario-logo--mobile.svg +6 -0
  130. package/src/components/ontario-search-box/ontario-search-box.scss +141 -0
  131. package/src/components/ontario-search-box/ontario-search-box.tsx +341 -0
  132. package/src/components/ontario-search-box/readme.md +132 -0
  133. package/src/components/ontario-search-box/test/__snapshots__/ontario-search-box.spec.tsx.snap +35 -0
  134. package/src/components/ontario-search-box/test/ontario-search-box.e2e.ts +21 -0
  135. package/src/components/ontario-search-box/test/ontario-search-box.spec.tsx +22 -0
  136. package/src/components.d.ts +199 -16
  137. package/src/config.json +1 -4
  138. package/src/index.html +287 -52
  139. package/src/utils/common/input/input.tsx +4 -1
  140. package/src/utils/common/input-caption/input-caption.tsx +9 -3
  141. package/src/utils/helper/utils.spec.ts +127 -1
  142. package/src/utils/helper/utils.ts +4 -2
  143. package/www/build/ontario-design-system-components.esm.js +1 -1
  144. package/www/build/ontario-design-system-components.esm.js.map +1 -1
  145. package/www/build/p-103a233b.js.map +1 -1
  146. package/www/build/{p-abe58ec9.entry.js → p-ac4e76b2.entry.js} +1927 -1728
  147. package/www/build/p-ac4e76b2.entry.js.map +1 -0
  148. package/www/build/{p-fdc9ab6d.js → p-c9a9b857.js} +1 -1
  149. package/www/fonts/open-sans-400/LICENSE.txt +0 -0
  150. package/www/fonts/open-sans-400/open-sans-400.eot +0 -0
  151. package/www/fonts/open-sans-400/open-sans-400.svg +0 -0
  152. package/www/fonts/open-sans-400/open-sans-400.ttf +0 -0
  153. package/www/fonts/open-sans-400/open-sans-400.woff +0 -0
  154. package/www/fonts/open-sans-400/open-sans-400.woff2 +0 -0
  155. package/www/fonts/open-sans-700/LICENSE.txt +0 -0
  156. package/www/fonts/open-sans-700/open-sans-700.eot +0 -0
  157. package/www/fonts/open-sans-700/open-sans-700.svg +0 -0
  158. package/www/fonts/open-sans-700/open-sans-700.ttf +0 -0
  159. package/www/index.html +261 -52
  160. package/dist/cjs/ontario-accordion_43.cjs.entry.js.map +0 -1
  161. package/dist/esm/ontario-accordion_43.entry.js.map +0 -1
  162. package/dist/ontario-design-system-components/p-abe58ec9.entry.js.map +0 -1
  163. package/www/build/p-abe58ec9.entry.js.map +0 -1
@@ -0,0 +1,330 @@
1
+ import { h } from '@stencil/core/internal/client';
2
+ import { C as CaptionTypes } from './input-caption.types.js';
3
+ import { C as ConsoleMessageClass } from './console-message.js';
4
+
5
+ var MessageContentType;
6
+ (function (MessageContentType) {
7
+ MessageContentType['UndefinedCaptionObject'] = 'undefinedCaptionObject';
8
+ MessageContentType['UndefinedCaptionText'] = 'undefinedCaption';
9
+ MessageContentType['EmptyCaptionText'] = 'emptyCaption';
10
+ MessageContentType['UndefinedCaptionType'] = 'undefinedCaptionType';
11
+ MessageContentType['IncorrectCaptionType'] = 'incorrectCaptionType';
12
+ })(MessageContentType || (MessageContentType = {}));
13
+
14
+ class InputCaption {
15
+ /**
16
+ * Set the class members
17
+ * Output a console warning message if the provided `label` type is incorrect
18
+ * @param caption object containing the essential data to configure the input label
19
+ */
20
+ constructor(componentTagName, caption, translations, language, isLegend = false, required = false) {
21
+ /**
22
+ * The type of caption to render.
23
+ */
24
+ this.captionType = 'default';
25
+ /**
26
+ * Determine whether the input field is required.
27
+ */
28
+ this.required = false;
29
+ /**
30
+ * Determine whether the rendered element is a `<label>` or `<legend>`.
31
+ */
32
+ this.isLegend = false;
33
+ this.language = 'en';
34
+ /**
35
+ * Return the `<label>` element for text inputs
36
+ * @param captionFor Set the `htmlFor` attribute
37
+ * @param hasHintExpander Indicate whether the component the label is for has a hint expander or not
38
+ * @param disableRequiredFlag Disable the required/optional label text _(only use in highly special cases)_
39
+ * @returns element containing the caption for the input
40
+ */
41
+ this.getCaption = (captionFor, hasHintExpander = false, disableRequiredFlag = false) => {
42
+ const captionText = this.captionText && this.captionText.toLowerCase();
43
+ const captionContent = this.isLegend
44
+ ? h(
45
+ 'legend',
46
+ { class: this.getClass() },
47
+ this.captionType === 'heading' ? h('h1', null, this.captionText) : this.captionText,
48
+ !disableRequiredFlag && this.getRequiredFlagElement(),
49
+ hasHintExpander && this.getHintExpanderAccessibilityText(captionText, false),
50
+ )
51
+ : h(
52
+ 'label',
53
+ { htmlFor: captionFor, class: this.getClass() },
54
+ this.captionText,
55
+ !disableRequiredFlag && this.getRequiredFlagElement(),
56
+ hasHintExpander && this.getHintExpanderAccessibilityText(captionText, false),
57
+ );
58
+ // with `this.captionType` already set to one of the enum values, the comparison no longer needs the `toLowerCase()` transform
59
+ return this.captionType === 'heading' && !this.isLegend ? h('h1', null, captionContent) : captionContent;
60
+ };
61
+ let captionObject;
62
+ if (typeof caption === 'string') {
63
+ try {
64
+ captionObject = JSON.parse(caption);
65
+ } catch (_a) {
66
+ captionObject = { captionText: caption, captionType: 'default' };
67
+ }
68
+ } else {
69
+ captionObject = caption;
70
+ }
71
+ this.componentTagName = componentTagName.toLocaleLowerCase();
72
+ this.captionText = captionObject === null || captionObject === void 0 ? void 0 : captionObject.captionText;
73
+ this.captionType =
74
+ ((captionObject === null || captionObject === void 0 ? void 0 : captionObject.captionType) &&
75
+ CaptionTypes.find((type) => {
76
+ var _a;
77
+ return type === ((_a = captionObject.captionType) === null || _a === void 0 ? void 0 : _a.toLowerCase());
78
+ })) ||
79
+ 'default';
80
+ this.required = required;
81
+ this.isLegend = isLegend;
82
+ this.translations = translations;
83
+ this.language = language;
84
+ this.validateCaption(this);
85
+ }
86
+ getHintExpanderAccessibilityText(captionText, hasHintExpanderOnOption = false) {
87
+ const multipleOptionsMessage = h(
88
+ 'span',
89
+ { class: 'ontario-show-for-sr' },
90
+ this.translations.accessibility.moreInfo[this.language],
91
+ ' "',
92
+ captionText.toLowerCase(),
93
+ '"',
94
+ ' ',
95
+ this.translations.accessibility.checkboxHintExpander[this.language],
96
+ );
97
+ const singleOptionMessage = h(
98
+ 'span',
99
+ { class: 'ontario-show-for-sr' },
100
+ this.translations.accessibility.moreInfo[this.language],
101
+ ' "',
102
+ captionText.toLowerCase(),
103
+ '"',
104
+ ' ',
105
+ this.translations.accessibility.singleHintExpander[this.language],
106
+ );
107
+ return this.componentTagName === 'ontario-checkboxes'
108
+ ? !hasHintExpanderOnOption
109
+ ? multipleOptionsMessage
110
+ : singleOptionMessage
111
+ : singleOptionMessage;
112
+ }
113
+ /**
114
+ * Determines which flag text to use between `required` and `optional`
115
+ * @returns `required` or `optional` flag text
116
+ */
117
+ getRequiredFlagText() {
118
+ return this.required
119
+ ? this.translations && `(${this.translations.required[this.language]})`
120
+ : this.translations && `(${this.translations.optional[this.language]})`;
121
+ }
122
+ /**
123
+ * Get the HTML for the required/optional flag.
124
+ * @returns CSS class for the label/legend.
125
+ */
126
+ getRequiredFlagElement() {
127
+ return h('span', { class: 'ontario-label__flag' }, this.getRequiredFlagText());
128
+ }
129
+ /**
130
+ * Get the CSS class for the `label` element.
131
+ * @returns CSS class for the `label` element.
132
+ */
133
+ getClass() {
134
+ return this.captionType === 'large' || this.captionType === 'heading'
135
+ ? this.isLegend
136
+ ? `ontario-fieldset__legend ontario-fieldset__legend--${this.captionType}`
137
+ : `ontario-label ontario-label--${this.captionType}`
138
+ : this.isLegend
139
+ ? 'ontario-fieldset__legend'
140
+ : 'ontario-label';
141
+ }
142
+ /**
143
+ * Validate caption input by user and output warning message to the console if:
144
+ * 1. the `caption` object is not provided
145
+ * 2. the `captionText` property of the `caption` object is not provided
146
+ * 3. the `captionText` property of the `caption` object is empty or contain only spaces
147
+ * 4. the `captionType` property of the `caption` object is not provided
148
+ * 5. the `captionType` property of the `caption` object is incorrect
149
+ */
150
+ validateCaption(caption) {
151
+ var _a;
152
+ let messageType;
153
+ // undefined `caption` object
154
+ if (!caption || Object.keys(caption).length <= 0) {
155
+ messageType = MessageContentType.UndefinedCaptionObject;
156
+ } else {
157
+ // undefined `captionText` property
158
+ if (!caption.captionText) {
159
+ messageType = MessageContentType.UndefinedCaptionText;
160
+ } else {
161
+ // `captionText` that is empty or contains only spaces
162
+ if (/^\s*$/.test(caption.captionText)) {
163
+ messageType = MessageContentType.EmptyCaptionText;
164
+ }
165
+ }
166
+ // undefined `captionType`
167
+ if (!caption.captionType) {
168
+ messageType = MessageContentType.UndefinedCaptionType;
169
+ } else {
170
+ // incorrect `captionType`
171
+ if (
172
+ !CaptionTypes.includes(
173
+ (_a = caption === null || caption === void 0 ? void 0 : caption.captionType) === null || _a === void 0
174
+ ? void 0
175
+ : _a.toLowerCase(),
176
+ )
177
+ ) {
178
+ messageType = MessageContentType.IncorrectCaptionType;
179
+ }
180
+ }
181
+ }
182
+ if (messageType) {
183
+ const message = new ConsoleMessageClass().addDesignSystemTag();
184
+ if (messageType !== MessageContentType.UndefinedCaptionObject) {
185
+ message
186
+ .addMonospaceText(
187
+ ` ${
188
+ messageType === MessageContentType.EmptyCaptionText ||
189
+ messageType === MessageContentType.UndefinedCaptionText
190
+ ? 'caption or captionText'
191
+ : 'captionType'
192
+ } `,
193
+ )
194
+ .addRegularText('object or property of');
195
+ }
196
+ message.addMonospaceText(' caption ').addRegularText('object on').addMonospaceText(` ${this.componentTagName} `);
197
+ this.printConsoleMessage(messageType, message, this.getRequiredFlagText());
198
+ }
199
+ }
200
+ /**
201
+ * Generate the content of warning message to be printed to the console
202
+ * @param messageType determine the content of warning message to output
203
+ * @param componentTagName the tag name of the component that's emitting the warning message
204
+ * @param requiredFlagText accepts a string value to be used as the required flag text and defaults to `(optional)` if not set
205
+ * @returns an array of `ConsoleMessage` objects containing the message and associated styles to be printed to the console
206
+ */
207
+ printConsoleMessage(messageType, message, requiredFlagText = '(optional)') {
208
+ switch (messageType) {
209
+ // undefinedCaptionObject example: caption object on <ontario-input> is required but not defined. A blank followed by a (optional) flag is assumed.
210
+ // undefinedCaptionText example: captionText property of caption object on <ontario-input> is required but not defined. A blank followed by a (optional) flag is assumed.
211
+ // EmptyCaptionText example: captionText property of caption object on <ontario-input> is empty or contains only spaces. A blank followed by a (optional) flag is assumed.
212
+ case MessageContentType.UndefinedCaptionObject:
213
+ case MessageContentType.UndefinedCaptionText:
214
+ case MessageContentType.EmptyCaptionText:
215
+ message
216
+ .addRegularText(
217
+ `${
218
+ messageType === MessageContentType.EmptyCaptionText
219
+ ? 'is empty or contains only spaces'
220
+ : 'is required but not defined'
221
+ }. A blank followed by a`,
222
+ )
223
+ .addMonospaceText(` ${requiredFlagText} `)
224
+ .addRegularText('flag is assumed.');
225
+ break;
226
+ // UndefinedCaptionType example: captionType property of caption object on <ontario-input> is not defined. The default type is assumed.
227
+ case MessageContentType.UndefinedCaptionType:
228
+ message.addRegularText('is not defined. The').addMonospaceText(' default ').addRegularText('type is assumed.');
229
+ break;
230
+ // IncorrectCaptionType example: captionType property of caption object on <ontario-input> was set to an incorrect type; only default, heading or large type is allowed. The default type is assumed.
231
+ case MessageContentType.IncorrectCaptionType:
232
+ message
233
+ .addRegularText('was set to an incorrect type; only')
234
+ .addMonospaceText(' default, heading, ')
235
+ .addRegularText('or')
236
+ .addMonospaceText(' large ')
237
+ .addRegularText('type is allowed. The')
238
+ .addMonospaceText(' default ')
239
+ .addRegularText('type is assumed.');
240
+ break;
241
+ }
242
+ message.printMessage();
243
+ }
244
+ }
245
+
246
+ var EventType;
247
+ (function (EventType) {
248
+ EventType['Change'] = 'change';
249
+ EventType['Blur'] = 'blur';
250
+ EventType['Focus'] = 'focus';
251
+ EventType['Input'] = 'input';
252
+ })(EventType || (EventType = {}));
253
+
254
+ const handleInputEvent = (
255
+ event,
256
+ eventType,
257
+ input,
258
+ inputChangeEvent,
259
+ inputFocusEvent,
260
+ inputBlurEvent,
261
+ inputInputEvent,
262
+ type,
263
+ customChangeFunction,
264
+ customFocusFunction,
265
+ customBlurFunction,
266
+ customInputFunction,
267
+ hostElement,
268
+ ) => {
269
+ var _a;
270
+ if (eventType === EventType.Input) {
271
+ inputInputEvent === null || inputInputEvent === void 0
272
+ ? void 0
273
+ : inputInputEvent.emit({
274
+ id: input === null || input === void 0 ? void 0 : input.id,
275
+ value: (_a = event.data) !== null && _a !== void 0 ? _a : undefined,
276
+ inputType: event.inputType,
277
+ });
278
+ customInputFunction && customInputFunction(event);
279
+ }
280
+ if (eventType === EventType.Change) {
281
+ if (type === 'radio' || type === 'checkbox') {
282
+ if (input instanceof HTMLInputElement) {
283
+ inputChangeEvent.emit({
284
+ checked: input === null || input === void 0 ? void 0 : input.checked,
285
+ id: input === null || input === void 0 ? void 0 : input.id,
286
+ value: input === null || input === void 0 ? void 0 : input.value,
287
+ });
288
+ }
289
+ } else {
290
+ inputChangeEvent.emit({
291
+ id: input === null || input === void 0 ? void 0 : input.id,
292
+ value: input === null || input === void 0 ? void 0 : input.value,
293
+ });
294
+ }
295
+ customChangeFunction && customChangeFunction(event);
296
+ // Note: Change events don't have composable set to true and don't cross the ShadowDOM boundary.
297
+ // This will emit an event so the normal `onChange` event pattern is maintained.
298
+ hostElement && emitEvent(hostElement, eventType, event);
299
+ }
300
+ if (eventType === EventType.Focus) {
301
+ inputFocusEvent.emit({
302
+ id: input === null || input === void 0 ? void 0 : input.id,
303
+ focused: true,
304
+ value: input === null || input === void 0 ? void 0 : input.value,
305
+ });
306
+ customFocusFunction && customFocusFunction(event);
307
+ }
308
+ if (eventType === EventType.Blur) {
309
+ inputBlurEvent.emit({
310
+ id: input === null || input === void 0 ? void 0 : input.id,
311
+ focused: false,
312
+ value: input === null || input === void 0 ? void 0 : input.value,
313
+ });
314
+ customBlurFunction && customBlurFunction(event);
315
+ }
316
+ };
317
+ /**
318
+ * Emit a custom event that can be subscribed to by an event listener.
319
+ *
320
+ * @param element Component host element, see https://stenciljs.com/docs/host-element
321
+ * @param name name of the event
322
+ * @param detail any relevant details, like the original event
323
+ */
324
+ const emitEvent = (element, name, detail) => {
325
+ element.dispatchEvent(new CustomEvent(name, { composed: true, bubbles: true, detail }));
326
+ };
327
+
328
+ export { EventType as E, InputCaption as I, emitEvent as e, handleInputEvent as h };
329
+
330
+ //# sourceMappingURL=event-handler.js.map
@@ -0,0 +1 @@
1
+ {"file":"event-handler.js","mappings":"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","names":[],"sources":["src/utils/common/input-caption/input-caption.enum.ts","src/utils/common/input-caption/input-caption.tsx","src/utils/events/event-handler.interface.ts","src/utils/events/event-handler.ts"],"sourcesContent":["export enum MessageContentType {\n\tUndefinedCaptionObject = 'undefinedCaptionObject',\n\tUndefinedCaptionText = 'undefinedCaption',\n\tEmptyCaptionText = 'emptyCaption',\n\tUndefinedCaptionType = 'undefinedCaptionType',\n\tIncorrectCaptionType = 'incorrectCaptionType',\n}\n","import { h } from '@stencil/core';\nimport { CaptionType, CaptionTypes } from './input-caption.types';\nimport { MessageContentType } from './input-caption.enum';\nimport { CaptionInfo, Caption } from './caption.interface';\nimport { ConsoleMessageClass } from '../../console-message/console-message';\n\nexport class InputCaption implements CaptionInfo {\n\t/**\n\t * The text to display as caption.\n\t */\n\tcaptionText: string;\n\n\t/**\n\t * The type of caption to render.\n\t */\n\tcaptionType?: CaptionType = 'default';\n\n\t/**\n\t * Determine whether the input field is required.\n\t */\n\trequired?: boolean = false;\n\n\t/**\n\t * Determine whether the rendered element is a `<label>` or `<legend>`.\n\t */\n\tisLegend?: boolean = false;\n\n\t/**\n\t * Name of the component instantiating the class.\n\t * This is used for validation warning message.\n\t */\n\tcomponentTagName: string;\n\n\tlanguage: any = 'en';\n\n\ttranslations: any;\n\n\t/**\n\t * Set the class members\n\t * Output a console warning message if the provided `label` type is incorrect\n\t * @param caption object containing the essential data to configure the input label\n\t */\n\tconstructor(\n\t\tcomponentTagName: string,\n\t\tcaption: Caption | string,\n\t\ttranslations: any,\n\t\tlanguage: any,\n\t\tisLegend: boolean = false,\n\t\trequired: boolean = false,\n\t) {\n\t\tlet captionObject: Caption;\n\n\t\tif (typeof caption === 'string') {\n\t\t\ttry {\n\t\t\t\tcaptionObject = JSON.parse(caption) as Caption;\n\t\t\t} catch {\n\t\t\t\tcaptionObject = { captionText: caption, captionType: 'default' };\n\t\t\t}\n\t\t} else {\n\t\t\tcaptionObject = caption;\n\t\t}\n\n\t\tthis.componentTagName = componentTagName.toLocaleLowerCase();\n\t\tthis.captionText = captionObject?.captionText;\n\t\tthis.captionType =\n\t\t\t(captionObject?.captionType && CaptionTypes.find((type) => type === captionObject.captionType?.toLowerCase())) ||\n\t\t\t'default';\n\t\tthis.required = required;\n\t\tthis.isLegend = isLegend;\n\t\tthis.translations = translations;\n\t\tthis.language = language;\n\n\t\tthis.validateCaption(this);\n\t}\n\n\t/**\n\t * Return the `<label>` element for text inputs\n\t * @param captionFor Set the `htmlFor` attribute\n\t * @param hasHintExpander Indicate whether the component the label is for has a hint expander or not\n\t * @param disableRequiredFlag Disable the required/optional label text _(only use in highly special cases)_\n\t * @returns element containing the caption for the input\n\t */\n\tgetCaption = (\n\t\tcaptionFor?: string | undefined,\n\t\thasHintExpander: boolean = false,\n\t\tdisableRequiredFlag: boolean = false,\n\t): HTMLElement => {\n\t\tconst captionText = this.captionText && this.captionText.toLowerCase();\n\t\tconst captionContent = this.isLegend ? (\n\t\t\t<legend class={this.getClass()}>\n\t\t\t\t{this.captionType === 'heading' ? <h1>{this.captionText}</h1> : this.captionText}\n\t\t\t\t{!disableRequiredFlag && this.getRequiredFlagElement()}\n\t\t\t\t{hasHintExpander && this.getHintExpanderAccessibilityText(captionText, false)}\n\t\t\t</legend>\n\t\t) : (\n\t\t\t<label htmlFor={captionFor} class={this.getClass()}>\n\t\t\t\t{this.captionText}\n\t\t\t\t{!disableRequiredFlag && this.getRequiredFlagElement()}\n\t\t\t\t{hasHintExpander && this.getHintExpanderAccessibilityText(captionText, false)}\n\t\t\t</label>\n\t\t);\n\n\t\t// with `this.captionType` already set to one of the enum values, the comparison no longer needs the `toLowerCase()` transform\n\t\treturn this.captionType === 'heading' && !this.isLegend ? <h1>{captionContent}</h1> : captionContent;\n\t};\n\n\tgetHintExpanderAccessibilityText(captionText: string, hasHintExpanderOnOption: boolean = false): HTMLElement {\n\t\tconst multipleOptionsMessage = (\n\t\t\t<span class=\"ontario-show-for-sr\">\n\t\t\t\t{this.translations.accessibility.moreInfo[this.language]} \"{captionText.toLowerCase()}\"{' '}\n\t\t\t\t{this.translations.accessibility.checkboxHintExpander[this.language]}\n\t\t\t</span>\n\t\t);\n\n\t\tconst singleOptionMessage = (\n\t\t\t<span class=\"ontario-show-for-sr\">\n\t\t\t\t{this.translations.accessibility.moreInfo[this.language]} \"{captionText.toLowerCase()}\"{' '}\n\t\t\t\t{this.translations.accessibility.singleHintExpander[this.language]}\n\t\t\t</span>\n\t\t);\n\t\treturn this.componentTagName === 'ontario-checkboxes'\n\t\t\t? !hasHintExpanderOnOption\n\t\t\t\t? multipleOptionsMessage\n\t\t\t\t: singleOptionMessage\n\t\t\t: singleOptionMessage;\n\t}\n\n\t/**\n\t * Determines which flag text to use between `required` and `optional`\n\t * @returns `required` or `optional` flag text\n\t */\n\tprivate getRequiredFlagText(): string {\n\t\treturn this.required\n\t\t\t? this.translations && `(${this.translations.required[this.language]})`\n\t\t\t: this.translations && `(${this.translations.optional[this.language]})`;\n\t}\n\n\t/**\n\t * Get the HTML for the required/optional flag.\n\t * @returns CSS class for the label/legend.\n\t */\n\tprivate getRequiredFlagElement(): HTMLElement {\n\t\treturn <span class=\"ontario-label__flag\">{this.getRequiredFlagText()}</span>;\n\t}\n\n\t/**\n\t * Get the CSS class for the `label` element.\n\t * @returns CSS class for the `label` element.\n\t */\n\tprivate getClass(): string {\n\t\treturn this.captionType === 'large' || this.captionType === 'heading'\n\t\t\t? this.isLegend\n\t\t\t\t? `ontario-fieldset__legend ontario-fieldset__legend--${this.captionType}`\n\t\t\t\t: `ontario-label ontario-label--${this.captionType}`\n\t\t\t: this.isLegend\n\t\t\t? 'ontario-fieldset__legend'\n\t\t\t: 'ontario-label';\n\t}\n\n\t/**\n\t * Validate caption input by user and output warning message to the console if:\n\t * 1. the `caption` object is not provided\n\t * 2. the `captionText` property of the `caption` object is not provided\n\t * 3. the `captionText` property of the `caption` object is empty or contain only spaces\n\t * 4. the `captionType` property of the `caption` object is not provided\n\t * 5. the `captionType` property of the `caption` object is incorrect\n\t */\n\tprivate validateCaption(caption?: InputCaption) {\n\t\tlet messageType;\n\n\t\t// undefined `caption` object\n\t\tif (!caption || Object.keys(caption).length <= 0) {\n\t\t\tmessageType = MessageContentType.UndefinedCaptionObject;\n\t\t} else {\n\t\t\t// undefined `captionText` property\n\t\t\tif (!caption.captionText) {\n\t\t\t\tmessageType = MessageContentType.UndefinedCaptionText;\n\t\t\t} else {\n\t\t\t\t// `captionText` that is empty or contains only spaces\n\t\t\t\tif (/^\\s*$/.test(caption.captionText)) {\n\t\t\t\t\tmessageType = MessageContentType.EmptyCaptionText;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// undefined `captionType`\n\t\t\tif (!caption.captionType) {\n\t\t\t\tmessageType = MessageContentType.UndefinedCaptionType;\n\t\t\t} else {\n\t\t\t\t// incorrect `captionType`\n\t\t\t\tif (!CaptionTypes.includes(caption?.captionType?.toLowerCase() as CaptionType)) {\n\t\t\t\t\tmessageType = MessageContentType.IncorrectCaptionType;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (messageType) {\n\t\t\tconst message = new ConsoleMessageClass().addDesignSystemTag();\n\n\t\t\tif (messageType !== MessageContentType.UndefinedCaptionObject) {\n\t\t\t\tmessage\n\t\t\t\t\t.addMonospaceText(\n\t\t\t\t\t\t` ${\n\t\t\t\t\t\t\tmessageType === MessageContentType.EmptyCaptionText ||\n\t\t\t\t\t\t\tmessageType === MessageContentType.UndefinedCaptionText\n\t\t\t\t\t\t\t\t? 'caption or captionText'\n\t\t\t\t\t\t\t\t: 'captionType'\n\t\t\t\t\t\t} `,\n\t\t\t\t\t)\n\t\t\t\t\t.addRegularText('object or property of');\n\t\t\t}\n\n\t\t\tmessage.addMonospaceText(' caption ').addRegularText('object on').addMonospaceText(` ${this.componentTagName} `);\n\t\t\tthis.printConsoleMessage(messageType, message, this.getRequiredFlagText());\n\t\t}\n\t}\n\n\t/**\n\t * Generate the content of warning message to be printed to the console\n\t * @param messageType determine the content of warning message to output\n\t * @param componentTagName the tag name of the component that's emitting the warning message\n\t * @param requiredFlagText accepts a string value to be used as the required flag text and defaults to `(optional)` if not set\n\t * @returns an array of `ConsoleMessage` objects containing the message and associated styles to be printed to the console\n\t */\n\tprivate printConsoleMessage(\n\t\tmessageType: MessageContentType,\n\t\tmessage: ConsoleMessageClass,\n\t\trequiredFlagText: string = '(optional)',\n\t) {\n\t\tswitch (messageType) {\n\t\t\t// undefinedCaptionObject example: caption object on <ontario-input> is required but not defined. A blank followed by a (optional) flag is assumed.\n\t\t\t// undefinedCaptionText example: captionText property of caption object on <ontario-input> is required but not defined. A blank followed by a (optional) flag is assumed.\n\t\t\t// EmptyCaptionText example: captionText property of caption object on <ontario-input> is empty or contains only spaces. A blank followed by a (optional) flag is assumed.\n\t\t\tcase MessageContentType.UndefinedCaptionObject:\n\t\t\tcase MessageContentType.UndefinedCaptionText:\n\t\t\tcase MessageContentType.EmptyCaptionText:\n\t\t\t\tmessage\n\t\t\t\t\t.addRegularText(\n\t\t\t\t\t\t`${\n\t\t\t\t\t\t\tmessageType === MessageContentType.EmptyCaptionText\n\t\t\t\t\t\t\t\t? 'is empty or contains only spaces'\n\t\t\t\t\t\t\t\t: 'is required but not defined'\n\t\t\t\t\t\t}. A blank followed by a`,\n\t\t\t\t\t)\n\t\t\t\t\t.addMonospaceText(` ${requiredFlagText} `)\n\t\t\t\t\t.addRegularText('flag is assumed.');\n\t\t\t\tbreak;\n\n\t\t\t// UndefinedCaptionType example: captionType property of caption object on <ontario-input> is not defined. The default type is assumed.\n\t\t\tcase MessageContentType.UndefinedCaptionType:\n\t\t\t\tmessage.addRegularText('is not defined. The').addMonospaceText(' default ').addRegularText('type is assumed.');\n\t\t\t\tbreak;\n\n\t\t\t// IncorrectCaptionType example: captionType property of caption object on <ontario-input> was set to an incorrect type; only default, heading or large type is allowed. The default type is assumed.\n\t\t\tcase MessageContentType.IncorrectCaptionType:\n\t\t\t\tmessage\n\t\t\t\t\t.addRegularText('was set to an incorrect type; only')\n\t\t\t\t\t.addMonospaceText(' default, heading, ')\n\t\t\t\t\t.addRegularText('or')\n\t\t\t\t\t.addMonospaceText(' large ')\n\t\t\t\t\t.addRegularText('type is allowed. The')\n\t\t\t\t\t.addMonospaceText(' default ')\n\t\t\t\t\t.addRegularText('type is assumed.');\n\t\t\t\tbreak;\n\t\t}\n\n\t\tmessage.printMessage();\n\t}\n}\n","export enum EventType {\n\tChange = 'change',\n\tBlur = 'blur',\n\tFocus = 'focus',\n\tInput = 'input',\n}\n\nexport type InputInteractionEvent = {\n\tid?: string;\n\tvalue?: string;\n};\n\nexport type InputInputEvent = InputInteractionEvent & {\n\tinputType?: string;\n};\n\nexport type RadioAndCheckboxChangeEvent = InputInteractionEvent & {\n\tchecked: boolean;\n};\n\nexport type InputFocusBlurEvent = InputInteractionEvent & {\n\tfocused: boolean;\n};\n\nexport type InputType = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null;\n","import { EventEmitter } from '@stencil/core';\nimport {\n\tInputType,\n\tEventType,\n\tInputFocusBlurEvent,\n\tInputInteractionEvent,\n\tRadioAndCheckboxChangeEvent,\n\tInputInputEvent,\n} from './event-handler.interface';\n\nexport const handleInputEvent = (\n\tevent: Event,\n\teventType: EventType,\n\tinput: InputType,\n\tinputChangeEvent: EventEmitter<InputInteractionEvent | RadioAndCheckboxChangeEvent>,\n\tinputFocusEvent: EventEmitter<InputFocusBlurEvent>,\n\tinputBlurEvent: EventEmitter<InputFocusBlurEvent>,\n\tinputInputEvent?: EventEmitter<InputInputEvent>,\n\ttype?: string,\n\tcustomChangeFunction?: (event: Event) => void,\n\tcustomFocusFunction?: (event: Event) => void,\n\tcustomBlurFunction?: (event: Event) => void,\n\tcustomInputFunction?: (event: Event) => void,\n\thostElement?: HTMLElement,\n) => {\n\tif (eventType === EventType.Input) {\n\t\tinputInputEvent?.emit({\n\t\t\tid: input?.id,\n\t\t\tvalue: (event as InputEvent).data ?? undefined,\n\t\t\tinputType: (event as InputEvent).inputType,\n\t\t});\n\n\t\tcustomInputFunction && customInputFunction(event);\n\t}\n\n\tif (eventType === EventType.Change) {\n\t\tif (type === 'radio' || type === 'checkbox') {\n\t\t\tif (input instanceof HTMLInputElement) {\n\t\t\t\tinputChangeEvent.emit({\n\t\t\t\t\tchecked: input?.checked,\n\t\t\t\t\tid: input?.id,\n\t\t\t\t\tvalue: input?.value,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tinputChangeEvent.emit({\n\t\t\t\tid: input?.id,\n\t\t\t\tvalue: input?.value,\n\t\t\t});\n\t\t}\n\n\t\tcustomChangeFunction && customChangeFunction(event);\n\n\t\t// Note: Change events don't have composable set to true and don't cross the ShadowDOM boundary.\n\t\t// This will emit an event so the normal `onChange` event pattern is maintained.\n\t\thostElement && emitEvent(hostElement, eventType, event);\n\t}\n\n\tif (eventType === EventType.Focus) {\n\t\tinputFocusEvent.emit({\n\t\t\tid: input?.id,\n\t\t\tfocused: true,\n\t\t\tvalue: input?.value,\n\t\t});\n\n\t\tcustomFocusFunction && customFocusFunction(event);\n\t}\n\n\tif (eventType === EventType.Blur) {\n\t\tinputBlurEvent.emit({\n\t\t\tid: input?.id,\n\t\t\tfocused: false,\n\t\t\tvalue: input?.value,\n\t\t});\n\n\t\tcustomBlurFunction && customBlurFunction(event);\n\t}\n};\n\n/**\n * Emit a custom event that can be subscribed to by an event listener.\n *\n * @param element Component host element, see https://stenciljs.com/docs/host-element\n * @param name name of the event\n * @param detail any relevant details, like the original event\n */\nexport const emitEvent = (element: HTMLElement, name: string, detail?: any) => {\n\telement.dispatchEvent(new CustomEvent(name, { composed: true, bubbles: true, detail }));\n};\n"],"version":3}
@@ -27,6 +27,7 @@ const Input = (_a) => {
27
27
  onChange,
28
28
  onBlur,
29
29
  onFocus,
30
+ onClick,
30
31
  ariaInvalid,
31
32
  ariaDescribedBy,
32
33
  ref,
@@ -47,6 +48,7 @@ const Input = (_a) => {
47
48
  'onChange',
48
49
  'onBlur',
49
50
  'onFocus',
51
+ 'onClick',
50
52
  'ariaInvalid',
51
53
  'ariaDescribedBy',
52
54
  'ref',
@@ -70,6 +72,7 @@ const Input = (_a) => {
70
72
  'onChange': onChange,
71
73
  'onBlur': onBlur,
72
74
  'onFocus': onFocus,
75
+ 'onClick': onClick,
73
76
  'inputMode': inputMode,
74
77
  'ref': ref,
75
78
  'aria-invalid': ariaInvalid,
@@ -1 +1 @@
1
- {"file":"input.js","mappings":";;;;;;;;;;;;;MAuBa,KAAK,GAAoC,CAAC,EAoBtD;QApBsD,EACtD,YAAY,EACZ,SAAS,EACT,EAAE,EACF,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,eAAe,EACf,GAAG,EACH,SAAS,OAET,EADG,KAAK,cAnB8C,iNAoBtD,CADQ;IAER,QACC,2BACC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,kBACM,WAAW,sBACP,eAAe,IAC7B,KAAK,EACR,EACD;AACH;;;;","names":[],"sources":["src/utils/common/input/input.tsx"],"sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\n\nexport type InputProps = {\n\tautoComplete?: string;\n\tclassName?: string;\n\tid: string;\n\tname?: string;\n\ttype: string;\n\tvalue?: string | number;\n\tchecked?: boolean;\n\trequired?: boolean;\n\tinputMode?: string;\n\tplaceholder?: string;\n\tariaInvalid?: boolean;\n\tariaDescribedBy?: string;\n\tonKeyDown?: ((event: Event) => void) | undefined;\n\tonInput?: ((event: Event) => void) | undefined;\n\tonChange?: ((event: Event) => void) | undefined;\n\tonBlur?: ((event: Event) => void) | undefined;\n\tonFocus?: ((event: Event) => void) | undefined;\n\tref?: (el: any) => HTMLElement;\n};\n\nexport const Input: FunctionalComponent<InputProps> = ({\n\tautoComplete,\n\tclassName,\n\tid,\n\tname,\n\tplaceholder,\n\ttype,\n\tvalue,\n\tchecked,\n\trequired,\n\tonKeyDown,\n\tonInput,\n\tonChange,\n\tonBlur,\n\tonFocus,\n\tariaInvalid,\n\tariaDescribedBy,\n\tref,\n\tinputMode,\n\t...props\n}) => {\n\treturn (\n\t\t<input\n\t\t\tautoComplete={autoComplete}\n\t\t\tclass={className}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\ttype={type}\n\t\t\tvalue={value}\n\t\t\tchecked={checked}\n\t\t\tplaceholder={placeholder}\n\t\t\trequired={!!required}\n\t\t\tonKeyDown={onKeyDown}\n\t\t\tonInput={onInput}\n\t\t\tonChange={onChange}\n\t\t\tonBlur={onBlur}\n\t\t\tonFocus={onFocus}\n\t\t\tinputMode={inputMode}\n\t\t\tref={ref}\n\t\t\taria-invalid={ariaInvalid}\n\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n"],"version":3}
1
+ {"file":"input.js","mappings":";;;;;;;;;;;;;MAwBa,KAAK,GAAoC,CAAC,EAqBtD;QArBsD,EACtD,YAAY,EACZ,SAAS,EACT,EAAE,EACF,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,eAAe,EACf,GAAG,EACH,SAAS,OAET,EADG,KAAK,cApB8C,4NAqBtD,CADQ;IAER,QACC,2BACC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,kBACM,WAAW,sBACP,eAAe,IAC7B,KAAK,EACR,EACD;AACH;;;;","names":[],"sources":["src/utils/common/input/input.tsx"],"sourcesContent":["import { FunctionalComponent, h } from '@stencil/core';\n\nexport type InputProps = {\n\tautoComplete?: string;\n\tclassName?: string;\n\tid: string;\n\tname?: string;\n\ttype: string;\n\tvalue?: string | number;\n\tchecked?: boolean;\n\trequired?: boolean;\n\tinputMode?: string;\n\tplaceholder?: string;\n\tariaInvalid?: boolean;\n\tariaDescribedBy?: string;\n\tonKeyDown?: ((event: Event) => void) | undefined;\n\tonInput?: ((event: Event) => void) | undefined;\n\tonChange?: ((event: Event) => void) | undefined;\n\tonBlur?: ((event: Event) => void) | undefined;\n\tonFocus?: ((event: Event) => void) | undefined;\n\tonClick?: ((event: Event) => void) | undefined;\n\tref?: (el: HTMLInputElement) => HTMLElement;\n};\n\nexport const Input: FunctionalComponent<InputProps> = ({\n\tautoComplete,\n\tclassName,\n\tid,\n\tname,\n\tplaceholder,\n\ttype,\n\tvalue,\n\tchecked,\n\trequired,\n\tonKeyDown,\n\tonInput,\n\tonChange,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tariaInvalid,\n\tariaDescribedBy,\n\tref,\n\tinputMode,\n\t...props\n}) => {\n\treturn (\n\t\t<input\n\t\t\tautoComplete={autoComplete}\n\t\t\tclass={className}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\ttype={type}\n\t\t\tvalue={value}\n\t\t\tchecked={checked}\n\t\t\tplaceholder={placeholder}\n\t\t\trequired={!!required}\n\t\t\tonKeyDown={onKeyDown}\n\t\t\tonInput={onInput}\n\t\t\tonChange={onChange}\n\t\t\tonBlur={onBlur}\n\t\t\tonFocus={onFocus}\n\t\t\tonClick={onClick}\n\t\t\tinputMode={inputMode}\n\t\t\tref={ref}\n\t\t\taria-invalid={ariaInvalid}\n\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n"],"version":3}