@telesign/boreal-web-components 0.1.0-alpha.4 → 0.1.0-alpha.6
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/components-build/bds-avatar.js +1 -1
- package/components-build/bds-badge.js +1 -1
- package/components-build/bds-banner.js +1 -1
- package/components-build/bds-breadcrumb-item.d.ts +11 -0
- package/components-build/bds-breadcrumb-item.js +1 -0
- package/components-build/bds-breadcrumb.d.ts +11 -0
- package/components-build/bds-breadcrumb.js +1 -0
- package/components-build/bds-button-group.d.ts +11 -0
- package/components-build/bds-button-group.js +1 -0
- package/components-build/bds-button.js +1 -1
- package/components-build/bds-checkbox-button.d.ts +11 -0
- package/components-build/bds-checkbox-button.js +1 -0
- package/components-build/bds-checkbox-card.d.ts +11 -0
- package/components-build/bds-checkbox-card.js +1 -0
- package/components-build/bds-checkbox-group.d.ts +11 -0
- package/components-build/bds-checkbox-group.js +1 -0
- package/components-build/bds-checkbox.js +1 -1
- package/components-build/bds-dialog.js +1 -1
- package/components-build/bds-divider.js +1 -1
- package/components-build/bds-flag.js +1 -1
- package/components-build/bds-grid-item.js +1 -1
- package/components-build/bds-grid.js +1 -1
- package/components-build/bds-list-menu-item.js +1 -1
- package/components-build/bds-list-menu.js +1 -1
- package/components-build/bds-popover.js +1 -1
- package/components-build/bds-radio-button.d.ts +11 -0
- package/components-build/bds-radio-button.js +1 -0
- package/components-build/bds-radio-card.d.ts +11 -0
- package/components-build/bds-radio-card.js +1 -0
- package/components-build/bds-radio-group.d.ts +11 -0
- package/components-build/bds-radio-group.js +1 -0
- package/components-build/bds-radio.d.ts +11 -0
- package/components-build/bds-radio.js +1 -0
- package/components-build/bds-select.d.ts +11 -0
- package/components-build/bds-select.js +1 -0
- package/components-build/bds-slider.d.ts +11 -0
- package/components-build/bds-slider.js +1 -0
- package/components-build/bds-spinner.js +1 -1
- package/components-build/bds-status.js +1 -1
- package/components-build/bds-tag.js +1 -1
- package/components-build/bds-text-field.js +1 -1
- package/components-build/bds-toggle.js +1 -1
- package/components-build/bds-tooltip.js +1 -1
- package/components-build/bds-typography.js +1 -1
- package/components-build/index.js +1 -1
- package/components-build/p-B6e9eIHB.js +1 -0
- package/components-build/p-CJBdGD_4.js +1 -0
- package/components-build/p-CPvuMm5C.js +1 -0
- package/components-build/p-DcR7mHFE.js +1 -0
- package/components-build/p-DdOPD9wW.js +1 -0
- package/components-build/p-DfaYciGa.js +1 -0
- package/components-build/p-Dh8DSJs_.js +1 -0
- package/components-build/p-DoNZM78n.js +1 -0
- package/components-build/p-DrkDx75U.js +1 -0
- package/components-build/p-DuBzr05c.js +1 -0
- package/components-build/p-PmjPRW8X.js +1 -0
- package/components-build/p-cgdh1LO-.js +1 -0
- package/{dist/boreal-web-components/p-CaHOghy5.js → components-build/p-fUK0GCeC.js} +1 -1
- package/components-build/p-nxYzL9uu.js +1 -0
- package/components-build/p-yLNcMg2E.js +1 -0
- package/custom-elements.json +5078 -1524
- package/dist/boreal-web-components/boreal-web-components.esm.js +1 -1
- package/dist/boreal-web-components/css/boreal.css +60 -0
- package/dist/boreal-web-components/css/theme-connect.css +15 -0
- package/dist/boreal-web-components/css/theme-engage.css +15 -0
- package/dist/boreal-web-components/css/theme-protect.css +15 -0
- package/dist/boreal-web-components/css/theme-proximus.css +15 -0
- package/dist/boreal-web-components/p-02e53626.entry.js +1 -0
- package/dist/boreal-web-components/p-0357450d.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-e0bf8a6e.entry.js → p-1250ba53.entry.js} +1 -1
- package/dist/boreal-web-components/p-1911b978.entry.js +1 -0
- package/dist/boreal-web-components/{p-2158a7cd.entry.js → p-19f9352d.entry.js} +1 -1
- package/dist/boreal-web-components/p-1mOd23lT.system.js +1 -0
- package/dist/boreal-web-components/{p-52600375.system.entry.js → p-25823f7d.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-2db71382.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-251d35df.system.entry.js → p-365e8e5c.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-367e40f9.entry.js +1 -0
- package/dist/boreal-web-components/p-3946d587.entry.js +1 -0
- package/dist/boreal-web-components/p-44b6fe6c.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-7a4efddd.system.entry.js → p-48712a63.system.entry.js} +1 -1
- package/dist/boreal-web-components/{p-251b3002.entry.js → p-49ea207a.entry.js} +1 -1
- package/dist/boreal-web-components/p-4b028406.entry.js +1 -0
- package/dist/boreal-web-components/p-4b615de8.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-edca16b6.system.entry.js → p-4f431941.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-524421f7.system.entry.js +1 -0
- package/dist/boreal-web-components/p-530c8c7f.entry.js +1 -0
- package/dist/boreal-web-components/p-55aeff0c.system.entry.js +1 -0
- package/dist/boreal-web-components/p-5c8650b3.system.entry.js +1 -0
- package/dist/boreal-web-components/p-5e590291.system.entry.js +1 -0
- package/dist/boreal-web-components/p-5ee0841f.entry.js +1 -0
- package/dist/boreal-web-components/{p-871c9a9f.system.entry.js → p-65923619.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-66ec16d9.entry.js +1 -0
- package/dist/boreal-web-components/{p-127a4134.entry.js → p-714bf70d.entry.js} +1 -1
- package/dist/boreal-web-components/{p-66360e63.entry.js → p-71ed1e1d.entry.js} +1 -1
- package/dist/boreal-web-components/{p-b12d4788.system.entry.js → p-732e98f1.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-7626338e.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-80822731.system.entry.js → p-77658a5b.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-7G4h4DI7.js +1 -0
- package/dist/boreal-web-components/p-800fc096.system.entry.js +1 -0
- package/dist/boreal-web-components/p-824485ad.entry.js +1 -0
- package/dist/boreal-web-components/p-8dfe3a9f.entry.js +1 -0
- package/dist/boreal-web-components/p-90022071.entry.js +1 -0
- package/dist/boreal-web-components/{p-1d1bb9d2.entry.js → p-9d02057d.entry.js} +1 -1
- package/dist/boreal-web-components/p-C-g3hhl_.system.js +1 -0
- package/dist/boreal-web-components/p-C0P3gzq5.system.js +1 -0
- package/dist/boreal-web-components/p-C4HM8wQe.js +1 -0
- package/dist/boreal-web-components/p-CPvuMm5C.js +1 -0
- package/dist/boreal-web-components/p-CRMH6mfq.system.js +1 -0
- package/dist/boreal-web-components/p-CU_dRLdk.system.js +1 -0
- package/dist/boreal-web-components/p-CW4-dkCF.system.js +1 -0
- package/dist/boreal-web-components/p-CcENtewr.js +1 -0
- package/dist/boreal-web-components/{p-BuxZeJbu.system.js → p-DSU8tkVw.system.js} +1 -1
- package/dist/boreal-web-components/p-DfaYciGa.js +1 -0
- package/dist/boreal-web-components/p-Dk9dfU9-.system.js +1 -0
- package/dist/boreal-web-components/p-DlVzZK7o.js +1 -0
- package/dist/boreal-web-components/p-DnIhjwCH.system.js +1 -0
- package/dist/boreal-web-components/p-Dwo1hcd9.js +1 -0
- package/dist/boreal-web-components/p-K7DvMlRo.system.js +1 -0
- package/{components-build/p-CaHOghy5.js → dist/boreal-web-components/p-U9yfbs7i.js} +1 -1
- package/dist/boreal-web-components/p-UEj9YHof.system.js +1 -0
- package/dist/boreal-web-components/p-b54fe67f.system.entry.js +1 -0
- package/dist/boreal-web-components/p-bbcd3a30.system.entry.js +1 -0
- package/dist/boreal-web-components/p-bea25d3d.system.entry.js +1 -0
- package/dist/boreal-web-components/p-bed506d3.entry.js +1 -0
- package/dist/boreal-web-components/p-bfd62034.system.entry.js +1 -0
- package/dist/boreal-web-components/p-c07d6b82.system.entry.js +1 -0
- package/dist/boreal-web-components/p-cc5c359f.entry.js +1 -0
- package/dist/boreal-web-components/p-cgdh1LO-.js +1 -0
- package/dist/boreal-web-components/p-d2b6ae79.entry.js +1 -0
- package/dist/boreal-web-components/{p-695d0830.entry.js → p-dc7d429c.entry.js} +1 -1
- package/dist/boreal-web-components/p-e21b8416.entry.js +1 -0
- package/dist/boreal-web-components/p-e4364a44.system.entry.js +1 -0
- package/dist/boreal-web-components/p-e51407b2.system.entry.js +1 -0
- package/dist/boreal-web-components/p-e8cde179.system.entry.js +1 -0
- package/dist/boreal-web-components/p-eecc3028.system.entry.js +1 -0
- package/dist/boreal-web-components/p-f3bd824d.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-44ceff4e.system.entry.js → p-f65e9d0c.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-f6eabb16.entry.js +1 -0
- package/dist/boreal-web-components/p-f7acf6e5.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-7db870b7.entry.js → p-f9560509.entry.js} +1 -1
- package/dist/boreal-web-components/p-fa128cad.system.entry.js +1 -0
- package/dist/boreal-web-components/p-fab1a01d.entry.js +1 -0
- package/dist/boreal-web-components/{p-fc24d963.entry.js → p-fb9a0e94.entry.js} +1 -1
- package/dist/boreal-web-components/p-fb9ba833.entry.js +1 -0
- package/dist/boreal-web-components/p-fbe0c9f2.entry.js +1 -0
- package/dist/boreal-web-components/p-fbe88555.entry.js +1 -0
- package/dist/boreal-web-components/p-fc1fa966.system.entry.js +1 -0
- package/dist/boreal-web-components/p-fc4ffa0e.entry.js +1 -0
- package/dist/boreal-web-components/p-fef13445.entry.js +1 -0
- package/dist/boreal-web-components/p-iq2UuV7c.js +1 -0
- package/dist/boreal-web-components/p-qGhMe8Hk.js +1 -0
- package/dist/boreal-web-components/p-vzZJGcYF.system.js +1 -1
- package/dist/boreal-web-components/scss/maps/_theme-connect.scss +16 -1
- package/dist/boreal-web-components/scss/maps/_theme-engage.scss +16 -1
- package/dist/boreal-web-components/scss/maps/_theme-protect.scss +16 -1
- package/dist/boreal-web-components/scss/maps/_theme-proximus.scss +16 -1
- package/dist/boreal-web-components/scss/variables/_theme-connect.scss +16 -1
- package/dist/boreal-web-components/scss/variables/_theme-engage.scss +16 -1
- package/dist/boreal-web-components/scss/variables/_theme-protect.scss +16 -1
- package/dist/boreal-web-components/scss/variables/_theme-proximus.scss +16 -1
- package/dist/cjs/KeyboardController-B_g3peyB.js +1067 -0
- package/dist/cjs/Keys-DXn16dlA.js +34 -0
- package/dist/cjs/Logger-DnziItRH.js +51 -0
- package/dist/cjs/{attributes-wIHueigW.js → attributes-CgRFplrN.js} +3 -0
- package/dist/cjs/bds-avatar.cjs.entry.js +2 -2
- package/dist/cjs/bds-badge.cjs.entry.js +1 -1
- package/dist/cjs/bds-banner.cjs.entry.js +2 -2
- package/dist/cjs/bds-breadcrumb-item.cjs.entry.js +106 -0
- package/dist/cjs/bds-breadcrumb.cjs.entry.js +127 -0
- package/dist/cjs/bds-button-group.cjs.entry.js +116 -0
- package/dist/cjs/bds-button.cjs.entry.js +38 -17
- package/dist/cjs/bds-checkbox-button.cjs.entry.js +119 -0
- package/dist/cjs/bds-checkbox-card.cjs.entry.js +135 -0
- package/dist/cjs/bds-checkbox-group.cjs.entry.js +292 -0
- package/dist/cjs/bds-checkbox.cjs.entry.js +67 -29
- package/dist/cjs/bds-dialog.cjs.entry.js +4 -4
- package/dist/cjs/bds-divider.cjs.entry.js +2 -2
- package/dist/cjs/bds-flag.cjs.entry.js +1 -1
- package/dist/cjs/bds-grid-item.cjs.entry.js +1 -1
- package/dist/cjs/bds-grid.cjs.entry.js +1 -1
- package/dist/cjs/bds-list-menu-item.cjs.entry.js +59 -23
- package/dist/cjs/bds-list-menu.cjs.entry.js +126 -22
- package/dist/cjs/bds-popover.cjs.entry.js +15 -6
- package/dist/cjs/bds-radio-button.cjs.entry.js +60 -0
- package/dist/cjs/bds-radio-card.cjs.entry.js +76 -0
- package/dist/cjs/bds-radio-group.cjs.entry.js +291 -0
- package/dist/cjs/bds-radio.cjs.entry.js +60 -0
- package/dist/cjs/bds-select.cjs.entry.js +394 -0
- package/dist/cjs/bds-slider.cjs.entry.js +655 -0
- package/dist/cjs/bds-spinner.cjs.entry.js +1 -1
- package/dist/cjs/bds-status.cjs.entry.js +1 -1
- package/dist/cjs/bds-tag.cjs.entry.js +2 -2
- package/dist/cjs/bds-text-field.cjs.entry.js +15 -9
- package/dist/cjs/bds-toggle.cjs.entry.js +7 -6
- package/dist/cjs/bds-tooltip_2.cjs.entry.js +12 -9
- package/dist/cjs/boreal-web-components.cjs.js +1 -1
- package/dist/cjs/checkbox-form-association-DTEpHXUD.js +43 -0
- package/dist/cjs/coreColors-CQGojc0l.js +10 -0
- package/dist/cjs/{enum-DLblRCkQ.js → enum-DeTWfR0D.js} +3 -3
- package/dist/cjs/form-associated.mixin-BCR6bj29.js +33 -0
- package/dist/cjs/{getOffset-m4hBgyVP.js → getOffset-CsDHFjPW.js} +6 -53
- package/dist/cjs/{form-associated.mixin-DXwvF_vW.js → internals-D8x7GMfR.js} +0 -31
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/orientation-DQAIleEJ.js +8 -0
- package/dist/collection/collection-manifest.json +18 -6
- package/dist/collection/components/actions/bds-button/bds-button.css +55 -55
- package/dist/collection/components/actions/bds-button/bds-button.js +35 -11
- package/dist/collection/components/actions/bds-button/types/enum.js +3 -3
- package/dist/collection/components/actions/bds-button-group/bds-button-group.css +77 -0
- package/dist/collection/components/actions/bds-button-group/bds-button-group.js +264 -0
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu/bds-list-menu.css +27 -1
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu/bds-list-menu.js +283 -51
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu/types/enum.js +4 -0
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu-item/bds-list-menu-item.css +30 -11
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu-item/bds-list-menu-item.js +65 -7
- package/dist/collection/components/actions/bds-toggle/bds-toggle.css +3 -3
- package/dist/collection/components/actions/bds-toggle/bds-toggle.js +1 -1
- package/dist/collection/components/feedback/bds-badge/bds-badge.js +1 -1
- package/dist/collection/components/feedback/bds-banner/bds-banner.js +1 -1
- package/dist/collection/components/feedback/bds-spinner/bds-spinner.js +1 -1
- package/dist/collection/components/feedback/bds-status/bds-status.js +1 -1
- package/dist/collection/components/feedback/bds-tag/bds-tag.css +6 -6
- package/dist/collection/components/feedback/bds-tag/bds-tag.js +1 -1
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox/bds-checkbox.css +132 -0
- package/dist/collection/components/forms/bds-checkbox/{bds-checkbox.js → bds-checkbox/bds-checkbox.js} +138 -35
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-button/bds-checkbox-button.css +113 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-button/bds-checkbox-button.js +382 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-card/bds-checkbox-card.css +139 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-card/bds-checkbox-card.js +443 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-group/bds-checkbox-group.css +55 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-group/bds-checkbox-group.js +648 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-group/types/enum.js +5 -0
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox-group/types/index.js +3 -0
- package/dist/collection/components/forms/bds-checkbox/utils/checkbox-form-association.js +39 -0
- package/dist/collection/components/forms/bds-checkbox/utils/index.js +1 -0
- package/dist/collection/components/forms/bds-flag/bds-flag.js +1 -1
- package/dist/collection/components/forms/bds-radio/bds-radio/bds-radio.css +121 -0
- package/dist/collection/components/forms/bds-radio/bds-radio/bds-radio.js +238 -0
- package/dist/collection/components/forms/bds-radio/bds-radio/types/IRadio.js +1 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-button/bds-radio-button.css +113 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-button/bds-radio-button.js +238 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-button/types/IRadioButton.js +1 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-card/bds-radio-card.css +156 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-card/bds-radio-card.js +307 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-card/types/IRadioCard.js +1 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-group/bds-radio-group.css +55 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-group/bds-radio-group.js +648 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-group/types/IRadioGroup.js +1 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-group/types/enum.js +5 -0
- package/dist/collection/components/forms/bds-radio/bds-radio-group/types/types.js +1 -0
- package/dist/collection/components/forms/bds-select/bds-select.css +23 -0
- package/dist/collection/components/forms/bds-select/bds-select.js +431 -0
- package/dist/collection/components/forms/bds-select/types/ISelect.js +1 -0
- package/dist/collection/components/forms/bds-slider/bds-slider.css +213 -0
- package/dist/collection/components/forms/bds-slider/bds-slider.js +847 -0
- package/dist/collection/components/forms/bds-slider/helpers/SliderDOMController.js +61 -0
- package/dist/collection/components/forms/bds-slider/helpers/SliderService.js +93 -0
- package/dist/collection/components/forms/bds-slider/helpers/index.js +3 -0
- package/dist/collection/components/forms/bds-slider/helpers/parseValues.js +43 -0
- package/dist/collection/components/forms/bds-slider/types/ChangeDetail.js +1 -0
- package/dist/collection/components/forms/bds-slider/types/ISlider.js +1 -0
- package/dist/collection/components/forms/bds-slider/types/ISliderOptions.js +1 -0
- package/dist/collection/components/forms/bds-slider/types/enum.js +16 -0
- package/dist/collection/components/forms/bds-slider/types/index.js +5 -0
- package/dist/collection/components/forms/bds-slider/types/types.js +1 -0
- package/dist/collection/components/forms/bds-text-field/bds-text-field.css +10 -3
- package/dist/collection/components/forms/bds-text-field/bds-text-field.js +47 -2
- package/dist/collection/components/helpers/{bds-divider.css → bds-divider/bds-divider.css} +12 -4
- package/dist/collection/components/helpers/{bds-divider.js → bds-divider/bds-divider.js} +3 -3
- package/dist/collection/components/helpers/bds-divider/types/IDivider.js +1 -0
- package/dist/collection/components/helpers/bds-divider/types/types.js +1 -0
- package/dist/collection/components/images-icons/bds-avatar/bds-avatar.js +1 -1
- package/dist/collection/components/layouts/bds-grid/{grid → bds-grid}/bds-grid.js +3 -3
- package/dist/collection/components/layouts/bds-grid/bds-grid/types/IGrid.js +1 -0
- package/dist/collection/components/layouts/bds-grid/bds-grid/types/types.js +1 -0
- package/dist/collection/components/layouts/bds-grid/{grid-item → bds-grid-item}/bds-grid-item.js +9 -9
- package/dist/collection/components/layouts/bds-grid/bds-grid-item/types/IGridItem.js +1 -0
- package/dist/collection/components/layouts/bds-grid/bds-grid-item/types/types.js +1 -0
- package/dist/collection/components/navigation/bds-breadcrumb/bds-breadcrumb.css +21 -0
- package/dist/collection/components/navigation/bds-breadcrumb/bds-breadcrumb.js +292 -0
- package/dist/collection/components/navigation/bds-breadcrumb/types/IBreadcrumb.js +1 -0
- package/dist/collection/components/navigation/bds-breadcrumb-item/bds-breadcrumb-item.css +64 -0
- package/dist/collection/components/navigation/bds-breadcrumb-item/bds-breadcrumb-item.js +369 -0
- package/dist/collection/components/navigation/bds-breadcrumb-item/types/IBreadcrumbItem.js +1 -0
- package/dist/collection/components/overlays/bds-dialog/bds-dialog.css +1 -1
- package/dist/collection/components/overlays/bds-dialog/bds-dialog.js +2 -2
- package/dist/collection/components/overlays/bds-popover/bds-popover.js +49 -3
- package/dist/collection/components/overlays/bds-tooltip/bds-tooltip.js +3 -3
- package/dist/collection/components/titles-text/bds-typography/bds-typography.css +5 -0
- package/dist/collection/components/titles-text/bds-typography/bds-typography.js +30 -47
- package/dist/collection/components/titles-text/bds-typography/utils/bds-typography-utils.js +1 -1
- package/dist/collection/css/boreal.css +60 -0
- package/dist/collection/css/theme-connect.css +15 -0
- package/dist/collection/css/theme-engage.css +15 -0
- package/dist/collection/css/theme-protect.css +15 -0
- package/dist/collection/css/theme-proximus.css +15 -0
- package/dist/collection/mixins/anchored.mixin.js +2 -2
- package/dist/collection/mixins/links.mixin.js +1 -2
- package/dist/collection/mixins/menu-behavior.mixin.js +12 -6
- package/dist/collection/scss/maps/_theme-connect.scss +16 -1
- package/dist/collection/scss/maps/_theme-engage.scss +16 -1
- package/dist/collection/scss/maps/_theme-protect.scss +16 -1
- package/dist/collection/scss/maps/_theme-proximus.scss +16 -1
- package/dist/collection/scss/variables/_theme-connect.scss +16 -1
- package/dist/collection/scss/variables/_theme-engage.scss +16 -1
- package/dist/collection/scss/variables/_theme-protect.scss +16 -1
- package/dist/collection/scss/variables/_theme-proximus.scss +16 -1
- package/dist/collection/types/index.js +2 -1
- package/dist/collection/types/orientation.js +4 -0
- package/dist/collection/utils/a11y/index.js +4 -0
- package/dist/collection/utils/a11y/keyboard/KeyboardController.js +566 -0
- package/dist/collection/utils/a11y/keyboard/_constants.js +30 -0
- package/dist/collection/utils/a11y/keyboard/focus/aria-activedescendant.js +41 -0
- package/dist/collection/utils/a11y/keyboard/focus/resolve.js +48 -0
- package/dist/collection/utils/a11y/keyboard/focus/roving-tabindex.js +55 -0
- package/dist/collection/utils/a11y/keyboard/navigation/grid-navigation.js +194 -0
- package/dist/collection/utils/a11y/keyboard/navigation/linear-navigation.js +137 -0
- package/dist/collection/utils/a11y/keyboard/types/IKeyboardController.js +1 -0
- package/dist/collection/utils/a11y/keyboard/types/index.js +2 -0
- package/dist/collection/utils/a11y/keyboard/types/types.js +1 -0
- package/dist/collection/utils/constants/common/Keys.js +29 -24
- package/dist/collection/utils/dom/elements.js +63 -0
- package/dist/collection/utils/menu/menu-item.utils.js +9 -8
- package/dist/collection/utils/testing/helpers.js +10 -0
- package/dist/css/boreal.css +60 -0
- package/dist/css/theme-connect.css +15 -0
- package/dist/css/theme-engage.css +15 -0
- package/dist/css/theme-protect.css +15 -0
- package/dist/css/theme-proximus.css +15 -0
- package/dist/esm/KeyboardController-DcnXb5F5.js +1064 -0
- package/dist/esm/Keys-7G4h4DI7.js +31 -0
- package/dist/esm/Logger-iq2UuV7c.js +49 -0
- package/dist/esm/{attributes-CaHOghy5.js → attributes-U9yfbs7i.js} +3 -0
- package/dist/esm/bds-avatar.entry.js +2 -2
- package/dist/esm/bds-badge.entry.js +1 -1
- package/dist/esm/bds-banner.entry.js +2 -2
- package/dist/esm/bds-breadcrumb-item.entry.js +104 -0
- package/dist/esm/bds-breadcrumb.entry.js +125 -0
- package/dist/esm/bds-button-group.entry.js +114 -0
- package/dist/esm/bds-button.entry.js +36 -15
- package/dist/esm/bds-checkbox-button.entry.js +117 -0
- package/dist/esm/bds-checkbox-card.entry.js +133 -0
- package/dist/esm/bds-checkbox-group.entry.js +290 -0
- package/dist/esm/bds-checkbox.entry.js +67 -29
- package/dist/esm/bds-dialog.entry.js +4 -4
- package/dist/esm/bds-divider.entry.js +2 -2
- package/dist/esm/bds-flag.entry.js +1 -1
- package/dist/esm/bds-grid-item.entry.js +1 -1
- package/dist/esm/bds-grid.entry.js +1 -1
- package/dist/esm/bds-list-menu-item.entry.js +59 -23
- package/dist/esm/bds-list-menu.entry.js +126 -22
- package/dist/esm/bds-popover.entry.js +15 -6
- package/dist/esm/bds-radio-button.entry.js +58 -0
- package/dist/esm/bds-radio-card.entry.js +74 -0
- package/dist/esm/bds-radio-group.entry.js +289 -0
- package/dist/esm/bds-radio.entry.js +58 -0
- package/dist/esm/bds-select.entry.js +392 -0
- package/dist/esm/bds-slider.entry.js +653 -0
- package/dist/esm/bds-spinner.entry.js +1 -1
- package/dist/esm/bds-status.entry.js +1 -1
- package/dist/esm/bds-tag.entry.js +2 -2
- package/dist/esm/bds-text-field.entry.js +10 -4
- package/dist/esm/bds-toggle.entry.js +5 -4
- package/dist/esm/bds-tooltip_2.entry.js +12 -9
- package/dist/esm/boreal-web-components.js +1 -1
- package/dist/esm/checkbox-form-association-cgdh1LO-.js +41 -0
- package/dist/esm/coreColors-Dwo1hcd9.js +8 -0
- package/dist/esm/{enum-C8mRvnTA.js → enum-DlVzZK7o.js} +4 -4
- package/dist/esm/form-associated.mixin-C4HM8wQe.js +31 -0
- package/dist/esm/{getOffset-DKPjeBHi.js → getOffset-DCLpJBcp.js} +4 -51
- package/dist/esm/{form-associated.mixin-CvK2d92c.js → internals-DfaYciGa.js} +1 -31
- package/dist/esm/loader.js +1 -1
- package/dist/esm/orientation-CPvuMm5C.js +6 -0
- package/dist/esm-es5/KeyboardController-DcnXb5F5.js +1 -0
- package/dist/esm-es5/Keys-7G4h4DI7.js +1 -0
- package/dist/esm-es5/Logger-iq2UuV7c.js +1 -0
- package/dist/esm-es5/{attributes-CaHOghy5.js → attributes-U9yfbs7i.js} +1 -1
- package/dist/esm-es5/bds-avatar.entry.js +1 -1
- package/dist/esm-es5/bds-badge.entry.js +1 -1
- package/dist/esm-es5/bds-banner.entry.js +1 -1
- package/dist/esm-es5/bds-breadcrumb-item.entry.js +1 -0
- package/dist/esm-es5/bds-breadcrumb.entry.js +1 -0
- package/dist/esm-es5/bds-button-group.entry.js +1 -0
- package/dist/esm-es5/bds-button.entry.js +1 -1
- package/dist/esm-es5/bds-checkbox-button.entry.js +1 -0
- package/dist/esm-es5/bds-checkbox-card.entry.js +1 -0
- package/dist/esm-es5/bds-checkbox-group.entry.js +1 -0
- package/dist/esm-es5/bds-checkbox.entry.js +1 -1
- package/dist/esm-es5/bds-dialog.entry.js +1 -1
- package/dist/esm-es5/bds-divider.entry.js +1 -1
- package/dist/esm-es5/bds-flag.entry.js +1 -1
- package/dist/esm-es5/bds-grid-item.entry.js +1 -1
- package/dist/esm-es5/bds-grid.entry.js +1 -1
- package/dist/esm-es5/bds-list-menu-item.entry.js +1 -1
- package/dist/esm-es5/bds-list-menu.entry.js +1 -1
- package/dist/esm-es5/bds-popover.entry.js +1 -1
- package/dist/esm-es5/bds-radio-button.entry.js +1 -0
- package/dist/esm-es5/bds-radio-card.entry.js +1 -0
- package/dist/esm-es5/bds-radio-group.entry.js +1 -0
- package/dist/esm-es5/bds-radio.entry.js +1 -0
- package/dist/esm-es5/bds-select.entry.js +1 -0
- package/dist/esm-es5/bds-slider.entry.js +1 -0
- package/dist/esm-es5/bds-spinner.entry.js +1 -1
- package/dist/esm-es5/bds-status.entry.js +1 -1
- package/dist/esm-es5/bds-tag.entry.js +1 -1
- package/dist/esm-es5/bds-text-field.entry.js +1 -1
- package/dist/esm-es5/bds-toggle.entry.js +1 -1
- package/dist/esm-es5/bds-tooltip_2.entry.js +1 -1
- package/dist/esm-es5/boreal-web-components.js +1 -1
- package/dist/esm-es5/checkbox-form-association-cgdh1LO-.js +1 -0
- package/dist/esm-es5/coreColors-Dwo1hcd9.js +1 -0
- package/dist/esm-es5/enum-DlVzZK7o.js +1 -0
- package/dist/esm-es5/form-associated.mixin-C4HM8wQe.js +1 -0
- package/dist/esm-es5/getOffset-DCLpJBcp.js +1 -0
- package/dist/esm-es5/internals-DfaYciGa.js +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/orientation-CPvuMm5C.js +1 -0
- package/dist/scss/maps/_theme-connect.scss +16 -1
- package/dist/scss/maps/_theme-engage.scss +16 -1
- package/dist/scss/maps/_theme-protect.scss +16 -1
- package/dist/scss/maps/_theme-proximus.scss +16 -1
- package/dist/scss/variables/_theme-connect.scss +16 -1
- package/dist/scss/variables/_theme-engage.scss +16 -1
- package/dist/scss/variables/_theme-protect.scss +16 -1
- package/dist/scss/variables/_theme-proximus.scss +16 -1
- package/dist/types/components/actions/bds-button/bds-button.d.ts +8 -4
- package/dist/types/components/actions/bds-button/types/enum.d.ts +3 -3
- package/dist/types/components/actions/bds-button-group/bds-button-group.d.ts +40 -0
- package/dist/types/components/actions/bds-button-group/types/IButtonGroup.d.ts +11 -0
- package/dist/types/components/actions/bds-list-menu/bds-list-menu/bds-list-menu.d.ts +32 -15
- package/dist/types/components/actions/bds-list-menu/bds-list-menu/types/IListMenu.d.ts +17 -0
- package/dist/types/components/actions/bds-list-menu/bds-list-menu/types/enum.d.ts +5 -0
- package/dist/types/components/actions/bds-list-menu/bds-list-menu/types/types.d.ts +3 -0
- package/dist/types/components/actions/bds-list-menu/bds-list-menu-item/bds-list-menu-item.d.ts +10 -1
- package/dist/types/components/actions/bds-list-menu/bds-list-menu-item/types/IListMenuItem.d.ts +2 -0
- package/dist/types/components/actions/bds-toggle/types/IToggle.d.ts +1 -1
- package/dist/types/components/forms/bds-checkbox/{bds-checkbox.d.ts → bds-checkbox/bds-checkbox.d.ts} +24 -9
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-button/bds-checkbox-button.d.ts +68 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-button/types/ICheckboxButton.d.ts +15 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-card/bds-checkbox-card.d.ts +63 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-card/types/ICheckboxCard.d.ts +9 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-group/bds-checkbox-group.d.ts +86 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-group/types/ICheckboxGroup.d.ts +27 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-group/types/enum.d.ts +6 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-group/types/index.d.ts +4 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox-group/types/types.d.ts +4 -0
- package/dist/types/components/forms/bds-checkbox/types/ICheckbox.d.ts +7 -22
- package/dist/types/components/forms/bds-checkbox/utils/checkbox-form-association.d.ts +10 -0
- package/dist/types/components/forms/bds-checkbox/utils/index.d.ts +2 -0
- package/dist/types/components/forms/bds-radio/bds-radio/bds-radio.d.ts +36 -0
- package/dist/types/components/forms/bds-radio/bds-radio/types/IRadio.d.ts +13 -0
- package/dist/types/components/forms/bds-radio/bds-radio-button/bds-radio-button.d.ts +36 -0
- package/dist/types/components/forms/bds-radio/bds-radio-button/types/IRadioButton.d.ts +14 -0
- package/dist/types/components/forms/bds-radio/bds-radio-card/bds-radio-card.d.ts +57 -0
- package/dist/types/components/forms/bds-radio/bds-radio-card/types/IRadioCard.d.ts +14 -0
- package/dist/types/components/forms/bds-radio/bds-radio-group/bds-radio-group.d.ts +85 -0
- package/dist/types/components/forms/bds-radio/bds-radio-group/types/IRadioGroup.d.ts +20 -0
- package/dist/types/components/forms/bds-radio/bds-radio-group/types/enum.d.ts +6 -0
- package/dist/types/components/forms/bds-radio/bds-radio-group/types/types.d.ts +3 -0
- package/dist/types/components/forms/bds-select/bds-select.d.ts +98 -0
- package/dist/types/components/forms/bds-select/types/ISelect.d.ts +6 -0
- package/dist/types/components/forms/bds-slider/bds-slider.d.ts +176 -0
- package/dist/types/components/forms/bds-slider/helpers/SliderDOMController.d.ts +38 -0
- package/dist/types/components/forms/bds-slider/helpers/SliderService.d.ts +44 -0
- package/dist/types/components/forms/bds-slider/helpers/index.d.ts +4 -0
- package/dist/types/components/forms/bds-slider/helpers/parseValues.d.ts +18 -0
- package/dist/types/components/forms/bds-slider/types/ChangeDetail.d.ts +9 -0
- package/dist/types/components/forms/bds-slider/types/ISlider.d.ts +17 -0
- package/dist/types/components/forms/bds-slider/types/ISliderOptions.d.ts +31 -0
- package/dist/types/components/forms/bds-slider/types/enum.d.ts +17 -0
- package/dist/types/components/forms/bds-slider/types/index.d.ts +6 -0
- package/dist/types/components/forms/bds-slider/types/types.d.ts +5 -0
- package/dist/types/components/forms/bds-text-field/bds-text-field.d.ts +4 -0
- package/dist/types/components/navigation/bds-breadcrumb/bds-breadcrumb.d.ts +57 -0
- package/dist/types/components/navigation/bds-breadcrumb/types/IBreadcrumb.d.ts +17 -0
- package/dist/types/components/navigation/bds-breadcrumb-item/bds-breadcrumb-item.d.ts +83 -0
- package/dist/types/components/navigation/bds-breadcrumb-item/types/IBreadcrumbItem.d.ts +20 -0
- package/dist/types/components/overlays/bds-popover/bds-popover.d.ts +4 -0
- package/dist/types/components/titles-text/bds-typography/bds-typography.d.ts +2 -46
- package/dist/types/components/titles-text/bds-typography/types/ITypography.d.ts +1 -0
- package/dist/types/components.d.ts +2187 -450
- package/dist/types/mixins/menu-behavior.mixin.d.ts +5 -1
- package/dist/types/types/form.d.ts +24 -0
- package/dist/types/types/index.d.ts +2 -1
- package/dist/types/types/orientation.d.ts +6 -0
- package/dist/types/utils/a11y/index.d.ts +4 -0
- package/dist/types/utils/a11y/keyboard/KeyboardController.d.ts +321 -0
- package/dist/types/utils/a11y/keyboard/_constants.d.ts +28 -0
- package/dist/types/utils/a11y/keyboard/focus/aria-activedescendant.d.ts +17 -0
- package/dist/types/utils/a11y/keyboard/focus/resolve.d.ts +23 -0
- package/dist/types/utils/a11y/keyboard/focus/roving-tabindex.d.ts +20 -0
- package/dist/types/utils/a11y/keyboard/navigation/grid-navigation.d.ts +9 -0
- package/dist/types/utils/a11y/keyboard/navigation/linear-navigation.d.ts +13 -0
- package/dist/types/utils/a11y/keyboard/types/IKeyboardController.d.ts +125 -0
- package/dist/types/utils/a11y/keyboard/types/index.d.ts +3 -0
- package/dist/types/utils/a11y/keyboard/types/types.d.ts +6 -0
- package/dist/types/utils/constants/common/Keys.d.ts +28 -14
- package/dist/types/utils/dom/elements.d.ts +41 -0
- package/dist/types/utils/menu/menu-item.utils.d.ts +2 -2
- package/dist/types/utils/testing/helpers.d.ts +8 -0
- package/package.json +1 -1
- package/components-build/p-B8n1ru5i.js +0 -1
- package/components-build/p-CGdxFth9.js +0 -1
- package/components-build/p-CrAt6pGl.js +0 -1
- package/components-build/p-DCwT43Kz.js +0 -1
- package/components-build/p-DIY3CDNL.js +0 -1
- package/dist/boreal-web-components/p-0028481c.entry.js +0 -1
- package/dist/boreal-web-components/p-1466de58.system.entry.js +0 -1
- package/dist/boreal-web-components/p-2b8bd1dd.entry.js +0 -1
- package/dist/boreal-web-components/p-32c23246.system.entry.js +0 -1
- package/dist/boreal-web-components/p-3fbcc233.entry.js +0 -1
- package/dist/boreal-web-components/p-401f1aee.system.entry.js +0 -1
- package/dist/boreal-web-components/p-41b48701.system.entry.js +0 -1
- package/dist/boreal-web-components/p-41cac1b8.system.entry.js +0 -1
- package/dist/boreal-web-components/p-627b19a5.system.entry.js +0 -1
- package/dist/boreal-web-components/p-649737e5.entry.js +0 -1
- package/dist/boreal-web-components/p-64cb5825.entry.js +0 -1
- package/dist/boreal-web-components/p-6a99f4c6.system.entry.js +0 -1
- package/dist/boreal-web-components/p-731b88cc.entry.js +0 -1
- package/dist/boreal-web-components/p-74c13bed.system.entry.js +0 -1
- package/dist/boreal-web-components/p-7f7ac40f.entry.js +0 -1
- package/dist/boreal-web-components/p-82d49661.entry.js +0 -1
- package/dist/boreal-web-components/p-83ca193e.entry.js +0 -1
- package/dist/boreal-web-components/p-BQ_zoZa2.js +0 -1
- package/dist/boreal-web-components/p-C8mRvnTA.js +0 -1
- package/dist/boreal-web-components/p-CdKFZYxk.system.js +0 -1
- package/dist/boreal-web-components/p-CtknSula.system.js +0 -1
- package/dist/boreal-web-components/p-CvK2d92c.js +0 -1
- package/dist/boreal-web-components/p-CzYQb3pP.js +0 -1
- package/dist/boreal-web-components/p-DZcx75cy.system.js +0 -1
- package/dist/boreal-web-components/p-Dme-NuTD.system.js +0 -1
- package/dist/boreal-web-components/p-ab5ffa15.system.entry.js +0 -1
- package/dist/boreal-web-components/p-ba2b625a.system.entry.js +0 -1
- package/dist/boreal-web-components/p-bf2ef10b.entry.js +0 -1
- package/dist/boreal-web-components/p-c7aee9f4.system.entry.js +0 -1
- package/dist/cjs/Keys-DbIXSJF2.js +0 -22
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox.css +0 -90
- package/dist/esm/Keys-CzYQb3pP.js +0 -20
- package/dist/esm-es5/Keys-CzYQb3pP.js +0 -1
- package/dist/esm-es5/enum-C8mRvnTA.js +0 -1
- package/dist/esm-es5/form-associated.mixin-CvK2d92c.js +0 -1
- package/dist/esm-es5/getOffset-DKPjeBHi.js +0 -1
- package/dist/types/types/IFormProps.d.ts +0 -25
- /package/dist/collection/components/{helpers/types/IDivider.js → actions/bds-button-group/types/IButtonGroup.js} +0 -0
- /package/dist/collection/components/{helpers/types/types.js → actions/bds-list-menu/bds-list-menu/types/IListMenu.js} +0 -0
- /package/dist/collection/components/{layouts/bds-grid/grid-item → actions/bds-list-menu/bds-list-menu}/types/types.js +0 -0
- /package/dist/collection/components/{layouts/bds-grid/grid-item/types/IGridItem.js → forms/bds-checkbox/bds-checkbox-button/types/ICheckboxButton.js} +0 -0
- /package/dist/collection/components/{layouts/bds-grid/grid/types/IGrid.js → forms/bds-checkbox/bds-checkbox-card/types/ICheckboxCard.js} +0 -0
- /package/dist/collection/components/{layouts/bds-grid/grid/types/types.js → forms/bds-checkbox/bds-checkbox-group/types/ICheckboxGroup.js} +0 -0
- /package/dist/collection/{types/IFormProps.js → components/forms/bds-checkbox/bds-checkbox-group/types/types.js} +0 -0
- /package/dist/collection/components/helpers/{types → bds-divider/types}/enum.js +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid → bds-grid}/bds-grid.css +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid → bds-grid}/types/enum.js +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid → bds-grid}/types/index.js +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid-item → bds-grid-item}/bds-grid-item.css +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/enum.js +0 -0
- /package/dist/collection/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/index.js +0 -0
- /package/dist/types/components/helpers/{bds-divider.d.ts → bds-divider/bds-divider.d.ts} +0 -0
- /package/dist/types/components/helpers/{types → bds-divider/types}/IDivider.d.ts +0 -0
- /package/dist/types/components/helpers/{types → bds-divider/types}/enum.d.ts +0 -0
- /package/dist/types/components/helpers/{types → bds-divider/types}/types.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid → bds-grid}/bds-grid.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid → bds-grid}/types/IGrid.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid → bds-grid}/types/enum.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid → bds-grid}/types/index.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid → bds-grid}/types/types.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid-item → bds-grid-item}/bds-grid-item.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/IGridItem.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/enum.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/index.d.ts +0 -0
- /package/dist/types/components/layouts/bds-grid/{grid-item → bds-grid-item}/types/types.d.ts +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var index = require('./index-CwYIVC9N.js');
|
|
4
4
|
var states = require('./states-BweP5Vpu.js');
|
|
5
5
|
var validateProps = require('./validateProps-CJe9X5x8.js');
|
|
6
|
-
var Keys = require('./Keys-
|
|
6
|
+
var Keys = require('./Keys-DXn16dlA.js');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Resolves the appropriate ARIA role for a menu item.
|
|
@@ -31,20 +31,18 @@ function resolveAriaSelected(role, selected) {
|
|
|
31
31
|
* Resolves the tabIndex attribute for keyboard navigation.
|
|
32
32
|
* @param {MenuItemRole} role - The role of the item.
|
|
33
33
|
* @param {boolean} disabled - Whether the item is currently disabled.
|
|
34
|
-
* @param {boolean} selected - Whether the item is currently selected.
|
|
35
34
|
* @param {boolean} active - Whether the item is currently active.
|
|
36
35
|
* @returns {number} - Returns 0 for focusable menu items, or -1 for disabled/options.
|
|
37
36
|
* @example
|
|
38
37
|
* const index = resolveTabIndex('menuitem', false); // returns 0
|
|
39
38
|
* const indexDisabled = resolveTabIndex('menuitem', true); // returns -1
|
|
40
39
|
*/
|
|
41
|
-
function resolveTabIndex(role, disabled,
|
|
40
|
+
function resolveTabIndex(role, disabled, active) {
|
|
42
41
|
if (disabled)
|
|
43
42
|
return -1;
|
|
44
|
-
if (role === 'option')
|
|
45
|
-
return selected || active ? 0 : -1;
|
|
46
|
-
if (role === 'menuitem')
|
|
43
|
+
if (role === 'option' || role === 'menuitem') {
|
|
47
44
|
return active ? 0 : -1;
|
|
45
|
+
}
|
|
48
46
|
return -1;
|
|
49
47
|
}
|
|
50
48
|
/**
|
|
@@ -52,6 +50,7 @@ function resolveTabIndex(role, disabled, selected, active) {
|
|
|
52
50
|
* @param {KeyboardEvent} event - The keyboard event object from the listener.
|
|
53
51
|
* @param {HTMLElement[]} items - An array of focusable HTML elements within the menu.
|
|
54
52
|
* @param {number} currentIndex - The index of the currently focused item.
|
|
53
|
+
* @param {boolean} selected - The current selection state of the item (used for activation logic).
|
|
55
54
|
* @returns {void}
|
|
56
55
|
* @example
|
|
57
56
|
* handleMenuKeyNavigation(event, menuItems, 2);
|
|
@@ -61,16 +60,18 @@ function handleMenuKeyNavigation(event, items, currentIndex) {
|
|
|
61
60
|
return;
|
|
62
61
|
let nextIndex = -1;
|
|
63
62
|
switch (event.key) {
|
|
64
|
-
case Keys.KEYBOARD.ArrowDown
|
|
63
|
+
case Keys.KEYBOARD.ArrowDown:
|
|
65
64
|
nextIndex = (currentIndex + 1) % items.length;
|
|
66
65
|
break;
|
|
67
|
-
case Keys.KEYBOARD.ArrowUp
|
|
66
|
+
case Keys.KEYBOARD.ArrowUp:
|
|
68
67
|
nextIndex = (currentIndex - 1 + items.length) % items.length;
|
|
69
68
|
break;
|
|
70
69
|
default:
|
|
71
70
|
return;
|
|
72
71
|
}
|
|
72
|
+
items.forEach(item => item.removeAttribute('active-item'));
|
|
73
73
|
items[nextIndex].focus();
|
|
74
|
+
items[nextIndex].setAttribute('active-item', '');
|
|
74
75
|
}
|
|
75
76
|
/** Prevents default browser behavior for specific navigation keys.
|
|
76
77
|
* @param {KeyboardEvent} e - The keyboard event to evaluate.
|
|
@@ -80,7 +81,7 @@ function handleMenuKeyNavigation(event, items, currentIndex) {
|
|
|
80
81
|
* preventNavigationKeys(event);
|
|
81
82
|
*/
|
|
82
83
|
function preventNavigationKeys(e) {
|
|
83
|
-
const navigationKeys = [Keys.KEYBOARD.ArrowDown
|
|
84
|
+
const navigationKeys = [Keys.KEYBOARD.ArrowDown, Keys.KEYBOARD.ArrowUp, Keys.KEYBOARD.Enter, Keys.KEYBOARD.Space];
|
|
84
85
|
if (navigationKeys.includes(e.key)) {
|
|
85
86
|
e.preventDefault();
|
|
86
87
|
}
|
|
@@ -97,7 +98,6 @@ function preventNavigationKeys(e) {
|
|
|
97
98
|
* - Computation of aria-selected and tabIndex attributes for accessibility.
|
|
98
99
|
* - A method to handle keyboard navigation (Arrow keys, Enter, Space) within the menu context.
|
|
99
100
|
*
|
|
100
|
-
*
|
|
101
101
|
* @typeParam B - The base constructor type.
|
|
102
102
|
* @param {B} Base - The base component class to be extended.
|
|
103
103
|
* @returns {MenuBehaviorMixin} - A class with injected menu behaviors.
|
|
@@ -144,12 +144,19 @@ const MenuItemBehavior = (Base) => {
|
|
|
144
144
|
this.selected = false;
|
|
145
145
|
this.activeItem = false;
|
|
146
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Finds the closest parent element with a role of 'menu' or 'listbox'.
|
|
149
|
+
* @returns {HTMLElement | null} - The parent menu or listbox element, or null if not found.
|
|
150
|
+
*/
|
|
151
|
+
get parent() {
|
|
152
|
+
return this.el.closest('[role="menu"], [role="listbox"]');
|
|
153
|
+
}
|
|
147
154
|
/**
|
|
148
155
|
* Detects the ARIA role of the nearest parent menu or listbox.
|
|
149
156
|
* @returns {MenuRole | null} - 'menu', 'listbox', or null if not found.
|
|
150
157
|
*/
|
|
151
158
|
get parentRole() {
|
|
152
|
-
const parent = this.
|
|
159
|
+
const parent = this.parent;
|
|
153
160
|
return parent !== null ? parent.getAttribute('role') : null;
|
|
154
161
|
}
|
|
155
162
|
/**
|
|
@@ -172,7 +179,7 @@ const MenuItemBehavior = (Base) => {
|
|
|
172
179
|
* @returns {number} 0 for focusable menu items, -1 otherwise.
|
|
173
180
|
*/
|
|
174
181
|
get itemTabIndex() {
|
|
175
|
-
return resolveTabIndex(this.menuItemRole, this.disabled, this.
|
|
182
|
+
return resolveTabIndex(this.menuItemRole, this.disabled, this.activeItem);
|
|
176
183
|
}
|
|
177
184
|
/**
|
|
178
185
|
* Processes keyboard events for arrow navigation and activation.
|
|
@@ -184,14 +191,14 @@ const MenuItemBehavior = (Base) => {
|
|
|
184
191
|
*/
|
|
185
192
|
handleKeyDownLogic(e, onActivate) {
|
|
186
193
|
preventNavigationKeys(e);
|
|
187
|
-
if (e.key === Keys.KEYBOARD.Enter
|
|
194
|
+
if (e.key === Keys.KEYBOARD.Enter || e.key === Keys.KEYBOARD.Space) {
|
|
188
195
|
onActivate();
|
|
189
196
|
return;
|
|
190
197
|
}
|
|
191
|
-
const parent = this.
|
|
198
|
+
const parent = this.parent;
|
|
192
199
|
if (parent === null)
|
|
193
200
|
return;
|
|
194
|
-
const items = Array.from(parent.querySelectorAll(`${this.el.tagName.toLocaleLowerCase()}:not([disabled]):not([variant="label"])`));
|
|
201
|
+
const items = Array.from(parent.querySelectorAll(`${this.el.tagName.toLocaleLowerCase()}:not([disabled]):not([variant="label"]):not([hidden])`));
|
|
195
202
|
const currentIndex = items.indexOf(this.el);
|
|
196
203
|
handleMenuKeyNavigation(e, items, currentIndex);
|
|
197
204
|
}
|
|
@@ -292,8 +299,7 @@ const WithLinks = (Base) => {
|
|
|
292
299
|
handleLinkKeyDown(event) {
|
|
293
300
|
if (!this.isLink)
|
|
294
301
|
return;
|
|
295
|
-
if (this.el.tagName.toLowerCase() !== 'a' &&
|
|
296
|
-
(event.key === Keys.KEYBOARD.Enter.key || event.key === Keys.KEYBOARD.Space.key)) {
|
|
302
|
+
if (this.el.tagName.toLowerCase() !== 'a' && (event.key === Keys.KEYBOARD.Enter || event.key === Keys.KEYBOARD.Space)) {
|
|
297
303
|
event.preventDefault();
|
|
298
304
|
this.handleLinkClick(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
299
305
|
}
|
|
@@ -357,13 +363,13 @@ const LIST_MENU_ITEM_VARIANTS = {
|
|
|
357
363
|
BUTTON: 'button',
|
|
358
364
|
};
|
|
359
365
|
|
|
360
|
-
const bdsListMenuItemCss = () => `@charset "UTF-8";.bds-list-item,.bds-list-item__content
|
|
366
|
+
const bdsListMenuItemCss = () => `@charset "UTF-8";.bds-list-item,.bds-list-item__content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.bds-list-item{width:100%;vertical-align:middle;position:relative;color:var(--boreal-text-default);font-style:normal;font-family:var(--boreal-typography-font-family-primary);font-weight:var(--boreal-typography-font-weight-regular)}.bds-list-item[hidden]{display:none}.bds-list-item__content{-ms-flex-pack:justify;justify-content:space-between;-ms-flex:1;flex:1;vertical-align:middle;gap:var(--boreal-spacing-3xs)}.bds-list-item__content-left,.bds-list-item__content-right{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle}.bds-list-item__content-left__icon,.bds-list-item__content-left__text{display:inline-block;vertical-align:middle;font-style:normal;font-size:var(--boreal-typography-font-size-sm);line-height:var(--boreal-typography-line-height-xs)}.bds-list-item__content-left__icon:not(:empty){padding-right:var(--boreal-spacing-3xs)}.bds-list-item__content [class*=bds-icon-]{font-size:var(--boreal-typography-font-size-md)}.bds-list-item--button{cursor:pointer;padding:var(--boreal-spacing-1xs) var(--boreal-spacing-s);-webkit-transition:background-color 0.3s ease, border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, -webkit-box-shadow 0.3s ease}.bds-list-item--button:not(.bds-list-item--disabled):hover:not([selected]){background-color:var(--boreal-ui-default-lighter);z-index:1}.bds-list-item--button:not(.bds-list-item--disabled):focus,.bds-list-item--button:not(.bds-list-item--disabled):focus-visible{outline:none;-webkit-box-shadow:var(--boreal-depth-box-shadow-focus);box-shadow:var(--boreal-depth-box-shadow-focus);z-index:1}.bds-list-item--button:not(.bds-list-item--disabled):active,.bds-list-item--button:not(.bds-list-item--disabled).bds-list-item--state-active{-webkit-box-shadow:var(--boreal-depth-box-shadow-active);box-shadow:var(--boreal-depth-box-shadow-active);background-color:var(--boreal-ui-default-lighter);z-index:1}.bds-list-item--selected{background-color:var(--boreal-ui-primary-lighter)}.bds-list-item--disabled{color:var(--boreal-text-disabled);cursor:not-allowed}.bds-list-item--label{cursor:default;padding:var(--boreal-spacing-3xs) 0}.bds-list-item--label .bds-typography label{color:var(--boreal-text-default-light)}`;
|
|
361
367
|
|
|
362
368
|
const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
363
369
|
constructor(hostRef) {
|
|
364
370
|
super();
|
|
365
371
|
index.registerInstance(this, hostRef);
|
|
366
|
-
this.
|
|
372
|
+
this.bdsSelectItem = index.createEvent(this, "bdsSelectItem");
|
|
367
373
|
/**
|
|
368
374
|
* Defines the visual style of the list menu item.
|
|
369
375
|
* - 'button': A standard clickable item.
|
|
@@ -378,6 +384,8 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
378
384
|
this.selected = false;
|
|
379
385
|
/** Value associated with the menu item */
|
|
380
386
|
this.value = '';
|
|
387
|
+
/** Checkable state item, if is activated should be visible a checkbox */
|
|
388
|
+
this.checkable = false;
|
|
381
389
|
/** Active state item */
|
|
382
390
|
this.activeItem = false;
|
|
383
391
|
/** Link behavior props */
|
|
@@ -388,17 +396,21 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
388
396
|
this.download = '';
|
|
389
397
|
/** State to manage click and keyboard interaction states */
|
|
390
398
|
this.currentState = states.COMPONENT_STATES.DEFAULT;
|
|
399
|
+
/** State to manage checked box */
|
|
400
|
+
this.boxChecked = false;
|
|
391
401
|
/** Event to notify when the menu item is clicked */
|
|
392
402
|
this.handleClick = (e) => {
|
|
393
403
|
if (this.disabled || this.isLabelVariant)
|
|
394
404
|
return;
|
|
405
|
+
e.stopPropagation();
|
|
395
406
|
if (this.isLink) {
|
|
396
407
|
this.handleLinkClick(e);
|
|
397
408
|
return;
|
|
398
409
|
}
|
|
399
|
-
this.
|
|
410
|
+
this.bdsSelectItem.emit({
|
|
400
411
|
value: this.value,
|
|
401
412
|
selected: !this.selected,
|
|
413
|
+
element: this.el,
|
|
402
414
|
});
|
|
403
415
|
};
|
|
404
416
|
/** Event to handle keydown navigation and trigger click */
|
|
@@ -409,7 +421,7 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
409
421
|
// If the item is a link, we dont activate this animation
|
|
410
422
|
if (!this.isLink || this.linkAttributes.download !== undefined) {
|
|
411
423
|
this.currentState =
|
|
412
|
-
e.key === Keys.KEYBOARD.Enter
|
|
424
|
+
e.key === Keys.KEYBOARD.Enter || e.key === Keys.KEYBOARD.Space ? states.COMPONENT_STATES.ACTIVE : this.currentState;
|
|
413
425
|
}
|
|
414
426
|
};
|
|
415
427
|
/** Event to handle keyup navigation and reset active state */
|
|
@@ -422,9 +434,25 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
422
434
|
checkPropsVariant() {
|
|
423
435
|
validateProps.validatePropValue(Object.values(LIST_MENU_ITEM_VARIANTS), LIST_MENU_ITEM_VARIANTS.BUTTON, this.el, 'variant');
|
|
424
436
|
}
|
|
437
|
+
handleSelectedChange(newValue) {
|
|
438
|
+
if (this.checkable) {
|
|
439
|
+
this.boxChecked = newValue;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
425
442
|
/** Lifecycle method called before the component is loaded */
|
|
426
443
|
componentWillLoad() {
|
|
427
444
|
this.checkPropsVariant();
|
|
445
|
+
if (this.checkable) {
|
|
446
|
+
this.boxChecked = this.selected;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
/** Improve aria resolve for checkable items */
|
|
450
|
+
get menuItemRoleExtended() {
|
|
451
|
+
if (!this.checkable)
|
|
452
|
+
return this.menuItemRole;
|
|
453
|
+
if (this.parentRole === 'listbox')
|
|
454
|
+
return 'checkbox';
|
|
455
|
+
return 'menuitemcheckbox';
|
|
428
456
|
}
|
|
429
457
|
/** Checks if the variant is a label */
|
|
430
458
|
get isLabelVariant() {
|
|
@@ -444,9 +472,14 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
444
472
|
renderTypeLabel() {
|
|
445
473
|
return (index.h("bds-typography", { variant: "label", element: "label", align: "start", role: "presentation" }, index.h("slot", { name: "left-content" }), " ", index.h("slot", null)));
|
|
446
474
|
}
|
|
475
|
+
renderCheckbox() {
|
|
476
|
+
if (!this.checkable)
|
|
477
|
+
return null;
|
|
478
|
+
return (index.h("bds-checkbox", { checked: this.boxChecked, disabled: this.disabled, name: `checkbox-${this.value}`, tabindex: "-1", style: { pointerEvents: 'none' }, inert: true }));
|
|
479
|
+
}
|
|
447
480
|
/** Return the render for the button variant of the list menu item */
|
|
448
481
|
renderTypeButton() {
|
|
449
|
-
return (index.h("div", { class: "bds-list-item__content" }, index.h("div", { class: "bds-list-item__content
|
|
482
|
+
return (index.h("div", { class: "bds-list-item__content" }, index.h("div", { class: "bds-list-item__content-left" }, this.renderCheckbox(), index.h("span", { class: "bds-list-item__content-left__icon" }, index.h("slot", { name: "left-content" })), index.h("span", { class: "bds-list-item__content-left__text" }, index.h("slot", null))), index.h("div", { class: "bds-list-item__content-right" }, index.h("slot", { name: "right-content" }))));
|
|
450
483
|
}
|
|
451
484
|
/** Main render */
|
|
452
485
|
render() {
|
|
@@ -454,12 +487,15 @@ const BdsListMenuItem = class extends index.Mixin(MenuItemBehavior, WithLinks) {
|
|
|
454
487
|
if (this.isLabelVariant)
|
|
455
488
|
renderItem = this.renderTypeLabel();
|
|
456
489
|
const linkAttributes = this.isLink ? { ...this.linkAttributes, tabindex: this.activeItem ? 0 : -1 } : {};
|
|
457
|
-
return (index.h(index.Host, { key: '
|
|
490
|
+
return (index.h(index.Host, { key: 'f2eba72a913704f5de812a1be1f7aafbd718f27b', class: this.classMap, role: this.isLabelVariant ? 'presentation' : this.menuItemRoleExtended, "aria-selected": !this.checkable ? this.ariaSelected : false, "aria-checked": this.checkable ? this.ariaSelected : undefined, ...linkAttributes, tabIndex: this.isLabelVariant ? -1 : this.itemTabIndex, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onKeyUp: this.handleKeyUp }, renderItem));
|
|
458
491
|
}
|
|
459
492
|
get el() { return index.getElement(this); }
|
|
460
493
|
static get watchers() { return {
|
|
461
494
|
"variant": [{
|
|
462
495
|
"checkPropsVariant": 0
|
|
496
|
+
}],
|
|
497
|
+
"selected": [{
|
|
498
|
+
"handleSelectedChange": 0
|
|
463
499
|
}]
|
|
464
500
|
}; }
|
|
465
501
|
};
|
|
@@ -1,28 +1,55 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-CwYIVC9N.js');
|
|
4
|
+
var attributes = require('./attributes-CgRFplrN.js');
|
|
5
|
+
var validateProps = require('./validateProps-CJe9X5x8.js');
|
|
4
6
|
|
|
5
|
-
const
|
|
7
|
+
const MENU_ROLES = {
|
|
8
|
+
MENU: 'menu',
|
|
9
|
+
LISTBOX: 'listbox',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const LIST_MENU_SELECTION_MODE = {
|
|
13
|
+
SINGLE: 'single',
|
|
14
|
+
MULTIPLE: 'multiple',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const bdsListMenuCss = () => `@charset "UTF-8";:host{display:block}.bds-list-menu{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-width:var(--bds-list-menu-max-width, 350px);background-color:var(--boreal-ui-inverse);font-family:var(--boreal-typography-font-family-primary)}.bds-list-menu__content{max-height:var(--bds-list-menu-max-height, 240px);overflow-y:auto;padding:var(--boreal-spacing-2xs)}.bds-list-menu__select-controls{display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;border-bottom:var(--boreal-spacing-4xs) solid var(--boreal-ui-default-lighter);margin-bottom:var(--boreal-spacing-3xs)}.bds-list-menu__header:not(:empty),.bds-list-menu__footer:not(:empty){padding:var(--boreal-spacing-xs) 0}.bds-list-menu__header:not(:empty){border-bottom:var(--boreal-spacing-4xs) solid var(--boreal-ui-default-lighter)}.bds-list-menu__footer:not(:empty){border-top:var(--boreal-spacing-4xs) solid var(--boreal-ui-default-lighter)}`;
|
|
6
18
|
|
|
7
19
|
const BdsListMenu = class {
|
|
8
20
|
constructor(hostRef) {
|
|
9
21
|
index.registerInstance(this, hostRef);
|
|
10
22
|
this.bdsChange = index.createEvent(this, "bdsChange");
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
this.
|
|
23
|
+
this.bdsSelect = index.createEvent(this, "bdsSelect");
|
|
24
|
+
// Object to store inherited aria attributes
|
|
25
|
+
this.inheritedAttributes = {};
|
|
26
|
+
/** The selection mode of the menu. Can be 'SINGLE' or 'MULTIPLE'. Default is 'SINGLE'. */
|
|
27
|
+
this.selectionMode = LIST_MENU_SELECTION_MODE.SINGLE;
|
|
14
28
|
/** Defines the ARIA role of the menu. Can be 'menu' or 'listbox'. Default is 'menu'. */
|
|
15
|
-
this.menuRole =
|
|
29
|
+
this.menuRole = MENU_ROLES.MENU;
|
|
30
|
+
/** Determines if the menu items have selectall/deselectall controls */
|
|
31
|
+
this.selectControls = false;
|
|
32
|
+
/** is empty state item */
|
|
33
|
+
this.empty = false;
|
|
34
|
+
/** Prop to show in all items a checkbox */
|
|
35
|
+
this.checkable = false;
|
|
36
|
+
/** Prop to show empty text */
|
|
37
|
+
this.emptyText = 'No options available';
|
|
16
38
|
/** State to manage selected values */
|
|
17
39
|
this.selectedValues = [];
|
|
18
40
|
}
|
|
41
|
+
/** Verify props to be valid */
|
|
42
|
+
checkProps() {
|
|
43
|
+
validateProps.validatePropValue(Object.values(MENU_ROLES), MENU_ROLES.MENU, this.el, 'menuRole');
|
|
44
|
+
validateProps.validatePropValue(Object.values(LIST_MENU_SELECTION_MODE), LIST_MENU_SELECTION_MODE.SINGLE, this.el, 'selectionMode');
|
|
45
|
+
}
|
|
19
46
|
/**
|
|
20
47
|
* Retrieves the currently selected value(s) programmatically.
|
|
21
48
|
* @method getSelectedValues
|
|
22
49
|
* @returns {Promise<string | string[]>} The selected value(s) based on the 'multiple' prop.
|
|
23
50
|
*/
|
|
24
51
|
async getSelectedValues() {
|
|
25
|
-
return this.
|
|
52
|
+
return this.isMultiple ? this.selectedValues : this.selectedValues[0];
|
|
26
53
|
}
|
|
27
54
|
/**
|
|
28
55
|
* Sets the selected values programmatically.
|
|
@@ -31,7 +58,7 @@ const BdsListMenu = class {
|
|
|
31
58
|
* @param {string | string[]} values - The value or values to be marked as selected.
|
|
32
59
|
*/
|
|
33
60
|
async setSelectedValues(values) {
|
|
34
|
-
if (this.
|
|
61
|
+
if (this.isMultiple) {
|
|
35
62
|
this.selectedValues = Array.isArray(values) ? values : [values];
|
|
36
63
|
}
|
|
37
64
|
else {
|
|
@@ -39,27 +66,45 @@ const BdsListMenu = class {
|
|
|
39
66
|
}
|
|
40
67
|
this.updateChildrenState();
|
|
41
68
|
}
|
|
69
|
+
/** Retrieves all child menu items. */
|
|
70
|
+
getAllItems() {
|
|
71
|
+
return Promise.resolve(this.childItems);
|
|
72
|
+
}
|
|
42
73
|
/** Handles the click event on a menu item, updating the selection state accordingly. */
|
|
43
74
|
handleItemClick(event) {
|
|
44
75
|
const { value, selected } = event.detail;
|
|
45
|
-
if (this.menuRole ===
|
|
46
|
-
if (this.
|
|
76
|
+
if (this.menuRole === MENU_ROLES.LISTBOX) {
|
|
77
|
+
if (this.isMultiple) {
|
|
47
78
|
this.handleMultipleSelection(value, selected);
|
|
48
79
|
}
|
|
49
80
|
else {
|
|
50
81
|
this.handleSingleSelection(value, selected);
|
|
51
82
|
}
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
83
|
+
this.updateChildrenState(event.target);
|
|
84
|
+
this.bdsChange.emit(this.isMultiple ? this.selectedValues : this.selectedValues[0] || undefined);
|
|
54
85
|
}
|
|
55
86
|
else {
|
|
56
|
-
|
|
87
|
+
const itemClicked = event.target;
|
|
88
|
+
const indexItem = this.childItems.indexOf(itemClicked);
|
|
89
|
+
if (itemClicked.checkable)
|
|
90
|
+
itemClicked.selected = !itemClicked.selected;
|
|
91
|
+
this.bdsSelect.emit({
|
|
92
|
+
value,
|
|
93
|
+
index: indexItem,
|
|
94
|
+
checked: itemClicked.checkable ? itemClicked.selected : false,
|
|
95
|
+
element: itemClicked,
|
|
96
|
+
});
|
|
57
97
|
}
|
|
58
98
|
}
|
|
59
99
|
/** Initializes the selected values based on the child menu items that have the 'selected' attribute set. */
|
|
60
100
|
componentWillLoad() {
|
|
101
|
+
this.setDefaultProps();
|
|
102
|
+
this.checkProps();
|
|
61
103
|
this.initialSelectedValues();
|
|
62
104
|
this.updateActiveState();
|
|
105
|
+
this.inheritedAttributes = {
|
|
106
|
+
...attributes.inheritAriaAttributes(this.el, ['aria-multiselectable']),
|
|
107
|
+
};
|
|
63
108
|
}
|
|
64
109
|
/** Get all child menu items */
|
|
65
110
|
get childItems() {
|
|
@@ -72,6 +117,20 @@ const BdsListMenu = class {
|
|
|
72
117
|
const firstEnabled = items.find(item => !item.disabled && item.variant !== 'label');
|
|
73
118
|
return firstEnabled;
|
|
74
119
|
}
|
|
120
|
+
/** Checks if the menu is in multiple selection mode */
|
|
121
|
+
get isMultiple() {
|
|
122
|
+
return this.selectionMode === LIST_MENU_SELECTION_MODE.MULTIPLE;
|
|
123
|
+
}
|
|
124
|
+
/** Send default props to items */
|
|
125
|
+
setDefaultProps() {
|
|
126
|
+
if (this.isMultiple && this.checkable) {
|
|
127
|
+
this.childItems.forEach(item => {
|
|
128
|
+
if (!item.checkable) {
|
|
129
|
+
item.setAttribute('checkable', 'true');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
75
134
|
/** Updates the active state of the menu items based on the current selection. */
|
|
76
135
|
updateActiveState() {
|
|
77
136
|
const firstEnabled = this.firstEnabledItem;
|
|
@@ -92,20 +151,33 @@ const BdsListMenu = class {
|
|
|
92
151
|
this.selectedValues = selected ? [value] : [];
|
|
93
152
|
}
|
|
94
153
|
/** Updates the state of child menu items based on the current selection. */
|
|
95
|
-
updateChildrenState() {
|
|
154
|
+
updateChildrenState(item) {
|
|
96
155
|
const items = this.childItems;
|
|
97
156
|
items.forEach((item) => {
|
|
98
|
-
if (item.value !== undefined) {
|
|
157
|
+
if (item.value !== undefined && item.variant !== 'label') {
|
|
99
158
|
const isSelected = this.selectedValues.includes(item.value);
|
|
100
159
|
item.selected = isSelected;
|
|
101
|
-
|
|
102
|
-
item.setAttribute('active-item', '');
|
|
103
|
-
else
|
|
104
|
-
item.removeAttribute('active-item');
|
|
160
|
+
item.removeAttribute('active-item');
|
|
105
161
|
}
|
|
106
162
|
});
|
|
107
|
-
|
|
108
|
-
|
|
163
|
+
this.setActiveItem(item);
|
|
164
|
+
}
|
|
165
|
+
/** activate item based on interaction */
|
|
166
|
+
setActiveItem(lastItemInteracted) {
|
|
167
|
+
let itemToActivate;
|
|
168
|
+
if (lastItemInteracted !== undefined) {
|
|
169
|
+
itemToActivate = lastItemInteracted;
|
|
170
|
+
}
|
|
171
|
+
else if (this.selectedValues.length > 0) {
|
|
172
|
+
const selectedValue = this.selectedValues[0];
|
|
173
|
+
itemToActivate = this.childItems.find(item => item.value === selectedValue);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
itemToActivate = this.firstEnabledItem;
|
|
177
|
+
}
|
|
178
|
+
if (itemToActivate !== undefined) {
|
|
179
|
+
itemToActivate.setAttribute('active-item', '');
|
|
180
|
+
}
|
|
109
181
|
}
|
|
110
182
|
/** Initializes the selected values based on the child menu items that have the 'selected' attribute set. */
|
|
111
183
|
initialSelectedValues() {
|
|
@@ -115,15 +187,47 @@ const BdsListMenu = class {
|
|
|
115
187
|
const values = initialSelected.map(item => {
|
|
116
188
|
return item.getAttribute('value') || '';
|
|
117
189
|
});
|
|
118
|
-
this.selectedValues = this.
|
|
190
|
+
this.selectedValues = this.isMultiple ? values : [values[0]];
|
|
119
191
|
this.updateChildrenState();
|
|
120
192
|
}
|
|
121
193
|
}
|
|
194
|
+
/** Handles the toggle of select/deselect all controls, updating the selection state accordingly. */
|
|
195
|
+
handleToggleSelect(selectAll) {
|
|
196
|
+
const allValues = this.childItems
|
|
197
|
+
.filter(item => !item.disabled && item.variant !== 'label' && item.value !== undefined)
|
|
198
|
+
.map(item => item.value);
|
|
199
|
+
this.selectedValues = selectAll ? allValues : [];
|
|
200
|
+
this.updateChildrenState();
|
|
201
|
+
this.bdsChange.emit(this.selectedValues);
|
|
202
|
+
}
|
|
203
|
+
/** Renders the select/deselect all controls if applicable based on the props. */
|
|
204
|
+
renderSelectControls() {
|
|
205
|
+
if (this.selectControls && this.menuRole === MENU_ROLES.LISTBOX && this.isMultiple) {
|
|
206
|
+
return (index.h("div", { class: "bds-list-menu__select-controls" }, index.h("bds-button", { name: "Select all", variant: "plain", onBdsClick: () => this.handleToggleSelect(true) }, "Select All"), index.h("bds-button", { name: "Deselect all", variant: "plain", onBdsClick: () => this.handleToggleSelect(false) }, "Deselect All")));
|
|
207
|
+
}
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
/** Renders the empty state message if the 'empty' prop is true. */
|
|
211
|
+
renderEmptyState() {
|
|
212
|
+
if (this.empty || this.childItems.length === 0) {
|
|
213
|
+
return (index.h("bds-typography", { variant: "label", element: "label", align: "start", role: "presentation" }, this.emptyText));
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
122
217
|
/** Renders the component with a slot for menu items. */
|
|
123
218
|
render() {
|
|
124
|
-
|
|
219
|
+
const inheritedAriaAttr = this.inheritedAttributes;
|
|
220
|
+
return (index.h(index.Host, { key: '658fa1497aa51cd6cb8ee40a4c5306e9ef444d14', class: "bds-list-menu", role: this.menuRole, tabIndex: "-1", "aria-multiselectable": this.menuRole === MENU_ROLES.LISTBOX && this.isMultiple ? 'true' : 'false', ...inheritedAriaAttr }, index.h("slot", { key: '7275e500cb30c352e22730963635cbfbd77d691e', name: "banner-content" }), index.h("div", { key: '68e1b663db8b96dc9c2aaa1d1b778e81304299ed', class: "bds-list-menu__header" }, index.h("slot", { key: 'cb96ac82f30b4b974312a40a7861b4bfee12382b', name: "header-content" })), this.renderSelectControls(), index.h("div", { key: '0e7d4b74f955eab4999e12ace25b00b521dbaa40', class: "bds-list-menu__content" }, index.h("slot", { key: '78402e3166d97b1d25369db7341958c1834cc30a' }), this.renderEmptyState()), index.h("div", { key: 'cf413da08c650accfaf7ca1cc3cbd5b246b4d977', class: "bds-list-menu__footer" }, index.h("slot", { key: '9636560c612bdee8f201d0b8b9a594ec32e0e44c', name: "footer-content" }))));
|
|
125
221
|
}
|
|
126
222
|
get el() { return index.getElement(this); }
|
|
223
|
+
static get watchers() { return {
|
|
224
|
+
"selectionMode": [{
|
|
225
|
+
"checkProps": 0
|
|
226
|
+
}],
|
|
227
|
+
"menuRole": [{
|
|
228
|
+
"checkProps": 0
|
|
229
|
+
}]
|
|
230
|
+
}; }
|
|
127
231
|
};
|
|
128
232
|
BdsListMenu.style = bdsListMenuCss();
|
|
129
233
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-CwYIVC9N.js');
|
|
4
|
-
var getOffset = require('./getOffset-
|
|
5
|
-
var _enum = require('./enum-
|
|
4
|
+
var getOffset = require('./getOffset-CsDHFjPW.js');
|
|
5
|
+
var _enum = require('./enum-DeTWfR0D.js');
|
|
6
|
+
require('./Logger-DnziItRH.js');
|
|
6
7
|
require('./floating.mixin-Bje4320w.js');
|
|
7
|
-
require('./Keys-
|
|
8
|
+
require('./Keys-DXn16dlA.js');
|
|
8
9
|
|
|
9
10
|
const OFFSET = 11;
|
|
10
11
|
|
|
@@ -222,11 +223,11 @@ const BdsPopover = class extends index.Mixin(getOffset.anchoredMixin) {
|
|
|
222
223
|
const listenTarget = nativeEl ?? parentBds;
|
|
223
224
|
this.listenTarget = listenTarget;
|
|
224
225
|
this.listenTarget.addEventListener('click', (evt) => this.handleShow(evt));
|
|
225
|
-
this.listenTarget.addEventListener('keydown', (evt) => this.handleKeydown(evt, () => this.
|
|
226
|
+
this.listenTarget.addEventListener('keydown', (evt) => this.handleKeydown(evt, () => this.show(), () => this.hide()));
|
|
226
227
|
}
|
|
227
228
|
else {
|
|
228
229
|
this.trigger.addEventListener('click', (evt) => this.handleShow(evt));
|
|
229
|
-
this.trigger.addEventListener('keydown', (evt) => this.handleKeydown(evt, () => this.
|
|
230
|
+
this.trigger.addEventListener('keydown', (evt) => this.handleKeydown(evt, () => this.show(), () => this.hide()));
|
|
230
231
|
}
|
|
231
232
|
}
|
|
232
233
|
/**
|
|
@@ -266,12 +267,20 @@ const BdsPopover = class extends index.Mixin(getOffset.anchoredMixin) {
|
|
|
266
267
|
get hasFooterSlot() {
|
|
267
268
|
return this.el.querySelector('[slot="footer"]') !== null;
|
|
268
269
|
}
|
|
270
|
+
/** Programmatically opens the popover, running the full show lifecycle. */
|
|
271
|
+
async openPopover() {
|
|
272
|
+
this.show();
|
|
273
|
+
}
|
|
274
|
+
/** Programmatically closes the popover, running the full hide lifecycle. */
|
|
275
|
+
async closePopover() {
|
|
276
|
+
this.hide();
|
|
277
|
+
}
|
|
269
278
|
disconnectedCallback() {
|
|
270
279
|
this.listenTarget.removeEventListener('click', (evt) => this.handleShow(evt));
|
|
271
280
|
this.trigger.removeEventListener('click', (evt) => this.handleShow(evt));
|
|
272
281
|
}
|
|
273
282
|
render() {
|
|
274
|
-
return (index.h(index.Host, { key: '
|
|
283
|
+
return (index.h(index.Host, { key: '1145ed2dd0b348768e488601c1fb107d324722d6', class: "popover", style: { width: this.popoverWidth }, popover: "manual", role: "tooltip", "data-placement": this.getPlacement, "data-hidearrow": this.canShowArrow, "aria-hidden": this.isVisible ? 'false' : 'true', onClick: (e) => this.handleContentClick(e), ref: el => (this.floatingContent = el) }, this.header && (index.h("div", { key: '17f0abca3fb63dec5cc653f04fe9f9b66f8726c7', class: "popover-header" }, index.h("div", { key: '2a75d8bc515b5a570d205b3ed0165fa90f499e72', class: "popover-header__content" }, index.h("span", { key: 'e4e3c86e939a164bbf1d66e27ae81ad79e72f622', class: "popover-header__icon" }, index.h("slot", { key: 'dae8e922f5764e0df061d00e1610d10b9b566c1b', name: "header-icon" })), index.h("span", { key: '2c5712ba18797e4afd646116049bceb7bc947304', class: "popover-header__title" }, index.h("slot", { key: '3f50071dd0967d019af5df4b42ba74fda8506288', name: "header-title" }))), this.closable && (index.h("bds-button", { key: '9a2cea30f338e9f9e43b86ded9307b23380d061c', class: "popover-header__close", size: _enum.BUTTON_SIZES.SMALL, onBdsClick: () => this.hide() }, index.h("em", { key: 'f58e153416d703d86a2dd6e040fc7d4db4a3493c', slot: "icon", class: "bds-icon-close" }))))), this.canShowArrow && (index.h("div", { key: 'e52f80b940678fb20fdde853ebc3f21e2bfc05eb', class: "popover-arrow", part: "arrow", ref: el => (this.arrowElement = el) })), index.h("div", { key: '3bcaf09c7d1e4760f220241352dead7f7d67a576', class: "popover-content", tabIndex: -1, part: "popover-content" }, index.h("slot", { key: '2b9308edf77812d1055f76266304466261563fe0' })), this.footer && (index.h("div", { key: '33e39c5c515bddcf0339e4af834026436e475035', class: "popover-footer", onClick: (e) => e.stopPropagation() }, index.h("slot", { key: '4155b26aef0e05a4b3c1f8692b6e8fb41b556eed', name: "footer-helper" }), index.h("slot", { key: 'd05f3fe0bcebd6082ad19b217805fe657c78166c', name: "footer-button" })))));
|
|
275
284
|
}
|
|
276
285
|
get el() { return index.getElement(this); }
|
|
277
286
|
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-CwYIVC9N.js');
|
|
4
|
+
|
|
5
|
+
const bdsRadioButtonCss = () => `@charset "UTF-8";.bds-radio-button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;gap:var(--boreal-spacing-2xs);padding:var(--boreal-spacing-2xs) var(--boreal-spacing-s);border:1px solid transparent;border-radius:var(--boreal-radius-s);background-color:var(--boreal-ui-default-base);color:var(--boreal-text-default);cursor:pointer;outline:none;-webkit-transition:background-color 0.3s ease, border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, -webkit-box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;transition:background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, -webkit-box-shadow 0.3s ease}.bds-radio-button input[type=checkbox],.bds-radio-button input[type=radio]{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}.bds-radio-button [slot=icon]{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.bds-radio-button:hover:not(.bds-radio-button--disabled):not(.bds-radio-button--checked):not(.bds-radio-button--error){background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:var(--boreal-depth-box-shadow-xs);box-shadow:var(--boreal-depth-box-shadow-xs)}.bds-radio-button:focus-visible,.bds-radio-button:focus{z-index:1;background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:var(--boreal-depth-box-shadow-focus);box-shadow:var(--boreal-depth-box-shadow-focus);outline:none}.bds-radio-button:active:not(.bds-radio-button--disabled):not(.bds-radio-button--checked):not(.bds-radio-button--error){z-index:1;background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:var(--boreal-depth-box-shadow-active);box-shadow:var(--boreal-depth-box-shadow-active)}.bds-radio-button--checked{background-color:var(--boreal-ui-inverse);border-color:var(--boreal-stroke-primary-base);color:var(--boreal-text-primary-base)}.bds-radio-button--checked:hover,.bds-radio-button--checked:focus-visible,.bds-radio-button--checked:focus,.bds-radio-button--checked:active{background-color:var(--boreal-ui-primary-lighter)}.bds-radio-button--error{background-color:var(--boreal-ui-inverse);color:var(--boreal-text-danger-base)}.bds-radio-button--error:hover,.bds-radio-button--error:focus-visible,.bds-radio-button--error:focus,.bds-radio-button--error:active{background-color:var(--boreal-ui-danger-lighter)}.bds-radio-button--error.bds-radio-button--checked{border-color:var(--boreal-stroke-danger-base)}.bds-radio-button--disabled{cursor:not-allowed;pointer-events:none;background-color:var(--boreal-ui-inverse);color:var(--boreal-text-disabled)}.bds-radio-button--disabled.bds-radio-button--checked{border-color:var(--boreal-stroke-primary-light);color:var(--boreal-text-primary-light)}.bds-radio-button__label{font-family:var(--boreal-typography-font-family-primary);font-size:var(--boreal-typography-font-size-sm);font-weight:var(--boreal-typography-font-weight-semibold);line-height:var(--boreal-typography-line-height-sm)}.bds-radio-button__info{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.bds-radio-button__icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.bds-radio-button__icon:empty{display:none}.bds-radio-button__info-icon{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:var(--boreal-typography-font-size-sm);line-height:1;color:var(--boreal-icon-default-ink)}`;
|
|
6
|
+
|
|
7
|
+
const BdsRadioButton = class {
|
|
8
|
+
constructor(hostRef) {
|
|
9
|
+
index.registerInstance(this, hostRef);
|
|
10
|
+
this.bdsChange = index.createEvent(this, "bdsChange");
|
|
11
|
+
/** Whether this button is selected. Managed by bds-radio-group; can be set directly when used standalone. */
|
|
12
|
+
this.checked = false;
|
|
13
|
+
/** Disables the button, preventing interaction and selection. */
|
|
14
|
+
this.disabled = false;
|
|
15
|
+
/** Shows error styling on the button. Propagated by bds-radio-group. */
|
|
16
|
+
this.error = false;
|
|
17
|
+
/** Value submitted with the form when this button is selected. */
|
|
18
|
+
this.value = 'on';
|
|
19
|
+
/** Name attribute stamped by the parent bds-radio-group via setAttribute. Set directly when used standalone. */
|
|
20
|
+
this.name = '';
|
|
21
|
+
/** Label text displayed inside the button. Falls back to the default slot when empty. */
|
|
22
|
+
this.label = '';
|
|
23
|
+
/** Tooltip text shown on an info icon next to the label. */
|
|
24
|
+
this.info = '';
|
|
25
|
+
this.handleClick = () => this.select();
|
|
26
|
+
this.handleKeyDown = (event) => {
|
|
27
|
+
if (event.key === ' ') {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
this.select();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
componentDidLoad() {
|
|
34
|
+
this.el.setAttribute('role', 'radio');
|
|
35
|
+
this.el.setAttribute('aria-checked', String(this.checked));
|
|
36
|
+
this.el.setAttribute('tabindex', '-1');
|
|
37
|
+
}
|
|
38
|
+
select() {
|
|
39
|
+
if (this.disabled || this.checked)
|
|
40
|
+
return;
|
|
41
|
+
this.checked = true;
|
|
42
|
+
this.el.setAttribute('aria-checked', 'true');
|
|
43
|
+
this.bdsChange.emit({ checked: true, value: this.value });
|
|
44
|
+
}
|
|
45
|
+
get classMap() {
|
|
46
|
+
return {
|
|
47
|
+
'bds-radio-button': true,
|
|
48
|
+
'bds-radio-button--checked': this.checked,
|
|
49
|
+
'bds-radio-button--error': this.error,
|
|
50
|
+
'bds-radio-button--disabled': this.disabled,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
render() {
|
|
54
|
+
return (index.h(index.Host, { key: 'a93a54d210b0b5f05e82f5e19f8fecd9502257ae', class: this.classMap, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, index.h("input", { key: '93c8fdba9be5708bb17114f76131ecf88457a6e1', type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, "aria-hidden": "true", tabIndex: -1, onFocus: () => this.el.focus() }), index.h("span", { key: 'a51c3c748941b943b16570d13463321ecd122f38', class: "bds-radio-button__icon" }, index.h("slot", { key: 'cbbe2373b77ec5743b2eb45e1acc7d753f0de206', name: "icon" })), index.h("span", { key: 'e4d8f4ae5a6538540536908fabe23e5fe49ce2c1', class: "bds-radio-button__label" }, this.label || index.h("slot", { key: '2cc5aee872ab7ffd933d626a8f95f406c434a399' })), this.info && (index.h("span", { key: '92b187ede0488712d778958de1b599fab975cbf0', class: "bds-radio-button__info" }, index.h("span", { key: '9f840b4ba88fcae4ed226b242c508c96ec73abb6', class: "bds-radio-button__info-icon bds-icon-info-circle", "aria-hidden": "true" }), index.h("bds-tooltip", { key: 'fdf5d00827aae240d8cbe803b3f98c786c45f967' }, this.info)))));
|
|
55
|
+
}
|
|
56
|
+
get el() { return index.getElement(this); }
|
|
57
|
+
};
|
|
58
|
+
BdsRadioButton.style = bdsRadioButtonCss();
|
|
59
|
+
|
|
60
|
+
exports.bds_radio_button = BdsRadioButton;
|