@duetds/components 5.4.1 → 5.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/hydrate/index.js +69 -52
  2. package/lib/cjs/duet-action-button.cjs.entry.js +2 -2
  3. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  7. package/lib/cjs/duet-button_2.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-caption_4.cjs.entry.js +1 -1
  9. package/lib/cjs/duet-card.cjs.entry.js +1 -1
  10. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  11. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
  12. package/lib/cjs/duet-collapsible.cjs.entry.js +1 -1
  13. package/lib/cjs/duet-combobox.cjs.entry.js +2 -2
  14. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-editable-table_3.cjs.entry.js +8 -3
  18. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
  22. package/lib/cjs/duet-header_2.cjs.entry.js +51 -49
  23. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  24. package/lib/cjs/duet-icon.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-input_2.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  28. package/lib/cjs/duet-modal.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  30. package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
  31. package/lib/cjs/duet-pagination_2.cjs.entry.js +2 -2
  32. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-scrollable_3.cjs.entry.js +1 -1
  36. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  40. package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
  41. package/lib/cjs/duet-tray.cjs.entry.js +1 -1
  42. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  43. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  44. package/lib/cjs/duet.cjs.js +1 -1
  45. package/lib/cjs/{focus-utils-61a69e27.js → focus-utils-9226aef7.js} +1 -1
  46. package/lib/cjs/{index-e68830a0.js → index-60a8ec8a.js} +8 -1
  47. package/lib/cjs/{js-utils-be1d29ae.js → js-utils-134e0318.js} +11 -0
  48. package/lib/cjs/loader.cjs.js +1 -1
  49. package/lib/collection/components/duet-header/duet-header-icon.js +1 -1
  50. package/lib/collection/components/duet-header/duet-header.css +69 -43
  51. package/lib/collection/components/duet-header/duet-header.js +117 -114
  52. package/lib/collection/components/duet-upload/upload-validators.js +6 -1
  53. package/lib/collection/utils/js-utils.js +11 -0
  54. package/lib/custom-elements-bundle/index.js +74 -50
  55. package/lib/duet/duet.esm.js +1 -1
  56. package/lib/duet/duet.js +1 -1
  57. package/lib/duet/p-07a2ad03.entry.js +4 -0
  58. package/lib/duet/{p-dbb4a588.js → p-0b3f675e.js} +0 -0
  59. package/lib/duet/{p-985cad9f.system.entry.js → p-0dbd00e1.system.entry.js} +1 -1
  60. package/lib/duet/{p-5ae9988c.entry.js → p-12606a4b.entry.js} +1 -1
  61. package/lib/duet/p-21321528.system.entry.js +4 -0
  62. package/lib/duet/{p-18d48e33.entry.js → p-28f87990.entry.js} +1 -1
  63. package/lib/duet/{p-13f46ee7.entry.js → p-2ac07ac9.entry.js} +1 -1
  64. package/lib/duet/{p-16952e4c.entry.js → p-2b155bd9.entry.js} +1 -1
  65. package/lib/duet/{p-1b17eaf5.system.js → p-309e3417.system.js} +3 -3
  66. package/lib/duet/{p-e89aeabf.system.entry.js → p-30fc343d.system.entry.js} +1 -1
  67. package/lib/duet/{p-bd6a7d90.system.entry.js → p-322676e3.system.entry.js} +1 -1
  68. package/lib/duet/{p-cec93899.system.entry.js → p-33a0c070.system.entry.js} +1 -1
  69. package/lib/duet/{p-92639d0b.system.js → p-34ea0849.system.js} +0 -0
  70. package/lib/duet/{p-8d16d52d.entry.js → p-440e2c47.entry.js} +1 -1
  71. package/lib/duet/{p-2d865c6b.entry.js → p-451adbf4.entry.js} +1 -1
  72. package/lib/duet/{p-25b2f6c4.system.entry.js → p-46b83696.system.entry.js} +1 -1
  73. package/lib/duet/{p-656c6565.entry.js → p-46d9a853.entry.js} +1 -1
  74. package/lib/duet/{p-11cab757.system.entry.js → p-48a036c1.system.entry.js} +1 -1
  75. package/lib/duet/{p-86aacc6c.system.entry.js → p-4dd79e38.system.entry.js} +1 -1
  76. package/lib/duet/{p-930ef39a.system.entry.js → p-526e6d8e.system.entry.js} +1 -1
  77. package/lib/duet/{p-0d100aa6.system.entry.js → p-56a80c32.system.entry.js} +1 -1
  78. package/lib/duet/{p-025d4390.entry.js → p-56f17656.entry.js} +1 -1
  79. package/lib/duet/{p-fe47e5d0.entry.js → p-590e8508.entry.js} +1 -1
  80. package/lib/duet/{p-3262c779.entry.js → p-5a5117d4.entry.js} +1 -1
  81. package/lib/duet/{p-9b558995.entry.js → p-5c1646f2.entry.js} +1 -1
  82. package/lib/duet/{p-6c6bd25f.entry.js → p-5ea398eb.entry.js} +1 -1
  83. package/lib/duet/{p-a90075e7.entry.js → p-5f528fa2.entry.js} +1 -1
  84. package/lib/duet/{p-1f70eb19.system.entry.js → p-62303524.system.entry.js} +1 -1
  85. package/lib/duet/{p-3f60c823.system.entry.js → p-6255147e.system.entry.js} +1 -1
  86. package/lib/duet/{p-78ae6f30.system.entry.js → p-63aea0dc.system.entry.js} +1 -1
  87. package/lib/duet/{p-d3d948a3.system.entry.js → p-64cbe9b7.system.entry.js} +1 -1
  88. package/lib/duet/{p-d828722e.entry.js → p-65821960.entry.js} +1 -1
  89. package/lib/duet/{p-ba362a52.entry.js → p-675d713b.entry.js} +1 -1
  90. package/lib/duet/{p-652b1bad.entry.js → p-67734fad.entry.js} +1 -1
  91. package/lib/duet/{p-895bbb3c.system.entry.js → p-67ed94fa.system.entry.js} +1 -1
  92. package/lib/duet/{p-49060f77.system.entry.js → p-6ab6ce4f.system.entry.js} +1 -1
  93. package/lib/duet/{p-38316d12.entry.js → p-6c5d3def.entry.js} +1 -1
  94. package/lib/duet/{p-19ae7dfc.system.entry.js → p-6e3f764f.system.entry.js} +1 -1
  95. package/lib/duet/{p-3d7ab631.js → p-6e64cd02.js} +2 -2
  96. package/lib/duet/{p-af5ad080.entry.js → p-6f1d6649.entry.js} +1 -1
  97. package/lib/duet/{p-1f411205.entry.js → p-70e567e9.entry.js} +1 -1
  98. package/lib/duet/{p-a290738e.entry.js → p-77e3591e.entry.js} +1 -1
  99. package/lib/duet/{p-f1ed2527.system.entry.js → p-79948b47.system.entry.js} +1 -1
  100. package/lib/duet/{p-8e9bd0bb.entry.js → p-7d0051ea.entry.js} +1 -1
  101. package/lib/duet/p-7dfc475d.entry.js +4 -0
  102. package/lib/duet/{p-ea1e9c21.system.entry.js → p-80d16341.system.entry.js} +1 -1
  103. package/lib/duet/{p-62a74682.system.entry.js → p-817ef07d.system.entry.js} +1 -1
  104. package/lib/duet/{p-5f4253e1.system.entry.js → p-838ef01e.system.entry.js} +1 -1
  105. package/lib/duet/{p-81365c09.system.entry.js → p-84310e48.system.entry.js} +1 -1
  106. package/lib/duet/{p-6d8b50c4.system.js → p-89f50fd8.system.js} +1 -1
  107. package/lib/duet/{p-0fe5d208.system.entry.js → p-8bf92f1e.system.entry.js} +1 -1
  108. package/lib/duet/{p-fc4fd026.system.entry.js → p-8e1cf2fb.system.entry.js} +1 -1
  109. package/lib/duet/{p-30d9f5f4.system.entry.js → p-9205c79a.system.entry.js} +1 -1
  110. package/lib/duet/{p-27af3967.entry.js → p-97130a4c.entry.js} +1 -1
  111. package/lib/duet/{p-2c8c61ce.entry.js → p-97631cdc.entry.js} +1 -1
  112. package/lib/duet/{p-46364bc6.system.entry.js → p-98ca5a08.system.entry.js} +2 -2
  113. package/lib/duet/p-99bf8545.js +4 -0
  114. package/lib/duet/{p-61a46581.system.entry.js → p-9c9fbda5.system.entry.js} +1 -1
  115. package/lib/duet/{p-b9955a11.system.entry.js → p-9df52009.system.entry.js} +1 -1
  116. package/lib/duet/{p-932bf52a.entry.js → p-a03485f8.entry.js} +1 -1
  117. package/lib/duet/p-a806d616.entry.js +4 -0
  118. package/lib/duet/{p-7169f6c1.entry.js → p-a91bb73d.entry.js} +1 -1
  119. package/lib/duet/{p-a35ad2c1.system.entry.js → p-ac86999f.system.entry.js} +1 -1
  120. package/lib/duet/{p-d134b0b3.entry.js → p-aefb80e3.entry.js} +1 -1
  121. package/lib/duet/{p-9d9c2b86.entry.js → p-b004cbd3.entry.js} +1 -1
  122. package/lib/duet/{p-3753f57c.system.entry.js → p-b28e6872.system.entry.js} +1 -1
  123. package/lib/duet/{p-c12f6508.system.entry.js → p-b2ac632f.system.entry.js} +1 -1
  124. package/lib/duet/{p-72428669.system.entry.js → p-b70f2ae2.system.entry.js} +1 -1
  125. package/lib/duet/{p-e2f2be10.entry.js → p-bc24eeda.entry.js} +1 -1
  126. package/lib/duet/{p-b6959e10.system.entry.js → p-bec4d094.system.entry.js} +1 -1
  127. package/lib/duet/{p-00e1e70f.entry.js → p-bf8f3b14.entry.js} +1 -1
  128. package/lib/duet/{p-c8cdb936.system.entry.js → p-c383ceb4.system.entry.js} +1 -1
  129. package/lib/duet/{p-138dc194.system.entry.js → p-c694e7fb.system.entry.js} +1 -1
  130. package/lib/duet/p-c918ce45.system.entry.js +4 -0
  131. package/lib/duet/{p-36c2321d.entry.js → p-c9f244f6.entry.js} +1 -1
  132. package/lib/duet/{p-cffc34b3.entry.js → p-d3d6e75d.entry.js} +1 -1
  133. package/lib/duet/{p-6daec143.entry.js → p-dfd9a9ff.entry.js} +1 -1
  134. package/lib/duet/{p-514d1b2d.entry.js → p-e3017ffc.entry.js} +1 -1
  135. package/lib/duet/{p-c6c6518c.entry.js → p-e358c599.entry.js} +1 -1
  136. package/lib/duet/{p-76b9d26f.entry.js → p-e5b22358.entry.js} +1 -1
  137. package/lib/duet/{p-0230f7c1.system.entry.js → p-ea12c081.system.entry.js} +1 -1
  138. package/lib/duet/{p-aa09f585.entry.js → p-ef2f6881.entry.js} +1 -1
  139. package/lib/duet/{p-4f12201d.system.entry.js → p-f2831cda.system.entry.js} +1 -1
  140. package/lib/duet/{p-4651626c.entry.js → p-f2dce86d.entry.js} +1 -1
  141. package/lib/duet/{p-634fbfc5.entry.js → p-f30eb0fd.entry.js} +1 -1
  142. package/lib/duet/{p-111d9c07.system.entry.js → p-f661ebf9.system.entry.js} +1 -1
  143. package/lib/duet/{p-fcecdd10.system.entry.js → p-f6f30fb7.system.entry.js} +1 -1
  144. package/lib/duet/{p-ab7ab38c.entry.js → p-faf6cfe8.entry.js} +1 -1
  145. package/lib/duet/{p-0ba86e25.system.entry.js → p-fdb0277c.system.entry.js} +1 -1
  146. package/lib/duet/{p-d073feef.system.js → p-fe03f359.system.js} +1 -1
  147. package/lib/duet/{p-aaf68044.system.entry.js → p-ffadc9ea.system.entry.js} +1 -1
  148. package/lib/esm/duet-action-button.entry.js +2 -2
  149. package/lib/esm/duet-alert.entry.js +1 -1
  150. package/lib/esm/duet-badge.entry.js +1 -1
  151. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  152. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  153. package/lib/esm/duet-button_2.entry.js +1 -1
  154. package/lib/esm/duet-caption_4.entry.js +1 -1
  155. package/lib/esm/duet-card.entry.js +1 -1
  156. package/lib/esm/duet-checkbox.entry.js +1 -1
  157. package/lib/esm/duet-choice_2.entry.js +2 -2
  158. package/lib/esm/duet-collapsible.entry.js +1 -1
  159. package/lib/esm/duet-combobox.entry.js +2 -2
  160. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  161. package/lib/esm/duet-date-picker.entry.js +2 -2
  162. package/lib/esm/duet-divider_2.entry.js +1 -1
  163. package/lib/esm/duet-editable-table_3.entry.js +8 -3
  164. package/lib/esm/duet-empty-state.entry.js +1 -1
  165. package/lib/esm/duet-fieldset.entry.js +1 -1
  166. package/lib/esm/duet-footer.entry.js +1 -1
  167. package/lib/esm/duet-grid_2.entry.js +1 -1
  168. package/lib/esm/duet-header_2.entry.js +51 -49
  169. package/lib/esm/duet-hero.entry.js +1 -1
  170. package/lib/esm/duet-icon.entry.js +1 -1
  171. package/lib/esm/duet-input_2.entry.js +1 -1
  172. package/lib/esm/duet-layout.entry.js +1 -1
  173. package/lib/esm/duet-list_2.entry.js +1 -1
  174. package/lib/esm/duet-modal.entry.js +2 -2
  175. package/lib/esm/duet-notification_2.entry.js +1 -1
  176. package/lib/esm/duet-number-input.entry.js +1 -1
  177. package/lib/esm/duet-pagination_2.entry.js +2 -2
  178. package/lib/esm/duet-progress.entry.js +1 -1
  179. package/lib/esm/duet-radio_2.entry.js +1 -1
  180. package/lib/esm/duet-range-slider.entry.js +1 -1
  181. package/lib/esm/duet-scrollable_3.entry.js +1 -1
  182. package/lib/esm/duet-select.entry.js +1 -1
  183. package/lib/esm/duet-step_2.entry.js +1 -1
  184. package/lib/esm/duet-textarea.entry.js +1 -1
  185. package/lib/esm/duet-toggle.entry.js +1 -1
  186. package/lib/esm/duet-tooltip.entry.js +1 -1
  187. package/lib/esm/duet-tray.entry.js +1 -1
  188. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  189. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  190. package/lib/esm/duet.js +1 -1
  191. package/lib/esm/{focus-utils-f28f7d53.js → focus-utils-8dc04c1c.js} +1 -1
  192. package/lib/esm/{index-1e42fd5c.js → index-e1964887.js} +8 -2
  193. package/lib/esm/{js-utils-52e0944c.js → js-utils-fa98b8cd.js} +11 -0
  194. package/lib/esm/loader.js +1 -1
  195. package/lib/esm-es5/duet-action-button.entry.js +1 -1
  196. package/lib/esm-es5/duet-alert.entry.js +1 -1
  197. package/lib/esm-es5/duet-badge.entry.js +1 -1
  198. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  199. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  200. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  201. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  202. package/lib/esm-es5/duet-card.entry.js +1 -1
  203. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  204. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  205. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  206. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  207. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  208. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  209. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  210. package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
  211. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  212. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  213. package/lib/esm-es5/duet-footer.entry.js +1 -1
  214. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  215. package/lib/esm-es5/duet-header_2.entry.js +2 -2
  216. package/lib/esm-es5/duet-hero.entry.js +1 -1
  217. package/lib/esm-es5/duet-icon.entry.js +1 -1
  218. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  219. package/lib/esm-es5/duet-layout.entry.js +1 -1
  220. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  221. package/lib/esm-es5/duet-modal.entry.js +1 -1
  222. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  223. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  224. package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
  225. package/lib/esm-es5/duet-progress.entry.js +1 -1
  226. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  227. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  228. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  229. package/lib/esm-es5/duet-select.entry.js +1 -1
  230. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  231. package/lib/esm-es5/duet-textarea.entry.js +2 -2
  232. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  233. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  234. package/lib/esm-es5/duet-tray.entry.js +1 -1
  235. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  236. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  237. package/lib/esm-es5/duet.js +1 -1
  238. package/lib/esm-es5/{focus-utils-f28f7d53.js → focus-utils-8dc04c1c.js} +1 -1
  239. package/lib/esm-es5/{index-1e42fd5c.js → index-e1964887.js} +3 -3
  240. package/lib/esm-es5/{js-utils-52e0944c.js → js-utils-fa98b8cd.js} +0 -0
  241. package/lib/esm-es5/loader.js +1 -1
  242. package/lib/types/components/duet-header/duet-header-icon.d.ts +1 -0
  243. package/lib/types/components/duet-header/duet-header.d.ts +2 -2
  244. package/lib/types/components.d.ts +2 -2
  245. package/lib/types/utils/js-utils.d.ts +11 -0
  246. package/package.json +5 -5
  247. package/lib/duet/p-1d6e11db.entry.js +0 -4
  248. package/lib/duet/p-358583f9.system.entry.js +0 -4
  249. package/lib/duet/p-6842301e.entry.js +0 -4
  250. package/lib/duet/p-7b6f2f71.js +0 -4
  251. package/lib/duet/p-983ce052.system.entry.js +0 -4
  252. package/lib/duet/p-d3443dea.entry.js +0 -4
@@ -25,7 +25,7 @@ const createEvent = (ev, data) => ({
25
25
  });
26
26
  /**
27
27
  * @slot utility - A slot for utilities, such as a notification drawer or shopping basket.
28
- * @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop. Note: not available in desktop multilevel header.
28
+ * @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop. Note: not available in multilevel header.
29
29
  * @part header - piercing selector for styling the header element.
30
30
  */
31
31
  export class DuetHeader {
@@ -57,7 +57,7 @@ export class DuetHeader {
57
57
  this.processedSearch = null;
58
58
  this.processedUser = null;
59
59
  this.processedBack = null;
60
- this.renderDesktopNav = (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches;
60
+ this.renderDesktopNav = Build.isServer ? true : (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches;
61
61
  /**
62
62
  * Theme of the header.
63
63
  */
@@ -173,7 +173,7 @@ export class DuetHeader {
173
173
  this.skipToId = "";
174
174
  /**
175
175
  * Region that is shown next to the logo. If empty, region will be hidden.
176
- * Note: not available in desktop multilevel header.
176
+ * Note: not available in multilevel header.
177
177
  */
178
178
  this.region = "";
179
179
  /**
@@ -418,8 +418,9 @@ export class DuetHeader {
418
418
  * Local methods.
419
419
  */
420
420
  async refresh() {
421
- if (this.renderDesktopNav !== this.mql[0].matches) {
422
- this.renderDesktopNav = this.mql[0].matches;
421
+ var _a, _b;
422
+ if (this.renderDesktopNav !== Build.isServer ? true : (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches) {
423
+ this.renderDesktopNav = Build.isServer ? true : (_b = this.mql[0]) === null || _b === void 0 ? void 0 : _b.matches;
423
424
  this.openMenu = null;
424
425
  if (this.isSlideOutOpen) {
425
426
  this.toggleMenu(document.createEvent("UIEvents"), "mobile");
@@ -492,10 +493,10 @@ export class DuetHeader {
492
493
  */
493
494
  render() {
494
495
  const { skipLabel, changeLanguage, activeLanguage } = this.accessibleI18nLabels;
495
- const skipToLabel = this.skipToId ? (h("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)) : null;
496
- const logo = (h("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
497
- const largeLogo = (h("duet-logo", { href: this.logoHref, size: "large", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
498
- const contactDropdown = this.contact && this.processedContactItems ? (h(DuetHeaderDropdown, { id: "duet-header-contact", label: this.contact, icon: contactDropdownIcon.svg, active: this.isContactOpen, isOpen: this.isContactOpen, badge: false, toggleRef: el => (this.contactItemsButtonEl = el), itemsRef: el => (this.contactItemsEl = el), onToggle: event => this.toggleMenu(event, "contact") }, this.processedContactItems.map(item => (h("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
496
+ const skipToLabel = () => this.skipToId ? (h("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)) : null;
497
+ const logo = () => (h("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
498
+ const largeLogo = () => (h("duet-logo", { href: this.logoHref, size: "large", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
499
+ const contactDropdown = () => this.contact && this.processedContactItems ? (h(DuetHeaderDropdown, { id: "duet-header-contact", label: this.contact, icon: contactDropdownIcon.svg, active: this.isContactOpen, isOpen: this.isContactOpen, badge: false, toggleRef: el => (this.contactItemsButtonEl = el), itemsRef: el => (this.contactItemsEl = el), onToggle: event => this.toggleMenu(event, "contact") }, this.processedContactItems.map(item => (h("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
499
500
  item.label,
500
501
  Build.isBrowser && item.external && (h(Fragment, null,
501
502
  h("duet-visually-hidden", null,
@@ -503,25 +504,25 @@ export class DuetHeader {
503
504
  this.accessibleLabelExternal),
504
505
  h("span", { class: "duet-header-link-external" },
505
506
  h("duet-icon", { name: "action-new-window-small", size: "xx-small", margin: "none", color: this.theme === "turva" ? "primary-turva" : "primary" }))))))))) : null;
506
- const languageDropdown = this.language && this.processedLanguageItems ? (h(DuetHeaderDropdown, { id: "duet-header-language", label: this.language, icon: languageIcon.svg, accessibleText: `${changeLanguage}${this.hasLanguageChanged ? `, ${activeLanguage}` : ""}`, active: this.isLanguageOpen, isOpen: this.isLanguageOpen, badge: false, toggleRef: el => (this.languageItemsButtonEl = el), itemsRef: el => (this.languageItemsEl = el), onToggle: event => this.toggleMenu(event, "language") }, this.processedLanguageItems.map(item => (h("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))))) : null;
507
- const processedUserWithLink = this.processedUser && this.processedUser.href ? (h("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick },
507
+ const languageDropdown = () => this.language && this.processedLanguageItems ? (h(DuetHeaderDropdown, { id: "duet-header-language", label: this.language, icon: languageIcon.svg, accessibleText: `${changeLanguage}${this.hasLanguageChanged ? `, ${activeLanguage}` : ""}`, active: this.isLanguageOpen, isOpen: this.isLanguageOpen, badge: false, toggleRef: el => (this.languageItemsButtonEl = el), itemsRef: el => (this.languageItemsEl = el), onToggle: event => this.toggleMenu(event, "language") }, this.processedLanguageItems.map(item => (h("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))))) : null;
508
+ const processedUserWithLink = () => this.processedUser && this.processedUser.href ? (h("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick },
508
509
  h(DuetHeaderIcon, { icon: userIcon.svg }),
509
510
  h("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
510
- const processedUserWithoutLink = this.processedUser && !this.processedUser.href ? (h("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" },
511
+ const processedUserWithoutLink = () => this.processedUser && !this.processedUser.href ? (h("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" },
511
512
  h(DuetHeaderIcon, { icon: userIcon.svg }),
512
513
  h("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
513
- const processedSessionIconSize = this.renderDesktopNav ? "x-small" : "small";
514
- const processedSession = this.processedSession ? (h("a", { href: this.processedSession.href || "#", id: this.processedSession.id, class: "duet-header-logout duet-header-button", onClick: this.handleSessionClick },
515
- h(DuetHeaderIcon, { icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize: processedSessionIconSize }),
514
+ const processedSession = () => this.processedSession ? (h("a", { href: this.processedSession.href || "#", id: this.processedSession.id, class: "duet-header-logout duet-header-button", onClick: this.handleSessionClick },
515
+ h(DuetHeaderIcon, { class: "desktop", icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize: "x-small" }),
516
+ h(DuetHeaderIcon, { class: "mobile", icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize: "small" }),
516
517
  h("span", { class: "duet-header-button-label" }, this.processedSession.label))) : null;
517
- const processedSessionDropdown = this.processedSession && this.processedSession.sessionItems ? (h(DuetHeaderDropdown, { className: "duet-header-session", id: "duet-header-session", label: this.processedSession.label, icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, active: this.isSessionOpen, isOpen: this.isSessionOpen, badge: false, toggleRef: el => (this.sessionItemsButtonEl = el), itemsRef: el => (this.sessionItemsEl = el), onToggle: event => this.toggleMenu(event, "session") }, this.processedSession.sessionItems.map((sessionItem, index) => (h(Fragment, null,
518
+ const processedSessionDropdown = () => this.processedSession && this.processedSession.sessionItems ? (h(DuetHeaderDropdown, { className: "duet-header-session", id: "duet-header-session", label: this.processedSession.label, icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, active: this.isSessionOpen, isOpen: this.isSessionOpen, badge: false, toggleRef: el => (this.sessionItemsButtonEl = el), itemsRef: el => (this.sessionItemsEl = el), onToggle: event => this.toggleMenu(event, "session") }, this.processedSession.sessionItems.map((sessionItem, index) => (h(Fragment, null,
518
519
  sessionItem.label && h("span", { class: "duet-header-session-label" }, sessionItem.label),
519
520
  h("duet-spacer", { size: "small", "aria-hidden": "true" }),
520
521
  sessionItem.items.map(item => (h("a", { role: "menuitem", "aria-label": sessionItem.label ? `${sessionItem.label} ${item.label}` : item.label, id: item.id, href: item.href || "#", onClick: event => this.handleSessionItemClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))),
521
522
  index !== this.processedSession.sessionItems.length - 1 && (h(Fragment, null,
522
523
  h("duet-spacer", { size: "x-small", "aria-hidden": "true" }),
523
524
  h("duet-divider", { margin: "none", "aria-hidden": "true" })))))))) : null;
524
- const processedSearch = this.processedSearch ? (h("a", { href: this.processedSearch.href || "#", id: this.processedSearch.id, class: "duet-header-search duet-header-button", onClick: this.handleSearchClick },
525
+ const processedSearch = () => this.processedSearch ? (h("a", { href: this.processedSearch.href || "#", id: this.processedSearch.id, class: "duet-header-search duet-header-button", onClick: this.handleSearchClick },
525
526
  h(DuetHeaderIcon, { icon: searchIcon.svg }),
526
527
  h("span", { class: "duet-header-button-label" }, this.processedSearch.label))) : null;
527
528
  // Back variation
@@ -535,23 +536,104 @@ export class DuetHeader {
535
536
  "duet-header-inactive": true,
536
537
  }, part: "header" },
537
538
  h("div", { class: "duet-header-top" },
538
- skipToLabel,
539
+ skipToLabel(),
539
540
  h("duet-button", { url: this.processedBack.href, id: this.processedBack.id, theme: this.theme, variation: "plain", color: this.theme === "turva" ? "secondary-turva" : "secondary", icon: "navigation-arrow-left", iconSize: "large", onClick: this.handleBackClick }, this.processedBack.label),
540
- logo,
541
+ logo(),
541
542
  h("slot", { name: "logo-utility" }))))));
542
543
  }
543
- // multi level desktop variation
544
544
  const itemsHaveSubItems = this.processedItems && this.processedItems.some(item => item.items && item.items.length > 0);
545
- if (this.renderDesktopNav && itemsHaveSubItems) {
545
+ const isSecondLevelActive = this.processedItems &&
546
+ this.processedItems.some(item => item.items && item.items.some(secondLevelItem => secondLevelItem.active === true));
547
+ const isThirdLevelActive = this.processedItems &&
548
+ this.processedItems.some(item => item.items &&
549
+ item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
550
+ const defaultVariationContent = (h("div", { class: {
551
+ "duet-header-reserved-space": true,
552
+ "duet-with-links": !!this.processedItems,
553
+ "duet-header-second-level-active": isSecondLevelActive,
554
+ "duet-header-third-level-active": isThirdLevelActive,
555
+ "duet-header-items-have-sub-items": itemsHaveSubItems,
556
+ } },
557
+ h("header", { class: {
558
+ "duet-header": true,
559
+ "duet-theme-turva": this.theme === "turva",
560
+ "duet-header-inactive": !this.processedItems,
561
+ }, part: "header" },
562
+ h("div", { class: "duet-header-top" },
563
+ skipToLabel(),
564
+ logo(),
565
+ h("slot", { name: "logo-utility" }, this.region && h("div", { class: "duet-header-region" }, this.region)),
566
+ (this.processedItems ||
567
+ languageDropdown() ||
568
+ contactDropdown() ||
569
+ this.processedSession ||
570
+ this.processedUser) && (h("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" },
571
+ h("duet-visually-hidden", null, this.accessibleLabel),
572
+ h(DuetHeaderHamburger, null)))),
573
+ h("div", { ref: el => (this.navigationEl = el), class: {
574
+ "duet-header-bottom": true,
575
+ active: this.isSlideOutOpen,
576
+ inactive: !this.processedItems,
577
+ } },
578
+ h("nav", { class: "duet-header-items", role: "navigation" }, this.processedItems &&
579
+ this.processedItems.map((item, itemIndex) => (h("div", { class: "duet-header-item-container" },
580
+ h("a", { class: {
581
+ "duet-header-first-level": true,
582
+ "duet-header-item": true,
583
+ active: (!itemsHaveSubItems && this.currentHref === item.href) ||
584
+ (item.active === true &&
585
+ !this.openMenu &&
586
+ this.closedActives &&
587
+ this.closedActives.length === 1) ||
588
+ (item.active === true &&
589
+ !this.openMenu &&
590
+ item.items &&
591
+ !item.items.some(s => s.active === true)),
592
+ }, href: item.href || "#", id: item.id || `header-item-${itemIndex}`, onClick: event => this.handleItemClick(event, item) },
593
+ item.label,
594
+ item.badge && h("div", { class: "duet-header-badge" })),
595
+ item.items &&
596
+ item.items
597
+ .filter(secondLevelitem => secondLevelitem.items && secondLevelitem.items.length > 0)
598
+ .map((secondLevelItem, secondLevelItemIndex) => {
599
+ const id = secondLevelItem.id || `header-item-${itemIndex}-${secondLevelItemIndex}`;
600
+ const active = (!this.openMenu &&
601
+ secondLevelItem.active === true &&
602
+ !(this.closedActives && !!this.closedActives.find(i => i === id))) ||
603
+ this.openMenu === id;
604
+ const activeBar = active && !(secondLevelItem.items && secondLevelItem.items.some(s => s.active === true));
605
+ return (h(DuetHeaderDropdown, { id: id, className: "duet-header-second-level", label: secondLevelItem.label, icon: `${secondLevelItem.icon}.svg`, active: activeBar, isOpen: active, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id, secondLevelItem.active === true) },
606
+ h("div", { class: "duet-header-third-level" }, secondLevelItem.items &&
607
+ secondLevelItem.items.map(thirdLevelItem => (h("a", { class: {
608
+ "duet-header-item": true,
609
+ active: thirdLevelItem.active === true,
610
+ }, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, thirdLevelItem), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" },
611
+ thirdLevelItem.icon && (h("div", { class: "duet-header-icon" },
612
+ h("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))),
613
+ h("span", null, thirdLevelItem.label),
614
+ thirdLevelItem.badge && h("div", { class: "duet-header-badge" })))))));
615
+ }))))),
616
+ h("div", { class: "duet-header-bottom-utils" },
617
+ h("slot", { name: "utility" })),
618
+ h("div", { class: "duet-header-utils" },
619
+ !itemsHaveSubItems && contactDropdown(),
620
+ languageDropdown(),
621
+ !itemsHaveSubItems && (h(Fragment, null,
622
+ processedUserWithLink(),
623
+ processedUserWithoutLink())),
624
+ processedSearch(),
625
+ processedSession())))));
626
+ // multi level variation
627
+ if (itemsHaveSubItems) {
546
628
  const activeSegment = this.processedItems.find(item => item.active);
547
629
  const isThirdLevelActive = this.processedItems &&
548
630
  this.processedItems.some(item => item.items &&
549
631
  item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
550
632
  const segmentId = "duet-header-segment";
551
- return (h(Host, { class: "duet-header-multi-level-desktop-variation" },
633
+ return (h(Host, { class: "duet-header-multi-level-variation" },
552
634
  h("div", { class: {
553
- "duet-header-multi-level-desktop": true,
554
- "duet-header-multi-level-desktop-third-level-is-open": isThirdLevelActive,
635
+ "duet-header-multi-level": true,
636
+ "duet-header-multi-level-third-level-is-open": isThirdLevelActive,
555
637
  } },
556
638
  h("header", { class: {
557
639
  "duet-header": true,
@@ -559,15 +641,15 @@ export class DuetHeader {
559
641
  "duet-header-inactive": !this.processedItems,
560
642
  }, part: "header" },
561
643
  h("div", { class: "duet-header-top" },
562
- skipToLabel,
644
+ skipToLabel(),
563
645
  h("div", { class: "logo-and-segment" },
564
- h("div", null, largeLogo),
646
+ h("div", null, largeLogo()),
565
647
  this.processedItems && (h(DuetHeaderDropdown, { id: segmentId, label: activeSegment.label, active: this.isSegmentOpen, isOpen: this.isSegmentOpen, badge: false, toggleRef: el => (this.segmentItemsButtonEl = el), itemsRef: el => (this.segmentItemsEl = el), onToggle: event => this.toggleMenu(event, "segment") }, this.processedItems.map(item => (h("a", { class: { active: activeSegment === item }, role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleItemClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
566
648
  item.icon && (h("div", { class: "duet-header-icon" },
567
649
  h("duet-icon", { margin: "none", size: "x-small", name: item.icon, color: "currentColor" }))),
568
650
  h("span", null, item.label),
569
651
  item.badge && h("div", { class: "duet-header-badge" }))))))),
570
- h("nav", { class: "duet-header-multi-level-desktop-nav" }, activeSegment.items &&
652
+ h("nav", { class: "duet-header-multi-level-nav" }, activeSegment.items &&
571
653
  activeSegment.items
572
654
  .filter(secondLevelItem => secondLevelItem.items && secondLevelItem.items.length > 0)
573
655
  .map((secondLevelItem, secondLevelItemIndex) => {
@@ -579,96 +661,17 @@ export class DuetHeader {
579
661
  h("span", null, thirdLevelItem.label),
580
662
  thirdLevelItem.badge && h("div", { class: "duet-header-badge" }))))));
581
663
  })),
582
- h("div", { class: "duet-header-multi-level-desktop-utils" },
583
- processedSearch,
584
- languageDropdown,
585
- processedSessionDropdown != null ? processedSessionDropdown : processedSession),
586
- h("slot", { name: "utility" }))))));
664
+ h("div", { class: "duet-header-multi-level-utils" },
665
+ processedSearch(),
666
+ languageDropdown(),
667
+ processedSessionDropdown() != null ? processedSessionDropdown() : processedSession()),
668
+ h("slot", { name: "utility" })))),
669
+ defaultVariationContent));
587
670
  }
588
671
  // Default variation
589
- const isSecondLevelActive = this.processedItems &&
590
- this.processedItems.some(item => item.items && item.items.some(secondLevelItem => secondLevelItem.active === true));
591
- const isThirdLevelActive = this.processedItems &&
592
- this.processedItems.some(item => item.items &&
593
- item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
594
672
  return (h(Host, { class: {
595
673
  "duet-header-default-variation": true,
596
- } },
597
- h("div", { class: {
598
- "duet-header-reserved-space": true,
599
- "duet-with-links": !!this.processedItems,
600
- "duet-header-second-level-active": isSecondLevelActive,
601
- "duet-header-third-level-active": isThirdLevelActive,
602
- } },
603
- h("header", { class: {
604
- "duet-header": true,
605
- "duet-theme-turva": this.theme === "turva",
606
- "duet-header-inactive": !this.processedItems,
607
- }, part: "header" },
608
- h("div", { class: "duet-header-top" },
609
- skipToLabel,
610
- logo,
611
- h("slot", { name: "logo-utility" }, this.region && h("div", { class: "duet-header-region" }, this.region)),
612
- (this.processedItems ||
613
- languageDropdown ||
614
- contactDropdown ||
615
- this.processedSession ||
616
- this.processedUser) && (h("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" },
617
- h("duet-visually-hidden", null, this.accessibleLabel),
618
- h(DuetHeaderHamburger, null)))),
619
- h("div", { ref: el => (this.navigationEl = el), class: {
620
- "duet-header-bottom": true,
621
- active: this.isSlideOutOpen,
622
- inactive: !this.processedItems,
623
- } },
624
- h("nav", { class: "duet-header-items", role: "navigation" }, this.processedItems &&
625
- this.processedItems.map((item, itemIndex) => (h("div", { class: "duet-header-item-container" },
626
- h("a", { class: {
627
- "duet-header-first-level": true,
628
- "duet-header-item": true,
629
- active: (!itemsHaveSubItems && this.currentHref === item.href) ||
630
- (item.active === true &&
631
- !this.openMenu &&
632
- this.closedActives &&
633
- this.closedActives.length === 1) ||
634
- (item.active === true &&
635
- !this.openMenu &&
636
- item.items &&
637
- !item.items.some(s => s.active === true)),
638
- }, href: item.href || "#", id: item.id || `header-item-${itemIndex}`, onClick: event => this.handleItemClick(event, item) },
639
- item.label,
640
- item.badge && h("div", { class: "duet-header-badge" })),
641
- item.items &&
642
- item.items
643
- .filter(secondLevelitem => secondLevelitem.items && secondLevelitem.items.length > 0)
644
- .map((secondLevelItem, secondLevelItemIndex) => {
645
- const id = secondLevelItem.id || `header-item-${itemIndex}-${secondLevelItemIndex}`;
646
- const active = (!this.openMenu &&
647
- secondLevelItem.active === true &&
648
- !(this.closedActives && !!this.closedActives.find(i => i === id))) ||
649
- this.openMenu === id;
650
- const activeBar = active && !(secondLevelItem.items && secondLevelItem.items.some(s => s.active === true));
651
- return (h(DuetHeaderDropdown, { id: id, className: "duet-header-second-level", label: secondLevelItem.label, icon: `${secondLevelItem.icon}.svg`, active: activeBar, isOpen: active, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id, secondLevelItem.active === true) },
652
- h("div", { class: "duet-header-third-level" }, secondLevelItem.items &&
653
- secondLevelItem.items.map(thirdLevelItem => (h("a", { class: {
654
- "duet-header-item": true,
655
- active: thirdLevelItem.active === true,
656
- }, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, thirdLevelItem), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" },
657
- thirdLevelItem.icon && (h("div", { class: "duet-header-icon" },
658
- h("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))),
659
- h("span", null, thirdLevelItem.label),
660
- thirdLevelItem.badge && h("div", { class: "duet-header-badge" })))))));
661
- }))))),
662
- h("div", { class: "duet-header-bottom-utils" },
663
- h("slot", { name: "utility" })),
664
- h("div", { class: "duet-header-utils" },
665
- !itemsHaveSubItems && contactDropdown,
666
- languageDropdown,
667
- !itemsHaveSubItems && (h(Fragment, null,
668
- processedUserWithLink,
669
- processedUserWithoutLink)),
670
- processedSearch,
671
- processedSession))))));
674
+ } }, defaultVariationContent));
672
675
  }
673
676
  static get is() { return "duet-header"; }
674
677
  static get encapsulation() { return "shadow"; }
@@ -977,7 +980,7 @@ export class DuetHeader {
977
980
  "optional": false,
978
981
  "docs": {
979
982
  "tags": [],
980
- "text": "Region that is shown next to the logo. If empty, region will be hidden.\nNote: not available in desktop multilevel header."
983
+ "text": "Region that is shown next to the logo. If empty, region will be hidden.\nNote: not available in multilevel header."
981
984
  },
982
985
  "attribute": "region",
983
986
  "reflect": false,
@@ -40,7 +40,12 @@ export const validateFile = (item, validators, errorCodes) => {
40
40
  if (item) {
41
41
  const { name, type, size } = item;
42
42
  const mime = validateFileMime(type, allowedMimetypes);
43
- const ext = validateFileExtension(name.toLowerCase(), allowedExtensions);
43
+ const ext = allowedExtensions === "all" ||
44
+ allowedExtensions === "" ||
45
+ allowedExtensions === " " ||
46
+ allowedExtensions === undefined
47
+ ? true
48
+ : validateFileExtension(name.toLowerCase(), allowedExtensions);
44
49
  const bytes = validateFileSize(size, maxBytes);
45
50
  if (!mime) {
46
51
  errorMessage = getError("duet-upload-101", errorCodes);
@@ -10,6 +10,17 @@ export const debounce = (func, timeout = 250) => {
10
10
  }, timeout);
11
11
  };
12
12
  };
13
+ /**
14
+ * The fieldSorter function is a helper function that takes an array of objects and returns
15
+ * a function that can be used to sort those objects. The returned sorting function takes two
16
+ * parameters, which are compared using the field values in the object. If one object's field value is greater than another's, then 1 is returned; if they're equal, 0 is returned; and if one object's field value is less than another's, - 1 will be returned. This allows for easy sorting by multiple fields in any order desired (e.g., first by name ascending and then by age descending).
17
+ *
18
+ *
19
+ * @param fields Sort the table
20
+ *
21
+ * @return A function that takes two objects and returns an integer
22
+ *
23
+ */
13
24
  export function fieldSorter(fields) {
14
25
  return function (a, b) {
15
26
  return fields