@nldd/design-system 0.8.68 → 0.8.70

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 (346) hide show
  1. package/custom-elements.json +29536 -0
  2. package/dist/components/actions/button/button.d.ts +8 -0
  3. package/dist/components/actions/button/button.d.ts.map +1 -1
  4. package/dist/components/actions/button/button.js +14 -0
  5. package/dist/components/actions/button/button.js.map +1 -1
  6. package/dist/components/actions/button/button.styles.d.ts.map +1 -1
  7. package/dist/components/actions/button/button.styles.js +109 -108
  8. package/dist/components/actions/button/button.styles.js.map +1 -1
  9. package/dist/components/actions/button/button.template.d.ts.map +1 -1
  10. package/dist/components/actions/button/button.template.js +9 -0
  11. package/dist/components/actions/button/button.template.js.map +1 -1
  12. package/dist/components/actions/icon-button/icon-button.d.ts +11 -0
  13. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  14. package/dist/components/actions/icon-button/icon-button.js +17 -0
  15. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  16. package/dist/components/actions/icon-button/icon-button.styles.d.ts.map +1 -1
  17. package/dist/components/actions/icon-button/icon-button.styles.js +55 -54
  18. package/dist/components/actions/icon-button/icon-button.styles.js.map +1 -1
  19. package/dist/components/actions/icon-button/icon-button.template.d.ts.map +1 -1
  20. package/dist/components/actions/icon-button/icon-button.template.js +7 -1
  21. package/dist/components/actions/icon-button/icon-button.template.js.map +1 -1
  22. package/dist/components/actions/menu/menu.d.ts +19 -0
  23. package/dist/components/actions/menu/menu.d.ts.map +1 -1
  24. package/dist/components/actions/menu/menu.js +53 -2
  25. package/dist/components/actions/menu/menu.js.map +1 -1
  26. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  27. package/dist/components/actions/menu/menu.styles.js +51 -23
  28. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  29. package/dist/components/actions/menu/menu.template.d.ts.map +1 -1
  30. package/dist/components/actions/menu/menu.template.js +58 -33
  31. package/dist/components/actions/menu/menu.template.js.map +1 -1
  32. package/dist/components/actions/split-button/split-button.d.ts +16 -18
  33. package/dist/components/actions/split-button/split-button.d.ts.map +1 -1
  34. package/dist/components/actions/split-button/split-button.js +28 -54
  35. package/dist/components/actions/split-button/split-button.js.map +1 -1
  36. package/dist/components/actions/split-button/split-button.template.js +1 -1
  37. package/dist/components/actions/split-button/split-button.template.js.map +1 -1
  38. package/dist/components/actions/toolbar/toolbar.d.ts +14 -0
  39. package/dist/components/actions/toolbar/toolbar.d.ts.map +1 -1
  40. package/dist/components/actions/toolbar/toolbar.js +45 -2
  41. package/dist/components/actions/toolbar/toolbar.js.map +1 -1
  42. package/dist/components/actions/toolbar/toolbar.styles.d.ts.map +1 -1
  43. package/dist/components/actions/toolbar/toolbar.styles.js +16 -2
  44. package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
  45. package/dist/components/components.js +106 -102
  46. package/dist/components/content/avatar/avatar.d.ts +96 -0
  47. package/dist/components/content/avatar/avatar.d.ts.map +1 -0
  48. package/dist/components/content/avatar/avatar.js +210 -0
  49. package/dist/components/content/avatar/avatar.js.map +1 -0
  50. package/dist/components/content/avatar/avatar.styles.d.ts +2 -0
  51. package/dist/components/content/avatar/avatar.styles.d.ts.map +1 -0
  52. package/dist/components/content/avatar/avatar.styles.js +127 -0
  53. package/dist/components/content/avatar/avatar.styles.js.map +1 -0
  54. package/dist/components/content/avatar/avatar.template.d.ts +3 -0
  55. package/dist/components/content/avatar/avatar.template.d.ts.map +1 -0
  56. package/dist/components/content/avatar/avatar.template.js +36 -0
  57. package/dist/components/content/avatar/avatar.template.js.map +1 -0
  58. package/dist/components/content/byline/byline.d.ts +1 -0
  59. package/dist/components/content/byline/byline.d.ts.map +1 -1
  60. package/dist/components/content/byline/byline.js +1 -0
  61. package/dist/components/content/byline/byline.js.map +1 -1
  62. package/dist/components/content/byline/byline.styles.d.ts.map +1 -1
  63. package/dist/components/content/byline/byline.styles.js +15 -5
  64. package/dist/components/content/byline/byline.styles.js.map +1 -1
  65. package/dist/components/content/byline/byline.template.js +11 -11
  66. package/dist/components/content/byline/byline.template.js.map +1 -1
  67. package/dist/components/content/code-viewer/code-viewer.d.ts.map +1 -1
  68. package/dist/components/content/code-viewer/code-viewer.js +2 -0
  69. package/dist/components/content/code-viewer/code-viewer.js.map +1 -1
  70. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  71. package/dist/components/content/icon/icon-aliases.js +19 -0
  72. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  73. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  74. package/dist/components/content/icon/icon-registry.js +34 -4
  75. package/dist/components/content/icon/icon-registry.js.map +1 -1
  76. package/dist/components/content/image/image.d.ts +2 -0
  77. package/dist/components/content/image/image.d.ts.map +1 -1
  78. package/dist/components/content/image/image.js +2 -0
  79. package/dist/components/content/image/image.js.map +1 -1
  80. package/dist/components/content/image/lqip-encoder-element.d.ts.map +1 -1
  81. package/dist/components/content/image/lqip-encoder-element.js +2 -1
  82. package/dist/components/content/image/lqip-encoder-element.js.map +1 -1
  83. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.d.ts +4 -0
  84. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.d.ts.map +1 -1
  85. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js +4 -0
  86. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  87. package/dist/components/content/rich-text/rich-text.d.ts +7 -0
  88. package/dist/components/content/rich-text/rich-text.d.ts.map +1 -1
  89. package/dist/components/content/rich-text/rich-text.js +10 -0
  90. package/dist/components/content/rich-text/rich-text.js.map +1 -1
  91. package/dist/components/content/tag/tag.styles.js +23 -23
  92. package/dist/components/content/token/token.styles.d.ts.map +1 -1
  93. package/dist/components/content/token/token.styles.js +2 -1
  94. package/dist/components/content/token/token.styles.js.map +1 -1
  95. package/dist/components/{index-DWwviobk.js → index-BP0XMTYa.js} +1 -1
  96. package/dist/components/{index-Bfw_pYWB.js → index-Bh_hMHn8.js} +1 -1
  97. package/dist/components/{index-DjsXjoZJ.js → index-BuLJAwiB.js} +8816 -6015
  98. package/dist/components/{index-CKnwqp_9.js → index-CTUlN5qN.js} +1 -1
  99. package/dist/components/{index-Bqf6o41r.js → index-DS-RnHMu.js} +1 -1
  100. package/dist/components/{index-CXT1jMFt.js → index-Dgxr-sEe.js} +1 -1
  101. package/dist/components/{index-DO7aT0MT.js → index-sa60dMt-.js} +1 -1
  102. package/dist/components/index.d.ts +4 -0
  103. package/dist/components/index.d.ts.map +1 -1
  104. package/dist/components/index.js +4 -0
  105. package/dist/components/index.js.map +1 -1
  106. package/dist/components/inputs/checkbox/checkbox.styles.d.ts.map +1 -1
  107. package/dist/components/inputs/checkbox/checkbox.styles.js +1 -0
  108. package/dist/components/inputs/checkbox/checkbox.styles.js.map +1 -1
  109. package/dist/components/inputs/date-field/date-field.d.ts +226 -0
  110. package/dist/components/inputs/date-field/date-field.d.ts.map +1 -0
  111. package/dist/components/inputs/date-field/date-field.i18n.d.ts +11 -0
  112. package/dist/components/inputs/date-field/date-field.i18n.d.ts.map +1 -0
  113. package/dist/components/inputs/date-field/date-field.i18n.js +17 -0
  114. package/dist/components/inputs/date-field/date-field.i18n.js.map +1 -0
  115. package/dist/components/inputs/date-field/date-field.js +589 -0
  116. package/dist/components/inputs/date-field/date-field.js.map +1 -0
  117. package/dist/components/inputs/date-field/date-field.styles.d.ts +2 -0
  118. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -0
  119. package/dist/components/inputs/date-field/date-field.styles.js +246 -0
  120. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -0
  121. package/dist/components/inputs/date-field/date-field.template.d.ts +17 -0
  122. package/dist/components/inputs/date-field/date-field.template.d.ts.map +1 -0
  123. package/dist/components/inputs/date-field/date-field.template.js +141 -0
  124. package/dist/components/inputs/date-field/date-field.template.js.map +1 -0
  125. package/dist/components/inputs/date-picker/date-picker.d.ts +268 -0
  126. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -0
  127. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts +64 -0
  128. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts.map +1 -0
  129. package/dist/components/inputs/date-picker/date-picker.i18n.js +81 -0
  130. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -0
  131. package/dist/components/inputs/date-picker/date-picker.js +748 -0
  132. package/dist/components/inputs/date-picker/date-picker.js.map +1 -0
  133. package/dist/components/inputs/date-picker/date-picker.styles.d.ts +2 -0
  134. package/dist/components/inputs/date-picker/date-picker.styles.d.ts.map +1 -0
  135. package/dist/components/inputs/date-picker/date-picker.styles.js +353 -0
  136. package/dist/components/inputs/date-picker/date-picker.styles.js.map +1 -0
  137. package/dist/components/inputs/date-picker/date-picker.template.d.ts +8 -0
  138. package/dist/components/inputs/date-picker/date-picker.template.d.ts.map +1 -0
  139. package/dist/components/inputs/date-picker/date-picker.template.js +223 -0
  140. package/dist/components/inputs/date-picker/date-picker.template.js.map +1 -0
  141. package/dist/components/inputs/dropdown/dropdown.styles.d.ts.map +1 -1
  142. package/dist/components/inputs/dropdown/dropdown.styles.js +7 -6
  143. package/dist/components/inputs/dropdown/dropdown.styles.js.map +1 -1
  144. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts +1 -0
  145. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts.map +1 -1
  146. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js +1 -0
  147. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js.map +1 -1
  148. package/dist/components/inputs/password-field/password-field.d.ts +1 -0
  149. package/dist/components/inputs/password-field/password-field.d.ts.map +1 -1
  150. package/dist/components/inputs/password-field/password-field.js +1 -0
  151. package/dist/components/inputs/password-field/password-field.js.map +1 -1
  152. package/dist/components/inputs/radio-button/radio-button.d.ts +3 -0
  153. package/dist/components/inputs/radio-button/radio-button.d.ts.map +1 -1
  154. package/dist/components/inputs/radio-button/radio-button.js +3 -0
  155. package/dist/components/inputs/radio-button/radio-button.js.map +1 -1
  156. package/dist/components/inputs/radio-button/radio-button.styles.d.ts.map +1 -1
  157. package/dist/components/inputs/radio-button/radio-button.styles.js +1 -0
  158. package/dist/components/inputs/radio-button/radio-button.styles.js.map +1 -1
  159. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts +2 -0
  160. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts.map +1 -1
  161. package/dist/components/inputs/radio-button-field/radio-button-field.js +2 -0
  162. package/dist/components/inputs/radio-button-field/radio-button-field.js.map +1 -1
  163. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts +1 -0
  164. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts.map +1 -1
  165. package/dist/components/inputs/radio-button-group/radio-button-group.js +1 -0
  166. package/dist/components/inputs/radio-button-group/radio-button-group.js.map +1 -1
  167. package/dist/components/inputs/segmented-control/segmented-control.d.ts +10 -1
  168. package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
  169. package/dist/components/inputs/segmented-control/segmented-control.js +11 -2
  170. package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
  171. package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
  172. package/dist/components/inputs/segmented-control/segmented-control.styles.js +7 -6
  173. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  174. package/dist/components/inputs/stepper/stepper.d.ts +1 -0
  175. package/dist/components/inputs/stepper/stepper.d.ts.map +1 -1
  176. package/dist/components/inputs/stepper/stepper.js +1 -0
  177. package/dist/components/inputs/stepper/stepper.js.map +1 -1
  178. package/dist/components/inputs/stepper/stepper.styles.d.ts.map +1 -1
  179. package/dist/components/inputs/stepper/stepper.styles.js +1 -0
  180. package/dist/components/inputs/stepper/stepper.styles.js.map +1 -1
  181. package/dist/components/inputs/switch/switch.d.ts +2 -0
  182. package/dist/components/inputs/switch/switch.d.ts.map +1 -1
  183. package/dist/components/inputs/switch/switch.js +2 -0
  184. package/dist/components/inputs/switch/switch.js.map +1 -1
  185. package/dist/components/inputs/switch/switch.styles.d.ts.map +1 -1
  186. package/dist/components/inputs/switch/switch.styles.js +1 -0
  187. package/dist/components/inputs/switch/switch.styles.js.map +1 -1
  188. package/dist/components/inputs/text-editor/text-editor.links.d.ts +8 -0
  189. package/dist/components/inputs/text-editor/text-editor.links.d.ts.map +1 -1
  190. package/dist/components/inputs/text-editor/text-editor.links.js +48 -7
  191. package/dist/components/inputs/text-editor/text-editor.links.js.map +1 -1
  192. package/dist/components/inputs/text-editor/text-editor.markdown.d.ts.map +1 -1
  193. package/dist/components/inputs/text-editor/text-editor.markdown.js +11 -0
  194. package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -1
  195. package/dist/components/inputs/text-editor/text-editor.styles.d.ts.map +1 -1
  196. package/dist/components/inputs/text-editor/text-editor.styles.js +14 -3
  197. package/dist/components/inputs/text-editor/text-editor.styles.js.map +1 -1
  198. package/dist/components/inputs/text-field/text-field.d.ts +1 -0
  199. package/dist/components/inputs/text-field/text-field.d.ts.map +1 -1
  200. package/dist/components/inputs/text-field/text-field.js +1 -0
  201. package/dist/components/inputs/text-field/text-field.js.map +1 -1
  202. package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
  203. package/dist/components/inputs/toggle-button/toggle-button.styles.js +7 -6
  204. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  205. package/dist/components/layout/container/container.d.ts +26 -3
  206. package/dist/components/layout/container/container.d.ts.map +1 -1
  207. package/dist/components/layout/container/container.js +26 -3
  208. package/dist/components/layout/container/container.js.map +1 -1
  209. package/dist/components/layout/page-footer/page-footer.d.ts +9 -1
  210. package/dist/components/layout/page-footer/page-footer.d.ts.map +1 -1
  211. package/dist/components/layout/page-footer/page-footer.js +23 -1
  212. package/dist/components/layout/page-footer/page-footer.js.map +1 -1
  213. package/dist/components/layout/page-footer/page-footer.styles.d.ts.map +1 -1
  214. package/dist/components/layout/page-footer/page-footer.styles.js +9 -0
  215. package/dist/components/layout/page-footer/page-footer.styles.js.map +1 -1
  216. package/dist/components/layout/page-sections/hero/hero.styles.js +19 -19
  217. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.d.ts +2 -2
  218. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.js +2 -2
  219. package/dist/components/layout/popover/popover.d.ts +17 -0
  220. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  221. package/dist/components/layout/popover/popover.js +114 -7
  222. package/dist/components/layout/popover/popover.js.map +1 -1
  223. package/dist/components/layout/sheet/sheet.d.ts +18 -0
  224. package/dist/components/layout/sheet/sheet.d.ts.map +1 -1
  225. package/dist/components/layout/sheet/sheet.js +38 -3
  226. package/dist/components/layout/sheet/sheet.js.map +1 -1
  227. package/dist/components/layout/sheet/sheet.styles.d.ts.map +1 -1
  228. package/dist/components/layout/sheet/sheet.styles.js +6 -1
  229. package/dist/components/layout/sheet/sheet.styles.js.map +1 -1
  230. package/dist/components/layout/sheet/sheet.template.d.ts.map +1 -1
  231. package/dist/components/layout/sheet/sheet.template.js +2 -0
  232. package/dist/components/layout/sheet/sheet.template.js.map +1 -1
  233. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts +1 -0
  234. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts.map +1 -1
  235. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js +5 -0
  236. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js.map +1 -1
  237. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.d.ts.map +1 -1
  238. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.js +27 -0
  239. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.js.map +1 -1
  240. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.d.ts +2 -0
  241. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.d.ts.map +1 -1
  242. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.js +3 -0
  243. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.js.map +1 -1
  244. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.d.ts.map +1 -1
  245. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.js +24 -0
  246. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.js.map +1 -1
  247. package/dist/components/layout/window/window.d.ts +9 -0
  248. package/dist/components/layout/window/window.d.ts.map +1 -1
  249. package/dist/components/layout/window/window.js +19 -0
  250. package/dist/components/layout/window/window.js.map +1 -1
  251. package/dist/components/layout/window/window.styles.d.ts.map +1 -1
  252. package/dist/components/layout/window/window.styles.js +5 -1
  253. package/dist/components/layout/window/window.styles.js.map +1 -1
  254. package/dist/components/layout/window/window.template.d.ts.map +1 -1
  255. package/dist/components/layout/window/window.template.js +1 -0
  256. package/dist/components/layout/window/window.template.js.map +1 -1
  257. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js +2 -2
  258. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.d.ts +1 -0
  259. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.d.ts.map +1 -1
  260. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js +1 -0
  261. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js.map +1 -1
  262. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js +6 -6
  263. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js +11 -11
  264. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js +11 -11
  265. package/dist/components/lists-and-tables/list/list.d.ts +14 -0
  266. package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
  267. package/dist/components/lists-and-tables/list/list.js +14 -0
  268. package/dist/components/lists-and-tables/list/list.js.map +1 -1
  269. package/dist/components/lists-and-tables/list-item/list-item.d.ts +10 -0
  270. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  271. package/dist/components/lists-and-tables/list-item/list-item.js +10 -0
  272. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  273. package/dist/components/lists-and-tables/list-item/list-item.styles.d.ts.map +1 -1
  274. package/dist/components/lists-and-tables/list-item/list-item.styles.js +14 -7
  275. package/dist/components/lists-and-tables/list-item/list-item.styles.js.map +1 -1
  276. package/dist/components/lists-and-tables/table/table.styles.d.ts.map +1 -1
  277. package/dist/components/lists-and-tables/table/table.styles.js +2 -1
  278. package/dist/components/lists-and-tables/table/table.styles.js.map +1 -1
  279. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.d.ts.map +1 -1
  280. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +15 -14
  281. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  282. package/dist/components/navigation/menu-bar/menu-bar.styles.d.ts.map +1 -1
  283. package/dist/components/navigation/menu-bar/menu-bar.styles.js +1 -0
  284. package/dist/components/navigation/menu-bar/menu-bar.styles.js.map +1 -1
  285. package/dist/components/navigation/menu-bar-item/menu-bar-item.d.ts +1 -0
  286. package/dist/components/navigation/menu-bar-item/menu-bar-item.d.ts.map +1 -1
  287. package/dist/components/navigation/menu-bar-item/menu-bar-item.js +1 -0
  288. package/dist/components/navigation/menu-bar-item/menu-bar-item.js.map +1 -1
  289. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.d.ts.map +1 -1
  290. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js +1 -0
  291. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js.map +1 -1
  292. package/dist/components/navigation/pagination/pagination.d.ts +1 -0
  293. package/dist/components/navigation/pagination/pagination.d.ts.map +1 -1
  294. package/dist/components/navigation/pagination/pagination.js +1 -0
  295. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  296. package/dist/components/navigation/pagination/pagination.styles.d.ts.map +1 -1
  297. package/dist/components/navigation/pagination/pagination.styles.js +10 -9
  298. package/dist/components/navigation/pagination/pagination.styles.js.map +1 -1
  299. package/dist/components/navigation/tab-bar/tab-bar.d.ts +2 -0
  300. package/dist/components/navigation/tab-bar/tab-bar.d.ts.map +1 -1
  301. package/dist/components/navigation/tab-bar/tab-bar.js +2 -0
  302. package/dist/components/navigation/tab-bar/tab-bar.js.map +1 -1
  303. package/dist/components/navigation/tab-bar/tab-bar.styles.d.ts.map +1 -1
  304. package/dist/components/navigation/tab-bar/tab-bar.styles.js +7 -6
  305. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  306. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.d.ts +22 -0
  307. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.d.ts.map +1 -1
  308. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js +22 -0
  309. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js.map +1 -1
  310. package/dist/components/navigation/top-title-bar/top-title-bar.d.ts +10 -0
  311. package/dist/components/navigation/top-title-bar/top-title-bar.d.ts.map +1 -1
  312. package/dist/components/navigation/top-title-bar/top-title-bar.js +27 -2
  313. package/dist/components/navigation/top-title-bar/top-title-bar.js.map +1 -1
  314. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts +14 -2
  315. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts.map +1 -1
  316. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js +14 -2
  317. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js.map +1 -1
  318. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.d.ts.map +1 -1
  319. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +3 -2
  320. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js.map +1 -1
  321. package/dist/components/status-and-feedback/badge/badge.styles.js +23 -23
  322. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts +3 -2
  323. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts.map +1 -1
  324. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js +2 -1
  325. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js.map +1 -1
  326. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.template.d.ts.map +1 -1
  327. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.template.js +8 -1
  328. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.template.js.map +1 -1
  329. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts.map +1 -1
  330. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js +2 -0
  331. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js.map +1 -1
  332. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.d.ts.map +1 -1
  333. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +16 -0
  334. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -1
  335. package/dist/css/rich-text.css +19 -0
  336. package/dist/css/settings.css +253 -246
  337. package/dist/types/vue.d.ts +3277 -0
  338. package/dist/utilities/popup-anchor-controller.d.ts +63 -0
  339. package/dist/utilities/popup-anchor-controller.d.ts.map +1 -0
  340. package/dist/utilities/popup-anchor-controller.js +63 -0
  341. package/dist/utilities/popup-anchor-controller.js.map +1 -0
  342. package/dist/utilities/resolve-date-bound.d.ts +21 -0
  343. package/dist/utilities/resolve-date-bound.d.ts.map +1 -0
  344. package/dist/utilities/resolve-date-bound.js +75 -0
  345. package/dist/utilities/resolve-date-bound.js.map +1 -0
  346. package/package.json +35 -7
@@ -10,53 +10,78 @@ const itemRoleMap = {
10
10
  radio: { menu: 'menuitemradio', listbox: 'option' },
11
11
  };
12
12
  export function menuTemplate(isEmpty, variant) {
13
- // Drop role="menu"/"listbox" when empty. The empty-state slot renders an
14
- // nldd-inline-dialog, which is neither a menuitem nor an option — keeping
15
- // the role here would violate ARIA's required-children rules.
16
- const menuRole = isEmpty ? nothing : menuRoleMap[variant];
13
+ // role="menu"/"listbox" is now STATIC on .menu__list, which only ever owns
14
+ // nldd-menu-item children. The empty-state and the drill-in back button live
15
+ // in .menu__main as siblings of the list (outside the role), so an empty or
16
+ // filtered menu never needs to drop the role to stay ARIA-valid.
17
+ const menuRole = menuRoleMap[variant];
17
18
  // Back button shows when this menu is itself a submenu and we're rendering
18
19
  // in drill-in mode (touch / narrow viewport). The label is the parent
19
20
  // item's text — gives the user context about which level they're in.
20
21
  const showBack = this._isSubmenu && this._drillInMode && this._parentItem !== null;
22
+ // Header/footer are ROOT-ONLY: never rendered in a submenu (identity and
23
+ // account-level actions belong to the root menu, not a nested level). The
24
+ // slot is only in the DOM on the root, so submenu-slotted header/footer
25
+ // content is simply not projected.
26
+ const isRoot = !this._isSubmenu;
21
27
  return html `
22
28
  <div class="menu"
23
- role=${menuRole}
24
29
  tabindex="-1"
25
30
  @touchstart=${this._handleMenuTouchStart}
26
31
  @touchmove=${this._handleMenuTouchMove}
27
32
  @touchend=${this._handleMenuTouchEnd}
28
33
  @touchcancel=${this._handleMenuTouchEnd}
29
34
  >
30
- ${showBack ? html `
31
- <button class="menu__back-button"
32
- type="button"
33
- aria-label=${this._resolvedBackLabel}
34
- @click=${this._handleBack}
35
- @mouseenter=${this._handleBackMouseenter}
35
+ ${isRoot ? html `
36
+ <div class="menu__header"
37
+ ?hidden=${!this._hasHeader}
36
38
  >
37
- <nldd-icon-cell
38
- size="20"
39
- icon="chevron-left"
40
- ></nldd-icon-cell>
41
- <nldd-spacer-cell size="6"></nldd-spacer-cell>
42
- <nldd-text-cell text=${this._parentItem.text}></nldd-text-cell>
43
- </button>
44
- <!-- Pure visual divider; role="none" keeps strict ARIA validators
45
- quiet (a focusable role="separator" inside a menu would need
46
- aria-valuenow et al.; this one is decorative). -->
47
- <div class="menu__back-button-divider"
48
- role="none"
49
- ></div>
39
+ <slot name="header" @slotchange=${this._onHeaderSlotChange}></slot>
40
+ </div>
50
41
  ` : nothing}
51
- <slot></slot>
52
- ${isEmpty ? html `
53
- <div class="menu__empty">
54
- <slot name="empty">
55
- <nldd-inline-dialog
56
- text=${this._resolvedEmptyText}
57
- supporting-text=${this.emptySupportingText || nothing}
58
- ></nldd-inline-dialog>
59
- </slot>
42
+ <div class="menu__main">
43
+ ${showBack ? html `
44
+ <button class="menu__back-button"
45
+ type="button"
46
+ aria-label=${this._resolvedBackLabel}
47
+ @click=${this._handleBack}
48
+ @mouseenter=${this._handleBackMouseenter}
49
+ >
50
+ <nldd-icon-cell
51
+ size="20"
52
+ icon="chevron-left"
53
+ ></nldd-icon-cell>
54
+ <nldd-spacer-cell size="6"></nldd-spacer-cell>
55
+ <nldd-text-cell text=${this._parentItem.text}></nldd-text-cell>
56
+ </button>
57
+ <!-- Pure visual divider; role="none" keeps strict ARIA validators
58
+ quiet (a focusable role="separator" inside a menu would need
59
+ aria-valuenow et al.; this one is decorative). -->
60
+ <div class="menu__back-button-divider"
61
+ role="none"
62
+ ></div>
63
+ ` : nothing}
64
+ <div class="menu__list"
65
+ role=${menuRole}
66
+ >
67
+ <slot></slot>
68
+ </div>
69
+ ${isEmpty ? html `
70
+ <div class="menu__empty">
71
+ <slot name="empty">
72
+ <nldd-inline-dialog
73
+ text=${this._resolvedEmptyText}
74
+ supporting-text=${this.emptySupportingText || nothing}
75
+ ></nldd-inline-dialog>
76
+ </slot>
77
+ </div>
78
+ ` : nothing}
79
+ </div>
80
+ ${isRoot ? html `
81
+ <div class="menu__footer"
82
+ ?hidden=${!this._hasFooter}
83
+ >
84
+ <slot name="footer" @slotchange=${this._onFooterSlotChange}></slot>
60
85
  </div>
61
86
  ` : nothing}
62
87
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"menu.template.js","sourceRoot":"","sources":["../../../../src/components/actions/menu/menu.template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.template.js","sourceRoot":"","sources":["../../../../src/components/actions/menu/menu.template.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  * Nederlandse Digitale Dienst Split Button Component (Lit + TypeScript)
3
3
  *
4
4
  * A split button combines a primary action button with a dropdown trigger.
5
- * The main button performs the default action, while the icon button opens a menu.
5
+ * The main button performs the default action, while the icon button opens a
6
+ * menu or popover.
6
7
  *
7
8
  * Provide the dropdown by slotting an `nldd-menu` (with its `nldd-menu-item` /
8
- * `nldd-menu-divider` children) directly:
9
+ * `nldd-menu-divider` children) or an `nldd-popover` directly:
9
10
  *
10
11
  * ```html
11
12
  * <nldd-split-button text="Opslaan">
@@ -15,11 +16,10 @@
15
16
  * </nldd-split-button>
16
17
  * ```
17
18
  *
18
- * The slotted menu stays in the light DOM — no item-moving — so consumers keep
19
- * their references and the full nldd-menu API (submenus, groups, config). The
20
- * split-button anchors it to the chevron and opens it on click. When no
21
- * `nldd-menu` is slotted, the chevron dispatches `menu-click` and the consumer
22
- * manages their own popover.
19
+ * The slotted overlay stays in the light DOM — no item-moving — so consumers
20
+ * keep their references and the full overlay API. The split-button anchors it
21
+ * to the chevron and opens it on click. When no overlay is slotted, the chevron
22
+ * dispatches `menu-click` and the consumer manages their own popover.
23
23
  *
24
24
  * @element nldd-split-button
25
25
  * @attr {string} size - Button size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md')
@@ -30,16 +30,18 @@
30
30
  * @attr {string} icon - Icon name shown before the text on the primary action button
31
31
  * @attr {object} translations - Translations; unset keys fall back to Dutch
32
32
  *
33
- * @slot - A single `nldd-menu` that the chevron opens.
33
+ * @slot - A single `nldd-menu` or `nldd-popover` that the chevron opens.
34
34
  *
35
35
  * @fires action-click - Fired when the main button is clicked
36
- * @fires menu-click - Fired when the dropdown trigger is clicked and no nldd-menu is slotted
36
+ * @fires menu-click - Fired when the dropdown trigger is clicked and no overlay is slotted
37
37
  */
38
38
  import { LitElement } from 'lit';
39
39
  import type { NLDDSplitButtonTranslations } from './split-button.i18n.js';
40
40
  import './../button/button.js';
41
41
  import './../icon-button/icon-button.js';
42
42
  import '../../actions/menu/menu.js';
43
+ import { PopupAnchorController } from '../../../utilities/popup-anchor-controller.js';
44
+ /** A floating overlay the split-button chevron anchors and toggles. */
43
45
  export type Size = 'xs' | 'sm' | 'md' | 'lg';
44
46
  export declare class NLDDSplitButton extends LitElement {
45
47
  static styles: import("lit").CSSResult;
@@ -55,18 +57,14 @@ export declare class NLDDSplitButton extends LitElement {
55
57
  translations: Partial<NLDDSplitButtonTranslations>;
56
58
  private _popupButtonWrapper?;
57
59
  _menuIsOpen: boolean;
58
- /** The consumer-slotted `nldd-menu`, or null when none is provided. */
59
- private _menu;
60
- private _menuWasOpenOnPointerdown;
60
+ /** Shared wiring for the consumer-slotted overlay. Anchors to the chevron's
61
+ * wrapper rather than the host, and keeps `_menuIsOpen` (the chevron's
62
+ * expanded visual) in step via `toggle`. Not private: the template module
63
+ * binds its slotchange handler. */
64
+ _popup: PopupAnchorController;
61
65
  _t(key: keyof NLDDSplitButtonTranslations): string;
62
66
  firstUpdated(): void;
63
67
  disconnectedCallback(): void;
64
- /**
65
- * Wires the slotted `nldd-menu` to the chevron: anchors it to the popup
66
- * button and tracks its open state. Re-runs whenever the slotted content
67
- * changes (menu added, removed or replaced).
68
- */
69
- _handleSlotChange(event: Event): void;
70
68
  private _handleMenuToggle;
71
69
  _handleActionClick(e: MouseEvent): void;
72
70
  _handleMenuClick(e: MouseEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"split-button.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAMjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AAGpC,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,qBACa,eAAgB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BAAqB;IAG3C,IAAI,EAAE,IAAI,CAAQ;IAGlB,OAAO,EAAE,MAAM,CAAoB;IAGnC,QAAQ,UAAS;IAEjB,qHAAqH;IAErH,KAAK,SAAM;IAEX,0CAA0C;IAE1C,IAAI,SAAM;IAEV,oEAAoE;IAEpE,IAAI,SAAM;IAGV,YAAY,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAM;IAKxD,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAG7C,WAAW,UAAS;IAEpB,uEAAuE;IACvE,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,yBAAyB,CAAS;IAInC,EAAE,CAAC,GAAG,EAAE,MAAM,2BAA2B,GAAG,MAAM;IAMhD,YAAY,IAAI,IAAI;IAmBpB,oBAAoB,IAAI,IAAI;IAKrC;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAcrC,OAAO,CAAC,iBAAiB,CAEvB;IAEF,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAgB5B,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBzD,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD"}
1
+ {"version":3,"file":"split-button.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAMjC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iCAAiC,CAAC;AACzC,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,uEAAuE;AAGvE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,qBACa,eAAgB,SAAQ,UAAU;IAC9C,OAAgB,MAAM,0BAAqB;IAG3C,IAAI,EAAE,IAAI,CAAQ;IAGlB,OAAO,EAAE,MAAM,CAAoB;IAGnC,QAAQ,UAAS;IAEjB,qHAAqH;IAErH,KAAK,SAAM;IAEX,0CAA0C;IAE1C,IAAI,SAAM;IAEV,oEAAoE;IAEpE,IAAI,SAAM;IAGV,YAAY,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAM;IAKxD,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAG7C,WAAW,UAAS;IAEpB;;;uCAGmC;IACnC,MAAM,wBAOH;IAII,EAAE,CAAC,GAAG,EAAE,MAAM,2BAA2B,GAAG,MAAM;IAMhD,YAAY,IAAI,IAAI;IAOpB,oBAAoB,IAAI,IAAI;IAKrC,OAAO,CAAC,iBAAiB,CAEvB;IAEF,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvC,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAU5B,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiBzD,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD"}
@@ -8,10 +8,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  * Nederlandse Digitale Dienst Split Button Component (Lit + TypeScript)
9
9
  *
10
10
  * A split button combines a primary action button with a dropdown trigger.
11
- * The main button performs the default action, while the icon button opens a menu.
11
+ * The main button performs the default action, while the icon button opens a
12
+ * menu or popover.
12
13
  *
13
14
  * Provide the dropdown by slotting an `nldd-menu` (with its `nldd-menu-item` /
14
- * `nldd-menu-divider` children) directly:
15
+ * `nldd-menu-divider` children) or an `nldd-popover` directly:
15
16
  *
16
17
  * ```html
17
18
  * <nldd-split-button text="Opslaan">
@@ -21,11 +22,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
21
22
  * </nldd-split-button>
22
23
  * ```
23
24
  *
24
- * The slotted menu stays in the light DOM — no item-moving — so consumers keep
25
- * their references and the full nldd-menu API (submenus, groups, config). The
26
- * split-button anchors it to the chevron and opens it on click. When no
27
- * `nldd-menu` is slotted, the chevron dispatches `menu-click` and the consumer
28
- * manages their own popover.
25
+ * The slotted overlay stays in the light DOM — no item-moving — so consumers
26
+ * keep their references and the full overlay API. The split-button anchors it
27
+ * to the chevron and opens it on click. When no overlay is slotted, the chevron
28
+ * dispatches `menu-click` and the consumer manages their own popover.
29
29
  *
30
30
  * @element nldd-split-button
31
31
  * @attr {string} size - Button size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md')
@@ -36,10 +36,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
36
36
  * @attr {string} icon - Icon name shown before the text on the primary action button
37
37
  * @attr {object} translations - Translations; unset keys fall back to Dutch
38
38
  *
39
- * @slot - A single `nldd-menu` that the chevron opens.
39
+ * @slot - A single `nldd-menu` or `nldd-popover` that the chevron opens.
40
40
  *
41
41
  * @fires action-click - Fired when the main button is clicked
42
- * @fires menu-click - Fired when the dropdown trigger is clicked and no nldd-menu is slotted
42
+ * @fires menu-click - Fired when the dropdown trigger is clicked and no overlay is slotted
43
43
  */
44
44
  import { LitElement } from 'lit';
45
45
  import { customElement, property, query, state } from 'lit/decorators.js';
@@ -50,6 +50,7 @@ import { nlddSplitButtonTranslations } from './split-button.i18n.js';
50
50
  import './../button/button.js';
51
51
  import './../icon-button/icon-button.js';
52
52
  import '../../actions/menu/menu.js';
53
+ import { PopupAnchorController } from '../../../utilities/popup-anchor-controller.js';
53
54
  let NLDDSplitButton = class NLDDSplitButton extends LitElement {
54
55
  constructor() {
55
56
  super(...arguments);
@@ -64,9 +65,18 @@ let NLDDSplitButton = class NLDDSplitButton extends LitElement {
64
65
  this.icon = '';
65
66
  this.translations = {};
66
67
  this._menuIsOpen = false;
67
- /** The consumer-slotted `nldd-menu`, or null when none is provided. */
68
- this._menu = null;
69
- this._menuWasOpenOnPointerdown = false;
68
+ /** Shared wiring for the consumer-slotted overlay. Anchors to the chevron's
69
+ * wrapper rather than the host, and keeps `_menuIsOpen` (the chevron's
70
+ * expanded visual) in step via `toggle`. Not private: the template module
71
+ * binds its slotchange handler. */
72
+ this._popup = new PopupAnchorController(this, {
73
+ anchorFor: () => this._popupButtonWrapper ?? null,
74
+ onChange: (overlay, previous) => {
75
+ previous?.removeEventListener('toggle', this._handleMenuToggle);
76
+ this._menuIsOpen = false;
77
+ overlay?.addEventListener('toggle', this._handleMenuToggle);
78
+ },
79
+ });
70
80
  this._handleMenuToggle = (event) => {
71
81
  this._menuIsOpen = event.newState === 'open';
72
82
  };
@@ -77,44 +87,14 @@ let NLDDSplitButton = class NLDDSplitButton extends LitElement {
77
87
  }
78
88
  // — Lifecycle ————————————————————————————————————————————————————————————
79
89
  firstUpdated() {
80
- // Capture open-state BEFORE the browser's light-dismiss fires on
81
- // pointerdown. The click handler uses this snapshot to decide: was the
82
- // popover open? user clicked to close (no-op, light-dismiss already
83
- // closed it). Was it closed? → open it. Pointerdown fires for mouse,
84
- // touch and pen — `mousedown` alone would skip touch on mobile, where
85
- // no mousedown precedes the synthetic click.
86
- this._popupButtonWrapper?.addEventListener('pointerdown', () => {
87
- this._menuWasOpenOnPointerdown = this._menu?.matches(':popover-open') ?? false;
88
- });
89
- // If the menu was slotted declaratively, _handleSlotChange may have run
90
- // before @query resolved _popupButtonWrapper and couldn't anchor it. The
91
- // wrapper exists now — anchor a menu that's still waiting for it.
92
- if (this._menu && this._popupButtonWrapper) {
93
- this._menu.anchorElement = this._popupButtonWrapper;
94
- }
90
+ this._popupButtonWrapper?.addEventListener('pointerdown', this._popup.handlePointerdown);
91
+ // A declaratively-slotted overlay is adopted before @query resolves the
92
+ // wrapper, so it couldn't be anchored yet. The wrapper exists now.
93
+ this._popup.anchor();
95
94
  }
96
95
  disconnectedCallback() {
97
96
  super.disconnectedCallback();
98
- this._menu?.removeEventListener('toggle', this._handleMenuToggle);
99
- }
100
- /**
101
- * Wires the slotted `nldd-menu` to the chevron: anchors it to the popup
102
- * button and tracks its open state. Re-runs whenever the slotted content
103
- * changes (menu added, removed or replaced).
104
- */
105
- _handleSlotChange(event) {
106
- const slot = event.target;
107
- const menu = slot.assignedElements().find((el) => el.matches('nldd-menu')) ?? null;
108
- if (menu === this._menu)
109
- return;
110
- this._menu?.removeEventListener('toggle', this._handleMenuToggle);
111
- this._menu = menu;
112
- this._menuIsOpen = false;
113
- if (menu) {
114
- if (this._popupButtonWrapper)
115
- menu.anchorElement = this._popupButtonWrapper;
116
- menu.addEventListener('toggle', this._handleMenuToggle);
117
- }
97
+ this._popup.overlay?.removeEventListener('toggle', this._handleMenuToggle);
118
98
  }
119
99
  _handleActionClick(e) {
120
100
  if (this.disabled)
@@ -126,14 +106,8 @@ let NLDDSplitButton = class NLDDSplitButton extends LitElement {
126
106
  if (this.disabled)
127
107
  return;
128
108
  e.stopPropagation();
129
- if (this._menu) {
130
- const wasOpen = this._menuWasOpenOnPointerdown;
131
- this._menuWasOpenOnPointerdown = false;
132
- if (wasOpen)
133
- return; // light-dismiss already closed it
134
- this._menu.showPopover();
109
+ if (this._popup.handleClick(e))
135
110
  return;
136
- }
137
111
  this.dispatchEvent(new CustomEvent('menu-click', { bubbles: true, composed: true }));
138
112
  }
139
113
  // willUpdate (not updated) so the host width is resolved before the first
@@ -1 +1 @@
1
- {"version":3,"file":"split-button.js","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"split-button.js","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export function template() {
30
30
  ></nldd-icon-button>
31
31
  </div>
32
32
  </div>
33
- <slot @slotchange=${this._handleSlotChange}></slot>
33
+ <slot @slotchange=${this._popup.handleSlotChange}></slot>
34
34
  `;
35
35
  }
36
36
  //# sourceMappingURL=split-button.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-button.template.js","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,UAAU,QAAQ;IACvB,OAAO,IAAI,CAAA;;;cAGE,IAAI,CAAC,OAAO;WACf,IAAI,CAAC,IAAI;WACT,IAAI,CAAC,IAAI;iBACH,IAAI,CAAC,IAAI,IAAI,OAAO;;;;gBAIrB,IAAI,CAAC,QAAQ;aAChB,IAAI,CAAC,kBAAkB;;;;;eAKrB,IAAI,CAAC,OAAO;YACf,IAAI,CAAC,IAAI;;YAET,IAAI,CAAC,EAAE,CAAC,qCAAqC,CAAC;;;;iBAIzC,IAAI,CAAC,QAAQ;iBACb,IAAI,CAAC,WAAW;;cAEnB,IAAI,CAAC,gBAAgB;;;;sBAIb,IAAI,CAAC,iBAAiB;EAC1C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"split-button.template.js","sourceRoot":"","sources":["../../../../src/components/actions/split-button/split-button.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,UAAU,QAAQ;IACvB,OAAO,IAAI,CAAA;;;cAGE,IAAI,CAAC,OAAO;WACf,IAAI,CAAC,IAAI;WACT,IAAI,CAAC,IAAI;iBACH,IAAI,CAAC,IAAI,IAAI,OAAO;;;;gBAIrB,IAAI,CAAC,QAAQ;aAChB,IAAI,CAAC,kBAAkB;;;;;eAKrB,IAAI,CAAC,OAAO;YACf,IAAI,CAAC,IAAI;;YAET,IAAI,CAAC,EAAE,CAAC,qCAAqC,CAAC;;;;iBAIzC,IAAI,CAAC,QAAQ;iBACb,IAAI,CAAC,WAAW;;cAEnB,IAAI,CAAC,gBAAgB;;;;sBAIb,IAAI,CAAC,MAAM,CAAC,gBAAgB;EAChD,CAAC;AACH,CAAC"}
@@ -5,6 +5,7 @@
5
5
  * @attr {string} size - Toolbar size, propagated to all child controls: 'sm' | 'md' | 'lg' (default: 'md'). At 'lg' the overflow button (and lg-capable children like nldd-icon-button) stack their label below the icon.
6
6
  * @attr {boolean} show-item-labels - When true, shows a text label below each toolbar item and the overflow button
7
7
  * @attr {string} label - Accessible label for the toolbar. Only needed when multiple toolbars appear on the same page
8
+ * @attr {object} translations - Override translation keys (e.g. the overflow button label); unset keys fall back to Dutch.
8
9
  *
9
10
  * @slot start - nldd-toolbar-item and nldd-toolbar-title elements placed at the start
10
11
  * @slot center - nldd-toolbar-item and nldd-toolbar-title elements placed at the center
@@ -19,6 +20,8 @@
19
20
  * @attr {string} max-width - Maximum (fluid) width as a CSS length (e.g. '480px'). Setting it also makes the item fluid.
20
21
  * @attr {string} label - Text label shown below the item when the toolbar has show-item-labels.
21
22
  * @attr {number} priority - Overflow order: items with a lower priority move into the overflow menu first (default 0). Items sharing a priority overflow together, regardless of position.
23
+ * @attr {'sm'|'md'|'lg'} size - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's size (default: 'md') onto the item host, so size-dependent styling can key off it.
24
+ * @attr {boolean} show-item-labels - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's show-item-labels, so the item renders its label below the control.
22
25
  * @attr {boolean} fluid - Set by nldd-toolbar, not a consumer attribute: marks an item that grows or shrinks to fill space. Toggled synchronously during measurement, so it can appear or disappear between layout frames — do not style against it. It is not reflected as a JS property — read it with hasAttribute('fluid').
23
26
  * @attr {boolean} solo-fluid - Set by nldd-toolbar, not a consumer attribute: the sole fluid item, allowed to shrink below its content. Same synchronous-toggle and property-read caveats as fluid.
24
27
  * @attr {boolean} hidden - Set by nldd-toolbar, not a consumer attribute, when the item moves into the overflow menu. Same synchronous-toggle caveat.
@@ -35,6 +38,7 @@
35
38
  * @attr {string} width - Preferred (fluid) width as a CSS length or percentage; the title grows toward it and shrinks to min-width.
36
39
  * @attr {string} min-width - Minimum width as a CSS length (default: '0', so the title shrink-wraps its content and the next element sits against it).
37
40
  * @attr {string} max-width - Maximum width as a CSS length (default: '240px'); the title text truncates with an ellipsis beyond it. The cap is lifted while the title is the sole toolbar element (it then stretches to fill the row).
41
+ * @attr {'sm'|'md'|'lg'} size - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's size (default: 'md'), which sets the title group height and, at 'sm', the title and supporting-text fonts.
38
42
  *
39
43
  * @slot action - Optional trailing control (e.g. an xs nldd-icon-button), shown inline after the title and tuned to sit against it. Empty by default.
40
44
  */
@@ -84,6 +88,12 @@ export declare class NLDDToolbar extends LitElement {
84
88
  private _overflowIds;
85
89
  private _leftSpacerZero;
86
90
  private _rightSpacerZero;
91
+ /** True when nothing is *rendered* in the start/end areas (they may hold
92
+ * consumer-hidden `display:none` children), so the center content is the
93
+ * only visible group. Drives the centered `.toolbar__center-fill` layout —
94
+ * a hidden back button no longer strands a centered title at the left.
95
+ * Computed from real rendering, not mere child presence. */
96
+ private _centerOnly;
87
97
  private _pinnedOverflowItems;
88
98
  private _childIds;
89
99
  private _idCounter;
@@ -135,6 +145,10 @@ export declare class NLDDToolbar extends LitElement {
135
145
  private _computeAreaWidth;
136
146
  private _computeSpacerZeros;
137
147
  private _updateAreaVars;
148
+ /** Whether any child in the list is actually rendered. getClientRects() is
149
+ * empty for a `display:none` element (consumer-hidden or toolbar-hidden via
150
+ * `[hidden]`), so this counts real on-screen presence, not mere DOM presence. */
151
+ private _hasRenderedChild;
138
152
  private _measureAndUpdate;
139
153
  private _measureOverflow;
140
154
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/toolbar/toolbar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/toolbar/toolbar.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
11
11
  * @attr {string} size - Toolbar size, propagated to all child controls: 'sm' | 'md' | 'lg' (default: 'md'). At 'lg' the overflow button (and lg-capable children like nldd-icon-button) stack their label below the icon.
12
12
  * @attr {boolean} show-item-labels - When true, shows a text label below each toolbar item and the overflow button
13
13
  * @attr {string} label - Accessible label for the toolbar. Only needed when multiple toolbars appear on the same page
14
+ * @attr {object} translations - Override translation keys (e.g. the overflow button label); unset keys fall back to Dutch.
14
15
  *
15
16
  * @slot start - nldd-toolbar-item and nldd-toolbar-title elements placed at the start
16
17
  * @slot center - nldd-toolbar-item and nldd-toolbar-title elements placed at the center
@@ -25,6 +26,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
25
26
  * @attr {string} max-width - Maximum (fluid) width as a CSS length (e.g. '480px'). Setting it also makes the item fluid.
26
27
  * @attr {string} label - Text label shown below the item when the toolbar has show-item-labels.
27
28
  * @attr {number} priority - Overflow order: items with a lower priority move into the overflow menu first (default 0). Items sharing a priority overflow together, regardless of position.
29
+ * @attr {'sm'|'md'|'lg'} size - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's size (default: 'md') onto the item host, so size-dependent styling can key off it.
30
+ * @attr {boolean} show-item-labels - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's show-item-labels, so the item renders its label below the control.
28
31
  * @attr {boolean} fluid - Set by nldd-toolbar, not a consumer attribute: marks an item that grows or shrinks to fill space. Toggled synchronously during measurement, so it can appear or disappear between layout frames — do not style against it. It is not reflected as a JS property — read it with hasAttribute('fluid').
29
32
  * @attr {boolean} solo-fluid - Set by nldd-toolbar, not a consumer attribute: the sole fluid item, allowed to shrink below its content. Same synchronous-toggle and property-read caveats as fluid.
30
33
  * @attr {boolean} hidden - Set by nldd-toolbar, not a consumer attribute, when the item moves into the overflow menu. Same synchronous-toggle caveat.
@@ -41,6 +44,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
41
44
  * @attr {string} width - Preferred (fluid) width as a CSS length or percentage; the title grows toward it and shrinks to min-width.
42
45
  * @attr {string} min-width - Minimum width as a CSS length (default: '0', so the title shrink-wraps its content and the next element sits against it).
43
46
  * @attr {string} max-width - Maximum width as a CSS length (default: '240px'); the title text truncates with an ellipsis beyond it. The cap is lifted while the title is the sole toolbar element (it then stretches to fill the row).
47
+ * @attr {'sm'|'md'|'lg'} size - Set by nldd-toolbar, not a consumer attribute: mirrors the toolbar's size (default: 'md'), which sets the title group height and, at 'sm', the title and supporting-text fonts.
44
48
  *
45
49
  * @slot action - Optional trailing control (e.g. an xs nldd-icon-button), shown inline after the title and tuned to sit against it. Empty by default.
46
50
  */
@@ -191,6 +195,12 @@ let NLDDToolbar = class NLDDToolbar extends LitElement {
191
195
  this._overflowIds = new Set();
192
196
  this._leftSpacerZero = false;
193
197
  this._rightSpacerZero = false;
198
+ /** True when nothing is *rendered* in the start/end areas (they may hold
199
+ * consumer-hidden `display:none` children), so the center content is the
200
+ * only visible group. Drives the centered `.toolbar__center-fill` layout —
201
+ * a hidden back button no longer strands a centered title at the left.
202
+ * Computed from real rendering, not mere child presence. */
203
+ this._centerOnly = false;
194
204
  this._pinnedOverflowItems = [];
195
205
  this._childIds = new WeakMap();
196
206
  this._idCounter = 0;
@@ -529,11 +539,36 @@ let NLDDToolbar = class NLDDToolbar extends LitElement {
529
539
  this.style.setProperty('--_start-width', `${startWidth}px`);
530
540
  this.style.setProperty('--_center-width', `${centerWidth}px`);
531
541
  this.style.setProperty('--_end-width', `${endWidth}px`);
542
+ // The spacer basis subtracts a gap to account for the flex gap between a
543
+ // side area and its spacer. That gap only exists when the area is
544
+ // non-empty; with an empty start (or end) the spacer is the first (or
545
+ // last) item and there is no such gap, so drop the subtraction to 0 —
546
+ // otherwise the centre is pulled off-centre by one gap once the opposite
547
+ // side gains items.
548
+ this.style.setProperty('--_left-spacer-gap', startWidth > 0 ? `${itemGap}px` : '0px');
549
+ this.style.setProperty('--_right-spacer-gap', endWidth > 0 ? `${itemGap}px` : '0px');
532
550
  const { leftZero, rightZero } = this._computeSpacerZeros(hostWidth, itemGap, overflowButtonWidth, startWidth, centerWidth, endWidth);
533
551
  if (leftZero !== this._leftSpacerZero)
534
552
  this._leftSpacerZero = leftZero;
535
553
  if (rightZero !== this._rightSpacerZero)
536
554
  this._rightSpacerZero = rightZero;
555
+ // Route to the centered center-fill layout whenever nothing is actually
556
+ // rendered in start/end — measured by real rendering, not child presence,
557
+ // so a consumer-hidden (display:none) back button doesn't strand a centered
558
+ // title at the left (it would otherwise keep centerOnly false and fall into
559
+ // the spacer path, where startWidth===0 && endWidth===0 suppresses both
560
+ // balancing spacers).
561
+ const centerOnly = !this._hasRenderedChild(this._startChildren)
562
+ && !this._hasRenderedChild(this._endChildren)
563
+ && this._centerChildren.length > 0;
564
+ if (centerOnly !== this._centerOnly)
565
+ this._centerOnly = centerOnly;
566
+ }
567
+ /** Whether any child in the list is actually rendered. getClientRects() is
568
+ * empty for a `display:none` element (consumer-hidden or toolbar-hidden via
569
+ * `[hidden]`), so this counts real on-screen presence, not mere DOM presence. */
570
+ _hasRenderedChild(children) {
571
+ return children.some(c => c.element.getClientRects().length > 0);
537
572
  }
538
573
  _measureAndUpdate() {
539
574
  if (this._isMeasuring)
@@ -637,7 +672,12 @@ let NLDDToolbar = class NLDDToolbar extends LitElement {
637
672
  * promotion is skipped there (matching the previous template behaviour).
638
673
  */
639
674
  _promoteSoloFluid(itemsEl, itemChildren, titleChildren, centerOnly) {
640
- const remainingVisible = itemChildren.filter(c => !c.element.hidden);
675
+ // Real rendering, not the `hidden` property: a consumer-hidden
676
+ // (display:none) start/end item must not count as a "remaining visible"
677
+ // item, or it blocks promoting a lone title to solo-fluid (which is what
678
+ // lets align="center" actually centre it). Toolbar-hidden items are
679
+ // display:none too, so this stays equivalent for the overflow flow.
680
+ const remainingVisible = itemChildren.filter(c => c.element.getClientRects().length > 0);
641
681
  if (!centerOnly && remainingVisible.length === 1 && remainingVisible[0].element.hasAttribute('fluid')) {
642
682
  const host = remainingVisible[0].element;
643
683
  host.removeAttribute('fluid');
@@ -726,7 +766,7 @@ let NLDDToolbar = class NLDDToolbar extends LitElement {
726
766
  const visibleNonDivider = allChildren.filter(c => !this._overflowIds.has(c.id));
727
767
  const isSoloFluid = visibleNonDivider.length === 1 && (visibleNonDivider[0].type === 'title' ||
728
768
  (visibleNonDivider[0].type === 'item' && visibleNonDivider[0].isFluid));
729
- return template(this, this._centerChildren.length > 0, this._leftSpacerZero, this._rightSpacerZero, isSoloFluid, this._pinnedOverflowItems.length > 0 || this._overflowIds.size > 0, this._menuOpen, this.label, this._startChildren.length === 0 && this._endChildren.length === 0 && this._centerChildren.length > 0, (key) => this._t(key));
769
+ return template(this, this._centerChildren.length > 0, this._leftSpacerZero, this._rightSpacerZero, isSoloFluid, this._pinnedOverflowItems.length > 0 || this._overflowIds.size > 0, this._menuOpen, this.label, this._centerOnly, (key) => this._t(key));
730
770
  }
731
771
  };
732
772
  NLDDToolbar.styles = toolbarStyles;
@@ -763,6 +803,9 @@ __decorate([
763
803
  __decorate([
764
804
  state()
765
805
  ], NLDDToolbar.prototype, "_rightSpacerZero", void 0);
806
+ __decorate([
807
+ state()
808
+ ], NLDDToolbar.prototype, "_centerOnly", void 0);
766
809
  __decorate([
767
810
  state()
768
811
  ], NLDDToolbar.prototype, "_pinnedOverflowItems", void 0);