@carbon/web-components 2.53.0 → 2.54.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 +784 -110
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es/components/button/button.scss.js +1 -1
- package/es/components/checkbox/checkbox.scss.js +1 -1
- package/es/components/code-snippet/code-snippet.scss.js +1 -1
- package/es/components/combo-box/combo-box.scss.js +1 -1
- package/es/components/combo-button/combo-button.scss.js +1 -1
- package/es/components/contained-list/contained-list.scss.js +1 -1
- package/es/components/content-switcher/content-switcher.scss.js +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-toolbar-search.d.ts +3 -3
- package/es/components/data-table/table-toolbar-search.d.ts.map +1 -1
- package/es/components/data-table/table-toolbar-search.js +2 -3
- package/es/components/data-table/table-toolbar-search.js.map +1 -1
- package/es/components/date-picker/date-picker.d.ts +4 -0
- package/es/components/date-picker/date-picker.d.ts.map +1 -1
- package/es/components/date-picker/date-picker.js +5 -1
- package/es/components/date-picker/date-picker.js.map +1 -1
- package/es/components/date-picker/date-picker.scss.js +1 -1
- package/es/components/date-picker/fix-events-plugin.d.ts.map +1 -1
- package/es/components/date-picker/fix-events-plugin.js +0 -6
- package/es/components/date-picker/fix-events-plugin.js.map +1 -1
- package/es/components/date-picker/range-plugin.d.ts +2 -8
- package/es/components/date-picker/range-plugin.d.ts.map +1 -1
- package/es/components/date-picker/range-plugin.js +3 -9
- package/es/components/date-picker/range-plugin.js.map +1 -1
- package/es/components/dialog/dialog.scss.js +1 -1
- package/es/components/dropdown/dropdown.d.ts +3 -2
- package/es/components/dropdown/dropdown.d.ts.map +1 -1
- package/es/components/dropdown/dropdown.js +9 -2
- package/es/components/dropdown/dropdown.js.map +1 -1
- package/es/components/dropdown/dropdown.scss.js +1 -1
- package/es/components/feature-flags/index.js +1 -1
- package/es/components/file-uploader/file-uploader.scss.js +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
- package/es/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
- package/es/components/fluid-combo-box/fluid-combo-box-skeleton.js +45 -0
- package/es/components/fluid-combo-box/fluid-combo-box-skeleton.js.map +1 -0
- package/es/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
- package/es/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
- package/es/components/fluid-combo-box/fluid-combo-box.js +53 -0
- package/es/components/fluid-combo-box/fluid-combo-box.js.map +1 -0
- package/es/components/fluid-combo-box/fluid-combo-box.scss.js +14 -0
- package/es/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -0
- package/es/components/fluid-combo-box/index.d.ts +9 -0
- package/es/components/fluid-combo-box/index.d.ts.map +1 -0
- package/es/components/fluid-combo-box/index.js +9 -0
- package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- package/es/components/fluid-form/fluid-form.d.ts +19 -0
- package/es/components/fluid-form/fluid-form.d.ts.map +1 -0
- package/es/components/fluid-form/fluid-form.js +44 -0
- package/es/components/fluid-form/fluid-form.js.map +1 -0
- package/es/components/fluid-form/fluid-form.scss.js +14 -0
- package/es/components/fluid-form/fluid-form.scss.js.map +1 -0
- package/es/components/fluid-form/index.d.ts +8 -0
- package/es/components/fluid-form/index.d.ts.map +1 -0
- package/es/components/fluid-form/index.js +8 -0
- package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
- package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
- package/es/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
- package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
- package/es/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
- package/es/components/fluid-search/fluid-search.scss.js +1 -1
- package/es/components/fluid-select/fluid-select.scss.js +1 -1
- package/es/components/fluid-select/fluid-select.scss.js.map +1 -1
- package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
- package/es/components/fluid-textarea/fluid-textarea.scss.js +1 -1
- package/es/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
- package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
- package/es/components/form/form-item.scss.js +1 -1
- package/es/components/form/form.scss.js +1 -1
- package/es/components/form-group/form-group.scss.js +1 -1
- package/es/components/grid/column-hang.scss.js +1 -1
- package/es/components/grid/grid.d.ts +5 -0
- package/es/components/grid/grid.d.ts.map +1 -1
- package/es/components/grid/grid.js +11 -1
- package/es/components/grid/grid.js.map +1 -1
- package/es/components/grid/grid.scss.js +1 -1
- package/es/components/grid/grid.scss.js.map +1 -1
- package/es/components/icon/icon.d.ts +1 -1
- package/es/components/menu/menu-item.d.ts +1 -0
- package/es/components/menu/menu-item.d.ts.map +1 -1
- package/es/components/menu/menu-item.js +5 -0
- package/es/components/menu/menu-item.js.map +1 -1
- package/es/components/menu/menu-item.scss.js +1 -1
- package/es/components/menu/menu-item.scss.js.map +1 -1
- package/es/components/menu-button/menu-button.d.ts.map +1 -1
- package/es/components/menu-button/menu-button.js +0 -1
- 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.scss.js +1 -1
- package/es/components/modal/modal.scss.js.map +1 -1
- package/es/components/multi-select/multi-select.d.ts +38 -4
- package/es/components/multi-select/multi-select.d.ts.map +1 -1
- package/es/components/multi-select/multi-select.js +30 -27
- 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.d.ts +1 -1
- package/es/components/notification/actionable-notification.scss.js +1 -1
- package/es/components/notification/callout-notification.d.ts +1 -1
- package/es/components/notification/inline-notification.d.ts +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/number-input/number-input.scss.js +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es/components/page-header/page-header.scss.js +1 -1
- package/es/components/pagination/defs.d.ts +25 -0
- package/es/components/pagination/defs.d.ts.map +1 -1
- package/es/components/pagination/defs.js +27 -1
- package/es/components/pagination/defs.js.map +1 -1
- package/es/components/pagination/pagination.d.ts +9 -1
- package/es/components/pagination/pagination.d.ts.map +1 -1
- package/es/components/pagination/pagination.js +7 -2
- package/es/components/pagination/pagination.js.map +1 -1
- package/es/components/pagination/pagination.scss.js +1 -1
- package/es/components/pagination/pagination.scss.js.map +1 -1
- package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
- package/es/components/password-input/defs.d.ts +5 -1
- package/es/components/password-input/defs.d.ts.map +1 -1
- package/es/components/password-input/defs.js +4 -0
- package/es/components/password-input/defs.js.map +1 -1
- package/es/components/password-input/password-input.d.ts +1 -1
- package/es/components/password-input/password-input.d.ts.map +1 -1
- package/es/components/password-input/password-input.js +15 -15
- package/es/components/password-input/password-input.js.map +1 -1
- package/es/components/password-input/password-input.scss.js +1 -1
- package/es/components/password-input/password-input.scss.js.map +1 -1
- package/es/components/popover/popover.scss.js +1 -1
- package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es/components/radio-button/radio-button.scss.js +1 -1
- package/es/components/search/defs.d.ts +28 -0
- package/es/components/search/defs.d.ts.map +1 -0
- package/es/components/search/defs.js +40 -0
- package/es/components/search/defs.js.map +1 -0
- package/es/components/search/search-skeleton.d.ts +4 -4
- package/es/components/search/search-skeleton.d.ts.map +1 -1
- package/es/components/search/search-skeleton.js +9 -9
- package/es/components/search/search-skeleton.js.map +1 -1
- package/es/components/search/search.d.ts +4 -3
- package/es/components/search/search.d.ts.map +1 -1
- package/es/components/search/search.js +3 -5
- package/es/components/search/search.js.map +1 -1
- package/es/components/search/search.scss.js +1 -1
- package/es/components/search/search.scss.js.map +1 -1
- package/es/components/select/select.d.ts +1 -1
- package/es/components/select/select.d.ts.map +1 -1
- package/es/components/select/select.js +1 -4
- package/es/components/select/select.js.map +1 -1
- package/es/components/select/select.scss.js +1 -1
- package/es/components/select/select.scss.js.map +1 -1
- package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es/components/slider/slider.d.ts.map +1 -1
- package/es/components/slider/slider.js +2 -2
- package/es/components/slider/slider.js.map +1 -1
- package/es/components/slider/slider.scss.js +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/tabs/stories/tabs-wrapper.d.ts +53 -0
- package/es/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
- package/es/components/tabs/stories/tabs-wrapper.js +129 -0
- package/es/components/tabs/stories/tabs-wrapper.js.map +1 -0
- package/es/components/tabs/tab.d.ts +23 -0
- package/es/components/tabs/tab.d.ts.map +1 -1
- package/es/components/tabs/tab.js +59 -3
- package/es/components/tabs/tab.js.map +1 -1
- package/es/components/tabs/tabs.d.ts +14 -0
- package/es/components/tabs/tabs.d.ts.map +1 -1
- package/es/components/tabs/tabs.js +74 -25
- package/es/components/tabs/tabs.js.map +1 -1
- package/es/components/tabs/tabs.scss.js +1 -1
- package/es/components/tabs/tabs.scss.js.map +1 -1
- package/es/components/tag/tag.scss.js +1 -1
- package/es/components/text-input/defs.d.ts +5 -1
- package/es/components/text-input/defs.d.ts.map +1 -1
- package/es/components/text-input/defs.js +4 -0
- package/es/components/text-input/defs.js.map +1 -1
- package/es/components/text-input/text-input-skeleton.d.ts +5 -0
- package/es/components/text-input/text-input-skeleton.d.ts.map +1 -1
- package/es/components/text-input/text-input-skeleton.js +10 -3
- package/es/components/text-input/text-input-skeleton.js.map +1 -1
- package/es/components/text-input/text-input.d.ts +4 -3
- package/es/components/text-input/text-input.d.ts.map +1 -1
- package/es/components/text-input/text-input.js +15 -11
- package/es/components/text-input/text-input.js.map +1 -1
- package/es/components/text-input/text-input.scss.js +1 -1
- package/es/components/text-input/text-input.scss.js.map +1 -1
- package/es/components/textarea/textarea.scss.js +1 -1
- package/es/components/tile/selectable-tile.d.ts +1 -1
- package/es/components/tile/tile.scss.js +1 -1
- package/es/components/time-picker/time-picker.d.ts +2 -1
- package/es/components/time-picker/time-picker.d.ts.map +1 -1
- package/es/components/time-picker/time-picker.scss.js +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +1 -1
- package/es/components/tooltip/tooltip.scss.js +1 -1
- package/es/components/tooltip/tooltip.scss.js.map +1 -1
- package/es/components/tree-view/tree-view.scss.js +1 -1
- package/es/components/ui-shell/header.scss.js +1 -1
- package/es/globals/directives/spread.d.ts +1 -1
- package/es/globals/directives/spread.d.ts.map +1 -1
- package/es/globals/internal/icon-loader-utils.d.ts +1 -1
- package/es/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/es/globals/mixins/validity.d.ts +2 -1
- package/es/globals/mixins/validity.d.ts.map +1 -1
- package/es/globals/mixins/validity.js.map +1 -1
- package/es/index.js +1 -1
- package/es/node_modules/flatpickr/dist/esm/index.js +1516 -0
- package/es/node_modules/flatpickr/dist/esm/index.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/l10n/default.js +99 -0
- package/es/node_modules/flatpickr/dist/esm/l10n/default.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js +130 -0
- package/es/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/types/options.js +90 -0
- package/es/node_modules/flatpickr/dist/esm/types/options.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/utils/dates.js +118 -0
- package/es/node_modules/flatpickr/dist/esm/utils/dates.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/utils/dom.js +52 -0
- package/es/node_modules/flatpickr/dist/esm/utils/dom.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/utils/formatting.js +181 -0
- package/es/node_modules/flatpickr/dist/esm/utils/formatting.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/utils/index.js +33 -0
- package/es/node_modules/flatpickr/dist/esm/utils/index.js.map +1 -0
- package/es/node_modules/flatpickr/dist/esm/utils/polyfills.js +26 -0
- package/es/node_modules/flatpickr/dist/esm/utils/polyfills.js.map +1 -0
- package/es/packages/feature-flags/es/index.js.map +1 -0
- package/es-custom/components/ai-label/ai-label.scss.js +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/checkbox/checkbox.scss.js +1 -1
- package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
- package/es-custom/components/combo-box/combo-box.scss.js +1 -1
- package/es-custom/components/combo-button/combo-button.scss.js +1 -1
- package/es-custom/components/contained-list/contained-list.scss.js +1 -1
- package/es-custom/components/content-switcher/content-switcher.scss.js +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-toolbar-search.d.ts +3 -3
- package/es-custom/components/data-table/table-toolbar-search.d.ts.map +1 -1
- package/es-custom/components/data-table/table-toolbar-search.js +2 -3
- package/es-custom/components/data-table/table-toolbar-search.js.map +1 -1
- package/es-custom/components/date-picker/date-picker.d.ts +4 -0
- package/es-custom/components/date-picker/date-picker.d.ts.map +1 -1
- package/es-custom/components/date-picker/date-picker.js +5 -1
- package/es-custom/components/date-picker/date-picker.js.map +1 -1
- package/es-custom/components/date-picker/date-picker.scss.js +1 -1
- package/es-custom/components/date-picker/fix-events-plugin.d.ts.map +1 -1
- package/es-custom/components/date-picker/fix-events-plugin.js +0 -6
- package/es-custom/components/date-picker/fix-events-plugin.js.map +1 -1
- package/es-custom/components/date-picker/range-plugin.d.ts +2 -8
- package/es-custom/components/date-picker/range-plugin.d.ts.map +1 -1
- package/es-custom/components/date-picker/range-plugin.js +3 -9
- package/es-custom/components/date-picker/range-plugin.js.map +1 -1
- package/es-custom/components/dialog/dialog.scss.js +1 -1
- package/es-custom/components/dropdown/dropdown.d.ts +3 -2
- package/es-custom/components/dropdown/dropdown.d.ts.map +1 -1
- package/es-custom/components/dropdown/dropdown.js +9 -2
- package/es-custom/components/dropdown/dropdown.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.scss.js +1 -1
- package/es-custom/components/feature-flags/index.js +1 -1
- package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
- package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.js +45 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box-skeleton.js.map +1 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.js +53 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.js.map +1 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +14 -0
- package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -0
- package/es-custom/components/fluid-combo-box/index.d.ts +9 -0
- package/es-custom/components/fluid-combo-box/index.d.ts.map +1 -0
- package/es-custom/components/fluid-combo-box/index.js +9 -0
- package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- package/es-custom/components/fluid-form/fluid-form.d.ts +19 -0
- package/es-custom/components/fluid-form/fluid-form.d.ts.map +1 -0
- package/es-custom/components/fluid-form/fluid-form.js +44 -0
- package/es-custom/components/fluid-form/fluid-form.js.map +1 -0
- package/es-custom/components/fluid-form/fluid-form.scss.js +14 -0
- package/es-custom/components/fluid-form/fluid-form.scss.js.map +1 -0
- package/es-custom/components/fluid-form/index.d.ts +8 -0
- package/es-custom/components/fluid-form/index.d.ts.map +1 -0
- package/es-custom/components/fluid-form/index.js +8 -0
- package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
- package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
- package/es-custom/components/fluid-number-input/fluid-number-input.scss.js.map +1 -1
- package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
- package/es-custom/components/fluid-password-input/fluid-password-input.scss.js.map +1 -1
- package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
- package/es-custom/components/fluid-select/fluid-select.scss.js +1 -1
- package/es-custom/components/fluid-select/fluid-select.scss.js.map +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input.scss.js.map +1 -1
- package/es-custom/components/fluid-textarea/fluid-textarea.scss.js +1 -1
- package/es-custom/components/fluid-textarea/fluid-textarea.scss.js.map +1 -1
- package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
- package/es-custom/components/form/form-item.scss.js +1 -1
- package/es-custom/components/form/form.scss.js +1 -1
- package/es-custom/components/form-group/form-group.scss.js +1 -1
- package/es-custom/components/grid/column-hang.scss.js +1 -1
- package/es-custom/components/grid/grid.d.ts +5 -0
- package/es-custom/components/grid/grid.d.ts.map +1 -1
- package/es-custom/components/grid/grid.js +11 -1
- package/es-custom/components/grid/grid.js.map +1 -1
- package/es-custom/components/grid/grid.scss.js +1 -1
- package/es-custom/components/grid/grid.scss.js.map +1 -1
- package/es-custom/components/icon/icon.d.ts +1 -1
- package/es-custom/components/menu/menu-item.d.ts +1 -0
- package/es-custom/components/menu/menu-item.d.ts.map +1 -1
- package/es-custom/components/menu/menu-item.js +5 -0
- package/es-custom/components/menu/menu-item.js.map +1 -1
- package/es-custom/components/menu/menu-item.scss.js +1 -1
- package/es-custom/components/menu/menu-item.scss.js.map +1 -1
- package/es-custom/components/menu-button/menu-button.d.ts.map +1 -1
- package/es-custom/components/menu-button/menu-button.js +0 -1
- 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.scss.js +1 -1
- package/es-custom/components/modal/modal.scss.js.map +1 -1
- package/es-custom/components/multi-select/multi-select.d.ts +38 -4
- package/es-custom/components/multi-select/multi-select.d.ts.map +1 -1
- package/es-custom/components/multi-select/multi-select.js +30 -27
- 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.d.ts +1 -1
- package/es-custom/components/notification/actionable-notification.scss.js +1 -1
- package/es-custom/components/notification/callout-notification.d.ts +1 -1
- package/es-custom/components/notification/inline-notification.d.ts +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/number-input/number-input.scss.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es-custom/components/page-header/page-header.scss.js +1 -1
- package/es-custom/components/pagination/defs.d.ts +25 -0
- package/es-custom/components/pagination/defs.d.ts.map +1 -1
- package/es-custom/components/pagination/defs.js +27 -1
- package/es-custom/components/pagination/defs.js.map +1 -1
- package/es-custom/components/pagination/pagination.d.ts +9 -1
- package/es-custom/components/pagination/pagination.d.ts.map +1 -1
- package/es-custom/components/pagination/pagination.js +7 -2
- package/es-custom/components/pagination/pagination.js.map +1 -1
- package/es-custom/components/pagination/pagination.scss.js +1 -1
- package/es-custom/components/pagination/pagination.scss.js.map +1 -1
- package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
- package/es-custom/components/password-input/defs.d.ts +5 -1
- package/es-custom/components/password-input/defs.d.ts.map +1 -1
- package/es-custom/components/password-input/defs.js +4 -0
- package/es-custom/components/password-input/defs.js.map +1 -1
- package/es-custom/components/password-input/password-input.d.ts +1 -1
- package/es-custom/components/password-input/password-input.d.ts.map +1 -1
- package/es-custom/components/password-input/password-input.js +15 -15
- package/es-custom/components/password-input/password-input.js.map +1 -1
- package/es-custom/components/password-input/password-input.scss.js +1 -1
- package/es-custom/components/password-input/password-input.scss.js.map +1 -1
- package/es-custom/components/popover/popover.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es-custom/components/radio-button/radio-button.scss.js +1 -1
- package/es-custom/components/search/defs.d.ts +28 -0
- package/es-custom/components/search/defs.d.ts.map +1 -0
- package/es-custom/components/search/defs.js +40 -0
- package/es-custom/components/search/defs.js.map +1 -0
- package/es-custom/components/search/search-skeleton.d.ts +4 -4
- package/es-custom/components/search/search-skeleton.d.ts.map +1 -1
- package/es-custom/components/search/search-skeleton.js +9 -9
- package/es-custom/components/search/search-skeleton.js.map +1 -1
- package/es-custom/components/search/search.d.ts +4 -3
- package/es-custom/components/search/search.d.ts.map +1 -1
- package/es-custom/components/search/search.js +3 -5
- package/es-custom/components/search/search.js.map +1 -1
- package/es-custom/components/search/search.scss.js +1 -1
- package/es-custom/components/search/search.scss.js.map +1 -1
- package/es-custom/components/select/select.d.ts +1 -1
- package/es-custom/components/select/select.d.ts.map +1 -1
- package/es-custom/components/select/select.js +1 -4
- package/es-custom/components/select/select.js.map +1 -1
- package/es-custom/components/select/select.scss.js +1 -1
- package/es-custom/components/select/select.scss.js.map +1 -1
- package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es-custom/components/slider/slider.d.ts.map +1 -1
- package/es-custom/components/slider/slider.js +2 -2
- package/es-custom/components/slider/slider.js.map +1 -1
- package/es-custom/components/slider/slider.scss.js +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/tabs/stories/tabs-wrapper.d.ts +53 -0
- package/es-custom/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
- package/es-custom/components/tabs/stories/tabs-wrapper.js +129 -0
- package/es-custom/components/tabs/stories/tabs-wrapper.js.map +1 -0
- package/es-custom/components/tabs/tab.d.ts +23 -0
- package/es-custom/components/tabs/tab.d.ts.map +1 -1
- package/es-custom/components/tabs/tab.js +59 -3
- package/es-custom/components/tabs/tab.js.map +1 -1
- package/es-custom/components/tabs/tabs.d.ts +14 -0
- package/es-custom/components/tabs/tabs.d.ts.map +1 -1
- package/es-custom/components/tabs/tabs.js +74 -25
- package/es-custom/components/tabs/tabs.js.map +1 -1
- package/es-custom/components/tabs/tabs.scss.js +1 -1
- package/es-custom/components/tabs/tabs.scss.js.map +1 -1
- package/es-custom/components/tag/tag.scss.js +1 -1
- package/es-custom/components/text-input/defs.d.ts +5 -1
- package/es-custom/components/text-input/defs.d.ts.map +1 -1
- package/es-custom/components/text-input/defs.js +4 -0
- package/es-custom/components/text-input/defs.js.map +1 -1
- package/es-custom/components/text-input/text-input-skeleton.d.ts +5 -0
- package/es-custom/components/text-input/text-input-skeleton.d.ts.map +1 -1
- package/es-custom/components/text-input/text-input-skeleton.js +10 -3
- package/es-custom/components/text-input/text-input-skeleton.js.map +1 -1
- package/es-custom/components/text-input/text-input.d.ts +4 -3
- package/es-custom/components/text-input/text-input.d.ts.map +1 -1
- package/es-custom/components/text-input/text-input.js +15 -11
- package/es-custom/components/text-input/text-input.js.map +1 -1
- package/es-custom/components/text-input/text-input.scss.js +1 -1
- package/es-custom/components/text-input/text-input.scss.js.map +1 -1
- package/es-custom/components/textarea/textarea.scss.js +1 -1
- package/es-custom/components/tile/selectable-tile.d.ts +1 -1
- package/es-custom/components/tile/tile.scss.js +1 -1
- package/es-custom/components/time-picker/time-picker.d.ts +2 -1
- package/es-custom/components/time-picker/time-picker.d.ts.map +1 -1
- package/es-custom/components/time-picker/time-picker.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js.map +1 -1
- package/es-custom/components/tree-view/tree-view.scss.js +1 -1
- package/es-custom/components/ui-shell/header.scss.js +1 -1
- package/es-custom/globals/directives/spread.d.ts +1 -1
- package/es-custom/globals/directives/spread.d.ts.map +1 -1
- package/es-custom/globals/internal/icon-loader-utils.d.ts +1 -1
- package/es-custom/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/es-custom/globals/mixins/validity.d.ts +2 -1
- package/es-custom/globals/mixins/validity.d.ts.map +1 -1
- package/es-custom/globals/mixins/validity.js.map +1 -1
- package/es-custom/index.js +1 -1
- package/es-custom/node_modules/flatpickr/dist/esm/index.js +1516 -0
- package/es-custom/node_modules/flatpickr/dist/esm/index.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/l10n/default.js +99 -0
- package/es-custom/node_modules/flatpickr/dist/esm/l10n/default.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js +130 -0
- package/es-custom/node_modules/flatpickr/dist/esm/plugins/rangePlugin.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/types/options.js +90 -0
- package/es-custom/node_modules/flatpickr/dist/esm/types/options.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/dates.js +118 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/dates.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/dom.js +52 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/dom.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/formatting.js +181 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/formatting.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/index.js +33 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/index.js.map +1 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/polyfills.js +26 -0
- package/es-custom/node_modules/flatpickr/dist/esm/utils/polyfills.js.map +1 -0
- package/es-custom/packages/feature-flags/es/index.js.map +1 -0
- package/lib/components/data-table/table-toolbar-search.d.ts +3 -3
- package/lib/components/data-table/table-toolbar-search.d.ts.map +1 -1
- package/lib/components/date-picker/date-picker.d.ts +4 -0
- package/lib/components/date-picker/date-picker.d.ts.map +1 -1
- package/lib/components/date-picker/fix-events-plugin.d.ts.map +1 -1
- package/lib/components/date-picker/range-plugin.d.ts +2 -8
- package/lib/components/date-picker/range-plugin.d.ts.map +1 -1
- package/lib/components/dropdown/dropdown.d.ts +3 -2
- package/lib/components/dropdown/dropdown.d.ts.map +1 -1
- package/lib/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts +18 -0
- package/lib/components/fluid-combo-box/fluid-combo-box-skeleton.d.ts.map +1 -0
- package/lib/components/fluid-combo-box/fluid-combo-box.d.ts +23 -0
- package/lib/components/fluid-combo-box/fluid-combo-box.d.ts.map +1 -0
- package/lib/components/fluid-combo-box/index.d.ts +9 -0
- package/lib/components/fluid-combo-box/index.d.ts.map +1 -0
- package/lib/components/fluid-form/fluid-form.d.ts +19 -0
- package/lib/components/fluid-form/fluid-form.d.ts.map +1 -0
- package/lib/components/fluid-form/index.d.ts +8 -0
- package/lib/components/fluid-form/index.d.ts.map +1 -0
- package/lib/components/grid/grid.d.ts +5 -0
- package/lib/components/grid/grid.d.ts.map +1 -1
- package/lib/components/icon/icon.d.ts +1 -1
- package/lib/components/menu/menu-item.d.ts +1 -0
- package/lib/components/menu/menu-item.d.ts.map +1 -1
- package/lib/components/menu-button/menu-button.d.ts.map +1 -1
- package/lib/components/multi-select/multi-select.d.ts +38 -4
- package/lib/components/multi-select/multi-select.d.ts.map +1 -1
- package/lib/components/notification/actionable-notification.d.ts +1 -1
- package/lib/components/notification/callout-notification.d.ts +1 -1
- package/lib/components/notification/inline-notification.d.ts +1 -1
- package/lib/components/pagination/defs.d.ts +25 -0
- package/lib/components/pagination/defs.d.ts.map +1 -1
- package/lib/components/pagination/defs.js +27 -0
- package/lib/components/pagination/defs.js.map +1 -1
- package/lib/components/pagination/pagination.d.ts +9 -1
- package/lib/components/pagination/pagination.d.ts.map +1 -1
- package/lib/components/password-input/defs.d.ts +5 -1
- package/lib/components/password-input/defs.d.ts.map +1 -1
- package/lib/components/password-input/defs.js +4 -0
- package/lib/components/password-input/defs.js.map +1 -1
- package/lib/components/password-input/password-input.d.ts +1 -1
- package/lib/components/password-input/password-input.d.ts.map +1 -1
- package/lib/components/search/defs.d.ts +28 -0
- package/lib/components/search/defs.d.ts.map +1 -0
- package/lib/components/search/defs.js +41 -0
- package/lib/components/search/defs.js.map +1 -0
- package/lib/components/search/search-skeleton.d.ts +4 -4
- package/lib/components/search/search-skeleton.d.ts.map +1 -1
- package/lib/components/search/search.d.ts +4 -3
- package/lib/components/search/search.d.ts.map +1 -1
- package/lib/components/select/select.d.ts +1 -1
- package/lib/components/select/select.d.ts.map +1 -1
- package/lib/components/slider/slider.d.ts.map +1 -1
- package/lib/components/tabs/stories/tabs-wrapper.d.ts +53 -0
- package/lib/components/tabs/stories/tabs-wrapper.d.ts.map +1 -0
- package/lib/components/tabs/tab.d.ts +23 -0
- package/lib/components/tabs/tab.d.ts.map +1 -1
- package/lib/components/tabs/tabs.d.ts +14 -0
- package/lib/components/tabs/tabs.d.ts.map +1 -1
- package/lib/components/text-input/defs.d.ts +5 -1
- package/lib/components/text-input/defs.d.ts.map +1 -1
- package/lib/components/text-input/defs.js +4 -0
- package/lib/components/text-input/defs.js.map +1 -1
- package/lib/components/text-input/text-input-skeleton.d.ts +5 -0
- package/lib/components/text-input/text-input-skeleton.d.ts.map +1 -1
- package/lib/components/text-input/text-input.d.ts +4 -3
- package/lib/components/text-input/text-input.d.ts.map +1 -1
- package/lib/components/tile/selectable-tile.d.ts +1 -1
- package/lib/components/time-picker/time-picker.d.ts +2 -1
- package/lib/components/time-picker/time-picker.d.ts.map +1 -1
- package/lib/globals/directives/spread.d.ts +1 -1
- package/lib/globals/directives/spread.d.ts.map +1 -1
- package/lib/globals/internal/icon-loader-utils.d.ts +1 -1
- package/lib/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/lib/globals/mixins/validity.d.ts +2 -1
- package/lib/globals/mixins/validity.d.ts.map +1 -1
- package/package.json +13 -10
- package/scss/components/data-table/_table-action.scss +9 -1
- package/scss/components/fluid-combo-box/fluid-combo-box.scss +252 -0
- package/scss/components/fluid-form/fluid-form.scss +24 -0
- package/scss/components/fluid-number-input/fluid-number-input.scss +3 -1
- package/scss/components/fluid-password-input/fluid-password-input.scss +1 -16
- package/scss/components/fluid-select/fluid-select.scss +3 -1
- package/scss/components/fluid-text-input/fluid-text-input.scss +3 -1
- package/scss/components/fluid-textarea/fluid-textarea.scss +3 -1
- package/scss/components/grid/grid.scss +20 -0
- package/scss/components/menu/menu-item.scss +5 -1
- package/scss/components/modal/modal.scss +1 -0
- package/scss/components/pagination/pagination.scss +3 -7
- package/scss/components/password-input/password-input.scss +1 -17
- package/scss/components/search/search.scss +20 -53
- package/scss/components/select/select.scss +4 -0
- package/scss/components/tabs/tabs-story.scss +19 -1
- package/scss/components/tabs/tabs.scss +74 -6
- package/scss/components/text-input/text-input.scss +7 -9
- package/scss/components/tooltip/tooltip.scss +13 -1
- package/telemetry.yml +25 -11
- package/es/feature-flags/es/index.js.map +0 -1
- package/es-custom/feature-flags/es/index.js.map +0 -1
- /package/es/{feature-flags → packages/feature-flags}/es/index.js +0 -0
- /package/es-custom/{feature-flags → packages/feature-flags}/es/index.js +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { LitElement } from 'lit';
|
|
8
|
+
import '../../button';
|
|
9
|
+
/**
|
|
10
|
+
* Wrapper component for dismissable tabs story with state management
|
|
11
|
+
*/
|
|
12
|
+
export declare class DismissableTabsWrapper extends LitElement {
|
|
13
|
+
private _defaultTabs;
|
|
14
|
+
/**
|
|
15
|
+
* Array of tab configurations
|
|
16
|
+
*/
|
|
17
|
+
private _tabs;
|
|
18
|
+
/**
|
|
19
|
+
* Whether tabs are disabled
|
|
20
|
+
*/
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether tabs are contained
|
|
24
|
+
*/
|
|
25
|
+
contained: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the rendered Tab children should be dismissable.
|
|
28
|
+
*/
|
|
29
|
+
dismissable: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Selection mode
|
|
32
|
+
*/
|
|
33
|
+
selectionMode: string;
|
|
34
|
+
/**
|
|
35
|
+
* Selected index for the initially selected content
|
|
36
|
+
*/
|
|
37
|
+
selectedIndex: number;
|
|
38
|
+
/**
|
|
39
|
+
* Handle tab dismissed event
|
|
40
|
+
*/
|
|
41
|
+
private _handleDismissed;
|
|
42
|
+
/**
|
|
43
|
+
* Handle before selected event
|
|
44
|
+
*/
|
|
45
|
+
private _handleBeforeSelected;
|
|
46
|
+
private resetTabs;
|
|
47
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
48
|
+
/**
|
|
49
|
+
* Disable shadow DOM to inherit styles from parent
|
|
50
|
+
*/
|
|
51
|
+
createRenderRoot(): this;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=tabs-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/tabs/stories/tabs-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAIvC,OAAO,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACpD,OAAO,CAAC,YAAY,CAKlB;IACF;;OAEG;IAEH,OAAO,CAAC,KAAK,CAAqB;IAElC;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,SAAS,UAAS;IAClB;;OAEG;IAEH,WAAW,UAAQ;IAEnB;;OAEG;IAEH,aAAa,SAAe;IAE5B;;OAEG;IAEH,aAAa,SAAK;IAElB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,SAAS;IAIjB,MAAM;IA2CN;;OAEG;IACH,gBAAgB;CAGjB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import "../../../globals/settings.js";
|
|
9
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
|
|
10
|
+
import "../../button/index.js";
|
|
11
|
+
import "../defs.js";
|
|
12
|
+
import "../tabs.js";
|
|
13
|
+
import { LitElement, html } from "lit";
|
|
14
|
+
import { property, state } from "lit/decorators.js";
|
|
15
|
+
//#region src/components/tabs/stories/tabs-wrapper.ts
|
|
16
|
+
/**
|
|
17
|
+
* Copyright IBM Corp. 2026
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
20
|
+
* LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Wrapper component for dismissable tabs story with state management
|
|
24
|
+
*/
|
|
25
|
+
var DismissableTabsWrapper = class extends LitElement {
|
|
26
|
+
constructor(..._args) {
|
|
27
|
+
super(..._args);
|
|
28
|
+
this._defaultTabs = [
|
|
29
|
+
{
|
|
30
|
+
id: "all",
|
|
31
|
+
label: "Dashboard",
|
|
32
|
+
value: "all"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "cloudFoundry",
|
|
36
|
+
label: "Monitoring",
|
|
37
|
+
value: "cloudFoundry"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "staging",
|
|
41
|
+
label: "Activity",
|
|
42
|
+
value: "staging"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "dea",
|
|
46
|
+
label: "Settings",
|
|
47
|
+
value: "dea",
|
|
48
|
+
disabled: true
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
this._tabs = this._defaultTabs;
|
|
52
|
+
this.disabled = false;
|
|
53
|
+
this.contained = false;
|
|
54
|
+
this.dismissable = true;
|
|
55
|
+
this.selectionMode = "automatic";
|
|
56
|
+
this.selectedIndex = 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Handle tab dismissed event
|
|
60
|
+
*/
|
|
61
|
+
_handleDismissed(event) {
|
|
62
|
+
const { index } = event.detail;
|
|
63
|
+
this._tabs = this._tabs.filter((_, i) => i !== index);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Handle before selected event
|
|
67
|
+
*/
|
|
68
|
+
_handleBeforeSelected(event) {
|
|
69
|
+
if (this.disabled) event.preventDefault();
|
|
70
|
+
}
|
|
71
|
+
resetTabs() {
|
|
72
|
+
this._tabs = [...this._defaultTabs];
|
|
73
|
+
}
|
|
74
|
+
render() {
|
|
75
|
+
const { resetTabs } = this;
|
|
76
|
+
return html`
|
|
77
|
+
<cds-button style="margin-bottom: 3rem" @click="${resetTabs}">
|
|
78
|
+
Reset
|
|
79
|
+
</cds-button>
|
|
80
|
+
<cds-tabs
|
|
81
|
+
?disabled="${this.disabled}"
|
|
82
|
+
selection-mode="${this.selectionMode}"
|
|
83
|
+
selected-index="${this.selectedIndex}"
|
|
84
|
+
type="${this.contained ? "contained" : ""}"
|
|
85
|
+
?dismissable="${this.dismissable}"
|
|
86
|
+
value="all"
|
|
87
|
+
@cds-tab-closed="${this._handleDismissed}"
|
|
88
|
+
@cds-tabs-beingselected="${this._handleBeforeSelected}">
|
|
89
|
+
${this._tabs.map((tab) => html`
|
|
90
|
+
<cds-tab
|
|
91
|
+
id="tab-${tab.id}"
|
|
92
|
+
target="panel-${tab.id}"
|
|
93
|
+
value="${tab.value}"
|
|
94
|
+
?disabled="${tab.disabled}">
|
|
95
|
+
${tab.label}
|
|
96
|
+
</cds-tab>
|
|
97
|
+
`)}
|
|
98
|
+
</cds-tabs>
|
|
99
|
+
<div class="${"cds"}-ce-demo-devenv--tab-panels">
|
|
100
|
+
${this._tabs.map((tab) => html`
|
|
101
|
+
<div
|
|
102
|
+
id="panel-${tab.id}"
|
|
103
|
+
role="tabpanel"
|
|
104
|
+
aria-labelledby="tab-${tab.id}"
|
|
105
|
+
hidden>
|
|
106
|
+
${tab.label}
|
|
107
|
+
</div>
|
|
108
|
+
`)}
|
|
109
|
+
</div>
|
|
110
|
+
`;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Disable shadow DOM to inherit styles from parent
|
|
114
|
+
*/
|
|
115
|
+
createRenderRoot() {
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
__decorate([state()], DismissableTabsWrapper.prototype, "_tabs", void 0);
|
|
120
|
+
__decorate([property({ type: Boolean })], DismissableTabsWrapper.prototype, "disabled", void 0);
|
|
121
|
+
__decorate([property({ type: Boolean })], DismissableTabsWrapper.prototype, "contained", void 0);
|
|
122
|
+
__decorate([property({ type: Boolean })], DismissableTabsWrapper.prototype, "dismissable", void 0);
|
|
123
|
+
__decorate([property({ attribute: "selection-mode" })], DismissableTabsWrapper.prototype, "selectionMode", void 0);
|
|
124
|
+
__decorate([property({ attribute: "selected-index" })], DismissableTabsWrapper.prototype, "selectedIndex", void 0);
|
|
125
|
+
customElements.define("tabs-story-wrapper", DismissableTabsWrapper);
|
|
126
|
+
//#endregion
|
|
127
|
+
export { DismissableTabsWrapper };
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=tabs-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-wrapper.js","names":[],"sources":["../../../../src/components/tabs/stories/tabs-wrapper.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 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 { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../../globals/settings';\nimport { TABS_TYPE } from '../tabs';\nimport '../../button';\n\n/**\n * Wrapper component for dismissable tabs story with state management\n */\nexport class DismissableTabsWrapper extends LitElement {\n private _defaultTabs = [\n { id: 'all', label: 'Dashboard', value: 'all' },\n { id: 'cloudFoundry', label: 'Monitoring', value: 'cloudFoundry' },\n { id: 'staging', label: 'Activity', value: 'staging' },\n { id: 'dea', label: 'Settings', value: 'dea', disabled: true },\n ];\n /**\n * Array of tab configurations\n */\n @state()\n private _tabs = this._defaultTabs;\n\n /**\n * Whether tabs are disabled\n */\n @property({ type: Boolean })\n disabled = false;\n\n /**\n * Whether tabs are contained\n */\n @property({ type: Boolean })\n contained = false;\n /**\n * Whether the rendered Tab children should be dismissable.\n */\n @property({ type: Boolean })\n dismissable = true;\n\n /**\n * Selection mode\n */\n @property({ attribute: 'selection-mode' })\n selectionMode = 'automatic';\n\n /**\n * Selected index for the initially selected content\n */\n @property({ attribute: 'selected-index' })\n selectedIndex = 0;\n\n /**\n * Handle tab dismissed event\n */\n private _handleDismissed(event: CustomEvent) {\n const { index } = event.detail;\n this._tabs = this._tabs.filter((_, i) => i !== index);\n }\n\n /**\n * Handle before selected event\n */\n private _handleBeforeSelected(event: CustomEvent) {\n if (this.disabled) {\n event.preventDefault();\n }\n }\n\n private resetTabs() {\n this._tabs = [...this._defaultTabs];\n }\n\n render() {\n const { resetTabs } = this;\n return html`\n <cds-button style=\"margin-bottom: 3rem\" @click=\"${resetTabs}\">\n Reset\n </cds-button>\n <cds-tabs\n ?disabled=\"${this.disabled}\"\n selection-mode=\"${this.selectionMode}\"\n selected-index=\"${this.selectedIndex}\"\n type=\"${this.contained ? TABS_TYPE.CONTAINED : TABS_TYPE.REGULAR}\"\n ?dismissable=\"${this.dismissable}\"\n value=\"all\"\n @cds-tab-closed=\"${this._handleDismissed}\"\n @cds-tabs-beingselected=\"${this._handleBeforeSelected}\">\n ${this._tabs.map(\n (tab) => html`\n <cds-tab\n id=\"tab-${tab.id}\"\n target=\"panel-${tab.id}\"\n value=\"${tab.value}\"\n ?disabled=\"${tab.disabled}\">\n ${tab.label}\n </cds-tab>\n `\n )}\n </cds-tabs>\n <div class=\"${prefix}-ce-demo-devenv--tab-panels\">\n ${this._tabs.map(\n (tab) => html`\n <div\n id=\"panel-${tab.id}\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-${tab.id}\"\n hidden>\n ${tab.label}\n </div>\n `\n )}\n </div>\n `;\n }\n\n /**\n * Disable shadow DOM to inherit styles from parent\n */\n createRenderRoot() {\n return this;\n }\n}\n\ncustomElements.define('tabs-story-wrapper', DismissableTabsWrapper);\n\n// Made with Bob\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAa,yBAAb,cAA4C,WAAW;;;sBAC9B;GACrB;IAAE,IAAI;IAAO,OAAO;IAAa,OAAO;IAAO;GAC/C;IAAE,IAAI;IAAgB,OAAO;IAAc,OAAO;IAAgB;GAClE;IAAE,IAAI;IAAW,OAAO;IAAY,OAAO;IAAW;GACtD;IAAE,IAAI;IAAO,OAAO;IAAY,OAAO;IAAO,UAAU;IAAM;GAC/D;eAKe,KAAK;kBAMV;mBAMC;qBAKE;uBAME;uBAMA;;;;;CAKhB,iBAAyB,OAAoB;EAC3C,MAAM,EAAE,UAAU,MAAM;AACxB,OAAK,QAAQ,KAAK,MAAM,QAAQ,GAAG,MAAM,MAAM,MAAM;;;;;CAMvD,sBAA8B,OAAoB;AAChD,MAAI,KAAK,SACP,OAAM,gBAAgB;;CAI1B,YAAoB;AAClB,OAAK,QAAQ,CAAC,GAAG,KAAK,aAAa;;CAGrC,SAAS;EACP,MAAM,EAAE,cAAc;AACtB,SAAO,IAAI;wDACyC,UAAU;;;;qBAI7C,KAAK,SAAS;0BACT,KAAK,cAAc;0BACnB,KAAK,cAAc;gBAC7B,KAAK,YAAA,cAAA,GAAoD;wBACjD,KAAK,YAAY;;2BAEd,KAAK,iBAAiB;mCACd,KAAK,sBAAsB;UACpD,KAAK,MAAM,KACV,QAAQ,IAAI;;wBAEC,IAAI,GAAG;8BACD,IAAI,GAAG;uBACd,IAAI,MAAM;2BACN,IAAI,SAAS;gBACxB,IAAI,MAAM;;YAGjB,CAAC;;0BAEiB;UACjB,KAAK,MAAM,KACV,QAAQ,IAAI;;0BAEG,IAAI,GAAG;;qCAEI,IAAI,GAAG;;gBAE5B,IAAI,MAAM;;YAGjB,CAAC;;;;;;;CAQR,mBAAmB;AACjB,SAAO;;;YApGR,OAAO,CAAA,EAAA,uBAAA,WAAA,SAAA,KAAA,EAAA;YAMP,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,uBAAA,WAAA,YAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,uBAAA,WAAA,aAAA,KAAA,EAAA;YAK3B,SAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,uBAAA,WAAA,eAAA,KAAA,EAAA;YAM3B,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,uBAAA,WAAA,iBAAA,KAAA,EAAA;YAMzC,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,uBAAA,WAAA,iBAAA,KAAA,EAAA;AA2E5C,eAAe,OAAO,sBAAsB,uBAAuB"}
|
|
@@ -6,10 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import CDSContentSwitcherItem from '../content-switcher/content-switcher-item';
|
|
8
8
|
import { TABS_ICON_SIZE, TABS_TYPE } from './defs';
|
|
9
|
+
import '../button/button';
|
|
9
10
|
/**
|
|
10
11
|
* Basic tab.
|
|
11
12
|
*
|
|
12
13
|
* @element cds-tab
|
|
14
|
+
* @fires cds-tab-beingclosed
|
|
15
|
+
* The custom event fired before a tab is closed upon a user gesture.
|
|
16
|
+
* Cancellation of this event stops changing the user-initiated action.
|
|
17
|
+
* @fires cds-tab-closed - The custom event fired after a a tab is closed upon a user gesture.
|
|
13
18
|
*/
|
|
14
19
|
export default class CDSTab extends CDSContentSwitcherItem {
|
|
15
20
|
/**
|
|
@@ -39,12 +44,30 @@ export default class CDSTab extends CDSContentSwitcherItem {
|
|
|
39
44
|
* **Experimental**: Display an empty dot badge on the Tab.
|
|
40
45
|
*/
|
|
41
46
|
badgeIndicator: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Whether this tab should be dismissable.
|
|
49
|
+
*/
|
|
50
|
+
_dismissable: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The index of the tab component
|
|
53
|
+
*/
|
|
54
|
+
_index: number;
|
|
42
55
|
/**
|
|
43
56
|
* Handles `slotchange` event.
|
|
44
57
|
*/
|
|
45
58
|
protected _handleSlotChange({ target }: Event): void;
|
|
46
59
|
connectedCallback(): void;
|
|
47
60
|
render(): import("lit-html").TemplateResult<1>;
|
|
61
|
+
_handleClick(event: Event): void;
|
|
62
|
+
/**
|
|
63
|
+
* The name of the custom event fired before a tab is closed upon a user gesture.
|
|
64
|
+
* Cancellation of this event stops changing the user-initiated action.
|
|
65
|
+
*/
|
|
66
|
+
static get eventBeforeClose(): string;
|
|
67
|
+
/**
|
|
68
|
+
* The name of the custom event fired after a a tab is closed upon a user gesture.
|
|
69
|
+
*/
|
|
70
|
+
static get eventClose(): string;
|
|
48
71
|
static styles: any;
|
|
49
72
|
}
|
|
50
73
|
//# sourceMappingURL=tab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tab.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,sBAAsB,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tab.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,sBAAsB,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnD,OAAO,kBAAkB,CAAC;AAK1B;;;;;;;;GAQG;AAEH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,sBAAsB;IACxD;;;;;OAKG;IAEH,WAAW,UAAS;IAEpB;;OAEG;IAEH,IAAI,YAAqB;IAEzB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;OAEG;IAEH,QAAQ,MAAC;IAET;;OAEG;IAEH,cAAc,UAAS;IAEvB;;OAEG;IAEH,YAAY,UAAS;IAErB;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK;IAM7C,iBAAiB;IAOjB,MAAM;IAqEN,YAAY,CAAC,KAAK,EAAE,KAAK;IAwBzB;;;OAGG;IACH,MAAM,KAAK,gBAAgB,WAE1B;IAED;;OAEG;IACH,MAAM,KAAK,UAAU,WAEpB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB"}
|
|
@@ -8,12 +8,16 @@
|
|
|
8
8
|
import "../../globals/settings.js";
|
|
9
9
|
import { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
10
|
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
|
|
11
|
+
import iconLoader from "../../globals/internal/icon-loader.js";
|
|
12
|
+
import "../button/button.js";
|
|
11
13
|
import content_switcher_item_default from "../content-switcher/content-switcher-item.js";
|
|
12
14
|
import "./defs.js";
|
|
13
15
|
import tabs_default from "./tabs.scss.js";
|
|
14
16
|
import { html } from "lit";
|
|
15
|
-
import { property } from "lit/decorators.js";
|
|
17
|
+
import { property, state } from "lit/decorators.js";
|
|
18
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
16
19
|
import { ifDefined } from "lit/directives/if-defined.js";
|
|
20
|
+
import Close16 from "@carbon/icons/es/close/16.js";
|
|
17
21
|
//#region src/components/tabs/tab.ts
|
|
18
22
|
/**
|
|
19
23
|
* Copyright IBM Corp. 2019, 2026
|
|
@@ -28,6 +32,8 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
|
|
|
28
32
|
this.type = "";
|
|
29
33
|
this.iconOnly = false;
|
|
30
34
|
this.badgeIndicator = false;
|
|
35
|
+
this._dismissable = false;
|
|
36
|
+
this._index = -1;
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
33
39
|
* Handles `slotchange` event.
|
|
@@ -41,12 +47,36 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
|
|
|
41
47
|
super.connectedCallback();
|
|
42
48
|
}
|
|
43
49
|
render() {
|
|
44
|
-
const
|
|
50
|
+
const navLinkClasses = classMap({
|
|
51
|
+
[`cds--tabs__nav-link`]: true,
|
|
52
|
+
[`cds--tabs__nav-link--dismissable`]: this._dismissable
|
|
53
|
+
});
|
|
54
|
+
const closeButtonClasses = classMap({
|
|
55
|
+
[`cds--tabs__nav-item--close`]: this._dismissable,
|
|
56
|
+
[`cds--tabs__nav-item--close--hidden`]: !this._dismissable
|
|
57
|
+
});
|
|
58
|
+
const { badgeIndicator, disabled, selected, tabTitle, _handleSlotChange: handleSlotChange, _handleClick: handleClick } = this;
|
|
59
|
+
const iconButton = html`
|
|
60
|
+
<cds-button
|
|
61
|
+
title="${this.textContent?.trim() ? `Remove ${this.textContent.trim()} tab` : "Remove tab"}"
|
|
62
|
+
class="${closeButtonClasses}"
|
|
63
|
+
kind="ghost"
|
|
64
|
+
size="xs"
|
|
65
|
+
@click="${handleClick}"
|
|
66
|
+
tab-index="${-1}"
|
|
67
|
+
aria-hidden="${this.selected && this._dismissable ? "false" : "true"}"
|
|
68
|
+
?disabled="${disabled}">
|
|
69
|
+
${iconLoader(Close16, {
|
|
70
|
+
"aria-label": "close",
|
|
71
|
+
slot: "icon"
|
|
72
|
+
})}
|
|
73
|
+
</cds-button>
|
|
74
|
+
`;
|
|
45
75
|
const accessibleLabel = tabTitle || this.getAttribute("aria-label");
|
|
46
76
|
const isIconOnly = this.iconOnly || this.classList.contains(`cds--tabs__nav-item--icon-only`);
|
|
47
77
|
const tabLink = html`
|
|
48
78
|
<a
|
|
49
|
-
class="${
|
|
79
|
+
class="${navLinkClasses}"
|
|
50
80
|
role="tab"
|
|
51
81
|
aria-label="${ifDefined(accessibleLabel || void 0)}"
|
|
52
82
|
tabindex="${selected ? 0 : -1}"
|
|
@@ -57,6 +87,7 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
|
|
|
57
87
|
</span>
|
|
58
88
|
${!disabled && badgeIndicator ? html`<cds-badge-indicator></cds-badge-indicator>` : ""}
|
|
59
89
|
</a>
|
|
90
|
+
${iconButton}
|
|
60
91
|
`;
|
|
61
92
|
if (isIconOnly && accessibleLabel && !disabled) return html`
|
|
62
93
|
<cds-tooltip align="bottom" class="${"cds"}--icon-tooltip">
|
|
@@ -66,6 +97,29 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
|
|
|
66
97
|
`;
|
|
67
98
|
return tabLink;
|
|
68
99
|
}
|
|
100
|
+
_handleClick(event) {
|
|
101
|
+
event.stopPropagation();
|
|
102
|
+
const init = {
|
|
103
|
+
bubbles: true,
|
|
104
|
+
cancelable: true,
|
|
105
|
+
composed: true,
|
|
106
|
+
detail: { index: this._index }
|
|
107
|
+
};
|
|
108
|
+
if (this.dispatchEvent(new CustomEvent(this.constructor.eventBeforeClose, init))) this.dispatchEvent(new CustomEvent(this.constructor.eventClose, init));
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The name of the custom event fired before a tab is closed upon a user gesture.
|
|
112
|
+
* Cancellation of this event stops changing the user-initiated action.
|
|
113
|
+
*/
|
|
114
|
+
static get eventBeforeClose() {
|
|
115
|
+
return `cds-tab-beingclosed`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The name of the custom event fired after a a tab is closed upon a user gesture.
|
|
119
|
+
*/
|
|
120
|
+
static get eventClose() {
|
|
121
|
+
return `cds-tab-closed`;
|
|
122
|
+
}
|
|
69
123
|
static {
|
|
70
124
|
this.styles = tabs_default;
|
|
71
125
|
}
|
|
@@ -90,6 +144,8 @@ __decorate([property({
|
|
|
90
144
|
reflect: true,
|
|
91
145
|
attribute: "badge-indicator"
|
|
92
146
|
})], CDSTab.prototype, "badgeIndicator", void 0);
|
|
147
|
+
__decorate([state()], CDSTab.prototype, "_dismissable", void 0);
|
|
148
|
+
__decorate([state()], CDSTab.prototype, "_index", void 0);
|
|
93
149
|
CDSTab = __decorate([carbonElement(`cds-tab`)], CDSTab);
|
|
94
150
|
var tab_default = CDSTab;
|
|
95
151
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.js","names":["CDSContentSwitcherItem","styles","customElement"],"sources":["../../../src/components/tabs/tab.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 { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport CDSContentSwitcherItem from '../content-switcher/content-switcher-item';\nimport { TABS_ICON_SIZE, TABS_TYPE } from './defs';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Basic tab.\n *\n * @element cds-tab\n */\n@customElement(`${prefix}-tab`)\nexport default class CDSTab extends CDSContentSwitcherItem {\n /**\n * `true` if this tab should be highlighted.\n * If `true`, parent `<cds-tabs>` selects/deselects this tab upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * Tab type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if this tab is icon-only.\n */\n @property({ type: Boolean, reflect: true, attribute: 'icon-only' })\n iconOnly = false;\n\n /**\n * Specify the icon size used by icon-only tabs.\n */\n @property({ attribute: 'icon-size', reflect: true })\n iconSize?: TABS_ICON_SIZE;\n\n /**\n * The tab text content.\n */\n @property()\n tabTitle;\n\n /**\n * **Experimental**: Display an empty dot badge on the Tab.\n */\n @property({ type: Boolean, reflect: true, attribute: 'badge-indicator' })\n badgeIndicator = false;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n // Retrieve content of the slot to use for aria-label.\n const content = (target as HTMLSlotElement).assignedNodes();\n this.tabTitle = content[0]?.textContent?.trim() || undefined;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n super.connectedCallback();\n }\n\n render() {\n const {\n badgeIndicator,\n disabled,\n selected,\n tabTitle,\n _handleSlotChange: handleSlotChange,\n } = this;\n const accessibleLabel = tabTitle || this.getAttribute('aria-label');\n const isIconOnly =\n this.iconOnly ||\n this.classList.contains(`${prefix}--tabs__nav-item--icon-only`);\n // No `href`/`tabindex` to not to make this `<a>` click-focusable\n const tabLink = html`\n <a\n class=\"${
|
|
1
|
+
{"version":3,"file":"tab.js","names":["CDSContentSwitcherItem","styles","customElement"],"sources":["../../../src/components/tabs/tab.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 { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport CDSContentSwitcherItem from '../content-switcher/content-switcher-item';\nimport { TABS_ICON_SIZE, TABS_TYPE } from './defs';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport '../button/button';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport iconLoader from '../../globals/internal/icon-loader';\nimport { classMap } from 'lit/directives/class-map.js';\n\n/**\n * Basic tab.\n *\n * @element cds-tab\n * @fires cds-tab-beingclosed\n * The custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n * @fires cds-tab-closed - The custom event fired after a a tab is closed upon a user gesture.\n */\n@customElement(`${prefix}-tab`)\nexport default class CDSTab extends CDSContentSwitcherItem {\n /**\n * `true` if this tab should be highlighted.\n * If `true`, parent `<cds-tabs>` selects/deselects this tab upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * Tab type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if this tab is icon-only.\n */\n @property({ type: Boolean, reflect: true, attribute: 'icon-only' })\n iconOnly = false;\n\n /**\n * Specify the icon size used by icon-only tabs.\n */\n @property({ attribute: 'icon-size', reflect: true })\n iconSize?: TABS_ICON_SIZE;\n\n /**\n * The tab text content.\n */\n @property()\n tabTitle;\n\n /**\n * **Experimental**: Display an empty dot badge on the Tab.\n */\n @property({ type: Boolean, reflect: true, attribute: 'badge-indicator' })\n badgeIndicator = false;\n\n /**\n * Whether this tab should be dismissable.\n */\n @state()\n _dismissable = false;\n\n /**\n * The index of the tab component\n */\n @state()\n _index = -1;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n // Retrieve content of the slot to use for aria-label.\n const content = (target as HTMLSlotElement).assignedNodes();\n this.tabTitle = content[0]?.textContent?.trim() || undefined;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n super.connectedCallback();\n }\n\n render() {\n const navLinkClasses = classMap({\n [`${prefix}--tabs__nav-link`]: true,\n [`${prefix}--tabs__nav-link--dismissable`]: this._dismissable,\n });\n const closeButtonClasses = classMap({\n [`${prefix}--tabs__nav-item--close`]: this._dismissable,\n [`${prefix}--tabs__nav-item--close--hidden`]: !this._dismissable,\n });\n const {\n badgeIndicator,\n disabled,\n selected,\n tabTitle,\n _handleSlotChange: handleSlotChange,\n _handleClick: handleClick,\n } = this;\n\n const iconButton = html`\n <cds-button\n title=\"${this.textContent?.trim()\n ? `Remove ${this.textContent.trim()} tab`\n : 'Remove tab'}\"\n class=\"${closeButtonClasses}\"\n kind=\"ghost\"\n size=\"xs\"\n @click=\"${handleClick}\"\n tab-index=\"${-1}\"\n aria-hidden=\"${this.selected && this._dismissable ? 'false' : 'true'}\"\n ?disabled=\"${disabled}\">\n ${iconLoader(Close16, { 'aria-label': 'close', slot: 'icon' })}\n </cds-button>\n `;\n\n const accessibleLabel = tabTitle || this.getAttribute('aria-label');\n const isIconOnly =\n this.iconOnly ||\n this.classList.contains(`${prefix}--tabs__nav-item--icon-only`);\n // No `href`/`tabindex` to not to make this `<a>` click-focusable\n const tabLink = html`\n <a\n class=\"${navLinkClasses}\"\n role=\"tab\"\n aria-label=\"${ifDefined(accessibleLabel || undefined)}\"\n tabindex=\"${selected ? 0 : -1}\"\n ?disabled=\"${disabled}\"\n aria-selected=\"${selected}\">\n <span class=\"${prefix}--tabs__nav-item-label-wrapper\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </span>\n ${!disabled && badgeIndicator\n ? html`<cds-badge-indicator></cds-badge-indicator>`\n : ''}\n </a>\n ${iconButton}\n `;\n\n if (isIconOnly && accessibleLabel && !disabled) {\n return html`\n <cds-tooltip align=\"bottom\" class=\"${prefix}--icon-tooltip\">\n ${tabLink}\n <cds-tooltip-content>${accessibleLabel}</cds-tooltip-content>\n </cds-tooltip>\n `;\n }\n\n return tabLink;\n }\n\n _handleClick(event: Event) {\n event.stopPropagation();\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n index: this._index,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTab).eventBeforeClose,\n init\n )\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSTab).eventClose, init)\n );\n }\n }\n\n /**\n * The name of the custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n */\n static get eventBeforeClose() {\n return `${prefix}-tab-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after a a tab is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-tab-closed`;\n }\n\n static styles = styles;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Be,IAAA,SAAA,MAAM,eAAeA,8BAAuB;;;qBAQ3C;;kBAYH;wBAkBM;sBAMF;gBAMN;;;;;CAKT,kBAA4B,EAAE,UAAiB;EAE7C,MAAM,UAAW,OAA2B,eAAe;AAC3D,OAAK,WAAW,QAAQ,IAAI,aAAa,MAAM,IAAI,KAAA;;CAGrD,oBAAoB;AAClB,MAAI,CAAC,KAAK,aAAa,OAAO,CAC5B,MAAK,aAAa,QAAQ,WAAW;AAEvC,QAAM,mBAAmB;;CAG3B,SAAS;EACP,MAAM,iBAAiB,SAAS;IAC7B,wBAA8B;IAC9B,qCAA2C,KAAK;GAClD,CAAC;EACF,MAAM,qBAAqB,SAAS;IACjC,+BAAqC,KAAK;IAC1C,uCAA6C,CAAC,KAAK;GACrD,CAAC;EACF,MAAM,EACJ,gBACA,UACA,UACA,UACA,mBAAmB,kBACnB,cAAc,gBACZ;EAEJ,MAAM,aAAa,IAAI;;iBAEV,KAAK,aAAa,MAAM,GAC7B,UAAU,KAAK,YAAY,MAAM,CAAC,QAClC,aAAa;iBACR,mBAAmB;;;kBAGlB,YAAY;qBACT,GAAG;uBACD,KAAK,YAAY,KAAK,eAAe,UAAU,OAAO;qBACxD,SAAS;UACpB,WAAW,SAAS;GAAE,cAAc;GAAS,MAAM;GAAQ,CAAC,CAAC;;;EAInE,MAAM,kBAAkB,YAAY,KAAK,aAAa,aAAa;EACnE,MAAM,aACJ,KAAK,YACL,KAAK,UAAU,SAAS,iCAAuC;EAEjE,MAAM,UAAU,IAAI;;iBAEP,eAAe;;sBAEV,UAAU,mBAAmB,KAAA,EAAU,CAAC;oBAC1C,WAAW,IAAI,GAAG;qBACjB,SAAS;yBACL,SAAS;6BACJ;+BACC,iBAAiB;;UAEtC,CAAC,YAAY,iBACX,IAAI,gDACJ,GAAG;;QAEP,WAAW;;AAGf,MAAI,cAAc,mBAAmB,CAAC,SACpC,QAAO,IAAI;mDACmC;YACxC,QAAQ;iCACa,gBAAgB;;;AAK7C,SAAO;;CAGT,aAAa,OAAc;AACzB,QAAM,iBAAiB;EACvB,MAAM,OAAO;GACX,SAAS;GACT,YAAY;GACZ,UAAU;GACV,QAAQ,EACN,OAAO,KAAK,QACb;GACF;AACD,MACE,KAAK,cACH,IAAI,YACD,KAAK,YAA8B,kBACpC,KACD,CACF,CAED,MAAK,cACH,IAAI,YAAa,KAAK,YAA8B,YAAY,KAAK,CACtE;;;;;;CAQL,WAAW,mBAAmB;AAC5B,SAAO;;;;;CAMT,WAAW,aAAa;AACtB,SAAO;;;gBAGOC;;;YAzKf,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,OAAA,WAAA,eAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAa,CAAC,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMlE,SAAS;CAAE,WAAW;CAAa,SAAS;CAAM,CAAC,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMnD,UAAU,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMV,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAmB,CAAC,CAAA,EAAA,OAAA,WAAA,kBAAA,KAAA,EAAA;YAMxE,OAAO,CAAA,EAAA,OAAA,WAAA,gBAAA,KAAA,EAAA;YAMP,OAAO,CAAA,EAAA,OAAA,WAAA,UAAA,KAAA,EAAA;qBAlDTC,cAAc,UAAgB,CAAA,EAAA,OAAA"}
|
|
@@ -70,8 +70,16 @@ export default class CDSTabs extends CDSTabs_base {
|
|
|
70
70
|
* Going prev/next item immediately changes the selection
|
|
71
71
|
*/
|
|
72
72
|
protected _navigate(direction: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Resets the highlighted state of all tabs, setting only the specified tab as highlighted.
|
|
75
|
+
*
|
|
76
|
+
* @param nextItem The tab item to be highlighted. If provided, only this item will be highlighted.
|
|
77
|
+
* If null or undefined, all tabs will have their highlighted state set to false.
|
|
78
|
+
*/
|
|
79
|
+
protected resetHighlighted(nextItem?: CDSTab | null): void;
|
|
73
80
|
protected _handleClick(event: MouseEvent): void;
|
|
74
81
|
protected _handleKeydown(event: KeyboardEvent): void;
|
|
82
|
+
protected _handleTabClosed(event: CustomEvent): void;
|
|
75
83
|
/**
|
|
76
84
|
* Handles click on overflow scroll buttons.
|
|
77
85
|
*
|
|
@@ -122,6 +130,10 @@ export default class CDSTabs extends CDSTabs_base {
|
|
|
122
130
|
* Tabs type.
|
|
123
131
|
*/
|
|
124
132
|
type: TABS_TYPE;
|
|
133
|
+
/**
|
|
134
|
+
* Whether the rendered Tab children should be dismissable.
|
|
135
|
+
*/
|
|
136
|
+
dismissable: any;
|
|
125
137
|
/**
|
|
126
138
|
* Specify the icon size used by icon-only tabs.
|
|
127
139
|
*/
|
|
@@ -166,6 +178,8 @@ export default class CDSTabs extends CDSTabs_base {
|
|
|
166
178
|
*/
|
|
167
179
|
protected renderNextButton(): TemplateResult | null;
|
|
168
180
|
render(): TemplateResult<1>;
|
|
181
|
+
protected _updateTabsState(): void;
|
|
182
|
+
protected _tabInitialLoad(): void;
|
|
169
183
|
/**
|
|
170
184
|
* Symbols of keys that triggers opening/closing menu and selecting/deselecting menu item.
|
|
171
185
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAQ,MAAM,KAAK,CAAC;AAU3C,OAAO,kBAAkB,EAAE,EACzB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,MAAM,MAAM,OAAO,CAAC;AAI3B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,SAAS,GACV,CAAC;;;;;;;;;;uBAVU,CAAC;;;;;AAYb;;;;;;;;GAQG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAAqC;IACxE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC;;OAEG;IAGH,OAAO,CAAC,aAAa,CAAK;IAE1B;;OAEG;IACH,OAAO,CAAC,UAAU,CAAK;IAEvB;;OAEG;IAGH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAwB;IAEvC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAM;IAE1B;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAQ,MAAM,KAAK,CAAC;AAU3C,OAAO,kBAAkB,EAAE,EACzB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,MAAM,MAAM,OAAO,CAAC;AAI3B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,SAAS,GACV,CAAC;;;;;;;;;;uBAVU,CAAC;;;;;AAYb;;;;;;;;GAQG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAAqC;IACxE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC;;OAEG;IAGH,OAAO,CAAC,aAAa,CAAK;IAE1B;;OAEG;IACH,OAAO,CAAC,UAAU,CAAK;IAEvB;;OAEG;IAGH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAwB;IAEvC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAM;IAE1B;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM;IA+BrC;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU;IASxC,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa;IAmE7C,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAyC7C;;;;;;OAMG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,KAAA,EAAE,EAAE,SAAS,EAAE;;KAAA;IA4BnD,iBAAiB;IAejB,SAAS,CAAC,mBAAmB,CAC3B,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS;IAMpD;;OAEG;IAEH,OAAO,CAAC,qBAAqB,CAAC,CAAc;IAE5C;;OAEG;IAEH,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC;;OAEG;IAEH,OAAO,CAAC,sBAAsB,CAAK;IAEnC;;;OAGG;IAEH,OAAO,CAAC,6BAA6B,CAAC,CAAc;IAEpD;;;OAGG;IAEH,OAAO,CAAC,8BAA8B,CAAC,CAAc;IAErD;;OAEG;IAEH,2BAA2B,SACkC;IAE7D;;OAEG;IAEH,yBAAyB,SAAuB;IAEhD;;OAEG;IAEH,cAAc,SAAM;IAEpB;;OAEG;IAEH,IAAI,YAAqB;IAEzB;;OAEG;IAEH,WAAW,MAAC;IAEZ;;OAEG;IAEH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;OAGG;IAEH,OAAO,CAAC,mCAAmC,CAAQ;IAEnD;;;OAGG;IAEH,OAAO,CAAC,oCAAoC,CAAQ;IAEpD;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAqC;IAElE;;;;OAIG;IACH,OAAO,CAAC,6BAA6B,CAcnC;IAEF;;;;;OAKG;IACH,OAAO,CAAC,4CAA4C;IA+BpD,oBAAoB;IAKpB,YAAY,CAAC,iBAAiB,KAAA;IAkB9B,YAAY;IAOZ,OAAO,CAAC,iBAAiB,KAAA;IAkDzB;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,cAAc,GAAG,IAAI;IA0BvD;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,cAAc,GAAG,IAAI;IA0BnD,MAAM;IA8BN,SAAS,CAAC,gBAAgB;IAS1B,SAAS,CAAC,eAAe;IAiBzB;;OAEG;IACH,MAAM,CAAC,YAAY,cAA2B;IAE9C;;OAEG;IACH,MAAM,KAAK,YAAY,WAEtB;IAED;;OAEG;IACH,MAAM,KAAK,mBAAmB,WAE7B;IAED;;OAEG;IACH,MAAM,KAAK,uBAAuB,WAEjC;IAED;;OAEG;IACH,MAAM,KAAK,oBAAoB,WAE9B;IAED;;OAEG;IACH,MAAM,KAAK,eAAe,WAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,iBAAiB,WAE3B;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED,MAAM,CAAC,MAAM,MAAU;IAEvB;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM;CAe7B"}
|
|
@@ -66,13 +66,11 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
66
66
|
*/
|
|
67
67
|
_navigate(direction) {
|
|
68
68
|
const immediate = this.selectionMode === "automatic";
|
|
69
|
-
const {
|
|
69
|
+
const { selectorItemHighlighted, selectorItemSelected } = this.constructor;
|
|
70
70
|
const nextItem = this._getNextItem(this.querySelector(immediate ? selectorItemSelected : selectorItemHighlighted), direction);
|
|
71
71
|
if (!nextItem) return;
|
|
72
72
|
this._handleUserInitiatedSelectItem(nextItem, "keyboard");
|
|
73
|
-
if (!immediate)
|
|
74
|
-
item[immediate ? "selected" : "highlighted"] = nextItem === item;
|
|
75
|
-
});
|
|
73
|
+
if (!immediate) this.resetHighlighted(nextItem);
|
|
76
74
|
nextItem.scrollIntoView({
|
|
77
75
|
block: "nearest",
|
|
78
76
|
inline: "nearest"
|
|
@@ -82,16 +80,22 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
82
80
|
this._currentIndex += direction;
|
|
83
81
|
this.requestUpdate();
|
|
84
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Resets the highlighted state of all tabs, setting only the specified tab as highlighted.
|
|
85
|
+
*
|
|
86
|
+
* @param nextItem The tab item to be highlighted. If provided, only this item will be highlighted.
|
|
87
|
+
* If null or undefined, all tabs will have their highlighted state set to false.
|
|
88
|
+
*/
|
|
89
|
+
resetHighlighted(nextItem) {
|
|
90
|
+
const { selectorItem } = this.constructor;
|
|
91
|
+
forEach(this.querySelectorAll(selectorItem), (item) => {
|
|
92
|
+
item["highlighted"] = nextItem === item;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
85
95
|
_handleClick(event) {
|
|
86
96
|
super._handleClick(event);
|
|
87
|
-
const { selectorItem } = this.constructor;
|
|
88
97
|
const currentItem = this._getCurrentItem(event.target);
|
|
89
|
-
if (currentItem)
|
|
90
|
-
forEach(this.querySelectorAll(selectorItem), (item) => {
|
|
91
|
-
item.highlighted = false;
|
|
92
|
-
});
|
|
93
|
-
currentItem.highlighted = true;
|
|
94
|
-
}
|
|
98
|
+
if (currentItem) this.resetHighlighted(currentItem);
|
|
95
99
|
}
|
|
96
100
|
_handleKeydown(event) {
|
|
97
101
|
const { key } = event;
|
|
@@ -105,7 +109,8 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
105
109
|
block: "nearest",
|
|
106
110
|
inline: "nearest"
|
|
107
111
|
});
|
|
108
|
-
this.
|
|
112
|
+
if (this.selectionMode === "manual") this.resetHighlighted(firstEnabledTab);
|
|
113
|
+
this._handleUserInitiatedSelectItem(firstEnabledTab, this.selectionMode !== "manual" ? "activation" : "keyboard");
|
|
109
114
|
this.requestUpdate();
|
|
110
115
|
}
|
|
111
116
|
break;
|
|
@@ -116,7 +121,8 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
116
121
|
block: "nearest",
|
|
117
122
|
inline: "nearest"
|
|
118
123
|
});
|
|
119
|
-
this.
|
|
124
|
+
if (this.selectionMode === "manual") this.resetHighlighted(lastEnabledTab);
|
|
125
|
+
this._handleUserInitiatedSelectItem(lastEnabledTab, this.selectionMode !== "manual" ? "activation" : "keyboard");
|
|
120
126
|
this.requestUpdate();
|
|
121
127
|
}
|
|
122
128
|
break;
|
|
@@ -138,6 +144,34 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
138
144
|
default: break;
|
|
139
145
|
}
|
|
140
146
|
}
|
|
147
|
+
_handleTabClosed(event) {
|
|
148
|
+
const { selectorItem, selectorItemEnabled, selectorItemSelected } = this.constructor;
|
|
149
|
+
const { index } = event.detail;
|
|
150
|
+
const allTabs = this.querySelectorAll(selectorItem);
|
|
151
|
+
const enabledTabsBeforeRemoval = this.querySelectorAll(selectorItemEnabled);
|
|
152
|
+
const activeItem = this.querySelector(selectorItemSelected);
|
|
153
|
+
const indexInEnabledTabs = Array.from(enabledTabsBeforeRemoval).indexOf(allTabs[index]);
|
|
154
|
+
const activeTabClosed = activeItem === allTabs[index];
|
|
155
|
+
requestAnimationFrame(() => {
|
|
156
|
+
const enabledTabs = this.querySelectorAll(selectorItemEnabled);
|
|
157
|
+
if (enabledTabs.length > 0) {
|
|
158
|
+
if (activeTabClosed) {
|
|
159
|
+
enabledTabs[0].selected = true;
|
|
160
|
+
this.value = enabledTabs[0].value;
|
|
161
|
+
}
|
|
162
|
+
const nextHighlightedItem = indexInEnabledTabs < enabledTabs.length ? enabledTabs[indexInEnabledTabs] : enabledTabs[indexInEnabledTabs - 1];
|
|
163
|
+
nextHighlightedItem.highlighted = true;
|
|
164
|
+
nextHighlightedItem.shadowRoot?.querySelector(`.cds--tabs__nav-link--dismissable`)?.focus();
|
|
165
|
+
nextHighlightedItem.scrollIntoView({
|
|
166
|
+
block: "nearest",
|
|
167
|
+
inline: "nearest"
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
this.value = "";
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
141
175
|
/**
|
|
142
176
|
* Handles click on overflow scroll buttons.
|
|
143
177
|
*
|
|
@@ -164,6 +198,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
164
198
|
const selectedItem = this.querySelector(selectorItemSelected);
|
|
165
199
|
const nextItem = this._getNextItem(selectedItem, 1);
|
|
166
200
|
if (nextItem) nextItem.hideDivider = true;
|
|
201
|
+
this._updateTabsState();
|
|
167
202
|
}
|
|
168
203
|
_selectionDidChange(itemToSelect, interactionType) {
|
|
169
204
|
super._selectionDidChange(itemToSelect, interactionType);
|
|
@@ -213,18 +248,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
213
248
|
}
|
|
214
249
|
firstUpdated() {
|
|
215
250
|
super.firstUpdated();
|
|
216
|
-
|
|
217
|
-
const { selectionMode, selectedIndex } = this;
|
|
218
|
-
const tablist = this.shadowRoot.querySelector(selectorTablist);
|
|
219
|
-
this.tablist = tablist;
|
|
220
|
-
if (selectionMode === "manual") {
|
|
221
|
-
const firstItem = this.querySelectorAll(selectorItemEnabled)[selectedIndex];
|
|
222
|
-
if (firstItem) {
|
|
223
|
-
firstItem.highlighted = true;
|
|
224
|
-
firstItem.selected = true;
|
|
225
|
-
this.value = firstItem.value;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
251
|
+
this._tabInitialLoad();
|
|
228
252
|
this._cleanAndCreateIntersectionObserverContainer({ create: true });
|
|
229
253
|
}
|
|
230
254
|
updated(changedProperties) {
|
|
@@ -244,6 +268,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
244
268
|
if (changedProperties.has("_currentScrollPosition")) {
|
|
245
269
|
if (this._contentNode) this._contentNode.style.insetInlineStart = `-${this._currentScrollPosition}px`;
|
|
246
270
|
}
|
|
271
|
+
if (changedProperties.has("dismissable")) this._updateTabsState();
|
|
247
272
|
}
|
|
248
273
|
/**
|
|
249
274
|
* Render the previous button if tablist is wider than container.
|
|
@@ -312,6 +337,25 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
312
337
|
</div>
|
|
313
338
|
`;
|
|
314
339
|
}
|
|
340
|
+
_updateTabsState() {
|
|
341
|
+
const { selectorItem } = this.constructor;
|
|
342
|
+
this.querySelectorAll(selectorItem).forEach((tab, index) => {
|
|
343
|
+
tab._dismissable = this.dismissable;
|
|
344
|
+
tab._index = index;
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
_tabInitialLoad() {
|
|
348
|
+
const { selectorTablist, selectorItemEnabled } = this.constructor;
|
|
349
|
+
const { selectionMode, selectedIndex } = this;
|
|
350
|
+
const tablist = this.shadowRoot.querySelector(selectorTablist);
|
|
351
|
+
this.tablist = tablist;
|
|
352
|
+
const firstItem = this.querySelectorAll(selectorItemEnabled)[selectedIndex];
|
|
353
|
+
if (firstItem) {
|
|
354
|
+
if (selectionMode === "manual") firstItem.highlighted = true;
|
|
355
|
+
firstItem.selected = true;
|
|
356
|
+
this.value = firstItem.value;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
315
359
|
static {
|
|
316
360
|
this.TRIGGER_KEYS = new Set([" ", "Enter"]);
|
|
317
361
|
}
|
|
@@ -375,6 +419,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(content_switcher_default)
|
|
|
375
419
|
};
|
|
376
420
|
__decorate([HostListener("click")], CDSTabs.prototype, "_handleClick", null);
|
|
377
421
|
__decorate([HostListener("keydown")], CDSTabs.prototype, "_handleKeydown", null);
|
|
422
|
+
__decorate([HostListener("cds-tab-closed")], CDSTabs.prototype, "_handleTabClosed", null);
|
|
378
423
|
__decorate([query(`.cds--tabs-nav-content-container`)], CDSTabs.prototype, "_contentContainerNode", void 0);
|
|
379
424
|
__decorate([query(`.cds--tabs-nav-content`)], CDSTabs.prototype, "_contentNode", void 0);
|
|
380
425
|
__decorate([state()], CDSTabs.prototype, "_currentScrollPosition", void 0);
|
|
@@ -384,6 +429,10 @@ __decorate([property({ attribute: "selecting-items-assistive-text" })], CDSTabs.
|
|
|
384
429
|
__decorate([property({ attribute: "selected-item-assistive-text" })], CDSTabs.prototype, "selectedItemAssistiveText", void 0);
|
|
385
430
|
__decorate([property({ attribute: "trigger-content" })], CDSTabs.prototype, "triggerContent", void 0);
|
|
386
431
|
__decorate([property({ reflect: true })], CDSTabs.prototype, "type", void 0);
|
|
432
|
+
__decorate([property({
|
|
433
|
+
type: Boolean,
|
|
434
|
+
reflect: true
|
|
435
|
+
})], CDSTabs.prototype, "dismissable", void 0);
|
|
387
436
|
__decorate([property({
|
|
388
437
|
attribute: "icon-size",
|
|
389
438
|
reflect: true
|