bromcom-ui-next 0.1.29 → 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 -1
- package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -1
- 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 -1
- package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/bromcom-ui.esm.js.map +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-BfTCfPZ1.js.map +1 -1
- package/dist/bromcom-ui/p-CEcVC0yX.js.map +1 -1
- 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-IBjzkjef.js.map +1 -1
- 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-2480e468.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-089edfdc.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 +21 -21
- package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js +75 -60
- package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-alert.cjs.entry.js +21 -23
- package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-avatar.cjs.entry.js +22 -14
- package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-badge.cjs.entry.js +114 -84
- package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -61
- package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-button-group.cjs.entry.js +36 -26
- 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 -176
- package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-chip.cjs.entry.js +38 -37
- package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-divider.cjs.entry.js +56 -58
- 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 -35
- package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-dropdown.cjs.entry.js +17 -26
- 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 -160
- package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-linked.cjs.entry.js +373 -264
- package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -1
- 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 +337 -206
- package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-popover.cjs.entry.js +416 -154
- package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -82
- package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-radio.cjs.entry.js +239 -108
- 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 -6
- package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-switch.cjs.entry.js +281 -150
- 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 -239
- package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-text.cjs.entry.js +86 -87
- package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-textarea.cjs.entry.js +224 -156
- package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tooltip.cjs.entry.js +386 -152
- package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/bromcom-ui.cjs.js +3 -5
- package/dist/cjs/bromcom-ui.cjs.js.map +1 -1
- package/dist/cjs/{floating-ui.dom-DyKmFgkP.js → floating-ui.dom-S9nP6zZt.js} +40 -23
- package/dist/cjs/floating-ui.dom-S9nP6zZt.js.map +1 -0
- package/dist/cjs/generate-id-CG_BkTJu.js.map +1 -1
- package/dist/cjs/{index-BtiU-G2W.js → index-1Qal-onT.js} +165 -398
- package/dist/cjs/index-1Qal-onT.js.map +1 -0
- package/dist/cjs/index-Bp6Dd2i1.js.map +1 -1
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/loader.cjs.js +2 -4
- package/dist/cjs/tv-ngpIbGlG.js.map +1 -1
- 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 +7 -8
- 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 +80 -63
- 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 +23 -21
- package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
- package/dist/collection/components/accordion-group/types.js.map +1 -1
- package/dist/collection/components/alert/alert.component.js +24 -26
- 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 +34 -26
- 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 +124 -94
- 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 +77 -65
- 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 +135 -114
- 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 +47 -36
- 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 +362 -243
- 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 +42 -41
- 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 +56 -58
- package/dist/collection/components/divider/divider.component.js.map +1 -1
- package/dist/collection/components/divider/divider.css +1 -1
- package/dist/collection/components/drawer/drawer.component.js +476 -155
- package/dist/collection/components/drawer/drawer.component.js.map +1 -1
- package/dist/collection/components/drawer/drawer.css +1 -1
- package/dist/collection/components/drawer/types.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.component.js +18 -27
- package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.component.js +41 -40
- 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 +283 -198
- package/dist/collection/components/input/input.component.js.map +1 -1
- package/dist/collection/components/linked/linked.component.js +551 -355
- 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 +276 -149
- package/dist/collection/components/modal/modal.component.js.map +1 -1
- package/dist/collection/components/modal/modal.css +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.component.js +745 -340
- 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 +609 -196
- 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 +294 -118
- package/dist/collection/components/radio/radio.component.js.map +1 -1
- package/dist/collection/components/radio-group/radio-group.component.js +115 -93
- 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 +357 -142
- 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 +7 -8
- package/dist/collection/components/shortcut/shortcut.js.map +1 -1
- package/dist/collection/components/switch/switch.component.js +357 -287
- 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 +224 -355
- package/dist/collection/components/tabs/tabs.component.js.map +1 -1
- package/dist/collection/components/text/text.component.js +90 -91
- package/dist/collection/components/text/text.component.js.map +1 -1
- package/dist/collection/components/textarea/textarea.component.js +252 -190
- package/dist/collection/components/textarea/textarea.component.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.component.js +605 -220
- package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.css +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 +24 -20
- package/dist/components/bcm-accordion-group.js.map +1 -1
- package/dist/components/bcm-accordion.js +78 -59
- package/dist/components/bcm-accordion.js.map +1 -1
- package/dist/components/bcm-alert.js +1 -112
- package/dist/components/bcm-alert.js.map +1 -1
- package/dist/components/bcm-avatar.js +26 -14
- package/dist/components/bcm-avatar.js.map +1 -1
- package/dist/components/bcm-badge.js +1 -1
- package/dist/components/bcm-basic-badge.js +76 -60
- package/dist/components/bcm-basic-badge.js.map +1 -1
- package/dist/components/bcm-button-group.js +39 -25
- package/dist/components/bcm-button-group.js.map +1 -1
- package/dist/components/bcm-button.js +1 -1
- package/dist/components/bcm-checkbox.js +300 -186
- package/dist/components/bcm-checkbox.js.map +1 -1
- package/dist/components/bcm-chip.js +41 -36
- package/dist/components/bcm-chip.js.map +1 -1
- package/dist/components/bcm-divider.js +59 -57
- package/dist/components/bcm-divider.js.map +1 -1
- package/dist/components/bcm-drawer.js +276 -138
- package/dist/components/bcm-drawer.js.map +1 -1
- package/dist/components/bcm-dropdown-item.js +40 -35
- package/dist/components/bcm-dropdown-item.js.map +1 -1
- package/dist/components/bcm-dropdown.js +22 -28
- 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 +248 -160
- package/dist/components/bcm-input.js.map +1 -1
- package/dist/components/bcm-linked.js +1 -1
- package/dist/components/bcm-modal.js +196 -119
- package/dist/components/bcm-modal.js.map +1 -1
- package/dist/components/bcm-pop-confirm.js +354 -215
- package/dist/components/bcm-pop-confirm.js.map +1 -1
- package/dist/components/bcm-popover.js +431 -157
- package/dist/components/bcm-popover.js.map +1 -1
- package/dist/components/bcm-radio-group.js +106 -81
- package/dist/components/bcm-radio-group.js.map +1 -1
- package/dist/components/bcm-radio.js +245 -110
- 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 +238 -117
- package/dist/components/bcm-segmented-picker.js.map +1 -1
- package/dist/components/bcm-shortcut.js +8 -5
- package/dist/components/bcm-shortcut.js.map +1 -1
- package/dist/components/bcm-switch.js +296 -158
- 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 +200 -249
- package/dist/components/bcm-tabs.js.map +1 -1
- package/dist/components/bcm-text.js +89 -86
- package/dist/components/bcm-text.js.map +1 -1
- package/dist/components/bcm-textarea.js +222 -156
- package/dist/components/bcm-textarea.js.map +1 -1
- package/dist/components/bcm-tooltip.js +402 -154
- package/dist/components/bcm-tooltip.js.map +1 -1
- package/dist/components/index.js +140 -392
- 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-BfTCfPZ1.js.map +1 -1
- package/dist/components/p-CEcVC0yX.js.map +1 -1
- package/dist/components/{p-CzcTU1ty.js → p-DBDSgIvP.js} +40 -23
- package/dist/components/p-DBDSgIvP.js.map +1 -0
- package/dist/components/p-IBjzkjef.js.map +1 -1
- 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-DHONP_n4.js → p-xQIzBLsS.js} +112 -87
- package/dist/components/p-xQIzBLsS.js.map +1 -0
- package/dist/components/p-z9ESseGb.js +492 -0
- 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 +21 -21
- package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
- package/dist/esm/bcm-accordion.entry.js +75 -60
- package/dist/esm/bcm-accordion.entry.js.map +1 -1
- package/dist/esm/bcm-alert.entry.js +21 -23
- package/dist/esm/bcm-alert.entry.js.map +1 -1
- package/dist/esm/bcm-avatar.entry.js +22 -14
- package/dist/esm/bcm-avatar.entry.js.map +1 -1
- package/dist/esm/bcm-badge.entry.js +114 -84
- package/dist/esm/bcm-badge.entry.js.map +1 -1
- package/dist/esm/bcm-basic-badge.entry.js +73 -61
- package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
- package/dist/esm/bcm-button-group.entry.js +36 -26
- 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 -176
- package/dist/esm/bcm-checkbox.entry.js.map +1 -1
- package/dist/esm/bcm-chip.entry.js +38 -37
- package/dist/esm/bcm-chip.entry.js.map +1 -1
- package/dist/esm/bcm-divider.entry.js +56 -58
- 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 -35
- package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
- package/dist/esm/bcm-dropdown.entry.js +17 -26
- 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 -160
- package/dist/esm/bcm-input.entry.js.map +1 -1
- package/dist/esm/bcm-linked.entry.js +373 -264
- package/dist/esm/bcm-linked.entry.js.map +1 -1
- 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 +337 -206
- package/dist/esm/bcm-pop-confirm.entry.js.map +1 -1
- package/dist/esm/bcm-popover.entry.js +416 -154
- package/dist/esm/bcm-popover.entry.js.map +1 -1
- package/dist/esm/bcm-radio-group.entry.js +103 -82
- package/dist/esm/bcm-radio-group.entry.js.map +1 -1
- package/dist/esm/bcm-radio.entry.js +239 -108
- 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 -6
- package/dist/esm/bcm-shortcut.entry.js.map +1 -1
- package/dist/esm/bcm-switch.entry.js +281 -150
- 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 -239
- package/dist/esm/bcm-tabs.entry.js.map +1 -1
- package/dist/esm/bcm-text.entry.js +86 -87
- package/dist/esm/bcm-text.entry.js.map +1 -1
- package/dist/esm/bcm-textarea.entry.js +224 -156
- package/dist/esm/bcm-textarea.entry.js.map +1 -1
- package/dist/esm/bcm-tooltip.entry.js +386 -152
- package/dist/esm/bcm-tooltip.entry.js.map +1 -1
- package/dist/esm/bromcom-ui.js +4 -6
- package/dist/esm/bromcom-ui.js.map +1 -1
- package/dist/esm/{floating-ui.dom-DxMLMJ3r.js → floating-ui.dom-DBDSgIvP.js} +41 -24
- package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
- package/dist/esm/generate-id-IBjzkjef.js.map +1 -1
- package/dist/esm/{index-BuuGCw0z.js → index-B6Ppbs5O.js} +165 -398
- package/dist/esm/index-B6Ppbs5O.js.map +1 -0
- package/dist/esm/index-BfTCfPZ1.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/loader.js +3 -5
- package/dist/esm/tv-CEcVC0yX.js.map +1 -1
- 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/accordion-group/types.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
- package/dist/types/components/drawer/drawer.component.d.ts +143 -3
- package/dist/types/components/drawer/types.d.ts +1 -1
- package/dist/types/components/dropdown/dropdown.component.d.ts +0 -3
- package/dist/types/components/input/input.component.d.ts +5 -0
- package/dist/types/components/linked/linked.component.d.ts +152 -36
- package/dist/types/components/modal/modal.component.d.ts +121 -0
- package/dist/types/components/pop-confirm/pop-confirm.component.d.ts +263 -143
- package/dist/types/components/popover/popover.component.d.ts +94 -39
- 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/tooltip/tooltip.component.d.ts +147 -56
- package/dist/types/components/upload/file-upload.component.d.ts +107 -0
- package/dist/types/components.d.ts +2400 -742
- package/dist/types/stencil-public-runtime.d.ts +50 -3
- package/package.json +2 -2
- package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-modal.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/p-0101b4f2.entry.js +0 -2
- package/dist/bromcom-ui/p-0101b4f2.entry.js.map +0 -1
- package/dist/bromcom-ui/p-089edfdc.entry.js.map +0 -1
- package/dist/bromcom-ui/p-08bc93c5.entry.js +0 -2
- package/dist/bromcom-ui/p-08bc93c5.entry.js.map +0 -1
- package/dist/bromcom-ui/p-09be61c3.entry.js +0 -2
- package/dist/bromcom-ui/p-09be61c3.entry.js.map +0 -1
- package/dist/bromcom-ui/p-11851391.entry.js +0 -2
- package/dist/bromcom-ui/p-11851391.entry.js.map +0 -1
- package/dist/bromcom-ui/p-11f3e129.entry.js +0 -2
- package/dist/bromcom-ui/p-11f3e129.entry.js.map +0 -1
- package/dist/bromcom-ui/p-211ca6e0.entry.js +0 -2
- package/dist/bromcom-ui/p-211ca6e0.entry.js.map +0 -1
- package/dist/bromcom-ui/p-22edf049.entry.js +0 -2
- package/dist/bromcom-ui/p-22edf049.entry.js.map +0 -1
- package/dist/bromcom-ui/p-2480e468.entry.js.map +0 -1
- package/dist/bromcom-ui/p-26d2db9e.entry.js +0 -2
- package/dist/bromcom-ui/p-26d2db9e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-2d0a6472.entry.js +0 -2
- package/dist/bromcom-ui/p-2d0a6472.entry.js.map +0 -1
- package/dist/bromcom-ui/p-360bff8a.entry.js +0 -2
- package/dist/bromcom-ui/p-360bff8a.entry.js.map +0 -1
- package/dist/bromcom-ui/p-488d6ef4.entry.js +0 -2
- package/dist/bromcom-ui/p-488d6ef4.entry.js.map +0 -1
- package/dist/bromcom-ui/p-5e0702d1.entry.js +0 -2
- package/dist/bromcom-ui/p-5e0702d1.entry.js.map +0 -1
- package/dist/bromcom-ui/p-63228f7e.entry.js +0 -2
- package/dist/bromcom-ui/p-63228f7e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-6b585adc.entry.js +0 -2
- package/dist/bromcom-ui/p-6b585adc.entry.js.map +0 -1
- package/dist/bromcom-ui/p-6d7d73d5.entry.js +0 -2
- package/dist/bromcom-ui/p-6d7d73d5.entry.js.map +0 -1
- package/dist/bromcom-ui/p-7234af90.entry.js +0 -2
- package/dist/bromcom-ui/p-7234af90.entry.js.map +0 -1
- package/dist/bromcom-ui/p-83f64814.entry.js +0 -2
- package/dist/bromcom-ui/p-83f64814.entry.js.map +0 -1
- package/dist/bromcom-ui/p-8ace5a6a.entry.js +0 -2
- package/dist/bromcom-ui/p-8ace5a6a.entry.js.map +0 -1
- package/dist/bromcom-ui/p-8d74249a.entry.js +0 -2
- package/dist/bromcom-ui/p-8d74249a.entry.js.map +0 -1
- package/dist/bromcom-ui/p-BuuGCw0z.js +0 -3
- package/dist/bromcom-ui/p-BuuGCw0z.js.map +0 -1
- package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
- package/dist/bromcom-ui/p-DxMLMJ3r.js +0 -2
- package/dist/bromcom-ui/p-DxMLMJ3r.js.map +0 -1
- package/dist/bromcom-ui/p-a88f20e0.entry.js +0 -2
- package/dist/bromcom-ui/p-a88f20e0.entry.js.map +0 -1
- package/dist/bromcom-ui/p-bad299f2.entry.js +0 -2
- package/dist/bromcom-ui/p-bad299f2.entry.js.map +0 -1
- package/dist/bromcom-ui/p-bdaf5653.entry.js +0 -2
- package/dist/bromcom-ui/p-bdaf5653.entry.js.map +0 -1
- package/dist/bromcom-ui/p-c0e7f9d6.entry.js +0 -2
- package/dist/bromcom-ui/p-c0e7f9d6.entry.js.map +0 -1
- package/dist/bromcom-ui/p-c34f0a66.entry.js +0 -2
- package/dist/bromcom-ui/p-c34f0a66.entry.js.map +0 -1
- package/dist/bromcom-ui/p-d7cea19f.entry.js +0 -2
- package/dist/bromcom-ui/p-d7cea19f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e5e0ac07.entry.js +0 -2
- package/dist/bromcom-ui/p-e5e0ac07.entry.js.map +0 -1
- package/dist/bromcom-ui/p-ee5f877f.entry.js +0 -2
- package/dist/bromcom-ui/p-ee5f877f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-fbccbffc.entry.js +0 -2
- package/dist/bromcom-ui/p-fbccbffc.entry.js.map +0 -1
- package/dist/cjs/bcm-accordion-group.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-alert.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-avatar.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-basic-badge.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-button-group.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-button.bcm-drawer.bcm-modal.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-button_3.cjs.entry.js +0 -794
- package/dist/cjs/bcm-button_3.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-chip.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-divider.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-dropdown.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-input.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-linked.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-pop-confirm.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-popover.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-radio-group.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-radio.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -107
- package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -144
- package/dist/cjs/bcm-segmented-picker.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-shortcut.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-switch.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -20
- package/dist/cjs/bcm-tabs-content.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -84
- package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -122
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-text.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-textarea.cjs.entry.js.map +0 -1
- package/dist/cjs/bcm-tooltip.cjs.entry.js.map +0 -1
- package/dist/cjs/floating-ui.dom-DyKmFgkP.js.map +0 -1
- package/dist/cjs/index-BtiU-G2W.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 -131
- package/dist/components/bcm-segmented-picker-option.js.map +0 -1
- package/dist/components/bcm-tabs-content.js +0 -39
- package/dist/components/bcm-tabs-content.js.map +0 -1
- package/dist/components/bcm-tabs-list.js +0 -104
- package/dist/components/bcm-tabs-list.js.map +0 -1
- package/dist/components/bcm-tabs-trigger.js +0 -146
- package/dist/components/bcm-tabs-trigger.js.map +0 -1
- package/dist/components/p-BHwftRkk.js +0 -379
- package/dist/components/p-BHwftRkk.js.map +0 -1
- package/dist/components/p-CQF7wlXf.js +0 -145
- package/dist/components/p-CQF7wlXf.js.map +0 -1
- package/dist/components/p-CUvT12BL.js.map +0 -1
- package/dist/components/p-CzcTU1ty.js.map +0 -1
- package/dist/components/p-DHONP_n4.js.map +0 -1
- package/dist/esm/bcm-button.bcm-drawer.bcm-modal.entry.js.map +0 -1
- package/dist/esm/bcm-button_3.entry.js +0 -790
- package/dist/esm/bcm-button_3.entry.js.map +0 -1
- package/dist/esm/bcm-segmented-picker-option.entry.js +0 -105
- package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
- package/dist/esm/bcm-segmented-picker.entry.js +0 -142
- package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-content.entry.js +0 -18
- package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-list.entry.js +0 -82
- package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-trigger.entry.js +0 -120
- package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
- package/dist/esm/floating-ui.dom-DxMLMJ3r.js.map +0 -1
- package/dist/esm/index-BuuGCw0z.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
|
@@ -12,14 +12,16 @@ import { AvatarShape, AvatarSize, AvatarStatus } from "./components/avatar/types
|
|
|
12
12
|
import { ButtonKind, ButtonPosition, ButtonSize, ButtonStatus, ButtonType, ButtonVariant, IconPosition } from "./components/button/types";
|
|
13
13
|
import { ChipKind, ChipSize, ChipStatus } from "./components/chip/types";
|
|
14
14
|
import { DrawerPosition, DrawerSize } from "./components/drawer/types";
|
|
15
|
+
import { BcmUploadErrorMessages, BcmUploadItem } from "./components/upload/file-upload.component";
|
|
15
16
|
import { InputSize, InputStatus, InputType } from "./components/input/types";
|
|
16
17
|
import { Event } from "./stencil-public-runtime";
|
|
17
18
|
import { TriggerType } from "./components/linked/linked.component";
|
|
18
19
|
import { Placement } from "@floating-ui/dom";
|
|
19
20
|
import { ModalPlacement, ModalSize } from "./components/modal/modal.component";
|
|
20
|
-
import {
|
|
21
|
+
import { PopConfirmPlacement, PopConfirmSize, PopConfirmStatus } from "./components/pop-confirm/pop-confirm.component";
|
|
21
22
|
import { TextSize, TextVariant } from "./components/text/text.types";
|
|
22
23
|
import { InputSize as InputSize1, InputStatus as InputStatus1, TextareaResize } from "./components/textarea/types";
|
|
24
|
+
import { TooltipPlacement, TooltipSize, TooltipTrigger } from "./components/tooltip/tooltip.component";
|
|
23
25
|
export { AccordionChangeEventType } from "./components/accordion/types";
|
|
24
26
|
export { AccordionGroupChangeEventType } from "./components/accordion-group/types";
|
|
25
27
|
export { AlertKind, AlertSize, AlertStatus } from "./components/alert/types";
|
|
@@ -27,14 +29,16 @@ export { AvatarShape, AvatarSize, AvatarStatus } from "./components/avatar/types
|
|
|
27
29
|
export { ButtonKind, ButtonPosition, ButtonSize, ButtonStatus, ButtonType, ButtonVariant, IconPosition } from "./components/button/types";
|
|
28
30
|
export { ChipKind, ChipSize, ChipStatus } from "./components/chip/types";
|
|
29
31
|
export { DrawerPosition, DrawerSize } from "./components/drawer/types";
|
|
32
|
+
export { BcmUploadErrorMessages, BcmUploadItem } from "./components/upload/file-upload.component";
|
|
30
33
|
export { InputSize, InputStatus, InputType } from "./components/input/types";
|
|
31
34
|
export { Event } from "./stencil-public-runtime";
|
|
32
35
|
export { TriggerType } from "./components/linked/linked.component";
|
|
33
36
|
export { Placement } from "@floating-ui/dom";
|
|
34
37
|
export { ModalPlacement, ModalSize } from "./components/modal/modal.component";
|
|
35
|
-
export {
|
|
38
|
+
export { PopConfirmPlacement, PopConfirmSize, PopConfirmStatus } from "./components/pop-confirm/pop-confirm.component";
|
|
36
39
|
export { TextSize, TextVariant } from "./components/text/text.types";
|
|
37
40
|
export { InputSize as InputSize1, InputStatus as InputStatus1, TextareaResize } from "./components/textarea/types";
|
|
41
|
+
export { TooltipPlacement, TooltipSize, TooltipTrigger } from "./components/tooltip/tooltip.component";
|
|
38
42
|
export namespace Components {
|
|
39
43
|
/**
|
|
40
44
|
* @component BcmAccordion
|
|
@@ -500,58 +504,122 @@ export namespace Components {
|
|
|
500
504
|
"status"?: ButtonStatus;
|
|
501
505
|
}
|
|
502
506
|
/**
|
|
503
|
-
* @
|
|
504
|
-
*
|
|
507
|
+
* @component BcmCheckbox
|
|
508
|
+
* @description A form-associated checkbox component representing a boolean choice.
|
|
509
|
+
* Integrates with native HTML forms via ElementInternals while supporting
|
|
510
|
+
* **three validation strategies** via `validation-mode`:
|
|
511
|
+
* - **`native`**
|
|
512
|
+
* - Participates in native browser constraint validation.
|
|
513
|
+
* - Sets the underlying input's `required`.
|
|
514
|
+
* - Browser may show native validation bubbles when submit/reportValidity happens.
|
|
515
|
+
* - **`silent`**
|
|
516
|
+
* - Does **not** set native `required` (prevents browser bubble).
|
|
517
|
+
* - Computes "missing required" internally and exposes it via `error` + `caption`.
|
|
518
|
+
* - UI errors are **gated**: shown only after `touched` or a form submit attempt.
|
|
519
|
+
* - **`none`**
|
|
520
|
+
* - Value-only mode: submits value but never becomes invalid.
|
|
521
|
+
* ## UI error gating (silent mode)
|
|
522
|
+
* - `touched` becomes true after first user interaction
|
|
523
|
+
* - `submitAttempted` becomes true when the parent form emits `submit`
|
|
524
|
+
* ## Value behavior
|
|
525
|
+
* - When checked → submits `value` (default: `"on"`).
|
|
526
|
+
* - When unchecked → submits no value (`null`).
|
|
527
|
+
* - When disabled → no submission and no validity participation.
|
|
528
|
+
* ## Shadow Parts
|
|
529
|
+
* - `checkbox` → root container
|
|
530
|
+
* - `control` → visual checkbox box
|
|
531
|
+
* - `icon` → icon container (check or minus)
|
|
532
|
+
* - `label` → label text
|
|
533
|
+
* - `caption` → helper/error text (silent mode UI)
|
|
534
|
+
* - `input` → hidden native input
|
|
535
|
+
* @example Basic usage
|
|
536
|
+
* <bcm-checkbox name="terms" required>
|
|
537
|
+
* I agree to the terms and conditions
|
|
538
|
+
* </bcm-checkbox>
|
|
539
|
+
* @example Silent validation (no native bubble)
|
|
540
|
+
* <form>
|
|
541
|
+
* <bcm-checkbox name="newsletter" required validation-mode="silent">
|
|
542
|
+
* Subscribe to newsletter
|
|
543
|
+
* </bcm-checkbox>
|
|
544
|
+
* <button type="submit">Submit</button>
|
|
545
|
+
* </form>
|
|
546
|
+
* @example Value-only mode
|
|
547
|
+
* <bcm-checkbox name="analytics" validation-mode="none">
|
|
548
|
+
* Allow analytics
|
|
549
|
+
* </bcm-checkbox>
|
|
505
550
|
*/
|
|
506
551
|
interface BcmCheckbox {
|
|
507
552
|
/**
|
|
508
|
-
* Unique ID for the component. Automatically generated if not specified.
|
|
553
|
+
* Unique ID for the component. Automatically generated if not specified. Used to bind the visible label to the internal input.
|
|
509
554
|
* @default generateId('bcm-checkbox')
|
|
510
555
|
*/
|
|
511
556
|
"_id"?: string;
|
|
512
557
|
/**
|
|
513
|
-
*
|
|
558
|
+
* Helper / error caption (silent mode UI)
|
|
559
|
+
*/
|
|
560
|
+
"caption"?: string;
|
|
561
|
+
/**
|
|
562
|
+
* Checked state
|
|
514
563
|
* @default false
|
|
515
564
|
*/
|
|
516
565
|
"checked": boolean;
|
|
517
566
|
/**
|
|
518
|
-
*
|
|
567
|
+
* Disabled state
|
|
519
568
|
* @default false
|
|
520
569
|
*/
|
|
521
570
|
"disabled": boolean;
|
|
522
571
|
/**
|
|
523
|
-
*
|
|
572
|
+
* Visual error state. - In `silent` mode this can be managed internally. - In other modes you can set it externally as well.
|
|
524
573
|
* @default false
|
|
525
574
|
*/
|
|
526
575
|
"error": boolean;
|
|
527
576
|
/**
|
|
528
|
-
*
|
|
577
|
+
* Makes checkbox occupy full width (if your styles support it).
|
|
529
578
|
* @default false
|
|
530
579
|
*/
|
|
531
580
|
"fullWidth": boolean;
|
|
532
581
|
/**
|
|
533
|
-
*
|
|
582
|
+
* Indeterminate (mixed) state. Useful when a group selection is partially selected.
|
|
534
583
|
* @default false
|
|
535
584
|
*/
|
|
536
585
|
"indeterminate": boolean;
|
|
537
586
|
/**
|
|
538
|
-
*
|
|
587
|
+
* Visible label text (optional). You can also use the default slot.
|
|
539
588
|
*/
|
|
540
589
|
"label"?: string;
|
|
541
590
|
/**
|
|
542
|
-
*
|
|
591
|
+
* Label position relative to the checkbox control.
|
|
543
592
|
* @default 'right'
|
|
544
593
|
*/
|
|
545
594
|
"labelPosition": 'left' | 'right';
|
|
546
595
|
/**
|
|
547
|
-
*
|
|
596
|
+
* Form field name
|
|
548
597
|
*/
|
|
549
|
-
"name"
|
|
598
|
+
"name"?: string;
|
|
599
|
+
/**
|
|
600
|
+
* Optional readonly support
|
|
601
|
+
* @default false
|
|
602
|
+
*/
|
|
603
|
+
"readonly": boolean;
|
|
550
604
|
/**
|
|
551
|
-
*
|
|
605
|
+
* Required state
|
|
606
|
+
* @default false
|
|
607
|
+
*/
|
|
608
|
+
"required": boolean;
|
|
609
|
+
/**
|
|
610
|
+
* Size variant (affects control + typography).
|
|
552
611
|
* @default 'medium'
|
|
553
612
|
*/
|
|
554
613
|
"size": 'small' | 'medium' | 'large';
|
|
614
|
+
/**
|
|
615
|
+
* @default 'native'
|
|
616
|
+
*/
|
|
617
|
+
"validationMode": 'native' | 'silent' | 'none';
|
|
618
|
+
/**
|
|
619
|
+
* Value submitted when checked
|
|
620
|
+
* @default 'on'
|
|
621
|
+
*/
|
|
622
|
+
"value": string;
|
|
555
623
|
}
|
|
556
624
|
/**
|
|
557
625
|
* @component BcmChip
|
|
@@ -635,30 +703,109 @@ export namespace Components {
|
|
|
635
703
|
*/
|
|
636
704
|
"variant": 'solid' | 'dashed' | 'dotted';
|
|
637
705
|
}
|
|
706
|
+
/**
|
|
707
|
+
* @component BcmDrawer
|
|
708
|
+
* @description A slide-in panel component built on the native HTML Dialog API.
|
|
709
|
+
* Ideal for navigation menus, forms, and contextual information that slides in from any edge of the screen.
|
|
710
|
+
* @example ```html
|
|
711
|
+
* <!-- Basic usage -->
|
|
712
|
+
* <bcm-drawer open header-text="Menu" position="left">
|
|
713
|
+
* <nav>
|
|
714
|
+
* <a href="/home">Home</a>
|
|
715
|
+
* <a href="/about">About</a>
|
|
716
|
+
* </nav>
|
|
717
|
+
* </bcm-drawer>
|
|
718
|
+
* <!-- Custom size and position -->
|
|
719
|
+
* <bcm-drawer size="large" position="right">
|
|
720
|
+
* <div slot="header">Settings</div>
|
|
721
|
+
* <form>...</form>
|
|
722
|
+
* <div slot="footer">
|
|
723
|
+
* <button data-dismiss>Cancel</button>
|
|
724
|
+
* <button>Save</button>
|
|
725
|
+
* </div>
|
|
726
|
+
* </bcm-drawer>
|
|
727
|
+
* <!-- Custom size with CSS units -->
|
|
728
|
+
* <bcm-drawer size="600px" position="bottom">
|
|
729
|
+
* <p>Custom height drawer</p>
|
|
730
|
+
* </bcm-drawer>
|
|
731
|
+
* <!-- Programmatic usage -->
|
|
732
|
+
* <bcm-drawer id="myDrawer">Content</bcm-drawer>
|
|
733
|
+
* <script>
|
|
734
|
+
* document.getElementById('myDrawer').show();
|
|
735
|
+
* </script>
|
|
736
|
+
* ```
|
|
737
|
+
*/
|
|
638
738
|
interface BcmDrawer {
|
|
639
739
|
/**
|
|
740
|
+
* Controls backdrop behavior - true: Shows backdrop, drawer can be closed by clicking outside - false: No backdrop - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
|
|
741
|
+
* @default true
|
|
742
|
+
*/
|
|
743
|
+
"backdrop": boolean | 'static';
|
|
744
|
+
/**
|
|
745
|
+
* Allows closing the drawer by clicking on the backdrop
|
|
746
|
+
* @default true
|
|
747
|
+
*/
|
|
748
|
+
"closeOnBackdrop": boolean;
|
|
749
|
+
/**
|
|
750
|
+
* Allows closing the drawer by pressing the Escape key
|
|
751
|
+
* @default true
|
|
752
|
+
*/
|
|
753
|
+
"closeOnEscape": boolean;
|
|
754
|
+
/**
|
|
755
|
+
* Makes the drawer take the full screen (100vw x 100vh)
|
|
756
|
+
* @default false
|
|
757
|
+
*/
|
|
758
|
+
"fullScreen": boolean;
|
|
759
|
+
/**
|
|
760
|
+
* Makes the drawer take full width (for left/right) or full height (for top/bottom)
|
|
640
761
|
* @default false
|
|
641
762
|
*/
|
|
642
763
|
"fullWidth": boolean;
|
|
764
|
+
/**
|
|
765
|
+
* Text to display in the drawer header
|
|
766
|
+
*/
|
|
643
767
|
"headerText"?: string;
|
|
768
|
+
/**
|
|
769
|
+
* Helper text to display below the header title
|
|
770
|
+
*/
|
|
771
|
+
"helperText"?: string;
|
|
772
|
+
/**
|
|
773
|
+
* Programmatically closes the drawer
|
|
774
|
+
*/
|
|
644
775
|
"hide": () => Promise<void>;
|
|
645
776
|
/**
|
|
777
|
+
* Hides the footer section completely
|
|
778
|
+
* @default false
|
|
779
|
+
*/
|
|
780
|
+
"noFooter": boolean;
|
|
781
|
+
/**
|
|
782
|
+
* Hides the header section completely
|
|
646
783
|
* @default false
|
|
647
784
|
*/
|
|
648
785
|
"noHeader": boolean;
|
|
649
786
|
/**
|
|
787
|
+
* Controls whether the drawer is open or closed
|
|
650
788
|
* @default false
|
|
651
789
|
*/
|
|
652
790
|
"open": boolean;
|
|
653
791
|
/**
|
|
792
|
+
* The position where the drawer slides in from - 'left': Slides from the left edge - 'right': Slides from the right edge - 'top': Slides from the top edge - 'bottom': Slides from the bottom edge
|
|
654
793
|
* @default 'right'
|
|
655
794
|
*/
|
|
656
795
|
"position": DrawerPosition;
|
|
796
|
+
/**
|
|
797
|
+
* Programmatically opens the drawer
|
|
798
|
+
*/
|
|
657
799
|
"show": () => Promise<void>;
|
|
658
800
|
/**
|
|
801
|
+
* The size of the drawer. Can be a preset value or a custom CSS size - For left/right drawers: - 'small': 320px - 'medium': 480px - 'large': 1064px - For top/bottom drawers: - 'small': 40vh - 'medium': 60vh - 'large': 90vh - Custom values: Any valid CSS size (e.g., '600px', '50%', '30rem', '80vw')
|
|
659
802
|
* @default 'medium'
|
|
660
803
|
*/
|
|
661
804
|
"size": DrawerSize;
|
|
805
|
+
/**
|
|
806
|
+
* Toggles the drawer open/closed state
|
|
807
|
+
*/
|
|
808
|
+
"toggle": () => Promise<void>;
|
|
662
809
|
}
|
|
663
810
|
interface BcmDropdown {
|
|
664
811
|
"text"?: string;
|
|
@@ -680,6 +827,56 @@ export namespace Components {
|
|
|
680
827
|
"selected": boolean;
|
|
681
828
|
"text": string;
|
|
682
829
|
}
|
|
830
|
+
interface BcmFileUpload {
|
|
831
|
+
/**
|
|
832
|
+
* @default '.xls,.pdf'
|
|
833
|
+
*/
|
|
834
|
+
"accept": string;
|
|
835
|
+
/**
|
|
836
|
+
* @default ''
|
|
837
|
+
*/
|
|
838
|
+
"caption"?: string;
|
|
839
|
+
/**
|
|
840
|
+
* Allows consumers to override default error messages.
|
|
841
|
+
*/
|
|
842
|
+
"customErrorMessages"?: BcmUploadErrorMessages;
|
|
843
|
+
/**
|
|
844
|
+
* @default false
|
|
845
|
+
*/
|
|
846
|
+
"disabled": boolean;
|
|
847
|
+
/**
|
|
848
|
+
* @default ''
|
|
849
|
+
*/
|
|
850
|
+
"label": string;
|
|
851
|
+
/**
|
|
852
|
+
* Maximum number of files allowed in total. Only applied when `multiple` is true.
|
|
853
|
+
*/
|
|
854
|
+
"maxFileCount"?: number;
|
|
855
|
+
/**
|
|
856
|
+
* @default 2
|
|
857
|
+
*/
|
|
858
|
+
"maxSize": number;
|
|
859
|
+
/**
|
|
860
|
+
* @default false
|
|
861
|
+
*/
|
|
862
|
+
"multiple": boolean;
|
|
863
|
+
/**
|
|
864
|
+
* @default 'file'
|
|
865
|
+
*/
|
|
866
|
+
"name": string;
|
|
867
|
+
/**
|
|
868
|
+
* @default false
|
|
869
|
+
*/
|
|
870
|
+
"required": boolean;
|
|
871
|
+
/**
|
|
872
|
+
* @default 'medium'
|
|
873
|
+
*/
|
|
874
|
+
"size": 'medium' | 'small';
|
|
875
|
+
/**
|
|
876
|
+
* Reserved for future backend upload integration. Currently does not affect component behavior.
|
|
877
|
+
*/
|
|
878
|
+
"uploadUrl"?: string;
|
|
879
|
+
}
|
|
683
880
|
interface BcmInput {
|
|
684
881
|
/**
|
|
685
882
|
* Input id
|
|
@@ -807,221 +1004,436 @@ export namespace Components {
|
|
|
807
1004
|
*/
|
|
808
1005
|
"value": string;
|
|
809
1006
|
}
|
|
1007
|
+
/**
|
|
1008
|
+
* @component BcmLinked
|
|
1009
|
+
* @description A flexible linked floating element component that displays contextual content relative to a trigger element.
|
|
1010
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
1011
|
+
* Supports different trigger types (click, hover, focus, manual) and comprehensive event system.
|
|
1012
|
+
* @example Basic Click Trigger
|
|
1013
|
+
* <bcm-linked trigger="click">
|
|
1014
|
+
* <button slot="trigger">Click Me</button>
|
|
1015
|
+
* <div>Floating content here</div>
|
|
1016
|
+
* </bcm-linked>
|
|
1017
|
+
* @example Hover Trigger with Delays
|
|
1018
|
+
* <bcm-linked trigger="hover" show-delay="200" hide-delay="100">
|
|
1019
|
+
* <span slot="trigger">Hover Me</span>
|
|
1020
|
+
* <div>This appears on hover</div>
|
|
1021
|
+
* </bcm-linked>
|
|
1022
|
+
* @example Manual Control
|
|
1023
|
+
* <bcm-linked id="my-linked" trigger="manual">
|
|
1024
|
+
* <button slot="trigger">Trigger</button>
|
|
1025
|
+
* <div>Controlled content</div>
|
|
1026
|
+
* </bcm-linked>
|
|
1027
|
+
* <script>
|
|
1028
|
+
* const linked = document.querySelector('#my-linked');
|
|
1029
|
+
* linked.show(); // Opens the floating element
|
|
1030
|
+
* linked.hide(); // Closes the floating element
|
|
1031
|
+
* </script>
|
|
1032
|
+
* @csspart floating - The floating container element
|
|
1033
|
+
* @csspart arrow - The arrow element pointing to the trigger
|
|
1034
|
+
* @csspart content - The content wrapper element
|
|
1035
|
+
*/
|
|
810
1036
|
interface BcmLinked {
|
|
811
1037
|
/**
|
|
812
|
-
* @
|
|
1038
|
+
* @prop {boolean} closeOnEscape - Whether to close when pressing Escape key. Default: true
|
|
1039
|
+
* @default true
|
|
813
1040
|
*/
|
|
814
|
-
"
|
|
1041
|
+
"closeOnEscape": boolean;
|
|
815
1042
|
/**
|
|
816
|
-
* @
|
|
1043
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside. Default: true
|
|
1044
|
+
* @default true
|
|
817
1045
|
*/
|
|
818
|
-
"
|
|
1046
|
+
"closeOnOutsideClick": boolean;
|
|
819
1047
|
/**
|
|
1048
|
+
* @prop {boolean} disabled - Disables the floating element, preventing it from showing. Default: false
|
|
820
1049
|
* @default false
|
|
821
1050
|
*/
|
|
822
|
-
"
|
|
1051
|
+
"disabled": boolean;
|
|
823
1052
|
/**
|
|
824
|
-
*
|
|
1053
|
+
* Programmatically hides the floating element. Respects the hideDelay prop.
|
|
825
1054
|
*/
|
|
826
|
-
"disabled": boolean;
|
|
827
1055
|
"hide": () => Promise<void>;
|
|
828
1056
|
/**
|
|
1057
|
+
* @prop {number} hideDelay - Delay in milliseconds before hiding the floating element. Default: 0
|
|
829
1058
|
* @default 0
|
|
830
1059
|
*/
|
|
831
1060
|
"hideDelay": number;
|
|
832
1061
|
/**
|
|
1062
|
+
* @prop {number} offsetDistance - Distance in pixels between the floating element and the trigger. Default: 8
|
|
833
1063
|
* @default 8
|
|
834
1064
|
*/
|
|
835
|
-
"
|
|
1065
|
+
"offsetDistance": number;
|
|
836
1066
|
/**
|
|
1067
|
+
* @prop {Placement} placement - Defines the position of the floating element relative to the trigger. Default: 'bottom-start'
|
|
837
1068
|
* @default 'bottom-start'
|
|
838
1069
|
*/
|
|
839
1070
|
"placement": Placement;
|
|
1071
|
+
/**
|
|
1072
|
+
* Programmatically shows the floating element. Respects the showDelay prop.
|
|
1073
|
+
*/
|
|
840
1074
|
"show": () => Promise<void>;
|
|
841
1075
|
/**
|
|
1076
|
+
* @prop {boolean} showArrow - Whether to show an arrow pointing to the trigger element. Default: true
|
|
1077
|
+
* @default true
|
|
1078
|
+
*/
|
|
1079
|
+
"showArrow": boolean;
|
|
1080
|
+
/**
|
|
1081
|
+
* @prop {number} showDelay - Delay in milliseconds before showing the floating element. Default: 0
|
|
842
1082
|
* @default 0
|
|
843
1083
|
*/
|
|
844
1084
|
"showDelay": number;
|
|
845
|
-
|
|
846
|
-
|
|
1085
|
+
/**
|
|
1086
|
+
* Toggles the floating element visibility.
|
|
1087
|
+
*/
|
|
847
1088
|
"toggle": () => Promise<void>;
|
|
848
1089
|
/**
|
|
1090
|
+
* @prop {TriggerType} trigger - Defines the interaction type to show/hide the floating element. 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave, 'focus' shows on focus and hides on blur, 'manual' requires programmatic control. Default: 'click'
|
|
849
1091
|
* @default 'click'
|
|
850
1092
|
*/
|
|
851
1093
|
"trigger": TriggerType;
|
|
852
|
-
"updatePositioning": () => Promise<void>;
|
|
853
1094
|
/**
|
|
854
|
-
*
|
|
1095
|
+
* Updates the position of the floating element. Useful when the trigger element moves or resizes.
|
|
1096
|
+
*/
|
|
1097
|
+
"updatePosition": () => Promise<void>;
|
|
1098
|
+
/**
|
|
1099
|
+
* @prop {boolean} visible - Controls the visibility state of the floating element. Can be set programmatically or toggled by user interaction. Default: false
|
|
1100
|
+
* @default false
|
|
855
1101
|
*/
|
|
856
|
-
"
|
|
1102
|
+
"visible": boolean;
|
|
857
1103
|
}
|
|
1104
|
+
/**
|
|
1105
|
+
* @component BcmModal
|
|
1106
|
+
* @description A flexible modal dialog component built on the native HTML Dialog API.
|
|
1107
|
+
* Provides a powerful way to display content in a layer above the page with full keyboard and focus management.
|
|
1108
|
+
* @example ```html
|
|
1109
|
+
* <!-- Basic usage -->
|
|
1110
|
+
* <bcm-modal open header-text="Welcome" helper-text="Please read carefully">
|
|
1111
|
+
* <p>Modal content goes here</p>
|
|
1112
|
+
* <div slot="footer">
|
|
1113
|
+
* <button data-dismiss>Close</button>
|
|
1114
|
+
* </div>
|
|
1115
|
+
* </bcm-modal>
|
|
1116
|
+
* <!-- Custom size and placement -->
|
|
1117
|
+
* <bcm-modal size="large" placement="top">
|
|
1118
|
+
* <div slot="header">Custom Header</div>
|
|
1119
|
+
* <p>Content here</p>
|
|
1120
|
+
* <div slot="footer">
|
|
1121
|
+
* <button>Cancel</button>
|
|
1122
|
+
* <button>Confirm</button>
|
|
1123
|
+
* </div>
|
|
1124
|
+
* </bcm-modal>
|
|
1125
|
+
* <!-- Full screen modal -->
|
|
1126
|
+
* <bcm-modal full-screen no-footer>
|
|
1127
|
+
* <p>Full screen content</p>
|
|
1128
|
+
* </bcm-modal>
|
|
1129
|
+
* <!-- Programmatic usage -->
|
|
1130
|
+
* <bcm-modal id="myModal">Content</bcm-modal>
|
|
1131
|
+
* <script>
|
|
1132
|
+
* document.getElementById('myModal').show();
|
|
1133
|
+
* </script>
|
|
1134
|
+
* ```
|
|
1135
|
+
*/
|
|
858
1136
|
interface BcmModal {
|
|
859
1137
|
/**
|
|
1138
|
+
* Controls backdrop behavior - true: Shows backdrop, modal can be closed by clicking outside - false: No backdrop - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
|
|
860
1139
|
* @default true
|
|
861
1140
|
*/
|
|
862
1141
|
"backdrop": boolean | 'static';
|
|
863
1142
|
/**
|
|
1143
|
+
* Allows closing the modal by clicking on the backdrop
|
|
864
1144
|
* @default true
|
|
865
1145
|
*/
|
|
866
1146
|
"closeOnBackdrop": boolean;
|
|
867
1147
|
/**
|
|
1148
|
+
* Allows closing the modal by pressing the Escape key
|
|
868
1149
|
* @default true
|
|
869
1150
|
*/
|
|
870
1151
|
"closeOnEscape": boolean;
|
|
871
1152
|
/**
|
|
1153
|
+
* Makes the modal take the full screen (100vw x 100vh, no border radius)
|
|
872
1154
|
* @default false
|
|
873
1155
|
*/
|
|
874
1156
|
"fullScreen": boolean;
|
|
875
1157
|
/**
|
|
1158
|
+
* Makes the modal take full width of the viewport (max-width: 100%)
|
|
876
1159
|
* @default false
|
|
877
1160
|
*/
|
|
878
1161
|
"fullWidth": boolean;
|
|
1162
|
+
/**
|
|
1163
|
+
* Text to display in the modal header
|
|
1164
|
+
*/
|
|
879
1165
|
"headerText"?: string;
|
|
1166
|
+
/**
|
|
1167
|
+
* Helper text to display below the header title
|
|
1168
|
+
*/
|
|
880
1169
|
"helperText"?: string;
|
|
1170
|
+
/**
|
|
1171
|
+
* Programmatically closes the modal
|
|
1172
|
+
*/
|
|
881
1173
|
"hide": () => Promise<void>;
|
|
882
1174
|
/**
|
|
1175
|
+
* Hides the footer section completely
|
|
883
1176
|
* @default false
|
|
884
1177
|
*/
|
|
885
1178
|
"noFooter": boolean;
|
|
886
1179
|
/**
|
|
1180
|
+
* Hides the header section completely
|
|
887
1181
|
* @default false
|
|
888
1182
|
*/
|
|
889
1183
|
"noHeader": boolean;
|
|
890
1184
|
/**
|
|
1185
|
+
* Controls whether the modal is open or closed
|
|
891
1186
|
* @default false
|
|
892
1187
|
*/
|
|
893
1188
|
"open": boolean;
|
|
894
1189
|
/**
|
|
1190
|
+
* The placement of the modal on the screen - 'center': Centered vertically and horizontally - 'top': Aligned to the top with 80px padding
|
|
895
1191
|
* @default 'center'
|
|
896
1192
|
*/
|
|
897
1193
|
"placement": ModalPlacement;
|
|
1194
|
+
/**
|
|
1195
|
+
* Programmatically opens the modal
|
|
1196
|
+
*/
|
|
898
1197
|
"show": () => Promise<void>;
|
|
899
1198
|
/**
|
|
1199
|
+
* The size of the modal - 'small': 400px - 'medium': 600px - 'large': 800px - 'xlarge': 1024px - 'xxlarge': 1200px - 'full': 100% width
|
|
900
1200
|
* @default 'medium'
|
|
901
1201
|
*/
|
|
902
1202
|
"size": ModalSize;
|
|
1203
|
+
/**
|
|
1204
|
+
* Toggles the modal open/closed state
|
|
1205
|
+
*/
|
|
903
1206
|
"toggle": () => Promise<void>;
|
|
904
1207
|
}
|
|
905
1208
|
/**
|
|
906
1209
|
* @component BcmPopConfirm
|
|
907
|
-
* @description A
|
|
908
|
-
*
|
|
909
|
-
*
|
|
910
|
-
*
|
|
911
|
-
* @
|
|
912
|
-
*
|
|
913
|
-
*
|
|
914
|
-
*
|
|
915
|
-
*
|
|
1210
|
+
* @description A confirmation popover component that displays a confirmation dialog with customizable actions.
|
|
1211
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
1212
|
+
* Ideal for confirming destructive actions or important decisions inline.
|
|
1213
|
+
* @csspart container - The main popover container element
|
|
1214
|
+
* @csspart arrow - The arrow pointer element
|
|
1215
|
+
* @csspart body - The body/description section
|
|
1216
|
+
* @csspart footer - The footer section with action buttons
|
|
1217
|
+
* @example Basic Usage
|
|
1218
|
+
* ```html
|
|
1219
|
+
* <bcm-pop-confirm
|
|
1220
|
+
* header-text="Delete Item?"
|
|
1221
|
+
* description="Are you sure you want to delete this item? This action cannot be undone."
|
|
1222
|
+
* status="error"
|
|
1223
|
+
* >
|
|
1224
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
916
1225
|
* </bcm-pop-confirm>
|
|
917
|
-
*
|
|
918
|
-
*
|
|
919
|
-
*
|
|
920
|
-
*
|
|
921
|
-
*
|
|
1226
|
+
* ```
|
|
1227
|
+
* @example With Event Handlers
|
|
1228
|
+
* ```html
|
|
1229
|
+
* <bcm-pop-confirm
|
|
1230
|
+
* id="deleteConfirm"
|
|
1231
|
+
* header-text="Confirm Delete"
|
|
1232
|
+
* description="This will permanently delete the item."
|
|
1233
|
+
* status="warning"
|
|
1234
|
+
* confirm-text="Yes, Delete"
|
|
1235
|
+
* cancel-text="No, Keep It"
|
|
1236
|
+
* >
|
|
1237
|
+
* <bcm-button>Delete Item</bcm-button>
|
|
1238
|
+
* </bcm-pop-confirm>
|
|
1239
|
+
* <script>
|
|
1240
|
+
* const popconfirm = document.getElementById('deleteConfirm');
|
|
1241
|
+
* popconfirm.addEventListener('bcmConfirm', () => {
|
|
1242
|
+
* console.log('User confirmed deletion');
|
|
1243
|
+
* // Perform delete operation
|
|
922
1244
|
* });
|
|
923
|
-
*
|
|
924
|
-
* console.log('User
|
|
1245
|
+
* popconfirm.addEventListener('bcmCancel', () => {
|
|
1246
|
+
* console.log('User cancelled deletion');
|
|
925
1247
|
* });
|
|
926
|
-
*
|
|
927
|
-
*
|
|
928
|
-
*
|
|
929
|
-
*
|
|
930
|
-
*
|
|
931
|
-
*
|
|
932
|
-
*
|
|
933
|
-
*
|
|
934
|
-
*
|
|
935
|
-
*
|
|
936
|
-
*
|
|
937
|
-
*
|
|
938
|
-
*
|
|
939
|
-
*
|
|
940
|
-
*
|
|
941
|
-
*
|
|
942
|
-
*
|
|
943
|
-
*
|
|
944
|
-
*
|
|
945
|
-
*
|
|
946
|
-
*
|
|
947
|
-
* @
|
|
948
|
-
*
|
|
949
|
-
*
|
|
950
|
-
*
|
|
1248
|
+
* </script>
|
|
1249
|
+
* ```
|
|
1250
|
+
* @example Different Status Types
|
|
1251
|
+
* ```html
|
|
1252
|
+
* <!-- Info (default) -->
|
|
1253
|
+
* <bcm-pop-confirm header-text="Information" description="This is an info message">
|
|
1254
|
+
* <bcm-button>Info</bcm-button>
|
|
1255
|
+
* </bcm-pop-confirm>
|
|
1256
|
+
* <!-- Success -->
|
|
1257
|
+
* <bcm-pop-confirm status="success" header-text="Confirm Action" description="Proceed with this action?">
|
|
1258
|
+
* <bcm-button status="success">Proceed</bcm-button>
|
|
1259
|
+
* </bcm-pop-confirm>
|
|
1260
|
+
* <!-- Warning -->
|
|
1261
|
+
* <bcm-pop-confirm status="warning" header-text="Warning" description="This action may have consequences">
|
|
1262
|
+
* <bcm-button status="warning">Continue</bcm-button>
|
|
1263
|
+
* </bcm-pop-confirm>
|
|
1264
|
+
* <!-- Error/Danger -->
|
|
1265
|
+
* <bcm-pop-confirm status="error" header-text="Danger Zone" description="This is a destructive action">
|
|
1266
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
1267
|
+
* </bcm-pop-confirm>
|
|
1268
|
+
* ```
|
|
1269
|
+
* @example Custom Content with Slots
|
|
1270
|
+
* ```html
|
|
1271
|
+
* <bcm-pop-confirm status="warning">
|
|
1272
|
+
* <bcm-button>Custom Confirm</bcm-button>
|
|
1273
|
+
* <div slot="header">
|
|
1274
|
+
* <strong>Custom Header</strong>
|
|
1275
|
+
* </div>
|
|
1276
|
+
* <div slot="body">
|
|
1277
|
+
* <p>This is custom body content with <strong>HTML formatting</strong>.</p>
|
|
1278
|
+
* <ul>
|
|
1279
|
+
* <li>Point 1</li>
|
|
1280
|
+
* <li>Point 2</li>
|
|
1281
|
+
* </ul>
|
|
1282
|
+
* </div>
|
|
1283
|
+
* <div slot="footer">
|
|
1284
|
+
* <bcm-button kind="outline" size="small">Maybe Later</bcm-button>
|
|
1285
|
+
* <bcm-button status="success" size="small">Confirm</bcm-button>
|
|
1286
|
+
* </div>
|
|
1287
|
+
* </bcm-pop-confirm>
|
|
1288
|
+
* ```
|
|
1289
|
+
* @example Different Sizes
|
|
1290
|
+
* ```html
|
|
1291
|
+
* <!-- Small -->
|
|
1292
|
+
* <bcm-pop-confirm size="small" header-text="Small" description="Compact confirmation">
|
|
1293
|
+
* <bcm-button size="small">Small</bcm-button>
|
|
1294
|
+
* </bcm-pop-confirm>
|
|
1295
|
+
* <!-- Medium (default) -->
|
|
1296
|
+
* <bcm-pop-confirm size="medium" header-text="Medium" description="Standard confirmation">
|
|
1297
|
+
* <bcm-button size="medium">Medium</bcm-button>
|
|
1298
|
+
* </bcm-pop-confirm>
|
|
1299
|
+
* <!-- Large -->
|
|
1300
|
+
* <bcm-pop-confirm size="large" header-text="Large" description="Spacious confirmation with more room for content">
|
|
1301
|
+
* <bcm-button size="large">Large</bcm-button>
|
|
1302
|
+
* </bcm-pop-confirm>
|
|
1303
|
+
* ```
|
|
1304
|
+
* @example Programmatic Control
|
|
1305
|
+
* ```html
|
|
1306
|
+
* <bcm-pop-confirm id="myConfirm" header-text="Confirm" description="Are you sure?">
|
|
1307
|
+
* <bcm-button>Trigger</bcm-button>
|
|
1308
|
+
* </bcm-pop-confirm>
|
|
1309
|
+
* <bcm-button id="showBtn">Show Programmatically</bcm-button>
|
|
1310
|
+
* <bcm-button id="hideBtn">Hide Programmatically</bcm-button>
|
|
1311
|
+
* <script>
|
|
1312
|
+
* const popconfirm = document.getElementById('myConfirm');
|
|
1313
|
+
* document.getElementById('showBtn').addEventListener('click', () => {
|
|
1314
|
+
* popconfirm.show();
|
|
1315
|
+
* });
|
|
1316
|
+
* document.getElementById('hideBtn').addEventListener('click', () => {
|
|
1317
|
+
* popconfirm.hide();
|
|
1318
|
+
* });
|
|
1319
|
+
* </script>
|
|
1320
|
+
* ```
|
|
1321
|
+
* @example Without Status Icon
|
|
1322
|
+
* ```html
|
|
1323
|
+
* <bcm-pop-confirm
|
|
1324
|
+
* header-text="Simple Confirmation"
|
|
1325
|
+
* description="No status icon shown"
|
|
1326
|
+
* status-icon={false}
|
|
1327
|
+
* >
|
|
1328
|
+
* <bcm-button>Click Me</bcm-button>
|
|
1329
|
+
* </bcm-pop-confirm>
|
|
1330
|
+
* ```
|
|
1331
|
+
* @example Different Placements
|
|
1332
|
+
* ```html
|
|
1333
|
+
* <bcm-pop-confirm placement="top" header-text="Top" description="Opens above">
|
|
1334
|
+
* <bcm-button>Top</bcm-button>
|
|
1335
|
+
* </bcm-pop-confirm>
|
|
1336
|
+
* <bcm-pop-confirm placement="right" header-text="Right" description="Opens to the right">
|
|
1337
|
+
* <bcm-button>Right</bcm-button>
|
|
1338
|
+
* </bcm-pop-confirm>
|
|
1339
|
+
* <bcm-pop-confirm placement="bottom" header-text="Bottom" description="Opens below">
|
|
1340
|
+
* <bcm-button>Bottom</bcm-button>
|
|
1341
|
+
* </bcm-pop-confirm>
|
|
1342
|
+
* <bcm-pop-confirm placement="left" header-text="Left" description="Opens to the left">
|
|
1343
|
+
* <bcm-button>Left</bcm-button>
|
|
1344
|
+
* </bcm-pop-confirm>
|
|
1345
|
+
* ```
|
|
951
1346
|
*/
|
|
952
1347
|
interface BcmPopConfirm {
|
|
953
1348
|
/**
|
|
954
|
-
*
|
|
955
|
-
* @default 'var(--bcm-ui-color-background-basic-panel)'
|
|
956
|
-
*/
|
|
957
|
-
"arrowColor": string;
|
|
958
|
-
/**
|
|
959
|
-
* The text displayed on the cancel button.
|
|
1349
|
+
* @prop {string} cancelText - Text for the cancel button. Default: 'Cancel'
|
|
960
1350
|
* @default 'Cancel'
|
|
961
1351
|
*/
|
|
962
1352
|
"cancelText": string;
|
|
963
1353
|
/**
|
|
964
|
-
*
|
|
1354
|
+
* @prop {boolean} closeOnEscape - Whether to close when pressing the Escape key. Default: true
|
|
1355
|
+
* @default true
|
|
1356
|
+
*/
|
|
1357
|
+
"closeOnEscape": boolean;
|
|
1358
|
+
/**
|
|
1359
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside the popover. Default: true
|
|
1360
|
+
* @default true
|
|
1361
|
+
*/
|
|
1362
|
+
"closeOnOutsideClick": boolean;
|
|
1363
|
+
/**
|
|
1364
|
+
* @prop {string} confirmText - Text for the confirm button. Default: 'Yes'
|
|
965
1365
|
* @default 'Yes'
|
|
966
1366
|
*/
|
|
967
1367
|
"confirmText": string;
|
|
968
1368
|
/**
|
|
969
|
-
*
|
|
1369
|
+
* @prop {string} description - Description text displayed in the body section. Can be overridden by using the 'body' slot. Default: ''
|
|
970
1370
|
* @default ''
|
|
971
1371
|
*/
|
|
972
1372
|
"description": string;
|
|
973
1373
|
/**
|
|
974
|
-
*
|
|
1374
|
+
* @prop {string} headerText - Text displayed in the header section. Can be overridden by using the 'header' slot. Default: ''
|
|
975
1375
|
* @default ''
|
|
976
1376
|
*/
|
|
977
1377
|
"headerText": string;
|
|
978
1378
|
/**
|
|
979
|
-
* Programmatically hides the
|
|
980
|
-
* @returns
|
|
1379
|
+
* Programmatically hides the popconfirm.
|
|
1380
|
+
* @returns Promise that resolves when the hide operation begins
|
|
981
1381
|
*/
|
|
982
1382
|
"hide": () => Promise<void>;
|
|
983
1383
|
/**
|
|
984
|
-
*
|
|
985
|
-
* @default
|
|
1384
|
+
* @prop {number} offsetDistance - Distance in pixels between the popover and trigger element. Default: 12
|
|
1385
|
+
* @default 12
|
|
986
1386
|
*/
|
|
987
|
-
"
|
|
1387
|
+
"offsetDistance": number;
|
|
1388
|
+
/**
|
|
1389
|
+
* @prop {PopConfirmPlacement} placement - Position of the popover relative to the trigger element. Automatically flips if there's not enough space. Default: 'top'
|
|
1390
|
+
* @default 'top'
|
|
1391
|
+
*/
|
|
1392
|
+
"placement": PopConfirmPlacement;
|
|
988
1393
|
/**
|
|
989
|
-
* Programmatically shows the
|
|
990
|
-
* @returns
|
|
1394
|
+
* Programmatically shows the popconfirm.
|
|
1395
|
+
* @returns Promise that resolves when the show operation begins
|
|
991
1396
|
*/
|
|
992
1397
|
"show": () => Promise<void>;
|
|
993
1398
|
/**
|
|
994
|
-
*
|
|
1399
|
+
* @prop {boolean} showArrow - Whether to show the arrow pointing to the trigger. Default: true
|
|
1400
|
+
* @default true
|
|
1401
|
+
*/
|
|
1402
|
+
"showArrow": boolean;
|
|
1403
|
+
/**
|
|
1404
|
+
* @prop {PopConfirmSize} size - Size variant that controls padding and text size. - 'small': Compact size with minimal padding - 'medium': Standard size - 'large': Spacious size with more padding Default: 'medium'
|
|
995
1405
|
* @default 'medium'
|
|
996
1406
|
*/
|
|
997
|
-
"size":
|
|
1407
|
+
"size": PopConfirmSize;
|
|
998
1408
|
/**
|
|
999
|
-
*
|
|
1409
|
+
* @prop {PopConfirmStatus} status - Status type that determines the color scheme and icon. - 'info': Informational (blue) - 'success': Success/positive action (green) - 'warning': Warning/caution (yellow) - 'error': Error/destructive action (red) Default: 'info'
|
|
1000
1410
|
* @default 'info'
|
|
1001
1411
|
*/
|
|
1002
|
-
"status":
|
|
1412
|
+
"status": PopConfirmStatus;
|
|
1003
1413
|
/**
|
|
1004
|
-
* Whether to
|
|
1414
|
+
* @prop {boolean} statusIcon - Whether to show the status icon in the header. Icon only shows if headerText is also provided. Default: true
|
|
1005
1415
|
* @default true
|
|
1006
1416
|
*/
|
|
1007
1417
|
"statusIcon": boolean;
|
|
1008
1418
|
/**
|
|
1009
|
-
*
|
|
1419
|
+
* Toggles the popconfirm visibility. If open, it will close. If closed, it will open.
|
|
1420
|
+
* @returns Promise that resolves when the toggle operation completes
|
|
1010
1421
|
*/
|
|
1011
|
-
"
|
|
1422
|
+
"toggle": () => Promise<void>;
|
|
1012
1423
|
}
|
|
1013
1424
|
/**
|
|
1014
1425
|
* @component BcmPopover
|
|
1015
1426
|
* @description A flexible popover component that displays contextual information or content relative to a target element.
|
|
1016
|
-
*
|
|
1427
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
1428
|
+
* Supports different sizes, trigger types (click, hover, focus), placements, and comprehensive event system.
|
|
1017
1429
|
* @example Basic Click Popover
|
|
1018
1430
|
* <bcm-popover trigger="click" size="medium" placement="top">
|
|
1019
1431
|
* <bcm-button>Click Me</bcm-button>
|
|
1020
1432
|
* <span slot="header">Header</span>
|
|
1021
1433
|
* <span slot="content">This is a simple popover content.</span>
|
|
1022
1434
|
* </bcm-popover>
|
|
1023
|
-
* @example Hover Popover with
|
|
1024
|
-
* <bcm-popover trigger="hover"
|
|
1435
|
+
* @example Hover Popover with Delays
|
|
1436
|
+
* <bcm-popover trigger="hover" show-delay="200" hide-delay="100" size="large" placement="right" header-text="Prop Header" message="This is a hover popover with props.">
|
|
1025
1437
|
* <bcm-button>Hover Me</bcm-button>
|
|
1026
1438
|
* </bcm-popover>
|
|
1027
1439
|
* @example Programmatic Control
|
|
@@ -1031,8 +1443,9 @@ export namespace Components {
|
|
|
1031
1443
|
* </bcm-popover>
|
|
1032
1444
|
* <script>
|
|
1033
1445
|
* const popover = document.querySelector('#my-popover');
|
|
1034
|
-
* popover.
|
|
1035
|
-
* popover.
|
|
1446
|
+
* popover.show(); // Opens the popover
|
|
1447
|
+
* popover.hide(); // Closes the popover
|
|
1448
|
+
* popover.toggle(); // Toggles the popover
|
|
1036
1449
|
* </script>
|
|
1037
1450
|
* @csspart popover - The root popover container element, stylable for the entire popover
|
|
1038
1451
|
* @csspart header - The header section of the popover, stylable for the title area
|
|
@@ -1041,50 +1454,76 @@ export namespace Components {
|
|
|
1041
1454
|
*/
|
|
1042
1455
|
interface BcmPopover {
|
|
1043
1456
|
/**
|
|
1044
|
-
* @
|
|
1045
|
-
* @
|
|
1457
|
+
* @prop {boolean} arrow - Whether to show an arrow pointing to the trigger element. Default: true
|
|
1458
|
+
* @default true
|
|
1046
1459
|
*/
|
|
1047
|
-
"
|
|
1460
|
+
"arrow": boolean;
|
|
1461
|
+
/**
|
|
1462
|
+
* @prop {boolean} closeOnEscape - Whether to close the popover when pressing Escape key. Default: true
|
|
1463
|
+
* @default true
|
|
1464
|
+
*/
|
|
1465
|
+
"closeOnEscape": boolean;
|
|
1466
|
+
/**
|
|
1467
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close the popover when clicking outside. Default: true
|
|
1468
|
+
* @default true
|
|
1469
|
+
*/
|
|
1470
|
+
"closeOnOutsideClick": boolean;
|
|
1048
1471
|
/**
|
|
1049
1472
|
* @prop {string} headerText - Custom text for the popover header. Used as fallback content if the 'header' slot is not provided.
|
|
1050
1473
|
*/
|
|
1051
|
-
"headerText"
|
|
1474
|
+
"headerText"?: string;
|
|
1052
1475
|
/**
|
|
1053
|
-
*
|
|
1054
|
-
* @default 150
|
|
1476
|
+
* Programmatically hides the popover. Respects the hideDelay prop.
|
|
1055
1477
|
*/
|
|
1056
|
-
"
|
|
1478
|
+
"hide": () => Promise<void>;
|
|
1479
|
+
/**
|
|
1480
|
+
* @prop {number} hideDelay - Delay in milliseconds before hiding the popover. Provides a grace period for mouse movements. Default: 0
|
|
1481
|
+
* @default 0
|
|
1482
|
+
*/
|
|
1483
|
+
"hideDelay": number;
|
|
1057
1484
|
/**
|
|
1058
1485
|
* @prop {string} message - Custom text for the popover content. Used as fallback content if the 'content' slot is not provided.
|
|
1059
1486
|
*/
|
|
1060
|
-
"message"
|
|
1487
|
+
"message"?: string;
|
|
1061
1488
|
/**
|
|
1062
|
-
* @prop {boolean} open -
|
|
1489
|
+
* @prop {boolean} open - Controls the open state of the popover. Can be set programmatically or toggled by user interaction. Default: false
|
|
1063
1490
|
* @default false
|
|
1064
1491
|
*/
|
|
1065
1492
|
"open": boolean;
|
|
1066
|
-
/**
|
|
1067
|
-
* @method {Promise<void>} openPopup - Programmatically opens the popover. Triggers the showPopover logic to display the popover with the specified hover delay (if applicable).
|
|
1068
|
-
* @returns A promise that resolves when the popover is opened.
|
|
1069
|
-
*/
|
|
1070
|
-
"openPopup": () => Promise<void>;
|
|
1071
1493
|
/**
|
|
1072
1494
|
* @prop {('top' | 'right' | 'bottom' | 'left')} placement - Defines the position of the popover relative to the target element. Determines where the popover appears around the trigger element. Default: 'top'
|
|
1073
1495
|
* @default 'top'
|
|
1074
1496
|
*/
|
|
1075
1497
|
"placement": 'top' | 'right' | 'bottom' | 'left';
|
|
1498
|
+
/**
|
|
1499
|
+
* Programmatically shows the popover. Respects the showDelay prop.
|
|
1500
|
+
*/
|
|
1501
|
+
"show": () => Promise<void>;
|
|
1502
|
+
/**
|
|
1503
|
+
* @prop {number} showDelay - Delay in milliseconds before showing the popover. Useful to prevent popovers from appearing on quick mouse movements. Default: 0
|
|
1504
|
+
* @default 0
|
|
1505
|
+
*/
|
|
1506
|
+
"showDelay": number;
|
|
1076
1507
|
/**
|
|
1077
1508
|
* @prop {('small' | 'medium' | 'large')} size - Defines the size of the popover. Controls the text size and padding of the popover content. Default: 'medium'
|
|
1078
1509
|
* @default 'medium'
|
|
1079
1510
|
*/
|
|
1080
1511
|
"size": 'small' | 'medium' | 'large';
|
|
1081
1512
|
/**
|
|
1082
|
-
*
|
|
1513
|
+
* Toggles the popover visibility.
|
|
1514
|
+
*/
|
|
1515
|
+
"toggle": () => Promise<void>;
|
|
1516
|
+
/**
|
|
1517
|
+
* @prop {('click' | 'hover' | 'hover focus')} trigger - Defines the interaction type to show/hide the popover. 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave, 'hover focus' combines both. Default: 'click'
|
|
1083
1518
|
* @default 'click'
|
|
1084
1519
|
*/
|
|
1085
|
-
"trigger": 'click' | 'hover';
|
|
1520
|
+
"trigger": 'click' | 'hover' | 'hover focus';
|
|
1086
1521
|
}
|
|
1087
1522
|
interface BcmRadio {
|
|
1523
|
+
/**
|
|
1524
|
+
* @default generateId('bcm-radio')
|
|
1525
|
+
*/
|
|
1526
|
+
"_id"?: string;
|
|
1088
1527
|
/**
|
|
1089
1528
|
* Whether the radio button is selected.
|
|
1090
1529
|
* @prop
|
|
@@ -1127,6 +1566,11 @@ export namespace Components {
|
|
|
1127
1566
|
* @defaultValue false
|
|
1128
1567
|
*/
|
|
1129
1568
|
"readonly": boolean;
|
|
1569
|
+
/**
|
|
1570
|
+
* Whether at least one radio in this group is required. (HTML)
|
|
1571
|
+
* @default false
|
|
1572
|
+
*/
|
|
1573
|
+
"required": boolean;
|
|
1130
1574
|
/**
|
|
1131
1575
|
* Defines the size of the radio button: 'small' | 'medium' | 'large'.
|
|
1132
1576
|
* @prop
|
|
@@ -1206,49 +1650,83 @@ export namespace Components {
|
|
|
1206
1650
|
*/
|
|
1207
1651
|
"value": string;
|
|
1208
1652
|
}
|
|
1209
|
-
|
|
1653
|
+
/**
|
|
1654
|
+
* Individual segment option component
|
|
1655
|
+
*/
|
|
1656
|
+
interface BcmSegment {
|
|
1657
|
+
/**
|
|
1658
|
+
* Index of currently active segment (inherited from parent)
|
|
1659
|
+
* @default 0
|
|
1660
|
+
*/
|
|
1661
|
+
"activeIndex": number;
|
|
1210
1662
|
/**
|
|
1211
1663
|
* Disabled state
|
|
1212
1664
|
* @default false
|
|
1213
1665
|
*/
|
|
1214
1666
|
"disabled": boolean;
|
|
1215
1667
|
/**
|
|
1216
|
-
*
|
|
1668
|
+
* Index of this segment (inherited from parent)
|
|
1669
|
+
* @default 0
|
|
1670
|
+
*/
|
|
1671
|
+
"index": number;
|
|
1672
|
+
/**
|
|
1673
|
+
* Selected state (controlled by parent)
|
|
1217
1674
|
* @default false
|
|
1218
1675
|
*/
|
|
1219
|
-
"
|
|
1676
|
+
"selected": boolean;
|
|
1220
1677
|
/**
|
|
1221
|
-
*
|
|
1678
|
+
* Size variant (inherited from parent)
|
|
1222
1679
|
* @default 'medium'
|
|
1223
1680
|
*/
|
|
1224
|
-
"size":
|
|
1681
|
+
"size": 'small' | 'medium' | 'large';
|
|
1225
1682
|
/**
|
|
1226
|
-
*
|
|
1683
|
+
* Unique identifier for this segment
|
|
1227
1684
|
*/
|
|
1228
|
-
"value"
|
|
1685
|
+
"value": string;
|
|
1229
1686
|
}
|
|
1230
|
-
|
|
1687
|
+
/**
|
|
1688
|
+
* Modern Segmented Picker component with CSS Grid-based indicator
|
|
1689
|
+
*/
|
|
1690
|
+
interface BcmSegmentedPicker {
|
|
1231
1691
|
/**
|
|
1232
|
-
*
|
|
1692
|
+
* Disabled state
|
|
1233
1693
|
* @default false
|
|
1234
1694
|
*/
|
|
1235
1695
|
"disabled": boolean;
|
|
1236
|
-
"getWidth": () => Promise<number>;
|
|
1237
1696
|
/**
|
|
1238
|
-
*
|
|
1697
|
+
* Full width flag
|
|
1698
|
+
* @default false
|
|
1239
1699
|
*/
|
|
1240
|
-
"
|
|
1700
|
+
"fullWidth": boolean;
|
|
1701
|
+
/**
|
|
1702
|
+
* Public method to get active segment value
|
|
1703
|
+
*/
|
|
1704
|
+
"getValue": () => Promise<string>;
|
|
1241
1705
|
/**
|
|
1242
|
-
*
|
|
1706
|
+
* Name attribute for form association
|
|
1707
|
+
*/
|
|
1708
|
+
"name": string;
|
|
1709
|
+
/**
|
|
1710
|
+
* Whether this field is required in a form
|
|
1243
1711
|
* @default false
|
|
1244
1712
|
*/
|
|
1245
|
-
"
|
|
1713
|
+
"required": boolean;
|
|
1714
|
+
/**
|
|
1715
|
+
* Public method to programmatically set active segment
|
|
1716
|
+
*/
|
|
1717
|
+
"setValue": (value: string) => Promise<void>;
|
|
1718
|
+
/**
|
|
1719
|
+
* Enable shadow on container
|
|
1720
|
+
* @default false
|
|
1721
|
+
*/
|
|
1722
|
+
"shadow": boolean;
|
|
1246
1723
|
/**
|
|
1247
|
-
*
|
|
1724
|
+
* Size variant
|
|
1725
|
+
* @default 'medium'
|
|
1248
1726
|
*/
|
|
1249
|
-
"size"
|
|
1727
|
+
"size": 'small' | 'medium' | 'large';
|
|
1250
1728
|
/**
|
|
1251
|
-
*
|
|
1729
|
+
* Selected segment value
|
|
1252
1730
|
*/
|
|
1253
1731
|
"value": string;
|
|
1254
1732
|
}
|
|
@@ -1261,50 +1739,79 @@ export namespace Components {
|
|
|
1261
1739
|
}
|
|
1262
1740
|
/**
|
|
1263
1741
|
* @component BcmSwitch
|
|
1264
|
-
* @description A
|
|
1265
|
-
*
|
|
1742
|
+
* @description A form-associated toggle switch component representing a boolean choice.
|
|
1743
|
+
* It behaves like a checkbox and integrates with native HTML forms via ElementInternals.
|
|
1744
|
+
* This component supports **three validation strategies** via `validation-mode`:
|
|
1745
|
+
* - **`native`**:
|
|
1746
|
+
* - Uses native browser constraint validation.
|
|
1747
|
+
* - Sets the underlying input's `required` attribute.
|
|
1748
|
+
* - Browser may show the native validation bubble when the form calls `reportValidity()` / submit validation runs.
|
|
1749
|
+
* - **`silent`**:
|
|
1750
|
+
* - Does **not** rely on native `required` (prevents the browser bubble).
|
|
1751
|
+
* - Computes the "missing required" state internally and exposes it via `error` + `caption`.
|
|
1752
|
+
* - UI errors are **gated**: they appear only after the control is touched or after a submit attempt.
|
|
1753
|
+
* - **`none`**:
|
|
1754
|
+
* - Value-only mode (headless): participates in form value submission but never becomes invalid.
|
|
1755
|
+
* ## UI error gating (silent mode)
|
|
1756
|
+
* To avoid showing errors on initial render, the component tracks:
|
|
1757
|
+
* - `touched`: set after the first user interaction
|
|
1758
|
+
* - `submitAttempted`: set when the parent form emits `submit`
|
|
1759
|
+
* Only when `touched || submitAttempted` the component will show `error/caption` in `silent` mode.
|
|
1760
|
+
* ## Value behavior
|
|
1761
|
+
* - When checked, the component submits its `value` (default: `"on"`).
|
|
1762
|
+
* - When unchecked, no value is submitted.
|
|
1763
|
+
* - When disabled, the component does not participate in submission or validity.
|
|
1266
1764
|
* @example Basic usage
|
|
1267
|
-
* <bcm-switch label="
|
|
1268
|
-
* @example
|
|
1765
|
+
* <bcm-switch name="newsletter" label="Receive newsletter?" />
|
|
1766
|
+
* @example Required with silent validation (no native bubble)
|
|
1767
|
+
* <form>
|
|
1269
1768
|
* <bcm-switch
|
|
1769
|
+
* name="terms"
|
|
1270
1770
|
* label="Accept terms"
|
|
1271
|
-
*
|
|
1272
|
-
*
|
|
1273
|
-
* </bcm-switch>
|
|
1274
|
-
* @example Disabled state
|
|
1275
|
-
* <bcm-switch
|
|
1276
|
-
* label="Advanced features"
|
|
1277
|
-
* disabled={true}>
|
|
1278
|
-
* </bcm-switch>
|
|
1279
|
-
* @example With custom size and label position
|
|
1280
|
-
* <bcm-switch
|
|
1281
|
-
* label="Dark mode"
|
|
1282
|
-
* size="large"
|
|
1283
|
-
* labelPosition="left">
|
|
1771
|
+
* required
|
|
1772
|
+
* validation-mode="silent">
|
|
1284
1773
|
* </bcm-switch>
|
|
1774
|
+
* <button type="submit">Submit</button>
|
|
1775
|
+
* </form>
|
|
1776
|
+
* @example Native validation mode (may show native bubble)
|
|
1777
|
+
* <bcm-switch name="terms" label="Accept terms" required validation-mode="native" />
|
|
1778
|
+
* @example Value-only mode (no validation)
|
|
1779
|
+
* <bcm-switch name="analytics" label="Allow analytics" validation-mode="none" />
|
|
1780
|
+
* @csspart base - Root container
|
|
1781
|
+
* @csspart switch-wrapper - Wrapper containing label + track
|
|
1782
|
+
* @csspart input - Hidden native input
|
|
1783
|
+
* @csspart label - Text label
|
|
1784
|
+
* @csspart dot-container - Switch track
|
|
1785
|
+
* @csspart dot - Switch knob
|
|
1786
|
+
* @csspart caption - Helper/error text
|
|
1285
1787
|
*/
|
|
1286
1788
|
interface BcmSwitch {
|
|
1287
1789
|
/**
|
|
1288
|
-
*
|
|
1790
|
+
* Unique id (optional). Generated by default.
|
|
1791
|
+
* @default generateId('bcm-switch')
|
|
1792
|
+
*/
|
|
1793
|
+
"_id"?: string;
|
|
1794
|
+
/**
|
|
1795
|
+
* Helper / error text shown under the switch
|
|
1289
1796
|
*/
|
|
1290
1797
|
"caption"?: string;
|
|
1291
1798
|
/**
|
|
1292
|
-
*
|
|
1799
|
+
* Checked state
|
|
1293
1800
|
* @default false
|
|
1294
1801
|
*/
|
|
1295
1802
|
"checked": boolean;
|
|
1296
1803
|
/**
|
|
1297
|
-
*
|
|
1804
|
+
* Disabled state
|
|
1298
1805
|
* @default false
|
|
1299
1806
|
*/
|
|
1300
1807
|
"disabled": boolean;
|
|
1301
1808
|
/**
|
|
1302
|
-
*
|
|
1809
|
+
* Visual error state (manual/external). In silent mode this can be auto-managed.
|
|
1303
1810
|
* @default false
|
|
1304
1811
|
*/
|
|
1305
1812
|
"error": boolean;
|
|
1306
1813
|
/**
|
|
1307
|
-
*
|
|
1814
|
+
* Visible label text
|
|
1308
1815
|
*/
|
|
1309
1816
|
"label": string;
|
|
1310
1817
|
/**
|
|
@@ -1313,128 +1820,93 @@ export namespace Components {
|
|
|
1313
1820
|
*/
|
|
1314
1821
|
"labelPosition": 'left' | 'right';
|
|
1315
1822
|
/**
|
|
1316
|
-
*
|
|
1823
|
+
* Form field name
|
|
1317
1824
|
*/
|
|
1318
|
-
"name"
|
|
1825
|
+
"name"?: string;
|
|
1319
1826
|
/**
|
|
1320
|
-
*
|
|
1827
|
+
* Optional readonly support
|
|
1321
1828
|
* @default false
|
|
1322
1829
|
*/
|
|
1323
1830
|
"readonly": boolean;
|
|
1324
1831
|
/**
|
|
1325
|
-
*
|
|
1832
|
+
* Required state
|
|
1326
1833
|
* @default false
|
|
1327
1834
|
*/
|
|
1328
1835
|
"required": boolean;
|
|
1329
1836
|
/**
|
|
1330
|
-
* Size variant
|
|
1837
|
+
* Size variant
|
|
1331
1838
|
* @default 'medium'
|
|
1332
1839
|
*/
|
|
1333
1840
|
"size": 'small' | 'medium' | 'large';
|
|
1334
1841
|
/**
|
|
1335
|
-
*
|
|
1842
|
+
* @default 'native'
|
|
1843
|
+
*/
|
|
1844
|
+
"validationMode": 'native' | 'silent' | 'none';
|
|
1845
|
+
/**
|
|
1846
|
+
* Value submitted when checked
|
|
1847
|
+
* @default 'on'
|
|
1336
1848
|
*/
|
|
1337
1849
|
"value": string;
|
|
1338
1850
|
}
|
|
1339
1851
|
/**
|
|
1340
|
-
*
|
|
1852
|
+
* Individual tab component - self-contained with label and content panel
|
|
1341
1853
|
*/
|
|
1342
|
-
interface
|
|
1854
|
+
interface BcmTab {
|
|
1343
1855
|
/**
|
|
1344
|
-
*
|
|
1345
|
-
|
|
1346
|
-
"defaultValue": string;
|
|
1347
|
-
/**
|
|
1348
|
-
* Disables all tabs
|
|
1349
|
-
*/
|
|
1350
|
-
"disableAllTabs": () => Promise<void>;
|
|
1351
|
-
"disableTab": (value: string) => Promise<void>;
|
|
1352
|
-
/**
|
|
1353
|
-
* Enables all tabs
|
|
1354
|
-
*/
|
|
1355
|
-
"enableAllTabs": () => Promise<void>;
|
|
1356
|
-
"enableTab": (value: string) => Promise<void>;
|
|
1357
|
-
/**
|
|
1358
|
-
* Returns the active tab value
|
|
1359
|
-
*/
|
|
1360
|
-
"getActiveTab": () => Promise<string>;
|
|
1361
|
-
/**
|
|
1362
|
-
* Sets the active tab
|
|
1856
|
+
* Active state (controlled by parent)
|
|
1857
|
+
* @default false
|
|
1363
1858
|
*/
|
|
1364
|
-
"
|
|
1859
|
+
"active": boolean;
|
|
1365
1860
|
/**
|
|
1366
|
-
*
|
|
1367
|
-
* @default
|
|
1861
|
+
* Disabled state
|
|
1862
|
+
* @default false
|
|
1368
1863
|
*/
|
|
1369
|
-
"
|
|
1864
|
+
"disabled": boolean;
|
|
1370
1865
|
/**
|
|
1371
|
-
*
|
|
1372
|
-
* @default true
|
|
1866
|
+
* Label text to display in tab button
|
|
1373
1867
|
*/
|
|
1374
|
-
"
|
|
1868
|
+
"label": string;
|
|
1375
1869
|
/**
|
|
1376
|
-
*
|
|
1377
|
-
* @default '
|
|
1870
|
+
* Size variant (inherited from parent)
|
|
1871
|
+
* @default 'md'
|
|
1378
1872
|
*/
|
|
1379
|
-
"
|
|
1380
|
-
}
|
|
1381
|
-
/**
|
|
1382
|
-
* @description Tab content panel component that displays when its corresponding tab is selected
|
|
1383
|
-
*/
|
|
1384
|
-
interface BcmTabsContent {
|
|
1873
|
+
"size": 'sm' | 'md' | 'lg';
|
|
1385
1874
|
/**
|
|
1386
|
-
* Unique identifier
|
|
1875
|
+
* Unique identifier for this tab
|
|
1387
1876
|
*/
|
|
1388
1877
|
"value": string;
|
|
1389
1878
|
}
|
|
1390
1879
|
/**
|
|
1391
|
-
*
|
|
1880
|
+
* Modern Tabs component with CSS-first approach
|
|
1392
1881
|
*/
|
|
1393
|
-
interface
|
|
1394
|
-
/**
|
|
1395
|
-
* Whether to enable smooth animations for inkbar and transitions
|
|
1396
|
-
* @default true
|
|
1397
|
-
*/
|
|
1398
|
-
"smooth": boolean;
|
|
1882
|
+
interface BcmTabs {
|
|
1399
1883
|
/**
|
|
1400
|
-
*
|
|
1401
|
-
* @default 'full-width'
|
|
1884
|
+
* Public method to get active tab value
|
|
1402
1885
|
*/
|
|
1403
|
-
"
|
|
1404
|
-
}
|
|
1405
|
-
/**
|
|
1406
|
-
* @description Tab trigger component that functions as a clickable tab button
|
|
1407
|
-
*/
|
|
1408
|
-
interface BcmTabsTrigger {
|
|
1886
|
+
"getActiveTab": () => Promise<string>;
|
|
1409
1887
|
/**
|
|
1410
|
-
*
|
|
1411
|
-
* @default false
|
|
1888
|
+
* Public method to programmatically set active tab
|
|
1412
1889
|
*/
|
|
1413
|
-
"
|
|
1890
|
+
"setActiveTab": (value: string) => Promise<void>;
|
|
1414
1891
|
/**
|
|
1415
|
-
*
|
|
1892
|
+
* Enable shadow on main container
|
|
1416
1893
|
* @default false
|
|
1417
1894
|
*/
|
|
1418
|
-
"
|
|
1895
|
+
"shadow": boolean;
|
|
1419
1896
|
/**
|
|
1420
|
-
*
|
|
1421
|
-
* @default '
|
|
1897
|
+
* Tab size variant
|
|
1898
|
+
* @default 'md'
|
|
1422
1899
|
*/
|
|
1423
|
-
"size": '
|
|
1900
|
+
"size": 'sm' | 'md' | 'lg';
|
|
1424
1901
|
/**
|
|
1425
|
-
*
|
|
1426
|
-
* @default true
|
|
1427
|
-
*/
|
|
1428
|
-
"smooth": boolean;
|
|
1429
|
-
/**
|
|
1430
|
-
* Unique identifier value for the tab
|
|
1902
|
+
* Active tab value
|
|
1431
1903
|
*/
|
|
1432
1904
|
"value": string;
|
|
1433
1905
|
/**
|
|
1434
|
-
*
|
|
1435
|
-
* @default '
|
|
1906
|
+
* Visual variant
|
|
1907
|
+
* @default 'line'
|
|
1436
1908
|
*/
|
|
1437
|
-
"variant": '
|
|
1909
|
+
"variant": 'line' | 'enclosed';
|
|
1438
1910
|
}
|
|
1439
1911
|
interface BcmText {
|
|
1440
1912
|
/**
|
|
@@ -1576,59 +2048,113 @@ export namespace Components {
|
|
|
1576
2048
|
}
|
|
1577
2049
|
/**
|
|
1578
2050
|
* @component BcmTooltip
|
|
1579
|
-
* @description A
|
|
1580
|
-
*
|
|
1581
|
-
*
|
|
1582
|
-
*
|
|
1583
|
-
*
|
|
2051
|
+
* @description A flexible tooltip component that provides contextual information on hover or click.
|
|
2052
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
2053
|
+
* Automatically handles overflow, flipping, and complex shadow DOM scenarios.
|
|
2054
|
+
* @example ```html
|
|
2055
|
+
* <!-- Basic usage with text message -->
|
|
2056
|
+
* <bcm-tooltip message="This is a tooltip">
|
|
2057
|
+
* <button>Hover me</button>
|
|
1584
2058
|
* </bcm-tooltip>
|
|
1585
|
-
*
|
|
1586
|
-
* <bcm-tooltip
|
|
1587
|
-
*
|
|
2059
|
+
* <!-- With custom rich content -->
|
|
2060
|
+
* <bcm-tooltip placement="right" size="large">
|
|
2061
|
+
* <button>Click me</button>
|
|
2062
|
+
* <div slot="content">
|
|
2063
|
+
* <strong>Rich content</strong>
|
|
2064
|
+
* <p>You can add any HTML here</p>
|
|
2065
|
+
* </div>
|
|
2066
|
+
* </bcm-tooltip>
|
|
2067
|
+
* <!-- Click trigger with custom delays -->
|
|
2068
|
+
* <bcm-tooltip trigger="click" show-delay="0" hide-delay="0">
|
|
2069
|
+
* <span>Click me</span>
|
|
2070
|
+
* </bcm-tooltip>
|
|
2071
|
+
* <!-- Mouse following mode -->
|
|
2072
|
+
* <bcm-tooltip follow={true} message="I follow your cursor!">
|
|
2073
|
+
* <div>Move your mouse here</div>
|
|
2074
|
+
* </bcm-tooltip>
|
|
2075
|
+
* <!-- Programmatic control -->
|
|
2076
|
+
* <bcm-tooltip id="myTooltip" message="Programmatic tooltip">
|
|
2077
|
+
* <span>Trigger</span>
|
|
1588
2078
|
* </bcm-tooltip>
|
|
1589
2079
|
* <script>
|
|
1590
|
-
*
|
|
1591
|
-
*
|
|
1592
|
-
* tooltip.
|
|
2080
|
+
* const tooltip = document.getElementById('myTooltip');
|
|
2081
|
+
* tooltip.show();
|
|
2082
|
+
* setTimeout(() => tooltip.hide(), 2000);
|
|
1593
2083
|
* </script>
|
|
1594
|
-
*
|
|
1595
|
-
*
|
|
2084
|
+
* <!-- Custom styling with CSS parts -->
|
|
2085
|
+
* <style>
|
|
2086
|
+
* bcm-tooltip::part(tooltip) {
|
|
2087
|
+
* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
2088
|
+
* border-radius: 12px;
|
|
2089
|
+
* }
|
|
2090
|
+
* bcm-tooltip::part(arrow) {
|
|
2091
|
+
* background: #667eea;
|
|
2092
|
+
* }
|
|
2093
|
+
* </style>
|
|
2094
|
+
* ```
|
|
1596
2095
|
*/
|
|
1597
2096
|
interface BcmTooltip {
|
|
1598
2097
|
/**
|
|
1599
|
-
*
|
|
1600
|
-
* @
|
|
2098
|
+
* Whether to show an arrow pointing to the trigger element Note: Arrow is automatically hidden in 'follow' mode
|
|
2099
|
+
* @default true
|
|
2100
|
+
*/
|
|
2101
|
+
"arrow": boolean;
|
|
2102
|
+
/**
|
|
2103
|
+
* Disables the tooltip, preventing it from showing Useful for conditional tooltips based on application state
|
|
2104
|
+
* @default false
|
|
1601
2105
|
*/
|
|
1602
|
-
"
|
|
2106
|
+
"disabled": boolean;
|
|
1603
2107
|
/**
|
|
1604
|
-
*
|
|
2108
|
+
* Makes the tooltip follow the mouse cursor When enabled: - Arrow is hidden - Tooltip position updates smoothly with cursor movement - Pointer events are disabled on tooltip to prevent interference
|
|
2109
|
+
* @default false
|
|
1605
2110
|
*/
|
|
1606
|
-
"
|
|
2111
|
+
"follow": boolean;
|
|
1607
2112
|
/**
|
|
1608
|
-
*
|
|
1609
|
-
* @returns A promise that resolves when the tooltip is opened.
|
|
2113
|
+
* Programmatically hides the tooltip Respects the hideDelay prop
|
|
1610
2114
|
*/
|
|
1611
|
-
"
|
|
2115
|
+
"hide": () => Promise<void>;
|
|
1612
2116
|
/**
|
|
1613
|
-
*
|
|
2117
|
+
* Delay in milliseconds before hiding the tooltip Provides a grace period for mouse movements
|
|
2118
|
+
* @default 100
|
|
2119
|
+
*/
|
|
2120
|
+
"hideDelay": number;
|
|
2121
|
+
/**
|
|
2122
|
+
* Simple text message to display in the tooltip Can be overridden by slotting content into the 'content' slot
|
|
2123
|
+
*/
|
|
2124
|
+
"message"?: string;
|
|
2125
|
+
/**
|
|
2126
|
+
* Distance in pixels between the tooltip and the trigger element Also used as the offset in 'follow' mode
|
|
2127
|
+
* @default 12
|
|
2128
|
+
*/
|
|
2129
|
+
"offset": number;
|
|
2130
|
+
/**
|
|
2131
|
+
* Preferred placement of the tooltip relative to the trigger Note: Tooltip will automatically flip if there's not enough space - 'top': Above the trigger element - 'right': To the right of the trigger element - 'bottom': Below the trigger element - 'left': To the left of the trigger element
|
|
1614
2132
|
* @default 'top'
|
|
1615
2133
|
*/
|
|
1616
|
-
"placement":
|
|
2134
|
+
"placement": TooltipPlacement;
|
|
1617
2135
|
/**
|
|
1618
|
-
*
|
|
2136
|
+
* Programmatically shows the tooltip Respects the showDelay prop and disabled state
|
|
2137
|
+
*/
|
|
2138
|
+
"show": () => Promise<void>;
|
|
2139
|
+
/**
|
|
2140
|
+
* Delay in milliseconds before showing the tooltip Useful to prevent tooltips from appearing on quick mouse movements
|
|
1619
2141
|
* @default 150
|
|
1620
2142
|
*/
|
|
1621
2143
|
"showDelay": number;
|
|
1622
2144
|
/**
|
|
1623
|
-
*
|
|
2145
|
+
* Size variant of the tooltip - 'small': Compact tooltip with minimal padding (text-size-3, py-1 px-2) - 'medium': Standard tooltip size (text-size-4, py-1.5 px-3) - 'large': Larger tooltip for more content (text-size-5, py-2 px-4)
|
|
1624
2146
|
* @default 'medium'
|
|
1625
2147
|
*/
|
|
1626
|
-
"size":
|
|
2148
|
+
"size": TooltipSize;
|
|
2149
|
+
/**
|
|
2150
|
+
* Toggles the tooltip visibility If open, hides it; if closed, shows it
|
|
2151
|
+
*/
|
|
2152
|
+
"toggle": () => Promise<void>;
|
|
1627
2153
|
/**
|
|
1628
|
-
*
|
|
2154
|
+
* How the tooltip is triggered - 'hover': Shows on mouse enter, hides on mouse leave - 'click': Toggles on click, closes on outside click or Escape key
|
|
1629
2155
|
* @default 'hover'
|
|
1630
2156
|
*/
|
|
1631
|
-
"trigger":
|
|
2157
|
+
"trigger": TooltipTrigger;
|
|
1632
2158
|
}
|
|
1633
2159
|
}
|
|
1634
2160
|
export interface BcmAccordionCustomEvent<T> extends CustomEvent<T> {
|
|
@@ -1665,7 +2191,11 @@ export interface BcmDropdownCustomEvent<T> extends CustomEvent<T> {
|
|
|
1665
2191
|
}
|
|
1666
2192
|
export interface BcmDropdownItemCustomEvent<T> extends CustomEvent<T> {
|
|
1667
2193
|
detail: T;
|
|
1668
|
-
target: HTMLBcmDropdownItemElement;
|
|
2194
|
+
target: HTMLBcmDropdownItemElement;
|
|
2195
|
+
}
|
|
2196
|
+
export interface BcmFileUploadCustomEvent<T> extends CustomEvent<T> {
|
|
2197
|
+
detail: T;
|
|
2198
|
+
target: HTMLBcmFileUploadElement;
|
|
1669
2199
|
}
|
|
1670
2200
|
export interface BcmInputCustomEvent<T> extends CustomEvent<T> {
|
|
1671
2201
|
detail: T;
|
|
@@ -1695,25 +2225,25 @@ export interface BcmRadioGroupCustomEvent<T> extends CustomEvent<T> {
|
|
|
1695
2225
|
detail: T;
|
|
1696
2226
|
target: HTMLBcmRadioGroupElement;
|
|
1697
2227
|
}
|
|
1698
|
-
export interface
|
|
2228
|
+
export interface BcmSegmentCustomEvent<T> extends CustomEvent<T> {
|
|
1699
2229
|
detail: T;
|
|
1700
|
-
target:
|
|
2230
|
+
target: HTMLBcmSegmentElement;
|
|
1701
2231
|
}
|
|
1702
|
-
export interface
|
|
2232
|
+
export interface BcmSegmentedPickerCustomEvent<T> extends CustomEvent<T> {
|
|
1703
2233
|
detail: T;
|
|
1704
|
-
target:
|
|
2234
|
+
target: HTMLBcmSegmentedPickerElement;
|
|
1705
2235
|
}
|
|
1706
2236
|
export interface BcmSwitchCustomEvent<T> extends CustomEvent<T> {
|
|
1707
2237
|
detail: T;
|
|
1708
2238
|
target: HTMLBcmSwitchElement;
|
|
1709
2239
|
}
|
|
1710
|
-
export interface
|
|
2240
|
+
export interface BcmTabCustomEvent<T> extends CustomEvent<T> {
|
|
1711
2241
|
detail: T;
|
|
1712
|
-
target:
|
|
2242
|
+
target: HTMLBcmTabElement;
|
|
1713
2243
|
}
|
|
1714
|
-
export interface
|
|
2244
|
+
export interface BcmTabsCustomEvent<T> extends CustomEvent<T> {
|
|
1715
2245
|
detail: T;
|
|
1716
|
-
target:
|
|
2246
|
+
target: HTMLBcmTabsElement;
|
|
1717
2247
|
}
|
|
1718
2248
|
export interface BcmTextareaCustomEvent<T> extends CustomEvent<T> {
|
|
1719
2249
|
detail: T;
|
|
@@ -1942,11 +2472,52 @@ declare global {
|
|
|
1942
2472
|
new (): HTMLBcmButtonGroupElement;
|
|
1943
2473
|
};
|
|
1944
2474
|
interface HTMLBcmCheckboxElementEventMap {
|
|
1945
|
-
"bcmCheckboxChange": { element:
|
|
2475
|
+
"bcmCheckboxChange": { element: HTMLInputElement; checked: boolean };
|
|
1946
2476
|
}
|
|
1947
2477
|
/**
|
|
1948
|
-
* @
|
|
1949
|
-
*
|
|
2478
|
+
* @component BcmCheckbox
|
|
2479
|
+
* @description A form-associated checkbox component representing a boolean choice.
|
|
2480
|
+
* Integrates with native HTML forms via ElementInternals while supporting
|
|
2481
|
+
* **three validation strategies** via `validation-mode`:
|
|
2482
|
+
* - **`native`**
|
|
2483
|
+
* - Participates in native browser constraint validation.
|
|
2484
|
+
* - Sets the underlying input's `required`.
|
|
2485
|
+
* - Browser may show native validation bubbles when submit/reportValidity happens.
|
|
2486
|
+
* - **`silent`**
|
|
2487
|
+
* - Does **not** set native `required` (prevents browser bubble).
|
|
2488
|
+
* - Computes "missing required" internally and exposes it via `error` + `caption`.
|
|
2489
|
+
* - UI errors are **gated**: shown only after `touched` or a form submit attempt.
|
|
2490
|
+
* - **`none`**
|
|
2491
|
+
* - Value-only mode: submits value but never becomes invalid.
|
|
2492
|
+
* ## UI error gating (silent mode)
|
|
2493
|
+
* - `touched` becomes true after first user interaction
|
|
2494
|
+
* - `submitAttempted` becomes true when the parent form emits `submit`
|
|
2495
|
+
* ## Value behavior
|
|
2496
|
+
* - When checked → submits `value` (default: `"on"`).
|
|
2497
|
+
* - When unchecked → submits no value (`null`).
|
|
2498
|
+
* - When disabled → no submission and no validity participation.
|
|
2499
|
+
* ## Shadow Parts
|
|
2500
|
+
* - `checkbox` → root container
|
|
2501
|
+
* - `control` → visual checkbox box
|
|
2502
|
+
* - `icon` → icon container (check or minus)
|
|
2503
|
+
* - `label` → label text
|
|
2504
|
+
* - `caption` → helper/error text (silent mode UI)
|
|
2505
|
+
* - `input` → hidden native input
|
|
2506
|
+
* @example Basic usage
|
|
2507
|
+
* <bcm-checkbox name="terms" required>
|
|
2508
|
+
* I agree to the terms and conditions
|
|
2509
|
+
* </bcm-checkbox>
|
|
2510
|
+
* @example Silent validation (no native bubble)
|
|
2511
|
+
* <form>
|
|
2512
|
+
* <bcm-checkbox name="newsletter" required validation-mode="silent">
|
|
2513
|
+
* Subscribe to newsletter
|
|
2514
|
+
* </bcm-checkbox>
|
|
2515
|
+
* <button type="submit">Submit</button>
|
|
2516
|
+
* </form>
|
|
2517
|
+
* @example Value-only mode
|
|
2518
|
+
* <bcm-checkbox name="analytics" validation-mode="none">
|
|
2519
|
+
* Allow analytics
|
|
2520
|
+
* </bcm-checkbox>
|
|
1950
2521
|
*/
|
|
1951
2522
|
interface HTMLBcmCheckboxElement extends Components.BcmCheckbox, HTMLStencilElement {
|
|
1952
2523
|
addEventListener<K extends keyof HTMLBcmCheckboxElementEventMap>(type: K, listener: (this: HTMLBcmCheckboxElement, ev: BcmCheckboxCustomEvent<HTMLBcmCheckboxElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2018,6 +2589,38 @@ declare global {
|
|
|
2018
2589
|
"bcmBeforeOpen": void;
|
|
2019
2590
|
"bcmBeforeClose": void;
|
|
2020
2591
|
}
|
|
2592
|
+
/**
|
|
2593
|
+
* @component BcmDrawer
|
|
2594
|
+
* @description A slide-in panel component built on the native HTML Dialog API.
|
|
2595
|
+
* Ideal for navigation menus, forms, and contextual information that slides in from any edge of the screen.
|
|
2596
|
+
* @example ```html
|
|
2597
|
+
* <!-- Basic usage -->
|
|
2598
|
+
* <bcm-drawer open header-text="Menu" position="left">
|
|
2599
|
+
* <nav>
|
|
2600
|
+
* <a href="/home">Home</a>
|
|
2601
|
+
* <a href="/about">About</a>
|
|
2602
|
+
* </nav>
|
|
2603
|
+
* </bcm-drawer>
|
|
2604
|
+
* <!-- Custom size and position -->
|
|
2605
|
+
* <bcm-drawer size="large" position="right">
|
|
2606
|
+
* <div slot="header">Settings</div>
|
|
2607
|
+
* <form>...</form>
|
|
2608
|
+
* <div slot="footer">
|
|
2609
|
+
* <button data-dismiss>Cancel</button>
|
|
2610
|
+
* <button>Save</button>
|
|
2611
|
+
* </div>
|
|
2612
|
+
* </bcm-drawer>
|
|
2613
|
+
* <!-- Custom size with CSS units -->
|
|
2614
|
+
* <bcm-drawer size="600px" position="bottom">
|
|
2615
|
+
* <p>Custom height drawer</p>
|
|
2616
|
+
* </bcm-drawer>
|
|
2617
|
+
* <!-- Programmatic usage -->
|
|
2618
|
+
* <bcm-drawer id="myDrawer">Content</bcm-drawer>
|
|
2619
|
+
* <script>
|
|
2620
|
+
* document.getElementById('myDrawer').show();
|
|
2621
|
+
* </script>
|
|
2622
|
+
* ```
|
|
2623
|
+
*/
|
|
2021
2624
|
interface HTMLBcmDrawerElement extends Components.BcmDrawer, HTMLStencilElement {
|
|
2022
2625
|
addEventListener<K extends keyof HTMLBcmDrawerElementEventMap>(type: K, listener: (this: HTMLBcmDrawerElement, ev: BcmDrawerCustomEvent<HTMLBcmDrawerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2023
2626
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2066,6 +2669,27 @@ declare global {
|
|
|
2066
2669
|
prototype: HTMLBcmDropdownItemElement;
|
|
2067
2670
|
new (): HTMLBcmDropdownItemElement;
|
|
2068
2671
|
};
|
|
2672
|
+
interface HTMLBcmFileUploadElementEventMap {
|
|
2673
|
+
"bcmFileChange": File[];
|
|
2674
|
+
"bcmFileRemoved": BcmUploadItem;
|
|
2675
|
+
"bcmUploadCanceled": BcmUploadItem;
|
|
2676
|
+
"bcmFocus": FocusEvent;
|
|
2677
|
+
"bcmBlur": FocusEvent;
|
|
2678
|
+
}
|
|
2679
|
+
interface HTMLBcmFileUploadElement extends Components.BcmFileUpload, HTMLStencilElement {
|
|
2680
|
+
addEventListener<K extends keyof HTMLBcmFileUploadElementEventMap>(type: K, listener: (this: HTMLBcmFileUploadElement, ev: BcmFileUploadCustomEvent<HTMLBcmFileUploadElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2681
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2682
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2683
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2684
|
+
removeEventListener<K extends keyof HTMLBcmFileUploadElementEventMap>(type: K, listener: (this: HTMLBcmFileUploadElement, ev: BcmFileUploadCustomEvent<HTMLBcmFileUploadElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2685
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2686
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2687
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2688
|
+
}
|
|
2689
|
+
var HTMLBcmFileUploadElement: {
|
|
2690
|
+
prototype: HTMLBcmFileUploadElement;
|
|
2691
|
+
new (): HTMLBcmFileUploadElement;
|
|
2692
|
+
};
|
|
2069
2693
|
interface HTMLBcmInputElementEventMap {
|
|
2070
2694
|
"bcmInput": InputEvent;
|
|
2071
2695
|
"bcmChange": Event;
|
|
@@ -2089,11 +2713,42 @@ declare global {
|
|
|
2089
2713
|
new (): HTMLBcmInputElement;
|
|
2090
2714
|
};
|
|
2091
2715
|
interface HTMLBcmLinkedElementEventMap {
|
|
2716
|
+
"bcmBeforeShow": void;
|
|
2092
2717
|
"bcmShow": void;
|
|
2718
|
+
"bcmBeforeHide": void;
|
|
2093
2719
|
"bcmHide": void;
|
|
2094
2720
|
"bcmShown": void;
|
|
2095
2721
|
"bcmHidden": void;
|
|
2096
2722
|
}
|
|
2723
|
+
/**
|
|
2724
|
+
* @component BcmLinked
|
|
2725
|
+
* @description A flexible linked floating element component that displays contextual content relative to a trigger element.
|
|
2726
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
2727
|
+
* Supports different trigger types (click, hover, focus, manual) and comprehensive event system.
|
|
2728
|
+
* @example Basic Click Trigger
|
|
2729
|
+
* <bcm-linked trigger="click">
|
|
2730
|
+
* <button slot="trigger">Click Me</button>
|
|
2731
|
+
* <div>Floating content here</div>
|
|
2732
|
+
* </bcm-linked>
|
|
2733
|
+
* @example Hover Trigger with Delays
|
|
2734
|
+
* <bcm-linked trigger="hover" show-delay="200" hide-delay="100">
|
|
2735
|
+
* <span slot="trigger">Hover Me</span>
|
|
2736
|
+
* <div>This appears on hover</div>
|
|
2737
|
+
* </bcm-linked>
|
|
2738
|
+
* @example Manual Control
|
|
2739
|
+
* <bcm-linked id="my-linked" trigger="manual">
|
|
2740
|
+
* <button slot="trigger">Trigger</button>
|
|
2741
|
+
* <div>Controlled content</div>
|
|
2742
|
+
* </bcm-linked>
|
|
2743
|
+
* <script>
|
|
2744
|
+
* const linked = document.querySelector('#my-linked');
|
|
2745
|
+
* linked.show(); // Opens the floating element
|
|
2746
|
+
* linked.hide(); // Closes the floating element
|
|
2747
|
+
* </script>
|
|
2748
|
+
* @csspart floating - The floating container element
|
|
2749
|
+
* @csspart arrow - The arrow element pointing to the trigger
|
|
2750
|
+
* @csspart content - The content wrapper element
|
|
2751
|
+
*/
|
|
2097
2752
|
interface HTMLBcmLinkedElement extends Components.BcmLinked, HTMLStencilElement {
|
|
2098
2753
|
addEventListener<K extends keyof HTMLBcmLinkedElementEventMap>(type: K, listener: (this: HTMLBcmLinkedElement, ev: BcmLinkedCustomEvent<HTMLBcmLinkedElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2099
2754
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2114,6 +2769,38 @@ declare global {
|
|
|
2114
2769
|
"bcmBeforeOpen": void;
|
|
2115
2770
|
"bcmBeforeClose": void;
|
|
2116
2771
|
}
|
|
2772
|
+
/**
|
|
2773
|
+
* @component BcmModal
|
|
2774
|
+
* @description A flexible modal dialog component built on the native HTML Dialog API.
|
|
2775
|
+
* Provides a powerful way to display content in a layer above the page with full keyboard and focus management.
|
|
2776
|
+
* @example ```html
|
|
2777
|
+
* <!-- Basic usage -->
|
|
2778
|
+
* <bcm-modal open header-text="Welcome" helper-text="Please read carefully">
|
|
2779
|
+
* <p>Modal content goes here</p>
|
|
2780
|
+
* <div slot="footer">
|
|
2781
|
+
* <button data-dismiss>Close</button>
|
|
2782
|
+
* </div>
|
|
2783
|
+
* </bcm-modal>
|
|
2784
|
+
* <!-- Custom size and placement -->
|
|
2785
|
+
* <bcm-modal size="large" placement="top">
|
|
2786
|
+
* <div slot="header">Custom Header</div>
|
|
2787
|
+
* <p>Content here</p>
|
|
2788
|
+
* <div slot="footer">
|
|
2789
|
+
* <button>Cancel</button>
|
|
2790
|
+
* <button>Confirm</button>
|
|
2791
|
+
* </div>
|
|
2792
|
+
* </bcm-modal>
|
|
2793
|
+
* <!-- Full screen modal -->
|
|
2794
|
+
* <bcm-modal full-screen no-footer>
|
|
2795
|
+
* <p>Full screen content</p>
|
|
2796
|
+
* </bcm-modal>
|
|
2797
|
+
* <!-- Programmatic usage -->
|
|
2798
|
+
* <bcm-modal id="myModal">Content</bcm-modal>
|
|
2799
|
+
* <script>
|
|
2800
|
+
* document.getElementById('myModal').show();
|
|
2801
|
+
* </script>
|
|
2802
|
+
* ```
|
|
2803
|
+
*/
|
|
2117
2804
|
interface HTMLBcmModalElement extends Components.BcmModal, HTMLStencilElement {
|
|
2118
2805
|
addEventListener<K extends keyof HTMLBcmModalElementEventMap>(type: K, listener: (this: HTMLBcmModalElement, ev: BcmModalCustomEvent<HTMLBcmModalElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2119
2806
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2129,55 +2816,151 @@ declare global {
|
|
|
2129
2816
|
new (): HTMLBcmModalElement;
|
|
2130
2817
|
};
|
|
2131
2818
|
interface HTMLBcmPopConfirmElementEventMap {
|
|
2819
|
+
"bcmBeforeOpen": void;
|
|
2820
|
+
"bcmOpen": void;
|
|
2821
|
+
"bcmBeforeClose": void;
|
|
2822
|
+
"bcmClose": void;
|
|
2132
2823
|
"bcmConfirm": void;
|
|
2133
2824
|
"bcmCancel": void;
|
|
2134
2825
|
}
|
|
2135
2826
|
/**
|
|
2136
2827
|
* @component BcmPopConfirm
|
|
2137
|
-
* @description A
|
|
2138
|
-
*
|
|
2139
|
-
*
|
|
2140
|
-
*
|
|
2141
|
-
* @
|
|
2142
|
-
*
|
|
2143
|
-
*
|
|
2144
|
-
*
|
|
2145
|
-
*
|
|
2828
|
+
* @description A confirmation popover component that displays a confirmation dialog with customizable actions.
|
|
2829
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
2830
|
+
* Ideal for confirming destructive actions or important decisions inline.
|
|
2831
|
+
* @csspart container - The main popover container element
|
|
2832
|
+
* @csspart arrow - The arrow pointer element
|
|
2833
|
+
* @csspart body - The body/description section
|
|
2834
|
+
* @csspart footer - The footer section with action buttons
|
|
2835
|
+
* @example Basic Usage
|
|
2836
|
+
* ```html
|
|
2837
|
+
* <bcm-pop-confirm
|
|
2838
|
+
* header-text="Delete Item?"
|
|
2839
|
+
* description="Are you sure you want to delete this item? This action cannot be undone."
|
|
2840
|
+
* status="error"
|
|
2841
|
+
* >
|
|
2842
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
2146
2843
|
* </bcm-pop-confirm>
|
|
2147
|
-
*
|
|
2148
|
-
*
|
|
2149
|
-
*
|
|
2150
|
-
*
|
|
2151
|
-
*
|
|
2844
|
+
* ```
|
|
2845
|
+
* @example With Event Handlers
|
|
2846
|
+
* ```html
|
|
2847
|
+
* <bcm-pop-confirm
|
|
2848
|
+
* id="deleteConfirm"
|
|
2849
|
+
* header-text="Confirm Delete"
|
|
2850
|
+
* description="This will permanently delete the item."
|
|
2851
|
+
* status="warning"
|
|
2852
|
+
* confirm-text="Yes, Delete"
|
|
2853
|
+
* cancel-text="No, Keep It"
|
|
2854
|
+
* >
|
|
2855
|
+
* <bcm-button>Delete Item</bcm-button>
|
|
2856
|
+
* </bcm-pop-confirm>
|
|
2857
|
+
* <script>
|
|
2858
|
+
* const popconfirm = document.getElementById('deleteConfirm');
|
|
2859
|
+
* popconfirm.addEventListener('bcmConfirm', () => {
|
|
2860
|
+
* console.log('User confirmed deletion');
|
|
2861
|
+
* // Perform delete operation
|
|
2862
|
+
* });
|
|
2863
|
+
* popconfirm.addEventListener('bcmCancel', () => {
|
|
2864
|
+
* console.log('User cancelled deletion');
|
|
2865
|
+
* });
|
|
2866
|
+
* </script>
|
|
2867
|
+
* ```
|
|
2868
|
+
* @example Different Status Types
|
|
2869
|
+
* ```html
|
|
2870
|
+
* <!-- Info (default) -->
|
|
2871
|
+
* <bcm-pop-confirm header-text="Information" description="This is an info message">
|
|
2872
|
+
* <bcm-button>Info</bcm-button>
|
|
2873
|
+
* </bcm-pop-confirm>
|
|
2874
|
+
* <!-- Success -->
|
|
2875
|
+
* <bcm-pop-confirm status="success" header-text="Confirm Action" description="Proceed with this action?">
|
|
2876
|
+
* <bcm-button status="success">Proceed</bcm-button>
|
|
2877
|
+
* </bcm-pop-confirm>
|
|
2878
|
+
* <!-- Warning -->
|
|
2879
|
+
* <bcm-pop-confirm status="warning" header-text="Warning" description="This action may have consequences">
|
|
2880
|
+
* <bcm-button status="warning">Continue</bcm-button>
|
|
2881
|
+
* </bcm-pop-confirm>
|
|
2882
|
+
* <!-- Error/Danger -->
|
|
2883
|
+
* <bcm-pop-confirm status="error" header-text="Danger Zone" description="This is a destructive action">
|
|
2884
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
2885
|
+
* </bcm-pop-confirm>
|
|
2886
|
+
* ```
|
|
2887
|
+
* @example Custom Content with Slots
|
|
2888
|
+
* ```html
|
|
2889
|
+
* <bcm-pop-confirm status="warning">
|
|
2890
|
+
* <bcm-button>Custom Confirm</bcm-button>
|
|
2891
|
+
* <div slot="header">
|
|
2892
|
+
* <strong>Custom Header</strong>
|
|
2893
|
+
* </div>
|
|
2894
|
+
* <div slot="body">
|
|
2895
|
+
* <p>This is custom body content with <strong>HTML formatting</strong>.</p>
|
|
2896
|
+
* <ul>
|
|
2897
|
+
* <li>Point 1</li>
|
|
2898
|
+
* <li>Point 2</li>
|
|
2899
|
+
* </ul>
|
|
2900
|
+
* </div>
|
|
2901
|
+
* <div slot="footer">
|
|
2902
|
+
* <bcm-button kind="outline" size="small">Maybe Later</bcm-button>
|
|
2903
|
+
* <bcm-button status="success" size="small">Confirm</bcm-button>
|
|
2904
|
+
* </div>
|
|
2905
|
+
* </bcm-pop-confirm>
|
|
2906
|
+
* ```
|
|
2907
|
+
* @example Different Sizes
|
|
2908
|
+
* ```html
|
|
2909
|
+
* <!-- Small -->
|
|
2910
|
+
* <bcm-pop-confirm size="small" header-text="Small" description="Compact confirmation">
|
|
2911
|
+
* <bcm-button size="small">Small</bcm-button>
|
|
2912
|
+
* </bcm-pop-confirm>
|
|
2913
|
+
* <!-- Medium (default) -->
|
|
2914
|
+
* <bcm-pop-confirm size="medium" header-text="Medium" description="Standard confirmation">
|
|
2915
|
+
* <bcm-button size="medium">Medium</bcm-button>
|
|
2916
|
+
* </bcm-pop-confirm>
|
|
2917
|
+
* <!-- Large -->
|
|
2918
|
+
* <bcm-pop-confirm size="large" header-text="Large" description="Spacious confirmation with more room for content">
|
|
2919
|
+
* <bcm-button size="large">Large</bcm-button>
|
|
2920
|
+
* </bcm-pop-confirm>
|
|
2921
|
+
* ```
|
|
2922
|
+
* @example Programmatic Control
|
|
2923
|
+
* ```html
|
|
2924
|
+
* <bcm-pop-confirm id="myConfirm" header-text="Confirm" description="Are you sure?">
|
|
2925
|
+
* <bcm-button>Trigger</bcm-button>
|
|
2926
|
+
* </bcm-pop-confirm>
|
|
2927
|
+
* <bcm-button id="showBtn">Show Programmatically</bcm-button>
|
|
2928
|
+
* <bcm-button id="hideBtn">Hide Programmatically</bcm-button>
|
|
2929
|
+
* <script>
|
|
2930
|
+
* const popconfirm = document.getElementById('myConfirm');
|
|
2931
|
+
* document.getElementById('showBtn').addEventListener('click', () => {
|
|
2932
|
+
* popconfirm.show();
|
|
2152
2933
|
* });
|
|
2153
|
-
*
|
|
2154
|
-
*
|
|
2934
|
+
* document.getElementById('hideBtn').addEventListener('click', () => {
|
|
2935
|
+
* popconfirm.hide();
|
|
2155
2936
|
* });
|
|
2156
|
-
*
|
|
2157
|
-
*
|
|
2158
|
-
*
|
|
2159
|
-
*
|
|
2160
|
-
*
|
|
2161
|
-
*
|
|
2162
|
-
*
|
|
2163
|
-
*
|
|
2164
|
-
*
|
|
2165
|
-
*
|
|
2166
|
-
*
|
|
2167
|
-
*
|
|
2168
|
-
* @
|
|
2169
|
-
*
|
|
2170
|
-
*
|
|
2171
|
-
*
|
|
2172
|
-
*
|
|
2173
|
-
*
|
|
2174
|
-
*
|
|
2175
|
-
*
|
|
2176
|
-
*
|
|
2177
|
-
*
|
|
2178
|
-
*
|
|
2179
|
-
*
|
|
2180
|
-
*
|
|
2937
|
+
* </script>
|
|
2938
|
+
* ```
|
|
2939
|
+
* @example Without Status Icon
|
|
2940
|
+
* ```html
|
|
2941
|
+
* <bcm-pop-confirm
|
|
2942
|
+
* header-text="Simple Confirmation"
|
|
2943
|
+
* description="No status icon shown"
|
|
2944
|
+
* status-icon={false}
|
|
2945
|
+
* >
|
|
2946
|
+
* <bcm-button>Click Me</bcm-button>
|
|
2947
|
+
* </bcm-pop-confirm>
|
|
2948
|
+
* ```
|
|
2949
|
+
* @example Different Placements
|
|
2950
|
+
* ```html
|
|
2951
|
+
* <bcm-pop-confirm placement="top" header-text="Top" description="Opens above">
|
|
2952
|
+
* <bcm-button>Top</bcm-button>
|
|
2953
|
+
* </bcm-pop-confirm>
|
|
2954
|
+
* <bcm-pop-confirm placement="right" header-text="Right" description="Opens to the right">
|
|
2955
|
+
* <bcm-button>Right</bcm-button>
|
|
2956
|
+
* </bcm-pop-confirm>
|
|
2957
|
+
* <bcm-pop-confirm placement="bottom" header-text="Bottom" description="Opens below">
|
|
2958
|
+
* <bcm-button>Bottom</bcm-button>
|
|
2959
|
+
* </bcm-pop-confirm>
|
|
2960
|
+
* <bcm-pop-confirm placement="left" header-text="Left" description="Opens to the left">
|
|
2961
|
+
* <bcm-button>Left</bcm-button>
|
|
2962
|
+
* </bcm-pop-confirm>
|
|
2963
|
+
* ```
|
|
2181
2964
|
*/
|
|
2182
2965
|
interface HTMLBcmPopConfirmElement extends Components.BcmPopConfirm, HTMLStencilElement {
|
|
2183
2966
|
addEventListener<K extends keyof HTMLBcmPopConfirmElementEventMap>(type: K, listener: (this: HTMLBcmPopConfirmElement, ev: BcmPopConfirmCustomEvent<HTMLBcmPopConfirmElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2194,21 +2977,24 @@ declare global {
|
|
|
2194
2977
|
new (): HTMLBcmPopConfirmElement;
|
|
2195
2978
|
};
|
|
2196
2979
|
interface HTMLBcmPopoverElementEventMap {
|
|
2197
|
-
"
|
|
2198
|
-
"
|
|
2980
|
+
"bcmBeforeOpen": void;
|
|
2981
|
+
"bcmOpen": void;
|
|
2982
|
+
"bcmBeforeClose": void;
|
|
2983
|
+
"bcmClose": void;
|
|
2199
2984
|
}
|
|
2200
2985
|
/**
|
|
2201
2986
|
* @component BcmPopover
|
|
2202
2987
|
* @description A flexible popover component that displays contextual information or content relative to a target element.
|
|
2203
|
-
*
|
|
2988
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
2989
|
+
* Supports different sizes, trigger types (click, hover, focus), placements, and comprehensive event system.
|
|
2204
2990
|
* @example Basic Click Popover
|
|
2205
2991
|
* <bcm-popover trigger="click" size="medium" placement="top">
|
|
2206
2992
|
* <bcm-button>Click Me</bcm-button>
|
|
2207
2993
|
* <span slot="header">Header</span>
|
|
2208
2994
|
* <span slot="content">This is a simple popover content.</span>
|
|
2209
2995
|
* </bcm-popover>
|
|
2210
|
-
* @example Hover Popover with
|
|
2211
|
-
* <bcm-popover trigger="hover"
|
|
2996
|
+
* @example Hover Popover with Delays
|
|
2997
|
+
* <bcm-popover trigger="hover" show-delay="200" hide-delay="100" size="large" placement="right" header-text="Prop Header" message="This is a hover popover with props.">
|
|
2212
2998
|
* <bcm-button>Hover Me</bcm-button>
|
|
2213
2999
|
* </bcm-popover>
|
|
2214
3000
|
* @example Programmatic Control
|
|
@@ -2218,8 +3004,9 @@ declare global {
|
|
|
2218
3004
|
* </bcm-popover>
|
|
2219
3005
|
* <script>
|
|
2220
3006
|
* const popover = document.querySelector('#my-popover');
|
|
2221
|
-
* popover.
|
|
2222
|
-
* popover.
|
|
3007
|
+
* popover.show(); // Opens the popover
|
|
3008
|
+
* popover.hide(); // Closes the popover
|
|
3009
|
+
* popover.toggle(); // Toggles the popover
|
|
2223
3010
|
* </script>
|
|
2224
3011
|
* @csspart popover - The root popover container element, stylable for the entire popover
|
|
2225
3012
|
* @csspart header - The header section of the popover, stylable for the title area
|
|
@@ -2276,39 +3063,45 @@ declare global {
|
|
|
2276
3063
|
prototype: HTMLBcmRadioGroupElement;
|
|
2277
3064
|
new (): HTMLBcmRadioGroupElement;
|
|
2278
3065
|
};
|
|
2279
|
-
interface
|
|
2280
|
-
"
|
|
3066
|
+
interface HTMLBcmSegmentElementEventMap {
|
|
3067
|
+
"bcmSegmentClick": string;
|
|
2281
3068
|
}
|
|
2282
|
-
|
|
2283
|
-
|
|
3069
|
+
/**
|
|
3070
|
+
* Individual segment option component
|
|
3071
|
+
*/
|
|
3072
|
+
interface HTMLBcmSegmentElement extends Components.BcmSegment, HTMLStencilElement {
|
|
3073
|
+
addEventListener<K extends keyof HTMLBcmSegmentElementEventMap>(type: K, listener: (this: HTMLBcmSegmentElement, ev: BcmSegmentCustomEvent<HTMLBcmSegmentElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2284
3074
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2285
3075
|
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2286
3076
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2287
|
-
removeEventListener<K extends keyof
|
|
3077
|
+
removeEventListener<K extends keyof HTMLBcmSegmentElementEventMap>(type: K, listener: (this: HTMLBcmSegmentElement, ev: BcmSegmentCustomEvent<HTMLBcmSegmentElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2288
3078
|
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2289
3079
|
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2290
3080
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2291
3081
|
}
|
|
2292
|
-
var
|
|
2293
|
-
prototype:
|
|
2294
|
-
new ():
|
|
3082
|
+
var HTMLBcmSegmentElement: {
|
|
3083
|
+
prototype: HTMLBcmSegmentElement;
|
|
3084
|
+
new (): HTMLBcmSegmentElement;
|
|
2295
3085
|
};
|
|
2296
|
-
interface
|
|
2297
|
-
"
|
|
3086
|
+
interface HTMLBcmSegmentedPickerElementEventMap {
|
|
3087
|
+
"bcmSegmentChange": { value: string; previousValue: string };
|
|
2298
3088
|
}
|
|
2299
|
-
|
|
2300
|
-
|
|
3089
|
+
/**
|
|
3090
|
+
* Modern Segmented Picker component with CSS Grid-based indicator
|
|
3091
|
+
*/
|
|
3092
|
+
interface HTMLBcmSegmentedPickerElement extends Components.BcmSegmentedPicker, HTMLStencilElement {
|
|
3093
|
+
addEventListener<K extends keyof HTMLBcmSegmentedPickerElementEventMap>(type: K, listener: (this: HTMLBcmSegmentedPickerElement, ev: BcmSegmentedPickerCustomEvent<HTMLBcmSegmentedPickerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2301
3094
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2302
3095
|
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2303
3096
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2304
|
-
removeEventListener<K extends keyof
|
|
3097
|
+
removeEventListener<K extends keyof HTMLBcmSegmentedPickerElementEventMap>(type: K, listener: (this: HTMLBcmSegmentedPickerElement, ev: BcmSegmentedPickerCustomEvent<HTMLBcmSegmentedPickerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2305
3098
|
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2306
3099
|
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2307
3100
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2308
3101
|
}
|
|
2309
|
-
var
|
|
2310
|
-
prototype:
|
|
2311
|
-
new ():
|
|
3102
|
+
var HTMLBcmSegmentedPickerElement: {
|
|
3103
|
+
prototype: HTMLBcmSegmentedPickerElement;
|
|
3104
|
+
new (): HTMLBcmSegmentedPickerElement;
|
|
2312
3105
|
};
|
|
2313
3106
|
interface HTMLBcmShortcutElement extends Components.BcmShortcut, HTMLStencilElement {
|
|
2314
3107
|
}
|
|
@@ -2321,27 +3114,51 @@ declare global {
|
|
|
2321
3114
|
}
|
|
2322
3115
|
/**
|
|
2323
3116
|
* @component BcmSwitch
|
|
2324
|
-
* @description A
|
|
2325
|
-
*
|
|
3117
|
+
* @description A form-associated toggle switch component representing a boolean choice.
|
|
3118
|
+
* It behaves like a checkbox and integrates with native HTML forms via ElementInternals.
|
|
3119
|
+
* This component supports **three validation strategies** via `validation-mode`:
|
|
3120
|
+
* - **`native`**:
|
|
3121
|
+
* - Uses native browser constraint validation.
|
|
3122
|
+
* - Sets the underlying input's `required` attribute.
|
|
3123
|
+
* - Browser may show the native validation bubble when the form calls `reportValidity()` / submit validation runs.
|
|
3124
|
+
* - **`silent`**:
|
|
3125
|
+
* - Does **not** rely on native `required` (prevents the browser bubble).
|
|
3126
|
+
* - Computes the "missing required" state internally and exposes it via `error` + `caption`.
|
|
3127
|
+
* - UI errors are **gated**: they appear only after the control is touched or after a submit attempt.
|
|
3128
|
+
* - **`none`**:
|
|
3129
|
+
* - Value-only mode (headless): participates in form value submission but never becomes invalid.
|
|
3130
|
+
* ## UI error gating (silent mode)
|
|
3131
|
+
* To avoid showing errors on initial render, the component tracks:
|
|
3132
|
+
* - `touched`: set after the first user interaction
|
|
3133
|
+
* - `submitAttempted`: set when the parent form emits `submit`
|
|
3134
|
+
* Only when `touched || submitAttempted` the component will show `error/caption` in `silent` mode.
|
|
3135
|
+
* ## Value behavior
|
|
3136
|
+
* - When checked, the component submits its `value` (default: `"on"`).
|
|
3137
|
+
* - When unchecked, no value is submitted.
|
|
3138
|
+
* - When disabled, the component does not participate in submission or validity.
|
|
2326
3139
|
* @example Basic usage
|
|
2327
|
-
* <bcm-switch label="
|
|
2328
|
-
* @example
|
|
3140
|
+
* <bcm-switch name="newsletter" label="Receive newsletter?" />
|
|
3141
|
+
* @example Required with silent validation (no native bubble)
|
|
3142
|
+
* <form>
|
|
2329
3143
|
* <bcm-switch
|
|
3144
|
+
* name="terms"
|
|
2330
3145
|
* label="Accept terms"
|
|
2331
|
-
*
|
|
2332
|
-
*
|
|
2333
|
-
* </bcm-switch>
|
|
2334
|
-
* @example Disabled state
|
|
2335
|
-
* <bcm-switch
|
|
2336
|
-
* label="Advanced features"
|
|
2337
|
-
* disabled={true}>
|
|
2338
|
-
* </bcm-switch>
|
|
2339
|
-
* @example With custom size and label position
|
|
2340
|
-
* <bcm-switch
|
|
2341
|
-
* label="Dark mode"
|
|
2342
|
-
* size="large"
|
|
2343
|
-
* labelPosition="left">
|
|
3146
|
+
* required
|
|
3147
|
+
* validation-mode="silent">
|
|
2344
3148
|
* </bcm-switch>
|
|
3149
|
+
* <button type="submit">Submit</button>
|
|
3150
|
+
* </form>
|
|
3151
|
+
* @example Native validation mode (may show native bubble)
|
|
3152
|
+
* <bcm-switch name="terms" label="Accept terms" required validation-mode="native" />
|
|
3153
|
+
* @example Value-only mode (no validation)
|
|
3154
|
+
* <bcm-switch name="analytics" label="Allow analytics" validation-mode="none" />
|
|
3155
|
+
* @csspart base - Root container
|
|
3156
|
+
* @csspart switch-wrapper - Wrapper containing label + track
|
|
3157
|
+
* @csspart input - Hidden native input
|
|
3158
|
+
* @csspart label - Text label
|
|
3159
|
+
* @csspart dot-container - Switch track
|
|
3160
|
+
* @csspart dot - Switch knob
|
|
3161
|
+
* @csspart caption - Helper/error text
|
|
2345
3162
|
*/
|
|
2346
3163
|
interface HTMLBcmSwitchElement extends Components.BcmSwitch, HTMLStencilElement {
|
|
2347
3164
|
addEventListener<K extends keyof HTMLBcmSwitchElementEventMap>(type: K, listener: (this: HTMLBcmSwitchElement, ev: BcmSwitchCustomEvent<HTMLBcmSwitchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
@@ -2357,67 +3174,48 @@ declare global {
|
|
|
2357
3174
|
prototype: HTMLBcmSwitchElement;
|
|
2358
3175
|
new (): HTMLBcmSwitchElement;
|
|
2359
3176
|
};
|
|
2360
|
-
interface
|
|
2361
|
-
"
|
|
2362
|
-
activeTab: string;
|
|
2363
|
-
element: HTMLBcmTabsTriggerElement;
|
|
2364
|
-
previousTab?: string;
|
|
2365
|
-
};
|
|
3177
|
+
interface HTMLBcmTabElementEventMap {
|
|
3178
|
+
"bcmTabClick": string;
|
|
2366
3179
|
}
|
|
2367
3180
|
/**
|
|
2368
|
-
*
|
|
3181
|
+
* Individual tab component - self-contained with label and content panel
|
|
2369
3182
|
*/
|
|
2370
|
-
interface
|
|
2371
|
-
addEventListener<K extends keyof
|
|
3183
|
+
interface HTMLBcmTabElement extends Components.BcmTab, HTMLStencilElement {
|
|
3184
|
+
addEventListener<K extends keyof HTMLBcmTabElementEventMap>(type: K, listener: (this: HTMLBcmTabElement, ev: BcmTabCustomEvent<HTMLBcmTabElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2372
3185
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2373
3186
|
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2374
3187
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2375
|
-
removeEventListener<K extends keyof
|
|
3188
|
+
removeEventListener<K extends keyof HTMLBcmTabElementEventMap>(type: K, listener: (this: HTMLBcmTabElement, ev: BcmTabCustomEvent<HTMLBcmTabElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2376
3189
|
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2377
3190
|
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2378
3191
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2379
3192
|
}
|
|
2380
|
-
var
|
|
2381
|
-
prototype:
|
|
2382
|
-
new ():
|
|
2383
|
-
};
|
|
2384
|
-
/**
|
|
2385
|
-
* @description Tab content panel component that displays when its corresponding tab is selected
|
|
2386
|
-
*/
|
|
2387
|
-
interface HTMLBcmTabsContentElement extends Components.BcmTabsContent, HTMLStencilElement {
|
|
2388
|
-
}
|
|
2389
|
-
var HTMLBcmTabsContentElement: {
|
|
2390
|
-
prototype: HTMLBcmTabsContentElement;
|
|
2391
|
-
new (): HTMLBcmTabsContentElement;
|
|
3193
|
+
var HTMLBcmTabElement: {
|
|
3194
|
+
prototype: HTMLBcmTabElement;
|
|
3195
|
+
new (): HTMLBcmTabElement;
|
|
2392
3196
|
};
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
var HTMLBcmTabsListElement: {
|
|
2399
|
-
prototype: HTMLBcmTabsListElement;
|
|
2400
|
-
new (): HTMLBcmTabsListElement;
|
|
2401
|
-
};
|
|
2402
|
-
interface HTMLBcmTabsTriggerElementEventMap {
|
|
2403
|
-
"bcmTabSelected": string;
|
|
3197
|
+
interface HTMLBcmTabsElementEventMap {
|
|
3198
|
+
"bcmTabChange": {
|
|
3199
|
+
value: string;
|
|
3200
|
+
previousValue: string;
|
|
3201
|
+
};
|
|
2404
3202
|
}
|
|
2405
3203
|
/**
|
|
2406
|
-
*
|
|
3204
|
+
* Modern Tabs component with CSS-first approach
|
|
2407
3205
|
*/
|
|
2408
|
-
interface
|
|
2409
|
-
addEventListener<K extends keyof
|
|
3206
|
+
interface HTMLBcmTabsElement extends Components.BcmTabs, HTMLStencilElement {
|
|
3207
|
+
addEventListener<K extends keyof HTMLBcmTabsElementEventMap>(type: K, listener: (this: HTMLBcmTabsElement, ev: BcmTabsCustomEvent<HTMLBcmTabsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2410
3208
|
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2411
3209
|
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
2412
3210
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
2413
|
-
removeEventListener<K extends keyof
|
|
3211
|
+
removeEventListener<K extends keyof HTMLBcmTabsElementEventMap>(type: K, listener: (this: HTMLBcmTabsElement, ev: BcmTabsCustomEvent<HTMLBcmTabsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
2414
3212
|
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2415
3213
|
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
2416
3214
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
2417
3215
|
}
|
|
2418
|
-
var
|
|
2419
|
-
prototype:
|
|
2420
|
-
new ():
|
|
3216
|
+
var HTMLBcmTabsElement: {
|
|
3217
|
+
prototype: HTMLBcmTabsElement;
|
|
3218
|
+
new (): HTMLBcmTabsElement;
|
|
2421
3219
|
};
|
|
2422
3220
|
interface HTMLBcmTextElement extends Components.BcmText, HTMLStencilElement {
|
|
2423
3221
|
}
|
|
@@ -2449,23 +3247,50 @@ declare global {
|
|
|
2449
3247
|
};
|
|
2450
3248
|
/**
|
|
2451
3249
|
* @component BcmTooltip
|
|
2452
|
-
* @description A
|
|
2453
|
-
*
|
|
2454
|
-
*
|
|
2455
|
-
*
|
|
2456
|
-
*
|
|
3250
|
+
* @description A flexible tooltip component that provides contextual information on hover or click.
|
|
3251
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
3252
|
+
* Automatically handles overflow, flipping, and complex shadow DOM scenarios.
|
|
3253
|
+
* @example ```html
|
|
3254
|
+
* <!-- Basic usage with text message -->
|
|
3255
|
+
* <bcm-tooltip message="This is a tooltip">
|
|
3256
|
+
* <button>Hover me</button>
|
|
2457
3257
|
* </bcm-tooltip>
|
|
2458
|
-
*
|
|
2459
|
-
* <bcm-tooltip
|
|
2460
|
-
*
|
|
3258
|
+
* <!-- With custom rich content -->
|
|
3259
|
+
* <bcm-tooltip placement="right" size="large">
|
|
3260
|
+
* <button>Click me</button>
|
|
3261
|
+
* <div slot="content">
|
|
3262
|
+
* <strong>Rich content</strong>
|
|
3263
|
+
* <p>You can add any HTML here</p>
|
|
3264
|
+
* </div>
|
|
3265
|
+
* </bcm-tooltip>
|
|
3266
|
+
* <!-- Click trigger with custom delays -->
|
|
3267
|
+
* <bcm-tooltip trigger="click" show-delay="0" hide-delay="0">
|
|
3268
|
+
* <span>Click me</span>
|
|
3269
|
+
* </bcm-tooltip>
|
|
3270
|
+
* <!-- Mouse following mode -->
|
|
3271
|
+
* <bcm-tooltip follow={true} message="I follow your cursor!">
|
|
3272
|
+
* <div>Move your mouse here</div>
|
|
3273
|
+
* </bcm-tooltip>
|
|
3274
|
+
* <!-- Programmatic control -->
|
|
3275
|
+
* <bcm-tooltip id="myTooltip" message="Programmatic tooltip">
|
|
3276
|
+
* <span>Trigger</span>
|
|
2461
3277
|
* </bcm-tooltip>
|
|
2462
3278
|
* <script>
|
|
2463
|
-
*
|
|
2464
|
-
*
|
|
2465
|
-
* tooltip.
|
|
3279
|
+
* const tooltip = document.getElementById('myTooltip');
|
|
3280
|
+
* tooltip.show();
|
|
3281
|
+
* setTimeout(() => tooltip.hide(), 2000);
|
|
2466
3282
|
* </script>
|
|
2467
|
-
*
|
|
2468
|
-
*
|
|
3283
|
+
* <!-- Custom styling with CSS parts -->
|
|
3284
|
+
* <style>
|
|
3285
|
+
* bcm-tooltip::part(tooltip) {
|
|
3286
|
+
* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
3287
|
+
* border-radius: 12px;
|
|
3288
|
+
* }
|
|
3289
|
+
* bcm-tooltip::part(arrow) {
|
|
3290
|
+
* background: #667eea;
|
|
3291
|
+
* }
|
|
3292
|
+
* </style>
|
|
3293
|
+
* ```
|
|
2469
3294
|
*/
|
|
2470
3295
|
interface HTMLBcmTooltipElement extends Components.BcmTooltip, HTMLStencilElement {
|
|
2471
3296
|
}
|
|
@@ -2488,6 +3313,7 @@ declare global {
|
|
|
2488
3313
|
"bcm-drawer": HTMLBcmDrawerElement;
|
|
2489
3314
|
"bcm-dropdown": HTMLBcmDropdownElement;
|
|
2490
3315
|
"bcm-dropdown-item": HTMLBcmDropdownItemElement;
|
|
3316
|
+
"bcm-file-upload": HTMLBcmFileUploadElement;
|
|
2491
3317
|
"bcm-input": HTMLBcmInputElement;
|
|
2492
3318
|
"bcm-linked": HTMLBcmLinkedElement;
|
|
2493
3319
|
"bcm-modal": HTMLBcmModalElement;
|
|
@@ -2495,14 +3321,12 @@ declare global {
|
|
|
2495
3321
|
"bcm-popover": HTMLBcmPopoverElement;
|
|
2496
3322
|
"bcm-radio": HTMLBcmRadioElement;
|
|
2497
3323
|
"bcm-radio-group": HTMLBcmRadioGroupElement;
|
|
3324
|
+
"bcm-segment": HTMLBcmSegmentElement;
|
|
2498
3325
|
"bcm-segmented-picker": HTMLBcmSegmentedPickerElement;
|
|
2499
|
-
"bcm-segmented-picker-option": HTMLBcmSegmentedPickerOptionElement;
|
|
2500
3326
|
"bcm-shortcut": HTMLBcmShortcutElement;
|
|
2501
3327
|
"bcm-switch": HTMLBcmSwitchElement;
|
|
3328
|
+
"bcm-tab": HTMLBcmTabElement;
|
|
2502
3329
|
"bcm-tabs": HTMLBcmTabsElement;
|
|
2503
|
-
"bcm-tabs-content": HTMLBcmTabsContentElement;
|
|
2504
|
-
"bcm-tabs-list": HTMLBcmTabsListElement;
|
|
2505
|
-
"bcm-tabs-trigger": HTMLBcmTabsTriggerElement;
|
|
2506
3330
|
"bcm-text": HTMLBcmTextElement;
|
|
2507
3331
|
"bcm-textarea": HTMLBcmTextareaElement;
|
|
2508
3332
|
"bcm-tooltip": HTMLBcmTooltipElement;
|
|
@@ -2956,62 +3780,126 @@ declare namespace LocalJSX {
|
|
|
2956
3780
|
"status"?: ButtonStatus;
|
|
2957
3781
|
}
|
|
2958
3782
|
/**
|
|
2959
|
-
* @
|
|
2960
|
-
*
|
|
3783
|
+
* @component BcmCheckbox
|
|
3784
|
+
* @description A form-associated checkbox component representing a boolean choice.
|
|
3785
|
+
* Integrates with native HTML forms via ElementInternals while supporting
|
|
3786
|
+
* **three validation strategies** via `validation-mode`:
|
|
3787
|
+
* - **`native`**
|
|
3788
|
+
* - Participates in native browser constraint validation.
|
|
3789
|
+
* - Sets the underlying input's `required`.
|
|
3790
|
+
* - Browser may show native validation bubbles when submit/reportValidity happens.
|
|
3791
|
+
* - **`silent`**
|
|
3792
|
+
* - Does **not** set native `required` (prevents browser bubble).
|
|
3793
|
+
* - Computes "missing required" internally and exposes it via `error` + `caption`.
|
|
3794
|
+
* - UI errors are **gated**: shown only after `touched` or a form submit attempt.
|
|
3795
|
+
* - **`none`**
|
|
3796
|
+
* - Value-only mode: submits value but never becomes invalid.
|
|
3797
|
+
* ## UI error gating (silent mode)
|
|
3798
|
+
* - `touched` becomes true after first user interaction
|
|
3799
|
+
* - `submitAttempted` becomes true when the parent form emits `submit`
|
|
3800
|
+
* ## Value behavior
|
|
3801
|
+
* - When checked → submits `value` (default: `"on"`).
|
|
3802
|
+
* - When unchecked → submits no value (`null`).
|
|
3803
|
+
* - When disabled → no submission and no validity participation.
|
|
3804
|
+
* ## Shadow Parts
|
|
3805
|
+
* - `checkbox` → root container
|
|
3806
|
+
* - `control` → visual checkbox box
|
|
3807
|
+
* - `icon` → icon container (check or minus)
|
|
3808
|
+
* - `label` → label text
|
|
3809
|
+
* - `caption` → helper/error text (silent mode UI)
|
|
3810
|
+
* - `input` → hidden native input
|
|
3811
|
+
* @example Basic usage
|
|
3812
|
+
* <bcm-checkbox name="terms" required>
|
|
3813
|
+
* I agree to the terms and conditions
|
|
3814
|
+
* </bcm-checkbox>
|
|
3815
|
+
* @example Silent validation (no native bubble)
|
|
3816
|
+
* <form>
|
|
3817
|
+
* <bcm-checkbox name="newsletter" required validation-mode="silent">
|
|
3818
|
+
* Subscribe to newsletter
|
|
3819
|
+
* </bcm-checkbox>
|
|
3820
|
+
* <button type="submit">Submit</button>
|
|
3821
|
+
* </form>
|
|
3822
|
+
* @example Value-only mode
|
|
3823
|
+
* <bcm-checkbox name="analytics" validation-mode="none">
|
|
3824
|
+
* Allow analytics
|
|
3825
|
+
* </bcm-checkbox>
|
|
2961
3826
|
*/
|
|
2962
3827
|
interface BcmCheckbox {
|
|
2963
3828
|
/**
|
|
2964
|
-
* Unique ID for the component. Automatically generated if not specified.
|
|
3829
|
+
* Unique ID for the component. Automatically generated if not specified. Used to bind the visible label to the internal input.
|
|
2965
3830
|
* @default generateId('bcm-checkbox')
|
|
2966
3831
|
*/
|
|
2967
3832
|
"_id"?: string;
|
|
2968
3833
|
/**
|
|
2969
|
-
*
|
|
3834
|
+
* Helper / error caption (silent mode UI)
|
|
3835
|
+
*/
|
|
3836
|
+
"caption"?: string;
|
|
3837
|
+
/**
|
|
3838
|
+
* Checked state
|
|
2970
3839
|
* @default false
|
|
2971
3840
|
*/
|
|
2972
3841
|
"checked"?: boolean;
|
|
2973
3842
|
/**
|
|
2974
|
-
*
|
|
3843
|
+
* Disabled state
|
|
2975
3844
|
* @default false
|
|
2976
3845
|
*/
|
|
2977
3846
|
"disabled"?: boolean;
|
|
2978
3847
|
/**
|
|
2979
|
-
*
|
|
3848
|
+
* Visual error state. - In `silent` mode this can be managed internally. - In other modes you can set it externally as well.
|
|
2980
3849
|
* @default false
|
|
2981
3850
|
*/
|
|
2982
3851
|
"error"?: boolean;
|
|
2983
3852
|
/**
|
|
2984
|
-
*
|
|
3853
|
+
* Makes checkbox occupy full width (if your styles support it).
|
|
2985
3854
|
* @default false
|
|
2986
3855
|
*/
|
|
2987
3856
|
"fullWidth"?: boolean;
|
|
2988
3857
|
/**
|
|
2989
|
-
*
|
|
3858
|
+
* Indeterminate (mixed) state. Useful when a group selection is partially selected.
|
|
2990
3859
|
* @default false
|
|
2991
3860
|
*/
|
|
2992
3861
|
"indeterminate"?: boolean;
|
|
2993
3862
|
/**
|
|
2994
|
-
*
|
|
3863
|
+
* Visible label text (optional). You can also use the default slot.
|
|
2995
3864
|
*/
|
|
2996
3865
|
"label"?: string;
|
|
2997
3866
|
/**
|
|
2998
|
-
*
|
|
3867
|
+
* Label position relative to the checkbox control.
|
|
2999
3868
|
* @default 'right'
|
|
3000
3869
|
*/
|
|
3001
3870
|
"labelPosition"?: 'left' | 'right';
|
|
3002
3871
|
/**
|
|
3003
|
-
*
|
|
3872
|
+
* Form field name
|
|
3004
3873
|
*/
|
|
3005
3874
|
"name"?: string;
|
|
3006
3875
|
/**
|
|
3007
|
-
*
|
|
3876
|
+
* Fired whenever the checked state changes.
|
|
3877
|
+
*/
|
|
3878
|
+
"onBcmCheckboxChange"?: (event: BcmCheckboxCustomEvent<{ element: HTMLInputElement; checked: boolean }>) => void;
|
|
3879
|
+
/**
|
|
3880
|
+
* Optional readonly support
|
|
3881
|
+
* @default false
|
|
3882
|
+
*/
|
|
3883
|
+
"readonly"?: boolean;
|
|
3884
|
+
/**
|
|
3885
|
+
* Required state
|
|
3886
|
+
* @default false
|
|
3008
3887
|
*/
|
|
3009
|
-
"
|
|
3888
|
+
"required"?: boolean;
|
|
3010
3889
|
/**
|
|
3011
|
-
* Size variant
|
|
3890
|
+
* Size variant (affects control + typography).
|
|
3012
3891
|
* @default 'medium'
|
|
3013
3892
|
*/
|
|
3014
3893
|
"size"?: 'small' | 'medium' | 'large';
|
|
3894
|
+
/**
|
|
3895
|
+
* @default 'native'
|
|
3896
|
+
*/
|
|
3897
|
+
"validationMode"?: 'native' | 'silent' | 'none';
|
|
3898
|
+
/**
|
|
3899
|
+
* Value submitted when checked
|
|
3900
|
+
* @default 'on'
|
|
3901
|
+
*/
|
|
3902
|
+
"value"?: string;
|
|
3015
3903
|
}
|
|
3016
3904
|
/**
|
|
3017
3905
|
* @component BcmChip
|
|
@@ -3096,29 +3984,110 @@ declare namespace LocalJSX {
|
|
|
3096
3984
|
*/
|
|
3097
3985
|
"variant"?: 'solid' | 'dashed' | 'dotted';
|
|
3098
3986
|
}
|
|
3987
|
+
/**
|
|
3988
|
+
* @component BcmDrawer
|
|
3989
|
+
* @description A slide-in panel component built on the native HTML Dialog API.
|
|
3990
|
+
* Ideal for navigation menus, forms, and contextual information that slides in from any edge of the screen.
|
|
3991
|
+
* @example ```html
|
|
3992
|
+
* <!-- Basic usage -->
|
|
3993
|
+
* <bcm-drawer open header-text="Menu" position="left">
|
|
3994
|
+
* <nav>
|
|
3995
|
+
* <a href="/home">Home</a>
|
|
3996
|
+
* <a href="/about">About</a>
|
|
3997
|
+
* </nav>
|
|
3998
|
+
* </bcm-drawer>
|
|
3999
|
+
* <!-- Custom size and position -->
|
|
4000
|
+
* <bcm-drawer size="large" position="right">
|
|
4001
|
+
* <div slot="header">Settings</div>
|
|
4002
|
+
* <form>...</form>
|
|
4003
|
+
* <div slot="footer">
|
|
4004
|
+
* <button data-dismiss>Cancel</button>
|
|
4005
|
+
* <button>Save</button>
|
|
4006
|
+
* </div>
|
|
4007
|
+
* </bcm-drawer>
|
|
4008
|
+
* <!-- Custom size with CSS units -->
|
|
4009
|
+
* <bcm-drawer size="600px" position="bottom">
|
|
4010
|
+
* <p>Custom height drawer</p>
|
|
4011
|
+
* </bcm-drawer>
|
|
4012
|
+
* <!-- Programmatic usage -->
|
|
4013
|
+
* <bcm-drawer id="myDrawer">Content</bcm-drawer>
|
|
4014
|
+
* <script>
|
|
4015
|
+
* document.getElementById('myDrawer').show();
|
|
4016
|
+
* </script>
|
|
4017
|
+
* ```
|
|
4018
|
+
*/
|
|
3099
4019
|
interface BcmDrawer {
|
|
3100
4020
|
/**
|
|
4021
|
+
* Controls backdrop behavior - true: Shows backdrop, drawer can be closed by clicking outside - false: No backdrop - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
|
|
4022
|
+
* @default true
|
|
4023
|
+
*/
|
|
4024
|
+
"backdrop"?: boolean | 'static';
|
|
4025
|
+
/**
|
|
4026
|
+
* Allows closing the drawer by clicking on the backdrop
|
|
4027
|
+
* @default true
|
|
4028
|
+
*/
|
|
4029
|
+
"closeOnBackdrop"?: boolean;
|
|
4030
|
+
/**
|
|
4031
|
+
* Allows closing the drawer by pressing the Escape key
|
|
4032
|
+
* @default true
|
|
4033
|
+
*/
|
|
4034
|
+
"closeOnEscape"?: boolean;
|
|
4035
|
+
/**
|
|
4036
|
+
* Makes the drawer take the full screen (100vw x 100vh)
|
|
4037
|
+
* @default false
|
|
4038
|
+
*/
|
|
4039
|
+
"fullScreen"?: boolean;
|
|
4040
|
+
/**
|
|
4041
|
+
* Makes the drawer take full width (for left/right) or full height (for top/bottom)
|
|
3101
4042
|
* @default false
|
|
3102
4043
|
*/
|
|
3103
4044
|
"fullWidth"?: boolean;
|
|
4045
|
+
/**
|
|
4046
|
+
* Text to display in the drawer header
|
|
4047
|
+
*/
|
|
3104
4048
|
"headerText"?: string;
|
|
3105
4049
|
/**
|
|
4050
|
+
* Helper text to display below the header title
|
|
4051
|
+
*/
|
|
4052
|
+
"helperText"?: string;
|
|
4053
|
+
/**
|
|
4054
|
+
* Hides the footer section completely
|
|
4055
|
+
* @default false
|
|
4056
|
+
*/
|
|
4057
|
+
"noFooter"?: boolean;
|
|
4058
|
+
/**
|
|
4059
|
+
* Hides the header section completely
|
|
3106
4060
|
* @default false
|
|
3107
4061
|
*/
|
|
3108
4062
|
"noHeader"?: boolean;
|
|
4063
|
+
/**
|
|
4064
|
+
* Emitted before the drawer closes. Can be cancelled by calling event.preventDefault()
|
|
4065
|
+
*/
|
|
3109
4066
|
"onBcmBeforeClose"?: (event: BcmDrawerCustomEvent<void>) => void;
|
|
4067
|
+
/**
|
|
4068
|
+
* Emitted before the drawer opens. Can be cancelled by calling event.preventDefault()
|
|
4069
|
+
*/
|
|
3110
4070
|
"onBcmBeforeOpen"?: (event: BcmDrawerCustomEvent<void>) => void;
|
|
4071
|
+
/**
|
|
4072
|
+
* Emitted after the drawer has closed
|
|
4073
|
+
*/
|
|
3111
4074
|
"onBcmClose"?: (event: BcmDrawerCustomEvent<void>) => void;
|
|
4075
|
+
/**
|
|
4076
|
+
* Emitted after the drawer has opened
|
|
4077
|
+
*/
|
|
3112
4078
|
"onBcmOpen"?: (event: BcmDrawerCustomEvent<void>) => void;
|
|
3113
4079
|
/**
|
|
4080
|
+
* Controls whether the drawer is open or closed
|
|
3114
4081
|
* @default false
|
|
3115
4082
|
*/
|
|
3116
4083
|
"open"?: boolean;
|
|
3117
4084
|
/**
|
|
4085
|
+
* The position where the drawer slides in from - 'left': Slides from the left edge - 'right': Slides from the right edge - 'top': Slides from the top edge - 'bottom': Slides from the bottom edge
|
|
3118
4086
|
* @default 'right'
|
|
3119
4087
|
*/
|
|
3120
4088
|
"position"?: DrawerPosition;
|
|
3121
4089
|
/**
|
|
4090
|
+
* The size of the drawer. Can be a preset value or a custom CSS size - For left/right drawers: - 'small': 320px - 'medium': 480px - 'large': 1064px - For top/bottom drawers: - 'small': 40vh - 'medium': 60vh - 'large': 90vh - Custom values: Any valid CSS size (e.g., '600px', '50%', '30rem', '80vw')
|
|
3122
4091
|
* @default 'medium'
|
|
3123
4092
|
*/
|
|
3124
4093
|
"size"?: DrawerSize;
|
|
@@ -3145,6 +4114,61 @@ declare namespace LocalJSX {
|
|
|
3145
4114
|
"selected"?: boolean;
|
|
3146
4115
|
"text"?: string;
|
|
3147
4116
|
}
|
|
4117
|
+
interface BcmFileUpload {
|
|
4118
|
+
/**
|
|
4119
|
+
* @default '.xls,.pdf'
|
|
4120
|
+
*/
|
|
4121
|
+
"accept"?: string;
|
|
4122
|
+
/**
|
|
4123
|
+
* @default ''
|
|
4124
|
+
*/
|
|
4125
|
+
"caption"?: string;
|
|
4126
|
+
/**
|
|
4127
|
+
* Allows consumers to override default error messages.
|
|
4128
|
+
*/
|
|
4129
|
+
"customErrorMessages"?: BcmUploadErrorMessages;
|
|
4130
|
+
/**
|
|
4131
|
+
* @default false
|
|
4132
|
+
*/
|
|
4133
|
+
"disabled"?: boolean;
|
|
4134
|
+
/**
|
|
4135
|
+
* @default ''
|
|
4136
|
+
*/
|
|
4137
|
+
"label"?: string;
|
|
4138
|
+
/**
|
|
4139
|
+
* Maximum number of files allowed in total. Only applied when `multiple` is true.
|
|
4140
|
+
*/
|
|
4141
|
+
"maxFileCount"?: number;
|
|
4142
|
+
/**
|
|
4143
|
+
* @default 2
|
|
4144
|
+
*/
|
|
4145
|
+
"maxSize"?: number;
|
|
4146
|
+
/**
|
|
4147
|
+
* @default false
|
|
4148
|
+
*/
|
|
4149
|
+
"multiple"?: boolean;
|
|
4150
|
+
/**
|
|
4151
|
+
* @default 'file'
|
|
4152
|
+
*/
|
|
4153
|
+
"name"?: string;
|
|
4154
|
+
"onBcmBlur"?: (event: BcmFileUploadCustomEvent<FocusEvent>) => void;
|
|
4155
|
+
"onBcmFileChange"?: (event: BcmFileUploadCustomEvent<File[]>) => void;
|
|
4156
|
+
"onBcmFileRemoved"?: (event: BcmFileUploadCustomEvent<BcmUploadItem>) => void;
|
|
4157
|
+
"onBcmFocus"?: (event: BcmFileUploadCustomEvent<FocusEvent>) => void;
|
|
4158
|
+
"onBcmUploadCanceled"?: (event: BcmFileUploadCustomEvent<BcmUploadItem>) => void;
|
|
4159
|
+
/**
|
|
4160
|
+
* @default false
|
|
4161
|
+
*/
|
|
4162
|
+
"required"?: boolean;
|
|
4163
|
+
/**
|
|
4164
|
+
* @default 'medium'
|
|
4165
|
+
*/
|
|
4166
|
+
"size"?: 'medium' | 'small';
|
|
4167
|
+
/**
|
|
4168
|
+
* Reserved for future backend upload integration. Currently does not affect component behavior.
|
|
4169
|
+
*/
|
|
4170
|
+
"uploadUrl"?: string;
|
|
4171
|
+
}
|
|
3148
4172
|
interface BcmInput {
|
|
3149
4173
|
/**
|
|
3150
4174
|
* Input id
|
|
@@ -3271,220 +4295,457 @@ declare namespace LocalJSX {
|
|
|
3271
4295
|
*/
|
|
3272
4296
|
"value"?: string;
|
|
3273
4297
|
}
|
|
4298
|
+
/**
|
|
4299
|
+
* @component BcmLinked
|
|
4300
|
+
* @description A flexible linked floating element component that displays contextual content relative to a trigger element.
|
|
4301
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
4302
|
+
* Supports different trigger types (click, hover, focus, manual) and comprehensive event system.
|
|
4303
|
+
* @example Basic Click Trigger
|
|
4304
|
+
* <bcm-linked trigger="click">
|
|
4305
|
+
* <button slot="trigger">Click Me</button>
|
|
4306
|
+
* <div>Floating content here</div>
|
|
4307
|
+
* </bcm-linked>
|
|
4308
|
+
* @example Hover Trigger with Delays
|
|
4309
|
+
* <bcm-linked trigger="hover" show-delay="200" hide-delay="100">
|
|
4310
|
+
* <span slot="trigger">Hover Me</span>
|
|
4311
|
+
* <div>This appears on hover</div>
|
|
4312
|
+
* </bcm-linked>
|
|
4313
|
+
* @example Manual Control
|
|
4314
|
+
* <bcm-linked id="my-linked" trigger="manual">
|
|
4315
|
+
* <button slot="trigger">Trigger</button>
|
|
4316
|
+
* <div>Controlled content</div>
|
|
4317
|
+
* </bcm-linked>
|
|
4318
|
+
* <script>
|
|
4319
|
+
* const linked = document.querySelector('#my-linked');
|
|
4320
|
+
* linked.show(); // Opens the floating element
|
|
4321
|
+
* linked.hide(); // Closes the floating element
|
|
4322
|
+
* </script>
|
|
4323
|
+
* @csspart floating - The floating container element
|
|
4324
|
+
* @csspart arrow - The arrow element pointing to the trigger
|
|
4325
|
+
* @csspart content - The content wrapper element
|
|
4326
|
+
*/
|
|
3274
4327
|
interface BcmLinked {
|
|
3275
4328
|
/**
|
|
3276
|
-
* @
|
|
3277
|
-
|
|
3278
|
-
"appendToBody"?: boolean;
|
|
3279
|
-
/**
|
|
3280
|
-
* @default false
|
|
4329
|
+
* @prop {boolean} closeOnEscape - Whether to close when pressing Escape key. Default: true
|
|
4330
|
+
* @default true
|
|
3281
4331
|
*/
|
|
3282
|
-
"
|
|
4332
|
+
"closeOnEscape"?: boolean;
|
|
3283
4333
|
/**
|
|
3284
|
-
* @
|
|
4334
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside. Default: true
|
|
4335
|
+
* @default true
|
|
3285
4336
|
*/
|
|
3286
|
-
"
|
|
4337
|
+
"closeOnOutsideClick"?: boolean;
|
|
3287
4338
|
/**
|
|
4339
|
+
* @prop {boolean} disabled - Disables the floating element, preventing it from showing. Default: false
|
|
3288
4340
|
* @default false
|
|
3289
4341
|
*/
|
|
3290
4342
|
"disabled"?: boolean;
|
|
3291
4343
|
/**
|
|
4344
|
+
* @prop {number} hideDelay - Delay in milliseconds before hiding the floating element. Default: 0
|
|
3292
4345
|
* @default 0
|
|
3293
4346
|
*/
|
|
3294
4347
|
"hideDelay"?: number;
|
|
3295
4348
|
/**
|
|
4349
|
+
* @prop {number} offsetDistance - Distance in pixels between the floating element and the trigger. Default: 8
|
|
3296
4350
|
* @default 8
|
|
3297
4351
|
*/
|
|
3298
|
-
"
|
|
4352
|
+
"offsetDistance"?: number;
|
|
4353
|
+
/**
|
|
4354
|
+
* @event bcmBeforeHide - Emitted before the floating element hides.
|
|
4355
|
+
*/
|
|
4356
|
+
"onBcmBeforeHide"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
4357
|
+
/**
|
|
4358
|
+
* @event bcmBeforeShow - Emitted before the floating element shows.
|
|
4359
|
+
*/
|
|
4360
|
+
"onBcmBeforeShow"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
4361
|
+
/**
|
|
4362
|
+
* @event bcmHidden - Emitted after the floating element is fully hidden (after animation).
|
|
4363
|
+
*/
|
|
3299
4364
|
"onBcmHidden"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
4365
|
+
/**
|
|
4366
|
+
* @event bcmHide - Emitted when the floating element is hidden.
|
|
4367
|
+
*/
|
|
3300
4368
|
"onBcmHide"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
4369
|
+
/**
|
|
4370
|
+
* @event bcmShow - Emitted when the floating element is shown.
|
|
4371
|
+
*/
|
|
3301
4372
|
"onBcmShow"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
4373
|
+
/**
|
|
4374
|
+
* @event bcmShown - Emitted after the floating element is fully shown (after animation).
|
|
4375
|
+
*/
|
|
3302
4376
|
"onBcmShown"?: (event: BcmLinkedCustomEvent<void>) => void;
|
|
3303
4377
|
/**
|
|
4378
|
+
* @prop {Placement} placement - Defines the position of the floating element relative to the trigger. Default: 'bottom-start'
|
|
3304
4379
|
* @default 'bottom-start'
|
|
3305
4380
|
*/
|
|
3306
4381
|
"placement"?: Placement;
|
|
3307
4382
|
/**
|
|
4383
|
+
* @prop {boolean} showArrow - Whether to show an arrow pointing to the trigger element. Default: true
|
|
4384
|
+
* @default true
|
|
4385
|
+
*/
|
|
4386
|
+
"showArrow"?: boolean;
|
|
4387
|
+
/**
|
|
4388
|
+
* @prop {number} showDelay - Delay in milliseconds before showing the floating element. Default: 0
|
|
3308
4389
|
* @default 0
|
|
3309
4390
|
*/
|
|
3310
4391
|
"showDelay"?: number;
|
|
3311
|
-
"targetElement"?: HTMLElement;
|
|
3312
|
-
"targetId"?: string;
|
|
3313
4392
|
/**
|
|
4393
|
+
* @prop {TriggerType} trigger - Defines the interaction type to show/hide the floating element. 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave, 'focus' shows on focus and hides on blur, 'manual' requires programmatic control. Default: 'click'
|
|
3314
4394
|
* @default 'click'
|
|
3315
4395
|
*/
|
|
3316
4396
|
"trigger"?: TriggerType;
|
|
3317
4397
|
/**
|
|
3318
|
-
* @
|
|
4398
|
+
* @prop {boolean} visible - Controls the visibility state of the floating element. Can be set programmatically or toggled by user interaction. Default: false
|
|
4399
|
+
* @default false
|
|
3319
4400
|
*/
|
|
3320
|
-
"
|
|
4401
|
+
"visible"?: boolean;
|
|
3321
4402
|
}
|
|
4403
|
+
/**
|
|
4404
|
+
* @component BcmModal
|
|
4405
|
+
* @description A flexible modal dialog component built on the native HTML Dialog API.
|
|
4406
|
+
* Provides a powerful way to display content in a layer above the page with full keyboard and focus management.
|
|
4407
|
+
* @example ```html
|
|
4408
|
+
* <!-- Basic usage -->
|
|
4409
|
+
* <bcm-modal open header-text="Welcome" helper-text="Please read carefully">
|
|
4410
|
+
* <p>Modal content goes here</p>
|
|
4411
|
+
* <div slot="footer">
|
|
4412
|
+
* <button data-dismiss>Close</button>
|
|
4413
|
+
* </div>
|
|
4414
|
+
* </bcm-modal>
|
|
4415
|
+
* <!-- Custom size and placement -->
|
|
4416
|
+
* <bcm-modal size="large" placement="top">
|
|
4417
|
+
* <div slot="header">Custom Header</div>
|
|
4418
|
+
* <p>Content here</p>
|
|
4419
|
+
* <div slot="footer">
|
|
4420
|
+
* <button>Cancel</button>
|
|
4421
|
+
* <button>Confirm</button>
|
|
4422
|
+
* </div>
|
|
4423
|
+
* </bcm-modal>
|
|
4424
|
+
* <!-- Full screen modal -->
|
|
4425
|
+
* <bcm-modal full-screen no-footer>
|
|
4426
|
+
* <p>Full screen content</p>
|
|
4427
|
+
* </bcm-modal>
|
|
4428
|
+
* <!-- Programmatic usage -->
|
|
4429
|
+
* <bcm-modal id="myModal">Content</bcm-modal>
|
|
4430
|
+
* <script>
|
|
4431
|
+
* document.getElementById('myModal').show();
|
|
4432
|
+
* </script>
|
|
4433
|
+
* ```
|
|
4434
|
+
*/
|
|
3322
4435
|
interface BcmModal {
|
|
3323
4436
|
/**
|
|
4437
|
+
* Controls backdrop behavior - true: Shows backdrop, modal can be closed by clicking outside - false: No backdrop - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)
|
|
3324
4438
|
* @default true
|
|
3325
4439
|
*/
|
|
3326
4440
|
"backdrop"?: boolean | 'static';
|
|
3327
4441
|
/**
|
|
4442
|
+
* Allows closing the modal by clicking on the backdrop
|
|
3328
4443
|
* @default true
|
|
3329
4444
|
*/
|
|
3330
4445
|
"closeOnBackdrop"?: boolean;
|
|
3331
4446
|
/**
|
|
4447
|
+
* Allows closing the modal by pressing the Escape key
|
|
3332
4448
|
* @default true
|
|
3333
4449
|
*/
|
|
3334
4450
|
"closeOnEscape"?: boolean;
|
|
3335
4451
|
/**
|
|
4452
|
+
* Makes the modal take the full screen (100vw x 100vh, no border radius)
|
|
3336
4453
|
* @default false
|
|
3337
4454
|
*/
|
|
3338
4455
|
"fullScreen"?: boolean;
|
|
3339
4456
|
/**
|
|
4457
|
+
* Makes the modal take full width of the viewport (max-width: 100%)
|
|
3340
4458
|
* @default false
|
|
3341
4459
|
*/
|
|
3342
4460
|
"fullWidth"?: boolean;
|
|
4461
|
+
/**
|
|
4462
|
+
* Text to display in the modal header
|
|
4463
|
+
*/
|
|
3343
4464
|
"headerText"?: string;
|
|
4465
|
+
/**
|
|
4466
|
+
* Helper text to display below the header title
|
|
4467
|
+
*/
|
|
3344
4468
|
"helperText"?: string;
|
|
3345
4469
|
/**
|
|
4470
|
+
* Hides the footer section completely
|
|
3346
4471
|
* @default false
|
|
3347
4472
|
*/
|
|
3348
4473
|
"noFooter"?: boolean;
|
|
3349
4474
|
/**
|
|
4475
|
+
* Hides the header section completely
|
|
3350
4476
|
* @default false
|
|
3351
4477
|
*/
|
|
3352
4478
|
"noHeader"?: boolean;
|
|
4479
|
+
/**
|
|
4480
|
+
* Emitted before the modal closes. Can be cancelled by calling event.preventDefault()
|
|
4481
|
+
*/
|
|
3353
4482
|
"onBcmBeforeClose"?: (event: BcmModalCustomEvent<void>) => void;
|
|
4483
|
+
/**
|
|
4484
|
+
* Emitted before the modal opens. Can be cancelled by calling event.preventDefault()
|
|
4485
|
+
*/
|
|
3354
4486
|
"onBcmBeforeOpen"?: (event: BcmModalCustomEvent<void>) => void;
|
|
4487
|
+
/**
|
|
4488
|
+
* Emitted after the modal has closed
|
|
4489
|
+
*/
|
|
3355
4490
|
"onBcmClose"?: (event: BcmModalCustomEvent<void>) => void;
|
|
4491
|
+
/**
|
|
4492
|
+
* Emitted after the modal has opened
|
|
4493
|
+
*/
|
|
3356
4494
|
"onBcmOpen"?: (event: BcmModalCustomEvent<void>) => void;
|
|
3357
4495
|
/**
|
|
4496
|
+
* Controls whether the modal is open or closed
|
|
3358
4497
|
* @default false
|
|
3359
4498
|
*/
|
|
3360
4499
|
"open"?: boolean;
|
|
3361
4500
|
/**
|
|
4501
|
+
* The placement of the modal on the screen - 'center': Centered vertically and horizontally - 'top': Aligned to the top with 80px padding
|
|
3362
4502
|
* @default 'center'
|
|
3363
4503
|
*/
|
|
3364
4504
|
"placement"?: ModalPlacement;
|
|
3365
4505
|
/**
|
|
4506
|
+
* The size of the modal - 'small': 400px - 'medium': 600px - 'large': 800px - 'xlarge': 1024px - 'xxlarge': 1200px - 'full': 100% width
|
|
3366
4507
|
* @default 'medium'
|
|
3367
4508
|
*/
|
|
3368
4509
|
"size"?: ModalSize;
|
|
3369
4510
|
}
|
|
3370
4511
|
/**
|
|
3371
4512
|
* @component BcmPopConfirm
|
|
3372
|
-
* @description A
|
|
3373
|
-
*
|
|
3374
|
-
*
|
|
3375
|
-
*
|
|
3376
|
-
* @
|
|
3377
|
-
*
|
|
3378
|
-
*
|
|
3379
|
-
*
|
|
3380
|
-
*
|
|
4513
|
+
* @description A confirmation popover component that displays a confirmation dialog with customizable actions.
|
|
4514
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
4515
|
+
* Ideal for confirming destructive actions or important decisions inline.
|
|
4516
|
+
* @csspart container - The main popover container element
|
|
4517
|
+
* @csspart arrow - The arrow pointer element
|
|
4518
|
+
* @csspart body - The body/description section
|
|
4519
|
+
* @csspart footer - The footer section with action buttons
|
|
4520
|
+
* @example Basic Usage
|
|
4521
|
+
* ```html
|
|
4522
|
+
* <bcm-pop-confirm
|
|
4523
|
+
* header-text="Delete Item?"
|
|
4524
|
+
* description="Are you sure you want to delete this item? This action cannot be undone."
|
|
4525
|
+
* status="error"
|
|
4526
|
+
* >
|
|
4527
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
3381
4528
|
* </bcm-pop-confirm>
|
|
3382
|
-
*
|
|
3383
|
-
*
|
|
3384
|
-
*
|
|
3385
|
-
*
|
|
3386
|
-
*
|
|
4529
|
+
* ```
|
|
4530
|
+
* @example With Event Handlers
|
|
4531
|
+
* ```html
|
|
4532
|
+
* <bcm-pop-confirm
|
|
4533
|
+
* id="deleteConfirm"
|
|
4534
|
+
* header-text="Confirm Delete"
|
|
4535
|
+
* description="This will permanently delete the item."
|
|
4536
|
+
* status="warning"
|
|
4537
|
+
* confirm-text="Yes, Delete"
|
|
4538
|
+
* cancel-text="No, Keep It"
|
|
4539
|
+
* >
|
|
4540
|
+
* <bcm-button>Delete Item</bcm-button>
|
|
4541
|
+
* </bcm-pop-confirm>
|
|
4542
|
+
* <script>
|
|
4543
|
+
* const popconfirm = document.getElementById('deleteConfirm');
|
|
4544
|
+
* popconfirm.addEventListener('bcmConfirm', () => {
|
|
4545
|
+
* console.log('User confirmed deletion');
|
|
4546
|
+
* // Perform delete operation
|
|
4547
|
+
* });
|
|
4548
|
+
* popconfirm.addEventListener('bcmCancel', () => {
|
|
4549
|
+
* console.log('User cancelled deletion');
|
|
4550
|
+
* });
|
|
4551
|
+
* </script>
|
|
4552
|
+
* ```
|
|
4553
|
+
* @example Different Status Types
|
|
4554
|
+
* ```html
|
|
4555
|
+
* <!-- Info (default) -->
|
|
4556
|
+
* <bcm-pop-confirm header-text="Information" description="This is an info message">
|
|
4557
|
+
* <bcm-button>Info</bcm-button>
|
|
4558
|
+
* </bcm-pop-confirm>
|
|
4559
|
+
* <!-- Success -->
|
|
4560
|
+
* <bcm-pop-confirm status="success" header-text="Confirm Action" description="Proceed with this action?">
|
|
4561
|
+
* <bcm-button status="success">Proceed</bcm-button>
|
|
4562
|
+
* </bcm-pop-confirm>
|
|
4563
|
+
* <!-- Warning -->
|
|
4564
|
+
* <bcm-pop-confirm status="warning" header-text="Warning" description="This action may have consequences">
|
|
4565
|
+
* <bcm-button status="warning">Continue</bcm-button>
|
|
4566
|
+
* </bcm-pop-confirm>
|
|
4567
|
+
* <!-- Error/Danger -->
|
|
4568
|
+
* <bcm-pop-confirm status="error" header-text="Danger Zone" description="This is a destructive action">
|
|
4569
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
4570
|
+
* </bcm-pop-confirm>
|
|
4571
|
+
* ```
|
|
4572
|
+
* @example Custom Content with Slots
|
|
4573
|
+
* ```html
|
|
4574
|
+
* <bcm-pop-confirm status="warning">
|
|
4575
|
+
* <bcm-button>Custom Confirm</bcm-button>
|
|
4576
|
+
* <div slot="header">
|
|
4577
|
+
* <strong>Custom Header</strong>
|
|
4578
|
+
* </div>
|
|
4579
|
+
* <div slot="body">
|
|
4580
|
+
* <p>This is custom body content with <strong>HTML formatting</strong>.</p>
|
|
4581
|
+
* <ul>
|
|
4582
|
+
* <li>Point 1</li>
|
|
4583
|
+
* <li>Point 2</li>
|
|
4584
|
+
* </ul>
|
|
4585
|
+
* </div>
|
|
4586
|
+
* <div slot="footer">
|
|
4587
|
+
* <bcm-button kind="outline" size="small">Maybe Later</bcm-button>
|
|
4588
|
+
* <bcm-button status="success" size="small">Confirm</bcm-button>
|
|
4589
|
+
* </div>
|
|
4590
|
+
* </bcm-pop-confirm>
|
|
4591
|
+
* ```
|
|
4592
|
+
* @example Different Sizes
|
|
4593
|
+
* ```html
|
|
4594
|
+
* <!-- Small -->
|
|
4595
|
+
* <bcm-pop-confirm size="small" header-text="Small" description="Compact confirmation">
|
|
4596
|
+
* <bcm-button size="small">Small</bcm-button>
|
|
4597
|
+
* </bcm-pop-confirm>
|
|
4598
|
+
* <!-- Medium (default) -->
|
|
4599
|
+
* <bcm-pop-confirm size="medium" header-text="Medium" description="Standard confirmation">
|
|
4600
|
+
* <bcm-button size="medium">Medium</bcm-button>
|
|
4601
|
+
* </bcm-pop-confirm>
|
|
4602
|
+
* <!-- Large -->
|
|
4603
|
+
* <bcm-pop-confirm size="large" header-text="Large" description="Spacious confirmation with more room for content">
|
|
4604
|
+
* <bcm-button size="large">Large</bcm-button>
|
|
4605
|
+
* </bcm-pop-confirm>
|
|
4606
|
+
* ```
|
|
4607
|
+
* @example Programmatic Control
|
|
4608
|
+
* ```html
|
|
4609
|
+
* <bcm-pop-confirm id="myConfirm" header-text="Confirm" description="Are you sure?">
|
|
4610
|
+
* <bcm-button>Trigger</bcm-button>
|
|
4611
|
+
* </bcm-pop-confirm>
|
|
4612
|
+
* <bcm-button id="showBtn">Show Programmatically</bcm-button>
|
|
4613
|
+
* <bcm-button id="hideBtn">Hide Programmatically</bcm-button>
|
|
4614
|
+
* <script>
|
|
4615
|
+
* const popconfirm = document.getElementById('myConfirm');
|
|
4616
|
+
* document.getElementById('showBtn').addEventListener('click', () => {
|
|
4617
|
+
* popconfirm.show();
|
|
3387
4618
|
* });
|
|
3388
|
-
*
|
|
3389
|
-
*
|
|
4619
|
+
* document.getElementById('hideBtn').addEventListener('click', () => {
|
|
4620
|
+
* popconfirm.hide();
|
|
3390
4621
|
* });
|
|
3391
|
-
*
|
|
3392
|
-
*
|
|
3393
|
-
*
|
|
3394
|
-
*
|
|
3395
|
-
*
|
|
3396
|
-
*
|
|
3397
|
-
*
|
|
3398
|
-
*
|
|
3399
|
-
*
|
|
3400
|
-
*
|
|
3401
|
-
*
|
|
3402
|
-
*
|
|
3403
|
-
* @
|
|
3404
|
-
*
|
|
3405
|
-
*
|
|
3406
|
-
*
|
|
3407
|
-
*
|
|
3408
|
-
*
|
|
3409
|
-
*
|
|
3410
|
-
*
|
|
3411
|
-
*
|
|
3412
|
-
*
|
|
3413
|
-
*
|
|
3414
|
-
*
|
|
3415
|
-
*
|
|
4622
|
+
* </script>
|
|
4623
|
+
* ```
|
|
4624
|
+
* @example Without Status Icon
|
|
4625
|
+
* ```html
|
|
4626
|
+
* <bcm-pop-confirm
|
|
4627
|
+
* header-text="Simple Confirmation"
|
|
4628
|
+
* description="No status icon shown"
|
|
4629
|
+
* status-icon={false}
|
|
4630
|
+
* >
|
|
4631
|
+
* <bcm-button>Click Me</bcm-button>
|
|
4632
|
+
* </bcm-pop-confirm>
|
|
4633
|
+
* ```
|
|
4634
|
+
* @example Different Placements
|
|
4635
|
+
* ```html
|
|
4636
|
+
* <bcm-pop-confirm placement="top" header-text="Top" description="Opens above">
|
|
4637
|
+
* <bcm-button>Top</bcm-button>
|
|
4638
|
+
* </bcm-pop-confirm>
|
|
4639
|
+
* <bcm-pop-confirm placement="right" header-text="Right" description="Opens to the right">
|
|
4640
|
+
* <bcm-button>Right</bcm-button>
|
|
4641
|
+
* </bcm-pop-confirm>
|
|
4642
|
+
* <bcm-pop-confirm placement="bottom" header-text="Bottom" description="Opens below">
|
|
4643
|
+
* <bcm-button>Bottom</bcm-button>
|
|
4644
|
+
* </bcm-pop-confirm>
|
|
4645
|
+
* <bcm-pop-confirm placement="left" header-text="Left" description="Opens to the left">
|
|
4646
|
+
* <bcm-button>Left</bcm-button>
|
|
4647
|
+
* </bcm-pop-confirm>
|
|
4648
|
+
* ```
|
|
3416
4649
|
*/
|
|
3417
4650
|
interface BcmPopConfirm {
|
|
3418
4651
|
/**
|
|
3419
|
-
*
|
|
3420
|
-
* @default 'var(--bcm-ui-color-background-basic-panel)'
|
|
3421
|
-
*/
|
|
3422
|
-
"arrowColor"?: string;
|
|
3423
|
-
/**
|
|
3424
|
-
* The text displayed on the cancel button.
|
|
4652
|
+
* @prop {string} cancelText - Text for the cancel button. Default: 'Cancel'
|
|
3425
4653
|
* @default 'Cancel'
|
|
3426
4654
|
*/
|
|
3427
4655
|
"cancelText"?: string;
|
|
3428
4656
|
/**
|
|
3429
|
-
*
|
|
4657
|
+
* @prop {boolean} closeOnEscape - Whether to close when pressing the Escape key. Default: true
|
|
4658
|
+
* @default true
|
|
4659
|
+
*/
|
|
4660
|
+
"closeOnEscape"?: boolean;
|
|
4661
|
+
/**
|
|
4662
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside the popover. Default: true
|
|
4663
|
+
* @default true
|
|
4664
|
+
*/
|
|
4665
|
+
"closeOnOutsideClick"?: boolean;
|
|
4666
|
+
/**
|
|
4667
|
+
* @prop {string} confirmText - Text for the confirm button. Default: 'Yes'
|
|
3430
4668
|
* @default 'Yes'
|
|
3431
4669
|
*/
|
|
3432
4670
|
"confirmText"?: string;
|
|
3433
4671
|
/**
|
|
3434
|
-
*
|
|
4672
|
+
* @prop {string} description - Description text displayed in the body section. Can be overridden by using the 'body' slot. Default: ''
|
|
3435
4673
|
* @default ''
|
|
3436
4674
|
*/
|
|
3437
4675
|
"description"?: string;
|
|
3438
4676
|
/**
|
|
3439
|
-
*
|
|
4677
|
+
* @prop {string} headerText - Text displayed in the header section. Can be overridden by using the 'header' slot. Default: ''
|
|
3440
4678
|
* @default ''
|
|
3441
4679
|
*/
|
|
3442
4680
|
"headerText"?: string;
|
|
3443
4681
|
/**
|
|
3444
|
-
*
|
|
4682
|
+
* @prop {number} offsetDistance - Distance in pixels between the popover and trigger element. Default: 12
|
|
4683
|
+
* @default 12
|
|
4684
|
+
*/
|
|
4685
|
+
"offsetDistance"?: number;
|
|
4686
|
+
/**
|
|
4687
|
+
* @event bcmBeforeClose - Emitted before the popover closes. Useful for performing cleanup actions before hiding.
|
|
4688
|
+
*/
|
|
4689
|
+
"onBcmBeforeClose"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
4690
|
+
/**
|
|
4691
|
+
* @event bcmBeforeOpen - Emitted before the popover opens. Useful for performing actions before the popover becomes visible.
|
|
4692
|
+
*/
|
|
4693
|
+
"onBcmBeforeOpen"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
4694
|
+
/**
|
|
4695
|
+
* @event bcmCancel - Emitted when the user clicks cancel, presses Escape, or clicks outside. Useful for tracking when the user dismisses the confirmation.
|
|
3445
4696
|
*/
|
|
3446
4697
|
"onBcmCancel"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
3447
4698
|
/**
|
|
3448
|
-
*
|
|
4699
|
+
* @event bcmClose - Emitted when the popover is closed. Useful for tracking when the popover is hidden.
|
|
4700
|
+
*/
|
|
4701
|
+
"onBcmClose"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
4702
|
+
/**
|
|
4703
|
+
* @event bcmConfirm - Emitted when the user clicks the confirm button. This is where you should handle the confirmed action.
|
|
3449
4704
|
*/
|
|
3450
4705
|
"onBcmConfirm"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
3451
4706
|
/**
|
|
3452
|
-
*
|
|
3453
|
-
* @default 'bottom'
|
|
4707
|
+
* @event bcmOpen - Emitted when the popover is opened. Useful for tracking when the popover becomes visible.
|
|
3454
4708
|
*/
|
|
3455
|
-
"
|
|
4709
|
+
"onBcmOpen"?: (event: BcmPopConfirmCustomEvent<void>) => void;
|
|
4710
|
+
/**
|
|
4711
|
+
* @prop {PopConfirmPlacement} placement - Position of the popover relative to the trigger element. Automatically flips if there's not enough space. Default: 'top'
|
|
4712
|
+
* @default 'top'
|
|
4713
|
+
*/
|
|
4714
|
+
"placement"?: PopConfirmPlacement;
|
|
3456
4715
|
/**
|
|
3457
|
-
*
|
|
4716
|
+
* @prop {boolean} showArrow - Whether to show the arrow pointing to the trigger. Default: true
|
|
4717
|
+
* @default true
|
|
4718
|
+
*/
|
|
4719
|
+
"showArrow"?: boolean;
|
|
4720
|
+
/**
|
|
4721
|
+
* @prop {PopConfirmSize} size - Size variant that controls padding and text size. - 'small': Compact size with minimal padding - 'medium': Standard size - 'large': Spacious size with more padding Default: 'medium'
|
|
3458
4722
|
* @default 'medium'
|
|
3459
4723
|
*/
|
|
3460
|
-
"size"?:
|
|
4724
|
+
"size"?: PopConfirmSize;
|
|
3461
4725
|
/**
|
|
3462
|
-
*
|
|
4726
|
+
* @prop {PopConfirmStatus} status - Status type that determines the color scheme and icon. - 'info': Informational (blue) - 'success': Success/positive action (green) - 'warning': Warning/caution (yellow) - 'error': Error/destructive action (red) Default: 'info'
|
|
3463
4727
|
* @default 'info'
|
|
3464
4728
|
*/
|
|
3465
|
-
"status"?:
|
|
4729
|
+
"status"?: PopConfirmStatus;
|
|
3466
4730
|
/**
|
|
3467
|
-
* Whether to
|
|
4731
|
+
* @prop {boolean} statusIcon - Whether to show the status icon in the header. Icon only shows if headerText is also provided. Default: true
|
|
3468
4732
|
* @default true
|
|
3469
4733
|
*/
|
|
3470
4734
|
"statusIcon"?: boolean;
|
|
3471
|
-
/**
|
|
3472
|
-
* The ID of the trigger element (e.g., a button) that opens the pop-up.
|
|
3473
|
-
*/
|
|
3474
|
-
"targetId"?: string;
|
|
3475
4735
|
}
|
|
3476
4736
|
/**
|
|
3477
4737
|
* @component BcmPopover
|
|
3478
4738
|
* @description A flexible popover component that displays contextual information or content relative to a target element.
|
|
3479
|
-
*
|
|
4739
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
4740
|
+
* Supports different sizes, trigger types (click, hover, focus), placements, and comprehensive event system.
|
|
3480
4741
|
* @example Basic Click Popover
|
|
3481
4742
|
* <bcm-popover trigger="click" size="medium" placement="top">
|
|
3482
4743
|
* <bcm-button>Click Me</bcm-button>
|
|
3483
4744
|
* <span slot="header">Header</span>
|
|
3484
4745
|
* <span slot="content">This is a simple popover content.</span>
|
|
3485
4746
|
* </bcm-popover>
|
|
3486
|
-
* @example Hover Popover with
|
|
3487
|
-
* <bcm-popover trigger="hover"
|
|
4747
|
+
* @example Hover Popover with Delays
|
|
4748
|
+
* <bcm-popover trigger="hover" show-delay="200" hide-delay="100" size="large" placement="right" header-text="Prop Header" message="This is a hover popover with props.">
|
|
3488
4749
|
* <bcm-button>Hover Me</bcm-button>
|
|
3489
4750
|
* </bcm-popover>
|
|
3490
4751
|
* @example Programmatic Control
|
|
@@ -3494,8 +4755,9 @@ declare namespace LocalJSX {
|
|
|
3494
4755
|
* </bcm-popover>
|
|
3495
4756
|
* <script>
|
|
3496
4757
|
* const popover = document.querySelector('#my-popover');
|
|
3497
|
-
* popover.
|
|
3498
|
-
* popover.
|
|
4758
|
+
* popover.show(); // Opens the popover
|
|
4759
|
+
* popover.hide(); // Closes the popover
|
|
4760
|
+
* popover.toggle(); // Toggles the popover
|
|
3499
4761
|
* </script>
|
|
3500
4762
|
* @csspart popover - The root popover container element, stylable for the entire popover
|
|
3501
4763
|
* @csspart header - The header section of the popover, stylable for the title area
|
|
@@ -3503,29 +4765,52 @@ declare namespace LocalJSX {
|
|
|
3503
4765
|
* @csspart arrow - The arrow element of the popover, stylable for the positioning arrow
|
|
3504
4766
|
*/
|
|
3505
4767
|
interface BcmPopover {
|
|
4768
|
+
/**
|
|
4769
|
+
* @prop {boolean} arrow - Whether to show an arrow pointing to the trigger element. Default: true
|
|
4770
|
+
* @default true
|
|
4771
|
+
*/
|
|
4772
|
+
"arrow"?: boolean;
|
|
4773
|
+
/**
|
|
4774
|
+
* @prop {boolean} closeOnEscape - Whether to close the popover when pressing Escape key. Default: true
|
|
4775
|
+
* @default true
|
|
4776
|
+
*/
|
|
4777
|
+
"closeOnEscape"?: boolean;
|
|
4778
|
+
/**
|
|
4779
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close the popover when clicking outside. Default: true
|
|
4780
|
+
* @default true
|
|
4781
|
+
*/
|
|
4782
|
+
"closeOnOutsideClick"?: boolean;
|
|
3506
4783
|
/**
|
|
3507
4784
|
* @prop {string} headerText - Custom text for the popover header. Used as fallback content if the 'header' slot is not provided.
|
|
3508
4785
|
*/
|
|
3509
4786
|
"headerText"?: string;
|
|
3510
4787
|
/**
|
|
3511
|
-
* @prop {number}
|
|
3512
|
-
* @default
|
|
4788
|
+
* @prop {number} hideDelay - Delay in milliseconds before hiding the popover. Provides a grace period for mouse movements. Default: 0
|
|
4789
|
+
* @default 0
|
|
3513
4790
|
*/
|
|
3514
|
-
"
|
|
4791
|
+
"hideDelay"?: number;
|
|
3515
4792
|
/**
|
|
3516
4793
|
* @prop {string} message - Custom text for the popover content. Used as fallback content if the 'content' slot is not provided.
|
|
3517
4794
|
*/
|
|
3518
4795
|
"message"?: string;
|
|
3519
4796
|
/**
|
|
3520
|
-
* @event
|
|
4797
|
+
* @event bcmBeforeClose - Emitted before the popover closes. Useful for performing actions before the popover is hidden.
|
|
3521
4798
|
*/
|
|
3522
|
-
"
|
|
4799
|
+
"onBcmBeforeClose"?: (event: BcmPopoverCustomEvent<void>) => void;
|
|
3523
4800
|
/**
|
|
3524
|
-
* @event
|
|
4801
|
+
* @event bcmBeforeOpen - Emitted before the popover opens. Useful for performing actions before the popover becomes visible.
|
|
3525
4802
|
*/
|
|
3526
|
-
"
|
|
4803
|
+
"onBcmBeforeOpen"?: (event: BcmPopoverCustomEvent<void>) => void;
|
|
3527
4804
|
/**
|
|
3528
|
-
* @
|
|
4805
|
+
* @event bcmClose - Emitted when the popover is closed. Useful for tracking when the popover is hidden.
|
|
4806
|
+
*/
|
|
4807
|
+
"onBcmClose"?: (event: BcmPopoverCustomEvent<void>) => void;
|
|
4808
|
+
/**
|
|
4809
|
+
* @event bcmOpen - Emitted when the popover is opened. Useful for tracking when the popover becomes visible.
|
|
4810
|
+
*/
|
|
4811
|
+
"onBcmOpen"?: (event: BcmPopoverCustomEvent<void>) => void;
|
|
4812
|
+
/**
|
|
4813
|
+
* @prop {boolean} open - Controls the open state of the popover. Can be set programmatically or toggled by user interaction. Default: false
|
|
3529
4814
|
* @default false
|
|
3530
4815
|
*/
|
|
3531
4816
|
"open"?: boolean;
|
|
@@ -3534,18 +4819,27 @@ declare namespace LocalJSX {
|
|
|
3534
4819
|
* @default 'top'
|
|
3535
4820
|
*/
|
|
3536
4821
|
"placement"?: 'top' | 'right' | 'bottom' | 'left';
|
|
4822
|
+
/**
|
|
4823
|
+
* @prop {number} showDelay - Delay in milliseconds before showing the popover. Useful to prevent popovers from appearing on quick mouse movements. Default: 0
|
|
4824
|
+
* @default 0
|
|
4825
|
+
*/
|
|
4826
|
+
"showDelay"?: number;
|
|
3537
4827
|
/**
|
|
3538
4828
|
* @prop {('small' | 'medium' | 'large')} size - Defines the size of the popover. Controls the text size and padding of the popover content. Default: 'medium'
|
|
3539
4829
|
* @default 'medium'
|
|
3540
4830
|
*/
|
|
3541
4831
|
"size"?: 'small' | 'medium' | 'large';
|
|
3542
4832
|
/**
|
|
3543
|
-
* @prop {('click' | 'hover')} trigger - Defines the interaction type to show/hide the popover. 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave. Default: 'click'
|
|
4833
|
+
* @prop {('click' | 'hover' | 'hover focus')} trigger - Defines the interaction type to show/hide the popover. 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave, 'hover focus' combines both. Default: 'click'
|
|
3544
4834
|
* @default 'click'
|
|
3545
4835
|
*/
|
|
3546
|
-
"trigger"?: 'click' | 'hover';
|
|
4836
|
+
"trigger"?: 'click' | 'hover' | 'hover focus';
|
|
3547
4837
|
}
|
|
3548
4838
|
interface BcmRadio {
|
|
4839
|
+
/**
|
|
4840
|
+
* @default generateId('bcm-radio')
|
|
4841
|
+
*/
|
|
4842
|
+
"_id"?: string;
|
|
3549
4843
|
/**
|
|
3550
4844
|
* Whether the radio button is selected.
|
|
3551
4845
|
* @prop
|
|
@@ -3591,6 +4885,11 @@ declare namespace LocalJSX {
|
|
|
3591
4885
|
* @defaultValue false
|
|
3592
4886
|
*/
|
|
3593
4887
|
"readonly"?: boolean;
|
|
4888
|
+
/**
|
|
4889
|
+
* Whether at least one radio in this group is required. (HTML)
|
|
4890
|
+
* @default false
|
|
4891
|
+
*/
|
|
4892
|
+
"required"?: boolean;
|
|
3594
4893
|
/**
|
|
3595
4894
|
* Defines the size of the radio button: 'small' | 'medium' | 'large'.
|
|
3596
4895
|
* @prop
|
|
@@ -3661,58 +4960,85 @@ declare namespace LocalJSX {
|
|
|
3661
4960
|
*/
|
|
3662
4961
|
"value"?: string;
|
|
3663
4962
|
}
|
|
3664
|
-
|
|
4963
|
+
/**
|
|
4964
|
+
* Individual segment option component
|
|
4965
|
+
*/
|
|
4966
|
+
interface BcmSegment {
|
|
4967
|
+
/**
|
|
4968
|
+
* Index of currently active segment (inherited from parent)
|
|
4969
|
+
* @default 0
|
|
4970
|
+
*/
|
|
4971
|
+
"activeIndex"?: number;
|
|
3665
4972
|
/**
|
|
3666
4973
|
* Disabled state
|
|
3667
4974
|
* @default false
|
|
3668
4975
|
*/
|
|
3669
4976
|
"disabled"?: boolean;
|
|
3670
4977
|
/**
|
|
3671
|
-
*
|
|
3672
|
-
* @default
|
|
4978
|
+
* Index of this segment (inherited from parent)
|
|
4979
|
+
* @default 0
|
|
3673
4980
|
*/
|
|
3674
|
-
"
|
|
4981
|
+
"index"?: number;
|
|
3675
4982
|
/**
|
|
3676
|
-
*
|
|
4983
|
+
* Internal event emitted when segment is clicked
|
|
3677
4984
|
*/
|
|
3678
|
-
"
|
|
4985
|
+
"onBcmSegmentClick"?: (event: BcmSegmentCustomEvent<string>) => void;
|
|
3679
4986
|
/**
|
|
3680
|
-
*
|
|
4987
|
+
* Selected state (controlled by parent)
|
|
4988
|
+
* @default false
|
|
4989
|
+
*/
|
|
4990
|
+
"selected"?: boolean;
|
|
4991
|
+
/**
|
|
4992
|
+
* Size variant (inherited from parent)
|
|
3681
4993
|
* @default 'medium'
|
|
3682
4994
|
*/
|
|
3683
|
-
"size"?:
|
|
4995
|
+
"size"?: 'small' | 'medium' | 'large';
|
|
3684
4996
|
/**
|
|
3685
|
-
*
|
|
4997
|
+
* Unique identifier for this segment
|
|
3686
4998
|
*/
|
|
3687
|
-
"value"
|
|
4999
|
+
"value": string;
|
|
3688
5000
|
}
|
|
3689
|
-
|
|
5001
|
+
/**
|
|
5002
|
+
* Modern Segmented Picker component with CSS Grid-based indicator
|
|
5003
|
+
*/
|
|
5004
|
+
interface BcmSegmentedPicker {
|
|
3690
5005
|
/**
|
|
3691
|
-
*
|
|
5006
|
+
* Disabled state
|
|
3692
5007
|
* @default false
|
|
3693
5008
|
*/
|
|
3694
5009
|
"disabled"?: boolean;
|
|
3695
5010
|
/**
|
|
3696
|
-
*
|
|
5011
|
+
* Full width flag
|
|
5012
|
+
* @default false
|
|
5013
|
+
*/
|
|
5014
|
+
"fullWidth"?: boolean;
|
|
5015
|
+
/**
|
|
5016
|
+
* Name attribute for form association
|
|
3697
5017
|
*/
|
|
3698
|
-
"
|
|
5018
|
+
"name"?: string;
|
|
3699
5019
|
/**
|
|
3700
|
-
*
|
|
5020
|
+
* Emits when selected segment changes
|
|
3701
5021
|
*/
|
|
3702
|
-
"
|
|
5022
|
+
"onBcmSegmentChange"?: (event: BcmSegmentedPickerCustomEvent<{ value: string; previousValue: string }>) => void;
|
|
3703
5023
|
/**
|
|
3704
|
-
* Whether this
|
|
5024
|
+
* Whether this field is required in a form
|
|
3705
5025
|
* @default false
|
|
3706
5026
|
*/
|
|
3707
|
-
"
|
|
5027
|
+
"required"?: boolean;
|
|
3708
5028
|
/**
|
|
3709
|
-
*
|
|
5029
|
+
* Enable shadow on container
|
|
5030
|
+
* @default false
|
|
3710
5031
|
*/
|
|
3711
|
-
"
|
|
5032
|
+
"shadow"?: boolean;
|
|
3712
5033
|
/**
|
|
3713
|
-
*
|
|
5034
|
+
* Size variant
|
|
5035
|
+
* @default 'medium'
|
|
3714
5036
|
*/
|
|
3715
|
-
"
|
|
5037
|
+
"size"?: 'small' | 'medium' | 'large';
|
|
5038
|
+
/**
|
|
5039
|
+
* Selected segment value
|
|
5040
|
+
*/
|
|
5041
|
+
"value"?: string;
|
|
3716
5042
|
}
|
|
3717
5043
|
interface BcmShortcut {
|
|
3718
5044
|
"hotkey"?: string;
|
|
@@ -3723,178 +5049,181 @@ declare namespace LocalJSX {
|
|
|
3723
5049
|
}
|
|
3724
5050
|
/**
|
|
3725
5051
|
* @component BcmSwitch
|
|
3726
|
-
* @description A
|
|
3727
|
-
*
|
|
5052
|
+
* @description A form-associated toggle switch component representing a boolean choice.
|
|
5053
|
+
* It behaves like a checkbox and integrates with native HTML forms via ElementInternals.
|
|
5054
|
+
* This component supports **three validation strategies** via `validation-mode`:
|
|
5055
|
+
* - **`native`**:
|
|
5056
|
+
* - Uses native browser constraint validation.
|
|
5057
|
+
* - Sets the underlying input's `required` attribute.
|
|
5058
|
+
* - Browser may show the native validation bubble when the form calls `reportValidity()` / submit validation runs.
|
|
5059
|
+
* - **`silent`**:
|
|
5060
|
+
* - Does **not** rely on native `required` (prevents the browser bubble).
|
|
5061
|
+
* - Computes the "missing required" state internally and exposes it via `error` + `caption`.
|
|
5062
|
+
* - UI errors are **gated**: they appear only after the control is touched or after a submit attempt.
|
|
5063
|
+
* - **`none`**:
|
|
5064
|
+
* - Value-only mode (headless): participates in form value submission but never becomes invalid.
|
|
5065
|
+
* ## UI error gating (silent mode)
|
|
5066
|
+
* To avoid showing errors on initial render, the component tracks:
|
|
5067
|
+
* - `touched`: set after the first user interaction
|
|
5068
|
+
* - `submitAttempted`: set when the parent form emits `submit`
|
|
5069
|
+
* Only when `touched || submitAttempted` the component will show `error/caption` in `silent` mode.
|
|
5070
|
+
* ## Value behavior
|
|
5071
|
+
* - When checked, the component submits its `value` (default: `"on"`).
|
|
5072
|
+
* - When unchecked, no value is submitted.
|
|
5073
|
+
* - When disabled, the component does not participate in submission or validity.
|
|
3728
5074
|
* @example Basic usage
|
|
3729
|
-
* <bcm-switch label="
|
|
3730
|
-
* @example
|
|
5075
|
+
* <bcm-switch name="newsletter" label="Receive newsletter?" />
|
|
5076
|
+
* @example Required with silent validation (no native bubble)
|
|
5077
|
+
* <form>
|
|
3731
5078
|
* <bcm-switch
|
|
5079
|
+
* name="terms"
|
|
3732
5080
|
* label="Accept terms"
|
|
3733
|
-
*
|
|
3734
|
-
*
|
|
3735
|
-
* </bcm-switch>
|
|
3736
|
-
* @example Disabled state
|
|
3737
|
-
* <bcm-switch
|
|
3738
|
-
* label="Advanced features"
|
|
3739
|
-
* disabled={true}>
|
|
3740
|
-
* </bcm-switch>
|
|
3741
|
-
* @example With custom size and label position
|
|
3742
|
-
* <bcm-switch
|
|
3743
|
-
* label="Dark mode"
|
|
3744
|
-
* size="large"
|
|
3745
|
-
* labelPosition="left">
|
|
5081
|
+
* required
|
|
5082
|
+
* validation-mode="silent">
|
|
3746
5083
|
* </bcm-switch>
|
|
5084
|
+
* <button type="submit">Submit</button>
|
|
5085
|
+
* </form>
|
|
5086
|
+
* @example Native validation mode (may show native bubble)
|
|
5087
|
+
* <bcm-switch name="terms" label="Accept terms" required validation-mode="native" />
|
|
5088
|
+
* @example Value-only mode (no validation)
|
|
5089
|
+
* <bcm-switch name="analytics" label="Allow analytics" validation-mode="none" />
|
|
5090
|
+
* @csspart base - Root container
|
|
5091
|
+
* @csspart switch-wrapper - Wrapper containing label + track
|
|
5092
|
+
* @csspart input - Hidden native input
|
|
5093
|
+
* @csspart label - Text label
|
|
5094
|
+
* @csspart dot-container - Switch track
|
|
5095
|
+
* @csspart dot - Switch knob
|
|
5096
|
+
* @csspart caption - Helper/error text
|
|
3747
5097
|
*/
|
|
3748
5098
|
interface BcmSwitch {
|
|
3749
5099
|
/**
|
|
3750
|
-
*
|
|
5100
|
+
* Unique id (optional). Generated by default.
|
|
5101
|
+
* @default generateId('bcm-switch')
|
|
5102
|
+
*/
|
|
5103
|
+
"_id"?: string;
|
|
5104
|
+
/**
|
|
5105
|
+
* Helper / error text shown under the switch
|
|
3751
5106
|
*/
|
|
3752
5107
|
"caption"?: string;
|
|
3753
5108
|
/**
|
|
3754
|
-
*
|
|
5109
|
+
* Checked state
|
|
3755
5110
|
* @default false
|
|
3756
5111
|
*/
|
|
3757
5112
|
"checked"?: boolean;
|
|
3758
5113
|
/**
|
|
3759
|
-
*
|
|
5114
|
+
* Disabled state
|
|
3760
5115
|
* @default false
|
|
3761
5116
|
*/
|
|
3762
5117
|
"disabled"?: boolean;
|
|
3763
5118
|
/**
|
|
3764
|
-
*
|
|
5119
|
+
* Visual error state (manual/external). In silent mode this can be auto-managed.
|
|
3765
5120
|
* @default false
|
|
3766
5121
|
*/
|
|
3767
5122
|
"error"?: boolean;
|
|
3768
5123
|
/**
|
|
3769
|
-
*
|
|
5124
|
+
* Visible label text
|
|
3770
5125
|
*/
|
|
3771
|
-
"label"
|
|
5126
|
+
"label": string;
|
|
3772
5127
|
/**
|
|
3773
5128
|
* Position of the label relative to the switch
|
|
3774
5129
|
* @default 'right'
|
|
3775
5130
|
*/
|
|
3776
5131
|
"labelPosition"?: 'left' | 'right';
|
|
3777
5132
|
/**
|
|
3778
|
-
*
|
|
5133
|
+
* Form field name
|
|
3779
5134
|
*/
|
|
3780
5135
|
"name"?: string;
|
|
3781
5136
|
/**
|
|
3782
|
-
* Emitted when the switch
|
|
5137
|
+
* Emitted when the switch toggles
|
|
3783
5138
|
*/
|
|
3784
5139
|
"onBcmSwitchChange"?: (event: BcmSwitchCustomEvent<boolean>) => void;
|
|
3785
5140
|
/**
|
|
3786
|
-
*
|
|
5141
|
+
* Optional readonly support
|
|
3787
5142
|
* @default false
|
|
3788
5143
|
*/
|
|
3789
5144
|
"readonly"?: boolean;
|
|
3790
5145
|
/**
|
|
3791
|
-
*
|
|
5146
|
+
* Required state
|
|
3792
5147
|
* @default false
|
|
3793
5148
|
*/
|
|
3794
5149
|
"required"?: boolean;
|
|
3795
5150
|
/**
|
|
3796
|
-
* Size variant
|
|
5151
|
+
* Size variant
|
|
3797
5152
|
* @default 'medium'
|
|
3798
5153
|
*/
|
|
3799
5154
|
"size"?: 'small' | 'medium' | 'large';
|
|
3800
5155
|
/**
|
|
3801
|
-
*
|
|
5156
|
+
* @default 'native'
|
|
5157
|
+
*/
|
|
5158
|
+
"validationMode"?: 'native' | 'silent' | 'none';
|
|
5159
|
+
/**
|
|
5160
|
+
* Value submitted when checked
|
|
5161
|
+
* @default 'on'
|
|
3802
5162
|
*/
|
|
3803
5163
|
"value"?: string;
|
|
3804
5164
|
}
|
|
3805
5165
|
/**
|
|
3806
|
-
*
|
|
5166
|
+
* Individual tab component - self-contained with label and content panel
|
|
3807
5167
|
*/
|
|
3808
|
-
interface
|
|
3809
|
-
/**
|
|
3810
|
-
* Default active tab value
|
|
3811
|
-
*/
|
|
3812
|
-
"defaultValue"?: string;
|
|
3813
|
-
/**
|
|
3814
|
-
* Triggers when tab changes
|
|
3815
|
-
*/
|
|
3816
|
-
"onBcmTabChange"?: (event: BcmTabsCustomEvent<{
|
|
3817
|
-
activeTab: string;
|
|
3818
|
-
element: HTMLBcmTabsTriggerElement;
|
|
3819
|
-
previousTab?: string;
|
|
3820
|
-
}>) => void;
|
|
5168
|
+
interface BcmTab {
|
|
3821
5169
|
/**
|
|
3822
|
-
*
|
|
3823
|
-
* @default
|
|
5170
|
+
* Active state (controlled by parent)
|
|
5171
|
+
* @default false
|
|
3824
5172
|
*/
|
|
3825
|
-
"
|
|
5173
|
+
"active"?: boolean;
|
|
3826
5174
|
/**
|
|
3827
|
-
*
|
|
3828
|
-
* @default
|
|
5175
|
+
* Disabled state
|
|
5176
|
+
* @default false
|
|
3829
5177
|
*/
|
|
3830
|
-
"
|
|
5178
|
+
"disabled"?: boolean;
|
|
3831
5179
|
/**
|
|
3832
|
-
*
|
|
3833
|
-
* @default 'full-width'
|
|
5180
|
+
* Label text to display in tab button
|
|
3834
5181
|
*/
|
|
3835
|
-
"
|
|
3836
|
-
}
|
|
3837
|
-
/**
|
|
3838
|
-
* @description Tab content panel component that displays when its corresponding tab is selected
|
|
3839
|
-
*/
|
|
3840
|
-
interface BcmTabsContent {
|
|
5182
|
+
"label": string;
|
|
3841
5183
|
/**
|
|
3842
|
-
*
|
|
5184
|
+
* Internal event emitted when tab button is clicked
|
|
3843
5185
|
*/
|
|
3844
|
-
"
|
|
3845
|
-
}
|
|
3846
|
-
/**
|
|
3847
|
-
* @description Container component for tab triggers that includes the sliding indicator (inkbar)
|
|
3848
|
-
*/
|
|
3849
|
-
interface BcmTabsList {
|
|
5186
|
+
"onBcmTabClick"?: (event: BcmTabCustomEvent<string>) => void;
|
|
3850
5187
|
/**
|
|
3851
|
-
*
|
|
3852
|
-
* @default
|
|
5188
|
+
* Size variant (inherited from parent)
|
|
5189
|
+
* @default 'md'
|
|
3853
5190
|
*/
|
|
3854
|
-
"
|
|
5191
|
+
"size"?: 'sm' | 'md' | 'lg';
|
|
3855
5192
|
/**
|
|
3856
|
-
*
|
|
3857
|
-
* @default 'full-width'
|
|
5193
|
+
* Unique identifier for this tab
|
|
3858
5194
|
*/
|
|
3859
|
-
"
|
|
5195
|
+
"value": string;
|
|
3860
5196
|
}
|
|
3861
5197
|
/**
|
|
3862
|
-
*
|
|
5198
|
+
* Modern Tabs component with CSS-first approach
|
|
3863
5199
|
*/
|
|
3864
|
-
interface
|
|
5200
|
+
interface BcmTabs {
|
|
3865
5201
|
/**
|
|
3866
|
-
*
|
|
3867
|
-
* @default false
|
|
5202
|
+
* Emits when active tab changes
|
|
3868
5203
|
*/
|
|
3869
|
-
"
|
|
5204
|
+
"onBcmTabChange"?: (event: BcmTabsCustomEvent<{
|
|
5205
|
+
value: string;
|
|
5206
|
+
previousValue: string;
|
|
5207
|
+
}>) => void;
|
|
3870
5208
|
/**
|
|
3871
|
-
*
|
|
5209
|
+
* Enable shadow on main container
|
|
3872
5210
|
* @default false
|
|
3873
5211
|
*/
|
|
3874
|
-
"
|
|
3875
|
-
/**
|
|
3876
|
-
* Event emitted when this tab is selected
|
|
3877
|
-
*/
|
|
3878
|
-
"onBcmTabSelected"?: (event: BcmTabsTriggerCustomEvent<string>) => void;
|
|
3879
|
-
/**
|
|
3880
|
-
* Size of the tab
|
|
3881
|
-
* @default 'medium'
|
|
3882
|
-
*/
|
|
3883
|
-
"size"?: 'small' | 'medium' | 'large';
|
|
5212
|
+
"shadow"?: boolean;
|
|
3884
5213
|
/**
|
|
3885
|
-
*
|
|
3886
|
-
* @default
|
|
5214
|
+
* Tab size variant
|
|
5215
|
+
* @default 'md'
|
|
3887
5216
|
*/
|
|
3888
|
-
"
|
|
5217
|
+
"size"?: 'sm' | 'md' | 'lg';
|
|
3889
5218
|
/**
|
|
3890
|
-
*
|
|
5219
|
+
* Active tab value
|
|
3891
5220
|
*/
|
|
3892
5221
|
"value"?: string;
|
|
3893
5222
|
/**
|
|
3894
|
-
*
|
|
3895
|
-
* @default '
|
|
5223
|
+
* Visual variant
|
|
5224
|
+
* @default 'line'
|
|
3896
5225
|
*/
|
|
3897
|
-
"variant"?: '
|
|
5226
|
+
"variant"?: 'line' | 'enclosed';
|
|
3898
5227
|
}
|
|
3899
5228
|
interface BcmText {
|
|
3900
5229
|
/**
|
|
@@ -4039,49 +5368,101 @@ declare namespace LocalJSX {
|
|
|
4039
5368
|
}
|
|
4040
5369
|
/**
|
|
4041
5370
|
* @component BcmTooltip
|
|
4042
|
-
* @description A
|
|
4043
|
-
*
|
|
4044
|
-
*
|
|
4045
|
-
*
|
|
4046
|
-
*
|
|
5371
|
+
* @description A flexible tooltip component that provides contextual information on hover or click.
|
|
5372
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
5373
|
+
* Automatically handles overflow, flipping, and complex shadow DOM scenarios.
|
|
5374
|
+
* @example ```html
|
|
5375
|
+
* <!-- Basic usage with text message -->
|
|
5376
|
+
* <bcm-tooltip message="This is a tooltip">
|
|
5377
|
+
* <button>Hover me</button>
|
|
4047
5378
|
* </bcm-tooltip>
|
|
4048
|
-
*
|
|
4049
|
-
* <bcm-tooltip
|
|
4050
|
-
*
|
|
5379
|
+
* <!-- With custom rich content -->
|
|
5380
|
+
* <bcm-tooltip placement="right" size="large">
|
|
5381
|
+
* <button>Click me</button>
|
|
5382
|
+
* <div slot="content">
|
|
5383
|
+
* <strong>Rich content</strong>
|
|
5384
|
+
* <p>You can add any HTML here</p>
|
|
5385
|
+
* </div>
|
|
5386
|
+
* </bcm-tooltip>
|
|
5387
|
+
* <!-- Click trigger with custom delays -->
|
|
5388
|
+
* <bcm-tooltip trigger="click" show-delay="0" hide-delay="0">
|
|
5389
|
+
* <span>Click me</span>
|
|
5390
|
+
* </bcm-tooltip>
|
|
5391
|
+
* <!-- Mouse following mode -->
|
|
5392
|
+
* <bcm-tooltip follow={true} message="I follow your cursor!">
|
|
5393
|
+
* <div>Move your mouse here</div>
|
|
5394
|
+
* </bcm-tooltip>
|
|
5395
|
+
* <!-- Programmatic control -->
|
|
5396
|
+
* <bcm-tooltip id="myTooltip" message="Programmatic tooltip">
|
|
5397
|
+
* <span>Trigger</span>
|
|
4051
5398
|
* </bcm-tooltip>
|
|
4052
5399
|
* <script>
|
|
4053
|
-
*
|
|
4054
|
-
*
|
|
4055
|
-
* tooltip.
|
|
5400
|
+
* const tooltip = document.getElementById('myTooltip');
|
|
5401
|
+
* tooltip.show();
|
|
5402
|
+
* setTimeout(() => tooltip.hide(), 2000);
|
|
4056
5403
|
* </script>
|
|
4057
|
-
*
|
|
4058
|
-
*
|
|
5404
|
+
* <!-- Custom styling with CSS parts -->
|
|
5405
|
+
* <style>
|
|
5406
|
+
* bcm-tooltip::part(tooltip) {
|
|
5407
|
+
* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
5408
|
+
* border-radius: 12px;
|
|
5409
|
+
* }
|
|
5410
|
+
* bcm-tooltip::part(arrow) {
|
|
5411
|
+
* background: #667eea;
|
|
5412
|
+
* }
|
|
5413
|
+
* </style>
|
|
5414
|
+
* ```
|
|
4059
5415
|
*/
|
|
4060
5416
|
interface BcmTooltip {
|
|
4061
5417
|
/**
|
|
4062
|
-
*
|
|
5418
|
+
* Whether to show an arrow pointing to the trigger element Note: Arrow is automatically hidden in 'follow' mode
|
|
5419
|
+
* @default true
|
|
5420
|
+
*/
|
|
5421
|
+
"arrow"?: boolean;
|
|
5422
|
+
/**
|
|
5423
|
+
* Disables the tooltip, preventing it from showing Useful for conditional tooltips based on application state
|
|
5424
|
+
* @default false
|
|
5425
|
+
*/
|
|
5426
|
+
"disabled"?: boolean;
|
|
5427
|
+
/**
|
|
5428
|
+
* Makes the tooltip follow the mouse cursor When enabled: - Arrow is hidden - Tooltip position updates smoothly with cursor movement - Pointer events are disabled on tooltip to prevent interference
|
|
5429
|
+
* @default false
|
|
5430
|
+
*/
|
|
5431
|
+
"follow"?: boolean;
|
|
5432
|
+
/**
|
|
5433
|
+
* Delay in milliseconds before hiding the tooltip Provides a grace period for mouse movements
|
|
5434
|
+
* @default 100
|
|
5435
|
+
*/
|
|
5436
|
+
"hideDelay"?: number;
|
|
5437
|
+
/**
|
|
5438
|
+
* Simple text message to display in the tooltip Can be overridden by slotting content into the 'content' slot
|
|
4063
5439
|
*/
|
|
4064
5440
|
"message"?: string;
|
|
4065
5441
|
/**
|
|
4066
|
-
*
|
|
5442
|
+
* Distance in pixels between the tooltip and the trigger element Also used as the offset in 'follow' mode
|
|
5443
|
+
* @default 12
|
|
5444
|
+
*/
|
|
5445
|
+
"offset"?: number;
|
|
5446
|
+
/**
|
|
5447
|
+
* Preferred placement of the tooltip relative to the trigger Note: Tooltip will automatically flip if there's not enough space - 'top': Above the trigger element - 'right': To the right of the trigger element - 'bottom': Below the trigger element - 'left': To the left of the trigger element
|
|
4067
5448
|
* @default 'top'
|
|
4068
5449
|
*/
|
|
4069
|
-
"placement"?:
|
|
5450
|
+
"placement"?: TooltipPlacement;
|
|
4070
5451
|
/**
|
|
4071
|
-
*
|
|
5452
|
+
* Delay in milliseconds before showing the tooltip Useful to prevent tooltips from appearing on quick mouse movements
|
|
4072
5453
|
* @default 150
|
|
4073
5454
|
*/
|
|
4074
5455
|
"showDelay"?: number;
|
|
4075
5456
|
/**
|
|
4076
|
-
*
|
|
5457
|
+
* Size variant of the tooltip - 'small': Compact tooltip with minimal padding (text-size-3, py-1 px-2) - 'medium': Standard tooltip size (text-size-4, py-1.5 px-3) - 'large': Larger tooltip for more content (text-size-5, py-2 px-4)
|
|
4077
5458
|
* @default 'medium'
|
|
4078
5459
|
*/
|
|
4079
|
-
"size"?:
|
|
5460
|
+
"size"?: TooltipSize;
|
|
4080
5461
|
/**
|
|
4081
|
-
*
|
|
5462
|
+
* How the tooltip is triggered - 'hover': Shows on mouse enter, hides on mouse leave - 'click': Toggles on click, closes on outside click or Escape key
|
|
4082
5463
|
* @default 'hover'
|
|
4083
5464
|
*/
|
|
4084
|
-
"trigger"?:
|
|
5465
|
+
"trigger"?: TooltipTrigger;
|
|
4085
5466
|
}
|
|
4086
5467
|
interface IntrinsicElements {
|
|
4087
5468
|
"bcm-accordion": BcmAccordion;
|
|
@@ -4098,6 +5479,7 @@ declare namespace LocalJSX {
|
|
|
4098
5479
|
"bcm-drawer": BcmDrawer;
|
|
4099
5480
|
"bcm-dropdown": BcmDropdown;
|
|
4100
5481
|
"bcm-dropdown-item": BcmDropdownItem;
|
|
5482
|
+
"bcm-file-upload": BcmFileUpload;
|
|
4101
5483
|
"bcm-input": BcmInput;
|
|
4102
5484
|
"bcm-linked": BcmLinked;
|
|
4103
5485
|
"bcm-modal": BcmModal;
|
|
@@ -4105,14 +5487,12 @@ declare namespace LocalJSX {
|
|
|
4105
5487
|
"bcm-popover": BcmPopover;
|
|
4106
5488
|
"bcm-radio": BcmRadio;
|
|
4107
5489
|
"bcm-radio-group": BcmRadioGroup;
|
|
5490
|
+
"bcm-segment": BcmSegment;
|
|
4108
5491
|
"bcm-segmented-picker": BcmSegmentedPicker;
|
|
4109
|
-
"bcm-segmented-picker-option": BcmSegmentedPickerOption;
|
|
4110
5492
|
"bcm-shortcut": BcmShortcut;
|
|
4111
5493
|
"bcm-switch": BcmSwitch;
|
|
5494
|
+
"bcm-tab": BcmTab;
|
|
4112
5495
|
"bcm-tabs": BcmTabs;
|
|
4113
|
-
"bcm-tabs-content": BcmTabsContent;
|
|
4114
|
-
"bcm-tabs-list": BcmTabsList;
|
|
4115
|
-
"bcm-tabs-trigger": BcmTabsTrigger;
|
|
4116
5496
|
"bcm-text": BcmText;
|
|
4117
5497
|
"bcm-textarea": BcmTextarea;
|
|
4118
5498
|
"bcm-tooltip": BcmTooltip;
|
|
@@ -4258,8 +5638,49 @@ declare module "@stencil/core" {
|
|
|
4258
5638
|
"bcm-button": LocalJSX.BcmButton & JSXBase.HTMLAttributes<HTMLBcmButtonElement>;
|
|
4259
5639
|
"bcm-button-group": LocalJSX.BcmButtonGroup & JSXBase.HTMLAttributes<HTMLBcmButtonGroupElement>;
|
|
4260
5640
|
/**
|
|
4261
|
-
* @
|
|
4262
|
-
*
|
|
5641
|
+
* @component BcmCheckbox
|
|
5642
|
+
* @description A form-associated checkbox component representing a boolean choice.
|
|
5643
|
+
* Integrates with native HTML forms via ElementInternals while supporting
|
|
5644
|
+
* **three validation strategies** via `validation-mode`:
|
|
5645
|
+
* - **`native`**
|
|
5646
|
+
* - Participates in native browser constraint validation.
|
|
5647
|
+
* - Sets the underlying input's `required`.
|
|
5648
|
+
* - Browser may show native validation bubbles when submit/reportValidity happens.
|
|
5649
|
+
* - **`silent`**
|
|
5650
|
+
* - Does **not** set native `required` (prevents browser bubble).
|
|
5651
|
+
* - Computes "missing required" internally and exposes it via `error` + `caption`.
|
|
5652
|
+
* - UI errors are **gated**: shown only after `touched` or a form submit attempt.
|
|
5653
|
+
* - **`none`**
|
|
5654
|
+
* - Value-only mode: submits value but never becomes invalid.
|
|
5655
|
+
* ## UI error gating (silent mode)
|
|
5656
|
+
* - `touched` becomes true after first user interaction
|
|
5657
|
+
* - `submitAttempted` becomes true when the parent form emits `submit`
|
|
5658
|
+
* ## Value behavior
|
|
5659
|
+
* - When checked → submits `value` (default: `"on"`).
|
|
5660
|
+
* - When unchecked → submits no value (`null`).
|
|
5661
|
+
* - When disabled → no submission and no validity participation.
|
|
5662
|
+
* ## Shadow Parts
|
|
5663
|
+
* - `checkbox` → root container
|
|
5664
|
+
* - `control` → visual checkbox box
|
|
5665
|
+
* - `icon` → icon container (check or minus)
|
|
5666
|
+
* - `label` → label text
|
|
5667
|
+
* - `caption` → helper/error text (silent mode UI)
|
|
5668
|
+
* - `input` → hidden native input
|
|
5669
|
+
* @example Basic usage
|
|
5670
|
+
* <bcm-checkbox name="terms" required>
|
|
5671
|
+
* I agree to the terms and conditions
|
|
5672
|
+
* </bcm-checkbox>
|
|
5673
|
+
* @example Silent validation (no native bubble)
|
|
5674
|
+
* <form>
|
|
5675
|
+
* <bcm-checkbox name="newsletter" required validation-mode="silent">
|
|
5676
|
+
* Subscribe to newsletter
|
|
5677
|
+
* </bcm-checkbox>
|
|
5678
|
+
* <button type="submit">Submit</button>
|
|
5679
|
+
* </form>
|
|
5680
|
+
* @example Value-only mode
|
|
5681
|
+
* <bcm-checkbox name="analytics" validation-mode="none">
|
|
5682
|
+
* Allow analytics
|
|
5683
|
+
* </bcm-checkbox>
|
|
4263
5684
|
*/
|
|
4264
5685
|
"bcm-checkbox": LocalJSX.BcmCheckbox & JSXBase.HTMLAttributes<HTMLBcmCheckboxElement>;
|
|
4265
5686
|
/**
|
|
@@ -4291,72 +5712,259 @@ declare module "@stencil/core" {
|
|
|
4291
5712
|
* The component uses CSS variables for theming and Tailwind for styling.
|
|
4292
5713
|
*/
|
|
4293
5714
|
"bcm-divider": LocalJSX.BcmDivider & JSXBase.HTMLAttributes<HTMLBcmDividerElement>;
|
|
5715
|
+
/**
|
|
5716
|
+
* @component BcmDrawer
|
|
5717
|
+
* @description A slide-in panel component built on the native HTML Dialog API.
|
|
5718
|
+
* Ideal for navigation menus, forms, and contextual information that slides in from any edge of the screen.
|
|
5719
|
+
* @example ```html
|
|
5720
|
+
* <!-- Basic usage -->
|
|
5721
|
+
* <bcm-drawer open header-text="Menu" position="left">
|
|
5722
|
+
* <nav>
|
|
5723
|
+
* <a href="/home">Home</a>
|
|
5724
|
+
* <a href="/about">About</a>
|
|
5725
|
+
* </nav>
|
|
5726
|
+
* </bcm-drawer>
|
|
5727
|
+
* <!-- Custom size and position -->
|
|
5728
|
+
* <bcm-drawer size="large" position="right">
|
|
5729
|
+
* <div slot="header">Settings</div>
|
|
5730
|
+
* <form>...</form>
|
|
5731
|
+
* <div slot="footer">
|
|
5732
|
+
* <button data-dismiss>Cancel</button>
|
|
5733
|
+
* <button>Save</button>
|
|
5734
|
+
* </div>
|
|
5735
|
+
* </bcm-drawer>
|
|
5736
|
+
* <!-- Custom size with CSS units -->
|
|
5737
|
+
* <bcm-drawer size="600px" position="bottom">
|
|
5738
|
+
* <p>Custom height drawer</p>
|
|
5739
|
+
* </bcm-drawer>
|
|
5740
|
+
* <!-- Programmatic usage -->
|
|
5741
|
+
* <bcm-drawer id="myDrawer">Content</bcm-drawer>
|
|
5742
|
+
* <script>
|
|
5743
|
+
* document.getElementById('myDrawer').show();
|
|
5744
|
+
* </script>
|
|
5745
|
+
* ```
|
|
5746
|
+
*/
|
|
4294
5747
|
"bcm-drawer": LocalJSX.BcmDrawer & JSXBase.HTMLAttributes<HTMLBcmDrawerElement>;
|
|
4295
5748
|
"bcm-dropdown": LocalJSX.BcmDropdown & JSXBase.HTMLAttributes<HTMLBcmDropdownElement>;
|
|
4296
5749
|
"bcm-dropdown-item": LocalJSX.BcmDropdownItem & JSXBase.HTMLAttributes<HTMLBcmDropdownItemElement>;
|
|
5750
|
+
"bcm-file-upload": LocalJSX.BcmFileUpload & JSXBase.HTMLAttributes<HTMLBcmFileUploadElement>;
|
|
4297
5751
|
"bcm-input": LocalJSX.BcmInput & JSXBase.HTMLAttributes<HTMLBcmInputElement>;
|
|
5752
|
+
/**
|
|
5753
|
+
* @component BcmLinked
|
|
5754
|
+
* @description A flexible linked floating element component that displays contextual content relative to a trigger element.
|
|
5755
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
5756
|
+
* Supports different trigger types (click, hover, focus, manual) and comprehensive event system.
|
|
5757
|
+
* @example Basic Click Trigger
|
|
5758
|
+
* <bcm-linked trigger="click">
|
|
5759
|
+
* <button slot="trigger">Click Me</button>
|
|
5760
|
+
* <div>Floating content here</div>
|
|
5761
|
+
* </bcm-linked>
|
|
5762
|
+
* @example Hover Trigger with Delays
|
|
5763
|
+
* <bcm-linked trigger="hover" show-delay="200" hide-delay="100">
|
|
5764
|
+
* <span slot="trigger">Hover Me</span>
|
|
5765
|
+
* <div>This appears on hover</div>
|
|
5766
|
+
* </bcm-linked>
|
|
5767
|
+
* @example Manual Control
|
|
5768
|
+
* <bcm-linked id="my-linked" trigger="manual">
|
|
5769
|
+
* <button slot="trigger">Trigger</button>
|
|
5770
|
+
* <div>Controlled content</div>
|
|
5771
|
+
* </bcm-linked>
|
|
5772
|
+
* <script>
|
|
5773
|
+
* const linked = document.querySelector('#my-linked');
|
|
5774
|
+
* linked.show(); // Opens the floating element
|
|
5775
|
+
* linked.hide(); // Closes the floating element
|
|
5776
|
+
* </script>
|
|
5777
|
+
* @csspart floating - The floating container element
|
|
5778
|
+
* @csspart arrow - The arrow element pointing to the trigger
|
|
5779
|
+
* @csspart content - The content wrapper element
|
|
5780
|
+
*/
|
|
4298
5781
|
"bcm-linked": LocalJSX.BcmLinked & JSXBase.HTMLAttributes<HTMLBcmLinkedElement>;
|
|
5782
|
+
/**
|
|
5783
|
+
* @component BcmModal
|
|
5784
|
+
* @description A flexible modal dialog component built on the native HTML Dialog API.
|
|
5785
|
+
* Provides a powerful way to display content in a layer above the page with full keyboard and focus management.
|
|
5786
|
+
* @example ```html
|
|
5787
|
+
* <!-- Basic usage -->
|
|
5788
|
+
* <bcm-modal open header-text="Welcome" helper-text="Please read carefully">
|
|
5789
|
+
* <p>Modal content goes here</p>
|
|
5790
|
+
* <div slot="footer">
|
|
5791
|
+
* <button data-dismiss>Close</button>
|
|
5792
|
+
* </div>
|
|
5793
|
+
* </bcm-modal>
|
|
5794
|
+
* <!-- Custom size and placement -->
|
|
5795
|
+
* <bcm-modal size="large" placement="top">
|
|
5796
|
+
* <div slot="header">Custom Header</div>
|
|
5797
|
+
* <p>Content here</p>
|
|
5798
|
+
* <div slot="footer">
|
|
5799
|
+
* <button>Cancel</button>
|
|
5800
|
+
* <button>Confirm</button>
|
|
5801
|
+
* </div>
|
|
5802
|
+
* </bcm-modal>
|
|
5803
|
+
* <!-- Full screen modal -->
|
|
5804
|
+
* <bcm-modal full-screen no-footer>
|
|
5805
|
+
* <p>Full screen content</p>
|
|
5806
|
+
* </bcm-modal>
|
|
5807
|
+
* <!-- Programmatic usage -->
|
|
5808
|
+
* <bcm-modal id="myModal">Content</bcm-modal>
|
|
5809
|
+
* <script>
|
|
5810
|
+
* document.getElementById('myModal').show();
|
|
5811
|
+
* </script>
|
|
5812
|
+
* ```
|
|
5813
|
+
*/
|
|
4299
5814
|
"bcm-modal": LocalJSX.BcmModal & JSXBase.HTMLAttributes<HTMLBcmModalElement>;
|
|
4300
5815
|
/**
|
|
4301
5816
|
* @component BcmPopConfirm
|
|
4302
|
-
* @description A
|
|
4303
|
-
*
|
|
4304
|
-
*
|
|
4305
|
-
*
|
|
4306
|
-
* @
|
|
4307
|
-
*
|
|
4308
|
-
*
|
|
4309
|
-
*
|
|
4310
|
-
*
|
|
5817
|
+
* @description A confirmation popover component that displays a confirmation dialog with customizable actions.
|
|
5818
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
5819
|
+
* Ideal for confirming destructive actions or important decisions inline.
|
|
5820
|
+
* @csspart container - The main popover container element
|
|
5821
|
+
* @csspart arrow - The arrow pointer element
|
|
5822
|
+
* @csspart body - The body/description section
|
|
5823
|
+
* @csspart footer - The footer section with action buttons
|
|
5824
|
+
* @example Basic Usage
|
|
5825
|
+
* ```html
|
|
5826
|
+
* <bcm-pop-confirm
|
|
5827
|
+
* header-text="Delete Item?"
|
|
5828
|
+
* description="Are you sure you want to delete this item? This action cannot be undone."
|
|
5829
|
+
* status="error"
|
|
5830
|
+
* >
|
|
5831
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
4311
5832
|
* </bcm-pop-confirm>
|
|
4312
|
-
*
|
|
4313
|
-
*
|
|
4314
|
-
*
|
|
4315
|
-
*
|
|
4316
|
-
*
|
|
5833
|
+
* ```
|
|
5834
|
+
* @example With Event Handlers
|
|
5835
|
+
* ```html
|
|
5836
|
+
* <bcm-pop-confirm
|
|
5837
|
+
* id="deleteConfirm"
|
|
5838
|
+
* header-text="Confirm Delete"
|
|
5839
|
+
* description="This will permanently delete the item."
|
|
5840
|
+
* status="warning"
|
|
5841
|
+
* confirm-text="Yes, Delete"
|
|
5842
|
+
* cancel-text="No, Keep It"
|
|
5843
|
+
* >
|
|
5844
|
+
* <bcm-button>Delete Item</bcm-button>
|
|
5845
|
+
* </bcm-pop-confirm>
|
|
5846
|
+
* <script>
|
|
5847
|
+
* const popconfirm = document.getElementById('deleteConfirm');
|
|
5848
|
+
* popconfirm.addEventListener('bcmConfirm', () => {
|
|
5849
|
+
* console.log('User confirmed deletion');
|
|
5850
|
+
* // Perform delete operation
|
|
5851
|
+
* });
|
|
5852
|
+
* popconfirm.addEventListener('bcmCancel', () => {
|
|
5853
|
+
* console.log('User cancelled deletion');
|
|
5854
|
+
* });
|
|
5855
|
+
* </script>
|
|
5856
|
+
* ```
|
|
5857
|
+
* @example Different Status Types
|
|
5858
|
+
* ```html
|
|
5859
|
+
* <!-- Info (default) -->
|
|
5860
|
+
* <bcm-pop-confirm header-text="Information" description="This is an info message">
|
|
5861
|
+
* <bcm-button>Info</bcm-button>
|
|
5862
|
+
* </bcm-pop-confirm>
|
|
5863
|
+
* <!-- Success -->
|
|
5864
|
+
* <bcm-pop-confirm status="success" header-text="Confirm Action" description="Proceed with this action?">
|
|
5865
|
+
* <bcm-button status="success">Proceed</bcm-button>
|
|
5866
|
+
* </bcm-pop-confirm>
|
|
5867
|
+
* <!-- Warning -->
|
|
5868
|
+
* <bcm-pop-confirm status="warning" header-text="Warning" description="This action may have consequences">
|
|
5869
|
+
* <bcm-button status="warning">Continue</bcm-button>
|
|
5870
|
+
* </bcm-pop-confirm>
|
|
5871
|
+
* <!-- Error/Danger -->
|
|
5872
|
+
* <bcm-pop-confirm status="error" header-text="Danger Zone" description="This is a destructive action">
|
|
5873
|
+
* <bcm-button status="error">Delete</bcm-button>
|
|
5874
|
+
* </bcm-pop-confirm>
|
|
5875
|
+
* ```
|
|
5876
|
+
* @example Custom Content with Slots
|
|
5877
|
+
* ```html
|
|
5878
|
+
* <bcm-pop-confirm status="warning">
|
|
5879
|
+
* <bcm-button>Custom Confirm</bcm-button>
|
|
5880
|
+
* <div slot="header">
|
|
5881
|
+
* <strong>Custom Header</strong>
|
|
5882
|
+
* </div>
|
|
5883
|
+
* <div slot="body">
|
|
5884
|
+
* <p>This is custom body content with <strong>HTML formatting</strong>.</p>
|
|
5885
|
+
* <ul>
|
|
5886
|
+
* <li>Point 1</li>
|
|
5887
|
+
* <li>Point 2</li>
|
|
5888
|
+
* </ul>
|
|
5889
|
+
* </div>
|
|
5890
|
+
* <div slot="footer">
|
|
5891
|
+
* <bcm-button kind="outline" size="small">Maybe Later</bcm-button>
|
|
5892
|
+
* <bcm-button status="success" size="small">Confirm</bcm-button>
|
|
5893
|
+
* </div>
|
|
5894
|
+
* </bcm-pop-confirm>
|
|
5895
|
+
* ```
|
|
5896
|
+
* @example Different Sizes
|
|
5897
|
+
* ```html
|
|
5898
|
+
* <!-- Small -->
|
|
5899
|
+
* <bcm-pop-confirm size="small" header-text="Small" description="Compact confirmation">
|
|
5900
|
+
* <bcm-button size="small">Small</bcm-button>
|
|
5901
|
+
* </bcm-pop-confirm>
|
|
5902
|
+
* <!-- Medium (default) -->
|
|
5903
|
+
* <bcm-pop-confirm size="medium" header-text="Medium" description="Standard confirmation">
|
|
5904
|
+
* <bcm-button size="medium">Medium</bcm-button>
|
|
5905
|
+
* </bcm-pop-confirm>
|
|
5906
|
+
* <!-- Large -->
|
|
5907
|
+
* <bcm-pop-confirm size="large" header-text="Large" description="Spacious confirmation with more room for content">
|
|
5908
|
+
* <bcm-button size="large">Large</bcm-button>
|
|
5909
|
+
* </bcm-pop-confirm>
|
|
5910
|
+
* ```
|
|
5911
|
+
* @example Programmatic Control
|
|
5912
|
+
* ```html
|
|
5913
|
+
* <bcm-pop-confirm id="myConfirm" header-text="Confirm" description="Are you sure?">
|
|
5914
|
+
* <bcm-button>Trigger</bcm-button>
|
|
5915
|
+
* </bcm-pop-confirm>
|
|
5916
|
+
* <bcm-button id="showBtn">Show Programmatically</bcm-button>
|
|
5917
|
+
* <bcm-button id="hideBtn">Hide Programmatically</bcm-button>
|
|
5918
|
+
* <script>
|
|
5919
|
+
* const popconfirm = document.getElementById('myConfirm');
|
|
5920
|
+
* document.getElementById('showBtn').addEventListener('click', () => {
|
|
5921
|
+
* popconfirm.show();
|
|
4317
5922
|
* });
|
|
4318
|
-
*
|
|
4319
|
-
*
|
|
5923
|
+
* document.getElementById('hideBtn').addEventListener('click', () => {
|
|
5924
|
+
* popconfirm.hide();
|
|
4320
5925
|
* });
|
|
4321
|
-
*
|
|
4322
|
-
*
|
|
4323
|
-
*
|
|
4324
|
-
*
|
|
4325
|
-
*
|
|
4326
|
-
*
|
|
4327
|
-
*
|
|
4328
|
-
*
|
|
4329
|
-
*
|
|
4330
|
-
*
|
|
4331
|
-
*
|
|
4332
|
-
*
|
|
4333
|
-
* @
|
|
4334
|
-
*
|
|
4335
|
-
*
|
|
4336
|
-
*
|
|
4337
|
-
*
|
|
4338
|
-
*
|
|
4339
|
-
*
|
|
4340
|
-
*
|
|
4341
|
-
*
|
|
4342
|
-
*
|
|
4343
|
-
*
|
|
4344
|
-
*
|
|
4345
|
-
*
|
|
5926
|
+
* </script>
|
|
5927
|
+
* ```
|
|
5928
|
+
* @example Without Status Icon
|
|
5929
|
+
* ```html
|
|
5930
|
+
* <bcm-pop-confirm
|
|
5931
|
+
* header-text="Simple Confirmation"
|
|
5932
|
+
* description="No status icon shown"
|
|
5933
|
+
* status-icon={false}
|
|
5934
|
+
* >
|
|
5935
|
+
* <bcm-button>Click Me</bcm-button>
|
|
5936
|
+
* </bcm-pop-confirm>
|
|
5937
|
+
* ```
|
|
5938
|
+
* @example Different Placements
|
|
5939
|
+
* ```html
|
|
5940
|
+
* <bcm-pop-confirm placement="top" header-text="Top" description="Opens above">
|
|
5941
|
+
* <bcm-button>Top</bcm-button>
|
|
5942
|
+
* </bcm-pop-confirm>
|
|
5943
|
+
* <bcm-pop-confirm placement="right" header-text="Right" description="Opens to the right">
|
|
5944
|
+
* <bcm-button>Right</bcm-button>
|
|
5945
|
+
* </bcm-pop-confirm>
|
|
5946
|
+
* <bcm-pop-confirm placement="bottom" header-text="Bottom" description="Opens below">
|
|
5947
|
+
* <bcm-button>Bottom</bcm-button>
|
|
5948
|
+
* </bcm-pop-confirm>
|
|
5949
|
+
* <bcm-pop-confirm placement="left" header-text="Left" description="Opens to the left">
|
|
5950
|
+
* <bcm-button>Left</bcm-button>
|
|
5951
|
+
* </bcm-pop-confirm>
|
|
5952
|
+
* ```
|
|
4346
5953
|
*/
|
|
4347
5954
|
"bcm-pop-confirm": LocalJSX.BcmPopConfirm & JSXBase.HTMLAttributes<HTMLBcmPopConfirmElement>;
|
|
4348
5955
|
/**
|
|
4349
5956
|
* @component BcmPopover
|
|
4350
5957
|
* @description A flexible popover component that displays contextual information or content relative to a target element.
|
|
4351
|
-
*
|
|
5958
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
5959
|
+
* Supports different sizes, trigger types (click, hover, focus), placements, and comprehensive event system.
|
|
4352
5960
|
* @example Basic Click Popover
|
|
4353
5961
|
* <bcm-popover trigger="click" size="medium" placement="top">
|
|
4354
5962
|
* <bcm-button>Click Me</bcm-button>
|
|
4355
5963
|
* <span slot="header">Header</span>
|
|
4356
5964
|
* <span slot="content">This is a simple popover content.</span>
|
|
4357
5965
|
* </bcm-popover>
|
|
4358
|
-
* @example Hover Popover with
|
|
4359
|
-
* <bcm-popover trigger="hover"
|
|
5966
|
+
* @example Hover Popover with Delays
|
|
5967
|
+
* <bcm-popover trigger="hover" show-delay="200" hide-delay="100" size="large" placement="right" header-text="Prop Header" message="This is a hover popover with props.">
|
|
4360
5968
|
* <bcm-button>Hover Me</bcm-button>
|
|
4361
5969
|
* </bcm-popover>
|
|
4362
5970
|
* @example Programmatic Control
|
|
@@ -4366,8 +5974,9 @@ declare module "@stencil/core" {
|
|
|
4366
5974
|
* </bcm-popover>
|
|
4367
5975
|
* <script>
|
|
4368
5976
|
* const popover = document.querySelector('#my-popover');
|
|
4369
|
-
* popover.
|
|
4370
|
-
* popover.
|
|
5977
|
+
* popover.show(); // Opens the popover
|
|
5978
|
+
* popover.hide(); // Closes the popover
|
|
5979
|
+
* popover.toggle(); // Toggles the popover
|
|
4371
5980
|
* </script>
|
|
4372
5981
|
* @csspart popover - The root popover container element, stylable for the entire popover
|
|
4373
5982
|
* @csspart header - The header section of the popover, stylable for the title area
|
|
@@ -4377,71 +5986,120 @@ declare module "@stencil/core" {
|
|
|
4377
5986
|
"bcm-popover": LocalJSX.BcmPopover & JSXBase.HTMLAttributes<HTMLBcmPopoverElement>;
|
|
4378
5987
|
"bcm-radio": LocalJSX.BcmRadio & JSXBase.HTMLAttributes<HTMLBcmRadioElement>;
|
|
4379
5988
|
"bcm-radio-group": LocalJSX.BcmRadioGroup & JSXBase.HTMLAttributes<HTMLBcmRadioGroupElement>;
|
|
5989
|
+
/**
|
|
5990
|
+
* Individual segment option component
|
|
5991
|
+
*/
|
|
5992
|
+
"bcm-segment": LocalJSX.BcmSegment & JSXBase.HTMLAttributes<HTMLBcmSegmentElement>;
|
|
5993
|
+
/**
|
|
5994
|
+
* Modern Segmented Picker component with CSS Grid-based indicator
|
|
5995
|
+
*/
|
|
4380
5996
|
"bcm-segmented-picker": LocalJSX.BcmSegmentedPicker & JSXBase.HTMLAttributes<HTMLBcmSegmentedPickerElement>;
|
|
4381
|
-
"bcm-segmented-picker-option": LocalJSX.BcmSegmentedPickerOption & JSXBase.HTMLAttributes<HTMLBcmSegmentedPickerOptionElement>;
|
|
4382
5997
|
"bcm-shortcut": LocalJSX.BcmShortcut & JSXBase.HTMLAttributes<HTMLBcmShortcutElement>;
|
|
4383
5998
|
/**
|
|
4384
5999
|
* @component BcmSwitch
|
|
4385
|
-
* @description A
|
|
4386
|
-
*
|
|
6000
|
+
* @description A form-associated toggle switch component representing a boolean choice.
|
|
6001
|
+
* It behaves like a checkbox and integrates with native HTML forms via ElementInternals.
|
|
6002
|
+
* This component supports **three validation strategies** via `validation-mode`:
|
|
6003
|
+
* - **`native`**:
|
|
6004
|
+
* - Uses native browser constraint validation.
|
|
6005
|
+
* - Sets the underlying input's `required` attribute.
|
|
6006
|
+
* - Browser may show the native validation bubble when the form calls `reportValidity()` / submit validation runs.
|
|
6007
|
+
* - **`silent`**:
|
|
6008
|
+
* - Does **not** rely on native `required` (prevents the browser bubble).
|
|
6009
|
+
* - Computes the "missing required" state internally and exposes it via `error` + `caption`.
|
|
6010
|
+
* - UI errors are **gated**: they appear only after the control is touched or after a submit attempt.
|
|
6011
|
+
* - **`none`**:
|
|
6012
|
+
* - Value-only mode (headless): participates in form value submission but never becomes invalid.
|
|
6013
|
+
* ## UI error gating (silent mode)
|
|
6014
|
+
* To avoid showing errors on initial render, the component tracks:
|
|
6015
|
+
* - `touched`: set after the first user interaction
|
|
6016
|
+
* - `submitAttempted`: set when the parent form emits `submit`
|
|
6017
|
+
* Only when `touched || submitAttempted` the component will show `error/caption` in `silent` mode.
|
|
6018
|
+
* ## Value behavior
|
|
6019
|
+
* - When checked, the component submits its `value` (default: `"on"`).
|
|
6020
|
+
* - When unchecked, no value is submitted.
|
|
6021
|
+
* - When disabled, the component does not participate in submission or validity.
|
|
4387
6022
|
* @example Basic usage
|
|
4388
|
-
* <bcm-switch label="
|
|
4389
|
-
* @example
|
|
6023
|
+
* <bcm-switch name="newsletter" label="Receive newsletter?" />
|
|
6024
|
+
* @example Required with silent validation (no native bubble)
|
|
6025
|
+
* <form>
|
|
4390
6026
|
* <bcm-switch
|
|
6027
|
+
* name="terms"
|
|
4391
6028
|
* label="Accept terms"
|
|
4392
|
-
*
|
|
4393
|
-
*
|
|
4394
|
-
* </bcm-switch>
|
|
4395
|
-
* @example Disabled state
|
|
4396
|
-
* <bcm-switch
|
|
4397
|
-
* label="Advanced features"
|
|
4398
|
-
* disabled={true}>
|
|
4399
|
-
* </bcm-switch>
|
|
4400
|
-
* @example With custom size and label position
|
|
4401
|
-
* <bcm-switch
|
|
4402
|
-
* label="Dark mode"
|
|
4403
|
-
* size="large"
|
|
4404
|
-
* labelPosition="left">
|
|
6029
|
+
* required
|
|
6030
|
+
* validation-mode="silent">
|
|
4405
6031
|
* </bcm-switch>
|
|
6032
|
+
* <button type="submit">Submit</button>
|
|
6033
|
+
* </form>
|
|
6034
|
+
* @example Native validation mode (may show native bubble)
|
|
6035
|
+
* <bcm-switch name="terms" label="Accept terms" required validation-mode="native" />
|
|
6036
|
+
* @example Value-only mode (no validation)
|
|
6037
|
+
* <bcm-switch name="analytics" label="Allow analytics" validation-mode="none" />
|
|
6038
|
+
* @csspart base - Root container
|
|
6039
|
+
* @csspart switch-wrapper - Wrapper containing label + track
|
|
6040
|
+
* @csspart input - Hidden native input
|
|
6041
|
+
* @csspart label - Text label
|
|
6042
|
+
* @csspart dot-container - Switch track
|
|
6043
|
+
* @csspart dot - Switch knob
|
|
6044
|
+
* @csspart caption - Helper/error text
|
|
4406
6045
|
*/
|
|
4407
6046
|
"bcm-switch": LocalJSX.BcmSwitch & JSXBase.HTMLAttributes<HTMLBcmSwitchElement>;
|
|
4408
6047
|
/**
|
|
4409
|
-
*
|
|
4410
|
-
*/
|
|
4411
|
-
"bcm-tabs": LocalJSX.BcmTabs & JSXBase.HTMLAttributes<HTMLBcmTabsElement>;
|
|
4412
|
-
/**
|
|
4413
|
-
* @description Tab content panel component that displays when its corresponding tab is selected
|
|
6048
|
+
* Individual tab component - self-contained with label and content panel
|
|
4414
6049
|
*/
|
|
4415
|
-
"bcm-
|
|
6050
|
+
"bcm-tab": LocalJSX.BcmTab & JSXBase.HTMLAttributes<HTMLBcmTabElement>;
|
|
4416
6051
|
/**
|
|
4417
|
-
*
|
|
6052
|
+
* Modern Tabs component with CSS-first approach
|
|
4418
6053
|
*/
|
|
4419
|
-
"bcm-tabs
|
|
4420
|
-
/**
|
|
4421
|
-
* @description Tab trigger component that functions as a clickable tab button
|
|
4422
|
-
*/
|
|
4423
|
-
"bcm-tabs-trigger": LocalJSX.BcmTabsTrigger & JSXBase.HTMLAttributes<HTMLBcmTabsTriggerElement>;
|
|
6054
|
+
"bcm-tabs": LocalJSX.BcmTabs & JSXBase.HTMLAttributes<HTMLBcmTabsElement>;
|
|
4424
6055
|
"bcm-text": LocalJSX.BcmText & JSXBase.HTMLAttributes<HTMLBcmTextElement>;
|
|
4425
6056
|
"bcm-textarea": LocalJSX.BcmTextarea & JSXBase.HTMLAttributes<HTMLBcmTextareaElement>;
|
|
4426
6057
|
/**
|
|
4427
6058
|
* @component BcmTooltip
|
|
4428
|
-
* @description A
|
|
4429
|
-
*
|
|
4430
|
-
*
|
|
4431
|
-
*
|
|
4432
|
-
*
|
|
6059
|
+
* @description A flexible tooltip component that provides contextual information on hover or click.
|
|
6060
|
+
* Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
|
|
6061
|
+
* Automatically handles overflow, flipping, and complex shadow DOM scenarios.
|
|
6062
|
+
* @example ```html
|
|
6063
|
+
* <!-- Basic usage with text message -->
|
|
6064
|
+
* <bcm-tooltip message="This is a tooltip">
|
|
6065
|
+
* <button>Hover me</button>
|
|
4433
6066
|
* </bcm-tooltip>
|
|
4434
|
-
*
|
|
4435
|
-
* <bcm-tooltip
|
|
4436
|
-
*
|
|
6067
|
+
* <!-- With custom rich content -->
|
|
6068
|
+
* <bcm-tooltip placement="right" size="large">
|
|
6069
|
+
* <button>Click me</button>
|
|
6070
|
+
* <div slot="content">
|
|
6071
|
+
* <strong>Rich content</strong>
|
|
6072
|
+
* <p>You can add any HTML here</p>
|
|
6073
|
+
* </div>
|
|
6074
|
+
* </bcm-tooltip>
|
|
6075
|
+
* <!-- Click trigger with custom delays -->
|
|
6076
|
+
* <bcm-tooltip trigger="click" show-delay="0" hide-delay="0">
|
|
6077
|
+
* <span>Click me</span>
|
|
6078
|
+
* </bcm-tooltip>
|
|
6079
|
+
* <!-- Mouse following mode -->
|
|
6080
|
+
* <bcm-tooltip follow={true} message="I follow your cursor!">
|
|
6081
|
+
* <div>Move your mouse here</div>
|
|
6082
|
+
* </bcm-tooltip>
|
|
6083
|
+
* <!-- Programmatic control -->
|
|
6084
|
+
* <bcm-tooltip id="myTooltip" message="Programmatic tooltip">
|
|
6085
|
+
* <span>Trigger</span>
|
|
4437
6086
|
* </bcm-tooltip>
|
|
4438
6087
|
* <script>
|
|
4439
|
-
*
|
|
4440
|
-
*
|
|
4441
|
-
* tooltip.
|
|
6088
|
+
* const tooltip = document.getElementById('myTooltip');
|
|
6089
|
+
* tooltip.show();
|
|
6090
|
+
* setTimeout(() => tooltip.hide(), 2000);
|
|
4442
6091
|
* </script>
|
|
4443
|
-
*
|
|
4444
|
-
*
|
|
6092
|
+
* <!-- Custom styling with CSS parts -->
|
|
6093
|
+
* <style>
|
|
6094
|
+
* bcm-tooltip::part(tooltip) {
|
|
6095
|
+
* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
6096
|
+
* border-radius: 12px;
|
|
6097
|
+
* }
|
|
6098
|
+
* bcm-tooltip::part(arrow) {
|
|
6099
|
+
* background: #667eea;
|
|
6100
|
+
* }
|
|
6101
|
+
* </style>
|
|
6102
|
+
* ```
|
|
4445
6103
|
*/
|
|
4446
6104
|
"bcm-tooltip": LocalJSX.BcmTooltip & JSXBase.HTMLAttributes<HTMLBcmTooltipElement>;
|
|
4447
6105
|
}
|