igniteui-webcomponents 7.1.0 → 7.1.2

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 (281) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +13 -11
  3. package/animations/easings.d.ts +1 -1
  4. package/animations/easings.js +1 -1
  5. package/animations/easings.js.map +1 -1
  6. package/components/badge/themes/dark/badge.indigo.css.js +1 -1
  7. package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
  8. package/components/button/themes/button/light/button.indigo.css.js +1 -1
  9. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  10. package/components/button/themes/icon-button/dark/icon-button.indigo.css.js +1 -1
  11. package/components/button/themes/icon-button/dark/icon-button.indigo.css.js.map +1 -1
  12. package/components/button-group/button-group.js +2 -2
  13. package/components/button-group/button-group.js.map +1 -1
  14. package/components/button-group/themes/dark/button-group.bootstrap.css.js +1 -1
  15. package/components/button-group/themes/dark/button-group.bootstrap.css.js.map +1 -1
  16. package/components/button-group/themes/dark/button-group.fluent.css.js +1 -1
  17. package/components/button-group/themes/dark/button-group.fluent.css.js.map +1 -1
  18. package/components/button-group/themes/dark/button-group.indigo.css.js +1 -1
  19. package/components/button-group/themes/dark/button-group.indigo.css.js.map +1 -1
  20. package/components/button-group/themes/dark/button-group.material.css.js +1 -1
  21. package/components/button-group/themes/dark/button-group.material.css.js.map +1 -1
  22. package/components/button-group/themes/dark/button-group.shared.css.js +1 -1
  23. package/components/button-group/themes/dark/button-group.shared.css.js.map +1 -1
  24. package/components/button-group/themes/light/button-group.bootstrap.css.js +1 -1
  25. package/components/button-group/themes/light/button-group.bootstrap.css.js.map +1 -1
  26. package/components/button-group/themes/light/button-group.fluent.css.js +1 -1
  27. package/components/button-group/themes/light/button-group.fluent.css.js.map +1 -1
  28. package/components/button-group/themes/light/button-group.indigo.css.js +1 -1
  29. package/components/button-group/themes/light/button-group.indigo.css.js.map +1 -1
  30. package/components/button-group/themes/light/button-group.material.css.js +1 -1
  31. package/components/button-group/themes/light/button-group.material.css.js.map +1 -1
  32. package/components/button-group/themes/light/button-group.shared.css.js +1 -1
  33. package/components/button-group/themes/light/button-group.shared.css.js.map +1 -1
  34. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  35. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  36. package/components/button-group/themes/shared/button/button.common.css.js +1 -1
  37. package/components/button-group/themes/shared/button/button.common.css.js.map +1 -1
  38. package/components/button-group/themes/shared/button/button.fluent.css.js +1 -1
  39. package/components/button-group/themes/shared/button/button.fluent.css.js.map +1 -1
  40. package/components/button-group/themes/shared/button/button.indigo.css.js +1 -1
  41. package/components/button-group/themes/shared/button/button.indigo.css.js.map +1 -1
  42. package/components/button-group/themes/shared/button/button.material.css.js +1 -1
  43. package/components/button-group/themes/shared/button/button.material.css.js.map +1 -1
  44. package/components/calendar/calendar.js +3 -3
  45. package/components/calendar/calendar.js.map +1 -1
  46. package/components/calendar/days-view/days-view.js +13 -11
  47. package/components/calendar/days-view/days-view.js.map +1 -1
  48. package/components/calendar/helpers.js +2 -2
  49. package/components/calendar/helpers.js.map +1 -1
  50. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  51. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  52. package/components/card/themes/dark/card.indigo.css.js +1 -1
  53. package/components/card/themes/dark/card.indigo.css.js.map +1 -1
  54. package/components/carousel/carousel.js +2 -2
  55. package/components/carousel/carousel.js.map +1 -1
  56. package/components/chat/chat-message.js +1 -0
  57. package/components/chat/chat-message.js.map +1 -1
  58. package/components/chat/themes/dark/chat.bootstrap.css.js +1 -1
  59. package/components/chat/themes/dark/chat.bootstrap.css.js.map +1 -1
  60. package/components/chat/themes/dark/chat.fluent.css.js +1 -1
  61. package/components/chat/themes/dark/chat.fluent.css.js.map +1 -1
  62. package/components/chat/themes/dark/chat.indigo.css.js +1 -1
  63. package/components/chat/themes/dark/chat.indigo.css.js.map +1 -1
  64. package/components/chat/themes/dark/chat.material.css.js +1 -1
  65. package/components/chat/themes/dark/chat.material.css.js.map +1 -1
  66. package/components/chat/themes/light/chat.bootstrap.css.js +1 -1
  67. package/components/chat/themes/light/chat.bootstrap.css.js.map +1 -1
  68. package/components/chat/themes/light/chat.fluent.css.js +1 -1
  69. package/components/chat/themes/light/chat.fluent.css.js.map +1 -1
  70. package/components/chat/themes/light/chat.indigo.css.js +1 -1
  71. package/components/chat/themes/light/chat.indigo.css.js.map +1 -1
  72. package/components/chat/themes/light/chat.material.css.js +1 -1
  73. package/components/chat/themes/light/chat.material.css.js.map +1 -1
  74. package/components/chat/themes/light/chat.shared.css.js +1 -1
  75. package/components/chat/themes/light/chat.shared.css.js.map +1 -1
  76. package/components/chat/themes/message.base.css.js +1 -1
  77. package/components/chat/themes/message.base.css.js.map +1 -1
  78. package/components/chat/themes/message.js +0 -14
  79. package/components/chat/themes/message.js.map +1 -1
  80. package/components/chat/themes/shared/chat-message/chat-message.common.css.js +1 -1
  81. package/components/chat/themes/shared/chat-message/chat-message.common.css.js.map +1 -1
  82. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js +1 -1
  83. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js.map +1 -1
  84. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  85. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  86. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  87. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  88. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js +1 -1
  89. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js.map +1 -1
  90. package/components/checkbox/themes/dark/checkbox/checkbox.material.css.js +1 -1
  91. package/components/checkbox/themes/dark/checkbox/checkbox.material.css.js.map +1 -1
  92. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js +1 -1
  93. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js.map +1 -1
  94. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js +1 -1
  95. package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js.map +1 -1
  96. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js +1 -1
  97. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js.map +1 -1
  98. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js +1 -1
  99. package/components/checkbox/themes/light/checkbox/checkbox.material.css.js.map +1 -1
  100. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js +1 -1
  101. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
  102. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  103. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  104. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  105. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  106. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  107. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  108. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  109. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  110. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  111. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  112. package/components/chip/chip.d.ts +1 -0
  113. package/components/chip/chip.js +3 -1
  114. package/components/chip/chip.js.map +1 -1
  115. package/components/chip/themes/chip.base.css.js +1 -1
  116. package/components/chip/themes/chip.base.css.js.map +1 -1
  117. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  118. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  119. package/components/chip/themes/shared/chip.common.css.js +1 -1
  120. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  121. package/components/combo/combo-header.js.map +1 -1
  122. package/components/combo/combo-item.d.ts +7 -3
  123. package/components/combo/combo-item.js +5 -4
  124. package/components/combo/combo-item.js.map +1 -1
  125. package/components/combo/combo-list.js.map +1 -1
  126. package/components/combo/combo.d.ts +92 -81
  127. package/components/combo/combo.js +327 -281
  128. package/components/combo/combo.js.map +1 -1
  129. package/components/combo/controllers/data.d.ts +50 -13
  130. package/components/combo/controllers/data.js +49 -28
  131. package/components/combo/controllers/data.js.map +1 -1
  132. package/components/combo/controllers/navigation.d.ts +19 -18
  133. package/components/combo/controllers/navigation.js +73 -90
  134. package/components/combo/controllers/navigation.js.map +1 -1
  135. package/components/combo/operations/filter.d.ts +2 -2
  136. package/components/combo/operations/filter.js.map +1 -1
  137. package/components/combo/operations/group.d.ts +2 -2
  138. package/components/combo/operations/group.js.map +1 -1
  139. package/components/combo/themes/dark/combo.indigo.css.js +1 -1
  140. package/components/combo/themes/dark/combo.indigo.css.js.map +1 -1
  141. package/components/common/context.d.ts +1 -1
  142. package/components/common/context.js +1 -1
  143. package/components/common/context.js.map +1 -1
  144. package/components/common/controllers/drag.js +2 -2
  145. package/components/common/controllers/drag.js.map +1 -1
  146. package/components/common/controllers/key-bindings.d.ts +100 -18
  147. package/components/common/controllers/key-bindings.js +54 -47
  148. package/components/common/controllers/key-bindings.js.map +1 -1
  149. package/components/common/controllers/root-click.js +3 -3
  150. package/components/common/controllers/root-click.js.map +1 -1
  151. package/components/common/controllers/slot.d.ts +1 -1
  152. package/components/common/controllers/slot.js.map +1 -1
  153. package/components/common/mixins/combo-box.d.ts +24 -19
  154. package/components/common/mixins/combo-box.js +26 -23
  155. package/components/common/mixins/combo-box.js.map +1 -1
  156. package/components/common/util.d.ts +45 -18
  157. package/components/common/util.js +13 -27
  158. package/components/common/util.js.map +1 -1
  159. package/components/date-picker/date-picker.d.ts +3 -3
  160. package/components/date-picker/date-picker.js +10 -10
  161. package/components/date-picker/date-picker.js.map +1 -1
  162. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  163. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  164. package/components/date-range-picker/date-range-picker.d.ts +3 -4
  165. package/components/date-range-picker/date-range-picker.js +11 -11
  166. package/components/date-range-picker/date-range-picker.js.map +1 -1
  167. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  168. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  169. package/components/date-time-input/date-time-input.js +1 -1
  170. package/components/date-time-input/date-time-input.js.map +1 -1
  171. package/components/date-time-input/datetime-mask-parser.d.ts +1 -2
  172. package/components/date-time-input/datetime-mask-parser.js +1 -2
  173. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  174. package/components/dialog/themes/dark/dialog.indigo.css.js +1 -1
  175. package/components/dialog/themes/dark/dialog.indigo.css.js.map +1 -1
  176. package/components/dropdown/dropdown.d.ts +2 -2
  177. package/components/dropdown/dropdown.js +6 -6
  178. package/components/dropdown/dropdown.js.map +1 -1
  179. package/components/dropdown/themes/dark/dropdown.indigo.css.js +1 -1
  180. package/components/dropdown/themes/dark/dropdown.indigo.css.js.map +1 -1
  181. package/components/dropdown/themes/shared/item/dropdown-item.common.css.js +1 -1
  182. package/components/dropdown/themes/shared/item/dropdown-item.common.css.js.map +1 -1
  183. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
  184. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
  185. package/components/highlight/service.js +1 -1
  186. package/components/highlight/service.js.map +1 -1
  187. package/components/input/themes/shared/input.material.css.js +1 -1
  188. package/components/input/themes/shared/input.material.css.js.map +1 -1
  189. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  190. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  191. package/components/nav-drawer/themes/container.base.css.js +1 -1
  192. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  193. package/components/navbar/themes/dark/navbar.indigo.css.js +1 -1
  194. package/components/navbar/themes/dark/navbar.indigo.css.js.map +1 -1
  195. package/components/progress/themes/circular/dark/circular.progress.indigo.css.js +1 -1
  196. package/components/progress/themes/circular/dark/circular.progress.indigo.css.js.map +1 -1
  197. package/components/progress/themes/circular/dark/circular.progress.shared.css.js +1 -1
  198. package/components/progress/themes/circular/dark/circular.progress.shared.css.js.map +1 -1
  199. package/components/progress/themes/circular/light/circular.progress.indigo.css.js +1 -1
  200. package/components/progress/themes/circular/light/circular.progress.indigo.css.js.map +1 -1
  201. package/components/progress/themes/circular/light/circular.progress.shared.css.js +1 -1
  202. package/components/progress/themes/circular/light/circular.progress.shared.css.js.map +1 -1
  203. package/components/progress/themes/circular/shared/circular.progress.common.css.js +1 -1
  204. package/components/progress/themes/circular/shared/circular.progress.common.css.js.map +1 -1
  205. package/components/progress/themes/linear/dark/linear.progress.indigo.css.js +1 -1
  206. package/components/progress/themes/linear/dark/linear.progress.indigo.css.js.map +1 -1
  207. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  208. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  209. package/components/radio/radio.js +1 -1
  210. package/components/radio/radio.js.map +1 -1
  211. package/components/rating/rating.d.ts +57 -28
  212. package/components/rating/rating.js +123 -120
  213. package/components/rating/rating.js.map +1 -1
  214. package/components/resize-container/resize-controller.js +2 -2
  215. package/components/resize-container/resize-controller.js.map +1 -1
  216. package/components/select/select.d.ts +3 -3
  217. package/components/select/select.js +10 -10
  218. package/components/select/select.js.map +1 -1
  219. package/components/select/themes/dark/select.indigo.css.js +1 -1
  220. package/components/select/themes/dark/select.indigo.css.js.map +1 -1
  221. package/components/snackbar/themes/dark/snackbar.indigo.css.js +1 -1
  222. package/components/snackbar/themes/dark/snackbar.indigo.css.js.map +1 -1
  223. package/components/splitter/splitter.d.ts +2 -2
  224. package/components/splitter/splitter.js.map +1 -1
  225. package/components/splitter/types.d.ts +11 -5
  226. package/components/splitter/types.js.map +1 -1
  227. package/components/stepper/common/state.d.ts +1 -1
  228. package/components/stepper/common/state.js.map +1 -1
  229. package/components/stepper/stepper.js +3 -3
  230. package/components/stepper/stepper.js.map +1 -1
  231. package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
  232. package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
  233. package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
  234. package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
  235. package/components/stepper/themes/step/dark/step.material.css.js +1 -1
  236. package/components/stepper/themes/step/dark/step.material.css.js.map +1 -1
  237. package/components/tabs/tab.d.ts +0 -1
  238. package/components/tabs/tab.js +2 -3
  239. package/components/tabs/tab.js.map +1 -1
  240. package/components/tabs/tabs.js +3 -3
  241. package/components/tabs/tabs.js.map +1 -1
  242. package/components/tile-manager/themes/dark/tile-manager.indigo.css.js +1 -1
  243. package/components/tile-manager/themes/dark/tile-manager.indigo.css.js.map +1 -1
  244. package/components/tile-manager/tile.js +2 -2
  245. package/components/tile-manager/tile.js.map +1 -1
  246. package/components/toast/themes/dark/toast.indigo.css.js +1 -1
  247. package/components/toast/themes/dark/toast.indigo.css.js.map +1 -1
  248. package/components/tree/themes/dark/container.bootstrap.css.js +1 -1
  249. package/components/tree/themes/dark/container.bootstrap.css.js.map +1 -1
  250. package/components/tree/themes/dark/container.indigo.css.js +1 -1
  251. package/components/tree/themes/dark/container.indigo.css.js.map +1 -1
  252. package/components/tree/themes/shared/item.indigo.css.js +1 -1
  253. package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
  254. package/components/tree/tree-item.js +2 -3
  255. package/components/tree/tree-item.js.map +1 -1
  256. package/custom-elements.json +1726 -983
  257. package/igniteui-webcomponents.css-data.json +1 -1
  258. package/igniteui-webcomponents.html-data.json +1 -1
  259. package/index.d.ts +1 -1
  260. package/index.js.map +1 -1
  261. package/package.json +1 -1
  262. package/skills/README.md +3 -0
  263. package/skills/igniteui-wc-choose-components/SKILL.md +53 -0
  264. package/skills/igniteui-wc-generate-from-image-design/SKILL.md +228 -0
  265. package/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +130 -0
  266. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +147 -0
  267. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +22 -1
  268. package/skills/igniteui-wc-integrate-with-framework/references/angular.md +2 -0
  269. package/skills/igniteui-wc-integrate-with-framework/references/react.md +2 -0
  270. package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +2 -0
  271. package/skills/igniteui-wc-integrate-with-framework/references/vue.md +2 -0
  272. package/web-types.json +2 -2
  273. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.d.ts +0 -1
  274. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js +0 -3
  275. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js.map +0 -1
  276. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.d.ts +0 -1
  277. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js +0 -3
  278. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js.map +0 -1
  279. package/components/combo/controllers/selection.d.ts +0 -33
  280. package/components/combo/controllers/selection.js +0 -169
  281. package/components/combo/controllers/selection.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport {\n convertToDate,\n convertToDateRange,\n createDateConstraints,\n} from '../calendar/helpers.js';\nimport { CalendarDay } from '../calendar/model.js';\nimport type { DateRangeDescriptor, WeekDays } from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n type IgcDateRangePickerResourceStrings,\n IgcDateRangePickerResourceStringsEN,\n} from '../common/i18n/EN/date-range-picker.resources.js';\nimport {\n addI18nController,\n formatDisplayDate,\n getDateTimeFormat,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { FormValueDateRangeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n asNumber,\n clamp,\n createCounter,\n equal,\n findElementFromEventPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type { ContentOrientation, PickerMode } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\n/* jsonAPIPlainObject */\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n/* jsonAPIPlainObject */\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\nexport interface IgcDateRangePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<DateRangeValue | null>;\n igcInput: CustomEvent<DateRangeValue | null>;\n}\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The igc-date-range-picker allows the user to select a range of dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (single input).\n * @slot suffix-end - Renders content after the end input (single input).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcBaseComboBoxLikeComponent>\n >(IgcBaseComboBoxLikeComponent)\n) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent,\n IgcPredefinedRangesAreaComponent\n );\n }\n\n // #region Internal state & properties\n\n private static readonly _increment = createCounter();\n\n protected readonly _inputId = `date-range-picker-${IgcDateRangePickerComponent._increment()}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n /**\n * For now we use the core validation strings internally only, to avoid mixing with old resources by users.\n * To Do: Update resourceStrings type when the IgcDateRangePickerResourceStrings is changed to IDateRangePickerResourceStrings\n */\n protected readonly _i18nController =\n addI18nController<IgcDateRangePickerResourceStrings>(this, {\n defaultEN: IgcDateRangePickerResourceStringsEN,\n onResourceChange: this._updateDefaultMask,\n });\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates: DateRangeDescriptor[] = [];\n private _dateConstraints: DateRangeDescriptor[] = [];\n private _defaultDisplayFormat!: string;\n private _displayFormat?: string;\n private _inputFormat?: string;\n private _placeholder?: string;\n private _defaultMask!: string;\n private _oldValue: DateRangeValue | null = null;\n private _visibleMonths = 2;\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n @state()\n private _maskedRangeValue = '';\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: IgcDateTimeInputComponent[];\n\n @query(IgcInputComponent.tagName)\n private readonly _input!: IgcInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-start' })\n private readonly _startPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-end' })\n private readonly _endPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-start' })\n private readonly _startSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-end' })\n private readonly _endSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerDateSlotItems!: HTMLElement[];\n\n // #endregion\n\n // #region General properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public set resourceStrings(value: IgcDateRangePickerResourceStrings) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcDateRangePickerResourceStrings {\n return this._i18nController.resourceStrings;\n }\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the control (single input).\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The label attribute of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label attribute of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder attribute of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder attribute of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder attribute of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n this._updateMaskedRangeValue();\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * The date format to apply on the inputs.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n this._updateMaskedRangeValue();\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._defaultMask;\n }\n\n // #endregion\n\n // #region Validation properties\n\n /**\n * The minimum value required for the date range picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the date range picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._validate();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n // #endregion\n\n // #region Calendar properties\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n public set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: ContentOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n })\n .set([altKey, arrowDown], this.handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n protected override firstUpdated() {\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /** Clears the input parts of the component of any user input */\n public clear() {\n this._oldValue = this.value;\n this.value = null;\n if (this.useTwoInputs) {\n this._inputs[0]?.clear();\n this._inputs[1]?.clear();\n }\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Observed properties\n\n @watch('open')\n protected _openChange() {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this.value;\n }\n }\n\n @watch('locale')\n protected _updateDefaultMask(): void {\n this._defaultMask = getDefaultDateTimeFormat(this.locale);\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n this._updateMaskedRangeValue();\n }\n\n @watch('useTwoInputs')\n protected async _updateDateRange() {\n await this._calendar?.updateComplete;\n this._updateMaskedRangeValue();\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n @watch('mode')\n protected async _modeChanged() {\n if (!this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _handleClosing() {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event) {\n event.stopPropagation();\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event) {\n event.stopPropagation();\n }\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleInputEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n this.value = this._getUpdatedDateRange(input, newValue);\n this._calendar.activeDate =\n newValue ?? this._firstDefinedInRange ?? this._calendar.activeDate;\n\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n const updatedRange = this._getUpdatedDateRange(input, newValue);\n const { start, end } = this._swapDates(updatedRange);\n\n this._setCalendarRangeValues();\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this._handleBlur();\n\n const isSameValue = equal(this.value, this._oldValue);\n if (!(this.useTwoInputs || this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n }\n }\n\n protected _handleInputClick(event: Event) {\n if (findElementFromEventPath('input', event)) {\n // Open only if the click originates from the underlying input\n this.handleAnchorClick();\n }\n }\n\n protected async _onEscapeKey() {\n if (await this._hide(true)) {\n if (!this._isDropDown) {\n this._revertValue();\n }\n this.useTwoInputs ? this._inputs[0].focus() : this._input.focus();\n }\n }\n\n protected override async handleAnchorClick() {\n super.handleAnchorClick();\n this._setCalendarActiveDateAndViewIndex();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected async _handleCalendarChangeEvent(event: CustomEvent<Date>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n const dateRange = [this.value?.start, this.value?.end];\n this._calendar.values = dateRange?.map((d) => d ?? '');\n return;\n }\n\n const rangeValues = (event.target as IgcCalendarComponent).values;\n this.value = {\n start: rangeValues[0],\n end: rangeValues[rangeValues.length - 1],\n };\n\n if (this._isDropDown) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent) {\n event.preventDefault();\n }\n\n // #endregion\n\n // #region Private methods\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /**\n * Sets the active date of the calendar based on current selection, if any,\n * or its current active date and its active day view index to always be the first one.\n */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = '_activeDaysViewIndex';\n\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const { start = null, end = null } = this.value ?? {};\n\n return input === this._inputs[0]\n ? { start: newValue, end }\n : { start, end: newValue };\n }\n\n // Delegates the validity methods of internal input elements\n // to the component's own validation logic specific to date-range values.\n // Checks for dirty state to avoid unnecessary validation on form reset,\n // caused by the inputs value being set.\n private _delegateInputsValidity() {\n const inputs = this.useTwoInputs ? this._inputs : [this._input];\n\n inputs.forEach((input) => {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n });\n }\n\n private _setDateConstraints() {\n this._dateConstraints =\n createDateConstraints(this.min, this.max, this.disabledDates) ?? [];\n }\n\n private _updateMaskedRangeValue() {\n if (this.useTwoInputs) {\n return;\n }\n\n if (!isCompleteDateRange(this.value)) {\n this._maskedRangeValue = '';\n return;\n }\n\n const { start, end } = this.value;\n const displayFormat = getDateTimeFormat(this.displayFormat);\n\n const startValue = formatDisplayDate(start, this.locale, displayFormat);\n const endValue = formatDisplayDate(end, this.locale, displayFormat);\n this._maskedRangeValue = `${startValue} - ${endValue}`;\n }\n\n private _setCalendarRangeValues() {\n if (!this._calendar) {\n return;\n }\n\n if (isCompleteDateRange(this.value)) {\n this._calendar.values =\n CalendarDay.compare(this.value.start, this.value.end) === 0\n ? [this.value.start]\n : [this.value.start, this.value.end];\n this._calendar.activeDate = this._firstDefinedInRange;\n return;\n }\n\n this._calendar.values = this._firstDefinedInRange\n ? [this._firstDefinedInRange]\n : null;\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private async _shouldCloseCalendarDropdown() {\n if (\n !this.keepOpenOnSelect &&\n this._calendar.values.length > 1 &&\n (await this._hide(true))\n ) {\n return this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n private _renderClearIcon(picker: DateRangePickerInput = 'start') {\n const clearIcon = this.useTwoInputs ? `clear-icon-${picker}` : 'clear-icon';\n return this._firstDefinedInRange\n ? html`\n <span\n slot=\"suffix\"\n part=${clearIcon}\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=${clearIcon}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon(picker: DateRangePickerInput = 'start') {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n const calendarIcon = this.useTwoInputs ? `${state}-${picker}` : state;\n\n return html`\n <span\n slot=\"prefix\"\n part=${calendarIcon}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this.handleAnchorClick}\n >\n <slot name=${calendarIcon}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerDateSlotItems)\n ? ''\n : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=\"range\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._firstDefinedInRange}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, label: calendar-label, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected _renderPicker(id: string) {\n const isIndigo = this._themes.theme === 'indigo';\n\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.cancel}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.done}</igc-button\n >\n </igc-dialog>\n `;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string, picker: DateRangePickerInput = 'start') {\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n const placeholder =\n picker === 'start' ? this.placeholderStart : this.placeholderEnd;\n const label = picker === 'start' ? this.labelStart : this.labelEnd;\n const format = getDateTimeFormat(this._displayFormat);\n const value = picker === 'start' ? this.value?.start : this.value?.end;\n\n const prefixes =\n picker === 'start' ? this._startPrefixes : this._endPrefixes;\n const suffixes =\n picker === 'start' ? this._startSuffixes : this._endSuffixes;\n const prefix = isEmpty(prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon(picker)}\n <slot name=${`prefix-${picker}`} slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon(picker)}\n <slot name=${`suffix-${picker}`} slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, 'start')}\n <div part=\"separator\">\n <slot name=\"separator\"> ${this.resourceStrings.separator} </slot>\n </div>\n ${this._renderInput(idEnd, 'end')}\n </div>\n ${this._renderPicker(idStart)} ${this._renderHelperText()}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-input\n id=${id}\n aria-haspopup=\"dialog\"\n .value=${this._maskedRangeValue}\n label=${this.label}\n placeholder=${this.placeholder}\n ?readonly=${true}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-input>\n ${this._renderHelperText()} ${this._renderPicker(id)}\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n\ntype DateRangePickerInput = 'start' | 'end';\n"]}
1
+ {"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport {\n convertToDate,\n convertToDateRange,\n createDateConstraints,\n} from '../calendar/helpers.js';\nimport { CalendarDay } from '../calendar/model.js';\nimport type { DateRangeDescriptor, WeekDays } from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n type IgcDateRangePickerResourceStrings,\n IgcDateRangePickerResourceStringsEN,\n} from '../common/i18n/EN/date-range-picker.resources.js';\nimport {\n addI18nController,\n formatDisplayDate,\n getDateTimeFormat,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport { IgcComboBoxBaseLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { FormValueDateRangeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n asNumber,\n clamp,\n equal,\n getElementFromPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type { ContentOrientation, PickerMode } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\n/* jsonAPIPlainObject */\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n/* jsonAPIPlainObject */\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\nexport interface IgcDateRangePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<DateRangeValue | null>;\n igcInput: CustomEvent<DateRangeValue | null>;\n}\n\nlet nextId = 1;\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The igc-date-range-picker allows the user to select a range of dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (single input).\n * @slot suffix-end - Renders content after the end input (single input).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcComboBoxBaseLikeComponent>\n >(IgcComboBoxBaseLikeComponent)\n) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent,\n IgcPredefinedRangesAreaComponent\n );\n }\n\n // #region Internal state & properties\n\n protected readonly _inputId = `date-range-picker-${nextId++}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n /**\n * For now we use the core validation strings internally only, to avoid mixing with old resources by users.\n * To Do: Update resourceStrings type when the IgcDateRangePickerResourceStrings is changed to IDateRangePickerResourceStrings\n */\n protected readonly _i18nController =\n addI18nController<IgcDateRangePickerResourceStrings>(this, {\n defaultEN: IgcDateRangePickerResourceStringsEN,\n onResourceChange: this._updateDefaultMask,\n });\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates: DateRangeDescriptor[] = [];\n private _dateConstraints: DateRangeDescriptor[] = [];\n private _defaultDisplayFormat!: string;\n private _displayFormat?: string;\n private _inputFormat?: string;\n private _placeholder?: string;\n private _defaultMask!: string;\n private _oldValue: DateRangeValue | null = null;\n private _visibleMonths = 2;\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n @state()\n private _maskedRangeValue = '';\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: IgcDateTimeInputComponent[];\n\n @query(IgcInputComponent.tagName)\n private readonly _input!: IgcInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-start' })\n private readonly _startPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-end' })\n private readonly _endPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-start' })\n private readonly _startSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-end' })\n private readonly _endSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerDateSlotItems!: HTMLElement[];\n\n // #endregion\n\n // #region General properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public set resourceStrings(value: IgcDateRangePickerResourceStrings) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcDateRangePickerResourceStrings {\n return this._i18nController.resourceStrings;\n }\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the control (single input).\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The label attribute of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label attribute of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder attribute of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder attribute of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder attribute of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n this._updateMaskedRangeValue();\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * The date format to apply on the inputs.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n this._updateMaskedRangeValue();\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._defaultMask;\n }\n\n // #endregion\n\n // #region Validation properties\n\n /**\n * The minimum value required for the date range picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the date range picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._validate();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n // #endregion\n\n // #region Calendar properties\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n public set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: ContentOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\n\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n })\n .set([altKey, arrowDown], this._handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n protected override firstUpdated() {\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /** Clears the input parts of the component of any user input */\n public clear() {\n this._oldValue = this.value;\n this.value = null;\n if (this.useTwoInputs) {\n this._inputs[0]?.clear();\n this._inputs[1]?.clear();\n }\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Observed properties\n\n @watch('open')\n protected _openChange() {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this.value;\n }\n }\n\n @watch('locale')\n protected _updateDefaultMask(): void {\n this._defaultMask = getDefaultDateTimeFormat(this.locale);\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n this._updateMaskedRangeValue();\n }\n\n @watch('useTwoInputs')\n protected async _updateDateRange() {\n await this._calendar?.updateComplete;\n this._updateMaskedRangeValue();\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n @watch('mode')\n protected async _modeChanged() {\n if (!this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _handleClosing() {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event) {\n event.stopPropagation();\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event) {\n event.stopPropagation();\n }\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleInputEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n this.value = this._getUpdatedDateRange(input, newValue);\n this._calendar.activeDate =\n newValue ?? this._firstDefinedInRange ?? this._calendar.activeDate;\n\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n const updatedRange = this._getUpdatedDateRange(input, newValue);\n const { start, end } = this._swapDates(updatedRange);\n\n this._setCalendarRangeValues();\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this._handleBlur();\n\n const isSameValue = equal(this.value, this._oldValue);\n if (!(this.useTwoInputs || this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n }\n }\n\n protected _handleInputClick(event: Event) {\n if (getElementFromPath('input', event)) {\n // Open only if the click originates from the underlying input\n this._handleAnchorClick();\n }\n }\n\n protected async _onEscapeKey() {\n if (await this._hide(true)) {\n if (!this._isDropDown) {\n this._revertValue();\n }\n this.useTwoInputs ? this._inputs[0].focus() : this._input.focus();\n }\n }\n\n protected override async _handleAnchorClick() {\n super._handleAnchorClick();\n this._setCalendarActiveDateAndViewIndex();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected async _handleCalendarChangeEvent(event: CustomEvent<Date>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n const dateRange = [this.value?.start, this.value?.end];\n this._calendar.values = dateRange?.map((d) => d ?? '');\n return;\n }\n\n const rangeValues = (event.target as IgcCalendarComponent).values;\n this.value = {\n start: rangeValues[0],\n end: rangeValues[rangeValues.length - 1],\n };\n\n if (this._isDropDown) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent) {\n event.preventDefault();\n }\n\n // #endregion\n\n // #region Private methods\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /**\n * Sets the active date of the calendar based on current selection, if any,\n * or its current active date and its active day view index to always be the first one.\n */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = '_activeDaysViewIndex';\n\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const { start = null, end = null } = this.value ?? {};\n\n return input === this._inputs[0]\n ? { start: newValue, end }\n : { start, end: newValue };\n }\n\n // Delegates the validity methods of internal input elements\n // to the component's own validation logic specific to date-range values.\n // Checks for dirty state to avoid unnecessary validation on form reset,\n // caused by the inputs value being set.\n private _delegateInputsValidity() {\n const inputs = this.useTwoInputs ? this._inputs : [this._input];\n\n inputs.forEach((input) => {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n });\n }\n\n private _setDateConstraints() {\n this._dateConstraints =\n createDateConstraints(this.min, this.max, this.disabledDates) ?? [];\n }\n\n private _updateMaskedRangeValue() {\n if (this.useTwoInputs) {\n return;\n }\n\n if (!isCompleteDateRange(this.value)) {\n this._maskedRangeValue = '';\n return;\n }\n\n const { start, end } = this.value;\n const displayFormat = getDateTimeFormat(this.displayFormat);\n\n const startValue = formatDisplayDate(start, this.locale, displayFormat);\n const endValue = formatDisplayDate(end, this.locale, displayFormat);\n this._maskedRangeValue = `${startValue} - ${endValue}`;\n }\n\n private _setCalendarRangeValues() {\n if (!this._calendar) {\n return;\n }\n\n if (isCompleteDateRange(this.value)) {\n this._calendar.values =\n CalendarDay.compare(this.value.start, this.value.end) === 0\n ? [this.value.start]\n : [this.value.start, this.value.end];\n this._calendar.activeDate = this._firstDefinedInRange;\n return;\n }\n\n this._calendar.values = this._firstDefinedInRange\n ? [this._firstDefinedInRange]\n : null;\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private async _shouldCloseCalendarDropdown() {\n if (\n !this.keepOpenOnSelect &&\n this._calendar.values.length > 1 &&\n (await this._hide(true))\n ) {\n return this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n private _renderClearIcon(picker: DateRangePickerInput = 'start') {\n const clearIcon = this.useTwoInputs ? `clear-icon-${picker}` : 'clear-icon';\n return this._firstDefinedInRange\n ? html`\n <span\n slot=\"suffix\"\n part=${clearIcon}\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=${clearIcon}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon(picker: DateRangePickerInput = 'start') {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n const calendarIcon = this.useTwoInputs ? `${state}-${picker}` : state;\n\n return html`\n <span\n slot=\"prefix\"\n part=${calendarIcon}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this._handleAnchorClick}\n >\n <slot name=${calendarIcon}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerDateSlotItems)\n ? ''\n : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=\"range\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._firstDefinedInRange}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, label: calendar-label, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected _renderPicker(id: string) {\n const isIndigo = this._themes.theme === 'indigo';\n\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.cancel}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.done}</igc-button\n >\n </igc-dialog>\n `;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string, picker: DateRangePickerInput = 'start') {\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n const placeholder =\n picker === 'start' ? this.placeholderStart : this.placeholderEnd;\n const label = picker === 'start' ? this.labelStart : this.labelEnd;\n const format = getDateTimeFormat(this._displayFormat);\n const value = picker === 'start' ? this.value?.start : this.value?.end;\n\n const prefixes =\n picker === 'start' ? this._startPrefixes : this._endPrefixes;\n const suffixes =\n picker === 'start' ? this._startSuffixes : this._endSuffixes;\n const prefix = isEmpty(prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon(picker)}\n <slot name=${`prefix-${picker}`} slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon(picker)}\n <slot name=${`suffix-${picker}`} slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, 'start')}\n <div part=\"separator\">\n <slot name=\"separator\"> ${this.resourceStrings.separator} </slot>\n </div>\n ${this._renderInput(idEnd, 'end')}\n </div>\n ${this._renderPicker(idStart)} ${this._renderHelperText()}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-input\n id=${id}\n aria-haspopup=\"dialog\"\n .value=${this._maskedRangeValue}\n label=${this.label}\n placeholder=${this.placeholder}\n ?readonly=${true}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-input>\n ${this._renderHelperText()} ${this._renderPicker(id)}\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n\ntype DateRangePickerInput = 'start' | 'end';\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--label-color: var(--ig-date-range-picker-label-color, hsl(from var(--ig-primary-500-contrast) h s l/0.6));--ranges-background: var(--ig-date-range-picker-ranges-background, var(--ig-primary-500-contrast));--ranges-border: var(--ig-date-range-picker-ranges-border, var(--ig-gray-100));--default-size: var(--ig-date-range-picker-default-size, 2);--size: var(--ig-date-range-picker-size, max(var(--is-large, 1) * max(2rem, -1 * 2rem), var(--is-medium, 1) * max(1.75rem, -1 * 1.75rem), var(--is-small, 1) * max(1.5rem, -1 * 1.5rem)));--ig-theme: indigo;--ig-theme-variant: dark;--idle-secondary-color: var(--ig-input-group-idle-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--focused-secondary-color: var(--ig-input-group-focused-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--disabled-text-color: var(--ig-input-group-disabled-text-color, hsl(from var(--ig-gray-50-contrast) h s l/0.2));--input-prefix-color: var(--ig-input-group-input-prefix-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--content-background: var(--ig-calendar-content-background, var(--ig-gray-900-contrast));--border-color: var(--ig-calendar-border-color, var(--ig-gray-100));--border-radius: var(--ig-calendar-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 0.375rem), 0.375rem));--actions-divider-color: var(--ig-calendar-actions-divider-color, var(--ig-gray-100));--default-size: var(--ig-calendar-default-size, 2)}:host igc-dialog{--border-color: var(--ig-calendar-border-color, var(--ig-gray-100))}:host igc-dialog[open]::part(base){box-shadow:var(--ig-elevation-7)}:host igc-popover::part(container){box-shadow:var(--ig-elevation-2)}`;
2
+ export const styles = css `:host{--label-color: var(--ig-date-range-picker-label-color, hsl(from var(--ig-primary-500-contrast) h s l/0.6));--ranges-background: var(--ig-date-range-picker-ranges-background, var(--ig-gray-50));--ranges-border: var(--ig-date-range-picker-ranges-border, var(--ig-gray-100));--default-size: var(--ig-date-range-picker-default-size, 2);--size: var(--ig-date-range-picker-size, max(var(--is-large, 1) * max(2rem, -1 * 2rem), var(--is-medium, 1) * max(1.75rem, -1 * 1.75rem), var(--is-small, 1) * max(1.5rem, -1 * 1.5rem)));--ig-theme: indigo;--ig-theme-variant: dark;--idle-secondary-color: var(--ig-input-group-idle-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--focused-secondary-color: var(--ig-input-group-focused-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--disabled-text-color: var(--ig-input-group-disabled-text-color, hsl(from var(--ig-gray-50-contrast) h s l/0.2));--input-prefix-color: var(--ig-input-group-input-prefix-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--content-background: var(--ig-calendar-content-background, var(--ig-gray-50));--border-color: var(--ig-calendar-border-color, var(--ig-gray-100));--border-radius: var(--ig-calendar-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 0.375rem), 0.375rem));--actions-divider-color: var(--ig-calendar-actions-divider-color, var(--ig-gray-100));--default-size: var(--ig-calendar-default-size, 2)}:host igc-dialog{--border-color: var(--ig-calendar-border-color, var(--ig-gray-100))}:host igc-dialog[open]::part(base){box-shadow:var(--ig-elevation-7)}:host igc-popover::part(container){box-shadow:var(--ig-elevation-2)}`;
3
3
  //# sourceMappingURL=date-range-picker.indigo.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/date-range-picker/themes/dark/date-range-picker.indigo.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,4oDAA4oD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--label-color: var(--ig-date-range-picker-label-color, hsl(from var(--ig-primary-500-contrast) h s l/0.6));--ranges-background: var(--ig-date-range-picker-ranges-background, var(--ig-primary-500-contrast));--ranges-border: var(--ig-date-range-picker-ranges-border, var(--ig-gray-100));--default-size: var(--ig-date-range-picker-default-size, 2);--size: var(--ig-date-range-picker-size, max(var(--is-large, 1) * max(2rem, -1 * 2rem), var(--is-medium, 1) * max(1.75rem, -1 * 1.75rem), var(--is-small, 1) * max(1.5rem, -1 * 1.5rem)));--ig-theme: indigo;--ig-theme-variant: dark;--idle-secondary-color: var(--ig-input-group-idle-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--focused-secondary-color: var(--ig-input-group-focused-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--disabled-text-color: var(--ig-input-group-disabled-text-color, hsl(from var(--ig-gray-50-contrast) h s l/0.2));--input-prefix-color: var(--ig-input-group-input-prefix-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--content-background: var(--ig-calendar-content-background, var(--ig-gray-900-contrast));--border-color: var(--ig-calendar-border-color, var(--ig-gray-100));--border-radius: var(--ig-calendar-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 0.375rem), 0.375rem));--actions-divider-color: var(--ig-calendar-actions-divider-color, var(--ig-gray-100));--default-size: var(--ig-calendar-default-size, 2)}:host igc-dialog{--border-color: var(--ig-calendar-border-color, var(--ig-gray-100))}:host igc-dialog[open]::part(base){box-shadow:var(--ig-elevation-7)}:host igc-popover::part(container){box-shadow:var(--ig-elevation-2)}`;\n "]}
1
+ {"version":3,"file":"date-range-picker.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/date-range-picker/themes/dark/date-range-picker.indigo.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,qnDAAqnD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--label-color: var(--ig-date-range-picker-label-color, hsl(from var(--ig-primary-500-contrast) h s l/0.6));--ranges-background: var(--ig-date-range-picker-ranges-background, var(--ig-gray-50));--ranges-border: var(--ig-date-range-picker-ranges-border, var(--ig-gray-100));--default-size: var(--ig-date-range-picker-default-size, 2);--size: var(--ig-date-range-picker-size, max(var(--is-large, 1) * max(2rem, -1 * 2rem), var(--is-medium, 1) * max(1.75rem, -1 * 1.75rem), var(--is-small, 1) * max(1.5rem, -1 * 1.5rem)));--ig-theme: indigo;--ig-theme-variant: dark;--idle-secondary-color: var(--ig-input-group-idle-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--focused-secondary-color: var(--ig-input-group-focused-secondary-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--disabled-text-color: var(--ig-input-group-disabled-text-color, hsl(from var(--ig-gray-50-contrast) h s l/0.2));--input-prefix-color: var(--ig-input-group-input-prefix-color, hsl(from var(--ig-gray-50-contrast) h s l/0.6));--content-background: var(--ig-calendar-content-background, var(--ig-gray-50));--border-color: var(--ig-calendar-border-color, var(--ig-gray-100));--border-radius: var(--ig-calendar-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 1) * 0.375rem), 0.375rem));--actions-divider-color: var(--ig-calendar-actions-divider-color, var(--ig-gray-100));--default-size: var(--ig-calendar-default-size, 2)}:host igc-dialog{--border-color: var(--ig-calendar-border-color, var(--ig-gray-100))}:host igc-dialog[open]::part(base){box-shadow:var(--ig-elevation-7)}:host igc-popover::part(container){box-shadow:var(--ig-elevation-2)}`;\n "]}
@@ -110,7 +110,7 @@ export default class IgcDateTimeInputComponent extends EventEmitterMixin(IgcMask
110
110
  this.spinLoop = true;
111
111
  addKeybindings(this, {
112
112
  skip: () => this.readOnly,
113
- bindingDefaults: { triggers: ['keydownRepeat'] },
113
+ bindingDefaults: { repeat: true },
114
114
  })
115
115
  .set([ctrlKey, ';'], this._setCurrentDateTime)
116
116
  .set(arrowUp, this._keyboardSpin.bind(this, 'up'))
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, type PropertyValues } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { convertToDate, isValidDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n addI18nController,\n formatDisplayDate,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n DEFAULT_DATE_PARTS_SPIN_DELTAS,\n} from './date-part.js';\nimport {\n createDatePart,\n DateParts,\n DateTimeMaskParser,\n} from './datetime-mask-parser.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange'\n> {\n igcChange: CustomEvent<Date | null>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n //#region Private state and properties\n\n protected override readonly _parser = new DateTimeMaskParser();\n\n // Format and mask state\n private _defaultDisplayFormat = '';\n private _displayFormat?: string;\n private _inputFormat?: string;\n\n // Value tracking\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private readonly _i18nController = addI18nController(this, {\n defaultEN: {},\n onResourceChange: this._handleResourceChange,\n });\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n /**\n * Determines which date/time part is currently targeted based on cursor position.\n * When focused, returns the part under the cursor.\n * When unfocused, returns a default part based on available parts.\n */\n private get _targetDatePart(): DatePart | undefined {\n return this._focused\n ? this._getDatePartAtCursor()\n : this._getDefaultDatePart();\n }\n\n private get _datePartDeltas(): DatePartDeltas {\n return { ...DEFAULT_DATE_PARTS_SPIN_DELTAS, ...this.spinDelta };\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(val: string) {\n if (val) {\n this._applyMask(val);\n this._inputFormat = val;\n this._updateMaskDisplay();\n }\n }\n\n public get inputFormat(): string {\n return this._inputFormat || this._parser.mask;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this._updateMaskDisplay();\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta?: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n //#endregion\n\n //#region Lifecycle Hooks\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { triggers: ['keydownRepeat'] },\n })\n .set([ctrlKey, ';'], this._setCurrentDateTime)\n .set(arrowUp, this._keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this._keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this._navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this._navigateParts.bind(this, 1));\n }\n\n protected override update(props: PropertyValues<this>): void {\n if (props.has('displayFormat')) {\n this._updateDefaultDisplayFormat();\n }\n\n if (props.has('locale')) {\n this._initializeDefaultMask();\n }\n\n if (props.has('displayFormat') || props.has('locale')) {\n this._updateMaskDisplay();\n }\n\n super.update(props);\n }\n\n //#endregion\n\n //#region Overrides\n\n protected override _resolvePartNames(base: string) {\n const result = super._resolvePartNames(base);\n // Apply `filled` part when the mask is not empty\n result.filled = result.filled || !this._isEmptyMask;\n return result;\n }\n\n protected override _updateSetRangeTextValue(): void {\n this._updateValueFromMask();\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _emitInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n private _handleResourceChange(): void {\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n protected _handleDragLeave(): void {\n if (!this._focused) {\n this._updateMaskDisplay();\n }\n }\n\n protected _handleDragEnter(): void {\n if (!this._focused) {\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n @eventOptions({ passive: false })\n private async _handleWheel(event: WheelEvent): Promise<void> {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._emitInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n protected async _handleFocus(): Promise<void> {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (this.displayFormat !== this.inputFormat) {\n this._updateMaskDisplay();\n }\n }\n\n protected override _handleBlur(): void {\n this._focused = false;\n\n // Handle incomplete mask input\n if (!(this._isMaskComplete() || this._isEmptyMask)) {\n const parsedDate = this._parser.parseDate(this._maskedValue);\n\n if (parsedDate) {\n this.value = parsedDate;\n } else {\n this.clear();\n }\n } else {\n this._updateMaskDisplay();\n }\n\n // Emit change event if value changed\n if (!this.readOnly && this._oldValue !== this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n //#endregion\n\n //#region Keybindings\n\n protected _setCurrentDateTime(): void {\n this.value = new Date();\n this._emitInputEvent();\n }\n\n /**\n * Navigates to the previous or next date part.\n */\n protected _navigateParts(direction: number): void {\n const position = this._calculatePartNavigationPosition(\n this._input?.value ?? '',\n direction\n );\n this.setSelectionRange(position, position);\n }\n\n /**\n * Calculates the new cursor position when navigating between date parts.\n * direction = 0: navigate to start of previous part\n * direction = 1: navigate to start of next part\n */\n private _calculatePartNavigationPosition(\n inputValue: string,\n direction: number\n ): number {\n const cursorPos = this._maskSelection.start;\n const dateParts = this._parser.dateParts;\n\n if (direction === 0) {\n // Navigate backwards: find last literal before cursor\n const part = dateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // Navigate forwards: find first literal after cursor\n const part = dateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? inputValue.length;\n }\n\n /**\n * Handles keyboard-triggered spinning (arrow up/down).\n */\n protected async _keyboardSpin(direction: 'up' | 'down'): Promise<void> {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._emitInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n //#endregion\n\n //#region Internal API\n\n /**\n * Updates the displayed mask value based on focus state.\n * When focused, shows the editable mask. When unfocused, shows formatted display value.\n */\n protected _updateMaskDisplay(): void {\n if (this._focused) {\n this._maskedValue = this._buildMaskedValue();\n return;\n }\n\n if (!isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n this._maskedValue = formatDisplayDate(\n this.value,\n this.locale,\n this.displayFormat\n );\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this._updateValueFromMask();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._emitInputEvent();\n }\n\n await this.updateComplete;\n this._input?.setSelectionRange(result.end, result.end);\n }\n\n /**\n * Common logic for stepping up or down a date part.\n */\n private _performStep(\n datePart: DatePart | undefined,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n const part = datePart || this._targetDatePart;\n const { start, end } = this._inputSelection;\n\n this.value = this._calculateSpunValue(part!, delta, isDecrement);\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /**\n * Calculates the new date value after spinning a date part.\n */\n private _calculateSpunValue(\n datePart: DatePart,\n delta: number | undefined,\n isDecrement: boolean\n ): Date {\n // Default to 1 if delta is 0 or undefined\n const effectiveDelta =\n delta || this._datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinAmount = isDecrement\n ? -Math.abs(effectiveDelta)\n : Math.abs(effectiveDelta);\n\n return this._spinDatePart(datePart, spinAmount);\n }\n\n /**\n * Spins a specific date part by the given delta.\n */\n private _spinDatePart(datePart: DatePart, delta: number): Date {\n if (!isValidDate(this.value)) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n const partType = datePart as unknown as DateParts;\n\n // Get the part instance from the parser, or create one for explicit spin operations\n let part = this._parser.getPartByType(partType);\n if (!part) {\n // For explicit spin operations (e.g., stepDown(DatePart.Minutes)),\n // create a temporary part even if not in the format\n part = createDatePart(partType, { start: 0, end: 0, format: '' });\n }\n\n // For AM/PM, we need to extract the current AM/PM value from the mask\n let amPmValue: string | undefined;\n if (datePart === DatePart.AmPm) {\n const formatPart = this._parser.getPartByType(DateParts.AmPm);\n if (formatPart) {\n amPmValue = this._maskedValue.substring(\n formatPart.start,\n formatPart.end\n );\n }\n }\n\n part.spin(delta, {\n date: newDate,\n spinLoop: this.spinLoop,\n amPmValue,\n originalDate: this.value,\n });\n\n return newDate;\n }\n\n /**\n * Updates the default display format based on current locale.\n */\n private _updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n /**\n * Applies a mask pattern to the input, parsing the format string into date parts.\n */\n private _applyMask(formatString: string): void {\n const previous = this._parser.mask;\n this._parser.mask = formatString;\n\n // Update placeholder if not set or if it matches the old format\n if (!this.placeholder || previous === this.placeholder) {\n this.placeholder = this._parser.mask;\n }\n }\n\n /**\n * Builds the masked value string from the current date value.\n * Returns empty mask if no value, or existing masked value if incomplete.\n */\n private _buildMaskedValue(): string {\n return isValidDate(this.value)\n ? this._parser.formatDate(this.value)\n : this._maskedValue || this._parser.emptyMask;\n }\n\n protected _initializeDefaultMask(): void {\n this._updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this._applyMask(getDefaultDateTimeFormat(this.locale));\n }\n }\n\n /**\n * Gets the date part at the current cursor position.\n * Uses inclusive end to handle cursor at the end of the last part.\n * Returns undefined if cursor is not within a valid date part.\n */\n private _getDatePartAtCursor(): DatePart | undefined {\n return this._parser.getDatePartForCursor(this._inputSelection.start)\n ?.type as DatePart | undefined;\n }\n\n /**\n * Gets the default date part to target when the input is not focused.\n * Prioritizes: Date > Hours > First available part\n */\n private _getDefaultDatePart(): DatePart | undefined {\n return (this._parser.getPartByType(DateParts.Date)?.type ??\n this._parser.getPartByType(DateParts.Hours)?.type ??\n this._parser.getFirstDatePart()?.type) as DatePart | undefined;\n }\n\n /**\n * Checks if all mask positions are filled (no prompt characters remain).\n */\n private _isMaskComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n /**\n * Updates the internal value based on the current masked input.\n * Only sets a value if the mask is complete and parses to a valid date.\n */\n private _updateValueFromMask(): void {\n if (!this._isMaskComplete()) {\n this.value = null;\n return;\n }\n\n const parsedDate = this._parser.parseDate(this._maskedValue);\n this.value = isValidDate(parsedDate) ? parsedDate : null;\n }\n\n //#endregion\n\n //#region Public API\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, false);\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, true);\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes date parts (day, month, year).\n * @internal\n */\n public hasDateParts(): boolean {\n return this._parser.hasDateParts();\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes time parts (hours, minutes, seconds).\n * @internal\n */\n public hasTimeParts(): boolean {\n return this._parser.hasTimeParts();\n }\n\n //#endregion\n\n protected override _renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this._resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this._handleBlur}\n @focus=${this._handleFocus}\n @input=${this._handleInput}\n @wheel=${this._handleWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this._handleDragEnter}\n @dragleave=${this._handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, type PropertyValues } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { convertToDate, isValidDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n addI18nController,\n formatDisplayDate,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n DEFAULT_DATE_PARTS_SPIN_DELTAS,\n} from './date-part.js';\nimport {\n createDatePart,\n DateParts,\n DateTimeMaskParser,\n} from './datetime-mask-parser.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange'\n> {\n igcChange: CustomEvent<Date | null>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n //#region Private state and properties\n\n protected override readonly _parser = new DateTimeMaskParser();\n\n // Format and mask state\n private _defaultDisplayFormat = '';\n private _displayFormat?: string;\n private _inputFormat?: string;\n\n // Value tracking\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private readonly _i18nController = addI18nController(this, {\n defaultEN: {},\n onResourceChange: this._handleResourceChange,\n });\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n /**\n * Determines which date/time part is currently targeted based on cursor position.\n * When focused, returns the part under the cursor.\n * When unfocused, returns a default part based on available parts.\n */\n private get _targetDatePart(): DatePart | undefined {\n return this._focused\n ? this._getDatePartAtCursor()\n : this._getDefaultDatePart();\n }\n\n private get _datePartDeltas(): DatePartDeltas {\n return { ...DEFAULT_DATE_PARTS_SPIN_DELTAS, ...this.spinDelta };\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(val: string) {\n if (val) {\n this._applyMask(val);\n this._inputFormat = val;\n this._updateMaskDisplay();\n }\n }\n\n public get inputFormat(): string {\n return this._inputFormat || this._parser.mask;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this._updateMaskDisplay();\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta?: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n //#endregion\n\n //#region Lifecycle Hooks\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { repeat: true },\n })\n .set([ctrlKey, ';'], this._setCurrentDateTime)\n .set(arrowUp, this._keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this._keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this._navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this._navigateParts.bind(this, 1));\n }\n\n protected override update(props: PropertyValues<this>): void {\n if (props.has('displayFormat')) {\n this._updateDefaultDisplayFormat();\n }\n\n if (props.has('locale')) {\n this._initializeDefaultMask();\n }\n\n if (props.has('displayFormat') || props.has('locale')) {\n this._updateMaskDisplay();\n }\n\n super.update(props);\n }\n\n //#endregion\n\n //#region Overrides\n\n protected override _resolvePartNames(base: string) {\n const result = super._resolvePartNames(base);\n // Apply `filled` part when the mask is not empty\n result.filled = result.filled || !this._isEmptyMask;\n return result;\n }\n\n protected override _updateSetRangeTextValue(): void {\n this._updateValueFromMask();\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _emitInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n private _handleResourceChange(): void {\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n protected _handleDragLeave(): void {\n if (!this._focused) {\n this._updateMaskDisplay();\n }\n }\n\n protected _handleDragEnter(): void {\n if (!this._focused) {\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n @eventOptions({ passive: false })\n private async _handleWheel(event: WheelEvent): Promise<void> {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._emitInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n protected async _handleFocus(): Promise<void> {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (this.displayFormat !== this.inputFormat) {\n this._updateMaskDisplay();\n }\n }\n\n protected override _handleBlur(): void {\n this._focused = false;\n\n // Handle incomplete mask input\n if (!(this._isMaskComplete() || this._isEmptyMask)) {\n const parsedDate = this._parser.parseDate(this._maskedValue);\n\n if (parsedDate) {\n this.value = parsedDate;\n } else {\n this.clear();\n }\n } else {\n this._updateMaskDisplay();\n }\n\n // Emit change event if value changed\n if (!this.readOnly && this._oldValue !== this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n //#endregion\n\n //#region Keybindings\n\n protected _setCurrentDateTime(): void {\n this.value = new Date();\n this._emitInputEvent();\n }\n\n /**\n * Navigates to the previous or next date part.\n */\n protected _navigateParts(direction: number): void {\n const position = this._calculatePartNavigationPosition(\n this._input?.value ?? '',\n direction\n );\n this.setSelectionRange(position, position);\n }\n\n /**\n * Calculates the new cursor position when navigating between date parts.\n * direction = 0: navigate to start of previous part\n * direction = 1: navigate to start of next part\n */\n private _calculatePartNavigationPosition(\n inputValue: string,\n direction: number\n ): number {\n const cursorPos = this._maskSelection.start;\n const dateParts = this._parser.dateParts;\n\n if (direction === 0) {\n // Navigate backwards: find last literal before cursor\n const part = dateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // Navigate forwards: find first literal after cursor\n const part = dateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? inputValue.length;\n }\n\n /**\n * Handles keyboard-triggered spinning (arrow up/down).\n */\n protected async _keyboardSpin(direction: 'up' | 'down'): Promise<void> {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._emitInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n //#endregion\n\n //#region Internal API\n\n /**\n * Updates the displayed mask value based on focus state.\n * When focused, shows the editable mask. When unfocused, shows formatted display value.\n */\n protected _updateMaskDisplay(): void {\n if (this._focused) {\n this._maskedValue = this._buildMaskedValue();\n return;\n }\n\n if (!isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n this._maskedValue = formatDisplayDate(\n this.value,\n this.locale,\n this.displayFormat\n );\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this._updateValueFromMask();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._emitInputEvent();\n }\n\n await this.updateComplete;\n this._input?.setSelectionRange(result.end, result.end);\n }\n\n /**\n * Common logic for stepping up or down a date part.\n */\n private _performStep(\n datePart: DatePart | undefined,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n const part = datePart || this._targetDatePart;\n const { start, end } = this._inputSelection;\n\n this.value = this._calculateSpunValue(part!, delta, isDecrement);\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /**\n * Calculates the new date value after spinning a date part.\n */\n private _calculateSpunValue(\n datePart: DatePart,\n delta: number | undefined,\n isDecrement: boolean\n ): Date {\n // Default to 1 if delta is 0 or undefined\n const effectiveDelta =\n delta || this._datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinAmount = isDecrement\n ? -Math.abs(effectiveDelta)\n : Math.abs(effectiveDelta);\n\n return this._spinDatePart(datePart, spinAmount);\n }\n\n /**\n * Spins a specific date part by the given delta.\n */\n private _spinDatePart(datePart: DatePart, delta: number): Date {\n if (!isValidDate(this.value)) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n const partType = datePart as unknown as DateParts;\n\n // Get the part instance from the parser, or create one for explicit spin operations\n let part = this._parser.getPartByType(partType);\n if (!part) {\n // For explicit spin operations (e.g., stepDown(DatePart.Minutes)),\n // create a temporary part even if not in the format\n part = createDatePart(partType, { start: 0, end: 0, format: '' });\n }\n\n // For AM/PM, we need to extract the current AM/PM value from the mask\n let amPmValue: string | undefined;\n if (datePart === DatePart.AmPm) {\n const formatPart = this._parser.getPartByType(DateParts.AmPm);\n if (formatPart) {\n amPmValue = this._maskedValue.substring(\n formatPart.start,\n formatPart.end\n );\n }\n }\n\n part.spin(delta, {\n date: newDate,\n spinLoop: this.spinLoop,\n amPmValue,\n originalDate: this.value,\n });\n\n return newDate;\n }\n\n /**\n * Updates the default display format based on current locale.\n */\n private _updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n /**\n * Applies a mask pattern to the input, parsing the format string into date parts.\n */\n private _applyMask(formatString: string): void {\n const previous = this._parser.mask;\n this._parser.mask = formatString;\n\n // Update placeholder if not set or if it matches the old format\n if (!this.placeholder || previous === this.placeholder) {\n this.placeholder = this._parser.mask;\n }\n }\n\n /**\n * Builds the masked value string from the current date value.\n * Returns empty mask if no value, or existing masked value if incomplete.\n */\n private _buildMaskedValue(): string {\n return isValidDate(this.value)\n ? this._parser.formatDate(this.value)\n : this._maskedValue || this._parser.emptyMask;\n }\n\n protected _initializeDefaultMask(): void {\n this._updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this._applyMask(getDefaultDateTimeFormat(this.locale));\n }\n }\n\n /**\n * Gets the date part at the current cursor position.\n * Uses inclusive end to handle cursor at the end of the last part.\n * Returns undefined if cursor is not within a valid date part.\n */\n private _getDatePartAtCursor(): DatePart | undefined {\n return this._parser.getDatePartForCursor(this._inputSelection.start)\n ?.type as DatePart | undefined;\n }\n\n /**\n * Gets the default date part to target when the input is not focused.\n * Prioritizes: Date > Hours > First available part\n */\n private _getDefaultDatePart(): DatePart | undefined {\n return (this._parser.getPartByType(DateParts.Date)?.type ??\n this._parser.getPartByType(DateParts.Hours)?.type ??\n this._parser.getFirstDatePart()?.type) as DatePart | undefined;\n }\n\n /**\n * Checks if all mask positions are filled (no prompt characters remain).\n */\n private _isMaskComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n /**\n * Updates the internal value based on the current masked input.\n * Only sets a value if the mask is complete and parses to a valid date.\n */\n private _updateValueFromMask(): void {\n if (!this._isMaskComplete()) {\n this.value = null;\n return;\n }\n\n const parsedDate = this._parser.parseDate(this._maskedValue);\n this.value = isValidDate(parsedDate) ? parsedDate : null;\n }\n\n //#endregion\n\n //#region Public API\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, false);\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, true);\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes date parts (day, month, year).\n * @internal\n */\n public hasDateParts(): boolean {\n return this._parser.hasDateParts();\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes time parts (hours, minutes, seconds).\n * @internal\n */\n public hasTimeParts(): boolean {\n return this._parser.hasTimeParts();\n }\n\n //#endregion\n\n protected override _renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this._resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this._handleBlur}\n @focus=${this._handleFocus}\n @input=${this._handleInput}\n @wheel=${this._handleWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this._handleDragEnter}\n @dragleave=${this._handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
@@ -4,11 +4,10 @@ import { createDatePart, DatePartType, type IDatePart } from './date-part.js';
4
4
  * Types of date/time parts that can appear in a format string.
5
5
  * Re-exported from date-part.ts for backward compatibility.
6
6
  */
7
- export { DatePartType as DateParts };
8
7
  /**
9
8
  * Re-export createDatePart factory for creating standalone parts.
10
9
  */
11
- export { createDatePart };
10
+ export { createDatePart, DatePartType as DateParts };
12
11
  /**
13
12
  * Information about a parsed date part within a format string.
14
13
  * This is a type alias for IDatePart for backward compatibility.
@@ -1,8 +1,7 @@
1
1
  import { asNumber, clamp } from '../common/util.js';
2
2
  import { MaskParser } from '../mask-input/mask-parser.js';
3
3
  import { createDatePart, DatePartType } from './date-part.js';
4
- export { DatePartType as DateParts };
5
- export { createDatePart };
4
+ export { createDatePart, DatePartType as DateParts };
6
5
  const FORMAT_CHAR_TO_DATE_PART = new Map([
7
6
  ['d', DatePartType.Date],
8
7
  ['D', DatePartType.Date],