@carbon/web-components 2.39.1 → 2.40.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 +115 -50
- package/dist/accordion.min.js +2 -2
- package/dist/ai-label.min.js +2 -2
- package/dist/ai-skeleton.min.js +2 -2
- package/dist/badge-indicator.min.js +2 -2
- package/dist/breadcrumb.min.js +8 -8
- package/dist/button-Co3aPX0Y.js +93 -0
- package/dist/{button-skeleton-DdBk5C_N.js → button-skeleton-DKiPqzwa.js} +2 -2
- package/dist/button.min.js +2 -2
- package/dist/chat-button.min.js +4 -4
- package/dist/{checkbox-DIG0hVuh.js → checkbox-DVx3ui3h.js} +2 -2
- package/dist/checkbox.min.js +2 -2
- package/dist/{class-map-n49vbqqp.js → class-map-CJoc5JjN.js} +2 -2
- package/dist/code-snippet.min.js +14 -14
- package/dist/combo-box.min.js +2 -2
- package/dist/combo-button.min.js +3 -3
- package/dist/content-switcher-item-BDJMJLCb.js +54 -0
- package/dist/content-switcher.min.js +2 -2
- package/dist/copy-button.min.js +2 -2
- package/dist/data-table.min.js +2 -2
- package/dist/date-picker.min.js +2 -2
- package/dist/{dropdown-item-PvWtkb2E.js → dropdown-item-B6uTaLa3.js} +2 -2
- package/dist/dropdown.min.js +2 -2
- package/dist/feature-flags.min.js +2 -2
- package/dist/file-uploader.min.js +8 -8
- package/dist/floating-menu.min.js +2 -2
- package/dist/fluid-text-input.min.js +2 -2
- package/dist/{focus-CAqkEBYM.js → focus-JSuV9CsT.js} +2 -2
- package/dist/{form-BNblI_Op.js → form-BaYTr2z0.js} +2 -2
- package/dist/form-group.min.js +2 -2
- package/dist/form.min.js +2 -2
- package/dist/grid.min.js +2 -2
- package/dist/heading.min.js +2 -2
- package/dist/{host-listener-mPtggheY.js → host-listener-BJsBtsIt.js} +2 -2
- package/dist/icon-button.min.js +2 -2
- package/dist/icon-indicator.min.js +2 -2
- package/dist/{icon-loader-3bNrhxYK.js → icon-loader-CqB9WRMP.js} +2 -2
- package/dist/{icon-loader-utils-C4QltTKl.js → icon-loader-utils-DUl0vwdh.js} +2 -2
- package/dist/icon.min.js +2 -2
- package/dist/{if-defined-exabhQMq.js → if-defined-IxozbDOJ.js} +2 -2
- package/dist/{if-non-empty-DV7gZi2W.js → if-non-empty-CqQHBHdQ.js} +2 -2
- package/dist/inline-loading.min.js +2 -2
- package/dist/layer.min.js +2 -2
- package/dist/link.min.js +2 -2
- package/dist/list.min.js +2 -2
- package/dist/{loading-icon-CIx9N4-w.js → loading-icon-DCf6kyWs.js} +2 -2
- package/dist/loading.min.js +2 -2
- package/dist/menu-button.min.js +3 -3
- package/dist/menu.min.js +2 -2
- package/dist/modal.min.js +9 -9
- package/dist/multi-select.min.js +2 -2
- package/dist/notification.min.js +4 -4
- package/dist/number-input.min.js +2 -2
- package/dist/overflow-menu.min.js +3 -3
- package/dist/page-header.min.js +2 -2
- package/dist/pagination.min.js +17 -25
- package/dist/password-input.min.js +2 -2
- package/dist/popover.min.js +2 -2
- package/dist/progress-bar.min.js +2 -2
- package/dist/progress-indicator.min.js +16 -10
- package/dist/{property-lZbmspq2.js → property-B_F7V5eB.js} +2 -2
- package/dist/{query-assigned-elements-DkjA2wnD.js → query-assigned-elements-DeMmXVMb.js} +2 -2
- package/dist/radio-button.min.js +2 -2
- package/dist/{search-xhqtCabY.js → search-DRY-RtlJ.js} +2 -2
- package/dist/search.min.js +2 -2
- package/dist/{select-CL5lr0mN.js → select-9WcKYA1M.js} +17 -16
- package/dist/select.min.js +2 -2
- package/dist/shape-indicator.min.js +2 -2
- package/dist/side-panel.min.js +2 -2
- package/dist/skeleton-icon.min.js +2 -2
- package/dist/skeleton-placeholder.min.js +2 -2
- package/dist/skeleton-text.min.js +2 -2
- package/dist/skip-to-content.min.js +2 -2
- package/dist/slider.min.js +2 -2
- package/dist/slug.min.js +2 -2
- package/dist/stack.min.js +2 -2
- package/dist/{state-CocwM4nH.js → state-CJQmj6wG.js} +2 -2
- package/dist/structured-list.min.js +2 -2
- package/dist/tabs.min.js +6 -6
- package/dist/tag.min.js +17 -17
- package/dist/tearsheet.min.js +2 -2
- package/dist/{text-input-rzf9bVlH.js → text-input-B80oQMaX.js} +2 -2
- package/dist/text-input.min.js +2 -2
- package/dist/textarea.min.js +2 -2
- package/dist/tile.min.js +2 -2
- package/dist/time-picker.min.js +2 -2
- package/dist/toggle-tip.min.js +4 -4
- package/dist/toggle.min.js +5 -5
- package/dist/tooltip-content-BZBP-szv.js +30 -0
- package/dist/tooltip.min.js +2 -2
- package/dist/tree-view.min.js +2 -2
- package/dist/ui-shell.min.js +2 -2
- package/dist/{unsafe-html-B5l1xysL.js → unsafe-html-Dqv0UqC_.js} +2 -2
- package/es/components/accordion/accordion-item.js +4 -4
- package/es/components/accordion/accordion-item.js.map +1 -1
- package/es/components/accordion/accordion-skeleton.js +3 -3
- package/es/components/accordion/accordion-skeleton.js.map +1 -1
- package/es/components/accordion/accordion.js +1 -1
- package/es/components/accordion/accordion.js.map +1 -1
- package/es/components/ai-label/ai-label.js +2 -2
- package/es/components/ai-label/ai-label.js.map +1 -1
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/breadcrumb/breadcrumb-item.js +1 -1
- package/es/components/breadcrumb/breadcrumb-item.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb.js +1 -1
- package/es/components/breadcrumb/breadcrumb.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es/components/button/button.js +7 -7
- package/es/components/button/button.js.map +1 -1
- package/es/components/button/button.scss.js +1 -1
- package/es/components/chat-button/chat-button.js +1 -1
- package/es/components/chat-button/chat-button.js.map +1 -1
- package/es/components/chat-button/chat-button.scss.js +1 -1
- package/es/components/checkbox/checkbox.js +1 -1
- package/es/components/checkbox/checkbox.js.map +1 -1
- package/es/components/code-snippet/code-snippet.js +16 -16
- 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.js +7 -7
- package/es/components/combo-box/combo-box.js.map +1 -1
- package/es/components/combo-button/combo-button.js +2 -2
- package/es/components/combo-button/combo-button.js.map +1 -1
- package/es/components/combo-button/combo-button.scss.js +1 -1
- package/es/components/combo-button/defs.d.ts +4 -0
- package/es/components/combo-button/defs.js +4 -0
- package/es/components/combo-button/defs.js.map +1 -1
- package/es/components/content-switcher/content-switcher.js +2 -2
- package/es/components/content-switcher/content-switcher.js.map +1 -1
- package/es/components/content-switcher/content-switcher.scss.js +1 -1
- package/es/components/copy/copy.js +2 -2
- package/es/components/copy/copy.js.map +1 -1
- package/es/components/copy-button/copy-button.scss.js +1 -1
- package/es/components/data-table/data-table.scss.js +1 -1
- package/es/components/data-table/table-expanded-row.js +2 -2
- package/es/components/data-table/table-expanded-row.js.map +1 -1
- package/es/components/data-table/table-row.js +2 -2
- package/es/components/data-table/table-row.js.map +1 -1
- package/es/components/data-table/table.js +20 -20
- package/es/components/data-table/table.js.map +1 -1
- package/es/components/date-picker/append-to-plugin.js +3 -3
- package/es/components/date-picker/append-to-plugin.js.map +1 -1
- package/es/components/date-picker/css-class-plugin.js +2 -2
- package/es/components/date-picker/css-class-plugin.js.map +1 -1
- package/es/components/date-picker/date-picker-input.js +1 -1
- package/es/components/date-picker/date-picker-input.js.map +1 -1
- package/es/components/date-picker/date-picker.js +5 -5
- package/es/components/date-picker/date-picker.js.map +1 -1
- package/es/components/date-picker/fix-events-plugin.js +1 -1
- package/es/components/date-picker/fix-events-plugin.js.map +1 -1
- package/es/components/date-picker/range-plugin.js +2 -2
- package/es/components/date-picker/range-plugin.js.map +1 -1
- package/es/components/date-picker/shadow-dom-events-plugin.js +10 -10
- package/es/components/date-picker/shadow-dom-events-plugin.js.map +1 -1
- package/es/components/dropdown/dropdown-item.js +1 -1
- package/es/components/dropdown/dropdown-item.js.map +1 -1
- package/es/components/dropdown/dropdown.js +8 -8
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/feature-flags/index.d.ts +4 -0
- package/es/components/feature-flags/index.js +20 -9
- package/es/components/feature-flags/index.js.map +1 -1
- package/es/components/file-uploader/file-uploader-drop-container.js +1 -1
- package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
- package/es/components/file-uploader/file-uploader.scss.js +1 -1
- package/es/components/floating-menu/floating-menu.js +9 -9
- package/es/components/floating-menu/floating-menu.js.map +1 -1
- package/es/components/icon-button/icon-button.scss.js +1 -1
- package/es/components/link/link.js +2 -2
- package/es/components/link/link.js.map +1 -1
- package/es/components/menu/menu-context.js.map +1 -1
- package/es/components/menu/menu-item.js +1 -1
- package/es/components/menu/menu-item.js.map +1 -1
- package/es/components/menu/menu.js +1 -1
- package/es/components/menu/menu.js.map +1 -1
- package/es/components/menu-button/menu-button.js +2 -2
- package/es/components/menu-button/menu-button.js.map +1 -1
- package/es/components/menu-button/menu-button.scss.js +1 -1
- package/es/components/modal/modal.js +8 -8
- package/es/components/modal/modal.js.map +1 -1
- package/es/components/modal/modal.scss.js +1 -1
- package/es/components/multi-select/multi-select.js +8 -8
- package/es/components/multi-select/multi-select.js.map +1 -1
- package/es/components/notification/actionable-notification-button.js +1 -1
- package/es/components/notification/actionable-notification-button.js.map +1 -1
- package/es/components/notification/actionable-notification.js +5 -5
- package/es/components/notification/actionable-notification.js.map +1 -1
- package/es/components/notification/actionable-notification.scss.js +1 -1
- package/es/components/notification/inline-notification.scss.js +1 -1
- package/es/components/notification/toast-notification.scss.js +1 -1
- package/es/components/overflow-menu/defs.d.ts +4 -0
- package/es/components/overflow-menu/defs.js +4 -0
- package/es/components/overflow-menu/defs.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu-body.js +2 -2
- package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu.js +4 -8
- package/es/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es/components/page-header/page-header-tabs.js.map +1 -1
- package/es/components/page-header/page-header.js.map +1 -1
- package/es/components/pagination/pagination.d.ts +1 -1
- package/es/components/pagination/pagination.js +86 -56
- package/es/components/pagination/pagination.js.map +1 -1
- package/es/components/pagination/pagination.scss.js +1 -1
- package/es/components/popover/popover.js +2 -2
- package/es/components/popover/popover.js.map +1 -1
- package/es/components/popover/popover.scss.js +1 -1
- package/es/components/progress-bar/progress-bar.js +1 -1
- package/es/components/progress-bar/progress-bar.js.map +1 -1
- package/es/components/progress-indicator/progress-indicator.d.ts +16 -2
- package/es/components/progress-indicator/progress-indicator.js +75 -4
- package/es/components/progress-indicator/progress-indicator.js.map +1 -1
- package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es/components/progress-indicator/progress-step.d.ts +34 -9
- package/es/components/progress-indicator/progress-step.js +100 -16
- package/es/components/progress-indicator/progress-step.js.map +1 -1
- package/es/components/radio-button/radio-button-group.js +1 -1
- package/es/components/radio-button/radio-button-group.js.map +1 -1
- package/es/components/radio-button/radio-button.js +5 -5
- package/es/components/radio-button/radio-button.js.map +1 -1
- package/es/components/search/search.js +4 -4
- package/es/components/search/search.js.map +1 -1
- package/es/components/select/select.js +15 -8
- package/es/components/select/select.js.map +1 -1
- package/es/components/select/select.scss.js +1 -1
- package/es/components/side-panel/side-panel.js +6 -6
- package/es/components/side-panel/side-panel.js.map +1 -1
- package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es/components/slider/slider.js +7 -7
- package/es/components/slider/slider.js.map +1 -1
- package/es/components/slug/slug.js +2 -2
- package/es/components/slug/slug.js.map +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/structured-list/structured-list-row.js +2 -2
- package/es/components/structured-list/structured-list-row.js.map +1 -1
- package/es/components/structured-list/structured-list.js +1 -1
- package/es/components/structured-list/structured-list.js.map +1 -1
- package/es/components/tabs/tabs.js +12 -12
- package/es/components/tabs/tabs.js.map +1 -1
- package/es/components/tabs/tabs.scss.js +1 -1
- package/es/components/tag/dismissible-tag.js +2 -2
- package/es/components/tag/dismissible-tag.js.map +1 -1
- package/es/components/tag/operational-tag.js +2 -2
- package/es/components/tag/operational-tag.js.map +1 -1
- package/es/components/tag/selectable-tag.js +2 -2
- package/es/components/tag/selectable-tag.js.map +1 -1
- package/es/components/tag/tag.js +2 -2
- package/es/components/tag/tag.js.map +1 -1
- package/es/components/tag/tag.scss.js +1 -1
- package/es/components/tearsheet/tearsheet.js +10 -10
- package/es/components/tearsheet/tearsheet.js.map +1 -1
- package/es/components/tile/clickable-tile.js +1 -1
- package/es/components/tile/clickable-tile.js.map +1 -1
- package/es/components/tile/expandable-tile.js +2 -2
- package/es/components/tile/expandable-tile.js.map +1 -1
- package/es/components/tile/tile-group.js +2 -2
- package/es/components/tile/tile-group.js.map +1 -1
- package/es/components/time-picker/time-picker-select.js +1 -1
- package/es/components/time-picker/time-picker-select.js.map +1 -1
- package/es/components/time-picker/time-picker.js +2 -2
- package/es/components/time-picker/time-picker.js.map +1 -1
- package/es/components/toggle/toggle.d.ts +20 -3
- package/es/components/toggle/toggle.js +47 -10
- package/es/components/toggle/toggle.js.map +1 -1
- package/es/components/toggle/toggle.scss.js +1 -1
- package/es/components/toggle-tip/toggletip.js +3 -3
- package/es/components/toggle-tip/toggletip.js.map +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +1 -1
- package/es/components/tooltip/tooltip.js +4 -4
- package/es/components/tooltip/tooltip.js.map +1 -1
- package/es/components/tooltip/tooltip.scss.js +1 -1
- package/es/components/tree-view/tree-node.js +1 -1
- package/es/components/tree-view/tree-node.js.map +1 -1
- package/es/components/tree-view/tree-view.js +7 -7
- package/es/components/tree-view/tree-view.js.map +1 -1
- package/es/components/ui-shell/header-global-action.js +3 -3
- package/es/components/ui-shell/header-global-action.js.map +1 -1
- package/es/components/ui-shell/header-menu.js +2 -2
- package/es/components/ui-shell/header-menu.js.map +1 -1
- package/es/components/ui-shell/header.scss.js +1 -1
- package/es/components/ui-shell/side-nav.js +1 -1
- package/es/components/ui-shell/side-nav.js.map +1 -1
- package/es/globals/controllers/floating-controller.js +2 -2
- package/es/globals/controllers/floating-controller.js.map +1 -1
- package/es/globals/decorators/carbon-element.js +4 -4
- package/es/globals/decorators/carbon-element.js.map +1 -1
- package/es/globals/decorators/host-listener.js +2 -2
- package/es/globals/decorators/host-listener.js.map +1 -1
- package/es/globals/internal/collection-helpers.js +4 -4
- package/es/globals/internal/collection-helpers.js.map +1 -1
- package/es/globals/internal/feature-flags.js +2 -2
- package/es/globals/internal/feature-flags.js.map +1 -1
- package/es/globals/mixins/focus.js +2 -2
- package/es/globals/mixins/focus.js.map +1 -1
- package/es/globals/mixins/host-listener.js +1 -1
- package/es/globals/mixins/host-listener.js.map +1 -1
- package/es/globals/mixins/on.js +1 -1
- package/es/globals/mixins/on.js.map +1 -1
- package/es-custom/components/accordion/accordion-item.js +4 -4
- package/es-custom/components/accordion/accordion-item.js.map +1 -1
- package/es-custom/components/accordion/accordion-skeleton.js +3 -3
- package/es-custom/components/accordion/accordion-skeleton.js.map +1 -1
- package/es-custom/components/accordion/accordion.js +1 -1
- package/es-custom/components/accordion/accordion.js.map +1 -1
- package/es-custom/components/ai-label/ai-label.js +2 -2
- package/es-custom/components/ai-label/ai-label.js.map +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-item.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-item.js.map +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.js.map +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es-custom/components/button/button.js +7 -7
- package/es-custom/components/button/button.js.map +1 -1
- package/es-custom/components/button/button.scss.js +1 -1
- package/es-custom/components/chat-button/chat-button.js +1 -1
- package/es-custom/components/chat-button/chat-button.js.map +1 -1
- package/es-custom/components/chat-button/chat-button.scss.js +1 -1
- package/es-custom/components/checkbox/checkbox.js +1 -1
- package/es-custom/components/checkbox/checkbox.js.map +1 -1
- package/es-custom/components/code-snippet/code-snippet.js +16 -16
- 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.js +7 -7
- package/es-custom/components/combo-box/combo-box.js.map +1 -1
- package/es-custom/components/combo-button/combo-button.js +2 -2
- package/es-custom/components/combo-button/combo-button.js.map +1 -1
- package/es-custom/components/combo-button/combo-button.scss.js +1 -1
- package/es-custom/components/combo-button/defs.d.ts +4 -0
- package/es-custom/components/combo-button/defs.js +4 -0
- package/es-custom/components/combo-button/defs.js.map +1 -1
- package/es-custom/components/content-switcher/content-switcher.js +2 -2
- package/es-custom/components/content-switcher/content-switcher.js.map +1 -1
- package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
- package/es-custom/components/copy/copy.js +2 -2
- package/es-custom/components/copy/copy.js.map +1 -1
- package/es-custom/components/copy-button/copy-button.scss.js +1 -1
- package/es-custom/components/data-table/data-table.scss.js +1 -1
- package/es-custom/components/data-table/table-expanded-row.js +2 -2
- package/es-custom/components/data-table/table-expanded-row.js.map +1 -1
- package/es-custom/components/data-table/table-row.js +2 -2
- package/es-custom/components/data-table/table-row.js.map +1 -1
- package/es-custom/components/data-table/table.js +20 -20
- package/es-custom/components/data-table/table.js.map +1 -1
- package/es-custom/components/date-picker/append-to-plugin.js +3 -3
- package/es-custom/components/date-picker/append-to-plugin.js.map +1 -1
- package/es-custom/components/date-picker/css-class-plugin.js +2 -2
- package/es-custom/components/date-picker/css-class-plugin.js.map +1 -1
- package/es-custom/components/date-picker/date-picker-input.js +1 -1
- package/es-custom/components/date-picker/date-picker-input.js.map +1 -1
- package/es-custom/components/date-picker/date-picker.js +5 -5
- package/es-custom/components/date-picker/date-picker.js.map +1 -1
- package/es-custom/components/date-picker/fix-events-plugin.js +1 -1
- package/es-custom/components/date-picker/fix-events-plugin.js.map +1 -1
- package/es-custom/components/date-picker/range-plugin.js +2 -2
- package/es-custom/components/date-picker/range-plugin.js.map +1 -1
- package/es-custom/components/date-picker/shadow-dom-events-plugin.js +10 -10
- package/es-custom/components/date-picker/shadow-dom-events-plugin.js.map +1 -1
- package/es-custom/components/dropdown/dropdown-item.js +1 -1
- package/es-custom/components/dropdown/dropdown-item.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.js +8 -8
- package/es-custom/components/dropdown/dropdown.js.map +1 -1
- package/es-custom/components/feature-flags/index.d.ts +4 -0
- package/es-custom/components/feature-flags/index.js +20 -9
- package/es-custom/components/feature-flags/index.js.map +1 -1
- package/es-custom/components/file-uploader/file-uploader-drop-container.js +1 -1
- package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
- package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
- package/es-custom/components/floating-menu/floating-menu.js +9 -9
- package/es-custom/components/floating-menu/floating-menu.js.map +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js +1 -1
- package/es-custom/components/link/link.js +2 -2
- package/es-custom/components/link/link.js.map +1 -1
- package/es-custom/components/menu/menu-context.js.map +1 -1
- package/es-custom/components/menu/menu-item.js +1 -1
- package/es-custom/components/menu/menu-item.js.map +1 -1
- package/es-custom/components/menu/menu.js +1 -1
- package/es-custom/components/menu/menu.js.map +1 -1
- package/es-custom/components/menu-button/menu-button.js +2 -2
- package/es-custom/components/menu-button/menu-button.js.map +1 -1
- package/es-custom/components/menu-button/menu-button.scss.js +1 -1
- package/es-custom/components/modal/modal.js +8 -8
- package/es-custom/components/modal/modal.js.map +1 -1
- package/es-custom/components/modal/modal.scss.js +1 -1
- package/es-custom/components/multi-select/multi-select.js +8 -8
- package/es-custom/components/multi-select/multi-select.js.map +1 -1
- package/es-custom/components/notification/actionable-notification-button.js +1 -1
- package/es-custom/components/notification/actionable-notification-button.js.map +1 -1
- package/es-custom/components/notification/actionable-notification.js +5 -5
- package/es-custom/components/notification/actionable-notification.js.map +1 -1
- package/es-custom/components/notification/actionable-notification.scss.js +1 -1
- package/es-custom/components/notification/inline-notification.scss.js +1 -1
- package/es-custom/components/notification/toast-notification.scss.js +1 -1
- package/es-custom/components/overflow-menu/defs.d.ts +4 -0
- package/es-custom/components/overflow-menu/defs.js +4 -0
- package/es-custom/components/overflow-menu/defs.js.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-body.js +2 -2
- package/es-custom/components/overflow-menu/overflow-menu-body.js.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.js +4 -8
- package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
- package/es-custom/components/page-header/page-header.js.map +1 -1
- package/es-custom/components/pagination/pagination.d.ts +1 -1
- package/es-custom/components/pagination/pagination.js +86 -56
- package/es-custom/components/pagination/pagination.js.map +1 -1
- package/es-custom/components/pagination/pagination.scss.js +1 -1
- package/es-custom/components/popover/popover.js +2 -2
- package/es-custom/components/popover/popover.js.map +1 -1
- package/es-custom/components/popover/popover.scss.js +1 -1
- package/es-custom/components/progress-bar/progress-bar.js +1 -1
- package/es-custom/components/progress-bar/progress-bar.js.map +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.d.ts +16 -2
- package/es-custom/components/progress-indicator/progress-indicator.js +75 -4
- package/es-custom/components/progress-indicator/progress-indicator.js.map +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-step.d.ts +34 -9
- package/es-custom/components/progress-indicator/progress-step.js +100 -16
- package/es-custom/components/progress-indicator/progress-step.js.map +1 -1
- package/es-custom/components/radio-button/radio-button-group.js +1 -1
- package/es-custom/components/radio-button/radio-button-group.js.map +1 -1
- package/es-custom/components/radio-button/radio-button.js +5 -5
- package/es-custom/components/radio-button/radio-button.js.map +1 -1
- package/es-custom/components/search/search.js +4 -4
- package/es-custom/components/search/search.js.map +1 -1
- package/es-custom/components/select/select.js +15 -8
- package/es-custom/components/select/select.js.map +1 -1
- package/es-custom/components/select/select.scss.js +1 -1
- package/es-custom/components/side-panel/side-panel.js +6 -6
- package/es-custom/components/side-panel/side-panel.js.map +1 -1
- package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es-custom/components/slider/slider.js +7 -7
- package/es-custom/components/slider/slider.js.map +1 -1
- package/es-custom/components/slug/slug.js +2 -2
- package/es-custom/components/slug/slug.js.map +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/structured-list/structured-list-row.js +2 -2
- package/es-custom/components/structured-list/structured-list-row.js.map +1 -1
- package/es-custom/components/structured-list/structured-list.js +1 -1
- package/es-custom/components/structured-list/structured-list.js.map +1 -1
- package/es-custom/components/tabs/tabs.js +12 -12
- package/es-custom/components/tabs/tabs.js.map +1 -1
- package/es-custom/components/tabs/tabs.scss.js +1 -1
- package/es-custom/components/tag/dismissible-tag.js +2 -2
- package/es-custom/components/tag/dismissible-tag.js.map +1 -1
- package/es-custom/components/tag/operational-tag.js +2 -2
- package/es-custom/components/tag/operational-tag.js.map +1 -1
- package/es-custom/components/tag/selectable-tag.js +2 -2
- package/es-custom/components/tag/selectable-tag.js.map +1 -1
- package/es-custom/components/tag/tag.js +2 -2
- package/es-custom/components/tag/tag.js.map +1 -1
- package/es-custom/components/tag/tag.scss.js +1 -1
- package/es-custom/components/tearsheet/tearsheet.js +10 -10
- package/es-custom/components/tearsheet/tearsheet.js.map +1 -1
- package/es-custom/components/tile/clickable-tile.js +1 -1
- package/es-custom/components/tile/clickable-tile.js.map +1 -1
- package/es-custom/components/tile/expandable-tile.js +2 -2
- package/es-custom/components/tile/expandable-tile.js.map +1 -1
- package/es-custom/components/tile/tile-group.js +2 -2
- package/es-custom/components/tile/tile-group.js.map +1 -1
- package/es-custom/components/time-picker/time-picker-select.js +1 -1
- package/es-custom/components/time-picker/time-picker-select.js.map +1 -1
- package/es-custom/components/time-picker/time-picker.js +2 -2
- package/es-custom/components/time-picker/time-picker.js.map +1 -1
- package/es-custom/components/toggle/toggle.d.ts +20 -3
- package/es-custom/components/toggle/toggle.js +47 -10
- package/es-custom/components/toggle/toggle.js.map +1 -1
- package/es-custom/components/toggle/toggle.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.js +3 -3
- package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tooltip/tooltip.js +4 -4
- package/es-custom/components/tooltip/tooltip.js.map +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js +1 -1
- package/es-custom/components/tree-view/tree-node.js +1 -1
- package/es-custom/components/tree-view/tree-node.js.map +1 -1
- package/es-custom/components/tree-view/tree-view.js +7 -7
- package/es-custom/components/tree-view/tree-view.js.map +1 -1
- package/es-custom/components/ui-shell/header-global-action.js +3 -3
- package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
- package/es-custom/components/ui-shell/header-menu.js +2 -2
- package/es-custom/components/ui-shell/header-menu.js.map +1 -1
- package/es-custom/components/ui-shell/header.scss.js +1 -1
- package/es-custom/components/ui-shell/side-nav.js +1 -1
- package/es-custom/components/ui-shell/side-nav.js.map +1 -1
- package/es-custom/globals/controllers/floating-controller.js +2 -2
- package/es-custom/globals/controllers/floating-controller.js.map +1 -1
- package/es-custom/globals/decorators/carbon-element.js +4 -4
- package/es-custom/globals/decorators/carbon-element.js.map +1 -1
- package/es-custom/globals/decorators/host-listener.js +2 -2
- package/es-custom/globals/decorators/host-listener.js.map +1 -1
- package/es-custom/globals/internal/collection-helpers.js +4 -4
- package/es-custom/globals/internal/collection-helpers.js.map +1 -1
- package/es-custom/globals/internal/feature-flags.js +2 -2
- package/es-custom/globals/internal/feature-flags.js.map +1 -1
- package/es-custom/globals/mixins/focus.js +2 -2
- package/es-custom/globals/mixins/focus.js.map +1 -1
- package/es-custom/globals/mixins/host-listener.js +1 -1
- package/es-custom/globals/mixins/host-listener.js.map +1 -1
- package/es-custom/globals/mixins/on.js +1 -1
- package/es-custom/globals/mixins/on.js.map +1 -1
- package/lib/components/combo-button/defs.d.ts +4 -0
- package/lib/components/combo-button/defs.js +4 -0
- package/lib/components/combo-button/defs.js.map +1 -1
- package/lib/components/feature-flags/index.d.ts +4 -0
- package/lib/components/overflow-menu/defs.d.ts +4 -0
- package/lib/components/overflow-menu/defs.js +4 -0
- package/lib/components/overflow-menu/defs.js.map +1 -1
- package/lib/components/pagination/pagination.d.ts +1 -1
- package/lib/components/progress-indicator/progress-indicator.d.ts +16 -2
- package/lib/components/progress-indicator/progress-step.d.ts +34 -9
- package/lib/components/toggle/toggle.d.ts +20 -3
- package/lib/globals/controllers/floating-controller.js +2 -2
- package/lib/globals/controllers/floating-controller.js.map +1 -1
- package/package.json +7 -7
- package/scss/components/button/button.scss +1 -1
- package/scss/components/overflow-menu/overflow-menu.scss +13 -0
- package/scss/components/progress-indicator/progress-indicator.scss +27 -6
- package/scss/components/select/select.scss +1 -0
- package/scss/components/toggle/toggle.scss +7 -0
- package/telemetry.yml +7 -9
- package/dist/button-CZUc-YJY.js +0 -93
- package/dist/content-switcher-item-BwX297Wt.js +0 -54
- package/dist/tooltip-content-Dpafcwrj.js +0 -30
- package/dist/{16-mnk48Km_.js → 16-B3Yskhl0.js} +1 -1
- package/dist/{16-Dm1C38gy.js → 16-B46MLj4i.js} +1 -1
- package/dist/{16-D7S2mZfx.js → 16-B7MRS_3W.js} +1 -1
- package/dist/{16-D5qURVFK.js → 16-BWlgPBcu.js} +1 -1
- package/dist/{16-_VZZTjD5.js → 16-Bf2P7KMJ.js} +1 -1
- package/dist/{16-CsCwHiDB.js → 16-Bxm7Omxq.js} +1 -1
- package/dist/{16-CBMBwbRd.js → 16-CJNlj_0b.js} +1 -1
- package/dist/{16-CUSZxKi3.js → 16-CdxGkvXO.js} +1 -1
- package/dist/{16-CpQfhph0.js → 16-DTvjc9uv.js} +1 -1
- package/dist/{16-qteMrX0q.js → 16-DhAznVKm.js} +1 -1
- package/dist/{16-CvYO9Wcs.js → 16-DoN7q01_.js} +1 -1
- package/dist/{16-CDsZibnu.js → 16-GKRs-ALp.js} +1 -1
- package/dist/{20-CxH6T12Q.js → 20-CuEbZLGA.js} +1 -1
- package/dist/{20-D2L4OBED.js → 20-DlknbFYR.js} +1 -1
- package/dist/{carbon-element-Bz4hUejX.js → carbon-element-DDrYm3XO.js} +1 -1
- package/dist/{collection-helpers-rDLReFyQ.js → collection-helpers-BslvaZFE.js} +1 -1
- package/dist/{consume-D-Uxx41O.js → consume-BeeFGGfo.js} +1 -1
- package/dist/{defs-B8Ti5atv.js → defs-CBJRLDfw.js} +1 -1
- package/dist/{directive-BnmT0ewj.js → directive-Dlo2OKiC.js} +1 -1
- package/dist/{floating-controller-C6KWPbMX.js → floating-controller-CnuSelc_.js} +1 -1
- package/dist/{host-listener-DtqTZPgM.js → host-listener-BCnAWDV7.js} +1 -1
- package/dist/{lit-element-ClYpehYk.js → lit-element-eFlPHqE1.js} +1 -1
- package/dist/{on-DsfjLQFb.js → on-DvnWS_DB.js} +1 -1
- package/dist/{query-C6TAHe0V.js → query-BdmT5Ln1.js} +1 -1
- package/dist/{radio-group-manager-dJ3qt5K5.js → radio-group-manager-B_pENWmT.js} +1 -1
- package/dist/{settings-BPpYX8TV.js → settings-FSuH8xHs.js} +1 -1
- package/dist/{shared-enums-DUU0Uftc.js → shared-enums-D8TrS6Ts.js} +1 -1
- package/dist/{validity-j3foP4ed.js → validity-BUGyJDQ6.js} +1 -1
|
@@ -65,7 +65,7 @@ let CDSLink = class CDSLink extends FocusMixin(LitElement) {
|
|
|
65
65
|
_handleSlotChange({ target }) {
|
|
66
66
|
const { name } = target;
|
|
67
67
|
const hasContent = target.assignedNodes().some(
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
69
69
|
(node) => node.nodeType !== Node.TEXT_NODE || node.textContent.trim());
|
|
70
70
|
this[name === 'icon' ? '_hasIcon' : ''] = hasContent;
|
|
71
71
|
this.requestUpdate();
|
|
@@ -73,7 +73,7 @@ let CDSLink = class CDSLink extends FocusMixin(LitElement) {
|
|
|
73
73
|
/**
|
|
74
74
|
* The CSS class list for the link node.
|
|
75
75
|
*/
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
77
77
|
get _classes() {
|
|
78
78
|
const { disabled, size, inline, visited, _hasIcon } = this;
|
|
79
79
|
return classMap({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../../src/components/link/link.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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 { ifDefined } from 'lit/directives/if-defined.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport FocusMixin from '../../globals/mixins/focus';\nimport styles from './link.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Link size.\n */\nexport const LINK_SIZE = {\n MEDIUM: 'md',\n SMALL: 'sm',\n LARGE: 'lg',\n};\n\n// Convert object key in a type\ntype LINK_SIZE_TYPE = (typeof LINK_SIZE)[keyof typeof LINK_SIZE];\n\n/**\n * Link.\n *\n * @element cds-link\n * @csspart link The link.\n */\n@customElement(`${prefix}-link`)\nclass CDSLink extends FocusMixin(LitElement) {\n /**\n * `true` if there is an icon.\n */\n private _hasIcon = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n const { name } = target as HTMLSlotElement;\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../../src/components/link/link.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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 { ifDefined } from 'lit/directives/if-defined.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport FocusMixin from '../../globals/mixins/focus';\nimport styles from './link.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Link size.\n */\nexport const LINK_SIZE = {\n MEDIUM: 'md',\n SMALL: 'sm',\n LARGE: 'lg',\n};\n\n// Convert object key in a type\ntype LINK_SIZE_TYPE = (typeof LINK_SIZE)[keyof typeof LINK_SIZE];\n\n/**\n * Link.\n *\n * @element cds-link\n * @csspart link The link.\n */\n@customElement(`${prefix}-link`)\nclass CDSLink extends FocusMixin(LitElement) {\n /**\n * `true` if there is an icon.\n */\n private _hasIcon = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n const { name } = target as HTMLSlotElement;\n const hasContent = (target as HTMLSlotElement).assignedNodes().some(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (node) => node.nodeType !== Node.TEXT_NODE || node!.textContent!.trim()\n );\n this[name === 'icon' ? '_hasIcon' : ''] = hasContent;\n this.requestUpdate();\n }\n\n @query('#link')\n protected _linkNode?: HTMLAnchorElement | HTMLParagraphElement;\n\n /**\n * The CSS class list for the link node.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n protected get _classes(): any {\n const { disabled, size, inline, visited, _hasIcon } = this;\n return classMap({\n [`${prefix}--link`]: true,\n [`${prefix}--link--disabled`]: disabled,\n [`${prefix}--link--icon`]: _hasIcon,\n [`${prefix}--link--inline`]: inline,\n [`${prefix}--link--${size}`]: size,\n [`${prefix}--link--visited`]: visited,\n });\n }\n\n /**\n * Handles `click` event on the `<a>`.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected _handleClick(_: MouseEvent) {}\n\n /**\n * @returns The inner content.\n */\n\n protected _renderInner() {\n const { _hasIcon: hasIcon, _handleSlotChange: handleSlotChange } = this;\n return html`\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n <div ?hidden=\"${!hasIcon}\" class=\"${prefix}--link__icon\">\n <slot name=\"icon\" @slotchange=\"${handleSlotChange}\"></slot>\n </div>\n `;\n }\n\n /**\n * @returns The disabled link content.\n */\n protected _renderDisabledLink() {\n const { _classes: classes } = this;\n return html`\n <p id=\"link\" part=\"link\" class=\"${classes}\">${this._renderInner()}</p>\n `;\n }\n\n /**\n * @returns The link content.\n */\n protected _renderLink() {\n const {\n download,\n href,\n hreflang,\n linkRole,\n ping,\n rel,\n target,\n type,\n _classes: classes,\n _handleClick: handleClick,\n } = this;\n return html`\n <a\n tabindex=\"0\"\n id=\"link\"\n role=\"${ifDefined(linkRole)}\"\n class=\"${classes}\"\n part=\"link\"\n download=\"${ifDefined(download)}\"\n href=\"${ifDefined(href)}\"\n hreflang=\"${ifDefined(hreflang)}\"\n ping=\"${ifDefined(ping)}\"\n rel=\"${ifDefined(rel)}\"\n target=\"${ifDefined(target)}\"\n type=\"${ifDefined(type)}\"\n @click=\"${handleClick}\">\n ${this._renderInner()}\n </a>\n `;\n }\n\n /**\n * `true` if the link should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * The default file name.\n */\n @property({ reflect: true })\n download!: string;\n\n /**\n * Link `href`.\n */\n @property({ reflect: true })\n href!: string;\n\n /**\n * The language of what `href` points to.\n */\n @property({ reflect: true })\n hreflang!: string;\n\n /**\n * `true` if the link should be inline.\n */\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n /**\n * The a11y role for `<a>`.\n */\n @property({ attribute: 'link-role' })\n linkRole!: string;\n\n /**\n * URLs to ping.\n */\n @property({ reflect: true })\n ping!: string;\n\n /**\n * The link type.\n */\n @property({ reflect: true })\n rel!: string;\n\n /**\n * Link size.\n */\n @property({ reflect: true })\n size: LINK_SIZE_TYPE = LINK_SIZE.MEDIUM;\n\n /**\n * The link target.\n */\n @property({ reflect: true })\n target!: string;\n\n /**\n * MIME type of the `target`.\n */\n @property({ reflect: true })\n type!: string;\n\n /**\n * `true` if the link has been visited.\n */\n @property({ type: Boolean, reflect: true })\n visited = false;\n\n render() {\n const { disabled } = this;\n return disabled ? this._renderDisabledLink() : this._renderLink();\n }\n\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n static styles = styles;\n}\n\nexport default CDSLink;\n"],"names":["customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-context.js","sources":["../../../src/components/menu/menu-context.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024\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 { createContext } from '@lit/context';\nexport type StateType = {\n isRoot: boolean;\n hasSelectableItems: boolean;\n size: 'xs' | 'sm' | 'md' | 'lg' | null;\n //eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/
|
|
1
|
+
{"version":3,"file":"menu-context.js","sources":["../../../src/components/menu/menu-context.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024\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 { createContext } from '@lit/context';\nexport type StateType = {\n isRoot: boolean;\n hasSelectableItems: boolean;\n size: 'xs' | 'sm' | 'md' | 'lg' | null;\n //eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/20452\n updateFromChild: (item: {}) => void;\n};\n\nexport const menuDefaultState: StateType = {\n isRoot: true,\n hasSelectableItems: false,\n size: null,\n updateFromChild: () => {},\n};\n\nexport const MenuContext = createContext<StateType>('myData');\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;AAKG;AAWU,MAAA,gBAAgB,GAAc;AACzC,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,eAAe,EAAE,MAAK,GAAG;;MAGd,WAAW,GAAG,aAAa,CAAY,QAAQ;;;;"}
|
|
@@ -188,7 +188,7 @@ let CDSmenuItem = class CDSmenuItem extends HostListenerMixin(HostListenerMixin(
|
|
|
188
188
|
this._closeSubmenu();
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
191
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
192
192
|
updated(_changedProperties) {
|
|
193
193
|
if (this.hasSubmenu) {
|
|
194
194
|
this.setAttribute('aria-expanded', this.hasSubmenu + '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","sources":["../../../src/components/menu/menu-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2025\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 { LitElement, PropertyValues, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport styles from './menu-item.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { consume } from '@lit/context';\nimport { MenuContext } from './menu-context';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport CaretLeft16 from '@carbon/icons/es/caret--left/16.js';\nimport CaretRight16 from '@carbon/icons/es/caret--right/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MENU_ITEM_KIND, MENU_SIZE } from './defs';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { MENU_ITEM_KIND, MENU_SIZE };\n\n/**\n * Menu Item.\n *\n * @element cds-menu-item\n */\n@customElement(`${prefix}-menu-item`)\nclass CDSmenuItem extends HostListenerMixin(HostListenerMixin(LitElement)) {\n @consume({ context: MenuContext })\n context;\n\n readonly hoverIntentDelay = 150; // in ms\n hoverIntentTimeout;\n /**\n * Label for the menu item.\n */\n @property({ type: String })\n label;\n /**\n * Shortcut for the menu item.\n */\n @property({ type: String })\n shortcut;\n /**\n * Disabled property for the menu item.\n */\n @property({ type: Boolean })\n disabled;\n\n /**\n * Whether the menu submen for an item is open or not.\n */\n @property({ type: Boolean })\n submenuOpen = false;\n\n @property()\n kind = MENU_ITEM_KIND.DEFAULT;\n /**\n * Menu boundaries.\n */\n @property()\n boundaries: {\n x: number | [number, number];\n y: number | [number, number];\n } = { x: -1, y: -1 };\n\n @property({ attribute: 'aria-checked' })\n ariaChecked: string | null = this.getAttribute('selected') ?? 'false';\n\n /**\n * Entrypoint.\n */\n @state()\n submenuEntry;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n isRtl = false;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n hasSubmenu = false;\n\n async dispatchIconDetect() {\n const hasRenderIcon = !!this.querySelector('[slot=\"render-icon\"]');\n if (hasRenderIcon) {\n await undefined; // this is used to replace setTimeout with 0 time out, which is much fater.\n this.dispatchEvent(\n new CustomEvent('icon-detect', {\n bubbles: true, // Allows event to bubble up the DOM\n composed: true, // Allows event to cross shadow DOM boundary\n })\n );\n }\n }\n\n private _updateAttributes() {\n if (this.disabled && !this.hasSubmenu) {\n this.setAttribute('aria-disabled', this.disabled);\n this.setAttribute('tabindex', '-1');\n } else {\n this.removeAttribute('aria-disabled');\n this.setAttribute('tabindex', '0');\n }\n if (this.hasSubmenu) {\n this.setAttribute('aria-haspopup', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-haspopup');\n }\n if (this.closest(`${prefix}-menu-item-radio-group`)) {\n this.setAttribute('role', 'menuitemradio');\n this.setAttribute('aria-checked', this.ariaChecked + '');\n } else if (!this.getAttribute('role')) {\n this.setAttribute('role', 'menuitem');\n }\n }\n\n firstUpdated() {\n this.hasSubmenu = !!this.querySelector('[slot=\"submenu\"]');\n\n this.dispatchIconDetect();\n this.isRtl = document.dir === 'rtl';\n this._registerSubMenuItems();\n\n this._updateAttributes();\n\n this.addEventListener(`${prefix}-menu-closed`, () => {\n this.focus();\n this._closeSubmenu();\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20071\n updated(_changedProperties: PropertyValues): void {\n if (this.hasSubmenu) {\n this.setAttribute('aria-expanded', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-expanded');\n }\n if (this.kind === MENU_ITEM_KIND.DANGER)\n this.classList.toggle(`${prefix}--menu-item--danger`);\n }\n\n @HostListener('click', { capture: true })\n handleClick(event: MouseEvent) {\n this._handleClick(event);\n }\n\n @HostListener('mouseenter')\n handleMouseEnter() {\n if (this.hasSubmenu) {\n this._handleMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave() {\n if (this.hasSubmenu) {\n this._handleMouseLeave();\n }\n }\n\n @HostListener('keydown')\n handleKeyDown(event: KeyboardEvent) {\n this._handleKeyDown(event);\n }\n\n render() {\n const { label, shortcut, submenuOpen, boundaries, isRtl } = this;\n\n const menuClassName = this.context?.hasSelectableItems\n ? `${prefix}--menu--with-selectable-items`\n : '';\n\n return html`\n <div class=\"${prefix}--menu-item__selection-icon\">\n ${this.ariaChecked === 'true' ? iconLoader(Checkmark16) : undefined}\n </div>\n\n <div class=\"${prefix}--menu-item__icon\">\n <slot name=\"render-icon\"></slot>\n </div>\n <div class=\"${prefix}--menu-item__label\">${label}</div>\n ${shortcut && !this.hasSubmenu\n ? html` <div class=\"${prefix}--menu-item__shortcut\">${shortcut}</div> `\n : html``}\n ${this.hasSubmenu\n ? html`\n <div class=\"${prefix}--menu-item__shortcut\">\n ${isRtl ? iconLoader(CaretLeft16) : iconLoader(CaretRight16)}\n </div>\n <cds-menu\n className=${menuClassName}\n size=${this.parentElement?.getAttribute('size') ??\n MENU_SIZE.LARGE}\n ?isChild=\"${this.hasSubmenu}\"\n label=\"${label}\"\n .open=\"${submenuOpen}\"\n .x=\"${boundaries.x}\"\n .y=\"${boundaries.y}\">\n <slot name=\"submenu\"></slot>\n </cds-menu>\n `\n : html``}\n `;\n }\n\n _handleClick = (e: MouseEvent | KeyboardEvent): void => {\n if (this.hasSubmenu) {\n this._openSubmenu();\n } else if (e.type === 'keydown') {\n this.click();\n }\n };\n _handleMouseEnter = () => {\n this.hoverIntentTimeout = setTimeout(() => {\n this._openSubmenu();\n }, this.hoverIntentDelay);\n };\n _handleMouseLeave = () => {\n if (this.hoverIntentTimeout) {\n clearTimeout(this.hoverIntentTimeout);\n this._closeSubmenu();\n this.focus();\n }\n };\n _openSubmenu = () => {\n const { x, y, width, height } = this.getBoundingClientRect();\n if (this.isRtl) {\n this.boundaries = {\n x: [-x, x - width],\n y: [y, y + height],\n };\n } else {\n this.boundaries = {\n x: [x, x + width],\n y: [y, y + height],\n };\n }\n this.submenuOpen = true;\n };\n _registerSubMenuItems = () => {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n const submenuSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"submenu\"]'\n ) as HTMLSlotElement;\n\n const item = submenuSlot?.assignedElements?.()?.[0];\n if (item) {\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP':\n this.submenuEntry = item.querySelector(`${prefix}-menu-item`);\n break;\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n const firstElement = slotElements?.length && slotElements[0];\n this.submenuEntry = firstElement;\n break;\n }\n case 'CDS-MENU-ITEM':\n this.submenuEntry = item;\n break;\n }\n }\n }\n }\n });\n observer.observe(this.shadowRoot as Node, {\n childList: true,\n subtree: true,\n });\n };\n _closeSubmenu = () => {\n this.boundaries = {\n x: -1,\n y: -1,\n };\n this.submenuOpen = false;\n (\n this.shadowRoot?.querySelector(`.${prefix}--menu-item`) as HTMLLIElement\n )?.focus();\n };\n _handleKeyDown = (e: KeyboardEvent) => {\n if (this.hasSubmenu && ['ArrowRight', 'Enter', ' '].includes(e.key)) {\n this._openSubmenu();\n setTimeout(() => {\n this.submenuEntry.focus();\n });\n e.stopPropagation();\n } else if (e.key === 'Enter' || e.key === ' ') {\n this._handleClick(e);\n }\n };\n\n static styles = styles;\n}\nexport default CDSmenuItem;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu-item.js","sources":["../../../src/components/menu/menu-item.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2025\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 { LitElement, PropertyValues, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport styles from './menu-item.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { consume } from '@lit/context';\nimport { MenuContext } from './menu-context';\nimport Checkmark16 from '@carbon/icons/es/checkmark/16.js';\nimport CaretLeft16 from '@carbon/icons/es/caret--left/16.js';\nimport CaretRight16 from '@carbon/icons/es/caret--right/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MENU_ITEM_KIND, MENU_SIZE } from './defs';\nimport { iconLoader } from '../../globals/internal/icon-loader';\n\nexport { MENU_ITEM_KIND, MENU_SIZE };\n\n/**\n * Menu Item.\n *\n * @element cds-menu-item\n */\n@customElement(`${prefix}-menu-item`)\nclass CDSmenuItem extends HostListenerMixin(HostListenerMixin(LitElement)) {\n @consume({ context: MenuContext })\n context;\n\n readonly hoverIntentDelay = 150; // in ms\n hoverIntentTimeout;\n /**\n * Label for the menu item.\n */\n @property({ type: String })\n label;\n /**\n * Shortcut for the menu item.\n */\n @property({ type: String })\n shortcut;\n /**\n * Disabled property for the menu item.\n */\n @property({ type: Boolean })\n disabled;\n\n /**\n * Whether the menu submen for an item is open or not.\n */\n @property({ type: Boolean })\n submenuOpen = false;\n\n @property()\n kind = MENU_ITEM_KIND.DEFAULT;\n /**\n * Menu boundaries.\n */\n @property()\n boundaries: {\n x: number | [number, number];\n y: number | [number, number];\n } = { x: -1, y: -1 };\n\n @property({ attribute: 'aria-checked' })\n ariaChecked: string | null = this.getAttribute('selected') ?? 'false';\n\n /**\n * Entrypoint.\n */\n @state()\n submenuEntry;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n isRtl = false;\n /**\n * Checks if document direction is rtl.\n */\n @state()\n hasSubmenu = false;\n\n async dispatchIconDetect() {\n const hasRenderIcon = !!this.querySelector('[slot=\"render-icon\"]');\n if (hasRenderIcon) {\n await undefined; // this is used to replace setTimeout with 0 time out, which is much fater.\n this.dispatchEvent(\n new CustomEvent('icon-detect', {\n bubbles: true, // Allows event to bubble up the DOM\n composed: true, // Allows event to cross shadow DOM boundary\n })\n );\n }\n }\n\n private _updateAttributes() {\n if (this.disabled && !this.hasSubmenu) {\n this.setAttribute('aria-disabled', this.disabled);\n this.setAttribute('tabindex', '-1');\n } else {\n this.removeAttribute('aria-disabled');\n this.setAttribute('tabindex', '0');\n }\n if (this.hasSubmenu) {\n this.setAttribute('aria-haspopup', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-haspopup');\n }\n if (this.closest(`${prefix}-menu-item-radio-group`)) {\n this.setAttribute('role', 'menuitemradio');\n this.setAttribute('aria-checked', this.ariaChecked + '');\n } else if (!this.getAttribute('role')) {\n this.setAttribute('role', 'menuitem');\n }\n }\n\n firstUpdated() {\n this.hasSubmenu = !!this.querySelector('[slot=\"submenu\"]');\n\n this.dispatchIconDetect();\n this.isRtl = document.dir === 'rtl';\n this._registerSubMenuItems();\n\n this._updateAttributes();\n\n this.addEventListener(`${prefix}-menu-closed`, () => {\n this.focus();\n this._closeSubmenu();\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452\n updated(_changedProperties: PropertyValues): void {\n if (this.hasSubmenu) {\n this.setAttribute('aria-expanded', this.hasSubmenu + '');\n } else {\n this.removeAttribute('aria-expanded');\n }\n if (this.kind === MENU_ITEM_KIND.DANGER)\n this.classList.toggle(`${prefix}--menu-item--danger`);\n }\n\n @HostListener('click', { capture: true })\n handleClick(event: MouseEvent) {\n this._handleClick(event);\n }\n\n @HostListener('mouseenter')\n handleMouseEnter() {\n if (this.hasSubmenu) {\n this._handleMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n handleMouseLeave() {\n if (this.hasSubmenu) {\n this._handleMouseLeave();\n }\n }\n\n @HostListener('keydown')\n handleKeyDown(event: KeyboardEvent) {\n this._handleKeyDown(event);\n }\n\n render() {\n const { label, shortcut, submenuOpen, boundaries, isRtl } = this;\n\n const menuClassName = this.context?.hasSelectableItems\n ? `${prefix}--menu--with-selectable-items`\n : '';\n\n return html`\n <div class=\"${prefix}--menu-item__selection-icon\">\n ${this.ariaChecked === 'true' ? iconLoader(Checkmark16) : undefined}\n </div>\n\n <div class=\"${prefix}--menu-item__icon\">\n <slot name=\"render-icon\"></slot>\n </div>\n <div class=\"${prefix}--menu-item__label\">${label}</div>\n ${shortcut && !this.hasSubmenu\n ? html` <div class=\"${prefix}--menu-item__shortcut\">${shortcut}</div> `\n : html``}\n ${this.hasSubmenu\n ? html`\n <div class=\"${prefix}--menu-item__shortcut\">\n ${isRtl ? iconLoader(CaretLeft16) : iconLoader(CaretRight16)}\n </div>\n <cds-menu\n className=${menuClassName}\n size=${this.parentElement?.getAttribute('size') ??\n MENU_SIZE.LARGE}\n ?isChild=\"${this.hasSubmenu}\"\n label=\"${label}\"\n .open=\"${submenuOpen}\"\n .x=\"${boundaries.x}\"\n .y=\"${boundaries.y}\">\n <slot name=\"submenu\"></slot>\n </cds-menu>\n `\n : html``}\n `;\n }\n\n _handleClick = (e: MouseEvent | KeyboardEvent): void => {\n if (this.hasSubmenu) {\n this._openSubmenu();\n } else if (e.type === 'keydown') {\n this.click();\n }\n };\n _handleMouseEnter = () => {\n this.hoverIntentTimeout = setTimeout(() => {\n this._openSubmenu();\n }, this.hoverIntentDelay);\n };\n _handleMouseLeave = () => {\n if (this.hoverIntentTimeout) {\n clearTimeout(this.hoverIntentTimeout);\n this._closeSubmenu();\n this.focus();\n }\n };\n _openSubmenu = () => {\n const { x, y, width, height } = this.getBoundingClientRect();\n if (this.isRtl) {\n this.boundaries = {\n x: [-x, x - width],\n y: [y, y + height],\n };\n } else {\n this.boundaries = {\n x: [x, x + width],\n y: [y, y + height],\n };\n }\n this.submenuOpen = true;\n };\n _registerSubMenuItems = () => {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n const submenuSlot = this.shadowRoot?.querySelector(\n 'slot[name=\"submenu\"]'\n ) as HTMLSlotElement;\n\n const item = submenuSlot?.assignedElements?.()?.[0];\n if (item) {\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP':\n this.submenuEntry = item.querySelector(`${prefix}-menu-item`);\n break;\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n const firstElement = slotElements?.length && slotElements[0];\n this.submenuEntry = firstElement;\n break;\n }\n case 'CDS-MENU-ITEM':\n this.submenuEntry = item;\n break;\n }\n }\n }\n }\n });\n observer.observe(this.shadowRoot as Node, {\n childList: true,\n subtree: true,\n });\n };\n _closeSubmenu = () => {\n this.boundaries = {\n x: -1,\n y: -1,\n };\n this.submenuOpen = false;\n (\n this.shadowRoot?.querySelector(`.${prefix}--menu-item`) as HTMLLIElement\n )?.focus();\n };\n _handleKeyDown = (e: KeyboardEvent) => {\n if (this.hasSubmenu && ['ArrowRight', 'Enter', ' '].includes(e.key)) {\n this._openSubmenu();\n setTimeout(() => {\n this.submenuEntry.focus();\n });\n e.stopPropagation();\n } else if (e.key === 'Enter' || e.key === ' ') {\n this._handleClick(e);\n }\n };\n\n static styles = styles;\n}\nexport default CDSmenuItem;\n"],"names":["customElement"],"mappings":"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"}
|
|
@@ -473,7 +473,7 @@ __decorate([
|
|
|
473
473
|
], CDSMenu.prototype, "y", void 0);
|
|
474
474
|
__decorate([
|
|
475
475
|
HostListener('focusout')
|
|
476
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
476
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
477
477
|
// @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
|
|
478
478
|
], CDSMenu.prototype, "_handleBlur", void 0);
|
|
479
479
|
CDSMenu = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sources":["../../../src/components/menu/menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024, 2025\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 { LitElement, html } from 'lit';\nimport { prefix } from '../../globals/settings';\nimport { property, state } from 'lit/decorators.js';\nimport styles from './menu.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { MenuContext, menuDefaultState } from './menu-context';\nimport CDSmenuItem from './menu-item';\nimport { consume, provide } from '@lit/context';\nimport { MENU_SIZE } from './defs';\n\nexport { MENU_SIZE };\n\n/**\n * Menu.\n *\n * @element cds-menu\n * @deprecated Menus now always support both icons as well as selectable items and nesting.\n */\n\ntype activeItemType = {\n item: CDSmenuItem;\n parent: HTMLElement | null;\n};\n\n@customElement(`${prefix}-menu`)\nclass CDSMenu extends HostListenerMixin(LitElement) {\n @provide({ context: MenuContext })\n @consume({ context: MenuContext })\n context = {\n ...menuDefaultState,\n updateFromChild: (updatedItem) => {\n this.context = {\n ...this.context,\n ...updatedItem,\n };\n },\n };\n\n readonly spacing: number = 8; // distance to keep to window edges, in px\n\n /**\n * Items.\n */\n @state()\n items: Element[] | undefined = [];\n\n /**\n * Active list Items.\n */\n @state()\n activeitems: activeItemType[] = [];\n\n /**\n * Label for the menu.\n */\n @property({ type: String })\n label;\n /**\n * Parent state.\n */\n @property({ type: Boolean })\n isChild = false;\n /**\n * Action button width.\n */\n @property()\n actionButtonWidth;\n /**\n * Checks if document direction is rtl.\n */\n @property({ type: Boolean })\n isRtl = false;\n /**\n * Checks if Menu is root menu or not.\n */\n @property({ type: Boolean })\n isRoot = true;\n\n /**\n * Document direction.\n */\n @property({ type: String })\n direction = 'ltr';\n /**\n * Open value for the menu .\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n /**\n * Active element in the DOM .\n */\n @property({ type: HTMLElement })\n focusreturn;\n /**\n * Position of the Menu .\n */\n @property()\n position = [-1, -1];\n /**\n * Size attribute .\n */\n @property({ attribute: true })\n size = MENU_SIZE.SMALL;\n /**\n * Deprecated: Menus now always support both icons as well as selectable items and nesting. The mode of this menu. Defaults to full. full supports nesting and selectable menu items, but no icons. basic supports icons but no nesting or selectable menu items.\n\n This prop is not intended for use and will be set by the respective implementation (like useContextMenu, MenuButton, and ComboButton).\n */\n @property()\n mode;\n\n /**\n * Specify how the menu should align with the button element\n */\n @property({ type: String })\n menuAlignment;\n /**\n * Position of the Menu in X axis .\n */\n @property()\n x: number | number[] = 0;\n /**\n * Position of the Menu in Y axis .\n */\n @property()\n y: number | number[] = 0;\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = (e: FocusEvent) => {\n const { isRoot } = this.context;\n // Close the menu if all of the following are met:\n // * The menu is open\n // * The focusout event is on the root menu\n // * Focus is moving outside the menu\n if (this.open && isRoot && !this.contains(e.relatedTarget as Node)) {\n this.dispatchCloseEvent(e);\n }\n };\n\n /**\n * The name of the custom event fired when the the Menu should be closed.\n */\n static get eventOnClose() {\n return `${prefix}-menu-closed`;\n }\n /**\n * The name of the custom event fired when the the Menu should be opened.\n */\n static get eventOnOpen() {\n return `${prefix}-menu-opened`;\n }\n updated(changedProperties) {\n if (changedProperties.has('open') && this.open) {\n this._handleOpen();\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('icon-detect', () => {\n this.shadowRoot\n ?.querySelector('.cds--menu')\n ?.classList.add(`${prefix}--menu--with-icons`);\n });\n }\n async firstUpdated() {\n this.isRtl = this.direction === 'rtl';\n this.isRoot = this.context.isRoot;\n\n if (this.isChild) {\n this._newContextCreate();\n }\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', () => {\n this._registerMenuItems();\n this._setActiveItems();\n });\n }\n render() {\n const {\n open,\n menuAlignment,\n label,\n position,\n _handleKeyDown: handleKeyDown,\n } = this;\n const menuClasses = classMap({\n [`${prefix}--menu`]: true,\n [`${prefix}--menu--${this.size}`]: this.size,\n [`${prefix}--menu--box-shadow-top`]:\n menuAlignment && menuAlignment.slice(0, 3) === 'top',\n [`${prefix}--menu--open`]: open,\n [`${prefix}--menu--shown`]: position[0] >= 0 && position[1] >= 0,\n [`${prefix}--menu--with-selectable-items`]:\n this.context.hasSelectableItems,\n });\n return html`\n <ul\n class=\"${menuClasses}\"\n aria-label=\"${label}\"\n tabindex=\"-1\"\n @keydown=\"${handleKeyDown}\"\n role=\"menu\">\n <slot></slot>\n </ul>\n `;\n }\n\n _handleKeyDown = (e: KeyboardEvent) => {\n const { isRoot } = this.context;\n e.stopPropagation();\n // if the user presses escape or this is a submenu\n // and the user presses ArrowLeft, close it\n\n if (e.key === 'Escape' || (!isRoot && e.key === 'ArrowLeft')) {\n this.dispatchCloseEvent(e);\n } else {\n // Prevent scrolling when navigating menu items\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n this._focusItem(e);\n }\n };\n\n _focusItem = (e: KeyboardEvent | undefined) => {\n let currentItem: number;\n\n if (document.activeElement?.tagName !== 'CDS-MENU') {\n const shadowRootActiveEl = this._findActiveElementInShadowRoot(document);\n currentItem = this.activeitems.findIndex((activeItem) => {\n return (\n shadowRootActiveEl == activeItem.item ||\n activeItem.item.shadowRoot?.activeElement === shadowRootActiveEl\n );\n });\n } else {\n currentItem = 0;\n }\n\n let indexToFocus = currentItem;\n // if currentItem is -1, no menu item is focused yet.\n // in this case, the first item should receive focus.\n if (currentItem === -1) {\n indexToFocus = 0;\n } else if (e) {\n if (e.key === 'ArrowUp') {\n indexToFocus = indexToFocus - 1;\n }\n if (e.key === 'ArrowDown') {\n indexToFocus = indexToFocus + 1;\n }\n }\n if (indexToFocus < 0) {\n indexToFocus = this.activeitems.length - 1;\n }\n if (indexToFocus >= this.activeitems.length) {\n indexToFocus = 0;\n }\n\n if (indexToFocus !== currentItem) {\n this.activeitems[indexToFocus]?.item?.focus();\n }\n };\n _findActiveElementInShadowRoot = (shadowRoot) => {\n if (shadowRoot === null) return null;\n\n let activeElement = shadowRoot.activeElement;\n while (\n activeElement &&\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n };\n\n _notEmpty = (value: number | null | undefined) => {\n return value !== null && value !== undefined;\n };\n _fitValue = (range: number[], axis: 'x' | 'y') => {\n const { isRoot } = this.context;\n\n // const isRoot = false\n const { width, height } = this.getBoundingClientRect();\n const alignment = isRoot ? 'vertical' : 'horizontal';\n const axes = {\n x: {\n max: window.innerWidth,\n size: width,\n anchor: alignment === 'horizontal' ? range[1] : range[0],\n reversedAnchor: alignment === 'horizontal' ? range[0] : range[1],\n offset: 0,\n },\n y: {\n max: window.innerHeight,\n size: height,\n anchor: alignment === 'horizontal' ? range[0] : range[1],\n reversedAnchor: alignment === 'horizontal' ? range[1] : range[0],\n offset: isRoot ? 0 : 4, // top padding in menu, used to align the menu items\n },\n };\n\n // Avoid that the Menu render incorrectly when the postion is set in the right side of the screen\n if (\n this.actionButtonWidth &&\n this.actionButtonWidth < axes.x.size &&\n (this.menuAlignment === 'bottom' || this.menuAlignment === 'top')\n ) {\n axes.x.size = this.actionButtonWidth;\n }\n\n // if 'axes.x.anchor' is lower than 87px dynamically switch render side\n if (\n this.actionButtonWidth &&\n (this.menuAlignment === 'bottom-end' ||\n this.menuAlignment === 'top-end') &&\n axes.x.anchor >= 87 &&\n this.actionButtonWidth < axes.x.size\n ) {\n const diff = axes.x.anchor + axes.x.reversedAnchor;\n axes.x.anchor = axes.x.anchor + diff;\n }\n\n const { max, size, anchor, reversedAnchor, offset } = axes[axis];\n\n // get values for different scenarios, set to false if they don't work\n const options = [\n // towards max (preferred)\n max - this.spacing - size - anchor >= 0 ? anchor - offset : false,\n\n // towards min / reversed (first fallback)\n reversedAnchor - size >= 0 ? reversedAnchor - size + offset : false,\n\n // align at max (second fallback)\n max - this.spacing - size,\n ];\n const topAlignment =\n this.menuAlignment === 'top' ||\n this.menuAlignment === 'top-end' ||\n this.menuAlignment === 'top-start';\n // If the tooltip is not visible in the top, switch to the bototm\n if (\n typeof options[0] === 'number' &&\n topAlignment &&\n options[0] >= 0 &&\n !options[1] &&\n axis === 'y'\n ) {\n this.style.transform = 'translate(0)';\n } else if (topAlignment && !options[0] && axis === 'y') {\n options[0] = anchor - offset;\n }\n\n // Previous array `options`, has at least one item that is a number (the last one - second fallback).\n // That guarantees that the return of `find()` will always be a number\n // and we can safely add the numeric casting `as number`.\n const bestOption = options.find((option) => option !== false) as number;\n\n return bestOption >= this.spacing ? bestOption : this.spacing;\n };\n _getPosition = (x: number | (number | null | undefined)[]) => {\n if (Array.isArray(x)) {\n // has to be of length 2\n const filtered = x.filter(this._notEmpty);\n if (filtered.length === 2) {\n return filtered;\n } else {\n return;\n }\n } else {\n return [x, x];\n }\n };\n _calculatePosition = () => {\n const ranges = {\n x: this._getPosition(this.x),\n y: this._getPosition(this.y),\n };\n\n if (!ranges.x || !ranges.y) {\n return [-1, -1];\n }\n return [\n this._fitValue(ranges.x as number[], 'x') ?? -1,\n this._fitValue(ranges.y as number[], 'y') ?? -1,\n ];\n };\n _handleOpen = async () => {\n const pos = this._calculatePosition();\n if (this.isRtl) {\n this.style.insetInlineStart = `initial`;\n this.style.insetInlineEnd = `${pos[0]}px`;\n } else {\n this.style.insetInlineStart = `${pos[0]}px`;\n this.style.insetInlineEnd = `initial`;\n }\n this.style.insetBlockStart = `${pos[1]}px`;\n this.position = pos;\n\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n );\n }\n };\n dispatchCloseEvent = (e) => {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: e.target,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n );\n }\n };\n _newContextCreate = () => {\n this.context = {\n ...this.context,\n isRoot: false,\n size: this.size,\n };\n };\n _registerMenuItems = () => {\n let items;\n if (this.isChild) {\n items = (\n this.querySelector('slot[name=\"submenu\"]') as HTMLSlotElement\n ).assignedElements();\n } else {\n items = this.shadowRoot?.querySelector('slot')?.assignedElements();\n }\n this.items = items?.filter((item) => {\n if (item.tagName === 'CDS-MENU-ITEM') {\n return !(item as CDSmenuItem).disabled;\n }\n return item.tagName !== 'CDS-MENU-ITEM-DIVIDER';\n });\n };\n _setActiveItems = () => {\n this.activeitems = [];\n\n this.items?.map((item) => {\n let activeItem: activeItemType;\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP': {\n const slotElements = item.querySelectorAll(`${prefix}-menu-item`);\n if (slotElements?.length) {\n for (const entry of slotElements.entries()) {\n activeItem = {\n item: entry[1] as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n break;\n }\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n slotElements?.map((el) => {\n activeItem = {\n item: el as CDSmenuItem,\n parent: el as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n });\n break;\n }\n case 'CDS-MENU-ITEM-SELECTABLE': {\n activeItem = {\n item: item.shadowRoot?.querySelector(\n `${prefix}-menu-item`\n ) as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n break;\n }\n default: {\n activeItem = {\n item: item as CDSmenuItem,\n parent: null,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n });\n const activeEl = this.activeitems[0]?.item ?? document.activeElement;\n activeEl.focus();\n };\n static styles = styles;\n}\nexport default CDSMenu;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.js","sources":["../../../src/components/menu/menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024, 2025\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 { LitElement, html } from 'lit';\nimport { prefix } from '../../globals/settings';\nimport { property, state } from 'lit/decorators.js';\nimport styles from './menu.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { MenuContext, menuDefaultState } from './menu-context';\nimport CDSmenuItem from './menu-item';\nimport { consume, provide } from '@lit/context';\nimport { MENU_SIZE } from './defs';\n\nexport { MENU_SIZE };\n\n/**\n * Menu.\n *\n * @element cds-menu\n * @deprecated Menus now always support both icons as well as selectable items and nesting.\n */\n\ntype activeItemType = {\n item: CDSmenuItem;\n parent: HTMLElement | null;\n};\n\n@customElement(`${prefix}-menu`)\nclass CDSMenu extends HostListenerMixin(LitElement) {\n @provide({ context: MenuContext })\n @consume({ context: MenuContext })\n context = {\n ...menuDefaultState,\n updateFromChild: (updatedItem) => {\n this.context = {\n ...this.context,\n ...updatedItem,\n };\n },\n };\n\n readonly spacing: number = 8; // distance to keep to window edges, in px\n\n /**\n * Items.\n */\n @state()\n items: Element[] | undefined = [];\n\n /**\n * Active list Items.\n */\n @state()\n activeitems: activeItemType[] = [];\n\n /**\n * Label for the menu.\n */\n @property({ type: String })\n label;\n /**\n * Parent state.\n */\n @property({ type: Boolean })\n isChild = false;\n /**\n * Action button width.\n */\n @property()\n actionButtonWidth;\n /**\n * Checks if document direction is rtl.\n */\n @property({ type: Boolean })\n isRtl = false;\n /**\n * Checks if Menu is root menu or not.\n */\n @property({ type: Boolean })\n isRoot = true;\n\n /**\n * Document direction.\n */\n @property({ type: String })\n direction = 'ltr';\n /**\n * Open value for the menu .\n */\n @property({ type: Boolean, reflect: true })\n open = true;\n /**\n * Active element in the DOM .\n */\n @property({ type: HTMLElement })\n focusreturn;\n /**\n * Position of the Menu .\n */\n @property()\n position = [-1, -1];\n /**\n * Size attribute .\n */\n @property({ attribute: true })\n size = MENU_SIZE.SMALL;\n /**\n * Deprecated: Menus now always support both icons as well as selectable items and nesting. The mode of this menu. Defaults to full. full supports nesting and selectable menu items, but no icons. basic supports icons but no nesting or selectable menu items.\n\n This prop is not intended for use and will be set by the respective implementation (like useContextMenu, MenuButton, and ComboButton).\n */\n @property()\n mode;\n\n /**\n * Specify how the menu should align with the button element\n */\n @property({ type: String })\n menuAlignment;\n /**\n * Position of the Menu in X axis .\n */\n @property()\n x: number | number[] = 0;\n /**\n * Position of the Menu in Y axis .\n */\n @property()\n y: number | number[] = 0;\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: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = (e: FocusEvent) => {\n const { isRoot } = this.context;\n // Close the menu if all of the following are met:\n // * The menu is open\n // * The focusout event is on the root menu\n // * Focus is moving outside the menu\n if (this.open && isRoot && !this.contains(e.relatedTarget as Node)) {\n this.dispatchCloseEvent(e);\n }\n };\n\n /**\n * The name of the custom event fired when the the Menu should be closed.\n */\n static get eventOnClose() {\n return `${prefix}-menu-closed`;\n }\n /**\n * The name of the custom event fired when the the Menu should be opened.\n */\n static get eventOnOpen() {\n return `${prefix}-menu-opened`;\n }\n updated(changedProperties) {\n if (changedProperties.has('open') && this.open) {\n this._handleOpen();\n }\n }\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('icon-detect', () => {\n this.shadowRoot\n ?.querySelector('.cds--menu')\n ?.classList.add(`${prefix}--menu--with-icons`);\n });\n }\n async firstUpdated() {\n this.isRtl = this.direction === 'rtl';\n this.isRoot = this.context.isRoot;\n\n if (this.isChild) {\n this._newContextCreate();\n }\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', () => {\n this._registerMenuItems();\n this._setActiveItems();\n });\n }\n render() {\n const {\n open,\n menuAlignment,\n label,\n position,\n _handleKeyDown: handleKeyDown,\n } = this;\n const menuClasses = classMap({\n [`${prefix}--menu`]: true,\n [`${prefix}--menu--${this.size}`]: this.size,\n [`${prefix}--menu--box-shadow-top`]:\n menuAlignment && menuAlignment.slice(0, 3) === 'top',\n [`${prefix}--menu--open`]: open,\n [`${prefix}--menu--shown`]: position[0] >= 0 && position[1] >= 0,\n [`${prefix}--menu--with-selectable-items`]:\n this.context.hasSelectableItems,\n });\n return html`\n <ul\n class=\"${menuClasses}\"\n aria-label=\"${label}\"\n tabindex=\"-1\"\n @keydown=\"${handleKeyDown}\"\n role=\"menu\">\n <slot></slot>\n </ul>\n `;\n }\n\n _handleKeyDown = (e: KeyboardEvent) => {\n const { isRoot } = this.context;\n e.stopPropagation();\n // if the user presses escape or this is a submenu\n // and the user presses ArrowLeft, close it\n\n if (e.key === 'Escape' || (!isRoot && e.key === 'ArrowLeft')) {\n this.dispatchCloseEvent(e);\n } else {\n // Prevent scrolling when navigating menu items\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n this._focusItem(e);\n }\n };\n\n _focusItem = (e: KeyboardEvent | undefined) => {\n let currentItem: number;\n\n if (document.activeElement?.tagName !== 'CDS-MENU') {\n const shadowRootActiveEl = this._findActiveElementInShadowRoot(document);\n currentItem = this.activeitems.findIndex((activeItem) => {\n return (\n shadowRootActiveEl == activeItem.item ||\n activeItem.item.shadowRoot?.activeElement === shadowRootActiveEl\n );\n });\n } else {\n currentItem = 0;\n }\n\n let indexToFocus = currentItem;\n // if currentItem is -1, no menu item is focused yet.\n // in this case, the first item should receive focus.\n if (currentItem === -1) {\n indexToFocus = 0;\n } else if (e) {\n if (e.key === 'ArrowUp') {\n indexToFocus = indexToFocus - 1;\n }\n if (e.key === 'ArrowDown') {\n indexToFocus = indexToFocus + 1;\n }\n }\n if (indexToFocus < 0) {\n indexToFocus = this.activeitems.length - 1;\n }\n if (indexToFocus >= this.activeitems.length) {\n indexToFocus = 0;\n }\n\n if (indexToFocus !== currentItem) {\n this.activeitems[indexToFocus]?.item?.focus();\n }\n };\n _findActiveElementInShadowRoot = (shadowRoot) => {\n if (shadowRoot === null) return null;\n\n let activeElement = shadowRoot.activeElement;\n while (\n activeElement &&\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement\n ) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n };\n\n _notEmpty = (value: number | null | undefined) => {\n return value !== null && value !== undefined;\n };\n _fitValue = (range: number[], axis: 'x' | 'y') => {\n const { isRoot } = this.context;\n\n // const isRoot = false\n const { width, height } = this.getBoundingClientRect();\n const alignment = isRoot ? 'vertical' : 'horizontal';\n const axes = {\n x: {\n max: window.innerWidth,\n size: width,\n anchor: alignment === 'horizontal' ? range[1] : range[0],\n reversedAnchor: alignment === 'horizontal' ? range[0] : range[1],\n offset: 0,\n },\n y: {\n max: window.innerHeight,\n size: height,\n anchor: alignment === 'horizontal' ? range[0] : range[1],\n reversedAnchor: alignment === 'horizontal' ? range[1] : range[0],\n offset: isRoot ? 0 : 4, // top padding in menu, used to align the menu items\n },\n };\n\n // Avoid that the Menu render incorrectly when the postion is set in the right side of the screen\n if (\n this.actionButtonWidth &&\n this.actionButtonWidth < axes.x.size &&\n (this.menuAlignment === 'bottom' || this.menuAlignment === 'top')\n ) {\n axes.x.size = this.actionButtonWidth;\n }\n\n // if 'axes.x.anchor' is lower than 87px dynamically switch render side\n if (\n this.actionButtonWidth &&\n (this.menuAlignment === 'bottom-end' ||\n this.menuAlignment === 'top-end') &&\n axes.x.anchor >= 87 &&\n this.actionButtonWidth < axes.x.size\n ) {\n const diff = axes.x.anchor + axes.x.reversedAnchor;\n axes.x.anchor = axes.x.anchor + diff;\n }\n\n const { max, size, anchor, reversedAnchor, offset } = axes[axis];\n\n // get values for different scenarios, set to false if they don't work\n const options = [\n // towards max (preferred)\n max - this.spacing - size - anchor >= 0 ? anchor - offset : false,\n\n // towards min / reversed (first fallback)\n reversedAnchor - size >= 0 ? reversedAnchor - size + offset : false,\n\n // align at max (second fallback)\n max - this.spacing - size,\n ];\n const topAlignment =\n this.menuAlignment === 'top' ||\n this.menuAlignment === 'top-end' ||\n this.menuAlignment === 'top-start';\n // If the tooltip is not visible in the top, switch to the bototm\n if (\n typeof options[0] === 'number' &&\n topAlignment &&\n options[0] >= 0 &&\n !options[1] &&\n axis === 'y'\n ) {\n this.style.transform = 'translate(0)';\n } else if (topAlignment && !options[0] && axis === 'y') {\n options[0] = anchor - offset;\n }\n\n // Previous array `options`, has at least one item that is a number (the last one - second fallback).\n // That guarantees that the return of `find()` will always be a number\n // and we can safely add the numeric casting `as number`.\n const bestOption = options.find((option) => option !== false) as number;\n\n return bestOption >= this.spacing ? bestOption : this.spacing;\n };\n _getPosition = (x: number | (number | null | undefined)[]) => {\n if (Array.isArray(x)) {\n // has to be of length 2\n const filtered = x.filter(this._notEmpty);\n if (filtered.length === 2) {\n return filtered;\n } else {\n return;\n }\n } else {\n return [x, x];\n }\n };\n _calculatePosition = () => {\n const ranges = {\n x: this._getPosition(this.x),\n y: this._getPosition(this.y),\n };\n\n if (!ranges.x || !ranges.y) {\n return [-1, -1];\n }\n return [\n this._fitValue(ranges.x as number[], 'x') ?? -1,\n this._fitValue(ranges.y as number[], 'y') ?? -1,\n ];\n };\n _handleOpen = async () => {\n const pos = this._calculatePosition();\n if (this.isRtl) {\n this.style.insetInlineStart = `initial`;\n this.style.insetInlineEnd = `${pos[0]}px`;\n } else {\n this.style.insetInlineStart = `${pos[0]}px`;\n this.style.insetInlineEnd = `initial`;\n }\n this.style.insetBlockStart = `${pos[1]}px`;\n this.position = pos;\n\n await this.updateComplete;\n this._registerMenuItems();\n this._setActiveItems();\n\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnOpen, init)\n );\n }\n };\n dispatchCloseEvent = (e) => {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy: e.target,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSMenu).eventOnClose, init)\n );\n }\n };\n _newContextCreate = () => {\n this.context = {\n ...this.context,\n isRoot: false,\n size: this.size,\n };\n };\n _registerMenuItems = () => {\n let items;\n if (this.isChild) {\n items = (\n this.querySelector('slot[name=\"submenu\"]') as HTMLSlotElement\n ).assignedElements();\n } else {\n items = this.shadowRoot?.querySelector('slot')?.assignedElements();\n }\n this.items = items?.filter((item) => {\n if (item.tagName === 'CDS-MENU-ITEM') {\n return !(item as CDSmenuItem).disabled;\n }\n return item.tagName !== 'CDS-MENU-ITEM-DIVIDER';\n });\n };\n _setActiveItems = () => {\n this.activeitems = [];\n\n this.items?.map((item) => {\n let activeItem: activeItemType;\n switch (item.tagName) {\n case 'CDS-MENU-ITEM-RADIO-GROUP': {\n const slotElements = item.querySelectorAll(`${prefix}-menu-item`);\n if (slotElements?.length) {\n for (const entry of slotElements.entries()) {\n activeItem = {\n item: entry[1] as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n break;\n }\n case 'CDS-MENU-ITEM-GROUP': {\n const slotElements = item.shadowRoot\n ?.querySelector('slot')\n ?.assignedElements();\n slotElements?.map((el) => {\n activeItem = {\n item: el as CDSmenuItem,\n parent: el as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n });\n break;\n }\n case 'CDS-MENU-ITEM-SELECTABLE': {\n activeItem = {\n item: item.shadowRoot?.querySelector(\n `${prefix}-menu-item`\n ) as CDSmenuItem,\n parent: item as HTMLElement,\n };\n this.activeitems = [...this.activeitems, activeItem];\n break;\n }\n default: {\n activeItem = {\n item: item as CDSmenuItem,\n parent: null,\n };\n this.activeitems = [...this.activeitems, activeItem];\n }\n }\n });\n const activeEl = this.activeitems[0]?.item ?? document.activeElement;\n activeEl.focus();\n };\n static styles = styles;\n}\nexport default CDSMenu;\n"],"names":["customElement"],"mappings":"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"}
|
|
@@ -141,12 +141,12 @@ __decorate([
|
|
|
141
141
|
], CDSMenuButton.prototype, "tabIndex", void 0);
|
|
142
142
|
__decorate([
|
|
143
143
|
HostListener('click')
|
|
144
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
144
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
145
145
|
// @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
|
|
146
146
|
], CDSMenuButton.prototype, "_handleClick", void 0);
|
|
147
147
|
__decorate([
|
|
148
148
|
HostListener('focusout')
|
|
149
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
150
150
|
// @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
|
|
151
151
|
], CDSMenuButton.prototype, "_handleBlur", void 0);
|
|
152
152
|
CDSMenuButton = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-button.js","sources":["../../../src/components/menu-button/menu-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 2025\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 { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport styles from './menu-button.scss?lit';\nimport '../button/index';\nimport '../menu/index';\nimport ChevronDown16 from '@carbon/icons/es/chevron--down/16.js';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport { POPOVER_ALIGNMENT } from '../popover/defs';\nimport CDSMenu from '../menu/menu';\nimport CDSButton from '../button/button';\nimport { MENU_BUTTON_KIND, MENU_BUTTON_SIZE } from './defs';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\n\nexport { MENU_BUTTON_KIND, MENU_BUTTON_SIZE };\n\n/**\n * Menu button.\n * @element cds-menu-button\n */\n@customElement(`${prefix}-menu-button`)\nclass CDSMenuButton extends HostListenerMixin(LitElement) {\n private _menuController = new FloatingUIController(this);\n\n @query(`${prefix}-button`)\n _triggerNode!: CDSButton;\n\n @query(`${prefix}-menu`)\n _menuNode!: CDSMenu;\n\n @property({ type: Boolean, reflect: true })\n private _open = false;\n\n /**\n * Specify whether the MenuButton should be disabled, or not.\n */\n @property({ type: Boolean, reflect: true })\n disabled;\n\n /**\n * Specify the type of button to be used as the base for the trigger button.\n */\n @property({ type: MENU_BUTTON_KIND, reflect: true })\n kind = MENU_BUTTON_KIND.PRIMARY;\n\n /**\n * Provide the label to be rendered on the trigger button.\n */ @property({ type: String })\n label;\n\n /**\n * Experimental property. Specify how the menu should align with the button element\n */\n @property({ reflect: true, type: String, attribute: 'menu-alignment' })\n menuAlignment = POPOVER_ALIGNMENT.BOTTOM;\n\n /**\n * Specify the size of the button and menu.\n */\n @property({ type: MENU_BUTTON_SIZE, reflect: true })\n size = MENU_BUTTON_SIZE.LARGE;\n\n /**\n * Specify the tabIndex of the button.\n */\n @property({ type: Number, attribute: 'tab-index', reflect: true })\n tabIndex = 0;\n\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
1
|
+
{"version":3,"file":"menu-button.js","sources":["../../../src/components/menu-button/menu-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 2025\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 { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport styles from './menu-button.scss?lit';\nimport '../button/index';\nimport '../menu/index';\nimport ChevronDown16 from '@carbon/icons/es/chevron--down/16.js';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport { POPOVER_ALIGNMENT } from '../popover/defs';\nimport CDSMenu from '../menu/menu';\nimport CDSButton from '../button/button';\nimport { MENU_BUTTON_KIND, MENU_BUTTON_SIZE } from './defs';\nimport FloatingUIController from '../../globals/controllers/floating-controller';\n\nexport { MENU_BUTTON_KIND, MENU_BUTTON_SIZE };\n\n/**\n * Menu button.\n * @element cds-menu-button\n */\n@customElement(`${prefix}-menu-button`)\nclass CDSMenuButton extends HostListenerMixin(LitElement) {\n private _menuController = new FloatingUIController(this);\n\n @query(`${prefix}-button`)\n _triggerNode!: CDSButton;\n\n @query(`${prefix}-menu`)\n _menuNode!: CDSMenu;\n\n @property({ type: Boolean, reflect: true })\n private _open = false;\n\n /**\n * Specify whether the MenuButton should be disabled, or not.\n */\n @property({ type: Boolean, reflect: true })\n disabled;\n\n /**\n * Specify the type of button to be used as the base for the trigger button.\n */\n @property({ type: MENU_BUTTON_KIND, reflect: true })\n kind = MENU_BUTTON_KIND.PRIMARY;\n\n /**\n * Provide the label to be rendered on the trigger button.\n */ @property({ type: String })\n label;\n\n /**\n * Experimental property. Specify how the menu should align with the button element\n */\n @property({ reflect: true, type: String, attribute: 'menu-alignment' })\n menuAlignment = POPOVER_ALIGNMENT.BOTTOM;\n\n /**\n * Specify the size of the button and menu.\n */\n @property({ type: MENU_BUTTON_SIZE, reflect: true })\n size = MENU_BUTTON_SIZE.LARGE;\n\n /**\n * Specify the tabIndex of the button.\n */\n @property({ type: Number, attribute: 'tab-index', reflect: true })\n tabIndex = 0;\n\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: Event) => {\n const path = event.composedPath();\n if (path.includes(this._triggerNode)) {\n this._open = !this._open;\n } else if (this._open) {\n this._open = 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: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur = ({ relatedTarget }: FocusEvent) => {\n // Close the menu if the focus moves outside the menu button or menu\n if (!this.contains(relatedTarget as Node)) {\n this._open = false;\n }\n };\n\n updated(changedProperties) {\n const menu = this.querySelector(`${prefix}-menu`) as CDSMenu;\n\n if (\n changedProperties.has('_open') ||\n changedProperties.has('menuAlignment')\n ) {\n this.updateComplete.then(() => {\n const styleElement = menu.shadowRoot?.querySelector(\n `.${prefix}--menu`\n ) as HTMLElement;\n\n menu.open = this._open;\n\n this._menuController.setPlacement({\n trigger: this._triggerNode,\n target: menu,\n alignment: this.menuAlignment,\n styleElement,\n matchWidth: true,\n open: this._open,\n });\n });\n }\n\n if (changedProperties.has('size')) {\n menu.setAttribute('size', this.size);\n }\n }\n\n render() {\n const { kind, size, disabled, tabIndex, label } = this;\n return html`\n <cds-button\n kind=${kind}\n size=${size}\n ?disabled=${disabled}\n tab-index=${tabIndex}>\n ${label} ${iconLoader(ChevronDown16, { slot: 'icon' })}\n </cds-button>\n <slot></slot>\n `;\n }\n\n static styles = styles;\n}\n\nexport default CDSMenuButton;\n"],"names":["FloatingUIController","customElement"],"mappings":"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"}
|