dap-design-system 0.62.3 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/README.md +5 -1
  2. package/dist/common/utils.d.ts +8 -0
  3. package/dist/common/utils.js +53 -48
  4. package/dist/common/utils.js.map +1 -1
  5. package/dist/components/accordion/accordion-base-element.js +15 -19
  6. package/dist/components/accordion/accordion-base-element.js.map +1 -1
  7. package/dist/components/accordion/accordion.component.d.ts +1 -0
  8. package/dist/components/accordion/accordion.component.js.map +1 -1
  9. package/dist/components/accordion-group/accordion-group.component.js +20 -24
  10. package/dist/components/accordion-group/accordion-group.component.js.map +1 -1
  11. package/dist/components/anchor-heading/anchor-heading.component.d.ts +1 -0
  12. package/dist/components/anchor-heading/anchor-heading.component.js +20 -23
  13. package/dist/components/anchor-heading/anchor-heading.component.js.map +1 -1
  14. package/dist/components/avatar/avatar.component.js +51 -55
  15. package/dist/components/avatar/avatar.component.js.map +1 -1
  16. package/dist/components/avatar-group/avatar-group.component.js +18 -22
  17. package/dist/components/avatar-group/avatar-group.component.js.map +1 -1
  18. package/dist/components/badge/badge.component.js +17 -20
  19. package/dist/components/badge/badge.component.js.map +1 -1
  20. package/dist/components/banner/banner.component.d.ts +1 -1
  21. package/dist/components/banner/banner.component.js +18 -24
  22. package/dist/components/banner/banner.component.js.map +1 -1
  23. package/dist/components/breadcrumb/breadcrumb.component.d.ts +2 -1
  24. package/dist/components/breadcrumb/breadcrumb.component.js +32 -32
  25. package/dist/components/breadcrumb/breadcrumb.component.js.map +1 -1
  26. package/dist/components/breadcrumb-item/breadcrumb-item.component.d.ts +8 -0
  27. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +33 -28
  28. package/dist/components/breadcrumb-item/breadcrumb-item.component.js.map +1 -1
  29. package/dist/components/button/_styles/button.scss.js +1 -1
  30. package/dist/components/button/button.component.js +18 -22
  31. package/dist/components/button/button.component.js.map +1 -1
  32. package/dist/components/button-group/_styles/button-group-separator.scss.js +5 -0
  33. package/dist/components/button-group/_styles/button-group-separator.scss.js.map +1 -0
  34. package/dist/components/button-group/_styles/button-group-text.scss.js +5 -0
  35. package/dist/components/button-group/_styles/button-group-text.scss.js.map +1 -0
  36. package/dist/components/button-group/_styles/button-group.scss.js +5 -0
  37. package/dist/components/button-group/_styles/button-group.scss.js.map +1 -0
  38. package/dist/components/button-group/button-group-separator.component.d.ts +28 -0
  39. package/dist/components/button-group/button-group-separator.component.js +18 -0
  40. package/dist/components/button-group/button-group-separator.component.js.map +1 -0
  41. package/dist/components/button-group/button-group-separator.d.ts +8 -0
  42. package/dist/components/button-group/button-group-separator.js +6 -0
  43. package/dist/components/button-group/button-group-separator.js.map +1 -0
  44. package/dist/components/button-group/button-group-text.component.d.ts +33 -0
  45. package/dist/components/button-group/button-group-text.component.js +17 -0
  46. package/dist/components/button-group/button-group-text.component.js.map +1 -0
  47. package/dist/components/button-group/button-group-text.d.ts +8 -0
  48. package/dist/components/button-group/button-group-text.js +6 -0
  49. package/dist/components/button-group/button-group-text.js.map +1 -0
  50. package/dist/components/button-group/button-group.component.d.ts +52 -0
  51. package/dist/components/button-group/button-group.component.js +30 -0
  52. package/dist/components/button-group/button-group.component.js.map +1 -0
  53. package/dist/components/button-group/button-group.d.ts +8 -0
  54. package/dist/components/button-group/button-group.js +6 -0
  55. package/dist/components/button-group/button-group.js.map +1 -0
  56. package/dist/components/calendar/calendar-cell.component.js +26 -29
  57. package/dist/components/calendar/calendar-cell.component.js.map +1 -1
  58. package/dist/components/calendar/calendar.component.d.ts +10 -1
  59. package/dist/components/calendar/calendar.component.js +37 -46
  60. package/dist/components/calendar/calendar.component.js.map +1 -1
  61. package/dist/components/callout/callout.component.d.ts +4 -0
  62. package/dist/components/callout/callout.component.js +71 -69
  63. package/dist/components/callout/callout.component.js.map +1 -1
  64. package/dist/components/card/card-actions.component.js +8 -11
  65. package/dist/components/card/card-actions.component.js.map +1 -1
  66. package/dist/components/card/card-content.component.js +20 -23
  67. package/dist/components/card/card-content.component.js.map +1 -1
  68. package/dist/components/card/card-image.component.js +18 -21
  69. package/dist/components/card/card-image.component.js.map +1 -1
  70. package/dist/components/card/card-subtitle.component.js +18 -21
  71. package/dist/components/card/card-subtitle.component.js.map +1 -1
  72. package/dist/components/card/card-title.component.js +18 -21
  73. package/dist/components/card/card-title.component.js.map +1 -1
  74. package/dist/components/card/card.component.d.ts +1 -0
  75. package/dist/components/card/card.component.js +25 -28
  76. package/dist/components/card/card.component.js.map +1 -1
  77. package/dist/components/checkbox/_styles/checkbox.scss.js +1 -1
  78. package/dist/components/checkbox/checkbox.component.d.ts +7 -1
  79. package/dist/components/checkbox/checkbox.component.js +71 -74
  80. package/dist/components/checkbox/checkbox.component.js.map +1 -1
  81. package/dist/components/chip/chip.component.d.ts +1 -0
  82. package/dist/components/chip/chip.component.js +21 -26
  83. package/dist/components/chip/chip.component.js.map +1 -1
  84. package/dist/components/code-puncher/code-puncher-slot.component.js +34 -38
  85. package/dist/components/code-puncher/code-puncher-slot.component.js.map +1 -1
  86. package/dist/components/code-puncher/code-puncher.component.d.ts +4 -0
  87. package/dist/components/code-puncher/code-puncher.component.js +97 -102
  88. package/dist/components/code-puncher/code-puncher.component.js.map +1 -1
  89. package/dist/components/code-puncher/code-puncher.context.js +1 -1
  90. package/dist/components/code-puncher/code-puncher.context.js.map +1 -1
  91. package/dist/components/code-puncher/code-puncher.scss.js +1 -1
  92. package/dist/components/combobox/combobox.component.d.ts +9 -1
  93. package/dist/components/combobox/combobox.component.js.map +1 -1
  94. package/dist/components/combobox/combobox.scss.js +1 -1
  95. package/dist/components/combobox/comboboxBase.d.ts +29 -0
  96. package/dist/components/combobox/comboboxBase.js +218 -150
  97. package/dist/components/combobox/comboboxBase.js.map +1 -1
  98. package/dist/components/command/command-group.component.js +19 -23
  99. package/dist/components/command/command-group.component.js.map +1 -1
  100. package/dist/components/command/command-item.component.js +17 -22
  101. package/dist/components/command/command-item.component.js.map +1 -1
  102. package/dist/components/command/command.component.d.ts +3 -0
  103. package/dist/components/command/command.component.js +28 -33
  104. package/dist/components/command/command.component.js.map +1 -1
  105. package/dist/components/content-switcher/content-switcher-item.component.js +16 -19
  106. package/dist/components/content-switcher/content-switcher-item.component.js.map +1 -1
  107. package/dist/components/content-switcher/content-switcher.component.js +19 -22
  108. package/dist/components/content-switcher/content-switcher.component.js.map +1 -1
  109. package/dist/components/copybox-input/copybox-input.component.d.ts +11 -0
  110. package/dist/components/copybox-input/copybox-input.component.js +12 -16
  111. package/dist/components/copybox-input/copybox-input.component.js.map +1 -1
  112. package/dist/components/dap-badge/dap-badge.component.js +13 -18
  113. package/dist/components/dap-badge/dap-badge.component.js.map +1 -1
  114. package/dist/components/datatable/datatable.component.d.ts +17 -0
  115. package/dist/components/datatable/datatable.component.js +38 -42
  116. package/dist/components/datatable/datatable.component.js.map +1 -1
  117. package/dist/components/datatable/utils/cell-renderer.js +6 -8
  118. package/dist/components/datatable/utils/cell-renderer.js.map +1 -1
  119. package/dist/components/datepicker/datepicker.component.d.ts +8 -0
  120. package/dist/components/datepicker/datepicker.component.js +76 -81
  121. package/dist/components/datepicker/datepicker.component.js.map +1 -1
  122. package/dist/components/datepicker/datepicker.scss.js +1 -1
  123. package/dist/components/divider/divider.component.js +18 -21
  124. package/dist/components/divider/divider.component.js.map +1 -1
  125. package/dist/components/feedback/feedback.component.js +8 -11
  126. package/dist/components/feedback/feedback.component.js.map +1 -1
  127. package/dist/components/file-input/file-input-list-item.component.d.ts +1 -0
  128. package/dist/components/file-input/file-input-list-item.component.js +36 -40
  129. package/dist/components/file-input/file-input-list-item.component.js.map +1 -1
  130. package/dist/components/file-input/file-input-list.component.js +15 -20
  131. package/dist/components/file-input/file-input-list.component.js.map +1 -1
  132. package/dist/components/file-input/file-input-list.scss.js +1 -1
  133. package/dist/components/file-input/file-input.component.d.ts +3 -0
  134. package/dist/components/file-input/file-input.component.js +135 -142
  135. package/dist/components/file-input/file-input.component.js.map +1 -1
  136. package/dist/components/file-input/file-input.scss.js +1 -1
  137. package/dist/components/form/form-label/form-label.component.d.ts +1 -1
  138. package/dist/components/form/form-label/form-label.component.js +20 -23
  139. package/dist/components/form/form-label/form-label.component.js.map +1 -1
  140. package/dist/components/form/input-group/input-group.component.d.ts +4 -0
  141. package/dist/components/form/input-group/input-group.component.js +42 -42
  142. package/dist/components/form/input-group/input-group.component.js.map +1 -1
  143. package/dist/components/form/input-group/input-group.scss.js +2 -2
  144. package/dist/components/form/radio-group/radio-group.component.d.ts +5 -0
  145. package/dist/components/form/radio-group/radio-group.component.js +54 -55
  146. package/dist/components/form/radio-group/radio-group.component.js.map +1 -1
  147. package/dist/components/icon/icon.component.js +25 -28
  148. package/dist/components/icon/icon.component.js.map +1 -1
  149. package/dist/components/icon-button/icon-button.component.d.ts +1 -0
  150. package/dist/components/icon-button/icon-button.component.js +11 -14
  151. package/dist/components/icon-button/icon-button.component.js.map +1 -1
  152. package/dist/components/icon-button/icon-button.scss.js +1 -1
  153. package/dist/components/icons/arrows/arrows-arrow-down-line/arrows-arrow-down-line.component.js +9 -12
  154. package/dist/components/icons/arrows/arrows-arrow-down-line/arrows-arrow-down-line.component.js.map +1 -1
  155. package/dist/components/icons/arrows/arrows-arrow-down-s-fill/arrows-arrow-down-s-fill.component.js +7 -10
  156. package/dist/components/icons/arrows/arrows-arrow-down-s-fill/arrows-arrow-down-s-fill.component.js.map +1 -1
  157. package/dist/components/icons/arrows/arrows-arrow-down-s-line/arrows-arrow-down-s-line.component.js +12 -15
  158. package/dist/components/icons/arrows/arrows-arrow-down-s-line/arrows-arrow-down-s-line.component.js.map +1 -1
  159. package/dist/components/icons/arrows/arrows-arrow-left-down-line/arrows-arrow-left-down-line.component.js +8 -11
  160. package/dist/components/icons/arrows/arrows-arrow-left-down-line/arrows-arrow-left-down-line.component.js.map +1 -1
  161. package/dist/components/icons/arrows/arrows-arrow-left-l-line/arrows-arrow-left-l-line.component.js +15 -18
  162. package/dist/components/icons/arrows/arrows-arrow-left-l-line/arrows-arrow-left-l-line.component.js.map +1 -1
  163. package/dist/components/icons/arrows/arrows-arrow-left-line/arrows-arrow-left-line.component.js +7 -10
  164. package/dist/components/icons/arrows/arrows-arrow-left-line/arrows-arrow-left-line.component.js.map +1 -1
  165. package/dist/components/icons/arrows/arrows-arrow-left-s-fill/arrows-arrow-left-s-fill.component.js +10 -13
  166. package/dist/components/icons/arrows/arrows-arrow-left-s-fill/arrows-arrow-left-s-fill.component.js.map +1 -1
  167. package/dist/components/icons/arrows/arrows-arrow-left-s-line/arrows-arrow-left-s-line.component.js +7 -10
  168. package/dist/components/icons/arrows/arrows-arrow-left-s-line/arrows-arrow-left-s-line.component.js.map +1 -1
  169. package/dist/components/icons/arrows/arrows-arrow-left-up-line/arrows-arrow-left-up-line.component.js +6 -9
  170. package/dist/components/icons/arrows/arrows-arrow-left-up-line/arrows-arrow-left-up-line.component.js.map +1 -1
  171. package/dist/components/icons/arrows/arrows-arrow-right-down-line/arrows-arrow-right-down-line.component.js +18 -21
  172. package/dist/components/icons/arrows/arrows-arrow-right-down-line/arrows-arrow-right-down-line.component.js.map +1 -1
  173. package/dist/components/icons/arrows/arrows-arrow-right-l-line/arrows-arrow-right-l-line.component.js +15 -18
  174. package/dist/components/icons/arrows/arrows-arrow-right-l-line/arrows-arrow-right-l-line.component.js.map +1 -1
  175. package/dist/components/icons/arrows/arrows-arrow-right-line/arrows-arrow-right-line.component.js +17 -20
  176. package/dist/components/icons/arrows/arrows-arrow-right-line/arrows-arrow-right-line.component.js.map +1 -1
  177. package/dist/components/icons/arrows/arrows-arrow-right-s-fill/arrows-arrow-right-s-fill.component.js +17 -20
  178. package/dist/components/icons/arrows/arrows-arrow-right-s-fill/arrows-arrow-right-s-fill.component.js.map +1 -1
  179. package/dist/components/icons/arrows/arrows-arrow-right-s-line/arrows-arrow-right-s-line.component.js +17 -20
  180. package/dist/components/icons/arrows/arrows-arrow-right-s-line/arrows-arrow-right-s-line.component.js.map +1 -1
  181. package/dist/components/icons/arrows/arrows-arrow-right-up-line/arrows-arrow-right-up-line.component.js +18 -21
  182. package/dist/components/icons/arrows/arrows-arrow-right-up-line/arrows-arrow-right-up-line.component.js.map +1 -1
  183. package/dist/components/icons/arrows/arrows-arrow-up-line/arrows-arrow-up-line.component.js +9 -12
  184. package/dist/components/icons/arrows/arrows-arrow-up-line/arrows-arrow-up-line.component.js.map +1 -1
  185. package/dist/components/icons/arrows/arrows-arrow-up-s-fill/arrows-arrow-up-s-fill.component.js +8 -11
  186. package/dist/components/icons/arrows/arrows-arrow-up-s-fill/arrows-arrow-up-s-fill.component.js.map +1 -1
  187. package/dist/components/icons/arrows/arrows-arrow-up-s-line/arrows-arrow-up-s-line.component.js +9 -12
  188. package/dist/components/icons/arrows/arrows-arrow-up-s-line/arrows-arrow-up-s-line.component.js.map +1 -1
  189. package/dist/components/icons/arrows/arrows-expand-up-down-fill/arrows-expand-up-down-fill.component.js +11 -14
  190. package/dist/components/icons/arrows/arrows-expand-up-down-fill/arrows-expand-up-down-fill.component.js.map +1 -1
  191. package/dist/components/icons/buildings/buildings-home-6-line/buildings-home-6-line.component.js +10 -13
  192. package/dist/components/icons/buildings/buildings-home-6-line/buildings-home-6-line.component.js.map +1 -1
  193. package/dist/components/icons/business/business-calendar-line/business-calendar-line.component.js +11 -14
  194. package/dist/components/icons/business/business-calendar-line/business-calendar-line.component.js.map +1 -1
  195. package/dist/components/icons/design/design-edit-line/design-edit-line.component.js +6 -9
  196. package/dist/components/icons/design/design-edit-line/design-edit-line.component.js.map +1 -1
  197. package/dist/components/icons/design/design-tools-line/design-tools-line.component.js +12 -15
  198. package/dist/components/icons/design/design-tools-line/design-tools-line.component.js.map +1 -1
  199. package/dist/components/icons/device/device-computer-line/device-computer-line.component.js +16 -19
  200. package/dist/components/icons/device/device-computer-line/device-computer-line.component.js.map +1 -1
  201. package/dist/components/icons/document/document-clipboard-line/document-clipboard-line.component.js +11 -14
  202. package/dist/components/icons/document/document-clipboard-line/document-clipboard-line.component.js.map +1 -1
  203. package/dist/components/icons/document/document-file-copy-line/document-file-copy-line.component.js +10 -13
  204. package/dist/components/icons/document/document-file-copy-line/document-file-copy-line.component.js.map +1 -1
  205. package/dist/components/icons/document/document-file-image-line/document-file-image-line.component.js +11 -14
  206. package/dist/components/icons/document/document-file-image-line/document-file-image-line.component.js.map +1 -1
  207. package/dist/components/icons/document/document-file-music-line/document-file-music-line.component.js +11 -14
  208. package/dist/components/icons/document/document-file-music-line/document-file-music-line.component.js.map +1 -1
  209. package/dist/components/icons/document/document-file-text-line/document-file-text-line.component.js +10 -13
  210. package/dist/components/icons/document/document-file-text-line/document-file-text-line.component.js.map +1 -1
  211. package/dist/components/icons/document/document-file-video-line/document-file-video-line.component.js +11 -14
  212. package/dist/components/icons/document/document-file-video-line/document-file-video-line.component.js.map +1 -1
  213. package/dist/components/icons/document/document-folder-line/document-folder-line.component.js +11 -14
  214. package/dist/components/icons/document/document-folder-line/document-folder-line.component.js.map +1 -1
  215. package/dist/components/icons/document/document-folder-open-line/document-folder-open-line.component.js +10 -13
  216. package/dist/components/icons/document/document-folder-open-line/document-folder-open-line.component.js.map +1 -1
  217. package/dist/components/icons/editor/editor-separator/editor-separator.component.js +10 -13
  218. package/dist/components/icons/editor/editor-separator/editor-separator.component.js.map +1 -1
  219. package/dist/components/icons/health/health-heart-fill/health-heart-fill.component.js +8 -11
  220. package/dist/components/icons/health/health-heart-fill/health-heart-fill.component.js.map +1 -1
  221. package/dist/components/icons/health/health-heart-line/health-heart-line.component.js +10 -13
  222. package/dist/components/icons/health/health-heart-line/health-heart-line.component.js.map +1 -1
  223. package/dist/components/icons/others/others-cookie-line/others-cookie-line.component.js +6 -9
  224. package/dist/components/icons/others/others-cookie-line/others-cookie-line.component.js.map +1 -1
  225. package/dist/components/icons/system/system-add-line/system-add-line.component.js +11 -14
  226. package/dist/components/icons/system/system-add-line/system-add-line.component.js.map +1 -1
  227. package/dist/components/icons/system/system-alert-fill/system-alert-fill.component.js +9 -12
  228. package/dist/components/icons/system/system-alert-fill/system-alert-fill.component.js.map +1 -1
  229. package/dist/components/icons/system/system-alert-line/system-alert-line.component.js +11 -14
  230. package/dist/components/icons/system/system-alert-line/system-alert-line.component.js.map +1 -1
  231. package/dist/components/icons/system/system-check-line/system-check-line.component.js +9 -12
  232. package/dist/components/icons/system/system-check-line/system-check-line.component.js.map +1 -1
  233. package/dist/components/icons/system/system-check-line2/system-check-line2.component.js +11 -14
  234. package/dist/components/icons/system/system-check-line2/system-check-line2.component.js.map +1 -1
  235. package/dist/components/icons/system/system-checkbox-blank-circle-fill/system-checkbox-blank-circle-fill.component.js +9 -12
  236. package/dist/components/icons/system/system-checkbox-blank-circle-fill/system-checkbox-blank-circle-fill.component.js.map +1 -1
  237. package/dist/components/icons/system/system-checkbox-blank-circle-fill-check/system-checkbox-blank-circle-fill-check.component.js +12 -15
  238. package/dist/components/icons/system/system-checkbox-blank-circle-fill-check/system-checkbox-blank-circle-fill-check.component.js.map +1 -1
  239. package/dist/components/icons/system/system-checkbox-blank-circle-line/system-checkbox-blank-circle-line.component.js +13 -16
  240. package/dist/components/icons/system/system-checkbox-blank-circle-line/system-checkbox-blank-circle-line.component.js.map +1 -1
  241. package/dist/components/icons/system/system-checkbox-circle-fill/system-checkbox-circle-fill.component.js +11 -14
  242. package/dist/components/icons/system/system-checkbox-circle-fill/system-checkbox-circle-fill.component.js.map +1 -1
  243. package/dist/components/icons/system/system-checkbox-circle-line/system-checkbox-circle-line.component.js +11 -14
  244. package/dist/components/icons/system/system-checkbox-circle-line/system-checkbox-circle-line.component.js.map +1 -1
  245. package/dist/components/icons/system/system-close-circle-fill/system-close-circle-fill.component.js +11 -14
  246. package/dist/components/icons/system/system-close-circle-fill/system-close-circle-fill.component.js.map +1 -1
  247. package/dist/components/icons/system/system-close-circle-line/system-close-circle-line.component.js +7 -10
  248. package/dist/components/icons/system/system-close-circle-line/system-close-circle-line.component.js.map +1 -1
  249. package/dist/components/icons/system/system-close-fill/system-close-fill.component.js +11 -14
  250. package/dist/components/icons/system/system-close-fill/system-close-fill.component.js.map +1 -1
  251. package/dist/components/icons/system/system-close-line/system-close-line.component.js +11 -14
  252. package/dist/components/icons/system/system-close-line/system-close-line.component.js.map +1 -1
  253. package/dist/components/icons/system/system-delete-bin-fill/system-delete-bin-fill.component.js +7 -10
  254. package/dist/components/icons/system/system-delete-bin-fill/system-delete-bin-fill.component.js.map +1 -1
  255. package/dist/components/icons/system/system-delete-bin-line/system-delete-bin-line.component.js +9 -12
  256. package/dist/components/icons/system/system-delete-bin-line/system-delete-bin-line.component.js.map +1 -1
  257. package/dist/components/icons/system/system-download-line/system-download-line.component.js +9 -12
  258. package/dist/components/icons/system/system-download-line/system-download-line.component.js.map +1 -1
  259. package/dist/components/icons/system/system-error-warning-fill/system-error-warning-fill.component.js +7 -10
  260. package/dist/components/icons/system/system-error-warning-fill/system-error-warning-fill.component.js.map +1 -1
  261. package/dist/components/icons/system/system-error-warning-line/system-error-warning-line.component.js +11 -14
  262. package/dist/components/icons/system/system-error-warning-line/system-error-warning-line.component.js.map +1 -1
  263. package/dist/components/icons/system/system-external-link-line/system-external-link-line.component.js +9 -12
  264. package/dist/components/icons/system/system-external-link-line/system-external-link-line.component.js.map +1 -1
  265. package/dist/components/icons/system/system-eye-line/system-eye-line.component.js +11 -14
  266. package/dist/components/icons/system/system-eye-line/system-eye-line.component.js.map +1 -1
  267. package/dist/components/icons/system/system-eye-off-line/system-eye-off-line.component.js +6 -9
  268. package/dist/components/icons/system/system-eye-off-line/system-eye-off-line.component.js.map +1 -1
  269. package/dist/components/icons/system/system-forbid-fill/system-forbid-fill.component.js +9 -12
  270. package/dist/components/icons/system/system-forbid-fill/system-forbid-fill.component.js.map +1 -1
  271. package/dist/components/icons/system/system-information-2-fill/system-information-2-fill.component.js +9 -12
  272. package/dist/components/icons/system/system-information-2-fill/system-information-2-fill.component.js.map +1 -1
  273. package/dist/components/icons/system/system-information-fill/system-information-fill.component.js +9 -12
  274. package/dist/components/icons/system/system-information-fill/system-information-fill.component.js.map +1 -1
  275. package/dist/components/icons/system/system-information-line/system-information-line.component.js +9 -12
  276. package/dist/components/icons/system/system-information-line/system-information-line.component.js.map +1 -1
  277. package/dist/components/icons/system/system-lightbulb-fill/system-lightbulb-fill.component.js +9 -12
  278. package/dist/components/icons/system/system-lightbulb-fill/system-lightbulb-fill.component.js.map +1 -1
  279. package/dist/components/icons/system/system-loading-spinner/system-loading-spinner.component.js +9 -12
  280. package/dist/components/icons/system/system-loading-spinner/system-loading-spinner.component.js.map +1 -1
  281. package/dist/components/icons/system/system-lock-fill/system-lock-fill.component.js +13 -16
  282. package/dist/components/icons/system/system-lock-fill/system-lock-fill.component.js.map +1 -1
  283. package/dist/components/icons/system/system-lock-line/system-lock-line.component.js +10 -13
  284. package/dist/components/icons/system/system-lock-line/system-lock-line.component.js.map +1 -1
  285. package/dist/components/icons/system/system-menu-line/system-menu-line.component.js +9 -12
  286. package/dist/components/icons/system/system-menu-line/system-menu-line.component.js.map +1 -1
  287. package/dist/components/icons/system/system-menu-line-s/system-menu-line-s.component.js +9 -12
  288. package/dist/components/icons/system/system-menu-line-s/system-menu-line-s.component.js.map +1 -1
  289. package/dist/components/icons/system/system-more-2-line/system-more-2-line.component.js +10 -13
  290. package/dist/components/icons/system/system-more-2-line/system-more-2-line.component.js.map +1 -1
  291. package/dist/components/icons/system/system-more-line/system-more-line.component.js +16 -19
  292. package/dist/components/icons/system/system-more-line/system-more-line.component.js.map +1 -1
  293. package/dist/components/icons/system/system-search-line/system-search-line.component.js +11 -14
  294. package/dist/components/icons/system/system-search-line/system-search-line.component.js.map +1 -1
  295. package/dist/components/icons/system/system-share-line/system-share-line.component.js +9 -12
  296. package/dist/components/icons/system/system-share-line/system-share-line.component.js.map +1 -1
  297. package/dist/components/icons/system/system-shield-check-fill/system-shield-check-fill.component.js +8 -11
  298. package/dist/components/icons/system/system-shield-check-fill/system-shield-check-fill.component.js.map +1 -1
  299. package/dist/components/icons/system/system-shield-check-line/system-shield-check-line.component.js +6 -9
  300. package/dist/components/icons/system/system-shield-check-line/system-shield-check-line.component.js.map +1 -1
  301. package/dist/components/icons/system/system-star-fill/system-star-fill.component.js +13 -16
  302. package/dist/components/icons/system/system-star-fill/system-star-fill.component.js.map +1 -1
  303. package/dist/components/icons/system/system-subtract-line/system-subtract-line.component.js +11 -14
  304. package/dist/components/icons/system/system-subtract-line/system-subtract-line.component.js.map +1 -1
  305. package/dist/components/icons/system/system-subtract-line2/system-subtract-line2.component.js +7 -10
  306. package/dist/components/icons/system/system-subtract-line2/system-subtract-line2.component.js.map +1 -1
  307. package/dist/components/icons/system/system-time-fill/system-time-fill.component.js +11 -14
  308. package/dist/components/icons/system/system-time-fill/system-time-fill.component.js.map +1 -1
  309. package/dist/components/icons/system/system-time-line/system-time-line.component.js +11 -14
  310. package/dist/components/icons/system/system-time-line/system-time-line.component.js.map +1 -1
  311. package/dist/components/icons/system/system-upload-2-fill/system-upload-2-fill.component.js +5 -8
  312. package/dist/components/icons/system/system-upload-2-fill/system-upload-2-fill.component.js.map +1 -1
  313. package/dist/components/icons/system/system-upload-2-line/system-upload-2-line.component.js +7 -10
  314. package/dist/components/icons/system/system-upload-2-line/system-upload-2-line.component.js.map +1 -1
  315. package/dist/components/icons/system/system-upload-line/system-upload-line.component.js +9 -12
  316. package/dist/components/icons/system/system-upload-line/system-upload-line.component.js.map +1 -1
  317. package/dist/components/icons/system/system-zoom-in-line/system-zoom-in-line.component.js +9 -12
  318. package/dist/components/icons/system/system-zoom-in-line/system-zoom-in-line.component.js.map +1 -1
  319. package/dist/components/icons/system/system-zoom-out-line/system-zoom-out-line.component.js +11 -14
  320. package/dist/components/icons/system/system-zoom-out-line/system-zoom-out-line.component.js.map +1 -1
  321. package/dist/components/icons/user/user-account-circle-fill/user-account-circle-fill.component.js +16 -19
  322. package/dist/components/icons/user/user-account-circle-fill/user-account-circle-fill.component.js.map +1 -1
  323. package/dist/components/icons/user/user-account-circle-line/user-account-circle-line.component.js +13 -16
  324. package/dist/components/icons/user/user-account-circle-line/user-account-circle-line.component.js.map +1 -1
  325. package/dist/components/icons/user/user-user-fill/user-user-fill.component.js +8 -11
  326. package/dist/components/icons/user/user-user-fill/user-user-fill.component.js.map +1 -1
  327. package/dist/components/icons/user/user-user-line/user-user-line.component.js +11 -14
  328. package/dist/components/icons/user/user-user-line/user-user-line.component.js.map +1 -1
  329. package/dist/components/image-zoom/image-zoom.component.js +12 -17
  330. package/dist/components/image-zoom/image-zoom.component.js.map +1 -1
  331. package/dist/components/input/_styles/input.scss.js +1 -1
  332. package/dist/components/input/input-base-element.js +41 -47
  333. package/dist/components/input/input-base-element.js.map +1 -1
  334. package/dist/components/label/_styles/label.scss.js +1 -1
  335. package/dist/components/label/label.component.js +8 -11
  336. package/dist/components/label/label.component.js.map +1 -1
  337. package/dist/components/link/link.component.js +23 -27
  338. package/dist/components/link/link.component.js.map +1 -1
  339. package/dist/components/list-item/list-item.component.d.ts +2 -0
  340. package/dist/components/list-item/list-item.component.js +24 -29
  341. package/dist/components/list-item/list-item.component.js.map +1 -1
  342. package/dist/components/modal/modal-base-element.js +36 -42
  343. package/dist/components/modal/modal-base-element.js.map +1 -1
  344. package/dist/components/navigation-menu/navigation-menu-item.component.d.ts +9 -1
  345. package/dist/components/navigation-menu/navigation-menu-item.component.js +36 -31
  346. package/dist/components/navigation-menu/navigation-menu-item.component.js.map +1 -1
  347. package/dist/components/navigation-menu/navigation-menu.component.js +20 -24
  348. package/dist/components/navigation-menu/navigation-menu.component.js.map +1 -1
  349. package/dist/components/notification-badge/notification-badge.component.js +28 -32
  350. package/dist/components/notification-badge/notification-badge.component.js.map +1 -1
  351. package/dist/components/number-input/number-input.component.d.ts +7 -0
  352. package/dist/components/number-input/number-input.component.js +23 -29
  353. package/dist/components/number-input/number-input.component.js.map +1 -1
  354. package/dist/components/official-website-banner/official-website-banner.component.d.ts +1 -0
  355. package/dist/components/official-website-banner/official-website-banner.component.js +19 -24
  356. package/dist/components/official-website-banner/official-website-banner.component.js.map +1 -1
  357. package/dist/components/option-group/option-group.component.js +17 -20
  358. package/dist/components/option-group/option-group.component.js.map +1 -1
  359. package/dist/components/option-item/option-item.component.d.ts +10 -0
  360. package/dist/components/option-item/option-item.component.js +66 -60
  361. package/dist/components/option-item/option-item.component.js.map +1 -1
  362. package/dist/components/option-item/option-item.scss.js +1 -1
  363. package/dist/components/option-list/__test__/listbox-harness.d.ts +129 -0
  364. package/dist/components/option-list/listbox-state.d.ts +230 -0
  365. package/dist/components/option-list/listbox-state.js +312 -0
  366. package/dist/components/option-list/listbox-state.js.map +1 -0
  367. package/dist/components/option-list/option-data.d.ts +35 -0
  368. package/dist/components/option-list/option-data.js +34 -0
  369. package/dist/components/option-list/option-data.js.map +1 -0
  370. package/dist/components/option-list/option-list.component.d.ts +68 -14
  371. package/dist/components/option-list/option-list.component.js +364 -274
  372. package/dist/components/option-list/option-list.component.js.map +1 -1
  373. package/dist/components/overlay/overlay.component.js +10 -13
  374. package/dist/components/overlay/overlay.component.js.map +1 -1
  375. package/dist/components/pager/pager.component.js +31 -37
  376. package/dist/components/pager/pager.component.js.map +1 -1
  377. package/dist/components/password-input/password-input.component.d.ts +12 -5
  378. package/dist/components/password-input/password-input.component.js +24 -30
  379. package/dist/components/password-input/password-input.component.js.map +1 -1
  380. package/dist/components/popup/popup-base-element.d.ts +6 -0
  381. package/dist/components/popup/popup-base-element.js +96 -71
  382. package/dist/components/popup/popup-base-element.js.map +1 -1
  383. package/dist/components/progress/progress.component.js +17 -21
  384. package/dist/components/progress/progress.component.js.map +1 -1
  385. package/dist/components/radio-button/_styles/radio-button.scss.js +1 -1
  386. package/dist/components/radio-button/radio-button.component.d.ts +5 -0
  387. package/dist/components/radio-button/radio-button.component.js +58 -62
  388. package/dist/components/radio-button/radio-button.component.js.map +1 -1
  389. package/dist/components/rating/_styles/rating.scss.js +2 -2
  390. package/dist/components/rating/rating.component.js +37 -41
  391. package/dist/components/rating/rating.component.js.map +1 -1
  392. package/dist/components/scroll-area/scroll-area.component.d.ts +2 -1
  393. package/dist/components/scroll-area/scroll-area.component.js +25 -28
  394. package/dist/components/scroll-area/scroll-area.component.js.map +1 -1
  395. package/dist/components/scroll-progress/scroll-progress.component.js +13 -17
  396. package/dist/components/scroll-progress/scroll-progress.component.js.map +1 -1
  397. package/dist/components/search/search.component.d.ts +6 -1
  398. package/dist/components/search/search.component.js.map +1 -1
  399. package/dist/components/select/select.component.d.ts +47 -0
  400. package/dist/components/select/select.component.js +271 -157
  401. package/dist/components/select/select.component.js.map +1 -1
  402. package/dist/components/select/select.scss.js +1 -1
  403. package/dist/components/sidenav/sidenav-group.component.d.ts +1 -0
  404. package/dist/components/sidenav/sidenav-group.component.js +11 -14
  405. package/dist/components/sidenav/sidenav-group.component.js.map +1 -1
  406. package/dist/components/sidenav/sidenav-item.component.js +20 -23
  407. package/dist/components/sidenav/sidenav-item.component.js.map +1 -1
  408. package/dist/components/sidenav/sidenav.component.js +17 -20
  409. package/dist/components/sidenav/sidenav.component.js.map +1 -1
  410. package/dist/components/skeleton/skeleton.component.js +9 -12
  411. package/dist/components/skeleton/skeleton.component.js.map +1 -1
  412. package/dist/components/skip-link/skip-link.component.js +13 -16
  413. package/dist/components/skip-link/skip-link.component.js.map +1 -1
  414. package/dist/components/snackbar/snackbar-message.component.d.ts +3 -1
  415. package/dist/components/snackbar/snackbar-message.component.js +39 -44
  416. package/dist/components/snackbar/snackbar-message.component.js.map +1 -1
  417. package/dist/components/snackbar/snackbar.component.d.ts +0 -1
  418. package/dist/components/snackbar/snackbar.component.js +36 -42
  419. package/dist/components/snackbar/snackbar.component.js.map +1 -1
  420. package/dist/components/spinner/spinner.component.js +33 -38
  421. package/dist/components/spinner/spinner.component.js.map +1 -1
  422. package/dist/components/stack/stack.component.d.ts +2 -1
  423. package/dist/components/stack/stack.component.js +16 -19
  424. package/dist/components/stack/stack.component.js.map +1 -1
  425. package/dist/components/switch/switch.component.d.ts +6 -0
  426. package/dist/components/switch/switch.component.js +48 -51
  427. package/dist/components/switch/switch.component.js.map +1 -1
  428. package/dist/components/switch/switch.scss.js +1 -1
  429. package/dist/components/tab/tab-group.component.d.ts +8 -3
  430. package/dist/components/tab/tab-group.component.js +43 -33
  431. package/dist/components/tab/tab-group.component.js.map +1 -1
  432. package/dist/components/tab/tab.component.js +22 -25
  433. package/dist/components/tab/tab.component.js.map +1 -1
  434. package/dist/components/table/table-cell.component.d.ts +1 -1
  435. package/dist/components/table/table-cell.component.js +16 -19
  436. package/dist/components/table/table-cell.component.js.map +1 -1
  437. package/dist/components/table/table-header.component.js +21 -24
  438. package/dist/components/table/table-header.component.js.map +1 -1
  439. package/dist/components/table/table-row.component.js +15 -18
  440. package/dist/components/table/table-row.component.js.map +1 -1
  441. package/dist/components/table/table.component.d.ts +2 -0
  442. package/dist/components/table/table.component.js +18 -22
  443. package/dist/components/table/table.component.js.map +1 -1
  444. package/dist/components/textarea/textarea.component.d.ts +2 -0
  445. package/dist/components/textarea/textarea.component.js +42 -46
  446. package/dist/components/textarea/textarea.component.js.map +1 -1
  447. package/dist/components/textarea/textarea.scss.js +1 -1
  448. package/dist/components/timeline/timeline-item.component.js +7 -10
  449. package/dist/components/timeline/timeline-item.component.js.map +1 -1
  450. package/dist/components/timeline/timeline.component.js +5 -8
  451. package/dist/components/timeline/timeline.component.js.map +1 -1
  452. package/dist/components/timepicker/time-grid.component.d.ts +3 -0
  453. package/dist/components/timepicker/time-grid.component.js +12 -15
  454. package/dist/components/timepicker/time-grid.component.js.map +1 -1
  455. package/dist/components/timepicker/timepicker.component.d.ts +5 -0
  456. package/dist/components/timepicker/timepicker.component.js +90 -95
  457. package/dist/components/timepicker/timepicker.component.js.map +1 -1
  458. package/dist/components/timepicker/timepicker.scss.js +1 -1
  459. package/dist/components/toc/toc.component.d.ts +2 -0
  460. package/dist/components/toc/toc.component.js +58 -61
  461. package/dist/components/toc/toc.component.js.map +1 -1
  462. package/dist/components/toggle-button/toggle-button.component.js +9 -12
  463. package/dist/components/toggle-button/toggle-button.component.js.map +1 -1
  464. package/dist/components/tooltip/tooltip.component.d.ts +2 -0
  465. package/dist/components/tooltip/tooltip.component.js +16 -18
  466. package/dist/components/tooltip/tooltip.component.js.map +1 -1
  467. package/dist/components/tray/tray.component.d.ts +4 -1
  468. package/dist/components/tray/tray.component.js +13 -16
  469. package/dist/components/tray/tray.component.js.map +1 -1
  470. package/dist/components/typography/typography.component.js +38 -41
  471. package/dist/components/typography/typography.component.js.map +1 -1
  472. package/dist/components.d.ts +3 -0
  473. package/dist/components.js +204 -195
  474. package/dist/components.js.map +1 -1
  475. package/dist/components.native.css +5 -2
  476. package/dist/components.native.css.map +1 -1
  477. package/dist/dap-design-system.d.ts +3 -0
  478. package/dist/dds-preupgrade.css +57 -0
  479. package/dist/dds.js +383 -374
  480. package/dist/dds.js.map +1 -1
  481. package/dist/internal/dds-hu-element.d.ts +8 -0
  482. package/dist/internal/dds-hu-element.js +40 -41
  483. package/dist/internal/dds-hu-element.js.map +1 -1
  484. package/dist/internal/mixin/choiceElementMixin.js +7 -7
  485. package/dist/internal/mixin/feedbackMixin.js +13 -15
  486. package/dist/internal/mixin/feedbackMixin.js.map +1 -1
  487. package/dist/internal/mixin/focusableMixin.js +6 -6
  488. package/dist/internal/mixin/formElementMixin.js +1 -1
  489. package/dist/internal/mixin/labelPositionedMixin.js +1 -1
  490. package/dist/internal/mixin/labelableMixin.d.ts +1 -1
  491. package/dist/internal/mixin/labelableMixin.js +61 -63
  492. package/dist/internal/mixin/labelableMixin.js.map +1 -1
  493. package/dist/internal/mixin/sizedMixin.js +29 -27
  494. package/dist/internal/mixin/sizedMixin.js.map +1 -1
  495. package/dist/internal/templates/formLabel.d.ts +41 -0
  496. package/dist/internal/templates/formLabel.js +47 -0
  497. package/dist/internal/templates/formLabel.js.map +1 -0
  498. package/dist/localization/locales/de.json.js +7 -7
  499. package/dist/localization/locales/en.json.js +6 -6
  500. package/dist/localization/locales/hu.json.js +1 -1
  501. package/dist/localization/localization.d.ts +1 -2
  502. package/dist/localization/localization.js +77 -76
  503. package/dist/localization/localization.js.map +1 -1
  504. package/dist/localization/localize-controller.d.ts +12 -0
  505. package/dist/localization/localize-controller.js +51 -0
  506. package/dist/localization/localize-controller.js.map +1 -0
  507. package/dist/manifest/types/vue/index.d.ts +509 -292
  508. package/dist/manifest/vscode.html-custom-data.json +328 -269
  509. package/dist/manifest/web-types.json +834 -720
  510. package/dist/react/dap-ds-accordion/index.d.ts +1 -0
  511. package/dist/react/dap-ds-accordion/index.js.map +1 -1
  512. package/dist/react/dap-ds-anchor-heading/index.d.ts +1 -0
  513. package/dist/react/dap-ds-anchor-heading/index.js.map +1 -1
  514. package/dist/react/dap-ds-banner/index.d.ts +1 -1
  515. package/dist/react/dap-ds-banner/index.js.map +1 -1
  516. package/dist/react/dap-ds-breadcrumb/index.d.ts +1 -1
  517. package/dist/react/dap-ds-breadcrumb/index.js.map +1 -1
  518. package/dist/react/dap-ds-button-group/index.d.ts +45 -0
  519. package/dist/react/dap-ds-button-group/index.js +15 -0
  520. package/dist/react/dap-ds-button-group/index.js.map +1 -0
  521. package/dist/react/dap-ds-button-group-separator/index.d.ts +24 -0
  522. package/dist/react/dap-ds-button-group-separator/index.js +15 -0
  523. package/dist/react/dap-ds-button-group-separator/index.js.map +1 -0
  524. package/dist/react/dap-ds-button-group-text/index.d.ts +30 -0
  525. package/dist/react/dap-ds-button-group-text/index.js +15 -0
  526. package/dist/react/dap-ds-button-group-text/index.js.map +1 -0
  527. package/dist/react/dap-ds-calendar/index.d.ts +3 -0
  528. package/dist/react/dap-ds-calendar/index.js.map +1 -1
  529. package/dist/react/dap-ds-callout/index.d.ts +1 -0
  530. package/dist/react/dap-ds-callout/index.js.map +1 -1
  531. package/dist/react/dap-ds-card/index.d.ts +1 -0
  532. package/dist/react/dap-ds-card/index.js.map +1 -1
  533. package/dist/react/dap-ds-checkbox/index.d.ts +7 -1
  534. package/dist/react/dap-ds-checkbox/index.js.map +1 -1
  535. package/dist/react/dap-ds-chip/index.d.ts +1 -0
  536. package/dist/react/dap-ds-chip/index.js.map +1 -1
  537. package/dist/react/dap-ds-code-puncher/index.d.ts +4 -0
  538. package/dist/react/dap-ds-code-puncher/index.js.map +1 -1
  539. package/dist/react/dap-ds-combobox/index.d.ts +9 -1
  540. package/dist/react/dap-ds-combobox/index.js.map +1 -1
  541. package/dist/react/dap-ds-command/index.d.ts +3 -0
  542. package/dist/react/dap-ds-command/index.js.map +1 -1
  543. package/dist/react/dap-ds-copybox-input/index.d.ts +11 -0
  544. package/dist/react/dap-ds-copybox-input/index.js.map +1 -1
  545. package/dist/react/dap-ds-datatable/index.d.ts +17 -0
  546. package/dist/react/dap-ds-datatable/index.js.map +1 -1
  547. package/dist/react/dap-ds-datepicker/index.d.ts +8 -0
  548. package/dist/react/dap-ds-datepicker/index.js.map +1 -1
  549. package/dist/react/dap-ds-file-input/index.d.ts +3 -0
  550. package/dist/react/dap-ds-file-input/index.js.map +1 -1
  551. package/dist/react/dap-ds-file-input-list-item/index.d.ts +1 -0
  552. package/dist/react/dap-ds-file-input-list-item/index.js.map +1 -1
  553. package/dist/react/dap-ds-form-label/index.d.ts +1 -1
  554. package/dist/react/dap-ds-form-label/index.js.map +1 -1
  555. package/dist/react/dap-ds-icon-button/index.d.ts +1 -0
  556. package/dist/react/dap-ds-icon-button/index.js.map +1 -1
  557. package/dist/react/dap-ds-input-group/index.d.ts +4 -0
  558. package/dist/react/dap-ds-input-group/index.js.map +1 -1
  559. package/dist/react/dap-ds-list-item/index.d.ts +2 -0
  560. package/dist/react/dap-ds-list-item/index.js.map +1 -1
  561. package/dist/react/dap-ds-number-input/index.d.ts +7 -0
  562. package/dist/react/dap-ds-number-input/index.js.map +1 -1
  563. package/dist/react/dap-ds-official-website-banner/index.d.ts +1 -0
  564. package/dist/react/dap-ds-official-website-banner/index.js.map +1 -1
  565. package/dist/react/dap-ds-option-item/index.d.ts +1 -0
  566. package/dist/react/dap-ds-option-item/index.js.map +1 -1
  567. package/dist/react/dap-ds-option-list/index.d.ts +1 -1
  568. package/dist/react/dap-ds-option-list/index.js.map +1 -1
  569. package/dist/react/dap-ds-password-input/index.d.ts +12 -5
  570. package/dist/react/dap-ds-password-input/index.js.map +1 -1
  571. package/dist/react/dap-ds-radio-button/index.d.ts +5 -0
  572. package/dist/react/dap-ds-radio-button/index.js.map +1 -1
  573. package/dist/react/dap-ds-radio-group/index.d.ts +5 -0
  574. package/dist/react/dap-ds-radio-group/index.js.map +1 -1
  575. package/dist/react/dap-ds-scroll-area/index.d.ts +2 -1
  576. package/dist/react/dap-ds-scroll-area/index.js.map +1 -1
  577. package/dist/react/dap-ds-search/index.d.ts +6 -1
  578. package/dist/react/dap-ds-search/index.js.map +1 -1
  579. package/dist/react/dap-ds-select/index.d.ts +6 -0
  580. package/dist/react/dap-ds-select/index.js.map +1 -1
  581. package/dist/react/dap-ds-sidenav-group/index.d.ts +1 -0
  582. package/dist/react/dap-ds-sidenav-group/index.js.map +1 -1
  583. package/dist/react/dap-ds-snackbar/index.d.ts +0 -1
  584. package/dist/react/dap-ds-snackbar/index.js.map +1 -1
  585. package/dist/react/dap-ds-snackbar-message/index.d.ts +3 -1
  586. package/dist/react/dap-ds-snackbar-message/index.js.map +1 -1
  587. package/dist/react/dap-ds-stack/index.d.ts +2 -1
  588. package/dist/react/dap-ds-stack/index.js.map +1 -1
  589. package/dist/react/dap-ds-switch/index.d.ts +6 -0
  590. package/dist/react/dap-ds-switch/index.js.map +1 -1
  591. package/dist/react/dap-ds-tab-group/index.d.ts +4 -2
  592. package/dist/react/dap-ds-tab-group/index.js.map +1 -1
  593. package/dist/react/dap-ds-table/index.d.ts +2 -0
  594. package/dist/react/dap-ds-table/index.js.map +1 -1
  595. package/dist/react/dap-ds-table-cell/index.d.ts +1 -1
  596. package/dist/react/dap-ds-table-cell/index.js.map +1 -1
  597. package/dist/react/dap-ds-textarea/index.d.ts +2 -0
  598. package/dist/react/dap-ds-textarea/index.js.map +1 -1
  599. package/dist/react/dap-ds-time-grid/index.d.ts +3 -0
  600. package/dist/react/dap-ds-time-grid/index.js.map +1 -1
  601. package/dist/react/dap-ds-timepicker/index.d.ts +5 -0
  602. package/dist/react/dap-ds-timepicker/index.js.map +1 -1
  603. package/dist/react/dap-ds-toc/index.d.ts +2 -0
  604. package/dist/react/dap-ds-toc/index.js.map +1 -1
  605. package/dist/react/dap-ds-tooltip/index.d.ts +2 -0
  606. package/dist/react/dap-ds-tooltip/index.js.map +1 -1
  607. package/dist/react/dap-ds-tray/index.d.ts +4 -1
  608. package/dist/react/dap-ds-tray/index.js.map +1 -1
  609. package/dist/react/index.d.ts +11 -8
  610. package/dist/react-types.ts +11 -8
  611. package/dist/react.js +362 -356
  612. package/dist/react.js.map +1 -1
  613. package/package.json +17 -3
  614. package/dist/node_modules/@lit/context/lib/context-request-event.js +0 -14
  615. package/dist/node_modules/@lit/context/lib/context-request-event.js.map +0 -1
  616. package/dist/node_modules/@lit/context/lib/controllers/context-consumer.js +0 -31
  617. package/dist/node_modules/@lit/context/lib/controllers/context-consumer.js.map +0 -1
  618. package/dist/node_modules/@lit/context/lib/controllers/context-provider.js +0 -40
  619. package/dist/node_modules/@lit/context/lib/controllers/context-provider.js.map +0 -1
  620. package/dist/node_modules/@lit/context/lib/create-context.js +0 -12
  621. package/dist/node_modules/@lit/context/lib/create-context.js.map +0 -1
  622. package/dist/node_modules/@lit/context/lib/value-notifier.js +0 -37
  623. package/dist/node_modules/@lit/context/lib/value-notifier.js.map +0 -1
  624. package/dist/node_modules/@lit/reactive-element/css-tag.js +0 -51
  625. package/dist/node_modules/@lit/reactive-element/css-tag.js.map +0 -1
  626. package/dist/node_modules/@lit/reactive-element/decorators/base.js +0 -10
  627. package/dist/node_modules/@lit/reactive-element/decorators/base.js.map +0 -1
  628. package/dist/node_modules/@lit/reactive-element/decorators/property.js +0 -38
  629. package/dist/node_modules/@lit/reactive-element/decorators/property.js.map +0 -1
  630. package/dist/node_modules/@lit/reactive-element/decorators/query-all.js +0 -17
  631. package/dist/node_modules/@lit/reactive-element/decorators/query-all.js.map +0 -1
  632. package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js +0 -20
  633. package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js.map +0 -1
  634. package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js +0 -20
  635. package/dist/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js.map +0 -1
  636. package/dist/node_modules/@lit/reactive-element/decorators/query.js +0 -21
  637. package/dist/node_modules/@lit/reactive-element/decorators/query.js.map +0 -1
  638. package/dist/node_modules/@lit/reactive-element/decorators/state.js +0 -25
  639. package/dist/node_modules/@lit/reactive-element/decorators/state.js.map +0 -1
  640. package/dist/node_modules/@lit/reactive-element/reactive-element.js +0 -276
  641. package/dist/node_modules/@lit/reactive-element/reactive-element.js.map +0 -1
  642. package/dist/node_modules/lit-element/lit-element.js +0 -53
  643. package/dist/node_modules/lit-element/lit-element.js.map +0 -1
  644. package/dist/node_modules/lit-html/async-directive.js +0 -71
  645. package/dist/node_modules/lit-html/async-directive.js.map +0 -1
  646. package/dist/node_modules/lit-html/directive-helpers.js +0 -46
  647. package/dist/node_modules/lit-html/directive-helpers.js.map +0 -1
  648. package/dist/node_modules/lit-html/directive.js +0 -28
  649. package/dist/node_modules/lit-html/directive.js.map +0 -1
  650. package/dist/node_modules/lit-html/directives/if-defined.js +0 -11
  651. package/dist/node_modules/lit-html/directives/if-defined.js.map +0 -1
  652. package/dist/node_modules/lit-html/directives/map.js +0 -15
  653. package/dist/node_modules/lit-html/directives/map.js.map +0 -1
  654. package/dist/node_modules/lit-html/directives/repeat.js +0 -63
  655. package/dist/node_modules/lit-html/directives/repeat.js.map +0 -1
  656. package/dist/node_modules/lit-html/directives/style-map.js +0 -37
  657. package/dist/node_modules/lit-html/directives/style-map.js.map +0 -1
  658. package/dist/node_modules/lit-html/lit-html.js +0 -249
  659. package/dist/node_modules/lit-html/lit-html.js.map +0 -1
  660. package/dist/node_modules/lit-html/static.js +0 -34
  661. package/dist/node_modules/lit-html/static.js.map +0 -1
  662. package/dist/node_modules/lit-i18n/src/lit-i18n.js +0 -95
  663. package/dist/node_modules/lit-i18n/src/lit-i18n.js.map +0 -1
@@ -1,53 +1,49 @@
1
1
  var f = (g, t, i) => new Promise((e, s) => {
2
- var a = (m) => {
2
+ var a = (c) => {
3
3
  try {
4
- y(i.next(m));
4
+ y(i.next(c));
5
5
  } catch (b) {
6
6
  s(b);
7
7
  }
8
- }, n = (m) => {
8
+ }, n = (c) => {
9
9
  try {
10
- y(i.throw(m));
10
+ y(i.throw(c));
11
11
  } catch (b) {
12
12
  s(b);
13
13
  }
14
- }, y = (m) => m.done ? e(m.value) : Promise.resolve(m.value).then(a, n);
14
+ }, y = (c) => c.done ? e(c.value) : Promise.resolve(c.value).then(a, n);
15
15
  y((i = i.apply(g, t)).next());
16
16
  });
17
- import { clsx as c } from "../../node_modules/clsx/dist/clsx.js";
17
+ import { clsx as u } from "../../node_modules/clsx/dist/clsx.js";
18
18
  import l from "../../_virtual/dayjs.min.js";
19
- import "../../node_modules/@lit/reactive-element/reactive-element.js";
20
- import { nothing as D } from "../../node_modules/lit-html/lit-html.js";
21
- import "../../node_modules/lit-element/lit-element.js";
22
- import { property as d } from "../../node_modules/@lit/reactive-element/decorators/property.js";
23
- import { state as S } from "../../node_modules/@lit/reactive-element/decorators/state.js";
24
- import { query as V } from "../../node_modules/@lit/reactive-element/decorators/query.js";
25
- import { ifDefined as p } from "../../node_modules/lit-html/directives/if-defined.js";
26
- import { html as u } from "../../node_modules/lit-html/static.js";
27
- import { getValidityStateObject as I } from "../../common/utils.js";
28
- import { GenericFormElement as k } from "../../internal/mixin/genericFormElement.js";
19
+ import { unsafeCSS as I, nothing as D } from "lit";
20
+ import { query as V, property as d, state as S } from "lit/decorators.js";
21
+ import { ifDefined as p } from "lit/directives/if-defined.js";
22
+ import { html as m } from "lit/static-html.js";
23
+ import { getValidityStateObject as k } from "../../common/utils.js";
24
+ import { GenericFormElement as C } from "../../internal/mixin/genericFormElement.js";
25
+ import { formLabelTemplate as z } from "../../internal/templates/formLabel.js";
29
26
  import "../../localization/localization.js";
30
- import C from "../calendar/calendar.component.js";
31
- import z from "../feedback/feedback.component.js";
32
- import E from "../form/form-label/form-label.component.js";
33
- import M from "../icon/icon.component.js";
34
- import F from "../icon-button/icon-button.component.js";
35
- import x from "../icons/business/business-calendar-line/business-calendar-line.component.js";
36
- import A from "../icons/system/system-loading-spinner/system-loading-spinner.component.js";
37
- import w from "../popup/popup.component.js";
38
- import B from "../tooltip/tooltip.component.js";
39
- import O from "../typography/typography.component.js";
40
- import L from "./datepicker.scss.js";
41
- import { t as T } from "../../node_modules/i18next/dist/esm/i18next.js";
42
- import { unsafeCSS as q } from "../../node_modules/@lit/reactive-element/css-tag.js";
43
- var U = Object.defineProperty, o = (g, t, i, e) => {
27
+ import M from "../calendar/calendar.component.js";
28
+ import E from "../feedback/feedback.component.js";
29
+ import F from "../form/form-label/form-label.component.js";
30
+ import x from "../icon/icon.component.js";
31
+ import A from "../icon-button/icon-button.component.js";
32
+ import w from "../icons/business/business-calendar-line/business-calendar-line.component.js";
33
+ import B from "../icons/system/system-loading-spinner/system-loading-spinner.component.js";
34
+ import O from "../popup/popup.component.js";
35
+ import L from "../tooltip/tooltip.component.js";
36
+ import T from "../typography/typography.component.js";
37
+ import q from "./datepicker.scss.js";
38
+ import { t as U } from "../../node_modules/i18next/dist/esm/i18next.js";
39
+ var Y = Object.defineProperty, o = (g, t, i, e) => {
44
40
  for (var s = void 0, a = g.length - 1, n; a >= 0; a--)
45
41
  (n = g[a]) && (s = n(t, i, s) || s);
46
- return s && U(t, i, s), s;
42
+ return s && Y(t, i, s), s;
47
43
  };
48
- const $ = "1901-01-01", v = "2099-12-31", Y = "YYYY-MM-DD";
44
+ const v = "1901-01-01", $ = "2099-12-31", j = "YYYY-MM-DD";
49
45
  var h;
50
- const r = (h = class extends k {
46
+ const r = (h = class extends C {
51
47
  constructor() {
52
48
  super(), this.mode = "single", this.disabledDate = (i) => !i, this.placement = "bottom-start", this.opened = !1, this.openCalendarOnInput = !1, this.sendEmptyEventOnInput = !1, this.loading = !1, this.mask = !1, this.formatSeparator = "|", this.clearButton = "true", this.clearButtonTestId = "datepicker-clear-button", this.calendarButtonTestId = "datepicker-calendar-button", this.floatingStrategy = "fixed", this.disableViewportAutoClose = !1, this.locale = l.locale(), this.formatOptions = [], this.setValueState = !0, this.lastMaskDigitCount = 0, this.handleDocumentMouseDown = (i) => {
53
49
  const e = i.composedPath();
@@ -65,11 +61,11 @@ const r = (h = class extends k {
65
61
  if (!e.value)
66
62
  this.setValue(void 0, !1, !0);
67
63
  else if (this.isInputValid()) {
68
- const s = l(e.value).locale(this.locale), a = this.normalizeDate(this.minDate) || l($), n = this.normalizeDate(this.maxDate) || l(v);
64
+ const s = l(e.value).locale(this.locale), a = this.normalizeDate(this.minDate) || l(v), n = this.normalizeDate(this.maxDate) || l($);
69
65
  s.isBefore(a, "day") || s.isAfter(n, "day") ? (this.setValue(void 0, !1, this.sendEmptyEventOnInput), this.emit("dds-invalid-date", {
70
66
  value: e.value,
71
67
  type: "out-of-range",
72
- date: s.format(Y)
68
+ date: s.format(j)
73
69
  })) : (this.setValue(s, !1), this.currentDate = s, this.emit("dds-valid-date", { value: e.value }));
74
70
  } else
75
71
  this.setValue(void 0, !1, this.sendEmptyEventOnInput), this.emit("dds-invalid-date", { value: e.value, type: "invalid" });
@@ -134,9 +130,9 @@ const r = (h = class extends k {
134
130
  const i = this.normalizeDate(this.currentDate);
135
131
  this.calendar.currentDate = i || l();
136
132
  const e = this.normalizeDate(this.minDate);
137
- this.calendar.minDate = e || l($), e && (this.minDate = e);
133
+ this.calendar.minDate = e || l(v), e && (this.minDate = e);
138
134
  const s = this.normalizeDate(this.maxDate);
139
- this.calendar.maxDate = s || l(v), s && (this.maxDate = s), this.calendar.disabledDate = this.disabledDate, this.hideAdjacentMonths !== void 0 && (this.calendar.hideAdjacentMonths = this.hideAdjacentMonths);
135
+ this.calendar.maxDate = s || l($), s && (this.maxDate = s), this.calendar.disabledDate = this.disabledDate, this.hideAdjacentMonths !== void 0 && (this.calendar.hideAdjacentMonths = this.hideAdjacentMonths);
140
136
  }
141
137
  updated(t) {
142
138
  var s;
@@ -165,11 +161,11 @@ const r = (h = class extends k {
165
161
  }
166
162
  if (t.has("minDate")) {
167
163
  const a = this.normalizeDate(this.minDate);
168
- this.calendar.minDate = a || l($), a && (this.minDate = a);
164
+ this.calendar.minDate = a || l(v), a && (this.minDate = a);
169
165
  }
170
166
  if (t.has("maxDate")) {
171
167
  const a = this.normalizeDate(this.maxDate);
172
- this.calendar.maxDate = a || l(v), a && (this.maxDate = a);
168
+ this.calendar.maxDate = a || l($), a && (this.maxDate = a);
173
169
  }
174
170
  t.has("disabledDate") && (this.calendar.disabledDate = this.disabledDate), (t.has("format") || t.has("formatSeparator")) && (this.formatOptions = ((s = this.format) == null ? void 0 : s.split(this.formatSeparator)) || []);
175
171
  }
@@ -258,7 +254,7 @@ const r = (h = class extends k {
258
254
  return !!this.value;
259
255
  }
260
256
  get validity() {
261
- return this.internals.validity ? this.internals.validity : I({
257
+ return this.internals.validity ? this.internals.validity : k({
262
258
  valueMissing: this.required && !this.getValidity(),
263
259
  patternMismatch: !this.isValueValid()
264
260
  });
@@ -284,23 +280,22 @@ const r = (h = class extends k {
284
280
  }
285
281
  render() {
286
282
  var t, i;
287
- return u` <div class="label-container">
288
- ${this.label && u`<dap-ds-form-label
289
- part="label"
290
- id=${this.labelId}
291
- .size=${this.size}
292
- .required=${this.required}
293
- .requiredLabel=${this.requiredLabel}
294
- .optional=${this.optional}
295
- .optionalLabel=${this.optionalLabel}
296
- .disabled=${this.disabled}
297
- class=${c("label")}
298
- .noMargin=${!!this.description}
299
- for=${this.inputId}
300
- .hideLabel=${this.hideLabel}
301
- label=${p(this.label)}>
302
- </dap-ds-form-label>`}
303
- ${this.tooltip && u` <dap-ds-tooltip
283
+ return m` <div class="label-container">
284
+ ${z({
285
+ label: this.label,
286
+ id: this.labelId,
287
+ htmlFor: this.inputId,
288
+ size: this.size,
289
+ required: this.required,
290
+ requiredLabel: this.requiredLabel,
291
+ optional: this.optional,
292
+ optionalLabel: this.optionalLabel,
293
+ disabled: this.disabled,
294
+ subtle: this.subtle,
295
+ noMargin: !!this.description,
296
+ hideLabel: this.hideLabel
297
+ })}
298
+ ${this.tooltip && m` <dap-ds-tooltip
304
299
  part="tooltip"
305
300
  content=${this.tooltip}
306
301
  mode="toggle"
@@ -318,11 +313,11 @@ const r = (h = class extends k {
318
313
  </dap-ds-icon-button>
319
314
  </dap-ds-tooltip>`}
320
315
  </div>
321
- ${this.description && u`
316
+ ${this.description && m`
322
317
  <dap-ds-typography
323
318
  part="description"
324
319
  variant="description"
325
- class=${c("input-description")}
320
+ class=${u("input-description")}
326
321
  size=${p(this.size)}
327
322
  id=${this.descriptionId}>
328
323
  ${this.description}
@@ -344,7 +339,7 @@ const r = (h = class extends k {
344
339
  <div
345
340
  slot="trigger"
346
341
  part="trigger"
347
- class="${c("select", `select--${this.size}`, {
342
+ class="${u("select", `select--${this.size}`, {
348
343
  "select--disabled": this.disabled,
349
344
  "select--readonly": this.readonly,
350
345
  "select--opened": this.opened,
@@ -356,7 +351,7 @@ const r = (h = class extends k {
356
351
  <input
357
352
  part="input"
358
353
  role="combobox"
359
- class="${c("combobox__input", "input", `input--${this.size}`, {
354
+ class="${u("combobox__input", "input", `input--${this.size}`, {
360
355
  "input--disabled": this.disabled,
361
356
  "input--readonly": this.readonly
362
357
  })}"
@@ -384,31 +379,31 @@ const r = (h = class extends k {
384
379
  @invalid=${this.handleInvalid}
385
380
  @click=${this.handleClick} />
386
381
  <div
387
- class="${c("select-action", `select-action--${this.size}`, {
382
+ class="${u("select-action", `select-action--${this.size}`, {
388
383
  "select-action--disabled": this.disabled,
389
384
  "select-action--readonly": this.readonly,
390
385
  "select-action--opened": this.opened
391
386
  })}">
392
- ${this.clearButton === "true" && !this.readonly ? u`<div class="${c("clear-icon")}">
387
+ ${this.clearButton === "true" && !this.readonly ? m`<div class="${u("clear-icon")}">
393
388
  <dap-ds-icon-button
394
389
  icon="close-line"
395
390
  part="clear-button"
396
391
  data-testid=${this.clearButtonTestId}
397
392
  aria-label=${p(
398
- (i = this.clearButtonAriaLabel) != null ? i : T("clear", { lng: this.locale })
393
+ (i = this.clearButtonAriaLabel) != null ? i : U("clear", { lng: this.locale })
399
394
  )}
400
395
  ?disabled=${this.disabled}
401
396
  @click=${this.handleClearClick}></dap-ds-icon-button>
402
397
  </div>` : D}
403
398
  <div
404
- class="${c("indicator-icon", {
399
+ class="${u("indicator-icon", {
405
400
  "indicator-icon--loading": this.loading
406
401
  })}">
407
- ${this.loading ? u`<dap-ds-icon-loading-spinner></dap-ds-icon-loading-spinner>` : u`<dap-ds-icon-calendar-line
402
+ ${this.loading ? m`<dap-ds-icon-loading-spinner></dap-ds-icon-loading-spinner>` : m`<dap-ds-icon-calendar-line
408
403
  aria-hidden="true"
409
404
  part="calendar-button"
410
405
  data-testid=${this.calendarButtonTestId}
411
- class=${c("calendar-icon")}
406
+ class=${u("calendar-icon")}
412
407
  @click=${this.handleClick}></dap-ds-icon-calendar-line>`}
413
408
  </div>
414
409
  </div>
@@ -430,7 +425,7 @@ const r = (h = class extends k {
430
425
  }}>
431
426
  </dap-ds-calendar>
432
427
  </dap-ds-popup>
433
- ${this.feedback && u`<dap-ds-feedback
428
+ ${this.feedback && m`<dap-ds-feedback
434
429
  part="feedback"
435
430
  feedbackType=${p(this.feedbackType)}
436
431
  feedbackSize="${p(this.size)}"
@@ -440,16 +435,16 @@ const r = (h = class extends k {
440
435
  </div>`;
441
436
  }
442
437
  }, h.tagName = "dap-ds-datepicker", h.dependencies = {
443
- "dap-ds-form-label": E,
444
- "dap-ds-tooltip": B,
445
- "dap-ds-icon-button": F,
446
- "dap-ds-icon": M,
447
- "dap-ds-typography": O,
448
- "dap-ds-popup": w,
449
- "dap-ds-icon-loading-spinner": A,
450
- "dap-ds-icon-calendar-line": x,
451
- "dap-ds-calendar": C,
452
- "dap-ds-feedback": z
438
+ "dap-ds-form-label": F,
439
+ "dap-ds-tooltip": L,
440
+ "dap-ds-icon-button": A,
441
+ "dap-ds-icon": x,
442
+ "dap-ds-typography": T,
443
+ "dap-ds-popup": O,
444
+ "dap-ds-icon-loading-spinner": B,
445
+ "dap-ds-icon-calendar-line": w,
446
+ "dap-ds-calendar": M,
447
+ "dap-ds-feedback": E
453
448
  }, h.nextId = 0, h.datePropertyConverter = {
454
449
  fromAttribute: (t) => {
455
450
  if (t == null || t === "")
@@ -467,7 +462,7 @@ const r = (h = class extends k {
467
462
  }
468
463
  },
469
464
  toAttribute: (t) => t == null ? null : l.isDayjs(t) || t instanceof Date ? t.toISOString() : typeof t == "string" ? t : typeof t == "number" ? String(t) : null
470
- }, h.styles = q(L), h);
465
+ }, h.styles = I(q), h);
471
466
  o([
472
467
  V(".combobox__input")
473
468
  ], r.prototype, "triggerInput");
@@ -570,8 +565,8 @@ o([
570
565
  o([
571
566
  S()
572
567
  ], r.prototype, "setValueState");
573
- let mt = r;
568
+ let pt = r;
574
569
  export {
575
- mt as default
570
+ pt as default
576
571
  };
577
572
  //# sourceMappingURL=datepicker.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.component.js","sources":["../../../src/components/datepicker/datepicker.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { nothing, PropertyValueMap, unsafeCSS } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { html } from 'lit/static-html.js'\n\nimport {\n CommonFormElementSize,\n FloatingStrategy,\n PopupPlacement,\n} from '@/common/types'\nimport { getValidityStateObject } from '@/common/utils'\nimport { GenericFormElement } from '@/internal/mixin/genericFormElement'\nimport { t } from '@/localization/localization'\n\nimport DapDSCalendar from '../calendar/calendar.component'\nimport DapDSFeedback from '../feedback/feedback.component'\nimport DapDSFormLabel from '../form/form-label/form-label.component'\nimport DapDSIcon from '../icon/icon.component'\nimport DapDSIconButton from '../icon-button/icon-button.component'\nimport BusinessCalendarLine from '../icons/business/business-calendar-line/business-calendar-line.component'\nimport SystemLoadingSpinner from '../icons/system/system-loading-spinner/system-loading-spinner.component'\nimport DapDSPopup from '../popup/popup.component'\nimport DapDSTooltip from '../tooltip/tooltip.component'\nimport DapDSTypography from '../typography/typography.component'\nimport styles from './datepicker.scss?inline'\n\ninterface MaskToken {\n type: 'digit' | 'separator'\n length?: number\n value?: string\n}\n\n/**\n * The bounds the calendar falls back to when the consumer sets no minDate/maxDate.\n * They have to stay finite: the calendar renders one option per year between them.\n */\nconst DEFAULT_MIN_DATE = '1901-01-01'\nconst DEFAULT_MAX_DATE = '2099-12-31'\n\n/** Framework-neutral shape for the date handed to consumers on the out-of-range event. */\nconst DEFAULT_ISO_FORMAT = 'YYYY-MM-DD'\n\n/**\n * `dap-ds-datepicker`\n * @summary A datepicker is a graphical user interface widget that allows the user to select a date from a calendar and/or time from a time range.\n * @element dap-ds-datepicker\n * @title - Datepicker\n *\n * @property {Dayjs} value - The value of the datepicker.\n * @property {string} label - The label of the datepicker.\n * @property {boolean} hideLabel - Visually hides the label while keeping it available to assistive technology. (default: false)\n * @property {string} description - The description of the datepicker.\n * @property {'xs' | 'sm' | 'sm'} size - The size of the datepicker.\n * @property {boolean} disabled - The disabled state of the datepicker.\n * @property {boolean} required - The required state of the datepicker.\n * @property {boolean} readonly - The readonly state of the datepicker.\n * @property {boolean} autofocus - The autofocus state of the datepicker.\n * @property {string} tooltip - The tooltip of the datepicker.\n * @property {'top' | 'right' | 'bottom' | 'left'} tooltipPlacement - The tooltip placement of the datepicker.\n * @property {string} feedback - The feedback of the datepicker.\n * @property {'negative' | 'positive' | 'warning'} feedbackType - The feedback type of the datepicker.\n * @property {boolean} optional - The optional state of the datepicker.\n * @property {string} optionalLabel - The optional label of the datepicker.\n * @property {string} requiredLabel - The required indicator of the datepicker. (default: '*')\n * @property {boolean} subtle - The weight of the label. Default is `false`\n * @property {string} autocomplete - The autocomplete of the datepicker.\n * @property {boolean} autofocus - The autofocus of the datepicker.\n *\n * @event {{ value: string }} dds-change - Fired when the datepicker value changes.\n * @event {{ value: string }} dds-input - Fired when the datepicker input value changes.\n * @event {{ value: string }} dds-valid-date - Fired when the datepicker input value is valid. Happens on manual input typing.\n * @event {{ value: string, type: 'invalid' | 'out-of-range', date?: string }} dds-invalid-date - Fired when the datepicker input value is invalid. Happens on manual input typing. For `out-of-range` the typed text was a well-formed date, so `date` carries it as an ISO (`YYYY-MM-DD`) string and the consumer can phrase its own range message; for `invalid` the text could not be parsed and `date` is omitted.\n * @event {{ void }} dds-clear - Fired when the datepicker is cleared.\n * @event {{ void }} dds-focus - Emitted when the datepicker gains focus.\n * @event {{ void }} dds-blur - Emitted when the datepicker loses focus.\n *\n * @csspart base - The main datepicker container.\n * @csspart calendar - The calendar of the datepicker.\n * @csspart trigger - The trigger button of the datepicker.\n * @csspart label - The label of the datepicker.\n * @csspart description - The description of the datepicker.\n * @csspart feedback - The feedback of the datepicker.\n * @csspart tooltip - The tooltip of the datepicker.\n * @csspart input - The input of the datepicker.\n * @csspart clear-button - The clear button of the datepicker.\n * @csspart calendar-grid-cell-base - The base of the calendar grid cell.\n * @csspart calendar-grid-cell - The cell of the calendar grid.\n * @csspart calendar-grid-header-cell-base - The base of the calendar grid header cell.\n * @csspart calendar-grid-header-cell - The header cell of the calendar grid.\n * @csspart calendar-grid-cell-today-mark - The today mark of the calendar grid cell.\n *\n * @cssproperty --dds-combobox-background - The background color of the combobox. (default: var(--dds-fields-background-default))\n * @cssproperty --dds-combobox-border-color - The border color of the combobox. (default: var(--dds-border-neutral-base))\n * @cssproperty --dds-combobox-border-width - The border width of the combobox. (default: var(--dds-border-width-base, 1px))\n * @cssproperty --dds-combobox-border-radius - The border radius of the combobox. (default: var(--dds-radius-base))\n * @cssproperty --dds-combobox-text-color - The text color of the combobox. (default: var(--dds-text-neutral-base))\n * @cssproperty --dds-combobox-placeholder-color - The placeholder text color. (default: var(--dds-text-neutral-subtle))\n * @cssproperty --dds-combobox-disabled-background - The background color when disabled. (default: var(--dds-background-neutral-stronger))\n * @cssproperty --dds-combobox-disabled-text - The text color when disabled. (default: var(--dds-text-neutral-disabled))\n * @cssproperty --dds-combobox-error-border - The border color for error state. (default: var(--dds-border-negative-base))\n * @cssproperty --dds-combobox-success-border - The border color for success state. (default: var(--dds-border-positive-base))\n * @cssproperty --dds-combobox-icon-color - The color of the icons. (default: var(--dds-text-icon-neutral-subtle))\n * @cssproperty --dds-combobox-clear-icon-color - The color of the clear icon. (default: var(--dds-button-subtle-icon-neutral-enabled))\n * @cssproperty --dds-combobox-popup-background - The background color of the popup. (default: var(--dds-background-neutral-subtle))\n * @cssproperty --dds-combobox-popup-shadow - The box shadow of the popup. (default: 0 4px 6px -1px rgb(0 0 0 / 8%), 0 2px 4px -1px rgb(0 0 0 / 6%))\n * @cssproperty --dds-combobox-padding-xs - The padding for extra small size. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-padding-sm - The padding for small size. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-padding-lg - The padding for large size. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-padding-horizontal - The horizontal padding. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-padding-vertical - The vertical padding. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-gap - The gap between elements. (default: var(--dds-spacing-100))\n * @cssproperty --dds-combobox-icon-gap - The gap between icons. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-action-gap - The gap between action elements. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-action-padding - The padding for action elements. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-clear-icon-width - The width of the clear icon. (default: var(--dds-spacing-800))\n * @cssproperty --dds-combobox-dropdown-icon-right - The right position of the dropdown icon. (default: var(--dds-spacing-600))\n * @cssproperty --dds-combobox-min-width - The minimum width of the combobox. (default: 7.5rem)\n */\nexport default class DapDSDatePicker extends GenericFormElement {\n static tagName = 'dap-ds-datepicker'\n\n static dependencies = {\n 'dap-ds-form-label': DapDSFormLabel,\n 'dap-ds-tooltip': DapDSTooltip,\n 'dap-ds-icon-button': DapDSIconButton,\n 'dap-ds-icon': DapDSIcon,\n 'dap-ds-typography': DapDSTypography,\n 'dap-ds-popup': DapDSPopup,\n 'dap-ds-icon-loading-spinner': SystemLoadingSpinner,\n 'dap-ds-icon-calendar-line': BusinessCalendarLine,\n 'dap-ds-calendar': DapDSCalendar,\n 'dap-ds-feedback': DapDSFeedback,\n }\n\n private static nextId = 0\n\n /**\n * Property converter for date properties.\n * Converts string attributes (from React) to Dayjs objects.\n * Allows both attribute binding (strings) and property binding (Dayjs objects).\n *\n * Note: When properties are set directly (bypassing attributes), they are normalized\n * in the `updated` lifecycle method via `normalizeDate`.\n */\n private static datePropertyConverter = {\n fromAttribute: (value: string | null): Dayjs | undefined => {\n if (value === null || value === undefined || value === '') {\n return undefined\n }\n const trimmed = value.trim()\n if (!trimmed) return undefined\n\n // Check if it's a numeric timestamp string\n if (/^\\d+$/.test(trimmed)) {\n const numValue = Number(trimmed)\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n if (numValue > 0 && numValue < 10000000000) {\n return dayjs(numValue * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n if (numValue >= 0 && numValue <= 4102444800000) {\n return dayjs(numValue)\n }\n }\n // Parse as date string (ISO string, date string, etc.)\n return dayjs(value)\n },\n toAttribute: (\n value: Dayjs | string | Date | number | undefined | null,\n ): string | null => {\n if (value === undefined || value === null) {\n return null // null removes the attribute\n }\n // Convert Dayjs to ISO string for attribute\n if (dayjs.isDayjs(value)) {\n return value.toISOString()\n }\n if (value instanceof Date) {\n return value.toISOString()\n }\n if (typeof value === 'string') {\n return value\n }\n if (typeof value === 'number') {\n return String(value)\n }\n return null\n },\n }\n\n private readonly inputId: string\n private readonly labelId: string\n private readonly descriptionId: string\n\n @query('.combobox__input') private readonly triggerInput!: HTMLInputElement\n @query('#calendar') private readonly calendar!: DapDSCalendar\n @query('dap-ds-popup') private readonly popup!: HTMLElement\n\n /** The value of the datepicker (selected date in single mode).\n * @type {Dayjs}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n override value?: Dayjs\n\n /** The mode of the datepicker - single date or range selection.\n * @type {'single' | 'range'}\n * @default 'single'\n */\n @property({ reflect: true }) mode: 'single' | 'range' = 'single'\n\n /** The current visible date (month and year) of the calendar. Only the month and year are considered.\n * @type {Dayjs | string | Date}\n * @default dayjs()\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n currentDate?: Dayjs | string | Date\n\n /** The earliest date the datepicker accepts. Compared with day granularity.\n * @type {Dayjs | string | Date}\n * @default dayjs('1901-01-01')\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n minDate?: Dayjs | string | Date\n\n /** The latest date the datepicker accepts. Compared with day granularity.\n * @type {Dayjs | string | Date}\n * @default dayjs('2099-12-31')\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n maxDate?: Dayjs | string | Date\n\n /** The disabled date of the datepicker. This function will be called for each date to determine if it is disabled.\n * @type {(date: Dayjs) => boolean}\n * @default (date: Dayjs) => false\n */\n @property({ attribute: false }) disabledDate = (date: Dayjs) => {\n return !date\n }\n\n /** The start date of the range selection (only used in range mode).\n * @type {Dayjs | string | Date}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n rangeStart?: Dayjs | string | Date\n\n /** The end date of the range selection (only used in range mode).\n * @type {Dayjs | string | Date}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n rangeEnd?: Dayjs | string | Date\n\n /** The placement of the dropdown of the datepicker.\n * @type {'top-start' | 'top' | 'top-end' | 'right-start' | 'right' | 'right-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end'}\n */\n @property({ reflect: true }) placement: PopupPlacement = 'bottom-start'\n\n /** The open state of the datepicker. */\n @property({ type: Boolean, reflect: true }) opened = false\n\n /** Wheter the calendar should open on typing. */\n @property({ type: Boolean }) openCalendarOnInput = false\n\n /** Wheter the calendar should send an empty event on typing. */\n @property({ type: Boolean }) sendEmptyEventOnInput = false\n\n /** The placeholder of the datepicker. */\n @property() placeholder: string | null\n\n /** The loading state of the datepicker. */\n @property({ type: Boolean }) loading?: boolean = false\n\n /** Whether to enable input masking. When active, only digit characters are accepted and format separators are auto-inserted after each complete digit group. Only works in single mode with a single configured format. */\n @property({ type: Boolean }) mask = false\n\n /** The format of the datepicker. This is a comma separated list of [formats](https://day.js.org/docs/en/display/format). */\n @property({ type: String }) format?: string\n\n /** The format separator character in the format attribute. */\n @property({ type: String }) formatSeparator: string = '|'\n\n /** Whether the clear button should be shown. */\n @property({ type: String }) clearButton?: string = 'true'\n\n /** The aria label of the clear button. */\n @property({ type: String }) clearButtonAriaLabel?: string\n\n /** `data-testid` for the clear button. */\n @property() clearButtonTestId = 'datepicker-clear-button'\n\n /** `data-testid` for the calendar indicator button that opens the calendar. */\n @property() calendarButtonTestId = 'datepicker-calendar-button'\n\n /** The floating strategy of the datepicker. */\n @property({ type: String }) floatingStrategy: FloatingStrategy = 'fixed'\n\n /** Whether to keep popup open when trigger leaves viewport. */\n @property({ type: Boolean }) disableViewportAutoClose: boolean = false\n\n /** The locale of the datepicker. By default it uses the global locale from dayjs. It is determined from the browser language.\n * @type {'hu' | 'en' | 'de'}\n */\n @property({ type: String }) locale: string = dayjs.locale()\n\n /** Whether to hide dates from adjacent months (previous/next) in the calendar grid. When not explicitly set, defaults to `false` for single mode and `true` for range mode.\n * @type {boolean}\n */\n @property({ type: Boolean }) hideAdjacentMonths?: boolean\n\n @state() private formatOptions: string[] = []\n @state() private setValueState: boolean = true\n private lastMaskDigitCount = 0\n\n static readonly styles = unsafeCSS(styles)\n\n constructor() {\n super()\n DapDSDatePicker.nextId++\n const uniqueSuffix =\n typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID().slice(0, 8)\n : Date.now().toString(36)\n this.inputId = `input-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n this.labelId = `label-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n this.descriptionId = `description-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n // Initialize the feedbackId from FeedbackMixin\n this.feedbackId = `feedback-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n }\n\n /**\n * Normalizes a date value to a Dayjs object.\n * Handles Dayjs objects, timestamps (numbers or strings), strings, Date objects, and undefined/null.\n */\n private normalizeDate(\n value: Dayjs | string | Date | number | undefined | null,\n ): Dayjs | undefined {\n if (value === undefined || value === null) {\n return undefined\n }\n\n // If it's already a Dayjs object, return it\n if (dayjs.isDayjs(value)) {\n return value\n }\n\n // If it's a string, check if it's a numeric timestamp string\n if (typeof value === 'string') {\n // Check if the string is purely numeric (timestamp as string)\n const trimmed = value.trim()\n if (/^\\d+$/.test(trimmed)) {\n const numValue = Number(trimmed)\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n // Unix timestamps in seconds are typically 10 digits, milliseconds are 13 digits\n if (numValue > 0 && numValue < 10000000000) {\n return dayjs(numValue * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n // Valid range: between 0 and year 2100 (4102444800000 ms)\n if (numValue >= 0 && numValue <= 4102444800000) {\n return dayjs(numValue)\n }\n }\n // If it's not a numeric string, let dayjs parse it as a date string\n return dayjs(value)\n }\n\n // If it's a number (timestamp), convert it\n if (typeof value === 'number') {\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n // Unix timestamps in seconds are typically 10 digits, milliseconds are 13 digits\n if (value > 0 && value < 10000000000) {\n return dayjs(value * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n // Valid range: between 0 and year 2100 (4102444800000 ms)\n if (value >= 0 && value <= 4102444800000) {\n return dayjs(value)\n }\n }\n\n // For Date objects, dayjs will handle them\n return dayjs(value)\n }\n\n protected firstUpdated(\n _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.firstUpdated(_changedProperties)\n\n // Set formatOptions BEFORE using getFormattedValue()\n this.formatOptions = this.format?.split(this.formatSeparator) || []\n\n this.calendar.mode = this.mode\n\n if (this.mode === 'range') {\n if (this.rangeStart) {\n const normalized = this.normalizeDate(this.rangeStart)\n if (normalized) {\n this.calendar.rangeStart = normalized.locale(this.locale)\n }\n }\n if (this.rangeEnd) {\n const normalized = this.normalizeDate(this.rangeEnd)\n if (normalized) {\n this.calendar.rangeEnd = normalized.locale(this.locale)\n }\n }\n } else if (this.value) {\n const normalized = this.normalizeDate(this.value)\n if (normalized) {\n this.calendar.value = normalized.locale(this.locale)\n // Update the internal value to be a Dayjs object\n this.value = normalized\n // Set the input field value if setValueState is enabled\n if (this.setValueState && this.triggerInput) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n }\n\n const normalizedCurrentDate = this.normalizeDate(this.currentDate)\n this.calendar.currentDate = normalizedCurrentDate || dayjs()\n\n const normalizedMinDate = this.normalizeDate(this.minDate)\n this.calendar.minDate = normalizedMinDate || dayjs(DEFAULT_MIN_DATE)\n if (normalizedMinDate) {\n this.minDate = normalizedMinDate\n }\n\n const normalizedMaxDate = this.normalizeDate(this.maxDate)\n this.calendar.maxDate = normalizedMaxDate || dayjs(DEFAULT_MAX_DATE)\n if (normalizedMaxDate) {\n this.maxDate = normalizedMaxDate\n }\n this.calendar.disabledDate = this.disabledDate\n\n // Only set hideAdjacentMonths if explicitly provided\n if (this.hideAdjacentMonths !== undefined) {\n this.calendar.hideAdjacentMonths = this.hideAdjacentMonths\n }\n }\n\n protected updated(\n _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.updated(_changedProperties)\n\n // Process value changes - check both Lit's change detection AND if value exists but wasn't detected\n // This handles cases where React sets a dayjs object but Lit doesn't detect it as changed\n const valueChanged = _changedProperties.has('value')\n const valueExistsButNotProcessed =\n !valueChanged && this.value && this.mode === 'single' && this.hasUpdated\n\n if (\n (valueChanged || valueExistsButNotProcessed) &&\n this.mode === 'single'\n ) {\n const normalized = this.normalizeDate(this.value)\n if (normalized) {\n // Only update if the normalized value is different from current calendar value to avoid infinite loops\n const currentCalendarValue = this.calendar.value\n if (\n !currentCalendarValue ||\n !normalized.isSame(currentCalendarValue, 'day')\n ) {\n this.calendar.value = normalized.locale(this.locale)\n // Update the internal value to be a Dayjs object\n this.value = normalized\n }\n } else {\n this.calendar.value = undefined\n }\n if (this.setValueState && this.triggerInput) {\n this.triggerInput.value = this.getFormattedValue()\n }\n this.setValidity()\n }\n\n if (_changedProperties.has('rangeStart') && this.mode === 'range') {\n const normalized = this.normalizeDate(this.rangeStart)\n if (normalized) {\n this.calendar.rangeStart = normalized.locale(this.locale)\n this.rangeStart = normalized\n } else {\n this.calendar.rangeStart = undefined\n }\n if (this.setValueState && this.rangeStart && this.rangeEnd) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n\n if (_changedProperties.has('rangeEnd') && this.mode === 'range') {\n const normalized = this.normalizeDate(this.rangeEnd)\n if (normalized) {\n this.calendar.rangeEnd = normalized.locale(this.locale)\n this.rangeEnd = normalized\n } else {\n this.calendar.rangeEnd = undefined\n }\n if (this.setValueState && this.rangeStart && this.rangeEnd) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n\n if (_changedProperties.has('currentDate')) {\n const normalized = this.normalizeDate(this.currentDate)\n this.calendar.currentDate = normalized || dayjs()\n }\n\n if (_changedProperties.has('minDate')) {\n const normalized = this.normalizeDate(this.minDate)\n this.calendar.minDate = normalized || dayjs(DEFAULT_MIN_DATE)\n if (normalized) {\n this.minDate = normalized\n }\n }\n\n if (_changedProperties.has('maxDate')) {\n const normalized = this.normalizeDate(this.maxDate)\n this.calendar.maxDate = normalized || dayjs(DEFAULT_MAX_DATE)\n if (normalized) {\n this.maxDate = normalized\n }\n }\n\n if (_changedProperties.has('disabledDate')) {\n this.calendar.disabledDate = this.disabledDate\n }\n\n if (\n _changedProperties.has('format') ||\n _changedProperties.has('formatSeparator')\n ) {\n this.formatOptions = this.format?.split(this.formatSeparator) || []\n }\n }\n\n getFormattedValue() {\n if (this.mode === 'range') {\n if (!this.rangeStart || !this.rangeEnd) {\n return ''\n }\n const format = this.formatOptions[0] || 'L'\n const startStr = dayjs(this.rangeStart).locale(this.locale).format(format)\n const endStr = dayjs(this.rangeEnd).locale(this.locale).format(format)\n return `${startStr} - ${endStr}`\n }\n\n if (!this.value) {\n return ''\n }\n\n return dayjs(this.value)\n .locale(this.locale)\n .format(this.formatOptions[0] || 'L')\n }\n\n isValidFormat(value: string) {\n if (!this.formatOptions.length) {\n // For the default 'L' format, we need to be more strict to prevent partial dates\n // Get the actual format pattern for the current locale\n const trimmedValue = value.trim()\n\n // Get the actual 'L' format pattern for the current locale\n const localeFormat = dayjs()\n .locale(this.locale)\n .localeData()\n .longDateFormat('L')\n\n // Now validate that the input actually matches the expected format pattern\n // Use the robust string comparison approach: parse and format back to compare\n // The localeFormat already contains the correct format for the current locale\n const parsedDate = dayjs(trimmedValue, localeFormat)\n if (!parsedDate.isValid()) {\n return false\n }\n // Format back and compare - if they differ, the input was incomplete\n // Handle optional trailing separators by normalizing both strings\n const formattedDate = parsedDate.format(localeFormat)\n const normalizedInput = trimmedValue.replace(/[.,\\s]+$/, '') // Remove trailing separators\n const normalizedFormatted = formattedDate.replace(/[.,\\s]+$/, '') // Remove trailing separators\n if (normalizedFormatted !== normalizedInput) {\n return false\n }\n\n return true\n }\n\n return this.formatOptions.some(format => {\n // Use the same robust string comparison approach for custom formats\n // Parse with the custom format and compare the result\n const parsedDate = dayjs(value, format)\n if (!parsedDate.isValid()) {\n return false\n }\n // Format back and compare - if they differ, the input was incomplete\n // Handle optional trailing separators by normalizing both strings\n const formattedDate = parsedDate.format(format)\n const normalizedInput = value.replace(/[.,\\s]+$/, '') // Remove trailing separators\n const normalizedFormatted = formattedDate.replace(/[.,\\s]+$/, '') // Remove trailing separators\n return normalizedFormatted === normalizedInput\n })\n }\n\n isValueValid() {\n if (!this.value) {\n return true\n }\n\n return this.isInputValid()\n }\n\n isInputValid() {\n return this.isValidFormat(this.triggerInput.value)\n }\n\n setValue(\n value?: Dayjs,\n setInputValue: boolean = true,\n sendEmptyEventOnInput: boolean = true,\n ) {\n this.value = value\n\n if (setInputValue) {\n this.setValueState = true\n this.triggerInput.value = this.getFormattedValue()\n } else {\n this.setValueState = false\n }\n\n // Update form value for form participation\n if (this.internals) {\n this.internals.setFormValue(\n this.value ? this.value.toString() : this.defaultValue,\n )\n }\n\n this.setValidity()\n this.hideCalendar()\n\n if (sendEmptyEventOnInput) {\n this.emit('dds-change', { value: this.value })\n this.emit('dds-valid-date', { value: this.triggerInput.value })\n }\n }\n\n async clearSelection() {\n this.lastMaskDigitCount = 0\n this.setValue(undefined, true, true)\n }\n\n private isMaskActive(): boolean {\n return this.mask && this.mode === 'single' && this.formatOptions.length <= 1\n }\n\n private getActiveMaskFormat(): string {\n if (this.formatOptions.length > 0) {\n return this.formatOptions[0]\n }\n return dayjs().locale(this.locale).localeData().longDateFormat('L')\n }\n\n private parseMaskTokens(format: string): MaskToken[] {\n const tokens: MaskToken[] = []\n let i = 0\n while (i < format.length) {\n if (format.startsWith('YYYY', i)) {\n tokens.push({ type: 'digit', length: 4 })\n i += 4\n } else if (format.startsWith('YY', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format.startsWith('MM', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format.startsWith('DD', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format[i] === 'M') {\n tokens.push({ type: 'digit', length: 2 })\n i += 1\n } else if (format[i] === 'D') {\n tokens.push({ type: 'digit', length: 2 })\n i += 1\n } else {\n tokens.push({ type: 'separator', value: format[i] })\n i += 1\n }\n }\n return tokens\n }\n\n private buildMaskedValue(digits: string): string {\n const tokens = this.parseMaskTokens(this.getActiveMaskFormat())\n let result = ''\n let digitIndex = 0\n\n for (const token of tokens) {\n if (token.type === 'separator') {\n if (digitIndex > 0) {\n result += token.value\n }\n } else {\n const available = digits.slice(digitIndex, digitIndex + token.length!)\n result += available\n digitIndex += available.length\n if (available.length < token.length!) {\n break\n }\n }\n }\n\n return result\n }\n\n private readonly handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n if (\n this &&\n !path.includes(this) &&\n (!this.popup || !path.includes(this.popup))\n ) {\n this.hideCalendar()\n }\n }\n\n private readonly handlePopupAutoClose = () => {\n this.hideCalendar({ skipFocus: true })\n }\n\n private readonly handleInput = (event: InputEvent) => {\n const input = event.target as HTMLInputElement\n\n if (this.isMaskActive()) {\n let rawDigits = input.value.replace(/\\D/g, '')\n const isDeleting =\n event.inputType === 'deleteContentBackward' ||\n event.inputType === 'deleteContentForward'\n if (isDeleting && rawDigits.length === this.lastMaskDigitCount) {\n rawDigits = rawDigits.slice(0, -1)\n }\n this.lastMaskDigitCount = rawDigits.length\n const masked = this.buildMaskedValue(rawDigits)\n input.value = masked\n input.setSelectionRange(masked.length, masked.length)\n }\n\n if (!input.value) {\n this.setValue(undefined, false, true)\n } else {\n if (this.isInputValid()) {\n const date = dayjs(input.value).locale(this.locale)\n\n // Normalize minDate and maxDate to ensure they're Dayjs objects\n const minDate =\n this.normalizeDate(this.minDate) || dayjs(DEFAULT_MIN_DATE)\n const maxDate =\n this.normalizeDate(this.maxDate) || dayjs(DEFAULT_MAX_DATE)\n\n if (date.isBefore(minDate, 'day') || date.isAfter(maxDate, 'day')) {\n this.setValue(undefined, false, this.sendEmptyEventOnInput)\n // The text parsed cleanly, it only falls outside our range. Hand the parsed date\n // over so the consumer can phrase its own rule instead of re-parsing the text.\n this.emit('dds-invalid-date', {\n value: input.value,\n type: 'out-of-range',\n date: date.format(DEFAULT_ISO_FORMAT),\n })\n } else {\n this.setValue(date, false)\n this.currentDate = date\n this.emit('dds-valid-date', { value: input.value })\n }\n } else {\n this.setValue(undefined, false, this.sendEmptyEventOnInput)\n this.emit('dds-invalid-date', { value: input.value, type: 'invalid' })\n }\n }\n\n if (this.openCalendarOnInput && !this.opened) {\n this.showCalendar()\n }\n\n this.emit('dds-input', { value: input.value })\n }\n\n private readonly handleKeyDown = async (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n return\n }\n\n if (\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault()\n event.stopPropagation()\n\n if (!this.opened) {\n this.showCalendar()\n await this.updateComplete\n this.calendar.captureFocus()\n } else {\n this.hideCalendar()\n }\n }\n }\n\n public get focusElement() {\n return this.triggerInput\n }\n\n private readonly handleClick = () => {\n if (!this.opened) {\n this.showCalendar()\n } else {\n this.hideCalendar()\n }\n }\n\n private readonly handleClearClick = () => {\n if (!this.disabled) {\n this.clearSelection()\n\n this.triggerInput.focus()\n this.setValidity()\n\n this.hideCalendar()\n\n this.emit('dds-clear')\n }\n }\n\n async showCalendar() {\n if (this.disabled || this.readonly || this.opened) {\n return\n }\n\n this.opened = true\n\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n }\n\n async hideCalendar(options?: { skipFocus?: boolean }) {\n if (!this.opened) {\n return\n }\n\n this.opened = false\n\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n await this.updateComplete\n if (!options?.skipFocus) {\n this.focus()\n }\n }\n\n private readonly handleFocus = () => {\n this.emit('dds-focus')\n }\n\n private readonly handleBlur = () => {\n this.emit('dds-blur')\n }\n\n // custom validation\n getValidity() {\n return !!this.value\n }\n\n get validity(): ValidityState {\n if (this.internals.validity) {\n return this.internals.validity\n } else {\n return getValidityStateObject({\n valueMissing: this.required && !this.getValidity(),\n patternMismatch: !this.isValueValid(),\n })\n }\n }\n\n checkValidity() {\n return this.required && this.getValidity() && this.isValueValid()\n }\n\n reportValidity() {\n return this.required && this.getValidity() && this.isValueValid()\n }\n\n setValidity() {\n if (!this.checkValidity()) {\n this.internals.setValidity(\n {\n valueMissing: this.required && !this.getValidity(),\n patternMismatch: !this.isValueValid(),\n },\n this.validationMessage,\n this.triggerInput,\n )\n } else {\n this.internals.setValidity({})\n }\n }\n\n handleInvalid(event: Event) {\n event.preventDefault()\n }\n\n render() {\n return html` <div class=\"label-container\">\n ${this.label &&\n html`<dap-ds-form-label\n part=\"label\"\n id=${this.labelId}\n .size=${this.size}\n .required=${this.required}\n .requiredLabel=${this.requiredLabel}\n .optional=${this.optional}\n .optionalLabel=${this.optionalLabel}\n .disabled=${this.disabled}\n class=${clsx('label')}\n .noMargin=${!!this.description}\n for=${this.inputId}\n .hideLabel=${this.hideLabel}\n label=${ifDefined(this.label)}>\n </dap-ds-form-label>`}\n ${this.tooltip &&\n html` <dap-ds-tooltip\n part=\"tooltip\"\n content=${this.tooltip}\n mode=\"toggle\"\n placement=${this.tooltipPlacement}>\n <dap-ds-icon-button\n slot=\"trigger\"\n size=${this.size as 'xs' | 'sm' | 'md' | 'lg'}\n iconSize=${this.size === 'xs' ? '16' : '22'}\n class=\"info-button\"\n clean>\n <dap-ds-icon\n name=\"information-line\"\n aria-label=${this.tooltipAriaLabel}\n class=\"info-button\"></dap-ds-icon>\n </dap-ds-icon-button>\n </dap-ds-tooltip>`}\n </div>\n ${this.description &&\n html`\n <dap-ds-typography\n part=\"description\"\n variant=\"description\"\n class=${clsx('input-description')}\n size=${ifDefined(this.size as CommonFormElementSize)}\n id=${this.descriptionId}>\n ${this.description}\n </dap-ds-typography>\n `}\n <div>\n <dap-ds-popup\n part=\"base\"\n class=\"select-popup\"\n overflow\n ?opened=${this.opened}\n ?hasArrow=${false}\n placement=${this.placement}\n floatingStrategy=${this.floatingStrategy}\n maxHeight=\"auto\"\n offset=\"4\"\n ?disableViewportAutoClose=${this.disableViewportAutoClose}\n @dds-close=${this.handlePopupAutoClose}>\n <div\n slot=\"trigger\"\n part=\"trigger\"\n class=\"${clsx('select', `select--${this.size}`, {\n 'select--disabled': this.disabled,\n 'select--readonly': this.readonly,\n 'select--opened': this.opened,\n 'select--loading': this.loading,\n 'select--success': this.status === 'success',\n 'select--error': this.status === 'error',\n 'select--no-animation': true,\n })}\">\n <input\n part=\"input\"\n role=\"combobox\"\n class=\"${clsx('combobox__input', 'input', `input--${this.size}`, {\n 'input--disabled': this.disabled,\n 'input--readonly': this.readonly,\n })}\"\n id=${this.inputId}\n value=${this.getFormattedValue()}\n aria-expanded=${this.opened}\n aria-haspopup=\"dialog\"\n aria-labelledby=${ifDefined(this.label ? this.labelId : nothing)}\n aria-describedby=\"${ifDefined(\n this.description ? this.descriptionId : nothing,\n )} ${ifDefined(this.feedback ? this.feedbackId : nothing)}\"\n aria-disabled=${this.disabled}\n aria-controls=\"calendar\"\n aria-autocomplete=\"none\"\n ?required=${this.required}\n ?readonly=${this.readonly}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n autocomplete=${this.autocomplete as any}\n placeholder=${ifDefined(this.placeholder ?? '')}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${this.handleInput}\n @keydown=${this.handleKeyDown}\n @invalid=${this.handleInvalid}\n @click=${this.handleClick} />\n <div\n class=\"${clsx('select-action', `select-action--${this.size}`, {\n 'select-action--disabled': this.disabled,\n 'select-action--readonly': this.readonly,\n 'select-action--opened': this.opened,\n })}\">\n ${this.clearButton === 'true' && !this.readonly\n ? html`<div class=\"${clsx('clear-icon')}\">\n <dap-ds-icon-button\n icon=\"close-line\"\n part=\"clear-button\"\n data-testid=${this.clearButtonTestId}\n aria-label=${ifDefined(\n this.clearButtonAriaLabel ??\n t('clear', { lng: this.locale }),\n )}\n ?disabled=${this.disabled}\n @click=${this.handleClearClick}></dap-ds-icon-button>\n </div>`\n : nothing}\n <div\n class=\"${clsx('indicator-icon', {\n 'indicator-icon--loading': this.loading,\n })}\">\n ${this.loading\n ? html`<dap-ds-icon-loading-spinner></dap-ds-icon-loading-spinner>`\n : html`<dap-ds-icon-calendar-line\n aria-hidden=\"true\"\n part=\"calendar-button\"\n data-testid=${this.calendarButtonTestId}\n class=${clsx('calendar-icon')}\n @click=${this.handleClick}></dap-ds-icon-calendar-line>`}\n </div>\n </div>\n </div>\n <dap-ds-calendar\n id=\"calendar\"\n part=\"calendar\"\n exportparts=\"calendar-header-button-prev, calendar-header-button-next, calendar-header-year-select, calendar-header-month-select, calendar-grid-header-cell, calendar-grid-cell, calendar-grid-header-cell-base, calendar-grid-cell-base, calendar-grid-cell-today-mark\"\n locale=${this.locale}\n @dds-close=${this.hideCalendar}\n @dds-change=${(event: CustomEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (this.mode === 'single') {\n this.setValue(event.detail.value)\n }\n }}\n @dds-range-change=${(event: CustomEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (this.mode === 'range') {\n this.rangeStart = event.detail.startDate\n this.rangeEnd = event.detail.endDate\n this.triggerInput.value = this.getFormattedValue()\n this.emit('dds-change', {\n startDate: this.rangeStart,\n endDate: this.rangeEnd,\n })\n this.hideCalendar()\n }\n }}>\n </dap-ds-calendar>\n </dap-ds-popup>\n ${this.feedback &&\n html`<dap-ds-feedback\n part=\"feedback\"\n feedbackType=${ifDefined(this.feedbackType)}\n feedbackSize=\"${ifDefined(this.size as 'lg' | 'sm' | 'xs')}\"\n id=\"feedback\">\n ${this.feedback}\n </dap-ds-feedback>`}\n </div>`\n }\n}\n"],"names":["DEFAULT_MIN_DATE","DEFAULT_MAX_DATE","DEFAULT_ISO_FORMAT","_DapDSDatePicker","_a","GenericFormElement","date","dayjs","event","path","input","rawDigits","masked","minDate","maxDate","__async","uniqueSuffix","value","trimmed","numValue","_changedProperties","normalized","normalizedCurrentDate","normalizedMinDate","normalizedMaxDate","valueChanged","valueExistsButNotProcessed","currentCalendarValue","format","startStr","endStr","trimmedValue","localeFormat","parsedDate","formattedDate","normalizedInput","setInputValue","sendEmptyEventOnInput","tokens","i","digits","result","digitIndex","token","available","options","getValidityStateObject","html","clsx","ifDefined","nothing","_b","t","DapDSFormLabel","DapDSTooltip","DapDSIconButton","DapDSIcon","DapDSTypography","DapDSPopup","SystemLoadingSpinner","BusinessCalendarLine","DapDSCalendar","DapDSFeedback","unsafeCSS","styles","__decorateClass","query","property","state","DapDSDatePicker"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker.component.js","sources":["../../../src/components/datepicker/datepicker.component.ts"],"sourcesContent":["import clsx from 'clsx'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { nothing, PropertyValueMap, unsafeCSS } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { html } from 'lit/static-html.js'\n\nimport {\n CommonFormElementSize,\n FloatingStrategy,\n PopupPlacement,\n} from '@/common/types'\nimport { getValidityStateObject } from '@/common/utils'\nimport { GenericFormElement } from '@/internal/mixin/genericFormElement'\nimport { formLabelTemplate } from '@/internal/templates/formLabel'\nimport { t } from '@/localization/localization'\n\nimport DapDSCalendar from '../calendar/calendar.component'\nimport DapDSFeedback from '../feedback/feedback.component'\nimport DapDSFormLabel from '../form/form-label/form-label.component'\nimport DapDSIcon from '../icon/icon.component'\nimport DapDSIconButton from '../icon-button/icon-button.component'\nimport BusinessCalendarLine from '../icons/business/business-calendar-line/business-calendar-line.component'\nimport SystemLoadingSpinner from '../icons/system/system-loading-spinner/system-loading-spinner.component'\nimport DapDSPopup from '../popup/popup.component'\nimport DapDSTooltip from '../tooltip/tooltip.component'\nimport DapDSTypography from '../typography/typography.component'\nimport styles from './datepicker.scss?inline'\n\ninterface MaskToken {\n type: 'digit' | 'separator'\n length?: number\n value?: string\n}\n\n/**\n * The bounds the calendar falls back to when the consumer sets no minDate/maxDate.\n * They have to stay finite: the calendar renders one option per year between them.\n */\nconst DEFAULT_MIN_DATE = '1901-01-01'\nconst DEFAULT_MAX_DATE = '2099-12-31'\n\n/** Framework-neutral shape for the date handed to consumers on the out-of-range event. */\nconst DEFAULT_ISO_FORMAT = 'YYYY-MM-DD'\n\n/**\n * `dap-ds-datepicker`\n * @summary A datepicker is a graphical user interface widget that allows the user to select a date from a calendar and/or time from a time range.\n * @element dap-ds-datepicker\n * @title - Datepicker\n *\n * @property {Dayjs} value - The value of the datepicker.\n * @property {string} label - The label of the datepicker.\n * @property {boolean} hideLabel - Visually hides the label while keeping it available to assistive technology. (default: false)\n * @property {string} description - The description of the datepicker.\n * @property {'xs' | 'sm' | 'sm'} size - The size of the datepicker.\n * @property {boolean} disabled - The disabled state of the datepicker.\n * @property {boolean} required - The required state of the datepicker.\n * @property {boolean} readonly - The readonly state of the datepicker.\n * @property {boolean} autofocus - The autofocus state of the datepicker.\n * @property {string} tooltip - The tooltip of the datepicker.\n * @property {'top' | 'right' | 'bottom' | 'left'} tooltipPlacement - The tooltip placement of the datepicker.\n * @property {string} feedback - The feedback of the datepicker.\n * @property {'negative' | 'positive' | 'warning'} feedbackType - The feedback type of the datepicker.\n * @property {boolean} optional - The optional state of the datepicker.\n * @property {string} optionalLabel - The optional label of the datepicker.\n * @property {string} requiredLabel - The required indicator of the datepicker. (default: '*')\n * @property {boolean} subtle - The weight of the label. Default is `false`\n * @property {string} autocomplete - The autocomplete of the datepicker.\n * @property {boolean} autofocus - The autofocus of the datepicker.\n *\n * @event {{ value: string }} dds-change - Fired when the datepicker value changes.\n * @event {{ value: string }} dds-input - Fired when the datepicker input value changes.\n * @event {{ value: string }} dds-valid-date - Fired when the datepicker input value is valid. Happens on manual input typing.\n * @event {{ value: string, type: 'invalid' | 'out-of-range', date?: string }} dds-invalid-date - Fired when the datepicker input value is invalid. Happens on manual input typing. For `out-of-range` the typed text was a well-formed date, so `date` carries it as an ISO (`YYYY-MM-DD`) string and the consumer can phrase its own range message; for `invalid` the text could not be parsed and `date` is omitted.\n * @event {{ void }} dds-clear - Fired when the datepicker is cleared.\n * @event {{ void }} dds-focus - Emitted when the datepicker gains focus.\n * @event {{ void }} dds-blur - Emitted when the datepicker loses focus.\n *\n * @csspart base - The main datepicker container.\n * @csspart calendar - The calendar of the datepicker.\n * @csspart trigger - The trigger button of the datepicker.\n * @csspart label - The label of the datepicker.\n * @csspart description - The description of the datepicker.\n * @csspart feedback - The feedback of the datepicker.\n * @csspart tooltip - The tooltip of the datepicker.\n * @csspart input - The input of the datepicker.\n * @csspart clear-button - The clear button of the datepicker.\n * @csspart calendar-grid-cell-base - The base of the calendar grid cell.\n * @csspart calendar-grid-cell - The cell of the calendar grid.\n * @csspart calendar-grid-header-cell-base - The base of the calendar grid header cell.\n * @csspart calendar-grid-header-cell - The header cell of the calendar grid.\n * @csspart calendar-grid-cell-today-mark - The today mark of the calendar grid cell.\n * @csspart calendar-button - The calendar icon button of the datepicker.\n * @csspart calendar-header-button-prev - The previous month button of the calendar header.\n * @csspart calendar-header-button-next - The next month button of the calendar header.\n * @csspart calendar-header-year-select - The year select of the calendar header.\n * @csspart calendar-header-month-select - The month select of the calendar header.\n * @csspart label-base - The base of the label.\n * @csspart label-required - The required indicator of the label.\n * @csspart label-optional - The optional indicator of the label.\n *\n * @cssproperty --dds-combobox-background - The background color of the combobox. (default: var(--dds-fields-background-default))\n * @cssproperty --dds-combobox-border-color - The border color of the combobox. (default: var(--dds-border-neutral-base))\n * @cssproperty --dds-combobox-border-width - The border width of the combobox. (default: var(--dds-border-width-base, 1px))\n * @cssproperty --dds-combobox-border-radius - The border radius of the combobox. (default: var(--dds-radius-base))\n * @cssproperty --dds-combobox-text-color - The text color of the combobox. (default: var(--dds-text-neutral-base))\n * @cssproperty --dds-combobox-placeholder-color - The placeholder text color. (default: var(--dds-text-neutral-subtle))\n * @cssproperty --dds-combobox-disabled-background - The background color when disabled. (default: var(--dds-background-neutral-stronger))\n * @cssproperty --dds-combobox-disabled-text - The text color when disabled. (default: var(--dds-text-neutral-disabled))\n * @cssproperty --dds-combobox-error-border - The border color for error state. (default: var(--dds-border-negative-base))\n * @cssproperty --dds-combobox-success-border - The border color for success state. (default: var(--dds-border-positive-base))\n * @cssproperty --dds-combobox-icon-color - The color of the icons. (default: var(--dds-text-icon-neutral-subtle))\n * @cssproperty --dds-combobox-clear-icon-color - The color of the clear icon. (default: var(--dds-button-subtle-icon-neutral-enabled))\n * @cssproperty --dds-combobox-popup-background - The background color of the popup. (default: var(--dds-background-neutral-subtle))\n * @cssproperty --dds-combobox-popup-shadow - The box shadow of the popup. (default: 0 4px 6px -1px rgb(0 0 0 / 8%), 0 2px 4px -1px rgb(0 0 0 / 6%))\n * @cssproperty --dds-combobox-padding-xs - The padding for extra small size. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-padding-sm - The padding for small size. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-padding-lg - The padding for large size. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-padding-horizontal - The horizontal padding. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-padding-vertical - The vertical padding. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-gap - The gap between elements. (default: var(--dds-spacing-100))\n * @cssproperty --dds-combobox-icon-gap - The gap between icons. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-action-gap - The gap between action elements. (default: var(--dds-spacing-200))\n * @cssproperty --dds-combobox-action-padding - The padding for action elements. (default: var(--dds-spacing-300))\n * @cssproperty --dds-combobox-clear-icon-width - The width of the clear icon. (default: var(--dds-spacing-800))\n * @cssproperty --dds-combobox-dropdown-icon-right - The right position of the dropdown icon. (default: var(--dds-spacing-600))\n * @cssproperty --dds-combobox-min-width - The minimum width of the combobox. (default: 7.5rem)\n */\nexport default class DapDSDatePicker extends GenericFormElement {\n static tagName = 'dap-ds-datepicker'\n\n static dependencies = {\n 'dap-ds-form-label': DapDSFormLabel,\n 'dap-ds-tooltip': DapDSTooltip,\n 'dap-ds-icon-button': DapDSIconButton,\n 'dap-ds-icon': DapDSIcon,\n 'dap-ds-typography': DapDSTypography,\n 'dap-ds-popup': DapDSPopup,\n 'dap-ds-icon-loading-spinner': SystemLoadingSpinner,\n 'dap-ds-icon-calendar-line': BusinessCalendarLine,\n 'dap-ds-calendar': DapDSCalendar,\n 'dap-ds-feedback': DapDSFeedback,\n }\n\n private static nextId = 0\n\n /**\n * Property converter for date properties.\n * Converts string attributes (from React) to Dayjs objects.\n * Allows both attribute binding (strings) and property binding (Dayjs objects).\n *\n * Note: When properties are set directly (bypassing attributes), they are normalized\n * in the `updated` lifecycle method via `normalizeDate`.\n */\n private static datePropertyConverter = {\n fromAttribute: (value: string | null): Dayjs | undefined => {\n if (value === null || value === undefined || value === '') {\n return undefined\n }\n const trimmed = value.trim()\n if (!trimmed) return undefined\n\n // Check if it's a numeric timestamp string\n if (/^\\d+$/.test(trimmed)) {\n const numValue = Number(trimmed)\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n if (numValue > 0 && numValue < 10000000000) {\n return dayjs(numValue * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n if (numValue >= 0 && numValue <= 4102444800000) {\n return dayjs(numValue)\n }\n }\n // Parse as date string (ISO string, date string, etc.)\n return dayjs(value)\n },\n toAttribute: (\n value: Dayjs | string | Date | number | undefined | null,\n ): string | null => {\n if (value === undefined || value === null) {\n return null // null removes the attribute\n }\n // Convert Dayjs to ISO string for attribute\n if (dayjs.isDayjs(value)) {\n return value.toISOString()\n }\n if (value instanceof Date) {\n return value.toISOString()\n }\n if (typeof value === 'string') {\n return value\n }\n if (typeof value === 'number') {\n return String(value)\n }\n return null\n },\n }\n\n private readonly inputId: string\n private readonly labelId: string\n private readonly descriptionId: string\n\n @query('.combobox__input') private readonly triggerInput!: HTMLInputElement\n @query('#calendar') private readonly calendar!: DapDSCalendar\n @query('dap-ds-popup') private readonly popup!: HTMLElement\n\n /** The value of the datepicker (selected date in single mode).\n * @type {Dayjs}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n override value?: Dayjs\n\n /** The mode of the datepicker - single date or range selection.\n * @type {'single' | 'range'}\n * @default 'single'\n */\n @property({ reflect: true }) mode: 'single' | 'range' = 'single'\n\n /** The current visible date (month and year) of the calendar. Only the month and year are considered.\n * @type {Dayjs | string | Date}\n * @default dayjs()\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n currentDate?: Dayjs | string | Date\n\n /** The earliest date the datepicker accepts. Compared with day granularity.\n * @type {Dayjs | string | Date}\n * @default dayjs('1901-01-01')\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n minDate?: Dayjs | string | Date\n\n /** The latest date the datepicker accepts. Compared with day granularity.\n * @type {Dayjs | string | Date}\n * @default dayjs('2099-12-31')\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n maxDate?: Dayjs | string | Date\n\n /** The disabled date of the datepicker. This function will be called for each date to determine if it is disabled.\n * @type {(date: Dayjs) => boolean}\n * @default (date: Dayjs) => false\n */\n @property({ attribute: false }) disabledDate = (date: Dayjs) => {\n return !date\n }\n\n /** The start date of the range selection (only used in range mode).\n * @type {Dayjs | string | Date}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n rangeStart?: Dayjs | string | Date\n\n /** The end date of the range selection (only used in range mode).\n * @type {Dayjs | string | Date}\n */\n @property({\n converter: DapDSDatePicker.datePropertyConverter,\n })\n rangeEnd?: Dayjs | string | Date\n\n /** The placement of the dropdown of the datepicker.\n * @type {'top-start' | 'top' | 'top-end' | 'right-start' | 'right' | 'right-end' | 'bottom-start' | 'bottom' | 'bottom-end' | 'left-start' | 'left' | 'left-end'}\n */\n @property({ reflect: true }) placement: PopupPlacement = 'bottom-start'\n\n /** The open state of the datepicker. */\n @property({ type: Boolean, reflect: true }) opened = false\n\n /** Wheter the calendar should open on typing. */\n @property({ type: Boolean }) openCalendarOnInput = false\n\n /** Wheter the calendar should send an empty event on typing. */\n @property({ type: Boolean }) sendEmptyEventOnInput = false\n\n /** The placeholder of the datepicker. */\n @property() placeholder: string | null\n\n /** The loading state of the datepicker. */\n @property({ type: Boolean }) loading?: boolean = false\n\n /** Whether to enable input masking. When active, only digit characters are accepted and format separators are auto-inserted after each complete digit group. Only works in single mode with a single configured format. */\n @property({ type: Boolean }) mask = false\n\n /** The format of the datepicker. This is a comma separated list of [formats](https://day.js.org/docs/en/display/format). */\n @property({ type: String }) format?: string\n\n /** The format separator character in the format attribute. */\n @property({ type: String }) formatSeparator: string = '|'\n\n /** Whether the clear button should be shown. */\n @property({ type: String }) clearButton?: string = 'true'\n\n /** The aria label of the clear button. */\n @property({ type: String }) clearButtonAriaLabel?: string\n\n /** `data-testid` for the clear button. */\n @property() clearButtonTestId = 'datepicker-clear-button'\n\n /** `data-testid` for the calendar indicator button that opens the calendar. */\n @property() calendarButtonTestId = 'datepicker-calendar-button'\n\n /** The floating strategy of the datepicker. */\n @property({ type: String }) floatingStrategy: FloatingStrategy = 'fixed'\n\n /** Whether to keep popup open when trigger leaves viewport. */\n @property({ type: Boolean }) disableViewportAutoClose: boolean = false\n\n /** The locale of the datepicker. By default it uses the global locale from dayjs. It is determined from the browser language.\n * @type {'hu' | 'en' | 'de'}\n */\n @property({ type: String }) locale: string = dayjs.locale()\n\n /** Whether to hide dates from adjacent months (previous/next) in the calendar grid. When not explicitly set, defaults to `false` for single mode and `true` for range mode.\n * @type {boolean}\n */\n @property({ type: Boolean }) hideAdjacentMonths?: boolean\n\n @state() private formatOptions: string[] = []\n @state() private setValueState: boolean = true\n private lastMaskDigitCount = 0\n\n static readonly styles = unsafeCSS(styles)\n\n constructor() {\n super()\n DapDSDatePicker.nextId++\n const uniqueSuffix =\n typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID().slice(0, 8)\n : Date.now().toString(36)\n this.inputId = `input-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n this.labelId = `label-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n this.descriptionId = `description-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n // Initialize the feedbackId from FeedbackMixin\n this.feedbackId = `feedback-${DapDSDatePicker.nextId}-${uniqueSuffix}`\n }\n\n /**\n * Normalizes a date value to a Dayjs object.\n * Handles Dayjs objects, timestamps (numbers or strings), strings, Date objects, and undefined/null.\n */\n private normalizeDate(\n value: Dayjs | string | Date | number | undefined | null,\n ): Dayjs | undefined {\n if (value === undefined || value === null) {\n return undefined\n }\n\n // If it's already a Dayjs object, return it\n if (dayjs.isDayjs(value)) {\n return value\n }\n\n // If it's a string, check if it's a numeric timestamp string\n if (typeof value === 'string') {\n // Check if the string is purely numeric (timestamp as string)\n const trimmed = value.trim()\n if (/^\\d+$/.test(trimmed)) {\n const numValue = Number(trimmed)\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n // Unix timestamps in seconds are typically 10 digits, milliseconds are 13 digits\n if (numValue > 0 && numValue < 10000000000) {\n return dayjs(numValue * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n // Valid range: between 0 and year 2100 (4102444800000 ms)\n if (numValue >= 0 && numValue <= 4102444800000) {\n return dayjs(numValue)\n }\n }\n // If it's not a numeric string, let dayjs parse it as a date string\n return dayjs(value)\n }\n\n // If it's a number (timestamp), convert it\n if (typeof value === 'number') {\n // Check if it's seconds (typically 10 digits, less than 10000000000)\n // Unix timestamps in seconds are typically 10 digits, milliseconds are 13 digits\n if (value > 0 && value < 10000000000) {\n return dayjs(value * 1000)\n }\n // Check if it's a valid timestamp (milliseconds since epoch)\n // Valid range: between 0 and year 2100 (4102444800000 ms)\n if (value >= 0 && value <= 4102444800000) {\n return dayjs(value)\n }\n }\n\n // For Date objects, dayjs will handle them\n return dayjs(value)\n }\n\n protected firstUpdated(\n _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.firstUpdated(_changedProperties)\n\n // Set formatOptions BEFORE using getFormattedValue()\n this.formatOptions = this.format?.split(this.formatSeparator) || []\n\n this.calendar.mode = this.mode\n\n if (this.mode === 'range') {\n if (this.rangeStart) {\n const normalized = this.normalizeDate(this.rangeStart)\n if (normalized) {\n this.calendar.rangeStart = normalized.locale(this.locale)\n }\n }\n if (this.rangeEnd) {\n const normalized = this.normalizeDate(this.rangeEnd)\n if (normalized) {\n this.calendar.rangeEnd = normalized.locale(this.locale)\n }\n }\n } else if (this.value) {\n const normalized = this.normalizeDate(this.value)\n if (normalized) {\n this.calendar.value = normalized.locale(this.locale)\n // Update the internal value to be a Dayjs object\n this.value = normalized\n // Set the input field value if setValueState is enabled\n if (this.setValueState && this.triggerInput) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n }\n\n const normalizedCurrentDate = this.normalizeDate(this.currentDate)\n this.calendar.currentDate = normalizedCurrentDate || dayjs()\n\n const normalizedMinDate = this.normalizeDate(this.minDate)\n this.calendar.minDate = normalizedMinDate || dayjs(DEFAULT_MIN_DATE)\n if (normalizedMinDate) {\n this.minDate = normalizedMinDate\n }\n\n const normalizedMaxDate = this.normalizeDate(this.maxDate)\n this.calendar.maxDate = normalizedMaxDate || dayjs(DEFAULT_MAX_DATE)\n if (normalizedMaxDate) {\n this.maxDate = normalizedMaxDate\n }\n this.calendar.disabledDate = this.disabledDate\n\n // Only set hideAdjacentMonths if explicitly provided\n if (this.hideAdjacentMonths !== undefined) {\n this.calendar.hideAdjacentMonths = this.hideAdjacentMonths\n }\n }\n\n protected updated(\n _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n ): void {\n super.updated(_changedProperties)\n\n // Process value changes - check both Lit's change detection AND if value exists but wasn't detected\n // This handles cases where React sets a dayjs object but Lit doesn't detect it as changed\n const valueChanged = _changedProperties.has('value')\n const valueExistsButNotProcessed =\n !valueChanged && this.value && this.mode === 'single' && this.hasUpdated\n\n if (\n (valueChanged || valueExistsButNotProcessed) &&\n this.mode === 'single'\n ) {\n const normalized = this.normalizeDate(this.value)\n if (normalized) {\n // Only update if the normalized value is different from current calendar value to avoid infinite loops\n const currentCalendarValue = this.calendar.value\n if (\n !currentCalendarValue ||\n !normalized.isSame(currentCalendarValue, 'day')\n ) {\n this.calendar.value = normalized.locale(this.locale)\n // Update the internal value to be a Dayjs object\n this.value = normalized\n }\n } else {\n this.calendar.value = undefined\n }\n if (this.setValueState && this.triggerInput) {\n this.triggerInput.value = this.getFormattedValue()\n }\n this.setValidity()\n }\n\n if (_changedProperties.has('rangeStart') && this.mode === 'range') {\n const normalized = this.normalizeDate(this.rangeStart)\n if (normalized) {\n this.calendar.rangeStart = normalized.locale(this.locale)\n this.rangeStart = normalized\n } else {\n this.calendar.rangeStart = undefined\n }\n if (this.setValueState && this.rangeStart && this.rangeEnd) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n\n if (_changedProperties.has('rangeEnd') && this.mode === 'range') {\n const normalized = this.normalizeDate(this.rangeEnd)\n if (normalized) {\n this.calendar.rangeEnd = normalized.locale(this.locale)\n this.rangeEnd = normalized\n } else {\n this.calendar.rangeEnd = undefined\n }\n if (this.setValueState && this.rangeStart && this.rangeEnd) {\n this.triggerInput.value = this.getFormattedValue()\n }\n }\n\n if (_changedProperties.has('currentDate')) {\n const normalized = this.normalizeDate(this.currentDate)\n this.calendar.currentDate = normalized || dayjs()\n }\n\n if (_changedProperties.has('minDate')) {\n const normalized = this.normalizeDate(this.minDate)\n this.calendar.minDate = normalized || dayjs(DEFAULT_MIN_DATE)\n if (normalized) {\n this.minDate = normalized\n }\n }\n\n if (_changedProperties.has('maxDate')) {\n const normalized = this.normalizeDate(this.maxDate)\n this.calendar.maxDate = normalized || dayjs(DEFAULT_MAX_DATE)\n if (normalized) {\n this.maxDate = normalized\n }\n }\n\n if (_changedProperties.has('disabledDate')) {\n this.calendar.disabledDate = this.disabledDate\n }\n\n if (\n _changedProperties.has('format') ||\n _changedProperties.has('formatSeparator')\n ) {\n this.formatOptions = this.format?.split(this.formatSeparator) || []\n }\n }\n\n getFormattedValue() {\n if (this.mode === 'range') {\n if (!this.rangeStart || !this.rangeEnd) {\n return ''\n }\n const format = this.formatOptions[0] || 'L'\n const startStr = dayjs(this.rangeStart).locale(this.locale).format(format)\n const endStr = dayjs(this.rangeEnd).locale(this.locale).format(format)\n return `${startStr} - ${endStr}`\n }\n\n if (!this.value) {\n return ''\n }\n\n return dayjs(this.value)\n .locale(this.locale)\n .format(this.formatOptions[0] || 'L')\n }\n\n isValidFormat(value: string) {\n if (!this.formatOptions.length) {\n // For the default 'L' format, we need to be more strict to prevent partial dates\n // Get the actual format pattern for the current locale\n const trimmedValue = value.trim()\n\n // Get the actual 'L' format pattern for the current locale\n const localeFormat = dayjs()\n .locale(this.locale)\n .localeData()\n .longDateFormat('L')\n\n // Now validate that the input actually matches the expected format pattern\n // Use the robust string comparison approach: parse and format back to compare\n // The localeFormat already contains the correct format for the current locale\n const parsedDate = dayjs(trimmedValue, localeFormat)\n if (!parsedDate.isValid()) {\n return false\n }\n // Format back and compare - if they differ, the input was incomplete\n // Handle optional trailing separators by normalizing both strings\n const formattedDate = parsedDate.format(localeFormat)\n const normalizedInput = trimmedValue.replace(/[.,\\s]+$/, '') // Remove trailing separators\n const normalizedFormatted = formattedDate.replace(/[.,\\s]+$/, '') // Remove trailing separators\n if (normalizedFormatted !== normalizedInput) {\n return false\n }\n\n return true\n }\n\n return this.formatOptions.some(format => {\n // Use the same robust string comparison approach for custom formats\n // Parse with the custom format and compare the result\n const parsedDate = dayjs(value, format)\n if (!parsedDate.isValid()) {\n return false\n }\n // Format back and compare - if they differ, the input was incomplete\n // Handle optional trailing separators by normalizing both strings\n const formattedDate = parsedDate.format(format)\n const normalizedInput = value.replace(/[.,\\s]+$/, '') // Remove trailing separators\n const normalizedFormatted = formattedDate.replace(/[.,\\s]+$/, '') // Remove trailing separators\n return normalizedFormatted === normalizedInput\n })\n }\n\n isValueValid() {\n if (!this.value) {\n return true\n }\n\n return this.isInputValid()\n }\n\n isInputValid() {\n return this.isValidFormat(this.triggerInput.value)\n }\n\n setValue(\n value?: Dayjs,\n setInputValue: boolean = true,\n sendEmptyEventOnInput: boolean = true,\n ) {\n this.value = value\n\n if (setInputValue) {\n this.setValueState = true\n this.triggerInput.value = this.getFormattedValue()\n } else {\n this.setValueState = false\n }\n\n // Update form value for form participation\n if (this.internals) {\n this.internals.setFormValue(\n this.value ? this.value.toString() : this.defaultValue,\n )\n }\n\n this.setValidity()\n this.hideCalendar()\n\n if (sendEmptyEventOnInput) {\n this.emit('dds-change', { value: this.value })\n this.emit('dds-valid-date', { value: this.triggerInput.value })\n }\n }\n\n async clearSelection() {\n this.lastMaskDigitCount = 0\n this.setValue(undefined, true, true)\n }\n\n private isMaskActive(): boolean {\n return this.mask && this.mode === 'single' && this.formatOptions.length <= 1\n }\n\n private getActiveMaskFormat(): string {\n if (this.formatOptions.length > 0) {\n return this.formatOptions[0]\n }\n return dayjs().locale(this.locale).localeData().longDateFormat('L')\n }\n\n private parseMaskTokens(format: string): MaskToken[] {\n const tokens: MaskToken[] = []\n let i = 0\n while (i < format.length) {\n if (format.startsWith('YYYY', i)) {\n tokens.push({ type: 'digit', length: 4 })\n i += 4\n } else if (format.startsWith('YY', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format.startsWith('MM', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format.startsWith('DD', i)) {\n tokens.push({ type: 'digit', length: 2 })\n i += 2\n } else if (format[i] === 'M') {\n tokens.push({ type: 'digit', length: 2 })\n i += 1\n } else if (format[i] === 'D') {\n tokens.push({ type: 'digit', length: 2 })\n i += 1\n } else {\n tokens.push({ type: 'separator', value: format[i] })\n i += 1\n }\n }\n return tokens\n }\n\n private buildMaskedValue(digits: string): string {\n const tokens = this.parseMaskTokens(this.getActiveMaskFormat())\n let result = ''\n let digitIndex = 0\n\n for (const token of tokens) {\n if (token.type === 'separator') {\n if (digitIndex > 0) {\n result += token.value\n }\n } else {\n const available = digits.slice(digitIndex, digitIndex + token.length!)\n result += available\n digitIndex += available.length\n if (available.length < token.length!) {\n break\n }\n }\n }\n\n return result\n }\n\n private readonly handleDocumentMouseDown = (event: MouseEvent) => {\n const path = event.composedPath()\n if (\n this &&\n !path.includes(this) &&\n (!this.popup || !path.includes(this.popup))\n ) {\n this.hideCalendar()\n }\n }\n\n private readonly handlePopupAutoClose = () => {\n this.hideCalendar({ skipFocus: true })\n }\n\n private readonly handleInput = (event: InputEvent) => {\n const input = event.target as HTMLInputElement\n\n if (this.isMaskActive()) {\n let rawDigits = input.value.replace(/\\D/g, '')\n const isDeleting =\n event.inputType === 'deleteContentBackward' ||\n event.inputType === 'deleteContentForward'\n if (isDeleting && rawDigits.length === this.lastMaskDigitCount) {\n rawDigits = rawDigits.slice(0, -1)\n }\n this.lastMaskDigitCount = rawDigits.length\n const masked = this.buildMaskedValue(rawDigits)\n input.value = masked\n input.setSelectionRange(masked.length, masked.length)\n }\n\n if (!input.value) {\n this.setValue(undefined, false, true)\n } else {\n if (this.isInputValid()) {\n const date = dayjs(input.value).locale(this.locale)\n\n // Normalize minDate and maxDate to ensure they're Dayjs objects\n const minDate =\n this.normalizeDate(this.minDate) || dayjs(DEFAULT_MIN_DATE)\n const maxDate =\n this.normalizeDate(this.maxDate) || dayjs(DEFAULT_MAX_DATE)\n\n if (date.isBefore(minDate, 'day') || date.isAfter(maxDate, 'day')) {\n this.setValue(undefined, false, this.sendEmptyEventOnInput)\n // The text parsed cleanly, it only falls outside our range. Hand the parsed date\n // over so the consumer can phrase its own rule instead of re-parsing the text.\n this.emit('dds-invalid-date', {\n value: input.value,\n type: 'out-of-range',\n date: date.format(DEFAULT_ISO_FORMAT),\n })\n } else {\n this.setValue(date, false)\n this.currentDate = date\n this.emit('dds-valid-date', { value: input.value })\n }\n } else {\n this.setValue(undefined, false, this.sendEmptyEventOnInput)\n this.emit('dds-invalid-date', { value: input.value, type: 'invalid' })\n }\n }\n\n if (this.openCalendarOnInput && !this.opened) {\n this.showCalendar()\n }\n\n this.emit('dds-input', { value: input.value })\n }\n\n private readonly handleKeyDown = async (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n return\n }\n\n if (\n event.key === 'Enter' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault()\n event.stopPropagation()\n\n if (!this.opened) {\n this.showCalendar()\n await this.updateComplete\n this.calendar.captureFocus()\n } else {\n this.hideCalendar()\n }\n }\n }\n\n public get focusElement() {\n return this.triggerInput\n }\n\n private readonly handleClick = () => {\n if (!this.opened) {\n this.showCalendar()\n } else {\n this.hideCalendar()\n }\n }\n\n private readonly handleClearClick = () => {\n if (!this.disabled) {\n this.clearSelection()\n\n this.triggerInput.focus()\n this.setValidity()\n\n this.hideCalendar()\n\n this.emit('dds-clear')\n }\n }\n\n async showCalendar() {\n if (this.disabled || this.readonly || this.opened) {\n return\n }\n\n this.opened = true\n\n document.addEventListener('mousedown', this.handleDocumentMouseDown)\n }\n\n async hideCalendar(options?: { skipFocus?: boolean }) {\n if (!this.opened) {\n return\n }\n\n this.opened = false\n\n document.removeEventListener('mousedown', this.handleDocumentMouseDown)\n\n await this.updateComplete\n if (!options?.skipFocus) {\n this.focus()\n }\n }\n\n private readonly handleFocus = () => {\n this.emit('dds-focus')\n }\n\n private readonly handleBlur = () => {\n this.emit('dds-blur')\n }\n\n // custom validation\n getValidity() {\n return !!this.value\n }\n\n get validity(): ValidityState {\n if (this.internals.validity) {\n return this.internals.validity\n } else {\n return getValidityStateObject({\n valueMissing: this.required && !this.getValidity(),\n patternMismatch: !this.isValueValid(),\n })\n }\n }\n\n checkValidity() {\n return this.required && this.getValidity() && this.isValueValid()\n }\n\n reportValidity() {\n return this.required && this.getValidity() && this.isValueValid()\n }\n\n setValidity() {\n if (!this.checkValidity()) {\n this.internals.setValidity(\n {\n valueMissing: this.required && !this.getValidity(),\n patternMismatch: !this.isValueValid(),\n },\n this.validationMessage,\n this.triggerInput,\n )\n } else {\n this.internals.setValidity({})\n }\n }\n\n handleInvalid(event: Event) {\n event.preventDefault()\n }\n\n render() {\n return html` <div class=\"label-container\">\n ${formLabelTemplate({\n label: this.label,\n id: this.labelId,\n htmlFor: this.inputId,\n size: this.size,\n required: this.required,\n requiredLabel: this.requiredLabel,\n optional: this.optional,\n optionalLabel: this.optionalLabel,\n disabled: this.disabled,\n subtle: this.subtle,\n noMargin: !!this.description,\n hideLabel: this.hideLabel,\n })}\n ${this.tooltip &&\n html` <dap-ds-tooltip\n part=\"tooltip\"\n content=${this.tooltip}\n mode=\"toggle\"\n placement=${this.tooltipPlacement}>\n <dap-ds-icon-button\n slot=\"trigger\"\n size=${this.size as 'xs' | 'sm' | 'md' | 'lg'}\n iconSize=${this.size === 'xs' ? '16' : '22'}\n class=\"info-button\"\n clean>\n <dap-ds-icon\n name=\"information-line\"\n aria-label=${this.tooltipAriaLabel}\n class=\"info-button\"></dap-ds-icon>\n </dap-ds-icon-button>\n </dap-ds-tooltip>`}\n </div>\n ${this.description &&\n html`\n <dap-ds-typography\n part=\"description\"\n variant=\"description\"\n class=${clsx('input-description')}\n size=${ifDefined(this.size as CommonFormElementSize)}\n id=${this.descriptionId}>\n ${this.description}\n </dap-ds-typography>\n `}\n <div>\n <dap-ds-popup\n part=\"base\"\n class=\"select-popup\"\n overflow\n ?opened=${this.opened}\n ?hasArrow=${false}\n placement=${this.placement}\n floatingStrategy=${this.floatingStrategy}\n maxHeight=\"auto\"\n offset=\"4\"\n ?disableViewportAutoClose=${this.disableViewportAutoClose}\n @dds-close=${this.handlePopupAutoClose}>\n <div\n slot=\"trigger\"\n part=\"trigger\"\n class=\"${clsx('select', `select--${this.size}`, {\n 'select--disabled': this.disabled,\n 'select--readonly': this.readonly,\n 'select--opened': this.opened,\n 'select--loading': this.loading,\n 'select--success': this.status === 'success',\n 'select--error': this.status === 'error',\n 'select--no-animation': true,\n })}\">\n <input\n part=\"input\"\n role=\"combobox\"\n class=\"${clsx('combobox__input', 'input', `input--${this.size}`, {\n 'input--disabled': this.disabled,\n 'input--readonly': this.readonly,\n })}\"\n id=${this.inputId}\n value=${this.getFormattedValue()}\n aria-expanded=${this.opened}\n aria-haspopup=\"dialog\"\n aria-labelledby=${ifDefined(this.label ? this.labelId : nothing)}\n aria-describedby=\"${ifDefined(\n this.description ? this.descriptionId : nothing,\n )} ${ifDefined(this.feedback ? this.feedbackId : nothing)}\"\n aria-disabled=${this.disabled}\n aria-controls=\"calendar\"\n aria-autocomplete=\"none\"\n ?required=${this.required}\n ?readonly=${this.readonly}\n ?autofocus=${this.autofocus}\n ?disabled=${this.disabled}\n autocomplete=${this.autocomplete as any}\n placeholder=${ifDefined(this.placeholder ?? '')}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${this.handleInput}\n @keydown=${this.handleKeyDown}\n @invalid=${this.handleInvalid}\n @click=${this.handleClick} />\n <div\n class=\"${clsx('select-action', `select-action--${this.size}`, {\n 'select-action--disabled': this.disabled,\n 'select-action--readonly': this.readonly,\n 'select-action--opened': this.opened,\n })}\">\n ${this.clearButton === 'true' && !this.readonly\n ? html`<div class=\"${clsx('clear-icon')}\">\n <dap-ds-icon-button\n icon=\"close-line\"\n part=\"clear-button\"\n data-testid=${this.clearButtonTestId}\n aria-label=${ifDefined(\n this.clearButtonAriaLabel ??\n t('clear', { lng: this.locale }),\n )}\n ?disabled=${this.disabled}\n @click=${this.handleClearClick}></dap-ds-icon-button>\n </div>`\n : nothing}\n <div\n class=\"${clsx('indicator-icon', {\n 'indicator-icon--loading': this.loading,\n })}\">\n ${this.loading\n ? html`<dap-ds-icon-loading-spinner></dap-ds-icon-loading-spinner>`\n : html`<dap-ds-icon-calendar-line\n aria-hidden=\"true\"\n part=\"calendar-button\"\n data-testid=${this.calendarButtonTestId}\n class=${clsx('calendar-icon')}\n @click=${this.handleClick}></dap-ds-icon-calendar-line>`}\n </div>\n </div>\n </div>\n <dap-ds-calendar\n id=\"calendar\"\n part=\"calendar\"\n exportparts=\"calendar-header-button-prev, calendar-header-button-next, calendar-header-year-select, calendar-header-month-select, calendar-grid-header-cell, calendar-grid-cell, calendar-grid-header-cell-base, calendar-grid-cell-base, calendar-grid-cell-today-mark\"\n locale=${this.locale}\n @dds-close=${this.hideCalendar}\n @dds-change=${(event: CustomEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (this.mode === 'single') {\n this.setValue(event.detail.value)\n }\n }}\n @dds-range-change=${(event: CustomEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (this.mode === 'range') {\n this.rangeStart = event.detail.startDate\n this.rangeEnd = event.detail.endDate\n this.triggerInput.value = this.getFormattedValue()\n this.emit('dds-change', {\n startDate: this.rangeStart,\n endDate: this.rangeEnd,\n })\n this.hideCalendar()\n }\n }}>\n </dap-ds-calendar>\n </dap-ds-popup>\n ${this.feedback &&\n html`<dap-ds-feedback\n part=\"feedback\"\n feedbackType=${ifDefined(this.feedbackType)}\n feedbackSize=\"${ifDefined(this.size as 'lg' | 'sm' | 'xs')}\"\n id=\"feedback\">\n ${this.feedback}\n </dap-ds-feedback>`}\n </div>`\n }\n}\n"],"names":["DEFAULT_MIN_DATE","DEFAULT_MAX_DATE","DEFAULT_ISO_FORMAT","_DapDSDatePicker","_a","GenericFormElement","date","dayjs","event","path","input","rawDigits","masked","minDate","maxDate","__async","uniqueSuffix","value","trimmed","numValue","_changedProperties","normalized","normalizedCurrentDate","normalizedMinDate","normalizedMaxDate","valueChanged","valueExistsButNotProcessed","currentCalendarValue","format","startStr","endStr","trimmedValue","localeFormat","parsedDate","formattedDate","normalizedInput","setInputValue","sendEmptyEventOnInput","tokens","i","digits","result","digitIndex","token","available","options","getValidityStateObject","html","formLabelTemplate","clsx","ifDefined","nothing","_b","t","DapDSFormLabel","DapDSTooltip","DapDSIconButton","DapDSIcon","DapDSTypography","DapDSPopup","SystemLoadingSpinner","BusinessCalendarLine","DapDSCalendar","DapDSFeedback","unsafeCSS","styles","__decorateClass","query","property","state","DapDSDatePicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAMA,IAAmB,cACnBC,IAAmB,cAGnBC,IAAqB;;AAsF3B,MAAqBC,KAArBC,IAAA,cAA6CC,EAAmB;AAAA,EAgN9D,cAAc;AACN,UAAA,GArHgD,KAAA,OAAA,UAiCxB,KAAA,eAAe,CAACC,MACvC,CAACA,GAsB+C,KAAA,YAAA,gBAGJ,KAAA,SAAA,IAGF,KAAA,sBAAA,IAGE,KAAA,wBAAA,IAMJ,KAAA,UAAA,IAGb,KAAA,OAAA,IAMkB,KAAA,kBAAA,KAGH,KAAA,cAAA,QAMnB,KAAA,oBAAA,2BAGG,KAAA,uBAAA,8BAG8B,KAAA,mBAAA,SAGA,KAAA,2BAAA,IAKrC,KAAA,SAAiBC,EAAM,OAAO,GAOjD,KAAQ,gBAA0B,CAAC,GACnC,KAAQ,gBAAyB,IAC1C,KAAQ,qBAAqB,GAoZZ,KAAA,0BAA0B,CAACC,MAAsB;AAC1D,YAAAC,IAAOD,EAAM,aAAa;AAChC,MACE,QACA,CAACC,EAAK,SAAS,IAAI,MAClB,CAAC,KAAK,SAAS,CAACA,EAAK,SAAS,KAAK,KAAK,MAEzC,KAAK,aAAa;AAAA,IAEtB,GAEA,KAAiB,uBAAuB,MAAM;AAC5C,WAAK,aAAa,EAAE,WAAW,GAAA,CAAM;AAAA,IACvC,GAEiB,KAAA,cAAc,CAACD,MAAsB;AACpD,YAAME,IAAQF,EAAM;AAEhB,UAAA,KAAK,gBAAgB;AACvB,YAAIG,IAAYD,EAAM,MAAM,QAAQ,OAAO,EAAE;AAI7C,SAFEF,EAAM,cAAc,2BACpBA,EAAM,cAAc,2BACJG,EAAU,WAAW,KAAK,uBAC9BA,IAAAA,EAAU,MAAM,GAAG,EAAE,IAEnC,KAAK,qBAAqBA,EAAU;AAC9B,cAAAC,IAAS,KAAK,iBAAiBD,CAAS;AAC9C,QAAAD,EAAM,QAAQE,GACdF,EAAM,kBAAkBE,EAAO,QAAQA,EAAO,MAAM;AAAA,MAAA;AAGlD,UAAA,CAACF,EAAM;AACJ,aAAA,SAAS,QAAW,IAAO,EAAI;AAAA,eAEhC,KAAK,gBAAgB;AACvB,cAAMJ,IAAOC,EAAMG,EAAM,KAAK,EAAE,OAAO,KAAK,MAAM,GAG5CG,IACJ,KAAK,cAAc,KAAK,OAAO,KAAKN,EAAMP,CAAgB,GACtDc,IACJ,KAAK,cAAc,KAAK,OAAO,KAAKP,EAAMN,CAAgB;AAExD,QAAAK,EAAK,SAASO,GAAS,KAAK,KAAKP,EAAK,QAAQQ,GAAS,KAAK,KAC9D,KAAK,SAAS,QAAW,IAAO,KAAK,qBAAqB,GAG1D,KAAK,KAAK,oBAAoB;AAAA,UAC5B,OAAOJ,EAAM;AAAA,UACb,MAAM;AAAA,UACN,MAAMJ,EAAK,OAAOJ,CAAkB;AAAA,QAAA,CACrC,MAEI,KAAA,SAASI,GAAM,EAAK,GACzB,KAAK,cAAcA,GACnB,KAAK,KAAK,kBAAkB,EAAE,OAAOI,EAAM,OAAO;AAAA,MACpD;AAEA,aAAK,SAAS,QAAW,IAAO,KAAK,qBAAqB,GACrD,KAAA,KAAK,oBAAoB,EAAE,OAAOA,EAAM,OAAO,MAAM,WAAW;AAIzE,MAAI,KAAK,uBAAuB,CAAC,KAAK,UACpC,KAAK,aAAa,GAGpB,KAAK,KAAK,aAAa,EAAE,OAAOA,EAAM,OAAO;AAAA,IAC/C,GAEiB,KAAA,gBAAgB,CAAOF,MAAyBO,EAAA;AAC3D,MAAAP,EAAM,QAAQ,UAKhBA,EAAM,QAAQ,WACdA,EAAM,QAAQ,eACdA,EAAM,QAAQ,eAEdA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GAEjB,KAAK,SAKR,KAAK,aAAa,KAJlB,KAAK,aAAa,GAClB,MAAM,KAAK,gBACX,KAAK,SAAS,aAAa;AAAA,IAKjC,IAMA,KAAiB,cAAc,MAAM;AAC/B,MAAC,KAAK,SAGR,KAAK,aAAa,IAFlB,KAAK,aAAa;AAAA,IAItB,GAEA,KAAiB,mBAAmB,MAAM;AACpC,MAAC,KAAK,aACR,KAAK,eAAe,GAEpB,KAAK,aAAa,MAAM,GACxB,KAAK,YAAY,GAEjB,KAAK,aAAa,GAElB,KAAK,KAAK,WAAW;AAAA,IAEzB,GA2BA,KAAiB,cAAc,MAAM;AACnC,WAAK,KAAK,WAAW;AAAA,IACvB,GAEA,KAAiB,aAAa,MAAM;AAClC,WAAK,KAAK,UAAU;AAAA,IACtB,GApiBkBJ,EAAA;AAChB,UAAMY,IACJ,OAAO,UAAW,eAAe,OAAO,aACpC,OAAO,WAAA,EAAa,MAAM,GAAG,CAAC,IAC9B,KAAK,IAAI,EAAE,SAAS,EAAE;AAC5B,SAAK,UAAU,SAASZ,EAAgB,MAAM,IAAIY,CAAY,IAC9D,KAAK,UAAU,SAASZ,EAAgB,MAAM,IAAIY,CAAY,IAC9D,KAAK,gBAAgB,eAAeZ,EAAgB,MAAM,IAAIY,CAAY,IAE1E,KAAK,aAAa,YAAYZ,EAAgB,MAAM,IAAIY,CAAY;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9D,cACNC,GACmB;AACf,QAAuBA,KAAU,MAKjC;AAAA,UAAAV,EAAM,QAAQU,CAAK;AACd,eAAAA;AAIL,UAAA,OAAOA,KAAU,UAAU;AAEvB,cAAAC,IAAUD,EAAM,KAAK;AACvB,YAAA,QAAQ,KAAKC,CAAO,GAAG;AACnB,gBAAAC,IAAW,OAAOD,CAAO;AAG3B,cAAAC,IAAW,KAAKA,IAAW;AACtB,mBAAAZ,EAAMY,IAAW,GAAI;AAI1B,cAAAA,KAAY,KAAKA,KAAY;AAC/B,mBAAOZ,EAAMY,CAAQ;AAAA,QACvB;AAGF,eAAOZ,EAAMU,CAAK;AAAA,MAAA;AAIhB,UAAA,OAAOA,KAAU,UAAU;AAGzB,YAAAA,IAAQ,KAAKA,IAAQ;AAChB,iBAAAV,EAAMU,IAAQ,GAAI;AAIvB,YAAAA,KAAS,KAAKA,KAAS;AACzB,iBAAOV,EAAMU,CAAK;AAAA,MACpB;AAIF,aAAOV,EAAMU,CAAK;AAAA;AAAA,EAAA;AAAA,EAGV,aACRG,GACM;;AAQF,QAPJ,MAAM,aAAaA,CAAkB,GAGrC,KAAK,kBAAgBhB,IAAA,KAAK,WAAL,gBAAAA,EAAa,MAAM,KAAK,qBAAoB,CAAC,GAE7D,KAAA,SAAS,OAAO,KAAK,MAEtB,KAAK,SAAS,SAAS;AACzB,UAAI,KAAK,YAAY;AACnB,cAAMiB,IAAa,KAAK,cAAc,KAAK,UAAU;AACrD,QAAIA,MACF,KAAK,SAAS,aAAaA,EAAW,OAAO,KAAK,MAAM;AAAA,MAC1D;AAEF,UAAI,KAAK,UAAU;AACjB,cAAMA,IAAa,KAAK,cAAc,KAAK,QAAQ;AACnD,QAAIA,MACF,KAAK,SAAS,WAAWA,EAAW,OAAO,KAAK,MAAM;AAAA,MACxD;AAAA,IACF,WACS,KAAK,OAAO;AACrB,YAAMA,IAAa,KAAK,cAAc,KAAK,KAAK;AAChD,MAAIA,MACF,KAAK,SAAS,QAAQA,EAAW,OAAO,KAAK,MAAM,GAEnD,KAAK,QAAQA,GAET,KAAK,iBAAiB,KAAK,iBACxB,KAAA,aAAa,QAAQ,KAAK,kBAAkB;AAAA,IAErD;AAGF,UAAMC,IAAwB,KAAK,cAAc,KAAK,WAAW;AAC5D,SAAA,SAAS,cAAcA,KAAyBf,EAAM;AAE3D,UAAMgB,IAAoB,KAAK,cAAc,KAAK,OAAO;AACzD,SAAK,SAAS,UAAUA,KAAqBhB,EAAMP,CAAgB,GAC/DuB,MACF,KAAK,UAAUA;AAGjB,UAAMC,IAAoB,KAAK,cAAc,KAAK,OAAO;AACzD,SAAK,SAAS,UAAUA,KAAqBjB,EAAMN,CAAgB,GAC/DuB,MACF,KAAK,UAAUA,IAEZ,KAAA,SAAS,eAAe,KAAK,cAG9B,KAAK,uBAAuB,WACzB,KAAA,SAAS,qBAAqB,KAAK;AAAA,EAC1C;AAAA,EAGQ,QACRJ,GACM;;AACN,UAAM,QAAQA,CAAkB;AAI1B,UAAAK,IAAeL,EAAmB,IAAI,OAAO,GAC7CM,IACJ,CAACD,KAAgB,KAAK,SAAS,KAAK,SAAS,YAAY,KAAK;AAEhE,SACGA,KAAgBC,MACjB,KAAK,SAAS,UACd;AACA,YAAML,IAAa,KAAK,cAAc,KAAK,KAAK;AAChD,UAAIA,GAAY;AAER,cAAAM,IAAuB,KAAK,SAAS;AAC3C,SACE,CAACA,KACD,CAACN,EAAW,OAAOM,GAAsB,KAAK,OAE9C,KAAK,SAAS,QAAQN,EAAW,OAAO,KAAK,MAAM,GAEnD,KAAK,QAAQA;AAAA,MACf;AAEA,aAAK,SAAS,QAAQ;AAEpB,MAAA,KAAK,iBAAiB,KAAK,iBACxB,KAAA,aAAa,QAAQ,KAAK,kBAAkB,IAEnD,KAAK,YAAY;AAAA,IAAA;AAGnB,QAAID,EAAmB,IAAI,YAAY,KAAK,KAAK,SAAS,SAAS;AACjE,YAAMC,IAAa,KAAK,cAAc,KAAK,UAAU;AACrD,MAAIA,KACF,KAAK,SAAS,aAAaA,EAAW,OAAO,KAAK,MAAM,GACxD,KAAK,aAAaA,KAElB,KAAK,SAAS,aAAa,QAEzB,KAAK,iBAAiB,KAAK,cAAc,KAAK,aAC3C,KAAA,aAAa,QAAQ,KAAK,kBAAkB;AAAA,IACnD;AAGF,QAAID,EAAmB,IAAI,UAAU,KAAK,KAAK,SAAS,SAAS;AAC/D,YAAMC,IAAa,KAAK,cAAc,KAAK,QAAQ;AACnD,MAAIA,KACF,KAAK,SAAS,WAAWA,EAAW,OAAO,KAAK,MAAM,GACtD,KAAK,WAAWA,KAEhB,KAAK,SAAS,WAAW,QAEvB,KAAK,iBAAiB,KAAK,cAAc,KAAK,aAC3C,KAAA,aAAa,QAAQ,KAAK,kBAAkB;AAAA,IACnD;AAGE,QAAAD,EAAmB,IAAI,aAAa,GAAG;AACzC,YAAMC,IAAa,KAAK,cAAc,KAAK,WAAW;AACjD,WAAA,SAAS,cAAcA,KAAcd,EAAM;AAAA,IAAA;AAG9C,QAAAa,EAAmB,IAAI,SAAS,GAAG;AACrC,YAAMC,IAAa,KAAK,cAAc,KAAK,OAAO;AAClD,WAAK,SAAS,UAAUA,KAAcd,EAAMP,CAAgB,GACxDqB,MACF,KAAK,UAAUA;AAAA,IACjB;AAGE,QAAAD,EAAmB,IAAI,SAAS,GAAG;AACrC,YAAMC,IAAa,KAAK,cAAc,KAAK,OAAO;AAClD,WAAK,SAAS,UAAUA,KAAcd,EAAMN,CAAgB,GACxDoB,MACF,KAAK,UAAUA;AAAA,IACjB;AAGE,IAAAD,EAAmB,IAAI,cAAc,MAClC,KAAA,SAAS,eAAe,KAAK,gBAIlCA,EAAmB,IAAI,QAAQ,KAC/BA,EAAmB,IAAI,iBAAiB,OAExC,KAAK,kBAAgBhB,IAAA,KAAK,WAAL,gBAAAA,EAAa,MAAM,KAAK,qBAAoB,CAAC;AAAA,EACpE;AAAA,EAGF,oBAAoB;AACd,QAAA,KAAK,SAAS,SAAS;AACzB,UAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AACrB,eAAA;AAET,YAAMwB,IAAS,KAAK,cAAc,CAAC,KAAK,KAClCC,IAAWtB,EAAM,KAAK,UAAU,EAAE,OAAO,KAAK,MAAM,EAAE,OAAOqB,CAAM,GACnEE,IAASvB,EAAM,KAAK,QAAQ,EAAE,OAAO,KAAK,MAAM,EAAE,OAAOqB,CAAM;AAC9D,aAAA,GAAGC,CAAQ,MAAMC,CAAM;AAAA,IAAA;AAG5B,WAAC,KAAK,QAIHvB,EAAM,KAAK,KAAK,EACpB,OAAO,KAAK,MAAM,EAClB,OAAO,KAAK,cAAc,CAAC,KAAK,GAAG,IAL7B;AAAA,EAK6B;AAAA,EAGxC,cAAcU,GAAe;AACvB,QAAA,CAAC,KAAK,cAAc,QAAQ;AAGxB,YAAAc,IAAed,EAAM,KAAK,GAG1Be,IAAezB,EAAM,EACxB,OAAO,KAAK,MAAM,EAClB,WAAA,EACA,eAAe,GAAG,GAKf0B,IAAa1B,EAAMwB,GAAcC,CAAY;AAC/C,UAAA,CAACC,EAAW;AACP,eAAA;AAIH,YAAAC,IAAgBD,EAAW,OAAOD,CAAY,GAC9CG,IAAkBJ,EAAa,QAAQ,YAAY,EAAE;AAE3D,aAD4BG,EAAc,QAAQ,YAAY,EAAE,MACpCC;AAAA,IAIrB;AAGF,WAAA,KAAK,cAAc,KAAK,CAAUP,MAAA;AAGjC,YAAAK,IAAa1B,EAAMU,GAAOW,CAAM;AAClC,UAAA,CAACK,EAAW;AACP,eAAA;AAIH,YAAAC,IAAgBD,EAAW,OAAOL,CAAM,GACxCO,IAAkBlB,EAAM,QAAQ,YAAY,EAAE;AAEpD,aAD4BiB,EAAc,QAAQ,YAAY,EAAE,MACjCC;AAAA,IAAA,CAChC;AAAA,EAAA;AAAA,EAGH,eAAe;AACT,WAAC,KAAK,QAIH,KAAK,aAAa,IAHhB;AAAA,EAGgB;AAAA,EAG3B,eAAe;AACb,WAAO,KAAK,cAAc,KAAK,aAAa,KAAK;AAAA,EAAA;AAAA,EAGnD,SACElB,GACAmB,IAAyB,IACzBC,IAAiC,IACjC;AACA,SAAK,QAAQpB,GAETmB,KACF,KAAK,gBAAgB,IAChB,KAAA,aAAa,QAAQ,KAAK,kBAAkB,KAEjD,KAAK,gBAAgB,IAInB,KAAK,aACP,KAAK,UAAU;AAAA,MACb,KAAK,QAAQ,KAAK,MAAM,SAAA,IAAa,KAAK;AAAA,IAC5C,GAGF,KAAK,YAAY,GACjB,KAAK,aAAa,GAEdC,MACF,KAAK,KAAK,cAAc,EAAE,OAAO,KAAK,OAAO,GAC7C,KAAK,KAAK,kBAAkB,EAAE,OAAO,KAAK,aAAa,OAAO;AAAA,EAChE;AAAA,EAGI,iBAAiB;AAAA,WAAAtB,EAAA;AACrB,WAAK,qBAAqB,GACrB,KAAA,SAAS,QAAW,IAAM,EAAI;AAAA,IAAA;AAAA;AAAA,EAG7B,eAAwB;AAC9B,WAAO,KAAK,QAAQ,KAAK,SAAS,YAAY,KAAK,cAAc,UAAU;AAAA,EAAA;AAAA,EAGrE,sBAA8B;AAChC,WAAA,KAAK,cAAc,SAAS,IACvB,KAAK,cAAc,CAAC,IAEtBR,EAAA,EAAQ,OAAO,KAAK,MAAM,EAAE,WAAA,EAAa,eAAe,GAAG;AAAA,EAAA;AAAA,EAG5D,gBAAgBqB,GAA6B;AACnD,UAAMU,IAAsB,CAAC;AAC7B,QAAIC,IAAI;AACD,WAAAA,IAAIX,EAAO;AAChB,MAAIA,EAAO,WAAW,QAAQW,CAAC,KAC7BD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,KACIX,EAAO,WAAW,MAAMW,CAAC,KAClCD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,KACIX,EAAO,WAAW,MAAMW,CAAC,KAClCD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,KACIX,EAAO,WAAW,MAAMW,CAAC,KAClCD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,KACIX,EAAOW,CAAC,MAAM,OACvBD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,KACIX,EAAOW,CAAC,MAAM,OACvBD,EAAO,KAAK,EAAE,MAAM,SAAS,QAAQ,GAAG,GACnCC,KAAA,MAEED,EAAA,KAAK,EAAE,MAAM,aAAa,OAAOV,EAAOW,CAAC,GAAG,GAC9CA,KAAA;AAGF,WAAAD;AAAA,EAAA;AAAA,EAGD,iBAAiBE,GAAwB;AAC/C,UAAMF,IAAS,KAAK,gBAAgB,KAAK,qBAAqB;AAC9D,QAAIG,IAAS,IACTC,IAAa;AAEjB,eAAWC,KAASL;AACd,UAAAK,EAAM,SAAS;AACjB,QAAID,IAAa,MACfD,KAAUE,EAAM;AAAA,WAEb;AACL,cAAMC,IAAYJ,EAAO,MAAME,GAAYA,IAAaC,EAAM,MAAO;AAGjE,YAFMF,KAAAG,GACVF,KAAcE,EAAU,QACpBA,EAAU,SAASD,EAAM;AAC3B;AAAA,MACF;AAIG,WAAAF;AAAA,EAAA;AAAA,EAiGT,IAAW,eAAe;AACxB,WAAO,KAAK;AAAA,EAAA;AAAA,EAwBR,eAAe;AAAA,WAAA1B,EAAA;AACnB,MAAI,KAAK,YAAY,KAAK,YAAY,KAAK,WAI3C,KAAK,SAAS,IAEL,SAAA,iBAAiB,aAAa,KAAK,uBAAuB;AAAA,IAAA;AAAA;AAAA,EAG/D,aAAa8B,GAAmC;AAAA,WAAA9B,EAAA;AAChD,MAAC,KAAK,WAIV,KAAK,SAAS,IAEL,SAAA,oBAAoB,aAAa,KAAK,uBAAuB,GAEtE,MAAM,KAAK,gBACN8B,KAAA,QAAAA,EAAS,aACZ,KAAK,MAAM;AAAA,IACb;AAAA;AAAA;AAAA,EAYF,cAAc;AACL,WAAA,CAAC,CAAC,KAAK;AAAA,EAAA;AAAA,EAGhB,IAAI,WAA0B;AACxB,WAAA,KAAK,UAAU,WACV,KAAK,UAAU,WAEfC,EAAuB;AAAA,MAC5B,cAAc,KAAK,YAAY,CAAC,KAAK,YAAY;AAAA,MACjD,iBAAiB,CAAC,KAAK,aAAa;AAAA,IAAA,CACrC;AAAA,EACH;AAAA,EAGF,gBAAgB;AACd,WAAO,KAAK,YAAY,KAAK,YAAY,KAAK,KAAK,aAAa;AAAA,EAAA;AAAA,EAGlE,iBAAiB;AACf,WAAO,KAAK,YAAY,KAAK,YAAY,KAAK,KAAK,aAAa;AAAA,EAAA;AAAA,EAGlE,cAAc;AACR,IAAC,KAAK,kBAUH,KAAA,UAAU,YAAY,EAAE,IAT7B,KAAK,UAAU;AAAA,MACb;AAAA,QACE,cAAc,KAAK,YAAY,CAAC,KAAK,YAAY;AAAA,QACjD,iBAAiB,CAAC,KAAK,aAAa;AAAA,MACtC;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EAGF;AAAA,EAGF,cAActC,GAAc;AAC1B,IAAAA,EAAM,eAAe;AAAA,EAAA;AAAA,EAGvB,SAAS;;AACA,WAAAuC;AAAA,UACDC,EAAkB;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,IAAI,KAAK;AAAA,MACT,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,MACpB,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,MACpB,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,UAAU,CAAC,CAAC,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,IAAA,CACjB,CAAC;AAAA,UACA,KAAK,WACPD;AAAA;AAAA,oBAEY,KAAK,OAAO;AAAA;AAAA,sBAEV,KAAK,gBAAgB;AAAA;AAAA;AAAA,mBAGxB,KAAK,IAAiC;AAAA,uBAClC,KAAK,SAAS,OAAO,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,2BAK5B,KAAK,gBAAgB;AAAA;AAAA;AAAA,0BAGtB;AAAA;AAAA,QAElB,KAAK,eACPA;AAAA;AAAA;AAAA;AAAA,kBAIYE,EAAK,mBAAmB,CAAC;AAAA,iBAC1BC,EAAU,KAAK,IAA6B,CAAC;AAAA,eAC/C,KAAK,aAAa;AAAA,YACrB,KAAK,WAAW;AAAA;AAAA,OAErB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMa,KAAK,MAAM;AAAA,sBACT,EAAK;AAAA,sBACL,KAAK,SAAS;AAAA,6BACP,KAAK,gBAAgB;AAAA;AAAA;AAAA,sCAGZ,KAAK,wBAAwB;AAAA,uBAC5C,KAAK,oBAAoB;AAAA;AAAA;AAAA;AAAA,qBAI3BD,EAAK,UAAU,WAAW,KAAK,IAAI,IAAI;AAAA,MAC9C,oBAAoB,KAAK;AAAA,MACzB,oBAAoB,KAAK;AAAA,MACzB,kBAAkB,KAAK;AAAA,MACvB,mBAAmB,KAAK;AAAA,MACxB,mBAAmB,KAAK,WAAW;AAAA,MACnC,iBAAiB,KAAK,WAAW;AAAA,MACjC,wBAAwB;AAAA,IAAA,CACzB,CAAC;AAAA;AAAA;AAAA;AAAA,uBAISA,EAAK,mBAAmB,SAAS,UAAU,KAAK,IAAI,IAAI;AAAA,MAC/D,mBAAmB,KAAK;AAAA,MACxB,mBAAmB,KAAK;AAAA,IAAA,CACzB,CAAC;AAAA,mBACG,KAAK,OAAO;AAAA,sBACT,KAAK,kBAAmB,CAAA;AAAA,8BAChB,KAAK,MAAM;AAAA;AAAA,gCAETC,EAAU,KAAK,QAAQ,KAAK,UAAUC,CAAO,CAAC;AAAA,kCAC5CD;AAAA,MAClB,KAAK,cAAc,KAAK,gBAAgBC;AAAA,IAAA,CACzC,IAAID,EAAU,KAAK,WAAW,KAAK,aAAaC,CAAO,CAAC;AAAA,8BACzC,KAAK,QAAQ;AAAA;AAAA;AAAA,0BAGjB,KAAK,QAAQ;AAAA,0BACb,KAAK,QAAQ;AAAA,2BACZ,KAAK,SAAS;AAAA,0BACf,KAAK,QAAQ;AAAA,6BACV,KAAK,YAAmB;AAAA,4BACzBD,GAAU9C,IAAA,KAAK,gBAAL,OAAAA,IAAoB,EAAE,CAAC;AAAA,sBACvC,KAAK,UAAU;AAAA,uBACd,KAAK,WAAW;AAAA,uBAChB,KAAK,WAAW;AAAA,yBACd,KAAK,aAAa;AAAA,yBAClB,KAAK,aAAa;AAAA,uBACpB,KAAK,WAAW;AAAA;AAAA,uBAEhB6C,EAAK,iBAAiB,kBAAkB,KAAK,IAAI,IAAI;AAAA,MAC5D,2BAA2B,KAAK;AAAA,MAChC,2BAA2B,KAAK;AAAA,MAChC,yBAAyB,KAAK;AAAA,IAAA,CAC/B,CAAC;AAAA,gBACA,KAAK,gBAAgB,UAAU,CAAC,KAAK,WACnCF,gBAAmBE,EAAK,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA,oCAInB,KAAK,iBAAiB;AAAA,mCACvBC;AAAA,OACXE,IAAA,KAAK,yBAAL,OAAAA,IACEC,EAAE,SAAS,EAAE,KAAK,KAAK,OAAQ,CAAA;AAAA,IAClC,CAAA;AAAA,kCACW,KAAK,QAAQ;AAAA,+BAChB,KAAK,gBAAgB;AAAA,4BAElCF,CAAO;AAAA;AAAA,yBAEAF,EAAK,kBAAkB;AAAA,MAC9B,2BAA2B,KAAK;AAAA,IAAA,CACjC,CAAC;AAAA,kBACA,KAAK,UACHF,iEACAA;AAAA;AAAA;AAAA,oCAGgB,KAAK,oBAAoB;AAAA,8BAC/BE,EAAK,eAAe,CAAC;AAAA,+BACpB,KAAK,WAAW,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQzD,KAAK,MAAM;AAAA,yBACP,KAAK,YAAY;AAAA,0BAChB,CAACzC,MAAuB;AACpC,MAAAA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GAClB,KAAK,SAAS,YACX,KAAA,SAASA,EAAM,OAAO,KAAK;AAAA,IAEnC,CAAA;AAAA,gCACmB,CAACA,MAAuB;AAC1C,MAAAA,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GAClB,KAAK,SAAS,YACX,KAAA,aAAaA,EAAM,OAAO,WAC1B,KAAA,WAAWA,EAAM,OAAO,SACxB,KAAA,aAAa,QAAQ,KAAK,kBAAkB,GACjD,KAAK,KAAK,cAAc;AAAA,QACtB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,MAAA,CACf,GACD,KAAK,aAAa;AAAA,IACpB,CACD;AAAA;AAAA;AAAA,UAGH,KAAK,YACPuC;AAAA;AAAA,yBAEiBG,EAAU,KAAK,YAAY,CAAC;AAAA,0BAC3BA,EAAU,KAAK,IAA0B,CAAC;AAAA;AAAA,YAExD,KAAK,QAAQ;AAAA,2BACE;AAAA;AAAA,EAAA;AAG3B,GAj9BE9C,EAAO,UAAU,qBAEjBA,EAAO,eAAe;AAAA,EACpB,qBAAqBkD;AAAA,EACrB,kBAAkBC;AAAA,EAClB,sBAAsBC;AAAA,EACtB,eAAeC;AAAA,EACf,qBAAqBC;AAAA,EACrB,gBAAgBC;AAAA,EAChB,+BAA+BC;AAAA,EAC/B,6BAA6BC;AAAA,EAC7B,mBAAmBC;AAAA,EACnB,mBAAmBC;AACrB,GAEA3D,EAAe,SAAS,GAUxBA,EAAe,wBAAwB;AAAA,EACrC,eAAe,CAACa,MAA4C;AAC1D,QAAIA,KAAU,QAA+BA,MAAU;AAC9C;AAEH,UAAAC,IAAUD,EAAM,KAAK;AACvB,QAACC,GAGD;AAAA,UAAA,QAAQ,KAAKA,CAAO,GAAG;AACnB,cAAAC,IAAW,OAAOD,CAAO;AAE3B,YAAAC,IAAW,KAAKA,IAAW;AACtB,iBAAAZ,EAAMY,IAAW,GAAI;AAG1B,YAAAA,KAAY,KAAKA,KAAY;AAC/B,iBAAOZ,EAAMY,CAAQ;AAAA,MACvB;AAGF,aAAOZ,EAAMU,CAAK;AAAA;AAAA,EACpB;AAAA,EACA,aAAa,CACXA,MAE2BA,KAAU,OAC5B,OAGLV,EAAM,QAAQU,CAAK,KAGnBA,aAAiB,OACZA,EAAM,YAAY,IAEvB,OAAOA,KAAU,WACZA,IAEL,OAAOA,KAAU,WACZ,OAAOA,CAAK,IAEd;AAEX,GAwIgBb,EAAA,SAAS4D,EAAUC,CAAM,GA9M3C7D;AA4E8C8D,EAAA;AAAA,EAA3CC,EAAM,kBAAkB;AAAA,GA5ENhE,EA4EyB,WAAA,cAAA;AACP+D,EAAA;AAAA,EAApCC,EAAM,WAAW;AAAA,GA7EChE,EA6EkB,WAAA,UAAA;AACG+D,EAAA;AAAA,EAAvCC,EAAM,cAAc;AAAA,GA9EFhE,EA8EqB,WAAA,OAAA;AAQ/B+D,EAAA;AAAA,EAHRE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GArFkBA,EAsFV,WAAA,OAAA;AAMoB+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,SAAS,GAAM,CAAA;AAAA,GA5FRjE,EA4FU,WAAA,MAAA;AAS7B+D,EAAA;AAAA,EAHCE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GApGkBA,EAqGnB,WAAA,aAAA;AASA+D,EAAA;AAAA,EAHCE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GA7GkBA,EA8GnB,WAAA,SAAA;AASA+D,EAAA;AAAA,EAHCE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GAtHkBA,EAuHnB,WAAA,SAAA;AAMgC+D,EAAA;AAAA,EAA/BE,EAAS,EAAE,WAAW,GAAO,CAAA;AAAA,GA7HXjE,EA6Ha,WAAA,cAAA;AAUhC+D,EAAA;AAAA,EAHCE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GAtIkBA,EAuInB,WAAA,YAAA;AAQA+D,EAAA;AAAA,EAHCE,EAAS;AAAA,IACR,WAAWjE,EAAgB;AAAA,EAC5B,CAAA;AAAA,GA9IkBA,EA+InB,WAAA,UAAA;AAK6B+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,SAAS,GAAM,CAAA;AAAA,GApJRjE,EAoJU,WAAA,WAAA;AAGe+D,EAAA;AAAA,EAA3CE,EAAS,EAAE,MAAM,SAAS,SAAS,GAAM,CAAA;AAAA,GAvJvBjE,EAuJyB,WAAA,QAAA;AAGf+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GA1JRjE,EA0JU,WAAA,qBAAA;AAGA+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GA7JRjE,EA6JU,WAAA,uBAAA;AAGjB+D,EAAA;AAAA,EAAXE,EAAS;AAAA,GAhKSjE,EAgKP,WAAA,aAAA;AAGiB+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAnKRjE,EAmKU,WAAA,SAAA;AAGA+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAtKRjE,EAsKU,WAAA,MAAA;AAGD+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAzKPjE,EAyKS,WAAA,QAAA;AAGA+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GA5KPjE,EA4KS,WAAA,iBAAA;AAGA+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GA/KPjE,EA+KS,WAAA,aAAA;AAGA+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAlLPjE,EAkLS,WAAA,sBAAA;AAGhB+D,EAAA;AAAA,EAAXE,EAAS;AAAA,GArLSjE,EAqLP,WAAA,mBAAA;AAGA+D,EAAA;AAAA,EAAXE,EAAS;AAAA,GAxLSjE,EAwLP,WAAA,sBAAA;AAGgB+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GA3LPjE,EA2LS,WAAA,kBAAA;AAGC+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GA9LRjE,EA8LU,WAAA,0BAAA;AAKD+D,EAAA;AAAA,EAA3BE,EAAS,EAAE,MAAM,OAAQ,CAAA;AAAA,GAnMPjE,EAmMS,WAAA,QAAA;AAKC+D,EAAA;AAAA,EAA5BE,EAAS,EAAE,MAAM,QAAS,CAAA;AAAA,GAxMRjE,EAwMU,WAAA,oBAAA;AAEZ+D,EAAA;AAAA,EAAhBG,EAAM;AAAA,GA1MYlE,EA0MF,WAAA,eAAA;AACA+D,EAAA;AAAA,EAAhBG,EAAM;AAAA,GA3MYlE,EA2MF,WAAA,eAAA;AA3MnB,IAAqBmE,KAArBnE;"}