@carbon/ibm-products-web-components 0.37.0 → 0.38.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 +957 -4843
- package/es/components/about-modal/about-modal.d.ts +0 -350
- package/es/components/about-modal/about-modal.d.ts.map +1 -1
- package/es/components/about-modal/about-modal.scss.js +1 -1
- package/es/components/about-modal/about-modal.scss.js.map +1 -1
- package/es/components/coachmark/coachmark-beacon/coachmark-beacon.d.ts +0 -350
- package/es/components/coachmark/coachmark-beacon/coachmark-beacon.d.ts.map +1 -1
- package/es/components/coachmark/coachmark-body.d.ts +0 -350
- package/es/components/coachmark/coachmark-body.d.ts.map +1 -1
- package/es/components/coachmark/coachmark-header.d.ts +0 -350
- package/es/components/coachmark/coachmark-header.d.ts.map +1 -1
- package/es/components/coachmark/coachmark-header.js +11 -2
- package/es/components/coachmark/coachmark-header.js.map +1 -1
- package/es/components/coachmark/coachmark-tagline/coachmark-tagline.d.ts +0 -350
- package/es/components/coachmark/coachmark-tagline/coachmark-tagline.d.ts.map +1 -1
- package/es/components/coachmark/coachmark-tagline/coachmark-tagline.js.map +1 -1
- package/es/components/coachmark/coachmark.d.ts +7 -350
- package/es/components/coachmark/coachmark.d.ts.map +1 -1
- package/es/components/coachmark/coachmark.js +10 -0
- package/es/components/coachmark/coachmark.js.map +1 -1
- package/es/components/guide-banner/guide-banner-element.d.ts +0 -350
- package/es/components/guide-banner/guide-banner-element.d.ts.map +1 -1
- package/es/components/guide-banner/guide-banner.d.ts +0 -350
- package/es/components/guide-banner/guide-banner.d.ts.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body-item.d.ts +0 -350
- package/es/components/interstitial-screen/interstitial-screen-body-item.d.ts.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body-item.scss.js +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body-item.scss.js.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body.d.ts +0 -350
- package/es/components/interstitial-screen/interstitial-screen-body.d.ts.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body.scss.js +1 -1
- package/es/components/interstitial-screen/interstitial-screen-body.scss.js.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-footer.d.ts +0 -350
- package/es/components/interstitial-screen/interstitial-screen-footer.d.ts.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen-header.d.ts +0 -350
- package/es/components/interstitial-screen/interstitial-screen-header.d.ts.map +1 -1
- package/es/components/interstitial-screen/interstitial-screen.d.ts +0 -350
- package/es/components/interstitial-screen/interstitial-screen.d.ts.map +1 -1
- package/es/components/notification-panel/notification-footer.d.ts +0 -350
- package/es/components/notification-panel/notification-footer.d.ts.map +1 -1
- package/es/components/notification-panel/notification-panel.d.ts +0 -350
- package/es/components/notification-panel/notification-panel.d.ts.map +1 -1
- package/es/components/notification-panel/notification.d.ts +0 -350
- package/es/components/notification-panel/notification.d.ts.map +1 -1
- package/es/components/options-tile/options-tile.d.ts +0 -350
- package/es/components/options-tile/options-tile.d.ts.map +1 -1
- package/es/components/page-header/_story-assets/overflowHandler.d.ts +99 -0
- package/es/components/page-header/_story-assets/overflowHandler.d.ts.map +1 -0
- package/es/components/page-header/_story-assets/overflowHandler.js +122 -0
- package/es/components/page-header/_story-assets/overflowHandler.js.map +1 -0
- package/es/components/page-header/index.d.ts +4 -1
- package/es/components/page-header/index.d.ts.map +1 -1
- package/es/components/page-header/index.js +3 -0
- package/es/components/page-header/page-header-actions-set/index.d.ts +10 -0
- package/es/components/page-header/page-header-actions-set/index.d.ts.map +1 -0
- package/es/components/page-header/page-header-actions-set/index.js +8 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.d.ts +50 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.d.ts.map +1 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.js +162 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.js.map +1 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.scss.js +15 -0
- package/es/components/page-header/page-header-actions-set/page-header-actions-set.scss.js.map +1 -0
- package/es/components/page-header/page-header-breadcrumbs-set/index.d.ts +10 -0
- package/es/components/page-header/page-header-breadcrumbs-set/index.d.ts.map +1 -0
- package/es/components/page-header/page-header-breadcrumbs-set/index.js +8 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.d.ts +48 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.d.ts.map +1 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.js +136 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.js.map +1 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.scss.js +15 -0
- package/es/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.scss.js.map +1 -0
- package/es/components/page-header/page-header-tags-set/index.d.ts +10 -0
- package/es/components/page-header/page-header-tags-set/index.d.ts.map +1 -0
- package/es/components/page-header/page-header-tags-set/index.js +8 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.d.ts +41 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.d.ts.map +1 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.js +210 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.js.map +1 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.scss.js +15 -0
- package/es/components/page-header/page-header-tags-set/page-header-tags-set.scss.js.map +1 -0
- package/es/components/page-header/page-header-tags-set/utils.d.ts +24 -0
- package/es/components/page-header/page-header-tags-set/utils.d.ts.map +1 -0
- package/es/components/page-header/page-header-tags-set/utils.js +42 -0
- package/es/components/page-header/page-header-tags-set/utils.js.map +1 -0
- package/es/components/page-header/page-header.scss.js +1 -1
- package/es/components/page-header/page-header.scss.js.map +1 -1
- package/es/components/page-header/utils.d.ts +9 -1
- package/es/components/page-header/utils.d.ts.map +1 -1
- package/es/components/page-header/utils.js +4 -2
- package/es/components/page-header/utils.js.map +1 -1
- package/es/components/side-panel/side-panel.d.ts +0 -350
- package/es/components/side-panel/side-panel.d.ts.map +1 -1
- package/es/components/tearsheet/tearsheet.d.ts +0 -370
- package/es/components/tearsheet/tearsheet.d.ts.map +1 -1
- package/es/components/tearsheet/tearsheet.scss.js +1 -1
- package/es/components/tearsheet-preview/index.d.ts +1 -0
- package/es/components/tearsheet-preview/index.d.ts.map +1 -1
- package/es/components/tearsheet-preview/index.js +1 -0
- package/es/components/tearsheet-preview/tearsheet-body.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-body.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-footer.d.ts +17 -351
- package/es/components/tearsheet-preview/tearsheet-footer.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-footer.js +31 -3
- package/es/components/tearsheet-preview/tearsheet-footer.js.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-header-content.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-header-content.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-header-content.scss.js +1 -1
- package/es/components/tearsheet-preview/tearsheet-header-content.scss.js.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-header.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-header.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-header.scss.js +1 -1
- package/es/components/tearsheet-preview/tearsheet-header.scss.js.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-influencer.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-influencer.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-navigation-bar.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-navigation-bar.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet-navigation-bar.scss.js +1 -1
- package/es/components/tearsheet-preview/tearsheet-stack.d.ts +42 -0
- package/es/components/tearsheet-preview/tearsheet-stack.d.ts.map +1 -0
- package/es/components/tearsheet-preview/tearsheet-stack.js +83 -0
- package/es/components/tearsheet-preview/tearsheet-stack.js.map +1 -0
- package/es/components/tearsheet-preview/tearsheet-summary-content.d.ts +0 -350
- package/es/components/tearsheet-preview/tearsheet-summary-content.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet.d.ts +16 -350
- package/es/components/tearsheet-preview/tearsheet.d.ts.map +1 -1
- package/es/components/tearsheet-preview/tearsheet.js +32 -3
- package/es/components/tearsheet-preview/tearsheet.js.map +1 -1
- package/es/components/tearsheet-preview/tearsheet.scss.js +1 -1
- package/es/components/tearsheet-preview/tearsheet.scss.js.map +1 -1
- package/es/components/user-avatar/user-avatar.d.ts +0 -350
- package/es/components/user-avatar/user-avatar.d.ts.map +1 -1
- package/es/package.js +1 -1
- package/es-custom/components/about-modal/about-modal.scss.js +1 -1
- package/es-custom/components/about-modal/about-modal.scss.js.map +1 -1
- package/es-custom/components/coachmark/coachmark-header.js +11 -2
- package/es-custom/components/coachmark/coachmark-header.js.map +1 -1
- package/es-custom/components/coachmark/coachmark-tagline/coachmark-tagline.js.map +1 -1
- package/es-custom/components/coachmark/coachmark.js +10 -0
- package/es-custom/components/coachmark/coachmark.js.map +1 -1
- package/es-custom/components/interstitial-screen/interstitial-screen-body-item.scss.js +1 -1
- package/es-custom/components/interstitial-screen/interstitial-screen-body-item.scss.js.map +1 -1
- package/es-custom/components/interstitial-screen/interstitial-screen-body.scss.js +1 -1
- package/es-custom/components/interstitial-screen/interstitial-screen-body.scss.js.map +1 -1
- package/es-custom/components/page-header/_story-assets/overflowHandler.js +122 -0
- package/es-custom/components/page-header/_story-assets/overflowHandler.js.map +1 -0
- package/es-custom/components/page-header/index.js +3 -0
- package/es-custom/components/page-header/page-header-actions-set/index.js +8 -0
- package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.js +162 -0
- package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.js.map +1 -0
- package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.scss.js +15 -0
- package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.scss.js.map +1 -0
- package/es-custom/components/page-header/page-header-breadcrumbs-set/index.js +8 -0
- package/es-custom/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.js +136 -0
- package/es-custom/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.js.map +1 -0
- package/es-custom/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.scss.js +15 -0
- package/es-custom/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.scss.js.map +1 -0
- package/es-custom/components/page-header/page-header-tags-set/index.js +8 -0
- package/es-custom/components/page-header/page-header-tags-set/page-header-tags-set.js +210 -0
- package/es-custom/components/page-header/page-header-tags-set/page-header-tags-set.js.map +1 -0
- package/es-custom/components/page-header/page-header-tags-set/page-header-tags-set.scss.js +15 -0
- package/es-custom/components/page-header/page-header-tags-set/page-header-tags-set.scss.js.map +1 -0
- package/es-custom/components/page-header/page-header-tags-set/utils.js +42 -0
- package/es-custom/components/page-header/page-header-tags-set/utils.js.map +1 -0
- package/es-custom/components/page-header/page-header.scss.js +1 -1
- package/es-custom/components/page-header/page-header.scss.js.map +1 -1
- package/es-custom/components/page-header/utils.js +4 -2
- package/es-custom/components/page-header/utils.js.map +1 -1
- package/es-custom/components/tearsheet/tearsheet.scss.js +1 -1
- package/es-custom/components/tearsheet-preview/index.js +1 -0
- package/es-custom/components/tearsheet-preview/tearsheet-footer.js +31 -3
- package/es-custom/components/tearsheet-preview/tearsheet-footer.js.map +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-header-content.scss.js +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-header-content.scss.js.map +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-header.scss.js +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-header.scss.js.map +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-navigation-bar.scss.js +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet-stack.js +83 -0
- package/es-custom/components/tearsheet-preview/tearsheet-stack.js.map +1 -0
- package/es-custom/components/tearsheet-preview/tearsheet.js +32 -3
- package/es-custom/components/tearsheet-preview/tearsheet.js.map +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet.scss.js +1 -1
- package/es-custom/components/tearsheet-preview/tearsheet.scss.js.map +1 -1
- package/es-custom/package.js +1 -1
- package/lib/components/about-modal/about-modal.d.ts +0 -350
- package/lib/components/about-modal/about-modal.d.ts.map +1 -1
- package/lib/components/coachmark/coachmark-beacon/coachmark-beacon.d.ts +0 -350
- package/lib/components/coachmark/coachmark-beacon/coachmark-beacon.d.ts.map +1 -1
- package/lib/components/coachmark/coachmark-body.d.ts +0 -350
- package/lib/components/coachmark/coachmark-body.d.ts.map +1 -1
- package/lib/components/coachmark/coachmark-header.d.ts +0 -350
- package/lib/components/coachmark/coachmark-header.d.ts.map +1 -1
- package/lib/components/coachmark/coachmark-tagline/coachmark-tagline.d.ts +0 -350
- package/lib/components/coachmark/coachmark-tagline/coachmark-tagline.d.ts.map +1 -1
- package/lib/components/coachmark/coachmark.d.ts +7 -350
- package/lib/components/coachmark/coachmark.d.ts.map +1 -1
- package/lib/components/guide-banner/guide-banner-element.d.ts +0 -350
- package/lib/components/guide-banner/guide-banner-element.d.ts.map +1 -1
- package/lib/components/guide-banner/guide-banner.d.ts +0 -350
- package/lib/components/guide-banner/guide-banner.d.ts.map +1 -1
- package/lib/components/interstitial-screen/interstitial-screen-body-item.d.ts +0 -350
- package/lib/components/interstitial-screen/interstitial-screen-body-item.d.ts.map +1 -1
- package/lib/components/interstitial-screen/interstitial-screen-body.d.ts +0 -350
- package/lib/components/interstitial-screen/interstitial-screen-body.d.ts.map +1 -1
- package/lib/components/interstitial-screen/interstitial-screen-footer.d.ts +0 -350
- package/lib/components/interstitial-screen/interstitial-screen-footer.d.ts.map +1 -1
- package/lib/components/interstitial-screen/interstitial-screen-header.d.ts +0 -350
- package/lib/components/interstitial-screen/interstitial-screen-header.d.ts.map +1 -1
- package/lib/components/interstitial-screen/interstitial-screen.d.ts +0 -350
- package/lib/components/interstitial-screen/interstitial-screen.d.ts.map +1 -1
- package/lib/components/notification-panel/notification-footer.d.ts +0 -350
- package/lib/components/notification-panel/notification-footer.d.ts.map +1 -1
- package/lib/components/notification-panel/notification-panel.d.ts +0 -350
- package/lib/components/notification-panel/notification-panel.d.ts.map +1 -1
- package/lib/components/notification-panel/notification.d.ts +0 -350
- package/lib/components/notification-panel/notification.d.ts.map +1 -1
- package/lib/components/options-tile/options-tile.d.ts +0 -350
- package/lib/components/options-tile/options-tile.d.ts.map +1 -1
- package/lib/components/page-header/_story-assets/overflowHandler.d.ts +99 -0
- package/lib/components/page-header/_story-assets/overflowHandler.d.ts.map +1 -0
- package/lib/components/page-header/index.d.ts +4 -1
- package/lib/components/page-header/index.d.ts.map +1 -1
- package/lib/components/page-header/page-header-actions-set/index.d.ts +10 -0
- package/lib/components/page-header/page-header-actions-set/index.d.ts.map +1 -0
- package/lib/components/page-header/page-header-actions-set/page-header-actions-set.d.ts +50 -0
- package/lib/components/page-header/page-header-actions-set/page-header-actions-set.d.ts.map +1 -0
- package/lib/components/page-header/page-header-breadcrumbs-set/index.d.ts +10 -0
- package/lib/components/page-header/page-header-breadcrumbs-set/index.d.ts.map +1 -0
- package/lib/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.d.ts +48 -0
- package/lib/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.d.ts.map +1 -0
- package/lib/components/page-header/page-header-tags-set/index.d.ts +10 -0
- package/lib/components/page-header/page-header-tags-set/index.d.ts.map +1 -0
- package/lib/components/page-header/page-header-tags-set/page-header-tags-set.d.ts +41 -0
- package/lib/components/page-header/page-header-tags-set/page-header-tags-set.d.ts.map +1 -0
- package/lib/components/page-header/page-header-tags-set/utils.d.ts +24 -0
- package/lib/components/page-header/page-header-tags-set/utils.d.ts.map +1 -0
- package/lib/components/page-header/utils.d.ts +9 -1
- package/lib/components/page-header/utils.d.ts.map +1 -1
- package/lib/components/side-panel/side-panel.d.ts +0 -350
- package/lib/components/side-panel/side-panel.d.ts.map +1 -1
- package/lib/components/tearsheet/tearsheet.d.ts +0 -370
- package/lib/components/tearsheet/tearsheet.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/index.d.ts +1 -0
- package/lib/components/tearsheet-preview/index.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-body.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-body.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-footer.d.ts +17 -351
- package/lib/components/tearsheet-preview/tearsheet-footer.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-header-content.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-header-content.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-header.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-header.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-influencer.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-influencer.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-navigation-bar.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-navigation-bar.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet-stack.d.ts +42 -0
- package/lib/components/tearsheet-preview/tearsheet-stack.d.ts.map +1 -0
- package/lib/components/tearsheet-preview/tearsheet-summary-content.d.ts +0 -350
- package/lib/components/tearsheet-preview/tearsheet-summary-content.d.ts.map +1 -1
- package/lib/components/tearsheet-preview/tearsheet.d.ts +16 -350
- package/lib/components/tearsheet-preview/tearsheet.d.ts.map +1 -1
- package/lib/components/user-avatar/user-avatar.d.ts +0 -350
- package/lib/components/user-avatar/user-avatar.d.ts.map +1 -1
- package/package.json +11 -11
- package/scss/components/about-modal/about-modal.scss +0 -2
- package/scss/components/interstitial-screen/interstitial-screen-body-item.scss +1 -1
- package/scss/components/interstitial-screen/interstitial-screen-body.scss +1 -1
- package/scss/components/page-header/page-header-actions-set/page-header-actions-set.scss +82 -0
- package/scss/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.scss +41 -0
- package/scss/components/page-header/page-header-tags-set/page-header-tags-set.scss +96 -0
- package/scss/components/page-header/page-header.scss +35 -4
- package/scss/components/tearsheet-preview/tearsheet-header-content.scss +10 -0
- package/scss/components/tearsheet-preview/tearsheet-header.scss +15 -0
- package/scss/components/tearsheet-preview/tearsheet.scss +1 -3
- package/telemetry.yml +22 -13
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 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 { prefix } from "../../../globals/settings.js";
|
|
9
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.112.0/helpers/decorate.js";
|
|
10
|
+
import page_header_actions_set_default$1 from "./page-header-actions-set.scss.js";
|
|
11
|
+
import { LitElement, html } from "lit";
|
|
12
|
+
import { customElement, property, query, state } from "lit/decorators.js";
|
|
13
|
+
import { iconLoader } from "@carbon/web-components/es/globals/internal/icon-loader.js";
|
|
14
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
15
|
+
import '@carbon/web-components/es-custom/components/overflow-menu/index.js';
|
|
16
|
+
import OverflowMenuVertical16 from "@carbon/icons/es/overflow-menu--vertical/16.js";
|
|
17
|
+
|
|
18
|
+
//#region src/components/page-header/page-header-actions-set/page-header-actions-set.ts
|
|
19
|
+
/**
|
|
20
|
+
* @license
|
|
21
|
+
*
|
|
22
|
+
* Copyright IBM Corp. 2025, 2026
|
|
23
|
+
*
|
|
24
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
25
|
+
* LICENSE file in the root directory of this source tree.
|
|
26
|
+
*/
|
|
27
|
+
const blockClass = `${prefix}--page-header-actions-set`;
|
|
28
|
+
let CDSPageHeaderActionsSet = class CDSPageHeaderActionsSet extends LitElement {
|
|
29
|
+
constructor(..._args) {
|
|
30
|
+
super(..._args);
|
|
31
|
+
this.hiddenItems = [];
|
|
32
|
+
this.actionsData = [];
|
|
33
|
+
this.isSetup = false;
|
|
34
|
+
this.lastContainerWidth = 0;
|
|
35
|
+
}
|
|
36
|
+
connectedCallback() {
|
|
37
|
+
super.connectedCallback();
|
|
38
|
+
this.style.visibility = "hidden";
|
|
39
|
+
}
|
|
40
|
+
firstUpdated() {
|
|
41
|
+
if (!this.container) return;
|
|
42
|
+
this.updateComplete.then(() => {
|
|
43
|
+
requestAnimationFrame(() => {
|
|
44
|
+
this.setupOverflowDetection();
|
|
45
|
+
this.isSetup = true;
|
|
46
|
+
this.style.visibility = "visible";
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
updated(changedProperties) {
|
|
51
|
+
if (this.isSetup && changedProperties.has("actionsData") && !changedProperties.has("hiddenItems")) this.updateComplete.then(() => {
|
|
52
|
+
requestAnimationFrame(() => this.setupOverflowDetection());
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
setupOverflowDetection() {
|
|
56
|
+
if (!this.itemsContainer) return;
|
|
57
|
+
this.resizeObserver?.disconnect();
|
|
58
|
+
const slot = this.shadowRoot?.querySelector("slot");
|
|
59
|
+
const checkOverflow = () => {
|
|
60
|
+
const slottedElements = slot?.assignedElements();
|
|
61
|
+
if (!slottedElements || slottedElements.length === 0) return;
|
|
62
|
+
const containerWidth = this.offsetWidth || this.itemsContainer.clientWidth;
|
|
63
|
+
const overflowMenuWidth = 48;
|
|
64
|
+
if (containerWidth === 0) return;
|
|
65
|
+
if (Math.abs(containerWidth - this.lastContainerWidth) < 5) return;
|
|
66
|
+
this.lastContainerWidth = containerWidth;
|
|
67
|
+
let totalWidth = 0;
|
|
68
|
+
for (let i = 0; i < slottedElements.length; i++) totalWidth += slottedElements[i].offsetWidth;
|
|
69
|
+
if (totalWidth <= containerWidth) {
|
|
70
|
+
slottedElements.forEach((el) => {
|
|
71
|
+
el.removeAttribute("data-hidden");
|
|
72
|
+
});
|
|
73
|
+
this.hiddenItems = [];
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
totalWidth = 0;
|
|
77
|
+
let visibleCount = 0;
|
|
78
|
+
for (let i = 0; i < slottedElements.length; i++) {
|
|
79
|
+
const itemWidth = slottedElements[i].offsetWidth;
|
|
80
|
+
if (totalWidth + itemWidth + overflowMenuWidth <= containerWidth) {
|
|
81
|
+
totalWidth += itemWidth;
|
|
82
|
+
visibleCount = i + 1;
|
|
83
|
+
} else break;
|
|
84
|
+
}
|
|
85
|
+
slottedElements.forEach((el, index) => {
|
|
86
|
+
if (index >= visibleCount) el.setAttribute("data-hidden", "");
|
|
87
|
+
else el.removeAttribute("data-hidden");
|
|
88
|
+
});
|
|
89
|
+
this.hiddenItems = this.actionsData?.slice(visibleCount) || [];
|
|
90
|
+
};
|
|
91
|
+
checkOverflow();
|
|
92
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
93
|
+
if (this.resizeTimeout) clearTimeout(this.resizeTimeout);
|
|
94
|
+
this.resizeTimeout = window.setTimeout(() => {
|
|
95
|
+
checkOverflow();
|
|
96
|
+
}, 100);
|
|
97
|
+
});
|
|
98
|
+
this.resizeObserver.observe(this);
|
|
99
|
+
this.resizeObserver.observe(this.itemsContainer);
|
|
100
|
+
}
|
|
101
|
+
disconnectedCallback() {
|
|
102
|
+
super.disconnectedCallback();
|
|
103
|
+
this.resizeObserver?.disconnect();
|
|
104
|
+
if (this.resizeTimeout) clearTimeout(this.resizeTimeout);
|
|
105
|
+
}
|
|
106
|
+
handleOverflowItemClick(index) {
|
|
107
|
+
const button = ((this.shadowRoot?.querySelector("slot"))?.assignedElements())[this.actionsData.length - this.hiddenItems.length + index];
|
|
108
|
+
if (button) button.click();
|
|
109
|
+
}
|
|
110
|
+
render() {
|
|
111
|
+
return html`
|
|
112
|
+
<div class="${blockClass}">
|
|
113
|
+
<div class="${blockClass}__items">
|
|
114
|
+
<slot></slot>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<div data-offset ?data-hidden=${this.hiddenItems.length === 0}>
|
|
118
|
+
<cds-custom-overflow-menu
|
|
119
|
+
size="md"
|
|
120
|
+
close-on-activation
|
|
121
|
+
enter-delay-ms="0"
|
|
122
|
+
leave-delay-ms="0"
|
|
123
|
+
align="left"
|
|
124
|
+
data-floating-menu-container
|
|
125
|
+
>
|
|
126
|
+
${iconLoader(OverflowMenuVertical16, {
|
|
127
|
+
class: `${blockClass}__overflow-svg`,
|
|
128
|
+
slot: "icon"
|
|
129
|
+
})}
|
|
130
|
+
<span slot="tooltip-content">More actions</span>
|
|
131
|
+
<cds-custom-overflow-menu-body flipped>
|
|
132
|
+
${repeat(this.hiddenItems ?? [], (_item, index) => index, (item, index) => html`
|
|
133
|
+
<cds-custom-overflow-menu-item
|
|
134
|
+
@click="${() => this.handleOverflowItemClick(index)}"
|
|
135
|
+
>
|
|
136
|
+
${item.label}
|
|
137
|
+
</cds-custom-overflow-menu-item>
|
|
138
|
+
`)}
|
|
139
|
+
</cds-custom-overflow-menu-body>
|
|
140
|
+
</cds-custom-overflow-menu>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
static {
|
|
146
|
+
this.styles = page_header_actions_set_default$1;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
__decorate([state()], CDSPageHeaderActionsSet.prototype, "hiddenItems", void 0);
|
|
150
|
+
__decorate([property({
|
|
151
|
+
type: Array,
|
|
152
|
+
attribute: "actions-data",
|
|
153
|
+
reflect: true
|
|
154
|
+
})], CDSPageHeaderActionsSet.prototype, "actionsData", void 0);
|
|
155
|
+
__decorate([query(`.${blockClass}`)], CDSPageHeaderActionsSet.prototype, "container", void 0);
|
|
156
|
+
__decorate([query(`.${blockClass}__items`)], CDSPageHeaderActionsSet.prototype, "itemsContainer", void 0);
|
|
157
|
+
CDSPageHeaderActionsSet = __decorate([customElement(`${prefix}-page-header-actions-set`)], CDSPageHeaderActionsSet);
|
|
158
|
+
var page_header_actions_set_default = CDSPageHeaderActionsSet;
|
|
159
|
+
|
|
160
|
+
//#endregion
|
|
161
|
+
export { page_header_actions_set_default as default };
|
|
162
|
+
//# sourceMappingURL=page-header-actions-set.js.map
|
package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-actions-set.js","names":["styles"],"sources":["../../../../src/components/page-header/page-header-actions-set/page-header-actions-set.ts"],"sourcesContent":["/**\n * @license\n *\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\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport '@carbon/web-components/es-custom/components/overflow-menu/index.js';\nimport OverflowMenuVertical16 from '@carbon/icons/es/overflow-menu--vertical/16.js';\nimport { iconLoader } from '@carbon/web-components/es/globals/internal/icon-loader.js';\nimport styles from './page-header-actions-set.scss?lit';\nimport { prefix } from '../../../globals/settings';\n\nconst blockClass = `${prefix}--page-header-actions-set`;\n\ninterface PageAction {\n label: string;\n}\n\n@customElement(`${prefix}-page-header-actions-set`)\nexport default class CDSPageHeaderActionsSet extends LitElement {\n /**\n * Hidden actions that will be rendered in the overflow menu.\n */\n @state()\n hiddenItems: PageAction[] = [];\n\n /**\n * The list of page action labels for overflow menu.\n */\n @property({ type: Array, attribute: 'actions-data', reflect: true })\n actionsData: PageAction[] = [];\n\n /**\n * Container holding all action buttons and the overflow menu.\n */\n @query(`.${blockClass}`)\n private container!: HTMLElement;\n\n /**\n * Items wrapper containing the slotted elements.\n */\n @query(`.${blockClass}__items`)\n private itemsContainer!: HTMLElement;\n\n private resizeObserver: ResizeObserver | undefined;\n private isSetup = false;\n private resizeTimeout: number | undefined;\n private lastContainerWidth = 0;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.style.visibility = 'hidden';\n }\n\n firstUpdated() {\n if (!this.container) {\n return;\n }\n\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.setupOverflowDetection();\n this.isSetup = true;\n this.style.visibility = 'visible';\n });\n });\n }\n\n updated(changedProperties: Map<string, unknown>) {\n // Only re-setup if actionsData changed and we've already done initial setup\n if (\n this.isSetup &&\n changedProperties.has('actionsData') &&\n !changedProperties.has('hiddenItems')\n ) {\n this.updateComplete.then(() => {\n requestAnimationFrame(() => this.setupOverflowDetection());\n });\n }\n }\n\n private setupOverflowDetection() {\n if (!this.itemsContainer) {\n return;\n }\n\n // Disconnect existing observer if any\n this.resizeObserver?.disconnect();\n\n // Get slotted elements\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement;\n\n const checkOverflow = () => {\n const slottedElements = slot?.assignedElements() as HTMLElement[];\n\n if (!slottedElements || slottedElements.length === 0) {\n return;\n }\n\n // Use the host element's width as it reflects the actual available space\n const containerWidth =\n this.offsetWidth || this.itemsContainer.clientWidth;\n const overflowMenuWidth = 48; // Approximate width of overflow menu button\n\n // If container has no width yet, skip check\n if (containerWidth === 0) {\n return;\n }\n\n // Prevent resize loop - only recalculate if width changed significantly (>5px)\n if (Math.abs(containerWidth - this.lastContainerWidth) < 5) {\n return;\n }\n this.lastContainerWidth = containerWidth;\n\n // First, check if all items fit without overflow menu\n let totalWidth = 0;\n for (let i = 0; i < slottedElements.length; i++) {\n totalWidth += slottedElements[i].offsetWidth;\n }\n\n // If all items fit, show all and hide overflow menu\n if (totalWidth <= containerWidth) {\n slottedElements.forEach((el) => {\n el.removeAttribute('data-hidden');\n });\n this.hiddenItems = [];\n return;\n }\n\n // Items don't fit, calculate how many can fit with overflow menu\n totalWidth = 0;\n let visibleCount = 0;\n\n for (let i = 0; i < slottedElements.length; i++) {\n const itemWidth = slottedElements[i].offsetWidth;\n\n // Check if this item plus overflow menu would fit\n if (totalWidth + itemWidth + overflowMenuWidth <= containerWidth) {\n totalWidth += itemWidth;\n visibleCount = i + 1;\n } else {\n break;\n }\n }\n\n // Update visibility\n slottedElements.forEach((el, index) => {\n if (index >= visibleCount) {\n el.setAttribute('data-hidden', '');\n } else {\n el.removeAttribute('data-hidden');\n }\n });\n\n // Update hidden items for overflow menu\n this.hiddenItems = this.actionsData?.slice(visibleCount) || [];\n };\n\n // Initial check\n checkOverflow();\n\n // Observe both the host element and items container for size changes with debouncing\n this.resizeObserver = new ResizeObserver(() => {\n // Clear existing timeout\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n\n // Debounce the check to prevent rapid recalculations\n this.resizeTimeout = window.setTimeout(() => {\n checkOverflow();\n }, 100);\n });\n\n this.resizeObserver.observe(this);\n this.resizeObserver.observe(this.itemsContainer);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n }\n\n private handleOverflowItemClick(index: number) {\n // Get the slot and find the corresponding slotted element\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement;\n const slottedElements = slot?.assignedElements() as HTMLElement[];\n const hiddenIndex =\n this.actionsData.length - this.hiddenItems.length + index;\n const button = slottedElements[hiddenIndex];\n if (button) {\n button.click();\n }\n }\n\n render() {\n return html`\n <div class=\"${blockClass}\">\n <div class=\"${blockClass}__items\">\n <slot></slot>\n </div>\n\n <div data-offset ?data-hidden=${this.hiddenItems.length === 0}>\n <cds-custom-overflow-menu\n size=\"md\"\n close-on-activation\n enter-delay-ms=\"0\"\n leave-delay-ms=\"0\"\n align=\"left\"\n data-floating-menu-container\n >\n ${iconLoader(OverflowMenuVertical16, {\n class: `${blockClass}__overflow-svg`,\n slot: 'icon',\n })}\n <span slot=\"tooltip-content\">More actions</span>\n <cds-custom-overflow-menu-body flipped>\n ${repeat(\n this.hiddenItems ?? [],\n (_item, index) => index,\n (item, index) => html`\n <cds-custom-overflow-menu-item\n @click=\"${() => this.handleOverflowItemClick(index)}\"\n >\n ${item.label}\n </cds-custom-overflow-menu-item>\n `\n )}\n </cds-custom-overflow-menu-body>\n </cds-custom-overflow-menu>\n </div>\n </div>\n `;\n }\n static styles = styles;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'c4p-page-header-actions-set': CDSPageHeaderActionsSet;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAM,aAAa,GAAG,OAAO;AAOd,oCAAM,gCAAgC,WAAW;;;qBAKlC,EAAE;qBAMF,EAAE;iBAeZ;4BAEW;;CAE7B,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,MAAM,aAAa;;CAG1B,eAAe;AACb,MAAI,CAAC,KAAK,UACR;AAGF,OAAK,eAAe,WAAW;AAC7B,+BAA4B;AAC1B,SAAK,wBAAwB;AAC7B,SAAK,UAAU;AACf,SAAK,MAAM,aAAa;KACxB;IACF;;CAGJ,QAAQ,mBAAyC;AAE/C,MACE,KAAK,WACL,kBAAkB,IAAI,cAAc,IACpC,CAAC,kBAAkB,IAAI,cAAc,CAErC,MAAK,eAAe,WAAW;AAC7B,+BAA4B,KAAK,wBAAwB,CAAC;IAC1D;;CAIN,AAAQ,yBAAyB;AAC/B,MAAI,CAAC,KAAK,eACR;AAIF,OAAK,gBAAgB,YAAY;EAGjC,MAAM,OAAO,KAAK,YAAY,cAAc,OAAO;EAEnD,MAAM,sBAAsB;GAC1B,MAAM,kBAAkB,MAAM,kBAAkB;AAEhD,OAAI,CAAC,mBAAmB,gBAAgB,WAAW,EACjD;GAIF,MAAM,iBACJ,KAAK,eAAe,KAAK,eAAe;GAC1C,MAAM,oBAAoB;AAG1B,OAAI,mBAAmB,EACrB;AAIF,OAAI,KAAK,IAAI,iBAAiB,KAAK,mBAAmB,GAAG,EACvD;AAEF,QAAK,qBAAqB;GAG1B,IAAI,aAAa;AACjB,QAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,IAC1C,eAAc,gBAAgB,GAAG;AAInC,OAAI,cAAc,gBAAgB;AAChC,oBAAgB,SAAS,OAAO;AAC9B,QAAG,gBAAgB,cAAc;MACjC;AACF,SAAK,cAAc,EAAE;AACrB;;AAIF,gBAAa;GACb,IAAI,eAAe;AAEnB,QAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;IAC/C,MAAM,YAAY,gBAAgB,GAAG;AAGrC,QAAI,aAAa,YAAY,qBAAqB,gBAAgB;AAChE,mBAAc;AACd,oBAAe,IAAI;UAEnB;;AAKJ,mBAAgB,SAAS,IAAI,UAAU;AACrC,QAAI,SAAS,aACX,IAAG,aAAa,eAAe,GAAG;QAElC,IAAG,gBAAgB,cAAc;KAEnC;AAGF,QAAK,cAAc,KAAK,aAAa,MAAM,aAAa,IAAI,EAAE;;AAIhE,iBAAe;AAGf,OAAK,iBAAiB,IAAI,qBAAqB;AAE7C,OAAI,KAAK,cACP,cAAa,KAAK,cAAc;AAIlC,QAAK,gBAAgB,OAAO,iBAAiB;AAC3C,mBAAe;MACd,IAAI;IACP;AAEF,OAAK,eAAe,QAAQ,KAAK;AACjC,OAAK,eAAe,QAAQ,KAAK,eAAe;;CAGlD,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,OAAK,gBAAgB,YAAY;AACjC,MAAI,KAAK,cACP,cAAa,KAAK,cAAc;;CAIpC,AAAQ,wBAAwB,OAAe;EAM7C,MAAM,WAJO,KAAK,YAAY,cAAc,OAAO,GACrB,kBAAkB,EAE9C,KAAK,YAAY,SAAS,KAAK,YAAY,SAAS;AAEtD,MAAI,OACF,QAAO,OAAO;;CAIlB,SAAS;AACP,SAAO,IAAI;oBACK,WAAW;sBACT,WAAW;;;;wCAIO,KAAK,YAAY,WAAW,EAAE;;;;;;;;;cASxD,WAAW,wBAAwB;GACnC,OAAO,GAAG,WAAW;GACrB,MAAM;GACP,CAAC,CAAC;;;gBAGC,OACA,KAAK,eAAe,EAAE,GACrB,OAAO,UAAU,QACjB,MAAM,UAAU,IAAI;;oCAED,KAAK,wBAAwB,MAAM,CAAC;;sBAElD,KAAK,MAAM;;kBAGlB,CAAC;;;;;;;;gBAOEA;;;YAvNf,OAAO;YAMP,SAAS;CAAE,MAAM;CAAO,WAAW;CAAgB,SAAS;CAAM,CAAC;YAMnE,MAAM,IAAI,aAAa;YAMvB,MAAM,IAAI,WAAW,SAAS;sCAvBhC,cAAc,GAAG,OAAO,0BAA0B"}
|
package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.scss.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 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
|
+
|
|
10
|
+
//#region src/components/page-header/page-header-actions-set/page-header-actions-set.scss?lit
|
|
11
|
+
var page_header_actions_set_default = css([":host(c4p-page-header-actions-set){display:flex;flex:1;max-inline-size:100%;min-inline-size:0}:host(c4p-page-header-actions-set) cds-custom-overflow-menu:not(:defined){display:none}.c4p--page-header-actions-set{align-items:center;display:flex;gap:0;inline-size:100%;min-inline-size:0}.c4p--page-header-actions-set__items{align-items:center;display:flex;flex:1;gap:0;min-inline-size:0;overflow:hidden}.c4p--page-header-actions-set__items ::slotted(*){display:flex;flex-shrink:0}.c4p--page-header-actions-set__items ::slotted([data-hidden]){display:none}@media screen and (prefers-reduced-motion:reduce){[data-offset]{flex-shrink:0;opacity:1;transition:none}[data-offset][data-hidden]{opacity:0;pointer-events:none;visibility:hidden}}[data-offset]{flex-shrink:0;opacity:1;transition:opacity .15s ease-in-out}[data-offset][data-hidden]{opacity:0;pointer-events:none;visibility:hidden}.c4p--page-header-actions-set__overflow-svg{fill:var(--cds-custom-text-primary,#161616)}"]);
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { page_header_actions_set_default as default };
|
|
15
|
+
//# sourceMappingURL=page-header-actions-set.scss.js.map
|
package/es-custom/components/page-header/page-header-actions-set/page-header-actions-set.scss.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-actions-set.scss.js","names":[],"sources":["../../../../src/components/page-header/page-header-actions-set/page-header-actions-set.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@use '@carbon/styles/scss/theme' as *;\n\n$prefix: 'c4p';\n$carbon-prefix: 'cds-custom';\n\n/* stylelint-disable selector-type-no-unknown */\n:host(#{$prefix}-page-header-actions-set) {\n display: flex;\n flex: 1;\n max-inline-size: 100%;\n min-inline-size: 0;\n\n // Suppress custom elements until styles are loaded\n #{$carbon-prefix}-overflow-menu:not(:defined) {\n display: none;\n }\n}\n\n$block-class: #{$prefix}--page-header-actions-set;\n\n.#{$block-class} {\n display: flex;\n align-items: center;\n gap: 0;\n inline-size: 100%;\n min-inline-size: 0;\n\n &__items {\n display: flex;\n overflow: hidden;\n flex: 1;\n align-items: center;\n gap: 0;\n min-inline-size: 0;\n\n ::slotted(*) {\n display: flex;\n flex-shrink: 0;\n }\n\n ::slotted([data-hidden]) {\n display: none;\n }\n }\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n [data-offset] {\n flex-shrink: 0;\n opacity: 1;\n transition: none;\n\n &[data-hidden] {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n }\n }\n}\n\n[data-offset] {\n flex-shrink: 0;\n opacity: 1;\n transition: opacity 0.15s ease-in-out;\n\n &[data-hidden] {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n }\n}\n\n.#{$block-class}__overflow-svg {\n fill: $text-primary;\n}\n"],"mappings":""}
|
package/es-custom/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2020, 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 { prefix } from "../../../globals/settings.js";
|
|
9
|
+
import { __decorate } from "../../../_virtual/_@oxc-project_runtime@0.112.0/helpers/decorate.js";
|
|
10
|
+
import "../../truncated-text/index.js";
|
|
11
|
+
import { createOverflowHandler } from "../_story-assets/overflowHandler.js";
|
|
12
|
+
import "../page-header-title-breadcrumb.js";
|
|
13
|
+
import page_header_breadcrumbs_set_default$1 from "./page-header-breadcrumbs-set.scss.js";
|
|
14
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
15
|
+
import { LitElement, html } from "lit";
|
|
16
|
+
import { customElement, property, query } from "lit/decorators.js";
|
|
17
|
+
import { iconLoader } from "@carbon/web-components/es/globals/internal/icon-loader.js";
|
|
18
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
19
|
+
import '@carbon/web-components/es-custom/components/breadcrumb/index.js';
|
|
20
|
+
import '@carbon/web-components/es-custom/components/overflow-menu/index.js';
|
|
21
|
+
import OverflowMenuHorizontal16 from "@carbon/icons/es/overflow-menu--horizontal/16.js";
|
|
22
|
+
|
|
23
|
+
//#region src/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.ts
|
|
24
|
+
/**
|
|
25
|
+
* @license
|
|
26
|
+
*
|
|
27
|
+
* Copyright IBM Corp. 2025, 2026
|
|
28
|
+
*
|
|
29
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
30
|
+
* LICENSE file in the root directory of this source tree.
|
|
31
|
+
*/
|
|
32
|
+
const blockClass = `${prefix}--page-header-breadcrumbs-set`;
|
|
33
|
+
let CDSPageHeaderBreadcrumbsSet = class CDSPageHeaderBreadcrumbsSet extends LitElement {
|
|
34
|
+
constructor(..._args) {
|
|
35
|
+
super(..._args);
|
|
36
|
+
this.hiddenItems = [];
|
|
37
|
+
this.breadcrumbsData = [];
|
|
38
|
+
this.title = "";
|
|
39
|
+
}
|
|
40
|
+
connectedCallback() {
|
|
41
|
+
super.connectedCallback();
|
|
42
|
+
this.style.visibility = "hidden";
|
|
43
|
+
}
|
|
44
|
+
firstUpdated() {
|
|
45
|
+
if (!this.container) return;
|
|
46
|
+
const breadcrumb = this.shadowRoot?.querySelector("cds-custom-breadcrumb");
|
|
47
|
+
if (breadcrumb) {
|
|
48
|
+
breadcrumb.style.display = "block";
|
|
49
|
+
requestAnimationFrame(() => {
|
|
50
|
+
const ol = breadcrumb.shadowRoot?.querySelector("ol");
|
|
51
|
+
if (ol) {
|
|
52
|
+
ol.style.display = "flex";
|
|
53
|
+
ol.style.flexWrap = "unset";
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
this.updateComplete.then(() => {
|
|
58
|
+
requestAnimationFrame(() => {
|
|
59
|
+
this.overflowHandler = createOverflowHandler({
|
|
60
|
+
offsetValue: 14,
|
|
61
|
+
container: this.container,
|
|
62
|
+
onChange: (visibleItems, _) => {
|
|
63
|
+
const hiddenCount = (this.breadcrumbsData?.length ?? 1) - 1 - visibleItems.length;
|
|
64
|
+
this.hiddenItems = this.breadcrumbsData?.slice(0, hiddenCount) ?? [];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
this.style.visibility = "visible";
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
disconnectedCallback() {
|
|
74
|
+
super.disconnectedCallback();
|
|
75
|
+
if (this.overflowHandler) this.overflowHandler.disconnect();
|
|
76
|
+
}
|
|
77
|
+
render() {
|
|
78
|
+
return html`
|
|
79
|
+
<cds-custom-breadcrumb
|
|
80
|
+
aria-label="breadcrumbs"
|
|
81
|
+
class=${classMap({ [`${blockClass}`]: true })}
|
|
82
|
+
>
|
|
83
|
+
<cds-custom-breadcrumb-item
|
|
84
|
+
data-fixed
|
|
85
|
+
data-offset
|
|
86
|
+
style="display: ${this.hiddenItems?.length >= 1 ? "flex" : "none"}"
|
|
87
|
+
>
|
|
88
|
+
<cds-custom-overflow-menu breadcrumb="" align="bottom">
|
|
89
|
+
${iconLoader(OverflowMenuHorizontal16, { slot: "icon" })}
|
|
90
|
+
<span slot="tooltip-content"> Breadcrumbs </span>
|
|
91
|
+
<cds-custom-overflow-menu-body size="sm">
|
|
92
|
+
${repeat(this.hiddenItems ?? [], (item) => item.href ?? item.text, (item) => html`
|
|
93
|
+
<cds-custom-overflow-menu-item href=${item.href}>
|
|
94
|
+
${item.text}
|
|
95
|
+
</cds-custom-overflow-menu-item>
|
|
96
|
+
`)}
|
|
97
|
+
</cds-custom-overflow-menu-body>
|
|
98
|
+
</cds-custom-overflow-menu>
|
|
99
|
+
</cds-custom-breadcrumb-item>
|
|
100
|
+
${repeat(this.breadcrumbsData?.slice(this.hiddenItems?.length ?? 0, -1) ?? [], (item) => item.href ?? item.text, (item) => html`
|
|
101
|
+
<cds-custom-breadcrumb-item>
|
|
102
|
+
<cds-custom-breadcrumb-link href="${item.href}">
|
|
103
|
+
${item.text}
|
|
104
|
+
</cds-custom-breadcrumb-link>
|
|
105
|
+
</cds-custom-breadcrumb-item>
|
|
106
|
+
`)}
|
|
107
|
+
<c4p-page-header-title-breadcrumb data-fixed>
|
|
108
|
+
<cds-custom-breadcrumb-link is-currentpage="">
|
|
109
|
+
<c4p-truncated-text
|
|
110
|
+
value="${this.title}"
|
|
111
|
+
lines="1"
|
|
112
|
+
autoalign
|
|
113
|
+
></c4p-truncated-text>
|
|
114
|
+
</cds-custom-breadcrumb-link>
|
|
115
|
+
</c4p-page-header-title-breadcrumb>
|
|
116
|
+
</cds-custom-breadcrumb>
|
|
117
|
+
`;
|
|
118
|
+
}
|
|
119
|
+
static {
|
|
120
|
+
this.styles = page_header_breadcrumbs_set_default$1;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
__decorate([property({ type: Array })], CDSPageHeaderBreadcrumbsSet.prototype, "hiddenItems", void 0);
|
|
124
|
+
__decorate([property({
|
|
125
|
+
type: Array,
|
|
126
|
+
attribute: "breadcrumbs-data",
|
|
127
|
+
reflect: true
|
|
128
|
+
})], CDSPageHeaderBreadcrumbsSet.prototype, "breadcrumbsData", void 0);
|
|
129
|
+
__decorate([property({ type: String })], CDSPageHeaderBreadcrumbsSet.prototype, "title", void 0);
|
|
130
|
+
__decorate([query(`.${blockClass}`)], CDSPageHeaderBreadcrumbsSet.prototype, "container", void 0);
|
|
131
|
+
CDSPageHeaderBreadcrumbsSet = __decorate([customElement(`${prefix}-page-header-breadcrumbs-set`)], CDSPageHeaderBreadcrumbsSet);
|
|
132
|
+
var page_header_breadcrumbs_set_default = CDSPageHeaderBreadcrumbsSet;
|
|
133
|
+
|
|
134
|
+
//#endregion
|
|
135
|
+
export { page_header_breadcrumbs_set_default as default };
|
|
136
|
+
//# sourceMappingURL=page-header-breadcrumbs-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-breadcrumbs-set.js","names":["styles"],"sources":["../../../../src/components/page-header/page-header-breadcrumbs-set/page-header-breadcrumbs-set.ts"],"sourcesContent":["// cspell:words currentpage\n/**\n * @license\n *\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\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport '@carbon/web-components/es-custom/components/breadcrumb/index.js';\nimport '@carbon/web-components/es-custom/components/overflow-menu/index.js';\nimport { createOverflowHandler } from '../utils';\nimport OverflowMenuHorizontal16 from '@carbon/icons/es/overflow-menu--horizontal/16.js';\nimport { iconLoader } from '@carbon/web-components/es/globals/internal/icon-loader.js';\nimport '../../truncated-text';\nimport styles from './page-header-breadcrumbs-set.scss?lit';\nimport '../page-header-title-breadcrumb';\nimport { prefix } from '../../../globals/settings';\n\nconst blockClass = `${prefix}--page-header-breadcrumbs-set`;\n\ninterface Breadcrumb {\n text: string;\n href: string;\n}\n\n@customElement(`${prefix}-page-header-breadcrumbs-set`)\nexport default class CDSPageHeaderBreadcrumbsSet extends LitElement {\n /**\n * Hidden items that will be rendered in the overflow menu.\n */\n @property({ type: Array })\n hiddenItems: Breadcrumb[] = [];\n\n /**\n * The list of breadcrumbs.\n */\n @property({ type: Array, attribute: 'breadcrumbs-data', reflect: true })\n breadcrumbsData: Breadcrumb[] = [];\n\n /**\n * The page title to display in the title breadcrumb.\n */\n @property({ type: String })\n title = '';\n\n /**\n * Container holding all breadcrumbs and the overflow menu.\n */\n @query(`.${blockClass}`)\n private container!: HTMLElement;\n\n private overflowHandler: { disconnect: () => void } | undefined;\n\n connectedCallback(): void {\n super.connectedCallback();\n this.style.visibility = 'hidden';\n }\n\n firstUpdated() {\n if (!this.container) {\n return;\n }\n const sr = this.shadowRoot;\n const breadcrumb = sr?.querySelector(\n 'cds-custom-breadcrumb'\n ) as HTMLElement | null;\n\n if (breadcrumb) {\n breadcrumb.style.display = 'block';\n\n requestAnimationFrame(() => {\n const ol = breadcrumb.shadowRoot?.querySelector(\n 'ol'\n ) as HTMLElement | null;\n if (ol) {\n ol.style.display = 'flex';\n ol.style.flexWrap = 'unset';\n }\n });\n }\n\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.overflowHandler = createOverflowHandler({\n offsetValue: 14,\n container: this.container,\n onChange: (visibleItems: HTMLElement[], _) => {\n const totalItems = (this.breadcrumbsData?.length ?? 1) - 1; // Exclude last item\n const hiddenCount = totalItems - visibleItems.length;\n this.hiddenItems =\n this.breadcrumbsData?.slice(0, hiddenCount) ?? [];\n },\n });\n });\n });\n // On first render, all elements are initially visible. so hiding `this` visibility in connectedCallback\n // The handler runs on the second render to hide specific elements as needed.\n // The following line restores visibility after layout settles, allowing for smoother transitions.\n setTimeout(() => {\n this.style.visibility = 'visible';\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this.overflowHandler) {\n this.overflowHandler.disconnect();\n }\n }\n\n render() {\n return html`\n <cds-custom-breadcrumb\n aria-label=\"breadcrumbs\"\n class=${classMap({\n [`${blockClass}`]: true,\n })}\n >\n <cds-custom-breadcrumb-item\n data-fixed\n data-offset\n style=\"display: ${this.hiddenItems?.length >= 1 ? 'flex' : 'none'}\"\n >\n <cds-custom-overflow-menu breadcrumb=\"\" align=\"bottom\">\n ${iconLoader(OverflowMenuHorizontal16, {\n slot: 'icon',\n })}\n <span slot=\"tooltip-content\"> Breadcrumbs </span>\n <cds-custom-overflow-menu-body size=\"sm\">\n ${repeat(\n this.hiddenItems ?? [],\n (item) => item.href ?? item.text,\n (item) => html`\n <cds-custom-overflow-menu-item href=${item.href}>\n ${item.text}\n </cds-custom-overflow-menu-item>\n `\n )}\n </cds-custom-overflow-menu-body>\n </cds-custom-overflow-menu>\n </cds-custom-breadcrumb-item>\n ${repeat(\n this.breadcrumbsData?.slice(this.hiddenItems?.length ?? 0, -1) ?? [],\n (item) => item.href ?? item.text,\n (item) => html`\n <cds-custom-breadcrumb-item>\n <cds-custom-breadcrumb-link href=\"${item.href}\">\n ${item.text}\n </cds-custom-breadcrumb-link>\n </cds-custom-breadcrumb-item>\n `\n )}\n <c4p-page-header-title-breadcrumb data-fixed>\n <cds-custom-breadcrumb-link is-currentpage=\"\">\n <c4p-truncated-text\n value=\"${this.title}\"\n lines=\"1\"\n autoalign\n ></c4p-truncated-text>\n </cds-custom-breadcrumb-link>\n </c4p-page-header-title-breadcrumb>\n </cds-custom-breadcrumb>\n `;\n }\n static styles = styles;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'c4p-page-header-breadcrumbs-set': CDSPageHeaderBreadcrumbsSet;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,aAAa,GAAG,OAAO;AAQd,wCAAM,oCAAoC,WAAW;;;qBAKtC,EAAE;yBAME,EAAE;eAM1B;;CAUR,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,MAAM,aAAa;;CAG1B,eAAe;AACb,MAAI,CAAC,KAAK,UACR;EAGF,MAAM,aADK,KAAK,YACO,cACrB,iBACD;AAED,MAAI,YAAY;AACd,cAAW,MAAM,UAAU;AAE3B,+BAA4B;IAC1B,MAAM,KAAK,WAAW,YAAY,cAChC,KACD;AACD,QAAI,IAAI;AACN,QAAG,MAAM,UAAU;AACnB,QAAG,MAAM,WAAW;;KAEtB;;AAGJ,OAAK,eAAe,WAAW;AAC7B,+BAA4B;AAC1B,SAAK,kBAAkB,sBAAsB;KAC3C,aAAa;KACb,WAAW,KAAK;KAChB,WAAW,cAA6B,MAAM;MAE5C,MAAM,eADc,KAAK,iBAAiB,UAAU,KAAK,IACxB,aAAa;AAC9C,WAAK,cACH,KAAK,iBAAiB,MAAM,GAAG,YAAY,IAAI,EAAE;;KAEtD,CAAC;KACF;IACF;AAIF,mBAAiB;AACf,QAAK,MAAM,aAAa;IACxB;;CAGJ,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,MAAI,KAAK,gBACP,MAAK,gBAAgB,YAAY;;CAIrC,SAAS;AACP,SAAO,IAAI;;;gBAGC,SAAS,GACd,GAAG,eAAe,MACpB,CAAC,CAAC;;;;;4BAKiB,KAAK,aAAa,UAAU,IAAI,SAAS,OAAO;;;cAG9D,WAAW,0BAA0B,EACrC,MAAM,QACP,CAAC,CAAC;;;gBAGC,OACA,KAAK,eAAe,EAAE,GACrB,SAAS,KAAK,QAAQ,KAAK,OAC3B,SAAS,IAAI;iDACmB,KAAK,KAAK;sBACrC,KAAK,KAAK;;kBAGjB,CAAC;;;;UAIN,OACA,KAAK,iBAAiB,MAAM,KAAK,aAAa,UAAU,GAAG,GAAG,IAAI,EAAE,GACnE,SAAS,KAAK,QAAQ,KAAK,OAC3B,SAAS,IAAI;;2CAEmB,KAAK,KAAK;kBACnC,KAAK,KAAK;;;YAInB,CAAC;;;;uBAIa,KAAK,MAAM;;;;;;;;;;gBAShBA;;;YAtIf,SAAS,EAAE,MAAM,OAAO,CAAC;YAMzB,SAAS;CAAE,MAAM;CAAO,WAAW;CAAoB,SAAS;CAAM,CAAC;YAMvE,SAAS,EAAE,MAAM,QAAQ,CAAC;YAM1B,MAAM,IAAI,aAAa;0CAvBzB,cAAc,GAAG,OAAO,8BAA8B"}
|