@carbon/web-components 2.46.0 → 2.47.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 +89 -20
- package/es/components/ai-label/ai-label.d.ts +1 -1
- package/es/components/ai-label/ai-label.js +11 -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/ai-skeleton/ai-skeleton.scss.js +1 -1
- package/es/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
- package/es/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
- package/es/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es/components/button/button.scss.js +1 -1
- package/es/components/chat-button/chat-button-skeleton.d.ts +1 -1
- package/es/components/chat-button/chat-button-skeleton.js +6 -2
- package/es/components/chat-button/chat-button-skeleton.js.map +1 -1
- package/es/components/chat-button/chat-button.d.ts +1 -1
- package/es/components/chat-button/chat-button.js +6 -2
- 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/code-snippet/code-snippet.scss.js +1 -1
- package/es/components/combo-box/combo-box.d.ts +5 -1
- package/es/components/combo-box/combo-box.js +27 -3
- package/es/components/combo-box/combo-box.js.map +1 -1
- package/es/components/combo-box/combo-box.scss.js +1 -1
- package/es/components/copy/copy.d.ts +1 -1
- package/es/components/copy/copy.js +1 -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/date-picker/range-plugin.d.ts +1 -1
- package/es/components/date-picker/range-plugin.js +1 -3
- package/es/components/date-picker/range-plugin.js.map +1 -1
- package/es/components/dropdown/dropdown.d.ts +3 -3
- package/es/components/dropdown/dropdown.js +1 -3
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/dropdown/dropdown.scss.js +1 -1
- package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
- package/es/components/fluid-search/fluid-search.scss.js +1 -1
- package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es/components/grid/column-hang.d.ts +0 -2
- package/es/components/grid/column-hang.js +0 -2
- package/es/components/grid/column-hang.js.map +1 -1
- package/es/components/grid/column.d.ts +0 -2
- package/es/components/grid/column.js +0 -2
- package/es/components/grid/column.js.map +1 -1
- package/es/components/grid/grid.d.ts +0 -2
- package/es/components/grid/grid.js +0 -2
- package/es/components/grid/grid.js.map +1 -1
- package/es/components/grid/index.d.ts +0 -2
- package/es/components/icon-button/icon-button.d.ts +1 -1
- package/es/components/icon-button/icon-button.js +12 -3
- package/es/components/icon-button/icon-button.js.map +1 -1
- package/es/components/icon-button/icon-button.scss.js +2 -2
- package/es/components/menu/menu-context.d.ts +3 -2
- package/es/components/menu/menu-context.js +1 -1
- package/es/components/menu/menu-context.js.map +1 -1
- package/es/components/menu/menu.d.ts +3 -2
- package/es/components/menu/menu.js +5 -4
- package/es/components/menu/menu.js.map +1 -1
- package/es/components/menu/menu.scss.js +1 -1
- package/es/components/modal/modal-body.d.ts +3 -1
- package/es/components/modal/modal-body.js +17 -1
- package/es/components/modal/modal-body.js.map +1 -1
- package/es/components/modal/modal-close-button.d.ts +2 -1
- package/es/components/modal/modal-close-button.js +11 -5
- package/es/components/modal/modal-close-button.js.map +1 -1
- package/es/components/modal/modal.d.ts +67 -2
- package/es/components/modal/modal.js +228 -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.d.ts +2 -2
- package/es/components/multi-select/multi-select.js +8 -4
- package/es/components/multi-select/multi-select.js.map +1 -1
- package/es/components/multi-select/multi-select.scss.js +1 -1
- package/es/components/notification/actionable-notification.js +8 -1
- 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/overflow-menu.d.ts +0 -1
- package/es/components/overflow-menu/overflow-menu.js +3 -2
- package/es/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es/components/page-header/index.d.ts +0 -2
- package/es/components/page-header/page-header-breadcrumb.d.ts +0 -2
- package/es/components/page-header/page-header-breadcrumb.js +0 -2
- package/es/components/page-header/page-header-breadcrumb.js.map +1 -1
- package/es/components/page-header/page-header-content-text.d.ts +0 -2
- package/es/components/page-header/page-header-content-text.js +0 -2
- package/es/components/page-header/page-header-content-text.js.map +1 -1
- package/es/components/page-header/page-header-content.d.ts +0 -2
- package/es/components/page-header/page-header-content.js +0 -2
- package/es/components/page-header/page-header-content.js.map +1 -1
- package/es/components/page-header/page-header-hero-image.d.ts +0 -2
- package/es/components/page-header/page-header-hero-image.js +0 -2
- package/es/components/page-header/page-header-hero-image.js.map +1 -1
- package/es/components/page-header/page-header-tabs.d.ts +0 -2
- package/es/components/page-header/page-header-tabs.js +0 -2
- package/es/components/page-header/page-header-tabs.js.map +1 -1
- package/es/components/page-header/page-header.d.ts +0 -2
- package/es/components/page-header/page-header.js +0 -2
- package/es/components/page-header/page-header.js.map +1 -1
- package/es/components/pagination/pagination.js +7 -4
- package/es/components/pagination/pagination.js.map +1 -1
- package/es/components/password-input/password-input.scss.js +1 -1
- package/es/components/popover/popover-content.js +2 -2
- package/es/components/popover/popover-content.js.map +1 -1
- package/es/components/popover/popover.d.ts +7 -1
- package/es/components/popover/popover.js +54 -3
- package/es/components/popover/popover.js.map +1 -1
- package/es/components/popover/popover.scss.js +2 -2
- package/es/components/search/search.scss.js +1 -1
- package/es/components/slider/slider.scss.js +1 -1
- package/es/components/slug/slug.d.ts +1 -1
- package/es/components/slug/slug.js +11 -2
- package/es/components/slug/slug.js.map +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/tabs/defs.d.ts +4 -0
- package/es/components/tabs/defs.js +4 -0
- package/es/components/tabs/defs.js.map +1 -1
- package/es/components/tabs/tabs.d.ts +2 -4
- package/es/components/tabs/tabs.js +37 -8
- package/es/components/tabs/tabs.js.map +1 -1
- package/es/components/tabs/tabs.scss.js +1 -1
- package/es/components/tag/dismissible-tag.d.ts +0 -2
- package/es/components/tag/dismissible-tag.js +0 -2
- package/es/components/tag/dismissible-tag.js.map +1 -1
- package/es/components/tag/operational-tag.d.ts +0 -2
- package/es/components/tag/operational-tag.js +0 -2
- package/es/components/tag/operational-tag.js.map +1 -1
- package/es/components/tag/selectable-tag.d.ts +0 -2
- package/es/components/tag/selectable-tag.js +0 -2
- package/es/components/tag/selectable-tag.js.map +1 -1
- package/es/components/tag/tag-skeleton.d.ts +0 -2
- package/es/components/tag/tag-skeleton.js +0 -2
- package/es/components/tag/tag-skeleton.js.map +1 -1
- package/es/components/text-input/text-input.scss.js +1 -1
- package/es/components/tile/tile.scss.js +1 -1
- package/es/components/time-picker/time-picker.scss.js +1 -1
- package/es/components/toggle-tip/toggletip.d.ts +0 -1
- package/es/components/toggle-tip/toggletip.js +4 -3
- package/es/components/toggle-tip/toggletip.js.map +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +2 -2
- package/es/components/tooltip/definition-tooltip.js +5 -3
- package/es/components/tooltip/definition-tooltip.js.map +1 -1
- package/es/components/tooltip/tooltip-content.d.ts +0 -7
- package/es/components/tooltip/tooltip-content.js +4 -8
- package/es/components/tooltip/tooltip-content.js.map +1 -1
- package/es/components/tooltip/tooltip.d.ts +0 -1
- package/es/components/tooltip/tooltip.js +4 -7
- package/es/components/tooltip/tooltip.js.map +1 -1
- package/es/components/tooltip/tooltip.scss.js +2 -2
- package/es/components/tree-view/defs.d.ts +0 -2
- package/es/components/tree-view/defs.js +0 -2
- package/es/components/tree-view/defs.js.map +1 -1
- package/es/components/tree-view/index.d.ts +0 -2
- package/es/components/tree-view/tree-node.d.ts +0 -2
- package/es/components/tree-view/tree-node.js +0 -2
- package/es/components/tree-view/tree-node.js.map +1 -1
- package/es/components/tree-view/tree-view.d.ts +0 -2
- package/es/components/tree-view/tree-view.js +0 -2
- package/es/components/tree-view/tree-view.js.map +1 -1
- package/es/components/tree-view/tree-view.scss.js +1 -1
- package/es/components/ui-shell/header-global-action.d.ts +1 -1
- package/es/components/ui-shell/header-global-action.js +16 -2
- package/es/components/ui-shell/header-global-action.js.map +1 -1
- package/es/components/ui-shell/header-name.js +1 -1
- package/es/components/ui-shell/header-name.js.map +1 -1
- package/es/components/ui-shell/side-nav-menu-item.d.ts +4 -0
- package/es/components/ui-shell/side-nav-menu-item.js +10 -2
- package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
- package/es/globals/controllers/floating-controller.d.ts +1 -1
- package/es/globals/controllers/floating-controller.js +34 -30
- package/es/globals/controllers/floating-controller.js.map +1 -1
- package/es/globals/decorators/carbon-element.d.ts +5 -4
- package/es/globals/decorators/carbon-element.js +1 -1
- package/es/globals/decorators/carbon-element.js.map +1 -1
- package/es-custom/components/ai-label/ai-label.d.ts +1 -1
- package/es-custom/components/ai-label/ai-label.js +11 -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/ai-skeleton/ai-skeleton.scss.js +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
- package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
- package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es-custom/components/button/button.scss.js +1 -1
- package/es-custom/components/chat-button/chat-button-skeleton.d.ts +1 -1
- package/es-custom/components/chat-button/chat-button-skeleton.js +6 -2
- package/es-custom/components/chat-button/chat-button-skeleton.js.map +1 -1
- package/es-custom/components/chat-button/chat-button.d.ts +1 -1
- package/es-custom/components/chat-button/chat-button.js +6 -2
- 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/code-snippet/code-snippet.scss.js +1 -1
- package/es-custom/components/combo-box/combo-box.d.ts +5 -1
- package/es-custom/components/combo-box/combo-box.js +27 -3
- package/es-custom/components/combo-box/combo-box.js.map +1 -1
- package/es-custom/components/combo-box/combo-box.scss.js +1 -1
- package/es-custom/components/copy/copy.d.ts +1 -1
- package/es-custom/components/copy/copy.js +1 -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/date-picker/range-plugin.d.ts +1 -1
- package/es-custom/components/date-picker/range-plugin.js +1 -3
- package/es-custom/components/date-picker/range-plugin.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.d.ts +3 -3
- package/es-custom/components/dropdown/dropdown.js +1 -3
- package/es-custom/components/dropdown/dropdown.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.scss.js +1 -1
- package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
- package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es-custom/components/grid/column-hang.d.ts +0 -2
- package/es-custom/components/grid/column-hang.js +0 -2
- package/es-custom/components/grid/column-hang.js.map +1 -1
- package/es-custom/components/grid/column.d.ts +0 -2
- package/es-custom/components/grid/column.js +0 -2
- package/es-custom/components/grid/column.js.map +1 -1
- package/es-custom/components/grid/grid.d.ts +0 -2
- package/es-custom/components/grid/grid.js +0 -2
- package/es-custom/components/grid/grid.js.map +1 -1
- package/es-custom/components/grid/index.d.ts +0 -2
- package/es-custom/components/icon-button/icon-button.d.ts +1 -1
- package/es-custom/components/icon-button/icon-button.js +12 -3
- package/es-custom/components/icon-button/icon-button.js.map +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js +2 -2
- package/es-custom/components/menu/menu-context.d.ts +3 -2
- package/es-custom/components/menu/menu-context.js +1 -1
- package/es-custom/components/menu/menu-context.js.map +1 -1
- package/es-custom/components/menu/menu.d.ts +3 -2
- package/es-custom/components/menu/menu.js +5 -4
- package/es-custom/components/menu/menu.js.map +1 -1
- package/es-custom/components/menu/menu.scss.js +1 -1
- package/es-custom/components/modal/modal-body.d.ts +3 -1
- package/es-custom/components/modal/modal-body.js +17 -1
- package/es-custom/components/modal/modal-body.js.map +1 -1
- package/es-custom/components/modal/modal-close-button.d.ts +2 -1
- package/es-custom/components/modal/modal-close-button.js +11 -5
- package/es-custom/components/modal/modal-close-button.js.map +1 -1
- package/es-custom/components/modal/modal.d.ts +67 -2
- package/es-custom/components/modal/modal.js +228 -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.d.ts +2 -2
- package/es-custom/components/multi-select/multi-select.js +8 -4
- package/es-custom/components/multi-select/multi-select.js.map +1 -1
- package/es-custom/components/multi-select/multi-select.scss.js +1 -1
- package/es-custom/components/notification/actionable-notification.js +8 -1
- 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/overflow-menu.d.ts +0 -1
- package/es-custom/components/overflow-menu/overflow-menu.js +3 -2
- package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es-custom/components/page-header/index.d.ts +0 -2
- package/es-custom/components/page-header/page-header-breadcrumb.d.ts +0 -2
- package/es-custom/components/page-header/page-header-breadcrumb.js +0 -2
- package/es-custom/components/page-header/page-header-breadcrumb.js.map +1 -1
- package/es-custom/components/page-header/page-header-content-text.d.ts +0 -2
- package/es-custom/components/page-header/page-header-content-text.js +0 -2
- package/es-custom/components/page-header/page-header-content-text.js.map +1 -1
- package/es-custom/components/page-header/page-header-content.d.ts +0 -2
- package/es-custom/components/page-header/page-header-content.js +0 -2
- package/es-custom/components/page-header/page-header-content.js.map +1 -1
- package/es-custom/components/page-header/page-header-hero-image.d.ts +0 -2
- package/es-custom/components/page-header/page-header-hero-image.js +0 -2
- package/es-custom/components/page-header/page-header-hero-image.js.map +1 -1
- package/es-custom/components/page-header/page-header-tabs.d.ts +0 -2
- package/es-custom/components/page-header/page-header-tabs.js +0 -2
- package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
- package/es-custom/components/page-header/page-header.d.ts +0 -2
- package/es-custom/components/page-header/page-header.js +0 -2
- package/es-custom/components/page-header/page-header.js.map +1 -1
- package/es-custom/components/pagination/pagination.js +7 -4
- package/es-custom/components/pagination/pagination.js.map +1 -1
- package/es-custom/components/password-input/password-input.scss.js +1 -1
- package/es-custom/components/popover/popover-content.js +2 -2
- package/es-custom/components/popover/popover-content.js.map +1 -1
- package/es-custom/components/popover/popover.d.ts +7 -1
- package/es-custom/components/popover/popover.js +54 -3
- package/es-custom/components/popover/popover.js.map +1 -1
- package/es-custom/components/popover/popover.scss.js +2 -2
- package/es-custom/components/search/search.scss.js +1 -1
- package/es-custom/components/slider/slider.scss.js +1 -1
- package/es-custom/components/slug/slug.d.ts +1 -1
- package/es-custom/components/slug/slug.js +11 -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/tabs/defs.d.ts +4 -0
- package/es-custom/components/tabs/defs.js +4 -0
- package/es-custom/components/tabs/defs.js.map +1 -1
- package/es-custom/components/tabs/tabs.d.ts +2 -4
- package/es-custom/components/tabs/tabs.js +37 -8
- 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.d.ts +0 -2
- package/es-custom/components/tag/dismissible-tag.js +0 -2
- package/es-custom/components/tag/dismissible-tag.js.map +1 -1
- package/es-custom/components/tag/operational-tag.d.ts +0 -2
- package/es-custom/components/tag/operational-tag.js +0 -2
- package/es-custom/components/tag/operational-tag.js.map +1 -1
- package/es-custom/components/tag/selectable-tag.d.ts +0 -2
- package/es-custom/components/tag/selectable-tag.js +0 -2
- package/es-custom/components/tag/selectable-tag.js.map +1 -1
- package/es-custom/components/tag/tag-skeleton.d.ts +0 -2
- package/es-custom/components/tag/tag-skeleton.js +0 -2
- package/es-custom/components/tag/tag-skeleton.js.map +1 -1
- package/es-custom/components/text-input/text-input.scss.js +1 -1
- package/es-custom/components/tile/tile.scss.js +1 -1
- package/es-custom/components/time-picker/time-picker.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.d.ts +0 -1
- package/es-custom/components/toggle-tip/toggletip.js +4 -3
- package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +2 -2
- package/es-custom/components/tooltip/definition-tooltip.js +5 -3
- package/es-custom/components/tooltip/definition-tooltip.js.map +1 -1
- package/es-custom/components/tooltip/tooltip-content.d.ts +0 -7
- package/es-custom/components/tooltip/tooltip-content.js +4 -8
- package/es-custom/components/tooltip/tooltip-content.js.map +1 -1
- package/es-custom/components/tooltip/tooltip.d.ts +0 -1
- package/es-custom/components/tooltip/tooltip.js +4 -7
- package/es-custom/components/tooltip/tooltip.js.map +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js +2 -2
- package/es-custom/components/tree-view/defs.d.ts +0 -2
- package/es-custom/components/tree-view/defs.js +0 -2
- package/es-custom/components/tree-view/defs.js.map +1 -1
- package/es-custom/components/tree-view/index.d.ts +0 -2
- package/es-custom/components/tree-view/tree-node.d.ts +0 -2
- package/es-custom/components/tree-view/tree-node.js +0 -2
- package/es-custom/components/tree-view/tree-node.js.map +1 -1
- package/es-custom/components/tree-view/tree-view.d.ts +0 -2
- package/es-custom/components/tree-view/tree-view.js +0 -2
- package/es-custom/components/tree-view/tree-view.js.map +1 -1
- package/es-custom/components/tree-view/tree-view.scss.js +1 -1
- package/es-custom/components/ui-shell/header-global-action.d.ts +1 -1
- package/es-custom/components/ui-shell/header-global-action.js +16 -2
- package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
- package/es-custom/components/ui-shell/header-name.js +1 -1
- package/es-custom/components/ui-shell/header-name.js.map +1 -1
- package/es-custom/components/ui-shell/side-nav-menu-item.d.ts +4 -0
- package/es-custom/components/ui-shell/side-nav-menu-item.js +10 -2
- package/es-custom/components/ui-shell/side-nav-menu-item.js.map +1 -1
- package/es-custom/globals/controllers/floating-controller.d.ts +1 -1
- package/es-custom/globals/controllers/floating-controller.js +34 -30
- package/es-custom/globals/controllers/floating-controller.js.map +1 -1
- package/es-custom/globals/decorators/carbon-element.d.ts +5 -4
- package/es-custom/globals/decorators/carbon-element.js +1 -1
- package/es-custom/globals/decorators/carbon-element.js.map +1 -1
- package/lib/components/ai-label/ai-label.d.ts +1 -1
- package/lib/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
- package/lib/components/chat-button/chat-button-skeleton.d.ts +1 -1
- package/lib/components/chat-button/chat-button.d.ts +1 -1
- package/lib/components/combo-box/combo-box.d.ts +5 -1
- package/lib/components/copy/copy.d.ts +1 -1
- package/lib/components/date-picker/range-plugin.d.ts +1 -1
- package/lib/components/dropdown/dropdown.d.ts +3 -3
- package/lib/components/grid/column-hang.d.ts +0 -2
- package/lib/components/grid/column.d.ts +0 -2
- package/lib/components/grid/grid.d.ts +0 -2
- package/lib/components/grid/index.d.ts +0 -2
- package/lib/components/icon-button/icon-button.d.ts +1 -1
- package/lib/components/menu/menu-context.d.ts +3 -2
- package/lib/components/menu/menu.d.ts +3 -2
- package/lib/components/modal/modal-body.d.ts +3 -1
- package/lib/components/modal/modal-close-button.d.ts +2 -1
- package/lib/components/modal/modal.d.ts +67 -2
- package/lib/components/multi-select/multi-select.d.ts +2 -2
- package/lib/components/overflow-menu/overflow-menu.d.ts +0 -1
- package/lib/components/page-header/index.d.ts +0 -2
- package/lib/components/page-header/page-header-breadcrumb.d.ts +0 -2
- package/lib/components/page-header/page-header-content-text.d.ts +0 -2
- package/lib/components/page-header/page-header-content.d.ts +0 -2
- package/lib/components/page-header/page-header-hero-image.d.ts +0 -2
- package/lib/components/page-header/page-header-tabs.d.ts +0 -2
- package/lib/components/page-header/page-header.d.ts +0 -2
- package/lib/components/popover/popover.d.ts +7 -1
- package/lib/components/slug/slug.d.ts +1 -1
- package/lib/components/tabs/defs.d.ts +4 -0
- package/lib/components/tabs/defs.js +4 -0
- package/lib/components/tabs/defs.js.map +1 -1
- package/lib/components/tabs/tabs.d.ts +2 -4
- package/lib/components/tag/dismissible-tag.d.ts +0 -2
- package/lib/components/tag/operational-tag.d.ts +0 -2
- package/lib/components/tag/selectable-tag.d.ts +0 -2
- package/lib/components/tag/tag-skeleton.d.ts +0 -2
- package/lib/components/toggle-tip/toggletip.d.ts +0 -1
- package/lib/components/tooltip/tooltip-content.d.ts +0 -7
- package/lib/components/tooltip/tooltip.d.ts +0 -1
- package/lib/components/tree-view/defs.d.ts +0 -2
- package/lib/components/tree-view/defs.js +0 -2
- package/lib/components/tree-view/defs.js.map +1 -1
- package/lib/components/tree-view/index.d.ts +0 -2
- package/lib/components/tree-view/tree-node.d.ts +0 -2
- package/lib/components/tree-view/tree-view.d.ts +0 -2
- package/lib/components/ui-shell/header-global-action.d.ts +1 -1
- package/lib/components/ui-shell/side-nav-menu-item.d.ts +4 -0
- package/lib/globals/controllers/floating-controller.d.ts +1 -1
- package/lib/globals/controllers/floating-controller.js +34 -30
- package/lib/globals/controllers/floating-controller.js.map +1 -1
- package/lib/globals/decorators/carbon-element.d.ts +5 -4
- package/package.json +7 -9
- package/scss/components/ai-label/ai-label.scss +11 -12
- package/scss/components/ai-skeleton/ai-skeleton.scss +1 -3
- package/scss/components/breadcrumb/breadcrumb.scss +0 -1
- package/scss/components/button/button.scss +0 -2
- package/scss/components/chat-button/chat-button.scss +0 -1
- package/scss/components/icon-button/icon-button.scss +0 -2
- package/scss/components/menu/menu.scss +11 -2
- package/scss/components/modal/modal.scss +27 -7
- package/scss/components/multi-select/multi-select.scss +2 -2
- package/scss/components/notification/actionable-notification.scss +42 -128
- package/scss/components/notification/inline-notification.scss +17 -69
- package/scss/components/notification/toast-notification.scss +16 -37
- package/scss/components/popover/popover.scss +4 -4
- package/scss/components/slug/slug.scss +11 -12
- package/scss/components/tabs/tabs.scss +7 -0
- package/scss/components/tile/tile.scss +1 -1
- package/scss/components/toggle-tip/toggletip.scss +0 -2
- package/scss/components/tooltip/tooltip.scss +0 -1
- package/telemetry.yml +11 -0
- package/dist/16-BXPirV4t.js +0 -28
- package/dist/16-BcPXq4VE.js +0 -28
- package/dist/16-BiojhJb6.js +0 -28
- package/dist/16-BirbARgt.js +0 -28
- package/dist/16-CCrV-EKs.js +0 -28
- package/dist/16-CNObEOvs.js +0 -28
- package/dist/16-CsHohlYG.js +0 -28
- package/dist/16-D9rqeJJl.js +0 -28
- package/dist/16-DEZ8LNs3.js +0 -28
- package/dist/16-DThcsE9v.js +0 -28
- package/dist/16-T0hLy__N.js +0 -28
- package/dist/16-mUGLFymm.js +0 -28
- package/dist/20-BSzLZNRY.js +0 -28
- package/dist/20-ZHgmfbqd.js +0 -28
- package/dist/accordion.min.js +0 -72
- package/dist/ai-label.min.js +0 -54
- package/dist/ai-skeleton.min.js +0 -37
- package/dist/badge-indicator.min.js +0 -28
- package/dist/breadcrumb.min.js +0 -46
- package/dist/button-3n7S6dfU.js +0 -94
- package/dist/button-skeleton-DE9AxBek.js +0 -48
- package/dist/button.min.js +0 -28
- package/dist/carbon-element-tFMTVffV.js +0 -28
- package/dist/chat-button.min.js +0 -40
- package/dist/checkbox-CFU6bnOa.js +0 -67
- package/dist/checkbox.min.js +0 -64
- package/dist/class-map-BLvVLLRH.js +0 -33
- package/dist/code-snippet.min.js +0 -85
- package/dist/collection-helpers-C8K_t6zj.js +0 -28
- package/dist/combo-box.min.js +0 -65
- package/dist/combo-button.min.js +0 -42
- package/dist/consume-DNv3sWri.js +0 -64
- package/dist/contained-list.min.js +0 -70
- package/dist/content-switcher-item-CXc-BbRX.js +0 -54
- package/dist/content-switcher.min.js +0 -28
- package/dist/copy-button.min.js +0 -44
- package/dist/data-table.min.js +0 -185
- package/dist/date-picker.min.js +0 -89
- package/dist/defs-CcLNpvSO.js +0 -28
- package/dist/directive-CwpJ03IP.js +0 -33
- package/dist/dropdown-item-CSXYY4Up.js +0 -100
- package/dist/dropdown.min.js +0 -31
- package/dist/feature-flags.min.js +0 -28
- package/dist/file-uploader.min.js +0 -106
- package/dist/floating-controller-ClaZwDaj.js +0 -28
- package/dist/floating-menu.min.js +0 -28
- package/dist/fluid-number-input.min.js +0 -28
- package/dist/fluid-search.min.js +0 -33
- package/dist/fluid-select.min.js +0 -30
- package/dist/fluid-text-input.min.js +0 -28
- package/dist/fluid-textarea.min.js +0 -36
- package/dist/focus-DCv16lgz.js +0 -28
- package/dist/form-D0wM2t2A.js +0 -28
- package/dist/form-group.min.js +0 -39
- package/dist/form.min.js +0 -30
- package/dist/grid.min.js +0 -60
- package/dist/heading.min.js +0 -33
- package/dist/host-listener-BFnrKETa.js +0 -28
- package/dist/host-listener-maKckXVl.js +0 -28
- package/dist/icon-button.min.js +0 -42
- package/dist/icon-indicator.min.js +0 -28
- package/dist/icon-loader-BiaaiIZd.js +0 -28
- package/dist/icon-loader-utils-Dw7YsY3n.js +0 -33
- package/dist/icon.min.js +0 -28
- package/dist/if-defined-B342gMhK.js +0 -33
- package/dist/if-non-empty-BXM4sQkm.js +0 -28
- package/dist/inline-loading.min.js +0 -39
- package/dist/layer.min.js +0 -28
- package/dist/link.min.js +0 -52
- package/dist/list.min.js +0 -39
- package/dist/lit-element-W7dQy3wx.js +0 -50
- package/dist/loading-icon-9dSwtpx9.js +0 -43
- package/dist/loading.min.js +0 -28
- package/dist/menu-button.min.js +0 -37
- package/dist/menu.min.js +0 -80
- package/dist/modal.min.js +0 -49
- package/dist/multi-select.min.js +0 -90
- package/dist/notification.min.js +0 -116
- package/dist/number-input.min.js +0 -103
- package/dist/on-Bh72-1o0.js +0 -28
- package/dist/overflow-menu.min.js +0 -49
- package/dist/page-header.min.js +0 -142
- package/dist/pagination.min.js +0 -104
- package/dist/password-input.min.js +0 -93
- package/dist/popover.min.js +0 -42
- package/dist/progress-bar.min.js +0 -49
- package/dist/progress-indicator.min.js +0 -62
- package/dist/property-D8KHfsO7.js +0 -33
- package/dist/query-DZZk85FD.js +0 -38
- package/dist/query-assigned-elements-CuK851Xm.js +0 -33
- package/dist/radio-button.min.js +0 -71
- package/dist/radio-group-manager-BbeUxJeN.js +0 -28
- package/dist/search-BpfBrZ_q.js +0 -58
- package/dist/search.min.js +0 -31
- package/dist/select-Bu-C3DEh.js +0 -109
- package/dist/select-item-CY7ZCgDO.js +0 -28
- package/dist/select-skeleton-Bj1W9rv-.js +0 -31
- package/dist/select.min.js +0 -28
- package/dist/settings-CVGvqY8T.js +0 -28
- package/dist/shape-indicator.min.js +0 -28
- package/dist/shared-enums-D2BNx9-N.js +0 -28
- package/dist/side-panel.min.js +0 -160
- package/dist/skeleton-icon.min.js +0 -28
- package/dist/skeleton-placeholder.min.js +0 -28
- package/dist/skeleton-text.min.js +0 -28
- package/dist/skip-to-content.min.js +0 -32
- package/dist/slider.min.js +0 -273
- package/dist/slug.min.js +0 -54
- package/dist/stack.min.js +0 -28
- package/dist/state-DVnprZ3A.js +0 -33
- package/dist/structured-list.min.js +0 -46
- package/dist/tabs.min.js +0 -85
- package/dist/tag.min.js +0 -155
- package/dist/tearsheet.min.js +0 -141
- package/dist/text-input-CMLDDQcE.js +0 -95
- package/dist/text-input.min.js +0 -31
- package/dist/textarea.min.js +0 -84
- package/dist/tile.min.js +0 -101
- package/dist/time-picker.min.js +0 -79
- package/dist/toggle-tip.min.js +0 -73
- package/dist/toggle.min.js +0 -63
- package/dist/tooltip-content-eYgOs_c2.js +0 -30
- package/dist/tooltip.min.js +0 -50
- package/dist/tree-view.min.js +0 -127
- package/dist/ui-shell.min.js +0 -156
- package/dist/unsafe-html-SGvBIOsG.js +0 -33
- package/dist/validity-CzCNnEZK.js +0 -28
|
@@ -15,9 +15,10 @@ import HostListenerMixin from '../../globals/mixins/host-listener.js';
|
|
|
15
15
|
import { MODAL_SIZE } from './defs.js';
|
|
16
16
|
import styles from './modal.scss.js';
|
|
17
17
|
import { carbonElement } from '../../globals/decorators/carbon-element.js';
|
|
18
|
+
import '../inline-loading/inline-loading.js';
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
|
-
* Copyright IBM Corp. 2019,
|
|
21
|
+
* Copyright IBM Corp. 2019, 2026
|
|
21
22
|
*
|
|
22
23
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
23
24
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -39,6 +40,14 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
39
40
|
* The element that had focus before this modal gets open.
|
|
40
41
|
*/
|
|
41
42
|
this._launcher = null;
|
|
43
|
+
/**
|
|
44
|
+
* The inline loading element that renders when `loading-status` is not `inactive`
|
|
45
|
+
*/
|
|
46
|
+
this._loadingEl = null;
|
|
47
|
+
/**
|
|
48
|
+
* Loading statuses that are not `inactive`
|
|
49
|
+
*/
|
|
50
|
+
this.WORKING_LOADING_STATUSES = ['active', 'finished', 'error'];
|
|
42
51
|
/**
|
|
43
52
|
* Handles `click` event on this element.
|
|
44
53
|
*
|
|
@@ -59,11 +68,27 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
59
68
|
* @param {KeyboardEvent} event The keyboard event object.
|
|
60
69
|
*/
|
|
61
70
|
this._handleHostKeydown = (event) => {
|
|
62
|
-
var _a;
|
|
71
|
+
var _a, _b, _c;
|
|
72
|
+
const target = event.target;
|
|
73
|
+
const { primaryButton } = this._getFooterElements();
|
|
74
|
+
if (this.open &&
|
|
75
|
+
this.shouldSubmitOnEnter &&
|
|
76
|
+
event.key === 'Enter' &&
|
|
77
|
+
target &&
|
|
78
|
+
document.activeElement !== primaryButton) {
|
|
79
|
+
const closeButton = this.constructor
|
|
80
|
+
.selectorCloseButton;
|
|
81
|
+
const targetIsCloseButton = !!target.closest(closeButton) ||
|
|
82
|
+
!!((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest) === null || _b === void 0 ? void 0 : _b.call(_a, closeButton));
|
|
83
|
+
if (!targetIsCloseButton) {
|
|
84
|
+
primaryButton === null || primaryButton === void 0 ? void 0 : primaryButton.click();
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
63
88
|
if (event.key === 'Tab') {
|
|
64
89
|
const { first: _firstElement, last: _lastElement } = this.getFocusable();
|
|
65
90
|
if (event.shiftKey &&
|
|
66
|
-
(((
|
|
91
|
+
(((_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.activeElement) === _firstElement ||
|
|
67
92
|
document.activeElement === _firstElement)) {
|
|
68
93
|
event.preventDefault();
|
|
69
94
|
_lastElement === null || _lastElement === void 0 ? void 0 : _lastElement.focus();
|
|
@@ -112,6 +137,26 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
112
137
|
* Prevent closing on click outside of modal
|
|
113
138
|
*/
|
|
114
139
|
this.preventCloseOnClickOutside = false;
|
|
140
|
+
/**
|
|
141
|
+
* Specify the loading status
|
|
142
|
+
*/
|
|
143
|
+
this.loadingStatus = 'inactive';
|
|
144
|
+
/**
|
|
145
|
+
* Specify the description for the loading text
|
|
146
|
+
*/
|
|
147
|
+
this.loadingDescription = '';
|
|
148
|
+
/**
|
|
149
|
+
* Provide a delay for the setTimeout for success
|
|
150
|
+
*/
|
|
151
|
+
this.loadingSuccessDelay = 1500;
|
|
152
|
+
/**
|
|
153
|
+
* Specify the description for the loading icon
|
|
154
|
+
*/
|
|
155
|
+
this.loadingIconDescription = 'Loading';
|
|
156
|
+
/**
|
|
157
|
+
* Specify if Enter key should be used as "submit" action that clicks the primary footer button
|
|
158
|
+
*/
|
|
159
|
+
this.shouldSubmitOnEnter = false;
|
|
115
160
|
/**
|
|
116
161
|
* Prevent the modal from closing after clicking the close button
|
|
117
162
|
*/
|
|
@@ -180,15 +225,145 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
180
225
|
? this.setAttribute('has-footer', '')
|
|
181
226
|
: this.removeAttribute('has-footer');
|
|
182
227
|
}
|
|
183
|
-
|
|
228
|
+
// Initializes the inline-loading element
|
|
229
|
+
_initializeLoadingEl(footer) {
|
|
230
|
+
if (!footer)
|
|
231
|
+
return null;
|
|
232
|
+
if (!this._loadingEl &&
|
|
233
|
+
this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {
|
|
234
|
+
const el = document.createElement(`${prefix}-inline-loading`);
|
|
235
|
+
el.setAttribute('controlled', '');
|
|
236
|
+
el.setAttribute('aria-live', 'off');
|
|
237
|
+
footer.appendChild(el);
|
|
238
|
+
this._loadingEl = el;
|
|
239
|
+
}
|
|
240
|
+
return this._loadingEl;
|
|
241
|
+
}
|
|
242
|
+
_getFooterElements() {
|
|
243
|
+
const footer = this.querySelector(`${prefix}-modal-footer`);
|
|
244
|
+
const primaryButton = this.querySelector(`${prefix}-modal-footer-button[kind="primary"]`) ||
|
|
245
|
+
this.querySelector(`${prefix}-modal-footer-button[kind="danger"]`) ||
|
|
246
|
+
null;
|
|
247
|
+
const secondaryButtons = Array.from(this.querySelectorAll(`${prefix}-modal-footer-button[kind="secondary"]`));
|
|
248
|
+
return { footer, primaryButton, secondaryButtons };
|
|
249
|
+
}
|
|
250
|
+
// Updates the inline loading element in the modal footer
|
|
251
|
+
_updateLoadingElement() {
|
|
252
|
+
const { footer, primaryButton, secondaryButtons } = this._getFooterElements();
|
|
253
|
+
const loader = this._initializeLoadingEl(footer);
|
|
254
|
+
if (!footer || !loader || !primaryButton)
|
|
255
|
+
return;
|
|
256
|
+
if (this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {
|
|
257
|
+
loader.style.display = 'inline-flex';
|
|
258
|
+
loader.setAttribute('status', String(this.loadingStatus));
|
|
259
|
+
loader.setAttribute('aria-live', 'assertive');
|
|
260
|
+
loader.setAttribute('icon-description', String(this.loadingIconDescription));
|
|
261
|
+
loader.textContent = this.loadingDescription;
|
|
262
|
+
primaryButton.style.display = 'none';
|
|
263
|
+
if (secondaryButtons[0]) {
|
|
264
|
+
if (!footer.hasAttribute('has-three-buttons')) {
|
|
265
|
+
secondaryButtons[0].setAttribute('disabled', '');
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
secondaryButtons.forEach((b) => b.removeAttribute('disabled'));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (this.loadingStatus === 'finished') {
|
|
272
|
+
// fire event for successful load
|
|
273
|
+
setTimeout(() => {
|
|
274
|
+
this.dispatchEvent(new CustomEvent(this.constructor.eventOnLoadingSuccess, {
|
|
275
|
+
bubbles: true,
|
|
276
|
+
cancelable: true,
|
|
277
|
+
composed: true,
|
|
278
|
+
}));
|
|
279
|
+
}, this.loadingSuccessDelay);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else if (this.loadingStatus === 'inactive') {
|
|
283
|
+
loader.style.display = 'none';
|
|
284
|
+
loader.setAttribute('aria-live', 'off');
|
|
285
|
+
if (primaryButton)
|
|
286
|
+
primaryButton.style.display = '';
|
|
287
|
+
if (secondaryButtons)
|
|
288
|
+
secondaryButtons.forEach((b) => b.removeAttribute('disabled'));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
async firstUpdated() {
|
|
184
292
|
const body = this.querySelector(this.constructor.selectorModalBody);
|
|
185
293
|
if (!body) {
|
|
186
294
|
const bodyElement = document.createElement(this.constructor.selectorModalBody);
|
|
187
295
|
this.appendChild(bodyElement);
|
|
188
296
|
}
|
|
189
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Computes the aria-label of the modal based on (in order of highest to lowest precedence):
|
|
300
|
+
* - `modal-label`
|
|
301
|
+
* - `aria-label`
|
|
302
|
+
* - `modal-heading`
|
|
303
|
+
*/
|
|
304
|
+
_computeAriaLabel() {
|
|
305
|
+
var _a, _b, _c;
|
|
306
|
+
const labelEl = this.querySelector(`${prefix}-modal-label`);
|
|
307
|
+
const label = (_a = labelEl === null || labelEl === void 0 ? void 0 : labelEl.textContent) === null || _a === void 0 ? void 0 : _a.trim();
|
|
308
|
+
if (label)
|
|
309
|
+
return label;
|
|
310
|
+
const ariaLabel = (_b = this.ariaLabel) === null || _b === void 0 ? void 0 : _b.trim();
|
|
311
|
+
if (ariaLabel)
|
|
312
|
+
return ariaLabel;
|
|
313
|
+
const headingEl = this.querySelector(`${prefix}-modal-heading`);
|
|
314
|
+
const heading = (_c = headingEl === null || headingEl === void 0 ? void 0 : headingEl.textContent) === null || _c === void 0 ? void 0 : _c.trim();
|
|
315
|
+
return heading || '';
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Observes the modal footer's `has-three-buttons` attribute to account for cases
|
|
319
|
+
* where the loading status and the amount of footer-buttons
|
|
320
|
+
* are being changed dynamically
|
|
321
|
+
*/
|
|
322
|
+
_observeFooter() {
|
|
323
|
+
const footer = this.querySelector(`${prefix}-modal-footer`);
|
|
324
|
+
if (!footer)
|
|
325
|
+
return;
|
|
326
|
+
this._footerObserver = new MutationObserver(() => {
|
|
327
|
+
this._updateLoadingElement();
|
|
328
|
+
});
|
|
329
|
+
this._footerObserver.observe(footer, {
|
|
330
|
+
attributes: true,
|
|
331
|
+
childList: true,
|
|
332
|
+
attributeFilter: ['has-three-buttons'],
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Observes the modal header to account for cases where the modal-heading,
|
|
337
|
+
* modal-label, and/or `aria-label` are dynamically changing
|
|
338
|
+
* to update the `aria-label` put on the modal
|
|
339
|
+
*/
|
|
340
|
+
_observeHeader() {
|
|
341
|
+
const header = this.querySelector(`${prefix}-modal-header`);
|
|
342
|
+
if (!header)
|
|
343
|
+
return;
|
|
344
|
+
this._headerObserver = new MutationObserver(() => {
|
|
345
|
+
this.requestUpdate('ariaLabel');
|
|
346
|
+
});
|
|
347
|
+
this._headerObserver.observe(header, {
|
|
348
|
+
subtree: true,
|
|
349
|
+
characterData: true,
|
|
350
|
+
childList: true,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
connectedCallback() {
|
|
354
|
+
var _a;
|
|
355
|
+
(_a = super.connectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
356
|
+
this._observeFooter();
|
|
357
|
+
this._observeHeader();
|
|
358
|
+
}
|
|
359
|
+
disconnectedCallback() {
|
|
360
|
+
var _a, _b, _c;
|
|
361
|
+
(_a = this._footerObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
362
|
+
(_b = this._headerObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
363
|
+
(_c = super.disconnectedCallback) === null || _c === void 0 ? void 0 : _c.call(this);
|
|
364
|
+
}
|
|
190
365
|
render() {
|
|
191
|
-
const { alert,
|
|
366
|
+
const { alert, size, hasScrollingContent } = this;
|
|
192
367
|
const containerClass = this.containerClass
|
|
193
368
|
.split(' ')
|
|
194
369
|
.filter(Boolean)
|
|
@@ -196,9 +371,10 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
196
371
|
const containerClasses = classMap(Object.assign({ [`${prefix}--modal-container`]: true, [`${prefix}--modal-container--${size}`]: size }, containerClass));
|
|
197
372
|
return html `
|
|
198
373
|
<div
|
|
199
|
-
aria-label=${
|
|
374
|
+
aria-label=${this._computeAriaLabel()}
|
|
200
375
|
part="dialog"
|
|
201
376
|
class=${containerClasses}
|
|
377
|
+
aria-modal=${true}
|
|
202
378
|
role="${alert ? 'alert' : 'dialog'}"
|
|
203
379
|
tabindex="-1"
|
|
204
380
|
@click=${this._handleClickContainer}>
|
|
@@ -222,8 +398,20 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
222
398
|
primaryFocusNode.focus();
|
|
223
399
|
}
|
|
224
400
|
else {
|
|
225
|
-
const {
|
|
226
|
-
|
|
401
|
+
const { primaryButton, secondaryButtons } = this._getFooterElements();
|
|
402
|
+
if (primaryButton) {
|
|
403
|
+
const kind = primaryButton === null || primaryButton === void 0 ? void 0 : primaryButton.getAttribute('kind');
|
|
404
|
+
if (kind === 'danger' && secondaryButtons[0]) {
|
|
405
|
+
secondaryButtons[0].focus();
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
primaryButton.focus();
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
else {
|
|
412
|
+
const { first } = this.getFocusable();
|
|
413
|
+
first === null || first === void 0 ? void 0 : first.focus();
|
|
414
|
+
}
|
|
227
415
|
}
|
|
228
416
|
}
|
|
229
417
|
else if (this._launcher &&
|
|
@@ -232,6 +420,13 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
232
420
|
this._launcher = null;
|
|
233
421
|
}
|
|
234
422
|
}
|
|
423
|
+
if (changedProperties.has('loadingStatus') ||
|
|
424
|
+
changedProperties.has('loadingDescription') ||
|
|
425
|
+
changedProperties.has('loadingSuccessDelay') ||
|
|
426
|
+
changedProperties.has('loadingIconDescription')) {
|
|
427
|
+
await this.constructor._delay();
|
|
428
|
+
this._updateLoadingElement();
|
|
429
|
+
}
|
|
235
430
|
}
|
|
236
431
|
/**
|
|
237
432
|
* @param ms The number of milliseconds.
|
|
@@ -279,6 +474,12 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
|
|
|
279
474
|
static get eventClose() {
|
|
280
475
|
return `${prefix}-modal-closed`;
|
|
281
476
|
}
|
|
477
|
+
/**
|
|
478
|
+
* The name of the custom event fired when this modal reaches a `finished` loading state
|
|
479
|
+
*/
|
|
480
|
+
static get eventOnLoadingSuccess() {
|
|
481
|
+
return `${prefix}-modal-on-loadingsuccess`;
|
|
482
|
+
}
|
|
282
483
|
};
|
|
283
484
|
CDSModal.styles = styles;
|
|
284
485
|
__decorate([
|
|
@@ -322,6 +523,25 @@ __decorate([
|
|
|
322
523
|
__decorate([
|
|
323
524
|
property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })
|
|
324
525
|
], CDSModal.prototype, "preventCloseOnClickOutside", void 0);
|
|
526
|
+
__decorate([
|
|
527
|
+
property({ reflect: true, attribute: 'loading-status' })
|
|
528
|
+
], CDSModal.prototype, "loadingStatus", void 0);
|
|
529
|
+
__decorate([
|
|
530
|
+
property({ type: String, attribute: 'loading-description' })
|
|
531
|
+
], CDSModal.prototype, "loadingDescription", void 0);
|
|
532
|
+
__decorate([
|
|
533
|
+
property({ type: Number, attribute: 'loading-success-delay' })
|
|
534
|
+
], CDSModal.prototype, "loadingSuccessDelay", void 0);
|
|
535
|
+
__decorate([
|
|
536
|
+
property({ type: String, attribute: 'loading-icon-description' })
|
|
537
|
+
], CDSModal.prototype, "loadingIconDescription", void 0);
|
|
538
|
+
__decorate([
|
|
539
|
+
property({
|
|
540
|
+
type: Boolean,
|
|
541
|
+
reflect: true,
|
|
542
|
+
attribute: 'should-submit-on-enter',
|
|
543
|
+
})
|
|
544
|
+
], CDSModal.prototype, "shouldSubmitOnEnter", void 0);
|
|
325
545
|
__decorate([
|
|
326
546
|
property({ type: Boolean, attribute: 'prevent-close' })
|
|
327
547
|
], CDSModal.prototype, "preventClose", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../../src/components/modal/modal.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 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 { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss?lit';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\n/**\n * Modal.\n *\n * @element cds-modal\n * @csspart dialog The dialog.\n * @fires cds-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires cds-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass CDSModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\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: MouseEvent) => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n event.composedPath().indexOf(this.shadowRoot!) < 0 &&\n !this.preventCloseOnClickOutside\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handle the keydown event.\n * Trap the focus inside the side-panel by tracking keydown.key == `Tab`\n *\n * @param {KeyboardEvent} event The keyboard event object.\n */\n @HostListener('keydown')\n protected _handleHostKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n const { first: _firstElement, last: _lastElement } = this.getFocusable();\n\n if (\n event.shiftKey &&\n (this.shadowRoot?.activeElement === _firstElement ||\n document.activeElement === _firstElement)\n ) {\n event.preventDefault();\n\n _lastElement?.focus();\n } else if (!event.shiftKey && document.activeElement === _lastElement) {\n event.preventDefault();\n\n _firstElement?.focus();\n }\n }\n };\n\n @HostListener('document:keydown')\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 _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Get focusable elements.\n *\n * Querying all tabbable items.\n *\n * @returns {{first: HTMLElement, last: HTMLElement, all: HTMLElement[]}} Returns an object with various elements.\n */\n private getFocusable(): {\n first: HTMLElement | undefined;\n last: HTMLElement | undefined;\n all: HTMLElement[];\n } {\n const elements: HTMLElement[] = [];\n\n // Add tabbable elements inside light DOM\n const tabbableItems = this.querySelectorAll<HTMLElement>(selectorTabbable);\n if (tabbableItems?.length) {\n elements.push(...tabbableItems);\n }\n\n // Flatten NodeList arrays and filter for focusable items\n const all = elements?.filter(\n (el): el is HTMLElement => typeof el?.focus === 'function'\n );\n\n return {\n first: all[0],\n last: all[all.length - 1],\n all,\n };\n }\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof CDSModal).selectorCloseButton\n ) &&\n !this.preventClose\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.querySelector(`${prefix}-modal-footer`)\n ? this.setAttribute('has-footer', '')\n : this.removeAttribute('has-footer');\n }\n\n /**\n * Specify whether the Modal is displaying an alert, error or warning.\n * Should go hand in hand with the danger prop.\n */\n @property({ type: Boolean, reflect: true })\n alert = false;\n\n /**\n * Specify text for the accessibility label of the header\n */\n @property({ attribute: 'aria-label' })\n ariaLabel = '';\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * Specify whether or not the Modal content should have any inner padding.\n */\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n /**\n * Specify whether the modal contains scrolling content\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'has-scrolling-content',\n })\n hasScrollingContent = false;\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.MEDIUM;\n\n /**\n * Prevent closing on click outside of modal\n */\n @property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })\n preventCloseOnClickOutside = false;\n\n /**\n * Prevent the modal from closing after clicking the close button\n */\n @property({ type: Boolean, attribute: 'prevent-close' })\n preventClose = false;\n\n firstUpdated() {\n const body = this.querySelector(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n\n if (!body) {\n const bodyElement = document.createElement(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n this.appendChild(bodyElement);\n }\n }\n\n render() {\n const { alert, ariaLabel, size, hasScrollingContent } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <div\n aria-label=${ariaLabel}\n part=\"dialog\"\n class=${containerClasses}\n role=\"${alert ? 'alert' : 'dialog'}\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n ${hasScrollingContent\n ? html` <div class=\"cds--modal-content--overflow-indicator\"></div> `\n : ``}\n </div>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof CDSModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof CDSModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<cds-button>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<cds-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else {\n const { first } = this.getFocusable();\n\n first?.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-button[kind=\"primary\"]`;\n }\n\n /**\n * A selector selecting the modal body component\n */\n static get selectorModalBody() {\n return `${prefix}-modal-body`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSModal;\n"],"names":["customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../src/components/modal/modal.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss?lit';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport '../inline-loading';\nimport CDSModalFooter from './modal-footer';\n\nexport { MODAL_SIZE };\n\n/**\n * Modal.\n *\n * @element cds-modal\n * @csspart dialog The dialog.\n * @fires cds-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires cds-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass CDSModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * The inline loading element that renders when `loading-status` is not `inactive`\n */\n private _loadingEl: HTMLElement | null = null;\n\n /**\n * MutationObserver that observes the modal-footer\n */\n private _footerObserver?: MutationObserver;\n\n /**\n * MutationObserver that observes the modal-header\n */\n private _headerObserver?: MutationObserver;\n\n /**\n * Loading statuses that are not `inactive`\n */\n private WORKING_LOADING_STATUSES = ['active', 'finished', 'error'];\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\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: MouseEvent) => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n event.composedPath().indexOf(this.shadowRoot!) < 0 &&\n !this.preventCloseOnClickOutside\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handle the keydown event.\n * Trap the focus inside the side-panel by tracking keydown.key == `Tab`\n *\n * @param {KeyboardEvent} event The keyboard event object.\n */\n @HostListener('keydown')\n protected _handleHostKeydown = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n const { primaryButton } = this._getFooterElements();\n\n if (\n this.open &&\n this.shouldSubmitOnEnter &&\n event.key === 'Enter' &&\n target &&\n document.activeElement !== primaryButton\n ) {\n const closeButton = (this.constructor as typeof CDSModal)\n .selectorCloseButton;\n\n const targetIsCloseButton =\n !!target.closest(closeButton) ||\n !!document.activeElement?.closest?.(closeButton);\n\n if (!targetIsCloseButton) {\n primaryButton?.click();\n return;\n }\n }\n if (event.key === 'Tab') {\n const { first: _firstElement, last: _lastElement } = this.getFocusable();\n\n if (\n event.shiftKey &&\n (this.shadowRoot?.activeElement === _firstElement ||\n document.activeElement === _firstElement)\n ) {\n event.preventDefault();\n\n _lastElement?.focus();\n } else if (!event.shiftKey && document.activeElement === _lastElement) {\n event.preventDefault();\n\n _firstElement?.focus();\n }\n }\n };\n\n @HostListener('document:keydown')\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 _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Get focusable elements.\n *\n * Querying all tabbable items.\n *\n * @returns {{first: HTMLElement, last: HTMLElement, all: HTMLElement[]}} Returns an object with various elements.\n */\n private getFocusable(): {\n first: HTMLElement | undefined;\n last: HTMLElement | undefined;\n all: HTMLElement[];\n } {\n const elements: HTMLElement[] = [];\n\n // Add tabbable elements inside light DOM\n const tabbableItems = this.querySelectorAll<HTMLElement>(selectorTabbable);\n if (tabbableItems?.length) {\n elements.push(...tabbableItems);\n }\n\n // Flatten NodeList arrays and filter for focusable items\n const all = elements?.filter(\n (el): el is HTMLElement => typeof el?.focus === 'function'\n );\n\n return {\n first: all[0],\n last: all[all.length - 1],\n all,\n };\n }\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof CDSModal).selectorCloseButton\n ) &&\n !this.preventClose\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.querySelector(`${prefix}-modal-footer`)\n ? this.setAttribute('has-footer', '')\n : this.removeAttribute('has-footer');\n }\n\n /**\n * Specify whether the Modal is displaying an alert, error or warning.\n * Should go hand in hand with the danger prop.\n */\n @property({ type: Boolean, reflect: true })\n alert = false;\n\n /**\n * Specify text for the accessibility label of the header\n */\n @property({ attribute: 'aria-label' })\n ariaLabel = '';\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * Specify whether or not the Modal content should have any inner padding.\n */\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n /**\n * Specify whether the modal contains scrolling content\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'has-scrolling-content',\n })\n hasScrollingContent = false;\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.MEDIUM;\n\n /**\n * Prevent closing on click outside of modal\n */\n @property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })\n preventCloseOnClickOutside = false;\n\n /**\n * Specify the loading status\n */\n @property({ reflect: true, attribute: 'loading-status' })\n loadingStatus: 'inactive' | 'active' | 'finished' | 'error' = 'inactive';\n\n /**\n * Specify the description for the loading text\n */\n @property({ type: String, attribute: 'loading-description' })\n loadingDescription = '';\n\n /**\n * Provide a delay for the setTimeout for success\n */\n @property({ type: Number, attribute: 'loading-success-delay' })\n loadingSuccessDelay = 1500;\n\n /**\n * Specify the description for the loading icon\n */\n @property({ type: String, attribute: 'loading-icon-description' })\n loadingIconDescription = 'Loading';\n\n /**\n * Specify if Enter key should be used as \"submit\" action that clicks the primary footer button\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'should-submit-on-enter',\n })\n shouldSubmitOnEnter = false;\n\n /**\n * Prevent the modal from closing after clicking the close button\n */\n @property({ type: Boolean, attribute: 'prevent-close' })\n preventClose = false;\n\n // Initializes the inline-loading element\n private _initializeLoadingEl(footer: CDSModalFooter) {\n if (!footer) return null;\n\n if (\n !this._loadingEl &&\n this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)\n ) {\n const el = document.createElement(`${prefix}-inline-loading`);\n el.setAttribute('controlled', '');\n el.setAttribute('aria-live', 'off');\n footer.appendChild(el);\n this._loadingEl = el as HTMLElement;\n }\n return this._loadingEl;\n }\n\n private _getFooterElements() {\n const footer = this.querySelector(`${prefix}-modal-footer`);\n\n const primaryButton =\n this.querySelector<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"primary\"]`\n ) ||\n this.querySelector<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"danger\"]`\n ) ||\n null;\n\n const secondaryButtons = Array.from(\n this.querySelectorAll<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"secondary\"]`\n )\n );\n\n return { footer, primaryButton, secondaryButtons };\n }\n\n // Updates the inline loading element in the modal footer\n private _updateLoadingElement() {\n const { footer, primaryButton, secondaryButtons } =\n this._getFooterElements();\n\n const loader = this._initializeLoadingEl(footer as CDSModalFooter);\n if (!footer || !loader || !primaryButton) return;\n\n if (this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {\n loader.style.display = 'inline-flex';\n loader.setAttribute('status', String(this.loadingStatus));\n loader.setAttribute('aria-live', 'assertive');\n loader.setAttribute(\n 'icon-description',\n String(this.loadingIconDescription)\n );\n loader.textContent = this.loadingDescription;\n primaryButton.style.display = 'none';\n\n if (secondaryButtons[0]) {\n if (!footer.hasAttribute('has-three-buttons')) {\n secondaryButtons[0].setAttribute('disabled', '');\n } else {\n secondaryButtons.forEach((b) => b.removeAttribute('disabled'));\n }\n }\n\n if (this.loadingStatus === 'finished') {\n // fire event for successful load\n setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventOnLoadingSuccess,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n }\n )\n );\n }, this.loadingSuccessDelay);\n }\n } else if (this.loadingStatus === 'inactive') {\n loader.style.display = 'none';\n loader.setAttribute('aria-live', 'off');\n\n if (primaryButton) primaryButton.style.display = '';\n if (secondaryButtons)\n secondaryButtons.forEach((b) => b.removeAttribute('disabled'));\n }\n }\n\n async firstUpdated() {\n const body = this.querySelector(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n\n if (!body) {\n const bodyElement = document.createElement(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n this.appendChild(bodyElement);\n }\n }\n\n /**\n * Computes the aria-label of the modal based on (in order of highest to lowest precedence):\n * - `modal-label`\n * - `aria-label`\n * - `modal-heading`\n */\n private _computeAriaLabel(): string {\n const labelEl = this.querySelector(`${prefix}-modal-label`);\n const label = labelEl?.textContent?.trim();\n if (label) return label;\n\n const ariaLabel = this.ariaLabel?.trim();\n if (ariaLabel) return ariaLabel;\n\n const headingEl = this.querySelector(`${prefix}-modal-heading`);\n const heading = headingEl?.textContent?.trim();\n return heading || '';\n }\n\n /**\n * Observes the modal footer's `has-three-buttons` attribute to account for cases\n * where the loading status and the amount of footer-buttons\n * are being changed dynamically\n */\n private _observeFooter() {\n const footer = this.querySelector(`${prefix}-modal-footer`);\n if (!footer) return;\n\n this._footerObserver = new MutationObserver(() => {\n this._updateLoadingElement();\n });\n this._footerObserver.observe(footer, {\n attributes: true,\n childList: true,\n attributeFilter: ['has-three-buttons'],\n });\n }\n\n /**\n * Observes the modal header to account for cases where the modal-heading,\n * modal-label, and/or `aria-label` are dynamically changing\n * to update the `aria-label` put on the modal\n */\n private _observeHeader() {\n const header = this.querySelector(`${prefix}-modal-header`);\n if (!header) return;\n\n this._headerObserver = new MutationObserver(() => {\n this.requestUpdate('ariaLabel');\n });\n this._headerObserver.observe(header, {\n subtree: true,\n characterData: true,\n childList: true,\n });\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n this._observeFooter();\n this._observeHeader();\n }\n\n disconnectedCallback() {\n this._footerObserver?.disconnect();\n this._headerObserver?.disconnect();\n super.disconnectedCallback?.();\n }\n\n render() {\n const { alert, size, hasScrollingContent } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <div\n aria-label=${this._computeAriaLabel()}\n part=\"dialog\"\n class=${containerClasses}\n aria-modal=${true}\n role=\"${alert ? 'alert' : 'dialog'}\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n ${hasScrollingContent\n ? html` <div class=\"cds--modal-content--overflow-indicator\"></div> `\n : ``}\n </div>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof CDSModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof CDSModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<cds-button>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<cds-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else {\n const { primaryButton, secondaryButtons } = this._getFooterElements();\n\n if (primaryButton) {\n const kind = primaryButton?.getAttribute('kind');\n\n if (kind === 'danger' && secondaryButtons[0]) {\n secondaryButtons[0].focus();\n } else {\n primaryButton.focus();\n }\n } else {\n const { first } = this.getFocusable();\n\n first?.focus();\n }\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n if (\n changedProperties.has('loadingStatus') ||\n changedProperties.has('loadingDescription') ||\n changedProperties.has('loadingSuccessDelay') ||\n changedProperties.has('loadingIconDescription')\n ) {\n await (this.constructor as typeof CDSModal)._delay();\n this._updateLoadingElement();\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-button[kind=\"primary\"]`;\n }\n\n /**\n * A selector selecting the modal body component\n */\n static get selectorModalBody() {\n return `${prefix}-modal-body`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n /**\n * The name of the custom event fired when this modal reaches a `finished` loading state\n */\n static get eventOnLoadingSuccess() {\n return `${prefix}-modal-on-loadingsuccess`;\n }\n\n static styles = styles;\n}\n\nexport default CDSModal;\n"],"names":["customElement"],"mappings":"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"}
|