@carbon/web-components 2.59.0 → 2.60.0
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/custom-elements.json +54 -1
- package/es/_virtual/{_@oxc-project_runtime@0.135.0 → _@oxc-project_runtime@0.139.0}/helpers/esm/decorate.js +2 -2
- package/es/components/accordion/accordion-item-skeleton.js +1 -1
- package/es/components/accordion/accordion-item.d.ts +4 -1
- package/es/components/accordion/accordion-item.d.ts.map +1 -1
- package/es/components/accordion/accordion-item.js +4 -7
- package/es/components/accordion/accordion-item.js.map +1 -1
- package/es/components/accordion/accordion-skeleton.d.ts +4 -1
- package/es/components/accordion/accordion-skeleton.d.ts.map +1 -1
- package/es/components/accordion/accordion-skeleton.js +5 -7
- package/es/components/accordion/accordion-skeleton.js.map +1 -1
- package/es/components/accordion/accordion.js +1 -1
- package/es/components/ai-label/ai-label-action-button.js +1 -1
- package/es/components/ai-label/ai-label.js +1 -1
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/ai-label/ai-label.scss.js.map +1 -1
- package/es/components/ai-skeleton/ai-skeleton-icon.js +1 -1
- package/es/components/ai-skeleton/ai-skeleton-placeholder.js +1 -1
- package/es/components/ai-skeleton/ai-skeleton-text.js +1 -1
- package/es/components/badge-indicator/badge-indicator.js +1 -1
- package/es/components/breadcrumb/breadcrumb-item.js +1 -1
- package/es/components/breadcrumb/breadcrumb-link.js +1 -1
- package/es/components/breadcrumb/breadcrumb-overflow-menu.js +1 -1
- package/es/components/breadcrumb/breadcrumb-skeleton.js +1 -1
- package/es/components/breadcrumb/breadcrumb.js +1 -1
- package/es/components/button/button-set-base.js +1 -1
- package/es/components/button/button-set.js +1 -1
- package/es/components/button/button-skeleton.js +3 -3
- package/es/components/button/button-skeleton.js.map +1 -1
- package/es/components/button/button.js +1 -1
- package/es/components/button/button.scss.js +1 -1
- package/es/components/chat-button/chat-button-skeleton.js +1 -1
- package/es/components/chat-button/chat-button.js +1 -1
- package/es/components/checkbox/checkbox-group.js +1 -1
- package/es/components/checkbox/checkbox-skeleton.js +1 -1
- package/es/components/checkbox/checkbox.js +1 -1
- package/es/components/code-snippet/code-snippet-skeleton.js +1 -1
- package/es/components/code-snippet/code-snippet.d.ts +11 -0
- package/es/components/code-snippet/code-snippet.d.ts.map +1 -1
- package/es/components/code-snippet/code-snippet.js +30 -20
- package/es/components/code-snippet/code-snippet.js.map +1 -1
- package/es/components/code-snippet/code-snippet.scss.js +1 -1
- package/es/components/combo-box/combo-box-item.js +1 -1
- package/es/components/combo-box/combo-box.d.ts.map +1 -1
- package/es/components/combo-box/combo-box.js +16 -12
- package/es/components/combo-box/combo-box.js.map +1 -1
- package/es/components/combo-button/combo-button.js +1 -1
- package/es/components/contained-list/contained-list-description.js +1 -1
- package/es/components/contained-list/contained-list-item.js +1 -1
- package/es/components/contained-list/contained-list.js +1 -1
- package/es/components/content-switcher/content-switcher-item.d.ts +4 -0
- package/es/components/content-switcher/content-switcher-item.d.ts.map +1 -1
- package/es/components/content-switcher/content-switcher-item.js +4 -3
- package/es/components/content-switcher/content-switcher-item.js.map +1 -1
- package/es/components/content-switcher/content-switcher.js +1 -1
- package/es/components/content-switcher/content-switcher.scss.js +1 -1
- package/es/components/content-switcher/content-switcher.scss.js.map +1 -1
- package/es/components/copy/copy.js +1 -1
- package/es/components/copy-button/copy-button.js +1 -1
- package/es/components/copy-button/copy-button.scss.js +1 -1
- package/es/components/data-table/table-batch-actions.js +1 -1
- package/es/components/data-table/table-body.js +1 -1
- package/es/components/data-table/table-cell-content.js +1 -1
- package/es/components/data-table/table-cell.js +1 -1
- package/es/components/data-table/table-expanded-row.js +1 -1
- package/es/components/data-table/table-head.js +1 -1
- package/es/components/data-table/table-header-cell.js +1 -1
- package/es/components/data-table/table-header-description.js +1 -1
- package/es/components/data-table/table-header-row.js +1 -1
- package/es/components/data-table/table-header-title.js +1 -1
- package/es/components/data-table/table-row.js +1 -1
- package/es/components/data-table/table-skeleton.js +1 -1
- package/es/components/data-table/table-toolbar-content.js +1 -1
- package/es/components/data-table/table-toolbar-search.js +1 -1
- package/es/components/data-table/table-toolbar.js +1 -1
- package/es/components/data-table/table.js +1 -1
- package/es/components/date-picker/date-picker-input-skeleton.js +1 -1
- package/es/components/date-picker/date-picker-input.js +1 -1
- package/es/components/date-picker/date-picker.js +1 -1
- package/es/components/dialog/dialog-body.js +1 -1
- package/es/components/dialog/dialog-close-button.js +1 -1
- package/es/components/dialog/dialog-controls.js +1 -1
- package/es/components/dialog/dialog-footer-button.js +1 -1
- package/es/components/dialog/dialog-footer.js +1 -1
- package/es/components/dialog/dialog-header.js +1 -1
- package/es/components/dialog/dialog-subtitle.js +1 -1
- package/es/components/dialog/dialog-title.js +1 -1
- package/es/components/dialog/dialog.js +1 -1
- package/es/components/dropdown/dropdown-item.js +1 -1
- package/es/components/dropdown/dropdown-skeleton.js +1 -1
- package/es/components/dropdown/dropdown.js +2 -2
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/feature-flags/index.d.ts +39 -4
- package/es/components/feature-flags/index.d.ts.map +1 -1
- package/es/components/feature-flags/index.js +44 -7
- package/es/components/feature-flags/index.js.map +1 -1
- package/es/components/file-uploader/demo-file-uploader.js +1 -1
- package/es/components/file-uploader/file-uploader-button.js +1 -1
- package/es/components/file-uploader/file-uploader-drop-container.js +1 -1
- package/es/components/file-uploader/file-uploader-item.js +1 -1
- package/es/components/file-uploader/file-uploader-skeleton.js +1 -1
- package/es/components/file-uploader/file-uploader.js +1 -1
- package/es/components/floating-menu/floating-menu.js +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box-skeleton.js +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box.js +1 -1
- package/es/components/fluid-dropdown/fluid-dropdown-skeleton.js +1 -1
- package/es/components/fluid-dropdown/fluid-dropdown.js +1 -1
- package/es/components/fluid-form/fluid-form.js +1 -1
- package/es/components/fluid-multi-select/fluid-multi-select-skeleton.js +1 -1
- package/es/components/fluid-multi-select/fluid-multi-select.js +1 -1
- package/es/components/fluid-number-input/fluid-number-input-skeleton.js +1 -1
- package/es/components/fluid-number-input/fluid-number-input.js +1 -1
- package/es/components/fluid-password-input/fluid-password-input.js +1 -1
- package/es/components/fluid-search/fluid-search-skeleton.js +1 -1
- package/es/components/fluid-search/fluid-search.js +1 -1
- package/es/components/fluid-select/fluid-select-skeleton.js +1 -1
- package/es/components/fluid-select/fluid-select.js +1 -1
- package/es/components/fluid-text-input/fluid-text-input-skeleton.js +1 -1
- package/es/components/fluid-text-input/fluid-text-input.js +1 -1
- package/es/components/fluid-textarea/fluid-textarea-skeleton.js +1 -1
- package/es/components/fluid-textarea/fluid-textarea.js +1 -1
- package/es/components/fluid-time-picker/fluid-time-picker-select.js +1 -1
- package/es/components/fluid-time-picker/fluid-time-picker-skeleton.js +1 -1
- package/es/components/fluid-time-picker/fluid-time-picker.js +1 -1
- package/es/components/form/form-item.js +1 -1
- package/es/components/form/form.js +1 -1
- package/es/components/form-group/form-group.js +1 -1
- package/es/components/grid/column-hang.js +1 -1
- package/es/components/grid/column.js +1 -1
- package/es/components/grid/grid.js +1 -1
- package/es/components/heading/heading.js +1 -1
- package/es/components/icon/icon.js +1 -1
- package/es/components/icon-button/icon-button.js +1 -1
- package/es/components/icon-indicator/icon-indicator.js +1 -1
- package/es/components/inline-loading/inline-loading.js +1 -1
- package/es/components/layer/layer.js +1 -1
- package/es/components/layout/layout-constraint.js +1 -1
- package/es/components/layout/layout.js +1 -1
- package/es/components/link/link.js +1 -1
- package/es/components/list/list-item.js +1 -1
- package/es/components/list/ordered-list.js +1 -1
- package/es/components/list/unordered-list.js +1 -1
- package/es/components/loading/loading.js +1 -1
- package/es/components/menu/menu-item-divider.js +1 -1
- package/es/components/menu/menu-item-group.js +1 -1
- package/es/components/menu/menu-item-radio-group.js +1 -1
- package/es/components/menu/menu-item-selectable.js +1 -1
- package/es/components/menu/menu-item.js +1 -1
- package/es/components/menu/menu.js +1 -1
- package/es/components/menu-button/menu-button.js +1 -1
- package/es/components/modal/modal-base.js +1 -1
- package/es/components/modal/modal-body-content.js +1 -1
- package/es/components/modal/modal-body.js +1 -1
- package/es/components/modal/modal-close-button.js +1 -1
- package/es/components/modal/modal-footer-button.js +1 -1
- package/es/components/modal/modal-footer.js +1 -1
- package/es/components/modal/modal-header.js +1 -1
- package/es/components/modal/modal-heading.js +1 -1
- package/es/components/modal/modal-label.js +1 -1
- package/es/components/modal/modal.js +1 -1
- package/es/components/multi-select/multi-select-item.js +1 -1
- package/es/components/multi-select/multi-select.js +1 -1
- package/es/components/notification/actionable-notification-button.js +1 -1
- package/es/components/notification/actionable-notification.js +1 -1
- package/es/components/notification/actionable-notification.scss.js +1 -1
- package/es/components/notification/actionable-notification.scss.js.map +1 -1
- package/es/components/notification/callout-notification.js +1 -1
- package/es/components/notification/inline-notification.js +2 -2
- package/es/components/notification/inline-notification.js.map +1 -1
- package/es/components/notification/inline-notification.scss.js +1 -1
- package/es/components/notification/toast-notification.js +1 -1
- package/es/components/notification/toast-notification.scss.js +1 -1
- package/es/components/number-input/number-input-skeleton.js +1 -1
- package/es/components/number-input/number-input.js +1 -1
- package/es/components/overflow-menu/overflow-menu-body.js +1 -1
- package/es/components/overflow-menu/overflow-menu-item.js +1 -1
- package/es/components/overflow-menu/overflow-menu.js +2 -2
- package/es/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es/components/page-header/page-header-breadcrumb.js +1 -1
- package/es/components/page-header/page-header-content-text.js +1 -1
- package/es/components/page-header/page-header-content.js +1 -1
- package/es/components/page-header/page-header-hero-image.js +1 -1
- package/es/components/page-header/page-header-tabs.js +1 -1
- package/es/components/page-header/page-header.js +1 -1
- package/es/components/pagination/pagination.js +1 -1
- package/es/components/pagination-nav/pagination-nav.js +1 -1
- package/es/components/password-input/password-input-skeleton.js +1 -1
- package/es/components/password-input/password-input.js +1 -1
- package/es/components/popover/popover-content.js +1 -1
- package/es/components/popover/popover.d.ts.map +1 -1
- package/es/components/popover/popover.js +20 -1
- package/es/components/popover/popover.js.map +1 -1
- package/es/components/progress-bar/progress-bar.js +1 -1
- package/es/components/progress-indicator/progress-indicator-skeleton.js +1 -1
- package/es/components/progress-indicator/progress-indicator.js +1 -1
- package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es/components/progress-indicator/progress-step-skeleton.js +1 -1
- package/es/components/progress-indicator/progress-step.js +1 -1
- package/es/components/radio-button/radio-button-group.js +1 -1
- package/es/components/radio-button/radio-button-skeleton.js +1 -1
- package/es/components/radio-button/radio-button.js +1 -1
- package/es/components/search/search-skeleton.js +1 -1
- package/es/components/search/search.js +1 -1
- package/es/components/select/select-item-group.js +1 -1
- package/es/components/select/select-item.js +1 -1
- package/es/components/select/select-skeleton.js +1 -1
- package/es/components/select/select.js +1 -1
- package/es/components/shape-indicator/shape-indicator.js +1 -1
- package/es/components/side-panel/side-panel.js +5 -3
- package/es/components/side-panel/side-panel.js.map +1 -1
- package/es/components/skeleton-icon/skeleton-icon.js +1 -1
- package/es/components/skeleton-placeholder/skeleton-placeholder.js +1 -1
- package/es/components/skeleton-text/skeleton-text.js +1 -1
- package/es/components/skip-to-content/skip-to-content.js +1 -1
- package/es/components/slider/slider-input.js +1 -1
- package/es/components/slider/slider-skeleton.js +1 -1
- package/es/components/slider/slider.js +1 -1
- package/es/components/slug/slug-action-button.js +1 -1
- package/es/components/slug/slug.js +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/stack/stack.js +1 -1
- package/es/components/structured-list/structured-list-body.js +1 -1
- package/es/components/structured-list/structured-list-cell.js +1 -1
- package/es/components/structured-list/structured-list-head.js +1 -1
- package/es/components/structured-list/structured-list-header-cell-skeleton.js +1 -1
- package/es/components/structured-list/structured-list-header-cell.js +1 -1
- package/es/components/structured-list/structured-list-header-row.js +1 -1
- package/es/components/structured-list/structured-list-row.js +1 -1
- package/es/components/structured-list/structured-list.js +1 -1
- package/es/components/tabs/stories/tabs-wrapper.js +1 -1
- package/es/components/tabs/tab-skeleton.js +1 -1
- package/es/components/tabs/tab.js +1 -1
- package/es/components/tabs/tabs-skeleton.js +1 -1
- package/es/components/tabs/tabs-vertical.js +1 -1
- package/es/components/tabs/tabs.js +2 -2
- package/es/components/tabs/tabs.js.map +1 -1
- package/es/components/tag/dismissible-tag.js +1 -1
- package/es/components/tag/operational-tag.js +1 -1
- package/es/components/tag/selectable-tag.js +1 -1
- package/es/components/tag/tag-skeleton.js +1 -1
- package/es/components/tag/tag.js +1 -1
- package/es/components/tearsheet/tearsheet.js +1 -1
- package/es/components/text-input/text-input-skeleton.js +1 -1
- package/es/components/text-input/text-input.js +1 -1
- package/es/components/textarea/textarea-skeleton.js +1 -1
- package/es/components/textarea/textarea.js +1 -1
- package/es/components/tile/clickable-tile.js +1 -1
- package/es/components/tile/expandable-tile.js +1 -1
- package/es/components/tile/radio-tile.js +1 -1
- package/es/components/tile/selectable-tile.js +1 -1
- package/es/components/tile/tile-group.js +1 -1
- package/es/components/tile/tile.js +1 -1
- package/es/components/time-picker/time-picker-select.js +1 -1
- package/es/components/time-picker/time-picker.js +1 -1
- package/es/components/toggle/toggle-skeleton.js +1 -1
- package/es/components/toggle/toggle.js +1 -1
- package/es/components/toggle-tip/toggletip.js +1 -1
- package/es/components/tooltip/definition-tooltip.js +1 -1
- package/es/components/tooltip/tooltip-content.js +1 -1
- package/es/components/tooltip/tooltip.js +1 -1
- package/es/components/tree-view/tree-node.js +1 -1
- package/es/components/tree-view/tree-view.js +1 -1
- package/es/components/ui-shell/header-global-action.js +1 -1
- package/es/components/ui-shell/header-menu-button.js +1 -1
- package/es/components/ui-shell/header-menu-item.js +1 -1
- package/es/components/ui-shell/header-menu.js +1 -1
- package/es/components/ui-shell/header-name.js +1 -1
- package/es/components/ui-shell/header-nav-item.js +1 -1
- package/es/components/ui-shell/header-nav.js +1 -1
- package/es/components/ui-shell/header-panel.js +1 -1
- package/es/components/ui-shell/header-side-nav-items.js +1 -1
- package/es/components/ui-shell/header.js +1 -1
- package/es/components/ui-shell/side-nav-divider.js +1 -1
- package/es/components/ui-shell/side-nav-items.js +1 -1
- package/es/components/ui-shell/side-nav-link.js +1 -1
- package/es/components/ui-shell/side-nav-menu-item.js +1 -1
- package/es/components/ui-shell/side-nav-menu.js +1 -1
- package/es/components/ui-shell/side-nav.js +1 -1
- package/es/components/ui-shell/switcher-divider.js +1 -1
- package/es/components/ui-shell/switcher-item.js +1 -1
- package/es/components/ui-shell/switcher.js +1 -1
- package/es/node_modules/flatpickr/dist/esm/l10n/default.js +1 -1
- package/es/packages/feature-flags/es/index.js +42 -2
- package/es/packages/feature-flags/es/index.js.map +1 -1
- package/es-custom/_virtual/{_@oxc-project_runtime@0.135.0 → _@oxc-project_runtime@0.139.0}/helpers/esm/decorate.js +2 -2
- package/es-custom/components/accordion/accordion-item-skeleton.js +1 -1
- package/es-custom/components/accordion/accordion-item.d.ts +4 -1
- package/es-custom/components/accordion/accordion-item.d.ts.map +1 -1
- package/es-custom/components/accordion/accordion-item.js +4 -7
- package/es-custom/components/accordion/accordion-item.js.map +1 -1
- package/es-custom/components/accordion/accordion-skeleton.d.ts +4 -1
- package/es-custom/components/accordion/accordion-skeleton.d.ts.map +1 -1
- package/es-custom/components/accordion/accordion-skeleton.js +5 -7
- package/es-custom/components/accordion/accordion-skeleton.js.map +1 -1
- package/es-custom/components/accordion/accordion.js +1 -1
- package/es-custom/components/ai-label/ai-label-action-button.js +1 -1
- package/es-custom/components/ai-label/ai-label.js +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js.map +1 -1
- package/es-custom/components/ai-skeleton/ai-skeleton-icon.js +1 -1
- package/es-custom/components/ai-skeleton/ai-skeleton-placeholder.js +1 -1
- package/es-custom/components/ai-skeleton/ai-skeleton-text.js +1 -1
- package/es-custom/components/badge-indicator/badge-indicator.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-item.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-link.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-skeleton.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.js +1 -1
- package/es-custom/components/button/button-set-base.js +1 -1
- package/es-custom/components/button/button-set.js +1 -1
- package/es-custom/components/button/button-skeleton.js +3 -3
- package/es-custom/components/button/button-skeleton.js.map +1 -1
- package/es-custom/components/button/button.js +1 -1
- package/es-custom/components/button/button.scss.js +1 -1
- package/es-custom/components/chat-button/chat-button-skeleton.js +1 -1
- package/es-custom/components/chat-button/chat-button.js +1 -1
- package/es-custom/components/checkbox/checkbox-group.js +1 -1
- package/es-custom/components/checkbox/checkbox-skeleton.js +1 -1
- package/es-custom/components/checkbox/checkbox.js +1 -1
- package/es-custom/components/code-snippet/code-snippet-skeleton.js +1 -1
- package/es-custom/components/code-snippet/code-snippet.d.ts +11 -0
- package/es-custom/components/code-snippet/code-snippet.d.ts.map +1 -1
- package/es-custom/components/code-snippet/code-snippet.js +30 -20
- package/es-custom/components/code-snippet/code-snippet.js.map +1 -1
- package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
- package/es-custom/components/combo-box/combo-box-item.js +1 -1
- package/es-custom/components/combo-box/combo-box.d.ts.map +1 -1
- package/es-custom/components/combo-box/combo-box.js +16 -12
- package/es-custom/components/combo-box/combo-box.js.map +1 -1
- package/es-custom/components/combo-button/combo-button.js +1 -1
- package/es-custom/components/contained-list/contained-list-description.js +1 -1
- package/es-custom/components/contained-list/contained-list-item.js +1 -1
- package/es-custom/components/contained-list/contained-list.js +1 -1
- package/es-custom/components/content-switcher/content-switcher-item.d.ts +4 -0
- package/es-custom/components/content-switcher/content-switcher-item.d.ts.map +1 -1
- package/es-custom/components/content-switcher/content-switcher-item.js +4 -3
- package/es-custom/components/content-switcher/content-switcher-item.js.map +1 -1
- package/es-custom/components/content-switcher/content-switcher.js +1 -1
- package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
- package/es-custom/components/content-switcher/content-switcher.scss.js.map +1 -1
- package/es-custom/components/copy/copy.js +1 -1
- package/es-custom/components/copy-button/copy-button.js +1 -1
- package/es-custom/components/copy-button/copy-button.scss.js +1 -1
- package/es-custom/components/data-table/table-batch-actions.js +1 -1
- package/es-custom/components/data-table/table-body.js +1 -1
- package/es-custom/components/data-table/table-cell-content.js +1 -1
- package/es-custom/components/data-table/table-cell.js +1 -1
- package/es-custom/components/data-table/table-expanded-row.js +1 -1
- package/es-custom/components/data-table/table-head.js +1 -1
- package/es-custom/components/data-table/table-header-cell.js +1 -1
- package/es-custom/components/data-table/table-header-description.js +1 -1
- package/es-custom/components/data-table/table-header-row.js +1 -1
- package/es-custom/components/data-table/table-header-title.js +1 -1
- package/es-custom/components/data-table/table-row.js +1 -1
- package/es-custom/components/data-table/table-skeleton.js +1 -1
- package/es-custom/components/data-table/table-toolbar-content.js +1 -1
- package/es-custom/components/data-table/table-toolbar-search.js +1 -1
- package/es-custom/components/data-table/table-toolbar.js +1 -1
- package/es-custom/components/data-table/table.js +1 -1
- package/es-custom/components/date-picker/date-picker-input-skeleton.js +1 -1
- package/es-custom/components/date-picker/date-picker-input.js +1 -1
- package/es-custom/components/date-picker/date-picker.js +1 -1
- package/es-custom/components/dialog/dialog-body.js +1 -1
- package/es-custom/components/dialog/dialog-close-button.js +1 -1
- package/es-custom/components/dialog/dialog-controls.js +1 -1
- package/es-custom/components/dialog/dialog-footer-button.js +1 -1
- package/es-custom/components/dialog/dialog-footer.js +1 -1
- package/es-custom/components/dialog/dialog-header.js +1 -1
- package/es-custom/components/dialog/dialog-subtitle.js +1 -1
- package/es-custom/components/dialog/dialog-title.js +1 -1
- package/es-custom/components/dialog/dialog.js +1 -1
- package/es-custom/components/dropdown/dropdown-item.js +1 -1
- package/es-custom/components/dropdown/dropdown-skeleton.js +1 -1
- package/es-custom/components/dropdown/dropdown.js +2 -2
- package/es-custom/components/dropdown/dropdown.js.map +1 -1
- package/es-custom/components/feature-flags/index.d.ts +39 -4
- package/es-custom/components/feature-flags/index.d.ts.map +1 -1
- package/es-custom/components/feature-flags/index.js +44 -7
- package/es-custom/components/feature-flags/index.js.map +1 -1
- package/es-custom/components/file-uploader/demo-file-uploader.js +1 -1
- package/es-custom/components/file-uploader/file-uploader-button.js +1 -1
- package/es-custom/components/file-uploader/file-uploader-drop-container.js +1 -1
- package/es-custom/components/file-uploader/file-uploader-item.js +1 -1
- package/es-custom/components/file-uploader/file-uploader-skeleton.js +1 -1
- package/es-custom/components/file-uploader/file-uploader.js +1 -1
- package/es-custom/components/floating-menu/floating-menu.js +1 -1
- package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.js +1 -1
- package/es-custom/components/fluid-combo-box/fluid-combo-box.js +1 -1
- package/es-custom/components/fluid-dropdown/fluid-dropdown-skeleton.js +1 -1
- package/es-custom/components/fluid-dropdown/fluid-dropdown.js +1 -1
- package/es-custom/components/fluid-form/fluid-form.js +1 -1
- package/es-custom/components/fluid-multi-select/fluid-multi-select-skeleton.js +1 -1
- package/es-custom/components/fluid-multi-select/fluid-multi-select.js +1 -1
- package/es-custom/components/fluid-number-input/fluid-number-input-skeleton.js +1 -1
- package/es-custom/components/fluid-number-input/fluid-number-input.js +1 -1
- package/es-custom/components/fluid-password-input/fluid-password-input.js +1 -1
- package/es-custom/components/fluid-search/fluid-search-skeleton.js +1 -1
- package/es-custom/components/fluid-search/fluid-search.js +1 -1
- package/es-custom/components/fluid-select/fluid-select-skeleton.js +1 -1
- package/es-custom/components/fluid-select/fluid-select.js +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input-skeleton.js +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input.js +1 -1
- package/es-custom/components/fluid-textarea/fluid-textarea-skeleton.js +1 -1
- package/es-custom/components/fluid-textarea/fluid-textarea.js +1 -1
- package/es-custom/components/fluid-time-picker/fluid-time-picker-select.js +1 -1
- package/es-custom/components/fluid-time-picker/fluid-time-picker-skeleton.js +1 -1
- package/es-custom/components/fluid-time-picker/fluid-time-picker.js +1 -1
- package/es-custom/components/form/form-item.js +1 -1
- package/es-custom/components/form/form.js +1 -1
- package/es-custom/components/form-group/form-group.js +1 -1
- package/es-custom/components/grid/column-hang.js +1 -1
- package/es-custom/components/grid/column.js +1 -1
- package/es-custom/components/grid/grid.js +1 -1
- package/es-custom/components/heading/heading.js +1 -1
- package/es-custom/components/icon/icon.js +1 -1
- package/es-custom/components/icon-button/icon-button.js +1 -1
- package/es-custom/components/icon-indicator/icon-indicator.js +1 -1
- package/es-custom/components/inline-loading/inline-loading.js +1 -1
- package/es-custom/components/layer/layer.js +1 -1
- package/es-custom/components/layout/layout-constraint.js +1 -1
- package/es-custom/components/layout/layout.js +1 -1
- package/es-custom/components/link/link.js +1 -1
- package/es-custom/components/list/list-item.js +1 -1
- package/es-custom/components/list/ordered-list.js +1 -1
- package/es-custom/components/list/unordered-list.js +1 -1
- package/es-custom/components/loading/loading.js +1 -1
- package/es-custom/components/menu/menu-item-divider.js +1 -1
- package/es-custom/components/menu/menu-item-group.js +1 -1
- package/es-custom/components/menu/menu-item-radio-group.js +1 -1
- package/es-custom/components/menu/menu-item-selectable.js +1 -1
- package/es-custom/components/menu/menu-item.js +1 -1
- package/es-custom/components/menu/menu.js +1 -1
- package/es-custom/components/menu-button/menu-button.js +1 -1
- package/es-custom/components/modal/modal-base.js +1 -1
- package/es-custom/components/modal/modal-body-content.js +1 -1
- package/es-custom/components/modal/modal-body.js +1 -1
- package/es-custom/components/modal/modal-close-button.js +1 -1
- package/es-custom/components/modal/modal-footer-button.js +1 -1
- package/es-custom/components/modal/modal-footer.js +1 -1
- package/es-custom/components/modal/modal-header.js +1 -1
- package/es-custom/components/modal/modal-heading.js +1 -1
- package/es-custom/components/modal/modal-label.js +1 -1
- package/es-custom/components/modal/modal.js +1 -1
- package/es-custom/components/multi-select/multi-select-item.js +1 -1
- package/es-custom/components/multi-select/multi-select.js +1 -1
- package/es-custom/components/notification/actionable-notification-button.js +1 -1
- package/es-custom/components/notification/actionable-notification.js +1 -1
- package/es-custom/components/notification/actionable-notification.scss.js +1 -1
- package/es-custom/components/notification/actionable-notification.scss.js.map +1 -1
- package/es-custom/components/notification/callout-notification.js +1 -1
- package/es-custom/components/notification/inline-notification.js +2 -2
- package/es-custom/components/notification/inline-notification.js.map +1 -1
- package/es-custom/components/notification/inline-notification.scss.js +1 -1
- package/es-custom/components/notification/toast-notification.js +1 -1
- package/es-custom/components/notification/toast-notification.scss.js +1 -1
- package/es-custom/components/number-input/number-input-skeleton.js +1 -1
- package/es-custom/components/number-input/number-input.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-body.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-item.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.js +2 -2
- package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es-custom/components/page-header/page-header-breadcrumb.js +1 -1
- package/es-custom/components/page-header/page-header-content-text.js +1 -1
- package/es-custom/components/page-header/page-header-content.js +1 -1
- package/es-custom/components/page-header/page-header-hero-image.js +1 -1
- package/es-custom/components/page-header/page-header-tabs.js +1 -1
- package/es-custom/components/page-header/page-header.js +1 -1
- package/es-custom/components/pagination/pagination.js +1 -1
- package/es-custom/components/pagination-nav/pagination-nav.js +1 -1
- package/es-custom/components/password-input/password-input-skeleton.js +1 -1
- package/es-custom/components/password-input/password-input.js +1 -1
- package/es-custom/components/popover/popover-content.js +1 -1
- package/es-custom/components/popover/popover.d.ts.map +1 -1
- package/es-custom/components/popover/popover.js +20 -1
- package/es-custom/components/popover/popover.js.map +1 -1
- package/es-custom/components/progress-bar/progress-bar.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator-skeleton.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-step-skeleton.js +1 -1
- package/es-custom/components/progress-indicator/progress-step.js +1 -1
- package/es-custom/components/radio-button/radio-button-group.js +1 -1
- package/es-custom/components/radio-button/radio-button-skeleton.js +1 -1
- package/es-custom/components/radio-button/radio-button.js +1 -1
- package/es-custom/components/search/search-skeleton.js +1 -1
- package/es-custom/components/search/search.js +1 -1
- package/es-custom/components/select/select-item-group.js +1 -1
- package/es-custom/components/select/select-item.js +1 -1
- package/es-custom/components/select/select-skeleton.js +1 -1
- package/es-custom/components/select/select.js +1 -1
- package/es-custom/components/shape-indicator/shape-indicator.js +1 -1
- package/es-custom/components/side-panel/side-panel.js +5 -3
- package/es-custom/components/side-panel/side-panel.js.map +1 -1
- package/es-custom/components/skeleton-icon/skeleton-icon.js +1 -1
- package/es-custom/components/skeleton-placeholder/skeleton-placeholder.js +1 -1
- package/es-custom/components/skeleton-text/skeleton-text.js +1 -1
- package/es-custom/components/skip-to-content/skip-to-content.js +1 -1
- package/es-custom/components/slider/slider-input.js +1 -1
- package/es-custom/components/slider/slider-skeleton.js +1 -1
- package/es-custom/components/slider/slider.js +1 -1
- package/es-custom/components/slug/slug-action-button.js +1 -1
- package/es-custom/components/slug/slug.js +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/stack/stack.js +1 -1
- package/es-custom/components/structured-list/structured-list-body.js +1 -1
- package/es-custom/components/structured-list/structured-list-cell.js +1 -1
- package/es-custom/components/structured-list/structured-list-head.js +1 -1
- package/es-custom/components/structured-list/structured-list-header-cell-skeleton.js +1 -1
- package/es-custom/components/structured-list/structured-list-header-cell.js +1 -1
- package/es-custom/components/structured-list/structured-list-header-row.js +1 -1
- package/es-custom/components/structured-list/structured-list-row.js +1 -1
- package/es-custom/components/structured-list/structured-list.js +1 -1
- package/es-custom/components/tabs/stories/tabs-wrapper.js +1 -1
- package/es-custom/components/tabs/tab-skeleton.js +1 -1
- package/es-custom/components/tabs/tab.js +1 -1
- package/es-custom/components/tabs/tabs-skeleton.js +1 -1
- package/es-custom/components/tabs/tabs-vertical.js +1 -1
- package/es-custom/components/tabs/tabs.js +2 -2
- package/es-custom/components/tabs/tabs.js.map +1 -1
- package/es-custom/components/tag/dismissible-tag.js +1 -1
- package/es-custom/components/tag/operational-tag.js +1 -1
- package/es-custom/components/tag/selectable-tag.js +1 -1
- package/es-custom/components/tag/tag-skeleton.js +1 -1
- package/es-custom/components/tag/tag.js +1 -1
- package/es-custom/components/tearsheet/tearsheet.js +1 -1
- package/es-custom/components/text-input/text-input-skeleton.js +1 -1
- package/es-custom/components/text-input/text-input.js +1 -1
- package/es-custom/components/textarea/textarea-skeleton.js +1 -1
- package/es-custom/components/textarea/textarea.js +1 -1
- package/es-custom/components/tile/clickable-tile.js +1 -1
- package/es-custom/components/tile/expandable-tile.js +1 -1
- package/es-custom/components/tile/radio-tile.js +1 -1
- package/es-custom/components/tile/selectable-tile.js +1 -1
- package/es-custom/components/tile/tile-group.js +1 -1
- package/es-custom/components/tile/tile.js +1 -1
- package/es-custom/components/time-picker/time-picker-select.js +1 -1
- package/es-custom/components/time-picker/time-picker.js +1 -1
- package/es-custom/components/toggle/toggle-skeleton.js +1 -1
- package/es-custom/components/toggle/toggle.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.js +1 -1
- package/es-custom/components/tooltip/definition-tooltip.js +1 -1
- package/es-custom/components/tooltip/tooltip-content.js +1 -1
- package/es-custom/components/tooltip/tooltip.js +1 -1
- package/es-custom/components/tree-view/tree-node.js +1 -1
- package/es-custom/components/tree-view/tree-view.js +1 -1
- package/es-custom/components/ui-shell/header-global-action.js +1 -1
- package/es-custom/components/ui-shell/header-menu-button.js +1 -1
- package/es-custom/components/ui-shell/header-menu-item.js +1 -1
- package/es-custom/components/ui-shell/header-menu.js +1 -1
- package/es-custom/components/ui-shell/header-name.js +1 -1
- package/es-custom/components/ui-shell/header-nav-item.js +1 -1
- package/es-custom/components/ui-shell/header-nav.js +1 -1
- package/es-custom/components/ui-shell/header-panel.js +1 -1
- package/es-custom/components/ui-shell/header-side-nav-items.js +1 -1
- package/es-custom/components/ui-shell/header.js +1 -1
- package/es-custom/components/ui-shell/side-nav-divider.js +1 -1
- package/es-custom/components/ui-shell/side-nav-items.js +1 -1
- package/es-custom/components/ui-shell/side-nav-link.js +1 -1
- package/es-custom/components/ui-shell/side-nav-menu-item.js +1 -1
- package/es-custom/components/ui-shell/side-nav-menu.js +1 -1
- package/es-custom/components/ui-shell/side-nav.js +1 -1
- package/es-custom/components/ui-shell/switcher-divider.js +1 -1
- package/es-custom/components/ui-shell/switcher-item.js +1 -1
- package/es-custom/components/ui-shell/switcher.js +1 -1
- package/es-custom/node_modules/flatpickr/dist/esm/l10n/default.js +1 -1
- package/es-custom/packages/feature-flags/es/index.js +42 -2
- package/es-custom/packages/feature-flags/es/index.js.map +1 -1
- package/lib/components/accordion/accordion-item.d.ts +4 -1
- package/lib/components/accordion/accordion-item.d.ts.map +1 -1
- package/lib/components/accordion/accordion-skeleton.d.ts +4 -1
- package/lib/components/accordion/accordion-skeleton.d.ts.map +1 -1
- package/lib/components/code-snippet/code-snippet.d.ts +11 -0
- package/lib/components/code-snippet/code-snippet.d.ts.map +1 -1
- package/lib/components/combo-box/combo-box.d.ts.map +1 -1
- package/lib/components/content-switcher/content-switcher-item.d.ts +4 -0
- package/lib/components/content-switcher/content-switcher-item.d.ts.map +1 -1
- package/lib/components/feature-flags/index.d.ts +39 -4
- package/lib/components/feature-flags/index.d.ts.map +1 -1
- package/lib/components/popover/popover.d.ts.map +1 -1
- package/package.json +7 -7
- package/scss/components/ai-label/ai-label.scss +7 -5
- package/scss/components/content-switcher/content-switcher.scss +14 -7
- package/scss/components/notification/actionable-notification.scss +11 -4
- package/telemetry.yml +10 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import "../text-input/defs.js";
|
|
12
12
|
import "../text-input/text-input.js";
|
|
13
13
|
import number_input_default from "./number-input.scss.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
12
|
import if_non_empty_default from "../../globals/directives/if-non-empty.js";
|
|
13
13
|
import "../text-input/defs.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { indexOf } from "../../globals/internal/collection-helpers.js";
|
|
10
10
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
11
|
-
import
|
|
11
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
12
12
|
import HostListener from "../../globals/decorators/host-listener.js";
|
|
13
13
|
import { NAVIGATION_DIRECTION } from "./defs.js";
|
|
14
14
|
import overflow_menu_default from "./overflow-menu.scss.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import FocusMixin from "../../globals/mixins/focus.js";
|
|
12
12
|
import "./defs.js";
|
|
13
13
|
import overflow_menu_default from "./overflow-menu.scss.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { find } from "../../globals/internal/collection-helpers.js";
|
|
10
10
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
11
|
-
import
|
|
11
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
12
12
|
import FocusMixin from "../../globals/mixins/focus.js";
|
|
13
13
|
import HostListenerMixin from "../../globals/mixins/host-listener.js";
|
|
14
14
|
import FloatingController from "../../globals/controllers/floating-controller.js";
|
|
@@ -30,7 +30,7 @@ import { property, query } from "lit/decorators.js";
|
|
|
30
30
|
* LICENSE file in the root directory of this source tree.
|
|
31
31
|
*/
|
|
32
32
|
const menuItemTagPrefix = `cds-custom-menu-item`.toUpperCase();
|
|
33
|
-
const deprecatedOverflowMenuTagNames = new Set([`cds-custom-overflow-menu-body`.toUpperCase(), `cds-custom-overflow-menu-item`.toUpperCase()]);
|
|
33
|
+
const deprecatedOverflowMenuTagNames = /* @__PURE__ */ new Set([`cds-custom-overflow-menu-body`.toUpperCase(), `cds-custom-overflow-menu-item`.toUpperCase()]);
|
|
34
34
|
const bottomFirstFallbackPlacements = [
|
|
35
35
|
"bottom-start",
|
|
36
36
|
"bottom-end",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overflow-menu.js","names":["CDSIconButton","FloatingUIController","iconButtonStyles","styles","CDSMenu","customElement"],"sources":["../../../src/components/overflow-menu/overflow-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { adoptStyles, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport FocusMixin from '../../globals/mixins/focus';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { find } from '../../globals/internal/collection-helpers';\nimport CDSFloatingMenuTrigger from '../floating-menu/floating-menu-trigger';\nimport { OVERFLOW_MENU_SIZE } from './defs';\nimport CDSOverflowMenuBody from './overflow-menu-body';\nimport '../menu/index';\nimport CDSMenu from '../menu/menu';\nimport { MENU_SIZE } from '../menu/defs';\nimport { isFeatureFlagEnabled } from '../feature-flags/index';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\n\nimport iconButtonStyles from '../icon-button/icon-button.scss?lit';\nimport styles from './overflow-menu.scss?lit';\nimport CDSIconButton from '../icon-button/icon-button';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { OVERFLOW_MENU_SIZE };\n\nconst menuItemTagPrefix = `${prefix}-menu-item`.toUpperCase();\n\n// Migration support for existing child structure.\nconst deprecatedOverflowMenuTagNames = new Set([\n `${prefix}-overflow-menu-body`.toUpperCase(),\n `${prefix}-overflow-menu-item`.toUpperCase(),\n]);\n\nconst bottomFirstFallbackPlacements = [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n] as const;\n\nconst topFirstFallbackPlacements = [\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n] as const;\n\nconst warnInDev = (message: string) => {\n if (process.env.NODE_ENV === 'development') {\n globalThis.console?.warn(message);\n }\n};\n\n/**\n * Overflow menu.\n *\n * @element cds-custom-overflow-menu\n * @slot icon - The icon for the trigger button.\n */\n@customElement(`${prefix}-overflow-menu`)\nclass CDSOverflowMenu\n extends HostListenerMixin(FocusMixin(CDSIconButton))\n implements CDSFloatingMenuTrigger\n{\n private _menuController = new FloatingUIController(this);\n\n /**\n * The tooltip element in the shadow DOM.\n */\n @query(`${prefix}-tooltip`)\n private _tooltip?: HTMLElement;\n\n /**\n * The tooltip content element in the shadow DOM.\n */\n @query(`${prefix}-tooltip-content`)\n private _tooltipContent?: HTMLElement;\n\n /**\n * The menu body.\n */\n private _menuBody: CDSOverflowMenuBody | null = null;\n\n /**\n * The identifier used by the popup surface.\n */\n private _menuId = `${prefix}-overflow-menu-${Math.random()\n .toString(16)\n .slice(2)}`;\n\n /**\n * Ensures the deprecated-child warning only fires once.\n */\n private _didWarnDeprecatedChildren = false;\n\n /**\n * Ensures the invalid menu composition warning only fires once.\n */\n private _didWarnInvalidComposition = false;\n\n /**\n * Monotonic token used to ignore stale async menu sync callbacks.\n */\n private _menuSyncToken = 0;\n\n /**\n * Handles user-initiated toggling of the menu.\n */\n private async _handleUserInitiatedToggle() {\n if (this.disabled) {\n return;\n }\n\n this.open = !this.open;\n const { index, open, updateComplete } = this;\n if (open) {\n await updateComplete;\n\n if (this._isMenuCompositionEnabled()) {\n await this._focusManagedMenuItem(index);\n return;\n }\n\n const { _menuBody: menuBody } = this;\n const menuItem = menuBody?.querySelector(\n `${prefix}-overflow-menu-item:nth-of-type(${index})`\n ) as HTMLElement;\n menuItem?.focus();\n }\n }\n\n /**\n * Handles `click` event on the trigger button.\n */\n private _handleClickTrigger = async (event: MouseEvent) => {\n if (this._isTriggerEvent(event)) {\n this._handleUserInitiatedToggle();\n return;\n }\n\n if (\n !this._isMenuCompositionEnabled() &&\n this._isDeprecatedOverflowMenuItemEvent(event)\n ) {\n this.open = false;\n }\n };\n\n /**\n * Handles `keydown` event on the trigger button.\n */\n private _handleKeydownTrigger = async (event: KeyboardEvent) => {\n if (!this._isTriggerEvent(event)) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n this._handleUserInitiatedToggle();\n event.preventDefault();\n }\n };\n\n /**\n * Prevents the trigger click from immediately re-opening the menu after blur.\n */\n private _handleMousedownTrigger = (event: MouseEvent) => {\n if (this._isMenuCompositionEnabled() && this._isTriggerEvent(event)) {\n event.preventDefault();\n }\n };\n\n /**\n * Handles close requests emitted by the managed menu.\n */\n private _handleManagedMenuClose = (\n event: CustomEvent<{ triggerEventType?: string }>\n ) => {\n const menu = this._getMenuChild();\n if (\n !this._isMenuCompositionEnabled() ||\n !menu ||\n event.composedPath()[0] !== menu\n ) {\n return;\n }\n\n this.open = false;\n\n if (event.detail?.triggerEventType !== 'focusout') {\n requestAnimationFrame(() => {\n this._getTriggerButton()?.focus();\n });\n }\n };\n\n /**\n * `true` if this tooltip is in a data table row\n */\n @property({ type: Boolean, reflect: true, attribute: 'data-table' })\n dataTable = false;\n\n /**\n * `true` if this overflow menu should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Enables the menu-composition OverflowMenu implementation leveraging `cds-custom-menu`.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'enable-v12-overflowmenu',\n })\n enableV12Overflowmenu = false;\n\n /**\n * `true` if this overflow menu body should be flipped.\n */\n @property({ type: Boolean, reflect: true })\n flipped = false;\n\n /**\n * Experimental property. Enables automatic menu placement flipping to avoid clipping.\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * `true` if the dropdown should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Index (starting at 1) of overflow menu item to focus on open.\n */\n @property()\n index = 1;\n\n /**\n * A label describing the menu options. Used for the trigger tooltip and the menu's accessible label.\n */\n @property({ type: String })\n label = '';\n\n /**\n * Specify how the menu should align with the trigger button.\n * Valid values: 'bottom-start', 'bottom-end', 'top-start', 'top-end'\n */\n @property({ type: String, attribute: 'menu-alignment' })\n menuAlignment: string = 'bottom-start';\n\n /**\n * Overflow menu size.\n */\n @property({ reflect: true })\n size?: OVERFLOW_MENU_SIZE | string = undefined;\n\n /**\n * `true` if this menu is a toolbar action\n */\n @property({ type: Boolean, attribute: 'toolbar-action', reflect: true })\n toolbarAction = false;\n\n /**\n * `true` if this overflow menu use inside breadcrumb.\n */\n @property({ type: Boolean, reflect: true })\n breadcrumb = false;\n\n /**\n * @returns The position of the trigger button in the viewport.\n */\n get triggerPosition() {\n return this.getBoundingClientRect();\n }\n\n /**\n * Delegates host focus to the trigger and preserves visible focus when needed.\n */\n focus(options?: FocusOptions): void {\n const triggerButton = this._getTriggerButton();\n if (!triggerButton) {\n HTMLElement.prototype.focus.call(this, options);\n return;\n }\n\n HTMLElement.prototype.focus.call(this, options);\n\n if (this.shadowRoot?.activeElement !== triggerButton) {\n triggerButton.focus(options);\n }\n\n if (this.shadowRoot?.activeElement !== triggerButton) {\n return;\n }\n\n if (triggerButton.matches(':focus')) {\n return;\n }\n\n // Some browsers do not expose `:focus` or emit `focus` for the tooltip\n // trigger after delegated programmatic focus.\n triggerButton.dispatchEvent(new FocusEvent('focus'));\n this.toggleAttribute('data-programmatic-focus', true);\n triggerButton.addEventListener('blur', this._handleTriggerBlur, {\n once: true,\n });\n this.ownerDocument.addEventListener(\n 'pointerdown',\n this._handleDocumentInteraction,\n true\n );\n this.ownerDocument.addEventListener(\n 'focusin',\n this._handleDocumentInteraction,\n true\n );\n }\n\n private _handleTriggerBlur = () => {\n this._clearProgrammaticFocus();\n };\n\n private _handleDocumentInteraction = (event: Event) => {\n const triggerButton = this._getTriggerButton();\n if (!triggerButton || !event.composedPath().includes(triggerButton)) {\n this._clearProgrammaticFocus();\n }\n };\n\n private _clearProgrammaticFocus() {\n const triggerButton = this._getTriggerButton();\n const hadProgrammaticFocus = this.hasAttribute('data-programmatic-focus');\n\n this.toggleAttribute('data-programmatic-focus', false);\n triggerButton?.removeEventListener('blur', this._handleTriggerBlur);\n this.ownerDocument.removeEventListener(\n 'pointerdown',\n this._handleDocumentInteraction,\n true\n );\n this.ownerDocument.removeEventListener(\n 'focusin',\n this._handleDocumentInteraction,\n true\n );\n\n if (hadProgrammaticFocus) {\n triggerButton?.dispatchEvent(new FocusEvent('focusout'));\n }\n }\n\n connectedCallback() {\n if (!this.hasAttribute('aria-haspopup')) {\n this.setAttribute('aria-haspopup', 'true');\n }\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n super.connectedCallback();\n\n adoptStyles(this.renderRoot as ShadowRoot, [iconButtonStyles, styles]);\n\n this.addEventListener(\n CDSMenu.eventOnClose,\n this._handleManagedMenuClose as EventListener\n );\n this.addEventListener('click', this._handleClickTrigger);\n this.addEventListener('keydown', this._handleKeydownTrigger);\n this.addEventListener('mousedown', this._handleMousedownTrigger);\n }\n\n disconnectedCallback() {\n this.removeEventListener(\n CDSMenu.eventOnClose,\n this._handleManagedMenuClose as EventListener\n );\n this.removeEventListener('click', this._handleClickTrigger);\n this.removeEventListener('keydown', this._handleKeydownTrigger);\n this.removeEventListener('mousedown', this._handleMousedownTrigger);\n this._clearProgrammaticFocus();\n super.disconnectedCallback();\n }\n\n protected _renderTooltipContent() {\n const tooltipLabel = this._getLabelText();\n\n if (this.label || !this.querySelector('[slot=tooltip-content]')) {\n return html`\n <cds-custom-tooltip-content ?hidden=${this.disabled || this.open}>\n ${tooltipLabel}\n </cds-custom-tooltip-content>\n `;\n }\n\n return super._renderTooltipContent();\n }\n\n updated(changedProperties) {\n super.updated(changedProperties);\n const menuCompositionEnabled = this._isMenuCompositionEnabled();\n\n const button = this._tooltip?.querySelector('button');\n button?.classList.add(\n `${prefix}--btn--icon-only`,\n `${prefix}--overflow-menu`\n );\n\n if (changedProperties.has('open')) {\n if (!menuCompositionEnabled) {\n this._menuController.hostDisconnected();\n this._resetMenuChildFloatingStyles();\n const { open } = this;\n if (open && !this._menuBody) {\n this._menuBody = find(\n this.childNodes,\n (elem) =>\n (elem.constructor as typeof CDSOverflowMenuBody).FLOATING_MENU\n );\n }\n const { _menuBody: menuBody, size } = this;\n if (menuBody) {\n menuBody.id ||= this._menuId;\n menuBody.setAttribute('breadcrumb', String(this.breadcrumb));\n menuBody.open = open;\n menuBody.size = size as OVERFLOW_MENU_SIZE;\n }\n }\n }\n\n if (\n changedProperties.has('enableV12Overflowmenu') &&\n !menuCompositionEnabled\n ) {\n this._menuController.hostDisconnected();\n this._resetMenuChildFloatingStyles({ closeMenu: true });\n }\n\n if (changedProperties.has('dataTable')) {\n this._tooltip?.toggleAttribute('data-table', this.dataTable);\n }\n\n if (changedProperties.has('size')) {\n button?.classList.forEach((item) => {\n if (item.startsWith(`${prefix}--overflow-menu--`)) {\n button?.classList.remove(item);\n }\n });\n this.classList.forEach((item) => {\n if (item.startsWith(`${prefix}--layout--size-`)) {\n this.classList.remove(item);\n }\n });\n\n if (this.size) {\n button?.classList.add(`${prefix}--overflow-menu--${this.size}`); // TODO: V12 - Remove this class\n this.classList.add(`${prefix}--layout--size-${this.size}`);\n }\n\n if (this.size) {\n this._tooltip?.setAttribute('size', this.size);\n } else {\n this._tooltip?.removeAttribute('size');\n }\n\n if (this._menuBody) {\n this._menuBody.size = this.size as OVERFLOW_MENU_SIZE;\n }\n }\n\n if (changedProperties.has('toolbarAction') && this.toolbarAction) {\n this._tooltip?.setAttribute('toolbar-action', '');\n }\n\n const labelText = this._getLabelText();\n const popupId = menuCompositionEnabled\n ? (this._getMenuChild()?.id ?? this._menuId)\n : this._menuBody?.id;\n\n button?.setAttribute('aria-haspopup', 'menu');\n button?.setAttribute('aria-expanded', String(this.open));\n button?.setAttribute('aria-label', labelText);\n\n if (this.open && popupId) {\n button?.setAttribute('aria-controls', popupId);\n } else {\n button?.removeAttribute('aria-controls');\n }\n\n const shouldSyncMenuChild =\n menuCompositionEnabled &&\n (changedProperties.has('open') ||\n changedProperties.has('label') ||\n changedProperties.has('autoalign') ||\n changedProperties.has('menuAlignment') ||\n changedProperties.has('size') ||\n changedProperties.has('enableV12Overflowmenu'));\n\n if (shouldSyncMenuChild) {\n this._syncMenuChild();\n }\n\n if (changedProperties.has('open') || changedProperties.has('disabled')) {\n this._syncTriggerTooltipState();\n }\n }\n\n render() {\n return html`${super.render()} `;\n }\n\n private _getLabelText() {\n if (this.label) return this.label;\n\n const tooltipContent = this.querySelector(\n '[slot=tooltip-content]'\n )?.textContent?.trim();\n\n return tooltipContent || 'Options';\n }\n\n private _getTriggerButton() {\n return this._tooltip?.querySelector('button') as HTMLButtonElement | null;\n }\n\n private _isTriggerEvent(event: Event) {\n const triggerButton = this._getTriggerButton();\n\n return !!triggerButton && event.composedPath().includes(triggerButton);\n }\n\n private _isDeprecatedOverflowMenuItemEvent(event: Event) {\n return event\n .composedPath()\n .some(\n (entry) =>\n entry instanceof HTMLElement &&\n deprecatedOverflowMenuTagNames.has(entry.tagName)\n );\n }\n\n /**\n * Checks whether the menu-composition path is enabled.\n */\n private _isMenuCompositionEnabled() {\n return (\n this.enableV12Overflowmenu ||\n isFeatureFlagEnabled('enable-v12-overflowmenu', this)\n );\n }\n\n /**\n * Checks whether floating styles should be driven by Floating UI.\n */\n private _usesDynamicFloatingStyles() {\n return (\n this.autoalign ||\n isFeatureFlagEnabled('enable-v12-dynamic-floating-styles', this)\n );\n }\n\n private _getMenuChild() {\n return (Array.from(this.children).find((child) => {\n return child.tagName === `${prefix}-menu`.toUpperCase();\n }) ?? null) as CDSMenu | null;\n }\n\n private _warnDeprecatedChildren() {\n if (this._didWarnDeprecatedChildren) {\n return;\n }\n\n // Migration guard for flagged usage of deprecated overflow-menu children.\n const hasDeprecatedChildren = Array.from(this.children).some((child) => {\n return deprecatedOverflowMenuTagNames.has(child.tagName);\n });\n\n if (hasDeprecatedChildren) {\n warnInDev(\n '`cds-custom-overflow-menu` with `enable-v12-overflowmenu` expects a direct `cds-custom-menu` child instead of the deprecated `cds-custom-overflow-menu-body` structure.'\n );\n this._didWarnDeprecatedChildren = true;\n }\n }\n\n private _warnInvalidMenuComposition() {\n if (this._didWarnInvalidComposition) {\n return;\n }\n\n const hasDirectMenuItems = Array.from(this.children).some((child) =>\n child.tagName.startsWith(menuItemTagPrefix)\n );\n const hasMenuChild = !!this._getMenuChild();\n\n if (!hasMenuChild || hasDirectMenuItems) {\n warnInDev(\n '`cds-custom-overflow-menu` with `enable-v12-overflowmenu` expects a direct `cds-custom-menu` child. Place `cds-custom-menu-item*` descendants inside that `cds-custom-menu`.'\n );\n this._didWarnInvalidComposition = true;\n }\n }\n\n private _syncMenuChild() {\n const menuSyncToken = ++this._menuSyncToken;\n\n this._warnDeprecatedChildren();\n this._warnInvalidMenuComposition();\n\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n const menuAlignment = this.menuAlignment;\n\n menu.id ||= this._menuId;\n menu.label = this._getLabelText();\n menu.menuAlignment = menuAlignment;\n this._syncMenuChildPosition(menu);\n menu.open = this.open;\n menu.size = this._toMenuSize(this.size);\n\n const shouldUseFloatingStyles = this._usesDynamicFloatingStyles();\n\n if (!this.open || !shouldUseFloatingStyles) {\n this._menuController.hostDisconnected();\n this._resetMenuFloatingStyles(menu);\n return;\n }\n\n this.updateComplete.then(async () => {\n if (\n menuSyncToken !== this._menuSyncToken ||\n !this.open ||\n !this._isMenuCompositionEnabled() ||\n this._getMenuChild() !== menu\n ) {\n return;\n }\n\n await menu.updateComplete;\n if (\n menuSyncToken !== this._menuSyncToken ||\n !this.open ||\n !this._isMenuCompositionEnabled() ||\n this._getMenuChild() !== menu\n ) {\n return;\n }\n\n const trigger = this._getTriggerButton();\n if (!trigger) {\n return;\n }\n\n const styleElement = menu.shadowRoot?.querySelector(\n `.${prefix}--menu`\n ) as HTMLElement | undefined;\n\n const fallbackPlacements = menuAlignment.includes('bottom')\n ? [...bottomFirstFallbackPlacements]\n : [...topFirstFallbackPlacements];\n\n const flipArguments = this.autoalign\n ? {\n fallbackPlacements,\n }\n : {\n mainAxis: false,\n crossAxis: false,\n };\n\n this._menuController.setPlacement({\n trigger,\n target: menu,\n alignment: menuAlignment,\n styleElement,\n flipArguments,\n mainAxisOffset: 0,\n open: this.open,\n });\n });\n }\n\n private _syncMenuChildPosition(menu: CDSMenu) {\n const trigger = this._getTriggerButton();\n if (!trigger) {\n return;\n }\n\n const { left, right, top, bottom } = trigger.getBoundingClientRect();\n menu.x = [left, right];\n menu.y = [top, bottom];\n }\n\n private _toMenuSize(\n size: OVERFLOW_MENU_SIZE | string | undefined\n ): CDSMenu['size'] {\n switch (size) {\n case OVERFLOW_MENU_SIZE.EXTRA_SMALL:\n return MENU_SIZE.EXTRA_SMALL;\n case OVERFLOW_MENU_SIZE.SMALL:\n return MENU_SIZE.SMALL;\n case OVERFLOW_MENU_SIZE.MEDIUM:\n return MENU_SIZE.MEDIUM;\n case OVERFLOW_MENU_SIZE.LARGE:\n return MENU_SIZE.LARGE;\n default:\n // TODO: Remove fallback to `md` when contextual layout token support\n // is implemented for `cds-custom-menu`.\n return MENU_SIZE.MEDIUM;\n }\n }\n\n private async _focusManagedMenuItem(index: number) {\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n await menu.updateComplete;\n\n if (!this.open || this._getMenuChild() !== menu) {\n return;\n }\n\n const enabledItems = menu.activeitems\n .map(({ item }) => item)\n .filter(\n (item) => item instanceof HTMLElement && !item.hasAttribute('disabled')\n );\n const focusTarget = enabledItems[index - 1] ?? enabledItems[0];\n\n focusTarget?.focus();\n }\n\n private _resetMenuChildFloatingStyles({\n closeMenu = false,\n }: { closeMenu?: boolean } = {}) {\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n this._resetMenuFloatingStyles(menu);\n\n if (closeMenu) {\n menu.open = false;\n }\n }\n\n private _resetMenuFloatingStyles(menu: CDSMenu) {\n const menuSurface = menu.shadowRoot?.querySelector(`.${prefix}--menu`) as\n | HTMLElement\n | undefined;\n\n if (!menuSurface) {\n return;\n }\n\n menuSurface.style.removeProperty('left');\n menuSurface.style.removeProperty('top');\n menuSurface.style.removeProperty('position');\n menuSurface.style.removeProperty('visibility');\n menuSurface.removeAttribute('align');\n }\n\n /**\n * Suppresses trigger tooltip interactions while the menu is open.\n */\n private _syncTriggerTooltipState() {\n const tooltip = this._tooltip as\n | (HTMLElement & { open?: boolean; keyboardOnly?: boolean })\n | undefined;\n\n if (!tooltip) {\n return;\n }\n\n tooltip.keyboardOnly = this.open;\n this._tooltipContent?.toggleAttribute('hidden', this.disabled || this.open);\n\n if (this.open) {\n tooltip.open = false;\n }\n }\n}\n\nexport default CDSOverflowMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"overflow-menu.js","names":["CDSIconButton","FloatingUIController","iconButtonStyles","styles","CDSMenu","customElement"],"sources":["../../../src/components/overflow-menu/overflow-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { adoptStyles, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport FocusMixin from '../../globals/mixins/focus';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { find } from '../../globals/internal/collection-helpers';\nimport CDSFloatingMenuTrigger from '../floating-menu/floating-menu-trigger';\nimport { OVERFLOW_MENU_SIZE } from './defs';\nimport CDSOverflowMenuBody from './overflow-menu-body';\nimport '../menu/index';\nimport CDSMenu from '../menu/menu';\nimport { MENU_SIZE } from '../menu/defs';\nimport { isFeatureFlagEnabled } from '../feature-flags/index';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\n\nimport iconButtonStyles from '../icon-button/icon-button.scss?lit';\nimport styles from './overflow-menu.scss?lit';\nimport CDSIconButton from '../icon-button/icon-button';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { OVERFLOW_MENU_SIZE };\n\nconst menuItemTagPrefix = `${prefix}-menu-item`.toUpperCase();\n\n// Migration support for existing child structure.\nconst deprecatedOverflowMenuTagNames = new Set([\n `${prefix}-overflow-menu-body`.toUpperCase(),\n `${prefix}-overflow-menu-item`.toUpperCase(),\n]);\n\nconst bottomFirstFallbackPlacements = [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n] as const;\n\nconst topFirstFallbackPlacements = [\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n] as const;\n\nconst warnInDev = (message: string) => {\n if (process.env.NODE_ENV === 'development') {\n globalThis.console?.warn(message);\n }\n};\n\n/**\n * Overflow menu.\n *\n * @element cds-custom-overflow-menu\n * @slot icon - The icon for the trigger button.\n */\n@customElement(`${prefix}-overflow-menu`)\nclass CDSOverflowMenu\n extends HostListenerMixin(FocusMixin(CDSIconButton))\n implements CDSFloatingMenuTrigger\n{\n private _menuController = new FloatingUIController(this);\n\n /**\n * The tooltip element in the shadow DOM.\n */\n @query(`${prefix}-tooltip`)\n private _tooltip?: HTMLElement;\n\n /**\n * The tooltip content element in the shadow DOM.\n */\n @query(`${prefix}-tooltip-content`)\n private _tooltipContent?: HTMLElement;\n\n /**\n * The menu body.\n */\n private _menuBody: CDSOverflowMenuBody | null = null;\n\n /**\n * The identifier used by the popup surface.\n */\n private _menuId = `${prefix}-overflow-menu-${Math.random()\n .toString(16)\n .slice(2)}`;\n\n /**\n * Ensures the deprecated-child warning only fires once.\n */\n private _didWarnDeprecatedChildren = false;\n\n /**\n * Ensures the invalid menu composition warning only fires once.\n */\n private _didWarnInvalidComposition = false;\n\n /**\n * Monotonic token used to ignore stale async menu sync callbacks.\n */\n private _menuSyncToken = 0;\n\n /**\n * Handles user-initiated toggling of the menu.\n */\n private async _handleUserInitiatedToggle() {\n if (this.disabled) {\n return;\n }\n\n this.open = !this.open;\n const { index, open, updateComplete } = this;\n if (open) {\n await updateComplete;\n\n if (this._isMenuCompositionEnabled()) {\n await this._focusManagedMenuItem(index);\n return;\n }\n\n const { _menuBody: menuBody } = this;\n const menuItem = menuBody?.querySelector(\n `${prefix}-overflow-menu-item:nth-of-type(${index})`\n ) as HTMLElement;\n menuItem?.focus();\n }\n }\n\n /**\n * Handles `click` event on the trigger button.\n */\n private _handleClickTrigger = async (event: MouseEvent) => {\n if (this._isTriggerEvent(event)) {\n this._handleUserInitiatedToggle();\n return;\n }\n\n if (\n !this._isMenuCompositionEnabled() &&\n this._isDeprecatedOverflowMenuItemEvent(event)\n ) {\n this.open = false;\n }\n };\n\n /**\n * Handles `keydown` event on the trigger button.\n */\n private _handleKeydownTrigger = async (event: KeyboardEvent) => {\n if (!this._isTriggerEvent(event)) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n this._handleUserInitiatedToggle();\n event.preventDefault();\n }\n };\n\n /**\n * Prevents the trigger click from immediately re-opening the menu after blur.\n */\n private _handleMousedownTrigger = (event: MouseEvent) => {\n if (this._isMenuCompositionEnabled() && this._isTriggerEvent(event)) {\n event.preventDefault();\n }\n };\n\n /**\n * Handles close requests emitted by the managed menu.\n */\n private _handleManagedMenuClose = (\n event: CustomEvent<{ triggerEventType?: string }>\n ) => {\n const menu = this._getMenuChild();\n if (\n !this._isMenuCompositionEnabled() ||\n !menu ||\n event.composedPath()[0] !== menu\n ) {\n return;\n }\n\n this.open = false;\n\n if (event.detail?.triggerEventType !== 'focusout') {\n requestAnimationFrame(() => {\n this._getTriggerButton()?.focus();\n });\n }\n };\n\n /**\n * `true` if this tooltip is in a data table row\n */\n @property({ type: Boolean, reflect: true, attribute: 'data-table' })\n dataTable = false;\n\n /**\n * `true` if this overflow menu should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Enables the menu-composition OverflowMenu implementation leveraging `cds-custom-menu`.\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'enable-v12-overflowmenu',\n })\n enableV12Overflowmenu = false;\n\n /**\n * `true` if this overflow menu body should be flipped.\n */\n @property({ type: Boolean, reflect: true })\n flipped = false;\n\n /**\n * Experimental property. Enables automatic menu placement flipping to avoid clipping.\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * `true` if the dropdown should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Index (starting at 1) of overflow menu item to focus on open.\n */\n @property()\n index = 1;\n\n /**\n * A label describing the menu options. Used for the trigger tooltip and the menu's accessible label.\n */\n @property({ type: String })\n label = '';\n\n /**\n * Specify how the menu should align with the trigger button.\n * Valid values: 'bottom-start', 'bottom-end', 'top-start', 'top-end'\n */\n @property({ type: String, attribute: 'menu-alignment' })\n menuAlignment: string = 'bottom-start';\n\n /**\n * Overflow menu size.\n */\n @property({ reflect: true })\n size?: OVERFLOW_MENU_SIZE | string = undefined;\n\n /**\n * `true` if this menu is a toolbar action\n */\n @property({ type: Boolean, attribute: 'toolbar-action', reflect: true })\n toolbarAction = false;\n\n /**\n * `true` if this overflow menu use inside breadcrumb.\n */\n @property({ type: Boolean, reflect: true })\n breadcrumb = false;\n\n /**\n * @returns The position of the trigger button in the viewport.\n */\n get triggerPosition() {\n return this.getBoundingClientRect();\n }\n\n /**\n * Delegates host focus to the trigger and preserves visible focus when needed.\n */\n focus(options?: FocusOptions): void {\n const triggerButton = this._getTriggerButton();\n if (!triggerButton) {\n HTMLElement.prototype.focus.call(this, options);\n return;\n }\n\n HTMLElement.prototype.focus.call(this, options);\n\n if (this.shadowRoot?.activeElement !== triggerButton) {\n triggerButton.focus(options);\n }\n\n if (this.shadowRoot?.activeElement !== triggerButton) {\n return;\n }\n\n if (triggerButton.matches(':focus')) {\n return;\n }\n\n // Some browsers do not expose `:focus` or emit `focus` for the tooltip\n // trigger after delegated programmatic focus.\n triggerButton.dispatchEvent(new FocusEvent('focus'));\n this.toggleAttribute('data-programmatic-focus', true);\n triggerButton.addEventListener('blur', this._handleTriggerBlur, {\n once: true,\n });\n this.ownerDocument.addEventListener(\n 'pointerdown',\n this._handleDocumentInteraction,\n true\n );\n this.ownerDocument.addEventListener(\n 'focusin',\n this._handleDocumentInteraction,\n true\n );\n }\n\n private _handleTriggerBlur = () => {\n this._clearProgrammaticFocus();\n };\n\n private _handleDocumentInteraction = (event: Event) => {\n const triggerButton = this._getTriggerButton();\n if (!triggerButton || !event.composedPath().includes(triggerButton)) {\n this._clearProgrammaticFocus();\n }\n };\n\n private _clearProgrammaticFocus() {\n const triggerButton = this._getTriggerButton();\n const hadProgrammaticFocus = this.hasAttribute('data-programmatic-focus');\n\n this.toggleAttribute('data-programmatic-focus', false);\n triggerButton?.removeEventListener('blur', this._handleTriggerBlur);\n this.ownerDocument.removeEventListener(\n 'pointerdown',\n this._handleDocumentInteraction,\n true\n );\n this.ownerDocument.removeEventListener(\n 'focusin',\n this._handleDocumentInteraction,\n true\n );\n\n if (hadProgrammaticFocus) {\n triggerButton?.dispatchEvent(new FocusEvent('focusout'));\n }\n }\n\n connectedCallback() {\n if (!this.hasAttribute('aria-haspopup')) {\n this.setAttribute('aria-haspopup', 'true');\n }\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n super.connectedCallback();\n\n adoptStyles(this.renderRoot as ShadowRoot, [iconButtonStyles, styles]);\n\n this.addEventListener(\n CDSMenu.eventOnClose,\n this._handleManagedMenuClose as EventListener\n );\n this.addEventListener('click', this._handleClickTrigger);\n this.addEventListener('keydown', this._handleKeydownTrigger);\n this.addEventListener('mousedown', this._handleMousedownTrigger);\n }\n\n disconnectedCallback() {\n this.removeEventListener(\n CDSMenu.eventOnClose,\n this._handleManagedMenuClose as EventListener\n );\n this.removeEventListener('click', this._handleClickTrigger);\n this.removeEventListener('keydown', this._handleKeydownTrigger);\n this.removeEventListener('mousedown', this._handleMousedownTrigger);\n this._clearProgrammaticFocus();\n super.disconnectedCallback();\n }\n\n protected _renderTooltipContent() {\n const tooltipLabel = this._getLabelText();\n\n if (this.label || !this.querySelector('[slot=tooltip-content]')) {\n return html`\n <cds-custom-tooltip-content ?hidden=${this.disabled || this.open}>\n ${tooltipLabel}\n </cds-custom-tooltip-content>\n `;\n }\n\n return super._renderTooltipContent();\n }\n\n updated(changedProperties) {\n super.updated(changedProperties);\n const menuCompositionEnabled = this._isMenuCompositionEnabled();\n\n const button = this._tooltip?.querySelector('button');\n button?.classList.add(\n `${prefix}--btn--icon-only`,\n `${prefix}--overflow-menu`\n );\n\n if (changedProperties.has('open')) {\n if (!menuCompositionEnabled) {\n this._menuController.hostDisconnected();\n this._resetMenuChildFloatingStyles();\n const { open } = this;\n if (open && !this._menuBody) {\n this._menuBody = find(\n this.childNodes,\n (elem) =>\n (elem.constructor as typeof CDSOverflowMenuBody).FLOATING_MENU\n );\n }\n const { _menuBody: menuBody, size } = this;\n if (menuBody) {\n menuBody.id ||= this._menuId;\n menuBody.setAttribute('breadcrumb', String(this.breadcrumb));\n menuBody.open = open;\n menuBody.size = size as OVERFLOW_MENU_SIZE;\n }\n }\n }\n\n if (\n changedProperties.has('enableV12Overflowmenu') &&\n !menuCompositionEnabled\n ) {\n this._menuController.hostDisconnected();\n this._resetMenuChildFloatingStyles({ closeMenu: true });\n }\n\n if (changedProperties.has('dataTable')) {\n this._tooltip?.toggleAttribute('data-table', this.dataTable);\n }\n\n if (changedProperties.has('size')) {\n button?.classList.forEach((item) => {\n if (item.startsWith(`${prefix}--overflow-menu--`)) {\n button?.classList.remove(item);\n }\n });\n this.classList.forEach((item) => {\n if (item.startsWith(`${prefix}--layout--size-`)) {\n this.classList.remove(item);\n }\n });\n\n if (this.size) {\n button?.classList.add(`${prefix}--overflow-menu--${this.size}`); // TODO: V12 - Remove this class\n this.classList.add(`${prefix}--layout--size-${this.size}`);\n }\n\n if (this.size) {\n this._tooltip?.setAttribute('size', this.size);\n } else {\n this._tooltip?.removeAttribute('size');\n }\n\n if (this._menuBody) {\n this._menuBody.size = this.size as OVERFLOW_MENU_SIZE;\n }\n }\n\n if (changedProperties.has('toolbarAction') && this.toolbarAction) {\n this._tooltip?.setAttribute('toolbar-action', '');\n }\n\n const labelText = this._getLabelText();\n const popupId = menuCompositionEnabled\n ? (this._getMenuChild()?.id ?? this._menuId)\n : this._menuBody?.id;\n\n button?.setAttribute('aria-haspopup', 'menu');\n button?.setAttribute('aria-expanded', String(this.open));\n button?.setAttribute('aria-label', labelText);\n\n if (this.open && popupId) {\n button?.setAttribute('aria-controls', popupId);\n } else {\n button?.removeAttribute('aria-controls');\n }\n\n const shouldSyncMenuChild =\n menuCompositionEnabled &&\n (changedProperties.has('open') ||\n changedProperties.has('label') ||\n changedProperties.has('autoalign') ||\n changedProperties.has('menuAlignment') ||\n changedProperties.has('size') ||\n changedProperties.has('enableV12Overflowmenu'));\n\n if (shouldSyncMenuChild) {\n this._syncMenuChild();\n }\n\n if (changedProperties.has('open') || changedProperties.has('disabled')) {\n this._syncTriggerTooltipState();\n }\n }\n\n render() {\n return html`${super.render()} `;\n }\n\n private _getLabelText() {\n if (this.label) return this.label;\n\n const tooltipContent = this.querySelector(\n '[slot=tooltip-content]'\n )?.textContent?.trim();\n\n return tooltipContent || 'Options';\n }\n\n private _getTriggerButton() {\n return this._tooltip?.querySelector('button') as HTMLButtonElement | null;\n }\n\n private _isTriggerEvent(event: Event) {\n const triggerButton = this._getTriggerButton();\n\n return !!triggerButton && event.composedPath().includes(triggerButton);\n }\n\n private _isDeprecatedOverflowMenuItemEvent(event: Event) {\n return event\n .composedPath()\n .some(\n (entry) =>\n entry instanceof HTMLElement &&\n deprecatedOverflowMenuTagNames.has(entry.tagName)\n );\n }\n\n /**\n * Checks whether the menu-composition path is enabled.\n */\n private _isMenuCompositionEnabled() {\n return (\n this.enableV12Overflowmenu ||\n isFeatureFlagEnabled('enable-v12-overflowmenu', this)\n );\n }\n\n /**\n * Checks whether floating styles should be driven by Floating UI.\n */\n private _usesDynamicFloatingStyles() {\n return (\n this.autoalign ||\n isFeatureFlagEnabled('enable-v12-dynamic-floating-styles', this)\n );\n }\n\n private _getMenuChild() {\n return (Array.from(this.children).find((child) => {\n return child.tagName === `${prefix}-menu`.toUpperCase();\n }) ?? null) as CDSMenu | null;\n }\n\n private _warnDeprecatedChildren() {\n if (this._didWarnDeprecatedChildren) {\n return;\n }\n\n // Migration guard for flagged usage of deprecated overflow-menu children.\n const hasDeprecatedChildren = Array.from(this.children).some((child) => {\n return deprecatedOverflowMenuTagNames.has(child.tagName);\n });\n\n if (hasDeprecatedChildren) {\n warnInDev(\n '`cds-custom-overflow-menu` with `enable-v12-overflowmenu` expects a direct `cds-custom-menu` child instead of the deprecated `cds-custom-overflow-menu-body` structure.'\n );\n this._didWarnDeprecatedChildren = true;\n }\n }\n\n private _warnInvalidMenuComposition() {\n if (this._didWarnInvalidComposition) {\n return;\n }\n\n const hasDirectMenuItems = Array.from(this.children).some((child) =>\n child.tagName.startsWith(menuItemTagPrefix)\n );\n const hasMenuChild = !!this._getMenuChild();\n\n if (!hasMenuChild || hasDirectMenuItems) {\n warnInDev(\n '`cds-custom-overflow-menu` with `enable-v12-overflowmenu` expects a direct `cds-custom-menu` child. Place `cds-custom-menu-item*` descendants inside that `cds-custom-menu`.'\n );\n this._didWarnInvalidComposition = true;\n }\n }\n\n private _syncMenuChild() {\n const menuSyncToken = ++this._menuSyncToken;\n\n this._warnDeprecatedChildren();\n this._warnInvalidMenuComposition();\n\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n const menuAlignment = this.menuAlignment;\n\n menu.id ||= this._menuId;\n menu.label = this._getLabelText();\n menu.menuAlignment = menuAlignment;\n this._syncMenuChildPosition(menu);\n menu.open = this.open;\n menu.size = this._toMenuSize(this.size);\n\n const shouldUseFloatingStyles = this._usesDynamicFloatingStyles();\n\n if (!this.open || !shouldUseFloatingStyles) {\n this._menuController.hostDisconnected();\n this._resetMenuFloatingStyles(menu);\n return;\n }\n\n this.updateComplete.then(async () => {\n if (\n menuSyncToken !== this._menuSyncToken ||\n !this.open ||\n !this._isMenuCompositionEnabled() ||\n this._getMenuChild() !== menu\n ) {\n return;\n }\n\n await menu.updateComplete;\n if (\n menuSyncToken !== this._menuSyncToken ||\n !this.open ||\n !this._isMenuCompositionEnabled() ||\n this._getMenuChild() !== menu\n ) {\n return;\n }\n\n const trigger = this._getTriggerButton();\n if (!trigger) {\n return;\n }\n\n const styleElement = menu.shadowRoot?.querySelector(\n `.${prefix}--menu`\n ) as HTMLElement | undefined;\n\n const fallbackPlacements = menuAlignment.includes('bottom')\n ? [...bottomFirstFallbackPlacements]\n : [...topFirstFallbackPlacements];\n\n const flipArguments = this.autoalign\n ? {\n fallbackPlacements,\n }\n : {\n mainAxis: false,\n crossAxis: false,\n };\n\n this._menuController.setPlacement({\n trigger,\n target: menu,\n alignment: menuAlignment,\n styleElement,\n flipArguments,\n mainAxisOffset: 0,\n open: this.open,\n });\n });\n }\n\n private _syncMenuChildPosition(menu: CDSMenu) {\n const trigger = this._getTriggerButton();\n if (!trigger) {\n return;\n }\n\n const { left, right, top, bottom } = trigger.getBoundingClientRect();\n menu.x = [left, right];\n menu.y = [top, bottom];\n }\n\n private _toMenuSize(\n size: OVERFLOW_MENU_SIZE | string | undefined\n ): CDSMenu['size'] {\n switch (size) {\n case OVERFLOW_MENU_SIZE.EXTRA_SMALL:\n return MENU_SIZE.EXTRA_SMALL;\n case OVERFLOW_MENU_SIZE.SMALL:\n return MENU_SIZE.SMALL;\n case OVERFLOW_MENU_SIZE.MEDIUM:\n return MENU_SIZE.MEDIUM;\n case OVERFLOW_MENU_SIZE.LARGE:\n return MENU_SIZE.LARGE;\n default:\n // TODO: Remove fallback to `md` when contextual layout token support\n // is implemented for `cds-custom-menu`.\n return MENU_SIZE.MEDIUM;\n }\n }\n\n private async _focusManagedMenuItem(index: number) {\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n await menu.updateComplete;\n\n if (!this.open || this._getMenuChild() !== menu) {\n return;\n }\n\n const enabledItems = menu.activeitems\n .map(({ item }) => item)\n .filter(\n (item) => item instanceof HTMLElement && !item.hasAttribute('disabled')\n );\n const focusTarget = enabledItems[index - 1] ?? enabledItems[0];\n\n focusTarget?.focus();\n }\n\n private _resetMenuChildFloatingStyles({\n closeMenu = false,\n }: { closeMenu?: boolean } = {}) {\n const menu = this._getMenuChild();\n if (!menu) {\n return;\n }\n\n this._resetMenuFloatingStyles(menu);\n\n if (closeMenu) {\n menu.open = false;\n }\n }\n\n private _resetMenuFloatingStyles(menu: CDSMenu) {\n const menuSurface = menu.shadowRoot?.querySelector(`.${prefix}--menu`) as\n | HTMLElement\n | undefined;\n\n if (!menuSurface) {\n return;\n }\n\n menuSurface.style.removeProperty('left');\n menuSurface.style.removeProperty('top');\n menuSurface.style.removeProperty('position');\n menuSurface.style.removeProperty('visibility');\n menuSurface.removeAttribute('align');\n }\n\n /**\n * Suppresses trigger tooltip interactions while the menu is open.\n */\n private _syncTriggerTooltipState() {\n const tooltip = this._tooltip as\n | (HTMLElement & { open?: boolean; keyboardOnly?: boolean })\n | undefined;\n\n if (!tooltip) {\n return;\n }\n\n tooltip.keyboardOnly = this.open;\n this._tooltipContent?.toggleAttribute('hidden', this.disabled || this.open);\n\n if (this.open) {\n tooltip.open = false;\n }\n }\n}\n\nexport default CDSOverflowMenu;\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
import { property } from "lit/decorators.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
import { property } from "lit/decorators.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
import { property, state } from "lit/decorators.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
//#region src/components/page-header/page-header-hero-image.ts
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
//#region src/components/page-header/page-header-tabs.ts
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import page_header_default$1 from "./page-header.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
//#region src/components/page-header/page-header.ts
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
12
|
import FocusMixin from "../../globals/mixins/focus.js";
|
|
13
13
|
import HostListener from "../../globals/decorators/host-listener.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
12
|
import "../icon-button/index.js";
|
|
13
13
|
import "./defs.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import password_input_default from "./password-input.scss.js";
|
|
12
12
|
import { LitElement, html } from "lit";
|
|
13
13
|
import { property } from "lit/decorators.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
12
|
import "../tooltip/tooltip-content.js";
|
|
13
13
|
import "../tooltip/index.js";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import "./defs.js";
|
|
12
12
|
import popover_default from "./popover.scss.js";
|
|
13
13
|
import { LitElement, html } from "lit";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;uBAE9B,CAAC;;;;;AAErB;;;;;;GAMG;AACH,cACM,UAAW,SAAQ,eAA6B;IACpD;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAE3D;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAmB;IAE3C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAmB;IAE3C;;OAEG;IACH,OAAO,CAAC,cAAc,CAAS;IAE/B;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,KAAK,UAAQ;IAEb;;OAEG;IAEH,UAAU,UAAQ;IAElB;;OAEG;IAEH,MAAM,UAAS;IAEf;;OAEG;IAEH,YAAY,UAAS;IAErB;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,MAAM,UAAS;IAEf;;OAEG;IAEH,eAAe,2BAAkC;IAEjD;;;;OAIG;IAEH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK;IAoB7C,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;uBAE9B,CAAC;;;;;AAErB;;;;;;GAMG;AACH,cACM,UAAW,SAAQ,eAA6B;IACpD;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAE3D;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAmB;IAE3C;;OAEG;IAEH,OAAO,CAAC,gBAAgB,CAAmB;IAE3C;;OAEG;IACH,OAAO,CAAC,cAAc,CAAS;IAE/B;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,KAAK,UAAQ;IAEb;;OAEG;IAEH,UAAU,UAAQ;IAElB;;OAEG;IAEH,MAAM,UAAS;IAEf;;OAEG;IAEH,YAAY,UAAS;IAErB;;OAEG;IAEH,IAAI,UAAS;IAEb;;OAEG;IAEH,MAAM,UAAS;IAEf;;OAEG;IAEH,eAAe,2BAAkC;IAEjD;;;;OAIG;IAEH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK;IAoB7C,OAAO,CAAC,cAAc;IAsEtB,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,mBAAmB;;IAwD3B,iBAAiB;IAKjB,oBAAoB;IAIpB;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IA+CjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,iBAAiB,KAAA;IAuDzB,MAAM;IAmDN;;;OAGG;IACH,MAAM,KAAK,2BAA2B,WAErC;IAED;;;OAGG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;OAEG;IACH,MAAM,KAAK,sBAAsB,WAEhC;IAED;;;OAGG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import HostListener from "../../globals/decorators/host-listener.js";
|
|
12
12
|
import HostListenerMixin from "../../globals/mixins/host-listener.js";
|
|
13
13
|
import "./defs.js";
|
|
@@ -47,6 +47,25 @@ let CDSPopover = class CDSPopover extends HostListenerMixin(LitElement) {
|
|
|
47
47
|
if (!this.open) return;
|
|
48
48
|
if (event.key === "Tab") this._tabKeyPressed = true;
|
|
49
49
|
else this._tabKeyPressed = false;
|
|
50
|
+
if (event.key === "Escape") {
|
|
51
|
+
if (event.defaultPrevented) return;
|
|
52
|
+
const selectorPopoverContent = this.constructor.selectorPopoverContent;
|
|
53
|
+
if (event.composedPath().find((node) => node instanceof Element && node.matches(selectorPopoverContent)) !== this.querySelector(selectorPopoverContent)) return;
|
|
54
|
+
if (this.dispatchEvent(new CustomEvent(this.constructor.eventBeforeClose, {
|
|
55
|
+
bubbles: true,
|
|
56
|
+
cancelable: true,
|
|
57
|
+
composed: true,
|
|
58
|
+
detail: { triggeredBy: event.target }
|
|
59
|
+
}))) {
|
|
60
|
+
this.open = false;
|
|
61
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventOnClose, {
|
|
62
|
+
bubbles: true,
|
|
63
|
+
composed: true
|
|
64
|
+
}));
|
|
65
|
+
const trigger = this._triggerSlotNode.assignedElements({ flatten: true })[0];
|
|
66
|
+
if (trigger instanceof HTMLElement) trigger.focus();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
50
69
|
}
|
|
51
70
|
_handleFocusOut(event) {
|
|
52
71
|
if (!this._tabKeyPressed || !this.open) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","names":["FloatingUIController","styles","customElement"],"sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\nimport { deepShadowContains } from '../../globals/internal/deep-shadow-contains';\n\n/**\n * Popover.\n *\n * @element cds-custom-popover\n * @fires cds-custom-popover-beingclosed before the popover closes via focusout/outsideclick.\n * @fires cds-custom-popover-closed when the popover closes via focusout/outsideclick\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Tracks Tab key press to check relatedTarget on focusout event\n */\n private _tabKeyPressed = false;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n return;\n }\n if (event.key === 'Tab') {\n this._tabKeyPressed = true;\n } else {\n this._tabKeyPressed = false;\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: FocusEvent) {\n // Only handle focusout if Tab key was pressed\n if (!this._tabKeyPressed || !this.open) {\n return;\n }\n\n if (\n this.contains(event.relatedTarget as Node) ||\n deepShadowContains(this, event.relatedTarget)\n ) {\n this._tabKeyPressed = false;\n return;\n }\n\n // focus moved outside the popover, close it\n this._tabKeyPressed = false;\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventBeforeClose,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: event.target,\n },\n }\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventBeforeClose,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: event.target,\n },\n }\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * The viewport (default)\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n if (!raw) {\n // Default to viewport\n return this._getViewportRect();\n }\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n /**\n * Gets the viewport rectangle for use as the default autoalign boundary.\n */\n private _getViewportRect(): Rect {\n // Use the Visual Viewport API when available for accurate viewport dimensions\n if (window.visualViewport) {\n const viewport = window.visualViewport;\n return {\n x: viewport.offsetLeft,\n y: viewport.offsetTop,\n width: viewport.width,\n height: viewport.height,\n };\n }\n\n // Fallback for browsers not suporting Visual Viewport API\n return {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n };\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = !tabTip;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired before the popover closes via focusout/outsideclick.\n * This event is cancellable.\n */\n static get eventBeforeClose() {\n return `${prefix}-popover-beingclosed`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"popover.js","names":["FloatingUIController","styles","customElement"],"sources":["../../../src/components/popover/popover.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport styles from './popover.scss?lit';\nimport CDSPopoverContent from './popover-content';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\nimport { POPOVER_BACKGROUND_TOKEN } from './defs';\nimport type { Boundary, Rect } from '@floating-ui/dom';\nimport { deepShadowContains } from '../../globals/internal/deep-shadow-contains';\n\n/**\n * Popover.\n *\n * @element cds-custom-popover\n * @fires cds-custom-popover-beingclosed before the popover closes via focusout/outsideclick.\n * @fires cds-custom-popover-closed when the popover closes via focusout/outsideclick\n */\n@customElement(`${prefix}-popover`)\nclass CDSPopover extends HostListenerMixin(LitElement) {\n /**\n * Create popover controller instance\n */\n private popoverController = new FloatingUIController(this);\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot')\n private _triggerSlotNode!: HTMLSlotElement;\n\n /**\n * The `<slot>` element in the shadow DOM.\n */\n @query('slot[name=\"content\"]')\n private _contentSlotNode!: HTMLSlotElement;\n\n /**\n * Tracks Tab key press to check relatedTarget on focusout event\n */\n private _tabKeyPressed = false;\n\n /**\n * Specify direction of alignment\n */\n @property({ reflect: true, type: String })\n align = '';\n\n /**\n * **Experimental:** Provide an offset value for alignment axis. Only takes effect when `autoalign` is enabled.\n */\n @property({ type: Number, reflect: true, attribute: 'alignment-axis-offset' })\n alignmentAxisOffset?: number;\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * Specify whether a caret should be rendered\n */\n @property({ type: Boolean, reflect: true })\n caret = true;\n\n /**\n * Specify whether a dropShadow should be rendered\n */\n @property({ type: Boolean, reflect: true })\n dropShadow = true;\n\n /**\n * Specify whether a border should be rendered on the popover\n */\n @property({ type: Boolean, reflect: true })\n border = false;\n\n /**\n * Render the component using the high-contrast variant\n */\n @property({ type: Boolean, reflect: true })\n highContrast = false;\n\n /**\n * Specify whether the component is currently open or closed\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Render the component using the tab tip variant\n */\n @property({ type: Boolean, reflect: true })\n tabTip = false;\n\n /**\n * Specify the background token to use. Default is 'layer'.\n */\n @property({ reflect: true, type: String })\n backgroundToken = POPOVER_BACKGROUND_TOKEN.LAYER;\n\n /**\n * Specify a bounding element to be used for autoAlign calculations. The viewport is used by default.\n * Takes one of the following: 'clippingAncestors', '#elementid', '#elementid_1, #elementid_2', 'rect(x, y, width, height)'\n * This prop is currently experimental and is subject to future changes.\n */\n @property({ type: String, reflect: true, attribute: 'autoalign-boundary' })\n autoAlignBoundary?: string;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n if (this.tabTip) {\n const component = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'BUTTON'\n );\n\n (component[0] as HTMLElement)?.classList.add(\n `${prefix}--popover--tab-tip__button`\n );\n }\n this.requestUpdate();\n }\n\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n return;\n }\n if (event.key === 'Tab') {\n this._tabKeyPressed = true;\n } else {\n this._tabKeyPressed = false;\n }\n\n if (event.key === 'Escape') {\n if (event.defaultPrevented) {\n return;\n }\n\n // Esc should only close the popover if focus is inside the popover content\n const selectorPopoverContent = (this.constructor as typeof CDSPopover)\n .selectorPopoverContent;\n\n const parentPopoverContent = event\n .composedPath()\n .find(\n (node) =>\n node instanceof Element && node.matches(selectorPopoverContent)\n );\n\n if (parentPopoverContent !== this.querySelector(selectorPopoverContent)) {\n return;\n }\n\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventBeforeClose,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: event.target,\n },\n }\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n\n // return focus to the trigger\n const trigger = this._triggerSlotNode.assignedElements({\n flatten: true,\n })[0];\n if (trigger instanceof HTMLElement) {\n trigger.focus();\n }\n }\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: FocusEvent) {\n // Only handle focusout if Tab key was pressed\n if (!this._tabKeyPressed || !this.open) {\n return;\n }\n\n if (\n this.contains(event.relatedTarget as Node) ||\n deepShadowContains(this, event.relatedTarget)\n ) {\n this._tabKeyPressed = false;\n return;\n }\n\n // focus moved outside the popover, close it\n this._tabKeyPressed = false;\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventBeforeClose,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: event.target,\n },\n }\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSPopover).eventOnClose, {\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n private _handleOutsideClick(event: Event) {\n const path = event.composedPath();\n\n if (path.includes(this._triggerSlotNode.assignedElements()[0])) return;\n\n const popoverContent = this.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContent\n )?.shadowRoot?.querySelector(\n (this.constructor as typeof CDSPopover).selectorPopoverContentClass\n ) as HTMLElement;\n\n if (path.includes(popoverContent)) return;\n\n const target = event.target as Node | null;\n const composedTarget = event.composedPath?.()[0] as Node | null;\n\n if (\n this.open &&\n target &&\n !this.contains(target) &&\n !this.contains(composedTarget)\n ) {\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventBeforeClose,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: event.target,\n },\n }\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSPopover).eventOnClose,\n {\n bubbles: true,\n composed: true,\n }\n )\n );\n }\n }\n }\n\n constructor() {\n super();\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n /**\n * This function resolves the string passed in for `autoAlignBoundary` to either:\n * The viewport (default)\n * \"clippingAncestors\"\n * An element (found via #id)\n * An array of elements (found via #id1, #id2, #id3, separated by \",\")\n * A rect, input format should be 'rect(x,y,width,height)'\n */\n private _resolveAutoAlignBoundary(): Boundary {\n const raw = (this.autoAlignBoundary ?? '').trim();\n\n if (!raw) {\n // Default to viewport\n return this._getViewportRect();\n }\n if (raw === 'clippingAncestors') return 'clippingAncestors';\n\n // regex match for: rect(x,y,width,height)\n const rectMatch =\n /^rect\\(\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*,\\s*([-\\d.]+)\\s*\\)$/i.exec(\n raw\n );\n if (rectMatch) {\n const [, x, y, w, h] = rectMatch;\n const rect: Rect = { x: +x, y: +y, width: +w, height: +h };\n return rect;\n }\n\n // Get element(s)\n const ids = raw\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 1 && s.startsWith('#'))\n .map((s) => s.slice(1).trim())\n .filter(Boolean);\n\n if (ids.length > 0) {\n const elements: Element[] = [];\n const inputted_ids = new Set<string>();\n\n for (const id of ids) {\n if (inputted_ids.has(id)) continue;\n inputted_ids.add(id);\n\n const el = document.getElementById(id);\n\n if (el) elements.push(el);\n }\n return elements.length === 1 ? elements[0] : elements;\n }\n\n // default fallback\n return 'clippingAncestors';\n }\n\n /**\n * Gets the viewport rectangle for use as the default autoalign boundary.\n */\n private _getViewportRect(): Rect {\n // Use the Visual Viewport API when available for accurate viewport dimensions\n if (window.visualViewport) {\n const viewport = window.visualViewport;\n return {\n x: viewport.offsetLeft,\n y: viewport.offsetTop,\n width: viewport.width,\n height: viewport.height,\n };\n }\n\n // Fallback for browsers not suporting Visual Viewport API\n return {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n };\n }\n\n updated(changedProperties) {\n const { selectorPopoverContent } = this.constructor as typeof CDSPopover;\n [\n 'open',\n 'align',\n 'autoalign',\n 'caret',\n 'dropShadow',\n 'border',\n 'tabTip',\n 'highContrast',\n 'backgroundToken',\n ].forEach((name) => {\n if (changedProperties.has(name)) {\n const { [name as keyof CDSPopover]: value } = this;\n if (this.querySelector(selectorPopoverContent) as CDSPopoverContent) {\n (this.querySelector(selectorPopoverContent) as CDSPopoverContent)[\n name\n ] = value;\n }\n }\n });\n\n if (this.autoalign && this.open) {\n // auto align functionality with @floating-ui/dom library\n const button = this._triggerSlotNode.assignedElements()[0];\n const content = this._contentSlotNode.assignedElements()[0];\n\n const tooltip = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverContentClass\n );\n const arrowElement = content?.shadowRoot?.querySelector(\n CDSPopover.selectorPopoverCaret\n );\n\n if (button && tooltip) {\n this.popoverController?.setPlacement({\n trigger: button as HTMLElement,\n target: tooltip as HTMLElement,\n arrowElement:\n this.caret && arrowElement\n ? (arrowElement as HTMLElement)\n : undefined,\n caret: this.caret,\n flipArguments: { fallbackAxisSideDirection: 'start' },\n alignment: this.align,\n open: this.open,\n alignmentAxisOffset: this.alignmentAxisOffset,\n autoAlignBoundary: this._resolveAutoAlignBoundary(),\n isTabTip: this.tabTip,\n });\n }\n }\n }\n\n render() {\n const {\n dropShadow,\n border,\n highContrast,\n open,\n tabTip,\n _handleSlotChange: handleSlotChange,\n } = this;\n if (tabTip) {\n this.caret = !tabTip;\n }\n\n if (!this.autoalign) {\n this.align = this.align ? this.align : tabTip ? 'bottom-start' : 'bottom';\n }\n\n if (tabTip) {\n const tabTipAlignments = [\n 'bottom-start',\n 'bottom-end',\n 'bottom-left', // remove in v12\n 'bottom-right', // remove in v12\n ];\n\n if (!tabTipAlignments.includes(this.align)) {\n this.align = 'bottom-start';\n }\n }\n\n const classes = classMap({\n [`${prefix}--popover-container`]: true,\n [`${prefix}--popover--caret`]: this.caret,\n [`${prefix}--popover--drop-shadow`]: dropShadow,\n [`${prefix}--popover--border`]: border,\n [`${prefix}--popover--high-contrast`]: highContrast,\n [`${prefix}--popover--open`]: open,\n [`${prefix}--popover--${this.align}`]: true,\n [`${prefix}--popover--tab-tip`]: tabTip,\n [`${prefix}--popover--background-token__background`]:\n this.backgroundToken === POPOVER_BACKGROUND_TOKEN.BACKGROUND &&\n !highContrast,\n });\n return html`\n <span class=\"${classes}\" part=\"popover-container\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <slot name=\"content\"></slot>\n </span>\n `;\n }\n\n /**\n * A selector that will return popover content element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverContentClass() {\n return `.${prefix}--popover-content`;\n }\n\n /**\n * A selector that will return popover caret element within\n * CDSPopoverContent's shadowRoot.\n */\n static get selectorPopoverCaret() {\n return `.${prefix}--popover-caret`;\n }\n\n /**\n * A selector that will return the CDSPopoverContent.\n */\n static get selectorPopoverContent() {\n return `${prefix}-popover-content`;\n }\n\n /**\n * The name of the custom event fired before the popover closes via focusout/outsideclick.\n * This event is cancellable.\n */\n static get eventBeforeClose() {\n return `${prefix}-popover-beingclosed`;\n }\n\n /**\n * The name of the custom event fired when the popover closes via focusout/outsideclick\n */\n static get eventOnClose() {\n return `${prefix}-popover-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSPopover;\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
-
import
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
11
|
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
12
|
import { PROGRESS_BAR_SIZE, PROGRESS_BAR_STATUS, PROGRESS_BAR_TYPE } from "./defs.js";
|
|
13
13
|
import progress_bar_default$1 from "./progress-bar.scss.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { forEach } from "../../globals/internal/collection-helpers.js";
|
|
10
10
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
11
|
-
import
|
|
11
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
12
12
|
import progress_indicator_default from "./progress-indicator.scss.js";
|
|
13
13
|
import { LitElement, html } from "lit";
|
|
14
14
|
import { property } from "lit/decorators.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { forEach } from "../../globals/internal/collection-helpers.js";
|
|
10
10
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
11
|
-
import
|
|
11
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
12
12
|
import progress_indicator_default$1 from "./progress-indicator.scss.js";
|
|
13
13
|
import { LitElement, html } from "lit";
|
|
14
14
|
import { property } from "lit/decorators.js";
|