@db-ux/wc-core-components 4.12.0 → 4.13.0-shell-f221975
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 +14 -0
- package/agent/ControlPanelBrand.md +9 -0
- package/agent/ControlPanelDesktop.md +46 -0
- package/agent/ControlPanelMeta.md +13 -0
- package/agent/ControlPanelMobile.md +37 -0
- package/agent/ControlPanelNavigation.md +19 -0
- package/agent/ControlPanelNavigationItem.md +33 -0
- package/agent/ControlPanelPrimaryActions.md +13 -0
- package/agent/ControlPanelSecondaryActions.md +19 -0
- package/agent/Drawer.md +0 -8
- package/agent/Shell.md +24 -0
- package/agent/ShellSubNavigation.md +6 -0
- package/agent/_instructions.md +11 -6
- package/bundle/db-accordion-item.js +1 -1
- package/bundle/db-accordion.js +1 -1
- package/bundle/db-badge.js +1 -1
- package/bundle/db-button.js +1 -1
- package/bundle/db-card.js +1 -1
- package/bundle/db-checkbox.js +1 -1
- package/bundle/db-control-panel-brand.d.ts +11 -0
- package/bundle/db-control-panel-brand.js +1 -0
- package/bundle/db-control-panel-desktop.d.ts +11 -0
- package/bundle/db-control-panel-desktop.js +1 -0
- package/bundle/db-control-panel-flat-icon.d.ts +11 -0
- package/bundle/db-control-panel-flat-icon.js +1 -0
- package/bundle/{db-navigation-item.d.ts → db-control-panel-meta.d.ts} +4 -4
- package/bundle/db-control-panel-meta.js +1 -0
- package/bundle/db-control-panel-mobile.d.ts +11 -0
- package/bundle/db-control-panel-mobile.js +1 -0
- package/bundle/db-control-panel-navigation-item-group.d.ts +11 -0
- package/bundle/db-control-panel-navigation-item-group.js +1 -0
- package/bundle/db-control-panel-navigation-item.d.ts +11 -0
- package/bundle/db-control-panel-navigation-item.js +1 -0
- package/bundle/db-control-panel-navigation.d.ts +11 -0
- package/bundle/db-control-panel-navigation.js +1 -0
- package/bundle/db-control-panel-primary-actions.d.ts +11 -0
- package/bundle/db-control-panel-primary-actions.js +1 -0
- package/bundle/db-control-panel-secondary-actions.d.ts +11 -0
- package/bundle/db-control-panel-secondary-actions.js +1 -0
- package/bundle/db-control-panel-skip-navigation.d.ts +11 -0
- package/bundle/db-control-panel-skip-navigation.js +1 -0
- package/bundle/db-custom-button.js +1 -1
- package/bundle/db-custom-select-dropdown.js +1 -1
- package/bundle/db-custom-select-form-field.js +1 -1
- package/bundle/db-custom-select-list-item.js +1 -1
- package/bundle/db-custom-select-list.js +1 -1
- package/bundle/db-custom-select.js +1 -1
- package/bundle/db-divider.js +1 -1
- package/bundle/{db-navigation.d.ts → db-drawer-footer.d.ts} +4 -4
- package/bundle/db-drawer-footer.js +1 -0
- package/bundle/{db-page.d.ts → db-drawer-header.d.ts} +4 -4
- package/bundle/db-drawer-header.js +1 -0
- package/bundle/db-drawer.js +1 -1
- package/bundle/db-icon.js +1 -1
- package/bundle/db-infotext.js +1 -1
- package/bundle/db-input.js +1 -1
- package/bundle/db-link.js +1 -1
- package/bundle/db-notification.js +1 -1
- package/bundle/db-popover.js +1 -1
- package/bundle/db-radio.js +1 -1
- package/bundle/db-section.js +1 -1
- package/bundle/db-select.js +1 -1
- package/bundle/{db-header.d.ts → db-shell-content.d.ts} +4 -4
- package/bundle/db-shell-content.js +1 -0
- package/bundle/db-shell-sub-navigation.d.ts +11 -0
- package/bundle/db-shell-sub-navigation.js +1 -0
- package/bundle/{db-brand.d.ts → db-shell.d.ts} +4 -4
- package/bundle/db-shell.js +1 -0
- package/bundle/db-stack.js +1 -1
- package/bundle/db-switch.js +1 -1
- package/bundle/db-tab-item.js +1 -1
- package/bundle/db-tab-list.js +1 -1
- package/bundle/db-tab-panel.js +1 -1
- package/bundle/db-table-body.js +1 -1
- package/bundle/db-table-caption.js +1 -1
- package/bundle/db-table-data-cell.js +1 -1
- package/bundle/db-table-footer.js +1 -1
- package/bundle/db-table-head.js +1 -1
- package/bundle/db-table-header-cell.js +1 -1
- package/bundle/db-table-row.js +1 -1
- package/bundle/db-table.js +1 -1
- package/bundle/db-tabs.js +1 -1
- package/bundle/db-tag.js +1 -1
- package/bundle/db-textarea.js +1 -1
- package/bundle/db-tooltip.js +1 -1
- package/bundle/index.js +1 -1
- package/bundle/p-6eFmbk2q.js +1 -0
- package/bundle/p-9FBjLlz8.js +1 -0
- package/bundle/p-B2-mqMAV.js +1 -0
- package/bundle/{p-G57oLrr4.js → p-B3HO0pCt.js} +1 -1
- package/bundle/p-B5p2TBcA.js +1 -0
- package/bundle/{p-BQov9sQb.js → p-BSn68Z6b.js} +1 -1
- package/bundle/p-BT3wZY6f.js +1 -0
- package/bundle/p-BWWm2aVB.js +1 -0
- package/bundle/{p-Cc5hdI0x.js → p-B_cQ652T.js} +1 -1
- package/bundle/{p-DcgghWWs.js → p-BbEdAR4o.js} +1 -1
- package/bundle/{p-C0JLpZ9Q.js → p-BtQh3jbl.js} +1 -1
- package/bundle/p-C3NPZvho.js +1 -0
- package/bundle/p-CGLknNHl.js +1 -0
- package/bundle/p-COv1iCFP.js +1 -0
- package/bundle/p-C_xaJ8Kg.js +1 -0
- package/bundle/p-CjeAJfEo.js +1 -0
- package/bundle/{p-to845Mg2.js → p-Cr4l4OlK.js} +1 -1
- package/bundle/p-CtoC6vGL.js +1 -0
- package/bundle/p-D2lYeElK.js +1 -0
- package/bundle/{p-BvgvWjGH.js → p-D9qEmJkQ.js} +1 -1
- package/bundle/p-DAr8BCe0.js +1 -0
- package/bundle/{p-CYYSsu3p.js → p-DEicAzan.js} +1 -1
- package/bundle/{p-C9llbu6g.js → p-DKhSQnne.js} +1 -1
- package/bundle/{p-BpO8Ok-r.js → p-DTmum76Y.js} +1 -1
- package/bundle/p-DtqySxCV.js +1 -0
- package/bundle/p-Nyi3Ccqz.js +1 -0
- package/bundle/p-V6Dppnfj.js +1 -0
- package/bundle/p-WOdZHiUh.js +1 -0
- package/bundle/p-_kvIQ0Iy.js +1 -0
- package/bundle/{p-fu0VCCbW.js → p-mf371GRo.js} +1 -1
- package/dist/cjs/{constants-bMY2_d8A.js → constants-BM1EltPT.js} +12 -3
- package/dist/cjs/db-accordion-item.cjs.entry.js +3 -3
- package/dist/cjs/db-accordion.cjs.entry.js +2 -2
- package/dist/cjs/db-badge.cjs.entry.js +4 -4
- package/dist/cjs/db-button.cjs.entry.js +6 -3
- package/dist/cjs/db-card.cjs.entry.js +3 -3
- package/dist/cjs/db-checkbox.cjs.entry.js +5 -5
- package/dist/cjs/{db-brand.cjs.entry.js → db-control-panel-brand.cjs.entry.js} +9 -10
- package/dist/cjs/db-control-panel-desktop.cjs.entry.js +148 -0
- package/dist/cjs/db-control-panel-flat-icon.cjs.entry.js +134 -0
- package/dist/cjs/{db-navigation.cjs.entry.js → db-control-panel-meta.cjs.entry.js} +8 -8
- package/dist/cjs/db-control-panel-mobile.cjs.entry.js +124 -0
- package/dist/cjs/db-control-panel-navigation-item-group.cjs.entry.js +420 -0
- package/dist/cjs/db-control-panel-navigation-item.cjs.entry.js +235 -0
- package/dist/cjs/db-control-panel-navigation.cjs.entry.js +579 -0
- package/dist/cjs/db-control-panel-primary-actions.cjs.entry.js +95 -0
- package/dist/cjs/db-control-panel-secondary-actions.cjs.entry.js +95 -0
- package/dist/cjs/db-control-panel-skip-navigation.cjs.entry.js +96 -0
- package/dist/cjs/db-custom-button.cjs.entry.js +3 -3
- package/dist/cjs/db-custom-select-dropdown_5.cjs.entry.js +14 -14
- package/dist/cjs/db-custom-select-form-field.cjs.entry.js +3 -3
- package/dist/cjs/db-custom-select.cjs.entry.js +50 -26
- package/dist/cjs/db-divider.cjs.entry.js +2 -2
- package/dist/cjs/db-drawer_3.cjs.entry.js +457 -0
- package/dist/cjs/db-icon.cjs.entry.js +3 -3
- package/dist/cjs/db-infotext.cjs.entry.js +3 -3
- package/dist/cjs/db-link_4.cjs.entry.js +12 -10
- package/dist/cjs/db-notification.cjs.entry.js +4 -4
- package/dist/cjs/db-popover.cjs.entry.js +50 -22
- package/dist/cjs/db-radio.cjs.entry.js +4 -4
- package/dist/cjs/db-section.cjs.entry.js +3 -3
- package/dist/cjs/db-select.cjs.entry.js +5 -5
- package/dist/cjs/db-shell-content.cjs.entry.js +97 -0
- package/dist/cjs/db-shell-sub-navigation.cjs.entry.js +110 -0
- package/dist/cjs/{db-page.cjs.entry.js → db-shell.cjs.entry.js} +16 -17
- package/dist/cjs/db-stack.cjs.entry.js +3 -3
- package/dist/cjs/db-switch.cjs.entry.js +5 -5
- package/dist/cjs/db-tab-item_3.cjs.entry.js +8 -8
- package/dist/cjs/db-table-body_3.cjs.entry.js +10 -10
- package/dist/cjs/db-table-caption.cjs.entry.js +4 -3
- package/dist/cjs/db-table.cjs.entry.js +4 -4
- package/dist/cjs/db-tabs.cjs.entry.js +23 -18
- package/dist/cjs/db-textarea.cjs.entry.js +5 -5
- package/dist/cjs/db-tooltip.cjs.entry.js +39 -26
- package/dist/cjs/db-ux.cjs.js +1 -1
- package/dist/cjs/{document-click-listener-DdNXbErU.js → document-click-listener-D_0Q6lvb.js} +5 -9
- package/dist/cjs/{document-scroll-listener-CvAZ6uPr.js → document-scroll-listener-CgyYRmvZ.js} +29 -9
- package/dist/cjs/{floating-components-DlstoCKH.js → floating-components-B3bpFI90.js} +193 -115
- package/dist/cjs/{form-components-CmQlkARp.js → form-components-XNiwIGq8.js} +1 -1
- package/dist/cjs/{index-spuu3sXz.js → index-Df-6pBQf.js} +41 -2
- package/dist/cjs/index.cjs.js +34 -17
- package/dist/cjs/intersection-observer-listener-DlrHabJb.js +41 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/navigation-CHCtasZv.js +178 -0
- package/dist/cjs/resize-observer-listener-CmPDfoZs.js +103 -0
- package/dist/collection/collection-manifest.json +18 -7
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/accordion/model.js +0 -1
- package/dist/collection/components/accordion-item/accordion-item.js +2 -2
- package/dist/collection/components/badge/badge.js +2 -2
- package/dist/collection/components/button/button.js +57 -2
- package/dist/collection/components/card/card.js +2 -2
- package/dist/collection/components/checkbox/checkbox.js +2 -2
- package/dist/collection/components/control-panel-brand/control-panel-brand.js +179 -0
- package/dist/collection/components/control-panel-brand/index.js +2 -0
- package/dist/collection/components/control-panel-desktop/control-panel-desktop.js +343 -0
- package/dist/collection/components/control-panel-desktop/index.js +2 -0
- package/dist/collection/components/control-panel-flat-icon/control-panel-flat-icon.js +246 -0
- package/dist/collection/components/control-panel-flat-icon/index.js +2 -0
- package/dist/collection/components/control-panel-meta/control-panel-meta.js +179 -0
- package/dist/collection/components/control-panel-meta/index.js +2 -0
- package/dist/collection/components/control-panel-mobile/control-panel-mobile.js +307 -0
- package/dist/collection/components/control-panel-mobile/index.js +2 -0
- package/dist/collection/components/control-panel-mobile/model.js +1 -0
- package/dist/collection/components/control-panel-navigation/control-panel-navigation.js +829 -0
- package/dist/collection/components/control-panel-navigation/index.js +2 -0
- package/dist/collection/components/control-panel-navigation/model.js +1 -0
- package/dist/collection/components/control-panel-navigation-item/control-panel-navigation-item.js +484 -0
- package/dist/collection/components/control-panel-navigation-item/index.js +2 -0
- package/dist/collection/components/control-panel-navigation-item/model.js +1 -0
- package/dist/collection/components/control-panel-navigation-item-group/control-panel-navigation-item-group.js +772 -0
- package/dist/collection/components/control-panel-navigation-item-group/index.js +2 -0
- package/dist/collection/components/control-panel-navigation-item-group/model.js +1 -0
- package/dist/collection/components/control-panel-primary-actions/control-panel-primary-actions.js +179 -0
- package/dist/collection/components/control-panel-primary-actions/index.js +2 -0
- package/dist/collection/components/control-panel-primary-actions/model.js +1 -0
- package/dist/collection/components/control-panel-secondary-actions/control-panel-secondary-actions.js +179 -0
- package/dist/collection/components/control-panel-secondary-actions/index.js +2 -0
- package/dist/collection/components/control-panel-secondary-actions/model.js +1 -0
- package/dist/collection/components/control-panel-skip-navigation/control-panel-skip-navigation.js +232 -0
- package/dist/collection/components/control-panel-skip-navigation/index.js +2 -0
- package/dist/collection/components/control-panel-skip-navigation/model.js +1 -0
- package/dist/collection/components/custom-button/custom-button.js +2 -2
- package/dist/collection/components/custom-select/custom-select.js +46 -21
- package/dist/collection/components/custom-select-dropdown/custom-select-dropdown.js +2 -2
- package/dist/collection/components/custom-select-form-field/custom-select-form-field.js +2 -2
- package/dist/collection/components/custom-select-list/custom-select-list.js +2 -2
- package/dist/collection/components/custom-select-list-item/custom-select-list-item.js +2 -2
- package/dist/collection/components/divider/divider.js +1 -1
- package/dist/collection/components/drawer/drawer.js +71 -75
- package/dist/collection/components/drawer/model.js +1 -0
- package/dist/collection/components/{navigation/navigation.js → drawer-footer/drawer-footer.js} +19 -19
- package/dist/collection/components/drawer-footer/index.js +2 -0
- package/dist/collection/components/drawer-footer/model.js +1 -0
- package/dist/collection/components/{brand/brand.js → drawer-header/drawer-header.js} +83 -79
- package/dist/collection/components/drawer-header/index.js +2 -0
- package/dist/collection/components/drawer-header/model.js +1 -0
- package/dist/collection/components/icon/icon.js +2 -2
- package/dist/collection/components/infotext/infotext.js +2 -2
- package/dist/collection/components/input/input.js +3 -3
- package/dist/collection/components/link/link.js +2 -2
- package/dist/collection/components/notification/notification.js +2 -2
- package/dist/collection/components/popover/popover.js +75 -46
- package/dist/collection/components/radio/radio.js +2 -2
- package/dist/collection/components/section/section.js +2 -2
- package/dist/collection/components/select/select.js +2 -2
- package/dist/collection/components/shell/index.js +2 -0
- package/dist/collection/components/shell/model.js +1 -0
- package/dist/collection/components/{header/header.js → shell/shell.js} +92 -143
- package/dist/collection/components/shell-content/index.js +2 -0
- package/dist/collection/components/shell-content/model.js +1 -0
- package/dist/collection/components/{page/page.js → shell-content/shell-content.js} +67 -86
- package/dist/collection/components/shell-sub-navigation/index.js +2 -0
- package/dist/collection/components/shell-sub-navigation/model.js +1 -0
- package/dist/collection/components/shell-sub-navigation/shell-sub-navigation.js +248 -0
- package/dist/collection/components/stack/stack.js +2 -2
- package/dist/collection/components/switch/switch.js +2 -2
- package/dist/collection/components/tab-item/tab-item.js +3 -3
- package/dist/collection/components/tab-list/tab-list.js +2 -2
- package/dist/collection/components/tab-panel/tab-panel.js +2 -2
- package/dist/collection/components/table/table.js +27 -3
- package/dist/collection/components/table-body/table-body.js +27 -3
- package/dist/collection/components/table-caption/table-caption.js +27 -2
- package/dist/collection/components/table-data-cell/table-data-cell.js +27 -2
- package/dist/collection/components/table-footer/table-footer.js +27 -3
- package/dist/collection/components/table-head/table-head.js +27 -3
- package/dist/collection/components/table-header-cell/table-header-cell.js +27 -2
- package/dist/collection/components/table-row/table-row.js +27 -3
- package/dist/collection/components/tabs/tabs.js +75 -18
- package/dist/collection/components/tag/tag.js +2 -2
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/tooltip/tooltip.js +63 -49
- package/dist/collection/index.js +32 -10
- package/dist/collection/shared/constants.js +7 -2
- package/dist/collection/shared/model.js +4 -0
- package/dist/collection/utils/abstract-document-listener.js +23 -0
- package/dist/collection/utils/abstract-observer-listener.js +61 -0
- package/dist/collection/utils/document-click-listener.js +5 -9
- package/dist/collection/utils/document-scroll-listener.js +5 -9
- package/dist/collection/utils/floating-components.js +193 -115
- package/dist/collection/utils/index.js +40 -2
- package/dist/collection/utils/intersection-observer-listener.js +36 -0
- package/dist/collection/utils/navigation.js +113 -74
- package/dist/collection/utils/resize-observer-listener.js +36 -0
- package/dist/custom-elements.json +11897 -8400
- package/dist/db-ux/db-ux.esm.js +1 -1
- package/dist/db-ux/index.esm.js +1 -1
- package/dist/db-ux/{p-d9d006e7.entry.js → p-158c64e0.entry.js} +1 -1
- package/dist/db-ux/p-1fa944fd.entry.js +1 -0
- package/dist/db-ux/{p-a176424b.entry.js → p-2012c72a.entry.js} +1 -1
- package/dist/db-ux/p-234fee81.entry.js +1 -0
- package/dist/db-ux/{p-6b8375e8.entry.js → p-3566a5b2.entry.js} +1 -1
- package/dist/db-ux/p-3b61c223.entry.js +1 -0
- package/dist/db-ux/p-3d5fc4b6.entry.js +1 -0
- package/dist/db-ux/p-3e113cfe.entry.js +1 -0
- package/dist/db-ux/p-42644385.entry.js +1 -0
- package/dist/db-ux/p-42fd6a5c.entry.js +1 -0
- package/dist/db-ux/p-441d444e.entry.js +1 -0
- package/dist/db-ux/{p-a8556349.entry.js → p-4ecd501a.entry.js} +1 -1
- package/dist/db-ux/{p-77a47225.entry.js → p-53f827e1.entry.js} +1 -1
- package/dist/db-ux/{p-eedf08e0.entry.js → p-5696a8d3.entry.js} +1 -1
- package/dist/db-ux/p-56b2a25d.entry.js +1 -0
- package/dist/db-ux/{p-68f00121.entry.js → p-5a1a7588.entry.js} +1 -1
- package/dist/db-ux/p-5c5dce95.entry.js +1 -0
- package/dist/db-ux/p-5ce9ac6d.entry.js +1 -0
- package/dist/db-ux/{p-57527cef.entry.js → p-636e6a6d.entry.js} +1 -1
- package/dist/db-ux/p-6aac51bf.entry.js +1 -0
- package/dist/db-ux/p-6fc31876.entry.js +1 -0
- package/dist/db-ux/p-7d3541c6.entry.js +1 -0
- package/dist/db-ux/p-8f288b5e.entry.js +1 -0
- package/dist/db-ux/{p-37bf8d87.entry.js → p-9174a1f8.entry.js} +1 -1
- package/dist/db-ux/p-92d1d118.entry.js +1 -0
- package/dist/db-ux/p-94806e39.entry.js +1 -0
- package/dist/db-ux/p-95afbd4b.entry.js +1 -0
- package/dist/db-ux/p-BNNa1bIH.js +1 -0
- package/dist/db-ux/p-BT3wZY6f.js +1 -0
- package/dist/db-ux/p-Bs6e6rEa.js +1 -0
- package/dist/db-ux/p-Bu2uTpuB.js +1 -0
- package/dist/db-ux/p-CHtd83tf.js +1 -0
- package/dist/db-ux/p-COv1iCFP.js +1 -0
- package/dist/db-ux/p-D-LMtTru.js +1 -0
- package/dist/db-ux/p-DB8jc8lh.js +1 -0
- package/dist/db-ux/p-a2fd6f02.entry.js +1 -0
- package/dist/db-ux/p-a526be72.entry.js +1 -0
- package/dist/db-ux/{p-db1b9f5d.entry.js → p-aa0d6af7.entry.js} +1 -1
- package/dist/db-ux/p-ab2ca4f9.entry.js +1 -0
- package/dist/db-ux/p-b124f5d7.entry.js +1 -0
- package/dist/db-ux/p-b4069c07.entry.js +1 -0
- package/dist/db-ux/p-b90adbf2.entry.js +1 -0
- package/dist/db-ux/p-bbqCwwgU.js +1 -0
- package/dist/db-ux/p-c36731c4.entry.js +1 -0
- package/dist/db-ux/p-c6e965b9.entry.js +1 -0
- package/dist/db-ux/p-d0340bf6.entry.js +1 -0
- package/dist/db-ux/p-d354d861.entry.js +1 -0
- package/dist/db-ux/{p-6d41baf1.entry.js → p-d7ffa767.entry.js} +1 -1
- package/dist/db-ux/{p-70b6ebcd.entry.js → p-da34c367.entry.js} +1 -1
- package/dist/db-ux/{p-81edb316.entry.js → p-eb18be29.entry.js} +1 -1
- package/dist/db-ux/p-eee0f32c.entry.js +1 -0
- package/dist/db-ux/p-f1f23724.entry.js +1 -0
- package/dist/esm/{constants-BdL-nI5y.js → constants-COv1iCFP.js} +8 -3
- package/dist/esm/db-accordion-item.entry.js +3 -3
- package/dist/esm/db-accordion.entry.js +2 -2
- package/dist/esm/db-badge.entry.js +4 -4
- package/dist/esm/db-button.entry.js +6 -3
- package/dist/esm/db-card.entry.js +3 -3
- package/dist/esm/db-checkbox.entry.js +5 -5
- package/dist/esm/db-control-panel-brand.entry.js +93 -0
- package/dist/esm/db-control-panel-desktop.entry.js +146 -0
- package/dist/esm/db-control-panel-flat-icon.entry.js +132 -0
- package/dist/esm/{db-navigation.entry.js → db-control-panel-meta.entry.js} +8 -8
- package/dist/esm/db-control-panel-mobile.entry.js +122 -0
- package/dist/esm/db-control-panel-navigation-item-group.entry.js +418 -0
- package/dist/esm/db-control-panel-navigation-item.entry.js +233 -0
- package/dist/esm/db-control-panel-navigation.entry.js +577 -0
- package/dist/esm/db-control-panel-primary-actions.entry.js +93 -0
- package/dist/esm/db-control-panel-secondary-actions.entry.js +93 -0
- package/dist/esm/{db-brand.entry.js → db-control-panel-skip-navigation.entry.js} +9 -9
- package/dist/esm/db-custom-button.entry.js +3 -3
- package/dist/esm/db-custom-select-dropdown_5.entry.js +14 -14
- package/dist/esm/db-custom-select-form-field.entry.js +3 -3
- package/dist/esm/db-custom-select.entry.js +50 -26
- package/dist/esm/db-divider.entry.js +2 -2
- package/dist/esm/db-drawer_3.entry.js +453 -0
- package/dist/esm/db-icon.entry.js +3 -3
- package/dist/esm/db-infotext.entry.js +3 -3
- package/dist/esm/db-link_4.entry.js +12 -10
- package/dist/esm/db-notification.entry.js +4 -4
- package/dist/esm/db-popover.entry.js +50 -22
- package/dist/esm/db-radio.entry.js +4 -4
- package/dist/esm/db-section.entry.js +3 -3
- package/dist/esm/db-select.entry.js +5 -5
- package/dist/esm/db-shell-content.entry.js +95 -0
- package/dist/esm/db-shell-sub-navigation.entry.js +108 -0
- package/dist/esm/{db-page.entry.js → db-shell.entry.js} +16 -17
- package/dist/esm/db-stack.entry.js +3 -3
- package/dist/esm/db-switch.entry.js +5 -5
- package/dist/esm/db-tab-item_3.entry.js +8 -8
- package/dist/esm/db-table-body_3.entry.js +10 -10
- package/dist/esm/db-table-caption.entry.js +4 -3
- package/dist/esm/db-table.entry.js +4 -4
- package/dist/esm/db-tabs.entry.js +23 -18
- package/dist/esm/db-textarea.entry.js +5 -5
- package/dist/esm/db-tooltip.entry.js +39 -26
- package/dist/esm/db-ux.js +1 -1
- package/dist/esm/{document-click-listener-9wJfRcvz.js → document-click-listener-BEYsNvC5.js} +5 -9
- package/dist/esm/{document-scroll-listener-4F0ZAg9p.js → document-scroll-listener-B8lkAL-m.js} +29 -10
- package/dist/esm/{floating-components-DOPXnIzL.js → floating-components-BT3wZY6f.js} +194 -116
- package/dist/esm/{form-components-ZV7IN0oG.js → form-components-zJeL8XMn.js} +1 -1
- package/dist/esm/{index-fumiz06Y.js → index-DB8jc8lh.js} +41 -3
- package/dist/esm/index.js +17 -10
- package/dist/esm/intersection-observer-listener-DQ4WWSLe.js +39 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/navigation-Cc_Ln-dl.js +174 -0
- package/dist/esm/resize-observer-listener-z8XjzxC9.js +100 -0
- package/dist/types/components/accordion/model.d.ts +2 -8
- package/dist/types/components/button/button.d.ts +2 -0
- package/dist/types/components/button/model.d.ts +8 -0
- package/dist/types/components/{brand/brand.d.ts → control-panel-brand/control-panel-brand.d.ts} +5 -9
- package/dist/types/components/control-panel-brand/index.d.ts +2 -0
- package/dist/types/components/control-panel-brand/model.d.ts +5 -0
- package/dist/types/components/control-panel-desktop/control-panel-desktop.d.ts +41 -0
- package/dist/types/components/control-panel-desktop/index.d.ts +2 -0
- package/dist/types/components/control-panel-desktop/model.d.ts +5 -0
- package/dist/types/components/{page/page.d.ts → control-panel-flat-icon/control-panel-flat-icon.d.ts} +10 -12
- package/dist/types/components/control-panel-flat-icon/index.d.ts +2 -0
- package/dist/types/components/control-panel-flat-icon/model.d.ts +12 -0
- package/dist/types/components/control-panel-meta/control-panel-meta.d.ts +23 -0
- package/dist/types/components/control-panel-meta/index.d.ts +2 -0
- package/dist/types/components/control-panel-meta/model.d.ts +5 -0
- package/dist/types/components/control-panel-mobile/control-panel-mobile.d.ts +36 -0
- package/dist/types/components/control-panel-mobile/index.d.ts +2 -0
- package/dist/types/components/control-panel-mobile/model.d.ts +21 -0
- package/dist/types/components/control-panel-navigation/control-panel-navigation.d.ts +54 -0
- package/dist/types/components/control-panel-navigation/index.d.ts +2 -0
- package/dist/types/components/control-panel-navigation/model.d.ts +25 -0
- package/dist/types/components/control-panel-navigation-item/control-panel-navigation-item.d.ts +42 -0
- package/dist/types/components/control-panel-navigation-item/index.d.ts +2 -0
- package/dist/types/components/control-panel-navigation-item/model.d.ts +20 -0
- package/dist/types/components/control-panel-navigation-item-group/control-panel-navigation-item-group.d.ts +74 -0
- package/dist/types/components/control-panel-navigation-item-group/index.d.ts +2 -0
- package/dist/types/components/control-panel-navigation-item-group/model.d.ts +44 -0
- package/dist/types/components/control-panel-primary-actions/control-panel-primary-actions.d.ts +23 -0
- package/dist/types/components/control-panel-primary-actions/index.d.ts +2 -0
- package/dist/types/components/control-panel-primary-actions/model.d.ts +5 -0
- package/dist/types/components/control-panel-secondary-actions/control-panel-secondary-actions.d.ts +23 -0
- package/dist/types/components/control-panel-secondary-actions/index.d.ts +2 -0
- package/dist/types/components/control-panel-secondary-actions/model.d.ts +5 -0
- package/dist/types/components/control-panel-skip-navigation/control-panel-skip-navigation.d.ts +25 -0
- package/dist/types/components/control-panel-skip-navigation/index.d.ts +2 -0
- package/dist/types/components/control-panel-skip-navigation/model.d.ts +16 -0
- package/dist/types/components/custom-select/custom-select.d.ts +2 -1
- package/dist/types/components/custom-select/model.d.ts +5 -1
- package/dist/types/components/drawer/drawer.d.ts +9 -6
- package/dist/types/components/drawer/model.d.ts +21 -3
- package/dist/types/components/{navigation/navigation.d.ts → drawer-footer/drawer-footer.d.ts} +5 -5
- package/dist/types/components/drawer-footer/index.d.ts +2 -0
- package/dist/types/components/drawer-footer/model.d.ts +5 -0
- package/dist/types/components/drawer-header/drawer-header.d.ts +30 -0
- package/dist/types/components/drawer-header/index.d.ts +2 -0
- package/dist/types/components/drawer-header/model.d.ts +9 -0
- package/dist/types/components/popover/popover.d.ts +3 -2
- package/dist/types/components/shell/index.d.ts +2 -0
- package/dist/types/components/shell/model.d.ts +34 -0
- package/dist/types/components/shell/shell.d.ts +30 -0
- package/dist/types/components/shell-content/index.d.ts +2 -0
- package/dist/types/components/shell-content/model.d.ts +28 -0
- package/dist/types/components/shell-content/shell-content.d.ts +28 -0
- package/dist/types/components/shell-sub-navigation/index.d.ts +2 -0
- package/dist/types/components/shell-sub-navigation/model.d.ts +5 -0
- package/dist/types/components/shell-sub-navigation/shell-sub-navigation.d.ts +29 -0
- package/dist/types/components/table/table.d.ts +1 -0
- package/dist/types/components/table-body/table-body.d.ts +1 -0
- package/dist/types/components/table-caption/table-caption.d.ts +1 -0
- package/dist/types/components/table-data-cell/table-data-cell.d.ts +1 -0
- package/dist/types/components/table-footer/table-footer.d.ts +1 -0
- package/dist/types/components/table-head/table-head.d.ts +1 -0
- package/dist/types/components/table-header-cell/table-header-cell.d.ts +1 -0
- package/dist/types/components/table-row/table-row.d.ts +1 -0
- package/dist/types/components/tabs/model.d.ts +4 -12
- package/dist/types/components/tabs/tabs.d.ts +3 -1
- package/dist/types/components/tooltip/tooltip.d.ts +3 -2
- package/dist/types/components.d.ts +621 -243
- package/dist/types/index.d.ts +32 -10
- package/dist/types/shared/constants.d.ts +44 -39
- package/dist/types/shared/figma.d.ts +11 -4
- package/dist/types/shared/model.d.ts +109 -7
- package/dist/types/utils/abstract-document-listener.d.ts +18 -0
- package/dist/types/utils/abstract-observer-listener.d.ts +39 -0
- package/dist/types/utils/document-click-listener.d.ts +3 -3
- package/dist/types/utils/document-scroll-listener.d.ts +3 -3
- package/dist/types/utils/floating-components.d.ts +29 -6
- package/dist/types/utils/index.d.ts +11 -0
- package/dist/types/utils/intersection-observer-listener.d.ts +15 -0
- package/dist/types/utils/navigation.d.ts +12 -11
- package/dist/types/utils/resize-observer-listener.d.ts +15 -0
- package/dist/vscode.html-custom-data.json +998 -540
- package/dist/web-types.json +2176 -1176
- package/package.json +5 -5
- package/agent/Brand.md +0 -13
- package/agent/Header.md +0 -29
- package/agent/Navigation.md +0 -19
- package/agent/NavigationItem.md +0 -29
- package/agent/Page.md +0 -27
- package/bundle/db-brand.js +0 -1
- package/bundle/db-header.js +0 -1
- package/bundle/db-navigation-item.js +0 -1
- package/bundle/db-navigation.js +0 -1
- package/bundle/db-page.js +0 -1
- package/bundle/p-2eQDIPlF.js +0 -1
- package/bundle/p-BdL-nI5y.js +0 -1
- package/bundle/p-BuBrj57D.js +0 -1
- package/bundle/p-C2w7ILj8.js +0 -1
- package/bundle/p-C47AKJPy.js +0 -1
- package/bundle/p-Cn5NdjPW.js +0 -1
- package/bundle/p-D6L0n3gO.js +0 -1
- package/bundle/p-DFypNnh0.js +0 -1
- package/bundle/p-DJTpgiBy.js +0 -1
- package/bundle/p-DOPXnIzL.js +0 -1
- package/bundle/p-DTM6Wcbf.js +0 -1
- package/bundle/p-DVuZmW_J.js +0 -1
- package/bundle/p-DW47OZNu.js +0 -1
- package/bundle/p-DiEfz0o1.js +0 -1
- package/bundle/p-n2qePi9e.js +0 -1
- package/dist/cjs/db-drawer.cjs.entry.js +0 -204
- package/dist/cjs/db-header.cjs.entry.js +0 -145
- package/dist/cjs/db-navigation-item.cjs.entry.js +0 -182
- package/dist/cjs/navigation-Bah882nU.js +0 -138
- package/dist/collection/components/brand/index.js +0 -2
- package/dist/collection/components/header/index.js +0 -2
- package/dist/collection/components/navigation/index.js +0 -2
- package/dist/collection/components/navigation-item/index.js +0 -2
- package/dist/collection/components/navigation-item/navigation-item.js +0 -577
- package/dist/collection/components/page/index.js +0 -2
- package/dist/collection/components/page/model.js +0 -2
- package/dist/db-ux/p-0758418a.entry.js +0 -1
- package/dist/db-ux/p-1e70d93f.entry.js +0 -1
- package/dist/db-ux/p-2c23efe2.entry.js +0 -1
- package/dist/db-ux/p-38c55e9c.entry.js +0 -1
- package/dist/db-ux/p-4a94fbc9.entry.js +0 -1
- package/dist/db-ux/p-5706f20a.entry.js +0 -1
- package/dist/db-ux/p-6ce4a109.entry.js +0 -1
- package/dist/db-ux/p-6fd70ba4.entry.js +0 -1
- package/dist/db-ux/p-6fdc00bd.entry.js +0 -1
- package/dist/db-ux/p-71399ee3.entry.js +0 -1
- package/dist/db-ux/p-88dcff6a.entry.js +0 -1
- package/dist/db-ux/p-90e9ec2d.entry.js +0 -1
- package/dist/db-ux/p-96978a7f.entry.js +0 -1
- package/dist/db-ux/p-BdL-nI5y.js +0 -1
- package/dist/db-ux/p-BihrW11j.js +0 -1
- package/dist/db-ux/p-BtImZ8Nt.js +0 -1
- package/dist/db-ux/p-BuBrj57D.js +0 -1
- package/dist/db-ux/p-DOPXnIzL.js +0 -1
- package/dist/db-ux/p-OOIf-5XP.js +0 -1
- package/dist/db-ux/p-a07e33e7.entry.js +0 -1
- package/dist/db-ux/p-a4fb4782.entry.js +0 -1
- package/dist/db-ux/p-bb5149a9.entry.js +0 -1
- package/dist/db-ux/p-e58fbd4d.entry.js +0 -1
- package/dist/db-ux/p-e66aa9d8.entry.js +0 -1
- package/dist/db-ux/p-ef63c591.entry.js +0 -1
- package/dist/db-ux/p-f0b5c785.entry.js +0 -1
- package/dist/db-ux/p-f964d5f5.entry.js +0 -1
- package/dist/db-ux/p-fumiz06Y.js +0 -1
- package/dist/esm/db-drawer.entry.js +0 -202
- package/dist/esm/db-header.entry.js +0 -143
- package/dist/esm/db-navigation-item.entry.js +0 -180
- package/dist/esm/navigation-Jh6m0eMk.js +0 -135
- package/dist/types/components/brand/index.d.ts +0 -2
- package/dist/types/components/brand/model.d.ts +0 -10
- package/dist/types/components/header/header.d.ts +0 -40
- package/dist/types/components/header/index.d.ts +0 -2
- package/dist/types/components/header/model.d.ts +0 -44
- package/dist/types/components/navigation/index.d.ts +0 -2
- package/dist/types/components/navigation/model.d.ts +0 -5
- package/dist/types/components/navigation-item/index.d.ts +0 -2
- package/dist/types/components/navigation-item/model.d.ts +0 -39
- package/dist/types/components/navigation-item/navigation-item.d.ts +0 -52
- package/dist/types/components/page/index.d.ts +0 -2
- package/dist/types/components/page/model.d.ts +0 -36
- /package/dist/collection/components/{brand → control-panel-brand}/model.js +0 -0
- /package/dist/collection/components/{header → control-panel-desktop}/model.js +0 -0
- /package/dist/collection/components/{navigation-item → control-panel-flat-icon}/model.js +0 -0
- /package/dist/collection/components/{navigation → control-panel-meta}/model.js +0 -0
|
@@ -1,85 +1,72 @@
|
|
|
1
1
|
// TODO: We should reevaluate this as soon as CSS Anchor Positioning is supported in all relevant browsers
|
|
2
|
-
const isInView = (el) => {
|
|
3
|
-
var _a;
|
|
4
|
-
const { top, bottom, left, right } = el.getBoundingClientRect();
|
|
5
|
-
const { innerHeight, innerWidth } = window;
|
|
6
|
-
let outTop = top < 0;
|
|
7
|
-
let outBottom = bottom > innerHeight;
|
|
8
|
-
let outLeft = left < 0;
|
|
9
|
-
let outRight = right > innerWidth;
|
|
10
|
-
// We need to check if it was already outside
|
|
11
|
-
const outsideY = el.dataset['outsideVy'];
|
|
12
|
-
const outsideX = el.dataset['outsideVx'];
|
|
13
|
-
const parentRect = (_a = el === null || el === void 0 ? void 0 : el.parentElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
14
|
-
if (parentRect) {
|
|
15
|
-
if (outsideY) {
|
|
16
|
-
const position = el.dataset['outsideVy'];
|
|
17
|
-
if (position === 'top') {
|
|
18
|
-
outTop = parentRect.top - (bottom - parentRect.bottom) < 0;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
outBottom = parentRect.bottom + (parentRect.top - top) > innerHeight;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (outsideX) {
|
|
25
|
-
const position = el.dataset['outsideVx'];
|
|
26
|
-
if (position === 'left') {
|
|
27
|
-
outLeft = parentRect.left - (right - parentRect.right) < 0;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
outRight = parentRect.right + (parentRect.left - left) > innerWidth;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
outTop,
|
|
36
|
-
outBottom,
|
|
37
|
-
outLeft,
|
|
38
|
-
outRight
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
export const handleDataOutside = (el) => {
|
|
42
|
-
const { outTop, outBottom, outLeft, outRight } = isInView(el);
|
|
43
|
-
let dataOutsidePair = {};
|
|
44
|
-
if (outTop || outBottom) {
|
|
45
|
-
dataOutsidePair = {
|
|
46
|
-
vy: outTop ? 'top' : 'bottom'
|
|
47
|
-
};
|
|
48
|
-
el.dataset['outsideVy'] = dataOutsidePair.vy;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
delete el.dataset['outsideVy'];
|
|
52
|
-
}
|
|
53
|
-
if (outLeft || outRight) {
|
|
54
|
-
dataOutsidePair = Object.assign(Object.assign({}, dataOutsidePair), { vx: outRight ? 'right' : 'left' });
|
|
55
|
-
el.dataset['outsideVx'] = dataOutsidePair.vx;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
delete el.dataset['outsideVx'];
|
|
59
|
-
}
|
|
60
|
-
return dataOutsidePair;
|
|
61
|
-
};
|
|
62
2
|
export const handleFixedDropdown = (element, parent, placement) => {
|
|
63
3
|
if (!element || !parent)
|
|
64
4
|
return;
|
|
65
|
-
// We skip this if we are in mobile it's already fixed
|
|
66
|
-
if (getComputedStyle(element).zIndex === '9999')
|
|
67
|
-
return;
|
|
68
|
-
const { top, bottom, childHeight, childWidth, width, right, left, correctedPlacement } = getFloatingProps(element, parent, placement);
|
|
69
5
|
const fullWidth = element.dataset['width'] === 'full';
|
|
6
|
+
const autoWidth = element.dataset['width'] === 'auto';
|
|
7
|
+
// Reset width-specific inline styles first so a previous mode (e.g. "auto")
|
|
8
|
+
// doesn't leave a stale minInlineSize/inlineSize behind when the dropdown
|
|
9
|
+
// width changes at runtime. This must happen before getFloatingProps
|
|
10
|
+
// measures the element, otherwise the dropdown would be measured with a
|
|
11
|
+
// width it no longer has and positioned incorrectly. It also has to run
|
|
12
|
+
// before the mobile bailout below: otherwise a desktop minInlineSize would
|
|
13
|
+
// survive into the mobile sheet, where CSS min-inline-size beats the
|
|
14
|
+
// mobile max-inline-size guard and overflows the viewport.
|
|
15
|
+
element.style.inlineSize = '';
|
|
16
|
+
element.style.minInlineSize = '';
|
|
17
|
+
// We skip this if we are in mobile it's already fixed or if we don't have a floating dropdown
|
|
18
|
+
const computedStyle = getComputedStyle(element);
|
|
19
|
+
if (computedStyle.zIndex === '9999' || computedStyle.position !== 'fixed' && computedStyle.position !== 'absolute') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const { top, bottom, childHeight, childWidth, width, right, left, correctedPlacement, innerWidth } = getFloatingProps(element, parent, placement);
|
|
23
|
+
// For auto width the dropdown is forced to be at least as wide as the trigger,
|
|
24
|
+
// but clamped to its own max-inline-size: CSS lets a min-inline-size override
|
|
25
|
+
// the max when the minimum is larger, so a trigger wider than the viewport
|
|
26
|
+
// limit would otherwise drop the side margins or overflow horizontally.
|
|
27
|
+
let autoMinWidth = width;
|
|
28
|
+
if (autoWidth) {
|
|
29
|
+
const maxInlineSize = parseFloat(getComputedStyle(element).maxInlineSize);
|
|
30
|
+
if (!isNaN(maxInlineSize) && maxInlineSize > 0) {
|
|
31
|
+
autoMinWidth = Math.min(width, maxInlineSize);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
70
34
|
if (fullWidth) {
|
|
71
35
|
element.style.inlineSize = `${width}px`;
|
|
72
36
|
}
|
|
73
|
-
if (
|
|
37
|
+
else if (autoWidth) {
|
|
38
|
+
element.style.minInlineSize = `${autoMinWidth}px`;
|
|
39
|
+
}
|
|
40
|
+
// getFloatingProps measured childWidth before the inline styles were
|
|
41
|
+
// (re)applied, so use the width the dropdown will actually have:
|
|
42
|
+
// - auto: the clamped minimum, so end-aligned dropdowns don't extend past
|
|
43
|
+
// the trigger's right edge.
|
|
44
|
+
// - full: the trigger width (the reset above drops it to content width).
|
|
45
|
+
let effectiveChildWidth = childWidth;
|
|
46
|
+
if (autoWidth) {
|
|
47
|
+
effectiveChildWidth = Math.max(childWidth, autoMinWidth);
|
|
48
|
+
}
|
|
49
|
+
else if (fullWidth) {
|
|
50
|
+
effectiveChildWidth = width;
|
|
51
|
+
}
|
|
52
|
+
// getFloatingProps detects horizontal overflow assuming a centered element
|
|
53
|
+
// (it halves childWidth). The dropdown is actually start-aligned (inset =
|
|
54
|
+
// left), so for the wider auto dropdown re-check overflow against its full
|
|
55
|
+
// width and flip to end-alignment when it would extend past the viewport.
|
|
56
|
+
let dropdownPlacement = correctedPlacement;
|
|
57
|
+
if (autoWidth && (dropdownPlacement === 'top' || dropdownPlacement === 'bottom' || dropdownPlacement === 'top-start' || dropdownPlacement === 'bottom-start') && left + effectiveChildWidth > innerWidth) {
|
|
58
|
+
dropdownPlacement = dropdownPlacement.startsWith('top') ? 'top-end' : 'bottom-end';
|
|
59
|
+
}
|
|
60
|
+
if (dropdownPlacement === 'top' || dropdownPlacement === 'bottom' || dropdownPlacement === 'top-start' || dropdownPlacement === 'bottom-start') {
|
|
74
61
|
element.style.insetInlineStart = `${left}px`;
|
|
75
62
|
}
|
|
76
|
-
else if (
|
|
77
|
-
element.style.insetInlineStart = `${right -
|
|
63
|
+
else if (dropdownPlacement === 'top-end' || dropdownPlacement === 'bottom-end') {
|
|
64
|
+
element.style.insetInlineStart = `${Math.max(right - effectiveChildWidth, 0)}px`;
|
|
78
65
|
}
|
|
79
|
-
if (
|
|
66
|
+
if (dropdownPlacement === null || dropdownPlacement === void 0 ? void 0 : dropdownPlacement.startsWith('top')) {
|
|
80
67
|
element.style.insetBlockStart = `${top - childHeight}px`;
|
|
81
68
|
}
|
|
82
|
-
else if (
|
|
69
|
+
else if (dropdownPlacement === null || dropdownPlacement === void 0 ? void 0 : dropdownPlacement.startsWith('bottom')) {
|
|
83
70
|
element.style.insetBlockStart = `${bottom}px`;
|
|
84
71
|
}
|
|
85
72
|
element.style.position = 'fixed';
|
|
@@ -106,27 +93,29 @@ export const getFloatingProps = (element, parent, placement) => {
|
|
|
106
93
|
let childHeight = childRect.height;
|
|
107
94
|
let childWidth = childRect.width;
|
|
108
95
|
if (placement === 'bottom' || placement === 'top') {
|
|
109
|
-
childWidth = childWidth / 2;
|
|
96
|
+
childWidth = width > childWidth ? 0 : childWidth / 2;
|
|
110
97
|
}
|
|
111
98
|
if (placement === 'left' || placement === 'right') {
|
|
112
|
-
childHeight = childHeight / 2;
|
|
99
|
+
childHeight = height > childHeight ? 0 : childHeight / 2;
|
|
113
100
|
}
|
|
114
|
-
const outsideBottom = bottom + childHeight > innerHeight;
|
|
115
|
-
const outsideTop = top - childHeight < 0;
|
|
116
|
-
const outsideLeft = left - childWidth < 0;
|
|
117
|
-
const outsideRight = right + childWidth > innerWidth;
|
|
101
|
+
const outsideBottom = Math.floor(bottom + childHeight) > innerHeight;
|
|
102
|
+
const outsideTop = Math.ceil(top - childHeight) < 0;
|
|
103
|
+
const outsideLeft = Math.ceil(left - childWidth) < 0;
|
|
104
|
+
const outsideRight = Math.floor(right + childWidth) > innerWidth;
|
|
118
105
|
let correctedPlacement = placement;
|
|
119
106
|
if (placement.startsWith('bottom')) {
|
|
120
107
|
if (outsideBottom) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
108
|
+
if (!outsideTop) {
|
|
109
|
+
correctedPlacement = placement === null || placement === void 0 ? void 0 : placement.replace('bottom', 'top');
|
|
110
|
+
if (outsideLeft && outsideRight) {
|
|
111
|
+
correctedPlacement = 'top';
|
|
112
|
+
}
|
|
113
|
+
else if (outsideLeft) {
|
|
114
|
+
correctedPlacement = 'top-start';
|
|
115
|
+
}
|
|
116
|
+
else if (outsideRight) {
|
|
117
|
+
correctedPlacement = 'top-end';
|
|
118
|
+
}
|
|
130
119
|
}
|
|
131
120
|
}
|
|
132
121
|
else {
|
|
@@ -143,15 +132,17 @@ export const getFloatingProps = (element, parent, placement) => {
|
|
|
143
132
|
}
|
|
144
133
|
else if (placement.startsWith('top')) {
|
|
145
134
|
if (outsideTop) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
135
|
+
if (!outsideBottom) {
|
|
136
|
+
correctedPlacement = placement === null || placement === void 0 ? void 0 : placement.replace('top', 'bottom');
|
|
137
|
+
if (outsideLeft && outsideRight) {
|
|
138
|
+
correctedPlacement = 'bottom';
|
|
139
|
+
}
|
|
140
|
+
else if (outsideLeft) {
|
|
141
|
+
correctedPlacement = 'bottom-start';
|
|
142
|
+
}
|
|
143
|
+
else if (outsideRight) {
|
|
144
|
+
correctedPlacement = 'bottom-end';
|
|
145
|
+
}
|
|
155
146
|
}
|
|
156
147
|
}
|
|
157
148
|
else {
|
|
@@ -168,15 +159,17 @@ export const getFloatingProps = (element, parent, placement) => {
|
|
|
168
159
|
}
|
|
169
160
|
else if (placement.startsWith('left')) {
|
|
170
161
|
if (outsideLeft) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
162
|
+
if (!outsideRight) {
|
|
163
|
+
correctedPlacement = placement === null || placement === void 0 ? void 0 : placement.replace('left', 'right');
|
|
164
|
+
if (outsideBottom && outsideTop) {
|
|
165
|
+
correctedPlacement = 'right';
|
|
166
|
+
}
|
|
167
|
+
else if (outsideBottom) {
|
|
168
|
+
correctedPlacement = 'right-end';
|
|
169
|
+
}
|
|
170
|
+
else if (outsideTop) {
|
|
171
|
+
correctedPlacement = 'right-start';
|
|
172
|
+
}
|
|
180
173
|
}
|
|
181
174
|
}
|
|
182
175
|
else {
|
|
@@ -193,15 +186,17 @@ export const getFloatingProps = (element, parent, placement) => {
|
|
|
193
186
|
}
|
|
194
187
|
else if (correctedPlacement.startsWith('right')) {
|
|
195
188
|
if (outsideRight) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
189
|
+
if (!outsideLeft) {
|
|
190
|
+
correctedPlacement = placement === null || placement === void 0 ? void 0 : placement.replace('right', 'left');
|
|
191
|
+
if (outsideBottom && outsideTop) {
|
|
192
|
+
correctedPlacement = 'left';
|
|
193
|
+
}
|
|
194
|
+
else if (outsideBottom) {
|
|
195
|
+
correctedPlacement = 'left-end';
|
|
196
|
+
}
|
|
197
|
+
else if (outsideTop) {
|
|
198
|
+
correctedPlacement = 'left-start';
|
|
199
|
+
}
|
|
205
200
|
}
|
|
206
201
|
}
|
|
207
202
|
else {
|
|
@@ -227,7 +222,8 @@ export const getFloatingProps = (element, parent, placement) => {
|
|
|
227
222
|
childWidth: childRect.width,
|
|
228
223
|
correctedPlacement,
|
|
229
224
|
innerWidth,
|
|
230
|
-
innerHeight
|
|
225
|
+
innerHeight,
|
|
226
|
+
outsideYBoth: outsideTop && outsideBottom
|
|
231
227
|
};
|
|
232
228
|
};
|
|
233
229
|
const MAX_ANCESTOR_DEPTH = 10;
|
|
@@ -250,15 +246,24 @@ const getAncestorHasCorrectedPlacement = (element) => {
|
|
|
250
246
|
return null;
|
|
251
247
|
};
|
|
252
248
|
export const handleFixedPopover = (element, parent, placement) => {
|
|
253
|
-
var _a, _b;
|
|
249
|
+
var _a, _b, _c;
|
|
254
250
|
if (!element || !parent)
|
|
255
251
|
return;
|
|
256
252
|
const parentComputedStyles = getComputedStyle(parent);
|
|
257
253
|
const parentHasFloatingPosition = ['absolute', 'fixed'].includes(parentComputedStyles.position);
|
|
258
254
|
const ancestorWithCorrectedPlacement = getAncestorHasCorrectedPlacement(element);
|
|
259
255
|
const noFloatingAncestor = !ancestorWithCorrectedPlacement && !parentHasFloatingPosition;
|
|
260
|
-
const
|
|
261
|
-
|
|
256
|
+
const computedStyle = getComputedStyle(element);
|
|
257
|
+
// We skip if we don't have a floating popover
|
|
258
|
+
if (computedStyle.position !== 'fixed' && computedStyle.position !== 'absolute') {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
let distance = computedStyle.getPropertyValue('--db-popover-distance');
|
|
262
|
+
if (!distance.length) {
|
|
263
|
+
distance = '0px';
|
|
264
|
+
}
|
|
265
|
+
const elementPlacement = (_c = (_b = (_a = element === null || element === void 0 ? void 0 : element.dataset) === null || _a === void 0 ? void 0 : _a['placement']) !== null && _b !== void 0 ? _b : placement) !== null && _c !== void 0 ? _c : 'bottom';
|
|
266
|
+
let { top, height, width, childHeight, childWidth, right, left, bottom, correctedPlacement, innerWidth, innerHeight, outsideYBoth } = getFloatingProps(element, parent, elementPlacement);
|
|
262
267
|
if (ancestorWithCorrectedPlacement) {
|
|
263
268
|
const ancestorRect = ancestorWithCorrectedPlacement.getBoundingClientRect();
|
|
264
269
|
left = Math.abs(left - ancestorRect.left);
|
|
@@ -354,6 +359,79 @@ export const handleFixedPopover = (element, parent, placement) => {
|
|
|
354
359
|
element.style.insetBlockStart = `calc(${parentHasFloatingPosition ? end : bottom}px + ${distance})`;
|
|
355
360
|
element.style.insetBlockEnd = `calc(${noFloatingAncestor && end > innerHeight ? innerHeight : end}px + ${distance})`;
|
|
356
361
|
}
|
|
362
|
+
// In this case we are outside of top and bottom so we need to scroll
|
|
363
|
+
// We use the full height in this case
|
|
364
|
+
if (outsideYBoth) {
|
|
365
|
+
element.style.overflow = 'hidden auto';
|
|
366
|
+
element.style.insetBlock = distance;
|
|
367
|
+
element.style.maxBlockSize = `calc(${innerHeight}px - 2 * ${distance})`;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
element.style.overflow = '';
|
|
371
|
+
element.style.maxBlockSize = '';
|
|
372
|
+
}
|
|
357
373
|
element.style.position = 'fixed';
|
|
358
374
|
element.dataset['correctedPlacement'] = correctedPlacement;
|
|
375
|
+
// Set data-outside-vy / data-outside-vx for CSS-based flipping
|
|
376
|
+
handleDataOutside(element);
|
|
377
|
+
};
|
|
378
|
+
export const handleDataOutside = (el) => {
|
|
379
|
+
const { outTop, outBottom, outLeft, outRight } = isInView(el);
|
|
380
|
+
let dataOutsidePair = {};
|
|
381
|
+
if (outTop || outBottom) {
|
|
382
|
+
dataOutsidePair = {
|
|
383
|
+
vy: outTop ? 'top' : 'bottom'
|
|
384
|
+
};
|
|
385
|
+
el.dataset['outsideVy'] = dataOutsidePair.vy;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
delete el.dataset['outsideVy'];
|
|
389
|
+
}
|
|
390
|
+
if (outLeft || outRight) {
|
|
391
|
+
dataOutsidePair = Object.assign(Object.assign({}, dataOutsidePair), { vx: outRight ? 'right' : 'left' });
|
|
392
|
+
el.dataset['outsideVx'] = dataOutsidePair.vx;
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
delete el.dataset['outsideVx'];
|
|
396
|
+
}
|
|
397
|
+
return dataOutsidePair;
|
|
398
|
+
};
|
|
399
|
+
const isInView = (el) => {
|
|
400
|
+
var _a;
|
|
401
|
+
const { top, bottom, left, right } = el.getBoundingClientRect();
|
|
402
|
+
const { innerHeight, innerWidth } = window;
|
|
403
|
+
let outTop = top < 0;
|
|
404
|
+
let outBottom = bottom > innerHeight;
|
|
405
|
+
let outLeft = left < 0;
|
|
406
|
+
let outRight = right > innerWidth;
|
|
407
|
+
// We need to check if it was already outside
|
|
408
|
+
const outsideY = el.dataset['outsideVy'];
|
|
409
|
+
const outsideX = el.dataset['outsideVx'];
|
|
410
|
+
const parentRect = (_a = el === null || el === void 0 ? void 0 : el.parentElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
411
|
+
if (parentRect) {
|
|
412
|
+
if (outsideY) {
|
|
413
|
+
const position = el.dataset['outsideVy'];
|
|
414
|
+
if (position === 'top') {
|
|
415
|
+
outTop = parentRect.top - (bottom - parentRect.bottom) < 0;
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
outBottom = parentRect.bottom + (parentRect.top - top) > innerHeight;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
if (outsideX) {
|
|
422
|
+
const position = el.dataset['outsideVx'];
|
|
423
|
+
if (position === 'left') {
|
|
424
|
+
outLeft = parentRect.left - (right - parentRect.right) < 0;
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
outRight = parentRect.right + (parentRect.left - left) > innerWidth;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return {
|
|
432
|
+
outTop,
|
|
433
|
+
outBottom,
|
|
434
|
+
outLeft,
|
|
435
|
+
outRight
|
|
436
|
+
};
|
|
359
437
|
};
|
|
@@ -60,6 +60,16 @@ export const isIOSSafari = () => {
|
|
|
60
60
|
return isIOS && isSafari;
|
|
61
61
|
};
|
|
62
62
|
export const delay = (fn, ms) => new Promise(() => setTimeout(fn, ms));
|
|
63
|
+
/**
|
|
64
|
+
* Checks whether a CSS custom property on an element equals '1'.
|
|
65
|
+
* Useful for detecting CSS-driven boolean state (e.g. responsive breakpoints)
|
|
66
|
+
* without coupling JS to hardcoded breakpoint values.
|
|
67
|
+
*
|
|
68
|
+
* @param element - The element to read computed styles from
|
|
69
|
+
* @param property - The CSS custom property name (e.g. '--db-my-flag')
|
|
70
|
+
* @returns `true` if the trimmed property value is '1'
|
|
71
|
+
*/
|
|
72
|
+
export const hasCssFlag = (element, property) => typeof window !== 'undefined' && getComputedStyle(element).getPropertyValue(property).trim() === '1';
|
|
63
73
|
/**
|
|
64
74
|
* Converts boolean-like inputs to "true" or "false" strings.
|
|
65
75
|
* Handles HTML-style boolean attributes where an empty string or the
|
|
@@ -139,9 +149,37 @@ export const stringPropVisible = (givenString, showString) => {
|
|
|
139
149
|
return toBool(showString) && Boolean(givenString);
|
|
140
150
|
};
|
|
141
151
|
export const getSearchInput = (element) => element.querySelector(`input[type="search"]`);
|
|
152
|
+
// WeakMap to store generated keys for option objects without mutating them.
|
|
153
|
+
// Used only as a last resort for options that have neither id, value, nor label.
|
|
154
|
+
const optionKeyMap = new WeakMap();
|
|
142
155
|
export const getOptionKey = (option, prefix) => {
|
|
143
|
-
var _a
|
|
144
|
-
|
|
156
|
+
var _a;
|
|
157
|
+
// 1. Consumer-provided id — stable and unique (best case).
|
|
158
|
+
if (option.id) {
|
|
159
|
+
return `${prefix}${option.id}`;
|
|
160
|
+
}
|
|
161
|
+
// 2. Data-based key from value and/or label — stable across object
|
|
162
|
+
// recreations (e.g. inline options={[...]} on every render).
|
|
163
|
+
// Combining both fields maximizes uniqueness: two options may share
|
|
164
|
+
// a value but users couldn't distinguish identical labels, so in
|
|
165
|
+
// practice the combination is unique.
|
|
166
|
+
// We prefix each segment with its length to avoid ambiguous
|
|
167
|
+
// concatenations (e.g. 'a-b'+'c' vs 'a'+'b-c').
|
|
168
|
+
const value = option.value !== undefined && option.value !== '' ? String(option.value) : '';
|
|
169
|
+
const label = (_a = option.label) !== null && _a !== void 0 ? _a : '';
|
|
170
|
+
if (value || label) {
|
|
171
|
+
return `${prefix}${value.length}:${value}.${label}`;
|
|
172
|
+
}
|
|
173
|
+
// 3. Last resort for truly anonymous options (no id, no value, no label).
|
|
174
|
+
// WeakMap ties a generated uuid to the object reference so the key
|
|
175
|
+
// persists as long as the same object is reused. If the consumer
|
|
176
|
+
// recreates these objects every render, keys will be unstable — but
|
|
177
|
+
// that's an unsolvable edge case without any data to anchor to.
|
|
178
|
+
let key = optionKeyMap.get(option);
|
|
179
|
+
if (!key) {
|
|
180
|
+
key = uuid();
|
|
181
|
+
optionKeyMap.set(option, key);
|
|
182
|
+
}
|
|
145
183
|
return `${prefix}${key}`;
|
|
146
184
|
};
|
|
147
185
|
export const isKeyboardEvent = (event) => event.key !== undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AbstractObserverListener } from "./abstract-observer-listener.js";
|
|
2
|
+
export class IntersectionObserverListener extends AbstractObserverListener {
|
|
3
|
+
constructor() {
|
|
4
|
+
super();
|
|
5
|
+
if (IntersectionObserverListener._instance) {
|
|
6
|
+
return IntersectionObserverListener._instance;
|
|
7
|
+
}
|
|
8
|
+
IntersectionObserverListener._instance = this;
|
|
9
|
+
if (typeof window !== 'undefined' && 'IntersectionObserver' in window) {
|
|
10
|
+
IntersectionObserverListener.observer = new IntersectionObserver(entries => {
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
this.dispatchEntry(entry.target, entry);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
getCallbacksByElement() {
|
|
18
|
+
return IntersectionObserverListener.callbacksByElement;
|
|
19
|
+
}
|
|
20
|
+
getIdToElement() {
|
|
21
|
+
return IntersectionObserverListener.idToElement;
|
|
22
|
+
}
|
|
23
|
+
getObserver() {
|
|
24
|
+
return IntersectionObserverListener.observer;
|
|
25
|
+
}
|
|
26
|
+
observeElement(observer, element) {
|
|
27
|
+
observer.observe(element);
|
|
28
|
+
}
|
|
29
|
+
unobserveElement(observer, element) {
|
|
30
|
+
observer.unobserve(element);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
IntersectionObserverListener._instance = null;
|
|
34
|
+
IntersectionObserverListener.callbacksByElement = new Map();
|
|
35
|
+
IntersectionObserverListener.idToElement = new Map();
|
|
36
|
+
IntersectionObserverListener.observer = null;
|