udp-stencil-component-library 25.18.1-beta.7 → 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.
- package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +12 -12
- package/dist/cjs/advanced-search_50.cjs.entry.js +63 -60
- package/dist/cjs/ag-grid-base_5.cjs.entry.js +5 -5
- package/dist/cjs/api-method-instance-grid.cjs.entry.js +1 -1
- package/dist/cjs/check-box.cjs.entry.js +2 -2
- package/dist/cjs/chip-section.cjs.entry.js +2 -2
- package/dist/cjs/client-side-grid_2.cjs.entry.js +3 -3
- package/dist/cjs/color-preview.cjs.entry.js +1 -1
- package/dist/cjs/date-time-renderer_6.cjs.entry.js +8 -8
- package/dist/cjs/entity-maintenance-grid.cjs.entry.js +1 -1
- package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
- package/dist/cjs/image-upload_7.cjs.entry.js +6 -6
- package/dist/cjs/inputs-example.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/map-component_2.cjs.entry.js +2 -2
- package/dist/cjs/numeric-field_5.cjs.entry.js +15 -15
- package/dist/cjs/page-renderer.cjs.entry.js +1 -1
- package/dist/cjs/question-configs-renderer_5.cjs.entry.js +14 -14
- package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
- package/dist/cjs/search-method-grid.cjs.entry.js +1 -1
- package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
- package/dist/cjs/simple-card.cjs.entry.js +1 -1
- package/dist/cjs/stencil-library.cjs.js +1 -1
- package/dist/cjs/udp-chip_3.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
- package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
- package/dist/cjs/udp-container.cjs.entry.js +2 -2
- package/dist/cjs/udp-date-range-selector.cjs.entry.js +1 -1
- package/dist/cjs/udp-dynamic-form.cjs.entry.js +1 -1
- package/dist/cjs/udp-forms-follow-up-list-card.cjs.entry.js +2 -2
- package/dist/cjs/udp-forms-list-card.cjs.entry.js +5 -5
- package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
- package/dist/cjs/udp-forms-renderer.cjs.entry.js +1 -1
- package/dist/cjs/udp-list-renderer.udp-pagination.udp-side-sheet.entry.cjs.js.map +1 -1
- package/dist/cjs/udp-list-renderer_3.cjs.entry.js +194 -5
- package/dist/cjs/udp-map.cjs.entry.js +3 -3
- package/dist/cjs/udp-page.cjs.entry.js +1 -1
- package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
- package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
- package/dist/cjs/udp-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/icons/udp-icon.js +4 -1
- package/dist/collection/components/my-component/UI/data-display/icons/udp-icon.js.map +1 -1
- package/dist/collection/components/my-component/UI/data-display/kpi/kpi-list.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/list-item/list-item.js +2 -2
- package/dist/collection/components/my-component/UI/data-display/pop-over/udp-pop-over.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/pop-over-grid-action-header/udp-pop-over-grid-action-header.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/primary-action-header/primary-action-header.js +2 -2
- package/dist/collection/components/my-component/UI/data-display/simple-card/simple-card.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/tool-tip/udp-ambient-tool-tip.js +2 -2
- package/dist/collection/components/my-component/UI/data-display/tree/tree-list-item/search-item/search-list-item.js +1 -1
- package/dist/collection/components/my-component/UI/data-display/udp-avatar/udp-avatar.js +1 -1
- package/dist/collection/components/my-component/UI/dialogs/fluent-dialog/fluent-dialog.js +2 -2
- package/dist/collection/components/my-component/UI/dialogs/udp-dialog.js +1 -1
- package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/types.js +2 -0
- package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/types.js.map +1 -0
- package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.css +163 -137
- package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.js +269 -19
- package/dist/collection/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.js.map +1 -1
- package/dist/collection/components/my-component/UI/feedback/udp-notification/alerts/upd-alert-banner.js +1 -1
- package/dist/collection/components/my-component/UI/feedback/udp-notification/udp-notification.js +2 -2
- package/dist/collection/components/my-component/UI/forms/dynamic-form/udp-dynamic-form.js +1 -1
- package/dist/collection/components/my-component/UI/forms/edit-view-form/edit-view-form.js +2 -2
- package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +1 -1
- package/dist/collection/components/my-component/UI/forms/save-view-form/save-view-form.js +2 -2
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/forms-question-item/udp-forms-builder-question-item.js +2 -2
- 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
- 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
- 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
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/signature-renderer/signature-renderer.js +1 -1
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-menu/udp-forms-builder-menu.js +2 -2
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card/udp-forms-list-card.js +5 -5
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
- 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
- package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +1 -1
- package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
- package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
- package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
- package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/api-method-instance-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/entity-maintenance-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/search-method-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
- package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/date-range-selector/udp-date-range-selector.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/image-upload/image-upload.js +1 -1
- package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
- package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +3 -3
- package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
- package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
- package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
- package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
- package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
- package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
- package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +2 -2
- package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
- package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
- package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +1 -1
- package/dist/collection/components/my-component/UI/menu/udp-menu.js +1 -1
- package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +2 -2
- package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
- package/dist/collection/components/my-component/UI/tabs/udp-tab-panel/udp-tab-panel.js +2 -2
- package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
- package/dist/collection/components/my-component/UI/util/ghost-render/ghost-render.js +1 -1
- package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
- package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
- package/dist/collection/page-renderer/page-renderer.js +1 -1
- package/dist/collection/theme/color-preview/color-preview.js +1 -1
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
- package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
- package/dist/components/add-map-feature-popup2.js +3 -3
- package/dist/components/ag-grid-base2.js +1 -1
- package/dist/components/ag-table2.js +1 -1
- package/dist/components/ambient-demo-container2.js +1 -1
- package/dist/components/ambient-template-grid2.js +15 -15
- package/dist/components/api-method-instance-grid.js +1 -1
- package/dist/components/app-bar2.js +1 -1
- package/dist/components/check-box2.js +2 -2
- package/dist/components/chip-section.js +2 -2
- package/dist/components/client-side-grid2.js +1 -1
- package/dist/components/color-preview.js +1 -1
- package/dist/components/edit-view-form.js +2 -2
- package/dist/components/entity-maintenance-grid.js +1 -1
- package/dist/components/feature-details-card2.js +4 -4
- package/dist/components/feature-details-popup2.js +1 -1
- package/dist/components/file-upload-renderer2.js +2 -2
- package/dist/components/fluent-dialog2.js +2 -2
- package/dist/components/ghost-render2.js +1 -1
- package/dist/components/grid-primary-bar2.js +2 -2
- package/dist/components/image-upload2.js +1 -1
- package/dist/components/inputs-example.js +2 -2
- package/dist/components/kpi-list2.js +1 -1
- package/dist/components/list-item.js +2 -2
- package/dist/components/list-options-renderer2.js +3 -3
- package/dist/components/map-component2.js +1 -1
- package/dist/components/map-toolbar2.js +6 -6
- package/dist/components/numeric-field2.js +3 -3
- package/dist/components/page-renderer.js +1 -1
- package/dist/components/primary-action-header2.js +2 -2
- package/dist/components/question-configs-renderer2.js +6 -6
- package/dist/components/resource-timeline-calendar.js +1 -1
- package/dist/components/resource-timeline-primary-bar2.js +2 -2
- package/dist/components/save-view-form.js +2 -2
- package/dist/components/search-list-item2.js +1 -1
- package/dist/components/search-method-grid2.js +1 -1
- package/dist/components/section-configs-renderer2.js +3 -3
- package/dist/components/select-layer-popup2.js +2 -2
- package/dist/components/server-side-grid2.js +1 -1
- package/dist/components/signature-input2.js +2 -2
- package/dist/components/signature-renderer2.js +1 -1
- package/dist/components/simple-card.js +1 -1
- package/dist/components/split-line-popup2.js +1 -1
- package/dist/components/stencil-form2.js +1 -1
- package/dist/components/stencil-toggle2.js +4 -4
- package/dist/components/tally.js +2 -2
- package/dist/components/text-area2.js +3 -3
- package/dist/components/text-field2.js +3 -3
- package/dist/components/text-input-renderer2.js +2 -2
- package/dist/components/udp-ambient-tool-tip2.js +2 -2
- package/dist/components/udp-avatar2.js +1 -1
- package/dist/components/udp-container-query-grid-item.js +1 -1
- package/dist/components/udp-container-query-grid.js +1 -1
- package/dist/components/udp-container-query2.js +2 -2
- package/dist/components/udp-container2.js +2 -2
- package/dist/components/udp-date-range-selector.js +1 -1
- package/dist/components/udp-date-selector2.js +3 -3
- package/dist/components/udp-datetime-selector2.js +3 -3
- package/dist/components/udp-dialog2.js +1 -1
- package/dist/components/udp-dynamic-container-with-menu2.js +1 -1
- package/dist/components/udp-dynamic-form.js +1 -1
- package/dist/components/udp-forms-builder-menu2.js +2 -2
- package/dist/components/udp-forms-builder-question-item2.js +2 -2
- package/dist/components/udp-forms-builder-style-override2.js +1 -1
- package/dist/components/udp-forms-builder.js +72 -60
- package/dist/components/udp-forms-builder.js.map +1 -1
- package/dist/components/udp-forms-follow-up-list-card.js +2 -2
- package/dist/components/udp-forms-list-card2.js +5 -5
- package/dist/components/udp-forms-list.js +51 -39
- package/dist/components/udp-forms-list.js.map +1 -1
- package/dist/components/udp-forms-renderer.js +67 -55
- package/dist/components/udp-forms-renderer.js.map +1 -1
- package/dist/components/udp-grid-loader2.js +2 -2
- package/dist/components/udp-hotlist-form2.js +1 -1
- package/dist/components/udp-icon2.js +4 -1
- package/dist/components/udp-icon2.js.map +1 -1
- package/dist/components/udp-linear-loader2.js +1 -1
- package/dist/components/udp-map-toolbar2.js +1 -1
- package/dist/components/udp-map.js +3 -3
- package/dist/components/udp-menu-item2.js +1 -1
- package/dist/components/udp-menu2.js +1 -1
- package/dist/components/udp-notification2.js +2 -2
- package/dist/components/udp-page.js +1 -1
- package/dist/components/udp-pop-over-grid-action-header2.js +1 -1
- package/dist/components/udp-pop-over2.js +1 -1
- package/dist/components/udp-selector2.js +4 -4
- package/dist/components/udp-side-sheet2.js +228 -19
- package/dist/components/udp-side-sheet2.js.map +1 -1
- package/dist/components/udp-skeleton-loading2.js +1 -1
- package/dist/components/udp-split-screen.js +1 -1
- package/dist/components/udp-stepper-demo.js +1 -1
- package/dist/components/udp-tab-panel.js +2 -2
- package/dist/components/udp-tab2.js +1 -1
- package/dist/components/udp-tabs2.js +2 -2
- package/dist/components/udp-time-selector2.js +3 -3
- package/dist/components/udp-vertical-spacer.js +1 -1
- package/dist/components/upd-alert-banner2.js +1 -1
- package/dist/docs.json +123 -28
- package/dist/esm/add-map-feature-popup_4.entry.js +12 -12
- package/dist/esm/advanced-search_50.entry.js +63 -60
- package/dist/esm/ag-grid-base_5.entry.js +5 -5
- package/dist/esm/api-method-instance-grid.entry.js +1 -1
- package/dist/esm/check-box.entry.js +2 -2
- package/dist/esm/chip-section.entry.js +2 -2
- package/dist/esm/client-side-grid_2.entry.js +3 -3
- package/dist/esm/color-preview.entry.js +1 -1
- package/dist/esm/date-time-renderer_6.entry.js +8 -8
- package/dist/esm/entity-maintenance-grid.entry.js +1 -1
- package/dist/esm/feature-details-card_2.entry.js +5 -5
- package/dist/esm/image-upload_7.entry.js +6 -6
- package/dist/esm/inputs-example.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/map-component_2.entry.js +2 -2
- package/dist/esm/numeric-field_5.entry.js +15 -15
- package/dist/esm/page-renderer.entry.js +1 -1
- package/dist/esm/question-configs-renderer_5.entry.js +14 -14
- package/dist/esm/resource-timeline-calendar.entry.js +1 -1
- package/dist/esm/search-method-grid.entry.js +1 -1
- package/dist/esm/server-side-grid.entry.js +1 -1
- package/dist/esm/simple-card.entry.js +1 -1
- package/dist/esm/stencil-library.js +1 -1
- package/dist/esm/udp-chip_3.entry.js +1 -1
- package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
- package/dist/esm/udp-container-query-grid.entry.js +1 -1
- package/dist/esm/udp-container-query.entry.js +2 -2
- package/dist/esm/udp-container.entry.js +2 -2
- package/dist/esm/udp-date-range-selector.entry.js +1 -1
- package/dist/esm/udp-dynamic-form.entry.js +1 -1
- package/dist/esm/udp-forms-follow-up-list-card.entry.js +2 -2
- package/dist/esm/udp-forms-list-card.entry.js +5 -5
- package/dist/esm/udp-forms-list.entry.js +1 -1
- package/dist/esm/udp-forms-renderer.entry.js +1 -1
- package/dist/esm/udp-list-renderer.udp-pagination.udp-side-sheet.entry.js.map +1 -1
- package/dist/esm/udp-list-renderer_3.entry.js +194 -5
- package/dist/esm/udp-map.entry.js +3 -3
- package/dist/esm/udp-page.entry.js +1 -1
- package/dist/esm/udp-split-screen.entry.js +1 -1
- package/dist/esm/udp-stepper-demo.entry.js +1 -1
- package/dist/esm/udp-tab-panel.entry.js +2 -2
- package/dist/esm/udp-vertical-spacer.entry.js +1 -1
- package/dist/stencil-library/add-map-feature-popup_4.entry.js +1 -1
- package/dist/stencil-library/advanced-search_50.entry.js +1 -1
- package/dist/stencil-library/advanced-search_50.entry.js.map +1 -1
- package/dist/stencil-library/ag-grid-base_5.entry.js +1 -1
- package/dist/stencil-library/api-method-instance-grid.entry.js +1 -1
- package/dist/stencil-library/check-box.entry.js +1 -1
- package/dist/stencil-library/chip-section.entry.js +1 -1
- package/dist/stencil-library/client-side-grid_2.entry.js +1 -1
- package/dist/stencil-library/color-preview.entry.js +1 -1
- package/dist/stencil-library/date-time-renderer_6.entry.js +1 -1
- package/dist/stencil-library/entity-maintenance-grid.entry.js +1 -1
- package/dist/stencil-library/feature-details-card_2.entry.js +1 -1
- package/dist/stencil-library/image-upload_7.entry.js +1 -1
- package/dist/stencil-library/inputs-example.entry.js +1 -1
- package/dist/stencil-library/map-component_2.entry.js +1 -1
- package/dist/stencil-library/numeric-field_5.entry.js +1 -1
- package/dist/stencil-library/page-renderer.entry.js +1 -1
- package/dist/stencil-library/question-configs-renderer_5.entry.js +1 -1
- package/dist/stencil-library/resource-timeline-calendar.entry.js +1 -1
- package/dist/stencil-library/search-method-grid.entry.js +1 -1
- package/dist/stencil-library/server-side-grid.entry.js +1 -1
- package/dist/stencil-library/simple-card.entry.js +1 -1
- package/dist/stencil-library/simple-card.entry.js.map +1 -1
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/stencil-library/udp-chip_3.entry.js +1 -1
- package/dist/stencil-library/udp-container-query-grid-item.entry.js +1 -1
- package/dist/stencil-library/udp-container-query-grid.entry.js +1 -1
- package/dist/stencil-library/udp-container-query.entry.js +1 -1
- package/dist/stencil-library/udp-container.entry.js +1 -1
- package/dist/stencil-library/udp-date-range-selector.entry.js +1 -1
- package/dist/stencil-library/udp-dynamic-form.entry.js +1 -1
- package/dist/stencil-library/udp-forms-follow-up-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list-card.entry.js +1 -1
- package/dist/stencil-library/udp-forms-list.entry.js +1 -1
- package/dist/stencil-library/udp-forms-renderer.entry.js +1 -1
- package/dist/stencil-library/udp-list-renderer.udp-pagination.udp-side-sheet.entry.esm.js.map +1 -1
- package/dist/stencil-library/udp-list-renderer_3.entry.js +1 -1
- package/dist/stencil-library/udp-list-renderer_3.entry.js.map +1 -1
- package/dist/stencil-library/udp-map.entry.js +1 -1
- package/dist/stencil-library/udp-page.entry.js +1 -1
- package/dist/stencil-library/udp-split-screen.entry.js +1 -1
- package/dist/stencil-library/udp-stepper-demo.entry.js +1 -1
- package/dist/stencil-library/udp-tab-panel.entry.js +1 -1
- package/dist/stencil-library/udp-vertical-spacer.entry.js +1 -1
- package/dist/types/components/my-component/UI/drawers/udp-side-sheet/types.d.ts +7 -0
- package/dist/types/components/my-component/UI/drawers/udp-side-sheet/udp-side-sheet.d.ts +114 -0
- package/dist/types/components.d.ts +83 -0
- package/package.json +1 -1
|
@@ -118,11 +118,11 @@ const UdpMap$1 = /*@__PURE__*/ proxyCustomElement(class UdpMap extends H {
|
|
|
118
118
|
}
|
|
119
119
|
//////////////////////////////////////////////////////////RENDER/////////////////////////////////////////////////////
|
|
120
120
|
render() {
|
|
121
|
-
return (h("map-component", { key: '
|
|
121
|
+
return (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 => {
|
|
122
122
|
this.updateSelectedLayers(val);
|
|
123
|
-
}, 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 && (h("udp-map-toolbar", { key: '
|
|
123
|
+
}, 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 && (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 => {
|
|
124
124
|
this.updateSelectedLayers(val);
|
|
125
|
-
}, addFeaturePanelConfig: this.addFeaturePanelConfig })), h("slot", { key: '
|
|
125
|
+
}, addFeaturePanelConfig: this.addFeaturePanelConfig })), h("slot", { key: 'f2753f5f595726febc44235dbc1e728c1763da64' })));
|
|
126
126
|
}
|
|
127
127
|
static get watchers() { return {
|
|
128
128
|
"enableDragBox": ["watchDragBoxandSelectedFeatureInteraction"],
|
|
@@ -22,7 +22,7 @@ const UdpMenuItem = /*@__PURE__*/ proxyCustomElement(class UdpMenuItem extends H
|
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
render() {
|
|
25
|
-
return (h("button", { key: '
|
|
25
|
+
return (h("button", { key: 'fb7827a4ddd3ec09634dde5e392b82ee2bc2aa56', class: "menu-item-root", onClick: this.handleItemClick, disabled: this.disabled, role: "menuitem" }, this.iconName && h("udp-icon", { key: '7cb749410ab0d3db5ed37a80014a2db733b7611f', iconName: this.iconName, class: "menu-icon" }), h("span", { key: 'd123d5a3d5bce228283bd829e25a0c187d791274', class: "menu-item-label" }, h("unity-typography", { key: '1c139bca8c0b84d41246bbf17e793301a9c79235', variant: 'body1' }, this.label))));
|
|
26
26
|
}
|
|
27
27
|
static get style() { return udpMenuItemCss; }
|
|
28
28
|
}, [257, "udp-menu-item", {
|
|
@@ -98,7 +98,7 @@ const UdpMenu = /*@__PURE__*/ proxyCustomElement(class UdpMenu extends H {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
render() {
|
|
101
|
-
return (h(Host, { key: '
|
|
101
|
+
return (h(Host, { key: '442d88639387239daf36ef71be1a197b098f7d15' }, h("div", { key: 'e42568ca41f4454b7b90791da690fd44c107a63f', class: "menu-panel", role: "menu" }, h("slot", { key: 'b124207c63660c4d51be5818816030e2c64b272a' }))));
|
|
102
102
|
}
|
|
103
103
|
get hostEl() { return this; }
|
|
104
104
|
static get watchers() { return {
|
|
@@ -21,11 +21,11 @@ const UdpNotification = /*@__PURE__*/ proxyCustomElement(class UdpNotification e
|
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
23
23
|
const statusClass = `status-${this.status}`;
|
|
24
|
-
return (h("div", { key: '
|
|
24
|
+
return (h("div", { key: '555f2f94b04009382fac53a32d74f8f84f14a733', class: {
|
|
25
25
|
'udp-notification': true,
|
|
26
26
|
'visible': this.active,
|
|
27
27
|
[statusClass]: true // This will apply the correct class based on the status
|
|
28
|
-
} }, this.userCancel && (h("button", { key: '
|
|
28
|
+
} }, this.userCancel && (h("button", { key: 'a9e6b1a2faa49b97d3d39da732a0b3e35045228d', class: "close-button", onClick: () => this.active = false }, "\u00D7")), h("span", { key: 'ed21c8f3e5e3fa53d2a1d4a54835e0f4b63210c4', class: "message" }, " ", h("unity-typography", { key: '9283d1e980b03cd92e5721d7a41209ee0c109cdf', variant: 'body' }, " ", this.message, " "))));
|
|
29
29
|
}
|
|
30
30
|
static get watchers() { return {
|
|
31
31
|
"active": ["activeChanged"]
|
|
@@ -24,7 +24,7 @@ const UdpPage$1 = /*@__PURE__*/ proxyCustomElement(class UdpPage extends H {
|
|
|
24
24
|
padding: this.padding,
|
|
25
25
|
margin: '0 auto', // Centers the content if max-width is set
|
|
26
26
|
};
|
|
27
|
-
return (h("div", { key: '
|
|
27
|
+
return (h("div", { key: '9a506250a5ee7200c405e7f3fe0a018dda294ab4', style: style }, h("slot", { key: 'eea699d0fed23736cfe071b86ac1449a52f51b0f' }), " "));
|
|
28
28
|
}
|
|
29
29
|
static get style() { return udpPageCss; }
|
|
30
30
|
}, [257, "udp-page", {
|
|
@@ -44,7 +44,7 @@ const UdpPopOver = /*@__PURE__*/ proxyCustomElement(class UdpPopOver extends H {
|
|
|
44
44
|
style['top'] = `${rect.bottom}px`;
|
|
45
45
|
style['left'] = `${rect.left}px`;
|
|
46
46
|
}
|
|
47
|
-
return (h("div", { key: '
|
|
47
|
+
return (h("div", { key: '8db3050c709cd4652f36b7f7fccdf5474fef6786', class: "popover", style: style }, h("unity-typography", { key: '1d45adc91c79e9c417161bedd9c347884738b612', variant: "caption-text" }, h("slot", { key: '4782e7ff5fef34f131e21b3c6e85c6162543aa11' }))));
|
|
48
48
|
}
|
|
49
49
|
get el() { return this; }
|
|
50
50
|
static get watchers() { return {
|
|
@@ -121,7 +121,7 @@ const UdpPopOver = /*@__PURE__*/ proxyCustomElement(class UdpPopOver extends H {
|
|
|
121
121
|
maxHeight: this.popoverMaxHeight,
|
|
122
122
|
overflow: this.overflow
|
|
123
123
|
};
|
|
124
|
-
return (h(Host, { key: '
|
|
124
|
+
return (h(Host, { key: 'a064210032eb7db2bba02fee5c9a857fffc4cbcf' }, h("div", { key: '1cd02d254250afed442607f0925613dafb0ef63f', class: "popover", style: style }, h("slot", { key: '085cca6f9a387c33b56fd18d41b54fbfd4b59b90' }))));
|
|
125
125
|
}
|
|
126
126
|
get hostEl() { return this; }
|
|
127
127
|
static get watchers() { return {
|
|
@@ -328,7 +328,7 @@ const UdpSelector = /*@__PURE__*/ proxyCustomElement(class UdpSelector extends H
|
|
|
328
328
|
'focused': this.isOpen,
|
|
329
329
|
};
|
|
330
330
|
const hasSelection = this.multiSelect ? this.selectedOptions.length > 0 : !!this.selectedOption;
|
|
331
|
-
return (h(Host, { key: '
|
|
331
|
+
return (h(Host, { key: 'ff3d430a821267669e8ba41d4d814be594042f0c', class: {
|
|
332
332
|
'udp-input': true,
|
|
333
333
|
'udp-selector': true,
|
|
334
334
|
'udp-input--error': isError,
|
|
@@ -338,9 +338,9 @@ const UdpSelector = /*@__PURE__*/ proxyCustomElement(class UdpSelector extends H
|
|
|
338
338
|
'udp-input--large': this.large,
|
|
339
339
|
[`udp-input--size-${this.size}`]: true,
|
|
340
340
|
[`udp-input--margin-${this.margin}`]: true,
|
|
341
|
-
}, "aria-invalid": isError ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false' }, h("div", { key: '
|
|
341
|
+
}, "aria-invalid": isError ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false' }, h("div", { key: 'b81f9ba1806adfade81fb55b0f9ecc1fba2ce305', class: "bx--form-item" }, this.label && (h("unity-typography", { key: 'b207e16041dda5996f21e58c7d305a19ae9a5810', variant: "caption-text" }, h("label", { key: 'babd3165a21c7ff38199494a6276ee2c814632c5', htmlFor: this.id, class: "bx--label" }, this.label, this.required ? '*' : ''))), h("div", { key: '08bd70119c4f353d8ad318e298da088e2812fd99', class: "udp-selector__container" }, h("div", { key: 'b4aff7c12f9199ce974bb9591812ff9ddd94ef46', class: selectedOptionClasses, onClick: () => this.toggleDropdown(), tabindex: this.disabled || this.readonly ? '-1' : '0', role: "combobox", "aria-haspopup": "listbox", "aria-expanded": this.isOpen.toString(), id: 'udpRecord-udp-selector-' + this.id,
|
|
342
342
|
// @ts-ignore
|
|
343
|
-
udprecordid: 'udpRecord-udp-selector-' + this.id }, h("div", { key: '
|
|
343
|
+
udprecordid: 'udpRecord-udp-selector-' + this.id }, h("div", { key: 'fdc3d8248a8de967b0136f9cb8a259fcf0f309f2', class: {
|
|
344
344
|
'selected-option-label': true,
|
|
345
345
|
'placeholder': !hasSelection,
|
|
346
346
|
} }, this.multiSelect
|
|
@@ -349,7 +349,7 @@ const UdpSelector = /*@__PURE__*/ proxyCustomElement(class UdpSelector extends H
|
|
|
349
349
|
: 'Select option(s)'
|
|
350
350
|
: this.selectedOption
|
|
351
351
|
? this.selectedOption.label
|
|
352
|
-
: 'Select an option'), this.multiSelect && this.selectedOptions.length > 0 && h("span", { key: '
|
|
352
|
+
: 'Select an option'), this.multiSelect && this.selectedOptions.length > 0 && h("span", { key: '7bf13954e3374093da80d54c53f43d110f6575a5', class: "checkmark" }), h("div", { key: 'd3fe7ba8c3ab16fdc1073a8c9b494fbe324f23d0', class: "arrow" })), this.isOpen && (h("ul", { key: '0be46a38647b29310324b446993121d404e7bd77', class: "options-list" }, this.options.map(option => (h("unity-typography", { variant: "button" }, h("li", { class: this.isOptionSelected(option) ? 'selected' : '', onClick: () => this.selectOption(option), onMouseDown: this.handleOptionMouseDown }, option.label, this.isOptionSelected(option) && h("span", { class: "checkmark" })))))))), this.errorMessage && (h("div", { key: '6fdfcb547313774dc09085af93e07c75379097cc', class: "error-message" }, h("unity-typography", { key: '93ff63ec2f2c8e318bcdd51bbbf88ad7047a8dbc', variant: "caption-text", color: "error" }, this.errorMessage))))));
|
|
353
353
|
}
|
|
354
354
|
/**
|
|
355
355
|
* Checks if a given option is currently selected.
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h } from './index2.js';
|
|
2
2
|
import Close24 from '@carbon/icons/es/close/24';
|
|
3
|
-
import { d as defineCustomElement$
|
|
4
|
-
import { d as defineCustomElement$
|
|
5
|
-
import { d as defineCustomElement$
|
|
6
|
-
import { d as defineCustomElement$
|
|
7
|
-
import { d as defineCustomElement$
|
|
8
|
-
import { d as defineCustomElement$
|
|
3
|
+
import { d as defineCustomElement$9 } from './stencil-icon-button2.js';
|
|
4
|
+
import { d as defineCustomElement$8 } from './udp-ambient-tool-tip2.js';
|
|
5
|
+
import { d as defineCustomElement$7 } from './udp-badge2.js';
|
|
6
|
+
import { d as defineCustomElement$6 } from './udp-button2.js';
|
|
7
|
+
import { d as defineCustomElement$5 } from './udp-icon2.js';
|
|
8
|
+
import { d as defineCustomElement$4 } from './udp-linear-loader2.js';
|
|
9
|
+
import { d as defineCustomElement$3 } from './udp-menu-item2.js';
|
|
10
|
+
import { d as defineCustomElement$2 } from './udp-pop-over2.js';
|
|
9
11
|
import { d as defineCustomElement$1 } from './unity-typography2.js';
|
|
10
12
|
|
|
11
|
-
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-
|
|
13
|
+
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;}";
|
|
12
14
|
|
|
13
15
|
const UdpSideSheet = /*@__PURE__*/ proxyCustomElement(class UdpSideSheet extends H {
|
|
14
16
|
constructor(registerHost) {
|
|
@@ -20,62 +22,251 @@ const UdpSideSheet = /*@__PURE__*/ proxyCustomElement(class UdpSideSheet extends
|
|
|
20
22
|
this.udpSideSheetClose = createEvent(this, "udpSideSheetClose");
|
|
21
23
|
this.udpPrimaryButtonClick = createEvent(this, "udpPrimaryButtonClick");
|
|
22
24
|
this.udpHeaderActionButtonClick = createEvent(this, "udpHeaderActionButtonClick");
|
|
25
|
+
/** When true, the side sheet is open and visible */
|
|
23
26
|
this.open = false;
|
|
27
|
+
/** Position of the sheet on the screen */
|
|
24
28
|
this.position = 'right';
|
|
29
|
+
/** Width preset or a numeric pixel width */
|
|
25
30
|
this.width = 'md';
|
|
31
|
+
/** Controls whether default inner padding is applied */
|
|
26
32
|
this.padding = true;
|
|
33
|
+
/** When true, shows a top loader */
|
|
27
34
|
this.loading = false;
|
|
35
|
+
/** Whether the header action button is disabled */
|
|
28
36
|
this.headerActionButtonDisabled = false;
|
|
37
|
+
/** Whether the primary footer button is disabled */
|
|
29
38
|
this.primaryButtonDisabled = false;
|
|
39
|
+
/** Whether the footer should show the overflow "More" button */
|
|
40
|
+
this.showOverflowButton = false;
|
|
41
|
+
/** Whether the overflow popover is open */
|
|
42
|
+
this.openOverflowMenu = false;
|
|
43
|
+
this.visibleSecondaryButtons = [];
|
|
44
|
+
this.overflowSecondaryButtons = [];
|
|
45
|
+
/** Saved original document.body.overflow value to restore on close */
|
|
30
46
|
this.originalBodyOverflow = '';
|
|
47
|
+
/** Saved original document.body.paddingRight value to restore on close */
|
|
48
|
+
this.originalBodyPaddingRight = '';
|
|
49
|
+
/**
|
|
50
|
+
* Transition end handler used to remove the host element from body after close.
|
|
51
|
+
*
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
31
54
|
this.handleTransitionEnd = () => {
|
|
32
55
|
if (!this.open && this.hostEl.parentElement === document.body) {
|
|
33
56
|
document.body.removeChild(this.hostEl);
|
|
34
57
|
}
|
|
35
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Close the side sheet and emit close event.
|
|
61
|
+
*
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
36
64
|
this.onClose = () => {
|
|
37
65
|
this.open = false;
|
|
38
66
|
this.udpSideSheetClose.emit();
|
|
39
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* Backdrop click handler. Only closes when clicking the backdrop itself.
|
|
70
|
+
*
|
|
71
|
+
* @param e - MouseEvent from the backdrop click
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
this.onCloseBackdrop = (e) => {
|
|
75
|
+
if (e.target === e.currentTarget) {
|
|
76
|
+
this.onClose();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Emit primary footer button click event.
|
|
81
|
+
*
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
40
84
|
this.onPrimaryButtonClick = () => {
|
|
41
85
|
this.udpPrimaryButtonClick.emit();
|
|
42
86
|
};
|
|
43
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Emit header action button click event.
|
|
89
|
+
*
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
44
92
|
this.onHeaderActionButtonClick = () => {
|
|
45
93
|
this.udpHeaderActionButtonClick.emit();
|
|
46
94
|
};
|
|
95
|
+
/**
|
|
96
|
+
* Open overflow menu anchored to the clicked element.
|
|
97
|
+
*
|
|
98
|
+
* @param event - MouseEvent from the "More" button click
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
this.onMoreActionButtonClick = (event) => {
|
|
102
|
+
this.overflowMenuAnchor = event.currentTarget;
|
|
103
|
+
this.openOverflowMenu = true;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Close the overflow popover.
|
|
107
|
+
*
|
|
108
|
+
* @param e - optional KeyboardEvent or MouseEvent (unused)
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
this.handleCloseOverflowMenu = () => {
|
|
112
|
+
this.openOverflowMenu = false;
|
|
113
|
+
};
|
|
47
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Watcher for `open` prop. Handles portal append/removal and body scroll lock.
|
|
117
|
+
*
|
|
118
|
+
* @param newValue - new value of the `open` prop
|
|
119
|
+
* @param oldValue - previous value of the `open` prop
|
|
120
|
+
*/
|
|
48
121
|
handleOpenChange(newValue, oldValue) {
|
|
49
122
|
if (newValue === oldValue) {
|
|
50
123
|
return;
|
|
51
124
|
}
|
|
52
125
|
if (newValue) {
|
|
126
|
+
// Calculate scrollbar width before hiding it
|
|
127
|
+
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
128
|
+
// Save original values
|
|
53
129
|
this.originalBodyOverflow = document.body.style.overflow;
|
|
54
|
-
document.body.style.
|
|
130
|
+
this.originalBodyPaddingRight = document.body.style.paddingRight;
|
|
55
131
|
document.body.appendChild(this.hostEl);
|
|
132
|
+
// Add padding to compensate for scrollbar
|
|
133
|
+
if (scrollbarWidth > 0) {
|
|
134
|
+
const currentPadding = parseInt(window.getComputedStyle(document.body).paddingRight) || 0;
|
|
135
|
+
document.body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
|
|
136
|
+
}
|
|
137
|
+
document.body.style.overflow = 'hidden';
|
|
56
138
|
requestAnimationFrame(() => {
|
|
57
139
|
this.hostEl.classList.add('is-visible');
|
|
140
|
+
// Check overflow after the side sheet is visible
|
|
141
|
+
setTimeout(() => this.checkOverflow(), 50);
|
|
58
142
|
});
|
|
59
143
|
}
|
|
60
144
|
else {
|
|
61
145
|
this.hostEl.classList.remove('is-visible');
|
|
62
146
|
document.body.style.overflow = this.originalBodyOverflow;
|
|
147
|
+
document.body.style.paddingRight = this.originalBodyPaddingRight;
|
|
63
148
|
this.hostEl.addEventListener('transitionend', this.handleTransitionEnd, { once: true });
|
|
64
149
|
}
|
|
65
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Watcher for footer secondary buttons changes. Triggers overflow recalculation.
|
|
153
|
+
*/
|
|
154
|
+
handleSecondaryButtonsChange() {
|
|
155
|
+
// Recheck overflow when buttons change
|
|
156
|
+
setTimeout(() => this.checkOverflow(), 50);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Measures footer buttons in an offscreen container and sets `showOverflowButton`.
|
|
160
|
+
* Safely returns early if required refs are unavailable.
|
|
161
|
+
*/
|
|
162
|
+
checkOverflow() {
|
|
163
|
+
if (!this.footerRef || !this.measurementContainerRef) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!this.footerSecondaryButtons || this.footerSecondaryButtons.length === 0) {
|
|
167
|
+
this.showOverflowButton = false;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// Get the footer container width (minus padding)
|
|
171
|
+
const footerWidth = this.footerRef.offsetWidth;
|
|
172
|
+
const footerStyle = window.getComputedStyle(this.footerRef);
|
|
173
|
+
const footerPaddingLeft = parseFloat(footerStyle.paddingLeft);
|
|
174
|
+
const footerPaddingRight = parseFloat(footerStyle.paddingRight);
|
|
175
|
+
const availableWidth = footerWidth - footerPaddingLeft - footerPaddingRight;
|
|
176
|
+
// Measure all buttons in the hidden measurement container
|
|
177
|
+
const measurementButtons = this.measurementContainerRef.querySelectorAll('udp-button');
|
|
178
|
+
let totalWidth = 0;
|
|
179
|
+
measurementButtons.forEach((button, index) => {
|
|
180
|
+
const buttonWidth = button && button instanceof H ? button.offsetWidth : 0;
|
|
181
|
+
totalWidth += buttonWidth;
|
|
182
|
+
// Add gap spacing between buttons (except for the last one)
|
|
183
|
+
if (index < measurementButtons.length - 1) {
|
|
184
|
+
const containerStyle = window.getComputedStyle(this.measurementContainerRef);
|
|
185
|
+
const gap = parseFloat(containerStyle.gap) || 4; // Default gap from CSS
|
|
186
|
+
totalWidth += gap;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
// Add a small buffer to prevent edge cases
|
|
190
|
+
const buffer = 10;
|
|
191
|
+
const isOverflowing = totalWidth + buffer > availableWidth;
|
|
192
|
+
this.showOverflowButton = isOverflowing;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Lifecycle: componentDidLoad. Sets up ResizeObserver and initial overflow check.
|
|
196
|
+
*
|
|
197
|
+
* @private
|
|
198
|
+
*/
|
|
199
|
+
componentDidLoad() {
|
|
200
|
+
{
|
|
201
|
+
// Set up ResizeObserver to watch for footer size changes
|
|
202
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
203
|
+
this.checkOverflow();
|
|
204
|
+
});
|
|
205
|
+
// Initial check after a small delay to ensure DOM is ready
|
|
206
|
+
requestAnimationFrame(() => {
|
|
207
|
+
setTimeout(() => {
|
|
208
|
+
if (this.footerRef) {
|
|
209
|
+
this.resizeObserver.observe(this.footerRef);
|
|
210
|
+
}
|
|
211
|
+
this.checkOverflow();
|
|
212
|
+
}, 100);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Lifecycle: disconnectedCallback. Restores body styles and disconnects observers.
|
|
218
|
+
*
|
|
219
|
+
* @private
|
|
220
|
+
*/
|
|
66
221
|
disconnectedCallback() {
|
|
67
222
|
if (document.body.style.overflow === 'hidden') {
|
|
68
223
|
document.body.style.overflow = this.originalBodyOverflow;
|
|
224
|
+
document.body.style.paddingRight = this.originalBodyPaddingRight;
|
|
225
|
+
}
|
|
226
|
+
// Clean up ResizeObserver
|
|
227
|
+
if (this.resizeObserver) {
|
|
228
|
+
this.resizeObserver.disconnect();
|
|
69
229
|
}
|
|
70
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Render the component UI.
|
|
233
|
+
*
|
|
234
|
+
* @returns JSX element tree
|
|
235
|
+
* @private
|
|
236
|
+
*/
|
|
71
237
|
render() {
|
|
238
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
72
239
|
const widthClass = typeof this.width === 'number' ? 'custom-width' : this.width;
|
|
73
240
|
const sideSheetStyle = typeof this.width === 'number' ? { maxWidth: `${this.width}px` } : {};
|
|
74
|
-
|
|
241
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
242
|
+
const headerStartIcon = Boolean(this.headerActionButtonIcon) ? (h("udp-icon", { iconName: this.headerActionButtonIcon, color: "inherit" })) : undefined;
|
|
243
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
244
|
+
const overflowIcon = h("udp-icon", { key: '3262baafbf833e25e0b4d1128b24fb503d1dd157', iconName: "overflowMenuVertical", color: "inherit" });
|
|
245
|
+
return (h("div", { key: '780c5705588899683400da7bce6569ad8ce15d30', class: "backdrop", onClick: this.onCloseBackdrop }, h("div", { key: 'a68811f8a6c59239c60c048453bb63eae7ed7ee0', class: { sheet: true, [this.position]: true, [widthClass]: true }, style: sideSheetStyle }, h("div", { key: '82207996d3f164f4e4a27132a64d6ce6b82ac401', class: "title-container" }, h("div", { key: 'e29501f861893b9e61f72509c44c337e7d1a5fb1', class: "close-button" }, h("stencil-icon-button", { key: '8980a42b0d47582a0fd91998cafe5c57982e9c04',
|
|
246
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
247
|
+
icon: Close24, onClick: this.onClose, secondary: true })), h("div", { key: '6b71ecb62ed1bac4560ca3e8e4ff1f643ee98555', class: "title-text" }, h("unity-typography", { key: 'b5f420d289dd23f040100d82def0ff635038cafd', variant: "h6" }, this.title)), (this.headerActionButtonLabel || ((_a = this.headerSecondaryButtons) === null || _a === void 0 ? void 0 : _a.length) > 0) && (h("div", { key: '65b8198f2a63096839fa678b6b69761ea2a93196', class: "header-action-button" }, (_b = this.headerSecondaryButtons) === null || _b === void 0 ? void 0 :
|
|
248
|
+
_b.map((item) => (h("udp-button", { variant: "outlined", disabled: item.disabled, onClick: item.onClick, endIcon: item.icon }, item.label))), this.headerActionButtonLabel && (h("udp-button", { key: 'a9985bcd675163a0a3dc47ea88cfe35e98a830fb', disabled: this.headerActionButtonDisabled, onClick: this.onHeaderActionButtonClick,
|
|
249
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
250
|
+
startIcon: headerStartIcon, variant: "contained" }, this.headerActionButtonLabel))))), h("div", { key: '362358edc955be022239e6662a0403baf49a4444', class: "loader-container" }, h("udp-linear-loader", { key: '0f93c37fc52e8400fbdb2d0db0879b49eb605859', class: { 'is-loading': this.loading }, color: "primary" })), h("div", { key: 'a2e70b272eb6f02878845350b7057908fdbb0cb2', class: { content: true, padding: this.padding } }, h("slot", { key: 'c6128fac4e8549fda3c25db826ed0377759a3bbb' })), (this.primaryButtonLabel || ((_c = this.footerSecondaryButtons) === null || _c === void 0 ? void 0 : _c.length) > 0) && (h("div", { key: '2d408d1f87df636effab01487739762b52c8897f' }, h("div", { key: '2fbdee5102a9837cc26d3f0cafb37141ebcc1527', class: "loader-container" }), h("div", { key: '8ba75738ab5ac6c4d33f828988f2d1e85ae1e3d5', class: {
|
|
251
|
+
footer: true,
|
|
252
|
+
}, ref: el => (this.footerRef = el) }, !this.showOverflowButton && ((_d = this.footerSecondaryButtons) === null || _d === void 0 ? void 0 : _d.length) > 0 && (h("div", { key: '13c00f7ff092655600f11885ce39d9acd4b9b26a', class: "footer-secondary-buttons-container" }, h("div", { key: '9bc81711a693c84bdab3274e67588193dc226203', class: "footer-secondary-buttons" }, (_e = this.footerSecondaryButtons) === null || _e === void 0 ? void 0 : _e.map((item) => (h("udp-button", { variant: "outlined", disabled: item.disabled, onClick: item.onClick, endIcon: item.icon }, item.label)))))), this.showOverflowButton && (h("udp-button", { key: '92c871d74675c9fd42ac890d9c5efe8e39a6aeb2', variant: "outlined", onClick: this.onMoreActionButtonClick, color: "secondary",
|
|
253
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
254
|
+
endIcon: overflowIcon }, "More")), this.primaryButtonLabel && (h("udp-button", { key: '94acda01904ab4265ced91dd6ef6e6d9ab788784', variant: "contained", disabled: this.primaryButtonDisabled, onClick: this.onPrimaryButtonClick, endIcon: this.primaryButtonIcon }, this.primaryButtonLabel)), this.showOverflowButton && (h("udp-pop-over", { key: 'c839371b5401fb7433417cba6b705c08c2242c09', anchorElement: this.overflowMenuAnchor, isOpen: this.openOverflowMenu, popoverWidth: '200px', popoverMaxHeight: '300px', handleOnClose: this.handleCloseOverflowMenu }, h("div", { key: '368023d9643a123acfa8215dab9ceaa85e613fbf', class: "menu" }, (_f = this.footerSecondaryButtons) === null || _f === void 0 ? void 0 : _f.map(item => (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: () => {
|
|
255
|
+
item === null || item === void 0 ? void 0 : item.onClick();
|
|
256
|
+
this.handleCloseOverflowMenu();
|
|
257
|
+
}, disabled: item === null || item === void 0 ? void 0 : item.disabled })))))), h("div", { key: '2dfb53eb181826fce129e856a4427da9edaeb756', ref: el => (this.measurementContainerRef = el), style: {
|
|
258
|
+
position: 'absolute',
|
|
259
|
+
visibility: 'hidden',
|
|
260
|
+
pointerEvents: 'none',
|
|
261
|
+
display: 'flex',
|
|
262
|
+
gap: 'var(--spacing-02, 4px)',
|
|
263
|
+
}, "aria-hidden": "true" }, (_g = this.footerSecondaryButtons) === null || _g === void 0 ? void 0 :
|
|
264
|
+
_g.map((item) => (h("udp-button", { variant: "text", size: "medium", disabled: item.disabled, endIcon: item.icon }, item.label))), this.primaryButtonLabel && (h("udp-button", { key: '5e6f99245f8649cbacfee9c34a88967966c2e856', variant: "contained", size: "medium", disabled: this.primaryButtonDisabled, endIcon: this.primaryButtonIcon }, this.primaryButtonLabel)))))))));
|
|
75
265
|
}
|
|
76
266
|
get hostEl() { return this; }
|
|
77
267
|
static get watchers() { return {
|
|
78
|
-
"open": ["handleOpenChange"]
|
|
268
|
+
"open": ["handleOpenChange"],
|
|
269
|
+
"footerSecondaryButtons": ["handleSecondaryButtonsChange"]
|
|
79
270
|
}; }
|
|
80
271
|
static get style() { return udpSideSheetCss; }
|
|
81
272
|
}, [257, "udp-side-sheet", {
|
|
@@ -88,17 +279,25 @@ const UdpSideSheet = /*@__PURE__*/ proxyCustomElement(class UdpSideSheet extends
|
|
|
88
279
|
"headerActionButtonLabel": [1, "header-action-button-label"],
|
|
89
280
|
"headerActionButtonDisabled": [4, "header-action-button-disabled"],
|
|
90
281
|
"headerActionButtonIcon": [1, "header-action-button-icon"],
|
|
282
|
+
"headerSecondaryButtons": [16],
|
|
91
283
|
"primaryButtonLabel": [1, "primary-button-label"],
|
|
92
284
|
"primaryButtonDisabled": [4, "primary-button-disabled"],
|
|
93
|
-
"primaryButtonIcon": [1, "primary-button-icon"]
|
|
285
|
+
"primaryButtonIcon": [1, "primary-button-icon"],
|
|
286
|
+
"footerSecondaryButtons": [16],
|
|
287
|
+
"showOverflowButton": [32],
|
|
288
|
+
"openOverflowMenu": [32],
|
|
289
|
+
"overflowMenuAnchor": [32],
|
|
290
|
+
"visibleSecondaryButtons": [32],
|
|
291
|
+
"overflowSecondaryButtons": [32]
|
|
94
292
|
}, undefined, {
|
|
95
|
-
"open": ["handleOpenChange"]
|
|
293
|
+
"open": ["handleOpenChange"],
|
|
294
|
+
"footerSecondaryButtons": ["handleSecondaryButtonsChange"]
|
|
96
295
|
}]);
|
|
97
296
|
function defineCustomElement() {
|
|
98
297
|
if (typeof customElements === "undefined") {
|
|
99
298
|
return;
|
|
100
299
|
}
|
|
101
|
-
const components = ["udp-side-sheet", "stencil-icon-button", "udp-ambient-tool-tip", "udp-badge", "udp-button", "udp-icon", "udp-linear-loader", "unity-typography"];
|
|
300
|
+
const components = ["udp-side-sheet", "stencil-icon-button", "udp-ambient-tool-tip", "udp-badge", "udp-button", "udp-icon", "udp-linear-loader", "udp-menu-item", "udp-pop-over", "unity-typography"];
|
|
102
301
|
components.forEach(tagName => { switch (tagName) {
|
|
103
302
|
case "udp-side-sheet":
|
|
104
303
|
if (!customElements.get(tagName)) {
|
|
@@ -107,30 +306,40 @@ function defineCustomElement() {
|
|
|
107
306
|
break;
|
|
108
307
|
case "stencil-icon-button":
|
|
109
308
|
if (!customElements.get(tagName)) {
|
|
110
|
-
defineCustomElement$
|
|
309
|
+
defineCustomElement$9();
|
|
111
310
|
}
|
|
112
311
|
break;
|
|
113
312
|
case "udp-ambient-tool-tip":
|
|
114
313
|
if (!customElements.get(tagName)) {
|
|
115
|
-
defineCustomElement$
|
|
314
|
+
defineCustomElement$8();
|
|
116
315
|
}
|
|
117
316
|
break;
|
|
118
317
|
case "udp-badge":
|
|
119
318
|
if (!customElements.get(tagName)) {
|
|
120
|
-
defineCustomElement$
|
|
319
|
+
defineCustomElement$7();
|
|
121
320
|
}
|
|
122
321
|
break;
|
|
123
322
|
case "udp-button":
|
|
124
323
|
if (!customElements.get(tagName)) {
|
|
125
|
-
defineCustomElement$
|
|
324
|
+
defineCustomElement$6();
|
|
126
325
|
}
|
|
127
326
|
break;
|
|
128
327
|
case "udp-icon":
|
|
129
328
|
if (!customElements.get(tagName)) {
|
|
130
|
-
defineCustomElement$
|
|
329
|
+
defineCustomElement$5();
|
|
131
330
|
}
|
|
132
331
|
break;
|
|
133
332
|
case "udp-linear-loader":
|
|
333
|
+
if (!customElements.get(tagName)) {
|
|
334
|
+
defineCustomElement$4();
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
case "udp-menu-item":
|
|
338
|
+
if (!customElements.get(tagName)) {
|
|
339
|
+
defineCustomElement$3();
|
|
340
|
+
}
|
|
341
|
+
break;
|
|
342
|
+
case "udp-pop-over":
|
|
134
343
|
if (!customElements.get(tagName)) {
|
|
135
344
|
defineCustomElement$2();
|
|
136
345
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"udp-side-sheet2.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["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 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"],"version":3}
|
|
1
|
+
{"file":"udp-side-sheet2.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["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 {\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"],"version":3}
|