udp-stencil-component-library 25.18.1-beta.6 → 25.18.1-beta.8

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 (344) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +12 -12
  2. package/dist/cjs/advanced-search_50.cjs.entry.js +169 -96
  3. package/dist/cjs/ag-grid-base_5.cjs.entry.js +5 -5
  4. package/dist/cjs/api-method-instance-grid.cjs.entry.js +1 -1
  5. package/dist/cjs/check-box.cjs.entry.js +2 -2
  6. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  7. package/dist/cjs/client-side-grid_2.cjs.entry.js +3 -3
  8. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  9. package/dist/cjs/date-time-renderer_6.cjs.entry.js +8 -8
  10. package/dist/cjs/entity-maintenance-grid.cjs.entry.js +1 -1
  11. package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
  12. package/dist/cjs/image-upload_7.cjs.entry.js +6 -6
  13. package/dist/cjs/index-DrMNAZCL.js +4 -0
  14. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  17. package/dist/cjs/numeric-field_5.cjs.entry.js +15 -15
  18. package/dist/cjs/page-renderer.cjs.entry.js +1 -1
  19. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +14 -14
  20. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  21. package/dist/cjs/search-method-grid.cjs.entry.js +1 -1
  22. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  23. package/dist/cjs/simple-card.cjs.entry.js +1 -1
  24. package/dist/cjs/stencil-library.cjs.js +1 -1
  25. package/dist/cjs/udp-chip_3.cjs.entry.js +1 -1
  26. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  27. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  28. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  29. package/dist/cjs/udp-container.cjs.entry.js +2 -2
  30. package/dist/cjs/udp-date-range-selector.cjs.entry.js +1 -1
  31. package/dist/cjs/udp-dynamic-form.cjs.entry.js +1 -1
  32. package/dist/cjs/udp-forms-follow-up-list-card.cjs.entry.js +2 -2
  33. package/dist/cjs/udp-forms-list-card.cjs.entry.js +5 -5
  34. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  35. package/dist/cjs/udp-forms-renderer.cjs.entry.js +1 -1
  36. package/dist/cjs/udp-list-renderer.udp-pagination.udp-side-sheet.entry.cjs.js.map +1 -1
  37. package/dist/cjs/udp-list-renderer_3.cjs.entry.js +194 -5
  38. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  39. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  40. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  41. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  42. package/dist/cjs/udp-tab-panel.cjs.entry.js +22 -0
  43. package/dist/cjs/udp-tab-panel.entry.cjs.js.map +1 -0
  44. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  45. package/dist/collection/collection-manifest.json +1 -0
  46. package/dist/collection/components/my-component/UI/data-display/icons/udp-icon.js +4 -1
  47. package/dist/collection/components/my-component/UI/data-display/icons/udp-icon.js.map +1 -1
  48. package/dist/collection/components/my-component/UI/data-display/kpi/kpi-list.js +1 -1
  49. package/dist/collection/components/my-component/UI/data-display/list-item/list-item.js +2 -2
  50. package/dist/collection/components/my-component/UI/data-display/pop-over/udp-pop-over.js +1 -1
  51. package/dist/collection/components/my-component/UI/data-display/pop-over-grid-action-header/udp-pop-over-grid-action-header.js +1 -1
  52. package/dist/collection/components/my-component/UI/data-display/primary-action-header/primary-action-header.js +2 -2
  53. package/dist/collection/components/my-component/UI/data-display/simple-card/simple-card.js +1 -1
  54. package/dist/collection/components/my-component/UI/data-display/tool-tip/udp-ambient-tool-tip.js +2 -2
  55. package/dist/collection/components/my-component/UI/data-display/tree/tree-list-item/search-item/search-list-item.js +1 -1
  56. package/dist/collection/components/my-component/UI/data-display/udp-avatar/udp-avatar.js +1 -1
  57. package/dist/collection/components/my-component/UI/dialogs/fluent-dialog/fluent-dialog.js +2 -2
  58. package/dist/collection/components/my-component/UI/dialogs/udp-dialog.js +1 -1
  59. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/types.js +2 -0
  60. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/types.js.map +1 -0
  61. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.css +163 -137
  62. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.js +269 -19
  63. package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.js.map +1 -1
  64. package/dist/collection/components/my-component/UI/feedback/udp-notification/alerts/upd-alert-banner.js +1 -1
  65. package/dist/collection/components/my-component/UI/feedback/udp-notification/udp-notification.js +2 -2
  66. package/dist/collection/components/my-component/UI/forms/dynamic-form/udp-dynamic-form.js +1 -1
  67. package/dist/collection/components/my-component/UI/forms/edit-view-form/edit-view-form.js +2 -2
  68. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +1 -1
  69. package/dist/collection/components/my-component/UI/forms/save-view-form/save-view-form.js +2 -2
  70. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/forms-question-item/udp-forms-builder-question-item.js +2 -2
  71. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/file-upload-renderer/file-upload-renderer.js +2 -2
  72. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/list-option-renderer/list-options-renderer.js +3 -3
  73. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-configs-renderer/question-configs-renderer.js +6 -6
  74. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/section-configs-renderer/section-configs-renderer.js +3 -3
  75. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js +1 -1
  76. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/text-input-renderer/text-input-renderer.js +2 -2
  77. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-menu/udp-forms-builder-menu.js +2 -2
  78. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-style-override/udp-forms-builder-style-override.js +1 -1
  79. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js +5 -5
  80. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  81. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer-follow-up-list-card/udp-forms-follow-up-list-card.js +2 -2
  82. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +1 -1
  83. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  84. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
  85. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  86. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  87. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  88. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-instance-grid.js +1 -1
  89. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  90. package/dist/collection/components/my-component/UI/grid/new-grid/entity-maintenance-grid.js +1 -1
  91. package/dist/collection/components/my-component/UI/grid/new-grid/search-method-grid.js +1 -1
  92. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  93. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  94. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +2 -2
  95. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  96. package/dist/collection/components/my-component/UI/inputs/date-range-selector/udp-date-range-selector.js +1 -1
  97. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  98. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  99. package/dist/collection/components/my-component/UI/inputs/image-upload/image-upload.js +1 -1
  100. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +3 -3
  101. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +2 -2
  102. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  103. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +3 -3
  104. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +3 -3
  105. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +3 -3
  106. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  107. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  108. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  109. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  110. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  111. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  112. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  113. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  114. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  115. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  116. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  117. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  118. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  119. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  120. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  121. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  122. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +2 -2
  123. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  124. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  125. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  126. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  127. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +1 -1
  128. package/dist/collection/components/my-component/UI/menu/udp-menu.js +1 -1
  129. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  130. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.css +0 -5
  131. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +170 -37
  132. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js.map +1 -1
  133. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.css +2 -4
  134. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +3 -3
  135. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js.map +1 -1
  136. package/dist/collection/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.css +11 -0
  137. package/dist/collection/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.js +65 -0
  138. package/dist/collection/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.js.map +1 -0
  139. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  140. package/dist/collection/components/my-component/UI/util/ghost-render/ghost-render.js +1 -1
  141. package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
  142. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  143. package/dist/collection/page-renderer/page-renderer.js +1 -1
  144. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  145. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  146. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  147. package/dist/components/add-map-feature-popup2.js +3 -3
  148. package/dist/components/ag-grid-base2.js +1 -1
  149. package/dist/components/ag-table2.js +1 -1
  150. package/dist/components/ambient-demo-container2.js +1 -1
  151. package/dist/components/ambient-template-grid2.js +15 -15
  152. package/dist/components/api-method-instance-grid.js +1 -1
  153. package/dist/components/app-bar2.js +1 -1
  154. package/dist/components/check-box2.js +2 -2
  155. package/dist/components/chip-section.js +2 -2
  156. package/dist/components/client-side-grid2.js +1 -1
  157. package/dist/components/color-preview.js +1 -1
  158. package/dist/components/edit-view-form.js +2 -2
  159. package/dist/components/entity-maintenance-grid.js +1 -1
  160. package/dist/components/feature-details-card2.js +4 -4
  161. package/dist/components/feature-details-popup2.js +1 -1
  162. package/dist/components/file-upload-renderer2.js +2 -2
  163. package/dist/components/fluent-dialog2.js +2 -2
  164. package/dist/components/ghost-render2.js +1 -1
  165. package/dist/components/grid-primary-bar2.js +2 -2
  166. package/dist/components/image-upload2.js +1 -1
  167. package/dist/components/inputs-example.js +2 -2
  168. package/dist/components/kpi-list2.js +1 -1
  169. package/dist/components/list-item.js +2 -2
  170. package/dist/components/list-options-renderer2.js +3 -3
  171. package/dist/components/map-component2.js +1 -1
  172. package/dist/components/map-toolbar2.js +6 -6
  173. package/dist/components/numeric-field2.js +3 -3
  174. package/dist/components/page-renderer.js +1 -1
  175. package/dist/components/primary-action-header2.js +2 -2
  176. package/dist/components/question-configs-renderer2.js +6 -6
  177. package/dist/components/resource-timeline-calendar.js +1 -1
  178. package/dist/components/resource-timeline-primary-bar2.js +2 -2
  179. package/dist/components/save-view-form.js +2 -2
  180. package/dist/components/search-list-item2.js +1 -1
  181. package/dist/components/search-method-grid2.js +1 -1
  182. package/dist/components/section-configs-renderer2.js +3 -3
  183. package/dist/components/select-layer-popup2.js +2 -2
  184. package/dist/components/server-side-grid2.js +1 -1
  185. package/dist/components/signature-input2.js +2 -2
  186. package/dist/components/signature-renderer2.js +1 -1
  187. package/dist/components/simple-card.js +1 -1
  188. package/dist/components/split-line-popup2.js +1 -1
  189. package/dist/components/stencil-form2.js +1 -1
  190. package/dist/components/stencil-toggle2.js +4 -4
  191. package/dist/components/tally.js +2 -2
  192. package/dist/components/text-area2.js +3 -3
  193. package/dist/components/text-field2.js +3 -3
  194. package/dist/components/text-input-renderer2.js +2 -2
  195. package/dist/components/udp-ambient-tool-tip2.js +2 -2
  196. package/dist/components/udp-avatar2.js +1 -1
  197. package/dist/components/udp-container-query-grid-item.js +1 -1
  198. package/dist/components/udp-container-query-grid.js +1 -1
  199. package/dist/components/udp-container-query2.js +2 -2
  200. package/dist/components/udp-container2.js +2 -2
  201. package/dist/components/udp-date-range-selector.js +1 -1
  202. package/dist/components/udp-date-selector2.js +3 -3
  203. package/dist/components/udp-datetime-selector2.js +3 -3
  204. package/dist/components/udp-dialog2.js +1 -1
  205. package/dist/components/udp-dynamic-container-with-menu2.js +1 -1
  206. package/dist/components/udp-dynamic-form.js +1 -1
  207. package/dist/components/udp-forms-builder-menu2.js +2 -2
  208. package/dist/components/udp-forms-builder-question-item2.js +2 -2
  209. package/dist/components/udp-forms-builder-style-override2.js +1 -1
  210. package/dist/components/udp-forms-builder.js +72 -60
  211. package/dist/components/udp-forms-builder.js.map +1 -1
  212. package/dist/components/udp-forms-follow-up-list-card.js +2 -2
  213. package/dist/components/udp-forms-list-card2.js +5 -5
  214. package/dist/components/udp-forms-list.js +51 -39
  215. package/dist/components/udp-forms-list.js.map +1 -1
  216. package/dist/components/udp-forms-renderer.js +67 -55
  217. package/dist/components/udp-forms-renderer.js.map +1 -1
  218. package/dist/components/udp-grid-loader2.js +2 -2
  219. package/dist/components/udp-hotlist-form2.js +1 -1
  220. package/dist/components/udp-icon2.js +4 -1
  221. package/dist/components/udp-icon2.js.map +1 -1
  222. package/dist/components/udp-linear-loader2.js +1 -1
  223. package/dist/components/udp-map-toolbar2.js +1 -1
  224. package/dist/components/udp-map.js +3 -3
  225. package/dist/components/udp-menu-item2.js +1 -1
  226. package/dist/components/udp-menu2.js +1 -1
  227. package/dist/components/udp-notification2.js +2 -2
  228. package/dist/components/udp-page.js +1 -1
  229. package/dist/components/udp-pop-over-grid-action-header2.js +1 -1
  230. package/dist/components/udp-pop-over2.js +1 -1
  231. package/dist/components/udp-selector2.js +4 -4
  232. package/dist/components/udp-side-sheet2.js +228 -19
  233. package/dist/components/udp-side-sheet2.js.map +1 -1
  234. package/dist/components/udp-skeleton-loading2.js +1 -1
  235. package/dist/components/udp-split-screen.js +1 -1
  236. package/dist/components/udp-stepper-demo.js +1 -1
  237. package/dist/components/udp-tab-panel.d.ts +11 -0
  238. package/dist/components/udp-tab-panel.js +45 -0
  239. package/dist/components/udp-tab-panel.js.map +1 -0
  240. package/dist/components/udp-tab2.js +3 -3
  241. package/dist/components/udp-tab2.js.map +1 -1
  242. package/dist/components/udp-tabs2.js +114 -40
  243. package/dist/components/udp-tabs2.js.map +1 -1
  244. package/dist/components/udp-time-selector2.js +3 -3
  245. package/dist/components/udp-vertical-spacer.js +1 -1
  246. package/dist/components/upd-alert-banner2.js +1 -1
  247. package/dist/docs.json +263 -31
  248. package/dist/esm/add-map-feature-popup_4.entry.js +12 -12
  249. package/dist/esm/advanced-search_50.entry.js +169 -96
  250. package/dist/esm/ag-grid-base_5.entry.js +5 -5
  251. package/dist/esm/api-method-instance-grid.entry.js +1 -1
  252. package/dist/esm/check-box.entry.js +2 -2
  253. package/dist/esm/chip-section.entry.js +2 -2
  254. package/dist/esm/client-side-grid_2.entry.js +3 -3
  255. package/dist/esm/color-preview.entry.js +1 -1
  256. package/dist/esm/date-time-renderer_6.entry.js +8 -8
  257. package/dist/esm/entity-maintenance-grid.entry.js +1 -1
  258. package/dist/esm/feature-details-card_2.entry.js +5 -5
  259. package/dist/esm/image-upload_7.entry.js +6 -6
  260. package/dist/esm/index-n-1ZSeAs.js +4 -0
  261. package/dist/esm/inputs-example.entry.js +2 -2
  262. package/dist/esm/loader.js +1 -1
  263. package/dist/esm/map-component_2.entry.js +2 -2
  264. package/dist/esm/numeric-field_5.entry.js +15 -15
  265. package/dist/esm/page-renderer.entry.js +1 -1
  266. package/dist/esm/question-configs-renderer_5.entry.js +14 -14
  267. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  268. package/dist/esm/search-method-grid.entry.js +1 -1
  269. package/dist/esm/server-side-grid.entry.js +1 -1
  270. package/dist/esm/simple-card.entry.js +1 -1
  271. package/dist/esm/stencil-library.js +1 -1
  272. package/dist/esm/udp-chip_3.entry.js +1 -1
  273. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  274. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  275. package/dist/esm/udp-container-query.entry.js +2 -2
  276. package/dist/esm/udp-container.entry.js +2 -2
  277. package/dist/esm/udp-date-range-selector.entry.js +1 -1
  278. package/dist/esm/udp-dynamic-form.entry.js +1 -1
  279. package/dist/esm/udp-forms-follow-up-list-card.entry.js +2 -2
  280. package/dist/esm/udp-forms-list-card.entry.js +5 -5
  281. package/dist/esm/udp-forms-list.entry.js +1 -1
  282. package/dist/esm/udp-forms-renderer.entry.js +1 -1
  283. package/dist/esm/udp-list-renderer.udp-pagination.udp-side-sheet.entry.js.map +1 -1
  284. package/dist/esm/udp-list-renderer_3.entry.js +194 -5
  285. package/dist/esm/udp-map.entry.js +3 -3
  286. package/dist/esm/udp-page.entry.js +1 -1
  287. package/dist/esm/udp-split-screen.entry.js +1 -1
  288. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  289. package/dist/esm/udp-tab-panel.entry.js +20 -0
  290. package/dist/esm/udp-tab-panel.entry.js.map +1 -0
  291. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  292. package/dist/stencil-library/add-map-feature-popup_4.entry.js +1 -1
  293. package/dist/stencil-library/advanced-search_50.entry.js +1 -1
  294. package/dist/stencil-library/advanced-search_50.entry.js.map +1 -1
  295. package/dist/stencil-library/ag-grid-base_5.entry.js +1 -1
  296. package/dist/stencil-library/api-method-instance-grid.entry.js +1 -1
  297. package/dist/stencil-library/check-box.entry.js +1 -1
  298. package/dist/stencil-library/chip-section.entry.js +1 -1
  299. package/dist/stencil-library/client-side-grid_2.entry.js +1 -1
  300. package/dist/stencil-library/color-preview.entry.js +1 -1
  301. package/dist/stencil-library/date-time-renderer_6.entry.js +1 -1
  302. package/dist/stencil-library/entity-maintenance-grid.entry.js +1 -1
  303. package/dist/stencil-library/feature-details-card_2.entry.js +1 -1
  304. package/dist/stencil-library/image-upload_7.entry.js +1 -1
  305. package/dist/stencil-library/inputs-example.entry.js +1 -1
  306. package/dist/stencil-library/map-component_2.entry.js +1 -1
  307. package/dist/stencil-library/numeric-field_5.entry.js +1 -1
  308. package/dist/stencil-library/page-renderer.entry.js +1 -1
  309. package/dist/stencil-library/question-configs-renderer_5.entry.js +1 -1
  310. package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
  311. package/dist/stencil-library/search-method-grid.entry.js +1 -1
  312. package/dist/stencil-library/server-side-grid.entry.js +1 -1
  313. package/dist/stencil-library/simple-card.entry.js +1 -1
  314. package/dist/stencil-library/simple-card.entry.js.map +1 -1
  315. package/dist/stencil-library/stencil-library.esm.js +1 -1
  316. package/dist/stencil-library/udp-chip_3.entry.js +1 -1
  317. package/dist/stencil-library/udp-container-query-grid-item.entry.js +1 -1
  318. package/dist/stencil-library/udp-container-query-grid.entry.js +1 -1
  319. package/dist/stencil-library/udp-container-query.entry.js +1 -1
  320. package/dist/stencil-library/udp-container.entry.js +1 -1
  321. package/dist/stencil-library/udp-date-range-selector.entry.js +1 -1
  322. package/dist/stencil-library/udp-dynamic-form.entry.js +1 -1
  323. package/dist/stencil-library/udp-forms-follow-up-list-card.entry.js +1 -1
  324. package/dist/stencil-library/udp-forms-list-card.entry.js +1 -1
  325. package/dist/stencil-library/udp-forms-list.entry.js +1 -1
  326. package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
  327. package/dist/stencil-library/udp-list-renderer.udp-pagination.udp-side-sheet.entry.esm.js.map +1 -1
  328. package/dist/stencil-library/udp-list-renderer_3.entry.js +1 -1
  329. package/dist/stencil-library/udp-list-renderer_3.entry.js.map +1 -1
  330. package/dist/stencil-library/udp-map.entry.js +1 -1
  331. package/dist/stencil-library/udp-page.entry.js +1 -1
  332. package/dist/stencil-library/udp-split-screen.entry.js +1 -1
  333. package/dist/stencil-library/udp-stepper-demo.entry.js +1 -1
  334. package/dist/stencil-library/udp-tab-panel.entry.esm.js.map +1 -0
  335. package/dist/stencil-library/udp-tab-panel.entry.js +2 -0
  336. package/dist/stencil-library/udp-tab-panel.entry.js.map +1 -0
  337. package/dist/stencil-library/udp-vertical-spacer.entry.js +1 -1
  338. package/dist/types/components/my-component/UI/drawers/udp-side-sheet/types.d.ts +7 -0
  339. package/dist/types/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.d.ts +114 -0
  340. package/dist/types/components/my-component/UI/tabs/tab/tabs/udp-tabs.d.ts +47 -4
  341. package/dist/types/components/my-component/UI/tabs/tab/udp-tab.d.ts +1 -1
  342. package/dist/types/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.d.ts +11 -0
  343. package/dist/types/components.d.ts +151 -2
  344. package/package.json +1 -1
@@ -27,19 +27,19 @@ const UdpFormsListCard = class {
27
27
  };
28
28
  }
29
29
  render() {
30
- const contentJsx = (index.h(index.Fragment, { key: '86922a9f530c257641a1e9763380bd8301930fa6' }, index.h("unity-typography", { key: 'ca878765706008f05d07d44545305f655500769f', variant: "body1", color: "textSecondary" }, "Version: ", this.data.version), !this.isSideSheetList && (index.h("unity-typography", { key: '6c72d85939583f423cbb587e905eca34d3c81447', variant: "body1", color: "textSecondary" }, "Last Modified: ", new Date(this.data.lastModifiedOn).toLocaleDateString())), index.h("unity-typography", { key: '8f4e7bdf40cd6f75aaa4ce6d44e47fe8e0d7ff9b', variant: "body1", color: "textSecondary" }, "Created On: ", this.isSideSheetList ? new Date(this.data.createdOn).toLocaleDateString() : new Date(this.data.initialCreatedOn).toLocaleDateString()), index.h("unity-typography", { key: '93151c42c577d98e0de4baf953ae8b672b93d04b', variant: "body1", color: "textSecondary" }, "Form Type: ", enums.UdpFormsTypeEnum[this.data.type])));
31
- const actionsJsx = (index.h(index.Fragment, { key: 'c981118cbef8130ea3ba4b544389d09b0672e7c7' }, index.h("stencil-icon-button", { key: 'fb62c37e3aba0d6385e76bd88c7052f50505aa15', icon: Edit16__default.default, tooltip: "Open in Form Builder", onClick: e => {
30
+ const contentJsx = (index.h(index.Fragment, { key: '65c992b567d2b0e80b93819c760400ea0ee2b813' }, index.h("unity-typography", { key: '327ad8c6680dedd7fa1c12b50d62b2bd5763428b', variant: "body1", color: "textSecondary" }, "Version: ", this.data.version), !this.isSideSheetList && (index.h("unity-typography", { key: '78cfdb94dfc0dff690c18e23e0d07263c25c94c3', variant: "body1", color: "textSecondary" }, "Last Modified: ", new Date(this.data.lastModifiedOn).toLocaleDateString())), index.h("unity-typography", { key: '0b381c323f4910e5727ad848178065b37fc24e83', variant: "body1", color: "textSecondary" }, "Created On: ", this.isSideSheetList ? new Date(this.data.createdOn).toLocaleDateString() : new Date(this.data.initialCreatedOn).toLocaleDateString()), index.h("unity-typography", { key: '62137e05a5c76a334369f839ce589b8bc71a1f9b', variant: "body1", color: "textSecondary" }, "Form Type: ", enums.UdpFormsTypeEnum[this.data.type])));
31
+ const actionsJsx = (index.h(index.Fragment, { key: '11b0965f017d6bcfc290bf81892e8bd3dd18730d' }, index.h("stencil-icon-button", { key: 'b976c977cbdbce0a843b54845147837dbd553f20', icon: Edit16__default.default, tooltip: "Open in Form Builder", onClick: e => {
32
32
  e.stopPropagation();
33
33
  this.formBuilderHandler();
34
- } }), !this.isSideSheetList && (index.h("stencil-icon-button", { key: '7a25e4056e44d455ef7621b10df945f513da1645', icon: View16__default.default, tooltip: "View in Form Renderer", onClick: e => {
34
+ } }), !this.isSideSheetList && (index.h("stencil-icon-button", { key: 'da6b8f48a2004f82765561b34cfd6f2c5b99dc9e', icon: View16__default.default, tooltip: "View in Form Renderer", onClick: e => {
35
35
  e.stopPropagation();
36
36
  this.formRendererHandler();
37
- } })), !this.isSideSheetList && (index.h("stencil-icon-button", { key: '63363b40d0c5f0372ab1c1d02a966ce73021405e', icon: ChevronRight24__default.default, tooltip: "See Version History", onClick: e => {
37
+ } })), !this.isSideSheetList && (index.h("stencil-icon-button", { key: '081db624c49cd5cbc5888c349a601c177f96b8ef', icon: ChevronRight24__default.default, tooltip: "See Version History", onClick: e => {
38
38
  var _a;
39
39
  e.stopPropagation();
40
40
  (_a = this.openSideSheet) === null || _a === void 0 ? void 0 : _a.call(this);
41
41
  } }))));
42
- return (index.h("udp-card", { key: 'd72660c61bd32cf09a41267c53d77c1a873d51e6', cardTitle: this.data.name, subheader: this.data.description, actions: actionsJsx, onTitleClick: this.handleTitleClick, disableContentPadding: true, adornmentStatus: 'info' }, contentJsx));
42
+ return (index.h("udp-card", { key: '6e0572787731e49edb74b9b8d3e9f04e0f09ce57', cardTitle: this.data.name, subheader: this.data.description, actions: actionsJsx, onTitleClick: this.handleTitleClick, disableContentPadding: true, adornmentStatus: 'info' }, contentJsx));
43
43
  }
44
44
  };
45
45
 
@@ -179,7 +179,7 @@ const UdpFormsList = class {
179
179
  return this.errorMessage ? (index.h("div", { class: "error-banner" }, index.h("unity-typography", { variant: "body2" }, this.errorMessage))) : null;
180
180
  }
181
181
  render() {
182
- return (index.h("div", { key: '60071b428c63df117043430fc230836c10e8eb99', class: "udp-forms-list-container" }, index.h("primary-action-header", { key: '126e440554abed576b6c570c1b31acbb72f99607', title: "UDP Forms", primaryActionClick: () => this.handleHeaderPrimaryActionClick(), actionButtonLabel: "Create New Form", tabs: false }), this.isLoading && index.h("udp-linear-loader", { key: '3b9ad9fa0c242925bc2ddeeadc63098064fdb193' }), this.renderSideSheet(), index.h("udp-container", { key: '809799a2cba6f52c2bc835cefe2eb4c81e3c879a', maxWidth: "lg" }, this.renderErrorMessage(), this.renderFilters(), index.h("udp-list-renderer", { key: '36adc31b62301fc9454b345c582dbf9b2fc3e434', itemComponent: "udp-forms-list-card", data: this.mainFormsList, pagination: true, isServerSide: true, isLoading: this.isLoading, itemsPerPage: this.MAIN_PAGE_SIZE, currentPage: this.mainListPageNumber, totalItems: this.mainTotalItems, onPageChange: e => this.handleMainPageChange(e.detail), componentDataMap: this.componentMap, spacing: 'md' })), index.h("udp-forms-list-card", { key: '9b901f2693ca6dfaa2396d3903fe62933dd22084', style: { display: 'none' } }), index.h("div", { key: '8ab0c733c8bbb60cb67a4ef1ae6f6b9b1f82bec3', style: { height: '60px' } })));
182
+ return (index.h("div", { key: 'e10e187f8b796620e07cbe5de09304b3ff806f9d', class: "udp-forms-list-container" }, index.h("primary-action-header", { key: 'c07a9deced2ebc01319ac7aa75ff81458e810b7d', title: "UDP Forms", primaryActionClick: () => this.handleHeaderPrimaryActionClick(), actionButtonLabel: "Create New Form", tabs: false }), this.isLoading && index.h("udp-linear-loader", { key: 'bd0b7aa584dd74d1aa610d276166a7ade78ec39b' }), this.renderSideSheet(), index.h("udp-container", { key: '9db380a8bc34671684f133f35d2af4634bfe13c4', maxWidth: "lg" }, this.renderErrorMessage(), this.renderFilters(), index.h("udp-list-renderer", { key: '80570f32e8d09872019514651de334327c7797af', itemComponent: "udp-forms-list-card", data: this.mainFormsList, pagination: true, isServerSide: true, isLoading: this.isLoading, itemsPerPage: this.MAIN_PAGE_SIZE, currentPage: this.mainListPageNumber, totalItems: this.mainTotalItems, onPageChange: e => this.handleMainPageChange(e.detail), componentDataMap: this.componentMap, spacing: 'md' })), index.h("udp-forms-list-card", { key: '83c6afb79ecbd9154229bb4ee571290af0ce43cc', style: { display: 'none' } }), index.h("div", { key: '5f8ee58dc8cdd79db5cf8f4c8e487ddb3b005e9d', style: { height: '60px' } })));
183
183
  }
184
184
  get el() { return index.getElement(this); }
185
185
  static get watchers() { return {
@@ -950,7 +950,7 @@ const UdpFormsRenderer = class {
950
950
  return (index.h("udp-side-sheet", { title: "Link a Follow Up Form", open: this.isFollowUpFormsSideSheetOpen, onUdpSideSheetClose: () => this.handleSideSheetClose(), position: "right", width: "md" }, this.isLoading && this.isFollowUpFormsSideSheetOpen && index.h("udp-linear-loader", null), index.h("udp-list-renderer", { itemComponent: "udp-forms-follow-up-list-card", data: this.sideSheetFollowUpFormsList, pagination: true, isServerSide: true, isLoading: this.isLoading, itemsPerPage: this.FOLLOW_UP_SIDE_SHEET_PAGE_SIZE, currentPage: this.followUpSideSheetListPageNumber, totalItems: this.followUpSideSheetTotalItems, onPageChange: e => this.handleSideSheetPageChange(e.detail), componentDataMap: this.componentMap, spacing: 'md' })));
951
951
  }
952
952
  render() {
953
- return (index.h("div", { key: '32d6b68c4bdbae35e0e57a7b408acdb8182e3498', class: "forms-renderer-container" }, this.renderFollowUpSideSheet(), index.h("udp-forms-ui", { udpForm: this.udpForm, initialValues: this.initialValues, udpFormSubmission: this.udpFormSubmission, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveErrorMessage: this.saveErrorMessage,
953
+ return (index.h("div", { key: 'd14ce715fb3aff8f995332816c18c501e88b1ade', class: "forms-renderer-container" }, this.renderFollowUpSideSheet(), index.h("udp-forms-ui", { udpForm: this.udpForm, initialValues: this.initialValues, udpFormSubmission: this.udpFormSubmission, submitSuccessful: this.submitSuccessful, isSaving: this.isSaving, saveErrorMessage: this.saveErrorMessage,
954
954
  // showAutoSaveStatus={this.formSubmissionHandler.supportsAutoSave() && !!this.userId}
955
955
  readonly: this.isSubmitted, handleSubmit: this.handleSubmit.bind(this), handleSave: values => Promise.resolve(this.debouncedManualSave(values)), handleChange: this.handleFormChange, handleAction: this.triggerAction, handleFinish: this.handleFinish, userId: this.userId, isSubmitted: this.isSubmitted, dynamicSections: this.dynamicSections, duplicateRepeatableSection: this.duplicateRepeatableSection, deleteRepeatableSection: this.deleteRepeatableSection, ref: el => (this.formsUiEl = el), key: `form-rerender-key-${this.reRenderKey}`, isShowManualSaveIcon: this.isShowManualSaveIcon(), isLoading: this.isLoading, performBackgroundSaveAndUpdateLocalSubmissionState: this.performBackgroundSaveAndUpdateLocalSubmissionState })));
956
956
  }
@@ -1 +1 @@
1
- {"version":3,"file":"udp-list-renderer.udp-pagination.udp-side-sheet.entry.cjs.js","sources":["src/components/my-component/UI/data-display/list-renderer/udp-list-renderer.css?tag=udp-list-renderer&encapsulation=shadow","src/components/my-component/UI/data-display/list-renderer/udp-list-renderer.tsx","src/components/my-component/UI/navigation/pagination/udp-pagination.css?tag=udp-pagination&encapsulation=shadow","src/components/my-component/UI/navigation/pagination/udp-pagination.tsx","src/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.css?tag=udp-side-sheet&encapsulation=shadow","src/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.udp-list-renderer-container {\n display: flex;\n flex-direction: column;\n}\n\n.item-list-container {\n display: flex;\n flex-direction: column;\n}\n\n/* Spacing variants */\n.item-list-container.spacing-xs {\n gap: var(--spacing-02);\n}\n\n.item-list-container.spacing-sm {\n gap: var(--spacing-03);\n}\n\n.item-list-container.spacing-md {\n gap: var(--spacing-04);\n}\n\n.item-list-container.spacing-lg {\n gap: var(--spacing-06);\n}\n\n.item-list-container.spacing-condensed {\n gap: var(--spacing-01);\n}\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--spacing-07); /* 2rem */\n min-height: 100px; /* Adjust as needed, or use a spacing variable if appropriate */\n} ","import { Component, Prop, h, State, Watch, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'udp-list-renderer',\n styleUrl: 'udp-list-renderer.css',\n shadow: true,\n})\nexport class UdpItemList {\n /**\n * The tag name of the component to render for each item in the list.\n * For example, 'my-item-component'.\n */\n @Prop() itemComponent: string;\n\n /**\n * Array of objects to be rendered in the list.\n */\n @Prop() data: any[] = [];\n\n /**\n * Object mapping source data fields to prop names for the item component.\n * Example: {元のフィールド: '新しいフィールド'}\n * This will pass props to ItemComponent as: <ItemComponent newField={sourceData.originalField} />\n */\n @Prop() componentDataMap: { [key: string]: string };\n\n /**\n * Whether to enable pagination.\n */\n @Prop() pagination: boolean = false;\n\n /**\n * Number of items to display per page.\n */\n @Prop() itemsPerPage: number = 10;\n\n /**\n * Whether pagination is handled server-side.\n */\n @Prop() isServerSide: boolean = false;\n\n /**\n * Total number of items (required for server-side pagination).\n */\n @Prop() totalItems: number = 0;\n\n /**\n * Callback function for page changes. Required when isServerSide is true.\n * Emits the new page number.\n */\n @Event() pageChange: EventEmitter<number>;\n\n /**\n * Current page number (used for server-side pagination or can be controlled externally).\n * Defaults to 1.\n */\n @Prop({ mutable: true, reflect: true }) currentPage: number = 1;\n\n /**\n * Whether the list is in a loading state.\n */\n @Prop() isLoading: boolean = false;\n\n /**\n * Defines the spacing between items.\n * Options: 'xs', 'sm', 'md', 'lg', 'condensed'\n * Default: 'sm'\n */\n @Prop({ reflect: true }) spacing: 'xs' | 'sm' | 'md' | 'lg' | 'condensed' = 'md';\n\n @State() internalCurrentPage: number = 1;\n\n @Watch('currentPage')\n currentPageChanged(newValue: number) {\n if (newValue !== this.internalCurrentPage) {\n this.internalCurrentPage = newValue;\n }\n }\n\n componentWillLoad() {\n this.internalCurrentPage = this.currentPage;\n }\n\n private getPaginatedData() {\n if (!this.pagination || this.isServerSide) {\n return this.data;\n }\n const startIndex = (this.internalCurrentPage - 1) * this.itemsPerPage;\n const endIndex = startIndex + this.itemsPerPage;\n return this.data.slice(startIndex, endIndex);\n }\n\n private getTotalPages(): number {\n if (!this.pagination) return 1;\n if (this.isServerSide) {\n if (this.totalItems === 0 || this.itemsPerPage === 0) return 1;\n return Math.ceil(this.totalItems / this.itemsPerPage);\n }\n if (this.data.length === 0 || this.itemsPerPage === 0) return 1;\n return Math.ceil(this.data.length / this.itemsPerPage);\n }\n\n private handlePageChange(newPage: number) {\n if (this.isLoading) return;\n if (newPage >= 1 && newPage <= this.getTotalPages()) {\n if (this.isServerSide) {\n this.pageChange.emit(newPage);\n } else {\n this.internalCurrentPage = newPage;\n this.currentPage = newPage;\n this.pageChange.emit(newPage);\n }\n }\n }\n\n private renderItems() {\n if (!this.itemComponent) {\n console.warn('[udp-item-list] itemComponent prop is required.');\n return <p>Error: itemComponent prop is not defined.</p>;\n }\n if (!this.componentDataMap) {\n console.warn('[udp-item-list] componentDataMap prop is required.');\n return <p>Error: componentDataMap prop is not defined.</p>;\n }\n\n const itemsToRender = this.getPaginatedData();\n\n if (!itemsToRender || itemsToRender.length === 0) {\n return <p>No items to display.</p>;\n }\n\n return itemsToRender.map(item => {\n const props = {};\n for (const sourceKey in this.componentDataMap) {\n if (item.hasOwnProperty(sourceKey)) {\n const targetKey = this.componentDataMap[sourceKey];\n props[targetKey] = item[sourceKey];\n }\n }\n const ItemCmp = this.itemComponent;\n return <ItemCmp {...props} />;\n });\n }\n\n render() {\n if (this.isLoading && (!this.data || this.data.length === 0)) {\n return (\n <div class=\"loading-container\">\n <p>Loading...</p>\n </div>\n );\n }\n\n const containerClasses = {\n 'item-list-container': true,\n [`spacing-${this.spacing}`]: true,\n };\n\n return (\n <host>\n <div class={containerClasses}>{this.renderItems()}</div>\n {this.pagination && this.getTotalPages() > 1 && (\n <udp-pagination\n currentPage={this.internalCurrentPage}\n totalPages={this.getTotalPages()}\n isLoading={this.isLoading}\n onPageChange={event => this.handlePageChange(event.detail)}\n ></udp-pagination>\n )}\n </host>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--font-family);\n}\n\n.pagination-controls {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--spacing-03); /* 0.5rem */\n gap: var(--spacing-02); /* 0.25rem, replaces margin on individual buttons */\n}\n\n/* Styles for udp-button are handled by the component itself. \n We might only need to ensure proper alignment or specific overrides if necessary.\n The udp-button already has variants for 'active', 'disabled' etc. */\n\n.pagination-controls span.ellipsis {\n /* background-color: transparent; -- Already default for span */\n /* border: none; -- Already default for span */\n color: var(--text-secondary); /* Using a global variable for text color */\n padding: var(--spacing-02) var(--spacing-01); /* Adjust padding using variables */\n display: inline-flex; /* To align with buttons */\n align-items: center; /* To align with buttons */\n justify-content: center; /* To align with buttons */\n min-width: 36px; /* Approximate width of a small icon button, adjust as needed */\n min-height: 36px; /* Approximate height of a small icon button, adjust as needed */\n}\n\n/* Remove specific button styling for .prev-button, .next-button, etc. as udp-button handles it */\n/* .prev-button,\n.next-button,\n.first-page,\n.last-page {\n Additional specific styles if needed\n} */ ","import { Component, Prop, h, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'udp-pagination',\n styleUrl: './udp-pagination.css',\n shadow: true,\n})\nexport class UdpPagination {\n /**\n * The currently active page number.\n */\n @Prop() currentPage: number = 1;\n\n /**\n * The total number of pages available.\n */\n @Prop() totalPages: number = 1;\n\n /**\n * Optional: Whether the component consuming pagination is in a loading state.\n * If true, pagination controls will be disabled.\n */\n @Prop() isLoading: boolean = false;\n\n /**\n * Emitted when the page is changed by the user.\n * The event detail will contain the new page number.\n */\n @Event() pageChange: EventEmitter<number>;\n\n private navigateToPage(page: number) {\n if (this.isLoading || page < 1 || page > this.totalPages || page === this.currentPage) {\n return;\n }\n this.pageChange.emit(page);\n }\n\n // Basic page number generation. Could be made more sophisticated (e.g., with ellipses for many pages)\n private renderPageNumbers() {\n const pageNumbers = [];\n const maxPagesToShow = 5; // Max number of page buttons to show directly\n const halfMaxPages = Math.floor(maxPagesToShow / 2);\n\n let startPage = Math.max(1, this.currentPage - halfMaxPages);\n let endPage = Math.min(this.totalPages, this.currentPage + halfMaxPages);\n\n if (this.currentPage - halfMaxPages < 1) {\n endPage = Math.min(this.totalPages, maxPagesToShow);\n }\n\n if (this.currentPage + halfMaxPages > this.totalPages) {\n startPage = Math.max(1, this.totalPages - maxPagesToShow + 1);\n }\n\n if (this.totalPages <= maxPagesToShow) {\n startPage = 1;\n endPage = this.totalPages;\n }\n\n // Always show first page if not in range\n if (startPage > 1) {\n pageNumbers.push(\n <udp-button onClick={() => this.navigateToPage(1)} disabled={this.isLoading} variant=\"outlined\" ariaLabel=\"Go to first page\">\n 1\n </udp-button>,\n );\n if (startPage > 2) {\n pageNumbers.push(<span class=\"ellipsis\">...</span>);\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pageNumbers.push(\n <udp-button\n onClick={() => this.navigateToPage(i)}\n disabled={this.isLoading}\n variant={i === this.currentPage ? 'contained' : 'outlined'}\n color={i === this.currentPage ? 'primary' : 'inherit'}\n ariaLabel={`Go to page ${i}`}\n aria-current={i === this.currentPage ? 'page' : undefined}\n >\n {i}\n </udp-button>,\n );\n }\n\n // Always show last page if not in range\n if (endPage < this.totalPages) {\n if (endPage < this.totalPages - 1) {\n pageNumbers.push(<span class=\"ellipsis\">...</span>);\n }\n pageNumbers.push(\n <udp-button onClick={() => this.navigateToPage(this.totalPages)} disabled={this.isLoading} variant=\"outlined\" ariaLabel=\"Go to last page\">\n {this.totalPages}\n </udp-button>,\n );\n }\n\n return pageNumbers;\n }\n\n render() {\n if (this.totalPages <= 1) {\n return null; // Don't render pagination if there's only one page or less\n }\n\n return (\n <div class=\"pagination-controls\">\n <udp-button onClick={() => this.navigateToPage(this.currentPage - 1)} disabled={this.isLoading || this.currentPage <= 1} variant=\"text\" ariaLabel=\"Go to previous page\">\n Previous\n </udp-button>\n\n {this.renderPageNumbers()}\n\n <udp-button\n onClick={() => this.navigateToPage(this.currentPage + 1)}\n disabled={this.isLoading || this.currentPage >= this.totalPages}\n variant=\"text\"\n ariaLabel=\"Go to next page\"\n >\n Next\n </udp-button>\n </div>\n );\n }\n}\n",":host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 9999;\n visibility: hidden;\n transition: visibility 0s 0.2s;\n}\n\n:host(.is-visible) {\n visibility: visible;\n transition-delay: 0s;\n}\n\n.backdrop {\n background: rgba(0, 0, 0, 0.5);\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n}\n\n:host(.is-visible) .backdrop {\n opacity: 1;\n}\n\n.sheet {\n background: white;\n height: 100vh;\n position: fixed;\n top: 0;\n display: flex;\n flex-direction: column;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\n transition: transform 0.2s ease-in-out;\n width: 100%;\n}\n\n.sheet.right {\n right: 0;\n transform: translateX(100%);\n}\n\n.sheet.left {\n left: 0;\n transform: translateX(-100%);\n}\n\n:host(.is-visible) .sheet {\n transform: translateX(0);\n}\n\n.sheet.sm { max-width: 360px; }\n.sheet.md { max-width: 600px; }\n.sheet.lg { max-width: 960px; }\n.sheet.full { max-width: 100%; }\n.sheet.custom-width { /* max-width is set via inline style */ }\n\n/* Updated title container for new layout */\n.title-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n box-shadow: var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));\n gap: var(--spacing-02)\n}\n\n.title-text {\n flex-grow: 1;\n text-align: left; /* Ensure title stays left-aligned */\n}\n\n.close-button {\n flex-shrink: 0;\n}\n\n/* Added styles for the new button's container */\n.header-action-button {\n flex-shrink: 0;\n}\n\n.content {\n overflow-y: auto;\n flex-grow: 1;\n background-color: var(--gray-01);\n}\n\n.content.padding {\n padding: var(--spacing-05, 24px);\n}\n\n.footer {\n padding: var(--spacing-05, 24px);\n border-top: 1px solid #ccc;\n display: flex;\n justify-content: flex-end;\n flex-shrink: 0;\n}\n\n\n/* This container reserves the space for the loader (4px height).\n This prevents the content below it from shifting up and down\n when the loader appears or disappears.\n*/\n.loader-container {\n height: 4px;\n width: 100%;\n background-color: var(--gray-01);\n}\n\n/*\n By default, the loader is instantly hidden.\n There is no transition applied in its hidden state.\n*/\n.loader-container udp-linear-loader {\n visibility: hidden;\n opacity: 0;\n transition: none;\n}\n\n/*\n When the .is-loading class is applied, we make the loader visible\n AND apply a transition so it fades in smoothly. When the class is removed,\n it reverts to the rule above and disappears instantly.\n*/\n.loader-container udp-linear-loader.is-loading {\n visibility: visible;\n opacity: 1;\n /* transition: opacity 0.3s ease-in-out; */\n}\n\n","import { Component, h, Prop, Element, Watch, Event, EventEmitter } from '@stencil/core';\nimport Close24 from '@carbon/icons/es/close/24';\n\n@Component({\n tag: 'udp-side-sheet',\n styleUrl: 'udp-side-sheet.css',\n shadow: true,\n})\nexport class UdpSideSheet {\n @Element() hostEl!: HTMLElement;\n\n @Prop({ reflect: true, mutable: true }) open = false;\n @Prop() title: string;\n @Prop() position: 'left' | 'right' = 'right';\n @Prop() width: 'sm' | 'md' | 'lg' | 'full' | number = 'md';\n @Prop() padding = true;\n @Prop() loading: boolean = false;\n\n // Props for the new header action button\n @Prop() headerActionButtonLabel: string;\n @Prop() headerActionButtonDisabled = false;\n @Prop() headerActionButtonIcon: string;\n\n // Props for the existing footer button\n @Prop() primaryButtonLabel: string;\n @Prop() primaryButtonDisabled = false;\n @Prop() primaryButtonIcon: string;\n\n @Event() udpSideSheetClose: EventEmitter<void>;\n @Event() udpPrimaryButtonClick: EventEmitter<void>;\n // Event for the new header action button\n @Event() udpHeaderActionButtonClick: EventEmitter<void>;\n\n private originalBodyOverflow: string = '';\n\n @Watch('open')\n handleOpenChange(newValue: boolean, oldValue: boolean) {\n if (newValue === oldValue) {\n return;\n }\n\n if (newValue) {\n this.originalBodyOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n document.body.appendChild(this.hostEl);\n\n requestAnimationFrame(() => {\n this.hostEl.classList.add('is-visible');\n });\n } else {\n this.hostEl.classList.remove('is-visible');\n document.body.style.overflow = this.originalBodyOverflow;\n this.hostEl.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\n }\n }\n\n private handleTransitionEnd = () => {\n if (!this.open && this.hostEl.parentElement === document.body) {\n document.body.removeChild(this.hostEl);\n }\n };\n\n disconnectedCallback() {\n if (document.body.style.overflow === 'hidden') {\n document.body.style.overflow = this.originalBodyOverflow;\n }\n }\n\n private onClose = () => {\n this.open = false;\n this.udpSideSheetClose.emit();\n };\n\n private onPrimaryButtonClick = () => {\n this.udpPrimaryButtonClick.emit();\n };\n\n // Handler for the new header action button click\n private onHeaderActionButtonClick = () => {\n this.udpHeaderActionButtonClick.emit();\n };\n\n render() {\n const widthClass = typeof this.width === 'number' ? 'custom-width' : this.width;\n const sideSheetStyle = typeof this.width === 'number' ? { maxWidth: `${this.width}px` } : {};\n\n return (\n <div class=\"backdrop\" onClick={this.onClose}>\n <div\n class={{ sheet: true, [this.position]: true, [widthClass]: true }}\n style={sideSheetStyle}\n onClick={e => e.stopPropagation()}\n >\n {/* Header layout has been changed here */}\n <div class=\"title-container\">\n <div class=\"close-button\">\n <stencil-icon-button\n icon={Close24}\n onClick={this.onClose}\n secondary\n ></stencil-icon-button>\n </div>\n <div class=\"title-text\">\n <unity-typography variant=\"h6\">{this.title}</unity-typography>\n </div>\n {/* Conditionally render the new header action button */}\n {this.headerActionButtonLabel && (\n <div class=\"header-action-button\">\n <udp-button\n disabled={this.headerActionButtonDisabled}\n onClick={this.onHeaderActionButtonClick}\n startIcon={<udp-icon iconName={this.headerActionButtonIcon} color={'inherit'} />}\n variant=\"contained\"\n >\n {this.headerActionButtonLabel}\n </udp-button>\n </div>\n )}\n </div>\n <div class=\"loader-container\">\n <udp-linear-loader class={{ 'is-loading': this.loading }} color=\"primary\" />\n </div>\n\n <div class={{ content: true, padding: this.padding }}>\n\n <slot />\n </div>\n {this.primaryButtonLabel && (\n <div class=\"footer\">\n <udp-button\n variant=\"contained\"\n size=\"large\"\n disabled={this.primaryButtonDisabled}\n onClick={this.onPrimaryButtonClick}\n endIcon={this.primaryButtonIcon}\n >\n {this.primaryButtonLabel}\n </udp-button>\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n"],"names":["h","Close24"],"mappings":"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"}
1
+ {"version":3,"file":"udp-list-renderer.udp-pagination.udp-side-sheet.entry.cjs.js","sources":["src/components/my-component/UI/data-display/list-renderer/udp-list-renderer.css?tag=udp-list-renderer&encapsulation=shadow","src/components/my-component/UI/data-display/list-renderer/udp-list-renderer.tsx","src/components/my-component/UI/navigation/pagination/udp-pagination.css?tag=udp-pagination&encapsulation=shadow","src/components/my-component/UI/navigation/pagination/udp-pagination.tsx","src/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.css?tag=udp-side-sheet&encapsulation=shadow","src/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.udp-list-renderer-container {\n display: flex;\n flex-direction: column;\n}\n\n.item-list-container {\n display: flex;\n flex-direction: column;\n}\n\n/* Spacing variants */\n.item-list-container.spacing-xs {\n gap: var(--spacing-02);\n}\n\n.item-list-container.spacing-sm {\n gap: var(--spacing-03);\n}\n\n.item-list-container.spacing-md {\n gap: var(--spacing-04);\n}\n\n.item-list-container.spacing-lg {\n gap: var(--spacing-06);\n}\n\n.item-list-container.spacing-condensed {\n gap: var(--spacing-01);\n}\n\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--spacing-07); /* 2rem */\n min-height: 100px; /* Adjust as needed, or use a spacing variable if appropriate */\n} ","import { Component, Prop, h, State, Watch, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'udp-list-renderer',\n styleUrl: 'udp-list-renderer.css',\n shadow: true,\n})\nexport class UdpItemList {\n /**\n * The tag name of the component to render for each item in the list.\n * For example, 'my-item-component'.\n */\n @Prop() itemComponent: string;\n\n /**\n * Array of objects to be rendered in the list.\n */\n @Prop() data: any[] = [];\n\n /**\n * Object mapping source data fields to prop names for the item component.\n * Example: {元のフィールド: '新しいフィールド'}\n * This will pass props to ItemComponent as: <ItemComponent newField={sourceData.originalField} />\n */\n @Prop() componentDataMap: { [key: string]: string };\n\n /**\n * Whether to enable pagination.\n */\n @Prop() pagination: boolean = false;\n\n /**\n * Number of items to display per page.\n */\n @Prop() itemsPerPage: number = 10;\n\n /**\n * Whether pagination is handled server-side.\n */\n @Prop() isServerSide: boolean = false;\n\n /**\n * Total number of items (required for server-side pagination).\n */\n @Prop() totalItems: number = 0;\n\n /**\n * Callback function for page changes. Required when isServerSide is true.\n * Emits the new page number.\n */\n @Event() pageChange: EventEmitter<number>;\n\n /**\n * Current page number (used for server-side pagination or can be controlled externally).\n * Defaults to 1.\n */\n @Prop({ mutable: true, reflect: true }) currentPage: number = 1;\n\n /**\n * Whether the list is in a loading state.\n */\n @Prop() isLoading: boolean = false;\n\n /**\n * Defines the spacing between items.\n * Options: 'xs', 'sm', 'md', 'lg', 'condensed'\n * Default: 'sm'\n */\n @Prop({ reflect: true }) spacing: 'xs' | 'sm' | 'md' | 'lg' | 'condensed' = 'md';\n\n @State() internalCurrentPage: number = 1;\n\n @Watch('currentPage')\n currentPageChanged(newValue: number) {\n if (newValue !== this.internalCurrentPage) {\n this.internalCurrentPage = newValue;\n }\n }\n\n componentWillLoad() {\n this.internalCurrentPage = this.currentPage;\n }\n\n private getPaginatedData() {\n if (!this.pagination || this.isServerSide) {\n return this.data;\n }\n const startIndex = (this.internalCurrentPage - 1) * this.itemsPerPage;\n const endIndex = startIndex + this.itemsPerPage;\n return this.data.slice(startIndex, endIndex);\n }\n\n private getTotalPages(): number {\n if (!this.pagination) return 1;\n if (this.isServerSide) {\n if (this.totalItems === 0 || this.itemsPerPage === 0) return 1;\n return Math.ceil(this.totalItems / this.itemsPerPage);\n }\n if (this.data.length === 0 || this.itemsPerPage === 0) return 1;\n return Math.ceil(this.data.length / this.itemsPerPage);\n }\n\n private handlePageChange(newPage: number) {\n if (this.isLoading) return;\n if (newPage >= 1 && newPage <= this.getTotalPages()) {\n if (this.isServerSide) {\n this.pageChange.emit(newPage);\n } else {\n this.internalCurrentPage = newPage;\n this.currentPage = newPage;\n this.pageChange.emit(newPage);\n }\n }\n }\n\n private renderItems() {\n if (!this.itemComponent) {\n console.warn('[udp-item-list] itemComponent prop is required.');\n return <p>Error: itemComponent prop is not defined.</p>;\n }\n if (!this.componentDataMap) {\n console.warn('[udp-item-list] componentDataMap prop is required.');\n return <p>Error: componentDataMap prop is not defined.</p>;\n }\n\n const itemsToRender = this.getPaginatedData();\n\n if (!itemsToRender || itemsToRender.length === 0) {\n return <p>No items to display.</p>;\n }\n\n return itemsToRender.map(item => {\n const props = {};\n for (const sourceKey in this.componentDataMap) {\n if (item.hasOwnProperty(sourceKey)) {\n const targetKey = this.componentDataMap[sourceKey];\n props[targetKey] = item[sourceKey];\n }\n }\n const ItemCmp = this.itemComponent;\n return <ItemCmp {...props} />;\n });\n }\n\n render() {\n if (this.isLoading && (!this.data || this.data.length === 0)) {\n return (\n <div class=\"loading-container\">\n <p>Loading...</p>\n </div>\n );\n }\n\n const containerClasses = {\n 'item-list-container': true,\n [`spacing-${this.spacing}`]: true,\n };\n\n return (\n <host>\n <div class={containerClasses}>{this.renderItems()}</div>\n {this.pagination && this.getTotalPages() > 1 && (\n <udp-pagination\n currentPage={this.internalCurrentPage}\n totalPages={this.getTotalPages()}\n isLoading={this.isLoading}\n onPageChange={event => this.handlePageChange(event.detail)}\n ></udp-pagination>\n )}\n </host>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--font-family);\n}\n\n.pagination-controls {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: var(--spacing-03); /* 0.5rem */\n gap: var(--spacing-02); /* 0.25rem, replaces margin on individual buttons */\n}\n\n/* Styles for udp-button are handled by the component itself. \n We might only need to ensure proper alignment or specific overrides if necessary.\n The udp-button already has variants for 'active', 'disabled' etc. */\n\n.pagination-controls span.ellipsis {\n /* background-color: transparent; -- Already default for span */\n /* border: none; -- Already default for span */\n color: var(--text-secondary); /* Using a global variable for text color */\n padding: var(--spacing-02) var(--spacing-01); /* Adjust padding using variables */\n display: inline-flex; /* To align with buttons */\n align-items: center; /* To align with buttons */\n justify-content: center; /* To align with buttons */\n min-width: 36px; /* Approximate width of a small icon button, adjust as needed */\n min-height: 36px; /* Approximate height of a small icon button, adjust as needed */\n}\n\n/* Remove specific button styling for .prev-button, .next-button, etc. as udp-button handles it */\n/* .prev-button,\n.next-button,\n.first-page,\n.last-page {\n Additional specific styles if needed\n} */ ","import { Component, Prop, h, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'udp-pagination',\n styleUrl: './udp-pagination.css',\n shadow: true,\n})\nexport class UdpPagination {\n /**\n * The currently active page number.\n */\n @Prop() currentPage: number = 1;\n\n /**\n * The total number of pages available.\n */\n @Prop() totalPages: number = 1;\n\n /**\n * Optional: Whether the component consuming pagination is in a loading state.\n * If true, pagination controls will be disabled.\n */\n @Prop() isLoading: boolean = false;\n\n /**\n * Emitted when the page is changed by the user.\n * The event detail will contain the new page number.\n */\n @Event() pageChange: EventEmitter<number>;\n\n private navigateToPage(page: number) {\n if (this.isLoading || page < 1 || page > this.totalPages || page === this.currentPage) {\n return;\n }\n this.pageChange.emit(page);\n }\n\n // Basic page number generation. Could be made more sophisticated (e.g., with ellipses for many pages)\n private renderPageNumbers() {\n const pageNumbers = [];\n const maxPagesToShow = 5; // Max number of page buttons to show directly\n const halfMaxPages = Math.floor(maxPagesToShow / 2);\n\n let startPage = Math.max(1, this.currentPage - halfMaxPages);\n let endPage = Math.min(this.totalPages, this.currentPage + halfMaxPages);\n\n if (this.currentPage - halfMaxPages < 1) {\n endPage = Math.min(this.totalPages, maxPagesToShow);\n }\n\n if (this.currentPage + halfMaxPages > this.totalPages) {\n startPage = Math.max(1, this.totalPages - maxPagesToShow + 1);\n }\n\n if (this.totalPages <= maxPagesToShow) {\n startPage = 1;\n endPage = this.totalPages;\n }\n\n // Always show first page if not in range\n if (startPage > 1) {\n pageNumbers.push(\n <udp-button onClick={() => this.navigateToPage(1)} disabled={this.isLoading} variant=\"outlined\" ariaLabel=\"Go to first page\">\n 1\n </udp-button>,\n );\n if (startPage > 2) {\n pageNumbers.push(<span class=\"ellipsis\">...</span>);\n }\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pageNumbers.push(\n <udp-button\n onClick={() => this.navigateToPage(i)}\n disabled={this.isLoading}\n variant={i === this.currentPage ? 'contained' : 'outlined'}\n color={i === this.currentPage ? 'primary' : 'inherit'}\n ariaLabel={`Go to page ${i}`}\n aria-current={i === this.currentPage ? 'page' : undefined}\n >\n {i}\n </udp-button>,\n );\n }\n\n // Always show last page if not in range\n if (endPage < this.totalPages) {\n if (endPage < this.totalPages - 1) {\n pageNumbers.push(<span class=\"ellipsis\">...</span>);\n }\n pageNumbers.push(\n <udp-button onClick={() => this.navigateToPage(this.totalPages)} disabled={this.isLoading} variant=\"outlined\" ariaLabel=\"Go to last page\">\n {this.totalPages}\n </udp-button>,\n );\n }\n\n return pageNumbers;\n }\n\n render() {\n if (this.totalPages <= 1) {\n return null; // Don't render pagination if there's only one page or less\n }\n\n return (\n <div class=\"pagination-controls\">\n <udp-button onClick={() => this.navigateToPage(this.currentPage - 1)} disabled={this.isLoading || this.currentPage <= 1} variant=\"text\" ariaLabel=\"Go to previous page\">\n Previous\n </udp-button>\n\n {this.renderPageNumbers()}\n\n <udp-button\n onClick={() => this.navigateToPage(this.currentPage + 1)}\n disabled={this.isLoading || this.currentPage >= this.totalPages}\n variant=\"text\"\n ariaLabel=\"Go to next page\"\n >\n Next\n </udp-button>\n </div>\n );\n }\n}\n",":host {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100vw;\r\n height: 100vh;\r\n z-index: 9999;\r\n visibility: hidden;\r\n transition: visibility 0s 0.2s;\r\n}\r\n\r\n:host(.is-visible) {\r\n visibility: visible;\r\n transition-delay: 0s;\r\n}\r\n\r\n.backdrop {\r\n background: rgba(0, 0, 0, 0.5);\r\n width: 100%;\r\n height: 100%;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n opacity: 0;\r\n transition: opacity 0.2s ease-in-out;\r\n}\r\n\r\n:host(.is-visible) .backdrop {\r\n opacity: 1;\r\n}\r\n\r\n.sheet {\r\n background: white;\r\n height: 100vh;\r\n position: fixed;\r\n top: 0;\r\n display: flex;\r\n flex-direction: column;\r\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\r\n transition: transform 0.2s ease-in-out;\r\n width: 100%;\r\n}\r\n\r\n.sheet.right {\r\n right: 0;\r\n transform: translateX(100%);\r\n}\r\n\r\n.sheet.left {\r\n left: 0;\r\n transform: translateX(-100%);\r\n}\r\n\r\n:host(.is-visible) .sheet {\r\n transform: translateX(0);\r\n}\r\n\r\n.sheet.sm { max-width: 360px; }\r\n.sheet.md { max-width: 600px; }\r\n.sheet.lg { max-width: 960px; }\r\n.sheet.full { max-width: 100%; }\r\n.sheet.custom-width { /* max-width is set via inline style */ }\r\n\r\n/* Updated title container for new layout */\r\n.title-container {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n flex-shrink: 0;\r\n box-shadow: var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));\r\n gap: var(--spacing-02)\r\n}\r\n\r\n.title-text {\r\n flex-grow: 1;\r\n text-align: left; /* Ensure title stays left-aligned */\r\n}\r\n\r\n.close-button {\r\n flex-shrink: 0;\r\n}\r\n\r\n/* Added styles for the new button's container */\r\n.header-action-button {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--spacing-02, 4px);\r\n padding: var(--spacing-03, 8px) var(--spacing-03, 8px) var(--spacing-03, 8px) 0;\r\n}\r\n\r\n.content {\r\n overflow-y: auto;\r\n flex-grow: 1;\r\n background-color: var(--gray-01);\r\n}\r\n\r\n.content.padding {\r\n padding: var(--spacing-05, 24px);\r\n}\r\n\r\n.footer {\r\n padding: var(--spacing-03, 8px);\r\n box-shadow: var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));\r\n display: flex;\r\n justify-content: flex-end;\r\n flex-shrink: 0;\r\n width: 100%;\r\n gap: var(--spacing-02, 4px);\r\n align-items: center;\r\n}\r\n\r\n.footer.secondary-button-overflow{\r\n flex-direction: row-reverse;\r\n}\r\n\r\n.footer-secondary-buttons-container{\r\n flex-grow: 2;\r\n width: 100%;\r\n}\r\n\r\n.footer-secondary-buttons{\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: var(--spacing-02, 4px);\r\n align-items: center;\r\n}\r\n\r\n.footer-secondary-buttons.secondary-button-overflow{\r\n flex-grow: 1;\r\n}\r\n\r\n/* This container reserves the space for the loader (4px height).\r\n This prevents the content below it from shifting up and down\r\n when the loader appears or disappears.\r\n*/\r\n.loader-container {\r\n height: 4px;\r\n width: 100%;\r\n background-color: var(--gray-01);\r\n}\r\n\r\n/*\r\n By default, the loader is instantly hidden.\r\n There is no transition applied in its hidden state.\r\n*/\r\n.loader-container udp-linear-loader {\r\n visibility: hidden;\r\n opacity: 0;\r\n transition: none;\r\n}\r\n\r\n/*\r\n When the .is-loading class is applied, we make the loader visible\r\n AND apply a transition so it fades in smoothly. When the class is removed,\r\n it reverts to the rule above and disappears instantly.\r\n*/\r\n.loader-container udp-linear-loader.is-loading {\r\n visibility: visible;\r\n opacity: 1;\r\n /* transition: opacity 0.3s ease-in-out; */\r\n}\r\n\r\n","/* eslint-disable stencil/strict-boolean-conditions */\r\nimport {\r\n Component,\r\n h,\r\n Prop,\r\n Element,\r\n Watch,\r\n Event,\r\n EventEmitter,\r\n State,\r\n Build,\r\n} from '@stencil/core';\r\nimport Close24 from '@carbon/icons/es/close/24';\r\nimport { SecondaryButton } from './types';\r\n\r\n/**\r\n * Side sheet component used for contextual drawers.\r\n */\r\n@Component({\r\n tag: 'udp-side-sheet',\r\n styleUrl: 'udp-side-sheet.css',\r\n shadow: true,\r\n})\r\nexport class UdpSideSheet {\r\n /** Host element reference for portal behavior */\r\n @Element() hostEl!: HTMLElement;\r\n\r\n /** When true, the side sheet is open and visible */\r\n @Prop({ reflect: true, mutable: true }) open = false;\r\n\r\n /** Title text displayed in the header */\r\n @Prop() title: string;\r\n\r\n /** Position of the sheet on the screen */\r\n @Prop() position: 'left' | 'right' = 'right';\r\n\r\n /** Width preset or a numeric pixel width */\r\n @Prop() width: 'sm' | 'md' | 'lg' | 'full' | number = 'md';\r\n\r\n /** Controls whether default inner padding is applied */\r\n @Prop() padding = true;\r\n\r\n /** When true, shows a top loader */\r\n @Prop() loading: boolean = false;\r\n\r\n // Header action button props\r\n\r\n /** Label for the header primary action button */\r\n @Prop() headerActionButtonLabel: string;\r\n\r\n /** Whether the header action button is disabled */\r\n @Prop() headerActionButtonDisabled = false;\r\n\r\n /** Icon name for the header action button */\r\n @Prop() headerActionButtonIcon: string;\r\n\r\n /** Additional secondary buttons to render in the header */\r\n @Prop() headerSecondaryButtons: SecondaryButton[];\r\n\r\n // Footer / primary button props\r\n\r\n /** Label for the primary footer action button */\r\n @Prop() primaryButtonLabel: string;\r\n\r\n /** Whether the primary footer button is disabled */\r\n @Prop() primaryButtonDisabled = false;\r\n\r\n /** Icon name for the primary footer button */\r\n @Prop() primaryButtonIcon: string;\r\n\r\n /** Secondary buttons to render in the footer */\r\n @Prop() footerSecondaryButtons?: SecondaryButton[];\r\n\r\n /** Emitted when the sheet is closed */\r\n @Event() udpSideSheetClose: EventEmitter<void>;\r\n\r\n /** Emitted when the primary footer button is clicked */\r\n @Event() udpPrimaryButtonClick: EventEmitter<void>;\r\n\r\n /** Emitted when the header action button is clicked */\r\n @Event() udpHeaderActionButtonClick: EventEmitter<void>;\r\n\r\n /** Whether the footer should show the overflow \"More\" button */\r\n @State() showOverflowButton: boolean = false;\r\n\r\n /** Whether the overflow popover is open */\r\n @State() openOverflowMenu: boolean = false;\r\n\r\n /** Anchor element for the overflow popover */\r\n @State() overflowMenuAnchor: HTMLElement;\r\n\r\n @State() visibleSecondaryButtons: SecondaryButton[] = [];\r\n @State() overflowSecondaryButtons: SecondaryButton[] = [];\r\n\r\n /** Saved original document.body.overflow value to restore on close */\r\n private originalBodyOverflow: string = '';\r\n\r\n /** ResizeObserver instance watching footer size changes */\r\n private resizeObserver: ResizeObserver;\r\n\r\n /** Reference to the footer element */\r\n private footerRef: HTMLElement;\r\n\r\n /** Offscreen measurement container for buttons */\r\n private measurementContainerRef: HTMLElement;\r\n\r\n /** Saved original document.body.paddingRight value to restore on close */\r\n private originalBodyPaddingRight: string = '';\r\n\r\n /**\r\n * Watcher for `open` prop. Handles portal append/removal and body scroll lock.\r\n *\r\n * @param newValue - new value of the `open` prop\r\n * @param oldValue - previous value of the `open` prop\r\n */\r\n @Watch('open')\r\n handleOpenChange(newValue: boolean, oldValue: boolean) {\r\n if (newValue === oldValue) {\r\n return;\r\n }\r\n\r\n if (newValue) {\r\n // Calculate scrollbar width before hiding it\r\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n // Save original values\r\n this.originalBodyOverflow = document.body.style.overflow;\r\n this.originalBodyPaddingRight = document.body.style.paddingRight;\r\n\r\n document.body.appendChild(this.hostEl);\r\n\r\n // Add padding to compensate for scrollbar\r\n if (scrollbarWidth > 0) {\r\n const currentPadding = parseInt(window.getComputedStyle(document.body).paddingRight) || 0;\r\n document.body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;\r\n }\r\n\r\n document.body.style.overflow = 'hidden';\r\n\r\n requestAnimationFrame(() => {\r\n this.hostEl.classList.add('is-visible');\r\n // Check overflow after the side sheet is visible\r\n setTimeout(() => this.checkOverflow(), 50);\r\n });\r\n } else {\r\n this.hostEl.classList.remove('is-visible');\r\n document.body.style.overflow = this.originalBodyOverflow;\r\n document.body.style.paddingRight = this.originalBodyPaddingRight;\r\n this.hostEl.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\r\n }\r\n }\r\n\r\n /**\r\n * Watcher for footer secondary buttons changes. Triggers overflow recalculation.\r\n */\r\n @Watch('footerSecondaryButtons')\r\n handleSecondaryButtonsChange() {\r\n // Recheck overflow when buttons change\r\n setTimeout(() => this.checkOverflow(), 50);\r\n }\r\n\r\n /**\r\n * Measures footer buttons in an offscreen container and sets `showOverflowButton`.\r\n * Safely returns early if required refs are unavailable.\r\n */\r\n private checkOverflow() {\r\n if (!this.footerRef || !this.measurementContainerRef) {\r\n return;\r\n }\r\n\r\n if (!this.footerSecondaryButtons || this.footerSecondaryButtons.length === 0) {\r\n this.showOverflowButton = false;\r\n return;\r\n }\r\n\r\n // Get the footer container width (minus padding)\r\n const footerWidth = this.footerRef.offsetWidth;\r\n const footerStyle = window.getComputedStyle(this.footerRef);\r\n const footerPaddingLeft = parseFloat(footerStyle.paddingLeft);\r\n const footerPaddingRight = parseFloat(footerStyle.paddingRight);\r\n const availableWidth = footerWidth - footerPaddingLeft - footerPaddingRight;\r\n\r\n // Measure all buttons in the hidden measurement container\r\n const measurementButtons = this.measurementContainerRef.querySelectorAll('udp-button');\r\n let totalWidth = 0;\r\n\r\n measurementButtons.forEach((button, index) => {\r\n const buttonWidth = button && button instanceof HTMLElement ? button.offsetWidth : 0;\r\n totalWidth += buttonWidth;\r\n\r\n // Add gap spacing between buttons (except for the last one)\r\n if (index < measurementButtons.length - 1) {\r\n const containerStyle = window.getComputedStyle(this.measurementContainerRef);\r\n const gap = parseFloat(containerStyle.gap) || 4; // Default gap from CSS\r\n totalWidth += gap;\r\n }\r\n });\r\n\r\n // Add a small buffer to prevent edge cases\r\n const buffer = 10;\r\n const isOverflowing = totalWidth + buffer > availableWidth;\r\n\r\n this.showOverflowButton = isOverflowing;\r\n }\r\n\r\n /**\r\n * Transition end handler used to remove the host element from body after close.\r\n *\r\n * @private\r\n */\r\n private handleTransitionEnd = () => {\r\n if (!this.open && this.hostEl.parentElement === document.body) {\r\n document.body.removeChild(this.hostEl);\r\n }\r\n };\r\n\r\n /**\r\n * Lifecycle: componentDidLoad. Sets up ResizeObserver and initial overflow check.\r\n *\r\n * @private\r\n */\r\n componentDidLoad() {\r\n if (Build.isBrowser) {\r\n // Set up ResizeObserver to watch for footer size changes\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.checkOverflow();\r\n });\r\n\r\n // Initial check after a small delay to ensure DOM is ready\r\n requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n if (this.footerRef) {\r\n this.resizeObserver.observe(this.footerRef);\r\n }\r\n this.checkOverflow();\r\n }, 100);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Lifecycle: disconnectedCallback. Restores body styles and disconnects observers.\r\n *\r\n * @private\r\n */\r\n disconnectedCallback() {\r\n if (document.body.style.overflow === 'hidden') {\r\n document.body.style.overflow = this.originalBodyOverflow;\r\n document.body.style.paddingRight = this.originalBodyPaddingRight;\r\n }\r\n\r\n // Clean up ResizeObserver\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n /**\r\n * Close the side sheet and emit close event.\r\n *\r\n * @private\r\n */\r\n private onClose = () => {\r\n this.open = false;\r\n this.udpSideSheetClose.emit();\r\n };\r\n\r\n /**\r\n * Backdrop click handler. Only closes when clicking the backdrop itself.\r\n *\r\n * @param e - MouseEvent from the backdrop click\r\n * @private\r\n */\r\n private onCloseBackdrop = (e: MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n this.onClose();\r\n }\r\n };\r\n\r\n /**\r\n * Emit primary footer button click event.\r\n *\r\n * @private\r\n */\r\n private onPrimaryButtonClick = () => {\r\n this.udpPrimaryButtonClick.emit();\r\n };\r\n\r\n /**\r\n * Emit header action button click event.\r\n *\r\n * @private\r\n */\r\n private onHeaderActionButtonClick = () => {\r\n this.udpHeaderActionButtonClick.emit();\r\n };\r\n\r\n /**\r\n * Open overflow menu anchored to the clicked element.\r\n *\r\n * @param event - MouseEvent from the \"More\" button click\r\n * @private\r\n */\r\n private onMoreActionButtonClick = (event: MouseEvent) => {\r\n this.overflowMenuAnchor = event.currentTarget as HTMLElement;\r\n this.openOverflowMenu = true;\r\n };\r\n\r\n /**\r\n * Close the overflow popover.\r\n *\r\n * @param e - optional KeyboardEvent or MouseEvent (unused)\r\n * @private\r\n */\r\n private handleCloseOverflowMenu = () => {\r\n this.openOverflowMenu = false;\r\n };\r\n\r\n /**\r\n * Render the component UI.\r\n *\r\n * @returns JSX element tree\r\n * @private\r\n */\r\n render() {\r\n const widthClass = typeof this.width === 'number' ? 'custom-width' : this.width;\r\n const sideSheetStyle = typeof this.width === 'number' ? { maxWidth: `${this.width}px` } : {};\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n const headerStartIcon = Boolean(this.headerActionButtonIcon) ? (\r\n <udp-icon iconName={this.headerActionButtonIcon} color=\"inherit\" />\r\n ) : undefined;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n const overflowIcon = <udp-icon iconName=\"overflowMenuVertical\" color=\"inherit\" />;\r\n\r\n return (\r\n <div class=\"backdrop\" onClick={this.onCloseBackdrop}>\r\n <div\r\n class={{ sheet: true, [this.position]: true, [widthClass]: true }}\r\n style={sideSheetStyle}\r\n >\r\n {/* Header layout has been changed here */}\r\n <div class=\"title-container\">\r\n <div class=\"close-button\">\r\n <stencil-icon-button\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n icon={Close24}\r\n onClick={this.onClose}\r\n secondary\r\n ></stencil-icon-button>\r\n </div>\r\n <div class=\"title-text\">\r\n <unity-typography variant=\"h6\">{this.title}</unity-typography>\r\n </div>\r\n {/* Conditionally render the new header action button */}\r\n {(this.headerActionButtonLabel || this.headerSecondaryButtons?.length > 0) && (\r\n <div class=\"header-action-button\">\r\n {this.headerSecondaryButtons?.map((item: SecondaryButton) => (\r\n <udp-button\r\n variant=\"outlined\"\r\n disabled={item.disabled}\r\n onClick={item.onClick}\r\n endIcon={item.icon}\r\n >\r\n {item.label}\r\n </udp-button>\r\n ))}\r\n {this.headerActionButtonLabel && (\r\n <udp-button\r\n disabled={this.headerActionButtonDisabled}\r\n onClick={this.onHeaderActionButtonClick}\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n startIcon={headerStartIcon}\r\n variant=\"contained\"\r\n >\r\n {this.headerActionButtonLabel}\r\n </udp-button>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n <div class=\"loader-container\">\r\n <udp-linear-loader class={{ 'is-loading': this.loading }} color=\"primary\" />\r\n </div>\r\n\r\n <div class={{ content: true, padding: this.padding }}>\r\n <slot />\r\n </div>\r\n {(this.primaryButtonLabel || this.footerSecondaryButtons?.length > 0) && (\r\n <div>\r\n <div class=\"loader-container\"></div>\r\n <div\r\n class={{\r\n footer: true,\r\n }}\r\n ref={el => (this.footerRef = el)}\r\n >\r\n {/* Visible buttons container */}\r\n {!this.showOverflowButton && this.footerSecondaryButtons?.length > 0 && (\r\n <div class=\"footer-secondary-buttons-container\">\r\n <div class=\"footer-secondary-buttons\">\r\n {this.footerSecondaryButtons?.map((item: SecondaryButton) => (\r\n <udp-button\r\n variant=\"outlined\"\r\n disabled={item.disabled}\r\n onClick={item.onClick}\r\n endIcon={item.icon}\r\n >\r\n {item.label}\r\n </udp-button>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* More button when overflowing */}\r\n {this.showOverflowButton && (\r\n <udp-button\r\n variant=\"outlined\"\r\n onClick={this.onMoreActionButtonClick}\r\n color=\"secondary\"\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n endIcon={overflowIcon}\r\n >\r\n More\r\n </udp-button>\r\n )}\r\n\r\n {/* Primary button */}\r\n {this.primaryButtonLabel && (\r\n <udp-button\r\n variant=\"contained\"\r\n disabled={this.primaryButtonDisabled}\r\n onClick={this.onPrimaryButtonClick}\r\n endIcon={this.primaryButtonIcon}\r\n >\r\n {this.primaryButtonLabel}\r\n </udp-button>\r\n )}\r\n\r\n {/* Overflow menu */}\r\n {this.showOverflowButton && (\r\n <udp-pop-over\r\n anchorElement={this.overflowMenuAnchor}\r\n isOpen={this.openOverflowMenu}\r\n popoverWidth={'200px'}\r\n popoverMaxHeight={'300px'}\r\n handleOnClose={this.handleCloseOverflowMenu}\r\n >\r\n <div class=\"menu\">\r\n {this.footerSecondaryButtons?.map(item => (\r\n <udp-menu-item\r\n label={item?.label}\r\n iconName={item?.icon}\r\n onItemClick={() => {\r\n item?.onClick();\r\n this.handleCloseOverflowMenu();\r\n }}\r\n disabled={item?.disabled}\r\n />\r\n ))}\r\n </div>\r\n </udp-pop-over>\r\n )}\r\n\r\n {/* Hidden measurement container - renders all buttons for measurement */}\r\n <div\r\n ref={el => (this.measurementContainerRef = el)}\r\n style={{\r\n position: 'absolute',\r\n visibility: 'hidden',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n gap: 'var(--spacing-02, 4px)',\r\n }}\r\n aria-hidden=\"true\"\r\n >\r\n {this.footerSecondaryButtons?.map((item: SecondaryButton) => (\r\n <udp-button\r\n variant=\"text\"\r\n size=\"medium\"\r\n disabled={item.disabled}\r\n endIcon={item.icon}\r\n >\r\n {item.label}\r\n </udp-button>\r\n ))}\r\n {this.primaryButtonLabel && (\r\n <udp-button\r\n variant=\"contained\"\r\n size=\"medium\"\r\n disabled={this.primaryButtonDisabled}\r\n endIcon={this.primaryButtonIcon}\r\n >\r\n {this.primaryButtonLabel}\r\n </udp-button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"],"names":["h","Close24"],"mappings":"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"}
@@ -204,7 +204,7 @@ const UdpPagination = class {
204
204
  };
205
205
  UdpPagination.style = udpPaginationCss;
206
206
 
207
- const udpSideSheetCss = ":host{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;visibility:hidden;transition:visibility 0s 0.2s}:host(.is-visible){visibility:visible;transition-delay:0s}.backdrop{background:rgba(0, 0, 0, 0.5);width:100%;height:100%;position:fixed;top:0;left:0;opacity:0;transition:opacity 0.2s ease-in-out}:host(.is-visible) .backdrop{opacity:1}.sheet{background:white;height:100vh;position:fixed;top:0;display:flex;flex-direction:column;box-shadow:0 0 4px rgba(0, 0, 0, 0.3);transition:transform 0.2s ease-in-out;width:100%}.sheet.right{right:0;transform:translateX(100%)}.sheet.left{left:0;transform:translateX(-100%)}:host(.is-visible) .sheet{transform:translateX(0)}.sheet.sm{max-width:360px}.sheet.md{max-width:600px}.sheet.lg{max-width:960px}.sheet.full{max-width:100%}.sheet.custom-width{}.title-container{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;box-shadow:var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));gap:var(--spacing-02)}.title-text{flex-grow:1;text-align:left;}.close-button{flex-shrink:0}.header-action-button{flex-shrink:0}.content{overflow-y:auto;flex-grow:1;background-color:var(--gray-01)}.content.padding{padding:var(--spacing-05, 24px)}.footer{padding:var(--spacing-05, 24px);border-top:1px solid #ccc;display:flex;justify-content:flex-end;flex-shrink:0}.loader-container{height:4px;width:100%;background-color:var(--gray-01)}.loader-container udp-linear-loader{visibility:hidden;opacity:0;transition:none}.loader-container udp-linear-loader.is-loading{visibility:visible;opacity:1;}";
207
+ const udpSideSheetCss = ":host{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;visibility:hidden;transition:visibility 0s 0.2s}:host(.is-visible){visibility:visible;transition-delay:0s}.backdrop{background:rgba(0, 0, 0, 0.5);width:100%;height:100%;position:fixed;top:0;left:0;opacity:0;transition:opacity 0.2s ease-in-out}:host(.is-visible) .backdrop{opacity:1}.sheet{background:white;height:100vh;position:fixed;top:0;display:flex;flex-direction:column;box-shadow:0 0 4px rgba(0, 0, 0, 0.3);transition:transform 0.2s ease-in-out;width:100%}.sheet.right{right:0;transform:translateX(100%)}.sheet.left{left:0;transform:translateX(-100%)}:host(.is-visible) .sheet{transform:translateX(0)}.sheet.sm{max-width:360px}.sheet.md{max-width:600px}.sheet.lg{max-width:960px}.sheet.full{max-width:100%}.sheet.custom-width{}.title-container{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;box-shadow:var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));gap:var(--spacing-02)}.title-text{flex-grow:1;text-align:left;}.close-button{flex-shrink:0}.header-action-button{flex-shrink:0;display:flex;align-items:center;gap:var(--spacing-02, 4px);padding:var(--spacing-03, 8px) var(--spacing-03, 8px) var(--spacing-03, 8px) 0}.content{overflow-y:auto;flex-grow:1;background-color:var(--gray-01)}.content.padding{padding:var(--spacing-05, 24px)}.footer{padding:var(--spacing-03, 8px);box-shadow:var(--elevation-01, 0 4px 8px rgba(0, 0, 0, 0.1));display:flex;justify-content:flex-end;flex-shrink:0;width:100%;gap:var(--spacing-02, 4px);align-items:center}.footer.secondary-button-overflow{flex-direction:row-reverse}.footer-secondary-buttons-container{flex-grow:2;width:100%}.footer-secondary-buttons{display:flex;justify-content:flex-end;gap:var(--spacing-02, 4px);align-items:center}.footer-secondary-buttons.secondary-button-overflow{flex-grow:1}.loader-container{height:4px;width:100%;background-color:var(--gray-01)}.loader-container udp-linear-loader{visibility:hidden;opacity:0;transition:none}.loader-container udp-linear-loader.is-loading{visibility:visible;opacity:1;}";
208
208
 
209
209
  const UdpSideSheet = class {
210
210
  constructor(hostRef) {
@@ -212,62 +212,251 @@ const UdpSideSheet = class {
212
212
  this.udpSideSheetClose = index.createEvent(this, "udpSideSheetClose");
213
213
  this.udpPrimaryButtonClick = index.createEvent(this, "udpPrimaryButtonClick");
214
214
  this.udpHeaderActionButtonClick = index.createEvent(this, "udpHeaderActionButtonClick");
215
+ /** When true, the side sheet is open and visible */
215
216
  this.open = false;
217
+ /** Position of the sheet on the screen */
216
218
  this.position = 'right';
219
+ /** Width preset or a numeric pixel width */
217
220
  this.width = 'md';
221
+ /** Controls whether default inner padding is applied */
218
222
  this.padding = true;
223
+ /** When true, shows a top loader */
219
224
  this.loading = false;
225
+ /** Whether the header action button is disabled */
220
226
  this.headerActionButtonDisabled = false;
227
+ /** Whether the primary footer button is disabled */
221
228
  this.primaryButtonDisabled = false;
229
+ /** Whether the footer should show the overflow "More" button */
230
+ this.showOverflowButton = false;
231
+ /** Whether the overflow popover is open */
232
+ this.openOverflowMenu = false;
233
+ this.visibleSecondaryButtons = [];
234
+ this.overflowSecondaryButtons = [];
235
+ /** Saved original document.body.overflow value to restore on close */
222
236
  this.originalBodyOverflow = '';
237
+ /** Saved original document.body.paddingRight value to restore on close */
238
+ this.originalBodyPaddingRight = '';
239
+ /**
240
+ * Transition end handler used to remove the host element from body after close.
241
+ *
242
+ * @private
243
+ */
223
244
  this.handleTransitionEnd = () => {
224
245
  if (!this.open && this.hostEl.parentElement === document.body) {
225
246
  document.body.removeChild(this.hostEl);
226
247
  }
227
248
  };
249
+ /**
250
+ * Close the side sheet and emit close event.
251
+ *
252
+ * @private
253
+ */
228
254
  this.onClose = () => {
229
255
  this.open = false;
230
256
  this.udpSideSheetClose.emit();
231
257
  };
258
+ /**
259
+ * Backdrop click handler. Only closes when clicking the backdrop itself.
260
+ *
261
+ * @param e - MouseEvent from the backdrop click
262
+ * @private
263
+ */
264
+ this.onCloseBackdrop = (e) => {
265
+ if (e.target === e.currentTarget) {
266
+ this.onClose();
267
+ }
268
+ };
269
+ /**
270
+ * Emit primary footer button click event.
271
+ *
272
+ * @private
273
+ */
232
274
  this.onPrimaryButtonClick = () => {
233
275
  this.udpPrimaryButtonClick.emit();
234
276
  };
235
- // Handler for the new header action button click
277
+ /**
278
+ * Emit header action button click event.
279
+ *
280
+ * @private
281
+ */
236
282
  this.onHeaderActionButtonClick = () => {
237
283
  this.udpHeaderActionButtonClick.emit();
238
284
  };
285
+ /**
286
+ * Open overflow menu anchored to the clicked element.
287
+ *
288
+ * @param event - MouseEvent from the "More" button click
289
+ * @private
290
+ */
291
+ this.onMoreActionButtonClick = (event) => {
292
+ this.overflowMenuAnchor = event.currentTarget;
293
+ this.openOverflowMenu = true;
294
+ };
295
+ /**
296
+ * Close the overflow popover.
297
+ *
298
+ * @param e - optional KeyboardEvent or MouseEvent (unused)
299
+ * @private
300
+ */
301
+ this.handleCloseOverflowMenu = () => {
302
+ this.openOverflowMenu = false;
303
+ };
239
304
  }
305
+ /**
306
+ * Watcher for `open` prop. Handles portal append/removal and body scroll lock.
307
+ *
308
+ * @param newValue - new value of the `open` prop
309
+ * @param oldValue - previous value of the `open` prop
310
+ */
240
311
  handleOpenChange(newValue, oldValue) {
241
312
  if (newValue === oldValue) {
242
313
  return;
243
314
  }
244
315
  if (newValue) {
316
+ // Calculate scrollbar width before hiding it
317
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
318
+ // Save original values
245
319
  this.originalBodyOverflow = document.body.style.overflow;
246
- document.body.style.overflow = 'hidden';
320
+ this.originalBodyPaddingRight = document.body.style.paddingRight;
247
321
  document.body.appendChild(this.hostEl);
322
+ // Add padding to compensate for scrollbar
323
+ if (scrollbarWidth > 0) {
324
+ const currentPadding = parseInt(window.getComputedStyle(document.body).paddingRight) || 0;
325
+ document.body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
326
+ }
327
+ document.body.style.overflow = 'hidden';
248
328
  requestAnimationFrame(() => {
249
329
  this.hostEl.classList.add('is-visible');
330
+ // Check overflow after the side sheet is visible
331
+ setTimeout(() => this.checkOverflow(), 50);
250
332
  });
251
333
  }
252
334
  else {
253
335
  this.hostEl.classList.remove('is-visible');
254
336
  document.body.style.overflow = this.originalBodyOverflow;
337
+ document.body.style.paddingRight = this.originalBodyPaddingRight;
255
338
  this.hostEl.addEventListener('transitionend', this.handleTransitionEnd, { once: true });
256
339
  }
257
340
  }
341
+ /**
342
+ * Watcher for footer secondary buttons changes. Triggers overflow recalculation.
343
+ */
344
+ handleSecondaryButtonsChange() {
345
+ // Recheck overflow when buttons change
346
+ setTimeout(() => this.checkOverflow(), 50);
347
+ }
348
+ /**
349
+ * Measures footer buttons in an offscreen container and sets `showOverflowButton`.
350
+ * Safely returns early if required refs are unavailable.
351
+ */
352
+ checkOverflow() {
353
+ if (!this.footerRef || !this.measurementContainerRef) {
354
+ return;
355
+ }
356
+ if (!this.footerSecondaryButtons || this.footerSecondaryButtons.length === 0) {
357
+ this.showOverflowButton = false;
358
+ return;
359
+ }
360
+ // Get the footer container width (minus padding)
361
+ const footerWidth = this.footerRef.offsetWidth;
362
+ const footerStyle = window.getComputedStyle(this.footerRef);
363
+ const footerPaddingLeft = parseFloat(footerStyle.paddingLeft);
364
+ const footerPaddingRight = parseFloat(footerStyle.paddingRight);
365
+ const availableWidth = footerWidth - footerPaddingLeft - footerPaddingRight;
366
+ // Measure all buttons in the hidden measurement container
367
+ const measurementButtons = this.measurementContainerRef.querySelectorAll('udp-button');
368
+ let totalWidth = 0;
369
+ measurementButtons.forEach((button, index) => {
370
+ const buttonWidth = button && button instanceof HTMLElement ? button.offsetWidth : 0;
371
+ totalWidth += buttonWidth;
372
+ // Add gap spacing between buttons (except for the last one)
373
+ if (index < measurementButtons.length - 1) {
374
+ const containerStyle = window.getComputedStyle(this.measurementContainerRef);
375
+ const gap = parseFloat(containerStyle.gap) || 4; // Default gap from CSS
376
+ totalWidth += gap;
377
+ }
378
+ });
379
+ // Add a small buffer to prevent edge cases
380
+ const buffer = 10;
381
+ const isOverflowing = totalWidth + buffer > availableWidth;
382
+ this.showOverflowButton = isOverflowing;
383
+ }
384
+ /**
385
+ * Lifecycle: componentDidLoad. Sets up ResizeObserver and initial overflow check.
386
+ *
387
+ * @private
388
+ */
389
+ componentDidLoad() {
390
+ {
391
+ // Set up ResizeObserver to watch for footer size changes
392
+ this.resizeObserver = new ResizeObserver(() => {
393
+ this.checkOverflow();
394
+ });
395
+ // Initial check after a small delay to ensure DOM is ready
396
+ requestAnimationFrame(() => {
397
+ setTimeout(() => {
398
+ if (this.footerRef) {
399
+ this.resizeObserver.observe(this.footerRef);
400
+ }
401
+ this.checkOverflow();
402
+ }, 100);
403
+ });
404
+ }
405
+ }
406
+ /**
407
+ * Lifecycle: disconnectedCallback. Restores body styles and disconnects observers.
408
+ *
409
+ * @private
410
+ */
258
411
  disconnectedCallback() {
259
412
  if (document.body.style.overflow === 'hidden') {
260
413
  document.body.style.overflow = this.originalBodyOverflow;
414
+ document.body.style.paddingRight = this.originalBodyPaddingRight;
415
+ }
416
+ // Clean up ResizeObserver
417
+ if (this.resizeObserver) {
418
+ this.resizeObserver.disconnect();
261
419
  }
262
420
  }
421
+ /**
422
+ * Render the component UI.
423
+ *
424
+ * @returns JSX element tree
425
+ * @private
426
+ */
263
427
  render() {
428
+ var _a, _b, _c, _d, _e, _f, _g;
264
429
  const widthClass = typeof this.width === 'number' ? 'custom-width' : this.width;
265
430
  const sideSheetStyle = typeof this.width === 'number' ? { maxWidth: `${this.width}px` } : {};
266
- return (index.h("div", { key: '3071b6fbf443030422ad30d2fc7a86a3c71d060a', class: "backdrop", onClick: this.onClose }, index.h("div", { key: '75ae7c0f6bc4da076a3cd04579fc09252f701eb3', class: { sheet: true, [this.position]: true, [widthClass]: true }, style: sideSheetStyle, onClick: e => e.stopPropagation() }, index.h("div", { key: 'ec51c197afe4b00084881abb8688ca8f4f994a30', class: "title-container" }, index.h("div", { key: 'f382e9b4bf63314092b0b5d326069a9ca2316272', class: "close-button" }, index.h("stencil-icon-button", { key: 'ff449c9a65921a12207f2f4f6daaa45d9ff652c0', icon: Close24__default.default, onClick: this.onClose, secondary: true })), index.h("div", { key: '72e80626b9f519098dd069ebb357061f5e7008f8', class: "title-text" }, index.h("unity-typography", { key: 'fa7de8f448021ef6ac8a34d4825dcad745124dd2', variant: "h6" }, this.title)), this.headerActionButtonLabel && (index.h("div", { key: 'bcce55c18c3ff2b80cea48f471468ece741dc0bd', class: "header-action-button" }, index.h("udp-button", { key: '09d1343460e8b0d7fdceb8769ed8387647ab5a34', disabled: this.headerActionButtonDisabled, onClick: this.onHeaderActionButtonClick, startIcon: index.h("udp-icon", { iconName: this.headerActionButtonIcon, color: 'inherit' }), variant: "contained" }, this.headerActionButtonLabel)))), index.h("div", { key: '594932ae9ee30cfd5415fefcd48765c3d3f21aea', class: "loader-container" }, index.h("udp-linear-loader", { key: 'f3d09a98c7ac6bd22699339d2d0a7325c035e63d', class: { 'is-loading': this.loading }, color: "primary" })), index.h("div", { key: '59e987c1780a950dcdc8f56f012087a0ba55acb0', class: { content: true, padding: this.padding } }, index.h("slot", { key: 'fda6cf654587b15f3a28443b47a30f7564b2bf57' })), this.primaryButtonLabel && (index.h("div", { key: 'c6434be80f44e6f8a277bdff49503f67db5cdca7', class: "footer" }, index.h("udp-button", { key: '522a0e7bb290472cb1704bc4f61bf2a22ebda668', variant: "contained", size: "large", disabled: this.primaryButtonDisabled, onClick: this.onPrimaryButtonClick, endIcon: this.primaryButtonIcon }, this.primaryButtonLabel))))));
431
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
432
+ const headerStartIcon = Boolean(this.headerActionButtonIcon) ? (index.h("udp-icon", { iconName: this.headerActionButtonIcon, color: "inherit" })) : undefined;
433
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
434
+ const overflowIcon = index.h("udp-icon", { key: '3262baafbf833e25e0b4d1128b24fb503d1dd157', iconName: "overflowMenuVertical", color: "inherit" });
435
+ return (index.h("div", { key: '780c5705588899683400da7bce6569ad8ce15d30', class: "backdrop", onClick: this.onCloseBackdrop }, index.h("div", { key: 'a68811f8a6c59239c60c048453bb63eae7ed7ee0', class: { sheet: true, [this.position]: true, [widthClass]: true }, style: sideSheetStyle }, index.h("div", { key: '82207996d3f164f4e4a27132a64d6ce6b82ac401', class: "title-container" }, index.h("div", { key: 'e29501f861893b9e61f72509c44c337e7d1a5fb1', class: "close-button" }, index.h("stencil-icon-button", { key: '8980a42b0d47582a0fd91998cafe5c57982e9c04',
436
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
437
+ icon: Close24__default.default, onClick: this.onClose, secondary: true })), index.h("div", { key: '6b71ecb62ed1bac4560ca3e8e4ff1f643ee98555', class: "title-text" }, index.h("unity-typography", { key: 'b5f420d289dd23f040100d82def0ff635038cafd', variant: "h6" }, this.title)), (this.headerActionButtonLabel || ((_a = this.headerSecondaryButtons) === null || _a === void 0 ? void 0 : _a.length) > 0) && (index.h("div", { key: '65b8198f2a63096839fa678b6b69761ea2a93196', class: "header-action-button" }, (_b = this.headerSecondaryButtons) === null || _b === void 0 ? void 0 :
438
+ _b.map((item) => (index.h("udp-button", { variant: "outlined", disabled: item.disabled, onClick: item.onClick, endIcon: item.icon }, item.label))), this.headerActionButtonLabel && (index.h("udp-button", { key: 'a9985bcd675163a0a3dc47ea88cfe35e98a830fb', disabled: this.headerActionButtonDisabled, onClick: this.onHeaderActionButtonClick,
439
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
440
+ startIcon: headerStartIcon, variant: "contained" }, this.headerActionButtonLabel))))), index.h("div", { key: '362358edc955be022239e6662a0403baf49a4444', class: "loader-container" }, index.h("udp-linear-loader", { key: '0f93c37fc52e8400fbdb2d0db0879b49eb605859', class: { 'is-loading': this.loading }, color: "primary" })), index.h("div", { key: 'a2e70b272eb6f02878845350b7057908fdbb0cb2', class: { content: true, padding: this.padding } }, index.h("slot", { key: 'c6128fac4e8549fda3c25db826ed0377759a3bbb' })), (this.primaryButtonLabel || ((_c = this.footerSecondaryButtons) === null || _c === void 0 ? void 0 : _c.length) > 0) && (index.h("div", { key: '2d408d1f87df636effab01487739762b52c8897f' }, index.h("div", { key: '2fbdee5102a9837cc26d3f0cafb37141ebcc1527', class: "loader-container" }), index.h("div", { key: '8ba75738ab5ac6c4d33f828988f2d1e85ae1e3d5', class: {
441
+ footer: true,
442
+ }, ref: el => (this.footerRef = el) }, !this.showOverflowButton && ((_d = this.footerSecondaryButtons) === null || _d === void 0 ? void 0 : _d.length) > 0 && (index.h("div", { key: '13c00f7ff092655600f11885ce39d9acd4b9b26a', class: "footer-secondary-buttons-container" }, index.h("div", { key: '9bc81711a693c84bdab3274e67588193dc226203', class: "footer-secondary-buttons" }, (_e = this.footerSecondaryButtons) === null || _e === void 0 ? void 0 : _e.map((item) => (index.h("udp-button", { variant: "outlined", disabled: item.disabled, onClick: item.onClick, endIcon: item.icon }, item.label)))))), this.showOverflowButton && (index.h("udp-button", { key: '92c871d74675c9fd42ac890d9c5efe8e39a6aeb2', variant: "outlined", onClick: this.onMoreActionButtonClick, color: "secondary",
443
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
444
+ endIcon: overflowIcon }, "More")), this.primaryButtonLabel && (index.h("udp-button", { key: '94acda01904ab4265ced91dd6ef6e6d9ab788784', variant: "contained", disabled: this.primaryButtonDisabled, onClick: this.onPrimaryButtonClick, endIcon: this.primaryButtonIcon }, this.primaryButtonLabel)), this.showOverflowButton && (index.h("udp-pop-over", { key: 'c839371b5401fb7433417cba6b705c08c2242c09', anchorElement: this.overflowMenuAnchor, isOpen: this.openOverflowMenu, popoverWidth: '200px', popoverMaxHeight: '300px', handleOnClose: this.handleCloseOverflowMenu }, index.h("div", { key: '368023d9643a123acfa8215dab9ceaa85e613fbf', class: "menu" }, (_f = this.footerSecondaryButtons) === null || _f === void 0 ? void 0 : _f.map(item => (index.h("udp-menu-item", { label: item === null || item === void 0 ? void 0 : item.label, iconName: item === null || item === void 0 ? void 0 : item.icon, onItemClick: () => {
445
+ item === null || item === void 0 ? void 0 : item.onClick();
446
+ this.handleCloseOverflowMenu();
447
+ }, disabled: item === null || item === void 0 ? void 0 : item.disabled })))))), index.h("div", { key: '2dfb53eb181826fce129e856a4427da9edaeb756', ref: el => (this.measurementContainerRef = el), style: {
448
+ position: 'absolute',
449
+ visibility: 'hidden',
450
+ pointerEvents: 'none',
451
+ display: 'flex',
452
+ gap: 'var(--spacing-02, 4px)',
453
+ }, "aria-hidden": "true" }, (_g = this.footerSecondaryButtons) === null || _g === void 0 ? void 0 :
454
+ _g.map((item) => (index.h("udp-button", { variant: "text", size: "medium", disabled: item.disabled, endIcon: item.icon }, item.label))), this.primaryButtonLabel && (index.h("udp-button", { key: '5e6f99245f8649cbacfee9c34a88967966c2e856', variant: "contained", size: "medium", disabled: this.primaryButtonDisabled, endIcon: this.primaryButtonIcon }, this.primaryButtonLabel)))))))));
267
455
  }
268
456
  get hostEl() { return index.getElement(this); }
269
457
  static get watchers() { return {
270
- "open": ["handleOpenChange"]
458
+ "open": ["handleOpenChange"],
459
+ "footerSecondaryButtons": ["handleSecondaryButtonsChange"]
271
460
  }; }
272
461
  };
273
462
  UdpSideSheet.style = udpSideSheetCss;
@@ -95,11 +95,11 @@ const UdpMap = class {
95
95
  }
96
96
  //////////////////////////////////////////////////////////RENDER/////////////////////////////////////////////////////
97
97
  render() {
98
- return (index.h("map-component", { key: 'b701c0b012dade16e39e23231e6e96e15e8024cf', handleSetMapComponent: this.handleSetMapComponent, data: this.data, isGeoJsonFormat: this.isGeoJsonFormat, geoJsonMappingConfig: this.geoJsonMappingConfig, enableZoom: this.enableZoom, mapZoom: this.mapZoom, mapCenter: this.mapCenter, mapHeight: this.mapHeight, crs: this.crs, mapProjection: this.mapProjection, mapDataProjection: this.mapDataProjection, getFilteredMapData: this.getFilteredMapData, getFeatureStyles: this.getFeatureStyles, getSelectedFeatureStyles: this.getSelectedFeatureStyles, filterPanel: this.filterPanel, filterPanelCallback: this.filterPanelCallback, enableTileSelection: this.enableTileSelection, tileLayersOptions: this.tileLayersOptions, defaultTileOptionName: this.defaultTileOptionName, layerOptions: this.layerOptions, initialSelectedLayers: this.initialSelectedLayers, bulkSelectedFeaturesActionPanel: this.bulkSelectedFeaturesActionPanel, handleSetSelectedFeaturesOnBulkSelect: this.handleSetSelectedFeaturesOnBulkSelect, handleSetSelectedFeatureOnSelect: this.handleSetSelectedFeatureOnSelect, filterLayersByRole: this.filterLayersByRole, layerKeys: this.layerKeys, layerKeySeparator: this.layerKeySeparator, user: this.user, layerRoles: this.layerRoles, filteredLayerOptionsByRole: this.filteredLayerOptionsByRole, handleSetFilteredLayerOptionsByRole: this.handleSetFilteredLayerOptionsByRole, readOnlyMap: this.readOnlyMap, enableViewFeature: this.enableViewFeature, handleViewFeature: this.handleViewFeature, bulkSelectionActive: this.bulkSelectionActive, splitActive: this.splitActive, enableDragBox: this.enableDragBox, selectFeatureInteraction: this.selectFeatureInteraction, handleSetSelectedFeatureProperties: this.handleSetSelectedFeatureProperties, selectedFeatureCoordinates: this.selectedFeatureCoordinates, selectedFeatureProperties: this.selectedFeatureProperties, enableAddNewFeature: this.enableAddNewFeature, handleGetZoomExtent: this.handleGetZoomExtent, selectedLayers: this.selectedLayers, handleSetSelectedLayers: val => {
98
+ return (index.h("map-component", { key: 'dbea383c45161505aff8965d3bfbd925ccce570b', handleSetMapComponent: this.handleSetMapComponent, data: this.data, isGeoJsonFormat: this.isGeoJsonFormat, geoJsonMappingConfig: this.geoJsonMappingConfig, enableZoom: this.enableZoom, mapZoom: this.mapZoom, mapCenter: this.mapCenter, mapHeight: this.mapHeight, crs: this.crs, mapProjection: this.mapProjection, mapDataProjection: this.mapDataProjection, getFilteredMapData: this.getFilteredMapData, getFeatureStyles: this.getFeatureStyles, getSelectedFeatureStyles: this.getSelectedFeatureStyles, filterPanel: this.filterPanel, filterPanelCallback: this.filterPanelCallback, enableTileSelection: this.enableTileSelection, tileLayersOptions: this.tileLayersOptions, defaultTileOptionName: this.defaultTileOptionName, layerOptions: this.layerOptions, initialSelectedLayers: this.initialSelectedLayers, bulkSelectedFeaturesActionPanel: this.bulkSelectedFeaturesActionPanel, handleSetSelectedFeaturesOnBulkSelect: this.handleSetSelectedFeaturesOnBulkSelect, handleSetSelectedFeatureOnSelect: this.handleSetSelectedFeatureOnSelect, filterLayersByRole: this.filterLayersByRole, layerKeys: this.layerKeys, layerKeySeparator: this.layerKeySeparator, user: this.user, layerRoles: this.layerRoles, filteredLayerOptionsByRole: this.filteredLayerOptionsByRole, handleSetFilteredLayerOptionsByRole: this.handleSetFilteredLayerOptionsByRole, readOnlyMap: this.readOnlyMap, enableViewFeature: this.enableViewFeature, handleViewFeature: this.handleViewFeature, bulkSelectionActive: this.bulkSelectionActive, splitActive: this.splitActive, enableDragBox: this.enableDragBox, selectFeatureInteraction: this.selectFeatureInteraction, handleSetSelectedFeatureProperties: this.handleSetSelectedFeatureProperties, selectedFeatureCoordinates: this.selectedFeatureCoordinates, selectedFeatureProperties: this.selectedFeatureProperties, enableAddNewFeature: this.enableAddNewFeature, handleGetZoomExtent: this.handleGetZoomExtent, selectedLayers: this.selectedLayers, handleSetSelectedLayers: val => {
99
99
  this.updateSelectedLayers(val);
100
- }, readOnlyLayers: this.readOnlyLayers, additionalOnclosePopover: this.additionalOnclosePopover, popoverPrimaryActions: this.popoverPrimaryActions, popoverMoreIconButtonActions: this.popoverMoreIconButtonActions, getMessagePopover: this.getMessagePopover, getMessageIconPopover: this.getMessageIconPopover, hideMessageIconPopover: this.hideMessageIconPopover, popoverCardConfig: this.cardConfig, popoverWidth: this.popoverWidth, handleGetAdditionalFeaturePropertiesOnSelect: this.handleGetAdditionalFeaturePropertiesOnSelect, minZoom: this.minZoom, maxZoom: this.maxZoom }, this.enableToolbar && (index.h("udp-map-toolbar", { key: '04d39770f38e442466c0c82f0feb92bfc70b1535', map: this.map, mapTitle: this.mapTitle, mapProjection: this.mapProjection, getFeatureStyles: this.getFeatureStyles, getSelectedFeatureStyles: this.getSelectedFeatureStyles, filterPanel: this.filterPanel, enableTileSelection: this.enableTileSelection, tileLayersOptions: this.tileLayersOptions, defaultTileOptionName: this.defaultTileOptionName, layerOptions: this.layerOptions, bulkSelectedFeaturesActionPanel: this.bulkSelectedFeaturesActionPanel, handleSetSelectedFeaturesOnBulkSelect: this.handleSetSelectedFeaturesOnBulkSelect, handleRefresh: this.handleRefresh, refreshButtonTooltip: this.refreshButtonTooltip, readOnlyMap: this.readOnlyMap, enableAdd: this.enableAdd, handleAddNewFeatures: this.handleAddNewFeatures, addMultipleFeatures: this.addMultipleFeatures, enableSplitFeature: this.enableSplitFeature, handleSplitFeature: this.handleSplitFeature, handleSetSelectedFeatureProperties: this.handleSetSelectedFeatureProperties, filteredLayerOptionsByRole: this.filteredLayerOptionsByRole, handleSetBulkSelectionActive: this.handleSetBulkSelectionActive, enableDragBox: this.enableDragBox, handleSetEnableDragBox: this.handleSetEnableDragBox, splitActive: this.splitActive, handleSetSplitActive: this.handleSetSplitActive, selectFeatureInteraction: this.selectFeatureInteraction, enableAddNewFeature: this.enableAddNewFeature, handleEnableAddNewFeature: this.handleEnableAddNewFeature, handleSelectLayersCallback: this.handleSelectLayersCallback, selectedLayers: this.selectedLayers, handleSetSelectedLayers: val => {
100
+ }, readOnlyLayers: this.readOnlyLayers, additionalOnclosePopover: this.additionalOnclosePopover, popoverPrimaryActions: this.popoverPrimaryActions, popoverMoreIconButtonActions: this.popoverMoreIconButtonActions, getMessagePopover: this.getMessagePopover, getMessageIconPopover: this.getMessageIconPopover, hideMessageIconPopover: this.hideMessageIconPopover, popoverCardConfig: this.cardConfig, popoverWidth: this.popoverWidth, handleGetAdditionalFeaturePropertiesOnSelect: this.handleGetAdditionalFeaturePropertiesOnSelect, minZoom: this.minZoom, maxZoom: this.maxZoom }, this.enableToolbar && (index.h("udp-map-toolbar", { key: 'd62be8bc2f358155b349688ac9ddd27c4ee95594', map: this.map, mapTitle: this.mapTitle, mapProjection: this.mapProjection, getFeatureStyles: this.getFeatureStyles, getSelectedFeatureStyles: this.getSelectedFeatureStyles, filterPanel: this.filterPanel, enableTileSelection: this.enableTileSelection, tileLayersOptions: this.tileLayersOptions, defaultTileOptionName: this.defaultTileOptionName, layerOptions: this.layerOptions, bulkSelectedFeaturesActionPanel: this.bulkSelectedFeaturesActionPanel, handleSetSelectedFeaturesOnBulkSelect: this.handleSetSelectedFeaturesOnBulkSelect, handleRefresh: this.handleRefresh, refreshButtonTooltip: this.refreshButtonTooltip, readOnlyMap: this.readOnlyMap, enableAdd: this.enableAdd, handleAddNewFeatures: this.handleAddNewFeatures, addMultipleFeatures: this.addMultipleFeatures, enableSplitFeature: this.enableSplitFeature, handleSplitFeature: this.handleSplitFeature, handleSetSelectedFeatureProperties: this.handleSetSelectedFeatureProperties, filteredLayerOptionsByRole: this.filteredLayerOptionsByRole, handleSetBulkSelectionActive: this.handleSetBulkSelectionActive, enableDragBox: this.enableDragBox, handleSetEnableDragBox: this.handleSetEnableDragBox, splitActive: this.splitActive, handleSetSplitActive: this.handleSetSplitActive, selectFeatureInteraction: this.selectFeatureInteraction, enableAddNewFeature: this.enableAddNewFeature, handleEnableAddNewFeature: this.handleEnableAddNewFeature, handleSelectLayersCallback: this.handleSelectLayersCallback, selectedLayers: this.selectedLayers, handleSetSelectedLayers: val => {
101
101
  this.updateSelectedLayers(val);
102
- }, addFeaturePanelConfig: this.addFeaturePanelConfig })), index.h("slot", { key: '24e6a8974bd1acda96d431dfc7fa5b8bd8129355' })));
102
+ }, addFeaturePanelConfig: this.addFeaturePanelConfig })), index.h("slot", { key: 'f2753f5f595726febc44235dbc1e728c1763da64' })));
103
103
  }
104
104
  static get watchers() { return {
105
105
  "enableDragBox": ["watchDragBoxandSelectedFeatureInteraction"],
@@ -22,7 +22,7 @@ const UdpPage = class {
22
22
  padding: this.padding,
23
23
  margin: '0 auto', // Centers the content if max-width is set
24
24
  };
25
- return (index.h("div", { key: '1e21862453854a594552763318343637c1544de1', style: style }, index.h("slot", { key: 'fcdedce8e48062cd41721f509b5d1d034c218f7b' }), " "));
25
+ return (index.h("div", { key: '9a506250a5ee7200c405e7f3fe0a018dda294ab4', style: style }, index.h("slot", { key: 'eea699d0fed23736cfe071b86ac1449a52f51b0f' }), " "));
26
26
  }
27
27
  };
28
28
  UdpPage.style = udpPageCss;
@@ -57,7 +57,7 @@ const UdpSplitScreen = class {
57
57
  }
58
58
  }
59
59
  render() {
60
- return (index.h("div", { key: '6de7d4288cb53149ae06ed973443b31ecd898015', ref: (el) => this.element = el, class: { 'container': true, 'open': this.isOpen } }, index.h("div", { key: 'a47d6eb52c88ec9c52d895af81ad722c1d5b4df0', class: "panel", style: { width: `${this.panelWidth}%` } }, index.h("slot", { key: '8fe4023b236098476be1c7e113f94377d1396f89', name: "first-panel" })), index.h("div", { key: 'fb98abdfcefa4cd6e8dccd077c911033169244da', class: "resizer", onMouseDown: (event) => event.preventDefault() }, index.h("div", { key: '1db3f8ad5295c7feeecbe77a02af8f5cea712be6', class: "drag-handle" })), index.h("div", { key: '6b8a9feb47f10756bab8a3cf2fa2aac2069627b4', class: "panel", style: { width: `${100 - this.panelWidth}%` } }, index.h("slot", { key: '26a15ac5efaae765de72034e8359dfd2a51be80d', name: "second-panel" }, this.panelContent))));
60
+ return (index.h("div", { key: 'ca232222c0c85071eb987d373ad1541631070e3e', ref: (el) => this.element = el, class: { 'container': true, 'open': this.isOpen } }, index.h("div", { key: 'c221965b0e7542253986c878b05cc656289431e9', class: "panel", style: { width: `${this.panelWidth}%` } }, index.h("slot", { key: '4edf17b48cf6d2e89826878ede587f0a9e2ce1e8', name: "first-panel" })), index.h("div", { key: '51b5ea69206ebf1221cbb9dbed3f9456fbf54c59', class: "resizer", onMouseDown: (event) => event.preventDefault() }, index.h("div", { key: '86d906ebb8e8561e7e564b6c8b4af62a03e1653c', class: "drag-handle" })), index.h("div", { key: '28fba6e4b0f176b7e08c1f29a3edc045f66346e8', class: "panel", style: { width: `${100 - this.panelWidth}%` } }, index.h("slot", { key: 'b1215db69a194eced28d595a39322afbe4c7ccde', name: "second-panel" }, this.panelContent))));
61
61
  }
62
62
  };
63
63
  UdpSplitScreen.style = udpSplitScreenCss;