@limetech/lime-elements 40.23.0 → 40.25.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 (404) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/{checkbox.template-CNJ29zDR.js → checkbox.template-DgiUCPna.js} +1 -1
  3. package/dist/cjs/dom-BWMDM6En.js +32 -0
  4. package/dist/cjs/{image.template-DlF-f23b.js → image.template-B_HZH9t-.js} +1 -1
  5. package/dist/cjs/{index-BlsqxTB1.js → index-CQn9p_mp.js} +12 -0
  6. package/dist/cjs/lime-elements.cjs.js +2 -2
  7. package/dist/cjs/limel-3d-hover-effect-glow.cjs.entry.js +2 -2
  8. package/dist/cjs/limel-action-bar_3.cjs.entry.js +5 -6
  9. package/dist/cjs/limel-ai-avatar.cjs.entry.js +3 -4
  10. package/dist/cjs/limel-badge_7.cjs.entry.js +13 -13
  11. package/dist/cjs/limel-banner.cjs.entry.js +2 -2
  12. package/dist/cjs/limel-button-group.cjs.entry.js +2 -2
  13. package/dist/cjs/limel-button.cjs.entry.js +3 -3
  14. package/dist/cjs/limel-callout.cjs.entry.js +3 -4
  15. package/dist/cjs/limel-card.cjs.entry.js +3 -3
  16. package/dist/cjs/limel-chart.cjs.entry.js +782 -180
  17. package/dist/cjs/limel-checkbox.cjs.entry.js +3 -3
  18. package/dist/cjs/limel-chip-set.cjs.entry.js +3 -4
  19. package/dist/cjs/limel-chip_2.cjs.entry.js +4 -5
  20. package/dist/cjs/limel-circular-progress.cjs.entry.js +2 -2
  21. package/dist/cjs/limel-code-diff.cjs.entry.js +3 -4
  22. package/dist/cjs/limel-code-editor.cjs.entry.js +3 -4
  23. package/dist/cjs/limel-collapsible-section.cjs.entry.js +3 -4
  24. package/dist/cjs/limel-color-picker-palette.cjs.entry.js +3 -3
  25. package/dist/cjs/limel-color-picker.cjs.entry.js +2 -2
  26. package/dist/cjs/limel-config.cjs.entry.js +1 -1
  27. package/dist/cjs/limel-date-picker.cjs.entry.js +439 -28
  28. package/dist/cjs/limel-dialog.cjs.entry.js +3 -3
  29. package/dist/cjs/limel-dock-button.cjs.entry.js +1 -1
  30. package/dist/cjs/limel-dock.cjs.entry.js +4 -5
  31. package/dist/cjs/limel-drag-handle_2.cjs.entry.js +5 -6
  32. package/dist/cjs/limel-dynamic-label.cjs.entry.js +1 -1
  33. package/dist/cjs/limel-email-viewer.cjs.entry.js +3 -4
  34. package/dist/cjs/limel-file-dropzone_2.cjs.entry.js +3 -3
  35. package/dist/cjs/limel-file-viewer.cjs.entry.js +3 -4
  36. package/dist/cjs/limel-file.cjs.entry.js +3 -4
  37. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +124 -16
  38. package/dist/cjs/limel-flex-container.cjs.entry.js +2 -2
  39. package/dist/cjs/limel-form-header.cjs.entry.js +2 -2
  40. package/dist/cjs/limel-form.cjs.entry.js +66 -6
  41. package/dist/cjs/limel-grid.cjs.entry.js +2 -2
  42. package/dist/cjs/limel-header.cjs.entry.js +2 -2
  43. package/dist/cjs/limel-help_2.cjs.entry.js +4 -4
  44. package/dist/cjs/limel-helper-line_3.cjs.entry.js +5 -5
  45. package/dist/cjs/limel-hotkey_4.cjs.entry.js +6 -6
  46. package/dist/cjs/limel-icon-button.cjs.entry.js +2 -2
  47. package/dist/cjs/limel-icon.cjs.entry.js +2 -2
  48. package/dist/cjs/limel-info-tile.cjs.entry.js +3 -3
  49. package/dist/cjs/limel-list-item.cjs.entry.js +7 -8
  50. package/dist/cjs/limel-markdown.cjs.entry.js +2 -2
  51. package/dist/cjs/limel-masonry-layout.cjs.entry.js +2 -2
  52. package/dist/cjs/limel-menu-item-meta.cjs.entry.js +2 -2
  53. package/dist/cjs/limel-pagination-jump.cjs.entry.js +2 -3
  54. package/dist/cjs/limel-pagination.cjs.entry.js +7 -8
  55. package/dist/cjs/limel-picker.cjs.entry.js +7 -7
  56. package/dist/cjs/limel-popover_2.cjs.entry.js +3 -3
  57. package/dist/cjs/limel-profile-picture.cjs.entry.js +3 -4
  58. package/dist/cjs/limel-progress-flow-item.cjs.entry.js +1 -1
  59. package/dist/cjs/limel-progress-flow.cjs.entry.js +1 -1
  60. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +3 -4
  61. package/dist/cjs/limel-radio-button-group.cjs.entry.js +2 -2
  62. package/dist/cjs/limel-radio-button.cjs.entry.js +3 -3
  63. package/dist/cjs/limel-resize-handle.cjs.entry.js +3 -4
  64. package/dist/cjs/limel-select.cjs.entry.js +3 -3
  65. package/dist/cjs/limel-shortcut.cjs.entry.js +2 -2
  66. package/dist/cjs/limel-side-panel.cjs.entry.js +3 -4
  67. package/dist/cjs/limel-slider.cjs.entry.js +5 -6
  68. package/dist/cjs/limel-snackbar.cjs.entry.js +4 -5
  69. package/dist/cjs/limel-split-button.cjs.entry.js +3 -3
  70. package/dist/cjs/limel-switch.cjs.entry.js +2 -2
  71. package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
  72. package/dist/cjs/limel-tab-panel.cjs.entry.js +2 -2
  73. package/dist/cjs/limel-table.cjs.entry.js +4 -5
  74. package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +5 -6
  75. package/dist/cjs/limel-text-editor.cjs.entry.js +2 -2
  76. package/dist/cjs/{live-message-BNl3Ihcz.js → live-message-CwxlKd60.js} +0 -30
  77. package/dist/cjs/loader.cjs.js +2 -2
  78. package/dist/cjs/{render-list-component-BtAliHQp.js → render-list-component-BOYFHMFE.js} +1 -1
  79. package/dist/cjs/{translations-JLP5icQ9.js → translations-BPsptVkN.js} +73 -3
  80. package/dist/collection/components/3d-hover-effect-glow/3d-hover-effect-glow.js +1 -1
  81. package/dist/collection/components/action-bar/action-bar-item/action-bar-overflow-menu.js +1 -1
  82. package/dist/collection/components/action-bar/action-bar.js +2 -2
  83. package/dist/collection/components/ai-avatar/ai-avatar.js +1 -1
  84. package/dist/collection/components/badge/badge.js +2 -2
  85. package/dist/collection/components/banner/banner.js +1 -1
  86. package/dist/collection/components/breadcrumbs/breadcrumbs.js +1 -1
  87. package/dist/collection/components/button/button.js +2 -2
  88. package/dist/collection/components/button-group/button-group.js +1 -1
  89. package/dist/collection/components/callout/callout.js +1 -1
  90. package/dist/collection/components/card/card.js +1 -1
  91. package/dist/collection/components/chart/chart.css +29 -0
  92. package/dist/collection/components/chart/chart.js +352 -67
  93. package/dist/collection/components/chart/options.js +342 -109
  94. package/dist/collection/components/chart/scale.js +25 -2
  95. package/dist/collection/components/chart/series.js +110 -0
  96. package/dist/collection/components/checkbox/checkbox.js +1 -1
  97. package/dist/collection/components/chip/chip.js +1 -1
  98. package/dist/collection/components/chip-set/chip-set.js +1 -1
  99. package/dist/collection/components/circular-progress/circular-progress.js +1 -1
  100. package/dist/collection/components/code-diff/code-diff.js +1 -1
  101. package/dist/collection/components/code-editor/code-editor.js +1 -1
  102. package/dist/collection/components/collapsible-section/collapsible-section.js +1 -1
  103. package/dist/collection/components/color-picker/color-picker-palette.js +2 -2
  104. package/dist/collection/components/color-picker/color-picker.js +1 -1
  105. package/dist/collection/components/date-picker/date-formatter.js +147 -1
  106. package/dist/collection/components/date-picker/date-picker.css +112 -0
  107. package/dist/collection/components/date-picker/date-picker.js +307 -26
  108. package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +77 -30
  109. package/dist/collection/components/date-picker/pickers/month-picker.js +3 -0
  110. package/dist/collection/components/date-picker/pickers/picker.js +37 -1
  111. package/dist/collection/components/date-picker/pickers/quarter-picker.js +3 -0
  112. package/dist/collection/components/date-picker/pickers/week-picker.js +21 -0
  113. package/dist/collection/components/date-picker/pickers/year-picker.js +24 -0
  114. package/dist/collection/components/dialog/dialog.js +2 -2
  115. package/dist/collection/components/dock/dock.js +2 -2
  116. package/dist/collection/components/drag-handle/drag-handle.js +1 -1
  117. package/dist/collection/components/email-viewer/email-viewer.js +1 -1
  118. package/dist/collection/components/file/file.js +1 -1
  119. package/dist/collection/components/file-dropzone/file-dropzone.js +1 -1
  120. package/dist/collection/components/file-input/file-input.js +1 -1
  121. package/dist/collection/components/flex-container/flex-container.js +1 -1
  122. package/dist/collection/components/form/fields/schema-field.js +19 -1
  123. package/dist/collection/components/form/form.js +30 -3
  124. package/dist/collection/components/form/form.test-schemas.js +11 -0
  125. package/dist/collection/components/form/invalid-input.js +14 -0
  126. package/dist/collection/components/form/widgets/date-picker.js +3 -1
  127. package/dist/collection/components/form-header/form-header.js +1 -1
  128. package/dist/collection/components/grid/grid.js +1 -1
  129. package/dist/collection/components/header/header.js +1 -1
  130. package/dist/collection/components/help/help-content.js +1 -1
  131. package/dist/collection/components/help/help.js +2 -2
  132. package/dist/collection/components/helper-line/helper-line.js +2 -2
  133. package/dist/collection/components/hotkey/hotkey.js +1 -1
  134. package/dist/collection/components/icon/icon.js +1 -1
  135. package/dist/collection/components/icon-button/icon-button.js +1 -1
  136. package/dist/collection/components/info-tile/info-tile.js +2 -2
  137. package/dist/collection/components/input-field/input-field.js +1 -1
  138. package/dist/collection/components/list/list.js +1 -1
  139. package/dist/collection/components/list-item/list-item.js +2 -2
  140. package/dist/collection/components/list-item/menu-item-meta/menu-item-meta.js +1 -1
  141. package/dist/collection/components/markdown/markdown.js +1 -1
  142. package/dist/collection/components/masonry-layout/masonry-layout.js +1 -1
  143. package/dist/collection/components/menu/menu.js +1 -1
  144. package/dist/collection/components/menu-list/menu-list.js +1 -1
  145. package/dist/collection/components/menu-surface/menu-surface.js +1 -1
  146. package/dist/collection/components/notched-outline/notched-outline.js +1 -1
  147. package/dist/collection/components/pagination/pagination.js +1 -1
  148. package/dist/collection/components/picker/picker.js +1 -1
  149. package/dist/collection/components/popover/popover.js +1 -1
  150. package/dist/collection/components/popover-surface/popover-surface.js +1 -1
  151. package/dist/collection/components/portal/portal.js +1 -1
  152. package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
  153. package/dist/collection/components/radio-button-group/radio-button.js +2 -2
  154. package/dist/collection/components/resize-handle/resize-handle.js +1 -1
  155. package/dist/collection/components/scroller/scroller.js +2 -2
  156. package/dist/collection/components/select/select.js +1 -1
  157. package/dist/collection/components/shortcut/shortcut.js +1 -1
  158. package/dist/collection/components/side-panel/side-panel.js +1 -1
  159. package/dist/collection/components/slider/slider.js +3 -3
  160. package/dist/collection/components/snackbar/snackbar.js +2 -2
  161. package/dist/collection/components/spinner/spinner.js +1 -1
  162. package/dist/collection/components/split-button/split-button.js +2 -2
  163. package/dist/collection/components/switch/switch.js +1 -1
  164. package/dist/collection/components/tab-bar/tab-bar.js +1 -1
  165. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  166. package/dist/collection/components/table/table.js +2 -2
  167. package/dist/collection/components/text-editor/link-menu/editor-link-menu.js +3 -3
  168. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
  169. package/dist/collection/components/text-editor/text-editor.js +1 -1
  170. package/dist/collection/components/tooltip/tooltip-content.js +1 -1
  171. package/dist/collection/components/tooltip/tooltip.js +2 -2
  172. package/dist/collection/translations/da.js +2 -0
  173. package/dist/collection/translations/de.js +2 -0
  174. package/dist/collection/translations/en.js +2 -0
  175. package/dist/collection/translations/fi.js +2 -0
  176. package/dist/collection/translations/fr.js +2 -0
  177. package/dist/collection/translations/nl.js +2 -0
  178. package/dist/collection/translations/no.js +2 -0
  179. package/dist/collection/translations/sv.js +2 -0
  180. package/dist/esm/{checkbox.template-CAja2LKZ.js → checkbox.template-BJJmiDJP.js} +1 -1
  181. package/dist/esm/dom-B9Ofc5RB.js +30 -0
  182. package/dist/esm/{image.template-BGjw97m_.js → image.template-Cw2q5IS7.js} +1 -1
  183. package/dist/esm/{index-BU9IJqli.js → index-D3SUrFhp.js} +12 -1
  184. package/dist/esm/{keyboard-navigation-BF7IKmnG.js → keyboard-navigation-DeMxdkNf.js} +1 -1
  185. package/dist/esm/lime-elements.js +3 -3
  186. package/dist/esm/limel-3d-hover-effect-glow.entry.js +2 -2
  187. package/dist/esm/limel-action-bar_3.entry.js +5 -6
  188. package/dist/esm/limel-ai-avatar.entry.js +3 -4
  189. package/dist/esm/limel-badge_7.entry.js +12 -12
  190. package/dist/esm/limel-banner.entry.js +2 -2
  191. package/dist/esm/limel-button-group.entry.js +2 -2
  192. package/dist/esm/limel-button.entry.js +3 -3
  193. package/dist/esm/limel-callout.entry.js +3 -4
  194. package/dist/esm/limel-card.entry.js +3 -3
  195. package/dist/esm/limel-chart.entry.js +779 -177
  196. package/dist/esm/limel-checkbox.entry.js +3 -3
  197. package/dist/esm/limel-chip-set.entry.js +3 -4
  198. package/dist/esm/limel-chip_2.entry.js +4 -5
  199. package/dist/esm/limel-circular-progress.entry.js +2 -2
  200. package/dist/esm/limel-code-diff.entry.js +3 -4
  201. package/dist/esm/limel-code-editor.entry.js +3 -4
  202. package/dist/esm/limel-collapsible-section.entry.js +3 -4
  203. package/dist/esm/limel-color-picker-palette.entry.js +3 -3
  204. package/dist/esm/limel-color-picker.entry.js +2 -2
  205. package/dist/esm/limel-config.entry.js +1 -1
  206. package/dist/esm/limel-date-picker.entry.js +436 -25
  207. package/dist/esm/limel-dialog.entry.js +3 -3
  208. package/dist/esm/limel-dock-button.entry.js +1 -1
  209. package/dist/esm/limel-dock.entry.js +4 -5
  210. package/dist/esm/limel-drag-handle_2.entry.js +5 -6
  211. package/dist/esm/limel-dynamic-label.entry.js +1 -1
  212. package/dist/esm/limel-email-viewer.entry.js +3 -4
  213. package/dist/esm/limel-file-dropzone_2.entry.js +3 -3
  214. package/dist/esm/limel-file-viewer.entry.js +3 -4
  215. package/dist/esm/limel-file.entry.js +3 -4
  216. package/dist/esm/limel-flatpickr-adapter.entry.js +118 -10
  217. package/dist/esm/limel-flex-container.entry.js +2 -2
  218. package/dist/esm/limel-form-header.entry.js +2 -2
  219. package/dist/esm/limel-form.entry.js +66 -6
  220. package/dist/esm/limel-grid.entry.js +2 -2
  221. package/dist/esm/limel-header.entry.js +2 -2
  222. package/dist/esm/limel-help_2.entry.js +4 -4
  223. package/dist/esm/limel-helper-line_3.entry.js +5 -5
  224. package/dist/esm/limel-hotkey_4.entry.js +6 -6
  225. package/dist/esm/limel-icon-button.entry.js +2 -2
  226. package/dist/esm/limel-icon.entry.js +2 -2
  227. package/dist/esm/limel-info-tile.entry.js +3 -3
  228. package/dist/esm/limel-list-item.entry.js +7 -8
  229. package/dist/esm/limel-markdown.entry.js +2 -2
  230. package/dist/esm/limel-masonry-layout.entry.js +2 -2
  231. package/dist/esm/limel-menu-item-meta.entry.js +2 -2
  232. package/dist/esm/limel-pagination-jump.entry.js +2 -3
  233. package/dist/esm/limel-pagination.entry.js +3 -4
  234. package/dist/esm/limel-picker.entry.js +5 -5
  235. package/dist/esm/limel-popover_2.entry.js +3 -3
  236. package/dist/esm/limel-profile-picture.entry.js +3 -4
  237. package/dist/esm/limel-progress-flow-item.entry.js +1 -1
  238. package/dist/esm/limel-progress-flow.entry.js +1 -1
  239. package/dist/esm/limel-prosemirror-adapter.entry.js +3 -4
  240. package/dist/esm/limel-radio-button-group.entry.js +2 -2
  241. package/dist/esm/limel-radio-button.entry.js +3 -3
  242. package/dist/esm/limel-resize-handle.entry.js +3 -4
  243. package/dist/esm/limel-select.entry.js +3 -3
  244. package/dist/esm/limel-shortcut.entry.js +2 -2
  245. package/dist/esm/limel-side-panel.entry.js +3 -4
  246. package/dist/esm/limel-slider.entry.js +5 -6
  247. package/dist/esm/limel-snackbar.entry.js +4 -5
  248. package/dist/esm/limel-split-button.entry.js +3 -3
  249. package/dist/esm/limel-switch.entry.js +2 -2
  250. package/dist/esm/limel-tab-bar.entry.js +3 -3
  251. package/dist/esm/limel-tab-panel.entry.js +2 -2
  252. package/dist/esm/limel-table.entry.js +4 -5
  253. package/dist/esm/limel-text-editor-link-menu.entry.js +5 -6
  254. package/dist/esm/limel-text-editor.entry.js +2 -2
  255. package/dist/esm/{live-message-BQAYeNiX.js → live-message-BKB4vu28.js} +1 -30
  256. package/dist/esm/loader.js +3 -3
  257. package/dist/esm/{render-list-component-J1IzNpbv.js → render-list-component-CnMNjOaj.js} +1 -1
  258. package/dist/esm/{translations-D9ZGrMhe.js → translations--i932i_D.js} +70 -2
  259. package/dist/lime-elements/lime-elements.esm.js +1 -1
  260. package/dist/lime-elements/p--i932i_D.js +1 -0
  261. package/dist/lime-elements/p-07961d4f.entry.js +1 -0
  262. package/dist/lime-elements/p-099e9e1a.entry.js +1 -0
  263. package/dist/lime-elements/p-0dd5cb25.entry.js +1 -0
  264. package/dist/lime-elements/{p-40940a6c.entry.js → p-1d57370e.entry.js} +1 -1
  265. package/dist/lime-elements/p-1ef92aa3.entry.js +1 -0
  266. package/dist/lime-elements/p-1eff9347.entry.js +56 -0
  267. package/dist/lime-elements/{p-6053608a.entry.js → p-22458db2.entry.js} +2 -2
  268. package/dist/lime-elements/{p-db9cb7ef.entry.js → p-2520a91b.entry.js} +1 -1
  269. package/dist/lime-elements/{p-85318636.entry.js → p-25473848.entry.js} +1 -1
  270. package/dist/lime-elements/p-27000dfb.entry.js +1 -0
  271. package/dist/lime-elements/p-29800b71.entry.js +1 -0
  272. package/dist/lime-elements/{p-438fe49b.entry.js → p-2e1fd8c4.entry.js} +1 -1
  273. package/dist/lime-elements/p-2f6ee1b0.entry.js +1 -0
  274. package/dist/lime-elements/{p-c61e9b83.entry.js → p-427a3da3.entry.js} +1 -1
  275. package/dist/lime-elements/p-447a2633.entry.js +1 -0
  276. package/dist/lime-elements/{p-909466b8.entry.js → p-4c54780d.entry.js} +1 -1
  277. package/dist/lime-elements/p-4f81f0b4.entry.js +1 -0
  278. package/dist/lime-elements/{p-7d0ffc60.entry.js → p-5062b51a.entry.js} +1 -1
  279. package/dist/lime-elements/p-5295b4c7.entry.js +1 -0
  280. package/dist/lime-elements/p-5a1b7f4d.entry.js +1 -0
  281. package/dist/lime-elements/{p-a6387dc7.entry.js → p-5b9c1f8f.entry.js} +1 -1
  282. package/dist/lime-elements/p-5be1e9e8.entry.js +159 -0
  283. package/dist/lime-elements/p-5c6589aa.entry.js +1 -0
  284. package/dist/lime-elements/{p-3f7fa772.entry.js → p-5e7ca1fd.entry.js} +1 -1
  285. package/dist/lime-elements/{p-95a486c8.entry.js → p-5f66e497.entry.js} +1 -1
  286. package/dist/lime-elements/p-667759da.entry.js +1 -0
  287. package/dist/lime-elements/{p-48a412ed.entry.js → p-6a340609.entry.js} +1 -1
  288. package/dist/lime-elements/{p-a891f3e8.entry.js → p-6d3cde2e.entry.js} +1 -1
  289. package/dist/lime-elements/{p-f59447bf.entry.js → p-6e529563.entry.js} +1 -1
  290. package/dist/lime-elements/{p-c2056ebc.entry.js → p-743f014f.entry.js} +1 -1
  291. package/dist/lime-elements/{p-c6b3448c.entry.js → p-7aa034e2.entry.js} +1 -1
  292. package/dist/lime-elements/p-7b2ec934.entry.js +1 -0
  293. package/dist/lime-elements/p-7b99624f.entry.js +1 -0
  294. package/dist/lime-elements/p-7ea96b80.entry.js +1 -0
  295. package/dist/lime-elements/{p-e5abe390.entry.js → p-7fe1d9ad.entry.js} +1 -1
  296. package/dist/lime-elements/p-842694af.entry.js +1 -0
  297. package/dist/lime-elements/{p-d3f13124.entry.js → p-848aeaa6.entry.js} +1 -1
  298. package/dist/lime-elements/{p-1e0ced6a.entry.js → p-868a8b12.entry.js} +1 -1
  299. package/dist/lime-elements/p-891f6a07.entry.js +1 -0
  300. package/dist/lime-elements/{p-28957b5c.entry.js → p-8dcb9ef1.entry.js} +1 -1
  301. package/dist/lime-elements/p-92f79a62.entry.js +1 -0
  302. package/dist/lime-elements/p-93907698.entry.js +16 -0
  303. package/dist/lime-elements/{p-c0ebf7cc.entry.js → p-9b3c7341.entry.js} +1 -1
  304. package/dist/lime-elements/p-B9Ofc5RB.js +1 -0
  305. package/dist/lime-elements/{p-_1yBt1pG.js → p-BJrZuSu3.js} +1 -1
  306. package/dist/lime-elements/{p-Cadm4-WZ.js → p-BzHrLZdr.js} +1 -1
  307. package/dist/lime-elements/p-CMedqTpE.js +1 -0
  308. package/dist/lime-elements/{p-BU9IJqli.js → p-D3SUrFhp.js} +2 -2
  309. package/dist/lime-elements/p-DpXrxCh5.js +1 -0
  310. package/dist/lime-elements/p-DwxRLqY6.js +1 -0
  311. package/dist/lime-elements/{p-c8a34cef.entry.js → p-a0501e84.entry.js} +1 -1
  312. package/dist/lime-elements/p-a5419b44.entry.js +1 -0
  313. package/dist/lime-elements/{p-ce71c5b9.entry.js → p-abd612b3.entry.js} +1 -1
  314. package/dist/lime-elements/{p-f3b93ce8.entry.js → p-aeac9588.entry.js} +2 -2
  315. package/dist/lime-elements/p-b01e8af9.entry.js +1 -0
  316. package/dist/lime-elements/{p-f97ec7a5.entry.js → p-b08c9b52.entry.js} +1 -1
  317. package/dist/lime-elements/{p-54537c85.entry.js → p-b1f6412e.entry.js} +1 -1
  318. package/dist/lime-elements/{p-6ae093c8.entry.js → p-b3967ab3.entry.js} +1 -1
  319. package/dist/lime-elements/{p-5dce791c.entry.js → p-b8bfec0e.entry.js} +1 -1
  320. package/dist/lime-elements/p-ba4b44ad.entry.js +1 -0
  321. package/dist/lime-elements/{p-783fd221.entry.js → p-bf726f16.entry.js} +1 -1
  322. package/dist/lime-elements/p-c2f27d2a.entry.js +1 -0
  323. package/dist/lime-elements/{p-271662d4.entry.js → p-c3bd19ea.entry.js} +1 -1
  324. package/dist/lime-elements/p-cc560bbd.entry.js +1 -0
  325. package/dist/lime-elements/{p-0319f07f.entry.js → p-d2953c11.entry.js} +1 -1
  326. package/dist/lime-elements/{p-764d2f86.entry.js → p-d3d01dd4.entry.js} +1 -1
  327. package/dist/lime-elements/{p-4b75e653.entry.js → p-d9e6175b.entry.js} +1 -1
  328. package/dist/lime-elements/p-dab5421d.entry.js +1 -0
  329. package/dist/lime-elements/p-dcaeefc9.entry.js +1 -0
  330. package/dist/lime-elements/{p-f71fbc9e.entry.js → p-df8aa135.entry.js} +4 -4
  331. package/dist/lime-elements/p-e2fb2af4.entry.js +1 -0
  332. package/dist/lime-elements/p-e929fc64.entry.js +1 -0
  333. package/dist/lime-elements/p-ea02dade.entry.js +1 -0
  334. package/dist/lime-elements/p-ecd633cb.entry.js +1 -0
  335. package/dist/lime-elements/{p-39d1e157.entry.js → p-f5cd53e8.entry.js} +1 -1
  336. package/dist/lime-elements/{p-8fe28845.entry.js → p-f7cae25a.entry.js} +1 -1
  337. package/dist/types/components/chart/chart.d.ts +59 -8
  338. package/dist/types/components/chart/chart.types.d.ts +23 -0
  339. package/dist/types/components/chart/options.d.ts +83 -8
  340. package/dist/types/components/chart/scale.d.ts +10 -0
  341. package/dist/types/components/chart/series.d.ts +71 -0
  342. package/dist/types/components/date-picker/date-formatter.d.ts +12 -0
  343. package/dist/types/components/date-picker/date-picker.d.ts +59 -3
  344. package/dist/types/components/date-picker/flatpickr-adapter/flatpickr-adapter.d.ts +13 -2
  345. package/dist/types/components/date-picker/pickers/month-picker.d.ts +1 -0
  346. package/dist/types/components/date-picker/pickers/picker.d.ts +8 -1
  347. package/dist/types/components/date-picker/pickers/quarter-picker.d.ts +1 -0
  348. package/dist/types/components/date-picker/pickers/week-picker.d.ts +4 -0
  349. package/dist/types/components/date-picker/pickers/year-picker.d.ts +7 -0
  350. package/dist/types/components/form/fields/schema-field.d.ts +2 -0
  351. package/dist/types/components/form/form.d.ts +2 -0
  352. package/dist/types/components/form/form.test-schemas.d.ts +1 -0
  353. package/dist/types/components/form/invalid-input.d.ts +14 -0
  354. package/dist/types/components/form/widgets/date-picker.d.ts +1 -0
  355. package/dist/types/components.d.ts +73 -26
  356. package/dist/types/translations/da.d.ts +2 -0
  357. package/dist/types/translations/de.d.ts +2 -0
  358. package/dist/types/translations/en.d.ts +2 -0
  359. package/dist/types/translations/fi.d.ts +2 -0
  360. package/dist/types/translations/fr.d.ts +2 -0
  361. package/dist/types/translations/nl.d.ts +2 -0
  362. package/dist/types/translations/no.d.ts +2 -0
  363. package/dist/types/translations/sv.d.ts +2 -0
  364. package/package.json +3 -3
  365. package/dist/cjs/language-s0bKUCvO.js +0 -58
  366. package/dist/esm/language-VamkUr90.js +0 -55
  367. package/dist/lime-elements/p-0a7cbdc3.entry.js +0 -1
  368. package/dist/lime-elements/p-0f96e94d.entry.js +0 -1
  369. package/dist/lime-elements/p-1a0c5e45.entry.js +0 -1
  370. package/dist/lime-elements/p-401d5c92.entry.js +0 -1
  371. package/dist/lime-elements/p-430db3b9.entry.js +0 -1
  372. package/dist/lime-elements/p-43b62587.entry.js +0 -1
  373. package/dist/lime-elements/p-48dccb83.entry.js +0 -1
  374. package/dist/lime-elements/p-5c918155.entry.js +0 -1
  375. package/dist/lime-elements/p-66101ed6.entry.js +0 -1
  376. package/dist/lime-elements/p-7ab72b52.entry.js +0 -1
  377. package/dist/lime-elements/p-8d602078.entry.js +0 -1
  378. package/dist/lime-elements/p-8d9a2a22.entry.js +0 -1
  379. package/dist/lime-elements/p-8de4f0f3.entry.js +0 -1
  380. package/dist/lime-elements/p-8e80a884.entry.js +0 -56
  381. package/dist/lime-elements/p-99984c66.entry.js +0 -1
  382. package/dist/lime-elements/p-9d46f720.entry.js +0 -1
  383. package/dist/lime-elements/p-9e2b426c.entry.js +0 -1
  384. package/dist/lime-elements/p-C9dBa_Im.js +0 -1
  385. package/dist/lime-elements/p-Cw7VQSGU.js +0 -1
  386. package/dist/lime-elements/p-N9vxZMhe.js +0 -1
  387. package/dist/lime-elements/p-VamkUr90.js +0 -1
  388. package/dist/lime-elements/p-b1c7033b.entry.js +0 -16
  389. package/dist/lime-elements/p-b5451350.entry.js +0 -1
  390. package/dist/lime-elements/p-c75f3b0d.entry.js +0 -1
  391. package/dist/lime-elements/p-ca4247c4.entry.js +0 -1
  392. package/dist/lime-elements/p-cf2d43c7.entry.js +0 -1
  393. package/dist/lime-elements/p-d53421af.entry.js +0 -1
  394. package/dist/lime-elements/p-d8901e39.entry.js +0 -1
  395. package/dist/lime-elements/p-d89553b3.entry.js +0 -1
  396. package/dist/lime-elements/p-d93b8ce0.entry.js +0 -1
  397. package/dist/lime-elements/p-e97340c4.entry.js +0 -1
  398. package/dist/lime-elements/p-eF09GxA_.js +0 -1
  399. package/dist/lime-elements/p-ec0c113d.entry.js +0 -1
  400. package/dist/lime-elements/p-f036ad27.entry.js +0 -1
  401. package/dist/lime-elements/p-f197000b.entry.js +0 -159
  402. package/dist/lime-elements/p-f5bb17eb.entry.js +0 -1
  403. package/dist/lime-elements/p-f6bc6658.entry.js +0 -1
  404. package/dist/lime-elements/p-fa1aa440.entry.js +0 -1
@@ -1,15 +1,165 @@
1
- import { r as registerInstance, c as createEvent, h, a as getElement } from './index-BU9IJqli.js';
1
+ import { r as registerInstance, c as createEvent, h, a as getElement } from './index-D3SUrFhp.js';
2
+ import { c as createLiveMessage } from './live-message-BKB4vu28.js';
2
3
  import { c as createRandomString } from './random-string-BrjD-ITe.js';
3
4
  import { i as isIOSDevice, a as isAndroidDevice } from './device-B-tmXAXV.js';
4
5
  import './sv-DpsDSi7k.js';
5
6
  import { m as moment } from './moment-_DadZLWp.js';
6
- import { a as getPrimarySubtag } from './language-VamkUr90.js';
7
+ import { a as getPrimarySubtag, t as translations } from './translations--i932i_D.js';
7
8
  import { M as MDCTextField } from './component-CVihTrav.js';
9
+ import './debounce-B67JMchz.js';
10
+ import './isObject-BJQylLSL.js';
11
+ import './toNumber-D6JYpQI9.js';
12
+ import './isSymbol-ClAke5ga.js';
13
+ import './isObjectLike-oiMYqRQ0.js';
8
14
  import './_commonjsHelpers-B85MJLTf.js';
9
15
  import './ponyfill-6YuZiAPi.js';
10
16
  import './component-CrjPGt1I.js';
11
17
  import './component-CyFeUQ0l.js';
12
18
 
19
+ // Literals first, so an `l` inside `[...]` is not expanded. Then longest
20
+ // first, since alternation takes the first match, not the longest.
21
+ const LONG_DATE_FORMAT_TOKENS = /\[[^\][]*\]|LTS|LLLL|LLL|LL|LT|L|lts|llll|lll|ll|lt|l/g;
22
+ // Literals, tokens (runs of one repeated letter) and separators.
23
+ const FORMAT_PARTS = /\[[^\][]*\]|([a-zA-Z])\1*|[^a-zA-Z[]+/g;
24
+ // Tokens moment parses leniently as one or two digits.
25
+ const ONE_OR_TWO_DIGIT_TOKENS = /^([MDHhkmsWw])\1?$/;
26
+ // Includes the narrow no-break space `Intl` puts before AM/PM.
27
+ const WHITESPACE = /\s+/g;
28
+ // ` - ` or `, ` between a date and a time. Separators inside a date, such
29
+ // as `-` in `YYYY-MM-DD`, must still be typed as in the format.
30
+ const DATE_TIME_JOINER = / ?, ?| - /g;
31
+ const TIME_SEPARATOR = /([Hhk]{1,2}|m{1,2})([:.])(?=m{1,2}|s{1,2})/g;
32
+ // Such as `[w]` in `[w] W GGGG`.
33
+ const WEEK_PREFIX = /^\[[^\][]*\]\s*(?=[Ww])/;
34
+ /**
35
+ * Expands localized tokens, e.g. `L` to `MM/DD/YYYY` for `en`.
36
+ * @param format - the moment format to expand, e.g. `L` or `L - LT`
37
+ * @param locale - the moment locale to expand it for
38
+ */
39
+ function expandLongDateFormatTokens(format, locale) {
40
+ if (!format) {
41
+ return format;
42
+ }
43
+ const localeData = moment.localeData(locale);
44
+ return format.replaceAll(LONG_DATE_FORMAT_TOKENS, (token) => {
45
+ if (token.startsWith('[')) {
46
+ return token;
47
+ }
48
+ return (localeData.longDateFormat(token) ||
49
+ token);
50
+ });
51
+ }
52
+ /**
53
+ * Accepts fewer digits than the format has, e.g. `1/24/20` for
54
+ * `MM/DD/YYYY`, but rejects text that leaves part of the format unmatched.
55
+ * Moment's lenient mode alone accepts "01" as a complete date.
56
+ *
57
+ * Times and weeks are accepted in more forms than their format, e.g.
58
+ * `15.30` for `HH:mm` and `v. 4 26` for `[w] W GGGG`.
59
+ * @param date - the raw text to parse
60
+ * @param format - the moment format to parse it against
61
+ * @param locale - the moment locale to parse it in
62
+ */
63
+ function parseComplete(date, format, locale) {
64
+ const text = normalizeSeparators(date);
65
+ const expandedFormat = normalizeSeparators(expandLongDateFormatTokens(format, locale));
66
+ for (const candidate of getTimeSeparatorVariants(expandedFormat)) {
67
+ const parsed = parseLeniently(text, candidate, locale);
68
+ if (parsed) {
69
+ return parsed;
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ function parseLeniently(date, format, locale) {
75
+ const [weekText, weekFormat] = dropWeekPrefix(date, format);
76
+ const text = pivotWeekYears(weekText, weekFormat);
77
+ const parsed = moment(text, weekFormat, locale, false);
78
+ if (!parsed.isValid()) {
79
+ return null;
80
+ }
81
+ const flags = parsed.parsingFlags();
82
+ if (flags.charsLeftOver > 0 ||
83
+ flags.unusedTokens.length > 0 ||
84
+ hasAmbiguousYear(text, weekFormat)) {
85
+ return null;
86
+ }
87
+ return parsed.toDate();
88
+ }
89
+ // Applied to both the text and the format, so they stay aligned.
90
+ function normalizeSeparators(text) {
91
+ return text
92
+ .trim()
93
+ .replaceAll(WHITESPACE, ' ')
94
+ .replaceAll(DATE_TIME_JOINER, ' ');
95
+ }
96
+ function getTimeSeparatorVariants(format) {
97
+ const swapped = format.replaceAll(TIME_SEPARATOR, (_, part, separator) => part + (separator === ':' ? '.' : ':'));
98
+ return swapped === format ? [format] : [format, swapped];
99
+ }
100
+ // Accepts any prefix, e.g. `v.`, `w` or none, for `[w] W GGGG`.
101
+ function dropWeekPrefix(date, format) {
102
+ if (!WEEK_PREFIX.test(format)) {
103
+ return [date, format];
104
+ }
105
+ return [date.replace(/^\D*/, ''), format.replace(WEEK_PREFIX, '')];
106
+ }
107
+ // Moment pivots a 2-digit `YYYY`, e.g. `26` to 2026, but not `GGGG`.
108
+ function pivotWeekYears(date, format) {
109
+ const twoDigitWeekYears = findYears(date, format).filter(({ token, start, end }) => token === 'GGGG' && end - start === 2);
110
+ return twoDigitWeekYears.reduceRight((text, { start, end }) => text.slice(0, start) +
111
+ moment.parseTwoDigitYear(text.slice(start, end)) +
112
+ text.slice(end), date);
113
+ }
114
+ // Lenient parsing reads a half-typed year such as "1/24/2" as year 2.
115
+ function hasAmbiguousYear(date, format) {
116
+ return findYears(date, format).some(({ start, end }) => {
117
+ const digitCount = end - start;
118
+ return digitCount !== 2 && digitCount !== 4;
119
+ });
120
+ }
121
+ function findYears(date, format) {
122
+ const formatParts = format.match(FORMAT_PARTS) || [];
123
+ const inputPattern = formatParts.map(formatPartToPattern).join('');
124
+ const match = new RegExp(`^${inputPattern}$`, 'd').exec(date);
125
+ if (!match) {
126
+ return [];
127
+ }
128
+ return formatParts.filter(isYearToken).map((token, index) => {
129
+ const [start, end] = match.indices[index + 1];
130
+ return { token: token, start: start, end: end };
131
+ });
132
+ }
133
+ function isYearToken(part) {
134
+ return part === 'YYYY' || part === 'GGGG';
135
+ }
136
+ /**
137
+ * Literals and separators are optional, since lenient parsing skips them
138
+ * when they are not typed, e.g. `01242026` for `MM/DD/YYYY`.
139
+ * @param part - a literal, token or separator of the format
140
+ */
141
+ function formatPartToPattern(part) {
142
+ if (part.startsWith('[')) {
143
+ return optional(part.slice(1, -1));
144
+ }
145
+ if (isYearToken(part)) {
146
+ return String.raw `(\d{1,4})`;
147
+ }
148
+ if (ONE_OR_TWO_DIGIT_TOKENS.test(part)) {
149
+ return String.raw `\d{1,2}`;
150
+ }
151
+ if (/^[a-zA-Z]+$/.test(part)) {
152
+ return '.+?';
153
+ }
154
+ // Moment matches each separator character on its own.
155
+ return [...part].map(optional).join('');
156
+ }
157
+ function optional(text) {
158
+ return `(?:${escapeRegExp(text)})?`;
159
+ }
160
+ function escapeRegExp(text) {
161
+ return text.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
162
+ }
13
163
  class DateFormatter {
14
164
  constructor(language = 'en') {
15
165
  this.language = language;
@@ -22,7 +172,9 @@ class DateFormatter {
22
172
  }
23
173
  parseDate(date, dateFormat) {
24
174
  if (date) {
25
- return moment(date, dateFormat).toDate();
175
+ // Importing the moment locales changes moment's global default
176
+ // locale, so tokens like `L` must be parsed with ours.
177
+ return parseComplete(date, dateFormat, this.getLanguage());
26
178
  }
27
179
  return null;
28
180
  }
@@ -46,7 +198,7 @@ class DateFormatter {
46
198
  }
47
199
  }
48
200
 
49
- const datePickerCss = () => `:host(limel-date-picker){position:relative}limel-input-field[disabled],limel-input-field[readonly]{pointer-events:none}`;
201
+ const datePickerCss = () => `@charset "UTF-8";:host(limel-date-picker){position:relative}limel-input-field[disabled],limel-input-field[readonly]{pointer-events:none}.error-message{position:absolute;width:0;height:0;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap}`;
50
202
 
51
203
  // tslint:disable:no-duplicate-string
52
204
  const nativeTypeForConsumerType = {
@@ -73,6 +225,7 @@ const DatePicker = class {
73
225
  constructor(hostRef) {
74
226
  registerInstance(this, hostRef);
75
227
  this.change = createEvent(this, "change", 7);
228
+ this.invalidInput = createEvent(this, "invalidInput", 7);
76
229
  /**
77
230
  * Set to `true` to disable the field.
78
231
  * Use `disabled` to indicate that the field can normally be interacted
@@ -88,7 +241,8 @@ const DatePicker = class {
88
241
  this.readonly = false;
89
242
  /**
90
243
  * Set to `true` to indicate that the current value of the date picker is
91
- * invalid.
244
+ * invalid. Typed text that is not a valid date is flagged by the
245
+ * component itself, whatever this is set to.
92
246
  */
93
247
  this.invalid = false;
94
248
  /**
@@ -105,15 +259,85 @@ const DatePicker = class {
105
259
  */
106
260
  this.language = 'en';
107
261
  this.showPortal = false;
262
+ this.parseError = false;
263
+ this.isEditing = false;
108
264
  this.portalId = `date-picker-calendar-${createRandomString()}`;
265
+ // Screen readers don't announce a changed description of the focused
266
+ // field, so the error is spoken through a live region.
267
+ this.errorMessage = createLiveMessage(() => this.parseError ? this.getHelperText() : '');
109
268
  this.documentClickListener = (event) => {
110
269
  if (event.composedPath().includes(this.textField)) {
111
270
  return;
112
271
  }
113
272
  const element = document.querySelector(`#${this.portalId}`);
114
- if (!element.contains(event.target)) {
115
- this.hideCalendar();
273
+ if (element.contains(event.target)) {
274
+ return;
275
+ }
276
+ // The input's own blur, which follows, closes the calendar with the
277
+ // final typed text.
278
+ if (this.textField.shadowRoot.activeElement === this.inputElement) {
279
+ return;
116
280
  }
281
+ this.hideCalendar();
282
+ };
283
+ this.handleKeyDown = (event) => {
284
+ var _a;
285
+ if (this.disabled || this.readonly) {
286
+ return;
287
+ }
288
+ this.discardedText = undefined;
289
+ const handlers = {
290
+ ArrowDown: this.handleArrowDown,
291
+ Escape: this.handleEscape,
292
+ Enter: this.handleEnter,
293
+ Backspace: this.handleDelete,
294
+ Delete: this.handleDelete,
295
+ };
296
+ (_a = handlers[event.key]) === null || _a === void 0 ? void 0 : _a.call(handlers, event);
297
+ };
298
+ this.handleArrowDown = async (event) => {
299
+ var _a;
300
+ event.preventDefault();
301
+ if (!this.showPortal) {
302
+ this.showPortal = true;
303
+ return;
304
+ }
305
+ await ((_a = this.datePickerCalendar) === null || _a === void 0 ? void 0 : _a.focusDay());
306
+ };
307
+ // The first Escape discards typed text, the next closes the calendar.
308
+ // Stopping it keeps a surrounding dialog open.
309
+ this.handleEscape = (event) => {
310
+ if (this.hasTypedText()) {
311
+ this.discardTypedText();
312
+ }
313
+ else if (this.showPortal) {
314
+ this.showPortal = false;
315
+ }
316
+ else {
317
+ return;
318
+ }
319
+ event.preventDefault();
320
+ event.stopPropagation();
321
+ };
322
+ // Reads the input, since the input field emits its text debounced.
323
+ this.handleEnter = () => {
324
+ var _a, _b;
325
+ if (!this.acceptsTypedInput()) {
326
+ return;
327
+ }
328
+ const currentText = (_b = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';
329
+ this.rawInputValue = currentText;
330
+ if (currentText !== '' && !this.parseText(currentText)) {
331
+ this.parseError = true;
332
+ return;
333
+ }
334
+ this.commitTypedText();
335
+ };
336
+ this.handleDelete = () => {
337
+ if (this.acceptsTypedInput() || !this.value) {
338
+ return;
339
+ }
340
+ this.clearValue();
117
341
  };
118
342
  this.formatValue = (value) => this.dateFormatter.formatDate(value, this.internalFormat);
119
343
  this.handleCalendarChange = this.handleCalendarChange.bind(this);
@@ -127,6 +351,8 @@ const DatePicker = class {
127
351
  this.nativeChangeHandler = this.nativeChangeHandler.bind(this);
128
352
  this.preventBlurFromCalendarContainer =
129
353
  this.preventBlurFromCalendarContainer.bind(this);
354
+ this.commitTypedText = this.commitTypedText.bind(this);
355
+ this.handleInputBlur = this.handleInputBlur.bind(this);
130
356
  }
131
357
  componentWillLoad() {
132
358
  this.useNative = !this.readonly && (isIOSDevice() || isAndroidDevice());
@@ -136,7 +362,28 @@ const DatePicker = class {
136
362
  this.updateInternalFormatAndType();
137
363
  }
138
364
  disconnectedCallback() {
365
+ var _a;
139
366
  this.removeDocumentListeners();
367
+ (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('blur', this.handleInputBlur);
368
+ this.errorMessage.update.cancel();
369
+ }
370
+ // Consumers such as `limel-form` pass a new `Date` on every render.
371
+ watchValue(newValue, oldValue) {
372
+ if ((newValue === null || newValue === void 0 ? void 0 : newValue.getTime()) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.getTime())) {
373
+ return;
374
+ }
375
+ this.resetTypedText();
376
+ }
377
+ watchParseError() {
378
+ this.errorMessage.update();
379
+ this.invalidInput.emit(this.parseError ? this.getInvalidInputMessage() : null);
380
+ }
381
+ watchFormatInputs() {
382
+ this.resetTypedText();
383
+ }
384
+ watchLanguage() {
385
+ this.dateFormatter = new DateFormatter(this.language);
386
+ this.resetTypedText();
140
387
  }
141
388
  render() {
142
389
  const inputProps = {
@@ -145,24 +392,56 @@ const DatePicker = class {
145
392
  if (this.value && !this.readonly && !this.disabled) {
146
393
  inputProps.trailingIcon = 'clear_symbol';
147
394
  }
148
- const helperText = this.disabled || this.readonly ? undefined : this.helperText;
395
+ const helperText = this.getHelperText();
149
396
  if (this.useNative) {
150
397
  return (h("limel-input-field", { disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, helperText: helperText, required: this.required, value: this.formatValue(this.value), type: this.nativeType, onChange: this.nativeChangeHandler }));
151
398
  }
152
399
  const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
153
400
  const formatter = this.formatter || this.formatValue;
154
401
  return [
155
- h("limel-input-field", Object.assign({ disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: helperText, required: this.required, value: this.value ? formatter(this.value) : '', onFocus: this.showCalendar, onBlur: this.hideCalendar, onClick: this.onInputClick, onChange: this.handleInputElementChange, ref: (el) => (this.textField = el) }, inputProps)),
156
- h("limel-portal", { containerId: this.portalId, visible: this.showPortal, containerStyle: { 'z-index': dropdownZIndex } }, h("limel-flatpickr-adapter", { format: this.internalFormat, language: this.language, type: this.type, value: this.value, ref: (el) => (this.datePickerCalendar = el), isOpen: this.showPortal, formatter: formatter, onChange: this.handleCalendarChange })),
402
+ h("limel-input-field", Object.assign({ disabled: this.disabled, readonly: this.readonly, invalid: this.invalid || this.parseError, label: this.label, placeholder: this.placeholder, helperText: helperText, required: this.required, value: this.getDisplayValue(formatter), onFocus: this.showCalendar, onBlur: this.hideCalendar, onClick: this.onInputClick, onChange: this.handleInputElementChange, onKeyDown: this.handleKeyDown, ref: (el) => (this.textField = el) }, inputProps)),
403
+ h("span", { class: "error-message", "aria-live": "polite", ref: this.errorMessage.setElement }),
404
+ h("limel-portal", { containerId: this.portalId, visible: this.showPortal, containerStyle: { 'z-index': dropdownZIndex } }, h("limel-flatpickr-adapter", { format: this.internalFormat, language: this.language, type: this.type, value: this.value, previewValue: this.previewValue, ref: (el) => (this.datePickerCalendar = el), isOpen: this.showPortal, onChange: this.handleCalendarChange })),
157
405
  ];
158
406
  }
407
+ getDisplayValue(formatter) {
408
+ if (this.rawInputValue !== undefined) {
409
+ return this.rawInputValue;
410
+ }
411
+ if (!this.value) {
412
+ return '';
413
+ }
414
+ return this.isEditing && this.acceptsTypedInput()
415
+ ? this.formatValue(this.value)
416
+ : formatter(this.value);
417
+ }
418
+ acceptsTypedInput() {
419
+ return !this.formatter || !!this.format;
420
+ }
421
+ getHelperText() {
422
+ if (this.parseError) {
423
+ return this.getInvalidInputMessage();
424
+ }
425
+ if (this.disabled || this.readonly) {
426
+ return undefined;
427
+ }
428
+ return this.helperText;
429
+ }
430
+ getInvalidInputMessage() {
431
+ const key = this.type === 'time'
432
+ ? 'date-picker.invalid-time-format'
433
+ : 'date-picker.invalid-format';
434
+ return translations.get(key, this.language, {
435
+ example: this.formatValue(new Date()),
436
+ });
437
+ }
159
438
  updateInternalFormatAndType() {
160
439
  this.nativeType = nativeTypeForConsumerType[this.type || 'default'];
161
440
  this.nativeFormat = nativeFormatForType[this.nativeType];
162
441
  if (this.useNative) {
163
442
  this.internalFormat = this.nativeFormat;
164
443
  }
165
- else if (this.formatter || this.format) {
444
+ else if (this.format) {
166
445
  this.internalFormat = this.format;
167
446
  }
168
447
  else {
@@ -171,19 +450,27 @@ const DatePicker = class {
171
450
  }
172
451
  nativeChangeHandler(event) {
173
452
  event.stopPropagation();
174
- const date = this.dateFormatter.parseDate(event.detail, this.internalFormat);
175
- this.change.emit(date);
453
+ if (event.detail === '') {
454
+ this.clearValue();
455
+ return;
456
+ }
457
+ const date = this.parseText(event.detail);
458
+ if (date) {
459
+ this.change.emit(date);
460
+ }
176
461
  }
177
462
  showCalendar(event) {
178
463
  if (this.disabled || this.readonly) {
179
464
  event.stopPropagation();
180
465
  return;
181
466
  }
467
+ this.isEditing = true;
182
468
  this.showPortal = true;
183
- const inputElement = this.textField.shadowRoot.querySelector('input');
184
- setTimeout(() => {
185
- this.datePickerCalendar.inputElement = inputElement;
186
- }, 0);
469
+ this.setUpInputElement();
470
+ // Wait for the adapter to render. This creates the calendar.
471
+ queueMicrotask(() => {
472
+ this.datePickerCalendar.inputElement = this.inputElement;
473
+ });
187
474
  event.stopPropagation();
188
475
  document.addEventListener('mousedown', this.documentClickListener, {
189
476
  passive: true,
@@ -192,6 +479,25 @@ const DatePicker = class {
192
479
  capture: true,
193
480
  });
194
481
  }
482
+ // Tabbing to the clear icon doesn't blur the input field, only its
483
+ // input. Its `readonly` prop would also stop the calendar from opening.
484
+ setUpInputElement() {
485
+ this.inputElement = this.textField.shadowRoot.querySelector('input');
486
+ this.inputElement.readOnly = !this.acceptsTypedInput();
487
+ this.inputElement.addEventListener('blur', this.handleInputBlur);
488
+ }
489
+ handleInputBlur(event) {
490
+ const nextFocus = event.relatedTarget;
491
+ this.commitTypedText();
492
+ if (!nextFocus) {
493
+ return;
494
+ }
495
+ requestAnimationFrame(() => {
496
+ if (!nextFocus.isConnected) {
497
+ this.inputElement.focus();
498
+ }
499
+ });
500
+ }
195
501
  preventBlurFromCalendarContainer(event) {
196
502
  // We don't want the input element to lose focus when we pick
197
503
  // a date in the calendar container.
@@ -203,6 +509,8 @@ const DatePicker = class {
203
509
  }
204
510
  }
205
511
  hideCalendar() {
512
+ this.isEditing = false;
513
+ this.commitTypedText();
206
514
  setTimeout(() => {
207
515
  this.showPortal = false;
208
516
  }, 0);
@@ -225,15 +533,21 @@ const DatePicker = class {
225
533
  }
226
534
  const mdcTextField = new MDCTextField(root);
227
535
  mdcTextField.getDefaultFoundation().deactivateFocus();
228
- mdcTextField.valid = !this.invalid;
536
+ mdcTextField.valid = !(this.invalid || this.parseError);
537
+ // Removes the listeners but keeps the classes set above.
538
+ mdcTextField.destroy();
229
539
  }
230
540
  handleCalendarChange(event) {
231
- const date = event.detail;
541
+ var _a;
232
542
  event.stopPropagation();
543
+ // Reset before hiding, or text typed earlier is committed over the
544
+ // pick. Preview the pick until the consumer echoes it back.
545
+ this.resetTypedText();
546
+ this.previewValue = (_a = event.detail) !== null && _a !== void 0 ? _a : undefined;
233
547
  if (this.pickerIsAutoClosing()) {
234
548
  this.hideCalendar();
235
549
  }
236
- this.change.emit(date);
550
+ this.change.emit(event.detail);
237
551
  }
238
552
  onInputClick(event) {
239
553
  if (this.disabled || this.readonly || this.showPortal) {
@@ -242,22 +556,119 @@ const DatePicker = class {
242
556
  this.showCalendar(event);
243
557
  }
244
558
  handleInputElementChange(event) {
245
- if (this.disabled || this.readonly) {
246
- event.stopPropagation();
559
+ event.stopPropagation();
560
+ if (this.disabled || this.readonly || !this.acceptsTypedInput()) {
247
561
  return;
248
562
  }
249
- if (event.detail === '') {
250
- this.clearValue();
563
+ const text = event.detail;
564
+ if (text === this.discardedText) {
565
+ return;
251
566
  }
252
- event.stopPropagation();
567
+ const date = text === '' ? null : this.parseText(text);
568
+ this.rawInputValue = text;
569
+ this.previewValue = date !== null && date !== void 0 ? date : undefined;
570
+ // Half-typed text is only flagged on commit.
571
+ if (date || text === '') {
572
+ this.parseError = false;
573
+ }
574
+ }
575
+ hasTypedText() {
576
+ var _a;
577
+ return (this.rawInputValue !== undefined ||
578
+ ((_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.value) !== this.getCommittedText());
579
+ }
580
+ // The input field only rewrites its text when its `value` changes.
581
+ discardTypedText() {
582
+ var _a;
583
+ this.discardedText = (_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.value;
584
+ this.resetTypedText();
585
+ if (this.inputElement) {
586
+ this.inputElement.value = this.getCommittedText();
587
+ }
588
+ }
589
+ getCommittedText() {
590
+ return this.getDisplayValue(this.formatter || this.formatValue);
591
+ }
592
+ commitTypedText() {
593
+ const text = this.rawInputValue;
594
+ if (text === undefined || text === this.committedText) {
595
+ return;
596
+ }
597
+ const currentText = this.value ? this.formatValue(this.value) : '';
598
+ if (text === currentText) {
599
+ this.resetTypedText();
600
+ return;
601
+ }
602
+ if (text === '') {
603
+ this.commitEmptyText();
604
+ return;
605
+ }
606
+ this.commitDate(text);
607
+ }
608
+ commitEmptyText() {
609
+ this.parseError = false;
610
+ if (this.value) {
611
+ this.emitCommitted('', null);
612
+ }
613
+ else {
614
+ this.rawInputValue = undefined;
615
+ }
616
+ }
617
+ commitDate(text) {
618
+ var _a;
619
+ const date = this.parseText(text);
620
+ if (!date) {
621
+ this.parseError = true;
622
+ return;
623
+ }
624
+ if (date.getTime() === ((_a = this.value) === null || _a === void 0 ? void 0 : _a.getTime())) {
625
+ this.resetTypedText();
626
+ return;
627
+ }
628
+ this.parseError = false;
629
+ this.emitCommitted(text, date);
630
+ }
631
+ // Keeps `rawInputValue` until `watchValue` resets it, or the old value
632
+ // flashes.
633
+ emitCommitted(text, date) {
634
+ this.committedText = text;
635
+ this.change.emit(date);
636
+ }
637
+ parseText(text) {
638
+ const date = this.dateFormatter.parseDate(text, this.internalFormat);
639
+ return date && !Number.isNaN(date.getTime()) ? date : null;
640
+ }
641
+ resetTypedText() {
642
+ this.parseError = false;
643
+ this.committedText = undefined;
644
+ this.rawInputValue = undefined;
645
+ this.previewValue = undefined;
253
646
  }
254
647
  pickerIsAutoClosing() {
255
648
  return this.type !== 'datetime' && this.type !== 'time';
256
649
  }
257
650
  clearValue() {
651
+ this.resetTypedText();
258
652
  this.change.emit(null);
259
653
  }
260
654
  get host() { return getElement(this); }
655
+ static get watchers() { return {
656
+ "value": [{
657
+ "watchValue": 0
658
+ }],
659
+ "parseError": [{
660
+ "watchParseError": 0
661
+ }],
662
+ "format": [{
663
+ "watchFormatInputs": 0
664
+ }],
665
+ "type": [{
666
+ "watchFormatInputs": 0
667
+ }],
668
+ "language": [{
669
+ "watchLanguage": 0
670
+ }]
671
+ }; }
261
672
  };
262
673
  DatePicker.style = datePickerCss();
263
674
 
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, a as getElement } from './index-BU9IJqli.js';
1
+ import { r as registerInstance, c as createEvent, h, a as getElement } from './index-D3SUrFhp.js';
2
2
  import { d as dispatchResizeEvent } from './dispatch-resize-event-z_E3sq3p.js';
3
3
  import { c as createRandomString } from './random-string-BrjD-ITe.js';
4
4
  import { _ as __extends, a as __assign, M as MDCFoundation, b as __values, c as MDCComponent, d as closest, m as matches } from './ponyfill-6YuZiAPi.js';
@@ -1018,10 +1018,10 @@ const Dialog = class {
1018
1018
  this.mdcDialog.destroy();
1019
1019
  }
1020
1020
  render() {
1021
- return (h("div", { key: 'a9a3f26e3da86f1659487affe5a8758dca4cefb9', class: {
1021
+ return (h("div", { key: '3e1a6defb45d3a7db6569742226cb0f6f417fb6e', class: {
1022
1022
  'mdc-dialog': true,
1023
1023
  'full-screen': !!this.fullscreen,
1024
- }, role: "alertdialog", "aria-modal": "true", "aria-labelledby": 'limel-dialog-title-' + this.id, "aria-describedby": 'limel-dialog-content-' + this.id }, h("input", { key: '792d35f0b5c497bac447327c2aafdd74e3b8c0ee', hidden: true, id: "initialFocusEl" }), h("div", { key: 'a4331ee65f7ff242ee2af707281a1051f307a218', class: "mdc-dialog__container" }, h("div", { key: 'c4e1ef542e1078fe65bb6c299a890da6242c154e', class: "mdc-dialog__surface" }, h("input", { key: '626470072fbed50ef98ab29e32ad0d219018cb51', type: "button", id: "initialFocusElement" }), this.renderHeading(), h("div", { key: '8399fa33d6b6d342848f7051fc92b4bde9b02f8e', class: "mdc-dialog__content", id: 'limel-dialog-content-' + this.id }, h("slot", { key: '94f1d56d78fd5e5f0cc483c622b1138ed7148a2e' })), this.renderFooter())), h("div", { key: '22a1c2516049f8a8d444fbb60c0009cb96dffe9f', class: "mdc-dialog__scrim" })));
1024
+ }, role: "alertdialog", "aria-modal": "true", "aria-labelledby": 'limel-dialog-title-' + this.id, "aria-describedby": 'limel-dialog-content-' + this.id }, h("input", { key: '4a5f5cbd39cefc237854e87a3bd26c9a371d0703', hidden: true, id: "initialFocusEl" }), h("div", { key: 'cea96e7efebe5f92b65c36f9e9ff4b4814cf6245', class: "mdc-dialog__container" }, h("div", { key: '2002f463e8289d8e11974818e8339cd8506d9172', class: "mdc-dialog__surface" }, h("input", { key: 'ff0f029260dcd53f59f0ac7882b917e7fdff41a1', type: "button", id: "initialFocusElement" }), this.renderHeading(), h("div", { key: 'd2f23c68ef6fa558c7d40b7a729173bfc6c1e120', class: "mdc-dialog__content", id: 'limel-dialog-content-' + this.id }, h("slot", { key: '7b990ba91a610dad210627c1e6075b4db6ecd0c8' })), this.renderFooter())), h("div", { key: 'b878b47719571bac33c5f8f04e6271d11fd7bf69', class: "mdc-dialog__scrim" })));
1025
1025
  }
1026
1026
  watchHandler(newValue, oldValue) {
1027
1027
  if (oldValue === newValue || !this.mdcDialog) {
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-BU9IJqli.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-D3SUrFhp.js';
2
2
  import { c as createRandomString } from './random-string-BrjD-ITe.js';
3
3
 
4
4
  const dockButtonCss = () => `@charset "UTF-8";limel-dock-button button{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;isolation:isolate;position:relative;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-dock-item-text-color);background-color:var(--dock-background-color)}limel-dock-button button:hover,limel-dock-button button:focus,limel-dock-button button:focus-visible{will-change:color, background-color, box-shadow, transform}limel-dock-button button:hover,limel-dock-button button:focus-visible{transform:translate3d(0, -0.04rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}limel-dock-button button:hover{box-shadow:var(--button-shadow-hovered)}limel-dock-button button:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);background-color:var(--limel-theme-surface-background-color);box-shadow:var(--button-shadow-inset-pressed)}limel-dock-button button:hover,limel-dock-button button:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}limel-dock-button button:focus{outline:none}limel-dock-button button:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-dock-button button{box-sizing:border-box;display:flex;align-items:center;width:100%;height:var(--dock-item-height);border-radius:0.375rem;font-size:var(--limel-theme-default-font-size);padding:0 0.5rem;min-width:var(--dock-item-height)}limel-dock-button button:hover{z-index:1}limel-dock-button button[aria-current=page]{color:var(--limel-dock-item-text-color--selected);background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)));box-shadow:var(--button-shadow-inset)}limel-dock-button button[aria-current=page]:focus-visible{box-shadow:var(--button-shadow-inset), var(--shadow-depth-8-focused)}limel-dock-button button[aria-current=page] .icon{color:var(--limel-dock-item-text--selected)}limel-popover{display:grid;grid-template-columns:100%}limel-popover button[slot=trigger][aria-expanded=true]{box-shadow:var(--button-shadow-inset)}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:0.5rem;padding-right:0.75rem}limel-dock-button:not([expanded]) .text{position:absolute;width:0;height:0;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap}.icon{flex-shrink:0;width:calc(var(--dock-item-height) - 1rem);height:calc(var(--dock-item-height) - 1rem);color:var(--dock-item-icon-color, var(--limel-dock-item-text-color))}limel-badge{position:absolute;top:-0.125rem;right:-0.125rem}limel-dock-button[use-mobile-layout][expanded]{flex:1 1 0;min-width:0}limel-dock-button[use-mobile-layout][expanded] button{flex-direction:column;justify-content:center;gap:0.125rem;height:auto;min-height:var(--dock-item-height);padding:0.375rem 0.25rem}limel-dock-button[use-mobile-layout][expanded] .text{box-sizing:border-box;max-width:100%;padding:0 0.125rem;font-size:0.6875rem;line-height:1.2;text-align:center}limel-dock-button[use-mobile-layout][expanded] limel-badge{right:auto;left:calc(50% + 0.375rem)}.icon{position:relative}.icon:before{text-align:center;pointer-events:none;position:absolute;inset:0;background-color:var(--dock-background-color, rgb(var(--contrast-100)));background-position:center;background-repeat:no-repeat;background-size:contain;background-image:var(--limel-custom-home-icon);content:var(--limel-custom-home-icon-enabler)}button[aria-current=page] .icon:before{background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)))}`;
@@ -1,6 +1,5 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host } from './index-BU9IJqli.js';
2
- import { t as translations } from './translations-D9ZGrMhe.js';
3
- import './language-VamkUr90.js';
1
+ import { r as registerInstance, c as createEvent, h, H as Host } from './index-D3SUrFhp.js';
2
+ import { t as translations } from './translations--i932i_D.js';
4
3
 
5
4
  const dockCss = () => `@charset "UTF-8";button.expand-shrink{appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:inherit;box-sizing:border-box;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:transparent}button.expand-shrink:hover,button.expand-shrink:focus,button.expand-shrink:focus-visible{will-change:color, background-color, box-shadow, transform}button.expand-shrink:hover,button.expand-shrink:focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}button.expand-shrink:hover{box-shadow:var(--button-shadow-hovered)}button.expand-shrink:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}button.expand-shrink:hover,button.expand-shrink:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}button.expand-shrink:focus{outline:none}button.expand-shrink:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button.expand-shrink{display:flex;justify-content:center;align-items:center;height:var(--dock-expand-shrink-button-height);padding:0 0.5rem;margin:var(--limel-dock-padding);border-radius:0.375rem}button.expand-shrink.expanded{justify-content:flex-end}button.expand-shrink.expanded limel-icon{transform:rotateY(180deg)}button.expand-shrink limel-icon{width:calc(var(--dock-expand-shrink-button-height) - 0.25rem);color:var(--dock-item-icon-color, var(--limel-dock-item-text-color))}:host(limel-dock){--badge-background-color:rgb(var(--color-red-default));--badge-text-color:rgb(var(--color-white));--dock-item-height:2.75rem;--limel-dock-padding:0.25rem;--dock-expand-shrink-button-height:1rem;--limel-dock-item-text-color:var( --dock-item-text-color, rgb(var(--contrast-1100)) );--limel-dock-item-text-color--selected:var( --dock-item-text-color--selected, rgb(var(--contrast-1300)) );isolation:isolate;position:relative;box-sizing:border-box;display:inline-flex;flex-direction:column;background-color:var(--dock-background-color, rgb(var(--contrast-100)));box-shadow:var(--shadow-depth-8);padding-top:var(--dock-padding-top);padding-right:var(--dock-padding-right);padding-bottom:var(--dock-padding-bottom);padding-left:var(--dock-padding-left)}:host(limel-dock:not(.has-mobile-layout)){height:100%;width:calc(var(--limel-dock-padding) * 2 + var(--dock-item-height) + var(--dock-padding-left, 0px) + var(--dock-padding-right, 0px))}:host(limel-dock:not(.has-mobile-layout)) nav{padding-bottom:calc(var(--limel-dock-padding) + 0.25rem)}:host(limel-dock.expanded:not(.has-mobile-layout)){width:calc(var(--dock-expanded-max-width, 10rem) + var(--dock-padding-left, 0px) + var(--dock-padding-right, 0px))}.footer-separator{margin-top:auto;justify-self:flex-end}nav{box-sizing:border-box;display:inline-flex;flex-direction:column;gap:0.375rem;flex-grow:1;padding:var(--limel-dock-padding);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}nav::-webkit-scrollbar{display:none}:host(limel-dock.has-mobile-layout) nav{justify-content:space-between;flex-direction:row}limel-dock-button:first-of-type{--limel-custom-home-icon-enabler:var(--crm-custom-home-icon-enabler);--limel-custom-home-icon:var(--crm-custom-home-icon)}`;
6
5
 
@@ -95,11 +94,11 @@ const Dock = class {
95
94
  this.resizeObserver.disconnect();
96
95
  }
97
96
  render() {
98
- return (h(Host, { key: '5f27f5d6ed669bdee199afc2dfe151495a67b05b', class: {
97
+ return (h(Host, { key: 'a2389035294a8e9faaf4de889fef82c3775dd3aa', class: {
99
98
  dock: true,
100
99
  expanded: this.expanded,
101
100
  'has-mobile-layout': this.useMobileLayout,
102
- } }, h("nav", { key: '9f7befc311318c7ff2486714adc0a6ec0e6b4cea', "aria-label": this.accessibleLabel }, this.dockItems.map(this.renderDockItem), this.renderSeparator(), this.dockFooterItems.map(this.renderDockItem)), this.renderExpandShrinkToggle()));
101
+ } }, h("nav", { key: '7a5ef68e234cb744eaef4ee59a3d9cfed70af4aa', "aria-label": this.accessibleLabel }, this.dockItems.map(this.renderDockItem), this.renderSeparator(), this.dockFooterItems.map(this.renderDockItem)), this.renderExpandShrinkToggle()));
103
102
  }
104
103
  renderExpandShrinkToggle() {
105
104
  if (this.useMobileLayout || !this.allowResize) {