@telesign/boreal-web-components 0.1.0-alpha.4 → 0.1.0-alpha.5
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-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-card.d.ts +11 -0
- package/components-build/bds-checkbox-card.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-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-BSlaf0ff.js +1 -0
- package/components-build/p-CPvuMm5C.js +1 -0
- package/components-build/p-Cbibqaz0.js +1 -0
- package/components-build/p-ClR-wgiT.js +1 -0
- package/components-build/p-DfaYciGa.js +1 -0
- package/components-build/p-Dh8DSJs_.js +1 -0
- package/components-build/p-N_tqtRV2.js +1 -0
- package/components-build/p-bAMuJ4Jx.js +1 -0
- package/components-build/p-c2z3tneT.js +1 -0
- package/components-build/p-dz9-Q2N8.js +1 -0
- package/{dist/boreal-web-components/p-CaHOghy5.js → components-build/p-fUK0GCeC.js} +1 -1
- package/components-build/p-iq2UuV7c.js +1 -0
- package/components-build/p-nxYzL9uu.js +1 -0
- package/custom-elements.json +2603 -931
- package/dist/boreal-web-components/boreal-web-components.esm.js +1 -1
- package/dist/boreal-web-components/{p-7a4efddd.system.entry.js → p-024d90b0.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-06DrzEMB.system.js +1 -0
- package/dist/boreal-web-components/p-11e4c0ec.system.entry.js +1 -0
- package/dist/boreal-web-components/p-147d6652.system.entry.js +1 -0
- package/dist/boreal-web-components/p-148d510f.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-41b48701.system.entry.js → p-277f142e.system.entry.js} +1 -1
- package/dist/boreal-web-components/{p-251b3002.entry.js → p-2adf2cd5.entry.js} +1 -1
- package/dist/boreal-web-components/p-2be4aa3a.system.entry.js +1 -0
- package/dist/boreal-web-components/p-340896b2.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-3d4ce8eb.system.entry.js +1 -0
- package/dist/boreal-web-components/p-44a8fde5.entry.js +1 -0
- package/dist/boreal-web-components/{p-52600375.system.entry.js → p-48ebbfbe.system.entry.js} +1 -1
- package/dist/boreal-web-components/{p-ab5ffa15.system.entry.js → p-4dc01078.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-5681b294.system.entry.js +1 -0
- package/dist/boreal-web-components/p-5ed75075.entry.js +1 -0
- package/dist/boreal-web-components/p-635f676b.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-7db870b7.entry.js → p-6629be14.entry.js} +1 -1
- package/dist/boreal-web-components/p-68b83680.system.entry.js +1 -0
- package/dist/boreal-web-components/p-6a60d134.system.entry.js +1 -0
- 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-80822731.system.entry.js → p-77658a5b.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-7aff4c78.entry.js +1 -0
- package/dist/boreal-web-components/p-7bb88855.entry.js +1 -0
- package/dist/boreal-web-components/p-7d3a8f61.entry.js +1 -0
- package/dist/boreal-web-components/p-7e672cce.entry.js +1 -0
- package/dist/boreal-web-components/{p-1d1bb9d2.entry.js → p-7ebc67c9.entry.js} +1 -1
- package/dist/boreal-web-components/p-81401e2a.system.entry.js +1 -0
- package/dist/boreal-web-components/p-8289e506.entry.js +1 -0
- package/dist/boreal-web-components/p-82d15372.entry.js +1 -0
- package/dist/boreal-web-components/p-851c06f2.entry.js +1 -0
- package/dist/boreal-web-components/p-8a3716ec.entry.js +1 -0
- package/dist/boreal-web-components/p-8f4f8af0.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-871c9a9f.system.entry.js → p-93066db4.system.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-BuxZeJbu.system.js → p-DSU8tkVw.system.js} +1 -1
- package/dist/boreal-web-components/p-DYlZcFrB.system.js +1 -0
- package/dist/boreal-web-components/p-DfaYciGa.js +1 -0
- package/dist/boreal-web-components/p-DlVzZK7o.js +1 -0
- package/dist/boreal-web-components/p-DlYG-OVB.js +1 -0
- package/dist/boreal-web-components/p-DnIhjwCH.system.js +1 -0
- package/dist/boreal-web-components/p-DpnBDSUm.system.js +1 -0
- package/dist/boreal-web-components/p-Dwo1hcd9.js +1 -0
- package/{components-build/p-CaHOghy5.js → dist/boreal-web-components/p-U9yfbs7i.js} +1 -1
- package/dist/boreal-web-components/p-a73659ac.system.entry.js +1 -0
- package/dist/boreal-web-components/p-b2ad9535.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-731b88cc.entry.js → p-d4c30d2b.entry.js} +1 -1
- package/dist/boreal-web-components/p-db0c10b9.system.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-dca16a3d.entry.js +1 -0
- package/dist/boreal-web-components/p-de846c43.system.entry.js +1 -0
- package/dist/boreal-web-components/p-df087e23.system.entry.js +1 -0
- package/dist/boreal-web-components/p-dfb4854e.entry.js +1 -0
- package/dist/boreal-web-components/p-dz9-Q2N8.js +1 -0
- package/dist/boreal-web-components/p-e09b4d14.system.entry.js +1 -0
- package/dist/boreal-web-components/{p-edca16b6.system.entry.js → p-e0a41cab.system.entry.js} +1 -1
- package/dist/boreal-web-components/{p-127a4134.entry.js → p-e55f2a8b.entry.js} +1 -1
- package/dist/boreal-web-components/p-e7af1e1a.entry.js +1 -0
- package/dist/boreal-web-components/{p-e0bf8a6e.entry.js → p-efe159aa.entry.js} +1 -1
- package/dist/boreal-web-components/{p-44ceff4e.system.entry.js → p-f65e9d0c.system.entry.js} +1 -1
- package/dist/boreal-web-components/p-f792aa74.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-iq2UuV7c.js +1 -0
- package/dist/boreal-web-components/p-vzZJGcYF.system.js +1 -1
- package/dist/boreal-web-components/p-wREMI3WA.js +1 -0
- package/dist/cjs/Keys-rKl2za5q.js +18 -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-button-group.cjs.entry.js +95 -0
- package/dist/cjs/bds-button.cjs.entry.js +7 -13
- package/dist/cjs/bds-checkbox-card.cjs.entry.js +121 -0
- package/dist/cjs/bds-checkbox.cjs.entry.js +13 -6
- package/dist/cjs/bds-dialog.cjs.entry.js +3 -3
- 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 +47 -22
- package/dist/cjs/bds-list-menu.cjs.entry.js +90 -21
- package/dist/cjs/bds-popover.cjs.entry.js +5 -4
- 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 +285 -0
- package/dist/cjs/bds-radio.cjs.entry.js +60 -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 +1 -1
- package/dist/cjs/bds-text-field.cjs.entry.js +8 -7
- package/dist/cjs/bds-toggle.cjs.entry.js +6 -5
- package/dist/cjs/bds-tooltip_2.cjs.entry.js +9 -8
- package/dist/cjs/boreal-web-components.cjs.js +1 -1
- 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-k4ezB-eT.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/menu-BxKaEajh.js +8 -0
- package/dist/cjs/orientation-DQAIleEJ.js +8 -0
- package/dist/collection/collection-manifest.json +7 -1
- package/dist/collection/components/actions/bds-button/bds-button.css +19 -19
- package/dist/collection/components/actions/bds-button/bds-button.js +7 -7
- 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 +245 -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 +148 -49
- 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/types/types.js +1 -0
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu-item/bds-list-menu-item.css +25 -9
- package/dist/collection/components/actions/bds-list-menu/bds-list-menu-item/bds-list-menu-item.js +53 -8
- 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.js +1 -1
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox.css +9 -8
- package/dist/collection/components/forms/bds-checkbox/bds-checkbox.js +7 -1
- package/dist/collection/components/forms/bds-checkbox-card/bds-checkbox-card.css +127 -0
- package/dist/collection/components/forms/bds-checkbox-card/bds-checkbox-card.js +397 -0
- package/dist/collection/components/forms/bds-checkbox-card/types/ICheckboxCard.js +1 -0
- package/dist/collection/components/forms/bds-flag/bds-flag.js +1 -1
- package/dist/collection/components/forms/bds-radio/bds-radio.css +121 -0
- package/dist/collection/components/forms/bds-radio/bds-radio.js +238 -0
- package/dist/collection/components/forms/bds-radio/types/IRadio.js +1 -0
- package/dist/collection/components/forms/bds-radio-button/bds-radio-button.css +109 -0
- package/dist/collection/components/forms/bds-radio-button/bds-radio-button.js +238 -0
- package/dist/collection/components/forms/bds-radio-button/types/IRadioButton.js +1 -0
- package/dist/collection/components/forms/bds-radio-card/bds-radio-card.css +156 -0
- package/dist/collection/components/forms/bds-radio-card/bds-radio-card.js +307 -0
- package/dist/collection/components/forms/bds-radio-card/types/IRadioCard.js +1 -0
- package/dist/collection/components/forms/bds-radio-group/bds-radio-group.css +55 -0
- package/dist/collection/components/forms/bds-radio-group/bds-radio-group.js +620 -0
- package/dist/collection/components/forms/bds-radio-group/types/IRadioGroup.js +1 -0
- package/dist/collection/components/forms/bds-radio-group/types/enum.js +5 -0
- package/dist/collection/components/forms/bds-radio-group/types/types.js +1 -0
- package/dist/collection/components/forms/bds-text-field/bds-text-field.js +1 -1
- 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.js +1 -1
- package/dist/collection/components/layouts/bds-grid/grid-item/bds-grid-item.js +1 -1
- package/dist/collection/components/overlays/bds-dialog/bds-dialog.js +2 -2
- package/dist/collection/components/overlays/bds-popover/bds-popover.js +1 -1
- 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 +1 -1
- 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 +11 -5
- package/dist/collection/types/index.js +2 -0
- package/dist/collection/types/orientation.js +4 -0
- package/dist/collection/utils/constants/common/Keys.js +10 -24
- package/dist/collection/utils/menu/menu-item.utils.js +9 -8
- package/dist/collection/utils/testing/helpers.js +10 -0
- package/dist/esm/Keys-DlYG-OVB.js +16 -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-button-group.entry.js +93 -0
- package/dist/esm/bds-button.entry.js +5 -11
- package/dist/esm/bds-checkbox-card.entry.js +119 -0
- package/dist/esm/bds-checkbox.entry.js +11 -4
- package/dist/esm/bds-dialog.entry.js +3 -3
- 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 +47 -22
- package/dist/esm/bds-list-menu.entry.js +90 -21
- package/dist/esm/bds-popover.entry.js +5 -4
- 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 +283 -0
- package/dist/esm/bds-radio.entry.js +58 -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 +1 -1
- package/dist/esm/bds-text-field.entry.js +3 -2
- package/dist/esm/bds-toggle.entry.js +4 -3
- package/dist/esm/bds-tooltip_2.entry.js +9 -8
- package/dist/esm/boreal-web-components.js +1 -1
- 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-BYS3c13B.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/menu-dz9-Q2N8.js +6 -0
- package/dist/esm/orientation-CPvuMm5C.js +6 -0
- package/dist/esm-es5/Keys-DlYG-OVB.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-button-group.entry.js +1 -0
- package/dist/esm-es5/bds-button.entry.js +1 -1
- package/dist/esm-es5/bds-checkbox-card.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-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/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-BYS3c13B.js +1 -0
- package/dist/esm-es5/internals-DfaYciGa.js +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/menu-dz9-Q2N8.js +1 -0
- package/dist/esm-es5/orientation-CPvuMm5C.js +1 -0
- package/dist/types/components/actions/bds-button/bds-button.d.ts +4 -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 +36 -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 +19 -15
- package/dist/types/components/actions/bds-list-menu/bds-list-menu/types/IListMenu.d.ts +14 -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 +8 -2
- package/dist/types/components/actions/bds-list-menu/bds-list-menu-item/types/IListMenuItem.d.ts +1 -0
- package/dist/types/components/forms/bds-checkbox/bds-checkbox.d.ts +2 -0
- package/dist/types/components/forms/bds-checkbox-card/bds-checkbox-card.d.ts +70 -0
- package/dist/types/components/forms/bds-checkbox-card/types/ICheckboxCard.d.ts +8 -0
- package/dist/types/components/forms/bds-radio/bds-radio.d.ts +36 -0
- package/dist/types/components/forms/bds-radio/types/IRadio.d.ts +13 -0
- package/dist/types/components/forms/bds-radio-button/bds-radio-button.d.ts +36 -0
- package/dist/types/components/forms/bds-radio-button/types/IRadioButton.d.ts +13 -0
- package/dist/types/components/forms/bds-radio-card/bds-radio-card.d.ts +57 -0
- package/dist/types/components/forms/bds-radio-card/types/IRadioCard.d.ts +14 -0
- package/dist/types/components/forms/bds-radio-group/bds-radio-group.d.ts +82 -0
- package/dist/types/components/forms/bds-radio-group/types/IRadioGroup.d.ts +19 -0
- package/dist/types/components/forms/bds-radio-group/types/enum.d.ts +6 -0
- package/dist/types/components/forms/bds-radio-group/types/types.d.ts +3 -0
- package/dist/types/components.d.ts +941 -63
- package/dist/types/mixins/menu-behavior.mixin.d.ts +5 -1
- package/dist/types/types/index.d.ts +2 -0
- package/dist/types/types/orientation.d.ts +6 -0
- package/dist/types/utils/constants/common/Keys.d.ts +13 -16
- 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-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-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-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/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/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/helpers/{types → bds-divider/types}/enum.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
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { M as Mixin, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-BqJlOB6b.js';
|
|
2
2
|
import { C as COMPONENT_STATES } from './states-Bfazyxqi.js';
|
|
3
|
+
import { M as MENU_ROLES } from './menu-dz9-Q2N8.js';
|
|
3
4
|
import { v as validatePropValue } from './validateProps-kGnB15Lz.js';
|
|
4
|
-
import { K as KEYBOARD } from './Keys-
|
|
5
|
+
import { K as KEYBOARD } from './Keys-DlYG-OVB.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Resolves the appropriate ARIA role for a menu item.
|
|
@@ -29,20 +30,18 @@ function resolveAriaSelected(role, selected) {
|
|
|
29
30
|
* Resolves the tabIndex attribute for keyboard navigation.
|
|
30
31
|
* @param {MenuItemRole} role - The role of the item.
|
|
31
32
|
* @param {boolean} disabled - Whether the item is currently disabled.
|
|
32
|
-
* @param {boolean} selected - Whether the item is currently selected.
|
|
33
33
|
* @param {boolean} active - Whether the item is currently active.
|
|
34
34
|
* @returns {number} - Returns 0 for focusable menu items, or -1 for disabled/options.
|
|
35
35
|
* @example
|
|
36
36
|
* const index = resolveTabIndex('menuitem', false); // returns 0
|
|
37
37
|
* const indexDisabled = resolveTabIndex('menuitem', true); // returns -1
|
|
38
38
|
*/
|
|
39
|
-
function resolveTabIndex(role, disabled,
|
|
39
|
+
function resolveTabIndex(role, disabled, active) {
|
|
40
40
|
if (disabled)
|
|
41
41
|
return -1;
|
|
42
|
-
if (role === 'option')
|
|
43
|
-
return selected || active ? 0 : -1;
|
|
44
|
-
if (role === 'menuitem')
|
|
42
|
+
if (role === 'option' || role === 'menuitem') {
|
|
45
43
|
return active ? 0 : -1;
|
|
44
|
+
}
|
|
46
45
|
return -1;
|
|
47
46
|
}
|
|
48
47
|
/**
|
|
@@ -50,6 +49,7 @@ function resolveTabIndex(role, disabled, selected, active) {
|
|
|
50
49
|
* @param {KeyboardEvent} event - The keyboard event object from the listener.
|
|
51
50
|
* @param {HTMLElement[]} items - An array of focusable HTML elements within the menu.
|
|
52
51
|
* @param {number} currentIndex - The index of the currently focused item.
|
|
52
|
+
* @param {boolean} selected - The current selection state of the item (used for activation logic).
|
|
53
53
|
* @returns {void}
|
|
54
54
|
* @example
|
|
55
55
|
* handleMenuKeyNavigation(event, menuItems, 2);
|
|
@@ -59,16 +59,18 @@ function handleMenuKeyNavigation(event, items, currentIndex) {
|
|
|
59
59
|
return;
|
|
60
60
|
let nextIndex = -1;
|
|
61
61
|
switch (event.key) {
|
|
62
|
-
case KEYBOARD.ArrowDown
|
|
62
|
+
case KEYBOARD.ArrowDown:
|
|
63
63
|
nextIndex = (currentIndex + 1) % items.length;
|
|
64
64
|
break;
|
|
65
|
-
case KEYBOARD.ArrowUp
|
|
65
|
+
case KEYBOARD.ArrowUp:
|
|
66
66
|
nextIndex = (currentIndex - 1 + items.length) % items.length;
|
|
67
67
|
break;
|
|
68
68
|
default:
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
+
items.forEach(item => item.removeAttribute('active-item'));
|
|
71
72
|
items[nextIndex].focus();
|
|
73
|
+
items[nextIndex].setAttribute('active-item', '');
|
|
72
74
|
}
|
|
73
75
|
/** Prevents default browser behavior for specific navigation keys.
|
|
74
76
|
* @param {KeyboardEvent} e - The keyboard event to evaluate.
|
|
@@ -78,7 +80,7 @@ function handleMenuKeyNavigation(event, items, currentIndex) {
|
|
|
78
80
|
* preventNavigationKeys(event);
|
|
79
81
|
*/
|
|
80
82
|
function preventNavigationKeys(e) {
|
|
81
|
-
const navigationKeys = [KEYBOARD.ArrowDown
|
|
83
|
+
const navigationKeys = [KEYBOARD.ArrowDown, KEYBOARD.ArrowUp, KEYBOARD.Enter, KEYBOARD.Space];
|
|
82
84
|
if (navigationKeys.includes(e.key)) {
|
|
83
85
|
e.preventDefault();
|
|
84
86
|
}
|
|
@@ -95,7 +97,6 @@ function preventNavigationKeys(e) {
|
|
|
95
97
|
* - Computation of aria-selected and tabIndex attributes for accessibility.
|
|
96
98
|
* - A method to handle keyboard navigation (Arrow keys, Enter, Space) within the menu context.
|
|
97
99
|
*
|
|
98
|
-
*
|
|
99
100
|
* @typeParam B - The base constructor type.
|
|
100
101
|
* @param {B} Base - The base component class to be extended.
|
|
101
102
|
* @returns {MenuBehaviorMixin} - A class with injected menu behaviors.
|
|
@@ -142,12 +143,19 @@ const MenuItemBehavior = (Base) => {
|
|
|
142
143
|
this.selected = false;
|
|
143
144
|
this.activeItem = false;
|
|
144
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Finds the closest parent element with a role of 'menu' or 'listbox'.
|
|
148
|
+
* @returns {HTMLElement | null} - The parent menu or listbox element, or null if not found.
|
|
149
|
+
*/
|
|
150
|
+
get parent() {
|
|
151
|
+
return this.el.closest('[role="menu"], [role="listbox"]');
|
|
152
|
+
}
|
|
145
153
|
/**
|
|
146
154
|
* Detects the ARIA role of the nearest parent menu or listbox.
|
|
147
155
|
* @returns {MenuRole | null} - 'menu', 'listbox', or null if not found.
|
|
148
156
|
*/
|
|
149
157
|
get parentRole() {
|
|
150
|
-
const parent = this.
|
|
158
|
+
const parent = this.parent;
|
|
151
159
|
return parent !== null ? parent.getAttribute('role') : null;
|
|
152
160
|
}
|
|
153
161
|
/**
|
|
@@ -170,7 +178,7 @@ const MenuItemBehavior = (Base) => {
|
|
|
170
178
|
* @returns {number} 0 for focusable menu items, -1 otherwise.
|
|
171
179
|
*/
|
|
172
180
|
get itemTabIndex() {
|
|
173
|
-
return resolveTabIndex(this.menuItemRole, this.disabled, this.
|
|
181
|
+
return resolveTabIndex(this.menuItemRole, this.disabled, this.activeItem);
|
|
174
182
|
}
|
|
175
183
|
/**
|
|
176
184
|
* Processes keyboard events for arrow navigation and activation.
|
|
@@ -182,11 +190,11 @@ const MenuItemBehavior = (Base) => {
|
|
|
182
190
|
*/
|
|
183
191
|
handleKeyDownLogic(e, onActivate) {
|
|
184
192
|
preventNavigationKeys(e);
|
|
185
|
-
if (e.key === KEYBOARD.Enter
|
|
193
|
+
if (e.key === KEYBOARD.Enter || e.key === KEYBOARD.Space) {
|
|
186
194
|
onActivate();
|
|
187
195
|
return;
|
|
188
196
|
}
|
|
189
|
-
const parent = this.
|
|
197
|
+
const parent = this.parent;
|
|
190
198
|
if (parent === null)
|
|
191
199
|
return;
|
|
192
200
|
const items = Array.from(parent.querySelectorAll(`${this.el.tagName.toLocaleLowerCase()}:not([disabled]):not([variant="label"])`));
|
|
@@ -290,8 +298,7 @@ const WithLinks = (Base) => {
|
|
|
290
298
|
handleLinkKeyDown(event) {
|
|
291
299
|
if (!this.isLink)
|
|
292
300
|
return;
|
|
293
|
-
if (this.el.tagName.toLowerCase() !== 'a' &&
|
|
294
|
-
(event.key === KEYBOARD.Enter.key || event.key === KEYBOARD.Space.key)) {
|
|
301
|
+
if (this.el.tagName.toLowerCase() !== 'a' && (event.key === KEYBOARD.Enter || event.key === KEYBOARD.Space)) {
|
|
295
302
|
event.preventDefault();
|
|
296
303
|
this.handleLinkClick(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
297
304
|
}
|
|
@@ -355,13 +362,13 @@ const LIST_MENU_ITEM_VARIANTS = {
|
|
|
355
362
|
BUTTON: 'button',
|
|
356
363
|
};
|
|
357
364
|
|
|
358
|
-
const bdsListMenuItemCss = () => `@charset "UTF-8";.bds-list-item,.bds-list-item__content
|
|
365
|
+
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__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:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus);box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-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:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus), 0 1px 2px 0 rgba(19, 19, 22, 0.15) inset;box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus), 0 1px 2px 0 rgba(19, 19, 22, 0.15) inset;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)}`;
|
|
359
366
|
|
|
360
367
|
const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
361
368
|
constructor(hostRef) {
|
|
362
369
|
super();
|
|
363
370
|
registerInstance(this, hostRef);
|
|
364
|
-
this.
|
|
371
|
+
this.bdsSelectItem = createEvent(this, "bdsSelectItem");
|
|
365
372
|
/**
|
|
366
373
|
* Defines the visual style of the list menu item.
|
|
367
374
|
* - 'button': A standard clickable item.
|
|
@@ -376,6 +383,8 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
376
383
|
this.selected = false;
|
|
377
384
|
/** Value associated with the menu item */
|
|
378
385
|
this.value = '';
|
|
386
|
+
/** Checkable state item, if is activated should be visible a checkbox */
|
|
387
|
+
this.checkable = false;
|
|
379
388
|
/** Active state item */
|
|
380
389
|
this.activeItem = false;
|
|
381
390
|
/** Link behavior props */
|
|
@@ -390,11 +399,14 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
390
399
|
this.handleClick = (e) => {
|
|
391
400
|
if (this.disabled || this.isLabelVariant)
|
|
392
401
|
return;
|
|
402
|
+
e.stopPropagation();
|
|
393
403
|
if (this.isLink) {
|
|
394
404
|
this.handleLinkClick(e);
|
|
395
405
|
return;
|
|
396
406
|
}
|
|
397
|
-
this.
|
|
407
|
+
if (this.checkable && this.parentRole !== MENU_ROLES.LISTBOX)
|
|
408
|
+
this.selected = !this.selected;
|
|
409
|
+
this.bdsSelectItem.emit({
|
|
398
410
|
value: this.value,
|
|
399
411
|
selected: !this.selected,
|
|
400
412
|
});
|
|
@@ -407,7 +419,7 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
407
419
|
// If the item is a link, we dont activate this animation
|
|
408
420
|
if (!this.isLink || this.linkAttributes.download !== undefined) {
|
|
409
421
|
this.currentState =
|
|
410
|
-
e.key === KEYBOARD.Enter
|
|
422
|
+
e.key === KEYBOARD.Enter || e.key === KEYBOARD.Space ? COMPONENT_STATES.ACTIVE : this.currentState;
|
|
411
423
|
}
|
|
412
424
|
};
|
|
413
425
|
/** Event to handle keyup navigation and reset active state */
|
|
@@ -424,6 +436,14 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
424
436
|
componentWillLoad() {
|
|
425
437
|
this.checkPropsVariant();
|
|
426
438
|
}
|
|
439
|
+
/** Improve aria resolve for checkable items */
|
|
440
|
+
get menuItemRoleExtended() {
|
|
441
|
+
if (!this.checkable)
|
|
442
|
+
return this.menuItemRole;
|
|
443
|
+
if (this.parentRole === 'listbox')
|
|
444
|
+
return 'checkbox';
|
|
445
|
+
return 'menuitemcheckbox';
|
|
446
|
+
}
|
|
427
447
|
/** Checks if the variant is a label */
|
|
428
448
|
get isLabelVariant() {
|
|
429
449
|
return this.variant === LIST_MENU_ITEM_VARIANTS.LABEL;
|
|
@@ -442,9 +462,14 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
442
462
|
renderTypeLabel() {
|
|
443
463
|
return (h("bds-typography", { variant: "label", element: "label", align: "start", role: "presentation" }, h("slot", { name: "left-content" }), " ", h("slot", null)));
|
|
444
464
|
}
|
|
465
|
+
renderCheckbox() {
|
|
466
|
+
if (!this.checkable)
|
|
467
|
+
return null;
|
|
468
|
+
return (h("bds-checkbox", { checked: this.selected, disabled: this.disabled, name: `checkbox-${this.value}`, tabindex: "-1", style: { pointerEvents: 'none' }, inert: true }));
|
|
469
|
+
}
|
|
445
470
|
/** Return the render for the button variant of the list menu item */
|
|
446
471
|
renderTypeButton() {
|
|
447
|
-
return (h("div", { class: "bds-list-item__content" }, h("div", { class: "bds-list-item__content
|
|
472
|
+
return (h("div", { class: "bds-list-item__content" }, h("div", { class: "bds-list-item__content-left" }, this.renderCheckbox(), h("span", { class: "bds-list-item__content-left__icon" }, h("slot", { name: "left-content" })), h("span", { class: "bds-list-item__content-left__text" }, h("slot", null))), h("div", { class: "bds-list-item__content-right" }, h("slot", { name: "right-content" }))));
|
|
448
473
|
}
|
|
449
474
|
/** Main render */
|
|
450
475
|
render() {
|
|
@@ -452,7 +477,7 @@ const BdsListMenuItem = class extends Mixin(MenuItemBehavior, WithLinks) {
|
|
|
452
477
|
if (this.isLabelVariant)
|
|
453
478
|
renderItem = this.renderTypeLabel();
|
|
454
479
|
const linkAttributes = this.isLink ? { ...this.linkAttributes, tabindex: this.activeItem ? 0 : -1 } : {};
|
|
455
|
-
return (h(Host, { key: '
|
|
480
|
+
return (h(Host, { key: '0882d4cb677f6621518113c48e92d7e94cb71916', 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));
|
|
456
481
|
}
|
|
457
482
|
get el() { return getElement(this); }
|
|
458
483
|
static get watchers() { return {
|
|
@@ -1,26 +1,43 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-BqJlOB6b.js';
|
|
2
|
+
import { M as MENU_ROLES } from './menu-dz9-Q2N8.js';
|
|
3
|
+
import { a as inheritAriaAttributes } from './attributes-U9yfbs7i.js';
|
|
4
|
+
import { v as validatePropValue } from './validateProps-kGnB15Lz.js';
|
|
2
5
|
|
|
3
|
-
const
|
|
6
|
+
const LIST_MENU_SELECTION_MODE = {
|
|
7
|
+
SINGLE: 'single',
|
|
8
|
+
MULTIPLE: 'multiple',
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
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)}`;
|
|
4
12
|
|
|
5
13
|
const BdsListMenu = class {
|
|
6
14
|
constructor(hostRef) {
|
|
7
15
|
registerInstance(this, hostRef);
|
|
8
16
|
this.bdsChange = createEvent(this, "bdsChange");
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
this.
|
|
17
|
+
this.bdsSelect = createEvent(this, "bdsSelect");
|
|
18
|
+
// Object to store inherited aria attributes
|
|
19
|
+
this.inheritedAttributes = {};
|
|
20
|
+
/** The selection mode of the menu. Can be 'SINGLE' or 'MULTIPLE'. Default is 'SINGLE'. */
|
|
21
|
+
this.selectionMode = LIST_MENU_SELECTION_MODE.SINGLE;
|
|
12
22
|
/** Defines the ARIA role of the menu. Can be 'menu' or 'listbox'. Default is 'menu'. */
|
|
13
|
-
this.menuRole =
|
|
23
|
+
this.menuRole = MENU_ROLES.MENU;
|
|
24
|
+
/** Determines if the menu items have selectall/deselectall controls */
|
|
25
|
+
this.selectControls = false;
|
|
14
26
|
/** State to manage selected values */
|
|
15
27
|
this.selectedValues = [];
|
|
16
28
|
}
|
|
29
|
+
/** Verify props to be valid */
|
|
30
|
+
checkProps() {
|
|
31
|
+
validatePropValue(Object.values(MENU_ROLES), MENU_ROLES.MENU, this.el, 'menuRole');
|
|
32
|
+
validatePropValue(Object.values(LIST_MENU_SELECTION_MODE), LIST_MENU_SELECTION_MODE.SINGLE, this.el, 'selectionMode');
|
|
33
|
+
}
|
|
17
34
|
/**
|
|
18
35
|
* Retrieves the currently selected value(s) programmatically.
|
|
19
36
|
* @method getSelectedValues
|
|
20
37
|
* @returns {Promise<string | string[]>} The selected value(s) based on the 'multiple' prop.
|
|
21
38
|
*/
|
|
22
39
|
async getSelectedValues() {
|
|
23
|
-
return this.
|
|
40
|
+
return this.isMultiple ? this.selectedValues : this.selectedValues[0];
|
|
24
41
|
}
|
|
25
42
|
/**
|
|
26
43
|
* Sets the selected values programmatically.
|
|
@@ -29,7 +46,7 @@ const BdsListMenu = class {
|
|
|
29
46
|
* @param {string | string[]} values - The value or values to be marked as selected.
|
|
30
47
|
*/
|
|
31
48
|
async setSelectedValues(values) {
|
|
32
|
-
if (this.
|
|
49
|
+
if (this.isMultiple) {
|
|
33
50
|
this.selectedValues = Array.isArray(values) ? values : [values];
|
|
34
51
|
}
|
|
35
52
|
else {
|
|
@@ -40,24 +57,35 @@ const BdsListMenu = class {
|
|
|
40
57
|
/** Handles the click event on a menu item, updating the selection state accordingly. */
|
|
41
58
|
handleItemClick(event) {
|
|
42
59
|
const { value, selected } = event.detail;
|
|
43
|
-
if (this.menuRole ===
|
|
44
|
-
if (this.
|
|
60
|
+
if (this.menuRole === MENU_ROLES.LISTBOX) {
|
|
61
|
+
if (this.isMultiple) {
|
|
45
62
|
this.handleMultipleSelection(value, selected);
|
|
46
63
|
}
|
|
47
64
|
else {
|
|
48
65
|
this.handleSingleSelection(value, selected);
|
|
49
66
|
}
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
67
|
+
this.updateChildrenState(event.target);
|
|
68
|
+
this.bdsChange.emit(this.isMultiple ? this.selectedValues : this.selectedValues[0] || undefined);
|
|
52
69
|
}
|
|
53
70
|
else {
|
|
54
|
-
|
|
71
|
+
const itemClicked = event.target;
|
|
72
|
+
const indexItem = this.childItems.indexOf(itemClicked);
|
|
73
|
+
this.bdsSelect.emit({
|
|
74
|
+
value,
|
|
75
|
+
index: indexItem,
|
|
76
|
+
checked: itemClicked.checkable ? itemClicked.selected : false,
|
|
77
|
+
element: itemClicked,
|
|
78
|
+
});
|
|
55
79
|
}
|
|
56
80
|
}
|
|
57
81
|
/** Initializes the selected values based on the child menu items that have the 'selected' attribute set. */
|
|
58
82
|
componentWillLoad() {
|
|
83
|
+
this.checkProps();
|
|
59
84
|
this.initialSelectedValues();
|
|
60
85
|
this.updateActiveState();
|
|
86
|
+
this.inheritedAttributes = {
|
|
87
|
+
...inheritAriaAttributes(this.el, ['aria-multiselectable']),
|
|
88
|
+
};
|
|
61
89
|
}
|
|
62
90
|
/** Get all child menu items */
|
|
63
91
|
get childItems() {
|
|
@@ -70,6 +98,9 @@ const BdsListMenu = class {
|
|
|
70
98
|
const firstEnabled = items.find(item => !item.disabled && item.variant !== 'label');
|
|
71
99
|
return firstEnabled;
|
|
72
100
|
}
|
|
101
|
+
get isMultiple() {
|
|
102
|
+
return this.selectionMode === LIST_MENU_SELECTION_MODE.MULTIPLE;
|
|
103
|
+
}
|
|
73
104
|
/** Updates the active state of the menu items based on the current selection. */
|
|
74
105
|
updateActiveState() {
|
|
75
106
|
const firstEnabled = this.firstEnabledItem;
|
|
@@ -90,20 +121,33 @@ const BdsListMenu = class {
|
|
|
90
121
|
this.selectedValues = selected ? [value] : [];
|
|
91
122
|
}
|
|
92
123
|
/** Updates the state of child menu items based on the current selection. */
|
|
93
|
-
updateChildrenState() {
|
|
124
|
+
updateChildrenState(item) {
|
|
94
125
|
const items = this.childItems;
|
|
95
126
|
items.forEach((item) => {
|
|
96
127
|
if (item.value !== undefined) {
|
|
97
128
|
const isSelected = this.selectedValues.includes(item.value);
|
|
98
129
|
item.selected = isSelected;
|
|
99
|
-
|
|
100
|
-
item.setAttribute('active-item', '');
|
|
101
|
-
else
|
|
102
|
-
item.removeAttribute('active-item');
|
|
130
|
+
item.removeAttribute('active-item');
|
|
103
131
|
}
|
|
104
132
|
});
|
|
105
|
-
|
|
106
|
-
|
|
133
|
+
this.setActiveItem(item);
|
|
134
|
+
}
|
|
135
|
+
/** activate item based on interaction */
|
|
136
|
+
setActiveItem(lastItemInteracted) {
|
|
137
|
+
let itemToActivate;
|
|
138
|
+
if (lastItemInteracted !== undefined) {
|
|
139
|
+
itemToActivate = lastItemInteracted;
|
|
140
|
+
}
|
|
141
|
+
else if (this.selectedValues.length > 0) {
|
|
142
|
+
const selectedValue = this.selectedValues[0];
|
|
143
|
+
itemToActivate = this.childItems.find(item => item.value === selectedValue);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
itemToActivate = this.firstEnabledItem;
|
|
147
|
+
}
|
|
148
|
+
if (itemToActivate !== undefined) {
|
|
149
|
+
itemToActivate.setAttribute('active-item', '');
|
|
150
|
+
}
|
|
107
151
|
}
|
|
108
152
|
/** Initializes the selected values based on the child menu items that have the 'selected' attribute set. */
|
|
109
153
|
initialSelectedValues() {
|
|
@@ -113,15 +157,40 @@ const BdsListMenu = class {
|
|
|
113
157
|
const values = initialSelected.map(item => {
|
|
114
158
|
return item.getAttribute('value') || '';
|
|
115
159
|
});
|
|
116
|
-
this.selectedValues = this.
|
|
160
|
+
this.selectedValues = this.isMultiple ? values : [values[0]];
|
|
117
161
|
this.updateChildrenState();
|
|
118
162
|
}
|
|
119
163
|
}
|
|
164
|
+
/** Handles the toggle of select/deselect all controls, updating the selection state accordingly. */
|
|
165
|
+
handleToggleSelect(selectAll) {
|
|
166
|
+
const allValues = this.childItems
|
|
167
|
+
.filter(item => !item.disabled && item.variant !== 'label' && item.value !== undefined)
|
|
168
|
+
.map(item => item.value);
|
|
169
|
+
this.selectedValues = selectAll ? allValues : [];
|
|
170
|
+
this.updateChildrenState();
|
|
171
|
+
this.bdsChange.emit(this.selectedValues);
|
|
172
|
+
}
|
|
173
|
+
/** Renders the select/deselect all controls if applicable based on the props. */
|
|
174
|
+
renderSelectControls() {
|
|
175
|
+
if (this.selectControls && this.menuRole === MENU_ROLES.LISTBOX && this.isMultiple) {
|
|
176
|
+
return (h("div", { class: "bds-list-menu__select-controls" }, h("bds-button", { name: "Select all", variant: "plain", onBdsClick: () => this.handleToggleSelect(true) }, "Select All"), h("bds-button", { name: "Deselect all", variant: "plain", onBdsClick: () => this.handleToggleSelect(false) }, "Deselect All")));
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
120
180
|
/** Renders the component with a slot for menu items. */
|
|
121
181
|
render() {
|
|
122
|
-
|
|
182
|
+
const inheritedAriaAttr = this.inheritedAttributes;
|
|
183
|
+
return (h(Host, { key: '88d9e41f1116555df02ca6e883b9e50f024c69b9', class: "bds-list-menu", role: this.menuRole, tabIndex: "-1", "aria-multiselectable": this.menuRole === MENU_ROLES.LISTBOX && this.isMultiple ? 'true' : 'false', ...inheritedAriaAttr }, h("slot", { key: '2f1730a1b5c456477d2b86f35b596d11e1b79f5c', name: "banner-content" }), h("div", { key: '58b6944a60ce62a8832e41a853d2621b6fc6deae', class: "bds-list-menu__header" }, h("slot", { key: '1a292f12ca27104fd0496477a051a1ad3bcec83e', name: "header-content" })), this.renderSelectControls(), h("div", { key: '9a21f481ca5a3e6b484c0bcc5501097dfceb61c3', class: "bds-list-menu__content" }, h("slot", { key: '43f684cb30333a5d571b4d05a4c8627703297473' })), h("div", { key: 'dbc3a62e055792283fef80ff4514167d079c355d', class: "bds-list-menu__footer" }, h("slot", { key: '8d504757a49bedf5a5ec150ed16ef5c9e7723ee1', name: "footer-content" }))));
|
|
123
184
|
}
|
|
124
185
|
get el() { return getElement(this); }
|
|
186
|
+
static get watchers() { return {
|
|
187
|
+
"selectionMode": [{
|
|
188
|
+
"checkProps": 0
|
|
189
|
+
}],
|
|
190
|
+
"menuRole": [{
|
|
191
|
+
"checkProps": 0
|
|
192
|
+
}]
|
|
193
|
+
}; }
|
|
125
194
|
};
|
|
126
195
|
BdsListMenu.style = bdsListMenuCss();
|
|
127
196
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { M as Mixin, r as registerInstance, h, a as Host, g as getElement } from './index-BqJlOB6b.js';
|
|
2
|
-
import { a as anchoredMixin, g as getOffset } from './getOffset-
|
|
3
|
-
import { B as BUTTON_SIZES } from './enum-
|
|
2
|
+
import { a as anchoredMixin, g as getOffset } from './getOffset-BYS3c13B.js';
|
|
3
|
+
import { B as BUTTON_SIZES } from './enum-DlVzZK7o.js';
|
|
4
|
+
import './Logger-iq2UuV7c.js';
|
|
4
5
|
import './floating.mixin-DCXSEEVH.js';
|
|
5
|
-
import './Keys-
|
|
6
|
+
import './Keys-DlYG-OVB.js';
|
|
6
7
|
|
|
7
8
|
const OFFSET = 11;
|
|
8
9
|
|
|
@@ -269,7 +270,7 @@ const BdsPopover = class extends Mixin(anchoredMixin) {
|
|
|
269
270
|
this.trigger.removeEventListener('click', (evt) => this.handleShow(evt));
|
|
270
271
|
}
|
|
271
272
|
render() {
|
|
272
|
-
return (h(Host, { key: '
|
|
273
|
+
return (h(Host, { key: '953571ebcd84e1e6910f3fce9aa59ff1b00c1be7', 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 && (h("div", { key: '435cde7702b5db7ddc5f055ab379ef264a8cac16', class: "popover-header" }, h("div", { key: 'a3ac8f2b6610090d5947dc299a9ce62d85265e86', class: "popover-header__content" }, h("span", { key: 'ed1cbb198c54ffba2c7ce22085cb43648d6b7f3d', class: "popover-header__icon" }, h("slot", { key: 'b3049ec3dc2ad99037a662553103facad38af4f9', name: "header-icon" })), h("span", { key: '591ccd19d65f3a485062be8e5e4acf57a3ff4539', class: "popover-header__title" }, h("slot", { key: '9b65d0180f3728906302426f6436034e80f1c783', name: "header-title" }))), this.closable && (h("bds-button", { key: '5e13390200231b50e4a9c38fb22c623bf28d105f', class: "popover-header__close", size: BUTTON_SIZES.SMALL, onBdsClick: () => this.hide() }, h("em", { key: '20ea602f48d1f27ee0b10c929a4a2194304a35b2', slot: "icon", class: "bds-icon-close" }))))), this.canShowArrow && (h("div", { key: '551089a9b038a27277398dac47b8e72b2f3d9286', class: "popover-arrow", part: "arrow", ref: el => (this.arrowElement = el) })), h("div", { key: '17a6a939f83dd930aafc416b48da124faa27a4e0', class: "popover-content", tabIndex: -1, part: "popover-content" }, h("slot", { key: 'ab7cfa10649128cc387a54cf052429425696269a' })), this.footer && (h("div", { key: '7cf9fa351928fd823a49541764cdd67bd2d57def', class: "popover-footer", onClick: (e) => e.stopPropagation() }, h("slot", { key: 'b6a20d06d0964f6dea85afdd40a46a6fb737bbac', name: "footer-helper" }), h("slot", { key: '379b2b43a1e937775149e686686da9e4554dd962', name: "footer-button" })))));
|
|
273
274
|
}
|
|
274
275
|
get el() { return getElement(this); }
|
|
275
276
|
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-BqJlOB6b.js';
|
|
2
|
+
|
|
3
|
+
const bdsRadioButtonCss = () => `@charset "UTF-8";.bds-radio-button__info{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.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=radio]{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}.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:0 1px 2px 0 rgba(19, 19, 22, 0.15);box-shadow:0 1px 2px 0 rgba(19, 19, 22, 0.15)}.bds-radio-button:focus-visible,.bds-radio-button:focus{z-index:1;background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus);box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-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:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus), 0 1px 2px 0 rgba(19, 19, 22, 0.15) inset;box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus), 0 1px 2px 0 rgba(19, 19, 22, 0.15) inset}.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__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)}`;
|
|
4
|
+
|
|
5
|
+
const BdsRadioButton = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
this.bdsChange = createEvent(this, "bdsChange");
|
|
9
|
+
/** Whether this button is selected. Managed by bds-radio-group; can be set directly when used standalone. */
|
|
10
|
+
this.checked = false;
|
|
11
|
+
/** Disables the button, preventing interaction and selection. */
|
|
12
|
+
this.disabled = false;
|
|
13
|
+
/** Shows error styling on the button. Propagated by bds-radio-group. */
|
|
14
|
+
this.error = false;
|
|
15
|
+
/** Value submitted with the form when this button is selected. */
|
|
16
|
+
this.value = 'on';
|
|
17
|
+
/** Name attribute stamped by the parent bds-radio-group via setAttribute. Set directly when used standalone. */
|
|
18
|
+
this.name = '';
|
|
19
|
+
/** Label text displayed inside the button. Falls back to the default slot when empty. */
|
|
20
|
+
this.label = '';
|
|
21
|
+
/** Tooltip text shown on an info icon next to the label. */
|
|
22
|
+
this.info = '';
|
|
23
|
+
this.handleClick = () => this.select();
|
|
24
|
+
this.handleKeyDown = (event) => {
|
|
25
|
+
if (event.key === ' ') {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
this.select();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
componentDidLoad() {
|
|
32
|
+
this.el.setAttribute('role', 'radio');
|
|
33
|
+
this.el.setAttribute('aria-checked', String(this.checked));
|
|
34
|
+
this.el.setAttribute('tabindex', '-1');
|
|
35
|
+
}
|
|
36
|
+
select() {
|
|
37
|
+
if (this.disabled || this.checked)
|
|
38
|
+
return;
|
|
39
|
+
this.checked = true;
|
|
40
|
+
this.el.setAttribute('aria-checked', 'true');
|
|
41
|
+
this.bdsChange.emit({ checked: true, value: this.value });
|
|
42
|
+
}
|
|
43
|
+
get classMap() {
|
|
44
|
+
return {
|
|
45
|
+
'bds-radio-button': true,
|
|
46
|
+
'bds-radio-button--checked': this.checked,
|
|
47
|
+
'bds-radio-button--error': this.error,
|
|
48
|
+
'bds-radio-button--disabled': this.disabled,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
render() {
|
|
52
|
+
return (h(Host, { key: '63fe01baf9bf2318441f3a742ba857a540f4d7d0', class: this.classMap, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("input", { key: '19fd44e41ef583131da77206f9e0c987132a5cc4', type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, "aria-hidden": "true", tabIndex: -1, onFocus: () => this.el.focus() }), h("span", { key: 'cfbe81b25b71aeda4786b6073c9b16bcc819bf7b', class: "bds-radio-button__icon" }, h("slot", { key: 'ffa28a8602ea92c990b3e365d6cd421975f896fc', name: "icon" })), h("span", { key: 'c0a6512f836a00718ee71d5542b714900357ac82', class: "bds-radio-button__label" }, this.label || h("slot", { key: '29c89fa661270a7cc5ee69eb5c7cbc594af05d40' })), this.info && (h("span", { key: '74c3d43733ac679427e1b4fdbfcb4e72dae335a8', class: "bds-radio-button__info" }, h("span", { key: '567d225444acc5384df916a16a35867592327895', class: "bds-radio-button__info-icon bds-icon-info-circle", "aria-hidden": "true" }), h("bds-tooltip", { key: '8120fe06d5a0f85d03205abc54f3e8112946ad4f' }, this.info)))));
|
|
53
|
+
}
|
|
54
|
+
get el() { return getElement(this); }
|
|
55
|
+
};
|
|
56
|
+
BdsRadioButton.style = bdsRadioButtonCss();
|
|
57
|
+
|
|
58
|
+
export { BdsRadioButton as bds_radio_button };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-BqJlOB6b.js';
|
|
2
|
+
|
|
3
|
+
const bdsRadioCardCss = () => `@charset "UTF-8";.bds-radio-card--transition{-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-card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;font-family:var(--boreal-typography-font-family-primary);background-color:var(--boreal-ui-inverse);padding:var(--boreal-spacing-xs) var(--boreal-spacing-s) var(--boreal-spacing-s);border-radius:var(--boreal-radius-xs);border:var(--boreal-spacing-4xs) solid var(--boreal-stroke-default-light)}.bds-radio-card:hover{background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:0 1px 2px 0 rgba(19, 19, 22, 0.15);box-shadow:0 1px 2px 0 rgba(19, 19, 22, 0.15)}.bds-radio-card:focus-within,.bds-radio-card:focus{background-color:var(--boreal-ui-default-lighter);-webkit-box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus);box-shadow:0 0 0 1px var(--boreal-ui-inverse), 0 0 0 3px var(--boreal-stroke-focus)}.bds-radio-card:focus-visible{outline:none}.bds-radio-card input[type=radio]{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}.bds-radio-card__container{display:-ms-inline-flexbox;display:inline-flex;gap:var(--boreal-spacing-xs);-ms-flex-align:start;align-items:flex-start}.bds-radio-card__button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;width:var(--bds-radio-button-size, 18px);height:var(--bds-radio-button-size, 18px);margin-top:var(--boreal-spacing-2xs);border-radius:var(--boreal-radius-full);border:var(--boreal-spacing-4xs) solid var(--boreal-stroke-default-light);background-color:var(--boreal-ui-inverse);-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-card__dot{width:var(--bds-radio-dot-size, 10px);height:var(--bds-radio-dot-size, 10px);border-radius:var(--boreal-radius-full);background-color:transparent;-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-card__header{display:-ms-inline-flexbox;display:inline-flex;gap:var(--boreal-spacing-3xs);color:var(--boreal-text-default)}.bds-radio-card__title{font-weight:var(--boreal-typography-font-weight-semibold);font-size:var(--boreal-typography-font-size-md);line-height:var(--boreal-typography-line-height-md)}.bds-radio-card__info-icon{font-size:var(--boreal-typography-font-size-xs);color:var(--boreal-icon-default-light)}.bds-radio-card__icon:empty{display:none}.bds-radio-card:has(.bds-radio-card__description:empty) .bds-radio-card__container{-ms-flex-align:center;align-items:center}.bds-radio-card:has(.bds-radio-card__description:empty) .bds-radio-card__content{height:var(--boreal-spacing-l)}.bds-radio-card:has(.bds-radio-card__description:empty) .bds-radio-card__button{margin-top:0}.bds-radio-card--checked{border-color:var(--boreal-stroke-primary-base)}.bds-radio-card--checked:hover,.bds-radio-card--checked:focus,.bds-radio-card--checked:focus-within,.bds-radio-card--checked:active{background-color:var(--boreal-ui-primary-lighter)}.bds-radio-card--checked .bds-radio-card__button{border-color:var(--boreal-stroke-primary-base)}.bds-radio-card--checked .bds-radio-card__dot{background-color:var(--boreal-ui-primary-base)}.bds-radio-card--checked .bds-radio-card__header,.bds-radio-card--checked .bds-radio-card__description{color:var(--boreal-text-primary-base)}.bds-radio-card--disabled{pointer-events:none}.bds-radio-card--disabled .bds-radio-card__header,.bds-radio-card--disabled .bds-radio-card__description{color:var(--boreal-text-disabled)}.bds-radio-card--disabled:not(.bds-radio-card--checked) .bds-radio-card__button{background-color:var(--boreal-ui-disabled)}.bds-radio-card--disabled.bds-radio-card--checked,.bds-radio-card--disabled.bds-radio-card--checked .bds-radio-card__button{border-color:var(--boreal-ui-primary-light)}.bds-radio-card--disabled.bds-radio-card--checked .bds-radio-card__dot{background-color:var(--boreal-ui-primary-light)}.bds-radio-card--disabled.bds-radio-card--checked .bds-radio-card__header,.bds-radio-card--disabled.bds-radio-card--checked .bds-radio-card__description{color:var(--boreal-ui-primary-light)}.bds-radio-card--error{border-color:var(--boreal-stroke-danger-base)}.bds-radio-card--error:hover,.bds-radio-card--error:focus,.bds-radio-card--error:focus-within,.bds-radio-card--error:active{background-color:var(--boreal-ui-danger-lighter)}.bds-radio-card--error .bds-radio-card__header,.bds-radio-card--error .bds-radio-card__description{color:var(--boreal-text-danger-base)}.bds-radio-card--error .bds-radio-card__button{border-color:var(--boreal-stroke-danger-base)}.bds-radio-card--error.bds-radio-card--checked .bds-radio-card__dot{background-color:var(--boreal-ui-danger-base)}`;
|
|
4
|
+
|
|
5
|
+
const BdsRadioCard = class {
|
|
6
|
+
constructor(hostRef) {
|
|
7
|
+
registerInstance(this, hostRef);
|
|
8
|
+
this.bdsChange = createEvent(this, "bdsChange");
|
|
9
|
+
/**
|
|
10
|
+
* Value submitted with the form when this radio is selected.
|
|
11
|
+
*/
|
|
12
|
+
this.value = 'on';
|
|
13
|
+
/**
|
|
14
|
+
* Tooltip content attached to the radio card content. If empty, the info icon will not be rendered.
|
|
15
|
+
*/
|
|
16
|
+
this.info = '';
|
|
17
|
+
/**
|
|
18
|
+
* Name attribute stamped by the parent bds-radio-group. Set directly when used standalone.
|
|
19
|
+
*/
|
|
20
|
+
this.name = '';
|
|
21
|
+
/**
|
|
22
|
+
* Label text displayed next to the radio indicator. Falls back to the default slot when empty.
|
|
23
|
+
*/
|
|
24
|
+
this.label = '';
|
|
25
|
+
/**
|
|
26
|
+
* Whether this radio card is selected. Managed by bds-radio-group; can be set directly when used standalone.
|
|
27
|
+
*/
|
|
28
|
+
this.checked = false;
|
|
29
|
+
/**
|
|
30
|
+
* Disables the radio card, preventing it from being selected and interacted with.
|
|
31
|
+
*/
|
|
32
|
+
this.disabled = false;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the radio card is in an error state.
|
|
35
|
+
*/
|
|
36
|
+
this.error = false;
|
|
37
|
+
this.handleClick = () => this.select();
|
|
38
|
+
this.handleKeyDown = (event) => {
|
|
39
|
+
if (event.key === ' ') {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
this.select();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
select() {
|
|
46
|
+
if (this.disabled || this.checked)
|
|
47
|
+
return;
|
|
48
|
+
this.checked = true;
|
|
49
|
+
this.bdsChange.emit({ checked: true, value: this.value });
|
|
50
|
+
}
|
|
51
|
+
componentDidLoad() {
|
|
52
|
+
requestAnimationFrame(() => {
|
|
53
|
+
this.el.classList.add('bds-radio-card--transition');
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
get isError() {
|
|
57
|
+
return this.error && !this.disabled;
|
|
58
|
+
}
|
|
59
|
+
get hostClasses() {
|
|
60
|
+
return {
|
|
61
|
+
'bds-radio-card': true,
|
|
62
|
+
'bds-radio-card--disabled': this.disabled,
|
|
63
|
+
'bds-radio-card--checked': this.checked,
|
|
64
|
+
'bds-radio-card--error': this.isError,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
render() {
|
|
68
|
+
return (h(Host, { key: '4cdff470403b54e66ad92434ab229406d8e8ef2b', class: this.hostClasses, role: "radio", "aria-checked": `${this.checked}`, "aria-disabled": this.disabled ? 'true' : 'false', "aria-invalid": this.isError ? 'true' : 'false', tabIndex: this.disabled ? -1 : 0, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, h("div", { key: '2019eb2a3aa666c3115dfe0c9fd1fed2a18e02de', class: "bds-radio-card__container" }, h("input", { key: 'd3e47807abff5bfe0ae1d61e8cdda12d047449e5', class: "bds-radio-card__input", type: "radio", name: this.name, value: this.value, checked: this.checked, disabled: this.disabled, tabIndex: -1, onFocus: () => this.el.focus() }), h("span", { key: '091b3ad34ffc7335c07e899645ebb944e0629fe6', class: "bds-radio-card__button" }, h("span", { key: '1e717309877f85d8c8d3d635714664c997ab4097', class: "bds-radio-card__dot" })), h("div", { key: 'dfc0604e2acbb5db112e410029d057f66e23d71f', class: "bds-radio-card__content" }, h("div", { key: '8206a03a6095600fafbc70e1ce43ed85b4204441', class: "bds-radio-card__header" }, h("div", { key: 'a93dc203f940d4b03622f4896f2799d6379e3e01', class: "bds-radio-card__icon" }, h("slot", { key: 'a410dff923959aef7695fa4e72b2cb8d4a551ba1', name: "icon" })), h("div", { key: 'fb598d2bc0e231171454974041998eea8ee9c1b3', class: "bds-radio-card__title" }, this.label || h("slot", { key: '98d45578384b5132140c4ff1db0964f4f19a6faa' }))), h("bds-typography", { key: 'ff6f0f7b6d293f73b1d2beb3d1f6998889dbb868', variant: "helper" }, h("slot", { key: '73529f1e31f946f0da04334cbf65ff439b74c0d4', name: "description" })))), this.info && (h("span", { key: '7bf6f3803b50675cc9dec6256a938dfb45bbdee1', class: "bds-radio-card__info-icon", "aria-label": this.info }, h("em", { key: 'f472d256e753650c94739c0fb2218e5cf62f0543', class: "bds-icon-info-circle" }, h("bds-tooltip", { key: '3e2fe945dbe4a7b9cac470c9e497725937eaabd0' }, this.info))))));
|
|
69
|
+
}
|
|
70
|
+
get el() { return getElement(this); }
|
|
71
|
+
};
|
|
72
|
+
BdsRadioCard.style = bdsRadioCardCss();
|
|
73
|
+
|
|
74
|
+
export { BdsRadioCard as bds_radio_card };
|