@carbon/web-components 2.61.0 → 2.62.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 +455 -13
- package/es/components/accordion/accordion-item.d.ts +0 -4
- package/es/components/accordion/accordion-item.d.ts.map +1 -1
- package/es/components/accordion/accordion-item.js +2 -6
- package/es/components/accordion/accordion-item.js.map +1 -1
- package/es/components/action-set/action-set.d.ts +107 -0
- package/es/components/action-set/action-set.d.ts.map +1 -0
- package/es/components/action-set/action-set.js +269 -0
- package/es/components/action-set/action-set.js.map +1 -0
- package/es/components/action-set/action-set.scss.js +14 -0
- package/es/components/action-set/action-set.scss.js.map +1 -0
- package/es/components/action-set/index.d.ts +9 -0
- package/es/components/action-set/index.d.ts.map +1 -0
- package/es/components/action-set/index.js +8 -0
- 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.d.ts.map +1 -1
- package/es/components/button/button.js +7 -2
- package/es/components/button/button.js.map +1 -1
- package/es/components/button/button.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/date-picker/date-picker.scss.js +1 -1
- package/es/components/date-picker/date-picker.scss.js.map +1 -1
- package/es/components/date-picker/next/components/date-picker.scss.js +1 -1
- package/es/components/dialog/dialog.scss.js +1 -1
- package/es/components/dropdown/dropdown.scss.js +1 -1
- package/es/components/file-uploader/file-uploader.scss.js +1 -1
- package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
- package/es/components/fluid-date-picker/fluid-date-picker.scss.js +1 -1
- package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- 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-password-input/fluid-password-input.scss.js +1 -1
- package/es/components/fluid-search/fluid-search.scss.js +1 -1
- package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
- package/es/components/inline-loading/inline-loading.scss.js +1 -1
- package/es/components/loading/loading.scss.js +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/multi-select/multi-select.scss.js +1 -1
- package/es/components/notification/actionable-notification.scss.js +1 -1
- package/es/components/notification/inline-notification.scss.js +1 -1
- package/es/components/notification/toast-notification.scss.js +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es/components/overflow-menu/overflow-menu.scss.js.map +1 -1
- package/es/components/pagination/pagination.scss.js +1 -1
- package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
- package/es/components/password-input/password-input.scss.js +1 -1
- package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es/components/resizer/defs.d.ts +73 -0
- package/es/components/resizer/defs.d.ts.map +1 -0
- package/es/components/resizer/defs.js +97 -0
- package/es/components/resizer/defs.js.map +1 -0
- package/es/components/resizer/index.d.ts +11 -0
- package/es/components/resizer/index.d.ts.map +1 -0
- package/es/components/resizer/index.js +11 -0
- package/es/components/resizer/resizer-grid.d.ts +22 -0
- package/es/components/resizer/resizer-grid.d.ts.map +1 -0
- package/es/components/resizer/resizer-grid.js +44 -0
- package/es/components/resizer/resizer-grid.js.map +1 -0
- package/es/components/resizer/resizer-grid.scss.js +14 -0
- package/es/components/resizer/resizer-grid.scss.js.map +1 -0
- package/es/components/resizer/resizer-handle-pivot.d.ts +31 -0
- package/es/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
- package/es/components/resizer/resizer-handle-pivot.js +93 -0
- package/es/components/resizer/resizer-handle-pivot.js.map +1 -0
- package/es/components/resizer/resizer-handle-pivot.scss.js +14 -0
- package/es/components/resizer/resizer-handle-pivot.scss.js.map +1 -0
- package/es/components/resizer/resizer-handle.d.ts +64 -0
- package/es/components/resizer/resizer-handle.d.ts.map +1 -0
- package/es/components/resizer/resizer-handle.js +350 -0
- package/es/components/resizer/resizer-handle.js.map +1 -0
- package/es/components/resizer/resizer-handle.scss.js +14 -0
- package/es/components/resizer/resizer-handle.scss.js.map +1 -0
- package/es/components/resizer/resizer-panel.d.ts +22 -0
- package/es/components/resizer/resizer-panel.d.ts.map +1 -0
- package/es/components/resizer/resizer-panel.js +37 -0
- package/es/components/resizer/resizer-panel.js.map +1 -0
- package/es/components/resizer/resizer-panel.scss.js +14 -0
- package/es/components/resizer/resizer-panel.scss.js.map +1 -0
- package/es/components/search/search.scss.js +1 -1
- package/es/components/side-panel/_story-assets/index.d.ts +9 -0
- package/es/components/side-panel/_story-assets/index.d.ts.map +1 -0
- package/es/components/side-panel/_story-assets/index.js +246 -0
- package/es/components/side-panel/_story-assets/index.js.map +1 -0
- package/es/components/side-panel/defs.d.ts +7 -1
- package/es/components/side-panel/defs.d.ts.map +1 -1
- package/es/components/side-panel/defs.js +7 -1
- package/es/components/side-panel/defs.js.map +1 -1
- package/es/components/side-panel/index.d.ts +3 -1
- package/es/components/side-panel/index.d.ts.map +1 -1
- package/es/components/side-panel/index.js +12 -0
- package/es/components/side-panel/index.js.map +1 -0
- package/es/components/side-panel/side-panel.d.ts +60 -22
- package/es/components/side-panel/side-panel.d.ts.map +1 -1
- package/es/components/side-panel/side-panel.js +268 -126
- package/es/components/side-panel/side-panel.js.map +1 -1
- package/es/components/side-panel/side-panel.scss.js +14 -0
- package/es/components/side-panel/side-panel.scss.js.map +1 -0
- package/es/components/side-panel/story-styles.scss.js +14 -0
- package/es/components/side-panel/story-styles.scss.js.map +1 -0
- package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es/components/slider/slider.d.ts +14 -0
- package/es/components/slider/slider.d.ts.map +1 -1
- package/es/components/slider/slider.js +40 -5
- 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/structured-list/structured-list.scss.js +1 -1
- package/es/components/structured-list/structured-list.scss.js.map +1 -1
- package/es/components/tabs/tab.d.ts.map +1 -1
- package/es/components/tabs/tab.js +4 -1
- package/es/components/tabs/tab.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/tag/tag.scss.js.map +1 -1
- package/es/components/text-input/text-input.scss.js +1 -1
- package/es/components/textarea/textarea.scss.js +1 -1
- package/es/components/textarea/textarea.scss.js.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/tree-view/tree-view.scss.js +1 -1
- package/es/components/truncated-text/index.d.ts +8 -0
- package/es/components/truncated-text/index.d.ts.map +1 -0
- package/es/components/truncated-text/index.js +8 -0
- package/es/components/truncated-text/truncated-text.d.ts +77 -0
- package/es/components/truncated-text/truncated-text.d.ts.map +1 -0
- package/es/components/truncated-text/truncated-text.js +216 -0
- package/es/components/truncated-text/truncated-text.js.map +1 -0
- package/es/components/truncated-text/truncated-text.scss.js +14 -0
- package/es/components/truncated-text/truncated-text.scss.js.map +1 -0
- package/es/components/ui-shell/header.scss.js +1 -1
- package/es/components/ui-shell/side-nav.scss.js +1 -1
- package/es/components/ui-shell/side-nav.scss.js.map +1 -1
- package/es/globals/internal/icon-loader-utils.d.ts +2 -2
- package/es/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/es/globals/internal/icon-loader-utils.js +1 -1
- package/es/globals/internal/icon-loader-utils.js.map +1 -1
- package/es/index.d.ts.map +1 -1
- package/es-custom/components/accordion/accordion-item.d.ts +0 -4
- package/es-custom/components/accordion/accordion-item.d.ts.map +1 -1
- package/es-custom/components/accordion/accordion-item.js +2 -6
- package/es-custom/components/accordion/accordion-item.js.map +1 -1
- package/es-custom/components/action-set/action-set.d.ts +107 -0
- package/es-custom/components/action-set/action-set.d.ts.map +1 -0
- package/es-custom/components/action-set/action-set.js +269 -0
- package/es-custom/components/action-set/action-set.js.map +1 -0
- package/es-custom/components/action-set/action-set.scss.js +14 -0
- package/es-custom/components/action-set/action-set.scss.js.map +1 -0
- package/es-custom/components/action-set/index.d.ts +9 -0
- package/es-custom/components/action-set/index.d.ts.map +1 -0
- package/es-custom/components/action-set/index.js +8 -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.d.ts.map +1 -1
- package/es-custom/components/button/button.js +7 -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/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/date-picker/date-picker.scss.js +1 -1
- package/es-custom/components/date-picker/date-picker.scss.js.map +1 -1
- package/es-custom/components/date-picker/next/components/date-picker.scss.js +1 -1
- package/es-custom/components/dialog/dialog.scss.js +1 -1
- package/es-custom/components/dropdown/dropdown.scss.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.scss.js +1 -1
- package/es-custom/components/fluid-date-picker/fluid-date-picker.scss.js +1 -1
- package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
- 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-password-input/fluid-password-input.scss.js +1 -1
- package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
- package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
- package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
- package/es-custom/components/inline-loading/inline-loading.scss.js +1 -1
- package/es-custom/components/loading/loading.scss.js +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/multi-select/multi-select.scss.js +1 -1
- package/es-custom/components/notification/actionable-notification.scss.js +1 -1
- package/es-custom/components/notification/inline-notification.scss.js +1 -1
- package/es-custom/components/notification/toast-notification.scss.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
- package/es-custom/components/overflow-menu/overflow-menu.scss.js.map +1 -1
- package/es-custom/components/pagination/pagination.scss.js +1 -1
- package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
- package/es-custom/components/password-input/password-input.scss.js +1 -1
- package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
- package/es-custom/components/resizer/defs.d.ts +73 -0
- package/es-custom/components/resizer/defs.d.ts.map +1 -0
- package/es-custom/components/resizer/defs.js +97 -0
- package/es-custom/components/resizer/defs.js.map +1 -0
- package/es-custom/components/resizer/index.d.ts +11 -0
- package/es-custom/components/resizer/index.d.ts.map +1 -0
- package/es-custom/components/resizer/index.js +11 -0
- package/es-custom/components/resizer/resizer-grid.d.ts +22 -0
- package/es-custom/components/resizer/resizer-grid.d.ts.map +1 -0
- package/es-custom/components/resizer/resizer-grid.js +44 -0
- package/es-custom/components/resizer/resizer-grid.js.map +1 -0
- package/es-custom/components/resizer/resizer-grid.scss.js +14 -0
- package/es-custom/components/resizer/resizer-grid.scss.js.map +1 -0
- package/es-custom/components/resizer/resizer-handle-pivot.d.ts +31 -0
- package/es-custom/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
- package/es-custom/components/resizer/resizer-handle-pivot.js +93 -0
- package/es-custom/components/resizer/resizer-handle-pivot.js.map +1 -0
- package/es-custom/components/resizer/resizer-handle-pivot.scss.js +14 -0
- package/es-custom/components/resizer/resizer-handle-pivot.scss.js.map +1 -0
- package/es-custom/components/resizer/resizer-handle.d.ts +64 -0
- package/es-custom/components/resizer/resizer-handle.d.ts.map +1 -0
- package/es-custom/components/resizer/resizer-handle.js +350 -0
- package/es-custom/components/resizer/resizer-handle.js.map +1 -0
- package/es-custom/components/resizer/resizer-handle.scss.js +14 -0
- package/es-custom/components/resizer/resizer-handle.scss.js.map +1 -0
- package/es-custom/components/resizer/resizer-panel.d.ts +22 -0
- package/es-custom/components/resizer/resizer-panel.d.ts.map +1 -0
- package/es-custom/components/resizer/resizer-panel.js +37 -0
- package/es-custom/components/resizer/resizer-panel.js.map +1 -0
- package/es-custom/components/resizer/resizer-panel.scss.js +14 -0
- package/es-custom/components/resizer/resizer-panel.scss.js.map +1 -0
- package/es-custom/components/search/search.scss.js +1 -1
- package/es-custom/components/side-panel/_story-assets/index.d.ts +9 -0
- package/es-custom/components/side-panel/_story-assets/index.d.ts.map +1 -0
- package/es-custom/components/side-panel/_story-assets/index.js +246 -0
- package/es-custom/components/side-panel/_story-assets/index.js.map +1 -0
- package/es-custom/components/side-panel/defs.d.ts +7 -1
- package/es-custom/components/side-panel/defs.d.ts.map +1 -1
- package/es-custom/components/side-panel/defs.js +7 -1
- package/es-custom/components/side-panel/defs.js.map +1 -1
- package/es-custom/components/side-panel/index.d.ts +3 -1
- package/es-custom/components/side-panel/index.d.ts.map +1 -1
- package/es-custom/components/side-panel/index.js +12 -0
- package/es-custom/components/side-panel/index.js.map +1 -0
- package/es-custom/components/side-panel/side-panel.d.ts +60 -22
- package/es-custom/components/side-panel/side-panel.d.ts.map +1 -1
- package/es-custom/components/side-panel/side-panel.js +268 -126
- package/es-custom/components/side-panel/side-panel.js.map +1 -1
- package/es-custom/components/side-panel/side-panel.scss.js +14 -0
- package/es-custom/components/side-panel/side-panel.scss.js.map +1 -0
- package/es-custom/components/side-panel/story-styles.scss.js +14 -0
- package/es-custom/components/side-panel/story-styles.scss.js.map +1 -0
- package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
- package/es-custom/components/slider/slider.d.ts +14 -0
- package/es-custom/components/slider/slider.d.ts.map +1 -1
- package/es-custom/components/slider/slider.js +40 -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/slug/slug.scss.js +1 -1
- package/es-custom/components/structured-list/structured-list.scss.js +1 -1
- package/es-custom/components/structured-list/structured-list.scss.js.map +1 -1
- package/es-custom/components/tabs/tab.d.ts.map +1 -1
- package/es-custom/components/tabs/tab.js +4 -1
- package/es-custom/components/tabs/tab.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/tag/tag.scss.js.map +1 -1
- package/es-custom/components/text-input/text-input.scss.js +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/time-picker/time-picker.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tree-view/tree-view.scss.js +1 -1
- package/es-custom/components/truncated-text/index.d.ts +8 -0
- package/es-custom/components/truncated-text/index.d.ts.map +1 -0
- package/es-custom/components/truncated-text/index.js +8 -0
- package/es-custom/components/truncated-text/truncated-text.d.ts +77 -0
- package/es-custom/components/truncated-text/truncated-text.d.ts.map +1 -0
- package/es-custom/components/truncated-text/truncated-text.js +216 -0
- package/es-custom/components/truncated-text/truncated-text.js.map +1 -0
- package/es-custom/components/truncated-text/truncated-text.scss.js +14 -0
- package/es-custom/components/truncated-text/truncated-text.scss.js.map +1 -0
- package/es-custom/components/ui-shell/header.scss.js +1 -1
- package/es-custom/components/ui-shell/side-nav.scss.js +1 -1
- package/es-custom/components/ui-shell/side-nav.scss.js.map +1 -1
- package/es-custom/globals/internal/icon-loader-utils.d.ts +2 -2
- package/es-custom/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/es-custom/globals/internal/icon-loader-utils.js +1 -1
- package/es-custom/globals/internal/icon-loader-utils.js.map +1 -1
- package/es-custom/index.d.ts.map +1 -1
- package/lib/components/accordion/accordion-item.d.ts +0 -4
- package/lib/components/accordion/accordion-item.d.ts.map +1 -1
- package/lib/components/action-set/action-set.d.ts +107 -0
- package/lib/components/action-set/action-set.d.ts.map +1 -0
- package/lib/components/action-set/index.d.ts +9 -0
- package/lib/components/action-set/index.d.ts.map +1 -0
- package/lib/components/button/button.d.ts.map +1 -1
- package/lib/components/resizer/defs.d.ts +73 -0
- package/lib/components/resizer/defs.d.ts.map +1 -0
- package/lib/components/resizer/defs.js +112 -0
- package/lib/components/resizer/defs.js.map +1 -0
- package/lib/components/resizer/index.d.ts +11 -0
- package/lib/components/resizer/index.d.ts.map +1 -0
- package/lib/components/resizer/resizer-grid.d.ts +22 -0
- package/lib/components/resizer/resizer-grid.d.ts.map +1 -0
- package/lib/components/resizer/resizer-handle-pivot.d.ts +31 -0
- package/lib/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
- package/lib/components/resizer/resizer-handle.d.ts +64 -0
- package/lib/components/resizer/resizer-handle.d.ts.map +1 -0
- package/lib/components/resizer/resizer-panel.d.ts +22 -0
- package/lib/components/resizer/resizer-panel.d.ts.map +1 -0
- package/lib/components/side-panel/_story-assets/index.d.ts +9 -0
- package/lib/components/side-panel/_story-assets/index.d.ts.map +1 -0
- package/lib/components/side-panel/defs.d.ts +7 -1
- package/lib/components/side-panel/defs.d.ts.map +1 -1
- package/lib/components/side-panel/defs.js +7 -1
- package/lib/components/side-panel/defs.js.map +1 -1
- package/lib/components/side-panel/index.d.ts +3 -1
- package/lib/components/side-panel/index.d.ts.map +1 -1
- package/lib/components/side-panel/side-panel.d.ts +60 -22
- package/lib/components/side-panel/side-panel.d.ts.map +1 -1
- package/lib/components/slider/slider.d.ts +14 -0
- package/lib/components/slider/slider.d.ts.map +1 -1
- package/lib/components/tabs/tab.d.ts.map +1 -1
- package/lib/components/truncated-text/index.d.ts +8 -0
- package/lib/components/truncated-text/index.d.ts.map +1 -0
- package/lib/components/truncated-text/truncated-text.d.ts +77 -0
- package/lib/components/truncated-text/truncated-text.d.ts.map +1 -0
- package/lib/globals/internal/icon-loader-utils.d.ts +2 -2
- package/lib/globals/internal/icon-loader-utils.d.ts.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/package.json +7 -7
- package/scss/components/action-set/action-set.scss +93 -0
- package/scss/components/data-table/_table-core.scss +73 -20
- package/scss/components/data-table/_table-selection.scss +31 -14
- package/scss/components/date-picker/date-picker.scss +10 -6
- package/scss/components/overflow-menu/overflow-menu.scss +31 -11
- package/scss/components/resizer/resizer-grid.scss +34 -0
- package/scss/components/resizer/resizer-handle-pivot.scss +39 -0
- package/scss/components/resizer/resizer-handle.scss +127 -0
- package/scss/components/resizer/resizer-panel.scss +10 -0
- package/scss/components/side-panel/side-panel.scss +363 -0
- package/scss/components/side-panel/story-styles.scss +51 -0
- package/scss/components/structured-list/structured-list.scss +10 -8
- package/scss/components/tabs/tabs.scss +4 -0
- package/scss/components/tag/tag.scss +11 -7
- package/scss/components/textarea/textarea.scss +6 -0
- package/scss/components/truncated-text/truncated-text-story.scss +14 -0
- package/scss/components/truncated-text/truncated-text.scss +122 -0
- package/scss/components/ui-shell/side-nav.scss +9 -7
- package/telemetry.yml +26 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2025, 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 '../tooltip/index';
|
|
9
|
+
export declare const blockClass = "cds-custom--truncated-text";
|
|
10
|
+
declare const elementName = "cds-custom-truncated-text";
|
|
11
|
+
/**
|
|
12
|
+
* TruncatedText.
|
|
13
|
+
*
|
|
14
|
+
* @element cds-custom-truncated-text
|
|
15
|
+
*/
|
|
16
|
+
export declare class CDSTruncatedText extends LitElement {
|
|
17
|
+
/**
|
|
18
|
+
* Specify how the tooltip should align with the content.
|
|
19
|
+
*/
|
|
20
|
+
align: string;
|
|
21
|
+
/**
|
|
22
|
+
* Specify whether a auto align functionality should be applied
|
|
23
|
+
*/
|
|
24
|
+
autoalign: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The label on the collapse button.
|
|
27
|
+
*/
|
|
28
|
+
collapseLabel: string;
|
|
29
|
+
/**
|
|
30
|
+
* The label on expand button.
|
|
31
|
+
*/
|
|
32
|
+
expandLabel: string;
|
|
33
|
+
/**
|
|
34
|
+
* Unique identifier for the element.
|
|
35
|
+
*/
|
|
36
|
+
id: string;
|
|
37
|
+
/**
|
|
38
|
+
* The maximum number of lines to display before truncation.
|
|
39
|
+
* Defaults to `0` (no truncation applied). Note: the React counterpart
|
|
40
|
+
* defaults to `2` — consumers migrating from React should set this explicitly.
|
|
41
|
+
*/
|
|
42
|
+
lines: number;
|
|
43
|
+
/**
|
|
44
|
+
* The method to display the full text when truncated. Options are "tooltip" or "expand". if not passed, the text would just be truncated with ellipsis.
|
|
45
|
+
*/
|
|
46
|
+
type: 'tooltip' | 'expand';
|
|
47
|
+
/**
|
|
48
|
+
* The string value to be truncated.
|
|
49
|
+
*/
|
|
50
|
+
value: string;
|
|
51
|
+
private _isOverflowing;
|
|
52
|
+
private _isExpanded;
|
|
53
|
+
private _maxHeight;
|
|
54
|
+
private _textElement;
|
|
55
|
+
private _lineHeight;
|
|
56
|
+
private _isLayered;
|
|
57
|
+
private _resizeObserver?;
|
|
58
|
+
static styles: any;
|
|
59
|
+
connectedCallback(): void;
|
|
60
|
+
disconnectedCallback(): void;
|
|
61
|
+
protected firstUpdated(): void;
|
|
62
|
+
protected updated(changed: Map<string, unknown>): void;
|
|
63
|
+
private _updateMaxHeight;
|
|
64
|
+
private _setupResizeObserver;
|
|
65
|
+
private _updateOverflowStatus;
|
|
66
|
+
private _handleKeydown;
|
|
67
|
+
private _toggleExpansion;
|
|
68
|
+
private _renderToggleButton;
|
|
69
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
70
|
+
}
|
|
71
|
+
declare global {
|
|
72
|
+
interface HTMLElementTagNameMap {
|
|
73
|
+
[elementName]: CDSTruncatedText;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export default CDSTruncatedText;
|
|
77
|
+
//# sourceMappingURL=truncated-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncated-text.d.ts","sourceRoot":"","sources":["../../../src/components/truncated-text/truncated-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,kBAAkB,CAAC;AAK1B,eAAO,MAAM,UAAU,wBAAgC,CAAC;AACxD,QAAA,MAAM,WAAW,uBAA+B,CAAC;AAEjD;;;;GAIG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAC9C;;OAEG;IAEH,KAAK,SAAS;IAEd;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,aAAa,SAAM;IAEnB;;OAEG;IAEH,WAAW,SAAM;IAEjB;;OAEG;IAEH,EAAE,SAAM;IAER;;;;OAIG;IAEH,KAAK,SAAK;IAEV;;OAEG;IAEH,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAa;IAEvC;;OAEG;IAEH,KAAK,SAAM;IAEF,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAkB;IAEZ,OAAO,CAAC,YAAY,CAAe;IACpE,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,MAAM,CAAC,MAAM,MAAU;IAEvB,iBAAiB;IAMjB,oBAAoB;IAKpB,SAAS,CAAC,YAAY;IAQtB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAO/C,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,mBAAmB;IAsB3B,MAAM;CA2CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;KACjC;CACF;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,216 @@
|
|
|
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 { carbonElement } from "../../globals/decorators/carbon-element.js";
|
|
10
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
|
|
11
|
+
import "../tooltip/index.js";
|
|
12
|
+
import truncated_text_default$1 from "./truncated-text.scss.js";
|
|
13
|
+
import { LitElement, html } from "lit";
|
|
14
|
+
import { property, query, state } from "lit/decorators.js";
|
|
15
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
16
|
+
import { styleMap } from "lit/directives/style-map.js";
|
|
17
|
+
//#region src/components/truncated-text/truncated-text.ts
|
|
18
|
+
/**
|
|
19
|
+
* Copyright IBM Corp. 2025, 2026
|
|
20
|
+
*
|
|
21
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
22
|
+
* LICENSE file in the root directory of this source tree.
|
|
23
|
+
*/
|
|
24
|
+
const componentName = "truncated-text";
|
|
25
|
+
const blockClass = `cds-custom--${componentName}`;
|
|
26
|
+
const elementName = `cds-custom-${componentName}`;
|
|
27
|
+
let CDSTruncatedText = class CDSTruncatedText extends LitElement {
|
|
28
|
+
constructor(..._args) {
|
|
29
|
+
super(..._args);
|
|
30
|
+
this.align = "top";
|
|
31
|
+
this.autoalign = false;
|
|
32
|
+
this.collapseLabel = "";
|
|
33
|
+
this.expandLabel = "";
|
|
34
|
+
this.id = "";
|
|
35
|
+
this.lines = 0;
|
|
36
|
+
this.type = "tooltip";
|
|
37
|
+
this.value = "";
|
|
38
|
+
this._isOverflowing = false;
|
|
39
|
+
this._isExpanded = false;
|
|
40
|
+
this._maxHeight = "none";
|
|
41
|
+
this._lineHeight = 0;
|
|
42
|
+
this._isLayered = false;
|
|
43
|
+
}
|
|
44
|
+
static {
|
|
45
|
+
this.styles = truncated_text_default$1;
|
|
46
|
+
}
|
|
47
|
+
connectedCallback() {
|
|
48
|
+
super.connectedCallback();
|
|
49
|
+
this._isLayered = !!this.closest(`cds-custom-layer`);
|
|
50
|
+
this.type = this.type || "tooltip";
|
|
51
|
+
}
|
|
52
|
+
disconnectedCallback() {
|
|
53
|
+
this._resizeObserver?.disconnect();
|
|
54
|
+
super.disconnectedCallback();
|
|
55
|
+
}
|
|
56
|
+
firstUpdated() {
|
|
57
|
+
requestAnimationFrame(() => {
|
|
58
|
+
const computedStyle = getComputedStyle(this._textElement);
|
|
59
|
+
this._lineHeight = parseFloat(computedStyle.lineHeight);
|
|
60
|
+
this._setupResizeObserver();
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
updated(changed) {
|
|
64
|
+
if (changed.has("lines") || changed.has("value")) {
|
|
65
|
+
this._updateOverflowStatus();
|
|
66
|
+
this._updateMaxHeight();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
_updateMaxHeight() {
|
|
70
|
+
if (this.type !== "expand") return;
|
|
71
|
+
requestAnimationFrame(() => {
|
|
72
|
+
if (!this._textElement) return;
|
|
73
|
+
this._maxHeight = this.lines > 0 && !this._isExpanded ? `${this.lines * this._lineHeight}px` : `${this._textElement.scrollHeight}px`;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
_setupResizeObserver() {
|
|
77
|
+
if (!this._textElement) return;
|
|
78
|
+
if (this._resizeObserver) this._resizeObserver.disconnect();
|
|
79
|
+
this._resizeObserver = new ResizeObserver(() => {
|
|
80
|
+
this._updateOverflowStatus();
|
|
81
|
+
});
|
|
82
|
+
this._resizeObserver.observe(this);
|
|
83
|
+
}
|
|
84
|
+
_updateOverflowStatus() {
|
|
85
|
+
if (!this._textElement || this.lines <= 0) return;
|
|
86
|
+
this._updateMaxHeight();
|
|
87
|
+
const { scrollHeight, clientHeight } = this._textElement;
|
|
88
|
+
const isOverflowing = scrollHeight > clientHeight + this._lineHeight / 2;
|
|
89
|
+
if (isOverflowing !== this._isOverflowing) this._isOverflowing = isOverflowing;
|
|
90
|
+
}
|
|
91
|
+
_handleKeydown(evt) {
|
|
92
|
+
const { key } = evt;
|
|
93
|
+
if (key === "Enter" || key === " ") this._toggleExpansion();
|
|
94
|
+
}
|
|
95
|
+
_toggleExpansion() {
|
|
96
|
+
this._isExpanded = !this._isExpanded;
|
|
97
|
+
this._updateMaxHeight();
|
|
98
|
+
this._textElement?.classList.add(`${blockClass}_transition`);
|
|
99
|
+
const onTransitionEnd = () => {
|
|
100
|
+
this._textElement?.querySelector("button")?.focus();
|
|
101
|
+
this._textElement?.removeEventListener("transitionend", onTransitionEnd);
|
|
102
|
+
};
|
|
103
|
+
this._textElement?.addEventListener("transitionend", onTransitionEnd);
|
|
104
|
+
/**
|
|
105
|
+
* currently you cannot animate line-clamping
|
|
106
|
+
* you can however animate max-height
|
|
107
|
+
* this removes the clamping and then quickly adds it so you can see the ellipsis
|
|
108
|
+
*/
|
|
109
|
+
if (this._isExpanded === false) {
|
|
110
|
+
this._textElement?.classList.add(`${blockClass}_content--closing`);
|
|
111
|
+
setTimeout(() => {
|
|
112
|
+
this._textElement?.classList.remove(`${blockClass}_content--closing`);
|
|
113
|
+
}, 100);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
_renderToggleButton() {
|
|
117
|
+
const className = classMap({
|
|
118
|
+
[`${blockClass}_button-collapse`]: this._isExpanded,
|
|
119
|
+
[`${blockClass}_button-expand`]: !this._isExpanded,
|
|
120
|
+
[`${blockClass}_button-layered`]: this._isLayered,
|
|
121
|
+
[`${blockClass}_button-hide`]: !this._isOverflowing && !this._isExpanded
|
|
122
|
+
});
|
|
123
|
+
const label = this._isExpanded ? this.collapseLabel : this.expandLabel;
|
|
124
|
+
return html`
|
|
125
|
+
<span
|
|
126
|
+
aria-controls=${this.id}
|
|
127
|
+
aria-expanded=${this._isExpanded}
|
|
128
|
+
class=${className}
|
|
129
|
+
@click=${this._toggleExpansion}
|
|
130
|
+
@keydown=${this._handleKeydown}
|
|
131
|
+
role="button"
|
|
132
|
+
tabindex="0">
|
|
133
|
+
${label}
|
|
134
|
+
</span>
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
render() {
|
|
138
|
+
const contentClasses = classMap({
|
|
139
|
+
[`${blockClass}_content`]: true,
|
|
140
|
+
[`${blockClass}_content--expanded`]: this._isExpanded
|
|
141
|
+
});
|
|
142
|
+
const contentStyle = {
|
|
143
|
+
["--line-clamp"]: this._isExpanded ? "none" : this.lines,
|
|
144
|
+
["max-block-size"]: this.type === "expand" ? this._maxHeight : "none"
|
|
145
|
+
};
|
|
146
|
+
const valueBody = html`
|
|
147
|
+
<div
|
|
148
|
+
id=${this.id}
|
|
149
|
+
class=${contentClasses}
|
|
150
|
+
style=${styleMap(contentStyle)}>
|
|
151
|
+
${this.value}
|
|
152
|
+
</div>
|
|
153
|
+
`;
|
|
154
|
+
if (this.type === "expand") return html`${valueBody} ${this._renderToggleButton()}`;
|
|
155
|
+
return this._isOverflowing ? html`
|
|
156
|
+
<cds-custom-tooltip
|
|
157
|
+
align=${this.align}
|
|
158
|
+
?autoalign=${this.autoalign}
|
|
159
|
+
enter-delay-ms="0"
|
|
160
|
+
leave-delay-ms="0">
|
|
161
|
+
<button
|
|
162
|
+
type="button"
|
|
163
|
+
class="${blockClass}_tooltip-trigger"
|
|
164
|
+
aria-label=${this.value}>
|
|
165
|
+
${valueBody}
|
|
166
|
+
</button>
|
|
167
|
+
<cds-custom-tooltip-content>${this.value}</cds-custom-tooltip-content>
|
|
168
|
+
</cds-custom-tooltip>
|
|
169
|
+
` : valueBody;
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
__decorate([property({
|
|
173
|
+
reflect: true,
|
|
174
|
+
type: String
|
|
175
|
+
})], CDSTruncatedText.prototype, "align", void 0);
|
|
176
|
+
__decorate([property({
|
|
177
|
+
type: Boolean,
|
|
178
|
+
reflect: true
|
|
179
|
+
})], CDSTruncatedText.prototype, "autoalign", void 0);
|
|
180
|
+
__decorate([property({
|
|
181
|
+
attribute: "collapse-label",
|
|
182
|
+
type: String,
|
|
183
|
+
reflect: true
|
|
184
|
+
})], CDSTruncatedText.prototype, "collapseLabel", void 0);
|
|
185
|
+
__decorate([property({
|
|
186
|
+
attribute: "expand-label",
|
|
187
|
+
type: String,
|
|
188
|
+
reflect: true
|
|
189
|
+
})], CDSTruncatedText.prototype, "expandLabel", void 0);
|
|
190
|
+
__decorate([property({
|
|
191
|
+
type: String,
|
|
192
|
+
reflect: true
|
|
193
|
+
})], CDSTruncatedText.prototype, "id", void 0);
|
|
194
|
+
__decorate([property({
|
|
195
|
+
type: Number,
|
|
196
|
+
reflect: true
|
|
197
|
+
})], CDSTruncatedText.prototype, "lines", void 0);
|
|
198
|
+
__decorate([property({
|
|
199
|
+
type: String,
|
|
200
|
+
reflect: true
|
|
201
|
+
})], CDSTruncatedText.prototype, "type", void 0);
|
|
202
|
+
__decorate([property({
|
|
203
|
+
type: String,
|
|
204
|
+
attribute: "value",
|
|
205
|
+
reflect: true
|
|
206
|
+
})], CDSTruncatedText.prototype, "value", void 0);
|
|
207
|
+
__decorate([state()], CDSTruncatedText.prototype, "_isOverflowing", void 0);
|
|
208
|
+
__decorate([state()], CDSTruncatedText.prototype, "_isExpanded", void 0);
|
|
209
|
+
__decorate([state()], CDSTruncatedText.prototype, "_maxHeight", void 0);
|
|
210
|
+
__decorate([query(`.${blockClass}_content`)], CDSTruncatedText.prototype, "_textElement", void 0);
|
|
211
|
+
CDSTruncatedText = __decorate([carbonElement(elementName)], CDSTruncatedText);
|
|
212
|
+
var truncated_text_default = CDSTruncatedText;
|
|
213
|
+
//#endregion
|
|
214
|
+
export { CDSTruncatedText, blockClass, truncated_text_default as default };
|
|
215
|
+
|
|
216
|
+
//# sourceMappingURL=truncated-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncated-text.js","names":["styles","customElement"],"sources":["../../../src/components/truncated-text/truncated-text.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 */\nimport { html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport { prefix } from '../../globals/settings';\nimport '../tooltip/index';\n\nimport styles from './truncated-text.scss?lit';\n\nconst componentName = 'truncated-text';\nexport const blockClass = `${prefix}--${componentName}`;\nconst elementName = `${prefix}-${componentName}`; // cds-custom-truncated-text\n\n/**\n * TruncatedText.\n *\n * @element cds-custom-truncated-text\n */\n@customElement(elementName)\nexport class CDSTruncatedText extends LitElement {\n /**\n * Specify how the tooltip should align with the content.\n */\n @property({ reflect: true, type: String })\n align = 'top';\n\n /**\n * Specify whether a auto align functionality should be applied\n */\n @property({ type: Boolean, reflect: true })\n autoalign = false;\n\n /**\n * The label on the collapse button.\n */\n @property({ attribute: 'collapse-label', type: String, reflect: true })\n collapseLabel = '';\n\n /**\n * The label on expand button.\n */\n @property({ attribute: 'expand-label', type: String, reflect: true })\n expandLabel = '';\n\n /**\n * Unique identifier for the element.\n */\n @property({ type: String, reflect: true })\n id = '';\n\n /**\n * The maximum number of lines to display before truncation.\n * Defaults to `0` (no truncation applied). Note: the React counterpart\n * defaults to `2` — consumers migrating from React should set this explicitly.\n */\n @property({ type: Number, reflect: true })\n lines = 0;\n\n /**\n * The method to display the full text when truncated. Options are \"tooltip\" or \"expand\". if not passed, the text would just be truncated with ellipsis.\n */\n @property({ type: String, reflect: true })\n type: 'tooltip' | 'expand' = 'tooltip';\n\n /**\n * The string value to be truncated.\n */\n @property({ type: String, attribute: 'value', reflect: true })\n value = '';\n\n @state() private _isOverflowing: boolean = false;\n @state() private _isExpanded: boolean = false;\n @state() private _maxHeight: string = 'none';\n\n @query(`.${blockClass}_content`) private _textElement!: HTMLElement;\n private _lineHeight: number = 0;\n private _isLayered: boolean = false;\n private _resizeObserver?: ResizeObserver;\n\n static styles = styles;\n\n connectedCallback() {\n super.connectedCallback();\n this._isLayered = !!this.closest(`${prefix}-layer`);\n this.type = this.type || 'tooltip';\n }\n\n disconnectedCallback() {\n this._resizeObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n protected firstUpdated() {\n requestAnimationFrame(() => {\n const computedStyle = getComputedStyle(this._textElement);\n this._lineHeight = parseFloat(computedStyle.lineHeight);\n this._setupResizeObserver();\n });\n }\n\n protected updated(changed: Map<string, unknown>) {\n if (changed.has('lines') || changed.has('value')) {\n this._updateOverflowStatus();\n this._updateMaxHeight();\n }\n }\n\n private _updateMaxHeight() {\n if (this.type !== 'expand') {\n return;\n }\n requestAnimationFrame(() => {\n if (!this._textElement) {\n return;\n }\n this._maxHeight =\n this.lines > 0 && !this._isExpanded\n ? `${this.lines * this._lineHeight}px`\n : `${this._textElement.scrollHeight}px`;\n });\n }\n\n private _setupResizeObserver() {\n if (!this._textElement) {\n return;\n }\n\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n\n this._resizeObserver = new ResizeObserver(() => {\n this._updateOverflowStatus();\n });\n\n this._resizeObserver.observe(this);\n }\n\n private _updateOverflowStatus() {\n if (!this._textElement || this.lines <= 0) {\n return;\n }\n this._updateMaxHeight();\n const { scrollHeight, clientHeight } = this._textElement;\n const buffer = this._lineHeight / 2; // buffer of at least half of line height for a stable outcome\n\n const isOverflowing = scrollHeight > clientHeight + buffer;\n\n if (isOverflowing !== this._isOverflowing) {\n this._isOverflowing = isOverflowing;\n }\n }\n\n private _handleKeydown(evt: KeyboardEvent) {\n const { key } = evt;\n if (key === 'Enter' || key === ' ') {\n this._toggleExpansion();\n }\n }\n\n private _toggleExpansion() {\n this._isExpanded = !this._isExpanded;\n this._updateMaxHeight();\n this._textElement?.classList.add(`${blockClass}_transition`);\n const onTransitionEnd = () => {\n this._textElement?.querySelector('button')?.focus();\n this._textElement?.removeEventListener('transitionend', onTransitionEnd);\n };\n this._textElement?.addEventListener('transitionend', onTransitionEnd);\n\n /**\n * currently you cannot animate line-clamping\n * you can however animate max-height\n * this removes the clamping and then quickly adds it so you can see the ellipsis\n */\n if (this._isExpanded === false) {\n this._textElement?.classList.add(`${blockClass}_content--closing`);\n setTimeout(() => {\n this._textElement?.classList.remove(`${blockClass}_content--closing`);\n }, 100);\n }\n }\n\n private _renderToggleButton() {\n const className = classMap({\n [`${blockClass}_button-collapse`]: this._isExpanded,\n [`${blockClass}_button-expand`]: !this._isExpanded,\n [`${blockClass}_button-layered`]: this._isLayered,\n [`${blockClass}_button-hide`]: !this._isOverflowing && !this._isExpanded,\n });\n const label = this._isExpanded ? this.collapseLabel : this.expandLabel;\n return html`\n <span\n aria-controls=${this.id}\n aria-expanded=${this._isExpanded}\n class=${className}\n @click=${this._toggleExpansion}\n @keydown=${this._handleKeydown}\n role=\"button\"\n tabindex=\"0\">\n ${label}\n </span>\n `;\n }\n\n render() {\n const contentClasses = classMap({\n [`${blockClass}_content`]: true,\n [`${blockClass}_content--expanded`]: this._isExpanded,\n });\n\n const contentStyle = {\n ['--line-clamp']: this._isExpanded ? 'none' : this.lines,\n ['max-block-size']: this.type === 'expand' ? this._maxHeight : 'none',\n };\n\n const valueBody = html`\n <div\n id=${this.id}\n class=${contentClasses}\n style=${styleMap(contentStyle)}>\n ${this.value}\n </div>\n `;\n\n if (this.type === 'expand') {\n return html`${valueBody} ${this._renderToggleButton()}`;\n }\n\n // type === 'tooltip'\n return this._isOverflowing\n ? html`\n <cds-custom-tooltip\n align=${this.align}\n ?autoalign=${this.autoalign}\n enter-delay-ms=\"0\"\n leave-delay-ms=\"0\">\n <button\n type=\"button\"\n class=\"${blockClass}_tooltip-trigger\"\n aria-label=${this.value}>\n ${valueBody}\n </button>\n <cds-custom-tooltip-content>${this.value}</cds-custom-tooltip-content>\n </cds-custom-tooltip>\n `\n : valueBody;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [elementName]: CDSTruncatedText;\n }\n}\n\nexport default CDSTruncatedText;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 { css } from "lit";
|
|
9
|
+
//#region src/components/truncated-text/truncated-text.scss?lit
|
|
10
|
+
var truncated_text_default = css(["@keyframes cds-custom--hide-feedback{0%{opacity:1;visibility:inherit}to{opacity:0;visibility:hidden}}@keyframes cds-custom--show-feedback{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:inherit}}@keyframes cds-custom--skeleton{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}to{opacity:.3;transform:scaleX(0);transform-origin:left}}.cds-custom--assistive-text,.cds-custom--visually-hidden{position:absolute;overflow:hidden;padding:0;border:0;margin:-1px;block-size:1px;clip:rect(0,0,0,0);inline-size:1px;visibility:inherit;white-space:nowrap}.cds-custom--truncated-text_button-collapse,.cds-custom--truncated-text_button-expand{border:none;cursor:pointer;font:inherit;line-height:inherit}:host(cds-custom-truncated-text){display:block;inline-size:100%}@media (prefers-reduced-motion:no-preference){:host(cds-custom-truncated-text) .cds-custom--truncated-text_transition{transition:max-height .11s cubic-bezier(.2,0,.38,.9)}}:host(cds-custom-truncated-text) .cds-custom--truncated-text_content{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp,0);text-overflow:clip;white-space:normal}:host(cds-custom-truncated-text) .cds-custom--truncated-text_content:focus-visible{outline:2px solid var(--cds-focus,#0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){:host(cds-custom-truncated-text) .cds-custom--truncated-text_content:focus-visible{outline-style:dotted}}:host(cds-custom-truncated-text) .cds-custom--truncated-text_content--closing{-webkit-line-clamp:none}:host(cds-custom-truncated-text) cds-custom-tooltip{display:inline-flex}:host(cds-custom-truncated-text) .cds-custom--truncated-text_tooltip-trigger{display:inline;padding:0;border:0;background:none;color:inherit;cursor:default;font:inherit;text-align:inherit}:host(cds-custom-truncated-text) .cds-custom--truncated-text_tooltip-trigger:focus-visible{outline:2px solid var(--cds-focus,#0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){:host(cds-custom-truncated-text) .cds-custom--truncated-text_tooltip-trigger:focus-visible{outline-style:dotted}}:host(cds-custom-truncated-text) .cds-custom--truncated-text_button-collapse:focus-visible,:host(cds-custom-truncated-text) .cds-custom--truncated-text_button-expand:focus-visible,:host(cds-custom-truncated-text) button:focus-visible{outline:2px solid var(--cds-focus,#0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){:host(cds-custom-truncated-text) .cds-custom--truncated-text_button-collapse:focus-visible,:host(cds-custom-truncated-text) .cds-custom--truncated-text_button-expand:focus-visible,:host(cds-custom-truncated-text) button:focus-visible{outline-style:dotted}}.cds-custom--truncated-text_button-collapse,.cds-custom--truncated-text_button-expand{padding:0 .125rem;color:var(--cds-link-primary,#0f62fe)}.cds-custom--truncated-text_button-collapse.cds-custom--truncated-text_button-hide,.cds-custom--truncated-text_button-expand.cds-custom--truncated-text_button-hide{display:none}.cds-custom--truncated-text_button-expand.cds-custom--truncated-text_button-layered{background-color:var(--cds-layer)}.cds-custom--truncated-text_button-expand:dir(ltr):before{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,var(--cds-background,#fff) 0)}.cds-custom--truncated-text_button-expand.cds-custom--truncated-text_button-layered:dir(ltr):before{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,var(--cds-layer) 0)}.cds-custom--truncated-text_button-expand:dir(rtl):before{background:linear-gradient(270deg,hsla(0,0%,100%,0) 0,var(--cds-background,#fff) 0)}.cds-custom--truncated-text_button-expand.cds-custom--truncated-text_button-layered:dir(rtl):before{background:linear-gradient(270deg,hsla(0,0%,100%,0) 0,var(--cds-layer) 0)}.cds-custom--truncated-text_button-collapse{background-color:transparent}"]);
|
|
11
|
+
//#endregion
|
|
12
|
+
export { truncated_text_default as default };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=truncated-text.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncated-text.scss.js","names":[],"sources":["../../../src/components/truncated-text/truncated-text.scss?lit"],"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$css--plex: true !default;\n\n@use '@carbon/styles/scss/config' as *;\n@use '@carbon/styles/scss/utilities' as *;\n@use '@carbon/styles/scss/spacing' as *;\n@use '@carbon/styles/scss/theme';\n@use '@carbon/styles/scss/motion' as *;\n\n$block-class: #{$prefix}--truncated-text;\n\n// Common reset button style\n%reset-button {\n border: none;\n cursor: pointer;\n font: inherit;\n line-height: inherit;\n}\n\n// Mixin for directional gradients\n@mixin gradient-bg($direction, $color) {\n background: linear-gradient($direction, rgba(255, 255, 255, 0) 0%, $color 0%);\n}\n\n:host(#{$prefix}-truncated-text) {\n display: block;\n inline-size: 100%;\n\n .#{$block-class}_transition {\n @media (prefers-reduced-motion: no-preference) {\n transition: max-height $duration-fast-02 motion(standard, productive);\n }\n }\n\n .#{$block-class}_content {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: var(--line-clamp, 0);\n text-overflow: clip;\n white-space: normal;\n\n &:focus-visible {\n @include focus-outline('outline');\n }\n }\n\n .#{$block-class}_content--closing {\n -webkit-line-clamp: none;\n }\n\n #{$prefix}-tooltip {\n display: inline-flex;\n }\n\n .#{$block-class}_tooltip-trigger {\n display: inline;\n padding: 0;\n border: 0;\n background: none;\n color: inherit;\n cursor: default;\n font: inherit;\n text-align: inherit;\n\n &:focus-visible {\n @include focus-outline('outline');\n }\n }\n\n button:focus-visible,\n .#{$block-class}_button-expand:focus-visible,\n .#{$block-class}_button-collapse:focus-visible {\n @include focus-outline('outline');\n }\n}\n\n.#{$block-class}_button-expand,\n.#{$block-class}_button-collapse {\n @extend %reset-button;\n\n padding: 0 $spacing-01;\n color: theme.$link-primary;\n\n &.#{$block-class}_button-hide {\n display: none;\n }\n}\n\n.#{$block-class}_button-expand {\n &.#{$block-class}_button-layered {\n background-color: theme.$layer;\n }\n\n // Gradient LTR\n &:dir(ltr)::before {\n @include gradient-bg(90deg, theme.$background);\n }\n\n &.#{$block-class}_button-layered:dir(ltr)::before {\n @include gradient-bg(90deg, theme.$layer);\n }\n\n // Gradient RTL\n &:dir(rtl)::before {\n @include gradient-bg(270deg, theme.$background);\n }\n\n &.#{$block-class}_button-layered:dir(rtl)::before {\n @include gradient-bg(270deg, theme.$layer);\n }\n}\n\n.#{$block-class}_button-collapse {\n background-color: transparent;\n}\n"],"mappings":""}
|