@brandsync/wc 1.18.0 → 1.19.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/CHANGELOG.md +8 -0
- package/REFERENCE.md +71 -8
- package/custom-elements.json +382 -4
- package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
- package/dist/brandsync-wc/p-02314404.entry.js +1 -0
- package/dist/brandsync-wc/{p-fd78ff22.entry.js → p-028d3244.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f6caa623.entry.js → p-03ad83a3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5cd1abc7.entry.js → p-0819add7.entry.js} +1 -1
- package/dist/brandsync-wc/{p-47ce984f.entry.js → p-08649f52.entry.js} +1 -1
- package/dist/brandsync-wc/p-0dff9822.entry.js +1 -0
- package/dist/brandsync-wc/{p-7cfb1be6.entry.js → p-10b8937f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-bd901b06.entry.js → p-129a4de7.entry.js} +1 -1
- package/dist/brandsync-wc/p-1580c56c.entry.js +1 -0
- package/dist/brandsync-wc/p-15c6f0f3.entry.js +1 -0
- package/dist/brandsync-wc/{p-1d8c2ec1.entry.js → p-171fa239.entry.js} +1 -1
- package/dist/brandsync-wc/{p-95c7f350.entry.js → p-197ac73f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-7c29678d.entry.js → p-1e33bc10.entry.js} +1 -1
- package/dist/brandsync-wc/{p-757cd066.entry.js → p-21e5d4d6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-5ac75555.entry.js → p-2389f473.entry.js} +1 -1
- package/dist/brandsync-wc/{p-50c116eb.entry.js → p-25914efc.entry.js} +1 -1
- package/dist/brandsync-wc/{p-345b5ef3.entry.js → p-26e0ab15.entry.js} +1 -1
- package/dist/brandsync-wc/{p-9787bc0f.entry.js → p-270b2cb0.entry.js} +1 -1
- package/dist/brandsync-wc/{p-15f06226.entry.js → p-27663faf.entry.js} +1 -1
- package/dist/brandsync-wc/p-28c38959.entry.js +1 -0
- package/dist/brandsync-wc/{p-1a62e5b7.entry.js → p-2a8b2ac9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-344695a8.entry.js → p-2a967b45.entry.js} +1 -1
- package/dist/brandsync-wc/p-2b3d0bd4.entry.js +1 -0
- package/dist/brandsync-wc/p-30736034.entry.js +1 -0
- package/dist/brandsync-wc/{p-5868793d.entry.js → p-30ff0659.entry.js} +1 -1
- package/dist/brandsync-wc/{p-cb002195.entry.js → p-313ec145.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e4e9c961.entry.js → p-3627e0c6.entry.js} +1 -1
- package/dist/brandsync-wc/{p-b7bbc52f.entry.js → p-38a2210a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-a8c2855c.entry.js → p-391504ab.entry.js} +1 -1
- package/dist/brandsync-wc/{p-78114ea3.entry.js → p-3b212a8a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-1aa0f9a3.entry.js → p-3c6980b9.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4d4997af.entry.js → p-42fcf134.entry.js} +1 -1
- package/dist/brandsync-wc/{p-8f82ea7e.entry.js → p-4928c4ad.entry.js} +1 -1
- package/dist/brandsync-wc/{p-841a80b4.entry.js → p-4c51da66.entry.js} +1 -1
- package/dist/brandsync-wc/{p-50f60ed6.entry.js → p-4d1ee16e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-fb84002e.entry.js → p-4dfd4715.entry.js} +1 -1
- package/dist/brandsync-wc/p-4ffcf41a.entry.js +1 -0
- package/dist/brandsync-wc/{p-9bd739e5.entry.js → p-527fd08d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-55d336da.entry.js → p-5371b31c.entry.js} +1 -1
- package/dist/brandsync-wc/p-568de1b0.entry.js +1 -0
- package/dist/brandsync-wc/p-590deea0.entry.js +1 -0
- package/dist/brandsync-wc/{p-ae207fd5.entry.js → p-64e19200.entry.js} +1 -1
- package/dist/brandsync-wc/p-6afacd47.entry.js +1 -0
- package/dist/brandsync-wc/p-6f32a08e.entry.js +1 -0
- package/dist/brandsync-wc/{p-08e0e704.entry.js → p-70a5897b.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c020ffdf.entry.js → p-7160a72e.entry.js} +1 -1
- package/dist/brandsync-wc/p-776b677f.entry.js +1 -0
- package/dist/brandsync-wc/{p-56a45582.entry.js → p-78c94cfe.entry.js} +1 -1
- package/dist/brandsync-wc/p-7bff3aa5.entry.js +1 -0
- package/dist/brandsync-wc/{p-e32a6df1.entry.js → p-7c741b8d.entry.js} +1 -1
- package/dist/brandsync-wc/p-86f04e9e.entry.js +1 -0
- package/dist/brandsync-wc/{p-a51355d9.entry.js → p-8a18864a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-0a6f22fe.entry.js → p-8a606b38.entry.js} +1 -1
- package/dist/brandsync-wc/p-8ac86d16.entry.js +1 -0
- package/dist/brandsync-wc/{p-a424a709.entry.js → p-8b21f623.entry.js} +1 -1
- package/dist/brandsync-wc/{p-1a47774e.entry.js → p-8d1ad4b0.entry.js} +1 -1
- package/dist/brandsync-wc/{p-58179e15.entry.js → p-8e107d7a.entry.js} +1 -1
- package/dist/brandsync-wc/{p-4ff649f1.entry.js → p-90d8d45f.entry.js} +1 -1
- package/dist/brandsync-wc/{p-f86b58bf.entry.js → p-9751a12d.entry.js} +1 -1
- package/dist/brandsync-wc/{p-bfff7cbb.entry.js → p-9868ee72.entry.js} +1 -1
- package/dist/brandsync-wc/{p-6c987bc9.entry.js → p-9ba500f1.entry.js} +1 -1
- package/dist/brandsync-wc/p-9fa7bd83.entry.js +1 -0
- package/dist/brandsync-wc/p-BSt9HeTa.js +1 -0
- package/dist/brandsync-wc/{p-be7272ce.entry.js → p-a2bfbf02.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d42a26c1.entry.js → p-a50c5e68.entry.js} +1 -1
- package/dist/brandsync-wc/{p-ee63423c.entry.js → p-a688a7ca.entry.js} +1 -1
- package/dist/brandsync-wc/{p-55d97d1d.entry.js → p-a92c0f06.entry.js} +1 -1
- package/dist/brandsync-wc/p-ab301e9d.entry.js +1 -0
- package/dist/brandsync-wc/{p-43f8afda.entry.js → p-ab99b8c3.entry.js} +1 -1
- package/dist/brandsync-wc/{p-c02ed03d.entry.js → p-c01e231e.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d985e569.entry.js → p-d15e48eb.entry.js} +1 -1
- package/dist/brandsync-wc/p-d484e976.entry.js +1 -0
- package/dist/brandsync-wc/{p-31ca98c3.entry.js → p-d80eecf4.entry.js} +1 -1
- package/dist/brandsync-wc/p-dc2ea372.entry.js +1 -0
- package/dist/brandsync-wc/p-de0dfd1c.entry.js +1 -0
- package/dist/brandsync-wc/p-e1d30e31.entry.js +1 -0
- package/dist/brandsync-wc/{p-0082db6a.entry.js → p-e5235e76.entry.js} +1 -1
- package/dist/brandsync-wc/{p-fa91106e.entry.js → p-e776d145.entry.js} +1 -1
- package/dist/brandsync-wc/{p-d3fe8cea.entry.js → p-e7c80f48.entry.js} +1 -1
- package/dist/brandsync-wc/{p-34851d6d.entry.js → p-eb680cff.entry.js} +1 -1
- package/dist/brandsync-wc/p-ebcd105d.entry.js +1 -0
- package/dist/brandsync-wc/p-f10b19a8.entry.js +1 -0
- package/dist/brandsync-wc/{p-87a10ee1.entry.js → p-f3b60029.entry.js} +1 -1
- package/dist/brandsync-wc/{p-14b4f4c4.entry.js → p-f4796801.entry.js} +1 -1
- package/dist/brandsync-wc/p-f5e6fdf8.entry.js +1 -0
- package/dist/brandsync-wc/p-f93127e1.entry.js +1 -0
- package/dist/brandsync-wc/{p-e3e15670.entry.js → p-f96f45ae.entry.js} +1 -1
- package/dist/brandsync-wc/{p-e2491db8.entry.js → p-feb46fa6.entry.js} +1 -1
- package/dist/cjs/brandsync-wc.cjs.js +1 -1
- package/dist/cjs/bs-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/bs-accordion.cjs.entry.js +60 -3
- package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-greeting.cjs.entry.js +1 -1
- package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
- package/dist/cjs/bs-app-recent-item_3.cjs.entry.js +7 -7
- package/dist/cjs/bs-app-shell.cjs.entry.js +1 -1
- package/dist/cjs/bs-app-switcher.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-attachment.cjs.entry.js +1 -1
- package/dist/cjs/bs-badge.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumb-overflow.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/bs-breadcrumbs.cjs.entry.js +1 -1
- package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-button_2.cjs.entry.js +198 -0
- package/dist/cjs/bs-card.cjs.entry.js +1 -1
- package/dist/cjs/bs-carousel.cjs.entry.js +70 -5
- package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +2 -2
- package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +1 -1
- package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +2 -2
- package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +1 -1
- package/dist/cjs/bs-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-filter.cjs.entry.js +2 -2
- package/dist/cjs/bs-chip-informative.cjs.entry.js +1 -1
- package/dist/cjs/bs-chip-input.cjs.entry.js +2 -2
- package/dist/cjs/bs-citation-preview.cjs.entry.js +1 -1
- package/dist/cjs/bs-command-palette.cjs.entry.js +1 -1
- package/dist/cjs/bs-compact-menu-block_2.cjs.entry.js +4 -4
- package/dist/cjs/bs-company-switcher.cjs.entry.js +2 -2
- package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
- package/dist/cjs/bs-composer.cjs.entry.js +1 -1
- package/dist/cjs/bs-container.cjs.entry.js +1 -1
- package/dist/cjs/bs-data-table.cjs.entry.js +2 -2
- package/dist/cjs/bs-datepicker.cjs.entry.js +1 -1
- package/dist/cjs/bs-dialog.cjs.entry.js +54 -3
- package/dist/cjs/bs-divider.cjs.entry.js +1 -1
- package/dist/cjs/bs-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/bs-error-page.cjs.entry.js +1 -1
- package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
- package/dist/cjs/bs-global-search.cjs.entry.js +2 -2
- package/dist/cjs/bs-grid.cjs.entry.js +2 -2
- package/dist/cjs/bs-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/bs-icon-tile.cjs.entry.js +2 -2
- package/dist/cjs/bs-inline-tab.cjs.entry.js +2 -2
- package/dist/cjs/bs-input_3.cjs.entry.js +5 -5
- package/dist/cjs/bs-key-caps.cjs.entry.js +1 -1
- package/dist/cjs/bs-key.cjs.entry.js +1 -1
- package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +2 -2
- package/dist/cjs/bs-list-item_2.cjs.entry.js +51 -5
- package/dist/cjs/bs-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-mega-menu.cjs.entry.js +52 -2
- package/dist/cjs/bs-message-list.cjs.entry.js +1 -1
- package/dist/cjs/bs-message.cjs.entry.js +1 -1
- package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
- package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
- package/dist/cjs/bs-navigation-header.cjs.entry.js +2 -2
- package/dist/cjs/bs-page-header.cjs.entry.js +1 -1
- package/dist/cjs/bs-pagination.cjs.entry.js +2 -2
- package/dist/cjs/bs-presence.cjs.entry.js +88 -0
- package/dist/cjs/bs-progress-linear.cjs.entry.js +2 -2
- package/dist/cjs/bs-progress.cjs.entry.js +2 -2
- package/dist/cjs/bs-qr-code.cjs.entry.js +1 -1
- package/dist/cjs/bs-radio.cjs.entry.js +4 -4
- package/dist/cjs/bs-search-item.cjs.entry.js +2 -2
- package/dist/cjs/bs-session-timeout.cjs.entry.js +1 -1
- package/dist/cjs/bs-shortcut-row.cjs.entry.js +1 -1
- package/dist/cjs/bs-side-panel.cjs.entry.js +52 -3
- package/dist/cjs/bs-slider.cjs.entry.js +1 -1
- package/dist/cjs/bs-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/bs-source-link.cjs.entry.js +4 -3
- package/dist/cjs/bs-spinner.cjs.entry.js +1 -1
- package/dist/cjs/bs-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/bs-stack.cjs.entry.js +1 -1
- package/dist/cjs/bs-stepper-step.cjs.entry.js +1 -1
- package/dist/cjs/bs-stepper.cjs.entry.js +1 -1
- package/dist/cjs/bs-switch.cjs.entry.js +4 -11
- package/dist/cjs/bs-tab_3.cjs.entry.js +3 -3
- package/dist/cjs/bs-timepicker.cjs.entry.js +2 -2
- package/dist/cjs/bs-toast.cjs.entry.js +1 -1
- package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +61 -3
- package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/bs-tree-item.cjs.entry.js +3 -3
- package/dist/cjs/bs-tree.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/motion-DOlI71lc.js +43 -0
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/bs-accordion/bs-accordion.cmp.test.js +21 -6
- package/dist/collection/components/bs-accordion/bs-accordion.css +15 -0
- package/dist/collection/components/bs-accordion/bs-accordion.js +71 -2
- package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
- package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
- package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
- package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
- package/dist/collection/components/bs-app-recent-item/bs-app-recent-item.js +3 -3
- package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
- package/dist/collection/components/bs-app-switcher/bs-app-switcher.js +1 -1
- package/dist/collection/components/bs-app-tile/bs-app-tile.js +3 -3
- package/dist/collection/components/bs-attachment/bs-attachment.js +1 -1
- package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
- package/dist/collection/components/bs-badge/bs-badge.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb/bs-breadcrumb.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumb-overflow/bs-breadcrumb-overflow.js +1 -1
- package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
- package/dist/collection/components/bs-button/bs-button/bs-button.cmp.test.js +12 -0
- package/dist/collection/components/bs-button/bs-button/bs-button.css +2 -0
- package/dist/collection/components/bs-button/bs-button/bs-button.js +4 -1
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.css +2 -0
- package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +2 -1
- package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
- package/dist/collection/components/bs-card/bs-card.js +1 -1
- package/dist/collection/components/bs-carousel/bs-carousel.cmp.test.js +39 -1
- package/dist/collection/components/bs-carousel/bs-carousel.css +9 -0
- package/dist/collection/components/bs-carousel/bs-carousel.js +75 -4
- package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
- package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
- package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.css +2 -0
- package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +2 -1
- package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.css +2 -0
- package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +2 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
- package/dist/collection/components/bs-checkbox/bs-checkbox.css +7 -0
- package/dist/collection/components/bs-checkbox/bs-checkbox.js +2 -1
- package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.css +2 -0
- package/dist/collection/components/bs-chip/bs-chip-filter/bs-chip-filter.js +2 -1
- package/dist/collection/components/bs-chip/bs-chip-informative/bs-chip-informative.js +1 -1
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.css +7 -0
- package/dist/collection/components/bs-chip/bs-chip-input/bs-chip-input.js +2 -1
- package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
- package/dist/collection/components/bs-command-palette/bs-command-palette.js +1 -1
- package/dist/collection/components/bs-compact-menu-block/bs-compact-menu-block.js +1 -1
- package/dist/collection/components/bs-company-switcher/bs-company-switcher.js +2 -2
- package/dist/collection/components/bs-composer/bs-composer.js +1 -1
- package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
- package/dist/collection/components/bs-container/bs-container.js +1 -1
- package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
- package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
- package/dist/collection/components/bs-dialog/bs-dialog.cmp.test.js +32 -0
- package/dist/collection/components/bs-dialog/bs-dialog.css +16 -0
- package/dist/collection/components/bs-dialog/bs-dialog.js +61 -3
- package/dist/collection/components/bs-divider/bs-divider.js +1 -1
- package/dist/collection/components/bs-empty-state/bs-empty-state.js +1 -1
- package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
- package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
- package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
- package/dist/collection/components/bs-global-search/bs-global-search.js +2 -2
- package/dist/collection/components/bs-grid/bs-grid.js +2 -2
- package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
- package/dist/collection/components/bs-input/bs-input.js +2 -2
- package/dist/collection/components/bs-key/bs-key.js +1 -1
- package/dist/collection/components/bs-key-caps/bs-key-caps.js +1 -1
- package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +2 -2
- package/dist/collection/components/bs-list/bs-list.js +1 -1
- package/dist/collection/components/bs-list-item/bs-list-item.css +2 -0
- package/dist/collection/components/bs-list-item/bs-list-item.js +2 -1
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.cmp.test.js +73 -0
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.css +5 -1
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.js +89 -4
- package/dist/collection/components/bs-mega-menu/bs-mega-menu.stories.js +5 -5
- package/dist/collection/components/bs-menu/bs-menu.js +1 -1
- package/dist/collection/components/bs-menu-block/bs-menu-block.js +3 -3
- package/dist/collection/components/bs-menu-item/bs-menu-item.css +2 -0
- package/dist/collection/components/bs-menu-item/bs-menu-item.js +2 -1
- package/dist/collection/components/bs-message/bs-message.js +1 -1
- package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
- package/dist/collection/components/bs-page-header/bs-page-header.js +1 -1
- package/dist/collection/components/bs-pagination/bs-pagination.css +2 -0
- package/dist/collection/components/bs-pagination/bs-pagination.js +2 -1
- package/dist/collection/components/bs-popover/bs-popover.cmp.test.js +20 -0
- package/dist/collection/components/bs-popover/bs-popover.css +3 -0
- package/dist/collection/components/bs-popover/bs-popover.js +59 -2
- package/dist/collection/components/bs-presence/bs-presence.cmp.test.js +64 -0
- package/dist/collection/components/bs-presence/bs-presence.css +80 -0
- package/dist/collection/components/bs-presence/bs-presence.js +233 -0
- package/dist/collection/components/bs-presence/bs-presence.stories.js +101 -0
- package/dist/collection/components/bs-progress/bs-progress.js +2 -2
- package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
- package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
- package/dist/collection/components/bs-radio/bs-radio.css +6 -0
- package/dist/collection/components/bs-radio/bs-radio.js +4 -3
- package/dist/collection/components/bs-ripple/bs-ripple.cmp.test.js +45 -0
- package/dist/collection/components/bs-ripple/bs-ripple.css +32 -0
- package/dist/collection/components/bs-ripple/bs-ripple.js +188 -0
- package/dist/collection/components/bs-ripple/bs-ripple.stories.js +33 -0
- package/dist/collection/components/bs-search-item/bs-search-item.css +2 -0
- package/dist/collection/components/bs-search-item/bs-search-item.js +2 -1
- package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
- package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +1 -1
- package/dist/collection/components/bs-side-panel/bs-side-panel.cmp.test.js +19 -0
- package/dist/collection/components/bs-side-panel/bs-side-panel.css +8 -0
- package/dist/collection/components/bs-side-panel/bs-side-panel.js +58 -2
- package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
- package/dist/collection/components/bs-slider/bs-slider.js +1 -1
- package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
- package/dist/collection/components/bs-source-link/bs-source-link.css +2 -0
- package/dist/collection/components/bs-source-link/bs-source-link.js +4 -2
- package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
- package/dist/collection/components/bs-split-pane/bs-split-pane.js +1 -1
- package/dist/collection/components/bs-stack/bs-stack.js +1 -1
- package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
- package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
- package/dist/collection/components/bs-switch/bs-switch.css +9 -0
- package/dist/collection/components/bs-switch/bs-switch.js +4 -10
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.css +2 -0
- package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +2 -1
- package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +2 -1
- package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
- package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
- package/dist/collection/components/bs-toast/bs-toast.js +1 -1
- package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
- package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.cmp.test.js +53 -2
- package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.css +3 -0
- package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +70 -3
- package/dist/collection/components/bs-tree/bs-tree.js +1 -1
- package/dist/collection/components/bs-tree-item/bs-tree-item.css +2 -0
- package/dist/collection/components/bs-tree-item/bs-tree-item.js +3 -2
- package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
- package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
- package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +2 -2
- package/dist/collection/utils/motion.js +37 -0
- package/dist/components/bs-accordion-group.js +1 -1
- package/dist/components/bs-accordion.js +1 -1
- package/dist/components/bs-ai-disclaimer.js +1 -1
- package/dist/components/bs-ai-greeting.js +1 -1
- package/dist/components/bs-ai-thinking.js +1 -1
- package/dist/components/bs-app-recent-item.js +1 -1
- package/dist/components/bs-app-shell.js +1 -1
- package/dist/components/bs-app-switcher.js +1 -1
- package/dist/components/bs-app-tile.js +1 -1
- package/dist/components/bs-attachment-list.js +1 -1
- package/dist/components/bs-attachment.js +1 -1
- package/dist/components/bs-badge.js +1 -1
- package/dist/components/bs-breadcrumb-overflow.js +1 -1
- package/dist/components/bs-breadcrumb.js +1 -1
- package/dist/components/bs-breadcrumbs.js +1 -1
- package/dist/components/bs-button-skeleton.js +1 -1
- package/dist/components/bs-button.js +1 -1
- package/dist/components/bs-card.js +1 -1
- package/dist/components/bs-carousel.js +1 -1
- package/dist/components/bs-chatbot-feedback.js +1 -1
- package/dist/components/bs-chatbot-header.js +1 -1
- package/dist/components/bs-chatbot-response-action.js +1 -1
- package/dist/components/bs-chatbot-sources-drawer.js +1 -1
- package/dist/components/bs-chatbot-suggestion-button.js +1 -1
- package/dist/components/bs-checkbox-skeleton.js +1 -1
- package/dist/components/bs-checkbox.js +1 -1
- package/dist/components/bs-chip-filter.js +1 -1
- package/dist/components/bs-chip-informative.js +1 -1
- package/dist/components/bs-chip-input.js +1 -1
- package/dist/components/bs-citation-preview.js +1 -1
- package/dist/components/bs-command-palette.js +1 -1
- package/dist/components/bs-compact-menu-block.js +1 -1
- package/dist/components/bs-company-switcher.js +1 -1
- package/dist/components/bs-composer-status-banner.js +1 -1
- package/dist/components/bs-composer.js +1 -1
- package/dist/components/bs-container.js +1 -1
- package/dist/components/bs-cookie-consent.js +1 -1
- package/dist/components/bs-data-table.js +1 -1
- package/dist/components/bs-datepicker.js +1 -1
- package/dist/components/bs-dialog.js +1 -1
- package/dist/components/bs-divider.js +1 -1
- package/dist/components/bs-empty-state.js +1 -1
- package/dist/components/bs-error-page.js +1 -1
- package/dist/components/bs-file-upload-item.js +1 -1
- package/dist/components/bs-file-upload.js +1 -1
- package/dist/components/bs-global-search.js +1 -1
- package/dist/components/bs-grid.js +1 -1
- package/dist/components/bs-icon-button.js +1 -1
- package/dist/components/bs-icon-tile.js +1 -1
- package/dist/components/bs-inline-tab.js +1 -1
- package/dist/components/bs-input.js +1 -1
- package/dist/components/bs-key-caps.js +1 -1
- package/dist/components/bs-key.js +1 -1
- package/dist/components/bs-keyboard-shortcuts.js +1 -1
- package/dist/components/bs-list-item.js +1 -1
- package/dist/components/bs-list.js +1 -1
- package/dist/components/bs-mega-menu.js +1 -1
- package/dist/components/bs-menu-block.js +1 -1
- package/dist/components/bs-menu-item.js +1 -1
- package/dist/components/bs-menu.js +1 -1
- package/dist/components/bs-message-list.js +1 -1
- package/dist/components/bs-message.js +1 -1
- package/dist/components/bs-navigation-drawer-item.js +1 -1
- package/dist/components/bs-navigation-drawer.js +1 -1
- package/dist/components/bs-navigation-header.js +1 -1
- package/dist/components/bs-onboarding-checklist.js +1 -1
- package/dist/components/bs-page-header.js +1 -1
- package/dist/components/bs-pagination.js +1 -1
- package/dist/components/bs-popover.js +1 -1
- package/dist/components/bs-presence.d.ts +11 -0
- package/dist/components/bs-presence.js +1 -0
- package/dist/components/bs-product-tour.js +1 -1
- package/dist/components/bs-progress-linear.js +1 -1
- package/dist/components/bs-progress.js +1 -1
- package/dist/components/bs-qr-code.js +1 -1
- package/dist/components/bs-radio.js +1 -1
- package/dist/components/bs-ripple.d.ts +11 -0
- package/dist/components/bs-ripple.js +1 -0
- package/dist/components/bs-search-item.js +1 -1
- package/dist/components/bs-session-timeout.js +1 -1
- package/dist/components/bs-shortcut-row.js +1 -1
- package/dist/components/bs-side-panel.js +1 -1
- package/dist/components/bs-skeleton.js +1 -1
- package/dist/components/bs-slider.js +1 -1
- package/dist/components/bs-snackbar.js +1 -1
- package/dist/components/bs-source-link.js +1 -1
- package/dist/components/bs-spinner.js +1 -1
- package/dist/components/bs-split-pane.js +1 -1
- package/dist/components/bs-stack.js +1 -1
- package/dist/components/bs-stepper-step.js +1 -1
- package/dist/components/bs-stepper.js +1 -1
- package/dist/components/bs-switch.js +1 -1
- package/dist/components/bs-tab.js +1 -1
- package/dist/components/bs-tabs.js +1 -1
- package/dist/components/bs-timepicker.js +1 -1
- package/dist/components/bs-toast.js +1 -1
- package/dist/components/bs-tooltip-trigger.js +1 -1
- package/dist/components/bs-tooltip.js +1 -1
- package/dist/components/bs-tree-item.js +1 -1
- package/dist/components/bs-tree.js +1 -1
- package/dist/components/bs-whats-new-entry.js +1 -1
- package/dist/components/bs-whats-new.js +1 -1
- package/dist/components/p--Tyv3LIl.js +1 -0
- package/dist/components/{p-D4_8H0vn.js → p-4yShCgRb.js} +1 -1
- package/dist/components/p-6Rr9bjVN.js +1 -0
- package/dist/components/{p-I1_Q3HQu.js → p-BHzj13sd.js} +1 -1
- package/dist/components/p-BIxcCDgl.js +1 -0
- package/dist/components/{p-DcdFuKG9.js → p-BQ4rSQDm.js} +1 -1
- package/dist/components/p-BSt9HeTa.js +1 -0
- package/dist/components/p-BWRkbt0f.js +1 -0
- package/dist/components/p-BfCah-Ij.js +1 -0
- package/dist/components/p-BpkPo4ay.js +1 -0
- package/dist/components/{p-Co36mHEU.js → p-CFR3Q0io.js} +1 -1
- package/dist/components/{p-C3erqJFy.js → p-CHZE_FrW.js} +1 -1
- package/dist/components/p-CVQycAap.js +1 -0
- package/dist/components/{p-CmlzHRkn.js → p-Cr8cHmpM.js} +1 -1
- package/dist/components/p-CvSewXZF.js +1 -0
- package/dist/components/{p-Dl0FedE5.js → p-D3PuUD8Z.js} +1 -1
- package/dist/components/p-D5eN9Lfa.js +1 -0
- package/dist/components/{p-qXdgl7VG.js → p-DDgzEg1C.js} +1 -1
- package/dist/components/p-DF2FcJPs.js +1 -0
- package/dist/components/{p-DzvXbBvk.js → p-DLnZG_G9.js} +1 -1
- package/dist/components/{p-Deq0LzGO.js → p-DXbcyEgd.js} +1 -1
- package/dist/components/{p-C1owRphU.js → p-DXwatzvM.js} +1 -1
- package/dist/components/{p-erdtytMq.js → p-DcD5eV_Z.js} +1 -1
- package/dist/components/{p-B6KgEbdM.js → p-Dj393s3S.js} +1 -1
- package/dist/components/p-DtkTnaOp.js +1 -0
- package/dist/components/{p-DBvhi__l.js → p-EGNLb4cQ.js} +1 -1
- package/dist/components/{p-DFd4pP4i.js → p-Jik5UkAe.js} +1 -1
- package/dist/components/p-XZXdZpt4.js +1 -0
- package/dist/components/{p-Cd7p-48Q.js → p-Y5FyLR8G.js} +1 -1
- package/dist/components/{p-DtbeCgXo.js → p-ZfE38vXZ.js} +1 -1
- package/dist/components/{p-c-g3-oVu.js → p-lPTgyF9v.js} +1 -1
- package/dist/components/p-syO0ipbw.js +1 -0
- package/dist/components/p-up01gvHY.js +1 -0
- package/dist/esm/brandsync-wc.js +1 -1
- package/dist/esm/bs-accordion-group.entry.js +1 -1
- package/dist/esm/bs-accordion.entry.js +61 -4
- package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
- package/dist/esm/bs-ai-greeting.entry.js +1 -1
- package/dist/esm/bs-ai-thinking.entry.js +1 -1
- package/dist/esm/bs-app-recent-item_3.entry.js +7 -7
- package/dist/esm/bs-app-shell.entry.js +1 -1
- package/dist/esm/bs-app-switcher.entry.js +1 -1
- package/dist/esm/bs-attachment-list.entry.js +1 -1
- package/dist/esm/bs-attachment.entry.js +1 -1
- package/dist/esm/bs-badge.entry.js +1 -1
- package/dist/esm/bs-breadcrumb-overflow.entry.js +1 -1
- package/dist/esm/bs-breadcrumb.entry.js +1 -1
- package/dist/esm/bs-breadcrumbs.entry.js +1 -1
- package/dist/esm/bs-button-skeleton.entry.js +1 -1
- package/dist/esm/bs-button_2.entry.js +195 -0
- package/dist/esm/bs-card.entry.js +1 -1
- package/dist/esm/bs-carousel.entry.js +70 -5
- package/dist/esm/bs-chatbot-feedback.entry.js +1 -1
- package/dist/esm/bs-chatbot-header.entry.js +1 -1
- package/dist/esm/bs-chatbot-response-action.entry.js +2 -2
- package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
- package/dist/esm/bs-chatbot-suggestion-button.entry.js +2 -2
- package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
- package/dist/esm/bs-checkbox.entry.js +2 -2
- package/dist/esm/bs-chip-filter.entry.js +2 -2
- package/dist/esm/bs-chip-informative.entry.js +1 -1
- package/dist/esm/bs-chip-input.entry.js +2 -2
- package/dist/esm/bs-citation-preview.entry.js +1 -1
- package/dist/esm/bs-command-palette.entry.js +1 -1
- package/dist/esm/bs-compact-menu-block_2.entry.js +4 -4
- package/dist/esm/bs-company-switcher.entry.js +2 -2
- package/dist/esm/bs-composer-status-banner.entry.js +1 -1
- package/dist/esm/bs-composer.entry.js +1 -1
- package/dist/esm/bs-container.entry.js +1 -1
- package/dist/esm/bs-data-table.entry.js +2 -2
- package/dist/esm/bs-datepicker.entry.js +1 -1
- package/dist/esm/bs-dialog.entry.js +55 -4
- package/dist/esm/bs-divider.entry.js +1 -1
- package/dist/esm/bs-empty-state.entry.js +1 -1
- package/dist/esm/bs-error-page.entry.js +1 -1
- package/dist/esm/bs-file-upload-item.entry.js +1 -1
- package/dist/esm/bs-file-upload.entry.js +1 -1
- package/dist/esm/bs-global-search.entry.js +2 -2
- package/dist/esm/bs-grid.entry.js +2 -2
- package/dist/esm/bs-icon-button.entry.js +2 -2
- package/dist/esm/bs-icon-tile.entry.js +2 -2
- package/dist/esm/bs-inline-tab.entry.js +2 -2
- package/dist/esm/bs-input_3.entry.js +5 -5
- package/dist/esm/bs-key-caps.entry.js +1 -1
- package/dist/esm/bs-key.entry.js +1 -1
- package/dist/esm/bs-keyboard-shortcuts.entry.js +2 -2
- package/dist/esm/bs-list-item_2.entry.js +51 -5
- package/dist/esm/bs-list.entry.js +1 -1
- package/dist/esm/bs-mega-menu.entry.js +53 -3
- package/dist/esm/bs-message-list.entry.js +1 -1
- package/dist/esm/bs-message.entry.js +1 -1
- package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
- package/dist/esm/bs-navigation-drawer.entry.js +2 -2
- package/dist/esm/bs-navigation-header.entry.js +2 -2
- package/dist/esm/bs-page-header.entry.js +1 -1
- package/dist/esm/bs-pagination.entry.js +2 -2
- package/dist/esm/bs-presence.entry.js +86 -0
- package/dist/esm/bs-progress-linear.entry.js +2 -2
- package/dist/esm/bs-progress.entry.js +2 -2
- package/dist/esm/bs-qr-code.entry.js +1 -1
- package/dist/esm/bs-radio.entry.js +4 -4
- package/dist/esm/bs-search-item.entry.js +2 -2
- package/dist/esm/bs-session-timeout.entry.js +1 -1
- package/dist/esm/bs-shortcut-row.entry.js +1 -1
- package/dist/esm/bs-side-panel.entry.js +52 -3
- package/dist/esm/bs-slider.entry.js +1 -1
- package/dist/esm/bs-snackbar.entry.js +1 -1
- package/dist/esm/bs-source-link.entry.js +4 -3
- package/dist/esm/bs-spinner.entry.js +1 -1
- package/dist/esm/bs-split-pane.entry.js +1 -1
- package/dist/esm/bs-stack.entry.js +1 -1
- package/dist/esm/bs-stepper-step.entry.js +1 -1
- package/dist/esm/bs-stepper.entry.js +1 -1
- package/dist/esm/bs-switch.entry.js +4 -11
- package/dist/esm/bs-tab_3.entry.js +3 -3
- package/dist/esm/bs-timepicker.entry.js +2 -2
- package/dist/esm/bs-toast.entry.js +1 -1
- package/dist/esm/bs-tooltip-trigger.entry.js +62 -4
- package/dist/esm/bs-tooltip.entry.js +1 -1
- package/dist/esm/bs-tree-item.entry.js +3 -3
- package/dist/esm/bs-tree.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/motion-BSt9HeTa.js +39 -0
- package/dist/types/components/bs-accordion/bs-accordion.d.ts +22 -0
- package/dist/types/components/bs-button/bs-button/bs-button.d.ts +3 -0
- package/dist/types/components/bs-button/bs-icon-button/bs-icon-button.d.ts +1 -0
- package/dist/types/components/bs-carousel/bs-carousel.d.ts +21 -1
- package/dist/types/components/bs-chatbot-response-action/bs-chatbot-response-action.d.ts +1 -0
- package/dist/types/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.d.ts +1 -0
- package/dist/types/components/bs-checkbox/bs-checkbox.d.ts +1 -0
- package/dist/types/components/bs-chip/bs-chip-filter/bs-chip-filter.d.ts +1 -0
- package/dist/types/components/bs-chip/bs-chip-input/bs-chip-input.d.ts +1 -0
- package/dist/types/components/bs-dialog/bs-dialog.d.ts +14 -0
- package/dist/types/components/bs-list-item/bs-list-item.d.ts +1 -0
- package/dist/types/components/bs-mega-menu/bs-mega-menu.d.ts +26 -2
- package/dist/types/components/bs-menu-item/bs-menu-item.d.ts +1 -0
- package/dist/types/components/bs-pagination/bs-pagination.d.ts +1 -0
- package/dist/types/components/bs-popover/bs-popover.d.ts +15 -0
- package/dist/types/components/bs-presence/bs-presence.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-presence/bs-presence.d.ts +50 -0
- package/dist/types/components/bs-presence/bs-presence.stories.d.ts +15 -0
- package/dist/types/components/bs-radio/bs-radio.d.ts +1 -0
- package/dist/types/components/bs-ripple/bs-ripple.cmp.test.d.ts +1 -0
- package/dist/types/components/bs-ripple/bs-ripple.d.ts +52 -0
- package/dist/types/components/bs-ripple/bs-ripple.stories.d.ts +11 -0
- package/dist/types/components/bs-search-item/bs-search-item.d.ts +1 -0
- package/dist/types/components/bs-side-panel/bs-side-panel.d.ts +13 -0
- package/dist/types/components/bs-source-link/bs-source-link.d.ts +1 -0
- package/dist/types/components/bs-switch/bs-switch.d.ts +1 -0
- package/dist/types/components/bs-tab/bs-inline-tab/bs-inline-tab.d.ts +1 -0
- package/dist/types/components/bs-tab/bs-tab/bs-tab.d.ts +1 -0
- package/dist/types/components/bs-tooltip-trigger/bs-tooltip-trigger.d.ts +18 -0
- package/dist/types/components/bs-tree-item/bs-tree-item.d.ts +1 -0
- package/dist/types/components.d.ts +407 -8
- package/dist/types/utils/motion.d.ts +21 -0
- package/package.json +1 -1
- package/reference.d.ts +28 -22
- package/reference.json +230 -9
- package/dist/brandsync-wc/p-046a53de.entry.js +0 -1
- package/dist/brandsync-wc/p-07e0b444.entry.js +0 -1
- package/dist/brandsync-wc/p-186e3b78.entry.js +0 -1
- package/dist/brandsync-wc/p-23b56775.entry.js +0 -1
- package/dist/brandsync-wc/p-246036cd.entry.js +0 -1
- package/dist/brandsync-wc/p-348fef11.entry.js +0 -1
- package/dist/brandsync-wc/p-3e6f430a.entry.js +0 -1
- package/dist/brandsync-wc/p-47929dca.entry.js +0 -1
- package/dist/brandsync-wc/p-52d61070.entry.js +0 -1
- package/dist/brandsync-wc/p-5e36d46f.entry.js +0 -1
- package/dist/brandsync-wc/p-64f8eb7e.entry.js +0 -1
- package/dist/brandsync-wc/p-6b019a88.entry.js +0 -1
- package/dist/brandsync-wc/p-8962abe0.entry.js +0 -1
- package/dist/brandsync-wc/p-8c9938a5.entry.js +0 -1
- package/dist/brandsync-wc/p-8e46a262.entry.js +0 -1
- package/dist/brandsync-wc/p-998b95d3.entry.js +0 -1
- package/dist/brandsync-wc/p-a9d0a730.entry.js +0 -1
- package/dist/brandsync-wc/p-b1edc9b7.entry.js +0 -1
- package/dist/brandsync-wc/p-b759ae72.entry.js +0 -1
- package/dist/brandsync-wc/p-e99c0937.entry.js +0 -1
- package/dist/brandsync-wc/p-e9adfa44.entry.js +0 -1
- package/dist/brandsync-wc/p-eb3bacb9.entry.js +0 -1
- package/dist/brandsync-wc/p-ee00d3a5.entry.js +0 -1
- package/dist/brandsync-wc/p-f47b8673.entry.js +0 -1
- package/dist/brandsync-wc/p-fbc219c6.entry.js +0 -1
- package/dist/cjs/bs-button.cjs.entry.js +0 -107
- package/dist/components/p-B8kw9EOx.js +0 -1
- package/dist/components/p-BLPNwyiT.js +0 -1
- package/dist/components/p-BP1l6Q3Z.js +0 -1
- package/dist/components/p-BS7ySxJZ.js +0 -1
- package/dist/components/p-BmdSbmFg.js +0 -1
- package/dist/components/p-C2rRVRIu.js +0 -1
- package/dist/components/p-D9dDFyPB.js +0 -1
- package/dist/components/p-DVjuZdjF.js +0 -1
- package/dist/components/p-DW0Dw2LS.js +0 -1
- package/dist/components/p-DgY5pxXd.js +0 -1
- package/dist/components/p-DhhXayh6.js +0 -1
- package/dist/components/p-DiORQQg3.js +0 -1
- package/dist/components/p-TXAiCnSZ.js +0 -1
- package/dist/esm/bs-button.entry.js +0 -105
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { h } from "@stencil/core";
|
|
1
|
+
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { cancelMotion, play, readMotion } from "../../utils/motion";
|
|
2
3
|
let uid = 0;
|
|
3
4
|
/**
|
|
4
5
|
* The dropdown panel under a navigation header tab: columns of links grouped under headings, an optional
|
|
@@ -6,8 +7,13 @@ let uid = 0;
|
|
|
6
7
|
* "Mega menu" (types Columns, Column with featured, Compact and Compact with featured).
|
|
7
8
|
*
|
|
8
9
|
* This is the panel only. Put it in `bs-navigation-header`'s `menu` slot, which anchors it under the bar at the
|
|
9
|
-
* header's full width, and
|
|
10
|
-
*
|
|
10
|
+
* header's full width, and show it from the tab that opens it; the panel does not open or close itself. Escape
|
|
11
|
+
* inside the panel fires `bsClose` so you can close it.
|
|
12
|
+
*
|
|
13
|
+
* There are two ways to show and hide it. Toggle the host's `hidden` attribute and it appears and disappears at once
|
|
14
|
+
* (the original contract, unchanged). Or set `open` and it fades and drops in from under the bar, then fades back out
|
|
15
|
+
* and is removed once the exit finishes. Leave `open` unset to keep using `hidden` only. `hidden` always wins: with it
|
|
16
|
+
* set the panel is not shown whatever `open` says.
|
|
11
17
|
*
|
|
12
18
|
* Built from `bs-card` (panel surface), `bs-menu-block` or `bs-compact-menu-block` (the links), `bs-divider` and
|
|
13
19
|
* `bs-key-caps` (the shortcut). The column layout, headings, featured text and footer row are plain layout
|
|
@@ -54,12 +60,23 @@ let uid = 0;
|
|
|
54
60
|
* @prop --bs-mega-menu-heading-color - Column headings. Aliased to `--bs-text-muted`.
|
|
55
61
|
* @prop --bs-mega-menu-text-color - Featured title. Aliased to `--bs-text-default`.
|
|
56
62
|
* @prop --bs-mega-menu-muted-color - Featured description and footer text. Aliased to `--bs-text-secondary`.
|
|
63
|
+
* @prop --bs-mega-menu-duration - Length of the open/close motion (`open` only). Aliased to `--bs-duration-default`.
|
|
64
|
+
* @prop --bs-mega-menu-easing - Curve of the open/close motion. Aliased to `--bs-easing-standard`.
|
|
65
|
+
* @prop --bs-mega-menu-distance - How far the panel drops while it fades. Aliased to `--bs-spacing-100`.
|
|
66
|
+
*
|
|
67
|
+
* Under `prefers-reduced-motion: reduce` (or a duration of `0ms`) setting `open` shows and hides the panel instantly.
|
|
57
68
|
*/
|
|
58
69
|
export class BsMegaMenu {
|
|
59
70
|
el;
|
|
60
71
|
id = `bs-mm-${++uid}`;
|
|
61
72
|
/** `columns` shows menu blocks with icon and description; `compact` plain text links. */
|
|
62
73
|
type = 'columns';
|
|
74
|
+
/**
|
|
75
|
+
* Shows the panel with an enter/exit motion. Unset (the default) leaves visibility to the host's `hidden`
|
|
76
|
+
* attribute, which shows and hides instantly. `true` shows the panel; `false` fades it out and then removes it.
|
|
77
|
+
* The panel stays in the DOM and is `inert` while it fades out.
|
|
78
|
+
*/
|
|
79
|
+
open;
|
|
63
80
|
/** The groups of links. JS property only (an array cannot be an attribute). */
|
|
64
81
|
columns = [];
|
|
65
82
|
/** The featured area on the right. JS property only. The `featured` slot overrides it. */
|
|
@@ -80,6 +97,43 @@ export class BsMegaMenu {
|
|
|
80
97
|
bsMenuSelect;
|
|
81
98
|
/** Fires when Escape is pressed inside the panel, so you can close it. */
|
|
82
99
|
bsClose;
|
|
100
|
+
/** True while the exit motion plays after `open` went false, so the panel stays visible for it. */
|
|
101
|
+
closing = false;
|
|
102
|
+
panelEl;
|
|
103
|
+
enterPending = false;
|
|
104
|
+
exitPending = false;
|
|
105
|
+
motionRun = 0;
|
|
106
|
+
onOpenChange(next, prev) {
|
|
107
|
+
this.motionRun++;
|
|
108
|
+
cancelMotion(this.panelEl);
|
|
109
|
+
this.closing = false;
|
|
110
|
+
if (next === true) {
|
|
111
|
+
this.enterPending = true;
|
|
112
|
+
}
|
|
113
|
+
else if (next === false && prev === true && !this.el.hidden && readMotion(this.el, 'bs-mega-menu').ms > 0) {
|
|
114
|
+
this.closing = true;
|
|
115
|
+
this.exitPending = true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
componentDidRender() {
|
|
119
|
+
if (this.exitPending) {
|
|
120
|
+
this.exitPending = false;
|
|
121
|
+
if (this.closing && this.open === false) {
|
|
122
|
+
const { ms, easing, distance } = readMotion(this.el, 'bs-mega-menu');
|
|
123
|
+
const run = ++this.motionRun;
|
|
124
|
+
play(this.panelEl, [{ opacity: 1, transform: 'none' }, { opacity: 0, transform: `translateY(${-distance}px)` }], ms, easing, 'forwards').then(() => {
|
|
125
|
+
if (run === this.motionRun)
|
|
126
|
+
this.closing = false;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (this.enterPending) {
|
|
131
|
+
this.enterPending = false;
|
|
132
|
+
const { ms, easing, distance } = readMotion(this.el, 'bs-mega-menu');
|
|
133
|
+
if (ms > 0 && this.open === true)
|
|
134
|
+
play(this.panelEl, [{ opacity: 0, transform: `translateY(${-distance}px)` }, { opacity: 1, transform: 'none' }], ms, easing);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
83
137
|
select(item, ev) {
|
|
84
138
|
const e = this.bsMenuSelect.emit(item);
|
|
85
139
|
if (e.defaultPrevented)
|
|
@@ -107,7 +161,8 @@ export class BsMegaMenu {
|
|
|
107
161
|
render() {
|
|
108
162
|
const hasFeatured = !!this.featured || !!this.el.querySelector(':scope > [slot="featured"]');
|
|
109
163
|
const tracks = this.columns.length + (hasFeatured ? 1 : 0);
|
|
110
|
-
|
|
164
|
+
const removed = this.open === false && !this.closing;
|
|
165
|
+
return (h(Host, { key: '036de0d22f6fd097b063cf3e18db04bbffac3590', "data-closed": removed ? '' : undefined }, h("bs-card", { key: '551c8aa2d4d2dcaca5d50d6fa1b694007685cde9', part: "panel", class: "bs-mega-menu", surface: "base", role: "navigation", "aria-label": this.label, onKeyDown: this.onKeyDown, inert: this.closing, ref: el => (this.panelEl = el) }, h("div", { key: '00fd782414ca6032b20fd5bb9d07c892389dd9fe', part: "columns", class: "bs-mega-menu__columns", style: { '--bs-mega-menu-tracks': String(Math.max(tracks, 1)) } }, this.columns.map(col => this.renderColumn(col)), hasFeatured && this.renderFeatured()), h("bs-divider", { key: 'f1e4ea55ae169e992cf7b48698016cc9c13382ff', decorative: true }), h("div", { key: '4a71517320983a6f01f81fdb44a893750ecc0516', part: "footer", class: "bs-mega-menu__footer" }, h("span", { key: 'b4192ab9c345ce706aaab400c0445b0ac50472f0', class: "bs-mega-menu__footer-start" }, h("slot", { key: 'ebdb724b4546c04243c7c5d65f9b2acfb001df6b', name: "footer-start" }, this.recent.length > 0 && `${this.recentLabel} ${this.recent.join(', ')}`)), h("span", { key: '78554ecd4de584ed7aedec599f6dd8556f4652cc', class: "bs-mega-menu__footer-end" }, h("slot", { key: '68bd8c2fc4a76dc78e4f0399a875bf509974d760', name: "footer-end" }, h("span", { key: '5a26bb373a4b3a0934df88c2f4b138fe153332e2', class: "bs-mega-menu__shortcut" }, this.shortcutLabel, h("bs-key-caps", { key: 'be2bc62ab7d2aaada1ab1539d341bead5d2f8897', part: "shortcut", keys: this.shortcutKeys, label: this.shortcutKeysLabel }))))))));
|
|
111
166
|
}
|
|
112
167
|
static get is() { return "bs-mega-menu"; }
|
|
113
168
|
static get encapsulation() { return "shadow"; }
|
|
@@ -149,6 +204,25 @@ export class BsMegaMenu {
|
|
|
149
204
|
"attribute": "type",
|
|
150
205
|
"defaultValue": "'columns'"
|
|
151
206
|
},
|
|
207
|
+
"open": {
|
|
208
|
+
"type": "boolean",
|
|
209
|
+
"mutable": false,
|
|
210
|
+
"complexType": {
|
|
211
|
+
"original": "boolean",
|
|
212
|
+
"resolved": "boolean",
|
|
213
|
+
"references": {}
|
|
214
|
+
},
|
|
215
|
+
"required": false,
|
|
216
|
+
"optional": true,
|
|
217
|
+
"docs": {
|
|
218
|
+
"tags": [],
|
|
219
|
+
"text": "Shows the panel with an enter/exit motion. Unset (the default) leaves visibility to the host's `hidden`\nattribute, which shows and hides instantly. `true` shows the panel; `false` fades it out and then removes it.\nThe panel stays in the DOM and is `inert` while it fades out."
|
|
220
|
+
},
|
|
221
|
+
"getter": false,
|
|
222
|
+
"setter": false,
|
|
223
|
+
"reflect": true,
|
|
224
|
+
"attribute": "open"
|
|
225
|
+
},
|
|
152
226
|
"columns": {
|
|
153
227
|
"type": "unknown",
|
|
154
228
|
"mutable": false,
|
|
@@ -315,6 +389,11 @@ export class BsMegaMenu {
|
|
|
315
389
|
}
|
|
316
390
|
};
|
|
317
391
|
}
|
|
392
|
+
static get states() {
|
|
393
|
+
return {
|
|
394
|
+
"closing": {}
|
|
395
|
+
};
|
|
396
|
+
}
|
|
318
397
|
static get events() {
|
|
319
398
|
return [{
|
|
320
399
|
"method": "bsMenuSelect",
|
|
@@ -355,4 +434,10 @@ export class BsMegaMenu {
|
|
|
355
434
|
}];
|
|
356
435
|
}
|
|
357
436
|
static get elementRef() { return "el"; }
|
|
437
|
+
static get watchers() {
|
|
438
|
+
return [{
|
|
439
|
+
"propName": "open",
|
|
440
|
+
"methodName": "onOpenChange"
|
|
441
|
+
}];
|
|
442
|
+
}
|
|
358
443
|
}
|
|
@@ -87,7 +87,7 @@ export const Interactive = {
|
|
|
87
87
|
},
|
|
88
88
|
};
|
|
89
89
|
/**
|
|
90
|
-
* The consumer-owned trigger for the header's `menu` slot: the "Sales" tab toggles the panel's `
|
|
90
|
+
* The consumer-owned trigger for the header's `menu` slot: the "Sales" tab toggles the panel's `open` (so it fades in and out),
|
|
91
91
|
* keeps `aria-expanded` in step (`aria-controls`/`aria-haspopup` are left off: `bs-tab` does not forward them to
|
|
92
92
|
* its inner button and axe rejects them on the host, see the mdx), closes it on `bsClose` (Escape), on an outside click and on a second
|
|
93
93
|
* click, and returns focus to the tab. `bs-navigation-header` only positions the panel.
|
|
@@ -103,20 +103,20 @@ function inNavigationHeader(type, featured) {
|
|
|
103
103
|
};
|
|
104
104
|
const setOpen = (from, open, restoreFocus = false) => {
|
|
105
105
|
const { tab, menu } = parts(from);
|
|
106
|
-
menu.
|
|
106
|
+
menu.open = open;
|
|
107
107
|
tab.setAttribute('aria-expanded', String(open));
|
|
108
108
|
if (!open && restoreFocus)
|
|
109
109
|
tab.shadowRoot?.querySelector('button')?.focus();
|
|
110
110
|
};
|
|
111
111
|
const onTabClick = (e) => {
|
|
112
112
|
const { root, menu } = parts(e.currentTarget);
|
|
113
|
-
const opening = menu.
|
|
113
|
+
const opening = !menu.open;
|
|
114
114
|
setOpen(root, opening);
|
|
115
115
|
// Outside click closes it; attached once the panel opens, removed when it closes.
|
|
116
116
|
if (opening) {
|
|
117
117
|
const outside = (ev) => {
|
|
118
118
|
const path = ev.composedPath();
|
|
119
|
-
if (menu.
|
|
119
|
+
if (!menu.open || !root.isConnected)
|
|
120
120
|
return document.removeEventListener('click', outside);
|
|
121
121
|
if (!path.includes(menu) && !path.includes(e.currentTarget)) {
|
|
122
122
|
setOpen(root, false);
|
|
@@ -141,7 +141,7 @@ function inNavigationHeader(type, featured) {
|
|
|
141
141
|
<bs-mega-menu
|
|
142
142
|
slot="menu"
|
|
143
143
|
id=${menuId}
|
|
144
|
-
|
|
144
|
+
.open=${false}
|
|
145
145
|
@bsClose=${onClose}
|
|
146
146
|
.type=${type}
|
|
147
147
|
.columns=${columns}
|
|
@@ -44,7 +44,7 @@ export class BsMenu {
|
|
|
44
44
|
items[next].shadowRoot?.querySelector('button')?.focus();
|
|
45
45
|
}
|
|
46
46
|
render() {
|
|
47
|
-
return (h("div", { key: '
|
|
47
|
+
return (h("div", { key: 'b6cc3be6f6df9dab73a50bc0c398ec48e9c81c04', part: "list", class: "bs-menu", role: "menu" }, h("slot", { key: 'ee7a51748f40144e04f9deac9117b175e9cc2f3d' })));
|
|
48
48
|
}
|
|
49
49
|
static get is() { return "bs-menu"; }
|
|
50
50
|
static get encapsulation() { return "shadow"; }
|
|
@@ -47,10 +47,10 @@ export class BsMenuBlock {
|
|
|
47
47
|
render() {
|
|
48
48
|
const common = { part: 'container', class: 'bs-menu-block' };
|
|
49
49
|
const body = [
|
|
50
|
-
h("bs-icon-tile", { key: '
|
|
51
|
-
h("span", { key: '
|
|
50
|
+
h("bs-icon-tile", { key: 'f16451b0269c9e2147303016a9a8eff3054804fa', part: "icon", class: "bs-menu-block__icon", size: "md" }, this.icon ? h("span", { class: "bs-menu-block__glyph", style: { '--bs-menu-block-glyph': `url(${JSON.stringify(this.icon)})` } }) : h("slot", null)),
|
|
51
|
+
h("span", { key: 'b0ec2c28feb0db796dd9c252da01db7297680916', class: "bs-menu-block__text" }, h("span", { key: '512bfedc88a49232164be59eba523ca673876f2e', class: "bs-menu-block__title" }, h("span", { key: 'a75951dfa734644f3fbd5abd1f97e51b9a023a36', part: "name", class: "bs-menu-block__name" }, this.name), this.badge && (h("bs-chip-informative", { key: 'b4769585e7578532a68be1cb19bd1dc0553a7d52', part: "badge", class: "bs-menu-block__badge", color: "info", size: "sm" }, this.badge))), this.description && (h("span", { key: 'bc5049f8180aff51f96bad7bfedc6e5b7704f459', part: "description", class: "bs-menu-block__description" }, this.description))),
|
|
52
52
|
];
|
|
53
|
-
return (h("button", { key: '
|
|
53
|
+
return (h("button", { key: 'f468826125b6743495c96049081f94ea7f372a0d', ...common, type: "button" }, body));
|
|
54
54
|
}
|
|
55
55
|
static get is() { return "bs-menu-block"; }
|
|
56
56
|
static get encapsulation() { return "shadow"; }
|
|
@@ -28,6 +28,7 @@ import { h } from "@stencil/core";
|
|
|
28
28
|
* @prop --bs-menu-item-color-disabled - Label text color when `disabled` is set. Aliased to `--bs-text-on-disabled`.
|
|
29
29
|
* @prop --bs-menu-item-font-size - Aliased to `--bs-font-size-md`.
|
|
30
30
|
* @prop --bs-menu-item-line-height - Aliased to `--bs-line-height-body-md`.
|
|
31
|
+
* @part ripple - The press-ripple layer (a `bs-ripple`). Tune it with `::part(ripple) { --bs-ripple-color: ...; }`.
|
|
31
32
|
*/
|
|
32
33
|
export class BsMenuItem {
|
|
33
34
|
/** Disables the item: no hover/pressed/focus styling, no pointer cursor, not reachable by
|
|
@@ -47,7 +48,7 @@ export class BsMenuItem {
|
|
|
47
48
|
this.bsSelect.emit();
|
|
48
49
|
};
|
|
49
50
|
render() {
|
|
50
|
-
return (h("button", { key: '
|
|
51
|
+
return (h("button", { key: 'a6022e318de72f62cf5b4be5c924d472221b4cff', type: "button", part: "item", role: "menuitem", class: `bs-menu-item ${this.disabled ? 'bs-menu-item--disabled' : ''}`, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.onClick }, h("bs-ripple", { key: '5c330b32fb6450c9015ea5549ec522bbab0a3ac0', part: "ripple", centered: false, disabled: this.disabled }), h("span", { key: '16fece8c1363813f05410e120be8bdee4281ccfa', part: "icon", class: `bs-menu-item__icon ${this.hasIcon ? 'bs-menu-item__icon--has-content' : ''}` }, h("slot", { key: 'e8ceb7834a709543718dd0145d753fb186a74489', name: "icon", onSlotchange: this.onIconSlotchange })), h("span", { key: '7ddb04608737ffeb097bebcdb5c00f825e058b9f', part: "label", class: "bs-menu-item__label" }, h("slot", { key: 'd24f52e58bfb3629ba8512e17e41844ad0b3baab' }))));
|
|
51
52
|
}
|
|
52
53
|
static get is() { return "bs-menu-item"; }
|
|
53
54
|
static get encapsulation() { return "shadow"; }
|
|
@@ -45,7 +45,7 @@ export class BsMessage {
|
|
|
45
45
|
/** Delivery/render state. `error` uses error colours; `pending` dims the bubble and sets `aria-busy`. */
|
|
46
46
|
status = 'default';
|
|
47
47
|
render() {
|
|
48
|
-
return (h("div", { key: '
|
|
48
|
+
return (h("div", { key: 'db1349965dab9cdb4ca7cddd47d9df6aa21227d2', class: "bs-message", "aria-busy": this.status === 'pending' ? 'true' : undefined }, h("div", { key: 'd1bee0f3145b3bd789ffe90b2603caefba8fcf1e', part: "avatar", class: "bs-message__avatar" }, h("slot", { key: '487a6d52013d52ac80f8906fbccf3017a1dd927d', name: "avatar" })), h("div", { key: 'c0713ad732145108ee0a40991fcc3f7955d6d263', class: "bs-message__column" }, h("bs-card", { key: 'ffa3b7c127f117c61e704e3209b031c0d1e0f385', part: "container", class: "bs-message__bubble", surface: "base" }, h("div", { key: 'f7b852caaecf770856fdb332db9e3af6540d99c2', part: "content", class: "bs-message__content" }, h("slot", { key: 'd3cacbf1031960c074b67115cdd110910eeb116b' }))), h("div", { key: '7161bd50553b2a2f4047c23501877ede4ff4facf', part: "footer", class: "bs-message__footer" }, h("slot", { key: '7109f10f94523fd2d58b6dd4de2195626b385dfb', name: "footer" })), h("div", { key: 'bf4e8e6c4817d33c69dd12362b397860d70766e9', part: "timestamp", class: "bs-message__timestamp" }, h("slot", { key: '6b70a022b77a2e20d4c0c3524d2ef00b45f1b583', name: "timestamp" }, this.timestamp && h("time", { key: '4e421395a0537ce46369fe9555cf308b052d71f1', dateTime: this.datetime }, this.timestamp))))));
|
|
49
49
|
}
|
|
50
50
|
static get is() { return "bs-message"; }
|
|
51
51
|
static get encapsulation() { return "shadow"; }
|
|
@@ -75,7 +75,7 @@ export class BsMessageList {
|
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
77
|
render() {
|
|
78
|
-
return (h("div", { key: '
|
|
78
|
+
return (h("div", { key: 'b10cb414ec777f2ee2b793788f1d7cd1c8be7c03', class: "bs-message-list" }, h("div", { key: 'cdc9d56810ccab43ecc5a4f2a8c2fa0d7f87a238', part: "viewport", class: "bs-message-list__viewport", role: "log", "aria-live": "polite", tabindex: "0", ref: el => (this.viewport = el), onScroll: this.onScroll }, h("slot", { key: '54e2d0281818c3f0a6e9b4d8d147b7769b4bfd62' })), this.showScrollButton && (h("bs-icon-button", { key: 'dbe6009a3905d63fd50e69860e1f287a625d6d25', part: "scroll-to-latest", class: "bs-message-list__scroll", variant: "neutral", ariaLabel: this.scrollToLatestLabel, onClick: () => this.scrollToLatest() }, h("svg", { key: '000793a84e2f256bcf59cd7e000e54a6dcb0e63d', width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true" }, h("path", { key: '6d8447826dc8ae2534156820f45fe761797bf70a', d: "M8 3v10M3.5 8.5L8 13l4.5-4.5", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }))))));
|
|
79
79
|
}
|
|
80
80
|
static get is() { return "bs-message-list"; }
|
|
81
81
|
static get encapsulation() { return "shadow"; }
|
|
@@ -109,7 +109,7 @@ export class BsPageHeader {
|
|
|
109
109
|
const level = Math.min(6, Math.max(1, Math.trunc(Number(this.headingLevel)) || 1));
|
|
110
110
|
const showMeta = !!this.meta || this.slotted.meta;
|
|
111
111
|
const hasTabs = this.slotted.tabs && !this.compact;
|
|
112
|
-
return (h("div", { key: '
|
|
112
|
+
return (h("div", { key: 'bc53e187af58ecbf3d923e4a7a4c2d6753706664', part: "container", class: { 'bs-page-header': true, 'bs-page-header--compact': this.compact, 'bs-page-header--tabs': hasTabs } }, h("div", { key: '66d18bcfa396e4b65027e204ebe78db904c353f5', part: "breadcrumb", class: { 'bs-page-header__breadcrumb': true, 'bs-page-header__empty': !this.slotted.breadcrumb } }, h("slot", { key: '7160cb117c4a9734c8975ef5dfdd0562465736e7', name: "breadcrumb", onSlotchange: this.onSlotChange('breadcrumb') })), h("div", { key: '16f1c1ebf185d8900a900a262fcbbdf0b5fd9670', part: "row", class: "bs-page-header__row" }, h("div", { key: '9d97f5e3235be3c947253248c0473aa390da2892', part: "main", class: { 'bs-page-header__main': true, 'bs-page-header__main--back': this.back } }, this.back && (h("bs-icon-button", { key: 'c9a71a1eea484c739fea7aeb00b218d10db7a30b', part: "back", class: "bs-page-header__back", variant: "subtle", size: "sm", ariaLabel: this.backLabel, onClick: () => this.bsBack.emit() }, h(ArrowLeftIcon, { key: '196d12852cd144fc95411d06a06f366168733d23' }))), h("div", { key: '763d905494ae6d453a259d70bd1d80baefb7e264', part: "title", class: { 'bs-page-header__title': true, 'bs-page-header__title--controls': this.back || this.favoritable } }, h(`h${level}`, { part: 'heading', class: { 'bs-page-header__heading': true } }, this.heading), h("span", { key: '0e533d399af320f3a79659f46c493b4cf1bf2b50', part: "status", class: { 'bs-page-header__status': true, 'bs-page-header__empty': !this.slotted.status } }, h("slot", { key: '396f0352a4c9c84a362fc2266bd69ee695b0f9aa', name: "status", onSlotchange: this.onSlotChange('status') })), this.favoritable && (h("bs-icon-button", { key: '81b8992250fac52af9e9e2ae415aa759122acd94', part: "favorite", class: "bs-page-header__favorite", variant: "subtle", size: "sm", ariaLabel: this.favoriteLabel, pressed: this.favorite, onClick: this.onFavoriteClick }, this.favorite ? h(StarFillIcon, null) : h(StarIcon, null)))), h("div", { key: 'b4e5e1d5cb1d680120059455d2a69152dd0bc8d3', part: "meta", class: { 'bs-page-header__meta': true, 'bs-page-header__empty': !showMeta } }, h("slot", { key: '597180318543618a258ae56f8e9d26a2dc882243', name: "meta", onSlotchange: this.onSlotChange('meta') }, this.meta))), h("div", { key: '18296c20d248dcdf531e1ff0a9b4230c459625e8', part: "actions", class: { 'bs-page-header__actions': true, 'bs-page-header__empty': !this.slotted.actions } }, h("slot", { key: 'c4ea0d5ce7c80995be1335fe62f9b76629303722', name: "actions", onSlotchange: this.onSlotChange('actions') }))), h("div", { key: '2a942c6f3bef3d546942794368ee22b4f521a4a4', part: "tabs", class: { 'bs-page-header__tabs': true, 'bs-page-header__empty': !this.slotted.tabs } }, h("slot", { key: 'd870267922ea0ffe8f5fc7503e76c038a7a47406', name: "tabs", onSlotchange: this.onSlotChange('tabs') })), hasTabs && h("bs-divider", { key: '988231057dd030bd096948e6cdab39288784c8c3', part: "divider", class: "bs-page-header__divider", decorative: true })));
|
|
113
113
|
}
|
|
114
114
|
static get is() { return "bs-page-header"; }
|
|
115
115
|
static get encapsulation() { return "shadow"; }
|
|
@@ -24,6 +24,7 @@ import { h } from "@stencil/core";
|
|
|
24
24
|
* @part page - Each page-number button.
|
|
25
25
|
* @part current - The current page's button (in addition to `page`).
|
|
26
26
|
* @part ellipsis - Each collapsed-range indicator.
|
|
27
|
+
* @part ripple - The press-ripple layer (a `bs-ripple`). Tune it with `::part(ripple) { --bs-ripple-color: ...; }`.
|
|
27
28
|
*/
|
|
28
29
|
export class BsPagination {
|
|
29
30
|
/** Total number of pages. Must be a positive integer -- there's always at least one page. */
|
|
@@ -91,7 +92,7 @@ export class BsPagination {
|
|
|
91
92
|
}
|
|
92
93
|
render() {
|
|
93
94
|
const pageList = this.getPageList();
|
|
94
|
-
return (h("nav", { key: '
|
|
95
|
+
return (h("nav", { key: '574bba698954fefe6083b1c0b46215b53cd929cc', "aria-label": this.navLabel }, h("ul", { key: 'db7a37916e2f2bb8739828936048b9b73af2c93f', part: "list", class: "bs-pagination__list" }, h("li", { key: '25fc9453e309eec5c7226fc3a2255fe20f138ebc', part: "item", class: "bs-pagination__item" }, h("button", { key: '654898cca41f9868f3780b16a01d25e39c76de06', part: "prev", type: "button", class: "bs-pagination__control", "aria-label": this.previousLabel, disabled: this.currentPage <= 1, onClick: () => this.goToPage(this.currentPage - 1) }, h("bs-ripple", { key: '544bddaee750f3d18519cf676fccf2788ae65b8f', part: "ripple", centered: true }), h(ChevronLeftIcon, { key: 'c8913363a09dada9765383ab59d309058b272b65' }))), pageList.map((item, index) => item === 'ellipsis' ? (h("li", { part: "item", class: "bs-pagination__item", key: `ellipsis-${index}` }, h("span", { part: "ellipsis", class: "bs-pagination__ellipsis", "aria-hidden": "true" }, h(EllipsisIcon, null)))) : (h("li", { part: "item", class: "bs-pagination__item", key: item }, h("button", { part: item === this.currentPage ? 'page current' : 'page', type: "button", class: `bs-pagination__control bs-pagination__page ${item === this.currentPage ? 'bs-pagination__page--current' : ''}`, "aria-label": `${this.pageLabel} ${item}`, "aria-current": item === this.currentPage ? 'page' : undefined, onClick: () => this.goToPage(item) }, h("bs-ripple", { part: "ripple", centered: true }), item)))), h("li", { key: '8ce36f14052801aa1ef9b2f750f6d030de1ed6b1', part: "item", class: "bs-pagination__item" }, h("button", { key: 'a944585c463d4a8035b2932e1a1c881fb5ad68ee', part: "next", type: "button", class: "bs-pagination__control", "aria-label": this.nextLabel, disabled: this.currentPage >= this.safeTotalPages, onClick: () => this.goToPage(this.currentPage + 1) }, h("bs-ripple", { key: '3082d79238e9242cbfc52e08be0d53160f85bfed', part: "ripple", centered: true }), h(ChevronRightIcon, { key: 'be4c48d8075ecf6e9389546e63c8e192da50ed30' }))))));
|
|
95
96
|
}
|
|
96
97
|
static get is() { return "bs-pagination"; }
|
|
97
98
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
2
3
|
const setup = () => render(h("bs-popover", null, h("button", { slot: "trigger" }, "Open"), h("div", null, "Content")));
|
|
3
4
|
describe('bs-popover', () => {
|
|
4
5
|
it('is closed by default with aria wiring on the trigger wrapper', async () => {
|
|
@@ -104,4 +105,23 @@ describe('bs-popover', () => {
|
|
|
104
105
|
await waitForChanges();
|
|
105
106
|
expect(pop.getAttribute('data-placement')).toBe('bottom-end');
|
|
106
107
|
});
|
|
108
|
+
describe('open/close motion', () => {
|
|
109
|
+
it('keeps the popup visible while it fades out, then hides it', async () => {
|
|
110
|
+
const { root, waitForChanges } = await render(h("bs-popover", { open: true, style: { '--bs-popover-duration': '150ms' } }, h("button", { slot: "trigger" }, "Open"), h("p", null, "Content")));
|
|
111
|
+
const popup = root.shadowRoot.querySelector('[part="popup"]');
|
|
112
|
+
expect(popup.hidden).toBe(false);
|
|
113
|
+
root.open = false;
|
|
114
|
+
await waitForChanges();
|
|
115
|
+
expect(popup.hidden).toBe(false);
|
|
116
|
+
await wait(400);
|
|
117
|
+
await waitForChanges();
|
|
118
|
+
expect(popup.hidden).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
it('hides immediately when the duration is 0ms', async () => {
|
|
121
|
+
const { root, waitForChanges } = await render(h("bs-popover", { open: true, style: { '--bs-popover-duration': '0ms' } }, h("button", { slot: "trigger" }, "Open"), h("p", null, "Content")));
|
|
122
|
+
root.open = false;
|
|
123
|
+
await waitForChanges();
|
|
124
|
+
expect(root.shadowRoot.querySelector('[part="popup"]').hidden).toBe(true);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
107
127
|
});
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
--bs-popover-offset: var(--bs-spacing-100);
|
|
8
8
|
--bs-popover-min-width: var(--bs-scale-1600);
|
|
9
9
|
--bs-popover-z-index: var(--bs-z-index-popover);
|
|
10
|
+
--bs-popover-duration: var(--bs-duration-fast);
|
|
11
|
+
--bs-popover-easing: var(--bs-easing-standard);
|
|
12
|
+
--bs-popover-distance: var(--bs-spacing-50);
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
.bs-popover__trigger {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
|
+
import { cancelMotion, play, readMotion } from "../../utils/motion";
|
|
2
3
|
let popoverId = 0;
|
|
3
4
|
/**
|
|
4
5
|
* A trigger plus a popup panel that opens on trigger click and closes on outside click or Escape.
|
|
@@ -23,6 +24,12 @@ let popoverId = 0;
|
|
|
23
24
|
* @prop --bs-popover-offset - Gap between trigger and popup. Aliased to `--bs-spacing-100`.
|
|
24
25
|
* @prop --bs-popover-min-width - Minimum popup width. Aliased to `--bs-scale-1600`.
|
|
25
26
|
* @prop --bs-popover-z-index - Popup stacking order. Aliased to `--bs-z-index-popover`.
|
|
27
|
+
* @prop --bs-popover-duration - Length of the open/close motion. Aliased to `--bs-duration-fast`.
|
|
28
|
+
* @prop --bs-popover-easing - Curve of the open/close motion. Aliased to `--bs-easing-standard`.
|
|
29
|
+
* @prop --bs-popover-distance - How far the popup nudges while it fades. Aliased to `--bs-spacing-50`.
|
|
30
|
+
*
|
|
31
|
+
* The popup fades and nudges toward its trigger when it opens and closes. Length, curve and travel are
|
|
32
|
+
* `--bs-popover-duration`, `--bs-popover-easing` and `--bs-popover-distance`; under `prefers-reduced-motion: reduce` it is instant.
|
|
26
33
|
*/
|
|
27
34
|
export class BsPopover {
|
|
28
35
|
el;
|
|
@@ -34,12 +41,21 @@ export class BsPopover {
|
|
|
34
41
|
bsOpenChange;
|
|
35
42
|
popupId = `bs-popover-${++popoverId}`;
|
|
36
43
|
triggerSlot;
|
|
44
|
+
/** True while the exit motion plays after `open` went false, so the popup stays visible for it. */
|
|
45
|
+
closing = false;
|
|
37
46
|
popupEl;
|
|
47
|
+
enterPending = false;
|
|
48
|
+
exitPending = false;
|
|
49
|
+
motionRun = 0;
|
|
38
50
|
needsFocusIn = false;
|
|
39
51
|
escaped = false;
|
|
40
52
|
onOpenChange(next) {
|
|
41
53
|
this.detach();
|
|
54
|
+
this.motionRun++;
|
|
55
|
+
cancelMotion(this.popupEl);
|
|
42
56
|
if (next) {
|
|
57
|
+
this.closing = false;
|
|
58
|
+
this.enterPending = true;
|
|
43
59
|
document.addEventListener('click', this.onDocClick, true);
|
|
44
60
|
document.addEventListener('keydown', this.onKeyDown);
|
|
45
61
|
window.addEventListener('resize', this.reposition);
|
|
@@ -48,7 +64,14 @@ export class BsPopover {
|
|
|
48
64
|
}
|
|
49
65
|
else {
|
|
50
66
|
this.needsFocusIn = false;
|
|
51
|
-
this.
|
|
67
|
+
if (this.popupEl && !this.popupEl.hidden && readMotion(this.el, 'bs-popover').ms > 0) {
|
|
68
|
+
// Keep the resolved (possibly flipped) placement while the popup fades out; it is reset when the motion ends.
|
|
69
|
+
this.closing = true;
|
|
70
|
+
this.exitPending = true;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.el.setAttribute('data-placement', this.placement);
|
|
74
|
+
}
|
|
52
75
|
const active = this.el.shadowRoot?.activeElement || document.activeElement;
|
|
53
76
|
const focusInside = this.el.contains(document.activeElement) && document.activeElement !== this.triggerSlot?.assignedElements()[0] && !this.isInTrigger(document.activeElement);
|
|
54
77
|
if (this.escaped || (focusInside && active))
|
|
@@ -62,10 +85,39 @@ export class BsPopover {
|
|
|
62
85
|
componentWillLoad() {
|
|
63
86
|
this.el.setAttribute('data-placement', this.placement);
|
|
64
87
|
}
|
|
88
|
+
/** Slides toward the trigger it hangs off: a popup above its trigger rises from below, one below drops from above. */
|
|
89
|
+
offset(distance) {
|
|
90
|
+
const above = (this.el.getAttribute('data-placement') ?? this.placement).startsWith('top');
|
|
91
|
+
return `translateY(${above ? distance : -distance}px)`;
|
|
92
|
+
}
|
|
93
|
+
playEnter() {
|
|
94
|
+
const { ms, easing, distance } = readMotion(this.el, 'bs-popover');
|
|
95
|
+
if (ms === 0)
|
|
96
|
+
return;
|
|
97
|
+
play(this.popupEl, [{ opacity: 0, transform: this.offset(distance) }, { opacity: 1, transform: 'none' }], ms, easing);
|
|
98
|
+
}
|
|
99
|
+
playExit() {
|
|
100
|
+
const { ms, easing, distance } = readMotion(this.el, 'bs-popover');
|
|
101
|
+
const run = ++this.motionRun;
|
|
102
|
+
play(this.popupEl, [{ opacity: 1, transform: 'none' }, { opacity: 0, transform: this.offset(distance) }], ms, easing, 'forwards').then(() => {
|
|
103
|
+
if (run !== this.motionRun)
|
|
104
|
+
return;
|
|
105
|
+
this.closing = false;
|
|
106
|
+
this.el.setAttribute('data-placement', this.placement);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
65
109
|
componentDidRender() {
|
|
110
|
+
if (!this.open && this.closing && this.exitPending) {
|
|
111
|
+
this.exitPending = false;
|
|
112
|
+
this.playExit();
|
|
113
|
+
}
|
|
66
114
|
if (!this.open)
|
|
67
115
|
return;
|
|
68
116
|
this.reposition();
|
|
117
|
+
if (this.enterPending) {
|
|
118
|
+
this.enterPending = false;
|
|
119
|
+
this.playEnter();
|
|
120
|
+
}
|
|
69
121
|
if (this.needsFocusIn) {
|
|
70
122
|
this.needsFocusIn = false;
|
|
71
123
|
this.focusPopup();
|
|
@@ -152,7 +204,7 @@ export class BsPopover {
|
|
|
152
204
|
}
|
|
153
205
|
};
|
|
154
206
|
render() {
|
|
155
|
-
return (h("div", { key: '
|
|
207
|
+
return (h("div", { key: '39151f3b9bf56616c0e96cf0c5312d75331d89bb', class: "bs-popover" }, h("div", { key: 'dd05791d8e55c9abf1447761bd3c411b86bc20f4', part: "trigger", class: "bs-popover__trigger", "aria-haspopup": "true", "aria-expanded": String(this.open), "aria-controls": this.popupId, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown }, h("slot", { key: '5aaf9d25f29381bc005e2424a43e806d01a74ec4', name: "trigger", ref: el => (this.triggerSlot = el) })), h("div", { key: 'bc734ecdcb751ff09bb5ccdc5829035d8fd56f72', part: "popup", id: this.popupId, class: "bs-popover__popup", tabindex: "-1", hidden: !this.open && !this.closing, ref: el => (this.popupEl = el) }, h("slot", { key: 'b10ce9654f2c0f899fded5b13bf0d66f841d3f2e' }))));
|
|
156
208
|
}
|
|
157
209
|
static get is() { return "bs-popover"; }
|
|
158
210
|
static get encapsulation() { return "shadow"; }
|
|
@@ -216,6 +268,11 @@ export class BsPopover {
|
|
|
216
268
|
}
|
|
217
269
|
};
|
|
218
270
|
}
|
|
271
|
+
static get states() {
|
|
272
|
+
return {
|
|
273
|
+
"closing": {}
|
|
274
|
+
};
|
|
275
|
+
}
|
|
219
276
|
static get events() {
|
|
220
277
|
return [{
|
|
221
278
|
"method": "bsOpenChange",
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { render, h, describe, it, expect } from "@stencil/vitest";
|
|
2
|
+
import { assertCssCustomProperties, assertShadowParts, runAxeCheck } from "../../test/helpers/conventions";
|
|
3
|
+
describe('bs-presence', () => {
|
|
4
|
+
it('hides slotted content until active', async () => {
|
|
5
|
+
const { root } = await render(h("bs-presence", null, h("span", null, "Room 214")));
|
|
6
|
+
expect(root).toEqualAttribute('preset', 'fade');
|
|
7
|
+
expect(root).toEqualAttribute('duration', 'default');
|
|
8
|
+
expect(root).toEqualAttribute('easing', 'standard');
|
|
9
|
+
expect(root).not.toHaveAttribute('active');
|
|
10
|
+
expect(root).toEqualAttribute('aria-hidden', 'true');
|
|
11
|
+
expect(root).toHaveAttribute('inert');
|
|
12
|
+
expect(root).toHaveTextContent('Room 214');
|
|
13
|
+
const clip = root.shadowRoot.querySelector('.bs-presence__clip');
|
|
14
|
+
expect(getComputedStyle(clip).opacity).toBe('0');
|
|
15
|
+
});
|
|
16
|
+
it('shows content when active', async () => {
|
|
17
|
+
const { root } = await render(h("bs-presence", { active: true }, h("span", null, "Room 214")));
|
|
18
|
+
expect(root).toHaveAttribute('active');
|
|
19
|
+
expect(root).not.toHaveAttribute('aria-hidden');
|
|
20
|
+
expect(root).not.toHaveAttribute('inert');
|
|
21
|
+
const clip = root.shadowRoot.querySelector('.bs-presence__clip');
|
|
22
|
+
expect(getComputedStyle(clip).opacity).toBe('1');
|
|
23
|
+
});
|
|
24
|
+
it('applies the preset class', async () => {
|
|
25
|
+
const { root } = await render(h("bs-presence", { preset: "collapse" }));
|
|
26
|
+
expect(root.shadowRoot.querySelector('[part="content"]')).toHaveClass('bs-presence--collapse');
|
|
27
|
+
});
|
|
28
|
+
it('falls back to fade for an unknown preset', async () => {
|
|
29
|
+
const { root } = await render(h("bs-presence", { preset: 'bounce' }));
|
|
30
|
+
expect(root.shadowRoot.querySelector('[part="content"]')).toHaveClass('bs-presence--fade');
|
|
31
|
+
});
|
|
32
|
+
it('exposes its customization surface', async () => {
|
|
33
|
+
const { root } = await render(h("bs-presence", { active: true }));
|
|
34
|
+
assertShadowParts(root.shadowRoot, ['content']);
|
|
35
|
+
assertCssCustomProperties(root, ['--bs-presence-duration', '--bs-presence-easing', '--bs-presence-distance', '--bs-presence-scale']);
|
|
36
|
+
});
|
|
37
|
+
it('maps duration and easing onto the motion tokens', async () => {
|
|
38
|
+
const { root } = await render(h("bs-presence", { duration: "slow", easing: "decelerate" }));
|
|
39
|
+
const style = getComputedStyle(root);
|
|
40
|
+
const tokens = getComputedStyle(document.documentElement);
|
|
41
|
+
expect(style.getPropertyValue('--bs-presence-duration').trim()).toBe(tokens.getPropertyValue('--bs-duration-slow').trim());
|
|
42
|
+
expect(style.getPropertyValue('--bs-presence-easing').trim()).toBe(tokens.getPropertyValue('--bs-easing-decelerate').trim());
|
|
43
|
+
});
|
|
44
|
+
it('emits bsTransitionEnd with the state just reached', async () => {
|
|
45
|
+
const { root } = await render(h("bs-presence", { duration: "instant" }, h("span", null, "Room 214")));
|
|
46
|
+
const events = [];
|
|
47
|
+
root.addEventListener('bsTransitionEnd', (event) => events.push(event.detail));
|
|
48
|
+
root.active = true;
|
|
49
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
50
|
+
expect(events).toEqual([true]);
|
|
51
|
+
});
|
|
52
|
+
it('emits bsTransitionEnd after a non-zero transition', async () => {
|
|
53
|
+
const { root } = await render(h("bs-presence", { duration: "fast" }, h("span", null, "Room 214")));
|
|
54
|
+
const events = [];
|
|
55
|
+
root.addEventListener('bsTransitionEnd', (event) => events.push(event.detail));
|
|
56
|
+
root.active = true;
|
|
57
|
+
await new Promise(resolve => setTimeout(resolve, 250));
|
|
58
|
+
expect(events).toEqual([true]);
|
|
59
|
+
});
|
|
60
|
+
it('passes an axe check while shown', async () => {
|
|
61
|
+
const { root } = await render(h("bs-presence", { active: true }, h("span", null, "Room 214")));
|
|
62
|
+
await runAxeCheck(root);
|
|
63
|
+
});
|
|
64
|
+
});
|