@carbon/web-components 2.58.1 → 2.59.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 +186 -40
- package/es/components/accordion/accordion.scss.js +1 -1
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/ai-label/ai-label.scss.js.map +1 -1
- package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es/components/button/button.d.ts +2 -2
- package/es/components/button/button.d.ts.map +1 -1
- package/es/components/button/button.js +2 -2
- package/es/components/button/button.js.map +1 -1
- package/es/components/button/button.scss.js +1 -1
- package/es/components/button/button.scss.js.map +1 -1
- package/es/components/chat-button/chat-button.scss.js +1 -1
- package/es/components/chat-button/chat-button.scss.js.map +1 -1
- package/es/components/checkbox/checkbox-group.d.ts +1 -1
- package/es/components/checkbox/checkbox.d.ts +1 -1
- package/es/components/checkbox/checkbox.scss.js +1 -1
- package/es/components/code-snippet/code-snippet.d.ts +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-box/combo-box.scss.js.map +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/contained-list/contained-list.scss.js.map +1 -1
- package/es/components/content-switcher/content-switcher-item.d.ts +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/copy-button/copy-button.scss.js.map +1 -1
- package/es/components/data-table/data-table.scss.js +1 -1
- package/es/components/data-table/table-header-cell.d.ts +1 -1
- package/es/components/data-table/table-toolbar-search.d.ts +1 -1
- package/es/components/date-picker/date-picker-input.d.ts +1 -1
- package/es/components/date-picker/date-picker.scss.js +1 -1
- package/es/components/dialog/dialog.scss.js +1 -1
- package/es/components/dropdown/dropdown-item.d.ts +2 -1
- package/es/components/dropdown/dropdown-item.d.ts.map +1 -1
- package/es/components/dropdown/dropdown-item.js +4 -3
- package/es/components/dropdown/dropdown-item.js.map +1 -1
- package/es/components/dropdown/dropdown.d.ts +1 -1
- package/es/components/dropdown/dropdown.scss.js +1 -1
- package/es/components/feature-flags/index.d.ts +3 -0
- package/es/components/feature-flags/index.d.ts.map +1 -1
- package/es/components/feature-flags/index.js +33 -5
- package/es/components/feature-flags/index.js.map +1 -1
- package/es/components/file-uploader/file-uploader-button.d.ts +1 -0
- package/es/components/file-uploader/file-uploader-button.d.ts.map +1 -1
- package/es/components/file-uploader/file-uploader-button.js +10 -11
- package/es/components/file-uploader/file-uploader-button.js.map +1 -1
- package/es/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
- package/es/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
- package/es/components/file-uploader/file-uploader-drop-container.js +6 -5
- package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
- package/es/components/file-uploader/file-uploader.scss.js +1 -1
- package/es/components/file-uploader/file-uploader.scss.js.map +1 -1
- package/es/components/floating-menu/floating-menu.d.ts +1 -1
- package/es/components/floating-menu/floating-menu.js +1 -1
- package/es/components/floating-menu/floating-menu.js.map +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -1
- package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- package/es/components/fluid-dropdown/fluid-dropdown.scss.js.map +1 -1
- package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
- package/es/components/fluid-multi-select/fluid-multi-select.scss.js.map +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-search/fluid-search.scss.js.map +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/fluid-time-picker/fluid-time-picker.scss.js.map +1 -1
- package/es/components/icon-button/icon-button.d.ts +1 -1
- package/es/components/icon-button/icon-button.d.ts.map +1 -1
- package/es/components/icon-button/icon-button.js.map +1 -1
- package/es/components/icon-button/icon-button.scss.js +1 -1
- package/es/components/icon-button/icon-button.scss.js.map +1 -1
- package/es/components/icon-indicator/icon-indicator.d.ts +20 -1
- package/es/components/icon-indicator/icon-indicator.d.ts.map +1 -1
- package/es/components/icon-indicator/icon-indicator.js +30 -2
- package/es/components/icon-indicator/icon-indicator.js.map +1 -1
- package/es/components/icon-indicator/icon-indicator.scss.js +1 -1
- package/es/components/icon-indicator/icon-indicator.scss.js.map +1 -1
- package/es/components/layout/layout.scss.js +1 -1
- package/es/components/layout/layout.scss.js.map +1 -1
- package/es/components/link/link.d.ts +1 -1
- package/es/components/menu/menu-item-selectable.d.ts +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/menu.scss.js +1 -1
- package/es/components/menu-button/menu-button.scss.js +1 -1
- package/es/components/modal/modal-close-button.d.ts +1 -1
- package/es/components/modal/modal.scss.js +1 -1
- package/es/components/multi-select/multi-select.scss.js +1 -1
- package/es/components/notification/actionable-notification.d.ts.map +1 -1
- package/es/components/notification/actionable-notification.js +5 -2
- package/es/components/notification/actionable-notification.js.map +1 -1
- package/es/components/notification/actionable-notification.scss.js +1 -1
- package/es/components/notification/actionable-notification.scss.js.map +1 -1
- package/es/components/notification/inline-notification.scss.js +1 -1
- package/es/components/notification/inline-notification.scss.js.map +1 -1
- package/es/components/notification/toast-notification.scss.js +1 -1
- package/es/components/notification/toast-notification.scss.js.map +1 -1
- package/es/components/number-input/number-input.d.ts +1 -1
- package/es/components/number-input/number-input.scss.js +1 -1
- package/es/components/overflow-menu/overflow-menu-body.d.ts +1 -1
- package/es/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
- package/es/components/overflow-menu/overflow-menu-body.js +2 -2
- package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu-item.d.ts +1 -1
- package/es/components/overflow-menu/overflow-menu.d.ts +8 -1
- package/es/components/overflow-menu/overflow-menu.d.ts.map +1 -1
- package/es/components/overflow-menu/overflow-menu.js +47 -3
- package/es/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js.map +1 -1
- package/es/components/pagination/pagination.d.ts +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/pagination-nav/pagination-nav.scss.js.map +1 -1
- package/es/components/password-input/password-input.d.ts +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/popover/popover.scss.js.map +1 -1
- package/es/components/progress-bar/progress-bar.scss.js +1 -1
- package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es/components/progress-indicator/progress-step.d.ts +1 -1
- package/es/components/radio-button/radio-button.d.ts +1 -1
- package/es/components/radio-button/radio-button.scss.js +1 -1
- package/es/components/search/search.d.ts +9 -1
- package/es/components/search/search.d.ts.map +1 -1
- package/es/components/search/search.js +7 -6
- package/es/components/search/search.js.map +1 -1
- package/es/components/search/search.scss.js +1 -1
- package/es/components/select/select.d.ts +1 -1
- package/es/components/select/select.scss.js +1 -1
- package/es/components/select/select.scss.js.map +1 -1
- package/es/components/shape-indicator/shape-indicator.d.ts +20 -1
- package/es/components/shape-indicator/shape-indicator.d.ts.map +1 -1
- package/es/components/shape-indicator/shape-indicator.js +32 -4
- package/es/components/shape-indicator/shape-indicator.js.map +1 -1
- package/es/components/shape-indicator/shape-indicator.scss.js +1 -1
- package/es/components/shape-indicator/shape-indicator.scss.js.map +1 -1
- package/es/components/skip-to-content/skip-to-content.d.ts +1 -1
- package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es/components/slider/slider-input.d.ts +2 -1
- package/es/components/slider/slider-input.d.ts.map +1 -1
- package/es/components/slider/slider-input.js +2 -1
- package/es/components/slider/slider-input.js.map +1 -1
- package/es/components/slider/slider.d.ts +2 -1
- package/es/components/slider/slider.d.ts.map +1 -1
- package/es/components/slider/slider.js +5 -5
- package/es/components/slider/slider.js.map +1 -1
- package/es/components/slider/slider.scss.js +1 -1
- package/es/components/slider/slider.scss.js.map +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/slug/slug.scss.js.map +1 -1
- package/es/components/structured-list/structured-list.d.ts +1 -1
- package/es/components/structured-list/structured-list.scss.js +1 -1
- package/es/components/tabs/tabs-vertical.d.ts +4 -0
- package/es/components/tabs/tabs-vertical.d.ts.map +1 -1
- package/es/components/tabs/tabs-vertical.js +3 -2
- package/es/components/tabs/tabs-vertical.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/operational-tag.d.ts +1 -1
- package/es/components/tag/operational-tag.d.ts.map +1 -1
- package/es/components/tag/operational-tag.js +3 -3
- package/es/components/tag/operational-tag.js.map +1 -1
- package/es/components/tag/selectable-tag.d.ts +1 -1
- package/es/components/tag/selectable-tag.d.ts.map +1 -1
- package/es/components/tag/selectable-tag.js +3 -3
- package/es/components/tag/selectable-tag.js.map +1 -1
- package/es/components/tag/tag.d.ts +1 -0
- package/es/components/tag/tag.d.ts.map +1 -1
- package/es/components/tag/tag.js +3 -3
- package/es/components/tag/tag.js.map +1 -1
- package/es/components/tag/tag.scss.js +1 -1
- package/es/components/text-input/text-input.d.ts +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.d.ts +1 -1
- package/es/components/textarea/textarea.scss.js +1 -1
- package/es/components/textarea/textarea.scss.js.map +1 -1
- package/es/components/tile/selectable-tile.d.ts +1 -1
- package/es/components/tile/tile.scss.js +1 -1
- package/es/components/tile/tile.scss.js.map +1 -1
- package/es/components/time-picker/time-picker-select.d.ts +1 -1
- package/es/components/time-picker/time-picker.d.ts +1 -1
- package/es/components/time-picker/time-picker.scss.js +1 -1
- package/es/components/time-picker/time-picker.scss.js.map +1 -1
- package/es/components/toggle-tip/toggletip.d.ts +13 -1
- package/es/components/toggle-tip/toggletip.d.ts.map +1 -1
- package/es/components/toggle-tip/toggletip.js +10 -14
- package/es/components/toggle-tip/toggletip.js.map +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +1 -1
- package/es/components/tooltip/definition-tooltip.d.ts +4 -2
- package/es/components/tooltip/definition-tooltip.d.ts.map +1 -1
- package/es/components/tooltip/definition-tooltip.js +23 -12
- package/es/components/tooltip/definition-tooltip.js.map +1 -1
- package/es/components/tooltip/tooltip.scss.js +1 -1
- package/es/components/tooltip/tooltip.scss.js.map +1 -1
- package/es/components/ui-shell/header-global-action.d.ts +2 -2
- package/es/components/ui-shell/header-global-action.d.ts.map +1 -1
- package/es/components/ui-shell/header-global-action.js +3 -3
- package/es/components/ui-shell/header-global-action.js.map +1 -1
- package/es/components/ui-shell/header-menu-button.d.ts +1 -1
- package/es/components/ui-shell/header-menu.d.ts +1 -1
- package/es/components/ui-shell/header-name.d.ts +1 -1
- package/es/components/ui-shell/header-nav-item.d.ts +1 -1
- package/es/components/ui-shell/header-panel.d.ts +1 -1
- package/es/components/ui-shell/header.scss.js +1 -1
- package/es/components/ui-shell/side-nav-link.d.ts +1 -1
- package/es/components/ui-shell/side-nav-menu-item.d.ts +1 -1
- package/es/components/ui-shell/side-nav-menu.d.ts +1 -1
- package/es/components/ui-shell/switcher-item.d.ts +1 -1
- package/es/components/ui-shell/switcher.d.ts +1 -1
- package/es/packages/feature-flags/es/index.js +12 -0
- package/es/packages/feature-flags/es/index.js.map +1 -1
- package/es-custom/components/accordion/accordion.scss.js +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js.map +1 -1
- package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
- package/es-custom/components/button/button.d.ts +2 -2
- package/es-custom/components/button/button.d.ts.map +1 -1
- package/es-custom/components/button/button.js +2 -2
- package/es-custom/components/button/button.js.map +1 -1
- package/es-custom/components/button/button.scss.js +1 -1
- package/es-custom/components/button/button.scss.js.map +1 -1
- package/es-custom/components/chat-button/chat-button.scss.js +1 -1
- package/es-custom/components/chat-button/chat-button.scss.js.map +1 -1
- package/es-custom/components/checkbox/checkbox-group.d.ts +1 -1
- package/es-custom/components/checkbox/checkbox.d.ts +1 -1
- package/es-custom/components/checkbox/checkbox.scss.js +1 -1
- package/es-custom/components/code-snippet/code-snippet.d.ts +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-box/combo-box.scss.js.map +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/contained-list/contained-list.scss.js.map +1 -1
- package/es-custom/components/content-switcher/content-switcher-item.d.ts +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/copy-button/copy-button.scss.js.map +1 -1
- package/es-custom/components/data-table/data-table.scss.js +1 -1
- package/es-custom/components/data-table/table-header-cell.d.ts +1 -1
- package/es-custom/components/data-table/table-toolbar-search.d.ts +1 -1
- package/es-custom/components/date-picker/date-picker-input.d.ts +1 -1
- package/es-custom/components/date-picker/date-picker.scss.js +1 -1
- package/es-custom/components/dialog/dialog.scss.js +1 -1
- package/es-custom/components/dropdown/dropdown-item.d.ts +2 -1
- package/es-custom/components/dropdown/dropdown-item.d.ts.map +1 -1
- package/es-custom/components/dropdown/dropdown-item.js +4 -3
- package/es-custom/components/dropdown/dropdown-item.js.map +1 -1
- package/es-custom/components/dropdown/dropdown.d.ts +1 -1
- package/es-custom/components/dropdown/dropdown.scss.js +1 -1
- package/es-custom/components/feature-flags/index.d.ts +3 -0
- package/es-custom/components/feature-flags/index.d.ts.map +1 -1
- package/es-custom/components/feature-flags/index.js +33 -5
- package/es-custom/components/feature-flags/index.js.map +1 -1
- package/es-custom/components/file-uploader/file-uploader-button.d.ts +1 -0
- package/es-custom/components/file-uploader/file-uploader-button.d.ts.map +1 -1
- package/es-custom/components/file-uploader/file-uploader-button.js +10 -11
- package/es-custom/components/file-uploader/file-uploader-button.js.map +1 -1
- package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
- package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
- package/es-custom/components/file-uploader/file-uploader-drop-container.js +6 -5
- package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
- package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
- package/es-custom/components/file-uploader/file-uploader.scss.js.map +1 -1
- package/es-custom/components/floating-menu/floating-menu.d.ts +1 -1
- package/es-custom/components/floating-menu/floating-menu.js +1 -1
- package/es-custom/components/floating-menu/floating-menu.js.map +1 -1
- package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
- package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js.map +1 -1
- package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js.map +1 -1
- package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
- package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js.map +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-search/fluid-search.scss.js.map +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/fluid-time-picker/fluid-time-picker.scss.js.map +1 -1
- package/es-custom/components/icon-button/icon-button.d.ts +1 -1
- package/es-custom/components/icon-button/icon-button.d.ts.map +1 -1
- package/es-custom/components/icon-button/icon-button.js.map +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js.map +1 -1
- package/es-custom/components/icon-indicator/icon-indicator.d.ts +20 -1
- package/es-custom/components/icon-indicator/icon-indicator.d.ts.map +1 -1
- package/es-custom/components/icon-indicator/icon-indicator.js +30 -2
- package/es-custom/components/icon-indicator/icon-indicator.js.map +1 -1
- package/es-custom/components/icon-indicator/icon-indicator.scss.js +1 -1
- package/es-custom/components/icon-indicator/icon-indicator.scss.js.map +1 -1
- package/es-custom/components/layout/layout.scss.js +1 -1
- package/es-custom/components/layout/layout.scss.js.map +1 -1
- package/es-custom/components/link/link.d.ts +1 -1
- package/es-custom/components/menu/menu-item-selectable.d.ts +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/menu.scss.js +1 -1
- package/es-custom/components/menu-button/menu-button.scss.js +1 -1
- package/es-custom/components/modal/modal-close-button.d.ts +1 -1
- package/es-custom/components/modal/modal.scss.js +1 -1
- package/es-custom/components/multi-select/multi-select.scss.js +1 -1
- package/es-custom/components/notification/actionable-notification.d.ts.map +1 -1
- package/es-custom/components/notification/actionable-notification.js +5 -2
- 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/actionable-notification.scss.js.map +1 -1
- package/es-custom/components/notification/inline-notification.scss.js +1 -1
- package/es-custom/components/notification/inline-notification.scss.js.map +1 -1
- package/es-custom/components/notification/toast-notification.scss.js +1 -1
- package/es-custom/components/notification/toast-notification.scss.js.map +1 -1
- package/es-custom/components/number-input/number-input.d.ts +1 -1
- package/es-custom/components/number-input/number-input.scss.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-body.d.ts +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-body.js +2 -2
- package/es-custom/components/overflow-menu/overflow-menu-body.js.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu-item.d.ts +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.d.ts +8 -1
- package/es-custom/components/overflow-menu/overflow-menu.d.ts.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.js +47 -3
- package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js.map +1 -1
- package/es-custom/components/pagination/pagination.d.ts +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/pagination-nav/pagination-nav.scss.js.map +1 -1
- package/es-custom/components/password-input/password-input.d.ts +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/popover/popover.scss.js.map +1 -1
- package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-step.d.ts +1 -1
- package/es-custom/components/radio-button/radio-button.d.ts +1 -1
- package/es-custom/components/radio-button/radio-button.scss.js +1 -1
- package/es-custom/components/search/search.d.ts +9 -1
- package/es-custom/components/search/search.d.ts.map +1 -1
- package/es-custom/components/search/search.js +7 -6
- package/es-custom/components/search/search.js.map +1 -1
- package/es-custom/components/search/search.scss.js +1 -1
- package/es-custom/components/select/select.d.ts +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/shape-indicator/shape-indicator.d.ts +20 -1
- package/es-custom/components/shape-indicator/shape-indicator.d.ts.map +1 -1
- package/es-custom/components/shape-indicator/shape-indicator.js +32 -4
- package/es-custom/components/shape-indicator/shape-indicator.js.map +1 -1
- package/es-custom/components/shape-indicator/shape-indicator.scss.js +1 -1
- package/es-custom/components/shape-indicator/shape-indicator.scss.js.map +1 -1
- package/es-custom/components/skip-to-content/skip-to-content.d.ts +1 -1
- package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es-custom/components/slider/slider-input.d.ts +2 -1
- package/es-custom/components/slider/slider-input.d.ts.map +1 -1
- package/es-custom/components/slider/slider-input.js +2 -1
- package/es-custom/components/slider/slider-input.js.map +1 -1
- package/es-custom/components/slider/slider.d.ts +2 -1
- package/es-custom/components/slider/slider.d.ts.map +1 -1
- package/es-custom/components/slider/slider.js +5 -5
- package/es-custom/components/slider/slider.js.map +1 -1
- package/es-custom/components/slider/slider.scss.js +1 -1
- package/es-custom/components/slider/slider.scss.js.map +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/slug/slug.scss.js.map +1 -1
- package/es-custom/components/structured-list/structured-list.d.ts +1 -1
- package/es-custom/components/structured-list/structured-list.scss.js +1 -1
- package/es-custom/components/tabs/tabs-vertical.d.ts +4 -0
- package/es-custom/components/tabs/tabs-vertical.d.ts.map +1 -1
- package/es-custom/components/tabs/tabs-vertical.js +3 -2
- package/es-custom/components/tabs/tabs-vertical.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/operational-tag.d.ts +1 -1
- package/es-custom/components/tag/operational-tag.d.ts.map +1 -1
- package/es-custom/components/tag/operational-tag.js +3 -3
- package/es-custom/components/tag/operational-tag.js.map +1 -1
- package/es-custom/components/tag/selectable-tag.d.ts +1 -1
- package/es-custom/components/tag/selectable-tag.d.ts.map +1 -1
- package/es-custom/components/tag/selectable-tag.js +3 -3
- package/es-custom/components/tag/selectable-tag.js.map +1 -1
- package/es-custom/components/tag/tag.d.ts +1 -0
- package/es-custom/components/tag/tag.d.ts.map +1 -1
- package/es-custom/components/tag/tag.js +3 -3
- package/es-custom/components/tag/tag.js.map +1 -1
- package/es-custom/components/tag/tag.scss.js +1 -1
- package/es-custom/components/text-input/text-input.d.ts +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.d.ts +1 -1
- package/es-custom/components/textarea/textarea.scss.js +1 -1
- package/es-custom/components/textarea/textarea.scss.js.map +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/tile/tile.scss.js.map +1 -1
- package/es-custom/components/time-picker/time-picker-select.d.ts +1 -1
- package/es-custom/components/time-picker/time-picker.d.ts +1 -1
- package/es-custom/components/time-picker/time-picker.scss.js +1 -1
- package/es-custom/components/time-picker/time-picker.scss.js.map +1 -1
- package/es-custom/components/toggle-tip/toggletip.d.ts +13 -1
- package/es-custom/components/toggle-tip/toggletip.d.ts.map +1 -1
- package/es-custom/components/toggle-tip/toggletip.js +10 -14
- package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tooltip/definition-tooltip.d.ts +4 -2
- package/es-custom/components/tooltip/definition-tooltip.d.ts.map +1 -1
- package/es-custom/components/tooltip/definition-tooltip.js +23 -12
- package/es-custom/components/tooltip/definition-tooltip.js.map +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/ui-shell/header-global-action.d.ts +2 -2
- package/es-custom/components/ui-shell/header-global-action.d.ts.map +1 -1
- package/es-custom/components/ui-shell/header-global-action.js +3 -3
- package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
- package/es-custom/components/ui-shell/header-menu-button.d.ts +1 -1
- package/es-custom/components/ui-shell/header-menu.d.ts +1 -1
- package/es-custom/components/ui-shell/header-name.d.ts +1 -1
- package/es-custom/components/ui-shell/header-nav-item.d.ts +1 -1
- package/es-custom/components/ui-shell/header-panel.d.ts +1 -1
- package/es-custom/components/ui-shell/header.scss.js +1 -1
- package/es-custom/components/ui-shell/side-nav-link.d.ts +1 -1
- package/es-custom/components/ui-shell/side-nav-menu-item.d.ts +1 -1
- package/es-custom/components/ui-shell/side-nav-menu.d.ts +1 -1
- package/es-custom/components/ui-shell/switcher-item.d.ts +1 -1
- package/es-custom/components/ui-shell/switcher.d.ts +1 -1
- package/es-custom/packages/feature-flags/es/index.js +12 -0
- package/es-custom/packages/feature-flags/es/index.js.map +1 -1
- package/lib/components/button/button.d.ts +2 -2
- package/lib/components/button/button.d.ts.map +1 -1
- package/lib/components/checkbox/checkbox-group.d.ts +1 -1
- package/lib/components/checkbox/checkbox.d.ts +1 -1
- package/lib/components/code-snippet/code-snippet.d.ts +1 -1
- package/lib/components/content-switcher/content-switcher-item.d.ts +1 -1
- package/lib/components/data-table/table-header-cell.d.ts +1 -1
- package/lib/components/data-table/table-toolbar-search.d.ts +1 -1
- package/lib/components/date-picker/date-picker-input.d.ts +1 -1
- package/lib/components/dropdown/dropdown-item.d.ts +2 -1
- package/lib/components/dropdown/dropdown-item.d.ts.map +1 -1
- package/lib/components/dropdown/dropdown.d.ts +1 -1
- package/lib/components/feature-flags/index.d.ts +3 -0
- package/lib/components/feature-flags/index.d.ts.map +1 -1
- package/lib/components/file-uploader/file-uploader-button.d.ts +1 -0
- package/lib/components/file-uploader/file-uploader-button.d.ts.map +1 -1
- package/lib/components/file-uploader/file-uploader-drop-container.d.ts +1 -0
- package/lib/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
- package/lib/components/floating-menu/floating-menu.d.ts +1 -1
- package/lib/components/icon-button/icon-button.d.ts +1 -1
- package/lib/components/icon-button/icon-button.d.ts.map +1 -1
- package/lib/components/icon-indicator/icon-indicator.d.ts +20 -1
- package/lib/components/icon-indicator/icon-indicator.d.ts.map +1 -1
- package/lib/components/link/link.d.ts +1 -1
- package/lib/components/menu/menu-item-selectable.d.ts +1 -1
- package/lib/components/modal/modal-close-button.d.ts +1 -1
- package/lib/components/notification/actionable-notification.d.ts.map +1 -1
- package/lib/components/number-input/number-input.d.ts +1 -1
- package/lib/components/overflow-menu/overflow-menu-body.d.ts +1 -1
- package/lib/components/overflow-menu/overflow-menu-body.d.ts.map +1 -1
- package/lib/components/overflow-menu/overflow-menu-item.d.ts +1 -1
- package/lib/components/overflow-menu/overflow-menu.d.ts +8 -1
- package/lib/components/overflow-menu/overflow-menu.d.ts.map +1 -1
- package/lib/components/pagination/pagination.d.ts +1 -1
- package/lib/components/password-input/password-input.d.ts +1 -1
- package/lib/components/progress-indicator/progress-step.d.ts +1 -1
- package/lib/components/radio-button/radio-button.d.ts +1 -1
- package/lib/components/search/search.d.ts +9 -1
- package/lib/components/search/search.d.ts.map +1 -1
- package/lib/components/select/select.d.ts +1 -1
- package/lib/components/shape-indicator/shape-indicator.d.ts +20 -1
- package/lib/components/shape-indicator/shape-indicator.d.ts.map +1 -1
- package/lib/components/skip-to-content/skip-to-content.d.ts +1 -1
- package/lib/components/slider/slider-input.d.ts +2 -1
- package/lib/components/slider/slider-input.d.ts.map +1 -1
- package/lib/components/slider/slider.d.ts +2 -1
- package/lib/components/slider/slider.d.ts.map +1 -1
- package/lib/components/structured-list/structured-list.d.ts +1 -1
- package/lib/components/tabs/tabs-vertical.d.ts +4 -0
- package/lib/components/tabs/tabs-vertical.d.ts.map +1 -1
- package/lib/components/tag/operational-tag.d.ts +1 -1
- package/lib/components/tag/operational-tag.d.ts.map +1 -1
- package/lib/components/tag/selectable-tag.d.ts +1 -1
- package/lib/components/tag/selectable-tag.d.ts.map +1 -1
- package/lib/components/tag/tag.d.ts +1 -0
- package/lib/components/tag/tag.d.ts.map +1 -1
- package/lib/components/text-input/text-input.d.ts +1 -1
- package/lib/components/textarea/textarea.d.ts +1 -1
- package/lib/components/tile/selectable-tile.d.ts +1 -1
- package/lib/components/time-picker/time-picker-select.d.ts +1 -1
- package/lib/components/time-picker/time-picker.d.ts +1 -1
- package/lib/components/toggle-tip/toggletip.d.ts +13 -1
- package/lib/components/toggle-tip/toggletip.d.ts.map +1 -1
- package/lib/components/tooltip/definition-tooltip.d.ts +4 -2
- package/lib/components/tooltip/definition-tooltip.d.ts.map +1 -1
- package/lib/components/ui-shell/header-global-action.d.ts +2 -2
- package/lib/components/ui-shell/header-global-action.d.ts.map +1 -1
- package/lib/components/ui-shell/header-menu-button.d.ts +1 -1
- package/lib/components/ui-shell/header-menu.d.ts +1 -1
- package/lib/components/ui-shell/header-name.d.ts +1 -1
- package/lib/components/ui-shell/header-nav-item.d.ts +1 -1
- package/lib/components/ui-shell/header-panel.d.ts +1 -1
- package/lib/components/ui-shell/side-nav-link.d.ts +1 -1
- package/lib/components/ui-shell/side-nav-menu-item.d.ts +1 -1
- package/lib/components/ui-shell/side-nav-menu.d.ts +1 -1
- package/lib/components/ui-shell/switcher-item.d.ts +1 -1
- package/lib/components/ui-shell/switcher.d.ts +1 -1
- package/package.json +13 -9
- package/scss/components/ai-label/ai-label.scss +1 -1
- package/scss/components/button/button.scss +2 -1
- package/scss/components/chat-button/chat-button.scss +1 -1
- package/scss/components/combo-box/combo-box.scss +1 -1
- package/scss/components/contained-list/contained-list.scss +4 -1
- package/scss/components/copy-button/copy-button.scss +1 -1
- package/scss/components/data-table/_table-action.scss +0 -1
- package/scss/components/file-uploader/file-uploader.scss +3 -1
- package/scss/components/fluid-combo-box/fluid-combo-box.scss +1 -1
- package/scss/components/fluid-dropdown/fluid-dropdown.scss +1 -1
- package/scss/components/fluid-multi-select/fluid-multi-select.scss +1 -1
- package/scss/components/fluid-number-input/fluid-number-input.scss +1 -1
- package/scss/components/fluid-password-input/fluid-password-input.scss +1 -1
- package/scss/components/fluid-search/fluid-search.scss +1 -1
- package/scss/components/fluid-select/fluid-select.scss +1 -1
- package/scss/components/fluid-text-input/fluid-text-input.scss +1 -1
- package/scss/components/fluid-textarea/fluid-textarea.scss +1 -1
- package/scss/components/fluid-time-picker/fluid-time-picker.scss +1 -1
- package/scss/components/icon-button/icon-button.scss +1 -1
- package/scss/components/icon-indicator/icon-indicator.scss +19 -1
- package/scss/components/layout/layout.scss +1 -1
- package/scss/components/menu/menu-item.scss +4 -0
- package/scss/components/notification/actionable-notification.scss +1 -1
- package/scss/components/notification/inline-notification.scss +1 -1
- package/scss/components/notification/toast-notification.scss +1 -1
- package/scss/components/overflow-menu/overflow-menu.scss +13 -39
- package/scss/components/pagination/pagination.scss +1 -1
- package/scss/components/pagination-nav/pagination-nav.scss +3 -1
- package/scss/components/password-input/password-input.scss +3 -1
- package/scss/components/popover/popover.scss +3 -1
- package/scss/components/select/select.scss +1 -1
- package/scss/components/shape-indicator/shape-indicator.scss +19 -1
- package/scss/components/slider/slider.scss +1 -1
- package/scss/components/slug/slug.scss +1 -1
- package/scss/components/tabs/tabs.scss +4 -1
- package/scss/components/text-input/text-input.scss +3 -1
- package/scss/components/textarea/textarea.scss +1 -1
- package/scss/components/tile/tile.scss +1 -1
- package/scss/components/time-picker/time-picker.scss +1 -1
- package/scss/components/tooltip/tooltip.scss +15 -2
- package/telemetry.yml +4 -234
|
@@ -43,6 +43,7 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
|
|
|
43
43
|
}
|
|
44
44
|
static {
|
|
45
45
|
this.flagComponentMap = {
|
|
46
|
+
"enable-v12-release": null,
|
|
46
47
|
"enable-v12-tile-default-icons": "CDS-CLICKABLE-TILE",
|
|
47
48
|
"enable-v12-tile-radio-icons": "CDS-TILE",
|
|
48
49
|
"enable-v12-overflowmenu": "CDS-OVERFLOW-MENU",
|
|
@@ -70,29 +71,56 @@ let FeatureFlagsElement = class FeatureFlagsElement extends LitElement {
|
|
|
70
71
|
attributeChangedCallback(name, _oldVal, newVal) {
|
|
71
72
|
const value = newVal !== null && newVal !== "false";
|
|
72
73
|
this.flags[name] = value;
|
|
73
|
-
const relatedComponent = hasOwn(_FeatureFlagsElement.flagComponentMap, name) ? _FeatureFlagsElement.flagComponentMap[name] :
|
|
74
|
-
if (this.firstElementChild?.tagName === relatedComponent) this.firstElementChild.setAttribute(name, "");
|
|
74
|
+
const relatedComponent = hasOwn(_FeatureFlagsElement.flagComponentMap, name) ? _FeatureFlagsElement.flagComponentMap[name] : null;
|
|
75
|
+
if (relatedComponent && this.firstElementChild?.tagName === relatedComponent) this.firstElementChild.setAttribute(name, "");
|
|
75
76
|
this.updateScope();
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
syncFeatureFlagAttributes() {
|
|
79
|
+
for (const [flag, relatedComponent] of Object.entries(_FeatureFlagsElement.flagComponentMap)) {
|
|
80
|
+
if (!relatedComponent) continue;
|
|
81
|
+
let isEnabled = false;
|
|
82
|
+
try {
|
|
83
|
+
isEnabled = this.scope.enabled(flag);
|
|
84
|
+
} catch {
|
|
85
|
+
isEnabled = false;
|
|
86
|
+
}
|
|
87
|
+
for (const element of this.querySelectorAll(relatedComponent.toLowerCase())) {
|
|
88
|
+
if (findParentFeatureFlags(element) !== this) continue;
|
|
89
|
+
if (isEnabled) element.setAttribute(flag, "");
|
|
90
|
+
else element.removeAttribute(flag);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
getParentFeatureFlagsElement() {
|
|
78
95
|
let parent = this.parentNode;
|
|
79
96
|
while (parent) {
|
|
80
|
-
if (parent instanceof
|
|
97
|
+
if (parent instanceof ShadowRoot) {
|
|
98
|
+
parent = parent.host;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (parent instanceof _FeatureFlagsElement) return parent;
|
|
81
102
|
parent = parent.parentNode;
|
|
82
103
|
}
|
|
83
104
|
return null;
|
|
84
105
|
}
|
|
106
|
+
getParentScope() {
|
|
107
|
+
return this.getParentFeatureFlagsElement()?.getScope() ?? null;
|
|
108
|
+
}
|
|
109
|
+
syncChildFeatureFlagScopes() {
|
|
110
|
+
for (const element of this.querySelectorAll("feature-flags")) if (element instanceof _FeatureFlagsElement && element.getParentFeatureFlagsElement() === this) element.updateScope();
|
|
111
|
+
}
|
|
85
112
|
updateScope() {
|
|
86
113
|
const newScope = createScope(this.flags);
|
|
87
114
|
const parentScope = this.getParentScope() || FeatureFlags;
|
|
88
115
|
if (parentScope) newScope.mergeWithScope(parentScope);
|
|
89
116
|
this.scope = newScope;
|
|
117
|
+
this.syncFeatureFlagAttributes();
|
|
118
|
+
this.syncChildFeatureFlagScopes();
|
|
90
119
|
}
|
|
91
120
|
render() {
|
|
92
121
|
return html` <slot></slot> `;
|
|
93
122
|
}
|
|
94
123
|
isFeatureFlagEnabled(flag) {
|
|
95
|
-
if (Object.prototype.hasOwnProperty.call(this.flags, flag)) return this.flags[flag];
|
|
96
124
|
return this.scope.enabled(flag);
|
|
97
125
|
}
|
|
98
126
|
getScope() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["GlobalFeatureFlags","customElement"],"sources":["../../../src/components/feature-flags/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 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/**\n * <feature-flags> provides scoped feature flags to child components.\n *\n * Usage:\n * Wrap any child components inside <feature-flags> to provide scoped feature flags like this:\n * <feature-flags enable-dialog-element=\"true\">\n * <component></component>\n * </feature-flags>\n *\n * Available flags:\n * - enable-dialog-element\n * - enable-treeview-controllable\n * - ... (and others listed in observedAttributes)\n *\n * How to check a Flag in your component:\n * import { isFeatureFlagEnabled } from './feature-flags';\n * isFeatureFlagEnabled('enable-dialog-element', this)\n * Returns true if the flag is enabled in the nearest <feature-flags> ancestor\n */\n\nimport {\n FeatureFlags as GlobalFeatureFlags,\n createScope,\n} from '@carbon/feature-flags';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { LitElement, html } from 'lit';\n\n/**\n * Feature Flags\n *\n * @element feature-flags\n */\ntype FeatureFlags = Record<string, boolean>;\n\nconst hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T =>\n Object.prototype.hasOwnProperty.call(obj, key);\n\n@customElement('feature-flags')\nclass FeatureFlagsElement extends LitElement {\n private scope = GlobalFeatureFlags;\n private flags: FeatureFlags = {};\n\n /**\n * Mapping of feature flag attributes to their related component names.\n */\n private static readonly flagComponentMap = {\n 'enable-v12-tile-default-icons': 'CDS-CLICKABLE-TILE',\n 'enable-v12-tile-radio-icons': 'CDS-TILE',\n 'enable-v12-overflowmenu': 'CDS-OVERFLOW-MENU',\n 'enable-treeview-controllable': 'CDS-TREEVIEW',\n 'enable-experimental-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-dialog-element': 'CDS-MODAL',\n 'enable-v12-dynamic-floating-styles': 'CDS-FLOATING',\n 'enable-v12-toggle-reduced-label-spacing': 'CDS-TOGGLE',\n } as const;\n\n static get observedAttributes() {\n return Object.keys(FeatureFlagsElement.flagComponentMap);\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.updateScope();\n }\n\n attributeChangedCallback(\n name: string,\n _oldVal: string | null,\n newVal: string | null\n ) {\n const value = newVal !== null && newVal !== 'false';\n this.flags[name] = value;\n\n // Set feature flag to top component level\n const relatedComponent = hasOwn(FeatureFlagsElement.flagComponentMap, name)\n ? FeatureFlagsElement.flagComponentMap[name]\n :
|
|
1
|
+
{"version":3,"file":"index.js","names":["GlobalFeatureFlags","customElement"],"sources":["../../../src/components/feature-flags/index.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2025, 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/**\n * <feature-flags> provides scoped feature flags to child components.\n *\n * Usage:\n * Wrap any child components inside <feature-flags> to provide scoped feature flags like this:\n * <feature-flags enable-dialog-element=\"true\">\n * <component></component>\n * </feature-flags>\n *\n * Available flags:\n * - enable-dialog-element\n * - enable-treeview-controllable\n * - ... (and others listed in observedAttributes)\n *\n * How to check a Flag in your component:\n * import { isFeatureFlagEnabled } from './feature-flags';\n * isFeatureFlagEnabled('enable-dialog-element', this)\n * Returns true if the flag is enabled in the nearest <feature-flags> ancestor\n */\n\nimport {\n FeatureFlags as GlobalFeatureFlags,\n createScope,\n} from '@carbon/feature-flags';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { LitElement, html } from 'lit';\n\n/**\n * Feature Flags\n *\n * @element feature-flags\n */\ntype FeatureFlags = Record<string, boolean>;\n\nconst hasOwn = <T extends object>(obj: T, key: PropertyKey): key is keyof T =>\n Object.prototype.hasOwnProperty.call(obj, key);\n\n@customElement('feature-flags')\nclass FeatureFlagsElement extends LitElement {\n private scope = GlobalFeatureFlags;\n private flags: FeatureFlags = {};\n\n /**\n * Mapping of feature flag attributes to their related component names.\n */\n private static readonly flagComponentMap = {\n 'enable-v12-release': null,\n 'enable-v12-tile-default-icons': 'CDS-CLICKABLE-TILE',\n 'enable-v12-tile-radio-icons': 'CDS-TILE',\n 'enable-v12-overflowmenu': 'CDS-OVERFLOW-MENU',\n 'enable-treeview-controllable': 'CDS-TREEVIEW',\n 'enable-experimental-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-focus-wrap-without-sentinels': 'CDS-FOCUS-WRAP',\n 'enable-dialog-element': 'CDS-MODAL',\n 'enable-v12-dynamic-floating-styles': 'CDS-FLOATING',\n 'enable-v12-toggle-reduced-label-spacing': 'CDS-TOGGLE',\n } as const;\n\n static get observedAttributes() {\n return Object.keys(FeatureFlagsElement.flagComponentMap);\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.updateScope();\n }\n\n attributeChangedCallback(\n name: string,\n _oldVal: string | null,\n newVal: string | null\n ) {\n const value = newVal !== null && newVal !== 'false';\n this.flags[name] = value;\n\n // Set feature flag to top component level\n const relatedComponent = hasOwn(FeatureFlagsElement.flagComponentMap, name)\n ? FeatureFlagsElement.flagComponentMap[name]\n : null;\n if (\n relatedComponent &&\n this.firstElementChild?.tagName === relatedComponent\n ) {\n this.firstElementChild.setAttribute(name, '');\n }\n\n this.updateScope();\n }\n\n private syncFeatureFlagAttributes() {\n for (const [flag, relatedComponent] of Object.entries(\n FeatureFlagsElement.flagComponentMap\n )) {\n if (!relatedComponent) {\n continue;\n }\n\n let isEnabled = false;\n try {\n isEnabled = this.scope.enabled(flag);\n } catch {\n isEnabled = false;\n }\n\n for (const element of this.querySelectorAll(\n relatedComponent.toLowerCase()\n )) {\n if (findParentFeatureFlags(element as HTMLElement) !== this) {\n continue;\n }\n\n if (isEnabled) {\n element.setAttribute(flag, '');\n } else {\n element.removeAttribute(flag);\n }\n }\n }\n }\n\n private getParentFeatureFlagsElement() {\n let parent: Node | null = this.parentNode;\n while (parent) {\n if (parent instanceof ShadowRoot) {\n parent = parent.host;\n continue;\n }\n if (parent instanceof FeatureFlagsElement) {\n return parent;\n }\n parent = parent.parentNode;\n }\n return null;\n }\n\n private getParentScope() {\n return this.getParentFeatureFlagsElement()?.getScope() ?? null;\n }\n\n private syncChildFeatureFlagScopes() {\n for (const element of this.querySelectorAll('feature-flags')) {\n if (\n element instanceof FeatureFlagsElement &&\n element.getParentFeatureFlagsElement() === this\n ) {\n element.updateScope();\n }\n }\n }\n\n private updateScope() {\n const newScope = createScope(this.flags);\n const parentScope = this.getParentScope() || GlobalFeatureFlags;\n if (parentScope) {\n newScope.mergeWithScope(parentScope);\n }\n this.scope = newScope;\n this.syncFeatureFlagAttributes();\n this.syncChildFeatureFlagScopes();\n }\n\n render() {\n return html` <slot></slot> `;\n }\n\n public isFeatureFlagEnabled(flag: string) {\n return this.scope.enabled(flag);\n }\n\n private getScope() {\n return this.scope;\n }\n}\n\nexport default FeatureFlagsElement;\n\n// Utility functions\n\n// Function to find the nearest parent FeatureFlagsElement\nexport function findParentFeatureFlags(\n el: HTMLElement\n): FeatureFlagsElement | null {\n let parent: Node | null = el.parentNode;\n while (parent) {\n if (parent instanceof ShadowRoot) {\n parent = parent.host;\n continue;\n }\n if (parent instanceof FeatureFlagsElement) {\n return parent;\n }\n parent = (parent as HTMLElement).parentNode;\n }\n return null;\n}\n\n// function to check if a feature flag is enabled in components\nexport function isFeatureFlagEnabled(\n flag: string,\n context: HTMLElement\n): boolean {\n const instance = findParentFeatureFlags(context);\n return instance?.isFeatureFlagEnabled(flag) ?? false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,UAA4B,KAAQ,QACxC,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG;AAE/C,IAAA,sBAAA,MACM,4BAA4B,WAAW;;;;;0BAOA;GACzC,sBAAsB;GACtB,iCAAiC;GACjC,+BAA+B;GAC/B,2BAA2B;GAC3B,gCAAgC;GAChC,oDAAoD;GACpD,uCAAuC;GACvC,yBAAyB;GACzB,sCAAsC;GACtC,2CAA2C;EAC7C;;CAEA,WAAW,qBAAqB;EAC9B,OAAO,OAAO,KAAA,qBAAyB,gBAAgB;CACzD;CAEA,cAAc;EACZ,MAAM;eAxBQA;eACc,CAAC;EAwB7B,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;CACpC;CAEA,oBAAoB;EAClB,MAAM,kBAAkB;EACxB,KAAK,YAAY;CACnB;CAEA,yBACE,MACA,SACA,QACA;EACA,MAAM,QAAQ,WAAW,QAAQ,WAAW;EAC5C,KAAK,MAAM,QAAQ;EAGnB,MAAM,mBAAmB,OAAA,qBAA2B,kBAAkB,IAAI,IAAA,qBAClD,iBAAiB,QACrC;EACJ,IACE,oBACA,KAAK,mBAAmB,YAAY,kBAEpC,KAAK,kBAAkB,aAAa,MAAM,EAAE;EAG9C,KAAK,YAAY;CACnB;CAEA,4BAAoC;EAClC,KAAK,MAAM,CAAC,MAAM,qBAAqB,OAAO,QAAA,qBACxB,gBACtB,GAAG;GACD,IAAI,CAAC,kBACH;GAGF,IAAI,YAAY;GAChB,IAAI;IACF,YAAY,KAAK,MAAM,QAAQ,IAAI;GACrC,QAAQ;IACN,YAAY;GACd;GAEA,KAAK,MAAM,WAAW,KAAK,iBACzB,iBAAiB,YAAY,CAC/B,GAAG;IACD,IAAI,uBAAuB,OAAsB,MAAM,MACrD;IAGF,IAAI,WACF,QAAQ,aAAa,MAAM,EAAE;SAE7B,QAAQ,gBAAgB,IAAI;GAEhC;EACF;CACF;CAEA,+BAAuC;EACrC,IAAI,SAAsB,KAAK;EAC/B,OAAO,QAAQ;GACb,IAAI,kBAAkB,YAAY;IAChC,SAAS,OAAO;IAChB;GACF;GACA,IAAI,kBAAA,sBACF,OAAO;GAET,SAAS,OAAO;EAClB;EACA,OAAO;CACT;CAEA,iBAAyB;EACvB,OAAO,KAAK,6BAA6B,CAAC,EAAE,SAAS,KAAK;CAC5D;CAEA,6BAAqC;EACnC,KAAK,MAAM,WAAW,KAAK,iBAAiB,eAAe,GACzD,IACE,mBAAA,wBACA,QAAQ,6BAA6B,MAAM,MAE3C,QAAQ,YAAY;CAG1B;CAEA,cAAsB;EACpB,MAAM,WAAW,YAAY,KAAK,KAAK;EACvC,MAAM,cAAc,KAAK,eAAe,KAAKA;EAC7C,IAAI,aACF,SAAS,eAAe,WAAW;EAErC,KAAK,QAAQ;EACb,KAAK,0BAA0B;EAC/B,KAAK,2BAA2B;CAClC;CAEA,SAAS;EACP,OAAO,IAAI;CACb;CAEA,qBAA4B,MAAc;EACxC,OAAO,KAAK,MAAM,QAAQ,IAAI;CAChC;CAEA,WAAmB;EACjB,OAAO,KAAK;CACd;AACF;yDA5ICC,cAAc,eAAe,CAAA,GAAA,mBAAA;AA8I9B,IAAA,wBAAe;AAKf,SAAgB,uBACd,IAC4B;CAC5B,IAAI,SAAsB,GAAG;CAC7B,OAAO,QAAQ;EACb,IAAI,kBAAkB,YAAY;GAChC,SAAS,OAAO;GAChB;EACF;EACA,IAAI,kBAAkB,qBACpB,OAAO;EAET,SAAU,OAAuB;CACnC;CACA,OAAO;AACT;AAGA,SAAgB,qBACd,MACA,SACS;CAET,OADiB,uBAAuB,OAC1B,CAAC,EAAE,qBAAqB,IAAI,KAAK;AACjD"}
|
|
@@ -28,6 +28,7 @@ declare const CDSFileUploaderButton_base: {
|
|
|
28
28
|
* @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.
|
|
29
29
|
*/
|
|
30
30
|
declare class CDSFileUploaderButton extends CDSFileUploaderButton_base {
|
|
31
|
+
private _fileInput;
|
|
31
32
|
/**
|
|
32
33
|
* Handles `click` event on the button.
|
|
33
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader-button.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"file-uploader-button.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAOvE,CAAC;;;;;AAHtB;;;;;GAKG;AACH,cACM,qBAAsB,SAAQ,0BAA6B;IAE/D,OAAO,CAAC,UAAU,CAAoB;IAEtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IAEH,UAAU,cAAuB;IAEjC;;OAEG;IAEH,IAAI,cAAsB;IAE1B;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IAkDN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { FORM_ELEMENT_COLOR_SCHEME } from "../../globals/shared-enums.js";
|
|
|
14
14
|
import if_non_empty_default from "../../globals/directives/if-non-empty.js";
|
|
15
15
|
import file_uploader_default from "./file-uploader.scss.js";
|
|
16
16
|
import { LitElement, html } from "lit";
|
|
17
|
-
import { property } from "lit/decorators.js";
|
|
17
|
+
import { property, query } from "lit/decorators.js";
|
|
18
18
|
import { classMap } from "lit/directives/class-map.js";
|
|
19
19
|
//#region src/components/file-uploader/file-uploader-button.ts
|
|
20
20
|
/**
|
|
@@ -23,6 +23,7 @@ import { classMap } from "lit/directives/class-map.js";
|
|
|
23
23
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
24
24
|
* LICENSE file in the root directory of this source tree.
|
|
25
25
|
*/
|
|
26
|
+
const selectorInput = `.cds--file-input`;
|
|
26
27
|
/**
|
|
27
28
|
* File uploader button .
|
|
28
29
|
*
|
|
@@ -45,18 +46,16 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
|
|
|
45
46
|
*/
|
|
46
47
|
_handleClick(event) {
|
|
47
48
|
event.target.value = null;
|
|
48
|
-
|
|
49
|
-
this
|
|
50
|
-
(this?.shadowRoot?.querySelector(selectorInput)).click();
|
|
49
|
+
this._fileInput.setAttribute("value", "");
|
|
50
|
+
this._fileInput.click();
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
53
|
* Handles `keydown` event on the button.
|
|
54
54
|
*/
|
|
55
55
|
_handleKeyDown(event) {
|
|
56
|
-
const { selectorInput } = this.constructor;
|
|
57
56
|
if (event.key === "Enter" || event.key === "Space") {
|
|
58
|
-
this
|
|
59
|
-
|
|
57
|
+
this._fileInput.setAttribute("value", "");
|
|
58
|
+
this._fileInput.click();
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
/**
|
|
@@ -66,14 +65,13 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
|
|
|
66
65
|
*/
|
|
67
66
|
_handleChange(event) {
|
|
68
67
|
const addedFiles = this._getFiles(event);
|
|
69
|
-
const { eventChange
|
|
68
|
+
const { eventChange } = this.constructor;
|
|
70
69
|
this.dispatchEvent(new CustomEvent(eventChange, {
|
|
71
70
|
bubbles: true,
|
|
72
71
|
composed: true,
|
|
73
72
|
detail: { addedFiles }
|
|
74
73
|
}));
|
|
75
|
-
|
|
76
|
-
if (fileInput) fileInput.value = "";
|
|
74
|
+
this._fileInput.value = "";
|
|
77
75
|
}
|
|
78
76
|
/**
|
|
79
77
|
* @param event The event.
|
|
@@ -134,12 +132,13 @@ let CDSFileUploaderButton = class CDSFileUploaderButton extends HostListenerMixi
|
|
|
134
132
|
* A selector that will return the file `input`.
|
|
135
133
|
*/
|
|
136
134
|
static get selectorInput() {
|
|
137
|
-
return
|
|
135
|
+
return selectorInput;
|
|
138
136
|
}
|
|
139
137
|
static {
|
|
140
138
|
this.styles = file_uploader_default;
|
|
141
139
|
}
|
|
142
140
|
};
|
|
141
|
+
__decorate([query(selectorInput)], CDSFileUploaderButton.prototype, "_fileInput", void 0);
|
|
143
142
|
__decorate([property({
|
|
144
143
|
reflect: true,
|
|
145
144
|
attribute: "button-kind"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader-button.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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 { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { BUTTON_KIND, BUTTON_SIZE } from '../button/defs';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\n/**\n * File uploader button .\n *\n * @element cds-file-uploader-button\n * @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-button`)\nclass CDSFileUploaderButton extends HostListenerMixin(LitElement) {\n /**\n * Handles `click` event on the button.\n */\n private _handleClick(event) {\n event.target.value = null;\n
|
|
1
|
+
{"version":3,"file":"file-uploader-button.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-button.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { BUTTON_KIND, BUTTON_SIZE } from '../button/defs';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\nconst selectorInput = `.${prefix}--file-input`;\n\n/**\n * File uploader button .\n *\n * @element cds-file-uploader-button\n * @fires cds-file-uploader-button-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-button`)\nclass CDSFileUploaderButton extends HostListenerMixin(LitElement) {\n @query(selectorInput)\n private _fileInput!: HTMLInputElement;\n\n /**\n * Handles `click` event on the button.\n */\n private _handleClick(event) {\n event.target.value = null;\n this._fileInput.setAttribute('value', '');\n this._fileInput.click();\n }\n\n /**\n * Handles `keydown` event on the button.\n */\n private _handleKeyDown(event) {\n if (event.key === 'Enter' || event.key === 'Space') {\n this._fileInput.setAttribute('value', '');\n this._fileInput.click();\n }\n }\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const addedFiles = this._getFiles(event);\n const { eventChange } = this.constructor as typeof CDSFileUploaderButton;\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n this._fileInput.value = '';\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event: Event | DragEvent) {\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * Button kind.\n */\n @property({ reflect: true, attribute: 'button-kind' })\n buttonKind = BUTTON_KIND.PRIMARY;\n\n /**\n * Button size.\n */\n @property({ reflect: true })\n size = BUTTON_SIZE.MEDIUM;\n\n /**\n * The file types the file input should accept, separated by space.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n buttonKind,\n size,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const buttonClasses = classMap({\n [`${prefix}--btn`]: true,\n [`${prefix}--btn--${buttonKind}`]: buttonKind,\n [`${prefix}--layout--size-${size}`]: size,\n [`${prefix}--btn--disabled`]: disabled,\n [`${prefix}--btn--${size}`]: size,\n });\n return html`\n <button\n type=\"button\"\n class=\"${buttonClasses}\"\n @click=\"${this._handleClick}\"\n @keydown=\"${this._handleKeyDown}\">\n <slot></slot>\n </button>\n <label class=\"${labelClasses}\" for=\"file\"> </label>\n <input\n id=\"file\"\n type=\"file\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n name=\"${ifNonEmpty(name)}\"\n @change=\"${handleChange}\" />\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-button-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return selectorInput;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderButton;\n"],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ declare const CDSFileUploaderDropContainer_base: {
|
|
|
27
27
|
* @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.
|
|
28
28
|
*/
|
|
29
29
|
declare class CDSFileUploaderDropContainer extends CDSFileUploaderDropContainer_base {
|
|
30
|
+
private _fileInput;
|
|
30
31
|
/**
|
|
31
32
|
* `true` to show the active state of this UI.
|
|
32
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader-drop-container.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"file-uploader-drop-container.d.ts","sourceRoot":"","sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AASvC,OAAO,EAAE,yBAAyB,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;uBAKlD,CAAC;;;;;AAO3C;;;;;GAKG;AACH,cACM,4BAA6B,SAAQ,iCAA6B;IAEtE,OAAO,CAAC,UAAU,CAAoB;IAEtC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAsBrB;;;;OAIG;IAMH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAuBjB;;OAEG;IAEH,MAAM,SAAM;IAEZ;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,IAAI,SAAoB;IAExB,MAAM;IA0CN;;OAEG;IACH,MAAM,KAAK,WAAW,WAErB;IAED;;OAEG;IACH,MAAM,KAAK,aAAa,WAEvB;IAED,MAAM,CAAC,MAAM,MAAU;CACxB;AAED,eAAe,4BAA4B,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { FORM_ELEMENT_COLOR_SCHEME } from "../../globals/shared-enums.js";
|
|
|
14
14
|
import if_non_empty_default from "../../globals/directives/if-non-empty.js";
|
|
15
15
|
import file_uploader_default from "./file-uploader.scss.js";
|
|
16
16
|
import { LitElement, html } from "lit";
|
|
17
|
-
import { property } from "lit/decorators.js";
|
|
17
|
+
import { property, query } from "lit/decorators.js";
|
|
18
18
|
import { classMap } from "lit/directives/class-map.js";
|
|
19
19
|
//#region src/components/file-uploader/file-uploader-drop-container.ts
|
|
20
20
|
/**
|
|
@@ -23,6 +23,7 @@ import { classMap } from "lit/directives/class-map.js";
|
|
|
23
23
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
24
24
|
* LICENSE file in the root directory of this source tree.
|
|
25
25
|
*/
|
|
26
|
+
const selectorInput = `.cds--file-input`;
|
|
26
27
|
/**
|
|
27
28
|
* The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.
|
|
28
29
|
*/
|
|
@@ -52,7 +53,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
|
|
|
52
53
|
* @param event The event.
|
|
53
54
|
*/
|
|
54
55
|
_handleChange(event) {
|
|
55
|
-
const { eventChange
|
|
56
|
+
const { eventChange } = this.constructor;
|
|
56
57
|
const { files } = (event.type === "drop" ? event.dataTransfer : event.target) ?? {};
|
|
57
58
|
const addedFiles = this._getFiles(event, files);
|
|
58
59
|
this.dispatchEvent(new CustomEvent(eventChange, {
|
|
@@ -60,8 +61,7 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
|
|
|
60
61
|
composed: true,
|
|
61
62
|
detail: { addedFiles }
|
|
62
63
|
}));
|
|
63
|
-
|
|
64
|
-
if (fileInput) fileInput.value = "";
|
|
64
|
+
this._fileInput.value = "";
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* Handles `dragover`, `dragleave` and `drop` events.
|
|
@@ -129,12 +129,13 @@ let CDSFileUploaderDropContainer = class CDSFileUploaderDropContainer extends Ho
|
|
|
129
129
|
* A selector that will return the file `input`.
|
|
130
130
|
*/
|
|
131
131
|
static get selectorInput() {
|
|
132
|
-
return
|
|
132
|
+
return selectorInput;
|
|
133
133
|
}
|
|
134
134
|
static {
|
|
135
135
|
this.styles = file_uploader_default;
|
|
136
136
|
}
|
|
137
137
|
};
|
|
138
|
+
__decorate([query(selectorInput)], CDSFileUploaderDropContainer.prototype, "_fileInput", void 0);
|
|
138
139
|
__decorate([
|
|
139
140
|
HostListener("dragover"),
|
|
140
141
|
HostListener("dragleave"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader-drop-container.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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 HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\n/**\n * The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.\n */\nconst dropEffects = {\n dragover: 'copy',\n dragleave: 'move',\n};\n\n/**\n * File uploader drop container.\n *\n * @element cds-file-uploader-drop-container\n * @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-drop-container`)\nclass CDSFileUploaderDropContainer extends HostListenerMixin(LitElement) {\n /**\n * `true` to show the active state of this UI.\n */\n private _active = false;\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const { eventChange
|
|
1
|
+
{"version":3,"file":"file-uploader-drop-container.js","names":["ifNonEmpty","styles","customElement"],"sources":["../../../src/components/file-uploader/file-uploader-drop-container.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport ifNonEmpty from '../../globals/directives/if-non-empty';\nimport styles from './file-uploader.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { FORM_ELEMENT_COLOR_SCHEME as TILE_COLOR_SCHEME } from '../../globals/shared-enums';\n\nconst selectorInput = `.${prefix}--file-input`;\n\n/**\n * The value to set to `event.dataTransfer.dropEffect`, keyed by the event nane.\n */\nconst dropEffects = {\n dragover: 'copy',\n dragleave: 'move',\n};\n\n/**\n * File uploader drop container.\n *\n * @element cds-file-uploader-drop-container\n * @fires cds-file-uploader-drop-container-changed The custom event fired when there is a user gesture to select files to upload.\n */\n@customElement(`${prefix}-file-uploader-drop-container`)\nclass CDSFileUploaderDropContainer extends HostListenerMixin(LitElement) {\n @query(selectorInput)\n private _fileInput!: HTMLInputElement;\n\n /**\n * `true` to show the active state of this UI.\n */\n private _active = false;\n\n /**\n * Handles user gesture to select files to upload.\n *\n * @param event The event.\n */\n private _handleChange(event: Event | DragEvent) {\n const { eventChange } = this\n .constructor as typeof CDSFileUploaderDropContainer;\n const { files } =\n (event.type === 'drop'\n ? (event as DragEvent).dataTransfer\n : (event.target as HTMLInputElement)) ?? {};\n const addedFiles = this._getFiles(event, files);\n\n this.dispatchEvent(\n new CustomEvent(eventChange, {\n bubbles: true,\n composed: true,\n detail: {\n addedFiles,\n },\n })\n );\n\n this._fileInput.value = ''; // carbon-web-components#904\n }\n\n /**\n * Handles `dragover`, `dragleave` and `drop` events.\n *\n * @param event The event.\n */\n @HostListener('dragover')\n @HostListener('dragleave')\n @HostListener('drop')\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 _handleDrag(event: DragEvent) {\n event.preventDefault(); // Prevents page navigation upon dropping\n if (this.disabled) {\n return;\n }\n const { dataTransfer, type } = event;\n const dropEffect = dropEffects[type];\n if (dataTransfer && dropEffect) {\n dataTransfer.dropEffect = dropEffect;\n }\n this._active = type === 'dragover';\n if (type === 'drop') {\n this._handleChange(event);\n }\n this.requestUpdate();\n }\n\n /**\n * @param event The event.\n * @returns The list of files user chose to upload.\n */\n private _getFiles(event, files) {\n const { accept } = this;\n if (!accept || !/^(change|drop)$/.test(event.type)) {\n return Array.from(files ?? []);\n }\n const acceptedTypes = new Set(accept.split(/[\\s,]+/).filter(Boolean));\n return Array.prototype.filter.call(\n files,\n ({ name, type: mimeType = '' }) => {\n const fileExtensionRegExp = /\\.[^.]+$/;\n const hasFileExtension = fileExtensionRegExp.test(name);\n const [fileExtension] = !hasFileExtension\n ? [undefined]\n : (fileExtensionRegExp.exec(name) ?? []);\n\n return (\n acceptedTypes.has(mimeType) ||\n (fileExtension && acceptedTypes.has(fileExtension))\n );\n }\n ) as File[];\n }\n\n /**\n * The file types the file input should accept, separated by spaces and/or commas.\n */\n @property()\n accept = '';\n\n /**\n * `true` if this drop container should be disabled.\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * `true` if this drop container should accept more than one files at once.\n * Note that even with `false` set here, user _can_ select multiple files one by one.\n */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /**\n * The name of the input.\n */\n @property({ reflect: true })\n name = '';\n\n /**\n * The shadow DOM slot to put this drop container in.\n */\n @property({ reflect: true })\n slot = 'drop-container';\n\n render() {\n const {\n accept,\n disabled,\n multiple,\n name,\n _active: active,\n _handleChange: handleChange,\n } = this;\n const acceptForInput = accept\n ? accept\n .split(/[\\s,]+/)\n .filter(Boolean)\n .join(',')\n : '';\n const labelClasses = classMap({\n [`${prefix}--file-browse-btn`]: true,\n [`${prefix}--file-browse-btn--disabled`]: disabled,\n });\n const dropareaClasses = classMap({\n [`${prefix}--file__drop-container`]: true,\n [`${prefix}--file__drop-container--drag-over`]: active,\n });\n return html`\n <label class=\"${labelClasses}\" for=\"file\" tabindex=\"0\">\n <div class=\"${dropareaClasses}\" role=\"button\">\n <slot></slot>\n <input\n id=\"file\"\n type=\"file\"\n name=\"${ifNonEmpty(name)}\"\n class=\"${prefix}--file-input\"\n tabindex=\"-1\"\n accept=\"${ifNonEmpty(acceptForInput)}\"\n ?disabled=\"${disabled}\"\n ?multiple=\"${multiple}\"\n @change=\"${handleChange}\" />\n </div>\n </label>\n `;\n }\n\n /**\n * The name of the custom event fired when there is a user gesture to select files to upload.\n */\n static get eventChange() {\n return `${prefix}-file-uploader-drop-container-changed`;\n }\n\n /**\n * A selector that will return the file `input`.\n */\n static get selectorInput() {\n return selectorInput;\n }\n\n static styles = styles;\n}\n\nexport default CDSFileUploaderDropContainer;\n"],"mappings":"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"}
|