@ukic/canary-web-components 3.0.0-canary.33 → 3.0.0-canary.34

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 (200) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/helpers-f81fed28.js.map +1 -1
  3. package/dist/cjs/ic-alert.cjs.entry.js +6 -2
  4. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ic-button_3.cjs.entry.js +28 -16
  6. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-checkbox-group.cjs.entry.js +23 -2
  8. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +3 -4
  12. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-menu.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-skeleton.cjs.entry.js +20 -5
  16. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-step.cjs.entry.js +16 -14
  18. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-stepper.cjs.entry.js +24 -4
  20. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-switch.cjs.entry.js +4 -4
  22. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  28. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-time-input.cjs.entry.js +7 -7
  32. package/dist/cjs/ic-time-input.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-time-selector.cjs.entry.js +50 -170
  34. package/dist/cjs/ic-time-selector.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-toast.cjs.entry.js +5 -5
  38. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-toggle-button_2.cjs.entry.js +4 -4
  40. package/dist/cjs/ic-toggle-button_2.cjs.entry.js.map +1 -1
  41. package/dist/cjs/loader.cjs.js +1 -1
  42. package/dist/collection/components/ic-time-input/ic-time-input.js +8 -8
  43. package/dist/collection/components/ic-time-input/ic-time-input.js.map +1 -1
  44. package/dist/collection/components/ic-time-input/ic-time-input.stories.js +4 -4
  45. package/dist/collection/components/ic-time-input/ic-time-input.stories.js.map +1 -1
  46. package/dist/collection/components/ic-time-selector/ic-time-selector.js +53 -200
  47. package/dist/collection/components/ic-time-selector/ic-time-selector.js.map +1 -1
  48. package/dist/collection/components/ic-time-selector/ic-time-selector.stories.js +50 -24
  49. package/dist/collection/components/ic-time-selector/ic-time-selector.stories.js.map +1 -1
  50. package/dist/collection/utils/types.js.map +1 -1
  51. package/dist/components/helpers2.js.map +1 -1
  52. package/dist/components/ic-alert.js +7 -2
  53. package/dist/components/ic-alert.js.map +1 -1
  54. package/dist/components/ic-button2.js +4 -4
  55. package/dist/components/ic-button2.js.map +1 -1
  56. package/dist/components/ic-checkbox-group.js +24 -2
  57. package/dist/components/ic-checkbox-group.js.map +1 -1
  58. package/dist/components/ic-data-row.js +1 -1
  59. package/dist/components/ic-data-row.js.map +1 -1
  60. package/dist/components/ic-input-validation2.js +4 -5
  61. package/dist/components/ic-input-validation2.js.map +1 -1
  62. package/dist/components/ic-loading-indicator2.js +27 -13
  63. package/dist/components/ic-loading-indicator2.js.map +1 -1
  64. package/dist/components/ic-menu2.js +1 -1
  65. package/dist/components/ic-menu2.js.map +1 -1
  66. package/dist/components/ic-skeleton.js +23 -6
  67. package/dist/components/ic-skeleton.js.map +1 -1
  68. package/dist/components/ic-step.js +17 -15
  69. package/dist/components/ic-step.js.map +1 -1
  70. package/dist/components/ic-stepper.js +24 -4
  71. package/dist/components/ic-stepper.js.map +1 -1
  72. package/dist/components/ic-switch.js +4 -4
  73. package/dist/components/ic-switch.js.map +1 -1
  74. package/dist/components/ic-tab-context.js +1 -1
  75. package/dist/components/ic-tab-context.js.map +1 -1
  76. package/dist/components/ic-tab-group.js +2 -2
  77. package/dist/components/ic-tab-group.js.map +1 -1
  78. package/dist/components/ic-tab-panel.js +2 -2
  79. package/dist/components/ic-tab-panel.js.map +1 -1
  80. package/dist/components/ic-theme.js +1 -1
  81. package/dist/components/ic-theme.js.map +1 -1
  82. package/dist/components/ic-time-input.js +7 -7
  83. package/dist/components/ic-time-input.js.map +1 -1
  84. package/dist/components/ic-time-selector.js +50 -172
  85. package/dist/components/ic-time-selector.js.map +1 -1
  86. package/dist/components/ic-toast-region.js +1 -1
  87. package/dist/components/ic-toast-region.js.map +1 -1
  88. package/dist/components/ic-toast.js +5 -5
  89. package/dist/components/ic-toast.js.map +1 -1
  90. package/dist/components/ic-toggle-button-group2.js +2 -2
  91. package/dist/components/ic-toggle-button-group2.js.map +1 -1
  92. package/dist/components/ic-toggle-button2.js +2 -2
  93. package/dist/components/ic-toggle-button2.js.map +1 -1
  94. package/dist/core/core.esm.js +1 -1
  95. package/dist/core/core.esm.js.map +1 -1
  96. package/dist/core/{p-802a4bd3.entry.js → p-0bca234b.entry.js} +2 -2
  97. package/dist/core/{p-802a4bd3.entry.js.map → p-0bca234b.entry.js.map} +1 -1
  98. package/dist/core/{p-5254a078.entry.js → p-1be17f22.entry.js} +2 -2
  99. package/dist/core/{p-5254a078.entry.js.map → p-1be17f22.entry.js.map} +1 -1
  100. package/dist/core/{p-d528d856.entry.js → p-1dbefb37.entry.js} +2 -2
  101. package/dist/core/p-1dbefb37.entry.js.map +1 -0
  102. package/dist/core/{p-c9525aac.entry.js → p-409d03b2.entry.js} +2 -2
  103. package/dist/core/{p-c9525aac.entry.js.map → p-409d03b2.entry.js.map} +1 -1
  104. package/dist/core/p-492991ad.entry.js +2 -0
  105. package/dist/core/p-492991ad.entry.js.map +1 -0
  106. package/dist/core/p-53dad961.entry.js +2 -0
  107. package/dist/core/p-53dad961.entry.js.map +1 -0
  108. package/dist/core/{p-ad551a0c.entry.js → p-7c4d6b13.entry.js} +2 -2
  109. package/dist/core/p-7c4d6b13.entry.js.map +1 -0
  110. package/dist/core/{p-a88e61b2.entry.js → p-7d878ad7.entry.js} +2 -2
  111. package/dist/core/{p-a88e61b2.entry.js.map → p-7d878ad7.entry.js.map} +1 -1
  112. package/dist/core/p-829b34f9.js.map +1 -1
  113. package/dist/core/p-8d42a6e5.entry.js +2 -0
  114. package/dist/core/{p-a94a7b71.entry.js.map → p-8d42a6e5.entry.js.map} +1 -1
  115. package/dist/core/{p-e2e556ec.entry.js → p-a58cf6fd.entry.js} +2 -2
  116. package/dist/core/p-a58cf6fd.entry.js.map +1 -0
  117. package/dist/core/{p-53740194.entry.js → p-a8310dfd.entry.js} +2 -2
  118. package/dist/core/p-a8310dfd.entry.js.map +1 -0
  119. package/dist/core/{p-c32f043e.entry.js → p-b76fdade.entry.js} +2 -2
  120. package/dist/core/{p-c32f043e.entry.js.map → p-b76fdade.entry.js.map} +1 -1
  121. package/dist/core/{p-04cb17d7.entry.js → p-b9459ba2.entry.js} +2 -2
  122. package/dist/core/{p-04cb17d7.entry.js.map → p-b9459ba2.entry.js.map} +1 -1
  123. package/dist/core/p-bb3db366.entry.js +2 -0
  124. package/dist/core/p-bb3db366.entry.js.map +1 -0
  125. package/dist/core/p-bc6e5d64.entry.js +2 -0
  126. package/dist/core/p-bc6e5d64.entry.js.map +1 -0
  127. package/dist/core/{p-adde6c66.entry.js → p-d376858f.entry.js} +2 -2
  128. package/dist/core/{p-adde6c66.entry.js.map → p-d376858f.entry.js.map} +1 -1
  129. package/dist/core/{p-6323da7a.entry.js → p-dbd9a403.entry.js} +2 -2
  130. package/dist/core/{p-6323da7a.entry.js.map → p-dbd9a403.entry.js.map} +1 -1
  131. package/dist/core/p-df064c8b.entry.js +2 -0
  132. package/dist/core/p-df064c8b.entry.js.map +1 -0
  133. package/dist/core/p-eac60693.entry.js +2 -0
  134. package/dist/core/p-eac60693.entry.js.map +1 -0
  135. package/dist/esm/core.js +1 -1
  136. package/dist/esm/helpers-a08b3f32.js.map +1 -1
  137. package/dist/esm/ic-alert.entry.js +6 -2
  138. package/dist/esm/ic-alert.entry.js.map +1 -1
  139. package/dist/esm/ic-button_3.entry.js +28 -16
  140. package/dist/esm/ic-button_3.entry.js.map +1 -1
  141. package/dist/esm/ic-checkbox-group.entry.js +23 -2
  142. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  143. package/dist/esm/ic-data-row.entry.js +1 -1
  144. package/dist/esm/ic-data-row.entry.js.map +1 -1
  145. package/dist/esm/ic-input-component-container_4.entry.js +3 -4
  146. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -1
  147. package/dist/esm/ic-menu.entry.js +1 -1
  148. package/dist/esm/ic-menu.entry.js.map +1 -1
  149. package/dist/esm/ic-skeleton.entry.js +20 -5
  150. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  151. package/dist/esm/ic-step.entry.js +17 -15
  152. package/dist/esm/ic-step.entry.js.map +1 -1
  153. package/dist/esm/ic-stepper.entry.js +24 -4
  154. package/dist/esm/ic-stepper.entry.js.map +1 -1
  155. package/dist/esm/ic-switch.entry.js +4 -4
  156. package/dist/esm/ic-switch.entry.js.map +1 -1
  157. package/dist/esm/ic-tab-context.entry.js +1 -1
  158. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  159. package/dist/esm/ic-tab-group.entry.js +2 -2
  160. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  161. package/dist/esm/ic-tab-panel.entry.js +2 -2
  162. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  163. package/dist/esm/ic-theme.entry.js +1 -1
  164. package/dist/esm/ic-theme.entry.js.map +1 -1
  165. package/dist/esm/ic-time-input.entry.js +7 -7
  166. package/dist/esm/ic-time-input.entry.js.map +1 -1
  167. package/dist/esm/ic-time-selector.entry.js +50 -170
  168. package/dist/esm/ic-time-selector.entry.js.map +1 -1
  169. package/dist/esm/ic-toast-region.entry.js +1 -1
  170. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  171. package/dist/esm/ic-toast.entry.js +5 -5
  172. package/dist/esm/ic-toast.entry.js.map +1 -1
  173. package/dist/esm/ic-toggle-button_2.entry.js +4 -4
  174. package/dist/esm/ic-toggle-button_2.entry.js.map +1 -1
  175. package/dist/esm/loader.js +1 -1
  176. package/dist/types/components/ic-time-input/ic-time-input.d.ts +1 -1
  177. package/dist/types/components/ic-time-selector/ic-time-selector.d.ts +2 -10
  178. package/dist/types/components/ic-time-selector/ic-time-selector.stories.d.ts +48 -13
  179. package/dist/types/components.d.ts +6 -16
  180. package/dist/types/utils/types.d.ts +1 -2
  181. package/hydrate/index.js +208 -250
  182. package/hydrate/index.mjs +208 -250
  183. package/package.json +3 -3
  184. package/dist/core/p-53740194.entry.js.map +0 -1
  185. package/dist/core/p-71cc5909.entry.js +0 -2
  186. package/dist/core/p-71cc5909.entry.js.map +0 -1
  187. package/dist/core/p-8830011c.entry.js +0 -2
  188. package/dist/core/p-8830011c.entry.js.map +0 -1
  189. package/dist/core/p-939b168a.entry.js +0 -2
  190. package/dist/core/p-939b168a.entry.js.map +0 -1
  191. package/dist/core/p-a94a7b71.entry.js +0 -2
  192. package/dist/core/p-ad551a0c.entry.js.map +0 -1
  193. package/dist/core/p-b434bd7c.entry.js +0 -2
  194. package/dist/core/p-b434bd7c.entry.js.map +0 -1
  195. package/dist/core/p-d528d856.entry.js.map +0 -1
  196. package/dist/core/p-da1c2883.entry.js +0 -2
  197. package/dist/core/p-da1c2883.entry.js.map +0 -1
  198. package/dist/core/p-e2e556ec.entry.js.map +0 -1
  199. package/dist/core/p-eaeb473e.entry.js +0 -2
  200. package/dist/core/p-eaeb473e.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ic-time-selector.js","sourceRoot":"","sources":["../../../../../src/components/ic-time-selector/ic-time-selector.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n State,\n Prop,\n Event,\n EventEmitter,\n Host,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcDisableTimeSelection,\n IcSizes,\n IcThemeMode,\n IcTimeFormatSelector,\n} from \"../../utils/types\";\nimport { parseTimeHelper } from \"../../utils/helpers\";\nimport Check from \"../../assets/check-icon.svg\";\nimport Clear from \"../../assets/close-icon.svg\";\nimport { IcTimePeriods } from \"./ic-time-selector.types\";\n\nconst COLUMN_TYPES = [\"hour\", \"minute\", \"second\", \"period\"] as const;\nconst COLUMN_CLASS = \".ic-time-selector-column\";\nconst ITEM_CLASS = \".ic-time-selector-item\";\ntype ColumnType = typeof COLUMN_TYPES[number];\n\n@Component({\n tag: \"ic-time-selector\",\n styleUrl: \"ic-time-selector.css\",\n shadow: true,\n})\nexport class TimeSelector {\n private DEFAULT_TIME_FORMAT: IcTimeFormatSelector = \"HH:MM:SS\";\n private minutes: number[] = Array.from({ length: 60 }, (_, i) => i);\n private seconds: number[] = Array.from({ length: 60 }, (_, i) => i);\n private periods: IcTimePeriods[] = [\"AM\", \"PM\"];\n private minTime: Date | null = null;\n private maxTime: Date | null = null;\n private lastAnnouncedType?: ColumnType;\n private lastAnnouncedValue?: number | IcTimePeriods | null;\n\n @Element() el: HTMLIcTimeSelectorElement;\n\n @State() selectedHour?: number;\n @State() selectedMinute?: number;\n @State() selectedSecond?: number;\n @State() selectedPeriod?: IcTimePeriods;\n @State() ariaLiveMessage: string = \"\";\n\n /**\n * An array of times that will be disabled in the time selector. The times can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() disableTimes: IcDisableTimeSelection[] = [];\n\n /**\n * The earliest time that will be allowed. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() min: string | Date = \"\";\n @Watch(\"min\")\n watchMinHandler(): void {\n this.minTime = parseTimeHelper(this.min).date;\n }\n\n /**\n * The latest time that will be allowed. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() max: string | Date = \"\";\n @Watch(\"max\")\n watchMaxHandler(): void {\n this.maxTime = parseTimeHelper(this.max).date;\n }\n\n /**\n * The size of the time selector to be displayed.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The format in which the time will be displayed.\n */\n @Prop() timeFormat: IcTimeFormatSelector = this.DEFAULT_TIME_FORMAT;\n\n /**\n * The time period format: \"12\" for 12-hour, \"24\" for 24-hour. Defaults to \"24\".\n */\n @Prop() timePeriod: \"12\" | \"24\" = \"24\";\n\n /**\n * The value of the time selector. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n @Watch(\"value\")\n watchValueHandler(): void {\n this.setTime(this.value);\n setTimeout(() => {\n this.scrollSelectedItem(\"hour\");\n this.scrollSelectedItem(\"minute\");\n if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {\n this.scrollSelectedItem(\"second\");\n }\n if (this.timePeriod === \"12\") {\n this.scrollSelectedItem(\"period\");\n }\n }, 0);\n }\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{\n value: Date | null;\n timeString: string | null;\n timeObject: {\n hour: string | null;\n minute: string | null;\n second: string | null;\n period?: IcTimePeriods;\n };\n }>;\n\n componentWillLoad() {\n this.setTime(this.value);\n }\n\n componentDidLoad() {\n setTimeout(() => {\n if (this.selectedHour !== undefined && this.selectedHour !== null) {\n this.scrollSelectedItem(\"hour\");\n } else if (this.min) {\n this.scrollMinTime(\"hour\");\n }\n if (this.selectedMinute !== undefined && this.selectedMinute !== null) {\n this.scrollSelectedItem(\"minute\");\n } else if (this.min) {\n this.scrollMinTime(\"minute\");\n }\n if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {\n if (this.selectedSecond !== undefined && this.selectedSecond !== null) {\n this.scrollSelectedItem(\"second\");\n } else if (this.min) {\n this.scrollMinTime(\"second\");\n }\n }\n if (this.timePeriod === \"12\") {\n if (this.selectedPeriod !== undefined && this.selectedPeriod !== null) {\n this.scrollSelectedItem(\"period\");\n } else if (this.min) {\n this.scrollMinTime(\"period\");\n }\n }\n this.updateAriaLiveMessage();\n }, 0);\n }\n\n private getHeaderLabel(type: ColumnType): string {\n switch (type) {\n case \"hour\":\n return \"HH\";\n case \"minute\":\n return \"MM\";\n case \"second\":\n return \"SS\";\n default:\n return \"\";\n }\n }\n\n private setTimeParts = (hour: number, minute: number, second: number) => {\n let period: IcTimePeriods = \"AM\";\n if (this.timePeriod === \"12\") {\n if (hour === 0) {\n hour = 12;\n period = \"AM\";\n } else if (hour === 12) {\n period = \"PM\";\n } else if (hour > 12) {\n hour = hour - 12;\n period = \"PM\";\n } else {\n period = \"AM\";\n }\n this.selectedHour = hour;\n this.selectedPeriod = period;\n } else {\n this.selectedHour = hour;\n }\n this.selectedMinute = minute;\n this.selectedSecond = second;\n };\n\n private setTime(time?: string | Date | null) {\n if (time === null || time === undefined || time === \"\") {\n this.handleClear();\n return;\n }\n\n if (typeof time === \"string\") {\n const zuluMatch = time.match(\n /^([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\\.[0-9]{1,3})?Z?$/\n );\n if (zuluMatch) {\n this.setTimeParts(\n Number(zuluMatch[1]),\n Number(zuluMatch[2]),\n Number(zuluMatch[3])\n );\n } else {\n const parts = time.split(\":\");\n this.setTimeParts(\n Number(parts[0]) || 0,\n Number(parts[1]) || 0,\n Number(parts[2]) || 0\n );\n }\n } else {\n const { parts } = parseTimeHelper(time);\n if (parts) {\n this.setTimeParts(parts.hour, parts.minute, parts.second);\n }\n }\n }\n\n private renderScrollRows(count: number, keyPrefix = \"scroll-row\") {\n return Array.from({ length: count }).map((_, i) => {\n const isLast = keyPrefix.endsWith(\"bottom-spacer\")\n ? i === count - 1\n : false;\n return (\n <li\n class={{\n \"ic-time-selector-item\": true,\n \"ic-time-selector-scroll-row\": true,\n ...(isLast ? { \"ic-time-selector-scroll-row-last\": true } : {}),\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n key={`${keyPrefix}-${i}`}\n />\n );\n });\n }\n\n private scrollSelectedItem(colClass: ColumnType, clear?: boolean) {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n let colIdx = COLUMN_TYPES.indexOf(colClass);\n if (colClass === \"period\" && columns?.length) {\n colIdx = columns.length - 1;\n }\n const col = columns?.[colIdx];\n if (col) {\n const items = col.querySelectorAll(ITEM_CLASS);\n let selectedIdx = -1;\n items.forEach((item, idx) => {\n if (item.classList.contains(\"selected\")) selectedIdx = idx;\n });\n if (clear) {\n selectedIdx = 0;\n }\n if (selectedIdx > -1) {\n const scrollRow = col.querySelector(\n \".ic-time-selector-scroll-row\"\n ) as HTMLElement;\n let resolvedHeight = 0;\n if (scrollRow) {\n resolvedHeight = parseFloat(getComputedStyle(scrollRow).height);\n }\n const offset = resolvedHeight * 2;\n const scrollTop =\n (items[selectedIdx] as HTMLElement).offsetTop - offset;\n const prefersReducedMotion = window.matchMedia(\n \"(prefers-reduced-motion: reduce)\"\n ).matches;\n col.scrollTo({\n top: scrollTop,\n behavior: prefersReducedMotion ? \"instant\" : \"smooth\",\n });\n if (clear) {\n setTimeout(() => {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n if (columns && columns.length > 0) {\n this.checkIfScrollIsFinished(columns[0], scrollTop);\n }\n }, 300);\n }\n }\n }\n }\n\n private checkIfScrollIsFinished = (\n column: { scrollTop: number },\n scrollTop: number\n ) => {\n const isScrollFinished = setInterval(() => {\n if (column.scrollTop === scrollTop + 56) {\n (column as HTMLElement)?.focus();\n clearInterval(isScrollFinished);\n }\n }, 25);\n };\n\n private scrollMinTime(colClass: ColumnType) {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const colIdx = COLUMN_TYPES.indexOf(colClass);\n const col = columns?.[colIdx];\n if (!col) return;\n const items = col.querySelectorAll(ITEM_CLASS);\n let minHour = 0,\n minMinute = 0,\n minSecond = 0;\n if (this.minTime) {\n minHour = this.minTime.getHours() + 2;\n minMinute = this.minTime.getMinutes() + 2;\n minSecond = this.minTime.getSeconds();\n } else if (this.min) {\n const minDate = parseTimeHelper(this.min).date;\n if (minDate) {\n minHour = minDate.getHours();\n minMinute = minDate.getMinutes();\n minSecond = minDate.getSeconds();\n }\n }\n let targetIdx = -1;\n const values = this.getColumnValues(colClass);\n if (colClass === \"hour\") {\n targetIdx = values.findIndex((v) => v === minHour);\n } else if (colClass === \"minute\") {\n targetIdx = values.findIndex((v) => v === minMinute);\n } else if (colClass === \"second\") {\n targetIdx = values.findIndex((v) => v === minSecond);\n } else if (colClass === \"period\") {\n let period: IcTimePeriods = \"AM\";\n if (this.timePeriod === \"12\") {\n if (minHour === 0) {\n period = \"AM\";\n } else if (minHour === 12) {\n period = \"PM\";\n } else if (minHour > 12) {\n period = \"PM\";\n } else {\n period = \"AM\";\n }\n }\n targetIdx = values.findIndex((v) => v === period);\n }\n if (targetIdx > -1) {\n const scrollRow = col.querySelector(\n \".ic-time-selector-scroll-row\"\n ) as HTMLElement;\n let resolvedHeight = 0;\n if (scrollRow) {\n resolvedHeight = parseFloat(getComputedStyle(scrollRow).height);\n }\n const offset = resolvedHeight * 2;\n const scrollTop = (items[targetIdx] as HTMLElement).offsetTop - offset;\n const prefersReducedMotion = window.matchMedia(\n \"(prefers-reduced-motion: reduce)\"\n ).matches;\n col.scrollTo({\n top: scrollTop,\n behavior: prefersReducedMotion ? \"instant\" : \"smooth\",\n });\n }\n }\n\n private handleSelect = (type: ColumnType, value: number | IcTimePeriods) => {\n const prevValue = this.getSelectedValue(type);\n switch (type) {\n case \"hour\":\n this.selectedHour = Number(value);\n break;\n case \"minute\":\n this.selectedMinute = Number(value);\n break;\n case \"second\":\n this.selectedSecond = Number(value);\n break;\n case \"period\":\n this.selectedPeriod = value as IcTimePeriods;\n break;\n }\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const idx = COLUMN_TYPES.indexOf(type);\n if (columns && columns[idx]) {\n (columns[idx] as HTMLElement).focus();\n window.requestAnimationFrame(() => {\n this.scrollSelectedItem(type);\n });\n }\n if (prevValue === undefined || prevValue === null) {\n this.announceSelectedColumn(type);\n } else {\n this.lastAnnouncedType = type;\n this.lastAnnouncedValue = this.getSelectedValue(type);\n }\n };\n\n private isTimeDisabled = (\n hour: number,\n minute: number,\n second: number,\n type?: ColumnType\n ): boolean => {\n for (const t of this.disableTimes) {\n if (typeof t === \"string\" || t instanceof Date) {\n const parts = parseTimeHelper(t).parts;\n if (\n parts &&\n parts.hour === hour &&\n parts.minute === minute &&\n parts.second === second\n ) {\n return true;\n }\n } else if (t && typeof t === \"object\" && \"start\" in t && \"end\" in t) {\n const startParts = parseTimeHelper(t.start).parts;\n const endParts = parseTimeHelper(t.end).parts;\n if (startParts && endParts) {\n const timeVal = hour * 3600 + minute * 60 + second;\n const startVal =\n startParts.hour * 3600 + startParts.minute * 60 + startParts.second;\n const endVal =\n endParts.hour * 3600 + endParts.minute * 60 + endParts.second;\n if (timeVal >= startVal && timeVal <= endVal) {\n return true;\n }\n }\n }\n }\n if (this.min) {\n this.minTime = parseTimeHelper(this.min).date;\n if (this.minTime) {\n const minHour = this.minTime.getHours();\n const minMinute = this.minTime.getMinutes();\n const minSecond = this.minTime.getSeconds();\n if (type === \"hour\") {\n const highlightedMinute = this.selectedMinute ?? minMinute;\n const highlightedSecond = this.selectedSecond ?? minSecond;\n if (\n hour < minHour ||\n (hour === minHour && highlightedMinute < minMinute) ||\n (hour === minHour &&\n highlightedMinute === minMinute &&\n highlightedSecond < minSecond)\n ) {\n return true;\n }\n } else if (type === \"minute\") {\n if (hour === minHour && minute < minMinute) {\n return true;\n }\n } else if (type === \"second\") {\n if (hour === minHour && minute === minMinute && second < minSecond) {\n return true;\n }\n } else {\n if (\n hour < minHour ||\n (hour === minHour && minute < minMinute) ||\n (hour === minHour && minute === minMinute && second < minSecond)\n ) {\n return true;\n }\n }\n }\n }\n if (this.max) {\n this.maxTime = parseTimeHelper(this.max).date;\n if (this.maxTime) {\n const maxHour = this.maxTime.getHours();\n const maxMinute = this.maxTime.getMinutes();\n const maxSecond = this.maxTime.getSeconds();\n if (type === \"hour\") {\n const selectedMinute = this.selectedMinute ?? 59;\n const selectedSecond = this.selectedSecond ?? 59;\n if (\n hour > maxHour ||\n (hour === maxHour && selectedMinute > maxMinute) ||\n (hour === maxHour &&\n selectedMinute === maxMinute &&\n selectedSecond > maxSecond)\n ) {\n return true;\n }\n } else if (type === \"minute\") {\n if (hour === maxHour && minute > maxMinute) {\n return true;\n }\n } else if (type === \"second\") {\n if (hour === maxHour && minute === maxMinute && second > maxSecond) {\n return true;\n }\n } else {\n if (\n hour > maxHour ||\n (hour === maxHour && minute > maxMinute) ||\n (hour === maxHour && minute === maxMinute && second > maxSecond)\n ) {\n return true;\n }\n }\n }\n }\n return false;\n };\n\n private announceSelectedColumn(type: ColumnType) {\n const value = this.getSelectedValue(type);\n if (\n value !== null &&\n value !== undefined &&\n (type !== this.lastAnnouncedType || value !== this.lastAnnouncedValue)\n ) {\n this.ariaLiveMessage = `Selected ${type}: ${value}`;\n } else {\n this.ariaLiveMessage = \"\";\n }\n this.lastAnnouncedType = type;\n this.lastAnnouncedValue = value;\n }\n\n private getColumnValues(type: ColumnType): number[] | IcTimePeriods[] {\n if (type === \"hour\")\n return this.timePeriod === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n if (type === \"minute\") return this.minutes;\n if (type === \"second\") return this.seconds;\n if (type === \"period\") return this.periods;\n return [];\n }\n\n private getSelectedValue(type: ColumnType): number | IcTimePeriods | null {\n if (type === \"hour\") return this.selectedHour ?? null;\n if (type === \"minute\") return this.selectedMinute ?? null;\n if (type === \"second\") return this.selectedSecond ?? null;\n if (type === \"period\") return this.selectedPeriod ?? null;\n return null;\n }\n\n private getHighlightedValue(\n type: ColumnType,\n col: HTMLElement\n ): number | IcTimePeriods | null {\n const items = Array.from(col.querySelectorAll(ITEM_CLASS));\n const realItems = items.filter(\n (item) => !item.classList.contains(\"ic-time-selector-scroll-row\")\n );\n if (realItems.length === 0) return null;\n const highlightTop = this.el.shadowRoot?.querySelector(\n \".ic-time-selector-highlight-top\"\n ) as HTMLElement;\n const highlightBottom = this.el.shadowRoot?.querySelector(\n \".ic-time-selector-highlight-bottom\"\n ) as HTMLElement;\n if (!highlightTop || !highlightBottom) return null;\n const topRect = highlightTop.getBoundingClientRect();\n const bottomRect = highlightBottom.getBoundingClientRect();\n const highlightStart = topRect.bottom;\n const highlightEnd = bottomRect.top;\n for (const item of realItems) {\n const itemRect = item.getBoundingClientRect();\n const itemCenter = itemRect.top + itemRect.height / 2;\n if (itemCenter >= highlightStart && itemCenter <= highlightEnd) {\n const key = item.getAttribute(\"key\");\n if (key) {\n const valStr = key.replace(`${type}-val-`, \"\");\n if (type === \"hour\" || type === \"minute\" || type === \"second\") {\n return Number(valStr);\n } else {\n return valStr as IcTimePeriods;\n }\n }\n const text = item.textContent?.trim();\n if (type === \"hour\" || type === \"minute\" || type === \"second\") {\n return text ? Number(text) : null;\n } else {\n return text as IcTimePeriods;\n }\n }\n }\n return null;\n }\n\n private handleColumnKeyDown = (type: ColumnType, event: KeyboardEvent) => {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const idx = COLUMN_TYPES.indexOf(type);\n if (!columns) return;\n\n const values = this.getColumnValues(type);\n const selected = this.getSelectedValue(type);\n const col = columns[idx] as HTMLElement;\n if (!col) return;\n\n const selectHighlighted = () => {\n const highlighted = this.getHighlightedValue(type, col);\n if (highlighted !== null) {\n this.handleSelect(type, highlighted);\n } else if (values.length > 0) {\n this.handleSelect(type, values[0]);\n }\n };\n\n switch (event.key) {\n case \"Enter\":\n case \" \":\n event.preventDefault();\n selectHighlighted();\n return;\n case \"ArrowRight\":\n event.preventDefault();\n selectHighlighted();\n if (idx < columns.length - 1) {\n (columns[idx + 1] as HTMLElement)?.focus();\n }\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (idx > 0) (columns[idx - 1] as HTMLElement)?.focus();\n return;\n case \"Tab\":\n if (event.shiftKey) {\n if (idx === 0) {\n return;\n } else {\n event.preventDefault();\n (columns[idx - 1] as HTMLElement)?.focus();\n }\n } else {\n event.preventDefault();\n selectHighlighted();\n this.announceSelectedColumn(type);\n if (idx < columns.length - 1) {\n (columns[idx + 1] as HTMLElement)?.focus();\n } else {\n (\n this.el.shadowRoot?.querySelector(\n \".ic-time-selector-clear-btn\"\n ) as HTMLElement\n )?.focus();\n this.updateAriaLiveMessage();\n }\n }\n return;\n case \"ArrowUp\":\n case \"ArrowDown\": {\n let idxInValues = values.findIndex((v) => v === selected);\n if (idxInValues === -1) idxInValues = 0;\n let newIdx = idxInValues;\n const direction = event.key === \"ArrowUp\" ? -1 : 1;\n const maxIdx = values.length - 1;\n do {\n newIdx += direction;\n } while (\n newIdx >= 0 &&\n newIdx <= maxIdx &&\n (() => {\n if (type === \"hour\" || type === \"minute\" || type === \"second\") {\n const hour =\n type === \"hour\"\n ? (values[newIdx] as number)\n : this.selectedHour ?? 0;\n const minute =\n type === \"minute\"\n ? (values[newIdx] as number)\n : this.selectedMinute ?? 0;\n const second =\n type === \"second\"\n ? (values[newIdx] as number)\n : this.selectedSecond ?? 0;\n return this.isTimeDisabled(hour, minute, second);\n }\n return false;\n })()\n );\n this.ariaLiveMessage = `Selected ${type}: ${values[newIdx]}`;\n if (newIdx >= 0 && newIdx <= maxIdx && newIdx !== idxInValues) {\n this.handleSelect(type, values[newIdx]);\n }\n return;\n }\n default:\n return;\n }\n };\n\n private updateAriaLiveMessage() {\n const hourStr =\n this.selectedHour != null\n ? this.selectedHour.toString().padStart(2, \"0\")\n : null;\n const minuteStr =\n this.selectedMinute != null\n ? this.selectedMinute.toString().padStart(2, \"0\")\n : null;\n const secondStr =\n this.selectedSecond != null\n ? this.selectedSecond.toString().padStart(2, \"0\")\n : null;\n let timeString = \"\";\n let allSelected = false;\n if (this.timeFormat === \"HH:MM\") {\n allSelected = hourStr !== null && minuteStr !== null;\n if (allSelected) {\n timeString =\n hourStr +\n \":\" +\n minuteStr +\n (this.selectedPeriod ? \" \" + this.selectedPeriod : \"\");\n }\n } else if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {\n allSelected =\n hourStr !== null && minuteStr !== null && secondStr !== null;\n if (allSelected) {\n timeString =\n hourStr +\n \":\" +\n minuteStr +\n \":\" +\n secondStr +\n (this.selectedPeriod ? \" \" + this.selectedPeriod : \"\");\n }\n }\n this.ariaLiveMessage =\n allSelected && timeString ? `Selected time: ${timeString}` : \"\";\n }\n\n private renderColumn = (\n type: ColumnType,\n values: number[] | IcTimePeriods[],\n selected: number | IcTimePeriods | null\n ) => {\n const isTimeColumn =\n type === \"hour\" || type === \"minute\" || type === \"second\";\n const isPeriodColumn = type === \"period\";\n const headerLabel = this.getHeaderLabel(type);\n const topSpacerCount = 2;\n let bottomSpacerCount = 6;\n if (this.size === \"large\") {\n bottomSpacerCount = 5;\n } else if (this.size === \"small\") {\n bottomSpacerCount = 8;\n }\n return (\n <div class=\"ic-time-selector-column-wrapper\">\n {isPeriodColumn ? (\n <div class=\"ic-time-selector-header-row\" />\n ) : (\n headerLabel && (\n <div class=\"ic-time-selector-header-row\">\n <ic-typography variant=\"subtitle-small\">\n {headerLabel}\n </ic-typography>\n </div>\n )\n )}\n <div\n class={{\n \"ic-time-selector-column\": true,\n \"ic-time-selector-column-period\": isPeriodColumn,\n }}\n tabIndex={0}\n onKeyDown={(e) => this.handleColumnKeyDown(type, e as KeyboardEvent)}\n >\n <ul class=\"ic-time-selector-list\" role=\"listbox\" aria-label={type}>\n {this.renderScrollRows(topSpacerCount, `${type}-top-spacer`)}\n {values.map((val) => {\n let disabled = false;\n if (isTimeColumn) {\n const hour =\n type === \"hour\" ? (val as number) : this.selectedHour ?? 0;\n const minute =\n type === \"minute\"\n ? (val as number)\n : this.selectedMinute ?? 0;\n const second =\n type === \"second\"\n ? (val as number)\n : this.selectedSecond ?? 0;\n disabled = this.isTimeDisabled(hour, minute, second, type);\n }\n return (\n <li\n class={{\n \"ic-time-selector-item\": true,\n selected: val === selected,\n disabled,\n }}\n role=\"option\"\n aria-selected={val === selected ? \"true\" : \"false\"}\n aria-disabled={disabled ? \"true\" : \"false\"}\n onClick={() =>\n !disabled && this.handleSelect(type, val as any)\n }\n tabIndex={-1}\n key={`${type}-val-${val}`}\n >\n <ic-typography variant=\"subtitle-small\">\n {typeof val === \"number\"\n ? val.toString().padStart(2, \"0\")\n : val}\n </ic-typography>\n </li>\n );\n })}\n {(isTimeColumn || isPeriodColumn) &&\n this.renderScrollRows(bottomSpacerCount, `${type}-bottom-spacer`)}\n </ul>\n </div>\n </div>\n );\n };\n\n private handleClear = () => {\n this.selectedHour = undefined;\n this.scrollSelectedItem(\"hour\", true);\n this.selectedMinute = undefined;\n this.scrollSelectedItem(\"minute\", true);\n this.selectedSecond = undefined;\n this.scrollSelectedItem(\"second\", true);\n this.selectedPeriod = undefined;\n this.scrollSelectedItem(\"period\", true);\n this.lastAnnouncedType = undefined;\n this.lastAnnouncedValue = undefined;\n this.icChange.emit({\n value: null,\n timeString: null,\n timeObject: {\n hour: null,\n minute: null,\n second: null,\n period: undefined,\n },\n });\n };\n\n private handleConfirmClick = () => {\n const hour = this.selectedHour != null ? this.selectedHour : null;\n const minute = this.selectedMinute != null ? this.selectedMinute : null;\n const second = this.selectedSecond != null ? this.selectedSecond : null;\n const period = this.selectedPeriod;\n\n const hourStr = hour != null ? hour.toString().padStart(2, \"0\") : null;\n const minuteStr =\n minute != null ? minute.toString().padStart(2, \"0\") : null;\n const secondStr =\n second != null ? second.toString().padStart(2, \"0\") : null;\n\n let allSelected = false;\n if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {\n allSelected = hour !== null && minute !== null && second !== null;\n } else {\n allSelected = hour !== null && minute !== null;\n }\n\n let value: Date | null = null;\n let timeString: string | null = null;\n if (allSelected) {\n let date24hours = hour;\n if (hour != null && period && this.timePeriod === \"12\") {\n if (period === \"PM\" && hour < 12) date24hours = hour + 12;\n if (period === \"AM\" && hour === 12) date24hours = 0;\n }\n value = new Date();\n value.setHours(date24hours ?? 0);\n value.setMinutes(minute ?? 0);\n value.setSeconds(second ?? 0);\n value.setMilliseconds(0);\n if (this.timeFormat === \"HH:MM\") {\n timeString = hourStr + \":\" + minuteStr + (period ? \" \" + period : \"\");\n } else if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {\n timeString =\n hourStr +\n \":\" +\n minuteStr +\n \":\" +\n secondStr +\n (period ? \" \" + period : \"\");\n }\n this.value = value;\n }\n\n this.icChange.emit({\n value: allSelected ? value : null,\n timeString: allSelected ? timeString : null,\n timeObject: {\n hour: hourStr,\n minute: minuteStr,\n second: secondStr,\n ...(period ? { period } : {}),\n },\n });\n };\n\n render() {\n const hours =\n this.timePeriod === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n const timeFormat = this.timeFormat || this.DEFAULT_TIME_FORMAT;\n const columns = [\n this.renderColumn(\"hour\", hours, this.selectedHour ?? null),\n this.renderColumn(\"minute\", this.minutes, this.selectedMinute ?? null),\n ];\n if (timeFormat === this.DEFAULT_TIME_FORMAT) {\n columns.push(\n this.renderColumn(\"second\", this.seconds, this.selectedSecond ?? null)\n );\n }\n\n let colonSelectedStates: boolean[] = [];\n if (timeFormat === this.DEFAULT_TIME_FORMAT) {\n colonSelectedStates = [\n this.selectedHour !== undefined && this.selectedMinute !== undefined,\n this.selectedMinute !== undefined && this.selectedSecond !== undefined,\n ];\n } else {\n colonSelectedStates = [\n this.selectedHour !== undefined && this.selectedMinute !== undefined,\n ];\n }\n\n const isInPicker = this.el.closest(\"ic-time-picker\") !== null;\n\n const { size, theme, timePeriod } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [`ic-time-selector-${size}`]: true,\n }}\n >\n <div\n role={isInPicker ? \"dialog\" : undefined}\n aria-modal={isInPicker ? true : undefined}\n aria-label=\"Select time. Use arrow keys to navigate and select the options and then tab to move onto the next selection.\"\n class={{\n \"ic-time-selector-dialog-container\": true,\n }}\n >\n <div class=\"ic-time-selector-highlight-lines\">\n <div class=\"ic-time-selector-header-border\" />\n <div\n class={{\n \"ic-time-selector-highlight\": true,\n \"ic-time-selector-highlight-top\": true,\n }}\n />\n <div class=\"ic-time-selector-columns\">\n {columns.map((col, idx) => [\n col,\n idx < columns.length - 1 ? (\n <ic-typography\n class={{\n \"ic-time-selector-colon\": true,\n \"ic-time-selector-colon-selected\":\n colonSelectedStates[idx],\n }}\n variant=\"subtitle-small\"\n aria-hidden=\"true\"\n key={`colon-${idx}`}\n >\n :\n </ic-typography>\n ) : null,\n ])}\n {timePeriod !== \"24\" &&\n this.renderColumn(\n \"period\",\n this.periods,\n this.selectedPeriod ?? null\n )}\n </div>\n <div\n class={{\n \"ic-time-selector-highlight\": true,\n \"ic-time-selector-highlight-bottom\": true,\n }}\n />\n </div>\n <div class=\"ic-time-selector-actions\">\n <ic-button\n variant=\"icon-tertiary\"\n aria-label=\"Clear time\"\n class={{\n \"ic-time-selector-clear-btn\": true,\n }}\n onClick={this.handleClear}\n disabled={\n this.selectedHour === undefined &&\n this.selectedMinute === undefined &&\n this.selectedSecond === undefined &&\n this.selectedPeriod === undefined\n }\n size={size}\n tabIndex={0}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n const columns =\n this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n if (columns && columns.length > 0) {\n const lastCol = columns[columns.length - 1] as HTMLElement;\n lastCol?.focus();\n }\n }\n }}\n >\n <span aria-hidden=\"true\" innerHTML={Clear}></span>\n </ic-button>\n <ic-button\n variant=\"icon-tertiary\"\n aria-label=\"Select time\"\n class=\"ic-time-selector-check-btn\"\n onClick={this.handleConfirmClick}\n disabled={\n this.selectedHour === undefined &&\n this.selectedMinute === undefined &&\n this.selectedSecond === undefined &&\n this.selectedPeriod === undefined\n }\n size={size}\n tabIndex={0}\n >\n <span aria-hidden=\"true\" innerHTML={Check}></span>\n </ic-button>\n </div>\n </div>\n <div class=\"sr-only\" aria-live=\"polite\">\n {this.ariaLiveMessage}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-time-selector.js","sourceRoot":"","sources":["../../../../../src/components/ic-time-selector/ic-time-selector.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Element,\n State,\n Prop,\n Event,\n EventEmitter,\n Host,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcDisableTimeSelection,\n IcSizes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport { parseTimeHelper } from \"../../utils/helpers\";\nimport Check from \"../../assets/check-icon.svg\";\nimport Clear from \"../../assets/close-icon.svg\";\nimport { IcTimePeriods } from \"./ic-time-selector.types\";\n\nconst COLUMN_TYPES = [\"hour\", \"minute\", \"period\"] as const;\nconst COLUMN_CLASS = \".ic-time-selector-column\";\nconst ITEM_CLASS = \".ic-time-selector-item\";\ntype ColumnType = typeof COLUMN_TYPES[number];\n\n@Component({\n tag: \"ic-time-selector\",\n styleUrl: \"ic-time-selector.css\",\n shadow: true,\n})\nexport class TimeSelector {\n private minutes: number[] = Array.from({ length: 60 }, (_, i) => i);\n private periods: IcTimePeriods[] = [\"AM\", \"PM\"];\n private minTime: Date | null = null;\n private maxTime: Date | null = null;\n private lastAnnouncedType?: ColumnType;\n private lastAnnouncedValue?: number | IcTimePeriods | null;\n\n @Element() el: HTMLIcTimeSelectorElement;\n\n @State() selectedHour?: number;\n @State() selectedMinute?: number;\n @State() selectedPeriod?: IcTimePeriods;\n @State() ariaLiveMessage: string = \"\";\n\n /**\n * An array of objects with start and end values that will be disabled in the time selector. The times can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() disableTimes: IcDisableTimeSelection[] = [];\n\n /**\n * The earliest time that will be allowed. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() min: string | Date = \"\";\n @Watch(\"min\")\n watchMinHandler(): void {\n this.minTime = parseTimeHelper(this.min).date;\n }\n\n /**\n * The latest time that will be allowed. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop() max: string | Date = \"\";\n @Watch(\"max\")\n watchMaxHandler(): void {\n this.maxTime = parseTimeHelper(this.max).date;\n }\n\n /**\n * The size of the time selector to be displayed.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The time period format: \"12\" for 12-hour, \"24\" for 24-hour. Defaults to \"24\".\n */\n @Prop() timePeriod: \"12\" | \"24\" = \"24\";\n\n /**\n * The value of the time selector. The value can be in any format supported as `timeFormat`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n @Watch(\"value\")\n watchValueHandler(): void {\n this.setTime(this.value);\n setTimeout(() => {\n this.scrollSelectedItem(\"hour\");\n this.scrollSelectedItem(\"minute\");\n if (this.timePeriod === \"12\") {\n this.scrollSelectedItem(\"period\");\n }\n }, 0);\n }\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{\n value: Date | null;\n timeString: string | null;\n timeObject: {\n hour: string | null;\n minute: string | null;\n period?: IcTimePeriods;\n };\n }>;\n\n componentWillLoad() {\n this.setTime(this.value);\n }\n\n componentDidLoad() {\n setTimeout(() => {\n if (this.selectedHour !== undefined && this.selectedHour !== null) {\n this.scrollSelectedItem(\"hour\");\n } else if (this.min) {\n this.scrollMinTime(\"hour\");\n }\n if (this.selectedMinute !== undefined && this.selectedMinute !== null) {\n this.scrollSelectedItem(\"minute\");\n } else if (this.min) {\n this.scrollMinTime(\"minute\");\n }\n if (this.timePeriod === \"12\") {\n if (this.selectedPeriod !== undefined && this.selectedPeriod !== null) {\n this.scrollSelectedItem(\"period\");\n } else if (this.min) {\n this.scrollMinTime(\"period\");\n }\n }\n this.updateAriaLiveMessage();\n }, 0);\n }\n\n private getHeaderLabel(type: ColumnType): string {\n switch (type) {\n case \"hour\":\n return \"HH\";\n case \"minute\":\n return \"MM\";\n default:\n return \"\";\n }\n }\n\n private setTimeParts = (hour: number, minute: number) => {\n let period: IcTimePeriods = \"AM\";\n if (this.timePeriod === \"12\") {\n if (hour === 0) {\n hour = 12;\n period = \"AM\";\n } else if (hour === 12) {\n period = \"PM\";\n } else if (hour > 12) {\n hour = hour - 12;\n period = \"PM\";\n } else {\n period = \"AM\";\n }\n this.selectedHour = hour;\n this.selectedPeriod = period;\n } else {\n this.selectedHour = hour;\n }\n this.selectedMinute = minute;\n };\n\n private setTime(time?: string | Date | null) {\n if (time === null || time === undefined || time === \"\") {\n this.handleClear();\n return;\n }\n\n if (typeof time === \"string\") {\n const zuluMatch = time.match(\n /^([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\\.[0-9]{1,3})?Z?$/\n );\n if (zuluMatch) {\n this.setTimeParts(Number(zuluMatch[1]), Number(zuluMatch[2]));\n } else {\n const parts = time.split(\":\");\n this.setTimeParts(Number(parts[0]) || 0, Number(parts[1]) || 0);\n }\n } else {\n const { parts } = parseTimeHelper(time);\n if (parts) {\n this.setTimeParts(parts.hour, parts.minute);\n }\n }\n }\n\n private renderScrollRows(count: number, keyPrefix = \"scroll-row\") {\n return Array.from({ length: count }).map((_, i) => {\n const isLast = keyPrefix.endsWith(\"bottom-spacer\")\n ? i === count - 1\n : false;\n return (\n <li\n class={{\n \"ic-time-selector-item\": true,\n \"ic-time-selector-scroll-row\": true,\n ...(isLast ? { \"ic-time-selector-scroll-row-last\": true } : {}),\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n key={`${keyPrefix}-${i}`}\n />\n );\n });\n }\n\n private scrollSelectedItem(colClass: ColumnType, clear?: boolean) {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n let colIdx = COLUMN_TYPES.indexOf(colClass);\n if (colClass === \"period\" && columns?.length) {\n colIdx = columns.length - 1;\n }\n const col = columns?.[colIdx];\n if (col) {\n const items = col.querySelectorAll(ITEM_CLASS);\n let selectedIdx = -1;\n items.forEach((item, idx) => {\n if (item.classList.contains(\"selected\")) selectedIdx = idx;\n });\n if (clear) {\n selectedIdx = 0;\n }\n if (selectedIdx > -1) {\n const scrollRow = col.querySelector(\n \".ic-time-selector-scroll-row\"\n ) as HTMLElement;\n let resolvedHeight = 0;\n if (scrollRow) {\n resolvedHeight = parseFloat(getComputedStyle(scrollRow).height);\n }\n const offset = resolvedHeight * 2;\n const scrollTop =\n (items[selectedIdx] as HTMLElement).offsetTop - offset;\n const prefersReducedMotion = window.matchMedia(\n \"(prefers-reduced-motion: reduce)\"\n ).matches;\n col.scrollTo({\n top: scrollTop,\n behavior: prefersReducedMotion ? \"instant\" : \"smooth\",\n });\n if (clear) {\n setTimeout(() => {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n if (columns && columns.length > 0) {\n this.checkIfScrollIsFinished(columns[0], scrollTop);\n }\n }, 300);\n }\n }\n }\n }\n\n private checkIfScrollIsFinished = (\n column: { scrollTop: number },\n scrollTop: number\n ) => {\n const isScrollFinished = setInterval(() => {\n if (column.scrollTop === scrollTop + 56) {\n (column as HTMLElement)?.focus();\n clearInterval(isScrollFinished);\n }\n }, 25);\n };\n\n private scrollMinTime(colClass: ColumnType) {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const colIdx = COLUMN_TYPES.indexOf(colClass);\n const col = columns?.[colIdx];\n if (!col) return;\n const items = col.querySelectorAll(ITEM_CLASS);\n let minHour = 0,\n minMinute = 0;\n if (this.minTime) {\n minHour = this.minTime.getHours() + 2;\n minMinute = this.minTime.getMinutes() + 2;\n } else if (this.min) {\n const minDate = parseTimeHelper(this.min).date;\n if (minDate) {\n minHour = minDate.getHours();\n minMinute = minDate.getMinutes();\n }\n }\n let targetIdx = -1;\n const values = this.getColumnValues(colClass);\n if (colClass === \"hour\") {\n targetIdx = values.findIndex((v) => v === minHour);\n } else if (colClass === \"minute\") {\n targetIdx = values.findIndex((v) => v === minMinute);\n } else if (colClass === \"period\") {\n let period: IcTimePeriods = \"AM\";\n if (this.timePeriod === \"12\") {\n if (minHour === 0) {\n period = \"AM\";\n } else if (minHour === 12) {\n period = \"PM\";\n } else if (minHour > 12) {\n period = \"PM\";\n } else {\n period = \"AM\";\n }\n }\n targetIdx = values.findIndex((v) => v === period);\n }\n if (targetIdx > -1) {\n const scrollRow = col.querySelector(\n \".ic-time-selector-scroll-row\"\n ) as HTMLElement;\n let resolvedHeight = 0;\n if (scrollRow) {\n resolvedHeight = parseFloat(getComputedStyle(scrollRow).height);\n }\n const offset = resolvedHeight * 2;\n const scrollTop = (items[targetIdx] as HTMLElement).offsetTop - offset;\n const prefersReducedMotion = window.matchMedia(\n \"(prefers-reduced-motion: reduce)\"\n ).matches;\n col.scrollTo({\n top: scrollTop,\n behavior: prefersReducedMotion ? \"instant\" : \"smooth\",\n });\n }\n }\n\n private handleSelect = (type: ColumnType, value: number | IcTimePeriods) => {\n const prevValue = this.getSelectedValue(type);\n switch (type) {\n case \"hour\":\n this.selectedHour = Number(value);\n break;\n case \"minute\":\n this.selectedMinute = Number(value);\n break;\n case \"period\":\n this.selectedPeriod = value as IcTimePeriods;\n break;\n }\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const idx = COLUMN_TYPES.indexOf(type);\n if (columns && columns[idx]) {\n (columns[idx] as HTMLElement).focus();\n window.requestAnimationFrame(() => {\n this.scrollSelectedItem(type);\n });\n }\n if (prevValue === undefined || prevValue === null) {\n this.announceSelectedColumn(type);\n } else {\n this.lastAnnouncedType = type;\n this.lastAnnouncedValue = this.getSelectedValue(type);\n }\n };\n\n private isTimeDisabled = (\n hour: number,\n minute: number,\n type?: ColumnType\n ): boolean => {\n for (const t of this.disableTimes) {\n if (t && typeof t === \"object\" && \"start\" in t && \"end\" in t) {\n const startParts = parseTimeHelper(t.start).parts;\n const endParts = parseTimeHelper(t.end).parts;\n if (startParts && endParts) {\n const timeVal = hour * 3600 + minute * 60;\n const startVal = startParts.hour * 3600 + startParts.minute * 60;\n const endVal = endParts.hour * 3600 + endParts.minute * 60;\n if (timeVal >= startVal && timeVal <= endVal) {\n return true;\n }\n }\n }\n }\n if (this.min) {\n this.minTime = parseTimeHelper(this.min).date;\n if (this.minTime) {\n const minHour = this.minTime.getHours();\n const minMinute = this.minTime.getMinutes();\n if (type === \"hour\") {\n const highlightedMinute = this.selectedMinute ?? minMinute;\n if (\n hour < minHour ||\n (hour === minHour && highlightedMinute < minMinute) ||\n (hour === minHour && highlightedMinute === minMinute)\n ) {\n return true;\n }\n } else if (type === \"minute\") {\n if (hour === minHour && minute < minMinute) {\n return true;\n }\n } else {\n if (\n hour < minHour ||\n (hour === minHour && minute < minMinute) ||\n (hour === minHour && minute === minMinute)\n ) {\n return true;\n }\n }\n }\n }\n if (this.max) {\n this.maxTime = parseTimeHelper(this.max).date;\n if (this.maxTime) {\n const maxHour = this.maxTime.getHours();\n const maxMinute = this.maxTime.getMinutes();\n if (type === \"hour\") {\n const selectedMinute = this.selectedMinute ?? 59;\n if (\n hour > maxHour ||\n (hour === maxHour && selectedMinute > maxMinute) ||\n (hour === maxHour && selectedMinute === maxMinute)\n ) {\n return true;\n }\n } else if (type === \"minute\") {\n if (hour === maxHour && minute > maxMinute) {\n return true;\n }\n } else {\n if (\n hour > maxHour ||\n (hour === maxHour && minute > maxMinute) ||\n (hour === maxHour && minute === maxMinute)\n ) {\n return true;\n }\n }\n }\n }\n return false;\n };\n\n private announceSelectedColumn(type: ColumnType) {\n const value = this.getSelectedValue(type);\n if (\n value !== null &&\n value !== undefined &&\n (type !== this.lastAnnouncedType || value !== this.lastAnnouncedValue)\n ) {\n this.ariaLiveMessage = `Selected ${type}: ${value}`;\n } else {\n this.ariaLiveMessage = \"\";\n }\n this.lastAnnouncedType = type;\n this.lastAnnouncedValue = value;\n }\n\n private getColumnValues(type: ColumnType): number[] | IcTimePeriods[] {\n if (type === \"hour\")\n return this.timePeriod === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n if (type === \"minute\") return this.minutes;\n if (type === \"period\") return this.periods;\n return [];\n }\n\n private getSelectedValue(type: ColumnType): number | IcTimePeriods | null {\n if (type === \"hour\") return this.selectedHour ?? null;\n if (type === \"minute\") return this.selectedMinute ?? null;\n if (type === \"period\") return this.selectedPeriod ?? null;\n return null;\n }\n\n private getHighlightedValue(\n type: ColumnType,\n col: HTMLElement\n ): number | IcTimePeriods | null {\n const items = Array.from(col.querySelectorAll(ITEM_CLASS));\n const realItems = items.filter(\n (item) => !item.classList.contains(\"ic-time-selector-scroll-row\")\n );\n if (realItems.length === 0) return null;\n const highlightTop = this.el.shadowRoot?.querySelector(\n \".ic-time-selector-highlight-top\"\n ) as HTMLElement;\n const highlightBottom = this.el.shadowRoot?.querySelector(\n \".ic-time-selector-highlight-bottom\"\n ) as HTMLElement;\n if (!highlightTop || !highlightBottom) return null;\n const topRect = highlightTop.getBoundingClientRect();\n const bottomRect = highlightBottom.getBoundingClientRect();\n const highlightStart = topRect.bottom;\n const highlightEnd = bottomRect.top;\n for (const item of realItems) {\n const itemRect = item.getBoundingClientRect();\n const itemCenter = itemRect.top + itemRect.height / 2;\n if (itemCenter >= highlightStart && itemCenter <= highlightEnd) {\n const key = item.getAttribute(\"key\");\n if (key) {\n const valStr = key.replace(`${type}-val-`, \"\");\n if (type === \"hour\" || type === \"minute\") {\n return Number(valStr);\n } else {\n return valStr as IcTimePeriods;\n }\n }\n const text = item.textContent?.trim();\n if (type === \"hour\" || type === \"minute\") {\n return text ? Number(text) : null;\n } else {\n return text as IcTimePeriods;\n }\n }\n }\n return null;\n }\n\n private handleColumnKeyDown = (type: ColumnType, event: KeyboardEvent) => {\n const columns = this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n const idx = COLUMN_TYPES.indexOf(type);\n if (!columns) return;\n\n const values = this.getColumnValues(type);\n const selected = this.getSelectedValue(type);\n const col = columns[idx] as HTMLElement;\n if (!col) return;\n\n const selectHighlighted = () => {\n const highlighted = this.getHighlightedValue(type, col);\n if (highlighted !== null) {\n this.handleSelect(type, highlighted);\n } else if (values.length > 0) {\n this.handleSelect(type, values[0]);\n }\n };\n\n switch (event.key) {\n case \"Enter\":\n case \" \":\n event.preventDefault();\n selectHighlighted();\n return;\n case \"ArrowRight\":\n event.preventDefault();\n selectHighlighted();\n if (idx < columns.length - 1) {\n (columns[idx + 1] as HTMLElement)?.focus();\n }\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n if (idx > 0) (columns[idx - 1] as HTMLElement)?.focus();\n return;\n case \"Tab\":\n if (event.shiftKey) {\n if (idx === 0) {\n return;\n } else {\n event.preventDefault();\n (columns[idx - 1] as HTMLElement)?.focus();\n }\n } else {\n event.preventDefault();\n selectHighlighted();\n this.announceSelectedColumn(type);\n if (idx < columns.length - 1) {\n (columns[idx + 1] as HTMLElement)?.focus();\n } else {\n (\n this.el.shadowRoot?.querySelector(\n \".ic-time-selector-clear-btn\"\n ) as HTMLElement\n )?.focus();\n this.updateAriaLiveMessage();\n }\n }\n return;\n case \"ArrowUp\":\n case \"ArrowDown\": {\n let idxInValues = values.findIndex((v) => v === selected);\n if (idxInValues === -1) idxInValues = 0;\n let newIdx = idxInValues;\n const direction = event.key === \"ArrowUp\" ? -1 : 1;\n const maxIdx = values.length - 1;\n do {\n newIdx += direction;\n } while (\n newIdx >= 0 &&\n newIdx <= maxIdx &&\n (() => {\n if (type === \"hour\" || type === \"minute\") {\n const hour =\n type === \"hour\"\n ? (values[newIdx] as number)\n : this.selectedHour ?? 0;\n const minute =\n type === \"minute\"\n ? (values[newIdx] as number)\n : this.selectedMinute ?? 0;\n return this.isTimeDisabled(hour, minute);\n }\n return false;\n })()\n );\n this.ariaLiveMessage = `Selected ${type}: ${values[newIdx]}`;\n if (newIdx >= 0 && newIdx <= maxIdx && newIdx !== idxInValues) {\n this.handleSelect(type, values[newIdx]);\n }\n return;\n }\n default:\n return;\n }\n };\n\n private updateAriaLiveMessage() {\n const hourStr =\n this.selectedHour != null\n ? this.selectedHour.toString().padStart(2, \"0\")\n : null;\n const minuteStr =\n this.selectedMinute != null\n ? this.selectedMinute.toString().padStart(2, \"0\")\n : null;\n let timeString = \"\";\n let allSelected = false;\n allSelected = hourStr !== null && minuteStr !== null;\n if (allSelected) {\n timeString =\n hourStr +\n \":\" +\n minuteStr +\n (this.selectedPeriod ? \" \" + this.selectedPeriod : \"\");\n }\n this.ariaLiveMessage =\n allSelected && timeString ? `Selected time: ${timeString}` : \"\";\n }\n\n private renderColumn = (\n type: ColumnType,\n values: number[] | IcTimePeriods[],\n selected: number | IcTimePeriods | null\n ) => {\n const isTimeColumn = type === \"hour\" || type === \"minute\";\n const isPeriodColumn = type === \"period\";\n const headerLabel = this.getHeaderLabel(type);\n const topSpacerCount = 2;\n let bottomSpacerCount = 6;\n if (this.size === \"large\") {\n bottomSpacerCount = 5;\n } else if (this.size === \"small\") {\n bottomSpacerCount = 8;\n }\n return (\n <div class=\"ic-time-selector-column-wrapper\">\n {isPeriodColumn ? (\n <div class=\"ic-time-selector-header-row\" />\n ) : (\n headerLabel && (\n <div class=\"ic-time-selector-header-row\">\n <ic-typography variant=\"subtitle-small\">\n {headerLabel}\n </ic-typography>\n </div>\n )\n )}\n <div\n class={{\n \"ic-time-selector-column\": true,\n \"ic-time-selector-column-period\": isPeriodColumn,\n }}\n tabIndex={0}\n onKeyDown={(e) => this.handleColumnKeyDown(type, e as KeyboardEvent)}\n >\n <ul class=\"ic-time-selector-list\" role=\"listbox\" aria-label={type}>\n {this.renderScrollRows(topSpacerCount, `${type}-top-spacer`)}\n {values.map((val) => {\n let disabled = false;\n if (isTimeColumn) {\n const hour =\n type === \"hour\" ? (val as number) : this.selectedHour ?? 0;\n const minute =\n type === \"minute\"\n ? (val as number)\n : this.selectedMinute ?? 0;\n disabled = this.isTimeDisabled(hour, minute, type);\n }\n return (\n <li\n class={{\n \"ic-time-selector-item\": true,\n selected: val === selected,\n disabled,\n }}\n role=\"option\"\n aria-selected={val === selected ? \"true\" : \"false\"}\n aria-disabled={disabled ? \"true\" : \"false\"}\n onClick={() =>\n !disabled && this.handleSelect(type, val as any)\n }\n tabIndex={-1}\n key={`${type}-val-${val}`}\n >\n <ic-typography variant=\"subtitle-small\">\n {typeof val === \"number\"\n ? val.toString().padStart(2, \"0\")\n : val}\n </ic-typography>\n </li>\n );\n })}\n {(isTimeColumn || isPeriodColumn) &&\n this.renderScrollRows(bottomSpacerCount, `${type}-bottom-spacer`)}\n </ul>\n </div>\n </div>\n );\n };\n\n private handleClear = () => {\n this.selectedHour = undefined;\n this.scrollSelectedItem(\"hour\", true);\n this.selectedMinute = undefined;\n this.scrollSelectedItem(\"minute\", true);\n this.selectedPeriod = undefined;\n this.scrollSelectedItem(\"period\", true);\n this.lastAnnouncedType = undefined;\n this.lastAnnouncedValue = undefined;\n this.icChange.emit({\n value: null,\n timeString: null,\n timeObject: {\n hour: null,\n minute: null,\n period: undefined,\n },\n });\n };\n\n private handleConfirmClick = () => {\n const hour = this.selectedHour != null ? this.selectedHour : null;\n const minute = this.selectedMinute != null ? this.selectedMinute : null;\n const period = this.selectedPeriod;\n\n const hourStr = hour != null ? hour.toString().padStart(2, \"0\") : null;\n const minuteStr =\n minute != null ? minute.toString().padStart(2, \"0\") : null;\n\n let allSelected = false;\n allSelected = hour !== null && minute !== null;\n\n let value: Date | null = null;\n let timeString: string | null = null;\n if (allSelected) {\n let date24hours = hour;\n if (hour != null && period && this.timePeriod === \"12\") {\n if (period === \"PM\" && hour < 12) date24hours = hour + 12;\n if (period === \"AM\" && hour === 12) date24hours = 0;\n }\n value = new Date();\n value.setHours(date24hours ?? 0);\n value.setMinutes(minute ?? 0);\n timeString = hourStr + \":\" + minuteStr + (period ? \" \" + period : \"\");\n this.value = value;\n }\n\n this.icChange.emit({\n value: allSelected ? value : null,\n timeString: allSelected ? timeString : null,\n timeObject: {\n hour: hourStr,\n minute: minuteStr,\n ...(period ? { period } : {}),\n },\n });\n };\n\n render() {\n const hours =\n this.timePeriod === \"12\"\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n const columns = [\n this.renderColumn(\"hour\", hours, this.selectedHour ?? null),\n this.renderColumn(\"minute\", this.minutes, this.selectedMinute ?? null),\n ];\n\n let colonSelectedStates: boolean[] = [];\n colonSelectedStates = [\n this.selectedHour !== undefined && this.selectedMinute !== undefined,\n ];\n\n const isInPicker = this.el.closest(\"ic-time-picker\") !== null;\n\n const { size, theme, timePeriod } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [`ic-time-selector-${size}`]: true,\n }}\n >\n <div\n role={isInPicker ? \"dialog\" : undefined}\n aria-modal={isInPicker ? true : undefined}\n aria-label=\"Select time. Use arrow keys to navigate and select the options and then tab to move onto the next selection.\"\n class={{\n \"ic-time-selector-dialog-container\": true,\n }}\n >\n <div class=\"ic-time-selector-highlight-lines\">\n <div class=\"ic-time-selector-header-border\" />\n <div\n class={{\n \"ic-time-selector-highlight\": true,\n \"ic-time-selector-highlight-top\": true,\n }}\n />\n <div class=\"ic-time-selector-columns\">\n {columns.map((col, idx) => [\n col,\n idx < columns.length - 1 ? (\n <ic-typography\n class={{\n \"ic-time-selector-colon\": true,\n \"ic-time-selector-colon-selected\":\n colonSelectedStates[idx],\n }}\n variant=\"subtitle-small\"\n aria-hidden=\"true\"\n key={`colon-${idx}`}\n >\n :\n </ic-typography>\n ) : null,\n ])}\n {timePeriod !== \"24\" &&\n this.renderColumn(\n \"period\",\n this.periods,\n this.selectedPeriod ?? null\n )}\n </div>\n <div\n class={{\n \"ic-time-selector-highlight\": true,\n \"ic-time-selector-highlight-bottom\": true,\n }}\n />\n </div>\n <div class=\"ic-time-selector-actions\">\n <ic-button\n variant=\"icon-tertiary\"\n aria-label=\"Clear time\"\n class={{\n \"ic-time-selector-clear-btn\": true,\n }}\n onClick={this.handleClear}\n disabled={\n this.selectedHour === undefined &&\n this.selectedMinute === undefined &&\n this.selectedPeriod === undefined\n }\n size={size}\n tabIndex={0}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n const columns =\n this.el.shadowRoot?.querySelectorAll(COLUMN_CLASS);\n if (columns && columns.length > 0) {\n const lastCol = columns[columns.length - 1] as HTMLElement;\n lastCol?.focus();\n }\n }\n }}\n >\n <span aria-hidden=\"true\" innerHTML={Clear}></span>\n </ic-button>\n <ic-button\n variant=\"icon-tertiary\"\n aria-label=\"Select time\"\n class=\"ic-time-selector-check-btn\"\n onClick={this.handleConfirmClick}\n disabled={\n this.selectedHour === undefined &&\n this.selectedMinute === undefined &&\n this.selectedPeriod === undefined\n }\n size={size}\n tabIndex={0}\n >\n <span aria-hidden=\"true\" innerHTML={Check}></span>\n </ic-button>\n </div>\n </div>\n <div class=\"sr-only\" aria-live=\"polite\">\n {this.ariaLiveMessage}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
2
2
  import { html } from "lit-html";
3
3
  import readme from "./readme.md";
4
+ const INLINE_RADIO = "inline-radio";
4
5
  export default {
5
6
  title: "Web Components/Time Selector",
6
7
  component: "ic-time-selector",
@@ -61,7 +62,7 @@ export const DateObject = {
61
62
  var timeSelectorDate = document.querySelector(
62
63
  "#time-selector-default-time-date"
63
64
  );
64
- timeSelectorDate.value = new Date("2025-07-14T15:30:45");
65
+ timeSelectorDate.value = new Date("2025-07-14T15:30");
65
66
  </script>`,
66
67
  name: "Date object",
67
68
  };
@@ -101,35 +102,21 @@ export const DefaultValue12Hour = {
101
102
  ></ic-time-selector>`,
102
103
  name: "Default value - 12 hour",
103
104
  };
104
- /**
105
- * Demonstrates the time format HH:MM.
106
- */
107
- export const TimeFormat = {
108
- render: () => html `<ic-time-selector time-format="HH:MM"></ic-time-selector>`,
109
- name: "Time format HH:MM",
110
- };
111
- export const DefaultValueTimeFormat = {
112
- render: () => html `<ic-time-selector
113
- value="14:30"
114
- time-format="HH:MM"
115
- ></ic-time-selector>`,
116
- name: "Default value - Time format HH:MM",
117
- };
118
105
  /**
119
106
  * Setting min time allows you to restrict the earliest time that can be selected.
120
107
  * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.
121
108
  */
122
109
  export const MinTime = {
123
- render: () => html `<ic-time-selector min="09:30:00"></ic-time-selector>`,
124
- name: "Min time",
110
+ render: () => html `<ic-time-selector min="09:30"></ic-time-selector>`,
111
+ name: "Min time (09:30)",
125
112
  };
126
113
  /**
127
114
  * Setting max time allows you to restrict the latest time that can be selected.
128
115
  * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.
129
116
  */
130
117
  export const MaxTime = {
131
- render: () => html `<ic-time-selector max="18:00:00"></ic-time-selector>`,
132
- name: "Max time",
118
+ render: () => html `<ic-time-selector max="18:00"></ic-time-selector>`,
119
+ name: "Max time (18:00)",
133
120
  };
134
121
  /**
135
122
  * To disable specific times in the time selector, set the `disable-times` prop.
@@ -145,12 +132,9 @@ export const DisableTimes = {
145
132
  var timeSelectorDisable = document.querySelector(
146
133
  "#time-selector-default-disable-time"
147
134
  );
148
- timeSelectorDisable.disableTimes = [
149
- { start: "08:00", end: "10:00" },
150
- "13:20",
151
- ];
135
+ timeSelectorDisable.disableTimes = [{ start: "08:00", end: "10:00" }];
152
136
  </script>`,
153
- name: "Disabled times",
137
+ name: "Disabled times (08:00-10:00)",
154
138
  };
155
139
  /**
156
140
  * Demonstrates the size options for the time selector component.
@@ -163,4 +147,46 @@ export const Large = {
163
147
  render: () => html `<ic-time-selector size="large" time-period="12"></ic-time-selector>`,
164
148
  name: "Large",
165
149
  };
150
+ const defaultArgs = {
151
+ disableTimes: [{ start: "08:00", end: "10:00" }],
152
+ max: "",
153
+ min: "",
154
+ size: "medium",
155
+ theme: "inherit",
156
+ timePeriod: "24",
157
+ value: "12:00",
158
+ };
159
+ export const Playground = {
160
+ render: (args) => html `<ic-time-selector
161
+ disable-times=${args.disableTimes}
162
+ max=${args.max}
163
+ min=${args.min}
164
+ size=${args.size}
165
+ theme=${args.theme}
166
+ time-period=${args.timePeriod}
167
+ value=${args.value}
168
+ />`,
169
+ args: defaultArgs,
170
+ argTypes: {
171
+ size: {
172
+ options: ["small", "medium", "large"],
173
+ control: {
174
+ type: INLINE_RADIO,
175
+ },
176
+ },
177
+ theme: {
178
+ options: ["inherit", "light", "dark"],
179
+ control: {
180
+ type: INLINE_RADIO,
181
+ },
182
+ },
183
+ timePeriod: {
184
+ options: ["24", "12"],
185
+ control: {
186
+ type: INLINE_RADIO,
187
+ },
188
+ },
189
+ },
190
+ name: "Playground",
191
+ };
166
192
  //# sourceMappingURL=ic-time-selector.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ic-time-selector.stories.js","sourceRoot":"","sources":["../../../../../src/components/ic-time-selector/ic-time-selector.stories.js"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { html } from \"lit-html\";\nimport readme from \"./readme.md\";\n\nexport default {\n title: \"Web Components/Time Selector\",\n component: \"ic-time-selector\",\n parameters: {\n componentAPI: {\n data: readme,\n },\n },\n};\n\n/**\n * Use the time selector component to manually select a time in different formats.\n *\n * Click the 'Component API' tab to view all the available attributes, events and slots for time selector.\n *\n * To use the time selector component, import `@ukic/canary-web-components` into your application.\n *\n * Times can be selected by scrolling through each column or using the up and down arrow keys.\n *\n * To move between hour, minute and second using the keyboard, provide the required values based on the placeholders or use `:`.\n *\n */\nexport const Default = {\n render: () => html`<ic-time-selector></ic-time-selector>`,\n name: \"Default\",\n};\n\n/**\n * Retrieving the time selector value via `icChange` returns the time as a Date object.\n *\n * The event returns the Date object once hour, minute and second have been selected by clicking the tick icon button.\n */\nexport const IcChangeEvent = {\n render: () => html`<ic-time-selector></ic-time-selector>\n <script>\n var timeSelector = document.querySelector(\"ic-time-selector\");\n timeSelector.addEventListener(\"icChange\", (event) => {\n console.log(\"icChange event detail:\", event.detail);\n });\n </script>`,\n name: \"icChange Event\",\n};\n\n/**\n * To set a value to the time selector, pass the time value in the relevant time format.\n */\nexport const WithValue = {\n render: () => html`<ic-time-selector value=\"14:30:40\"></ic-time-selector>`,\n name: \"With value\",\n};\n\n/**\n * The time selector also accepts a number of different time formats within the value attribute:\n * - [Date object](#date-object)\n * - [Zulu time](#zulu-time)\n */\nexport const DateObject = {\n render: () => html`<ic-time-selector\n id=\"time-selector-default-time-date\"\n ></ic-time-selector>\n <script>\n var timeSelectorDate = document.querySelector(\n \"#time-selector-default-time-date\"\n );\n timeSelectorDate.value = new Date(\"2025-07-14T15:30:45\");\n </script>`,\n name: \"Date object\",\n};\n\nexport const ZuluTime = {\n render: () => html`<div>\n <ic-time-selector id=\"time-selector-default-zulu-time\"></ic-time-selector>\n </div>\n <script>\n var timeSelectorZulu = document.querySelector(\n \"#time-selector-default-zulu-time\"\n );\n timeSelectorZulu.value = \"15:30:45Z\";\n </script>`,\n name: \"Zulu time\",\n};\n\n/**\n * Demonstrates the `time-period` prop for 12-hour selection.\n */\nexport const TimePeriod = {\n render: () => html`<ic-time-selector time-period=\"12\"></ic-time-selector>`,\n name: \"12-Hour\",\n};\n\nexport const IcChangeEventTimePeriod = {\n render: () => html`<ic-time-selector time-period=\"12\"></ic-time-selector>\n <script>\n var icTimeSelector = document.querySelector(\"ic-time-selector\");\n icTimeSelector.addEventListener(\"icChange\", (event) => {\n console.log(\"icChange event detail:\", event.detail);\n });\n </script>`,\n name: \"icChange Event - with time period\",\n};\n\nexport const DefaultValue12Hour = {\n render: () =>\n html`<ic-time-selector\n value=\"14:30:40\"\n time-period=\"12\"\n ></ic-time-selector>`,\n name: \"Default value - 12 hour\",\n};\n\n/**\n * Demonstrates the time format HH:MM.\n */\nexport const TimeFormat = {\n render: () => html`<ic-time-selector time-format=\"HH:MM\"></ic-time-selector>`,\n name: \"Time format HH:MM\",\n};\n\nexport const DefaultValueTimeFormat = {\n render: () =>\n html`<ic-time-selector\n value=\"14:30\"\n time-format=\"HH:MM\"\n ></ic-time-selector>`,\n name: \"Default value - Time format HH:MM\",\n};\n\n/**\n * Setting min time allows you to restrict the earliest time that can be selected.\n * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const MinTime = {\n render: () => html`<ic-time-selector min=\"09:30:00\"></ic-time-selector>`,\n name: \"Min time\",\n};\n\n/**\n * Setting max time allows you to restrict the latest time that can be selected.\n * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const MaxTime = {\n render: () => html`<ic-time-selector max=\"18:00:00\"></ic-time-selector>`,\n name: \"Max time\",\n};\n\n/**\n * To disable specific times in the time selector, set the `disable-times` prop.\n * The `disable-times` prop accepts an array of time objects or strings.\n * Each time object can have a `start` and `end` property to define a range of disabled times, or it can be a single time string to disable that specific time.\n * The time can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const DisableTimes = {\n render: () => html`<ic-time-selector\n id=\"time-selector-default-disable-time\"\n ></ic-time-selector>\n <script>\n var timeSelectorDisable = document.querySelector(\n \"#time-selector-default-disable-time\"\n );\n timeSelectorDisable.disableTimes = [\n { start: \"08:00\", end: \"10:00\" },\n \"13:20\",\n ];\n </script>`,\n name: \"Disabled times\",\n};\n\n/**\n * Demonstrates the size options for the time selector component.\n */\nexport const Small = {\n render: () =>\n html`<ic-time-selector size=\"small\" time-period=\"12\"></ic-time-selector>`,\n name: \"Small\",\n};\n\nexport const Large = {\n render: () =>\n html`<ic-time-selector size=\"large\" time-period=\"12\"></ic-time-selector>`,\n name: \"Large\",\n};\n"]}
1
+ {"version":3,"file":"ic-time-selector.stories.js","sourceRoot":"","sources":["../../../../../src/components/ic-time-selector/ic-time-selector.stories.js"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport { html } from \"lit-html\";\nimport readme from \"./readme.md\";\n\nconst INLINE_RADIO = \"inline-radio\";\n\nexport default {\n title: \"Web Components/Time Selector\",\n component: \"ic-time-selector\",\n parameters: {\n componentAPI: {\n data: readme,\n },\n },\n};\n\n/**\n * Use the time selector component to manually select a time in different formats.\n *\n * Click the 'Component API' tab to view all the available attributes, events and slots for time selector.\n *\n * To use the time selector component, import `@ukic/canary-web-components` into your application.\n *\n * Times can be selected by scrolling through each column or using the up and down arrow keys.\n *\n * To move between hour, minute and second using the keyboard, provide the required values based on the placeholders or use `:`.\n *\n */\nexport const Default = {\n render: () => html`<ic-time-selector></ic-time-selector>`,\n name: \"Default\",\n};\n\n/**\n * Retrieving the time selector value via `icChange` returns the time as a Date object.\n *\n * The event returns the Date object once hour, minute and second have been selected by clicking the tick icon button.\n */\nexport const IcChangeEvent = {\n render: () => html`<ic-time-selector></ic-time-selector>\n <script>\n var timeSelector = document.querySelector(\"ic-time-selector\");\n timeSelector.addEventListener(\"icChange\", (event) => {\n console.log(\"icChange event detail:\", event.detail);\n });\n </script>`,\n name: \"icChange Event\",\n};\n\n/**\n * To set a value to the time selector, pass the time value in the relevant time format.\n */\nexport const WithValue = {\n render: () => html`<ic-time-selector value=\"14:30:40\"></ic-time-selector>`,\n name: \"With value\",\n};\n\n/**\n * The time selector also accepts a number of different time formats within the value attribute:\n * - [Date object](#date-object)\n * - [Zulu time](#zulu-time)\n */\nexport const DateObject = {\n render: () => html`<ic-time-selector\n id=\"time-selector-default-time-date\"\n ></ic-time-selector>\n <script>\n var timeSelectorDate = document.querySelector(\n \"#time-selector-default-time-date\"\n );\n timeSelectorDate.value = new Date(\"2025-07-14T15:30\");\n </script>`,\n name: \"Date object\",\n};\n\nexport const ZuluTime = {\n render: () => html`<div>\n <ic-time-selector id=\"time-selector-default-zulu-time\"></ic-time-selector>\n </div>\n <script>\n var timeSelectorZulu = document.querySelector(\n \"#time-selector-default-zulu-time\"\n );\n timeSelectorZulu.value = \"15:30:45Z\";\n </script>`,\n name: \"Zulu time\",\n};\n\n/**\n * Demonstrates the `time-period` prop for 12-hour selection.\n */\nexport const TimePeriod = {\n render: () => html`<ic-time-selector time-period=\"12\"></ic-time-selector>`,\n name: \"12-Hour\",\n};\n\nexport const IcChangeEventTimePeriod = {\n render: () => html`<ic-time-selector time-period=\"12\"></ic-time-selector>\n <script>\n var icTimeSelector = document.querySelector(\"ic-time-selector\");\n icTimeSelector.addEventListener(\"icChange\", (event) => {\n console.log(\"icChange event detail:\", event.detail);\n });\n </script>`,\n name: \"icChange Event - with time period\",\n};\n\nexport const DefaultValue12Hour = {\n render: () =>\n html`<ic-time-selector\n value=\"14:30:40\"\n time-period=\"12\"\n ></ic-time-selector>`,\n name: \"Default value - 12 hour\",\n};\n\n/**\n * Setting min time allows you to restrict the earliest time that can be selected.\n * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const MinTime = {\n render: () => html`<ic-time-selector min=\"09:30\"></ic-time-selector>`,\n name: \"Min time (09:30)\",\n};\n\n/**\n * Setting max time allows you to restrict the latest time that can be selected.\n * The value can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const MaxTime = {\n render: () => html`<ic-time-selector max=\"18:00\"></ic-time-selector>`,\n name: \"Max time (18:00)\",\n};\n\n/**\n * To disable specific times in the time selector, set the `disable-times` prop.\n * The `disable-times` prop accepts an array of time objects or strings.\n * Each time object can have a `start` and `end` property to define a range of disabled times, or it can be a single time string to disable that specific time.\n * The time can be in any format supported as `time-format`, in ISO 8601 time string format (`HH:MM:SS`) or as a JavaScript `Date` object.\n */\nexport const DisableTimes = {\n render: () => html`<ic-time-selector\n id=\"time-selector-default-disable-time\"\n ></ic-time-selector>\n <script>\n var timeSelectorDisable = document.querySelector(\n \"#time-selector-default-disable-time\"\n );\n timeSelectorDisable.disableTimes = [{ start: \"08:00\", end: \"10:00\" }];\n </script>`,\n name: \"Disabled times (08:00-10:00)\",\n};\n\n/**\n * Demonstrates the size options for the time selector component.\n */\nexport const Small = {\n render: () =>\n html`<ic-time-selector size=\"small\" time-period=\"12\"></ic-time-selector>`,\n name: \"Small\",\n};\n\nexport const Large = {\n render: () =>\n html`<ic-time-selector size=\"large\" time-period=\"12\"></ic-time-selector>`,\n name: \"Large\",\n};\n\nconst defaultArgs = {\n disableTimes: [{ start: \"08:00\", end: \"10:00\" }],\n max: \"\",\n min: \"\",\n size: \"medium\",\n theme: \"inherit\",\n timePeriod: \"24\",\n value: \"12:00\",\n};\n\nexport const Playground = {\n render: (args) =>\n html`<ic-time-selector\n disable-times=${args.disableTimes}\n max=${args.max}\n min=${args.min}\n size=${args.size}\n theme=${args.theme}\n time-period=${args.timePeriod}\n value=${args.value}\n />`,\n args: defaultArgs,\n argTypes: {\n size: {\n options: [\"small\", \"medium\", \"large\"],\n control: {\n type: INLINE_RADIO,\n },\n },\n theme: {\n options: [\"inherit\", \"light\", \"dark\"],\n control: {\n type: INLINE_RADIO,\n },\n },\n timePeriod: {\n options: [\"24\", \"12\"],\n control: {\n type: INLINE_RADIO,\n },\n },\n },\n name: \"Playground\",\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/utils/types.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAsED,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,sCAAa,CAAA;IACb,wCAAe,CAAA;AACjB,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAgKD,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,+DAAS,CAAA;IACT,iEAAU,CAAA;IACV,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,uDAAK,CAAA;IACL,yDAAM,CAAA;IACN,yDAAM,CAAA;IACN,6DAAQ,CAAA;IACR,mEAAW,CAAA;IACX,+DAAS,CAAA;IACT,kEAAU,CAAA;IACV,kEAAU,CAAA;AACZ,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B;AAED,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;AACP,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,iDAAS,CAAA;IACT,qDAAW,CAAA;IACX,mDAAU,CAAA;IACV,+CAAQ,CAAA;IACR,mDAAU,CAAA;AACZ,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,+CAAU,CAAA;IACV,+CAAU,CAAA;IACV,iDAAW,CAAA;IACX,qDAAa,CAAA;IACb,mDAAY,CAAA;IACZ,+CAAU,CAAA;IACV,mDAAY,CAAA;AACd,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB","sourcesContent":["import {\n IcPaginationLabelTypes,\n IcPaginationTypes,\n IcPaginationAlignmentOptions,\n} from \"../components\";\n\nexport type IcFocusableComponents =\n | HTMLIcBreadcrumbElement\n | HTMLIcButtonElement\n | HTMLIcCardVerticalElement\n | HTMLIcCheckboxElement\n | HTMLIcChipElement\n | HTMLIcLinkElement\n | HTMLIcNavigationButtonElement\n | HTMLIcNavigationGroupElement\n | HTMLIcNavigationItemElement\n | HTMLIcRadioOptionElement\n | HTMLIcSearchBarElement\n | HTMLIcSelectElement\n | HTMLIcSwitchElement\n | HTMLIcTabElement\n | HTMLIcTextFieldElement;\n\nexport type IcStatusVariants =\n | \"neutral\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport enum IcInformationStatus {\n Warning = \"warning\",\n Error = \"error\",\n Success = \"success\",\n}\n\nexport type IcSizes = \"medium\" | \"large\" | \"small\";\n\nexport type IcSizesNoLarge = \"medium\" | \"small\";\n\nexport type IcInformationStatusOrEmpty = \"warning\" | \"error\" | \"success\" | \"\";\n\nexport type IcNavType = \"side\" | \"top\" | \"page-header\";\n\n// From: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete\nexport type IcAutocompleteTypes =\n | \"on\"\n | \"off\"\n | \"name\"\n | \"honorific-prefix\"\n | \"given-name\"\n | \"additional-name\"\n | \"family-name\"\n | \"honorific-suffix\"\n | \"nickname\"\n | \"email\"\n | \"username\"\n | \"new-password\"\n | \"current-password\"\n | \"one-time-code\"\n | \"organization-title\"\n | \"organization\"\n | \"street-address\"\n | \"address-line1\"\n | \"address-line2\"\n | \"address-line3\"\n | \"address-level4\"\n | \"address-level3\"\n | \"address-level2\"\n | \"address-level1\"\n | \"country\"\n | \"country-name\"\n | \"postal-code\"\n | \"cc-name\"\n | \"cc-given-name\"\n | \"cc-additional-name\"\n | \"cc-family-name\"\n | \"cc-family-name\"\n | \"cc-number\"\n | \"cc-exp\"\n | \"cc-exp-month\"\n | \"cc-exp-year\"\n | \"cc-csc\"\n | \"cc-type\"\n | \"transaction-currency\"\n | \"transaction-amount\"\n | \"language\"\n | \"bday\"\n | \"bday-day\"\n | \"bday-month\"\n | \"bday-year\"\n | \"sex\"\n | \"tel\"\n | \"tel-country-code\"\n | \"tel-national\"\n | \"tel-area-code\"\n | \"tel-local\"\n | \"tel-extension\"\n | \"impp\"\n | \"url\"\n | \"photo\";\n\nexport type IcAlignment = \"left\" | \"center\" | \"full-width\";\n\nexport enum IcBrandForegroundEnum {\n Default = \"default\",\n Dark = \"dark\",\n Light = \"light\",\n}\n\nexport type IcThemeMode = \"dark\" | \"light\" | \"inherit\";\n\nexport type IcBrandForeground = \"default\" | \"dark\" | \"light\";\n\nexport type IcBrandForegroundNoDefault = \"dark\" | \"light\";\n\nexport type IcBrand = {\n mode: IcBrandForeground;\n color: IcColorRGB;\n};\n\nexport type IcAdditionalFieldTypes = \"static\" | \"dynamic\";\n\nexport type IcColorRGB = {\n r: number;\n g: number;\n b: number;\n};\n\nexport type IcColorRGBA = IcColorRGB & {\n a: number;\n};\n\nexport type IcActivationTypes = \"automatic\" | \"manual\";\n\nexport type IcAutocorrectStates = \"on\" | \"off\";\n\nexport type IcNavParentDetails = {\n navType: IcNavType | \"\";\n parent: HTMLElement | null;\n};\n\nexport type IcTypographyVariants =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"subtitle-large\"\n | \"subtitle-small\"\n | \"body\"\n | \"label\"\n | \"label-uppercase\"\n | \"caption\"\n | \"caption-uppercase\"\n | \"code-large\"\n | \"code-small\"\n | \"code-extra-small\"\n | \"badge\"\n | \"badge-small\";\n\n/**\n * @interface IcMenuOption\n * Set \"label\" and \"value\" props to use as the option's label and value.\n * Alternatively, custom names for these props can be used e.g. by setting the \"labelField\" and \"valueField\" props on the relevant component.\n *\n * Any props supplied to the \"htmlProps\" object will be spread onto the option's underlying <li> element.\n */\nexport interface IcMenuOption {\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n children?: IcMenuOption[];\n loading?: boolean;\n timedOut?: boolean;\n [key: string]: any;\n element?: {\n component: any;\n ariaLabel: string;\n };\n icon?: any;\n htmlProps?: Record<string, any>;\n}\n\nexport type IcSearchMatchPositions = \"start\" | \"anywhere\";\n\nexport type IcCallbackFunctionNoReturn = (...args: unknown[]) => void;\n\nexport type IcRequiredPropsTypes =\n | string\n | boolean\n | number\n | HTMLElement\n | IcMenuOption[]\n | undefined;\n\nexport type IcPropObject = { prop: IcRequiredPropsTypes; propName: string };\n\nexport type IcRelatedTarget = EventTarget | undefined;\n\nexport type IcOrientation = \"horizontal\" | \"vertical\";\n\nexport type IcEmphasisType = \"filled\" | \"outlined\";\n\nexport interface IcValueEventDetail {\n value: string;\n keyPressed?: string;\n}\n\nexport interface IcMultiValueEventDetail {\n value: string | string[] | null;\n keyPressed?: string;\n}\n\nexport interface IcBlurEventDetail {\n relatedTarget: IcRelatedTarget | null;\n}\n\nexport type IcSelectTypes = \"single\" | \"multi\";\n\nexport type IcSelectMethodTypes = \"auto\" | \"manual\";\n\nexport type IcDeviceSizes = 0 | 576 | 768 | 992 | 1200;\n\ntype RGB = `rgb(${string})`;\ntype RGBA = `rgba(${string})`;\ntype HEX = `#${string}`;\n\nexport type IcColor = RGB | RGBA | HEX;\n\nexport type IcIconPlacementOptions = \"left\" | \"right\" | \"top\";\n\nexport type IcButtonTooltipPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport type IcThemeSettings = \"dark\" | \"light\" | \"system\";\n\nexport interface IcPaginationBarOptions {\n alignment?: IcPaginationAlignmentOptions;\n hideAllFromItemsPerPage?: boolean;\n hideCurrentPage?: boolean;\n hideFirstAndLastPageButton?: boolean;\n hideRangeLabel?: boolean;\n itemLabel?: string;\n itemsPerPageOptions?: { label: string; value: string }[];\n monochrome?: boolean;\n pageLabel?: string;\n rangeLabelType?: IcPaginationLabelTypes;\n selectedItemsPerPage?: number;\n selectItemsPerPageOnEnter?: boolean;\n setToFirstPageOnPaginationChange?: boolean;\n showGoToPageControl?: boolean;\n showItemsPerPageControl?: boolean;\n theme?: IcThemeMode;\n type?: IcPaginationTypes;\n}\n\nexport type IcDateFormat = \"DD/MM/YYYY\" | \"MM/DD/YYYY\" | \"YYYY/MM/DD\";\n\nexport type IcDateValueFormat = string | Date | null | undefined;\n\nexport type IcTimeFormat = \"HH:MM\" | \"HH:MM:SS\" | \"HH:MM:SS.SSS\";\n\nexport type IcTimeFormatSelector = \"HH:MM\" | \"HH:MM:SS\";\n\nexport type IcDisableTimeSelection =\n | string\n | Date\n | { start: string | Date; end: string | Date };\n\nexport enum IcDateInputMonths {\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n}\n\nexport enum IcShortDayNames {\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n}\n\nexport enum IcDayNames {\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n}\n\nexport enum IcWeekDays {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\nexport type IcPositionTopOrRight = \"top\" | \"right\";\n\n// Matches HTML aria-live attribute options\nexport type IcAriaLive = \"polite\" | \"assertive\" | \"off\";\n\nexport type IcCardDensity = \"default\" | \"spacious\";\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/utils/types.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAsED,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,sCAAa,CAAA;IACb,wCAAe,CAAA;AACjB,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AA8JD,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,+DAAS,CAAA;IACT,iEAAU,CAAA;IACV,2DAAO,CAAA;IACP,2DAAO,CAAA;IACP,uDAAK,CAAA;IACL,yDAAM,CAAA;IACN,yDAAM,CAAA;IACN,6DAAQ,CAAA;IACR,mEAAW,CAAA;IACX,+DAAS,CAAA;IACT,kEAAU,CAAA;IACV,kEAAU,CAAA;AACZ,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B;AAED,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;IACL,mDAAK,CAAA;AACP,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,iDAAS,CAAA;IACT,qDAAW,CAAA;IACX,mDAAU,CAAA;IACV,+CAAQ,CAAA;IACR,mDAAU,CAAA;AACZ,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,+CAAU,CAAA;IACV,+CAAU,CAAA;IACV,iDAAW,CAAA;IACX,qDAAa,CAAA;IACb,mDAAY,CAAA;IACZ,+CAAU,CAAA;IACV,mDAAY,CAAA;AACd,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB","sourcesContent":["import {\n IcPaginationLabelTypes,\n IcPaginationTypes,\n IcPaginationAlignmentOptions,\n} from \"../components\";\n\nexport type IcFocusableComponents =\n | HTMLIcBreadcrumbElement\n | HTMLIcButtonElement\n | HTMLIcCardVerticalElement\n | HTMLIcCheckboxElement\n | HTMLIcChipElement\n | HTMLIcLinkElement\n | HTMLIcNavigationButtonElement\n | HTMLIcNavigationGroupElement\n | HTMLIcNavigationItemElement\n | HTMLIcRadioOptionElement\n | HTMLIcSearchBarElement\n | HTMLIcSelectElement\n | HTMLIcSwitchElement\n | HTMLIcTabElement\n | HTMLIcTextFieldElement;\n\nexport type IcStatusVariants =\n | \"neutral\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"success\";\n\nexport enum IcInformationStatus {\n Warning = \"warning\",\n Error = \"error\",\n Success = \"success\",\n}\n\nexport type IcSizes = \"medium\" | \"large\" | \"small\";\n\nexport type IcSizesNoLarge = \"medium\" | \"small\";\n\nexport type IcInformationStatusOrEmpty = \"warning\" | \"error\" | \"success\" | \"\";\n\nexport type IcNavType = \"side\" | \"top\" | \"page-header\";\n\n// From: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete\nexport type IcAutocompleteTypes =\n | \"on\"\n | \"off\"\n | \"name\"\n | \"honorific-prefix\"\n | \"given-name\"\n | \"additional-name\"\n | \"family-name\"\n | \"honorific-suffix\"\n | \"nickname\"\n | \"email\"\n | \"username\"\n | \"new-password\"\n | \"current-password\"\n | \"one-time-code\"\n | \"organization-title\"\n | \"organization\"\n | \"street-address\"\n | \"address-line1\"\n | \"address-line2\"\n | \"address-line3\"\n | \"address-level4\"\n | \"address-level3\"\n | \"address-level2\"\n | \"address-level1\"\n | \"country\"\n | \"country-name\"\n | \"postal-code\"\n | \"cc-name\"\n | \"cc-given-name\"\n | \"cc-additional-name\"\n | \"cc-family-name\"\n | \"cc-family-name\"\n | \"cc-number\"\n | \"cc-exp\"\n | \"cc-exp-month\"\n | \"cc-exp-year\"\n | \"cc-csc\"\n | \"cc-type\"\n | \"transaction-currency\"\n | \"transaction-amount\"\n | \"language\"\n | \"bday\"\n | \"bday-day\"\n | \"bday-month\"\n | \"bday-year\"\n | \"sex\"\n | \"tel\"\n | \"tel-country-code\"\n | \"tel-national\"\n | \"tel-area-code\"\n | \"tel-local\"\n | \"tel-extension\"\n | \"impp\"\n | \"url\"\n | \"photo\";\n\nexport type IcAlignment = \"left\" | \"center\" | \"full-width\";\n\nexport enum IcBrandForegroundEnum {\n Default = \"default\",\n Dark = \"dark\",\n Light = \"light\",\n}\n\nexport type IcThemeMode = \"dark\" | \"light\" | \"inherit\";\n\nexport type IcBrandForeground = \"default\" | \"dark\" | \"light\";\n\nexport type IcBrandForegroundNoDefault = \"dark\" | \"light\";\n\nexport type IcBrand = {\n mode: IcBrandForeground;\n color: IcColorRGB;\n};\n\nexport type IcAdditionalFieldTypes = \"static\" | \"dynamic\";\n\nexport type IcColorRGB = {\n r: number;\n g: number;\n b: number;\n};\n\nexport type IcColorRGBA = IcColorRGB & {\n a: number;\n};\n\nexport type IcActivationTypes = \"automatic\" | \"manual\";\n\nexport type IcAutocorrectStates = \"on\" | \"off\";\n\nexport type IcNavParentDetails = {\n navType: IcNavType | \"\";\n parent: HTMLElement | null;\n};\n\nexport type IcTypographyVariants =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"subtitle-large\"\n | \"subtitle-small\"\n | \"body\"\n | \"label\"\n | \"label-uppercase\"\n | \"caption\"\n | \"caption-uppercase\"\n | \"code-large\"\n | \"code-small\"\n | \"code-extra-small\"\n | \"badge\"\n | \"badge-small\";\n\n/**\n * @interface IcMenuOption\n * Set \"label\" and \"value\" props to use as the option's label and value.\n * Alternatively, custom names for these props can be used e.g. by setting the \"labelField\" and \"valueField\" props on the relevant component.\n *\n * Any props supplied to the \"htmlProps\" object will be spread onto the option's underlying <li> element.\n */\nexport interface IcMenuOption {\n description?: string;\n disabled?: boolean;\n recommended?: boolean;\n children?: IcMenuOption[];\n loading?: boolean;\n timedOut?: boolean;\n [key: string]: any;\n element?: {\n component: any;\n ariaLabel: string;\n };\n icon?: any;\n htmlProps?: Record<string, any>;\n}\n\nexport type IcSearchMatchPositions = \"start\" | \"anywhere\";\n\nexport type IcCallbackFunctionNoReturn = (...args: unknown[]) => void;\n\nexport type IcRequiredPropsTypes =\n | string\n | boolean\n | number\n | HTMLElement\n | IcMenuOption[]\n | undefined;\n\nexport type IcPropObject = { prop: IcRequiredPropsTypes; propName: string };\n\nexport type IcRelatedTarget = EventTarget | undefined;\n\nexport type IcOrientation = \"horizontal\" | \"vertical\";\n\nexport type IcEmphasisType = \"filled\" | \"outlined\";\n\nexport interface IcValueEventDetail {\n value: string;\n keyPressed?: string;\n}\n\nexport interface IcMultiValueEventDetail {\n value: string | string[] | null;\n keyPressed?: string;\n}\n\nexport interface IcBlurEventDetail {\n relatedTarget: IcRelatedTarget | null;\n}\n\nexport type IcSelectTypes = \"single\" | \"multi\";\n\nexport type IcSelectMethodTypes = \"auto\" | \"manual\";\n\nexport type IcDeviceSizes = 0 | 576 | 768 | 992 | 1200;\n\ntype RGB = `rgb(${string})`;\ntype RGBA = `rgba(${string})`;\ntype HEX = `#${string}`;\n\nexport type IcColor = RGB | RGBA | HEX;\n\nexport type IcIconPlacementOptions = \"left\" | \"right\" | \"top\";\n\nexport type IcButtonTooltipPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport type IcThemeSettings = \"dark\" | \"light\" | \"system\";\n\nexport interface IcPaginationBarOptions {\n alignment?: IcPaginationAlignmentOptions;\n hideAllFromItemsPerPage?: boolean;\n hideCurrentPage?: boolean;\n hideFirstAndLastPageButton?: boolean;\n hideRangeLabel?: boolean;\n itemLabel?: string;\n itemsPerPageOptions?: { label: string; value: string }[];\n monochrome?: boolean;\n pageLabel?: string;\n rangeLabelType?: IcPaginationLabelTypes;\n selectedItemsPerPage?: number;\n selectItemsPerPageOnEnter?: boolean;\n setToFirstPageOnPaginationChange?: boolean;\n showGoToPageControl?: boolean;\n showItemsPerPageControl?: boolean;\n theme?: IcThemeMode;\n type?: IcPaginationTypes;\n}\n\nexport type IcDateFormat = \"DD/MM/YYYY\" | \"MM/DD/YYYY\" | \"YYYY/MM/DD\";\n\nexport type IcDateValueFormat = string | Date | null | undefined;\n\nexport type IcTimeFormat = \"HH:MM\" | \"HH:MM:SS\" | \"HH:MM:SS.SSS\";\n\nexport type IcDisableTimeSelection = {\n start: string | Date;\n end: string | Date;\n};\n\nexport enum IcDateInputMonths {\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n}\n\nexport enum IcShortDayNames {\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n}\n\nexport enum IcDayNames {\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n}\n\nexport enum IcWeekDays {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n\nexport type IcPositionTopOrRight = \"top\" | \"right\";\n\n// Matches HTML aria-live attribute options\nexport type IcAriaLive = \"polite\" | \"assertive\" | \"off\";\n\nexport type IcCardDensity = \"default\" | \"spacious\";\n"]}