@postnord/pn-marketweb-components 3.5.2 → 3.5.3

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 (400) hide show
  1. package/cjs/alert_exclamation_circle-24f29a5b.js +8 -0
  2. package/cjs/alert_exclamation_circle-24f29a5b.js.map +1 -0
  3. package/cjs/loader.cjs.js +1 -1
  4. package/cjs/pn-address-autofill.cjs.entry.js +47 -72
  5. package/cjs/pn-address-autofill.cjs.entry.js.map +1 -1
  6. package/cjs/pn-dropdown-choice-adds-row.cjs.entry.js +18 -6
  7. package/cjs/pn-dropdown-choice-adds-row.cjs.entry.js.map +1 -1
  8. package/cjs/pn-market-web-components.cjs.js +1 -1
  9. package/cjs/pn-marketweb-input.cjs.entry.js +2 -4
  10. package/cjs/pn-marketweb-input.cjs.entry.js.map +1 -1
  11. package/collection/components/input/pn-address-autofill/pn-address-autofill.css +6 -1
  12. package/collection/components/input/pn-address-autofill/pn-address-autofill.js +58 -68
  13. package/collection/components/input/pn-address-autofill/pn-address-autofill.js.map +1 -1
  14. package/collection/components/input/pn-address-autofill/pn-address-autofill.stories.js +2 -1
  15. package/collection/components/input/pn-address-autofill/translations.js +6 -3
  16. package/collection/components/input/pn-address-autofill/translations.js.map +1 -1
  17. package/collection/components/input/pn-dropdown-choice-adds-row/pn-dropdown-choice-adds-row.js +18 -6
  18. package/collection/components/input/pn-dropdown-choice-adds-row/pn-dropdown-choice-adds-row.js.map +1 -1
  19. package/components/alert_exclamation_circle.js +6 -0
  20. package/components/alert_exclamation_circle.js.map +1 -0
  21. package/components/pn-address-autofill.js +48 -72
  22. package/components/pn-address-autofill.js.map +1 -1
  23. package/components/pn-dropdown-choice-adds-row.js +18 -6
  24. package/components/pn-dropdown-choice-adds-row.js.map +1 -1
  25. package/components/pn-marketweb-input2.js +1 -3
  26. package/components/pn-marketweb-input2.js.map +1 -1
  27. package/esm/alert_exclamation_circle-f0fe7c7b.js +6 -0
  28. package/esm/alert_exclamation_circle-f0fe7c7b.js.map +1 -0
  29. package/esm/loader.js +1 -1
  30. package/esm/pn-address-autofill.entry.js +47 -72
  31. package/esm/pn-address-autofill.entry.js.map +1 -1
  32. package/esm/pn-dropdown-choice-adds-row.entry.js +18 -6
  33. package/esm/pn-dropdown-choice-adds-row.entry.js.map +1 -1
  34. package/esm/pn-market-web-components.js +1 -1
  35. package/esm/pn-marketweb-input.entry.js +1 -3
  36. package/esm/pn-marketweb-input.entry.js.map +1 -1
  37. package/package.json +1 -1
  38. package/pn-market-web-components/p-0ac30ee9.entry.js +2 -0
  39. package/pn-market-web-components/p-0ac30ee9.entry.js.map +1 -0
  40. package/pn-market-web-components/p-15d70aaf.entry.js +2 -0
  41. package/pn-market-web-components/p-15d70aaf.entry.js.map +1 -0
  42. package/pn-market-web-components/p-76c2c01f.js +2 -0
  43. package/pn-market-web-components/p-76c2c01f.js.map +1 -0
  44. package/pn-market-web-components/p-a11fdf9f.entry.js +2 -0
  45. package/pn-market-web-components/p-a11fdf9f.entry.js.map +1 -0
  46. package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  47. package/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
  48. package/types/components/input/pn-address-autofill/pn-address-autofill.d.ts +2 -3
  49. package/types/components/input/pn-address-autofill/translations.d.ts +3 -0
  50. package/types/components.d.ts +2 -0
  51. package/umd/modules/@postnord/web-components/cjs/{angle_down-0b63ebde.js → chevron_down-83e72319.js} +3 -3
  52. package/umd/modules/@postnord/web-components/cjs/chevron_down-83e72319.js.map +1 -0
  53. package/umd/modules/@postnord/web-components/cjs/{angle_right-c8c55b43.js → chevron_right-aeb6aef3.js} +5 -5
  54. package/umd/modules/@postnord/web-components/cjs/chevron_right-aeb6aef3.js.map +1 -0
  55. package/umd/modules/@postnord/web-components/cjs/loader.cjs.js +1 -1
  56. package/umd/modules/@postnord/web-components/cjs/pn-accordion-row.cjs.entry.js +2 -2
  57. package/umd/modules/@postnord/web-components/cjs/pn-accordion-row.cjs.entry.js.map +1 -1
  58. package/umd/modules/@postnord/web-components/cjs/pn-action-menu.cjs.entry.js +42 -12
  59. package/umd/modules/@postnord/web-components/cjs/pn-action-menu.cjs.entry.js.map +1 -1
  60. package/umd/modules/@postnord/web-components/cjs/pn-button_2.cjs.entry.js +1 -1
  61. package/umd/modules/@postnord/web-components/cjs/pn-card.cjs.entry.js +1 -1
  62. package/umd/modules/@postnord/web-components/cjs/pn-checkbox.cjs.entry.js +1 -1
  63. package/umd/modules/@postnord/web-components/cjs/pn-choice-chip.cjs.entry.js +1 -1
  64. package/umd/modules/@postnord/web-components/cjs/pn-counter.cjs.entry.js +1 -1
  65. package/umd/modules/@postnord/web-components/cjs/pn-date-picker.cjs.entry.js +22 -6
  66. package/umd/modules/@postnord/web-components/cjs/pn-date-picker.cjs.entry.js.map +1 -1
  67. package/umd/modules/@postnord/web-components/cjs/pn-fieldset.cjs.entry.js +1 -1
  68. package/umd/modules/@postnord/web-components/cjs/pn-file-upload.cjs.entry.js +1 -1
  69. package/umd/modules/@postnord/web-components/cjs/pn-footer.cjs.entry.js +1 -1
  70. package/umd/modules/@postnord/web-components/cjs/pn-header.cjs.entry.js +1 -1
  71. package/umd/modules/@postnord/web-components/cjs/pn-input.cjs.entry.js +2 -2
  72. package/umd/modules/@postnord/web-components/cjs/pn-modal.cjs.entry.js +21 -7
  73. package/umd/modules/@postnord/web-components/cjs/pn-modal.cjs.entry.js.map +1 -1
  74. package/umd/modules/@postnord/web-components/cjs/pn-multiselect.cjs.entry.js +2 -2
  75. package/umd/modules/@postnord/web-components/cjs/pn-multiselect.cjs.entry.js.map +1 -1
  76. package/umd/modules/@postnord/web-components/cjs/pn-ocr-search.cjs.entry.js +1 -1
  77. package/umd/modules/@postnord/web-components/cjs/pn-page-nav-dropdown-item.cjs.entry.js +1 -1
  78. package/umd/modules/@postnord/web-components/cjs/pn-page-nav-item.cjs.entry.js +1 -1
  79. package/umd/modules/@postnord/web-components/cjs/pn-page-nav.cjs.entry.js +2 -2
  80. package/umd/modules/@postnord/web-components/cjs/pn-page-nav.cjs.entry.js.map +1 -1
  81. package/umd/modules/@postnord/web-components/cjs/pn-pagination.cjs.entry.js +1 -1
  82. package/umd/modules/@postnord/web-components/cjs/pn-progress-bar.cjs.entry.js +1 -1
  83. package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator-step.cjs.entry.js +1 -1
  84. package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator-step.cjs.entry.js.map +1 -1
  85. package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator.cjs.entry.js +1 -1
  86. package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator.cjs.entry.js.map +1 -1
  87. package/umd/modules/@postnord/web-components/cjs/pn-progress-stepper.cjs.entry.js +26 -41
  88. package/umd/modules/@postnord/web-components/cjs/pn-progress-stepper.cjs.entry.js.map +1 -1
  89. package/umd/modules/@postnord/web-components/cjs/pn-radio-button.cjs.entry.js +1 -1
  90. package/umd/modules/@postnord/web-components/cjs/pn-search-field.cjs.entry.js +1 -1
  91. package/umd/modules/@postnord/web-components/cjs/pn-segment.cjs.entry.js +1 -1
  92. package/umd/modules/@postnord/web-components/cjs/pn-segmented-control.cjs.entry.js +1 -1
  93. package/umd/modules/@postnord/web-components/cjs/pn-select.cjs.entry.js +2 -2
  94. package/umd/modules/@postnord/web-components/cjs/pn-select.cjs.entry.js.map +1 -1
  95. package/umd/modules/@postnord/web-components/cjs/pn-tab.cjs.entry.js +1 -1
  96. package/umd/modules/@postnord/web-components/cjs/pn-tablist.cjs.entry.js +2 -2
  97. package/umd/modules/@postnord/web-components/cjs/pn-tablist.cjs.entry.js.map +1 -1
  98. package/umd/modules/@postnord/web-components/cjs/pn-text-link.cjs.entry.js +1 -1
  99. package/umd/modules/@postnord/web-components/cjs/pn-textarea.cjs.entry.js +1 -1
  100. package/umd/modules/@postnord/web-components/cjs/pn-tile.cjs.entry.js +1 -1
  101. package/umd/modules/@postnord/web-components/cjs/pn-toast.cjs.entry.js +25 -16
  102. package/umd/modules/@postnord/web-components/cjs/pn-toast.cjs.entry.js.map +1 -1
  103. package/umd/modules/@postnord/web-components/cjs/pn-toggle-switch.cjs.entry.js +1 -1
  104. package/umd/modules/@postnord/web-components/cjs/pn-tooltip.cjs.entry.js +1 -1
  105. package/umd/modules/@postnord/web-components/cjs/pn-zipcode-search.cjs.entry.js +1 -1
  106. package/umd/modules/@postnord/web-components/cjs/postnord-web-components.cjs.js +1 -1
  107. package/umd/modules/@postnord/web-components/collection/components/buttons/pn-action-menu/pn-action-menu.js +41 -11
  108. package/umd/modules/@postnord/web-components/collection/components/buttons/pn-action-menu/pn-action-menu.js.map +1 -1
  109. package/umd/modules/@postnord/web-components/collection/components/content/pn-accordion/row/pn-accordion-row.js +2 -2
  110. package/umd/modules/@postnord/web-components/collection/components/content/pn-accordion/row/pn-accordion-row.js.map +1 -1
  111. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.css +92 -40
  112. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.js +35 -9
  113. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.js.map +1 -1
  114. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-bar/pn-progress-bar.js +1 -1
  115. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.js +5 -1
  116. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.js.map +1 -1
  117. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator.js +5 -1
  118. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator.js.map +1 -1
  119. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.css +85 -9
  120. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.js +100 -97
  121. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.js.map +1 -1
  122. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-spinner/pn-spinner.js +1 -1
  123. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.css +0 -1
  124. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.js +24 -15
  125. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.js.map +1 -1
  126. package/umd/modules/@postnord/web-components/collection/components/feedback/pn-tooltip/pn-tooltip.js +1 -1
  127. package/umd/modules/@postnord/web-components/collection/components/input/pn-checkbox/pn-checkbox.js +1 -1
  128. package/umd/modules/@postnord/web-components/collection/components/input/pn-choice-chip/pn-choice-chip.js +1 -1
  129. package/umd/modules/@postnord/web-components/collection/components/input/pn-counter/pn-counter.js +1 -1
  130. package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.css +2 -3
  131. package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.js +22 -6
  132. package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.js.map +1 -1
  133. package/umd/modules/@postnord/web-components/collection/components/input/pn-fieldset/pn-fieldset.js +1 -1
  134. package/umd/modules/@postnord/web-components/collection/components/input/pn-file-upload/pn-file-upload.js +1 -1
  135. package/umd/modules/@postnord/web-components/collection/components/input/pn-input/pn-input.js +2 -2
  136. package/umd/modules/@postnord/web-components/collection/components/input/pn-multiselect/pn-multiselect.js +2 -2
  137. package/umd/modules/@postnord/web-components/collection/components/input/pn-multiselect/pn-multiselect.js.map +1 -1
  138. package/umd/modules/@postnord/web-components/collection/components/input/pn-radio-button/pn-radio-button.js +1 -1
  139. package/umd/modules/@postnord/web-components/collection/components/input/pn-search-field/pn-search-field.js +1 -1
  140. package/umd/modules/@postnord/web-components/collection/components/input/pn-segmented-control/pn-segmented-control.js +1 -1
  141. package/umd/modules/@postnord/web-components/collection/components/input/pn-segmented-control/segment/pn-segment.js +1 -1
  142. package/umd/modules/@postnord/web-components/collection/components/input/pn-select/pn-select.js +2 -2
  143. package/umd/modules/@postnord/web-components/collection/components/input/pn-select/pn-select.js.map +1 -1
  144. package/umd/modules/@postnord/web-components/collection/components/input/pn-textarea/pn-textarea.js +1 -1
  145. package/umd/modules/@postnord/web-components/collection/components/input/pn-toggle-switch/pn-toggle-switch.js +1 -1
  146. package/umd/modules/@postnord/web-components/collection/components/layout/pn-header/pn-header.js +1 -1
  147. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-card/pn-card.js +1 -1
  148. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-footer/pn-footer.js +1 -1
  149. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/dropdown-item/pn-page-nav-dropdown-item.js +1 -1
  150. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/item/pn-page-nav-item.js +1 -1
  151. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/menu/pn-page-nav.js +2 -2
  152. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/menu/pn-page-nav.js.map +1 -1
  153. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-pagination/pn-pagination.js +1 -1
  154. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/pn-tablist.js +2 -2
  155. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/pn-tablist.js.map +1 -1
  156. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/tab/pn-tab.js +1 -1
  157. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-text-link/pn-text-link.js +1 -1
  158. package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tile/pn-tile.js +1 -1
  159. package/umd/modules/@postnord/web-components/collection/components/web-components/pn-ocr-search/pn-ocr-search.js +1 -1
  160. package/umd/modules/@postnord/web-components/collection/components/web-components/pn-zipcode-search/pn-zipcode-search.js +1 -1
  161. package/umd/modules/@postnord/web-components/collection/globals/types.js.map +1 -1
  162. package/umd/modules/@postnord/web-components/components/{angle_down.js → chevron_down.js} +3 -3
  163. package/umd/modules/@postnord/web-components/components/chevron_down.js.map +1 -0
  164. package/umd/modules/@postnord/web-components/{esm/angle_right-b52095c9.js → components/chevron_right.js} +4 -4
  165. package/umd/modules/@postnord/web-components/components/chevron_right.js.map +1 -0
  166. package/umd/modules/@postnord/web-components/components/pn-accordion-row.js +2 -2
  167. package/umd/modules/@postnord/web-components/components/pn-accordion-row.js.map +1 -1
  168. package/umd/modules/@postnord/web-components/components/pn-action-menu.js +42 -12
  169. package/umd/modules/@postnord/web-components/components/pn-action-menu.js.map +1 -1
  170. package/umd/modules/@postnord/web-components/components/pn-card.js +1 -1
  171. package/umd/modules/@postnord/web-components/components/pn-checkbox.js +1 -1
  172. package/umd/modules/@postnord/web-components/components/pn-choice-chip.js +1 -1
  173. package/umd/modules/@postnord/web-components/components/pn-counter.js +1 -1
  174. package/umd/modules/@postnord/web-components/components/pn-date-picker.js +23 -7
  175. package/umd/modules/@postnord/web-components/components/pn-date-picker.js.map +1 -1
  176. package/umd/modules/@postnord/web-components/components/pn-fieldset.js +1 -1
  177. package/umd/modules/@postnord/web-components/components/pn-file-upload.js +1 -1
  178. package/umd/modules/@postnord/web-components/components/pn-footer.js +1 -1
  179. package/umd/modules/@postnord/web-components/components/pn-header.js +1 -1
  180. package/umd/modules/@postnord/web-components/components/pn-input.js +2 -2
  181. package/umd/modules/@postnord/web-components/components/pn-modal.js +25 -10
  182. package/umd/modules/@postnord/web-components/components/pn-modal.js.map +1 -1
  183. package/umd/modules/@postnord/web-components/components/pn-multiselect.js +2 -2
  184. package/umd/modules/@postnord/web-components/components/pn-multiselect.js.map +1 -1
  185. package/umd/modules/@postnord/web-components/components/pn-ocr-search.js +1 -1
  186. package/umd/modules/@postnord/web-components/components/pn-page-nav-dropdown-item.js +1 -1
  187. package/umd/modules/@postnord/web-components/components/pn-page-nav-item.js +1 -1
  188. package/umd/modules/@postnord/web-components/components/pn-page-nav.js +2 -2
  189. package/umd/modules/@postnord/web-components/components/pn-page-nav.js.map +1 -1
  190. package/umd/modules/@postnord/web-components/components/pn-pagination.js +1 -1
  191. package/umd/modules/@postnord/web-components/components/pn-progress-bar2.js +1 -1
  192. package/umd/modules/@postnord/web-components/components/pn-progress-indicator-step.js +1 -1
  193. package/umd/modules/@postnord/web-components/components/pn-progress-indicator-step.js.map +1 -1
  194. package/umd/modules/@postnord/web-components/components/pn-progress-indicator.js +1 -1
  195. package/umd/modules/@postnord/web-components/components/pn-progress-indicator.js.map +1 -1
  196. package/umd/modules/@postnord/web-components/components/pn-progress-stepper.js +34 -48
  197. package/umd/modules/@postnord/web-components/components/pn-progress-stepper.js.map +1 -1
  198. package/umd/modules/@postnord/web-components/components/pn-radio-button.js +1 -1
  199. package/umd/modules/@postnord/web-components/components/pn-search-field2.js +1 -1
  200. package/umd/modules/@postnord/web-components/components/pn-segment.js +1 -1
  201. package/umd/modules/@postnord/web-components/components/pn-segmented-control.js +1 -1
  202. package/umd/modules/@postnord/web-components/components/pn-select2.js +2 -2
  203. package/umd/modules/@postnord/web-components/components/pn-select2.js.map +1 -1
  204. package/umd/modules/@postnord/web-components/components/pn-spinner2.js +1 -1
  205. package/umd/modules/@postnord/web-components/components/pn-tab.js +1 -1
  206. package/umd/modules/@postnord/web-components/components/pn-tablist.js +2 -2
  207. package/umd/modules/@postnord/web-components/components/pn-tablist.js.map +1 -1
  208. package/umd/modules/@postnord/web-components/components/pn-text-link2.js +1 -1
  209. package/umd/modules/@postnord/web-components/components/pn-textarea.js +1 -1
  210. package/umd/modules/@postnord/web-components/components/pn-tile.js +1 -1
  211. package/umd/modules/@postnord/web-components/components/pn-toast.js +25 -16
  212. package/umd/modules/@postnord/web-components/components/pn-toast.js.map +1 -1
  213. package/umd/modules/@postnord/web-components/components/pn-toggle-switch.js +1 -1
  214. package/umd/modules/@postnord/web-components/components/pn-tooltip.js +1 -1
  215. package/umd/modules/@postnord/web-components/components/pn-zipcode-search.js +1 -1
  216. package/umd/modules/@postnord/web-components/esm/{angle_down-d788f691.js → chevron_down-6e3fb42f.js} +3 -3
  217. package/umd/modules/@postnord/web-components/esm/chevron_down-6e3fb42f.js.map +1 -0
  218. package/umd/modules/@postnord/web-components/{components/angle_right.js → esm/chevron_right-9d9305e8.js} +4 -4
  219. package/umd/modules/@postnord/web-components/esm/chevron_right-9d9305e8.js.map +1 -0
  220. package/umd/modules/@postnord/web-components/esm/loader.js +1 -1
  221. package/umd/modules/@postnord/web-components/esm/pn-accordion-row.entry.js +2 -2
  222. package/umd/modules/@postnord/web-components/esm/pn-accordion-row.entry.js.map +1 -1
  223. package/umd/modules/@postnord/web-components/esm/pn-action-menu.entry.js +42 -12
  224. package/umd/modules/@postnord/web-components/esm/pn-action-menu.entry.js.map +1 -1
  225. package/umd/modules/@postnord/web-components/esm/pn-button_2.entry.js +1 -1
  226. package/umd/modules/@postnord/web-components/esm/pn-card.entry.js +1 -1
  227. package/umd/modules/@postnord/web-components/esm/pn-checkbox.entry.js +1 -1
  228. package/umd/modules/@postnord/web-components/esm/pn-choice-chip.entry.js +1 -1
  229. package/umd/modules/@postnord/web-components/esm/pn-counter.entry.js +1 -1
  230. package/umd/modules/@postnord/web-components/esm/pn-date-picker.entry.js +23 -7
  231. package/umd/modules/@postnord/web-components/esm/pn-date-picker.entry.js.map +1 -1
  232. package/umd/modules/@postnord/web-components/esm/pn-fieldset.entry.js +1 -1
  233. package/umd/modules/@postnord/web-components/esm/pn-file-upload.entry.js +1 -1
  234. package/umd/modules/@postnord/web-components/esm/pn-footer.entry.js +1 -1
  235. package/umd/modules/@postnord/web-components/esm/pn-header.entry.js +1 -1
  236. package/umd/modules/@postnord/web-components/esm/pn-input.entry.js +2 -2
  237. package/umd/modules/@postnord/web-components/esm/pn-modal.entry.js +22 -8
  238. package/umd/modules/@postnord/web-components/esm/pn-modal.entry.js.map +1 -1
  239. package/umd/modules/@postnord/web-components/esm/pn-multiselect.entry.js +2 -2
  240. package/umd/modules/@postnord/web-components/esm/pn-multiselect.entry.js.map +1 -1
  241. package/umd/modules/@postnord/web-components/esm/pn-ocr-search.entry.js +1 -1
  242. package/umd/modules/@postnord/web-components/esm/pn-page-nav-dropdown-item.entry.js +1 -1
  243. package/umd/modules/@postnord/web-components/esm/pn-page-nav-item.entry.js +1 -1
  244. package/umd/modules/@postnord/web-components/esm/pn-page-nav.entry.js +2 -2
  245. package/umd/modules/@postnord/web-components/esm/pn-page-nav.entry.js.map +1 -1
  246. package/umd/modules/@postnord/web-components/esm/pn-pagination.entry.js +1 -1
  247. package/umd/modules/@postnord/web-components/esm/pn-progress-bar.entry.js +1 -1
  248. package/umd/modules/@postnord/web-components/esm/pn-progress-indicator-step.entry.js +1 -1
  249. package/umd/modules/@postnord/web-components/esm/pn-progress-indicator-step.entry.js.map +1 -1
  250. package/umd/modules/@postnord/web-components/esm/pn-progress-indicator.entry.js +1 -1
  251. package/umd/modules/@postnord/web-components/esm/pn-progress-indicator.entry.js.map +1 -1
  252. package/umd/modules/@postnord/web-components/esm/pn-progress-stepper.entry.js +26 -41
  253. package/umd/modules/@postnord/web-components/esm/pn-progress-stepper.entry.js.map +1 -1
  254. package/umd/modules/@postnord/web-components/esm/pn-radio-button.entry.js +1 -1
  255. package/umd/modules/@postnord/web-components/esm/pn-search-field.entry.js +1 -1
  256. package/umd/modules/@postnord/web-components/esm/pn-segment.entry.js +1 -1
  257. package/umd/modules/@postnord/web-components/esm/pn-segmented-control.entry.js +1 -1
  258. package/umd/modules/@postnord/web-components/esm/pn-select.entry.js +2 -2
  259. package/umd/modules/@postnord/web-components/esm/pn-select.entry.js.map +1 -1
  260. package/umd/modules/@postnord/web-components/esm/pn-tab.entry.js +1 -1
  261. package/umd/modules/@postnord/web-components/esm/pn-tablist.entry.js +2 -2
  262. package/umd/modules/@postnord/web-components/esm/pn-tablist.entry.js.map +1 -1
  263. package/umd/modules/@postnord/web-components/esm/pn-text-link.entry.js +1 -1
  264. package/umd/modules/@postnord/web-components/esm/pn-textarea.entry.js +1 -1
  265. package/umd/modules/@postnord/web-components/esm/pn-tile.entry.js +1 -1
  266. package/umd/modules/@postnord/web-components/esm/pn-toast.entry.js +25 -16
  267. package/umd/modules/@postnord/web-components/esm/pn-toast.entry.js.map +1 -1
  268. package/umd/modules/@postnord/web-components/esm/pn-toggle-switch.entry.js +1 -1
  269. package/umd/modules/@postnord/web-components/esm/pn-tooltip.entry.js +1 -1
  270. package/umd/modules/@postnord/web-components/esm/pn-zipcode-search.entry.js +1 -1
  271. package/umd/modules/@postnord/web-components/esm/postnord-web-components.js +1 -1
  272. package/umd/modules/@postnord/web-components/hydrate/index.js +204 -137
  273. package/umd/modules/@postnord/web-components/hydrate/index.mjs +204 -137
  274. package/umd/modules/@postnord/web-components/package.json +16 -14
  275. package/umd/modules/@postnord/web-components/postnord-web-components/{p-7e88df1f.entry.js → p-01472170.entry.js} +2 -2
  276. package/umd/modules/@postnord/web-components/postnord-web-components/{p-ed4271af.entry.js → p-06c7e91b.entry.js} +2 -2
  277. package/umd/modules/@postnord/web-components/postnord-web-components/p-06c7e91b.entry.js.map +1 -0
  278. package/umd/modules/@postnord/web-components/postnord-web-components/{p-8773152d.entry.js → p-10532427.entry.js} +2 -2
  279. package/umd/modules/@postnord/web-components/postnord-web-components/{p-ffe79fa4.entry.js → p-11ef58ab.entry.js} +2 -2
  280. package/umd/modules/@postnord/web-components/postnord-web-components/p-16fb83d9.entry.js +6 -0
  281. package/umd/modules/@postnord/web-components/postnord-web-components/p-16fb83d9.entry.js.map +1 -0
  282. package/umd/modules/@postnord/web-components/postnord-web-components/{p-d74ccbb2.entry.js → p-1cd57319.entry.js} +2 -2
  283. package/umd/modules/@postnord/web-components/postnord-web-components/{p-adc6404b.entry.js → p-1e7c31ed.entry.js} +2 -2
  284. package/umd/modules/@postnord/web-components/postnord-web-components/p-1e7c31ed.entry.js.map +1 -0
  285. package/umd/modules/@postnord/web-components/postnord-web-components/{p-c2bbbcaa.entry.js → p-1fe6fc61.entry.js} +2 -2
  286. package/umd/modules/@postnord/web-components/postnord-web-components/{p-203ad7de.entry.js → p-23fdc4b6.entry.js} +2 -2
  287. package/umd/modules/@postnord/web-components/postnord-web-components/p-23fdc4b6.entry.js.map +1 -0
  288. package/umd/modules/@postnord/web-components/postnord-web-components/p-240f6613.entry.js +6 -0
  289. package/umd/modules/@postnord/web-components/postnord-web-components/{p-7ae9c053.entry.js.map → p-240f6613.entry.js.map} +1 -1
  290. package/umd/modules/@postnord/web-components/postnord-web-components/{p-4f67fffa.entry.js → p-28357e12.entry.js} +2 -2
  291. package/umd/modules/@postnord/web-components/postnord-web-components/p-28357e12.entry.js.map +1 -0
  292. package/umd/modules/@postnord/web-components/postnord-web-components/{p-c96ff403.js → p-2f7bb5e8.js} +2 -2
  293. package/umd/modules/@postnord/web-components/postnord-web-components/p-2f7bb5e8.js.map +1 -0
  294. package/umd/modules/@postnord/web-components/postnord-web-components/{p-5b0000e9.entry.js → p-363f578a.entry.js} +2 -2
  295. package/umd/modules/@postnord/web-components/postnord-web-components/{p-c0d19737.entry.js → p-37297b9a.entry.js} +2 -2
  296. package/umd/modules/@postnord/web-components/postnord-web-components/p-49a39ea1.entry.js +6 -0
  297. package/umd/modules/@postnord/web-components/postnord-web-components/p-49a39ea1.entry.js.map +1 -0
  298. package/umd/modules/@postnord/web-components/postnord-web-components/{p-bc95d4b0.entry.js → p-49f5fdd2.entry.js} +2 -2
  299. package/umd/modules/@postnord/web-components/postnord-web-components/p-49f5fdd2.entry.js.map +1 -0
  300. package/umd/modules/@postnord/web-components/postnord-web-components/{p-b556b835.entry.js → p-4d371963.entry.js} +2 -2
  301. package/umd/modules/@postnord/web-components/postnord-web-components/{p-ab29b9c0.entry.js → p-4eaab357.entry.js} +2 -2
  302. package/umd/modules/@postnord/web-components/postnord-web-components/{p-da713fc1.entry.js → p-5ed7e9b7.entry.js} +2 -2
  303. package/umd/modules/@postnord/web-components/postnord-web-components/p-617a946d.entry.js +6 -0
  304. package/umd/modules/@postnord/web-components/postnord-web-components/p-617a946d.entry.js.map +1 -0
  305. package/umd/modules/@postnord/web-components/postnord-web-components/{p-e087c5c5.entry.js → p-63aa3911.entry.js} +2 -2
  306. package/umd/modules/@postnord/web-components/postnord-web-components/p-65ae6360.entry.js +6 -0
  307. package/umd/modules/@postnord/web-components/postnord-web-components/p-65ae6360.entry.js.map +1 -0
  308. package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf015c0f.entry.js → p-699b7bde.entry.js} +2 -2
  309. package/umd/modules/@postnord/web-components/postnord-web-components/{p-9bc1d14f.entry.js → p-6f9a21be.entry.js} +2 -2
  310. package/umd/modules/@postnord/web-components/postnord-web-components/p-75c5fb41.entry.js +6 -0
  311. package/umd/modules/@postnord/web-components/postnord-web-components/p-75c5fb41.entry.js.map +1 -0
  312. package/umd/modules/@postnord/web-components/postnord-web-components/{p-bd14cdca.entry.js → p-8e07bc17.entry.js} +2 -2
  313. package/umd/modules/@postnord/web-components/postnord-web-components/{p-7bd6d804.entry.js → p-8eaa2540.entry.js} +2 -2
  314. package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf967b50.js → p-99600bc7.js} +2 -2
  315. package/umd/modules/@postnord/web-components/postnord-web-components/p-99600bc7.js.map +1 -0
  316. package/umd/modules/@postnord/web-components/postnord-web-components/{p-ff068744.entry.js → p-9cecd28d.entry.js} +2 -2
  317. package/umd/modules/@postnord/web-components/postnord-web-components/{p-605d99df.entry.js → p-a440734f.entry.js} +2 -2
  318. package/umd/modules/@postnord/web-components/postnord-web-components/{p-b9a494ae.entry.js → p-ab553e80.entry.js} +2 -2
  319. package/umd/modules/@postnord/web-components/postnord-web-components/{p-936ed2a1.entry.js → p-ae04e001.entry.js} +2 -2
  320. package/umd/modules/@postnord/web-components/postnord-web-components/p-ae04e001.entry.js.map +1 -0
  321. package/umd/modules/@postnord/web-components/postnord-web-components/{p-a4df55c4.entry.js → p-b202a599.entry.js} +2 -2
  322. package/umd/modules/@postnord/web-components/postnord-web-components/p-b83e6373.entry.js +6 -0
  323. package/umd/modules/@postnord/web-components/postnord-web-components/p-b83e6373.entry.js.map +1 -0
  324. package/umd/modules/@postnord/web-components/postnord-web-components/{p-fcd5028f.entry.js → p-bdb9bdc3.entry.js} +2 -2
  325. package/umd/modules/@postnord/web-components/postnord-web-components/{p-81f9f367.entry.js → p-cebe3a25.entry.js} +2 -2
  326. package/umd/modules/@postnord/web-components/postnord-web-components/{p-76b020f0.entry.js → p-d2f7b4a9.entry.js} +2 -2
  327. package/umd/modules/@postnord/web-components/postnord-web-components/{p-c45dc75d.entry.js → p-e8050420.entry.js} +2 -2
  328. package/umd/modules/@postnord/web-components/postnord-web-components/{p-412fc8d6.entry.js → p-eee2d131.entry.js} +2 -2
  329. package/umd/modules/@postnord/web-components/postnord-web-components/{p-d3521b5d.entry.js → p-fb5d6d47.entry.js} +2 -2
  330. package/umd/modules/@postnord/web-components/postnord-web-components/postnord-web-components.esm.js +1 -1
  331. package/umd/modules/@postnord/web-components/postnord-web-components/postnord-web-components.esm.js.map +1 -1
  332. package/umd/modules/@postnord/web-components/types/components/buttons/pn-action-menu/pn-action-menu.d.ts +3 -0
  333. package/umd/modules/@postnord/web-components/types/components/feedback/pn-modal/pn-modal.d.ts +12 -2
  334. package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.d.ts +4 -0
  335. package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-indicator/pn-progress-indicator.d.ts +4 -0
  336. package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-stepper/pn-progress-stepper.d.ts +27 -22
  337. package/umd/modules/@postnord/web-components/types/components/feedback/pn-toast/pn-toast.d.ts +2 -1
  338. package/umd/modules/@postnord/web-components/types/components.d.ts +60 -12
  339. package/umd/modules/@postnord/web-components/types/globals/types.d.ts +2 -1
  340. package/umd/modules/@postnord/web-components/vscode-data.json +7 -3
  341. package/vscode-data.json +4 -0
  342. package/pn-market-web-components/p-59cb7166.entry.js +0 -2
  343. package/pn-market-web-components/p-59cb7166.entry.js.map +0 -1
  344. package/pn-market-web-components/p-7c3091eb.entry.js +0 -2
  345. package/pn-market-web-components/p-7c3091eb.entry.js.map +0 -1
  346. package/pn-market-web-components/p-94a69959.entry.js +0 -2
  347. package/pn-market-web-components/p-94a69959.entry.js.map +0 -1
  348. package/umd/modules/@postnord/web-components/cjs/angle_down-0b63ebde.js.map +0 -1
  349. package/umd/modules/@postnord/web-components/cjs/angle_right-c8c55b43.js.map +0 -1
  350. package/umd/modules/@postnord/web-components/components/angle_down.js.map +0 -1
  351. package/umd/modules/@postnord/web-components/components/angle_right.js.map +0 -1
  352. package/umd/modules/@postnord/web-components/esm/angle_down-d788f691.js.map +0 -1
  353. package/umd/modules/@postnord/web-components/esm/angle_right-b52095c9.js.map +0 -1
  354. package/umd/modules/@postnord/web-components/postnord-web-components/p-203ad7de.entry.js.map +0 -1
  355. package/umd/modules/@postnord/web-components/postnord-web-components/p-2615282e.entry.js +0 -6
  356. package/umd/modules/@postnord/web-components/postnord-web-components/p-2615282e.entry.js.map +0 -1
  357. package/umd/modules/@postnord/web-components/postnord-web-components/p-3bd59ac8.entry.js +0 -6
  358. package/umd/modules/@postnord/web-components/postnord-web-components/p-3bd59ac8.entry.js.map +0 -1
  359. package/umd/modules/@postnord/web-components/postnord-web-components/p-4f67fffa.entry.js.map +0 -1
  360. package/umd/modules/@postnord/web-components/postnord-web-components/p-514107a5.entry.js +0 -6
  361. package/umd/modules/@postnord/web-components/postnord-web-components/p-514107a5.entry.js.map +0 -1
  362. package/umd/modules/@postnord/web-components/postnord-web-components/p-6a30576b.entry.js +0 -6
  363. package/umd/modules/@postnord/web-components/postnord-web-components/p-6a30576b.entry.js.map +0 -1
  364. package/umd/modules/@postnord/web-components/postnord-web-components/p-7ae9c053.entry.js +0 -6
  365. package/umd/modules/@postnord/web-components/postnord-web-components/p-8bc8f614.entry.js +0 -6
  366. package/umd/modules/@postnord/web-components/postnord-web-components/p-8bc8f614.entry.js.map +0 -1
  367. package/umd/modules/@postnord/web-components/postnord-web-components/p-936ed2a1.entry.js.map +0 -1
  368. package/umd/modules/@postnord/web-components/postnord-web-components/p-adc6404b.entry.js.map +0 -1
  369. package/umd/modules/@postnord/web-components/postnord-web-components/p-bc95d4b0.entry.js.map +0 -1
  370. package/umd/modules/@postnord/web-components/postnord-web-components/p-bf967b50.js.map +0 -1
  371. package/umd/modules/@postnord/web-components/postnord-web-components/p-c96ff403.js.map +0 -1
  372. package/umd/modules/@postnord/web-components/postnord-web-components/p-ed4271af.entry.js.map +0 -1
  373. package/umd/modules/@postnord/web-components/postnord-web-components/p-fc5f9092.entry.js +0 -6
  374. package/umd/modules/@postnord/web-components/postnord-web-components/p-fc5f9092.entry.js.map +0 -1
  375. package/umd/modules/@postnord/web-components/readme.md +0 -32
  376. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-7e88df1f.entry.js.map → p-01472170.entry.js.map} +0 -0
  377. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-8773152d.entry.js.map → p-10532427.entry.js.map} +0 -0
  378. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ffe79fa4.entry.js.map → p-11ef58ab.entry.js.map} +0 -0
  379. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-d74ccbb2.entry.js.map → p-1cd57319.entry.js.map} +0 -0
  380. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c2bbbcaa.entry.js.map → p-1fe6fc61.entry.js.map} +0 -0
  381. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-5b0000e9.entry.js.map → p-363f578a.entry.js.map} +0 -0
  382. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c0d19737.entry.js.map → p-37297b9a.entry.js.map} +0 -0
  383. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-b556b835.entry.js.map → p-4d371963.entry.js.map} +0 -0
  384. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ab29b9c0.entry.js.map → p-4eaab357.entry.js.map} +0 -0
  385. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-da713fc1.entry.js.map → p-5ed7e9b7.entry.js.map} +0 -0
  386. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-e087c5c5.entry.js.map → p-63aa3911.entry.js.map} +0 -0
  387. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf015c0f.entry.js.map → p-699b7bde.entry.js.map} +0 -0
  388. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-9bc1d14f.entry.js.map → p-6f9a21be.entry.js.map} +0 -0
  389. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-bd14cdca.entry.js.map → p-8e07bc17.entry.js.map} +0 -0
  390. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-7bd6d804.entry.js.map → p-8eaa2540.entry.js.map} +0 -0
  391. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ff068744.entry.js.map → p-9cecd28d.entry.js.map} +0 -0
  392. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-605d99df.entry.js.map → p-a440734f.entry.js.map} +0 -0
  393. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-b9a494ae.entry.js.map → p-ab553e80.entry.js.map} +0 -0
  394. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-a4df55c4.entry.js.map → p-b202a599.entry.js.map} +0 -0
  395. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-fcd5028f.entry.js.map → p-bdb9bdc3.entry.js.map} +0 -0
  396. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-81f9f367.entry.js.map → p-cebe3a25.entry.js.map} +0 -0
  397. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-76b020f0.entry.js.map → p-d2f7b4a9.entry.js.map} +0 -0
  398. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c45dc75d.entry.js.map → p-e8050420.entry.js.map} +0 -0
  399. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-412fc8d6.entry.js.map → p-eee2d131.entry.js.map} +0 -0
  400. /package/umd/modules/@postnord/web-components/postnord-web-components/{p-d3521b5d.entry.js.map → p-fb5d6d47.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pn-action-menu.js","sourceRoot":"","sources":["../../../../src/components/buttons/pn-action-menu/pn-action-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Watch, Element, h, Host, Event, EventEmitter, Listen } from '@stencil/core';\n\nimport {\n awaitTopbar,\n en,\n getMenuWidth,\n getTotalHeightOffset,\n isSmallScreen,\n reduceMotion,\n ripple,\n uuidv4,\n} from '@/index';\nimport type {\n PnLanguages,\n PnActionMenuItem,\n Components,\n PnActionMenuInput,\n PnActionMenuGroup,\n PnMeasurements,\n} from '@/index';\n\nimport { translations, PnMenuTextProp } from './translation';\n\nimport { angle_down, angle_left, angle_right, open_in_new } from 'pn-design-assets/pn-assets/icons.js';\n\n/**\n * Create a list of actions in an accessible way.\n *\n * Option types include:\n *\n * - Regular button, click and it will collapse the menu,\n * - Checkbox/radio, toggle the option on/off\n * - Link, behaves like a regular `a[href]` element.\n *\n * You can group these actions in groups and/or sub menus.\n *\n * - `group`, an array of options. The label will act as a title for the items.\n * - `options`, an array of options. These items will appear in a sub-menu that can be toggled.\n *\n * @see {@link PnActionMenuItem}\n */\n@Component({\n tag: 'pn-action-menu',\n styleUrl: 'pn-action-menu.scss',\n})\nexport class PnActionMenu {\n private readonly id: string = `pn-action-menu-${uuidv4()}`;\n\n private menuButtonId: string = `${this.id}-button`;\n private menuListId: string = `${this.id}-list`;\n\n private menuTrigger: HTMLPnButtonElement;\n private menuContainer: HTMLDivElement;\n private menuList: HTMLMenuElement;\n\n private animation: Animation;\n private readonly duration: number = 400;\n private animationDuration: number = this.duration;\n\n private timeout: NodeJS.Timeout;\n\n /** 16em */\n private readonly menuWidth: number = 256;\n\n @Element() private hostElement: HTMLElement;\n\n @State() private smallMenu: boolean = null;\n @State() private upwards: boolean = false;\n\n @State() private activeSubmenu: PnActionMenuItem['value'][] = [];\n\n @State() private isClosing = false;\n @State() private isExpanding = false;\n\n /** Array of action menu options. @see {@link PnActionMenuItem} */\n @Prop() options: PnActionMenuItem[] = [];\n /** Set any prop from the `pn-button` component here. @see {@link Components.PnButton} */\n @Prop() button: Components.PnButton;\n\n /** Set a custom ID for the menu. */\n @Prop() menuId?: string = this.id;\n /** Manually set the language. */\n @Prop({ mutable: true }) language?: PnLanguages = null;\n\n /** Open/close the action menu manually. @category Features */\n @Prop({ mutable: true, reflect: true }) open?: boolean = false;\n /** Prefer that the menu open upwards, if there is enough space. @category Features */\n @Prop() menuUp?: boolean = false;\n /** Prefer that the submenus opens to the left, if there is enough space. @category Features */\n @Prop() menuLeft?: boolean = false;\n\n /** Emitted when the menu is opened or closed. */\n @Event() private menuToggle: EventEmitter<{ open: boolean }>;\n /** Emitted when the menu is fully hidden/visible after the animation has played. */\n @Event() private menuVisible: EventEmitter<{ visible: boolean }>;\n /** Emitted when an option is clicked (button, link, input or submenus). */\n @Event() private menuOption: EventEmitter<{\n /** Which type of menu item was clicked. */\n type: 'button' | 'link' | 'input' | 'submenu';\n /** If its an `input` type (checkbox/radio), it will be a generic `Event` (ChangeEvent) instead of `MouseEvent`. */\n click: MouseEvent | Event;\n /** The full {@link PnActionMenuItem} object. */\n option: PnActionMenuItem;\n /** If the submenu is open/closed. */\n open?: Boolean;\n }>;\n\n @Watch('options')\n handleOptions() {\n this.setMenuLayout();\n }\n\n @Watch('open')\n openHandler() {\n this.setAnimationDuration();\n\n requestAnimationFrame(() => {\n if (this.open && !(this.isClosing || this.isExpanding)) {\n this.setOffset();\n this.setMenuLayout();\n }\n\n this.gridHandler();\n\n this.menuToggle.emit({ open: this.open });\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n if (!this.open) {\n this.activeSubmenu = [];\n const subMenus = this.hostElement.querySelectorAll<HTMLUListElement>('[data-x]');\n Array.from(subMenus).forEach(el => {\n el.removeAttribute('data-x');\n el.removeAttribute('data-y');\n });\n }\n\n this.menuVisible.emit({ visible: this.open });\n }, this.animationDuration);\n });\n }\n\n @Watch('menuId')\n handleMenuId() {\n this.menuButtonId = `${this.menuId}-button`;\n this.menuListId = `${this.menuId}-list`;\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n if (this.open) this.toggleActionMenu(false);\n }\n\n async componentWillLoad() {\n if (!this.options.length) console.warn(`${this.hostElement.localName}: No options set.`);\n\n this.handleMenuId();\n this.setAnimationDuration();\n\n if (this.language !== null) await awaitTopbar(this.hostElement);\n }\n\n componentDidLoad() {\n this.setOffset();\n\n if (this.open) this.gridHandler();\n }\n\n private translate(prop: PnMenuTextProp) {\n return translations[prop][this.language || en];\n }\n\n /** Open/close the action menu. */\n private toggleActionMenu(state?: boolean) {\n this.open = state ?? !this.open;\n }\n\n private setMenuLayout() {\n if (!this.menuContainer) return;\n\n if (!(this.isClosing || this.isExpanding)) this.resetMaxHeight();\n\n const measurements = this.getMenuMeasurements();\n\n this.setDirection(measurements);\n this.setMenuSize(measurements);\n this.setMaxHeight(measurements);\n }\n\n private setDirection({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const fitsUpwards = sUp > hUp;\n const fitsDownards = sDown > hDown;\n const moreSpaceDown = sDown > sUp;\n this.upwards = (this.menuUp && fitsUpwards) || (!fitsDownards && !moreSpaceDown);\n }\n\n private setMenuSize({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const isWidthSmall = isSmallScreen();\n const menuFits = this.upwards ? sUp > hUp : sDown > hDown;\n const isSmall = isWidthSmall || !menuFits;\n\n if (isSmall !== this.smallMenu) {\n this.smallMenu = isSmall;\n }\n }\n\n private setMaxHeight({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n if (this.smallMenu) {\n const heightUp = hUp > sUp ? hUp - 16 : hUp;\n const heightDown = hDown > sDown ? hDown - 8 : hDown;\n this.hostElement.style.setProperty('--pn-menu-height', `${this.upwards ? heightUp : heightDown}px`);\n } else this.resetMaxHeight();\n }\n\n private resetMaxHeight() {\n this.hostElement.style.setProperty('--pn-menu-height', 'unset');\n }\n\n private setAnimationDuration() {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.duration;\n }\n\n private getRect(element: HTMLElement): DOMRect {\n return element.getBoundingClientRect();\n }\n\n private getMenuMeasurements(): PnMeasurements {\n const allLists = Array.from(this.menuContainer.querySelectorAll('menu'));\n const maxHeight = Math.max(...allLists.map(el => el.scrollHeight));\n\n const rectButton = this.getRect(this.menuTrigger);\n const rectMenu = this.getRect(this.menuContainer);\n\n /** Measurements upwards. */\n const sUp = rectButton.top - getTotalHeightOffset();\n const hUp = sUp > maxHeight ? maxHeight : sUp;\n\n /** Measurements downwards. */\n const sDown = innerHeight - rectMenu.top;\n const hDown = sDown > maxHeight ? maxHeight : sDown;\n\n return {\n hUp,\n hDown,\n sUp,\n sDown,\n };\n }\n\n private setOffset() {\n const data = this.getRect(this.hostElement);\n const fullWidth = data.left - getMenuWidth() + this.menuWidth;\n const isWide = fullWidth > innerWidth;\n const offset = isWide ? fullWidth - innerWidth + 16 : 0;\n\n if (this.menuContainer) this.menuContainer.style.setProperty('--pn-action-menu-offset', `-${offset}px`);\n }\n\n private getListId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-list`;\n }\n\n private getButtonId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-button`;\n }\n\n private getTriggerIcon() {\n if (this.button?.icon) return;\n return angle_down;\n }\n\n /** Set the path of open sub menus. */\n private getSubMenuPath(options: PnActionMenuItem[], value: string, path = []): string[] {\n for (const item of options) {\n const newPath = [...path, item.value];\n if (item.value === value) return newPath;\n\n if (item.options || item.group) {\n const result = this.getSubMenuPath(item.options || item.group, value, newPath);\n if (result) return result;\n }\n }\n return null;\n }\n\n private closeEachSubMenu() {\n this.menuTrigger?.querySelector('button')?.focus({ preventScroll: true });\n\n const interval = setInterval(() => {\n if (this.smallMenu || this.activeSubmenu.length === 0) {\n clearInterval(interval);\n this.toggleActionMenu(false);\n } else {\n this.activeSubmenu.pop();\n this.activeSubmenu = [...this.activeSubmenu];\n }\n }, 150);\n }\n\n private escButton(event: KeyboardEvent, option: PnActionMenuItem) {\n const { key } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.isSubmenuActive(option.value) ? this.toggleSub(option) : this.toggleActionMenu();\n }\n }\n\n // Animation Start\n\n private gridHandler() {\n if (this.open) this.openGrid();\n else this.closeGrid();\n }\n\n private openGrid() {\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isClosing ? clientHeight : 0;\n this.menuContainer.style.height = `${list.height}px`;\n\n this.isExpanding = true;\n this.animateGrid(true, `${height}px`, `${list.height}px`);\n }\n\n private closeGrid() {\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isExpanding ? clientHeight : list.height;\n this.menuContainer.style.height = `0px`;\n\n this.isClosing = true;\n this.animateGrid(false, `${height}px`, `0px`);\n }\n\n private animateGrid(open: boolean, startHeight: string, endHeight: string) {\n this.cancelAnimations();\n this.animation = this.menuContainer.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n this.animation.onfinish = () => this.animationFinish();\n this.animation.oncancel = () => (open ? (this.isExpanding = false) : (this.isClosing = false));\n }\n\n private animationFinish() {\n this.cancelAnimations();\n this.menuContainer.style.height = this.isClosing ? '0px' : '';\n this.isClosing = false;\n this.isExpanding = false;\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n // Animation end\n\n private async optionSelect(option: PnActionMenuItem, click: MouseEvent | Event) {\n const type = option?.options?.length ? 'submenu' : !!option.input ? 'input' : option.href ? 'link' : 'button';\n const isSubMenu = type === 'submenu';\n\n if (isSubMenu) this.toggleSub(option);\n else if (type === 'button') this.closeEachSubMenu();\n else if (type === 'input') option.checked = (click.target as HTMLInputElement).checked;\n\n this.menuOption.emit({\n option,\n type,\n click,\n open: isSubMenu ? this.isSubmenuActive(option.value) : null,\n });\n\n const target = click.target as HTMLElement;\n const element =\n target.localName === 'input'\n ? (target.nextElementSibling as HTMLElement)\n : target.className === 'pn-action-menu-button'\n ? target\n : target.closest<HTMLElement>('.pn-action-menu-button');\n\n const { x, width, y, top } = this.getRect(element as HTMLElement);\n const clientCor = { clientX: x + width - 24, clientY: y - top };\n\n ripple(click.type === 'click' ? (click as MouseEvent) : clientCor, element);\n\n this.menuContainer.scrollTo({ top: 0 });\n }\n\n /** Toggle individual sub-menus inside the action menu by using the `option['value']`. */\n private toggleSub(option: PnActionMenuItem) {\n const { value } = option;\n\n const path = this.getSubMenuPath(this.options, value);\n const isActive = this.activeSubmenu.includes(value);\n isActive && path.splice(this.activeSubmenu.indexOf(value), 1);\n\n const item = this.hostElement.querySelector<HTMLElement>(`#${this.getListId(option)}`);\n const data = this.getRect(item);\n\n const spaceLeft = data.left;\n const spaceRight = innerWidth - data.right - 8;\n\n const fitsLeft = spaceLeft > data.width;\n const fitsRight = spaceRight > data.width;\n\n const climbUp = this.menuUp && data.top - data.height > 0;\n const yDirection = climbUp ? 'top' : 'bottom';\n\n if (!isActive && !item.dataset.x)\n item.setAttribute(\n 'data-x',\n this.menuLeft && fitsLeft ? 'left' : fitsRight ? 'right' : fitsLeft ? 'left' : 'center',\n );\n if (!isActive && !item.dataset.y) item.setAttribute('data-y', yDirection);\n\n if (JSON.stringify(path) === JSON.stringify(this.activeSubmenu))\n this.activeSubmenu = this.activeSubmenu.filter(item => item !== value);\n else this.activeSubmenu = [...path];\n }\n\n /** Check if a sub-menu is active. */\n private isSubmenuActive(value: string): boolean {\n return this.activeSubmenu.includes(value);\n }\n\n private isMenuActive() {\n const isRootSubInsideGroup = this.options.find(({ value }) => this.activeSubmenu.every(val => val === value));\n return this.smallMenu && (this.activeSubmenu?.length === 0 || isRootSubInsideGroup);\n }\n\n private isCurrentSubMenu(value: string) {\n return Boolean(this.activeSubmenu[this.activeSubmenu.length - 1] === value);\n }\n\n private getOptionTrailing(option: PnActionMenuItem) {\n const useButtonIcon = option.options?.length && angle_right;\n const useTrailingIcon = option.trailingIcon;\n const useLinkIcon = option.target === '_blank' && open_in_new;\n\n /** If the user has defined a trialing icon, use it first. */\n const icon = useButtonIcon || useTrailingIcon || useLinkIcon;\n\n if (icon) {\n return <pn-icon icon={icon} color=\"blue700\" data-suffix data-active={this.isSubmenuActive(option.value)} />;\n }\n if (option.suffix) {\n return <span class=\"pn-action-menu-item-suffix\">{option.suffix}</span>;\n }\n }\n\n private renderCheckbox(option: PnActionMenuInput) {\n const id = `pn-menu-${option.value}-label`;\n const idHelper = `pn-menu-${option.value}-helpertext`;\n return (\n <div class=\"pn-action-menu-item-content\">\n <input\n type={option.input}\n id={id}\n class=\"pn-action-menu-input\"\n name={option.name}\n value={option.value}\n checked={option.checked}\n disabled={option.disabled}\n aria-describedby={option.helpertext ? idHelper : null}\n onInput={event => this.optionSelect(option, event)}\n tabIndex={this.open ? null : -1}\n />\n\n <div class=\"pn-action-menu-button\">\n {!!option.icon && <pn-icon icon={option.icon} color=\"blue700\" />}\n\n <div class=\"pn-action-menu-item-text\">\n <label htmlFor={id} class=\"pn-action-menu-item-label\">\n {option.label}\n </label>\n {option.helpertext && (\n <p id={idHelper} class=\"pn-action-menu-item-helpertext\">\n <span>{option.helpertext}</span>\n </p>\n )}\n </div>\n {option.input === 'checkbox' ? (\n <div class=\"pn-action-menu-checkbox\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline class=\"pn-action-menu-checkbox-checkmark-path\" points=\"4,12 9,17 20,6\" stroke-width=\"3\" />\n </svg>\n </div>\n ) : (\n <div class=\"pn-action-menu-radio\">\n <div class=\"pn-action-menu-radio-outer\">\n <div class=\"pn-action-menu-radio-inner\" />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n private renderButton(option: PnActionMenuItem) {\n const isCloseButton = option.label === 'BACK';\n const isSub = !!option?.options?.length;\n const isGroup = !!option?.group?.length;\n const isLink = !!option.href && !isSub && !isGroup;\n\n const appendedId = isCloseButton ? '-close' : '';\n const hasIcon = isCloseButton || !!option.icon;\n\n const trailingObject = isCloseButton ? null : this.getOptionTrailing(option);\n const open = this.isSubmenuActive(option.value);\n const subMenuAttrs = isSub\n ? {\n 'aria-haspopup': 'true',\n 'aria-controls': open ? this.getListId(option) : null,\n 'aria-expanded': open?.toString(),\n }\n : {};\n\n const attrs = isLink\n ? {\n href: option.href,\n target: option.target,\n }\n : {\n disabled: option.disabled,\n };\n\n const Tag = isLink ? 'a' : 'button';\n\n return isGroup ? (\n <div class=\"pn-action-menu-group-label\">\n <p class=\"pn-action-menu-p\">{option.label}</p>\n {option.helpertext && <p class=\"pn-action-menu-group-helpertext\">{option.helpertext}</p>}\n </div>\n ) : (\n <div class=\"pn-action-menu-item-content\" data-close={isCloseButton}>\n <Tag\n id={this.getButtonId(option) + appendedId}\n class=\"pn-action-menu-button\"\n {...subMenuAttrs}\n {...attrs}\n tabIndex={this.open ? null : -1}\n onClick={event => this.optionSelect(option, event)}\n onKeyDown={(event: KeyboardEvent) => this.escButton(event, option)}\n >\n {hasIcon && <pn-icon icon={isCloseButton ? angle_left : option.icon} color=\"blue700\" />}\n <div class=\"pn-action-menu-item-text\">\n <span class=\"pn-action-menu-item-label\">{isCloseButton ? this.translate('BACK') : option.label}</span>\n {option.helpertext && !isLink && <span class=\"pn-action-menu-item-helpertext\">{option.helpertext}</span>}\n </div>\n {trailingObject}\n </Tag>\n </div>\n );\n }\n\n private renderSub(option: PnActionMenuItem) {\n return (\n <menu\n id={this.getListId(option)}\n aria-labelledby={this.getButtonId(option)}\n class=\"pn-action-menu-sub\"\n data-open={this.isSubmenuActive(option.value)?.toString()}\n data-current={this.isCurrentSubMenu(option.value)}\n >\n {this.smallMenu && (\n <li class=\"pn-action-menu-item\">\n {this.renderButton({\n label: 'BACK',\n value: option.value,\n options: option.options,\n })}\n </li>\n )}\n {option.options.map(item => this.renderMenuItem(item))}\n </menu>\n );\n }\n\n private renderGroup(option: PnActionMenuGroup) {\n return <menu class=\"pn-action-menu-group\">{option.group.map(item => this.renderMenuItem(item))}</menu>;\n }\n\n private renderMenuItem(option: PnActionMenuItem) {\n const isSub = !!option?.options?.length;\n const isGroup = !isSub && !!option?.group?.length;\n\n const isCheckbox = !!option.input && !isSub && !isGroup;\n\n return (\n <li class=\"pn-action-menu-item\" data-group={isGroup} data-sub={isSub}>\n {isCheckbox ? this.renderCheckbox(option) : this.renderButton(option)}\n {isSub ? this.renderSub(option) : isGroup && this.renderGroup(option)}\n </li>\n );\n }\n\n private renderMenu() {\n return (\n <div\n id={this.menuListId}\n class=\"pn-action-menu-container\"\n role=\"region\"\n aria-labelledby={this.menuButtonId}\n data-open={this.open}\n data-moving={this.isClosing || this.isExpanding}\n data-upwards={this.upwards}\n data-small={this.smallMenu}\n style={{ height: '0px' }}\n ref={el => (this.menuContainer = el)}\n >\n <menu class=\"pn-action-menu-list\" ref={el => (this.menuList = el)} data-current={this.isMenuActive()}>\n {this.options?.map(option => this.renderMenuItem(option))}\n </menu>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n <div id={this.menuId !== this.id ? this.menuId : null} class=\"pn-action-menu\">\n <pn-button\n icon={this.getTriggerIcon()}\n {...this.button}\n buttonId={this.menuButtonId}\n tooltipUp={!this.upwards}\n ariahaspopup=\"true\"\n ariacontrols={this.open ? this.menuListId : null}\n ariaexpanded={this.open.toString()}\n data-default-icon={!this.button?.icon}\n onPnClick={() => this.toggleActionMenu()}\n ref={el => (this.menuTrigger = el)}\n />\n {this.renderMenu()}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"pn-action-menu.js","sourceRoot":"","sources":["../../../../src/components/buttons/pn-action-menu/pn-action-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Watch, Element, h, Host, Event, EventEmitter, Listen } from '@stencil/core';\n\nimport {\n awaitTopbar,\n en,\n getMenuWidth,\n getTotalHeightOffset,\n isSmallScreen,\n reduceMotion,\n ripple,\n uuidv4,\n} from '@/index';\nimport type {\n PnLanguages,\n PnActionMenuItem,\n Components,\n PnActionMenuInput,\n PnActionMenuGroup,\n PnMeasurements,\n} from '@/index';\n\nimport { translations, PnMenuTextProp } from './translation';\n\nimport { chevron_down, chevron_left, chevron_right, open_in_new } from 'pn-design-assets/pn-assets/icons.js';\n\n/**\n * Create a list of actions in an accessible way.\n *\n * Option types include:\n *\n * - Regular button, click and it will collapse the menu,\n * - Checkbox/radio, toggle the option on/off\n * - Link, behaves like a regular `a[href]` element.\n *\n * You can group these actions in groups and/or sub menus.\n *\n * - `group`, an array of options. The label will act as a title for the items.\n * - `options`, an array of options. These items will appear in a sub-menu that can be toggled.\n *\n * @see {@link PnActionMenuItem}\n */\n@Component({\n tag: 'pn-action-menu',\n styleUrl: 'pn-action-menu.scss',\n})\nexport class PnActionMenu {\n private readonly id: string = `pn-action-menu-${uuidv4()}`;\n\n private menuButtonId: string = `${this.id}-button`;\n private menuListId: string = `${this.id}-list`;\n\n private menuTrigger: HTMLPnButtonElement;\n private menuContainer: HTMLDivElement;\n private menuList: HTMLMenuElement;\n\n private animation: Animation;\n private readonly duration: number = 400;\n private animationDuration: number = this.duration;\n\n private timeout: NodeJS.Timeout;\n\n /** 16em */\n private readonly menuWidth: number = 256;\n\n @Element() private hostElement: HTMLElement;\n\n @State() private smallMenu: boolean = null;\n @State() private upwards: boolean = false;\n\n @State() private activeSubmenu: PnActionMenuItem['value'][] = [];\n\n @State() private isClosing = false;\n @State() private isExpanding = false;\n\n /** Array of action menu options. @see {@link PnActionMenuItem} */\n @Prop() options: PnActionMenuItem[] = [];\n /** Set any prop from the `pn-button` component here. @see {@link Components.PnButton} */\n @Prop() button: Components.PnButton;\n\n /** Set a custom ID for the menu. */\n @Prop() menuId?: string = this.id;\n /** Manually set the language. */\n @Prop({ mutable: true }) language?: PnLanguages = null;\n\n /** Open/close the action menu manually. @category Features */\n @Prop({ mutable: true, reflect: true }) open?: boolean = false;\n /** Prefer that the menu open upwards, if there is enough space. @category Features */\n @Prop() menuUp?: boolean = false;\n /** Prefer that the submenus opens to the left, if there is enough space. @category Features */\n @Prop() menuLeft?: boolean = false;\n\n /** Emitted when the menu is opened or closed. */\n @Event() private menuToggle: EventEmitter<{ open: boolean }>;\n /** Emitted when the menu is fully hidden/visible after the animation has played. */\n @Event() private menuVisible: EventEmitter<{ visible: boolean }>;\n /** Emitted when an option is clicked (button, link, input or submenus). */\n @Event() private menuOption: EventEmitter<{\n /** Which type of menu item was clicked. */\n type: 'button' | 'link' | 'input' | 'submenu';\n /** If its an `input` type (checkbox/radio), it will be a generic `Event` (ChangeEvent) instead of `MouseEvent`. */\n click: MouseEvent | Event;\n /** The full {@link PnActionMenuItem} object. */\n option: PnActionMenuItem;\n /** If the submenu is open/closed. */\n open?: Boolean;\n }>;\n\n @Watch('options')\n handleOptions() {\n this.setMenuLayout();\n }\n\n @Watch('open')\n openHandler() {\n this.setAnimationDuration();\n\n requestAnimationFrame(() => {\n if (this.open && !(this.isClosing || this.isExpanding)) {\n this.setOffset();\n this.setMenuLayout();\n }\n\n this.gridHandler();\n\n this.menuToggle.emit({ open: this.open });\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n if (!this.open) {\n this.activeSubmenu = [];\n const subMenus = this.hostElement.querySelectorAll<HTMLUListElement>('[data-x]');\n Array.from(subMenus).forEach(el => {\n el.removeAttribute('data-x');\n el.removeAttribute('data-y');\n });\n }\n\n this.menuVisible.emit({ visible: this.open });\n }, this.animationDuration);\n });\n }\n\n @Watch('menuId')\n handleMenuId() {\n this.menuButtonId = `${this.menuId}-button`;\n this.menuListId = `${this.menuId}-list`;\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n if (this.open) this.toggleActionMenu(false);\n }\n\n async componentWillLoad() {\n if (!this.options.length) console.warn(`${this.hostElement.localName}: No options set.`);\n\n this.handleMenuId();\n this.setAnimationDuration();\n\n if (this.language !== null) await awaitTopbar(this.hostElement);\n }\n\n componentDidLoad() {\n this.setOffset();\n\n if (this.open) this.gridHandler();\n }\n\n private translate(prop: PnMenuTextProp) {\n return translations[prop][this.language || en];\n }\n\n private globalEvents = (event: PointerEvent | KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const isWithinActionMenu = target?.closest(this.hostElement.localName);\n if (!isWithinActionMenu) this.closeEachSubMenu(true);\n };\n\n private addGlobalEventListeners() {\n const root: Document = this.hostElement.getRootNode() as Document;\n\n root.addEventListener('click', this.globalEvents);\n }\n\n private removeGlobalEventListeners() {\n const root: Document = this.hostElement.getRootNode() as Document;\n\n root.removeEventListener('click', this.globalEvents);\n }\n\n /** Open/close the action menu. */\n private toggleActionMenu(state?: boolean) {\n this.open = state ?? !this.open;\n }\n\n private setMenuLayout() {\n if (!this.menuContainer) return;\n\n if (!(this.isClosing || this.isExpanding)) this.resetMaxHeight();\n\n const measurements = this.getMenuMeasurements();\n\n this.setDirection(measurements);\n this.setMenuSize(measurements);\n this.setMaxHeight(measurements);\n }\n\n private setDirection({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const fitsUpwards = sUp > hUp;\n const fitsDownards = sDown > hDown;\n const moreSpaceDown = sDown > sUp;\n this.upwards = (this.menuUp && fitsUpwards) || (!fitsDownards && !moreSpaceDown);\n }\n\n private setMenuSize({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const isWidthSmall = isSmallScreen();\n const menuFits = this.upwards ? sUp > hUp : sDown > hDown;\n const isSmall = isWidthSmall || !menuFits;\n\n if (isSmall !== this.smallMenu) {\n this.smallMenu = isSmall;\n }\n }\n\n private setMaxHeight({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n if (this.smallMenu) {\n const heightUp = hUp > sUp ? hUp - 16 : hUp;\n const heightDown = hDown > sDown ? hDown - 8 : hDown;\n this.hostElement.style.setProperty('--pn-menu-height', `${this.upwards ? heightUp : heightDown}px`);\n } else this.resetMaxHeight();\n }\n\n private resetMaxHeight() {\n this.hostElement.style.setProperty('--pn-menu-height', 'unset');\n }\n\n private setAnimationDuration() {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.duration;\n }\n\n private getRect(element: HTMLElement): DOMRect {\n return element.getBoundingClientRect();\n }\n\n private getMenuMeasurements(): PnMeasurements {\n const allLists = Array.from(this.menuContainer.querySelectorAll('menu'));\n const maxHeight = Math.max(...allLists.map(el => el.scrollHeight));\n\n const rectButton = this.getRect(this.menuTrigger);\n const rectMenu = this.getRect(this.menuContainer);\n\n /** Measurements upwards. */\n const sUp = rectButton.top - getTotalHeightOffset();\n const hUp = sUp > maxHeight ? maxHeight : sUp;\n\n /** Measurements downwards. */\n const sDown = innerHeight - rectMenu.top;\n const hDown = sDown > maxHeight ? maxHeight : sDown;\n\n return {\n hUp,\n hDown,\n sUp,\n sDown,\n };\n }\n\n private setOffset() {\n const data = this.getRect(this.hostElement);\n const sideMenuWidth = getMenuWidth();\n\n // Calculate potential menu position\n const menuLeft = data.left;\n const menuRight = data.left + this.menuWidth;\n\n // Define boundaries\n const leftBoundary = sideMenuWidth + 16; // Left menu + buffer\n const rightBoundary = innerWidth - 16; // Right edge - buffer\n\n let offset = 0;\n\n // Check if menu would overlap left menu or go off left edge\n if (menuLeft < leftBoundary) {\n offset = leftBoundary - menuLeft;\n }\n // Check if menu would go off right edge\n else if (menuRight > rightBoundary) {\n offset = rightBoundary - menuRight;\n }\n\n if (this.menuContainer) this.menuContainer.style.setProperty('--pn-action-menu-offset', `${offset}px`);\n }\n\n private getListId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-list`;\n }\n\n private getButtonId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-button`;\n }\n\n private getTriggerIcon() {\n if (this.button?.icon) return;\n return chevron_down;\n }\n\n /** Set the path of open sub menus. */\n private getSubMenuPath(options: PnActionMenuItem[], value: string, path = []): string[] {\n for (const item of options) {\n const newPath = [...path, item.value];\n if (item.value === value) return newPath;\n\n if (item.options || item.group) {\n const result = this.getSubMenuPath(item.options || item.group, value, newPath);\n if (result) return result;\n }\n }\n return null;\n }\n\n private closeEachSubMenu(preventFocus: boolean = false) {\n if (!preventFocus) this.menuTrigger?.querySelector('button')?.focus({ preventScroll: true });\n\n const interval = setInterval(() => {\n if (this.smallMenu || this.activeSubmenu.length === 0) {\n clearInterval(interval);\n this.toggleActionMenu(false);\n } else {\n this.activeSubmenu.pop();\n this.activeSubmenu = [...this.activeSubmenu];\n }\n }, 150);\n }\n\n private escButton(event: KeyboardEvent, option: PnActionMenuItem) {\n const { key } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.isSubmenuActive(option.value) ? this.toggleSub(option) : this.toggleActionMenu();\n }\n }\n\n // Animation Start\n\n private gridHandler() {\n if (this.open) this.openGrid();\n else this.closeGrid();\n }\n\n private openGrid() {\n this.addGlobalEventListeners();\n\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isClosing ? clientHeight : 0;\n this.menuContainer.style.height = `${list.height}px`;\n\n this.isExpanding = true;\n this.animateGrid(true, `${height}px`, `${list.height}px`);\n }\n\n private closeGrid() {\n this.removeGlobalEventListeners();\n\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isExpanding ? clientHeight : list.height;\n this.menuContainer.style.height = `0px`;\n\n this.isClosing = true;\n this.animateGrid(false, `${height}px`, `0px`);\n }\n\n private animateGrid(open: boolean, startHeight: string, endHeight: string) {\n this.cancelAnimations();\n this.animation = this.menuContainer.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n this.animation.onfinish = () => this.animationFinish();\n this.animation.oncancel = () => (open ? (this.isExpanding = false) : (this.isClosing = false));\n }\n\n private animationFinish() {\n this.cancelAnimations();\n this.menuContainer.style.height = this.isClosing ? '0px' : '';\n this.isClosing = false;\n this.isExpanding = false;\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n // Animation end\n\n private async optionSelect(option: PnActionMenuItem, click: MouseEvent | Event) {\n const type = option?.options?.length ? 'submenu' : !!option.input ? 'input' : option.href ? 'link' : 'button';\n const isSubMenu = type === 'submenu';\n\n if (isSubMenu) this.toggleSub(option);\n else if (type === 'button') this.closeEachSubMenu();\n else if (type === 'input') option.checked = (click.target as HTMLInputElement).checked;\n\n this.menuOption.emit({\n option,\n type,\n click,\n open: isSubMenu ? this.isSubmenuActive(option.value) : null,\n });\n\n const target = click.target as HTMLElement;\n const element =\n target.localName === 'input'\n ? (target.nextElementSibling as HTMLElement)\n : target.className === 'pn-action-menu-button'\n ? target\n : target.closest<HTMLElement>('.pn-action-menu-button');\n\n const { x, width, y, top } = this.getRect(element as HTMLElement);\n const clientCor = { clientX: x + width - 24, clientY: y - top };\n\n ripple(click.type === 'click' ? (click as MouseEvent) : clientCor, element);\n\n this.menuContainer.scrollTo({ top: 0 });\n }\n\n /** Toggle individual sub-menus inside the action menu by using the `option['value']`. */\n private toggleSub(option: PnActionMenuItem) {\n const { value } = option;\n\n const path = this.getSubMenuPath(this.options, value);\n const isActive = this.activeSubmenu.includes(value);\n isActive && path.splice(this.activeSubmenu.indexOf(value), 1);\n\n const item = this.hostElement.querySelector<HTMLElement>(`#${this.getListId(option)}`);\n const data = this.getRect(item);\n\n const spaceLeft = data.left;\n const spaceRight = innerWidth - data.right - 8;\n\n const fitsLeft = spaceLeft > data.width;\n const fitsRight = spaceRight > data.width;\n\n const climbUp = this.menuUp && data.top - data.height > 0;\n const yDirection = climbUp ? 'top' : 'bottom';\n\n if (!isActive && !item.dataset.x)\n item.setAttribute(\n 'data-x',\n this.menuLeft && fitsLeft ? 'left' : fitsRight ? 'right' : fitsLeft ? 'left' : 'center',\n );\n if (!isActive && !item.dataset.y) item.setAttribute('data-y', yDirection);\n\n if (JSON.stringify(path) === JSON.stringify(this.activeSubmenu))\n this.activeSubmenu = this.activeSubmenu.filter(item => item !== value);\n else this.activeSubmenu = [...path];\n }\n\n /** Check if a sub-menu is active. */\n private isSubmenuActive(value: string): boolean {\n return this.activeSubmenu.includes(value);\n }\n\n private isMenuActive() {\n const isRootSubInsideGroup = this.options.find(({ value }) => this.activeSubmenu.every(val => val === value));\n return this.smallMenu && (this.activeSubmenu?.length === 0 || isRootSubInsideGroup);\n }\n\n private isCurrentSubMenu(value: string) {\n return Boolean(this.activeSubmenu[this.activeSubmenu.length - 1] === value);\n }\n\n private getOptionTrailing(option: PnActionMenuItem) {\n const useButtonIcon = option.options?.length && chevron_right;\n const useTrailingIcon = option.trailingIcon;\n const useLinkIcon = option.target === '_blank' && open_in_new;\n\n /** If the user has defined a trialing icon, use it first. */\n const icon = useButtonIcon || useTrailingIcon || useLinkIcon;\n\n if (icon) {\n return <pn-icon icon={icon} color=\"blue700\" data-suffix data-active={this.isSubmenuActive(option.value)} />;\n }\n if (option.suffix) {\n return <span class=\"pn-action-menu-item-suffix\">{option.suffix}</span>;\n }\n }\n\n private renderCheckbox(option: PnActionMenuInput) {\n const id = `pn-menu-${option.value}-label`;\n const idHelper = `pn-menu-${option.value}-helpertext`;\n return (\n <div class=\"pn-action-menu-item-content\">\n <input\n type={option.input}\n id={id}\n class=\"pn-action-menu-input\"\n name={option.name}\n value={option.value}\n checked={option.checked}\n disabled={option.disabled}\n aria-describedby={option.helpertext ? idHelper : null}\n onInput={event => this.optionSelect(option, event)}\n tabIndex={this.open ? null : -1}\n />\n\n <div class=\"pn-action-menu-button\">\n {!!option.icon && <pn-icon icon={option.icon} color=\"blue700\" />}\n\n <div class=\"pn-action-menu-item-text\">\n <label htmlFor={id} class=\"pn-action-menu-item-label\">\n {option.label}\n </label>\n {option.helpertext && (\n <p id={idHelper} class=\"pn-action-menu-item-helpertext\">\n <span>{option.helpertext}</span>\n </p>\n )}\n </div>\n {option.input === 'checkbox' ? (\n <div class=\"pn-action-menu-checkbox\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline class=\"pn-action-menu-checkbox-checkmark-path\" points=\"4,12 9,17 20,6\" stroke-width=\"3\" />\n </svg>\n </div>\n ) : (\n <div class=\"pn-action-menu-radio\">\n <div class=\"pn-action-menu-radio-outer\">\n <div class=\"pn-action-menu-radio-inner\" />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n private renderButton(option: PnActionMenuItem) {\n const isCloseButton = option.label === 'BACK';\n const isSub = !!option?.options?.length;\n const isGroup = !!option?.group?.length;\n const isLink = !!option.href && !isSub && !isGroup;\n\n const appendedId = isCloseButton ? '-close' : '';\n const hasIcon = isCloseButton || !!option.icon;\n\n const trailingObject = isCloseButton ? null : this.getOptionTrailing(option);\n const open = this.isSubmenuActive(option.value);\n const subMenuAttrs = isSub\n ? {\n 'aria-haspopup': 'true',\n 'aria-controls': open ? this.getListId(option) : null,\n 'aria-expanded': open?.toString(),\n }\n : {};\n\n const attrs = isLink\n ? {\n href: option.href,\n target: option.target,\n }\n : {\n disabled: option.disabled,\n };\n\n const Tag = isLink ? 'a' : 'button';\n\n return isGroup ? (\n <div class=\"pn-action-menu-group-label\">\n <p class=\"pn-action-menu-p\">{option.label}</p>\n {option.helpertext && <p class=\"pn-action-menu-group-helpertext\">{option.helpertext}</p>}\n </div>\n ) : (\n <div class=\"pn-action-menu-item-content\" data-close={isCloseButton}>\n <Tag\n id={this.getButtonId(option) + appendedId}\n class=\"pn-action-menu-button\"\n {...subMenuAttrs}\n {...attrs}\n tabIndex={this.open ? null : -1}\n onClick={event => this.optionSelect(option, event)}\n onKeyDown={(event: KeyboardEvent) => this.escButton(event, option)}\n >\n {hasIcon && <pn-icon icon={isCloseButton ? chevron_left : option.icon} color=\"blue700\" />}\n <div class=\"pn-action-menu-item-text\">\n <span class=\"pn-action-menu-item-label\">{isCloseButton ? this.translate('BACK') : option.label}</span>\n {option.helpertext && !isLink && <span class=\"pn-action-menu-item-helpertext\">{option.helpertext}</span>}\n </div>\n {trailingObject}\n </Tag>\n </div>\n );\n }\n\n private renderSub(option: PnActionMenuItem) {\n return (\n <menu\n id={this.getListId(option)}\n aria-labelledby={this.getButtonId(option)}\n class=\"pn-action-menu-sub\"\n data-open={this.isSubmenuActive(option.value)?.toString()}\n data-current={this.isCurrentSubMenu(option.value)}\n >\n {this.smallMenu && (\n <li class=\"pn-action-menu-item\">\n {this.renderButton({\n label: 'BACK',\n value: option.value,\n options: option.options,\n })}\n </li>\n )}\n {option.options.map(item => this.renderMenuItem(item))}\n </menu>\n );\n }\n\n private renderGroup(option: PnActionMenuGroup) {\n return <menu class=\"pn-action-menu-group\">{option.group.map(item => this.renderMenuItem(item))}</menu>;\n }\n\n private renderMenuItem(option: PnActionMenuItem) {\n const isSub = !!option?.options?.length;\n const isGroup = !isSub && !!option?.group?.length;\n\n const isCheckbox = !!option.input && !isSub && !isGroup;\n\n return (\n <li class=\"pn-action-menu-item\" data-group={isGroup} data-sub={isSub}>\n {isCheckbox ? this.renderCheckbox(option) : this.renderButton(option)}\n {isSub ? this.renderSub(option) : isGroup && this.renderGroup(option)}\n </li>\n );\n }\n\n private renderMenu() {\n return (\n <div\n id={this.menuListId}\n class=\"pn-action-menu-container\"\n role=\"region\"\n aria-labelledby={this.menuButtonId}\n data-open={this.open}\n data-moving={this.isClosing || this.isExpanding}\n data-upwards={this.upwards}\n data-small={this.smallMenu}\n style={{ height: '0px' }}\n ref={el => (this.menuContainer = el)}\n >\n <menu class=\"pn-action-menu-list\" ref={el => (this.menuList = el)} data-current={this.isMenuActive()}>\n {this.options?.map(option => this.renderMenuItem(option))}\n </menu>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n <div id={this.menuId !== this.id ? this.menuId : null} class=\"pn-action-menu\">\n <pn-button\n icon={this.getTriggerIcon()}\n {...this.button}\n buttonId={this.menuButtonId}\n tooltipUp={!this.upwards}\n ariahaspopup=\"true\"\n ariacontrols={this.open ? this.menuListId : null}\n ariaexpanded={this.open.toString()}\n data-default-icon={!this.button?.icon}\n onPnClick={() => this.toggleActionMenu()}\n ref={el => (this.menuTrigger = el)}\n />\n {this.renderMenu()}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  * By PostNord.
4
4
  */
5
5
  import { h, Host } from "@stencil/core";
6
- import { angle_down } from "pn-design-assets/pn-assets/icons.js";
6
+ import { chevron_down } from "pn-design-assets/pn-assets/icons.js";
7
7
  import { reduceMotion, ripple } from "../../../../index";
8
8
  /**
9
9
  * Use this row component inside a `pn-accordion` to create an accordion group.
@@ -113,7 +113,7 @@ export class PnAccordionRow {
113
113
  this.animation.cancel();
114
114
  }
115
115
  render() {
116
- return (h(Host, { key: '9f3142a471217bc0656c4d5641c420262a913c13' }, h("details", { key: 'c742d23b97fe2d489166f18f53b3e5f0d12107d8', class: "pn-accordion-row", open: this.state, ref: (el) => (this.details = el) }, h("summary", { key: 'd061093bf3bb58150d4bbb102caf9da3e9559fb8', id: this.buttonid, class: "pn-accordion-row-summary", onClick: e => this.clickHandler(e), ref: el => (this.summary = el) }, h("div", { key: '921e67cc639e701df60a7bc359d3415ccdec39e3', class: "pn-accordion-row-text", "data-transparent": this.transparent }, this.label ? this.label : '', h("slot", { key: 'e355acdeeb2e62e4056837b26f808d3e5663343e', name: "label" }), h("pn-icon", { key: 'c10681330981f5d019db4d6f7f6cd03d3c67234b', class: "pn-accordion-row-icon", icon: angle_down }))), h("div", { key: 'ddb95ef323966c0c55292dde2b5776e0700bf27a', id: this.contentid, class: "pn-accordion-row-content", ref: (el) => (this.content = el) }, h("slot", { key: 'e0ded60210d472842a8aa5cd87a6374ad7120e58' })))));
116
+ return (h(Host, { key: '0dcedaab706f95589734c04230abbdbeca16cdf1' }, h("details", { key: '58bead8dce64594af81aae11a42beea75ba0db88', class: "pn-accordion-row", open: this.state, ref: (el) => (this.details = el) }, h("summary", { key: '7447539647210cb5b132ce16d7019e310c8ca1f4', id: this.buttonid, class: "pn-accordion-row-summary", onClick: e => this.clickHandler(e), ref: el => (this.summary = el) }, h("div", { key: '83c87346e27703cab3203920848691fc8d3d007f', class: "pn-accordion-row-text", "data-transparent": this.transparent }, this.label ? this.label : '', h("slot", { key: '8904be6cbec811925b0fa935ed10c4b7bc12fb5d', name: "label" }), h("pn-icon", { key: 'cf71062d11b3a20c106dec2bec2aab1dc4bf0c7f', class: "pn-accordion-row-icon", icon: chevron_down }))), h("div", { key: 'ae73f9fa6e7121352979ec2dad9a4620cff58a91', id: this.contentid, class: "pn-accordion-row-content", ref: (el) => (this.content = el) }, h("slot", { key: '4d7d894af656c1b7e95028832611530d04f3d439' })))));
117
117
  }
118
118
  static get is() { return "pn-accordion-row"; }
119
119
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"pn-accordion-row.js","sourceRoot":"","sources":["../../../../../src/components/content/pn-accordion/row/pn-accordion-row.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Element, Event, EventEmitter, Prop, State, Listen } from '@stencil/core';\nimport { angle_down } from 'pn-design-assets/pn-assets/icons.js';\nimport { reduceMotion, ripple } from '@/index';\n\n/**\n * Use this row component inside a `pn-accordion` to create an accordion group.\n *\n * **Note**: you can use the `pn-accordion-row` without the parent accordion.\n * But you will have to style the gap between each row.\n *\n * @slot label - Include your own HTML as the label.\n * ```\n * <h3 slot=\"label\">Custom title</h3>\n * ```\n */\n@Component({\n tag: 'pn-accordion-row',\n styleUrl: 'pn-accordion-row.scss',\n})\nexport class PnAccordionRow {\n private details: HTMLDetailsElement;\n private summary: HTMLElement;\n private content: HTMLDivElement;\n private animation: Animation;\n\n private readonly defaultAnimationDuration: number = 400;\n private animationDuration: number = this.defaultAnimationDuration;\n\n @Element() hostElement: HTMLElement;\n\n @State() isClosing = false;\n @State() isExpanding = false;\n\n /** The label/title of the accordion row, you can also pass a slot with the name \"label\" if you want to put custom HTML content in there. */\n @Prop({ mutable: true }) label: string;\n /** The open/close status of the accordion row. */\n @Prop({ mutable: true }) state?: boolean = false;\n\n /** Optional unique id for the `summary` element. @category ID */\n @Prop() buttonid?: string;\n /** Optional unique id for the `div` element containing the content. @category ID */\n @Prop() contentid?: string;\n /** Optional prop that removes the default white background on the accordion row */\n @Prop() transparent: boolean = false;\n\n /** Dispatched every time the row is toggled. Includes the row element and the boolean `state` prop. */\n @Event() togglerow: EventEmitter<{ element: HTMLElement; state: Boolean }>;\n\n /** Internal function for closing rows when using the `single` prop on the `pn-accordion`. */\n @Listen('rowstate')\n handleRowState(event: CustomEvent) {\n if (event.detail !== this.state) {\n this.details.style.overflow = 'hidden';\n this.closeAccordion();\n }\n }\n\n componentWillLoad() {\n const slottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.label = slottedLabel ? null : this.label;\n }\n\n private toggleOpen(open?: boolean) {\n const state = open ?? !this.state;\n if (this.state !== open) this.togglerow.emit({ element: this.details, state });\n this.state = state;\n }\n\n private clickHandler(e: MouseEvent) {\n e.preventDefault();\n\n this.details.style.overflow = 'hidden';\n\n if (this.isClosing || !this.state) this.openAccordion();\n else if (this.isClosing || this.state) this.closeAccordion();\n\n const { x, width, y, top } = this.hostElement.getBoundingClientRect();\n const clientCor = e.clientX === 0 && e.clientY === 0 ? { clientX: x + width - 24, clientY: y - top } : e;\n\n ripple(clientCor, this.hostElement, '.pn-accordion-row-text');\n }\n\n private openAccordion() {\n this.details.style.height = `${this.details.offsetHeight}px`;\n this.toggleOpen(true);\n\n requestAnimationFrame(() => {\n this.isExpanding = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight + this.content.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(true, startHeight, endHeight);\n });\n }\n\n private closeAccordion() {\n this.isClosing = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(false, startHeight, endHeight);\n }\n\n private animate(open: boolean, startHeight: string, endHeight: string) {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.defaultAnimationDuration;\n\n this.animation = this.details.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n\n this.animation.onfinish = () => this.animationFinish(open);\n\n this.animation.oncancel = () => {\n if (open) this.isExpanding = false;\n else this.isClosing = false;\n };\n }\n\n private animationFinish(open: boolean) {\n this.toggleOpen(open);\n this.cancelAnimations();\n\n this.isClosing = false;\n this.isExpanding = false;\n\n this.details.style.height = '';\n this.details.style.overflow = '';\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n render() {\n return (\n <Host>\n <details class=\"pn-accordion-row\" open={this.state} ref={(el: HTMLDetailsElement) => (this.details = el)}>\n <summary\n id={this.buttonid}\n class=\"pn-accordion-row-summary\"\n onClick={e => this.clickHandler(e)}\n ref={el => (this.summary = el)}\n >\n <div class=\"pn-accordion-row-text\" data-transparent={this.transparent}>\n {this.label ? this.label : ''}\n <slot name=\"label\" />\n\n <pn-icon class=\"pn-accordion-row-icon\" icon={angle_down} />\n </div>\n </summary>\n\n <div id={this.contentid} class=\"pn-accordion-row-content\" ref={(el: HTMLDivElement) => (this.content = el)}>\n <slot />\n </div>\n </details>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"pn-accordion-row.js","sourceRoot":"","sources":["../../../../../src/components/content/pn-accordion/row/pn-accordion-row.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Element, Event, EventEmitter, Prop, State, Listen } from '@stencil/core';\nimport { chevron_down } from 'pn-design-assets/pn-assets/icons.js';\nimport { reduceMotion, ripple } from '@/index';\n\n/**\n * Use this row component inside a `pn-accordion` to create an accordion group.\n *\n * **Note**: you can use the `pn-accordion-row` without the parent accordion.\n * But you will have to style the gap between each row.\n *\n * @slot label - Include your own HTML as the label.\n * ```\n * <h3 slot=\"label\">Custom title</h3>\n * ```\n */\n@Component({\n tag: 'pn-accordion-row',\n styleUrl: 'pn-accordion-row.scss',\n})\nexport class PnAccordionRow {\n private details: HTMLDetailsElement;\n private summary: HTMLElement;\n private content: HTMLDivElement;\n private animation: Animation;\n\n private readonly defaultAnimationDuration: number = 400;\n private animationDuration: number = this.defaultAnimationDuration;\n\n @Element() hostElement: HTMLElement;\n\n @State() isClosing = false;\n @State() isExpanding = false;\n\n /** The label/title of the accordion row, you can also pass a slot with the name \"label\" if you want to put custom HTML content in there. */\n @Prop({ mutable: true }) label: string;\n /** The open/close status of the accordion row. */\n @Prop({ mutable: true }) state?: boolean = false;\n\n /** Optional unique id for the `summary` element. @category ID */\n @Prop() buttonid?: string;\n /** Optional unique id for the `div` element containing the content. @category ID */\n @Prop() contentid?: string;\n /** Optional prop that removes the default white background on the accordion row */\n @Prop() transparent: boolean = false;\n\n /** Dispatched every time the row is toggled. Includes the row element and the boolean `state` prop. */\n @Event() togglerow: EventEmitter<{ element: HTMLElement; state: Boolean }>;\n\n /** Internal function for closing rows when using the `single` prop on the `pn-accordion`. */\n @Listen('rowstate')\n handleRowState(event: CustomEvent) {\n if (event.detail !== this.state) {\n this.details.style.overflow = 'hidden';\n this.closeAccordion();\n }\n }\n\n componentWillLoad() {\n const slottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.label = slottedLabel ? null : this.label;\n }\n\n private toggleOpen(open?: boolean) {\n const state = open ?? !this.state;\n if (this.state !== open) this.togglerow.emit({ element: this.details, state });\n this.state = state;\n }\n\n private clickHandler(e: MouseEvent) {\n e.preventDefault();\n\n this.details.style.overflow = 'hidden';\n\n if (this.isClosing || !this.state) this.openAccordion();\n else if (this.isClosing || this.state) this.closeAccordion();\n\n const { x, width, y, top } = this.hostElement.getBoundingClientRect();\n const clientCor = e.clientX === 0 && e.clientY === 0 ? { clientX: x + width - 24, clientY: y - top } : e;\n\n ripple(clientCor, this.hostElement, '.pn-accordion-row-text');\n }\n\n private openAccordion() {\n this.details.style.height = `${this.details.offsetHeight}px`;\n this.toggleOpen(true);\n\n requestAnimationFrame(() => {\n this.isExpanding = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight + this.content.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(true, startHeight, endHeight);\n });\n }\n\n private closeAccordion() {\n this.isClosing = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(false, startHeight, endHeight);\n }\n\n private animate(open: boolean, startHeight: string, endHeight: string) {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.defaultAnimationDuration;\n\n this.animation = this.details.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n\n this.animation.onfinish = () => this.animationFinish(open);\n\n this.animation.oncancel = () => {\n if (open) this.isExpanding = false;\n else this.isClosing = false;\n };\n }\n\n private animationFinish(open: boolean) {\n this.toggleOpen(open);\n this.cancelAnimations();\n\n this.isClosing = false;\n this.isExpanding = false;\n\n this.details.style.height = '';\n this.details.style.overflow = '';\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n render() {\n return (\n <Host>\n <details class=\"pn-accordion-row\" open={this.state} ref={(el: HTMLDetailsElement) => (this.details = el)}>\n <summary\n id={this.buttonid}\n class=\"pn-accordion-row-summary\"\n onClick={e => this.clickHandler(e)}\n ref={el => (this.summary = el)}\n >\n <div class=\"pn-accordion-row-text\" data-transparent={this.transparent}>\n {this.label ? this.label : ''}\n <slot name=\"label\" />\n\n <pn-icon class=\"pn-accordion-row-icon\" icon={chevron_down} />\n </div>\n </summary>\n\n <div id={this.contentid} class=\"pn-accordion-row-content\" ref={(el: HTMLDivElement) => (this.content = el)}>\n <slot />\n </div>\n </details>\n </Host>\n );\n }\n}\n"]}
@@ -3,22 +3,17 @@
3
3
  /* Transition variables */
4
4
  pn-modal .pn-modal {
5
5
  --pn-modal-max-width: 45em;
6
- --pn-modal-overflow: hidden auto;
7
6
  z-index: 10000;
8
7
  position: fixed;
9
8
  top: 0;
10
9
  inset-block-start: 0;
11
10
  inset-block-end: 0;
12
11
  margin: auto;
13
- overflow: var(--pn-modal-overflow);
12
+ padding: 0;
14
13
  max-width: var(--pn-modal-max-width);
15
- max-height: 85vh;
16
- padding: clamp(1em, 5vw, 1.5em) 0;
17
- border: 0.0625em solid #f3f2f2;
18
- border-radius: 0.5em;
19
- flex-direction: column;
20
- align-items: stretch;
21
- gap: 0.75em;
14
+ overflow: hidden;
15
+ border: 0;
16
+ border-radius: 1.5em;
22
17
  box-shadow: 0 0.25em 0.875em rgba(0, 0, 0, 0.18), 0 1.625em 3.5em rgba(0, 0, 0, 0.22);
23
18
  background-color: #ffffff;
24
19
  display: none;
@@ -26,7 +21,7 @@ pn-modal .pn-modal {
26
21
  transform: translate(0%, 20%);
27
22
  outline: 0.2rem solid transparent;
28
23
  outline-offset: 0.2rem;
29
- transition-property: opacity, overlay, display, transform, outline-color;
24
+ transition-property: opacity, overlay, display, transform, outline-color, border-radius;
30
25
  transition-duration: 0.4s;
31
26
  transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
32
27
  transition-behavior: allow-discrete;
@@ -34,40 +29,34 @@ pn-modal .pn-modal {
34
29
  pn-modal .pn-modal:focus-visible {
35
30
  outline-color: #ffffff;
36
31
  }
37
- pn-modal .pn-modal::-webkit-scrollbar {
38
- background-color: #ffffff;
39
- width: 0.875em;
40
- border-radius: 0.5em;
41
- }
42
- pn-modal .pn-modal::-webkit-scrollbar-track {
43
- background-color: #ffffff;
44
- border-radius: 0.5em;
45
- }
46
- pn-modal .pn-modal::-webkit-scrollbar-thumb {
47
- cursor: pointer;
48
- background-color: #969087;
49
- border-radius: 1em;
50
- border: 0.25em solid #ffffff;
51
- }
52
- pn-modal .pn-modal::-webkit-scrollbar-thumb:hover {
53
- background-color: #5e554a;
54
- }
55
- pn-modal .pn-modal::-webkit-scrollbar-corner, pn-modal .pn-modal::-webkit-scrollbar-button {
56
- display: none;
57
- }
58
32
  @media (prefers-reduced-motion: reduce) {
59
33
  pn-modal .pn-modal {
60
34
  transition-duration: 0s;
61
35
  transition-delay: 0s;
62
36
  }
63
37
  }
38
+ pn-modal .pn-modal[data-allow-overflow] {
39
+ overflow: unset;
40
+ }
41
+ pn-modal .pn-modal[data-allow-overflow] .pn-modal-container {
42
+ overflow: unset;
43
+ }
44
+ pn-modal .pn-modal[data-allow-overflow] .pn-modal-picture {
45
+ border-top-right-radius: 1.5em;
46
+ }
47
+ pn-modal .pn-modal[data-image] {
48
+ padding-top: 0;
49
+ }
64
50
  pn-modal .pn-modal[data-sheet] {
65
51
  margin: 0 0 0 auto;
66
52
  height: 100%;
67
53
  max-height: unset;
68
- border-radius: 0.5em 0 0 0.5em;
54
+ border-radius: 1.5em 0 0 1.5em;
69
55
  transform: translate(20%, 0%);
70
56
  }
57
+ pn-modal .pn-modal[data-sheet] .pn-modal-container {
58
+ max-height: unset;
59
+ }
71
60
  pn-modal .pn-modal[open] {
72
61
  display: flex;
73
62
  opacity: 1;
@@ -109,16 +98,52 @@ pn-modal .pn-modal[open]::backdrop {
109
98
  background-color: rgba(0, 0, 0, 0);
110
99
  }
111
100
  }
101
+ pn-modal .pn-modal-container {
102
+ max-height: 85vh;
103
+ display: flex;
104
+ flex-direction: column;
105
+ align-items: stretch;
106
+ height: 100%;
107
+ overflow: hidden auto;
108
+ }
109
+ pn-modal .pn-modal-container::-webkit-scrollbar {
110
+ background-color: #ffffff;
111
+ width: 0.875em;
112
+ border-radius: 0.5em;
113
+ }
114
+ pn-modal .pn-modal-container::-webkit-scrollbar-track {
115
+ background-color: #ffffff;
116
+ border-radius: 0.5em;
117
+ }
118
+ pn-modal .pn-modal-container::-webkit-scrollbar-thumb {
119
+ cursor: pointer;
120
+ background-color: #969087;
121
+ border-radius: 1em;
122
+ border: 0.25em solid #ffffff;
123
+ }
124
+ pn-modal .pn-modal-container::-webkit-scrollbar-thumb:hover {
125
+ background-color: #5e554a;
126
+ }
127
+ pn-modal .pn-modal-container::-webkit-scrollbar-corner, pn-modal .pn-modal-container::-webkit-scrollbar-button {
128
+ display: none;
129
+ }
112
130
  pn-modal .pn-modal-close-button {
113
131
  position: absolute;
114
- right: 0.5em;
115
- top: 0.5em;
132
+ z-index: 10;
133
+ right: 0.75em;
134
+ top: 0.75em;
116
135
  }
117
136
  pn-modal .pn-modal-header {
118
137
  display: flex;
119
138
  flex-direction: column;
120
139
  gap: 0.5em;
121
- padding: 0 clamp(1em, 5vw, 1.5em);
140
+ padding: clamp(1em, 5vw, 1.5em);
141
+ }
142
+ pn-modal .pn-modal-header[hidden] {
143
+ display: none;
144
+ }
145
+ pn-modal .pn-modal-header:not([hidden]) + .pn-modal-content:not([hidden]) {
146
+ padding-top: 0;
122
147
  }
123
148
  pn-modal .pn-modal-label {
124
149
  line-height: 1.5;
@@ -129,28 +154,55 @@ pn-modal .pn-modal-text {
129
154
  margin: 0;
130
155
  }
131
156
  pn-modal .pn-modal-content {
132
- padding: 0 clamp(1em, 5vw, 1.5em);
157
+ padding: clamp(1em, 5vw, 1.5em);
158
+ }
159
+ pn-modal .pn-modal-image {
160
+ position: relative;
161
+ display: flex;
162
+ flex-direction: column;
163
+ }
164
+ pn-modal .pn-modal-image[hidden] {
165
+ display: none;
166
+ }
167
+ pn-modal .pn-modal-picture {
168
+ margin: 0;
169
+ padding: 0;
170
+ display: block;
171
+ overflow: hidden;
172
+ border-radius: 1.5em 0 0 0;
173
+ }
174
+ pn-modal .pn-modal-picture > *[slot=image] {
175
+ display: block;
176
+ height: 100%;
177
+ width: 100%;
178
+ object-fit: cover;
133
179
  }
134
180
  pn-modal .pn-modal-buttons {
135
181
  background-color: #ffffff;
136
182
  border-top: 0.0625em solid #d3cecb;
137
- padding: clamp(1em, 5vw, 1.5em) clamp(1em, 5vw, 1.5em) 0;
183
+ padding: clamp(1em, 5vw, 1.5em);
138
184
  display: flex;
139
185
  justify-content: flex-end;
140
186
  gap: 0.5em;
187
+ border-radius: 0 0 1.5em 1.5em;
141
188
  }
142
- pn-modal .pn-modal-buttons [slot=buttons]:not(pn-button) {
189
+ pn-modal .pn-modal-buttons > [slot=buttons]:not(pn-button) {
143
190
  display: flex;
144
191
  justify-content: flex-end;
145
192
  gap: 0.5em;
146
193
  }
194
+ pn-modal .pn-modal-buttons > [slot=buttons]:not(pn-button) > [data-left] {
195
+ margin-right: auto;
196
+ }
197
+ pn-modal .pn-modal-buttons > [data-left] {
198
+ margin-right: auto;
199
+ }
147
200
  pn-modal .pn-modal-buttons:empty {
148
201
  display: none;
149
202
  }
150
203
 
151
- @media (max-width: 30em) {
204
+ @media (max-width: 55em) {
152
205
  pn-modal .pn-modal {
153
- width: 100%;
154
206
  max-height: 95vh;
155
207
  margin-bottom: 0;
156
208
  bottom: 0;
@@ -2,8 +2,8 @@
2
2
  * Built with Stencil
3
3
  * By PostNord.
4
4
  */
5
- import { h, Host, forceUpdate } from "@stencil/core";
6
- import { awaitTopbar, en, reduceMotion } from "../../../index";
5
+ import { h, Host, forceUpdate, } from "@stencil/core";
6
+ import { awaitTopbar, en, isSmallScreen, reduceMotion } from "../../../index";
7
7
  import { close as closeIcon } from "pn-design-assets/pn-assets/icons.js";
8
8
  import { translations } from "./translation";
9
9
  /**
@@ -12,13 +12,16 @@ import { translations } from "./translation";
12
12
  * Use the event `modalToggle` to determine when the modal is being closed/opened by the user.
13
13
  *
14
14
  * @slot - The default slot, will be placed in the middle content area.
15
+ * @slot image - Place an image or illustration at the top of the modal.
15
16
  * @slot header - Place the title + lead text in the header.
16
17
  * @slot buttons - Place buttons inside the modal at the bottom.
18
+ * pn-buttons aligns automatically to the right, set the data-left attribute on the button you want to align to the left.
17
19
  */
18
20
  export class PnModal {
19
21
  constructor() {
20
22
  this.isClosing = false;
21
23
  this.isOpening = false;
24
+ this.removeOverflow = false;
22
25
  this.label = undefined;
23
26
  this.helpertext = undefined;
24
27
  this.language = null;
@@ -34,6 +37,8 @@ export class PnModal {
34
37
  animationDuration = this.standardAnimationDuration;
35
38
  modalTimeout;
36
39
  modalElement;
40
+ modalContainer;
41
+ modalPicture;
37
42
  hostElement;
38
43
  handleOpen() {
39
44
  if (this.open)
@@ -59,6 +64,10 @@ export class PnModal {
59
64
  const width = this.maxWidth || '45em';
60
65
  this.modalElement.style.setProperty('--pn-modal-max-width', width);
61
66
  }
67
+ handleOverflow() {
68
+ if (this.allowOverflow)
69
+ this.setOverflow();
70
+ }
62
71
  /** This event is fired when the modal is toggled. */
63
72
  modalToggle;
64
73
  /** This event is dispatched after the opening/closing animation has finished playing. */
@@ -88,11 +97,18 @@ export class PnModal {
88
97
  translate(prop) {
89
98
  return translations?.[prop]?.[this.language || en] || prop;
90
99
  }
91
- handleOverflow() {
92
- if (!this.allowOverflow)
93
- return;
94
- const overflow = this.modalElement.scrollHeight > innerHeight * 0.85 ? 'hidden auto' : 'unset';
95
- this.modalElement.style.setProperty('--pn-modal-overflow', overflow);
100
+ showImage() {
101
+ return !!this.modalPicture?.innerHTML;
102
+ }
103
+ showHeader() {
104
+ return !!(this.label || this.helpertext || this.hostElement.querySelector('[slot="header"]')?.textContent);
105
+ }
106
+ setOverflow() {
107
+ this.removeOverflow = !this.hasOverflow();
108
+ }
109
+ hasOverflow() {
110
+ const multiplyWith = isSmallScreen() ? 0.95 : 0.85;
111
+ return this.modalContainer?.scrollHeight > innerHeight * multiplyWith;
96
112
  }
97
113
  isSameModal(target) {
98
114
  return this.modalElement.isSameNode(target);
@@ -129,7 +145,7 @@ export class PnModal {
129
145
  this.open = state ?? !this.open;
130
146
  }
131
147
  render() {
132
- return (h(Host, { key: '6bf631cc88584b24782904a9918091736e27c3d6' }, h("dialog", { key: '543806f18626bd7f8f6983a5c3769f8bf0422544', class: "pn-modal", "data-closing": this.isClosing, "data-sheet": this.sheet, onClose: () => this.setModalClose(), onCancel: () => this.setModalClose(), onToggle: () => this.modalToggle.emit({ open: this.open }), onKeyDown: event => this.handleKeyboard(event), onClick: event => this.clickModalBackground(event), ref: el => (this.modalElement = el) }, !this.hideClose && (h("pn-button", { key: '60350dfcac19aa570b78e4fb82ca2a0a288de1b7', small: true, class: "pn-modal-close-button", icon: closeIcon, iconOnly: true, arialabel: this.translate('CLOSE_MODAL'), appearance: "light", variant: "borderless", type: "button", onPnClick: () => this.setModalClose() })), h("header", { key: 'ba3d857e5f0b57c9567b045843f3b3a1aee9f06d', class: "pn-modal-header" }, this.label && h("h2", { key: '524b36cbeb3f1e0274fb29a3656638c4c221cec9', class: "pn-modal-label" }, this.label), this.helpertext && h("p", { key: '330777c3c194177f7fc811eb45f2ee3a585894fc', class: "pn-modal-text" }, this.helpertext), h("slot", { key: '62dbf64100d4e62974a18752423a781db737333f', name: "header" })), h("section", { key: '57618a994095a9f24c7a142d86fa788cca531062', class: "pn-modal-content" }, h("slot", { key: '14f533135af35a88d1fb03b8e57cd133d3981629' })), h("nav", { key: 'd355d6c0024893a26b1e17bf187a7d0e3142b766', class: "pn-modal-buttons" }, h("slot", { key: '20020f7fd89b706bfaf5825090d6a0470e91b577', name: "buttons" })))));
148
+ return (h(Host, { key: 'd24c1b43f9eebc2d2759e4b6b15982889c559c08' }, h("dialog", { key: '4111d8ae6c9eb198cb74744dce15b37ec1a4157c', class: "pn-modal", "data-closing": this.isClosing, "data-sheet": this.sheet, "data-image": this.showImage(), "data-allow-overflow": this.removeOverflow, onClose: () => this.setModalClose(), onCancel: () => this.setModalClose(), onToggle: () => this.modalToggle.emit({ open: this.open }), onKeyDown: event => this.handleKeyboard(event), onClick: event => this.clickModalBackground(event), ref: el => (this.modalElement = el) }, !this.hideClose && (h("pn-button", { key: '9411bdbf12899d1913f5094981d08e8161277408', small: true, class: "pn-modal-close-button", icon: closeIcon, iconOnly: true, arialabel: this.translate('CLOSE_MODAL'), appearance: "light", variant: "borderless", type: "button", onPnClick: () => this.setModalClose() })), h("div", { key: '917803e1f7847c4b4609fd121391fc33919ea5d3', class: "pn-modal-container", ref: el => (this.modalContainer = el) }, h("div", { key: '3241e14d8647278032ecb4274c39ab6e3615cf6b', class: "pn-modal-image", hidden: !this.showImage() }, h("picture", { key: '6a830c0e51a4c1a9870dd06509a3eaa5a06ce048', class: "pn-modal-picture", ref: el => (this.modalPicture = el) }, h("slot", { key: '098e962a7cc8ac57309ba74951e4a8b0c0aebf08', name: "image" }))), h("header", { key: '41697c436ba9431fe4fa2ae11ca270852f7db309', class: "pn-modal-header", hidden: !this.showHeader() }, this.label && h("h2", { key: '1fcb37a181cfcb6315f2e470eef006842b1ccf53', class: "pn-modal-label" }, this.label), this.helpertext && h("p", { key: '7907955b0d34a729eb142985be24a85fcf5b0c73', class: "pn-modal-text" }, this.helpertext), h("slot", { key: 'c4c8d17830001c3e8df504de9006bcc3cd448549', name: "header" })), h("section", { key: '266f424be0a181433d50cb08904133c9f2aaa67e', class: "pn-modal-content" }, h("slot", { key: '030bb328e6fc00a14305b4134861b38a8fc8f426' })), h("nav", { key: '05d67c40c30af133a7037c3ed57a72b5e5b9de2f', class: "pn-modal-buttons" }, h("slot", { key: 'a12fd530166c6d08aa1a50f0393c4ca2b22b1fc0', name: "buttons" }))))));
133
149
  }
134
150
  static get is() { return "pn-modal"; }
135
151
  static get originalStyleUrls() {
@@ -330,7 +346,8 @@ export class PnModal {
330
346
  static get states() {
331
347
  return {
332
348
  "isClosing": {},
333
- "isOpening": {}
349
+ "isOpening": {},
350
+ "removeOverflow": {}
334
351
  };
335
352
  }
336
353
  static get events() {
@@ -394,5 +411,14 @@ export class PnModal {
394
411
  "methodName": "handleMaxWidth"
395
412
  }];
396
413
  }
414
+ static get listeners() {
415
+ return [{
416
+ "name": "resize",
417
+ "method": "handleOverflow",
418
+ "target": "window",
419
+ "capture": false,
420
+ "passive": true
421
+ }];
422
+ }
397
423
  }
398
424
  //# sourceMappingURL=pn-modal.js.map