@siemens/ix 4.1.0 → 4.2.0

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 (160) hide show
  1. package/READMEOSS.html +1 -1
  2. package/components/index.js.map +1 -1
  3. package/components/ix-checkbox-group.js +3 -3
  4. package/components/ix-checkbox.js +1 -1
  5. package/components/ix-custom-field.js +3 -3
  6. package/components/ix-date-input.js +8 -10
  7. package/components/ix-date-input.js.map +1 -1
  8. package/components/ix-datetime-picker.js +1 -1
  9. package/components/ix-field-label.js +1 -1
  10. package/components/ix-field-wrapper.js +1 -1
  11. package/components/ix-helper-text.js +1 -1
  12. package/components/ix-input.js +4 -4
  13. package/components/ix-menu-about.js +2 -2
  14. package/components/ix-menu-settings.js +1 -1
  15. package/components/ix-number-input.js +4 -4
  16. package/components/ix-pagination.js +3 -3
  17. package/components/ix-radio-group.js +3 -3
  18. package/components/ix-radio.js +1 -1
  19. package/components/ix-select.js +1 -1
  20. package/components/ix-tab-item.js +1 -1
  21. package/components/ix-textarea.js +4 -4
  22. package/components/ix-time-input.js +9 -11
  23. package/components/ix-time-input.js.map +1 -1
  24. package/components/ix-time-picker.js +1 -1
  25. package/components/ix-toggle.js +1 -1
  26. package/components/{p-DyGPjxFm.js → p-7E7AMiQV.js} +3 -3
  27. package/components/p-7E7AMiQV.js.map +1 -0
  28. package/components/{p-Bz7hxKB6.js → p-B1p0kpQJ.js} +3 -3
  29. package/components/{p-Bz7hxKB6.js.map → p-B1p0kpQJ.js.map} +1 -1
  30. package/components/{p-BVUD9f4A.js → p-BIg1TSrD.js} +3 -3
  31. package/components/{p-BVUD9f4A.js.map → p-BIg1TSrD.js.map} +1 -1
  32. package/components/{p-BZLbfHdO.js → p-BOQ00Fbs.js} +5 -5
  33. package/components/{p-BZLbfHdO.js.map → p-BOQ00Fbs.js.map} +1 -1
  34. package/components/{p-Cc4uqNv5.js → p-BiqdnsgA.js} +3 -3
  35. package/components/{p-Cc4uqNv5.js.map → p-BiqdnsgA.js.map} +1 -1
  36. package/components/{p-kJlC6ZD0.js → p-BmMUyJRQ.js} +35 -20
  37. package/components/p-BmMUyJRQ.js.map +1 -0
  38. package/components/{p-g2Y5blor.js → p-DUU5I7wZ.js} +3 -3
  39. package/components/{p-g2Y5blor.js.map → p-DUU5I7wZ.js.map} +1 -1
  40. package/components/{p-xHo-3QVy.js → p-Dq_H2flK.js} +9 -3
  41. package/components/p-Dq_H2flK.js.map +1 -0
  42. package/dist/cjs/index.cjs.js.map +1 -1
  43. package/dist/cjs/{input.fc-B5JMSZbY.js → input.fc-DrxRYq_G.js} +3 -3
  44. package/dist/cjs/{input.fc-B5JMSZbY.js.map → input.fc-DrxRYq_G.js.map} +1 -1
  45. package/dist/cjs/ix-checkbox-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ix-checkbox.cjs.entry.js +1 -1
  47. package/dist/cjs/ix-custom-field.cjs.entry.js +1 -1
  48. package/dist/cjs/ix-date-input.cjs.entry.js +6 -8
  49. package/dist/cjs/ix-date-input.entry.cjs.js.map +1 -1
  50. package/dist/cjs/ix-field-label_2.cjs.entry.js +1 -1
  51. package/dist/cjs/ix-helper-text.cjs.entry.js +1 -1
  52. package/dist/cjs/ix-input.cjs.entry.js +2 -2
  53. package/dist/cjs/ix-number-input.cjs.entry.js +2 -2
  54. package/dist/cjs/ix-radio-group.cjs.entry.js +1 -1
  55. package/dist/cjs/ix-radio.cjs.entry.js +1 -1
  56. package/dist/cjs/ix-select.cjs.entry.js +1 -1
  57. package/dist/cjs/ix-tab-item.ix-tabs.entry.cjs.js.map +1 -1
  58. package/dist/cjs/ix-tab-item_2.cjs.entry.js +1 -1
  59. package/dist/cjs/ix-textarea.cjs.entry.js +2 -2
  60. package/dist/cjs/ix-time-input.cjs.entry.js +6 -8
  61. package/dist/cjs/ix-time-input.entry.cjs.js.map +1 -1
  62. package/dist/cjs/ix-time-picker.cjs.entry.js +33 -18
  63. package/dist/cjs/ix-time-picker.entry.cjs.js.map +1 -1
  64. package/dist/cjs/ix-toggle.cjs.entry.js +1 -1
  65. package/dist/cjs/{validation-CfL71_0d.js → validation-DTmSqO2d.js} +9 -2
  66. package/dist/{esm/validation-D_dk-JqT.js.map → cjs/validation-DTmSqO2d.js.map} +1 -1
  67. package/dist/collection/components/date-input/date-input.js +5 -7
  68. package/dist/collection/components/date-input/date-input.js.map +1 -1
  69. package/dist/collection/components/tab-item/tab-item.css +1 -1
  70. package/dist/collection/components/time-input/time-input.js +5 -7
  71. package/dist/collection/components/time-input/time-input.js.map +1 -1
  72. package/dist/collection/components/time-picker/time-picker.js +33 -18
  73. package/dist/collection/components/time-picker/time-picker.js.map +1 -1
  74. package/dist/collection/components/utils/input/validation.js +6 -0
  75. package/dist/collection/components/utils/input/validation.js.map +1 -1
  76. package/dist/collection/components/utils/modal/index.js.map +1 -1
  77. package/dist/collection/components/utils/modal/loading.js.map +1 -1
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/{input.fc-CQbX6V05.js → input.fc-KJF8Z9iJ.js} +3 -3
  80. package/dist/esm/{input.fc-CQbX6V05.js.map → input.fc-KJF8Z9iJ.js.map} +1 -1
  81. package/dist/esm/ix-checkbox-group.entry.js +1 -1
  82. package/dist/esm/ix-checkbox.entry.js +1 -1
  83. package/dist/esm/ix-custom-field.entry.js +1 -1
  84. package/dist/esm/ix-date-input.entry.js +6 -8
  85. package/dist/esm/ix-date-input.entry.js.map +1 -1
  86. package/dist/esm/ix-field-label_2.entry.js +1 -1
  87. package/dist/esm/ix-helper-text.entry.js +1 -1
  88. package/dist/esm/ix-input.entry.js +2 -2
  89. package/dist/esm/ix-number-input.entry.js +2 -2
  90. package/dist/esm/ix-radio-group.entry.js +1 -1
  91. package/dist/esm/ix-radio.entry.js +1 -1
  92. package/dist/esm/ix-select.entry.js +1 -1
  93. package/dist/esm/ix-tab-item.ix-tabs.entry.js.map +1 -1
  94. package/dist/esm/ix-tab-item_2.entry.js +1 -1
  95. package/dist/esm/ix-textarea.entry.js +2 -2
  96. package/dist/esm/ix-time-input.entry.js +6 -8
  97. package/dist/esm/ix-time-input.entry.js.map +1 -1
  98. package/dist/esm/ix-time-picker.entry.js +33 -18
  99. package/dist/esm/ix-time-picker.entry.js.map +1 -1
  100. package/dist/esm/ix-toggle.entry.js +1 -1
  101. package/dist/esm/{validation-D_dk-JqT.js → validation-LJh16vt2.js} +9 -3
  102. package/dist/{cjs/validation-CfL71_0d.js.map → esm/validation-LJh16vt2.js.map} +1 -1
  103. package/dist/siemens-ix/index.esm.js.map +1 -1
  104. package/dist/siemens-ix/ix-date-input.entry.esm.js.map +1 -1
  105. package/dist/siemens-ix/ix-tab-item.ix-tabs.entry.esm.js.map +1 -1
  106. package/dist/siemens-ix/ix-time-input.entry.esm.js.map +1 -1
  107. package/dist/siemens-ix/ix-time-picker.entry.esm.js.map +1 -1
  108. package/dist/siemens-ix/p-0c325f08.entry.js +2 -0
  109. package/dist/siemens-ix/p-0c325f08.entry.js.map +1 -0
  110. package/dist/siemens-ix/p-0eca5a77.entry.js +2 -0
  111. package/dist/siemens-ix/{p-3751c675.entry.js.map → p-0eca5a77.entry.js.map} +1 -1
  112. package/dist/siemens-ix/{p-086d31e7.entry.js → p-26c629c3.entry.js} +2 -2
  113. package/dist/siemens-ix/{p-51ae739e.entry.js → p-33b3ed5b.entry.js} +2 -2
  114. package/dist/siemens-ix/{p-7f90eeef.entry.js → p-4431f891.entry.js} +2 -2
  115. package/dist/siemens-ix/{p-620158aa.entry.js → p-4e77d861.entry.js} +2 -2
  116. package/dist/siemens-ix/p-68aaf0fe.entry.js +2 -0
  117. package/dist/siemens-ix/p-68aaf0fe.entry.js.map +1 -0
  118. package/dist/siemens-ix/{p-ebef3d52.entry.js → p-79537728.entry.js} +2 -2
  119. package/dist/siemens-ix/{p-CAj3Tlcn.js → p-C7nQNUsO.js} +2 -2
  120. package/dist/siemens-ix/{p-CAj3Tlcn.js.map → p-C7nQNUsO.js.map} +1 -1
  121. package/dist/siemens-ix/{p-5iwF1M9X.js → p-DaswuiGO.js} +2 -2
  122. package/dist/siemens-ix/{p-5iwF1M9X.js.map → p-DaswuiGO.js.map} +1 -1
  123. package/dist/siemens-ix/{p-3b7573d6.entry.js → p-a4225101.entry.js} +2 -2
  124. package/dist/siemens-ix/{p-1c83cb5f.entry.js → p-b27a9744.entry.js} +2 -2
  125. package/dist/siemens-ix/{p-3f13b14e.entry.js → p-ba9ed3d1.entry.js} +2 -2
  126. package/dist/siemens-ix/{p-10f2a239.entry.js → p-c15e64a8.entry.js} +2 -2
  127. package/dist/siemens-ix/{p-7364534a.entry.js → p-c43b201b.entry.js} +2 -2
  128. package/dist/siemens-ix/{p-84df2a86.entry.js → p-d2c18c15.entry.js} +2 -2
  129. package/dist/siemens-ix/p-d2c18c15.entry.js.map +1 -0
  130. package/dist/siemens-ix/{p-5d6f43fd.entry.js → p-f119c105.entry.js} +2 -2
  131. package/dist/siemens-ix/{p-6445a54f.entry.js → p-fc73c8cc.entry.js} +2 -2
  132. package/dist/siemens-ix/siemens-ix.esm.js +1 -1
  133. package/dist/types/components/time-picker/time-picker.d.ts +2 -1
  134. package/dist/types/components/utils/input/validation.d.ts +1 -0
  135. package/dist/types/components/utils/modal/index.d.ts +1 -1
  136. package/dist/types/components/utils/modal/loading.d.ts +4 -0
  137. package/hydrate/index.js +48 -31
  138. package/hydrate/index.mjs +48 -31
  139. package/package.json +1 -1
  140. package/components/p-DyGPjxFm.js.map +0 -1
  141. package/components/p-kJlC6ZD0.js.map +0 -1
  142. package/components/p-xHo-3QVy.js.map +0 -1
  143. package/dist/siemens-ix/p-3751c675.entry.js +0 -2
  144. package/dist/siemens-ix/p-84df2a86.entry.js.map +0 -1
  145. package/dist/siemens-ix/p-dd16efd4.entry.js +0 -2
  146. package/dist/siemens-ix/p-dd16efd4.entry.js.map +0 -1
  147. package/dist/siemens-ix/p-f05aa76f.entry.js +0 -2
  148. package/dist/siemens-ix/p-f05aa76f.entry.js.map +0 -1
  149. /package/dist/siemens-ix/{p-086d31e7.entry.js.map → p-26c629c3.entry.js.map} +0 -0
  150. /package/dist/siemens-ix/{p-51ae739e.entry.js.map → p-33b3ed5b.entry.js.map} +0 -0
  151. /package/dist/siemens-ix/{p-7f90eeef.entry.js.map → p-4431f891.entry.js.map} +0 -0
  152. /package/dist/siemens-ix/{p-620158aa.entry.js.map → p-4e77d861.entry.js.map} +0 -0
  153. /package/dist/siemens-ix/{p-ebef3d52.entry.js.map → p-79537728.entry.js.map} +0 -0
  154. /package/dist/siemens-ix/{p-3b7573d6.entry.js.map → p-a4225101.entry.js.map} +0 -0
  155. /package/dist/siemens-ix/{p-1c83cb5f.entry.js.map → p-b27a9744.entry.js.map} +0 -0
  156. /package/dist/siemens-ix/{p-3f13b14e.entry.js.map → p-ba9ed3d1.entry.js.map} +0 -0
  157. /package/dist/siemens-ix/{p-10f2a239.entry.js.map → p-c15e64a8.entry.js.map} +0 -0
  158. /package/dist/siemens-ix/{p-7364534a.entry.js.map → p-c43b201b.entry.js.map} +0 -0
  159. /package/dist/siemens-ix/{p-5d6f43fd.entry.js.map → p-f119c105.entry.js.map} +0 -0
  160. /package/dist/siemens-ix/{p-6445a54f.entry.js.map → p-fc73c8cc.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.js","sourceRoot":"","sources":["../../../src/components/time-picker/time-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { DateTime } from 'luxon';\nimport { OnListener } from '../utils/listener';\nimport type { TimePickerCorners } from './time-picker.types';\n\ntype TimePickerDescriptorUnit = 'hour' | 'minute' | 'second' | 'millisecond';\n\ninterface TimePickerDescriptor {\n unit: TimePickerDescriptorUnit;\n header: string;\n hidden: boolean;\n numberArray: number[];\n focusedValue: number;\n}\n\ninterface TimeOutputFormat {\n hour: string;\n minute: string;\n second: string;\n millisecond: string;\n}\n\nconst LUXON_FORMAT_PATTERNS = {\n // h, hh, H, HH and various time formats that include hours\n hours: /\\b[Hh]\\b|HH|hh|H{3,4}|h{3,4}|t|tt|ttt|tttt|T|TT|TTT|TTTT/,\n // m, mm and time formats that include minutes\n minutes: /\\bm\\b|mm|t|tt|ttt|tttt|T|TT|TTT|TTTT/,\n // s, ss and time formats that include seconds\n seconds: /\\bs\\b|ss|tt|ttt|tttt|TT|TTT|TTTT/,\n // S, SSS (milliseconds), u/uu/uuu (fractional seconds), x/X (timestamps)\n milliseconds: /\\bS\\b|SSS|u|uu|uuu/,\n};\n\nconst HOUR_INTERVAL_DEFAULT = 1;\nconst MINUTE_INTERVAL_DEFAULT = 1;\nconst SECOND_INTERVAL_DEFAULT = 1;\nconst MILLISECOND_INTERVAL_DEFAULT = 100;\n\nconst CONFIRM_BUTTON_DEFAULT = 'Confirm';\nconst HEADER_DEFAULT = 'Time';\n\nconst FORMATTED_TIME_EMPTY: TimeOutputFormat = {\n hour: '',\n minute: '',\n second: '',\n millisecond: '',\n};\n\n@Component({\n tag: 'ix-time-picker',\n styleUrl: 'time-picker.scss',\n shadow: true,\n})\nexport class TimePicker {\n @Element() hostElement!: HTMLIxTimePickerElement;\n\n /**\n * Format of time string\n * See {@link https://moment.github.io/luxon/#/formatting?id=table-of-tokens} for all available tokens.\n * Note: Formats that combine date and time (like f or F) are not supported. Timestamp tokens x and X are not supported either.\n */\n @Prop() format: string = 'TT';\n @Watch('format')\n watchFormatIntervalPropHandler(newValue: string) {\n if (!newValue) {\n return;\n }\n\n this.initPicker();\n this.updateScrollPositions();\n }\n\n /**\n * Corner style\n */\n @Prop() corners: TimePickerCorners = 'rounded';\n\n /**\n * Embedded style (for use in other components)\n */\n @Prop() embedded = false;\n\n /**\n * @internal Temporary prop needed until datetime-picker is reworked for new design\n */\n @Prop() dateTimePickerAppearance: boolean = false;\n\n /**\n * Hides the header of the picker.\n *\n * @since 3.2.0\n */\n @Prop() hideHeader: boolean = false;\n\n /**\n * Interval for hour selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) hourInterval: number = HOUR_INTERVAL_DEFAULT;\n @Watch('hourInterval')\n watchHourIntervalPropHandler(newValue: number) {\n if (\n Number.isInteger(newValue) &&\n newValue >= 0 &&\n newValue <= (this.timeRef ? 12 : 23)\n ) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('hour', newValue);\n this.hourInterval = HOUR_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for minute selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) minuteInterval: number = MINUTE_INTERVAL_DEFAULT;\n @Watch('minuteInterval')\n watchMinuteIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 59) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('minute', newValue);\n this.minuteInterval = MINUTE_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for second selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) secondInterval: number = SECOND_INTERVAL_DEFAULT;\n @Watch('secondInterval')\n watchSecondIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 59) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('second', newValue);\n this.secondInterval = SECOND_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for millisecond selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) millisecondInterval: number =\n MILLISECOND_INTERVAL_DEFAULT;\n @Watch('millisecondInterval')\n watchMillisecondIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 999) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('millisecond', newValue);\n this.millisecondInterval = MILLISECOND_INTERVAL_DEFAULT;\n }\n\n private printIntervalError(intervalName: string, value: number) {\n console.error(\n `Value ${value} is not valid for ${intervalName}-interval. Falling back to default.`\n );\n }\n\n /**\n * Select time with format string\n * Format has to match the `format` property.\n */\n @Prop() time?: string;\n\n @Watch('time')\n watchTimePropHandler(newValue: string) {\n const timeFormat = DateTime.fromFormat(newValue, this.format);\n if (!timeFormat.isValid) {\n throw new Error('Format is not supported or not correct');\n }\n\n this._time = timeFormat;\n }\n\n /**\n * Get default time value\n * @returns DateTime.now() for empty state (no selection)\n */\n private getDefaultTime(): DateTime | undefined {\n return DateTime.now();\n }\n\n /**\n * Text of the time confirm button\n */\n @Prop({ attribute: 'i18n-confirm-time' }) i18nConfirmTime =\n CONFIRM_BUTTON_DEFAULT;\n\n /**\n * Text for top header\n */\n @Prop({ attribute: 'i18n-header' }) i18nHeader: string = HEADER_DEFAULT;\n\n /**\n * Text for hour column header\n */\n @Prop({ attribute: 'i18n-column-header' }) i18nHourColumnHeader: string =\n 'hr';\n\n /**\n * Text for minute column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-minute-column-header' })\n i18nMinuteColumnHeader: string = 'min';\n\n /**\n * Text for second column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-second-column-header' })\n i18nSecondColumnHeader: string = 'sec';\n\n /**\n * Text for millisecond column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-millisecond-column-header' })\n i18nMillisecondColumnHeader: string = 'ms';\n\n /**\n * Time event\n */\n @Event() timeSelect!: EventEmitter<string>;\n\n /**\n * Time change event\n */\n @Event() timeChange!: EventEmitter<string>;\n\n /**\n * Get the current time based on the wanted format\n */\n @Method()\n async getCurrentTime(): Promise<string | undefined> {\n return this._time?.toFormat(this.format);\n }\n\n @State() private _time?: DateTime;\n @Watch('_time')\n onTimeChange() {\n const formattedTimeOld = this.formattedTime;\n this.setTimeRef();\n this.formattedTime = this.getFormattedTime();\n\n this.updateScrollPositions(formattedTimeOld);\n }\n\n @State() private timeRef?: 'AM' | 'PM' | undefined;\n @State() private formattedTime: TimeOutputFormat = FORMATTED_TIME_EMPTY;\n @State() private timePickerDescriptors: TimePickerDescriptor[] = [];\n @State() private isUnitFocused: boolean = false;\n @State() private focusedUnit: TimePickerDescriptorUnit = 'hour';\n @State() private focusedValue: number = 0;\n\n private visibilityObserver?: MutationObserver;\n private focusScrollAlignment: 'start' | 'end' = 'start';\n\n componentWillLoad() {\n this.initPicker();\n }\n\n private initPicker() {\n let parsedTime: DateTime | undefined;\n\n if (this.time) {\n parsedTime = DateTime.fromFormat(this.time, this.format);\n\n if (!parsedTime.isValid) {\n console.error(\n `Invalid time format. The configured format does not match the format of the passed time. ${parsedTime.invalidReason}: ${parsedTime.invalidExplanation}`\n );\n parsedTime = this.getDefaultTime();\n }\n } else {\n parsedTime = this.getDefaultTime();\n }\n\n this._time = parsedTime;\n\n this.setTimeRef();\n this.setTimePickerDescriptors();\n this.setInitialFocusedValueAndUnit();\n\n this.watchHourIntervalPropHandler(this.hourInterval);\n this.watchMinuteIntervalPropHandler(this.minuteInterval);\n this.watchSecondIntervalPropHandler(this.secondInterval);\n this.watchMillisecondIntervalPropHandler(this.millisecondInterval);\n }\n\n componentDidLoad() {\n this.updateScrollPositions();\n this.setupVisibilityObserver();\n }\n\n componentDidRender() {\n if (this.isUnitFocused) {\n const elementContainer = this.getElementContainer(\n this.focusedUnit,\n this.focusedValue\n );\n const elementList = this.getElementList(this.focusedUnit);\n\n if (elementContainer) {\n elementContainer.focus({ preventScroll: true });\n\n if (!this.isElementVisible(elementContainer, elementList)) {\n elementContainer.scrollIntoView({\n block: this.focusScrollAlignment,\n });\n\n if (this.focusScrollAlignment === 'end') {\n elementList.scrollTop += 4;\n } else {\n elementList.scrollTop -= 4;\n }\n }\n }\n }\n }\n\n disconnectedCallback() {\n if (this.visibilityObserver) {\n this.visibilityObserver.disconnect();\n }\n }\n\n @OnListener<TimePicker>('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (!this.isUnitFocused) {\n return;\n }\n\n let newValue = this.focusedValue;\n let shouldPreventDefault = true;\n let newValueInterval;\n\n switch (this.focusedUnit) {\n case 'hour':\n newValueInterval = this.hourInterval;\n break;\n case 'minute':\n newValueInterval = this.minuteInterval;\n break;\n case 'second':\n newValueInterval = this.secondInterval;\n break;\n case 'millisecond':\n newValueInterval = this.millisecondInterval;\n break;\n }\n\n switch (event.key) {\n case 'Tab':\n shouldPreventDefault = false;\n this.isUnitFocused = false;\n break;\n\n case 'ArrowUp':\n newValue -= newValueInterval;\n this.focusScrollAlignment = 'start';\n this.updateFocusedValue(newValue);\n this.updateDescriptorFocusedValue(this.focusedUnit, this.focusedValue);\n break;\n\n case 'ArrowDown':\n newValue += newValueInterval;\n this.focusScrollAlignment = 'end';\n this.updateFocusedValue(newValue);\n this.updateDescriptorFocusedValue(this.focusedUnit, this.focusedValue);\n break;\n\n case 'Enter':\n case ' ':\n this.select(this.focusedUnit, this.focusedValue);\n break;\n\n default:\n return;\n }\n\n if (shouldPreventDefault) {\n event.preventDefault();\n }\n }\n\n onUnitCellBlur(unit: TimePickerDescriptorUnit) {\n this.isUnitFocused = false;\n const focusedValue = Number(this.formattedTime[unit]);\n\n this.updateDescriptorFocusedValue(unit, focusedValue);\n }\n\n onUnitCellFocus(unit: TimePickerDescriptorUnit, value: number) {\n this.isUnitFocused = true;\n this.focusedUnit = unit;\n this.focusedValue = value;\n\n this.updateDescriptorFocusedValue(unit, value);\n }\n\n private getElementList(unit: TimePickerDescriptorUnit): HTMLDivElement {\n return this.hostElement.shadowRoot?.querySelector(\n `[data-element-list-id=\"${unit}\"]`\n ) as HTMLDivElement;\n }\n\n private getElementContainer(\n unit: TimePickerDescriptorUnit,\n number: number\n ): HTMLDivElement {\n return this.hostElement.shadowRoot?.querySelector(\n `[data-element-container-id=\"${unit}-${number}\"]`\n ) as HTMLDivElement;\n }\n\n private isElementVisible(\n element: HTMLElement,\n container: HTMLElement\n ): boolean {\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n return (\n elementRect.top >= containerRect.top &&\n elementRect.bottom <= containerRect.bottom\n );\n }\n\n private updateFocusedValue(value: number) {\n const numberArray = this.getNumberArrayForUnit(this.focusedUnit);\n const maxValue = numberArray[numberArray.length - 1];\n const minValue = numberArray[0];\n\n if (value > maxValue) {\n value = minValue;\n this.focusScrollAlignment = 'start';\n } else if (value < minValue) {\n value = maxValue;\n this.focusScrollAlignment = 'end';\n }\n\n this.focusedValue = value;\n }\n\n private setInitialFocusedValueAndUnit() {\n const firstVisibleDescriptor = this.timePickerDescriptors.find(\n (descriptor) => !descriptor.hidden\n );\n if (!firstVisibleDescriptor) {\n return;\n }\n\n const selectedValue = Number(\n this.formattedTime[firstVisibleDescriptor.unit]\n );\n const isValidSelection =\n firstVisibleDescriptor.numberArray.includes(selectedValue);\n\n this.focusedValue = isValidSelection\n ? selectedValue\n : firstVisibleDescriptor.numberArray[0];\n\n this.focusedUnit = firstVisibleDescriptor.unit;\n }\n\n private setupVisibilityObserver() {\n let dropdownElement: Element | null = this.hostElement;\n while (dropdownElement && dropdownElement.tagName !== 'IX-DROPDOWN') {\n dropdownElement = dropdownElement.parentElement;\n }\n\n if (!dropdownElement) {\n return;\n }\n\n this.visibilityObserver = new MutationObserver((mutations) =>\n this.mutationObserverCallback(mutations)\n );\n\n this.visibilityObserver.observe(dropdownElement, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n });\n }\n\n private mutationObserverCallback(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n if (mutation.type !== 'attributes') {\n continue;\n }\n\n const dropdown = mutation.target as HTMLElement;\n\n if (!dropdown.classList.contains('show')) {\n // keep picker in sync with input\n if (this.time) {\n const timeFormat = DateTime.fromFormat(this.time, this.format);\n if (timeFormat.isValid) {\n this._time = DateTime.fromFormat(this.time, this.format);\n this.setInitialFocusedValueAndUnit();\n }\n }\n\n continue;\n }\n\n const elementsReady = this.areElementsRendered();\n if (!elementsReady) {\n continue;\n }\n\n this.updateScrollPositions();\n }\n }\n\n private areElementsRendered(): boolean {\n const elementLists =\n this.hostElement.shadowRoot?.querySelectorAll('.element-list');\n\n if (!elementLists || elementLists.length === 0) {\n return false;\n }\n\n return Array.from(elementLists).some(\n (list) => (list as HTMLElement).offsetHeight > 0\n );\n }\n\n private getFormattedTime(): TimeOutputFormat {\n if (!this._time) {\n return FORMATTED_TIME_EMPTY;\n }\n\n return {\n hour:\n this.timeRef !== undefined\n ? this._time.toFormat('h')\n : this._time.toFormat('H'),\n minute: this._time.toFormat('m'),\n second: this._time.toFormat('s'),\n millisecond: this._time.toFormat('S'),\n };\n }\n\n private timeUpdate(unit: TimePickerDescriptorUnit, value: number): number {\n let maxValue = DateTime.now().endOf('day').get(unit);\n\n if (unit === 'hour') {\n if (this.timeRef === 'PM') {\n // 12 PM should remain 12, other PM hours add 12\n value = value === 12 ? 12 : value + 12;\n } else if (this.timeRef === 'AM') {\n // 12 AM should be 0, other AM hours remain as is\n value = value === 12 ? 0 : value;\n maxValue = 12;\n }\n }\n\n if (value > maxValue) {\n value = maxValue;\n } else if (value < 0) {\n value = 0;\n }\n\n if (!this._time) {\n this._time = DateTime.now().startOf('day');\n }\n\n this._time = this._time.set({\n [unit]: value,\n });\n\n return value;\n }\n\n private changeTimeReference(newTimeRef: 'AM' | 'PM') {\n if (this.timeRef === newTimeRef) {\n return;\n }\n\n if (!this._time) {\n this._time = DateTime.now().startOf('day');\n }\n\n this.timeRef = newTimeRef;\n const currentHour = this._time.hour;\n\n if (newTimeRef === 'PM' && currentHour < 12) {\n this._time = this._time.plus({ hours: 12 });\n } else if (newTimeRef === 'AM' && currentHour >= 12) {\n this._time = this._time.minus({ hours: 12 });\n }\n\n this.timeChange.emit(this._time.toFormat(this.format));\n }\n\n private isFormat12Hour(format: string): boolean {\n // Remove any text that's inside quotes (literal text in Luxon format strings)\n let cleanFormat = '';\n let inQuote = false;\n\n for (let i = 0; i < format.length; i++) {\n const char = format[i];\n if (char === \"'\") {\n inQuote = !inQuote;\n } else if (!inQuote) {\n cleanFormat += char;\n }\n }\n\n // Check for specific 12-hour format tokens\n // Case-sensitive matching to distinguish between 'h' and 'H'\n return /h|a|t/.test(cleanFormat);\n }\n\n private setTimeRef() {\n const uses12HourFormat = this.isFormat12Hour(this.format);\n\n if (uses12HourFormat && this._time) {\n this.timeRef = this._time!.hour >= 12 ? 'PM' : 'AM';\n } else {\n this.timeRef = undefined;\n }\n }\n\n private getInitialFocusedValueForUnit(\n unit: TimePickerDescriptorUnit,\n numberArray: number[]\n ): number {\n const selectedValue = Number(this.formattedTime[unit]);\n return numberArray.includes(selectedValue) ? selectedValue : numberArray[0];\n }\n\n private setTimePickerDescriptors() {\n let hourNumbers = [];\n let minuteNumbers = [];\n let secondNumbers = [];\n let millisecondsNumbers = [];\n\n if (this.timeRef !== undefined) {\n hourNumbers = Array.from(\n { length: Math.ceil(12 / this.hourInterval) },\n (_, i) => i * this.hourInterval + 1\n ).filter((hour) => hour <= 12);\n } else {\n hourNumbers = Array.from(\n { length: Math.ceil(24 / this.hourInterval) },\n (_, i) => i * this.hourInterval\n );\n }\n\n minuteNumbers = Array.from(\n { length: Math.ceil(60 / this.minuteInterval) },\n (_, i) => i * this.minuteInterval\n );\n secondNumbers = Array.from(\n { length: Math.ceil(60 / this.secondInterval) },\n (_, i) => i * this.secondInterval\n );\n millisecondsNumbers = Array.from(\n { length: Math.ceil(1000 / this.millisecondInterval) },\n (_, i) => i * this.millisecondInterval\n );\n\n this.timePickerDescriptors = [\n {\n unit: 'hour',\n header: this.i18nHourColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.hours.test(this.format),\n numberArray: hourNumbers,\n focusedValue: this.getInitialFocusedValueForUnit('hour', hourNumbers),\n },\n {\n unit: 'minute',\n header: this.i18nMinuteColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.minutes.test(this.format),\n numberArray: minuteNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'minute',\n minuteNumbers\n ),\n },\n {\n unit: 'second',\n header: this.i18nSecondColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.seconds.test(this.format),\n numberArray: secondNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'second',\n secondNumbers\n ),\n },\n {\n unit: 'millisecond',\n header: this.i18nMillisecondColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.milliseconds.test(this.format),\n numberArray: millisecondsNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'millisecond',\n millisecondsNumbers\n ),\n },\n ];\n\n this.timePickerDescriptors = this.timePickerDescriptors.filter(\n (item) => !item.hidden\n );\n }\n\n private getNumberArrayForUnit(unit: TimePickerDescriptorUnit): number[] {\n const descriptor = this.timePickerDescriptors.find(\n (descriptor) => descriptor.unit === unit\n );\n return descriptor ? descriptor.numberArray : [];\n }\n\n private isSelected(unit: TimePickerDescriptorUnit, number: number): boolean {\n return this.formattedTime![unit] === String(number);\n }\n\n private select(unit: TimePickerDescriptorUnit, number: number) {\n this.formattedTime = {\n ...this.formattedTime!,\n [unit]: String(number),\n };\n\n this.timeUpdate(unit, number);\n this.elementListScrollToTop(unit, number, 'smooth');\n this.timeChange.emit(this._time!.toFormat(this.format));\n }\n\n private updateDescriptorFocusedValue(\n unit: TimePickerDescriptorUnit,\n value: number\n ) {\n const descriptorIndex = this.timePickerDescriptors.findIndex(\n (d) => d.unit === unit\n );\n if (descriptorIndex !== -1) {\n this.timePickerDescriptors = [\n ...this.timePickerDescriptors.slice(0, descriptorIndex),\n {\n ...this.timePickerDescriptors[descriptorIndex],\n focusedValue: value,\n },\n ...this.timePickerDescriptors.slice(descriptorIndex + 1),\n ];\n }\n }\n\n private elementListScrollToTop(\n unit: TimePickerDescriptorUnit,\n number: number,\n scrollBehaviour: 'smooth' | 'instant'\n ) {\n const elementList = this.getElementList(unit);\n const elementContainer = this.getElementContainer(unit, number);\n\n if (elementList && elementContainer) {\n const elementListHeight = elementList.clientHeight;\n const elementContainerHeight = elementContainer.clientHeight;\n\n // Offset which is used to adjust the scroll position to account for margins, elements being hidden, etc.\n let scrollPositionOffset = 11;\n if (this.hideHeader) {\n // 56 + 1 --> height of the header container and separator\n scrollPositionOffset -= 57;\n }\n\n const scrollPosition =\n elementContainer.offsetTop -\n elementListHeight / 2 +\n elementContainerHeight -\n scrollPositionOffset;\n\n elementList.scrollTo({\n top: scrollPosition,\n behavior: scrollBehaviour,\n });\n }\n }\n\n /**\n * Updates all scroll positions of the time picker elements\n * Updates only the elements that have changed if `formattedTimeOld` is provided\n */\n private updateScrollPositions(\n formattedTimeOld: TimeOutputFormat | undefined = undefined\n ) {\n for (const key in this.formattedTime) {\n const unitKey = key as keyof TimeOutputFormat;\n\n if (\n !formattedTimeOld ||\n this.formattedTime[unitKey] !== formattedTimeOld[unitKey]\n ) {\n this.elementListScrollToTop(\n unitKey as TimePickerDescriptorUnit,\n Number(this.formattedTime[unitKey]),\n 'instant'\n );\n }\n }\n }\n\n private formatUnitValue(\n unit: TimePickerDescriptorUnit,\n value: number\n ): string {\n if (unit === 'millisecond') {\n return value.toString().padStart(3, '0');\n }\n\n return value < 10 ? `0${value}` : value.toString();\n }\n\n private getColumnSeparator(currentIndex: number): string {\n if (currentIndex + 1 < this.timePickerDescriptors.length) {\n const nextUnit = this.timePickerDescriptors[currentIndex + 1].unit;\n return nextUnit === 'millisecond' ? '.' : ':';\n }\n\n return ':';\n }\n\n private getElementContainerTabIndex(\n number: number,\n descriptorUnit: TimePickerDescriptorUnit\n ): string {\n const descriptor = this.timePickerDescriptors.find(\n (d) => d.unit === descriptorUnit\n );\n\n if (number === descriptor?.focusedValue) {\n return '0';\n }\n\n return '-1';\n }\n\n render() {\n return (\n <Host>\n <ix-date-time-card\n embedded={this.embedded}\n timePickerAppearance={true}\n corners={this.corners}\n hasFooter={!this.dateTimePickerAppearance}\n hideHeader={this.hideHeader}\n >\n <div class=\"header\" slot=\"header\">\n <ix-typography format=\"body\">{this.i18nHeader}</ix-typography>\n </div>\n <div class=\"clock\">\n {this.timePickerDescriptors.map((descriptor, index: number) => (\n <div class=\"flex\">\n <div class={{ columns: true, hidden: descriptor.hidden }}>\n <div class=\"column-header\" title={descriptor.header}>\n {descriptor.header}\n </div>\n <div\n data-element-list-id={descriptor.unit}\n class=\"element-list\"\n tabIndex={-1}\n >\n {descriptor.numberArray.map((number) => {\n return (\n <button\n data-element-container-id={`${descriptor.unit}-${number}`}\n class={{\n selected: this.isSelected(descriptor.unit, number),\n 'element-container': true,\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n onClick={() => {\n this.select(descriptor.unit, number);\n }}\n onFocus={() =>\n this.onUnitCellFocus(descriptor.unit, number)\n }\n onBlur={() => this.onUnitCellBlur(descriptor.unit)}\n tabindex={this.getElementContainerTabIndex(\n number,\n descriptor.unit\n )}\n aria-label={`${descriptor.header}: ${number}`}\n >\n {this.formatUnitValue(descriptor.unit, number)}\n </button>\n );\n })}\n <div class=\"element-list-padding\"></div>\n </div>\n </div>\n\n {index !== this.timePickerDescriptors.length - 1 && (\n <div\n class={{\n 'column-separator': true,\n hidden: descriptor.hidden,\n }}\n >\n {this.getColumnSeparator(index)}\n </div>\n )}\n </div>\n ))}\n\n {this.timeRef && (\n <div class=\"flex\">\n <div class=\"column-separator\"></div>\n <div class=\"columns\">\n <div class=\"column-header\" title=\"AM/PM\" />\n <div class=\"element-list\" tabIndex={-1}>\n <button\n data-am-pm-id=\"AM\"\n class={{\n selected: this.timeRef === 'AM',\n 'element-container': true,\n }}\n onClick={() => this.changeTimeReference('AM')}\n tabindex=\"0\"\n aria-label=\"AM\"\n >\n AM\n </button>\n <button\n data-am-pm-id=\"PM\"\n class={{\n selected: this.timeRef === 'PM',\n 'element-container': true,\n }}\n onClick={() => this.changeTimeReference('PM')}\n tabindex=\"0\"\n aria-label=\"PM\"\n >\n PM\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div\n class={{\n footer: true,\n 'footer--compact': this.timePickerDescriptors.length <= 2,\n }}\n slot=\"footer\"\n >\n <ix-button\n class=\"confirm-button\"\n onClick={() => {\n this.timeSelect.emit(this._time?.toFormat(this.format));\n }}\n >\n {this.i18nConfirmTime}\n </ix-button>\n </div>\n </ix-date-time-card>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"time-picker.js","sourceRoot":"","sources":["../../../src/components/time-picker/time-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { DateTime } from 'luxon';\nimport { OnListener } from '../utils/listener';\nimport type { TimePickerCorners } from './time-picker.types';\n\ntype TimePickerDescriptorUnit = 'hour' | 'minute' | 'second' | 'millisecond';\n\ninterface TimePickerDescriptor {\n unit: TimePickerDescriptorUnit;\n header: string;\n hidden: boolean;\n numberArray: number[];\n focusedValue: number;\n}\n\ninterface TimeOutputFormat {\n hour: string;\n minute: string;\n second: string;\n millisecond: string;\n}\n\nconst LUXON_FORMAT_PATTERNS = {\n // h, hh, H, HH and various time formats that include hours\n hours: /\\b[Hh]\\b|HH|hh|H{3,4}|h{3,4}|t|tt|ttt|tttt|T|TT|TTT|TTTT/,\n // m, mm and time formats that include minutes\n minutes: /\\bm\\b|mm|t|tt|ttt|tttt|T|TT|TTT|TTTT/,\n // s, ss and time formats that include seconds\n seconds: /\\bs\\b|ss|tt|ttt|tttt|TT|TTT|TTTT/,\n // S, SSS (milliseconds), u/uu/uuu (fractional seconds), x/X (timestamps)\n milliseconds: /\\bS\\b|SSS|u|uu|uuu/,\n};\n\nconst HOUR_INTERVAL_DEFAULT = 1;\nconst MINUTE_INTERVAL_DEFAULT = 1;\nconst SECOND_INTERVAL_DEFAULT = 1;\nconst MILLISECOND_INTERVAL_DEFAULT = 100;\n\nconst CONFIRM_BUTTON_DEFAULT = 'Confirm';\nconst HEADER_DEFAULT = 'Time';\n\nconst FORMATTED_TIME_EMPTY: TimeOutputFormat = {\n hour: '',\n minute: '',\n second: '',\n millisecond: '',\n};\n\n@Component({\n tag: 'ix-time-picker',\n styleUrl: 'time-picker.scss',\n shadow: true,\n})\nexport class TimePicker {\n @Element() hostElement!: HTMLIxTimePickerElement;\n\n /**\n * Format of time string\n * See {@link https://moment.github.io/luxon/#/formatting?id=table-of-tokens} for all available tokens.\n * Note: Formats that combine date and time (like f or F) are not supported. Timestamp tokens x and X are not supported either.\n */\n @Prop() format: string = 'TT';\n @Watch('format')\n watchFormatIntervalPropHandler(newValue: string) {\n if (!newValue) {\n return;\n }\n\n this.initPicker();\n this.updateScrollPositions();\n }\n\n /**\n * Corner style\n */\n @Prop() corners: TimePickerCorners = 'rounded';\n\n /**\n * Embedded style (for use in other components)\n */\n @Prop() embedded = false;\n\n /**\n * @internal Temporary prop needed until datetime-picker is reworked for new design\n */\n @Prop() dateTimePickerAppearance: boolean = false;\n\n /**\n * Hides the header of the picker.\n *\n * @since 3.2.0\n */\n @Prop() hideHeader: boolean = false;\n\n /**\n * Interval for hour selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) hourInterval: number = HOUR_INTERVAL_DEFAULT;\n @Watch('hourInterval')\n watchHourIntervalPropHandler(newValue: number) {\n if (\n Number.isInteger(newValue) &&\n newValue >= 0 &&\n newValue <= (this.timeRef ? 12 : 23)\n ) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('hour', newValue);\n this.hourInterval = HOUR_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for minute selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) minuteInterval: number = MINUTE_INTERVAL_DEFAULT;\n @Watch('minuteInterval')\n watchMinuteIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 59) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('minute', newValue);\n this.minuteInterval = MINUTE_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for second selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) secondInterval: number = SECOND_INTERVAL_DEFAULT;\n @Watch('secondInterval')\n watchSecondIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 59) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('second', newValue);\n this.secondInterval = SECOND_INTERVAL_DEFAULT;\n }\n\n /**\n * Interval for millisecond selection\n *\n * @since 3.2.0\n */\n @Prop({ mutable: true }) millisecondInterval: number =\n MILLISECOND_INTERVAL_DEFAULT;\n @Watch('millisecondInterval')\n watchMillisecondIntervalPropHandler(newValue: number) {\n if (newValue >= 0 && newValue <= 999) {\n this.setTimePickerDescriptors();\n return;\n }\n\n this.printIntervalError('millisecond', newValue);\n this.millisecondInterval = MILLISECOND_INTERVAL_DEFAULT;\n }\n\n private printIntervalError(intervalName: string, value: number) {\n console.error(\n `Value ${value} is not valid for ${intervalName}-interval. Falling back to default.`\n );\n }\n\n /**\n * Select time with format string\n * Format has to match the `format` property.\n */\n @Prop() time?: string;\n\n @Watch('time')\n watchTimePropHandler(newValue: string) {\n const timeFormat = DateTime.fromFormat(newValue, this.format);\n if (!timeFormat.isValid) {\n throw new Error('Format is not supported or not correct');\n }\n\n this._time = timeFormat;\n }\n\n /**\n * Get default time value\n * @returns DateTime.now() for empty state (no selection)\n */\n private getDefaultTime(): DateTime | undefined {\n return DateTime.now();\n }\n\n /**\n * Text of the time confirm button\n */\n @Prop({ attribute: 'i18n-confirm-time' }) i18nConfirmTime =\n CONFIRM_BUTTON_DEFAULT;\n\n /**\n * Text for top header\n */\n @Prop({ attribute: 'i18n-header' }) i18nHeader: string = HEADER_DEFAULT;\n\n /**\n * Text for hour column header\n */\n @Prop({ attribute: 'i18n-column-header' }) i18nHourColumnHeader: string =\n 'hr';\n\n /**\n * Text for minute column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-minute-column-header' })\n i18nMinuteColumnHeader: string = 'min';\n\n /**\n * Text for second column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-second-column-header' })\n i18nSecondColumnHeader: string = 'sec';\n\n /**\n * Text for millisecond column header\n */\n // eslint-disable-next-line @stencil-community/decorators-style\n @Prop({ attribute: 'i18n-millisecond-column-header' })\n i18nMillisecondColumnHeader: string = 'ms';\n\n /**\n * Time event\n */\n @Event() timeSelect!: EventEmitter<string>;\n\n /**\n * Time change event\n */\n @Event() timeChange!: EventEmitter<string>;\n\n /**\n * Get the current time based on the wanted format\n */\n @Method()\n async getCurrentTime(): Promise<string | undefined> {\n return this._time?.toFormat(this.format);\n }\n\n @State() private _time?: DateTime;\n @Watch('_time')\n onTimeChange() {\n const formattedTimeOld = this.formattedTime;\n this.setTimeRef();\n this.formattedTime = this.getFormattedTime();\n\n this.updateScrollPositions(formattedTimeOld);\n }\n\n @State() private timeRef?: 'AM' | 'PM' | undefined;\n @State() private formattedTime: TimeOutputFormat = FORMATTED_TIME_EMPTY;\n @State() private timePickerDescriptors: TimePickerDescriptor[] = [];\n @State() private isUnitFocused: boolean = false;\n @State() private focusedUnit: TimePickerDescriptorUnit = 'hour';\n @State() private focusedValue: number = 0;\n\n private visibilityObserver?: MutationObserver;\n private focusScrollAlignment: 'start' | 'end' = 'start';\n\n componentWillLoad() {\n this.initPicker();\n }\n\n private initPicker() {\n let parsedTime: DateTime | undefined;\n\n if (this.time) {\n parsedTime = DateTime.fromFormat(this.time, this.format);\n\n if (!parsedTime.isValid) {\n console.error(\n `Invalid time format. The configured format does not match the format of the passed time. ${parsedTime.invalidReason}: ${parsedTime.invalidExplanation}`\n );\n parsedTime = this.getDefaultTime();\n }\n } else {\n parsedTime = this.getDefaultTime();\n }\n\n this._time = parsedTime;\n\n this.setTimeRef();\n this.setTimePickerDescriptors();\n this.setInitialFocusedValueAndUnit();\n\n this.watchHourIntervalPropHandler(this.hourInterval);\n this.watchMinuteIntervalPropHandler(this.minuteInterval);\n this.watchSecondIntervalPropHandler(this.secondInterval);\n this.watchMillisecondIntervalPropHandler(this.millisecondInterval);\n }\n\n componentDidLoad() {\n this.updateScrollPositions();\n this.setupVisibilityObserver();\n }\n\n componentDidRender() {\n if (this.isUnitFocused) {\n const elementContainer = this.getElementContainer(\n this.focusedUnit,\n this.focusedValue\n );\n const elementList = this.getElementList(this.focusedUnit);\n\n if (elementContainer) {\n elementContainer.focus({ preventScroll: true });\n\n if (!this.isElementVisible(elementContainer, elementList)) {\n this.scrollElementIntoView(\n elementContainer,\n elementList,\n this.focusScrollAlignment\n );\n }\n }\n }\n }\n\n disconnectedCallback() {\n if (this.visibilityObserver) {\n this.visibilityObserver.disconnect();\n }\n }\n\n @OnListener<TimePicker>('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (!this.isUnitFocused) {\n return;\n }\n\n let newValue = this.focusedValue;\n let shouldPreventDefault = true;\n let newValueInterval;\n\n switch (this.focusedUnit) {\n case 'hour':\n newValueInterval = this.hourInterval;\n break;\n case 'minute':\n newValueInterval = this.minuteInterval;\n break;\n case 'second':\n newValueInterval = this.secondInterval;\n break;\n case 'millisecond':\n newValueInterval = this.millisecondInterval;\n break;\n }\n\n switch (event.key) {\n case 'Tab':\n shouldPreventDefault = false;\n this.isUnitFocused = false;\n break;\n\n case 'ArrowUp':\n newValue -= newValueInterval;\n this.focusScrollAlignment = 'start';\n this.updateFocusedValue(newValue);\n this.updateDescriptorFocusedValue(this.focusedUnit, this.focusedValue);\n break;\n\n case 'ArrowDown':\n newValue += newValueInterval;\n this.focusScrollAlignment = 'end';\n this.updateFocusedValue(newValue);\n this.updateDescriptorFocusedValue(this.focusedUnit, this.focusedValue);\n break;\n\n case 'Enter':\n case ' ':\n this.select(this.focusedUnit, this.focusedValue);\n break;\n\n default:\n return;\n }\n\n if (shouldPreventDefault) {\n event.preventDefault();\n }\n }\n\n onUnitCellBlur(unit: TimePickerDescriptorUnit, event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // Check if column lost focus to scroll back to selected value\n if (relatedTarget) {\n const relatedUnit =\n relatedTarget.dataset.elementContainerId?.split('-')[0];\n\n if (relatedUnit !== unit) {\n this.elementListScrollToTop(\n unit,\n Number(this.formattedTime[unit]),\n 'smooth'\n );\n }\n }\n\n this.isUnitFocused = false;\n const focusedValue = Number(this.formattedTime[unit]);\n\n this.updateDescriptorFocusedValue(unit, focusedValue);\n }\n\n onUnitCellFocus(unit: TimePickerDescriptorUnit, value: number) {\n this.isUnitFocused = true;\n this.focusedUnit = unit;\n this.focusedValue = value;\n\n this.updateDescriptorFocusedValue(unit, value);\n }\n\n private getElementList(unit: TimePickerDescriptorUnit): HTMLDivElement {\n return this.hostElement.shadowRoot?.querySelector(\n `[data-element-list-id=\"${unit}\"]`\n ) as HTMLDivElement;\n }\n\n private getElementContainer(\n unit: TimePickerDescriptorUnit,\n number: number\n ): HTMLDivElement {\n return this.hostElement.shadowRoot?.querySelector(\n `[data-element-container-id=\"${unit}-${number}\"]`\n ) as HTMLDivElement;\n }\n\n private isElementVisible(\n element: HTMLElement,\n container: HTMLElement\n ): boolean {\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n return (\n elementRect.top >= containerRect.top &&\n elementRect.bottom <= containerRect.bottom\n );\n }\n\n private scrollElementIntoView(\n element: HTMLElement,\n container: HTMLElement,\n alignment: 'start' | 'end'\n ) {\n const SCROLL_BUFFER = 1;\n const containerRect = container.getBoundingClientRect();\n const elementRect = element.getBoundingClientRect();\n\n if (alignment === 'end') {\n container.scrollTop +=\n elementRect.bottom - containerRect.bottom + SCROLL_BUFFER;\n } else {\n container.scrollTop +=\n elementRect.top - containerRect.top - SCROLL_BUFFER;\n }\n }\n\n private updateFocusedValue(value: number) {\n const numberArray = this.getNumberArrayForUnit(this.focusedUnit);\n const maxValue = numberArray[numberArray.length - 1];\n const minValue = numberArray[0];\n\n if (value > maxValue) {\n value = minValue;\n this.focusScrollAlignment = 'start';\n } else if (value < minValue) {\n value = maxValue;\n this.focusScrollAlignment = 'end';\n }\n\n this.focusedValue = value;\n }\n\n private setInitialFocusedValueAndUnit() {\n const firstVisibleDescriptor = this.timePickerDescriptors.find(\n (descriptor) => !descriptor.hidden\n );\n if (!firstVisibleDescriptor) {\n return;\n }\n\n const selectedValue = Number(\n this.formattedTime[firstVisibleDescriptor.unit]\n );\n const isValidSelection =\n firstVisibleDescriptor.numberArray.includes(selectedValue);\n\n this.focusedValue = isValidSelection\n ? selectedValue\n : firstVisibleDescriptor.numberArray[0];\n\n this.focusedUnit = firstVisibleDescriptor.unit;\n }\n\n private setupVisibilityObserver() {\n let dropdownElement: Element | null = this.hostElement;\n while (dropdownElement && dropdownElement.tagName !== 'IX-DROPDOWN') {\n dropdownElement = dropdownElement.parentElement;\n }\n\n if (!dropdownElement) {\n return;\n }\n\n this.visibilityObserver = new MutationObserver((mutations) =>\n this.mutationObserverCallback(mutations)\n );\n\n this.visibilityObserver.observe(dropdownElement, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n });\n }\n\n private mutationObserverCallback(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n if (mutation.type !== 'attributes') {\n continue;\n }\n\n const dropdown = mutation.target as HTMLElement;\n\n if (!dropdown.classList.contains('show')) {\n // keep picker in sync with input\n if (this.time) {\n const timeFormat = DateTime.fromFormat(this.time, this.format);\n if (timeFormat.isValid) {\n this._time = DateTime.fromFormat(this.time, this.format);\n this.setInitialFocusedValueAndUnit();\n }\n }\n\n continue;\n }\n\n const elementsReady = this.areElementsRendered();\n if (!elementsReady) {\n continue;\n }\n\n this.updateScrollPositions();\n }\n }\n\n private areElementsRendered(): boolean {\n const elementLists =\n this.hostElement.shadowRoot?.querySelectorAll('.element-list');\n\n if (!elementLists || elementLists.length === 0) {\n return false;\n }\n\n return Array.from(elementLists).some(\n (list) => (list as HTMLElement).offsetHeight > 0\n );\n }\n\n private getFormattedTime(): TimeOutputFormat {\n if (!this._time) {\n return FORMATTED_TIME_EMPTY;\n }\n\n return {\n hour:\n this.timeRef !== undefined\n ? this._time.toFormat('h')\n : this._time.toFormat('H'),\n minute: this._time.toFormat('m'),\n second: this._time.toFormat('s'),\n millisecond: this._time.toFormat('S'),\n };\n }\n\n private timeUpdate(unit: TimePickerDescriptorUnit, value: number): number {\n let maxValue = DateTime.now().endOf('day').get(unit);\n\n if (unit === 'hour') {\n if (this.timeRef === 'PM') {\n // 12 PM should remain 12, other PM hours add 12\n value = value === 12 ? 12 : value + 12;\n } else if (this.timeRef === 'AM') {\n // 12 AM should be 0, other AM hours remain as is\n value = value === 12 ? 0 : value;\n maxValue = 12;\n }\n }\n\n if (value > maxValue) {\n value = maxValue;\n } else if (value < 0) {\n value = 0;\n }\n\n if (!this._time) {\n this._time = DateTime.now().startOf('day');\n }\n\n this._time = this._time.set({\n [unit]: value,\n });\n\n return value;\n }\n\n private changeTimeReference(newTimeRef: 'AM' | 'PM') {\n if (this.timeRef === newTimeRef) {\n return;\n }\n\n if (!this._time) {\n this._time = DateTime.now().startOf('day');\n }\n\n this.timeRef = newTimeRef;\n const currentHour = this._time.hour;\n\n if (newTimeRef === 'PM' && currentHour < 12) {\n this._time = this._time.plus({ hours: 12 });\n } else if (newTimeRef === 'AM' && currentHour >= 12) {\n this._time = this._time.minus({ hours: 12 });\n }\n\n this.timeChange.emit(this._time.toFormat(this.format));\n }\n\n private isFormat12Hour(format: string): boolean {\n // Remove any text that's inside quotes (literal text in Luxon format strings)\n let cleanFormat = '';\n let inQuote = false;\n\n for (let i = 0; i < format.length; i++) {\n const char = format[i];\n if (char === \"'\") {\n inQuote = !inQuote;\n } else if (!inQuote) {\n cleanFormat += char;\n }\n }\n\n // Check for specific 12-hour format tokens\n // Case-sensitive matching to distinguish between 'h' and 'H'\n return /h|a|t/.test(cleanFormat);\n }\n\n private setTimeRef() {\n const uses12HourFormat = this.isFormat12Hour(this.format);\n\n if (uses12HourFormat && this._time) {\n this.timeRef = this._time!.hour >= 12 ? 'PM' : 'AM';\n } else {\n this.timeRef = undefined;\n }\n }\n\n private getInitialFocusedValueForUnit(\n unit: TimePickerDescriptorUnit,\n numberArray: number[]\n ): number {\n const selectedValue = Number(this.formattedTime[unit]);\n return numberArray.includes(selectedValue) ? selectedValue : numberArray[0];\n }\n\n private setTimePickerDescriptors() {\n let hourNumbers = [];\n let minuteNumbers = [];\n let secondNumbers = [];\n let millisecondsNumbers = [];\n\n if (this.timeRef !== undefined) {\n hourNumbers = Array.from(\n { length: Math.ceil(12 / this.hourInterval) },\n (_, i) => i * this.hourInterval + 1\n ).filter((hour) => hour <= 12);\n } else {\n hourNumbers = Array.from(\n { length: Math.ceil(24 / this.hourInterval) },\n (_, i) => i * this.hourInterval\n );\n }\n\n minuteNumbers = Array.from(\n { length: Math.ceil(60 / this.minuteInterval) },\n (_, i) => i * this.minuteInterval\n );\n secondNumbers = Array.from(\n { length: Math.ceil(60 / this.secondInterval) },\n (_, i) => i * this.secondInterval\n );\n millisecondsNumbers = Array.from(\n { length: Math.ceil(1000 / this.millisecondInterval) },\n (_, i) => i * this.millisecondInterval\n );\n\n this.timePickerDescriptors = [\n {\n unit: 'hour',\n header: this.i18nHourColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.hours.test(this.format),\n numberArray: hourNumbers,\n focusedValue: this.getInitialFocusedValueForUnit('hour', hourNumbers),\n },\n {\n unit: 'minute',\n header: this.i18nMinuteColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.minutes.test(this.format),\n numberArray: minuteNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'minute',\n minuteNumbers\n ),\n },\n {\n unit: 'second',\n header: this.i18nSecondColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.seconds.test(this.format),\n numberArray: secondNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'second',\n secondNumbers\n ),\n },\n {\n unit: 'millisecond',\n header: this.i18nMillisecondColumnHeader,\n hidden: !LUXON_FORMAT_PATTERNS.milliseconds.test(this.format),\n numberArray: millisecondsNumbers,\n focusedValue: this.getInitialFocusedValueForUnit(\n 'millisecond',\n millisecondsNumbers\n ),\n },\n ];\n\n this.timePickerDescriptors = this.timePickerDescriptors.filter(\n (item) => !item.hidden\n );\n }\n\n private getNumberArrayForUnit(unit: TimePickerDescriptorUnit): number[] {\n const descriptor = this.timePickerDescriptors.find(\n (descriptor) => descriptor.unit === unit\n );\n return descriptor ? descriptor.numberArray : [];\n }\n\n private isSelected(unit: TimePickerDescriptorUnit, number: number): boolean {\n return this.formattedTime![unit] === String(number);\n }\n\n private select(unit: TimePickerDescriptorUnit, number: number) {\n if (this.isSelected(unit, number)) {\n return;\n }\n\n this.formattedTime = {\n ...this.formattedTime!,\n [unit]: String(number),\n };\n\n this.timeUpdate(unit, number);\n this.elementListScrollToTop(unit, number, 'smooth');\n this.timeChange.emit(this._time!.toFormat(this.format));\n }\n\n private updateDescriptorFocusedValue(\n unit: TimePickerDescriptorUnit,\n value: number\n ) {\n const descriptorIndex = this.timePickerDescriptors.findIndex(\n (d) => d.unit === unit\n );\n if (descriptorIndex !== -1) {\n this.timePickerDescriptors = [\n ...this.timePickerDescriptors.slice(0, descriptorIndex),\n {\n ...this.timePickerDescriptors[descriptorIndex],\n focusedValue: value,\n },\n ...this.timePickerDescriptors.slice(descriptorIndex + 1),\n ];\n }\n }\n\n private elementListScrollToTop(\n unit: TimePickerDescriptorUnit,\n number: number,\n scrollBehaviour: 'smooth' | 'instant'\n ) {\n const elementList = this.getElementList(unit);\n const elementContainer = this.getElementContainer(unit, number);\n\n if (elementList && elementContainer) {\n const elementListHeight = elementList.clientHeight;\n const elementContainerHeight = elementContainer.clientHeight;\n\n // Offset which is used to adjust the scroll position to account for margins, elements being hidden, etc.\n let scrollPositionOffset = 11;\n if (this.hideHeader) {\n // 56 + 1 --> height of the header container and separator\n scrollPositionOffset -= 57;\n }\n\n const scrollPosition =\n elementContainer.offsetTop -\n elementListHeight / 2 +\n elementContainerHeight -\n scrollPositionOffset;\n\n elementList.scrollTo({\n top: scrollPosition,\n behavior: scrollBehaviour,\n });\n }\n }\n\n /**\n * Updates all scroll positions of the time picker elements\n * Updates only the elements that have changed if `formattedTimeOld` is provided\n */\n private updateScrollPositions(\n formattedTimeOld: TimeOutputFormat | undefined = undefined\n ) {\n for (const key in this.formattedTime) {\n const unitKey = key as keyof TimeOutputFormat;\n\n if (\n !formattedTimeOld ||\n this.formattedTime[unitKey] !== formattedTimeOld[unitKey]\n ) {\n this.elementListScrollToTop(\n unitKey as TimePickerDescriptorUnit,\n Number(this.formattedTime[unitKey]),\n 'instant'\n );\n }\n }\n }\n\n private formatUnitValue(\n unit: TimePickerDescriptorUnit,\n value: number\n ): string {\n if (unit === 'millisecond') {\n return value.toString().padStart(3, '0');\n }\n\n return value < 10 ? `0${value}` : value.toString();\n }\n\n private getColumnSeparator(currentIndex: number): string {\n if (currentIndex + 1 < this.timePickerDescriptors.length) {\n const nextUnit = this.timePickerDescriptors[currentIndex + 1].unit;\n return nextUnit === 'millisecond' ? '.' : ':';\n }\n\n return ':';\n }\n\n private getElementContainerTabIndex(\n number: number,\n descriptorUnit: TimePickerDescriptorUnit\n ): string {\n const descriptor = this.timePickerDescriptors.find(\n (d) => d.unit === descriptorUnit\n );\n\n if (number === descriptor?.focusedValue) {\n return '0';\n }\n\n return '-1';\n }\n\n render() {\n return (\n <Host>\n <ix-date-time-card\n embedded={this.embedded}\n timePickerAppearance={true}\n corners={this.corners}\n hasFooter={!this.dateTimePickerAppearance}\n hideHeader={this.hideHeader}\n >\n <div class=\"header\" slot=\"header\">\n <ix-typography format=\"body\">{this.i18nHeader}</ix-typography>\n </div>\n <div class=\"clock\">\n {this.timePickerDescriptors.map((descriptor, index: number) => (\n <div class=\"flex\">\n <div class={{ columns: true, hidden: descriptor.hidden }}>\n <div class=\"column-header\" title={descriptor.header}>\n {descriptor.header}\n </div>\n <div\n data-element-list-id={descriptor.unit}\n class=\"element-list\"\n tabIndex={-1}\n >\n {descriptor.numberArray.map((number) => {\n return (\n <button\n data-element-container-id={`${descriptor.unit}-${number}`}\n class={{\n selected: this.isSelected(descriptor.unit, number),\n 'element-container': true,\n }}\n onClick={() => {\n this.select(descriptor.unit, number);\n }}\n onFocus={() =>\n this.onUnitCellFocus(descriptor.unit, number)\n }\n onBlur={(e) =>\n this.onUnitCellBlur(descriptor.unit, e)\n }\n tabindex={this.getElementContainerTabIndex(\n number,\n descriptor.unit\n )}\n aria-label={`${descriptor.header}: ${number}`}\n >\n {this.formatUnitValue(descriptor.unit, number)}\n </button>\n );\n })}\n <div class=\"element-list-padding\"></div>\n </div>\n </div>\n\n {index !== this.timePickerDescriptors.length - 1 && (\n <div\n class={{\n 'column-separator': true,\n hidden: descriptor.hidden,\n }}\n >\n {this.getColumnSeparator(index)}\n </div>\n )}\n </div>\n ))}\n\n {this.timeRef && (\n <div class=\"flex\">\n <div class=\"column-separator\"></div>\n <div class=\"columns\">\n <div class=\"column-header\" title=\"AM/PM\" />\n <div class=\"element-list\" tabIndex={-1}>\n <button\n data-am-pm-id=\"AM\"\n class={{\n selected: this.timeRef === 'AM',\n 'element-container': true,\n }}\n onClick={() => this.changeTimeReference('AM')}\n tabindex=\"0\"\n aria-label=\"AM\"\n >\n AM\n </button>\n <button\n data-am-pm-id=\"PM\"\n class={{\n selected: this.timeRef === 'PM',\n 'element-container': true,\n }}\n onClick={() => this.changeTimeReference('PM')}\n tabindex=\"0\"\n aria-label=\"PM\"\n >\n PM\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div\n class={{\n footer: true,\n 'footer--compact': this.timePickerDescriptors.length <= 2,\n }}\n slot=\"footer\"\n >\n <ix-button\n class=\"confirm-button\"\n onClick={() => {\n this.timeSelect.emit(this._time?.toFormat(this.format));\n }}\n >\n {this.i18nConfirmTime}\n </ix-button>\n </div>\n </ix-date-time-card>\n </Host>\n );\n }\n}\n"]}
@@ -111,4 +111,10 @@ export function HookValidationLifecycle(options) {
111
111
  };
112
112
  };
113
113
  }
114
+ export function getValidationText(isInputInvalid, customInvalidText, i18nFallbackText) {
115
+ if (isInputInvalid) {
116
+ return customInvalidText !== null && customInvalidText !== void 0 ? customInvalidText : i18nFallbackText;
117
+ }
118
+ return customInvalidText;
119
+ }
114
120
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/components/utils/input/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getElement } from '@stencil/core';\nimport { HTMLIxFormComponentElement, IxFormComponent } from '.';\nimport { IxComponent } from '../internal';\n\nexport type ClassMutationObserver = {\n destroy: () => void;\n};\n\nexport async function isTouched<T>(host: IxFormComponent<T>) {\n if (typeof host.isTouched === 'function') {\n return host.isTouched();\n }\n}\n\nexport async function shouldSuppressInternalValidation<T>(\n host: IxFormComponent<T>\n) {\n if (\n host.getAssociatedFormElement &&\n typeof host.getAssociatedFormElement === 'function'\n ) {\n const form = await host.getAssociatedFormElement();\n\n if (!form) {\n return false;\n }\n\n return form.noValidate;\n }\n\n return false;\n}\n\nexport function createClassMutationObserver(\n element: HTMLElement,\n callback: () => void,\n options?: {\n includeChildren?: boolean;\n }\n): ClassMutationObserver {\n const observer = new MutationObserver(callback);\n observer.observe(element, {\n subtree: options?.includeChildren,\n childList: options?.includeChildren,\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return {\n destroy() {\n observer.disconnect();\n },\n };\n}\n\nexport type ValidationResultProperty =\n | 'isInvalid'\n | 'isInvalidByRequired'\n | 'isValid'\n | 'isInfo'\n | 'isWarning';\nexport type ValidationResults = Record<ValidationResultProperty, boolean>;\n\nfunction classListContains(\n hostElement: HTMLIxFormComponentElement<unknown>,\n className: string,\n includeChildren: boolean\n) {\n return (\n hostElement.classList.contains(`${className}`) ||\n (includeChildren ? !!hostElement.querySelector(`.${className}`) : false)\n );\n}\n\nexport function checkFieldClasses(\n hostElement: HTMLIxFormComponentElement<unknown>,\n includeChildren = false\n): ValidationResults {\n return {\n isInvalid:\n classListContains(hostElement, 'ix-invalid', includeChildren) ||\n classListContains(\n hostElement,\n 'ix-invalid--validity-invalid',\n includeChildren\n ),\n isInvalidByRequired: classListContains(\n hostElement,\n 'ix-invalid--required',\n includeChildren\n ),\n isValid: classListContains(hostElement, 'ix-valid', includeChildren),\n isInfo: classListContains(hostElement, 'ix-info', includeChildren),\n isWarning: classListContains(hostElement, 'ix-warning', includeChildren),\n };\n}\n\nexport function HookValidationLifecycle(options?: {\n includeChildren?: boolean;\n}) {\n return (proto: IxComponent, methodName: string) => {\n let checkIfRequiredFunction: (() => Promise<void>) | null;\n let classMutationObserver: ClassMutationObserver | null;\n const { componentWillLoad, disconnectedCallback, connectedCallback } =\n proto;\n\n proto.connectedCallback = function () {\n const host = getElement(\n this\n ) as unknown as HTMLIxFormComponentElement<unknown>;\n\n checkIfRequiredFunction = async () => {\n const skipValidation = await shouldSuppressInternalValidation(host);\n if (skipValidation) {\n return;\n }\n\n if (host.hasValidValue && typeof host.hasValidValue === 'function') {\n const hasValue = await host.hasValidValue();\n const touched = await isTouched(host);\n\n if (host.required) {\n host.classList.toggle('ix-invalid--required', !hasValue && touched);\n } else {\n host.classList.remove('ix-invalid--required');\n }\n }\n\n if (\n host.getValidityState &&\n typeof host.getValidityState === 'function'\n ) {\n const validityState = await host.getValidityState();\n\n host.classList.toggle(\n `ix-invalid--validity-patternMismatch`,\n validityState.patternMismatch\n );\n }\n };\n\n host.addEventListener('checkedChange', checkIfRequiredFunction);\n host.addEventListener('valueChange', checkIfRequiredFunction);\n host.addEventListener('ixBlur', checkIfRequiredFunction);\n setTimeout(checkIfRequiredFunction);\n return connectedCallback?.call(this);\n };\n\n proto.componentWillLoad = function () {\n const host = getElement(\n this\n ) as unknown as HTMLIxFormComponentElement<unknown>;\n classMutationObserver = createClassMutationObserver(\n host,\n () => {\n const result = checkFieldClasses(host, options?.includeChildren);\n proto[methodName].call(this, result);\n },\n options\n );\n const result = checkFieldClasses(host, options?.includeChildren);\n proto[methodName].call(this, result);\n return componentWillLoad?.call(this);\n };\n\n proto.disconnectedCallback = function () {\n const host = getElement(this);\n\n if (host && classMutationObserver) {\n classMutationObserver.destroy();\n classMutationObserver = null;\n }\n\n if (host && checkIfRequiredFunction) {\n host.removeEventListener('checkedChange', checkIfRequiredFunction);\n host.removeEventListener('valueChange', checkIfRequiredFunction);\n host.removeEventListener('ixBlur', checkIfRequiredFunction);\n checkIfRequiredFunction = null;\n }\n\n return disconnectedCallback?.call(this);\n };\n };\n}\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/components/utils/input/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getElement } from '@stencil/core';\nimport { HTMLIxFormComponentElement, IxFormComponent } from '.';\nimport { IxComponent } from '../internal';\n\nexport type ClassMutationObserver = {\n destroy: () => void;\n};\n\nexport async function isTouched<T>(host: IxFormComponent<T>) {\n if (typeof host.isTouched === 'function') {\n return host.isTouched();\n }\n}\n\nexport async function shouldSuppressInternalValidation<T>(\n host: IxFormComponent<T>\n) {\n if (\n host.getAssociatedFormElement &&\n typeof host.getAssociatedFormElement === 'function'\n ) {\n const form = await host.getAssociatedFormElement();\n\n if (!form) {\n return false;\n }\n\n return form.noValidate;\n }\n\n return false;\n}\n\nexport function createClassMutationObserver(\n element: HTMLElement,\n callback: () => void,\n options?: {\n includeChildren?: boolean;\n }\n): ClassMutationObserver {\n const observer = new MutationObserver(callback);\n observer.observe(element, {\n subtree: options?.includeChildren,\n childList: options?.includeChildren,\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return {\n destroy() {\n observer.disconnect();\n },\n };\n}\n\nexport type ValidationResultProperty =\n | 'isInvalid'\n | 'isInvalidByRequired'\n | 'isValid'\n | 'isInfo'\n | 'isWarning';\nexport type ValidationResults = Record<ValidationResultProperty, boolean>;\n\nfunction classListContains(\n hostElement: HTMLIxFormComponentElement<unknown>,\n className: string,\n includeChildren: boolean\n) {\n return (\n hostElement.classList.contains(`${className}`) ||\n (includeChildren ? !!hostElement.querySelector(`.${className}`) : false)\n );\n}\n\nexport function checkFieldClasses(\n hostElement: HTMLIxFormComponentElement<unknown>,\n includeChildren = false\n): ValidationResults {\n return {\n isInvalid:\n classListContains(hostElement, 'ix-invalid', includeChildren) ||\n classListContains(\n hostElement,\n 'ix-invalid--validity-invalid',\n includeChildren\n ),\n isInvalidByRequired: classListContains(\n hostElement,\n 'ix-invalid--required',\n includeChildren\n ),\n isValid: classListContains(hostElement, 'ix-valid', includeChildren),\n isInfo: classListContains(hostElement, 'ix-info', includeChildren),\n isWarning: classListContains(hostElement, 'ix-warning', includeChildren),\n };\n}\n\nexport function HookValidationLifecycle(options?: {\n includeChildren?: boolean;\n}) {\n return (proto: IxComponent, methodName: string) => {\n let checkIfRequiredFunction: (() => Promise<void>) | null;\n let classMutationObserver: ClassMutationObserver | null;\n const { componentWillLoad, disconnectedCallback, connectedCallback } =\n proto;\n\n proto.connectedCallback = function () {\n const host = getElement(\n this\n ) as unknown as HTMLIxFormComponentElement<unknown>;\n\n checkIfRequiredFunction = async () => {\n const skipValidation = await shouldSuppressInternalValidation(host);\n if (skipValidation) {\n return;\n }\n\n if (host.hasValidValue && typeof host.hasValidValue === 'function') {\n const hasValue = await host.hasValidValue();\n const touched = await isTouched(host);\n\n if (host.required) {\n host.classList.toggle('ix-invalid--required', !hasValue && touched);\n } else {\n host.classList.remove('ix-invalid--required');\n }\n }\n\n if (\n host.getValidityState &&\n typeof host.getValidityState === 'function'\n ) {\n const validityState = await host.getValidityState();\n\n host.classList.toggle(\n `ix-invalid--validity-patternMismatch`,\n validityState.patternMismatch\n );\n }\n };\n\n host.addEventListener('checkedChange', checkIfRequiredFunction);\n host.addEventListener('valueChange', checkIfRequiredFunction);\n host.addEventListener('ixBlur', checkIfRequiredFunction);\n setTimeout(checkIfRequiredFunction);\n return connectedCallback?.call(this);\n };\n\n proto.componentWillLoad = function () {\n const host = getElement(\n this\n ) as unknown as HTMLIxFormComponentElement<unknown>;\n classMutationObserver = createClassMutationObserver(\n host,\n () => {\n const result = checkFieldClasses(host, options?.includeChildren);\n proto[methodName].call(this, result);\n },\n options\n );\n const result = checkFieldClasses(host, options?.includeChildren);\n proto[methodName].call(this, result);\n return componentWillLoad?.call(this);\n };\n\n proto.disconnectedCallback = function () {\n const host = getElement(this);\n\n if (host && classMutationObserver) {\n classMutationObserver.destroy();\n classMutationObserver = null;\n }\n\n if (host && checkIfRequiredFunction) {\n host.removeEventListener('checkedChange', checkIfRequiredFunction);\n host.removeEventListener('valueChange', checkIfRequiredFunction);\n host.removeEventListener('ixBlur', checkIfRequiredFunction);\n checkIfRequiredFunction = null;\n }\n\n return disconnectedCallback?.call(this);\n };\n };\n}\n\nexport function getValidationText(\n isInputInvalid: boolean,\n customInvalidText: string | undefined,\n i18nFallbackText: string\n): string | undefined {\n if (isInputInvalid) {\n return customInvalidText ?? i18nFallbackText;\n }\n return customInvalidText;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/utils/modal/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAiB,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,UAAU,EACV,YAAY,EAGZ,SAAS,GACV,MAAM,SAAS,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { showModalLoading } from './loading';\nexport { MessageConfig, showMessage } from './message';\nexport {\n closeModal,\n dismissModal,\n ModalConfig,\n ModalInstance,\n showModal,\n} from './modal';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/utils/modal/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAuB,MAAM,WAAW,CAAC;AAClE,OAAO,EAAiB,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,UAAU,EACV,YAAY,EAGZ,SAAS,GACV,MAAM,SAAS,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport { showModalLoading, ModalLoadingContext } from './loading';\nexport { MessageConfig, showMessage } from './message';\nexport {\n closeModal,\n dismissModal,\n ModalConfig,\n ModalInstance,\n showModal,\n} from './modal';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"loading.js","sourceRoot":"","sources":["../../../../src/components/utils/modal/loading.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3B,eAAe,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,CAAC;IAElB,OAAO;QACL,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACpD,MAAM,EAAE,CAAC,IAAa,EAAE,UAAkB,GAAG,EAAE,EAAE;YAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;YACD,UAAU,CAAC,GAAG,EAAE;gBACd,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvB,UAAU,CACR,KAAK,IAAI,EAAE,CAAC,MAAM,eAAe,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EACrD,SAAS,CAAC,UAAU,CACrB,CAAC;YACJ,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport Animation from '../animation';\nimport { getCoreDelegate } from '../delegate';\n\nexport function showModalLoading(message: string) {\n const modal = document.createElement('ix-modal');\n modal.disableEscapeClose = true;\n\n const loading = document.createElement('ix-modal-loading');\n loading.innerText = message;\n modal.appendChild(loading);\n\n getCoreDelegate().attachView(modal);\n modal.showModal();\n\n return {\n update: (text: string) => (loading.innerHTML = text),\n finish: (text?: string, timeout: number = 250) => {\n if (text !== undefined) {\n loading.innerText = text;\n } else {\n timeout = 0;\n }\n setTimeout(() => {\n modal.closeModal(null);\n setTimeout(\n async () => await getCoreDelegate().removeView(modal),\n Animation.mediumTime\n );\n }, timeout);\n },\n };\n}\n"]}
1
+ {"version":3,"file":"loading.js","sourceRoot":"","sources":["../../../../src/components/utils/modal/loading.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAEhC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3B,eAAe,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,CAAC;IAElB,OAAO;QACL,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACpD,MAAM,EAAE,CAAC,IAAa,EAAE,UAAkB,GAAG,EAAE,EAAE;YAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;YACD,UAAU,CAAC,GAAG,EAAE;gBACd,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvB,UAAU,CACR,KAAK,IAAI,EAAE,CAAC,MAAM,eAAe,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EACrD,SAAS,CAAC,UAAU,CACrB,CAAC;YACJ,CAAC,EAAE,OAAO,CAAC,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport Animation from '../animation';\nimport { getCoreDelegate } from '../delegate';\n\nexport type ModalLoadingContext = {\n update: (text: string) => string;\n finish: (text?: string, timeout?: number) => void;\n};\n\nexport function showModalLoading(message: string) {\n const modal = document.createElement('ix-modal');\n modal.disableEscapeClose = true;\n\n const loading = document.createElement('ix-modal-loading');\n loading.innerText = message;\n modal.appendChild(loading);\n\n getCoreDelegate().attachView(modal);\n modal.showModal();\n\n return {\n update: (text: string) => (loading.innerHTML = text),\n finish: (text?: string, timeout: number = 250) => {\n if (text !== undefined) {\n loading.innerText = text;\n } else {\n timeout = 0;\n }\n setTimeout(() => {\n modal.closeModal(null);\n setTimeout(\n async () => await getCoreDelegate().removeView(modal),\n Animation.mediumTime\n );\n }, timeout);\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["src/components/category-filter/filter-state.ts","src/components/toast/toast-utils.ts","src/components/utils/modal/loading.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LogicalFilterOperator } from './logical-filter-operator';\nexport class FilterState {\n public tokens: string[] = [];\n public categories: {\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }[] = [];\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { ShowToastResult } from './toast-container.types';\nexport type ToastType = 'info' | 'success' | 'error' | 'warning';\nexport type ToastPosition = 'bottom-right' | 'top-right';\n\nexport interface ToastConfig {\n /**\n * Title of the toast\n */\n title?: string;\n /**\n * Message of the toast\n */\n message?: string | HTMLElement;\n /**\n * Action element that is displayed below the toast message/title\n */\n action?: HTMLElement;\n /**\n * Type of the toast\n */\n type?: ToastType;\n /**\n * Controls whether the toast closes automatically after a delay\n */\n autoClose?: boolean;\n /**\n * Sets the delay for autoClose in milliseconds\n */\n autoCloseDelay?: number;\n /**\n * Icon that is displayed with the toast\n */\n icon?: string;\n /**\n * Color of the icon\n */\n iconColor?: string;\n}\n\nexport function getToastContainer() {\n const containerList = Array.from(\n document.querySelectorAll('ix-toast-container')\n );\n const [container] = containerList;\n if (containerList.length > 1) {\n console.warn(\n 'Multiple toast containers were found. Only the first one will be used.'\n );\n return container;\n }\n if (!container) {\n const toastContainer = document.createElement('ix-toast-container');\n document.body.appendChild(toastContainer);\n\n return toastContainer;\n }\n return container;\n}\n\nexport function setToastPosition(position: ToastPosition) {\n const container = getToastContainer();\n container.setAttribute('position', position);\n}\n\nfunction toast(config: ToastConfig): Promise<ShowToastResult> {\n const container = getToastContainer();\n return container.showToast(config);\n}\n\ntoast.info = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'info',\n });\n};\n\ntoast.error = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'error',\n });\n};\n\ntoast.success = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'success',\n });\n};\n\ntoast.warning = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'warning',\n });\n};\n\nexport { toast };\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport Animation from '../animation';\nimport { getCoreDelegate } from '../delegate';\n\nexport function showModalLoading(message: string) {\n const modal = document.createElement('ix-modal');\n modal.disableEscapeClose = true;\n\n const loading = document.createElement('ix-modal-loading');\n loading.innerText = message;\n modal.appendChild(loading);\n\n getCoreDelegate().attachView(modal);\n modal.showModal();\n\n return {\n update: (text: string) => (loading.innerHTML = text),\n finish: (text?: string, timeout: number = 250) => {\n if (text !== undefined) {\n loading.innerText = text;\n } else {\n timeout = 0;\n }\n setTimeout(() => {\n modal.closeModal(null);\n setTimeout(\n async () => await getCoreDelegate().removeView(modal),\n Animation.mediumTime\n );\n }, timeout);\n },\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["src/components/category-filter/filter-state.ts","src/components/toast/toast-utils.ts","src/components/utils/modal/loading.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LogicalFilterOperator } from './logical-filter-operator';\nexport class FilterState {\n public tokens: string[] = [];\n public categories: {\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }[] = [];\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { ShowToastResult } from './toast-container.types';\nexport type ToastType = 'info' | 'success' | 'error' | 'warning';\nexport type ToastPosition = 'bottom-right' | 'top-right';\n\nexport interface ToastConfig {\n /**\n * Title of the toast\n */\n title?: string;\n /**\n * Message of the toast\n */\n message?: string | HTMLElement;\n /**\n * Action element that is displayed below the toast message/title\n */\n action?: HTMLElement;\n /**\n * Type of the toast\n */\n type?: ToastType;\n /**\n * Controls whether the toast closes automatically after a delay\n */\n autoClose?: boolean;\n /**\n * Sets the delay for autoClose in milliseconds\n */\n autoCloseDelay?: number;\n /**\n * Icon that is displayed with the toast\n */\n icon?: string;\n /**\n * Color of the icon\n */\n iconColor?: string;\n}\n\nexport function getToastContainer() {\n const containerList = Array.from(\n document.querySelectorAll('ix-toast-container')\n );\n const [container] = containerList;\n if (containerList.length > 1) {\n console.warn(\n 'Multiple toast containers were found. Only the first one will be used.'\n );\n return container;\n }\n if (!container) {\n const toastContainer = document.createElement('ix-toast-container');\n document.body.appendChild(toastContainer);\n\n return toastContainer;\n }\n return container;\n}\n\nexport function setToastPosition(position: ToastPosition) {\n const container = getToastContainer();\n container.setAttribute('position', position);\n}\n\nfunction toast(config: ToastConfig): Promise<ShowToastResult> {\n const container = getToastContainer();\n return container.showToast(config);\n}\n\ntoast.info = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'info',\n });\n};\n\ntoast.error = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'error',\n });\n};\n\ntoast.success = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'success',\n });\n};\n\ntoast.warning = (config: ToastConfig) => {\n return toast({\n ...config,\n type: 'warning',\n });\n};\n\nexport { toast };\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport Animation from '../animation';\nimport { getCoreDelegate } from '../delegate';\n\nexport type ModalLoadingContext = {\n update: (text: string) => string;\n finish: (text?: string, timeout?: number) => void;\n};\n\nexport function showModalLoading(message: string) {\n const modal = document.createElement('ix-modal');\n modal.disableEscapeClose = true;\n\n const loading = document.createElement('ix-modal-loading');\n loading.innerText = message;\n modal.appendChild(loading);\n\n getCoreDelegate().attachView(modal);\n modal.showModal();\n\n return {\n update: (text: string) => (loading.innerHTML = text),\n finish: (text?: string, timeout: number = 250) => {\n if (text !== undefined) {\n loading.innerText = text;\n } else {\n timeout = 0;\n }\n setTimeout(() => {\n modal.closeModal(null);\n setTimeout(\n async () => await getCoreDelegate().removeView(modal),\n Animation.mediumTime\n );\n }, timeout);\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { h } from './index-CtoreFVF.js';
2
2
  import { a as a11yBoolean } from './a11y-Bb7pDeaQ.js';
3
- import { s as shouldSuppressInternalValidation } from './validation-D_dk-JqT.js';
3
+ import { s as shouldSuppressInternalValidation } from './validation-LJh16vt2.js';
4
4
  import { c as createMutationObserver } from './mutation-observer-CX81WQtk.js';
5
5
  import { c as convertToRemString } from './rwd.util-pXYAoEyc.js';
6
6
  import { a as animate } from './anime.esm-DhE1t8Qh.js';
@@ -220,6 +220,6 @@ const SlotStart = (props) => {
220
220
  };
221
221
 
222
222
  export { InputElement as I, SlotEnd as S, TextareaElement as T, addDisposableChangesAndVisibilityObservers as a, adjustPaddingForStartAndEnd as b, SlotStart as c, checkAllowedKeys as d, checkInternalValidity as e, getAriaAttributesForInput as g, handleSubmitOnEnterKeydown as h, mapValidationResult as m, onInputBlur as o };
223
- //# sourceMappingURL=input.fc-CQbX6V05.js.map
223
+ //# sourceMappingURL=input.fc-KJF8Z9iJ.js.map
224
224
 
225
- //# sourceMappingURL=input.fc-CQbX6V05.js.map
225
+ //# sourceMappingURL=input.fc-KJF8Z9iJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.fc-CQbX6V05.js","sources":["src/components/input/input.animation.ts","src/components/input/input.util.ts","src/components/input/input.fc.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { animate } from 'animejs';\nimport Animation from '../utils/animation';\n\nexport function shakeInput(input: HTMLInputElement) {\n const xMax = 5;\n animate(input, {\n duration: Animation.defaultTime,\n easing: 'easeInOutSine',\n loop: 2,\n translateX: [\n {\n value: xMax * -1,\n },\n {\n value: xMax,\n },\n {\n value: xMax / -2,\n },\n {\n value: xMax / 2,\n },\n {\n value: 0,\n },\n ],\n });\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { A11yAttributes, a11yBoolean } from '../utils/a11y';\nimport {\n IxFormComponent,\n IxInputFieldComponent,\n ValidationResults,\n shouldSuppressInternalValidation,\n} from '../utils/input';\nimport { createMutationObserver } from '../utils/mutation-observer';\nimport { convertToRemString } from '../utils/rwd.util';\nimport { generateUUID } from '../utils/uuid';\nimport { shakeInput } from './input.animation';\n\nexport function createIdIfNotExists(\n element: IxFormComponent,\n idPrefix: string = 'input'\n) {\n return element.hasAttribute('id')\n ? element.getAttribute('id')\n : `${idPrefix}-${generateUUID()}`;\n}\n\nexport function mapValidationResult<T>(\n ref: IxInputFieldComponent<T>,\n result: ValidationResults\n) {\n ref.isInvalid = result.isInvalid || result.isInvalidByRequired;\n ref.isValid = result.isValid;\n ref.isInfo = result.isInfo;\n ref.isWarning = result.isWarning;\n}\n\nexport function checkAllowedKeys<T>(\n comp: IxInputFieldComponent<T>,\n event: KeyboardEvent\n) {\n if (comp.allowedCharactersPattern) {\n const regex = new RegExp(comp.allowedCharactersPattern);\n if (!regex.test(event.key)) {\n event.preventDefault();\n shakeInput(comp.inputRef.current);\n }\n }\n}\n\nexport async function checkInternalValidity<T>(\n comp: IxFormComponent<T>,\n input: HTMLInputElement | HTMLTextAreaElement\n) {\n const validityState = input.validity;\n const currentValidityState = !comp.hostElement.classList.contains(\n 'ix-invalid--validity-invalid'\n );\n const newValidityState = validityState.valid;\n\n if (currentValidityState !== newValidityState) {\n const eventResult = comp.validityStateChange.emit(validityState);\n if (eventResult.defaultPrevented) {\n return;\n }\n }\n\n if (comp.value === null || comp.value === undefined) {\n return;\n }\n\n const skipValidation = await shouldSuppressInternalValidation(comp);\n if (skipValidation) {\n return;\n }\n\n const { valid } = validityState;\n comp.hostElement.classList.toggle('ix-invalid--validity-invalid', !valid);\n}\n\nexport function onInputBlur<T>(\n comp: IxFormComponent<T>,\n input?: HTMLInputElement | HTMLTextAreaElement | null\n) {\n comp.ixBlur.emit();\n\n if (!input) {\n throw new Error('Input element is not available');\n }\n\n input.setAttribute('data-ix-touched', 'true');\n checkInternalValidity(comp, input);\n}\n\nexport function applyPaddingEnd(\n inputElement: HTMLElement | null,\n width: number,\n options: {\n slotEnd: boolean;\n additionalPaddingRight?: string;\n }\n) {\n if (!inputElement) {\n return;\n }\n\n const remInPixels = 16;\n const padding = convertToRemString(width + remInPixels / 2);\n\n if (options.slotEnd) {\n inputElement.style.paddingRight = `calc(${padding} + ${\n options.additionalPaddingRight ?? '0rem'\n })`;\n } else {\n inputElement.style.paddingLeft = padding;\n }\n}\n\nexport function adjustPaddingForStartAndEnd(\n startElement: HTMLElement | null,\n endElement: HTMLElement | null,\n inputElement: HTMLElement | null\n) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (startElement) {\n const startBoundingRect = startElement.getBoundingClientRect();\n if (startBoundingRect) {\n applyPaddingEnd(inputElement, startBoundingRect.width, {\n slotEnd: false,\n });\n }\n }\n\n if (endElement) {\n const endBoundingRect = endElement.getBoundingClientRect();\n if (endBoundingRect) {\n applyPaddingEnd(inputElement, endBoundingRect.width, {\n slotEnd: true,\n });\n }\n }\n });\n });\n}\n\nexport function getAriaAttributesForInput(\n component: IxInputFieldComponent\n): A11yAttributes {\n const inputAria: A11yAttributes = {\n 'aria-invalid': `${a11yBoolean(component.isInvalid)}`,\n 'aria-required': `${a11yBoolean(component.required)}`,\n };\n\n if (component.isInvalid && component.invalidText) {\n inputAria['aria-errormessage'] = component.invalidText;\n }\n return inputAria;\n}\n\nexport type DisposableChangesAndVisibilityObservers = () => void;\n\nexport const addDisposableChangesAndVisibilityObservers = (\n element: HTMLElement,\n callback: () => void\n): DisposableChangesAndVisibilityObservers => {\n const intersectionObserver = observeElementUntilVisible(element, callback);\n const mutationObserver = createMutationObserver(callback);\n\n mutationObserver.observe(element, {\n subtree: true,\n attributes: true,\n });\n\n return () => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n };\n};\n\nfunction observeElementUntilVisible(\n hostElement: HTMLElement,\n updateCallback: () => void\n): IntersectionObserver {\n const intersectionObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n updateCallback();\n }\n });\n });\n\n intersectionObserver.observe(hostElement);\n return intersectionObserver;\n}\n\nexport function handleSubmitOnEnterKeydown(\n event: KeyboardEvent,\n suppressSubmitOnEnter: boolean,\n form: HTMLFormElement | null | undefined\n) {\n if (suppressSubmitOnEnter || event.key !== 'Enter' || !form) {\n return;\n }\n\n event.preventDefault();\n const submitButton = form.querySelector<HTMLElement>(\n 'button[type=\"submit\"], ix-button[type=\"submit\"]'\n );\n\n if (submitButton) {\n form.requestSubmit(submitButton);\n }\n\n if (form.length === 1) {\n form.requestSubmit();\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { A11yAttributes } from '../utils/a11y';\nimport { handleSubmitOnEnterKeydown } from './input.util';\nimport { MakeRef } from '../utils/make-ref';\n\nexport function TextareaElement(\n props: Readonly<{\n resizeBehavior: 'both' | 'horizontal' | 'vertical' | 'none';\n textareaHeight?: string;\n textareaWidth?: string;\n textareaRows?: number;\n textareaCols?: number;\n disabled: boolean;\n readonly: boolean;\n maxLength?: number;\n minLength?: number;\n isInvalid: boolean;\n required: boolean;\n value: string;\n placeholder?: string;\n textAreaRef: (el: HTMLTextAreaElement | undefined) => void;\n valueChange: (value: string) => void;\n updateFormInternalValue: (value: string) => void;\n onBlur: () => void;\n ariaAttributes?: A11yAttributes;\n }>\n) {\n return (\n <textarea\n readOnly={props.readonly}\n disabled={props.disabled}\n maxLength={props.maxLength}\n minLength={props.minLength}\n cols={props.textareaCols}\n rows={props.textareaRows}\n ref={props.textAreaRef}\n class={{\n 'is-invalid': props.isInvalid,\n }}\n required={props.required}\n value={props.value}\n placeholder={props.placeholder}\n onInput={(inputEvent) => {\n const target = inputEvent.target as HTMLInputElement;\n props.updateFormInternalValue(target.value);\n props.valueChange(target.value);\n }}\n onBlur={() => props.onBlur()}\n style={{\n resize: props.resizeBehavior,\n height: props.textareaHeight,\n width: props.textareaWidth,\n }}\n {...props.ariaAttributes}\n ></textarea>\n );\n}\n\nexport function InputElement(\n props: Readonly<{\n id: string;\n disabled: boolean;\n readonly: boolean;\n maxLength?: string | number;\n minLength?: string | number;\n max?: string | number;\n min?: string | number;\n step?: string | number;\n pattern?: string;\n type: string;\n isInvalid: boolean;\n required: boolean;\n value: string | number;\n placeholder?: string;\n textAlignment?: 'start' | 'end';\n inputRef: (el: HTMLInputElement | undefined) => void;\n onKeyPress: (event: KeyboardEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onBeforeInput?: (event: InputEvent) => void;\n onPaste?: (event: ClipboardEvent) => void;\n valueChange: (value: string) => void;\n updateFormInternalValue: (value: string) => void;\n onBlur: () => void;\n ariaAttributes?: A11yAttributes;\n form?: HTMLFormElement;\n suppressSubmitOnEnter?: boolean;\n }>\n) {\n return (\n <input\n id={props.id}\n autoComplete=\"off\"\n readOnly={props.readonly}\n disabled={props.disabled}\n step={props.step}\n min={props.min}\n max={props.max}\n maxLength={props.maxLength ? Number(props.maxLength) : undefined}\n minLength={props.minLength ? Number(props.minLength) : undefined}\n ref={props.inputRef}\n pattern={props.pattern}\n type={props.type}\n class={{\n 'is-invalid': props.isInvalid,\n }}\n style={{\n textAlign: props.textAlignment,\n }}\n required={props.required}\n value={props.value}\n placeholder={props.placeholder}\n onKeyPress={(event) => props.onKeyPress(event)}\n onKeyDown={(e) => {\n props.onKeyDown?.(e);\n handleSubmitOnEnterKeydown(\n e,\n !!props.suppressSubmitOnEnter,\n props.form\n );\n }}\n {...({\n onBeforeInput: (event: InputEvent) => props.onBeforeInput?.(event),\n } as any)}\n onPaste={(event) => props.onPaste?.(event)}\n onInput={(inputEvent) => {\n const target = inputEvent.target as HTMLInputElement;\n props.updateFormInternalValue(target.value);\n props.valueChange(target.value);\n }}\n onBlur={() => props.onBlur()}\n {...props.ariaAttributes}\n ></input>\n );\n}\n\nexport const SlotEnd: FunctionalComponent<{\n slotEndRef: MakeRef<HTMLDivElement>;\n onSlotChange?: (e: Event) => void;\n}> = (props, children) => {\n return (\n <div class=\"end-container\" ref={props.slotEndRef}>\n <slot name=\"end\" onSlotchange={props.onSlotChange}></slot>\n {children}\n </div>\n );\n};\n\nexport const SlotStart: FunctionalComponent<{\n slotStartRef: MakeRef<HTMLDivElement>;\n onSlotChange?: (e: Event) => void;\n}> = (props) => {\n return (\n <div class=\"start-container\" ref={props.slotStartRef}>\n <slot name=\"start\" onSlotchange={props.onSlotChange}></slot>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.fc-KJF8Z9iJ.js","sources":["src/components/input/input.animation.ts","src/components/input/input.util.ts","src/components/input/input.fc.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { animate } from 'animejs';\nimport Animation from '../utils/animation';\n\nexport function shakeInput(input: HTMLInputElement) {\n const xMax = 5;\n animate(input, {\n duration: Animation.defaultTime,\n easing: 'easeInOutSine',\n loop: 2,\n translateX: [\n {\n value: xMax * -1,\n },\n {\n value: xMax,\n },\n {\n value: xMax / -2,\n },\n {\n value: xMax / 2,\n },\n {\n value: 0,\n },\n ],\n });\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { A11yAttributes, a11yBoolean } from '../utils/a11y';\nimport {\n IxFormComponent,\n IxInputFieldComponent,\n ValidationResults,\n shouldSuppressInternalValidation,\n} from '../utils/input';\nimport { createMutationObserver } from '../utils/mutation-observer';\nimport { convertToRemString } from '../utils/rwd.util';\nimport { generateUUID } from '../utils/uuid';\nimport { shakeInput } from './input.animation';\n\nexport function createIdIfNotExists(\n element: IxFormComponent,\n idPrefix: string = 'input'\n) {\n return element.hasAttribute('id')\n ? element.getAttribute('id')\n : `${idPrefix}-${generateUUID()}`;\n}\n\nexport function mapValidationResult<T>(\n ref: IxInputFieldComponent<T>,\n result: ValidationResults\n) {\n ref.isInvalid = result.isInvalid || result.isInvalidByRequired;\n ref.isValid = result.isValid;\n ref.isInfo = result.isInfo;\n ref.isWarning = result.isWarning;\n}\n\nexport function checkAllowedKeys<T>(\n comp: IxInputFieldComponent<T>,\n event: KeyboardEvent\n) {\n if (comp.allowedCharactersPattern) {\n const regex = new RegExp(comp.allowedCharactersPattern);\n if (!regex.test(event.key)) {\n event.preventDefault();\n shakeInput(comp.inputRef.current);\n }\n }\n}\n\nexport async function checkInternalValidity<T>(\n comp: IxFormComponent<T>,\n input: HTMLInputElement | HTMLTextAreaElement\n) {\n const validityState = input.validity;\n const currentValidityState = !comp.hostElement.classList.contains(\n 'ix-invalid--validity-invalid'\n );\n const newValidityState = validityState.valid;\n\n if (currentValidityState !== newValidityState) {\n const eventResult = comp.validityStateChange.emit(validityState);\n if (eventResult.defaultPrevented) {\n return;\n }\n }\n\n if (comp.value === null || comp.value === undefined) {\n return;\n }\n\n const skipValidation = await shouldSuppressInternalValidation(comp);\n if (skipValidation) {\n return;\n }\n\n const { valid } = validityState;\n comp.hostElement.classList.toggle('ix-invalid--validity-invalid', !valid);\n}\n\nexport function onInputBlur<T>(\n comp: IxFormComponent<T>,\n input?: HTMLInputElement | HTMLTextAreaElement | null\n) {\n comp.ixBlur.emit();\n\n if (!input) {\n throw new Error('Input element is not available');\n }\n\n input.setAttribute('data-ix-touched', 'true');\n checkInternalValidity(comp, input);\n}\n\nexport function applyPaddingEnd(\n inputElement: HTMLElement | null,\n width: number,\n options: {\n slotEnd: boolean;\n additionalPaddingRight?: string;\n }\n) {\n if (!inputElement) {\n return;\n }\n\n const remInPixels = 16;\n const padding = convertToRemString(width + remInPixels / 2);\n\n if (options.slotEnd) {\n inputElement.style.paddingRight = `calc(${padding} + ${\n options.additionalPaddingRight ?? '0rem'\n })`;\n } else {\n inputElement.style.paddingLeft = padding;\n }\n}\n\nexport function adjustPaddingForStartAndEnd(\n startElement: HTMLElement | null,\n endElement: HTMLElement | null,\n inputElement: HTMLElement | null\n) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (startElement) {\n const startBoundingRect = startElement.getBoundingClientRect();\n if (startBoundingRect) {\n applyPaddingEnd(inputElement, startBoundingRect.width, {\n slotEnd: false,\n });\n }\n }\n\n if (endElement) {\n const endBoundingRect = endElement.getBoundingClientRect();\n if (endBoundingRect) {\n applyPaddingEnd(inputElement, endBoundingRect.width, {\n slotEnd: true,\n });\n }\n }\n });\n });\n}\n\nexport function getAriaAttributesForInput(\n component: IxInputFieldComponent\n): A11yAttributes {\n const inputAria: A11yAttributes = {\n 'aria-invalid': `${a11yBoolean(component.isInvalid)}`,\n 'aria-required': `${a11yBoolean(component.required)}`,\n };\n\n if (component.isInvalid && component.invalidText) {\n inputAria['aria-errormessage'] = component.invalidText;\n }\n return inputAria;\n}\n\nexport type DisposableChangesAndVisibilityObservers = () => void;\n\nexport const addDisposableChangesAndVisibilityObservers = (\n element: HTMLElement,\n callback: () => void\n): DisposableChangesAndVisibilityObservers => {\n const intersectionObserver = observeElementUntilVisible(element, callback);\n const mutationObserver = createMutationObserver(callback);\n\n mutationObserver.observe(element, {\n subtree: true,\n attributes: true,\n });\n\n return () => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n };\n};\n\nfunction observeElementUntilVisible(\n hostElement: HTMLElement,\n updateCallback: () => void\n): IntersectionObserver {\n const intersectionObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n updateCallback();\n }\n });\n });\n\n intersectionObserver.observe(hostElement);\n return intersectionObserver;\n}\n\nexport function handleSubmitOnEnterKeydown(\n event: KeyboardEvent,\n suppressSubmitOnEnter: boolean,\n form: HTMLFormElement | null | undefined\n) {\n if (suppressSubmitOnEnter || event.key !== 'Enter' || !form) {\n return;\n }\n\n event.preventDefault();\n const submitButton = form.querySelector<HTMLElement>(\n 'button[type=\"submit\"], ix-button[type=\"submit\"]'\n );\n\n if (submitButton) {\n form.requestSubmit(submitButton);\n }\n\n if (form.length === 1) {\n form.requestSubmit();\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { A11yAttributes } from '../utils/a11y';\nimport { handleSubmitOnEnterKeydown } from './input.util';\nimport { MakeRef } from '../utils/make-ref';\n\nexport function TextareaElement(\n props: Readonly<{\n resizeBehavior: 'both' | 'horizontal' | 'vertical' | 'none';\n textareaHeight?: string;\n textareaWidth?: string;\n textareaRows?: number;\n textareaCols?: number;\n disabled: boolean;\n readonly: boolean;\n maxLength?: number;\n minLength?: number;\n isInvalid: boolean;\n required: boolean;\n value: string;\n placeholder?: string;\n textAreaRef: (el: HTMLTextAreaElement | undefined) => void;\n valueChange: (value: string) => void;\n updateFormInternalValue: (value: string) => void;\n onBlur: () => void;\n ariaAttributes?: A11yAttributes;\n }>\n) {\n return (\n <textarea\n readOnly={props.readonly}\n disabled={props.disabled}\n maxLength={props.maxLength}\n minLength={props.minLength}\n cols={props.textareaCols}\n rows={props.textareaRows}\n ref={props.textAreaRef}\n class={{\n 'is-invalid': props.isInvalid,\n }}\n required={props.required}\n value={props.value}\n placeholder={props.placeholder}\n onInput={(inputEvent) => {\n const target = inputEvent.target as HTMLInputElement;\n props.updateFormInternalValue(target.value);\n props.valueChange(target.value);\n }}\n onBlur={() => props.onBlur()}\n style={{\n resize: props.resizeBehavior,\n height: props.textareaHeight,\n width: props.textareaWidth,\n }}\n {...props.ariaAttributes}\n ></textarea>\n );\n}\n\nexport function InputElement(\n props: Readonly<{\n id: string;\n disabled: boolean;\n readonly: boolean;\n maxLength?: string | number;\n minLength?: string | number;\n max?: string | number;\n min?: string | number;\n step?: string | number;\n pattern?: string;\n type: string;\n isInvalid: boolean;\n required: boolean;\n value: string | number;\n placeholder?: string;\n textAlignment?: 'start' | 'end';\n inputRef: (el: HTMLInputElement | undefined) => void;\n onKeyPress: (event: KeyboardEvent) => void;\n onKeyDown?: (event: KeyboardEvent) => void;\n onBeforeInput?: (event: InputEvent) => void;\n onPaste?: (event: ClipboardEvent) => void;\n valueChange: (value: string) => void;\n updateFormInternalValue: (value: string) => void;\n onBlur: () => void;\n ariaAttributes?: A11yAttributes;\n form?: HTMLFormElement;\n suppressSubmitOnEnter?: boolean;\n }>\n) {\n return (\n <input\n id={props.id}\n autoComplete=\"off\"\n readOnly={props.readonly}\n disabled={props.disabled}\n step={props.step}\n min={props.min}\n max={props.max}\n maxLength={props.maxLength ? Number(props.maxLength) : undefined}\n minLength={props.minLength ? Number(props.minLength) : undefined}\n ref={props.inputRef}\n pattern={props.pattern}\n type={props.type}\n class={{\n 'is-invalid': props.isInvalid,\n }}\n style={{\n textAlign: props.textAlignment,\n }}\n required={props.required}\n value={props.value}\n placeholder={props.placeholder}\n onKeyPress={(event) => props.onKeyPress(event)}\n onKeyDown={(e) => {\n props.onKeyDown?.(e);\n handleSubmitOnEnterKeydown(\n e,\n !!props.suppressSubmitOnEnter,\n props.form\n );\n }}\n {...({\n onBeforeInput: (event: InputEvent) => props.onBeforeInput?.(event),\n } as any)}\n onPaste={(event) => props.onPaste?.(event)}\n onInput={(inputEvent) => {\n const target = inputEvent.target as HTMLInputElement;\n props.updateFormInternalValue(target.value);\n props.valueChange(target.value);\n }}\n onBlur={() => props.onBlur()}\n {...props.ariaAttributes}\n ></input>\n );\n}\n\nexport const SlotEnd: FunctionalComponent<{\n slotEndRef: MakeRef<HTMLDivElement>;\n onSlotChange?: (e: Event) => void;\n}> = (props, children) => {\n return (\n <div class=\"end-container\" ref={props.slotEndRef}>\n <slot name=\"end\" onSlotchange={props.onSlotChange}></slot>\n {children}\n </div>\n );\n};\n\nexport const SlotStart: FunctionalComponent<{\n slotStartRef: MakeRef<HTMLDivElement>;\n onSlotChange?: (e: Event) => void;\n}> = (props) => {\n return (\n <div class=\"start-container\" ref={props.slotStartRef}>\n <slot name=\"start\" onSlotchange={props.onSlotChange}></slot>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement } from './index-CtoreFVF.js';
2
- import { H as HookValidationLifecycle } from './validation-D_dk-JqT.js';
2
+ import { H as HookValidationLifecycle } from './validation-LJh16vt2.js';
3
3
  import { m as makeRef } from './make-ref-bcj7UEIC.js';
4
4
 
5
5
  const checkboxGroupCss = ":host{display:inline-block;position:relative}:host .checkbox-container{display:flex;flex-direction:column;gap:1rem;margin:0.375rem 0;flex-wrap:wrap}:host .checkbox-container.row-layout{flex-direction:row}";
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, F as Fragment, H as Host, g as getElement } from './index-CtoreFVF.js';
2
2
  import { a as a11yBoolean } from './a11y-Bb7pDeaQ.js';
3
- import { H as HookValidationLifecycle } from './validation-D_dk-JqT.js';
3
+ import { H as HookValidationLifecycle } from './validation-LJh16vt2.js';
4
4
  import { m as makeRef } from './make-ref-bcj7UEIC.js';
5
5
 
6
6
  const checkboxCss = ":host{--ix-checkbox-check-color:var(--theme-color-primary--contrast);display:inline-block;position:relative}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}@-moz-document url-prefix(){:host *{scrollbar-color:var(--theme-scrollbar-thumb--background) var(--theme-scrollbar-track--background);scrollbar-width:thin}}:host{}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host{}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host{}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host{}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host button{all:unset;display:inline-flex;position:relative;align-items:center;justify-content:center;width:1.125rem;min-width:1.125rem;max-width:1.125rem;height:1.125rem;min-height:1.125rem;max-height:1.125rem;margin-right:0.5rem}:host button:disabled{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host button:focus-visible{outline:0.0625rem solid var(--theme-color-focus-bdr);outline-offset:var(--theme-checkbox--focus--outline-offset)}:host input[type=checkbox]{display:none}:host label{display:flex;justify-content:flex-start;align-items:flex-start;width:100%;height:100%}:host ix-typography{margin-top:0.125rem}:host button{background-color:var(--theme-checkbox-unchecked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color)}:host(:hover) button{background-color:var(--theme-checkbox-unchecked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--hover)}:host(:active) button{background-color:var(--theme-checkbox-unchecked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--active)}:host(.checked) button,:host(.indeterminate) button{background-color:var(--theme-checkbox-checked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color)}:host(.checked:hover) button,:host(.indeterminate:hover) button{background-color:var(--theme-checkbox-checked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--hover)}:host(.checked:active) button,:host(.indeterminate:active) button{background-color:var(--theme-checkbox-checked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--active)}:host(.disabled) button{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host(.checked.disabled) button,:host(.indeterminate.disabled) button{background-color:var(--theme-checkbox-checked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--disabled)}:host(.ix-info) button{--theme-checkbox-unchecked--background:var(\n --theme-checkbox-unchecked--background--info\n );--theme-checkbox-unchecked--background--hover:var(\n --theme-checkbox-unchecked--background--info--hover\n );--theme-checkbox-unchecked--background--active:var(\n --theme-checkbox-unchecked--background--info--active\n );--theme-checkbox-unchecked--border-color:var(\n --theme-checkbox-unchecked--border-color--info\n );--theme-checkbox-unchecked--border-color--hover:var(\n --theme-checkbox-unchecked--border-color--info--hover\n );--theme-checkbox-unchecked--border-color--active:var(\n --theme-checkbox-unchecked--border-color--info--active\n );--theme-checkbox-checked--background:var(\n --theme-checkbox-checked--background--info\n );--theme-checkbox-checked--background--hover:var(\n --theme-checkbox-checked--background--info--hover\n );--theme-checkbox-checked--background--active:var(\n --theme-checkbox-checked--background--info--active\n );--theme-checkbox-checked--border-color:var(\n --theme-checkbox-checked--border-color--info\n );--theme-checkbox-checked--border-color--hover:var(\n --theme-checkbox-checked--border-color--info--hover\n );--theme-checkbox-checked--border-color--active:var(\n --theme-checkbox-checked--border-color--info--active\n );--theme-checkbox-mixed--background:var(\n --theme-checkbox-mixed--background--info\n );--theme-checkbox-mixed--background--hover:var(\n --theme-checkbox-mixed--background--info--hover\n );--theme-checkbox-mixed--background--active:var(\n --theme-checkbox-mixed--background--info--active\n );--theme-checkbox-mixed--border-color:var(\n --theme-checkbox-mixed--border-color--info\n );--theme-checkbox-mixed--border-color--hover:var(\n --theme-checkbox-mixed--border-color--info--hover\n );--theme-checkbox-mixed--border-color--active:var(\n --theme-checkbox-mixed--border-color--info--active\n );background-color:var(--theme-checkbox-unchecked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color)}:host(.ix-info:hover) button{background-color:var(--theme-checkbox-unchecked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--hover)}:host(.ix-info:active) button{background-color:var(--theme-checkbox-unchecked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--active)}:host(.ix-info.checked) button,:host(.ix-info.indeterminate) button{background-color:var(--theme-checkbox-checked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color)}:host(.ix-info.checked:hover) button,:host(.ix-info.indeterminate:hover) button{background-color:var(--theme-checkbox-checked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--hover)}:host(.ix-info.checked:active) button,:host(.ix-info.indeterminate:active) button{background-color:var(--theme-checkbox-checked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--active)}:host(.ix-info.disabled) button{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host(.ix-info.checked.disabled) button,:host(.ix-info.indeterminate.disabled) button{background-color:var(--theme-checkbox-checked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--disabled)}:host(.ix-warning) button{--theme-checkbox-unchecked--background:var(\n --theme-checkbox-unchecked--background--warning\n );--theme-checkbox-unchecked--background--hover:var(\n --theme-checkbox-unchecked--background--warning--hover\n );--theme-checkbox-unchecked--background--active:var(\n --theme-checkbox-unchecked--background--warning--active\n );--theme-checkbox-unchecked--border-color:var(\n --theme-checkbox-unchecked--border-color--warning\n );--theme-checkbox-unchecked--border-color--hover:var(\n --theme-checkbox-unchecked--border-color--warning--hover\n );--theme-checkbox-unchecked--border-color--active:var(\n --theme-checkbox-unchecked--border-color--warning--active\n );--theme-checkbox-checked--background:var(\n --theme-checkbox-checked--background--warning\n );--theme-checkbox-checked--background--hover:var(\n --theme-checkbox-checked--background--warning--hover\n );--theme-checkbox-checked--background--active:var(\n --theme-checkbox-checked--background--warning--active\n );--theme-checkbox-checked--border-color:var(\n --theme-checkbox-checked--border-color--warning\n );--theme-checkbox-checked--border-color--hover:var(\n --theme-checkbox-checked--border-color--warning--hover\n );--theme-checkbox-checked--border-color--active:var(\n --theme-checkbox-checked--border-color--warning--active\n );--theme-checkbox-mixed--background:var(\n --theme-checkbox-mixed--background--warning\n );--theme-checkbox-mixed--background--hover:var(\n --theme-checkbox-mixed--background--warning--hover\n );--theme-checkbox-mixed--background--active:var(\n --theme-checkbox-mixed--background--warning--active\n );--theme-checkbox-mixed--border-color:var(\n --theme-checkbox-mixed--border-color--warning\n );--theme-checkbox-mixed--border-color--hover:var(\n --theme-checkbox-mixed--border-color--warning--hover\n );--theme-checkbox-mixed--border-color--active:var(\n --theme-checkbox-mixed--border-color--warning--active\n );background-color:var(--theme-checkbox-unchecked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color)}:host(.ix-warning:hover) button{background-color:var(--theme-checkbox-unchecked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--hover)}:host(.ix-warning:active) button{background-color:var(--theme-checkbox-unchecked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--active)}:host(.ix-warning.checked) button,:host(.ix-warning.indeterminate) button{background-color:var(--theme-checkbox-checked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color)}:host(.ix-warning.checked:hover) button,:host(.ix-warning.indeterminate:hover) button{background-color:var(--theme-checkbox-checked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--hover)}:host(.ix-warning.checked:active) button,:host(.ix-warning.indeterminate:active) button{background-color:var(--theme-checkbox-checked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--active)}:host(.ix-warning.disabled) button{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host(.ix-warning.checked.disabled) button,:host(.ix-warning.indeterminate.disabled) button{background-color:var(--theme-checkbox-checked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--disabled)}:host(.ix-invalid--required) button{--theme-checkbox-unchecked--background:var(\n --theme-checkbox-unchecked--background--invalid\n );--theme-checkbox-unchecked--background--hover:var(\n --theme-checkbox-unchecked--background--invalid--hover\n );--theme-checkbox-unchecked--background--active:var(\n --theme-checkbox-unchecked--background--invalid--active\n );--theme-checkbox-unchecked--border-color:var(\n --theme-checkbox-unchecked--border-color--invalid\n );--theme-checkbox-unchecked--border-color--hover:var(\n --theme-checkbox-unchecked--border-color--invalid--hover\n );--theme-checkbox-unchecked--border-color--active:var(\n --theme-checkbox-unchecked--border-color--invalid--active\n );--theme-checkbox-checked--background:var(\n --theme-checkbox-checked--background--invalid\n );--theme-checkbox-checked--background--hover:var(\n --theme-checkbox-checked--background--invalid--hover\n );--theme-checkbox-checked--background--active:var(\n --theme-checkbox-checked--background--invalid--active\n );--theme-checkbox-checked--border-color:var(\n --theme-checkbox-checked--border-color--invalid\n );--theme-checkbox-checked--border-color--hover:var(\n --theme-checkbox-checked--border-color--invalid--hover\n );--theme-checkbox-checked--border-color--active:var(\n --theme-checkbox-checked--border-color--invalid--active\n );--theme-checkbox-mixed--background:var(\n --theme-checkbox-mixed--background--invalid\n );--theme-checkbox-mixed--background--hover:var(\n --theme-checkbox-mixed--background--invalid--hover\n );--theme-checkbox-mixed--background--active:var(\n --theme-checkbox-mixed--background--invalid--active\n );--theme-checkbox-mixed--border-color:var(\n --theme-checkbox-mixed--border-color--invalid\n );--theme-checkbox-mixed--border-color--hover:var(\n --theme-checkbox-mixed--border-color--invalid--hover\n );--theme-checkbox-mixed--border-color--active:var(\n --theme-checkbox-mixed--border-color--invalid--active\n );background-color:var(--theme-checkbox-unchecked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color)}:host(.ix-invalid--required:hover) button{background-color:var(--theme-checkbox-unchecked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--hover)}:host(.ix-invalid--required:active) button{background-color:var(--theme-checkbox-unchecked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--active)}:host(.ix-invalid--required.checked) button,:host(.ix-invalid--required.indeterminate) button{background-color:var(--theme-checkbox-checked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color)}:host(.ix-invalid--required.checked:hover) button,:host(.ix-invalid--required.indeterminate:hover) button{background-color:var(--theme-checkbox-checked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--hover)}:host(.ix-invalid--required.checked:active) button,:host(.ix-invalid--required.indeterminate:active) button{background-color:var(--theme-checkbox-checked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--active)}:host(.ix-invalid--required.disabled) button{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host(.ix-invalid--required.checked.disabled) button,:host(.ix-invalid--required.indeterminate.disabled) button{background-color:var(--theme-checkbox-checked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--disabled)}:host(.ix-invalid) button{--theme-checkbox-unchecked--background:var(\n --theme-checkbox-unchecked--background--invalid\n );--theme-checkbox-unchecked--background--hover:var(\n --theme-checkbox-unchecked--background--invalid--hover\n );--theme-checkbox-unchecked--background--active:var(\n --theme-checkbox-unchecked--background--invalid--active\n );--theme-checkbox-unchecked--border-color:var(\n --theme-checkbox-unchecked--border-color--invalid\n );--theme-checkbox-unchecked--border-color--hover:var(\n --theme-checkbox-unchecked--border-color--invalid--hover\n );--theme-checkbox-unchecked--border-color--active:var(\n --theme-checkbox-unchecked--border-color--invalid--active\n );--theme-checkbox-checked--background:var(\n --theme-checkbox-checked--background--invalid\n );--theme-checkbox-checked--background--hover:var(\n --theme-checkbox-checked--background--invalid--hover\n );--theme-checkbox-checked--background--active:var(\n --theme-checkbox-checked--background--invalid--active\n );--theme-checkbox-checked--border-color:var(\n --theme-checkbox-checked--border-color--invalid\n );--theme-checkbox-checked--border-color--hover:var(\n --theme-checkbox-checked--border-color--invalid--hover\n );--theme-checkbox-checked--border-color--active:var(\n --theme-checkbox-checked--border-color--invalid--active\n );--theme-checkbox-mixed--background:var(\n --theme-checkbox-mixed--background--invalid\n );--theme-checkbox-mixed--background--hover:var(\n --theme-checkbox-mixed--background--invalid--hover\n );--theme-checkbox-mixed--background--active:var(\n --theme-checkbox-mixed--background--invalid--active\n );--theme-checkbox-mixed--border-color:var(\n --theme-checkbox-mixed--border-color--invalid\n );--theme-checkbox-mixed--border-color--hover:var(\n --theme-checkbox-mixed--border-color--invalid--hover\n );--theme-checkbox-mixed--border-color--active:var(\n --theme-checkbox-mixed--border-color--invalid--active\n );background-color:var(--theme-checkbox-unchecked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color)}:host(.ix-invalid:hover) button{background-color:var(--theme-checkbox-unchecked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--hover)}:host(.ix-invalid:active) button{background-color:var(--theme-checkbox-unchecked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--active)}:host(.ix-invalid.checked) button,:host(.ix-invalid.indeterminate) button{background-color:var(--theme-checkbox-checked--background);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color)}:host(.ix-invalid.checked:hover) button,:host(.ix-invalid.indeterminate:hover) button{background-color:var(--theme-checkbox-checked--background--hover);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--hover)}:host(.ix-invalid.checked:active) button,:host(.ix-invalid.indeterminate:active) button{background-color:var(--theme-checkbox-checked--background--active);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--active)}:host(.ix-invalid.disabled) button{background-color:var(--theme-checkbox-unchecked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-unchecked--border-color--disabled)}:host(.ix-invalid.checked.disabled) button,:host(.ix-invalid.indeterminate.disabled) button{background-color:var(--theme-checkbox-checked--background--disabled);border:var(--theme-checkbox--border-thickness) solid var(--theme-checkbox-checked--border-color--disabled)}:host(.disabled){pointer-events:none}:host(.disabled) button,:host(.disabled) label,:host(.disabled) input{pointer-events:none}";
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement } from './index-CtoreFVF.js';
2
- import { H as HookValidationLifecycle } from './validation-D_dk-JqT.js';
2
+ import { H as HookValidationLifecycle } from './validation-LJh16vt2.js';
3
3
 
4
4
  const customFieldCss = ":host{display:block;width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content}";
5
5
 
@@ -1,8 +1,8 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-CtoreFVF.js';
2
2
  import { o as iconCalendar } from './index-8HpPmDK_.js';
3
3
  import { D as DateTime } from './datetime-bDicGJUN.js';
4
- import { a as addDisposableChangesAndVisibilityObservers, b as adjustPaddingForStartAndEnd, h as handleSubmitOnEnterKeydown, S as SlotEnd, c as SlotStart } from './input.fc-CQbX6V05.js';
5
- import { H as HookValidationLifecycle, c as createClassMutationObserver } from './validation-D_dk-JqT.js';
4
+ import { a as addDisposableChangesAndVisibilityObservers, b as adjustPaddingForStartAndEnd, h as handleSubmitOnEnterKeydown, S as SlotEnd, c as SlotStart } from './input.fc-KJF8Z9iJ.js';
5
+ import { H as HookValidationLifecycle, c as createClassMutationObserver, g as getValidationText } from './validation-LJh16vt2.js';
6
6
  import { m as makeRef } from './make-ref-bcj7UEIC.js';
7
7
  import { h as handleIconClick, o as openDropdown, c as closeDropdown, a as createValidityState } from './picker-input.util-D1uMJUKN.js';
8
8
  import './a11y-Bb7pDeaQ.js';
@@ -257,15 +257,13 @@ const DateInput = class {
257
257
  }
258
258
  render() {
259
259
  var _a;
260
- const invalidText = this.isInputInvalid
261
- ? this.i18nErrorDateUnparsable
262
- : this.invalidText;
263
- return (h(Host, { key: '011a0643000de99532a82efcecdcc48d20a817e1', class: {
260
+ const invalidText = getValidationText(this.isInputInvalid, this.invalidText, this.i18nErrorDateUnparsable);
261
+ return (h(Host, { key: '4a7f986c62a82763e46faa0203a5b6ff82415aaf', class: {
264
262
  disabled: this.disabled,
265
263
  readonly: this.readonly,
266
- } }, h("ix-field-wrapper", { key: '08411e49b366d385cb96355bd4bd869d70bcee34', label: this.label, helperText: this.helperText, isInvalid: this.isInvalid, invalidText: invalidText, infoText: this.infoText, isInfo: this.isInfo, isWarning: this.isWarning, warningText: this.warningText, isValid: this.isValid, validText: this.validText, showTextAsTooltip: this.showTextAsTooltip, required: this.required, controlRef: this.inputElementRef }, this.renderInput()), h("ix-dropdown", { key: 'b471b5b81f4b4ad45a9403d54be147658f3b3e42', "data-testid": "date-dropdown", trigger: this.inputElementRef.waitForCurrent(), ref: this.dropdownElementRef, closeBehavior: "outside", suppressOverflowBehavior: true, show: this.show, onShowChanged: (event) => {
264
+ } }, h("ix-field-wrapper", { key: 'c366d9ef3a538fd71e8d0f33d305e46da824421e', label: this.label, helperText: this.helperText, isInvalid: this.isInvalid, invalidText: invalidText, infoText: this.infoText, isInfo: this.isInfo, isWarning: this.isWarning, warningText: this.warningText, isValid: this.isValid, validText: this.validText, showTextAsTooltip: this.showTextAsTooltip, required: this.required, controlRef: this.inputElementRef }, this.renderInput()), h("ix-dropdown", { key: '6f10990b1e667f0e079f951d920707c15e24e50e', "data-testid": "date-dropdown", trigger: this.inputElementRef.waitForCurrent(), ref: this.dropdownElementRef, closeBehavior: "outside", suppressOverflowBehavior: true, show: this.show, onShowChanged: (event) => {
267
265
  this.show = event.detail;
268
- } }, h("ix-date-picker", { key: '24ca8c4f0301ec042f13401e80463e85aa8a5d44', ref: this.datepickerRef, format: this.format, locale: this.locale, singleSelection: true, from: (_a = this.from) !== null && _a !== void 0 ? _a : '', minDate: this.minDate, maxDate: this.maxDate, onDateChange: (event) => {
266
+ } }, h("ix-date-picker", { key: 'df14f590271c8177fa10360e72b0338088ed79be', ref: this.datepickerRef, format: this.format, locale: this.locale, singleSelection: true, from: (_a = this.from) !== null && _a !== void 0 ? _a : '', minDate: this.minDate, maxDate: this.maxDate, onDateChange: (event) => {
269
267
  const { from } = event.detail;
270
268
  this.onInput(from);
271
269
  }, showWeekNumbers: this.showWeekNumbers, ariaLabelNextMonthButton: this.ariaLabelNextMonthButton, ariaLabelPreviousMonthButton: this.ariaLabelPreviousMonthButton, embedded: true }))));