bromcom-ui-next 0.1.30 → 0.1.31
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/dist/bromcom-ui/bcm-accordion-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-accordion.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-alert.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-avatar.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-badge.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-basic-badge.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-button-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-checkbox.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-chip.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-file-upload.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-radio-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-radio.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-segment.bcm-segmented-picker.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tab.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-textarea.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/global/global.js +33 -30
- package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
- package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
- package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
- package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
- package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
- package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
- package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
- package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
- package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
- package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
- package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
- package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
- package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
- package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
- package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
- package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
- package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
- package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
- package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
- package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
- package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
- package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
- package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
- package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
- package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
- package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
- package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
- package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
- package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
- package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
- package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
- package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
- package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
- package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
- package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
- package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
- package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
- package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
- package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
- package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
- package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
- package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
- package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
- package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-1507908f.entry.js → p-ccc310aa.entry.js} +2 -2
- package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
- package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
- package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
- package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
- package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
- package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
- package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
- package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
- package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-496014ca.entry.js → p-fb6f616c.entry.js} +2 -2
- package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
- package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
- package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
- package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
- package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
- package/dist/cjs/bcm-accordion-group.cjs.entry.js +20 -18
- package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js +73 -56
- package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-alert.cjs.entry.js +21 -21
- package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-avatar.cjs.entry.js +22 -12
- package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-badge.cjs.entry.js +114 -82
- package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -59
- package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-button-group.cjs.entry.js +36 -24
- package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-button.cjs.entry.js +338 -0
- package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -174
- package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-chip.cjs.entry.js +38 -35
- package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-divider.cjs.entry.js +55 -55
- package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
- package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -33
- package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-dropdown.cjs.entry.js +18 -17
- package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
- package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-input.cjs.entry.js +250 -158
- package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-linked.cjs.entry.js +452 -0
- package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
- package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-pop-confirm.cjs.entry.js +381 -0
- package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-popover.cjs.entry.js +451 -0
- package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -80
- package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-radio.cjs.entry.js +239 -106
- package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
- package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -4
- package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-switch.cjs.entry.js +281 -148
- package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
- package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-tabs.cjs.entry.js +191 -237
- package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-text.cjs.entry.js +86 -85
- package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-textarea.cjs.entry.js +224 -154
- package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tooltip.cjs.entry.js +414 -0
- package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -0
- package/dist/cjs/bromcom-ui.cjs.js +2 -2
- package/dist/cjs/floating-ui.dom-S9nP6zZt.js +1622 -0
- package/dist/{bromcom-ui/floating-ui.dom-ltNPqX34.js.map → cjs/floating-ui.dom-S9nP6zZt.js.map} +1 -1
- package/dist/cjs/{index-CmYzUr-k.js → index-1Qal-onT.js} +111 -33
- package/dist/cjs/index-1Qal-onT.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
- package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
- package/dist/collection/collection-manifest.json +4 -5
- package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
- package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
- package/dist/collection/components/_shared/form/base-form-control.js +115 -0
- package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
- package/dist/collection/components/accordion/accordion.component.js +72 -55
- package/dist/collection/components/accordion/accordion.component.js.map +1 -1
- package/dist/collection/components/accordion/accordion.css +1 -1
- package/dist/collection/components/accordion-group/accordion-group.component.js +20 -18
- package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
- package/dist/collection/components/alert/alert.component.js +19 -21
- package/dist/collection/components/alert/alert.component.js.map +1 -1
- package/dist/collection/components/alert/alert.css +1 -1
- package/dist/collection/components/avatar/avatar.component.js +20 -12
- package/dist/collection/components/avatar/avatar.component.js.map +1 -1
- package/dist/collection/components/avatar/avatar.css +1 -1
- package/dist/collection/components/badge/badge.component.js +111 -81
- package/dist/collection/components/badge/badge.component.js.map +1 -1
- package/dist/collection/components/badge/badge.css +1 -1
- package/dist/collection/components/basic-badge/basic-badge.component.js +70 -58
- package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
- package/dist/collection/components/basic-badge/basic-badge.css +1 -1
- package/dist/collection/components/button/button.component.js +105 -84
- package/dist/collection/components/button/button.component.js.map +1 -1
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/button-group/button-group.component.js +34 -23
- package/dist/collection/components/button-group/button-group.component.js.map +1 -1
- package/dist/collection/components/button-group/button-group.css +1 -1
- package/dist/collection/components/checkbox/checkbox.component.js +355 -236
- package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/chip/chip.component.js +35 -34
- package/dist/collection/components/chip/chip.component.js.map +1 -1
- package/dist/collection/components/chip/chip.css +1 -1
- package/dist/collection/components/divider/divider.component.js +53 -55
- package/dist/collection/components/divider/divider.component.js.map +1 -1
- package/dist/collection/components/drawer/drawer.component.js +168 -144
- package/dist/collection/components/drawer/drawer.component.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.component.js +16 -16
- package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.component.js +34 -32
- package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
- package/dist/collection/components/input/input.component.js +241 -155
- package/dist/collection/components/input/input.component.js.map +1 -1
- package/dist/collection/components/linked/linked.component.js +160 -138
- package/dist/collection/components/linked/linked.component.js.map +1 -1
- package/dist/collection/components/linked/linked.css +1 -1
- package/dist/collection/components/modal/modal.component.js +180 -156
- package/dist/collection/components/modal/modal.component.js.map +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.component.js +190 -159
- package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
- package/dist/collection/components/popover/popover.component.js +240 -212
- package/dist/collection/components/popover/popover.component.js.map +1 -1
- package/dist/collection/components/popover/popover.css +1 -1
- package/dist/collection/components/radio/radio.component.js +282 -106
- package/dist/collection/components/radio/radio.component.js.map +1 -1
- package/dist/collection/components/radio-group/radio-group.component.js +102 -80
- package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
- package/dist/collection/components/segmented-picker/segment.component.js +228 -0
- package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
- package/dist/collection/components/segmented-picker/segment.css +1 -0
- package/dist/collection/components/segmented-picker/segmented-picker.component.js +354 -139
- package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
- package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
- package/dist/collection/components/shortcut/shortcut.js +4 -5
- package/dist/collection/components/shortcut/shortcut.js.map +1 -1
- package/dist/collection/components/switch/switch.component.js +350 -280
- package/dist/collection/components/switch/switch.component.js.map +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/tabs/bcm-tab.css +1 -0
- package/dist/collection/components/tabs/bcm-tabs.css +1 -1
- package/dist/collection/components/tabs/tab.component.js +169 -0
- package/dist/collection/components/tabs/tab.component.js.map +1 -0
- package/dist/collection/components/tabs/tabs.component.js +221 -352
- package/dist/collection/components/tabs/tabs.component.js.map +1 -1
- package/dist/collection/components/text/text.component.js +84 -85
- package/dist/collection/components/text/text.component.js.map +1 -1
- package/dist/collection/components/text/text.css +1 -1
- package/dist/collection/components/textarea/textarea.component.js +216 -153
- package/dist/collection/components/textarea/textarea.component.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.component.js +164 -154
- package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
- package/dist/collection/components/upload/file-upload.component.js +905 -0
- package/dist/collection/components/upload/file-upload.component.js.map +1 -0
- package/dist/collection/components/upload/file-upload.css +1 -0
- package/dist/collection/global/global.js +33 -30
- package/dist/collection/utils/i18n.js +3 -4
- package/dist/collection/utils/i18n.js.map +1 -1
- package/dist/collection/utils/slot/check-slot-content.js +1 -2
- package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
- package/dist/collection/utils/validation-messages.js +1 -1
- package/dist/collection/utils/validation-messages.js.map +1 -1
- package/dist/components/bcm-accordion-group.js +19 -17
- package/dist/components/bcm-accordion-group.js.map +1 -1
- package/dist/components/bcm-accordion.js +72 -55
- package/dist/components/bcm-accordion.js.map +1 -1
- package/dist/components/bcm-alert.js +1 -114
- package/dist/components/bcm-alert.js.map +1 -1
- package/dist/components/bcm-avatar.js +22 -12
- package/dist/components/bcm-avatar.js.map +1 -1
- package/dist/components/bcm-badge.js +1 -1
- package/dist/components/bcm-basic-badge.js +72 -58
- package/dist/components/bcm-basic-badge.js.map +1 -1
- package/dist/components/bcm-button-group.js +35 -23
- package/dist/components/bcm-button-group.js.map +1 -1
- package/dist/components/bcm-button.js +1 -1
- package/dist/components/bcm-checkbox.js +296 -184
- package/dist/components/bcm-checkbox.js.map +1 -1
- package/dist/components/bcm-chip.js +37 -34
- package/dist/components/bcm-chip.js.map +1 -1
- package/dist/components/bcm-divider.js +54 -54
- package/dist/components/bcm-divider.js.map +1 -1
- package/dist/components/bcm-drawer.js +169 -144
- package/dist/components/bcm-drawer.js.map +1 -1
- package/dist/components/bcm-dropdown-item.js +35 -32
- package/dist/components/bcm-dropdown-item.js.map +1 -1
- package/dist/components/bcm-dropdown.js +19 -18
- package/dist/components/bcm-dropdown.js.map +1 -1
- package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
- package/dist/components/bcm-file-upload.js +593 -0
- package/dist/components/bcm-file-upload.js.map +1 -0
- package/dist/components/bcm-input.js +244 -158
- package/dist/components/bcm-input.js.map +1 -1
- package/dist/components/bcm-linked.js +1 -1
- package/dist/components/bcm-modal.js +181 -156
- package/dist/components/bcm-modal.js.map +1 -1
- package/dist/components/bcm-pop-confirm.js +192 -160
- package/dist/components/bcm-pop-confirm.js.map +1 -1
- package/dist/components/bcm-popover.js +242 -213
- package/dist/components/bcm-popover.js.map +1 -1
- package/dist/components/bcm-radio-group.js +102 -79
- package/dist/components/bcm-radio-group.js.map +1 -1
- package/dist/components/bcm-radio.js +241 -108
- package/dist/components/bcm-radio.js.map +1 -1
- package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
- package/dist/components/bcm-segment.js +110 -0
- package/dist/components/bcm-segment.js.map +1 -0
- package/dist/components/bcm-segmented-picker.js +234 -115
- package/dist/components/bcm-segmented-picker.js.map +1 -1
- package/dist/components/bcm-shortcut.js +4 -3
- package/dist/components/bcm-shortcut.js.map +1 -1
- package/dist/components/bcm-switch.js +292 -156
- package/dist/components/bcm-switch.js.map +1 -1
- package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
- package/dist/components/bcm-tab.js +71 -0
- package/dist/components/bcm-tab.js.map +1 -0
- package/dist/components/bcm-tabs.js +196 -247
- package/dist/components/bcm-tabs.js.map +1 -1
- package/dist/components/bcm-text.js +85 -84
- package/dist/components/bcm-text.js.map +1 -1
- package/dist/components/bcm-textarea.js +218 -154
- package/dist/components/bcm-textarea.js.map +1 -1
- package/dist/components/bcm-tooltip.js +164 -153
- package/dist/components/bcm-tooltip.js.map +1 -1
- package/dist/components/index.js +105 -32
- package/dist/components/index.js.map +1 -1
- package/dist/components/p-5_TgtzQU.js +119 -0
- package/dist/components/p-5_TgtzQU.js.map +1 -0
- package/dist/components/p-RlBWOSgL.js +179 -0
- package/dist/components/p-RlBWOSgL.js.map +1 -0
- package/dist/components/p-SERXqWcS.js +51 -0
- package/dist/components/p-SERXqWcS.js.map +1 -0
- package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
- package/dist/components/p-nf_HKsGq.js.map +1 -0
- package/dist/components/{p-CsIBm0J5.js → p-xQIzBLsS.js} +108 -85
- package/dist/components/p-xQIzBLsS.js.map +1 -0
- package/dist/components/{p-6VLsKZvR.js → p-z9ESseGb.js} +163 -140
- package/dist/components/p-z9ESseGb.js.map +1 -0
- package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
- package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
- package/dist/esm/bcm-accordion-group.entry.js +20 -18
- package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
- package/dist/esm/bcm-accordion.entry.js +73 -56
- package/dist/esm/bcm-accordion.entry.js.map +1 -1
- package/dist/esm/bcm-alert.entry.js +21 -21
- package/dist/esm/bcm-alert.entry.js.map +1 -1
- package/dist/esm/bcm-avatar.entry.js +22 -12
- package/dist/esm/bcm-avatar.entry.js.map +1 -1
- package/dist/esm/bcm-badge.entry.js +114 -82
- package/dist/esm/bcm-badge.entry.js.map +1 -1
- package/dist/esm/bcm-basic-badge.entry.js +73 -59
- package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
- package/dist/esm/bcm-button-group.entry.js +36 -24
- package/dist/esm/bcm-button-group.entry.js.map +1 -1
- package/dist/esm/bcm-button.entry.js +336 -0
- package/dist/esm/bcm-button.entry.js.map +1 -0
- package/dist/esm/bcm-checkbox.entry.js +284 -174
- package/dist/esm/bcm-checkbox.entry.js.map +1 -1
- package/dist/esm/bcm-chip.entry.js +38 -35
- package/dist/esm/bcm-chip.entry.js.map +1 -1
- package/dist/esm/bcm-divider.entry.js +55 -55
- package/dist/esm/bcm-divider.entry.js.map +1 -1
- package/dist/esm/bcm-drawer.entry.js +330 -0
- package/dist/esm/bcm-drawer.entry.js.map +1 -0
- package/dist/esm/bcm-dropdown-item.entry.js +36 -33
- package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
- package/dist/esm/bcm-dropdown.entry.js +18 -17
- package/dist/esm/bcm-dropdown.entry.js.map +1 -1
- package/dist/esm/bcm-file-upload.entry.js +550 -0
- package/dist/esm/bcm-file-upload.entry.js.map +1 -0
- package/dist/esm/bcm-input.entry.js +250 -158
- package/dist/esm/bcm-input.entry.js.map +1 -1
- package/dist/esm/bcm-linked.entry.js +450 -0
- package/dist/esm/bcm-linked.entry.js.map +1 -0
- package/dist/esm/bcm-modal.entry.js +358 -0
- package/dist/esm/bcm-modal.entry.js.map +1 -0
- package/dist/esm/bcm-pop-confirm.entry.js +379 -0
- package/dist/esm/bcm-pop-confirm.entry.js.map +1 -0
- package/dist/esm/bcm-popover.entry.js +449 -0
- package/dist/esm/bcm-popover.entry.js.map +1 -0
- package/dist/esm/bcm-radio-group.entry.js +103 -80
- package/dist/esm/bcm-radio-group.entry.js.map +1 -1
- package/dist/esm/bcm-radio.entry.js +239 -106
- package/dist/esm/bcm-radio.entry.js.map +1 -1
- package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
- package/dist/esm/bcm-segment_2.entry.js +332 -0
- package/dist/esm/bcm-shortcut.entry.js +5 -4
- package/dist/esm/bcm-shortcut.entry.js.map +1 -1
- package/dist/esm/bcm-switch.entry.js +281 -148
- package/dist/esm/bcm-switch.entry.js.map +1 -1
- package/dist/esm/bcm-tab.entry.js +42 -0
- package/dist/esm/bcm-tab.entry.js.map +1 -0
- package/dist/esm/bcm-tabs.entry.js +191 -237
- package/dist/esm/bcm-tabs.entry.js.map +1 -1
- package/dist/esm/bcm-text.entry.js +86 -85
- package/dist/esm/bcm-text.entry.js.map +1 -1
- package/dist/esm/bcm-textarea.entry.js +224 -154
- package/dist/esm/bcm-textarea.entry.js.map +1 -1
- package/dist/esm/bcm-tooltip.entry.js +412 -0
- package/dist/esm/bcm-tooltip.entry.js.map +1 -0
- package/dist/esm/bromcom-ui.js +3 -3
- package/dist/esm/floating-ui.dom-DBDSgIvP.js +1615 -0
- package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
- package/dist/esm/{index-CRwAh9Np.js → index-B6Ppbs5O.js} +111 -34
- package/dist/esm/index-B6Ppbs5O.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
- package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
- package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
- package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
- package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
- package/dist/types/components/input/input.component.d.ts +5 -0
- package/dist/types/components/radio/radio.component.d.ts +21 -0
- package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
- package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
- package/dist/types/components/switch/switch.component.d.ts +83 -43
- package/dist/types/components/tabs/tab.component.d.ts +33 -0
- package/dist/types/components/tabs/tabs.component.d.ts +51 -64
- package/dist/types/components/textarea/textarea.component.d.ts +5 -0
- package/dist/types/components/upload/file-upload.component.d.ts +107 -0
- package/dist/types/components.d.ts +830 -382
- package/package.json +2 -2
- package/dist/bromcom-ui/_commonjsHelpers-CvGrISen.js.map +0 -1
- package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/generate-id-Crb5QsB-.js.map +0 -1
- package/dist/bromcom-ui/index-40rmUZjU.js.map +0 -1
- package/dist/bromcom-ui/index-BCaJmHBB.js.map +0 -1
- package/dist/bromcom-ui/p-0c7c6896.entry.js +0 -2
- package/dist/bromcom-ui/p-0c7c6896.entry.js.map +0 -1
- package/dist/bromcom-ui/p-11d0e649.entry.js +0 -2
- package/dist/bromcom-ui/p-11d0e649.entry.js.map +0 -1
- package/dist/bromcom-ui/p-12f38632.entry.js +0 -2
- package/dist/bromcom-ui/p-12f38632.entry.js.map +0 -1
- package/dist/bromcom-ui/p-13cbd1f5.entry.js +0 -2
- package/dist/bromcom-ui/p-13cbd1f5.entry.js.map +0 -1
- package/dist/bromcom-ui/p-1507908f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-1ce9913f.entry.js +0 -2
- package/dist/bromcom-ui/p-1ce9913f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-206d767e.entry.js +0 -2
- package/dist/bromcom-ui/p-206d767e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-3cf7a7f4.entry.js +0 -2
- package/dist/bromcom-ui/p-3cf7a7f4.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4505feba.entry.js +0 -2
- package/dist/bromcom-ui/p-4505feba.entry.js.map +0 -1
- package/dist/bromcom-ui/p-496014ca.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4a932cd3.entry.js +0 -2
- package/dist/bromcom-ui/p-4a932cd3.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4e554b8d.entry.js +0 -2
- package/dist/bromcom-ui/p-4e554b8d.entry.js.map +0 -1
- package/dist/bromcom-ui/p-57c4c4c4.entry.js +0 -2
- package/dist/bromcom-ui/p-57c4c4c4.entry.js.map +0 -1
- package/dist/bromcom-ui/p-61293ab2.entry.js +0 -2
- package/dist/bromcom-ui/p-61293ab2.entry.js.map +0 -1
- package/dist/bromcom-ui/p-61789456.entry.js +0 -2
- package/dist/bromcom-ui/p-61789456.entry.js.map +0 -1
- package/dist/bromcom-ui/p-65d0f188.entry.js +0 -2
- package/dist/bromcom-ui/p-65d0f188.entry.js.map +0 -1
- package/dist/bromcom-ui/p-83f707dc.entry.js +0 -2
- package/dist/bromcom-ui/p-83f707dc.entry.js.map +0 -1
- package/dist/bromcom-ui/p-8ba02e7e.entry.js +0 -2
- package/dist/bromcom-ui/p-8ba02e7e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-9e9bf32e.entry.js +0 -2
- package/dist/bromcom-ui/p-9e9bf32e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-CRwAh9Np.js +0 -3
- package/dist/bromcom-ui/p-CRwAh9Np.js.map +0 -1
- package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
- package/dist/bromcom-ui/p-c87a6acf.entry.js +0 -2
- package/dist/bromcom-ui/p-c87a6acf.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e0e235a8.entry.js +0 -2
- package/dist/bromcom-ui/p-e0e235a8.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e1ce8b55.entry.js +0 -2
- package/dist/bromcom-ui/p-e1ce8b55.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e4dddb0b.entry.js +0 -2
- package/dist/bromcom-ui/p-e4dddb0b.entry.js.map +0 -1
- package/dist/bromcom-ui/p-f9426924.entry.js +0 -2
- package/dist/bromcom-ui/p-f9426924.entry.js.map +0 -1
- package/dist/bromcom-ui/p-faa0e62c.entry.js +0 -2
- package/dist/bromcom-ui/p-faa0e62c.entry.js.map +0 -1
- package/dist/bromcom-ui/p-fcb4399f.entry.js +0 -2
- package/dist/bromcom-ui/p-fcb4399f.entry.js.map +0 -1
- package/dist/bromcom-ui/tv-SlGJ5EfR.js.map +0 -1
- package/dist/bromcom-ui/validation-messages-CUvT12BL.js.map +0 -1
- package/dist/cjs/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-button_7.cjs.entry.js +0 -4131
- package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -105
- package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -142
- package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -18
- package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -82
- package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -120
- package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
- package/dist/cjs/index-CmYzUr-k.js.map +0 -1
- package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
- package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
- package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
- package/dist/collection/components/tabs/tabs-content.component.js +0 -46
- package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-content.css +0 -1
- package/dist/collection/components/tabs/tabs-list.component.js +0 -133
- package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-list.css +0 -1
- package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
- package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-trigger.css +0 -1
- package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
- package/dist/components/bcm-segmented-picker-option.js +0 -133
- package/dist/components/bcm-segmented-picker-option.js.map +0 -1
- package/dist/components/bcm-tabs-content.js +0 -41
- package/dist/components/bcm-tabs-content.js.map +0 -1
- package/dist/components/bcm-tabs-list.js +0 -106
- package/dist/components/bcm-tabs-list.js.map +0 -1
- package/dist/components/bcm-tabs-trigger.js +0 -148
- package/dist/components/bcm-tabs-trigger.js.map +0 -1
- package/dist/components/p-6VLsKZvR.js.map +0 -1
- package/dist/components/p-CUvT12BL.js.map +0 -1
- package/dist/components/p-CaemikSK.js +0 -147
- package/dist/components/p-CaemikSK.js.map +0 -1
- package/dist/components/p-CsIBm0J5.js.map +0 -1
- package/dist/esm/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.js.map +0 -1
- package/dist/esm/bcm-button_7.entry.js +0 -4123
- package/dist/esm/bcm-segmented-picker-option.entry.js +0 -103
- package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
- package/dist/esm/bcm-segmented-picker.entry.js +0 -140
- package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-content.entry.js +0 -16
- package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-list.entry.js +0 -80
- package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-trigger.entry.js +0 -118
- package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
- package/dist/esm/index-CRwAh9Np.js.map +0 -1
- package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
- package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
- package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
- package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
|
@@ -1,186 +1,210 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-1Qal-onT.js');
|
|
4
4
|
var tv = require('./tv-ngpIbGlG.js');
|
|
5
5
|
var generateId = require('./generate-id-CG_BkTJu.js');
|
|
6
|
+
var baseChoiceControl = require('./base-choice-control-EmA4JRjR.js');
|
|
6
7
|
|
|
7
|
-
const checkboxCss = ".relative{position:relative}.block{display:block}:host{align-self:center;display:block;height:-moz-fit-content;height:fit-content;position:relative;width:-moz-fit-content;width:fit-content}:host([full-width]){width:100%}.
|
|
8
|
+
const checkboxCss = ".relative{position:relative}.block{display:block}:host{align-self:center;display:block;height:-moz-fit-content;height:fit-content;position:relative;width:-moz-fit-content;width:fit-content}:host([full-width]){width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.static{position:static}.mt-1{margin-top:.25rem}.flex{display:flex}.inline-flex{display:inline-flex}.size-2{height:.5rem;width:.5rem}.size-3{height:.75rem;width:.75rem}.size-4{height:1rem;width:1rem}.size-\\[10px\\]{height:10px;width:10px}.size-\\[18px\\]{height:18px;width:18px}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.rounded-sm{border-radius:var(--bcm-ui-border-radius-sm,4px)}.border{border-width:1px}.border-solid{border-style:solid}.border-\\[--border-color\\]{border-color:var(--border-color)}.bg-\\[--unchecked-color\\]{background-color:var(--unchecked-color)}.text-size-2{font-size:var(--bcm-ui-font-size-2,10px);line-height:var(--bcm-ui-line-height-2,12px)}.text-size-3{font-size:var(--bcm-ui-font-size-3,12px);line-height:var(--bcm-ui-line-height-3,16px)}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-normal{font-weight:400}.text-color-base{color:var(--bcm-ui-color-text-base)}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-error{color:var(--bcm-ui-color-text-error)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\\:border-\\[--border-color\\]:hover{border-color:var(--border-color)}.hover\\:border-\\[--hover-border-color\\]:hover{border-color:var(--hover-border-color)}.hover\\:bg-\\[--unchecked-color\\]:hover{background-color:var(--unchecked-color)}.peer:checked~.peer-checked\\:border-\\[--checked-color\\]{border-color:var(--checked-color)}.peer:checked~.peer-checked\\:bg-\\[--checked-color\\]{background-color:var(--checked-color)}.peer:checked~.hover\\:peer-checked\\:bg-\\[--hover-color\\]:hover{background-color:var(--hover-color)}.peer:indeterminate~.peer-indeterminate\\:border-\\[--checked-color\\]{border-color:var(--checked-color)}.peer:indeterminate~.peer-indeterminate\\:bg-\\[--checked-color\\]{background-color:var(--checked-color)}.peer:indeterminate~.hover\\:peer-indeterminate\\:bg-\\[--hover-color\\]:hover{background-color:var(--hover-color)}";
|
|
8
9
|
|
|
9
|
-
const Checkbox = class {
|
|
10
|
+
const Checkbox = class extends baseChoiceControl.BaseChoiceControl {
|
|
10
11
|
constructor(hostRef) {
|
|
12
|
+
super();
|
|
11
13
|
index.registerInstance(this, hostRef);
|
|
12
14
|
this.bcmCheckboxChange = index.createEvent(this, "bcmCheckboxChange", 1);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
21
|
-
this.indeterminate = false;
|
|
22
|
-
/**
|
|
23
|
-
* Size variant of the checkbox
|
|
24
|
-
*/
|
|
25
|
-
this.size = 'medium';
|
|
26
|
-
/**
|
|
27
|
-
* Determines if the checkbox is checked
|
|
28
|
-
*/
|
|
29
|
-
this.checked = false;
|
|
30
|
-
/**
|
|
31
|
-
* Indicates if the checkbox is in an error state.
|
|
32
|
-
* This affects the visual styling of the component.
|
|
33
|
-
*/
|
|
34
|
-
this.error = false;
|
|
35
|
-
/**
|
|
36
|
-
* Determines if the checkbox is disabled
|
|
37
|
-
*/
|
|
38
|
-
this.disabled = false;
|
|
39
|
-
/**
|
|
40
|
-
* Controls the position of the label relative to the checkbox
|
|
41
|
-
*/
|
|
42
|
-
this.labelPosition = 'right';
|
|
43
|
-
/**
|
|
44
|
-
* Full width checkbox
|
|
45
|
-
*/
|
|
46
|
-
this.fullWidth = false;
|
|
47
|
-
/**
|
|
48
|
-
* Handles change events on the checkbox
|
|
49
|
-
* Updates state and emits the change event
|
|
50
|
-
*/
|
|
51
|
-
this.handleChange = () => {
|
|
52
|
-
if (this.disabled)
|
|
53
|
-
return;
|
|
54
|
-
if (this.inputElement) {
|
|
55
|
-
this.inputElement.indeterminate = false;
|
|
56
|
-
this.indeterminate = false;
|
|
57
|
-
this.internalChecked = !this.internalChecked;
|
|
58
|
-
this.inputElement.checked = this.internalChecked;
|
|
59
|
-
this.bcmCheckboxChange.emit({
|
|
60
|
-
element: this.inputElement,
|
|
61
|
-
checked: this.internalChecked,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Tailwind Variants definition for the component
|
|
67
|
-
* Configures styling based on component props
|
|
68
|
-
*/
|
|
69
|
-
this.classes = tv.tv({
|
|
70
|
-
slots: {
|
|
71
|
-
container: 'flex items-center bcm-ui-element bcm-checkbox',
|
|
72
|
-
checkbox: [
|
|
73
|
-
'flex items-center justify-center rounded-sm',
|
|
74
|
-
'border border-solid border-[--border-color]',
|
|
75
|
-
'bg-[--unchecked-color]',
|
|
76
|
-
'transition-colors duration-200 ease-out',
|
|
77
|
-
'peer-checked:bg-[--checked-color]',
|
|
78
|
-
'peer-checked:border-[--checked-color]',
|
|
79
|
-
'peer-indeterminate:bg-[--checked-color]',
|
|
80
|
-
'peer-indeterminate:border-[--checked-color]',
|
|
81
|
-
'hover:border-[--hover-border-color]',
|
|
82
|
-
'hover:peer-checked:bg-[--hover-color]',
|
|
83
|
-
'hover:peer-indeterminate:bg-[--hover-color]',
|
|
84
|
-
],
|
|
85
|
-
iconContainer: 'flex items-center justify-center',
|
|
86
|
-
label: 'select-none text-color',
|
|
87
|
-
hiddenInput: 'absolute w-0 h-0 opacity-0 peer',
|
|
88
|
-
},
|
|
89
|
-
variants: {
|
|
90
|
-
size: {
|
|
91
|
-
small: {
|
|
92
|
-
container: 'gap-2',
|
|
93
|
-
checkbox: 'size-3',
|
|
94
|
-
iconContainer: 'size-2 text-size-2',
|
|
95
|
-
label: 'text-size-4',
|
|
96
|
-
hiddenInput: 'size-3',
|
|
97
|
-
},
|
|
98
|
-
medium: {
|
|
99
|
-
container: 'gap-2.5',
|
|
100
|
-
checkbox: 'size-4',
|
|
101
|
-
iconContainer: 'size-[10px] text-size-3',
|
|
102
|
-
label: 'text-size-5',
|
|
103
|
-
hiddenInput: 'size-4',
|
|
104
|
-
},
|
|
105
|
-
large: {
|
|
106
|
-
container: 'gap-3',
|
|
107
|
-
checkbox: 'size-[18px]',
|
|
108
|
-
iconContainer: 'size-4 text-size-4',
|
|
109
|
-
label: 'text-size-6',
|
|
110
|
-
hiddenInput: 'size-[18px]',
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
|
-
disabled: {
|
|
114
|
-
true: {
|
|
115
|
-
container: 'cursor-not-allowed',
|
|
116
|
-
checkbox: 'cursor-not-allowed hover:border-[--border-color] hover:bg-[--unchecked-color]',
|
|
117
|
-
label: 'cursor-not-allowed text-color-disabled',
|
|
118
|
-
iconContainer: 'text-color-disabled',
|
|
119
|
-
hiddenInput: 'cursor-not-allowed',
|
|
120
|
-
},
|
|
121
|
-
false: {
|
|
122
|
-
container: 'cursor-pointer',
|
|
123
|
-
checkbox: 'cursor-pointer',
|
|
124
|
-
label: 'cursor-pointer text-color',
|
|
125
|
-
iconContainer: 'text-color-base',
|
|
126
|
-
hiddenInput: 'cursor-pointer',
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
labelPosition: {
|
|
130
|
-
left: {
|
|
131
|
-
container: 'flex-row-reverse',
|
|
132
|
-
},
|
|
133
|
-
right: {
|
|
134
|
-
container: 'flex-row',
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
defaultVariants: {
|
|
139
|
-
size: 'medium',
|
|
140
|
-
checked: false,
|
|
141
|
-
disabled: false,
|
|
142
|
-
error: false,
|
|
143
|
-
labelPosition: 'right',
|
|
144
|
-
},
|
|
145
|
-
}, { twMerge: false });
|
|
15
|
+
if (hostRef.$hostElement$["s-ei"]) {
|
|
16
|
+
this.internals = hostRef.$hostElement$["s-ei"];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.internals = hostRef.$hostElement$.attachInternals();
|
|
20
|
+
hostRef.$hostElement$["s-ei"] = this.internals;
|
|
21
|
+
}
|
|
146
22
|
}
|
|
23
|
+
get el() { return index.getElement(this); }
|
|
24
|
+
/** Form-associated internals (ElementInternals API) */
|
|
25
|
+
internals;
|
|
147
26
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
27
|
+
* Unique ID for the component. Automatically generated if not specified.
|
|
28
|
+
* Used to bind the visible label to the internal input.
|
|
150
29
|
*/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
30
|
+
_id = generateId.generateId('bcm-checkbox');
|
|
31
|
+
/** Visible label text (optional). You can also use the default slot. */
|
|
32
|
+
label;
|
|
154
33
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
34
|
+
* Indeterminate (mixed) state.
|
|
35
|
+
* Useful when a group selection is partially selected.
|
|
157
36
|
*/
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
37
|
+
indeterminate = false;
|
|
38
|
+
/** Size variant (affects control + typography). */
|
|
39
|
+
size = 'medium';
|
|
161
40
|
/**
|
|
162
|
-
*
|
|
163
|
-
*
|
|
41
|
+
* Visual error state.
|
|
42
|
+
* - In `silent` mode this can be managed internally.
|
|
43
|
+
* - In other modes you can set it externally as well.
|
|
164
44
|
*/
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
45
|
+
error = false;
|
|
46
|
+
/** Helper / error caption (silent mode UI) */
|
|
47
|
+
caption;
|
|
48
|
+
/** Label position relative to the checkbox control. */
|
|
49
|
+
labelPosition = 'right';
|
|
50
|
+
/** Makes checkbox occupy full width (if your styles support it). */
|
|
51
|
+
fullWidth = false;
|
|
170
52
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
53
|
+
* Mirror state used to keep the native input synced.
|
|
54
|
+
* `checked` is owned by BaseChoiceControl.
|
|
173
55
|
*/
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
56
|
+
internalChecked = false;
|
|
57
|
+
/** Gate for silent-mode UI */
|
|
58
|
+
touched = false;
|
|
59
|
+
/** Gate for silent-mode UI */
|
|
60
|
+
submitAttempted = false;
|
|
61
|
+
/** Fired whenever the checked state changes. */
|
|
62
|
+
bcmCheckboxChange;
|
|
63
|
+
/** Reference to the underlying native input. */
|
|
64
|
+
inputElement;
|
|
65
|
+
// --------------------------------------------------
|
|
66
|
+
// Lifecycle
|
|
67
|
+
// --------------------------------------------------
|
|
68
|
+
componentWillLoad() {
|
|
69
|
+
this.internalChecked = this.checked;
|
|
70
|
+
// don't show UI errors on initial render
|
|
71
|
+
this.updateFormValueAndValidity({ setUi: false });
|
|
72
|
+
}
|
|
73
|
+
componentDidLoad() {
|
|
74
|
+
this.syncNativeInput();
|
|
75
|
+
const form = this.internals?.form;
|
|
76
|
+
if (form) {
|
|
77
|
+
form.addEventListener('submit', this.onFormSubmit, true);
|
|
178
78
|
}
|
|
179
79
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
80
|
+
disconnectedCallback() {
|
|
81
|
+
const form = this.internals?.form;
|
|
82
|
+
if (form) {
|
|
83
|
+
form.removeEventListener('submit', this.onFormSubmit, true);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
onFormSubmit = () => {
|
|
87
|
+
this.submitAttempted = true;
|
|
88
|
+
this.updateFormValueAndValidity({ setUi: true });
|
|
89
|
+
};
|
|
90
|
+
formResetCallback() {
|
|
91
|
+
super.formResetCallback();
|
|
92
|
+
this.internalChecked = false;
|
|
93
|
+
this.indeterminate = false;
|
|
94
|
+
// reset gating
|
|
95
|
+
this.touched = false;
|
|
96
|
+
this.submitAttempted = false;
|
|
97
|
+
// reset UI
|
|
98
|
+
this.error = false;
|
|
99
|
+
this.caption = undefined;
|
|
100
|
+
this.syncNativeInput();
|
|
101
|
+
this.updateFormValueAndValidity({ setUi: false });
|
|
102
|
+
}
|
|
103
|
+
// --------------------------------------------------
|
|
104
|
+
// Watchers
|
|
105
|
+
// --------------------------------------------------
|
|
106
|
+
syncFromBase(newValue) {
|
|
107
|
+
this.internalChecked = newValue;
|
|
108
|
+
this.indeterminate = false;
|
|
109
|
+
this.syncNativeInput();
|
|
110
|
+
}
|
|
111
|
+
/** Keep native input in sync when indeterminate changes. */
|
|
112
|
+
onIndeterminateChange() {
|
|
113
|
+
this.syncNativeInput();
|
|
114
|
+
}
|
|
115
|
+
// --------------------------------------------------
|
|
116
|
+
// Native input syncing
|
|
117
|
+
// --------------------------------------------------
|
|
118
|
+
syncNativeInput() {
|
|
119
|
+
if (!this.inputElement)
|
|
120
|
+
return;
|
|
121
|
+
this.inputElement.checked = this.internalChecked;
|
|
122
|
+
this.inputElement.indeterminate = this.indeterminate && !this.internalChecked;
|
|
123
|
+
this.inputElement.disabled = this.disabled;
|
|
124
|
+
// ✅ prevent native bubble in silent/none:
|
|
125
|
+
// only native mode applies native "required"
|
|
126
|
+
this.inputElement.required = this.validationMode === 'native' && this.required;
|
|
127
|
+
}
|
|
128
|
+
// --------------------------------------------------
|
|
129
|
+
// Form internals integration
|
|
130
|
+
// --------------------------------------------------
|
|
131
|
+
updateFormValueAndValidity(opts) {
|
|
132
|
+
const setUi = opts?.setUi ?? true;
|
|
133
|
+
if (!this.internals)
|
|
134
|
+
return;
|
|
135
|
+
// Disabled -> no value, no validity, no UI errors
|
|
136
|
+
if (this.disabled) {
|
|
137
|
+
this.internals.setFormValue(null);
|
|
138
|
+
this.internals.setValidity({});
|
|
139
|
+
if (setUi) {
|
|
140
|
+
this.error = false;
|
|
141
|
+
this.caption = undefined;
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Always set submitted value (even if validation is off)
|
|
146
|
+
const formValue = this.checked ? this.value ?? 'on' : null;
|
|
147
|
+
this.internals.setFormValue(formValue);
|
|
148
|
+
// none -> never invalid
|
|
149
|
+
if (this.validationMode === 'none') {
|
|
150
|
+
this.internals.setValidity({});
|
|
151
|
+
if (setUi) {
|
|
152
|
+
this.error = false;
|
|
153
|
+
this.caption = undefined;
|
|
154
|
+
}
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const isMissing = this.required && !this.checked;
|
|
158
|
+
// silent -> no validity, only gated UI
|
|
159
|
+
if (this.validationMode === 'silent') {
|
|
160
|
+
this.internals.setValidity({});
|
|
161
|
+
if (setUi) {
|
|
162
|
+
const shouldShow = this.touched || this.submitAttempted;
|
|
163
|
+
this.error = shouldShow && isMissing;
|
|
164
|
+
this.caption = shouldShow && isMissing ? 'This field is required' : undefined;
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// native -> real validity participation
|
|
169
|
+
if (isMissing) {
|
|
170
|
+
this.internals.setValidity({ valueMissing: true }, 'This field is required', this.inputElement ?? undefined);
|
|
171
|
+
// native mode uses browser UI; don't double-show component UI
|
|
172
|
+
if (setUi) {
|
|
173
|
+
this.error = false;
|
|
174
|
+
this.caption = undefined;
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this.internals.setValidity({});
|
|
179
|
+
if (setUi) {
|
|
180
|
+
this.error = false;
|
|
181
|
+
this.caption = undefined;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// --------------------------------------------------
|
|
185
|
+
// Interaction
|
|
186
|
+
// --------------------------------------------------
|
|
187
|
+
handleChange = () => {
|
|
188
|
+
if (this.disabled)
|
|
189
|
+
return;
|
|
190
|
+
if (!this.touched)
|
|
191
|
+
this.touched = true;
|
|
192
|
+
// toggling clears indeterminate
|
|
193
|
+
this.indeterminate = false;
|
|
194
|
+
// toggle comes from BaseChoiceControl
|
|
195
|
+
this.toggleChecked();
|
|
196
|
+
// keep internal mirror in sync (base updates `checked`)
|
|
197
|
+
this.internalChecked = !!this.checked;
|
|
198
|
+
this.syncNativeInput();
|
|
199
|
+
this.updateFormValueAndValidity({ setUi: true });
|
|
200
|
+
this.bcmCheckboxChange.emit({
|
|
201
|
+
element: this.inputElement,
|
|
202
|
+
checked: this.checked,
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
// --------------------------------------------------
|
|
206
|
+
// Styles
|
|
207
|
+
// --------------------------------------------------
|
|
184
208
|
getStyles() {
|
|
185
209
|
const defaultStyles = {
|
|
186
210
|
'--checked-color': 'var(--bcm-ui-color-background-primary-default)',
|
|
@@ -203,21 +227,107 @@ const Checkbox = class {
|
|
|
203
227
|
'--hover-color': 'var(--bcm-ui-color-border-disabled)',
|
|
204
228
|
'--hover-border-color': 'var(--bcm-ui-color-border-disabled)',
|
|
205
229
|
};
|
|
206
|
-
return
|
|
230
|
+
return {
|
|
231
|
+
...defaultStyles,
|
|
232
|
+
...(this.error ? errorStyles : {}),
|
|
233
|
+
...(this.disabled ? disabledStyles : {}),
|
|
234
|
+
};
|
|
207
235
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
236
|
+
classes = tv.tv({
|
|
237
|
+
slots: {
|
|
238
|
+
root: 'bcm-ui-element bcm-checkbox flex flex-col',
|
|
239
|
+
row: 'flex items-center',
|
|
240
|
+
checkbox: [
|
|
241
|
+
'flex items-center justify-center rounded-sm',
|
|
242
|
+
'border border-solid border-[--border-color]',
|
|
243
|
+
'bg-[--unchecked-color]',
|
|
244
|
+
'transition-colors duration-200 ease-out',
|
|
245
|
+
'peer-checked:bg-[--checked-color]',
|
|
246
|
+
'peer-checked:border-[--checked-color]',
|
|
247
|
+
'peer-indeterminate:bg-[--checked-color]',
|
|
248
|
+
'peer-indeterminate:border-[--checked-color]',
|
|
249
|
+
'hover:border-[--hover-border-color]',
|
|
250
|
+
'hover:peer-checked:bg-[--hover-color]',
|
|
251
|
+
'hover:peer-indeterminate:bg-[--hover-color]',
|
|
252
|
+
],
|
|
253
|
+
iconContainer: 'flex items-center justify-center',
|
|
254
|
+
label: 'select-none text-color',
|
|
255
|
+
hiddenInput: 'sr-only peer',
|
|
256
|
+
caption: 'mt-1 text-color-error font-normal', // ✅ alt satır spacing
|
|
257
|
+
},
|
|
258
|
+
variants: {
|
|
259
|
+
size: {
|
|
260
|
+
small: {
|
|
261
|
+
row: 'gap-2',
|
|
262
|
+
checkbox: 'size-3',
|
|
263
|
+
iconContainer: 'size-2 text-size-2',
|
|
264
|
+
label: 'text-size-4',
|
|
265
|
+
hiddenInput: 'size-3',
|
|
266
|
+
caption: 'text-size-3',
|
|
267
|
+
},
|
|
268
|
+
medium: {
|
|
269
|
+
row: 'gap-2.5',
|
|
270
|
+
checkbox: 'size-4',
|
|
271
|
+
iconContainer: 'size-[10px] text-size-3',
|
|
272
|
+
label: 'text-size-5',
|
|
273
|
+
hiddenInput: 'size-4',
|
|
274
|
+
caption: 'text-size-4',
|
|
275
|
+
},
|
|
276
|
+
large: {
|
|
277
|
+
row: 'gap-3',
|
|
278
|
+
checkbox: 'size-[18px]',
|
|
279
|
+
iconContainer: 'size-4 text-size-4',
|
|
280
|
+
label: 'text-size-6',
|
|
281
|
+
hiddenInput: 'size-[18px]',
|
|
282
|
+
caption: 'text-size-5',
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
disabled: {
|
|
286
|
+
true: {
|
|
287
|
+
row: 'cursor-not-allowed',
|
|
288
|
+
checkbox: 'cursor-not-allowed hover:border-[--border-color] hover:bg-[--unchecked-color]',
|
|
289
|
+
label: 'cursor-not-allowed text-color-disabled',
|
|
290
|
+
iconContainer: 'text-color-disabled',
|
|
291
|
+
hiddenInput: 'cursor-not-allowed',
|
|
292
|
+
},
|
|
293
|
+
false: {
|
|
294
|
+
row: 'cursor-pointer',
|
|
295
|
+
checkbox: 'cursor-pointer',
|
|
296
|
+
label: 'cursor-pointer text-color',
|
|
297
|
+
iconContainer: 'text-color-base',
|
|
298
|
+
hiddenInput: 'cursor-pointer',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
labelPosition: {
|
|
302
|
+
left: { row: 'flex-row-reverse' },
|
|
303
|
+
right: { row: 'flex-row' },
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
defaultVariants: {
|
|
307
|
+
size: 'medium',
|
|
308
|
+
disabled: false,
|
|
309
|
+
labelPosition: 'right',
|
|
310
|
+
},
|
|
311
|
+
}, { twMerge: false });
|
|
312
|
+
// --------------------------------------------------
|
|
313
|
+
// Render
|
|
314
|
+
// --------------------------------------------------
|
|
211
315
|
render() {
|
|
212
|
-
const {
|
|
213
|
-
|
|
214
|
-
|
|
316
|
+
const { root, row, checkbox, iconContainer, label, hiddenInput, caption } = this.classes({
|
|
317
|
+
size: this.size,
|
|
318
|
+
disabled: this.disabled,
|
|
319
|
+
labelPosition: this.labelPosition,
|
|
320
|
+
});
|
|
321
|
+
const internalId = (this._id ? `${this._id}-internal-checkbox` : undefined) ?? this.name ?? 'bcm-checkbox';
|
|
322
|
+
return (index.h("div", { key: '36609b6bd5043081fba0c8ffeea3450825af123e', class: root(), style: this.getStyles(), part: "checkbox" }, index.h("div", { key: '6cf9a1dfd28851b3bf3cbaf7f40abf355b3620aa', class: row() }, index.h("div", { key: '5dc5d14d35ed1bf59916c6c3c730c3a4d20a9273', class: "relative inline-flex" }, index.h("input", { key: 'abd5d0af4e60717dbf633a7d20da7bf2ed905c38', ref: el => (this.inputElement = el), type: "checkbox", role: "checkbox", id: internalId, name: this.name, checked: this.internalChecked, indeterminate: this.indeterminate, disabled: this.disabled, class: hiddenInput(), "aria-checked": this.internalChecked ? 'true' : this.indeterminate ? 'mixed' : 'false', "aria-invalid": this.error, "aria-required": this.required, "aria-label": this.label || 'Checkbox', onChange: this.handleChange, part: "input" }), index.h("div", { key: '8d4b32f2b1ff81d31a224ae9dc1447f19f732f7a', class: checkbox(), part: "control", onClick: () => this.inputElement?.click() }, this.internalChecked && (index.h("div", { key: '87b118802cb6cab81a318b9e49ca860e38c7e488', class: iconContainer(), part: "icon" }, index.h("bcm-icon", { key: '2f8534df46ce09902a792c19573295802cc7f831', name: "fa-regular fa-check" }))), this.indeterminate && !this.internalChecked && (index.h("div", { key: 'f1b9a993d4a92ca679aba71d6f7905ed4b3d806b', class: iconContainer(), part: "icon" }, index.h("bcm-icon", { key: '1a1c4473c91dee7982abd623f135aaa644295e2a', name: "fa-regular fa-minus" }))))), index.h("label", { key: '0b0461fcc3911d25c4f158bcedcd650d6f945d8d', htmlFor: internalId, class: label(), part: "label" }, index.h("slot", { key: 'ef92208e2a217d8fc4a06b260ba5d683018383fc' }, this.label))), this.error && this.caption && (index.h("span", { key: 'fc2ee56f477eeccb2be15468c93d4a8ef2edad37', class: caption(), part: "caption" }, this.caption))));
|
|
215
323
|
}
|
|
216
|
-
get
|
|
324
|
+
static get formAssociated() { return true; }
|
|
217
325
|
static get watchers() { return {
|
|
218
|
-
"checked": ["
|
|
219
|
-
"
|
|
220
|
-
"
|
|
326
|
+
"checked": ["onStateChange", "syncFromBase"],
|
|
327
|
+
"required": ["onStateChange"],
|
|
328
|
+
"disabled": ["onStateChange"],
|
|
329
|
+
"value": ["onStateChange"],
|
|
330
|
+
"indeterminate": ["onIndeterminateChange"]
|
|
221
331
|
}; }
|
|
222
332
|
};
|
|
223
333
|
Checkbox.style = checkboxCss;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcm-checkbox.entry.cjs.js","sources":["src/components/checkbox/checkbox.css?tag=bcm-checkbox&encapsulation=shadow","src/components/checkbox/checkbox.component.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n width: fit-content;\n height: fit-content;\n align-self: center;\n}\n\n:host([full-width]) {\n width: 100%;\n}\n","import { Component, h, Prop, Element, ComponentInterface, EventEmitter, Event, Watch, State } from '@stencil/core';\nimport { tv } from '@utils/tv';\nimport { generateId } from '../../utils/id/generate-id';\n\n/**\n * @description A checkbox component that allows users to select or deselect an option.\n * It also supports an indeterminate state.\n */\n@Component({\n tag: 'bcm-checkbox',\n styleUrl: 'checkbox.css',\n shadow: true,\n})\nexport class Checkbox implements ComponentInterface {\n /** Reference to the host element */\n @Element() el: HTMLElement;\n\n /**\n * Unique ID for the component. Automatically generated if not specified.\n */\n @Prop({ attribute: 'id', reflect: true })\n _id?: string = generateId('bcm-checkbox');\n\n /**\n * Label text to display next to the checkbox\n */\n @Prop()\n label?: string;\n\n /**\n * Name attribute for the checkbox when used in a form\n */\n @Prop()\n name: string;\n\n /**\n * Determines if the checkbox is in an indeterminate state.\n * This is useful when some items in a group of checkboxes are selected and others are not.\n */\n @Prop({ mutable: true })\n indeterminate: boolean = false;\n\n /**\n * Size variant of the checkbox\n */\n @Prop()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Determines if the checkbox is checked\n */\n @Prop({ mutable: true })\n checked: boolean = false;\n\n /**\n * Indicates if the checkbox is in an error state.\n * This affects the visual styling of the component.\n */\n @Prop()\n error: boolean = false;\n\n /**\n * Determines if the checkbox is disabled\n */\n @Prop()\n disabled: boolean = false;\n\n /**\n * Controls the position of the label relative to the checkbox\n */\n @Prop()\n labelPosition: 'left' | 'right' = 'right';\n\n /**\n * Full width checkbox\n */\n @Prop({ attribute: 'full-width', reflect: true })\n fullWidth = false;\n\n /**\n * Internal state to track checked status\n */\n @State() internalChecked: boolean;\n\n /**\n * Event emitted when the checked state changes\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmCheckboxChange',\n })\n bcmCheckboxChange: EventEmitter<{ element: any; checked: boolean }>;\n\n /** Reference to the underlying input element */\n private inputElement: HTMLInputElement;\n\n /**\n * Lifecycle method that runs before the component first renders.\n * Initializes the internal checked state.\n */\n componentWillLoad() {\n this.internalChecked = this.checked !== undefined ? this.checked : false;\n }\n\n /**\n * Lifecycle method that runs after the component has rendered.\n * Updates the indeterminate state of the input element.\n */\n componentDidLoad() {\n this.updateIndeterminateState();\n }\n\n /**\n * Watches for changes to the checked prop and updates the internal state\n * @param newValue The new checked value\n */\n @Watch('checked')\n syncCheckedProp(newValue: boolean | undefined) {\n if (newValue !== undefined) {\n this.internalChecked = newValue;\n }\n }\n\n /**\n * Watches for changes to indeterminate and internalChecked states\n * Updates the input element accordingly\n */\n @Watch('indeterminate')\n @Watch('internalChecked')\n updateIndeterminateState() {\n if (this.inputElement) {\n this.inputElement.indeterminate = this.indeterminate && !this.internalChecked;\n this.inputElement.checked = this.internalChecked;\n }\n }\n\n /**\n * Handles change events on the checkbox\n * Updates state and emits the change event\n */\n private handleChange = () => {\n if (this.disabled) return;\n if (this.inputElement) {\n this.inputElement.indeterminate = false;\n this.indeterminate = false;\n this.internalChecked = !this.internalChecked;\n this.inputElement.checked = this.internalChecked;\n this.bcmCheckboxChange.emit({\n element: this.inputElement,\n checked: this.internalChecked,\n });\n }\n };\n\n /**\n * Returns the CSS custom properties based on component state\n * @returns Object with CSS custom properties\n */\n private getStyles() {\n const defaultStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-primary-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-default-default)',\n '--border-color': 'var(--bcm-ui-color-border-default)',\n '--hover-border-color': 'var(--bcm-ui-color-border-primary)',\n '--hover-color': 'var(--bcm-ui-color-background-info-hover)',\n };\n\n const errorStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-error-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-palette-red-default)',\n '--border-color': 'var(--bcm-ui-color-border-error)',\n '--hover-border-color': 'var(--bcm-ui-color-border-error)',\n '--hover-color': 'var(--bcm-ui-color-border-error)',\n };\n\n const disabledStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-disabled-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-disabled-default)',\n '--border-color': 'var(--bcm-ui-color-border-disabled)',\n '--hover-color': 'var(--bcm-ui-color-border-disabled)',\n '--hover-border-color': 'var(--bcm-ui-color-border-disabled)',\n };\n\n return {\n ...defaultStyles,\n ...(this.error ? errorStyles : {}),\n ...(this.disabled ? disabledStyles : {}),\n };\n }\n\n /**\n * Tailwind Variants definition for the component\n * Configures styling based on component props\n */\n private classes = tv(\n {\n slots: {\n container: 'flex items-center bcm-ui-element bcm-checkbox',\n checkbox: [\n 'flex items-center justify-center rounded-sm',\n 'border border-solid border-[--border-color]',\n 'bg-[--unchecked-color]',\n 'transition-colors duration-200 ease-out',\n 'peer-checked:bg-[--checked-color]',\n 'peer-checked:border-[--checked-color]',\n 'peer-indeterminate:bg-[--checked-color]',\n 'peer-indeterminate:border-[--checked-color]',\n 'hover:border-[--hover-border-color]',\n 'hover:peer-checked:bg-[--hover-color]',\n 'hover:peer-indeterminate:bg-[--hover-color]',\n ],\n iconContainer: 'flex items-center justify-center',\n label: 'select-none text-color',\n hiddenInput: 'absolute w-0 h-0 opacity-0 peer',\n },\n variants: {\n size: {\n small: {\n container: 'gap-2',\n checkbox: 'size-3',\n iconContainer: 'size-2 text-size-2',\n label: 'text-size-4',\n hiddenInput: 'size-3',\n },\n medium: {\n container: 'gap-2.5',\n checkbox: 'size-4',\n iconContainer: 'size-[10px] text-size-3',\n label: 'text-size-5',\n hiddenInput: 'size-4',\n },\n large: {\n container: 'gap-3',\n checkbox: 'size-[18px]',\n iconContainer: 'size-4 text-size-4',\n label: 'text-size-6',\n hiddenInput: 'size-[18px]',\n },\n },\n disabled: {\n true: {\n container: 'cursor-not-allowed',\n checkbox: 'cursor-not-allowed hover:border-[--border-color] hover:bg-[--unchecked-color]',\n label: 'cursor-not-allowed text-color-disabled',\n iconContainer: 'text-color-disabled',\n hiddenInput: 'cursor-not-allowed',\n },\n false: {\n container: 'cursor-pointer',\n checkbox: 'cursor-pointer',\n label: 'cursor-pointer text-color',\n iconContainer: 'text-color-base',\n hiddenInput: 'cursor-pointer',\n },\n },\n labelPosition: {\n left: {\n container: 'flex-row-reverse',\n },\n right: {\n container: 'flex-row',\n },\n },\n },\n defaultVariants: {\n size: 'medium',\n checked: false,\n disabled: false,\n error: false,\n labelPosition: 'right',\n },\n },\n { twMerge: false },\n );\n\n /**\n * Renders the checkbox component\n */\n render() {\n const { container, checkbox, iconContainer, label, hiddenInput } = this.classes({ size: this.size, disabled: this.disabled, labelPosition: this.labelPosition });\n const internalId = this._id + '-internal-checkbox' || this.name;\n\n return (\n <div class={container()} style={this.getStyles()} part=\"checkbox-wrapper\">\n <div class=\"relative inline-flex\">\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n id={internalId}\n name={this.name}\n checked={this.internalChecked}\n indeterminate={this.indeterminate}\n disabled={this.disabled}\n class={hiddenInput()}\n aria-checked={this.internalChecked ? 'true' : this.indeterminate ? 'mixed' : 'false'}\n aria-invalid={this.error}\n aria-label={this.label || 'Checkbox'}\n onChange={this.handleChange}\n ref={el => (this.inputElement = el as HTMLInputElement)}\n />\n <div class={checkbox()} onClick={this.handleChange} part=\"checkbox\">\n {this.internalChecked && (\n <div class={iconContainer()} part=\"icon\">\n <bcm-icon name=\"fa-regular fa-check\"></bcm-icon>\n </div>\n )}\n {this.indeterminate && !this.internalChecked && (\n <div class={iconContainer()} part=\"icon\">\n <bcm-icon name=\"fa-regular fa-minus\"></bcm-icon>\n </div>\n )}\n </div>\n </div>\n <label htmlFor={internalId} class={label()} part=\"label\">\n {this.label}\n </label>\n </div>\n );\n }\n}\n"],"names":["generateId","tv","h"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bcm-checkbox.entry.cjs.js","sources":["src/components/checkbox/checkbox.css?tag=bcm-checkbox&encapsulation=shadow","src/components/checkbox/checkbox.component.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n width: fit-content;\n height: fit-content;\n align-self: center;\n}\n\n:host([full-width]) {\n width: 100%;\n}\n","import {\n Component,\n h,\n Prop,\n Element,\n ComponentInterface,\n EventEmitter,\n Event,\n Watch,\n State,\n AttachInternals\n} from '@stencil/core';\nimport { tv } from '@utils/tv';\nimport { generateId } from '../../utils/id/generate-id';\nimport { BaseChoiceControl } from '../_shared/form/base-choice-control';\n\n/**\n * @component BcmCheckbox\n * @description\n * A form-associated checkbox component representing a boolean choice.\n * Integrates with native HTML forms via ElementInternals while supporting\n * **three validation strategies** via `validation-mode`:\n *\n * - **`native`**\n * - Participates in native browser constraint validation.\n * - Sets the underlying input's `required`.\n * - Browser may show native validation bubbles when submit/reportValidity happens.\n *\n * - **`silent`**\n * - Does **not** set native `required` (prevents browser bubble).\n * - Computes \"missing required\" internally and exposes it via `error` + `caption`.\n * - UI errors are **gated**: shown only after `touched` or a form submit attempt.\n *\n * - **`none`**\n * - Value-only mode: submits value but never becomes invalid.\n *\n * ## UI error gating (silent mode)\n * - `touched` becomes true after first user interaction\n * - `submitAttempted` becomes true when the parent form emits `submit`\n *\n * ## Value behavior\n * - When checked → submits `value` (default: `\"on\"`).\n * - When unchecked → submits no value (`null`).\n * - When disabled → no submission and no validity participation.\n *\n * ## Shadow Parts\n * - `checkbox` → root container\n * - `control` → visual checkbox box\n * - `icon` → icon container (check or minus)\n * - `label` → label text\n * - `caption` → helper/error text (silent mode UI)\n * - `input` → hidden native input\n *\n * @example Basic usage\n * <bcm-checkbox name=\"terms\" required>\n * I agree to the terms and conditions\n * </bcm-checkbox>\n *\n * @example Silent validation (no native bubble)\n * <form>\n * <bcm-checkbox name=\"newsletter\" required validation-mode=\"silent\">\n * Subscribe to newsletter\n * </bcm-checkbox>\n * <button type=\"submit\">Submit</button>\n * </form>\n *\n * @example Value-only mode\n * <bcm-checkbox name=\"analytics\" validation-mode=\"none\">\n * Allow analytics\n * </bcm-checkbox>\n */\n@Component({\n tag: 'bcm-checkbox',\n styleUrl: 'checkbox.css',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkbox extends BaseChoiceControl implements ComponentInterface {\n /** Host element */\n @Element() el!: HTMLElement;\n\n /** Form-associated internals (ElementInternals API) */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * Unique ID for the component. Automatically generated if not specified.\n * Used to bind the visible label to the internal input.\n */\n @Prop({ attribute: 'id', reflect: true })\n _id?: string = generateId('bcm-checkbox');\n\n /** Visible label text (optional). You can also use the default slot. */\n @Prop() label?: string;\n\n /**\n * Indeterminate (mixed) state.\n * Useful when a group selection is partially selected.\n */\n @Prop({ mutable: true }) indeterminate = false;\n\n /** Size variant (affects control + typography). */\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Visual error state.\n * - In `silent` mode this can be managed internally.\n * - In other modes you can set it externally as well.\n */\n @Prop({ mutable: true }) error = false;\n\n /** Helper / error caption (silent mode UI) */\n @Prop({ mutable: true }) caption?: string;\n\n /** Label position relative to the checkbox control. */\n @Prop() labelPosition: 'left' | 'right' = 'right';\n\n /** Makes checkbox occupy full width (if your styles support it). */\n @Prop({ attribute: 'full-width', reflect: true })\n fullWidth = false;\n\n /**\n * Mirror state used to keep the native input synced.\n * `checked` is owned by BaseChoiceControl.\n */\n @State() internalChecked = false;\n\n /** Gate for silent-mode UI */\n @State() private touched = false;\n\n /** Gate for silent-mode UI */\n @State() private submitAttempted = false;\n\n /** Fired whenever the checked state changes. */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmCheckboxChange',\n })\n bcmCheckboxChange!: EventEmitter<{ element: HTMLInputElement; checked: boolean }>;\n\n /** Reference to the underlying native input. */\n private inputElement!: HTMLInputElement;\n\n // --------------------------------------------------\n // Lifecycle\n // --------------------------------------------------\n\n componentWillLoad() {\n this.internalChecked = this.checked;\n // don't show UI errors on initial render\n this.updateFormValueAndValidity({ setUi: false });\n }\n\n componentDidLoad() {\n this.syncNativeInput();\n\n const form = this.internals?.form;\n if (form) {\n form.addEventListener('submit', this.onFormSubmit, true);\n }\n }\n\n disconnectedCallback() {\n const form = this.internals?.form;\n if (form) {\n form.removeEventListener('submit', this.onFormSubmit, true);\n }\n }\n\n private onFormSubmit = () => {\n this.submitAttempted = true;\n this.updateFormValueAndValidity({ setUi: true });\n };\n\n formResetCallback() {\n super.formResetCallback();\n\n this.internalChecked = false;\n this.indeterminate = false;\n\n // reset gating\n this.touched = false;\n this.submitAttempted = false;\n\n // reset UI\n this.error = false;\n this.caption = undefined;\n\n this.syncNativeInput();\n this.updateFormValueAndValidity({ setUi: false });\n }\n\n // --------------------------------------------------\n // Watchers\n // --------------------------------------------------\n\n @Watch('checked')\n protected syncFromBase(newValue: boolean) {\n this.internalChecked = newValue;\n this.indeterminate = false;\n this.syncNativeInput();\n }\n\n /** Keep native input in sync when indeterminate changes. */\n @Watch('indeterminate')\n protected onIndeterminateChange() {\n this.syncNativeInput();\n }\n\n // --------------------------------------------------\n // Native input syncing\n // --------------------------------------------------\n\n private syncNativeInput() {\n if (!this.inputElement) return;\n\n this.inputElement.checked = this.internalChecked;\n this.inputElement.indeterminate = this.indeterminate && !this.internalChecked;\n this.inputElement.disabled = this.disabled;\n\n // ✅ prevent native bubble in silent/none:\n // only native mode applies native \"required\"\n this.inputElement.required = this.validationMode === 'native' && this.required;\n }\n\n // --------------------------------------------------\n // Form internals integration\n // --------------------------------------------------\n\n protected updateFormValueAndValidity(opts?: { setUi?: boolean }) {\n const setUi = opts?.setUi ?? true;\n if (!this.internals) return;\n\n // Disabled -> no value, no validity, no UI errors\n if (this.disabled) {\n this.internals.setFormValue(null);\n this.internals.setValidity({});\n\n if (setUi) {\n this.error = false;\n this.caption = undefined;\n }\n return;\n }\n\n // Always set submitted value (even if validation is off)\n const formValue = this.checked ? this.value ?? 'on' : null;\n this.internals.setFormValue(formValue);\n\n // none -> never invalid\n if (this.validationMode === 'none') {\n this.internals.setValidity({});\n\n if (setUi) {\n this.error = false;\n this.caption = undefined;\n }\n return;\n }\n\n const isMissing = this.required && !this.checked;\n\n // silent -> no validity, only gated UI\n if (this.validationMode === 'silent') {\n this.internals.setValidity({});\n\n if (setUi) {\n const shouldShow = this.touched || this.submitAttempted;\n this.error = shouldShow && isMissing;\n this.caption = shouldShow && isMissing ? 'This field is required' : undefined;\n }\n return;\n }\n\n // native -> real validity participation\n if (isMissing) {\n this.internals.setValidity(\n { valueMissing: true },\n 'This field is required',\n this.inputElement ?? undefined,\n );\n\n // native mode uses browser UI; don't double-show component UI\n if (setUi) {\n this.error = false;\n this.caption = undefined;\n }\n return;\n }\n\n this.internals.setValidity({});\n\n if (setUi) {\n this.error = false;\n this.caption = undefined;\n }\n }\n\n // --------------------------------------------------\n // Interaction\n // --------------------------------------------------\n\n private handleChange = () => {\n if (this.disabled) return;\n\n if (!this.touched) this.touched = true;\n\n // toggling clears indeterminate\n this.indeterminate = false;\n\n // toggle comes from BaseChoiceControl\n this.toggleChecked();\n\n // keep internal mirror in sync (base updates `checked`)\n this.internalChecked = !!this.checked;\n\n this.syncNativeInput();\n this.updateFormValueAndValidity({ setUi: true });\n\n this.bcmCheckboxChange.emit({\n element: this.inputElement,\n checked: this.checked,\n });\n };\n\n // --------------------------------------------------\n // Styles\n // --------------------------------------------------\n\n private getStyles() {\n const defaultStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-primary-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-default-default)',\n '--border-color': 'var(--bcm-ui-color-border-default)',\n '--hover-border-color': 'var(--bcm-ui-color-border-primary)',\n '--hover-color': 'var(--bcm-ui-color-background-info-hover)',\n };\n\n const errorStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-error-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-palette-red-default)',\n '--border-color': 'var(--bcm-ui-color-border-error)',\n '--hover-border-color': 'var(--bcm-ui-color-border-error)',\n '--hover-color': 'var(--bcm-ui-color-border-error)',\n };\n\n const disabledStyles = {\n '--checked-color': 'var(--bcm-ui-color-background-disabled-default)',\n '--unchecked-color': 'var(--bcm-ui-color-background-disabled-default)',\n '--border-color': 'var(--bcm-ui-color-border-disabled)',\n '--hover-color': 'var(--bcm-ui-color-border-disabled)',\n '--hover-border-color': 'var(--bcm-ui-color-border-disabled)',\n };\n\n return {\n ...defaultStyles,\n ...(this.error ? errorStyles : {}),\n ...(this.disabled ? disabledStyles : {}),\n };\n }\n\n private classes = tv(\n {\n slots: {\n root: 'bcm-ui-element bcm-checkbox flex flex-col',\n row: 'flex items-center',\n checkbox: [\n 'flex items-center justify-center rounded-sm',\n 'border border-solid border-[--border-color]',\n 'bg-[--unchecked-color]',\n 'transition-colors duration-200 ease-out',\n 'peer-checked:bg-[--checked-color]',\n 'peer-checked:border-[--checked-color]',\n 'peer-indeterminate:bg-[--checked-color]',\n 'peer-indeterminate:border-[--checked-color]',\n 'hover:border-[--hover-border-color]',\n 'hover:peer-checked:bg-[--hover-color]',\n 'hover:peer-indeterminate:bg-[--hover-color]',\n ],\n iconContainer: 'flex items-center justify-center',\n label: 'select-none text-color',\n hiddenInput: 'sr-only peer',\n caption: 'mt-1 text-color-error font-normal', // ✅ alt satır spacing\n },\n variants: {\n size: {\n small: {\n row: 'gap-2',\n checkbox: 'size-3',\n iconContainer: 'size-2 text-size-2',\n label: 'text-size-4',\n hiddenInput: 'size-3',\n caption: 'text-size-3',\n },\n medium: {\n row: 'gap-2.5',\n checkbox: 'size-4',\n iconContainer: 'size-[10px] text-size-3',\n label: 'text-size-5',\n hiddenInput: 'size-4',\n caption: 'text-size-4',\n },\n large: {\n row: 'gap-3',\n checkbox: 'size-[18px]',\n iconContainer: 'size-4 text-size-4',\n label: 'text-size-6',\n hiddenInput: 'size-[18px]',\n caption: 'text-size-5',\n },\n },\n disabled: {\n true: {\n row: 'cursor-not-allowed',\n checkbox: 'cursor-not-allowed hover:border-[--border-color] hover:bg-[--unchecked-color]',\n label: 'cursor-not-allowed text-color-disabled',\n iconContainer: 'text-color-disabled',\n hiddenInput: 'cursor-not-allowed',\n },\n false: {\n row: 'cursor-pointer',\n checkbox: 'cursor-pointer',\n label: 'cursor-pointer text-color',\n iconContainer: 'text-color-base',\n hiddenInput: 'cursor-pointer',\n },\n },\n labelPosition: {\n left: { row: 'flex-row-reverse' },\n right: { row: 'flex-row' },\n },\n },\n defaultVariants: {\n size: 'medium',\n disabled: false,\n labelPosition: 'right',\n },\n },\n { twMerge: false },\n );\n\n\n // --------------------------------------------------\n // Render\n // --------------------------------------------------\n\n render() {\n const { root, row, checkbox, iconContainer, label, hiddenInput, caption } = this.classes({\n size: this.size,\n disabled: this.disabled,\n labelPosition: this.labelPosition,\n });\n\n const internalId =\n (this._id ? `${this._id}-internal-checkbox` : undefined) ?? this.name ?? 'bcm-checkbox';\n\n return (\n <div class={root()} style={this.getStyles()} part=\"checkbox\">\n <div class={row()}>\n <div class=\"relative inline-flex\">\n <input\n ref={el => (this.inputElement = el as HTMLInputElement)}\n type=\"checkbox\"\n role=\"checkbox\"\n id={internalId}\n name={this.name}\n checked={this.internalChecked}\n indeterminate={this.indeterminate}\n disabled={this.disabled}\n class={hiddenInput()}\n aria-checked={this.internalChecked ? 'true' : this.indeterminate ? 'mixed' : 'false'}\n aria-invalid={this.error}\n aria-required={this.required}\n aria-label={this.label || 'Checkbox'}\n onChange={this.handleChange}\n part=\"input\"\n />\n\n <div class={checkbox()} part=\"control\" onClick={() => this.inputElement?.click()}>\n {this.internalChecked && (\n <div class={iconContainer()} part=\"icon\">\n <bcm-icon name=\"fa-regular fa-check\"></bcm-icon>\n </div>\n )}\n\n {this.indeterminate && !this.internalChecked && (\n <div class={iconContainer()} part=\"icon\">\n <bcm-icon name=\"fa-regular fa-minus\"></bcm-icon>\n </div>\n )}\n </div>\n </div>\n\n <label htmlFor={internalId} class={label()} part=\"label\">\n <slot>{this.label}</slot>\n </label>\n </div>\n\n {this.error && this.caption && (\n <span class={caption()} part=\"caption\">\n {this.caption}\n </span>\n )}\n </div>\n );\n }\n\n}\n"],"names":["BaseChoiceControl","generateId","tv","h"],"mappings":"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"}
|