bromcom-ui-next 0.1.30 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bromcom-ui/bcm-accordion-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-accordion.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-alert.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-avatar.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-badge.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-basic-badge.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-button-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-checkbox.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-chip.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-file-upload.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-radio-group.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-radio.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-segment.bcm-segmented-picker.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tab.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-textarea.entry.esm.js.map +1 -1
- package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +1 -0
- package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/global/global.js +33 -30
- package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
- package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
- package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
- package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
- package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
- package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
- package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
- package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
- package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
- package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
- package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
- package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
- package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
- package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
- package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
- package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
- package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
- package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
- package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
- package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
- package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
- package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
- package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
- package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
- package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
- package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
- package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
- package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
- package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
- package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
- package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
- package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
- package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
- package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
- package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
- package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
- package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
- package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
- package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
- package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
- package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
- package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
- package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
- package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
- package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-1507908f.entry.js → p-ccc310aa.entry.js} +2 -2
- package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
- package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
- package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
- package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
- package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
- package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
- package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
- package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
- package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
- package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-496014ca.entry.js → p-fb6f616c.entry.js} +2 -2
- package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
- package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
- package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
- package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
- package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
- package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
- package/dist/cjs/bcm-accordion-group.cjs.entry.js +20 -18
- package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js +73 -56
- package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-alert.cjs.entry.js +21 -21
- package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-avatar.cjs.entry.js +22 -12
- package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-badge.cjs.entry.js +114 -82
- package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -59
- package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-button-group.cjs.entry.js +36 -24
- package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-button.cjs.entry.js +338 -0
- package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -174
- package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-chip.cjs.entry.js +38 -35
- package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-divider.cjs.entry.js +55 -55
- package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
- package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -33
- package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-dropdown.cjs.entry.js +18 -17
- package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
- package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-input.cjs.entry.js +250 -158
- package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-linked.cjs.entry.js +452 -0
- package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
- package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-pop-confirm.cjs.entry.js +381 -0
- package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-popover.cjs.entry.js +451 -0
- package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -80
- package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-radio.cjs.entry.js +239 -106
- package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
- package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -4
- package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-switch.cjs.entry.js +281 -148
- package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
- package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
- package/dist/cjs/bcm-tabs.cjs.entry.js +191 -237
- package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-text.cjs.entry.js +86 -85
- package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-textarea.cjs.entry.js +224 -154
- package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/bcm-tooltip.cjs.entry.js +414 -0
- package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -0
- package/dist/cjs/bromcom-ui.cjs.js +2 -2
- package/dist/cjs/floating-ui.dom-S9nP6zZt.js +1622 -0
- package/dist/{bromcom-ui/floating-ui.dom-ltNPqX34.js.map → cjs/floating-ui.dom-S9nP6zZt.js.map} +1 -1
- package/dist/cjs/{index-CmYzUr-k.js → index-1Qal-onT.js} +111 -33
- package/dist/cjs/index-1Qal-onT.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
- package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
- package/dist/collection/collection-manifest.json +4 -5
- package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
- package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
- package/dist/collection/components/_shared/form/base-form-control.js +115 -0
- package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
- package/dist/collection/components/accordion/accordion.component.js +72 -55
- package/dist/collection/components/accordion/accordion.component.js.map +1 -1
- package/dist/collection/components/accordion/accordion.css +1 -1
- package/dist/collection/components/accordion-group/accordion-group.component.js +20 -18
- package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
- package/dist/collection/components/alert/alert.component.js +19 -21
- package/dist/collection/components/alert/alert.component.js.map +1 -1
- package/dist/collection/components/alert/alert.css +1 -1
- package/dist/collection/components/avatar/avatar.component.js +20 -12
- package/dist/collection/components/avatar/avatar.component.js.map +1 -1
- package/dist/collection/components/avatar/avatar.css +1 -1
- package/dist/collection/components/badge/badge.component.js +111 -81
- package/dist/collection/components/badge/badge.component.js.map +1 -1
- package/dist/collection/components/badge/badge.css +1 -1
- package/dist/collection/components/basic-badge/basic-badge.component.js +70 -58
- package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
- package/dist/collection/components/basic-badge/basic-badge.css +1 -1
- package/dist/collection/components/button/button.component.js +105 -84
- package/dist/collection/components/button/button.component.js.map +1 -1
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/button-group/button-group.component.js +34 -23
- package/dist/collection/components/button-group/button-group.component.js.map +1 -1
- package/dist/collection/components/button-group/button-group.css +1 -1
- package/dist/collection/components/checkbox/checkbox.component.js +355 -236
- package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/chip/chip.component.js +35 -34
- package/dist/collection/components/chip/chip.component.js.map +1 -1
- package/dist/collection/components/chip/chip.css +1 -1
- package/dist/collection/components/divider/divider.component.js +53 -55
- package/dist/collection/components/divider/divider.component.js.map +1 -1
- package/dist/collection/components/drawer/drawer.component.js +168 -144
- package/dist/collection/components/drawer/drawer.component.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.component.js +16 -16
- package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.component.js +34 -32
- package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
- package/dist/collection/components/input/input.component.js +241 -155
- package/dist/collection/components/input/input.component.js.map +1 -1
- package/dist/collection/components/linked/linked.component.js +160 -138
- package/dist/collection/components/linked/linked.component.js.map +1 -1
- package/dist/collection/components/linked/linked.css +1 -1
- package/dist/collection/components/modal/modal.component.js +180 -156
- package/dist/collection/components/modal/modal.component.js.map +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.component.js +190 -159
- package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
- package/dist/collection/components/popover/popover.component.js +240 -212
- package/dist/collection/components/popover/popover.component.js.map +1 -1
- package/dist/collection/components/popover/popover.css +1 -1
- package/dist/collection/components/radio/radio.component.js +282 -106
- package/dist/collection/components/radio/radio.component.js.map +1 -1
- package/dist/collection/components/radio-group/radio-group.component.js +102 -80
- package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
- package/dist/collection/components/segmented-picker/segment.component.js +228 -0
- package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
- package/dist/collection/components/segmented-picker/segment.css +1 -0
- package/dist/collection/components/segmented-picker/segmented-picker.component.js +354 -139
- package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
- package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
- package/dist/collection/components/shortcut/shortcut.js +4 -5
- package/dist/collection/components/shortcut/shortcut.js.map +1 -1
- package/dist/collection/components/switch/switch.component.js +350 -280
- package/dist/collection/components/switch/switch.component.js.map +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/tabs/bcm-tab.css +1 -0
- package/dist/collection/components/tabs/bcm-tabs.css +1 -1
- package/dist/collection/components/tabs/tab.component.js +169 -0
- package/dist/collection/components/tabs/tab.component.js.map +1 -0
- package/dist/collection/components/tabs/tabs.component.js +221 -352
- package/dist/collection/components/tabs/tabs.component.js.map +1 -1
- package/dist/collection/components/text/text.component.js +84 -85
- package/dist/collection/components/text/text.component.js.map +1 -1
- package/dist/collection/components/text/text.css +1 -1
- package/dist/collection/components/textarea/textarea.component.js +216 -153
- package/dist/collection/components/textarea/textarea.component.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.component.js +164 -154
- package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
- package/dist/collection/components/upload/file-upload.component.js +905 -0
- package/dist/collection/components/upload/file-upload.component.js.map +1 -0
- package/dist/collection/components/upload/file-upload.css +1 -0
- package/dist/collection/global/global.js +33 -30
- package/dist/collection/utils/i18n.js +3 -4
- package/dist/collection/utils/i18n.js.map +1 -1
- package/dist/collection/utils/slot/check-slot-content.js +1 -2
- package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
- package/dist/collection/utils/validation-messages.js +1 -1
- package/dist/collection/utils/validation-messages.js.map +1 -1
- package/dist/components/bcm-accordion-group.js +19 -17
- package/dist/components/bcm-accordion-group.js.map +1 -1
- package/dist/components/bcm-accordion.js +72 -55
- package/dist/components/bcm-accordion.js.map +1 -1
- package/dist/components/bcm-alert.js +1 -114
- package/dist/components/bcm-alert.js.map +1 -1
- package/dist/components/bcm-avatar.js +22 -12
- package/dist/components/bcm-avatar.js.map +1 -1
- package/dist/components/bcm-badge.js +1 -1
- package/dist/components/bcm-basic-badge.js +72 -58
- package/dist/components/bcm-basic-badge.js.map +1 -1
- package/dist/components/bcm-button-group.js +35 -23
- package/dist/components/bcm-button-group.js.map +1 -1
- package/dist/components/bcm-button.js +1 -1
- package/dist/components/bcm-checkbox.js +296 -184
- package/dist/components/bcm-checkbox.js.map +1 -1
- package/dist/components/bcm-chip.js +37 -34
- package/dist/components/bcm-chip.js.map +1 -1
- package/dist/components/bcm-divider.js +54 -54
- package/dist/components/bcm-divider.js.map +1 -1
- package/dist/components/bcm-drawer.js +169 -144
- package/dist/components/bcm-drawer.js.map +1 -1
- package/dist/components/bcm-dropdown-item.js +35 -32
- package/dist/components/bcm-dropdown-item.js.map +1 -1
- package/dist/components/bcm-dropdown.js +19 -18
- package/dist/components/bcm-dropdown.js.map +1 -1
- package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
- package/dist/components/bcm-file-upload.js +593 -0
- package/dist/components/bcm-file-upload.js.map +1 -0
- package/dist/components/bcm-input.js +244 -158
- package/dist/components/bcm-input.js.map +1 -1
- package/dist/components/bcm-linked.js +1 -1
- package/dist/components/bcm-modal.js +181 -156
- package/dist/components/bcm-modal.js.map +1 -1
- package/dist/components/bcm-pop-confirm.js +192 -160
- package/dist/components/bcm-pop-confirm.js.map +1 -1
- package/dist/components/bcm-popover.js +242 -213
- package/dist/components/bcm-popover.js.map +1 -1
- package/dist/components/bcm-radio-group.js +102 -79
- package/dist/components/bcm-radio-group.js.map +1 -1
- package/dist/components/bcm-radio.js +241 -108
- package/dist/components/bcm-radio.js.map +1 -1
- package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
- package/dist/components/bcm-segment.js +110 -0
- package/dist/components/bcm-segment.js.map +1 -0
- package/dist/components/bcm-segmented-picker.js +234 -115
- package/dist/components/bcm-segmented-picker.js.map +1 -1
- package/dist/components/bcm-shortcut.js +4 -3
- package/dist/components/bcm-shortcut.js.map +1 -1
- package/dist/components/bcm-switch.js +292 -156
- package/dist/components/bcm-switch.js.map +1 -1
- package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
- package/dist/components/bcm-tab.js +71 -0
- package/dist/components/bcm-tab.js.map +1 -0
- package/dist/components/bcm-tabs.js +196 -247
- package/dist/components/bcm-tabs.js.map +1 -1
- package/dist/components/bcm-text.js +85 -84
- package/dist/components/bcm-text.js.map +1 -1
- package/dist/components/bcm-textarea.js +218 -154
- package/dist/components/bcm-textarea.js.map +1 -1
- package/dist/components/bcm-tooltip.js +164 -153
- package/dist/components/bcm-tooltip.js.map +1 -1
- package/dist/components/index.js +105 -32
- package/dist/components/index.js.map +1 -1
- package/dist/components/p-5_TgtzQU.js +119 -0
- package/dist/components/p-5_TgtzQU.js.map +1 -0
- package/dist/components/p-RlBWOSgL.js +179 -0
- package/dist/components/p-RlBWOSgL.js.map +1 -0
- package/dist/components/p-SERXqWcS.js +51 -0
- package/dist/components/p-SERXqWcS.js.map +1 -0
- package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
- package/dist/components/p-nf_HKsGq.js.map +1 -0
- package/dist/components/{p-CsIBm0J5.js → p-xQIzBLsS.js} +108 -85
- package/dist/components/p-xQIzBLsS.js.map +1 -0
- package/dist/components/{p-6VLsKZvR.js → p-z9ESseGb.js} +163 -140
- package/dist/components/p-z9ESseGb.js.map +1 -0
- package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
- package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
- package/dist/esm/bcm-accordion-group.entry.js +20 -18
- package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
- package/dist/esm/bcm-accordion.entry.js +73 -56
- package/dist/esm/bcm-accordion.entry.js.map +1 -1
- package/dist/esm/bcm-alert.entry.js +21 -21
- package/dist/esm/bcm-alert.entry.js.map +1 -1
- package/dist/esm/bcm-avatar.entry.js +22 -12
- package/dist/esm/bcm-avatar.entry.js.map +1 -1
- package/dist/esm/bcm-badge.entry.js +114 -82
- package/dist/esm/bcm-badge.entry.js.map +1 -1
- package/dist/esm/bcm-basic-badge.entry.js +73 -59
- package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
- package/dist/esm/bcm-button-group.entry.js +36 -24
- package/dist/esm/bcm-button-group.entry.js.map +1 -1
- package/dist/esm/bcm-button.entry.js +336 -0
- package/dist/esm/bcm-button.entry.js.map +1 -0
- package/dist/esm/bcm-checkbox.entry.js +284 -174
- package/dist/esm/bcm-checkbox.entry.js.map +1 -1
- package/dist/esm/bcm-chip.entry.js +38 -35
- package/dist/esm/bcm-chip.entry.js.map +1 -1
- package/dist/esm/bcm-divider.entry.js +55 -55
- package/dist/esm/bcm-divider.entry.js.map +1 -1
- package/dist/esm/bcm-drawer.entry.js +330 -0
- package/dist/esm/bcm-drawer.entry.js.map +1 -0
- package/dist/esm/bcm-dropdown-item.entry.js +36 -33
- package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
- package/dist/esm/bcm-dropdown.entry.js +18 -17
- package/dist/esm/bcm-dropdown.entry.js.map +1 -1
- package/dist/esm/bcm-file-upload.entry.js +550 -0
- package/dist/esm/bcm-file-upload.entry.js.map +1 -0
- package/dist/esm/bcm-input.entry.js +250 -158
- package/dist/esm/bcm-input.entry.js.map +1 -1
- package/dist/esm/bcm-linked.entry.js +450 -0
- package/dist/esm/bcm-linked.entry.js.map +1 -0
- package/dist/esm/bcm-modal.entry.js +358 -0
- package/dist/esm/bcm-modal.entry.js.map +1 -0
- package/dist/esm/bcm-pop-confirm.entry.js +379 -0
- package/dist/esm/bcm-pop-confirm.entry.js.map +1 -0
- package/dist/esm/bcm-popover.entry.js +449 -0
- package/dist/esm/bcm-popover.entry.js.map +1 -0
- package/dist/esm/bcm-radio-group.entry.js +103 -80
- package/dist/esm/bcm-radio-group.entry.js.map +1 -1
- package/dist/esm/bcm-radio.entry.js +239 -106
- package/dist/esm/bcm-radio.entry.js.map +1 -1
- package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
- package/dist/esm/bcm-segment_2.entry.js +332 -0
- package/dist/esm/bcm-shortcut.entry.js +5 -4
- package/dist/esm/bcm-shortcut.entry.js.map +1 -1
- package/dist/esm/bcm-switch.entry.js +281 -148
- package/dist/esm/bcm-switch.entry.js.map +1 -1
- package/dist/esm/bcm-tab.entry.js +42 -0
- package/dist/esm/bcm-tab.entry.js.map +1 -0
- package/dist/esm/bcm-tabs.entry.js +191 -237
- package/dist/esm/bcm-tabs.entry.js.map +1 -1
- package/dist/esm/bcm-text.entry.js +86 -85
- package/dist/esm/bcm-text.entry.js.map +1 -1
- package/dist/esm/bcm-textarea.entry.js +224 -154
- package/dist/esm/bcm-textarea.entry.js.map +1 -1
- package/dist/esm/bcm-tooltip.entry.js +412 -0
- package/dist/esm/bcm-tooltip.entry.js.map +1 -0
- package/dist/esm/bromcom-ui.js +3 -3
- package/dist/esm/floating-ui.dom-DBDSgIvP.js +1615 -0
- package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
- package/dist/esm/{index-CRwAh9Np.js → index-B6Ppbs5O.js} +111 -34
- package/dist/esm/index-B6Ppbs5O.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
- package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
- package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
- package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
- package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
- package/dist/types/components/input/input.component.d.ts +5 -0
- package/dist/types/components/radio/radio.component.d.ts +21 -0
- package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
- package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
- package/dist/types/components/switch/switch.component.d.ts +83 -43
- package/dist/types/components/tabs/tab.component.d.ts +33 -0
- package/dist/types/components/tabs/tabs.component.d.ts +51 -64
- package/dist/types/components/textarea/textarea.component.d.ts +5 -0
- package/dist/types/components/upload/file-upload.component.d.ts +107 -0
- package/dist/types/components.d.ts +830 -382
- package/package.json +2 -2
- package/dist/bromcom-ui/_commonjsHelpers-CvGrISen.js.map +0 -1
- package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
- package/dist/bromcom-ui/generate-id-Crb5QsB-.js.map +0 -1
- package/dist/bromcom-ui/index-40rmUZjU.js.map +0 -1
- package/dist/bromcom-ui/index-BCaJmHBB.js.map +0 -1
- package/dist/bromcom-ui/p-0c7c6896.entry.js +0 -2
- package/dist/bromcom-ui/p-0c7c6896.entry.js.map +0 -1
- package/dist/bromcom-ui/p-11d0e649.entry.js +0 -2
- package/dist/bromcom-ui/p-11d0e649.entry.js.map +0 -1
- package/dist/bromcom-ui/p-12f38632.entry.js +0 -2
- package/dist/bromcom-ui/p-12f38632.entry.js.map +0 -1
- package/dist/bromcom-ui/p-13cbd1f5.entry.js +0 -2
- package/dist/bromcom-ui/p-13cbd1f5.entry.js.map +0 -1
- package/dist/bromcom-ui/p-1507908f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-1ce9913f.entry.js +0 -2
- package/dist/bromcom-ui/p-1ce9913f.entry.js.map +0 -1
- package/dist/bromcom-ui/p-206d767e.entry.js +0 -2
- package/dist/bromcom-ui/p-206d767e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-3cf7a7f4.entry.js +0 -2
- package/dist/bromcom-ui/p-3cf7a7f4.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4505feba.entry.js +0 -2
- package/dist/bromcom-ui/p-4505feba.entry.js.map +0 -1
- package/dist/bromcom-ui/p-496014ca.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4a932cd3.entry.js +0 -2
- package/dist/bromcom-ui/p-4a932cd3.entry.js.map +0 -1
- package/dist/bromcom-ui/p-4e554b8d.entry.js +0 -2
- package/dist/bromcom-ui/p-4e554b8d.entry.js.map +0 -1
- package/dist/bromcom-ui/p-57c4c4c4.entry.js +0 -2
- package/dist/bromcom-ui/p-57c4c4c4.entry.js.map +0 -1
- package/dist/bromcom-ui/p-61293ab2.entry.js +0 -2
- package/dist/bromcom-ui/p-61293ab2.entry.js.map +0 -1
- package/dist/bromcom-ui/p-61789456.entry.js +0 -2
- package/dist/bromcom-ui/p-61789456.entry.js.map +0 -1
- package/dist/bromcom-ui/p-65d0f188.entry.js +0 -2
- package/dist/bromcom-ui/p-65d0f188.entry.js.map +0 -1
- package/dist/bromcom-ui/p-83f707dc.entry.js +0 -2
- package/dist/bromcom-ui/p-83f707dc.entry.js.map +0 -1
- package/dist/bromcom-ui/p-8ba02e7e.entry.js +0 -2
- package/dist/bromcom-ui/p-8ba02e7e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-9e9bf32e.entry.js +0 -2
- package/dist/bromcom-ui/p-9e9bf32e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-CRwAh9Np.js +0 -3
- package/dist/bromcom-ui/p-CRwAh9Np.js.map +0 -1
- package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
- package/dist/bromcom-ui/p-c87a6acf.entry.js +0 -2
- package/dist/bromcom-ui/p-c87a6acf.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e0e235a8.entry.js +0 -2
- package/dist/bromcom-ui/p-e0e235a8.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e1ce8b55.entry.js +0 -2
- package/dist/bromcom-ui/p-e1ce8b55.entry.js.map +0 -1
- package/dist/bromcom-ui/p-e4dddb0b.entry.js +0 -2
- package/dist/bromcom-ui/p-e4dddb0b.entry.js.map +0 -1
- package/dist/bromcom-ui/p-f9426924.entry.js +0 -2
- package/dist/bromcom-ui/p-f9426924.entry.js.map +0 -1
- package/dist/bromcom-ui/p-faa0e62c.entry.js +0 -2
- package/dist/bromcom-ui/p-faa0e62c.entry.js.map +0 -1
- package/dist/bromcom-ui/p-fcb4399f.entry.js +0 -2
- package/dist/bromcom-ui/p-fcb4399f.entry.js.map +0 -1
- package/dist/bromcom-ui/tv-SlGJ5EfR.js.map +0 -1
- package/dist/bromcom-ui/validation-messages-CUvT12BL.js.map +0 -1
- package/dist/cjs/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-button_7.cjs.entry.js +0 -4131
- package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -105
- package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -142
- package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -18
- package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -82
- package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -120
- package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
- package/dist/cjs/index-CmYzUr-k.js.map +0 -1
- package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
- package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
- package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
- package/dist/collection/components/tabs/tabs-content.component.js +0 -46
- package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-content.css +0 -1
- package/dist/collection/components/tabs/tabs-list.component.js +0 -133
- package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-list.css +0 -1
- package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
- package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
- package/dist/collection/components/tabs/tabs-trigger.css +0 -1
- package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
- package/dist/components/bcm-segmented-picker-option.js +0 -133
- package/dist/components/bcm-segmented-picker-option.js.map +0 -1
- package/dist/components/bcm-tabs-content.js +0 -41
- package/dist/components/bcm-tabs-content.js.map +0 -1
- package/dist/components/bcm-tabs-list.js +0 -106
- package/dist/components/bcm-tabs-list.js.map +0 -1
- package/dist/components/bcm-tabs-trigger.js +0 -148
- package/dist/components/bcm-tabs-trigger.js.map +0 -1
- package/dist/components/p-6VLsKZvR.js.map +0 -1
- package/dist/components/p-CUvT12BL.js.map +0 -1
- package/dist/components/p-CaemikSK.js +0 -147
- package/dist/components/p-CaemikSK.js.map +0 -1
- package/dist/components/p-CsIBm0J5.js.map +0 -1
- package/dist/esm/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.js.map +0 -1
- package/dist/esm/bcm-button_7.entry.js +0 -4123
- package/dist/esm/bcm-segmented-picker-option.entry.js +0 -103
- package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
- package/dist/esm/bcm-segmented-picker.entry.js +0 -140
- package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-content.entry.js +0 -16
- package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-list.entry.js +0 -80
- package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
- package/dist/esm/bcm-tabs-trigger.entry.js +0 -118
- package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
- package/dist/esm/index-CRwAh9Np.js.map +0 -1
- package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
- package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
- package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
- package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"bcm-modal.js","mappings":"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","names":["BcmModal","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/modal/modal.css?tag=bcm-modal&encapsulation=shadow","src/components/modal/modal.component.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n","import { Component, Prop, h, Element, Event, EventEmitter, Method, Watch, Listen, State } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'full';\nexport type ModalPlacement = 'center' | 'top';\n\n/**\n * @component BcmModal\n * @description A flexible modal dialog component built on the native HTML Dialog API.\n * Provides a powerful way to display content in a layer above the page with full keyboard and focus management.\n *\n * @slot - Main content area of the modal\n * @slot header - Custom header content (overrides header-text prop)\n * @slot helper - Custom helper text content (overrides helper-text prop)\n * @slot footer - Footer content for action buttons\n *\n * @part dialog - The native dialog element\n * @part container - The container wrapper for centering and scrolling\n * @part modal - The main modal box\n * @part header - The header section\n * @part header-content - The content wrapper inside header\n * @part title - The title heading element\n * @part helper-text - The helper text paragraph\n * @part close-button - The close button in header\n * @part content - The main content area\n * @part footer - The footer section\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <bcm-modal open header-text=\"Welcome\" helper-text=\"Please read carefully\">\n * <p>Modal content goes here</p>\n * <div slot=\"footer\">\n * <button data-dismiss>Close</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Custom size and placement -->\n * <bcm-modal size=\"large\" placement=\"top\">\n * <div slot=\"header\">Custom Header</div>\n * <p>Content here</p>\n * <div slot=\"footer\">\n * <button>Cancel</button>\n * <button>Confirm</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Full screen modal -->\n * <bcm-modal full-screen no-footer>\n * <p>Full screen content</p>\n * </bcm-modal>\n *\n * <!-- Programmatic usage -->\n * <bcm-modal id=\"myModal\">Content</bcm-modal>\n * <script>\n * document.getElementById('myModal').show();\n * </script>\n * ```\n */\n@Component({\n tag: 'bcm-modal',\n styleUrl: 'modal.css',\n shadow: true,\n})\nexport class BcmModal {\n @Element() host: HTMLBcmModalElement;\n\n private dialogRef?: HTMLDialogElement;\n\n /**\n * Controls whether the modal is open or closed\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * The size of the modal\n * - 'small': 400px\n * - 'medium': 600px\n * - 'large': 800px\n * - 'xlarge': 1024px\n * - 'xxlarge': 1200px\n * - 'full': 100% width\n */\n @Prop() size: ModalSize = 'medium';\n\n /**\n * The placement of the modal on the screen\n * - 'center': Centered vertically and horizontally\n * - 'top': Aligned to the top with 80px padding\n */\n @Prop() placement: ModalPlacement = 'center';\n\n /**\n * Controls backdrop behavior\n * - true: Shows backdrop, modal can be closed by clicking outside\n * - false: No backdrop\n * - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)\n */\n @Prop() backdrop: boolean | 'static' = true;\n\n /**\n * Makes the modal take full width of the viewport (max-width: 100%)\n */\n @Prop({ attribute: 'full-width' }) fullWidth: boolean = false;\n\n /**\n * Makes the modal take the full screen (100vw x 100vh, no border radius)\n */\n @Prop({ attribute: 'full-screen' }) fullScreen: boolean = false;\n\n /**\n * Text to display in the modal header\n */\n @Prop({ attribute: 'header-text' }) headerText?: string;\n\n /**\n * Helper text to display below the header title\n */\n @Prop({ attribute: 'helper-text' }) helperText?: string;\n\n /**\n * Hides the header section completely\n */\n @Prop({ attribute: 'no-header' }) noHeader: boolean = false;\n\n /**\n * Hides the footer section completely\n */\n @Prop({ attribute: 'no-footer' }) noFooter: boolean = false;\n\n /**\n * Allows closing the modal by clicking on the backdrop\n */\n @Prop({ attribute: 'close-on-backdrop' }) closeOnBackdrop: boolean = true;\n\n /**\n * Allows closing the modal by pressing the Escape key\n */\n @Prop({ attribute: 'close-on-escape' }) closeOnEscape: boolean = true;\n\n @State() isAnimating: boolean = false;\n @State() shake: boolean = false;\n\n /**\n * Emitted after the modal has opened\n */\n @Event() bcmOpen: EventEmitter<void>;\n\n /**\n * Emitted after the modal has closed\n */\n @Event() bcmClose: EventEmitter<void>;\n\n /**\n * Emitted before the modal opens. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeOpen: EventEmitter<void>;\n\n /**\n * Emitted before the modal closes. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeClose: EventEmitter<void>;\n\n private modalClass = tv({\n slots: {\n dialog:\n 'bcm-ui-element fixed inset-0 m-0 p-0 w-full max-w-full h-full max-h-full border-none bg-transparent backdrop:bg-color-default-dark backdrop:opacity-50 backdrop:transition-opacity backdrop:duration-300',\n container: 'fixed inset-0 flex items-start justify-center p-4 overflow-y-auto overscroll-contain',\n modal: 'relative bg-color-basic-base text-color-default rounded-lg shadow-2xl transform transition-all duration-300 ease-in-out flex flex-col',\n header: 'flex justify-between items-start bg-color-base text-color-default border-color-default border-solid border-0 border-b rounded-t-lg',\n headerContent: 'flex-1 min-w-0 flex items-center gap-2',\n title: 'font-semibold m-0 text-size-6 text-color-header',\n helperText: 'text-size-5 text-color-placeholder m-0',\n closeButton:\n 'text-size-5 font-medium text-color-default bg-transparent border-none p-0 h-6 w-6 rounded hover:bg-color-default-hover cursor-pointer active:bg-color-active transition-colors flex-shrink-0 outline-none focus-visible:ring ',\n content: 'flex-grow overflow-y-auto',\n footer: 'flex items-center justify-end gap-2',\n },\n variants: {\n open: {\n true: {\n modal: 'opacity-100 translate-y-0 scale-100',\n },\n false: {\n modal: 'opacity-0 -translate-y-4 scale-95',\n },\n },\n placement: {\n center: {\n container: 'items-center',\n },\n top: {\n container: 'items-start pt-20',\n },\n },\n size: {\n small: {\n header: 'py-3 px-4',\n content: 'p-4',\n footer: 'py-3 px-4',\n },\n medium: {\n header: 'py-4 px-5',\n content: 'p-5',\n footer: 'py-4 px-5',\n },\n large: {\n header: 'py-4 px-6',\n content: 'p-6',\n footer: 'py-4 px-6',\n },\n xlarge: {\n header: 'py-5 px-6',\n content: 'p-6',\n footer: 'py-5 px-6',\n },\n xxlarge: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n full: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n },\n fullScreen: {\n true: {\n modal: 'rounded-none w-screen h-screen max-w-none max-h-none',\n container: 'p-0',\n },\n },\n shake: {\n true: {\n modal: 'animate-shake',\n },\n },\n noHeader: {\n true: {\n header: 'hidden',\n },\n },\n noFooter: {\n true: {\n footer: 'hidden',\n },\n },\n },\n });\n\n @Watch('open')\n async handleOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.isAnimating = true;\n const event = this.bcmBeforeOpen.emit();\n if (event.defaultPrevented) {\n this.open = false;\n return;\n }\n\n // Use native dialog API with top-layer\n if (this.dialogRef) {\n this.dialogRef.showModal();\n // Small delay for animation\n await new Promise(resolve => setTimeout(resolve, 50));\n this.isAnimating = false;\n this.bcmOpen.emit();\n }\n } else {\n this.isAnimating = true;\n const event = this.bcmBeforeClose.emit();\n if (event.defaultPrevented) {\n this.open = true;\n return;\n }\n\n // Wait for animation before closing\n await new Promise(resolve => setTimeout(resolve, 300));\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n this.isAnimating = false;\n this.bcmClose.emit();\n }\n }\n\n @Listen('click', { capture: true })\n handleClick(event: MouseEvent) {\n // Use composedPath to work with shadow DOM and slots\n const path = event.composedPath() as HTMLElement[];\n const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));\n const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));\n\n if (dismissElement) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n } else if (closeModalElement) {\n const modalId = closeModalElement.getAttribute('data-close-modal');\n // If modalId matches this modal's id, close it\n if (!modalId || modalId === this.host.id) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.open) {\n // Only handle ESC if this is the topmost modal\n const openModals = Array.from(document.querySelectorAll('bcm-modal[open]'));\n const topModal = openModals[openModals.length - 1];\n\n if (topModal !== this.host) {\n return;\n }\n\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n } else if (this.backdrop === 'static') {\n this.shakeModal();\n }\n }\n }\n\n /**\n * Programmatically opens the modal\n */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /**\n * Programmatically closes the modal\n */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n /**\n * Toggles the modal open/closed state\n */\n @Method()\n async toggle(): Promise<void> {\n this.open = !this.open;\n }\n\n private shakeModal() {\n this.shake = true;\n setTimeout(() => {\n this.shake = false;\n }, 300);\n }\n\n private handleBackdropClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n // Check if click is on the container (backdrop area), not on modal content\n if (target.getAttribute('part') === 'container') {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else if (this.closeOnBackdrop) {\n this.hide();\n }\n }\n };\n\n private handleDialogCancel = (event: Event) => {\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n }\n };\n\n private getModalStyle() {\n if (this.fullScreen) {\n return {\n width: '100vw',\n height: '100vh',\n maxWidth: 'none',\n maxHeight: 'none',\n };\n }\n\n if (this.fullWidth) {\n return {\n width: '100%',\n maxWidth: '100%',\n };\n }\n\n const widths = {\n small: '400px',\n medium: '600px',\n large: '800px',\n xlarge: '1024px',\n xxlarge: '1200px',\n full: '100%',\n };\n\n return {\n width: widths[this.size],\n maxWidth: this.fullScreen ? 'none' : '90vw',\n maxHeight: this.fullScreen ? 'none' : '90vh',\n };\n }\n\n componentDidLoad() {\n if (this.open && this.dialogRef) {\n this.dialogRef.showModal();\n }\n }\n\n disconnectedCallback() {\n if (this.dialogRef && this.open) {\n this.dialogRef.close();\n }\n }\n\n render() {\n const { dialog, container, modal, header, headerContent, title, helperText, closeButton, content, footer } = this.modalClass({\n open: this.open,\n placement: this.placement,\n size: this.size,\n fullScreen: this.fullScreen,\n shake: this.shake,\n noHeader: this.noHeader,\n noFooter: this.noFooter,\n });\n\n return (\n <dialog\n ref={el => (this.dialogRef = el)}\n part=\"dialog\"\n class={dialog()}\n onClick={this.handleBackdropClick}\n onCancel={this.handleDialogCancel}\n aria-labelledby=\"modal-title\"\n aria-describedby={this.helperText ? 'modal-helper' : undefined}\n aria-modal=\"true\"\n >\n <div part=\"container\" class={container()}>\n <div part=\"modal\" class={modal()} style={this.getModalStyle()} role=\"document\" onClick={e => e.stopPropagation()}>\n {!this.noHeader && (\n <div part=\"header\" class={header()}>\n <div part=\"header-content\" class={headerContent()}>\n <h2 id=\"modal-title\" part=\"title\" class={title()}>\n <slot name=\"header\">{this.headerText}</slot>\n </h2>\n {this.helperText && (\n <p id=\"modal-helper\" part=\"helper-text\" class={helperText()}>\n <slot name=\"helper\">{this.helperText}</slot>\n </p>\n )}\n </div>\n <button part=\"close-button\" class={closeButton()} onClick={() => this.hide()} aria-label=\"Close modal\" type=\"button\">\n <bcm-icon name=\"fa-solid fa-xmark\"></bcm-icon>\n </button>\n </div>\n )}\n\n <div part=\"content\" class={content()}>\n <slot />\n </div>\n\n {!this.noFooter && (\n <div part=\"footer\" class={footer()}>\n <slot name=\"footer\" />\n </div>\n )}\n </div>\n </div>\n </dialog>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"bcm-modal.js","mappings":"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","names":["BcmModal","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/modal/modal.css?tag=bcm-modal&encapsulation=shadow","src/components/modal/modal.component.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n","import { Component, Prop, h, Element, Event, EventEmitter, Method, Watch, Listen, State } from '@stencil/core';\nimport { tv } from '@utils/tv';\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'full';\nexport type ModalPlacement = 'center' | 'top';\n\n/**\n * @component BcmModal\n * @description A flexible modal dialog component built on the native HTML Dialog API.\n * Provides a powerful way to display content in a layer above the page with full keyboard and focus management.\n *\n * @slot - Main content area of the modal\n * @slot header - Custom header content (overrides header-text prop)\n * @slot helper - Custom helper text content (overrides helper-text prop)\n * @slot footer - Footer content for action buttons\n *\n * @part dialog - The native dialog element\n * @part container - The container wrapper for centering and scrolling\n * @part modal - The main modal box\n * @part header - The header section\n * @part header-content - The content wrapper inside header\n * @part title - The title heading element\n * @part helper-text - The helper text paragraph\n * @part close-button - The close button in header\n * @part content - The main content area\n * @part footer - The footer section\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <bcm-modal open header-text=\"Welcome\" helper-text=\"Please read carefully\">\n * <p>Modal content goes here</p>\n * <div slot=\"footer\">\n * <button data-dismiss>Close</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Custom size and placement -->\n * <bcm-modal size=\"large\" placement=\"top\">\n * <div slot=\"header\">Custom Header</div>\n * <p>Content here</p>\n * <div slot=\"footer\">\n * <button>Cancel</button>\n * <button>Confirm</button>\n * </div>\n * </bcm-modal>\n *\n * <!-- Full screen modal -->\n * <bcm-modal full-screen no-footer>\n * <p>Full screen content</p>\n * </bcm-modal>\n *\n * <!-- Programmatic usage -->\n * <bcm-modal id=\"myModal\">Content</bcm-modal>\n * <script>\n * document.getElementById('myModal').show();\n * </script>\n * ```\n */\n@Component({\n tag: 'bcm-modal',\n styleUrl: 'modal.css',\n shadow: true,\n})\nexport class BcmModal {\n @Element() host: HTMLBcmModalElement;\n\n private dialogRef?: HTMLDialogElement;\n\n /**\n * Controls whether the modal is open or closed\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * The size of the modal\n * - 'small': 400px\n * - 'medium': 600px\n * - 'large': 800px\n * - 'xlarge': 1024px\n * - 'xxlarge': 1200px\n * - 'full': 100% width\n */\n @Prop() size: ModalSize = 'medium';\n\n /**\n * The placement of the modal on the screen\n * - 'center': Centered vertically and horizontally\n * - 'top': Aligned to the top with 80px padding\n */\n @Prop() placement: ModalPlacement = 'center';\n\n /**\n * Controls backdrop behavior\n * - true: Shows backdrop, modal can be closed by clicking outside\n * - false: No backdrop\n * - 'static': Shows backdrop but prevents closing by clicking outside (triggers shake animation)\n */\n @Prop() backdrop: boolean | 'static' = true;\n\n /**\n * Makes the modal take full width of the viewport (max-width: 100%)\n */\n @Prop({ attribute: 'full-width' }) fullWidth: boolean = false;\n\n /**\n * Makes the modal take the full screen (100vw x 100vh, no border radius)\n */\n @Prop({ attribute: 'full-screen' }) fullScreen: boolean = false;\n\n /**\n * Text to display in the modal header\n */\n @Prop({ attribute: 'header-text' }) headerText?: string;\n\n /**\n * Helper text to display below the header title\n */\n @Prop({ attribute: 'helper-text' }) helperText?: string;\n\n /**\n * Hides the header section completely\n */\n @Prop({ attribute: 'no-header' }) noHeader: boolean = false;\n\n /**\n * Hides the footer section completely\n */\n @Prop({ attribute: 'no-footer' }) noFooter: boolean = false;\n\n /**\n * Allows closing the modal by clicking on the backdrop\n */\n @Prop({ attribute: 'close-on-backdrop' }) closeOnBackdrop: boolean = true;\n\n /**\n * Allows closing the modal by pressing the Escape key\n */\n @Prop({ attribute: 'close-on-escape' }) closeOnEscape: boolean = true;\n\n @State() isAnimating: boolean = false;\n @State() shake: boolean = false;\n\n /**\n * Emitted after the modal has opened\n */\n @Event() bcmOpen: EventEmitter<void>;\n\n /**\n * Emitted after the modal has closed\n */\n @Event() bcmClose: EventEmitter<void>;\n\n /**\n * Emitted before the modal opens. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeOpen: EventEmitter<void>;\n\n /**\n * Emitted before the modal closes. Can be cancelled by calling event.preventDefault()\n */\n @Event({ cancelable: true }) bcmBeforeClose: EventEmitter<void>;\n\n private modalClass = tv({\n slots: {\n dialog:\n 'bcm-ui-element fixed inset-0 m-0 p-0 w-full max-w-full h-full max-h-full border-none bg-transparent backdrop:bg-color-default-dark backdrop:opacity-50 backdrop:transition-opacity backdrop:duration-300',\n container: 'fixed inset-0 flex items-start justify-center p-4 overflow-y-auto overscroll-contain',\n modal: 'relative bg-color-basic-base text-color-default rounded-lg shadow-2xl transform transition-all duration-300 ease-in-out flex flex-col',\n header: 'flex justify-between items-start bg-color-base text-color-default border-color-default border-solid border-0 border-b rounded-t-lg',\n headerContent: 'flex-1 min-w-0 flex items-center gap-2',\n title: 'font-semibold m-0 text-size-6 text-color-header',\n helperText: 'text-size-5 text-color-placeholder m-0',\n closeButton:\n 'text-size-5 font-medium text-color-default bg-transparent border-none p-0 h-6 w-6 rounded hover:bg-color-default-hover cursor-pointer active:bg-color-active transition-colors flex-shrink-0 outline-none focus-visible:ring ',\n content: 'flex-grow overflow-y-auto',\n footer: 'flex items-center justify-end gap-2',\n },\n variants: {\n open: {\n true: {\n modal: 'opacity-100 translate-y-0 scale-100',\n },\n false: {\n modal: 'opacity-0 -translate-y-4 scale-95',\n },\n },\n placement: {\n center: {\n container: 'items-center',\n },\n top: {\n container: 'items-start pt-20',\n },\n },\n size: {\n small: {\n header: 'py-3 px-4',\n content: 'p-4',\n footer: 'py-3 px-4',\n },\n medium: {\n header: 'py-4 px-5',\n content: 'p-5',\n footer: 'py-4 px-5',\n },\n large: {\n header: 'py-4 px-6',\n content: 'p-6',\n footer: 'py-4 px-6',\n },\n xlarge: {\n header: 'py-5 px-6',\n content: 'p-6',\n footer: 'py-5 px-6',\n },\n xxlarge: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n full: {\n header: 'py-5 px-8',\n content: 'p-8',\n footer: 'py-5 px-8',\n },\n },\n fullScreen: {\n true: {\n modal: 'rounded-none w-screen h-screen max-w-none max-h-none',\n container: 'p-0',\n },\n },\n shake: {\n true: {\n modal: 'animate-shake',\n },\n },\n noHeader: {\n true: {\n header: 'hidden',\n },\n },\n noFooter: {\n true: {\n footer: 'hidden',\n },\n },\n },\n });\n\n @Watch('open')\n async handleOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.isAnimating = true;\n const event = this.bcmBeforeOpen.emit();\n if (event.defaultPrevented) {\n this.open = false;\n return;\n }\n\n // Use native dialog API with top-layer\n if (this.dialogRef) {\n this.dialogRef.showModal();\n // Small delay for animation\n await new Promise(resolve => setTimeout(resolve, 50));\n this.isAnimating = false;\n this.bcmOpen.emit();\n }\n } else {\n this.isAnimating = true;\n const event = this.bcmBeforeClose.emit();\n if (event.defaultPrevented) {\n this.open = true;\n return;\n }\n\n // Wait for animation before closing\n await new Promise(resolve => setTimeout(resolve, 300));\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n this.isAnimating = false;\n this.bcmClose.emit();\n }\n }\n\n @Listen('click', { capture: true })\n handleClick(event: MouseEvent) {\n // Use composedPath to work with shadow DOM and slots\n const path = event.composedPath() as HTMLElement[];\n const dismissElement = path.find(el => el.hasAttribute?.('data-dismiss'));\n const closeModalElement = path.find(el => el.hasAttribute?.('data-close-modal'));\n\n if (dismissElement) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n } else if (closeModalElement) {\n const modalId = closeModalElement.getAttribute('data-close-modal');\n // If modalId matches this modal's id, close it\n if (!modalId || modalId === this.host.id) {\n this.hide();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.open) {\n // Only handle ESC if this is the topmost modal\n const openModals = Array.from(document.querySelectorAll('bcm-modal[open]'));\n const topModal = openModals[openModals.length - 1];\n\n if (topModal !== this.host) {\n return;\n }\n\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n } else if (this.backdrop === 'static') {\n this.shakeModal();\n }\n }\n }\n\n /**\n * Programmatically opens the modal\n */\n @Method()\n async show(): Promise<void> {\n this.open = true;\n }\n\n /**\n * Programmatically closes the modal\n */\n @Method()\n async hide(): Promise<void> {\n this.open = false;\n }\n\n /**\n * Toggles the modal open/closed state\n */\n @Method()\n async toggle(): Promise<void> {\n this.open = !this.open;\n }\n\n private shakeModal() {\n this.shake = true;\n setTimeout(() => {\n this.shake = false;\n }, 300);\n }\n\n private handleBackdropClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n // Check if click is on the container (backdrop area), not on modal content\n if (target.getAttribute('part') === 'container') {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else if (this.closeOnBackdrop) {\n this.hide();\n }\n }\n };\n\n private handleDialogCancel = (event: Event) => {\n event.preventDefault();\n if (this.closeOnEscape) {\n if (this.backdrop === 'static') {\n this.shakeModal();\n } else {\n this.hide();\n }\n }\n };\n\n private getModalStyle() {\n if (this.fullScreen) {\n return {\n width: '100vw',\n height: '100vh',\n maxWidth: 'none',\n maxHeight: 'none',\n };\n }\n\n if (this.fullWidth) {\n return {\n width: '100%',\n maxWidth: '100%',\n };\n }\n\n const widths = {\n small: '400px',\n medium: '600px',\n large: '800px',\n xlarge: '1024px',\n xxlarge: '1200px',\n full: '100%',\n };\n\n return {\n width: widths[this.size],\n maxWidth: this.fullScreen ? 'none' : '90vw',\n maxHeight: this.fullScreen ? 'none' : '90vh',\n };\n }\n\n componentDidLoad() {\n if (this.open && this.dialogRef) {\n this.dialogRef.showModal();\n }\n }\n\n disconnectedCallback() {\n if (this.dialogRef && this.open) {\n this.dialogRef.close();\n }\n }\n\n render() {\n const { dialog, container, modal, header, headerContent, title, helperText, closeButton, content, footer } = this.modalClass({\n open: this.open,\n placement: this.placement,\n size: this.size,\n fullScreen: this.fullScreen,\n shake: this.shake,\n noHeader: this.noHeader,\n noFooter: this.noFooter,\n });\n\n return (\n <dialog\n ref={el => (this.dialogRef = el)}\n part=\"dialog\"\n class={dialog()}\n onClick={this.handleBackdropClick}\n onCancel={this.handleDialogCancel}\n aria-labelledby=\"modal-title\"\n aria-describedby={this.helperText ? 'modal-helper' : undefined}\n aria-modal=\"true\"\n >\n <div part=\"container\" class={container()}>\n <div part=\"modal\" class={modal()} style={this.getModalStyle()} role=\"document\" onClick={e => e.stopPropagation()}>\n {!this.noHeader && (\n <div part=\"header\" class={header()}>\n <div part=\"header-content\" class={headerContent()}>\n <h2 id=\"modal-title\" part=\"title\" class={title()}>\n <slot name=\"header\">{this.headerText}</slot>\n </h2>\n {this.helperText && (\n <p id=\"modal-helper\" part=\"helper-text\" class={helperText()}>\n <slot name=\"helper\">{this.helperText}</slot>\n </p>\n )}\n </div>\n <button part=\"close-button\" class={closeButton()} onClick={() => this.hide()} aria-label=\"Close modal\" type=\"button\">\n <bcm-icon name=\"fa-solid fa-xmark\"></bcm-icon>\n </button>\n </div>\n )}\n\n <div part=\"content\" class={content()}>\n <slot />\n </div>\n\n {!this.noFooter && (\n <div part=\"footer\" class={footer()}>\n <slot name=\"footer\" />\n </div>\n )}\n </div>\n </div>\n </dialog>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h } from './index.js';
|
|
2
2
|
import { a as autoUpdate, c as computePosition, o as offset, f as flip, s as shift, b as arrow } from './p-DBDSgIvP.js';
|
|
3
3
|
import { t as tv } from './p-CEcVC0yX.js';
|
|
4
|
-
import { d as defineCustomElement$2 } from './p-
|
|
4
|
+
import { d as defineCustomElement$2 } from './p-xQIzBLsS.js';
|
|
5
5
|
|
|
6
|
-
const popConfirmCss = ".visible{visibility:visible}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.text-wrap{text-wrap:wrap}.border{border-width:1px}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:host{--popover-bg:var(--bcm-ui-color-background-basic-panel);display:inline-block}[popover]{border:none;overflow:visible;padding:0}[popover]:not(:popover-open){display:none}[popover]:popover-open{opacity:1;transform:scale(1);transition:opacity .15s ease-out,transform .15s ease-out}@starting-style{[popover]:popover-open{opacity:0;transform:scale(.95)}}::slotted([slot=body]){text-wrap:pretty;font-family:Inter,sans-serif}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-6{top:1.5rem}.z-\\[9999\\]{z-index:9999}.m-0{margin:0}.inline-block{display:inline-block}.flex{display:flex}.size-6{height:1.5rem;width:1.5rem}.h-3{height:.75rem}.w-3{width:.75rem}.max-w-64{max-width:16rem}.max-w-80{max-width:20rem}.max-w-96{max-width:24rem}.flex-1{flex:1 1 0%}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:var(--bcm-ui-border-radius-full,9999px)}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.bg-\\[--popover-bg\\]{background-color:var(--popover-bg)}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.pr-8{padding-right:2rem}.font-sans{font-family:Inter,sans-serif}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.text-size-7{font-size:var(--bcm-ui-font-size-7,20px);line-height:var(--bcm-ui-line-height-7,28px)}.font-semibold{font-weight:600}.\\!text-color-header{color:var(--bcm-ui-color-text-header)!important}.text-\\[var\\(--bcm-ui-color-text-error\\)\\]{color:var(--bcm-ui-color-text-error)}.text-\\[var\\(--bcm-ui-color-text-info\\)\\]{color:var(--bcm-ui-color-text-info)}.text-\\[var\\(--bcm-ui-color-text-success\\)\\]{color:var(--bcm-ui-color-text-success)}.text-\\[var\\(--bcm-ui-color-text-warning\\)\\]{color:var(--bcm-ui-color-text-warning)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default)}.shadow,.shadow-3{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--bcm-ui-box-shadow-3);--tw-shadow-colored:var(--bcm-ui-box-shadow-3)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\\:bg-gray-100:hover{background-color:oklch(.967 .003 264.542)}";
|
|
6
|
+
const popConfirmCss = ".visible{visibility:visible}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.text-wrap{text-wrap:wrap}.border{border-width:1px}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:host{--popover-bg:var(--bcm-ui-color-background-basic-panel);display:inline-block}[popover]{border:none;overflow:visible;padding:0}[popover]:not(:popover-open){display:none}[popover]:popover-open{opacity:1;transform:scale(1);transition:opacity .15s ease-out,transform .15s ease-out}@starting-style{[popover]:popover-open{opacity:0;transform:scale(.95)}}::slotted([slot=body]){text-wrap:pretty;font-family:Inter,sans-serif}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-6{top:1.5rem}.z-\\[9999\\]{z-index:9999}.m-0{margin:0}.inline-block{display:inline-block}.flex{display:flex}.hidden{display:none}.size-6{height:1.5rem;width:1.5rem}.h-3{height:.75rem}.w-3{width:.75rem}.max-w-64{max-width:16rem}.max-w-80{max-width:20rem}.max-w-96{max-width:24rem}.flex-1{flex:1 1 0%}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.text-pretty{text-wrap:pretty}.rounded-full{border-radius:var(--bcm-ui-border-radius-full,9999px)}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.bg-\\[--popover-bg\\]{background-color:var(--popover-bg)}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.pr-8{padding-right:2rem}.font-sans{font-family:Inter,sans-serif}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.text-size-7{font-size:var(--bcm-ui-font-size-7,20px);line-height:var(--bcm-ui-line-height-7,28px)}.font-semibold{font-weight:600}.\\!text-color-header{color:var(--bcm-ui-color-text-header)!important}.text-\\[var\\(--bcm-ui-color-text-error\\)\\]{color:var(--bcm-ui-color-text-error)}.text-\\[var\\(--bcm-ui-color-text-info\\)\\]{color:var(--bcm-ui-color-text-info)}.text-\\[var\\(--bcm-ui-color-text-success\\)\\]{color:var(--bcm-ui-color-text-success)}.text-\\[var\\(--bcm-ui-color-text-warning\\)\\]{color:var(--bcm-ui-color-text-warning)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default)}.shadow,.shadow-3{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--bcm-ui-box-shadow-3);--tw-shadow-colored:var(--bcm-ui-box-shadow-3)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\\:bg-gray-100:hover{background-color:oklch(.967 .003 264.542)}";
|
|
7
7
|
|
|
8
8
|
const statusIcons = {
|
|
9
9
|
info: 'fa-solid fa-circle-info',
|
|
@@ -24,161 +24,115 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
24
24
|
this.bcmClose = createEvent(this, "bcmClose", 1);
|
|
25
25
|
this.bcmConfirm = createEvent(this, "bcmConfirm", 1);
|
|
26
26
|
this.bcmCancel = createEvent(this, "bcmCancel", 1);
|
|
27
|
-
/**
|
|
28
|
-
* @prop {PopConfirmPlacement} placement - Position of the popover relative to the trigger element.
|
|
29
|
-
* Automatically flips if there's not enough space.
|
|
30
|
-
* Default: 'top'
|
|
31
|
-
*/
|
|
32
|
-
this.placement = 'top';
|
|
33
|
-
/**
|
|
34
|
-
* @prop {PopConfirmSize} size - Size variant that controls padding and text size.
|
|
35
|
-
* - 'small': Compact size with minimal padding
|
|
36
|
-
* - 'medium': Standard size
|
|
37
|
-
* - 'large': Spacious size with more padding
|
|
38
|
-
* Default: 'medium'
|
|
39
|
-
*/
|
|
40
|
-
this.size = 'medium';
|
|
41
|
-
/**
|
|
42
|
-
* @prop {PopConfirmStatus} status - Status type that determines the color scheme and icon.
|
|
43
|
-
* - 'info': Informational (blue)
|
|
44
|
-
* - 'success': Success/positive action (green)
|
|
45
|
-
* - 'warning': Warning/caution (yellow)
|
|
46
|
-
* - 'error': Error/destructive action (red)
|
|
47
|
-
* Default: 'info'
|
|
48
|
-
*/
|
|
49
|
-
this.status = 'info';
|
|
50
|
-
/**
|
|
51
|
-
* @prop {string} headerText - Text displayed in the header section.
|
|
52
|
-
* Can be overridden by using the 'header' slot.
|
|
53
|
-
* Default: ''
|
|
54
|
-
*/
|
|
55
|
-
this.headerText = '';
|
|
56
|
-
/**
|
|
57
|
-
* @prop {string} description - Description text displayed in the body section.
|
|
58
|
-
* Can be overridden by using the 'body' slot.
|
|
59
|
-
* Default: ''
|
|
60
|
-
*/
|
|
61
|
-
this.description = '';
|
|
62
|
-
/**
|
|
63
|
-
* @prop {string} confirmText - Text for the confirm button.
|
|
64
|
-
* Default: 'Yes'
|
|
65
|
-
*/
|
|
66
|
-
this.confirmText = 'Yes';
|
|
67
|
-
/**
|
|
68
|
-
* @prop {string} cancelText - Text for the cancel button.
|
|
69
|
-
* Default: 'Cancel'
|
|
70
|
-
*/
|
|
71
|
-
this.cancelText = 'Cancel';
|
|
72
|
-
/**
|
|
73
|
-
* @prop {boolean} showArrow - Whether to show the arrow pointing to the trigger.
|
|
74
|
-
* Default: true
|
|
75
|
-
*/
|
|
76
|
-
this.showArrow = true;
|
|
77
|
-
/**
|
|
78
|
-
* @prop {boolean} statusIcon - Whether to show the status icon in the header.
|
|
79
|
-
* Icon only shows if headerText is also provided.
|
|
80
|
-
* Default: true
|
|
81
|
-
*/
|
|
82
|
-
this.statusIcon = true;
|
|
83
|
-
/**
|
|
84
|
-
* @prop {number} offsetDistance - Distance in pixels between the popover and trigger element.
|
|
85
|
-
* Default: 12
|
|
86
|
-
*/
|
|
87
|
-
this.offsetDistance = 12;
|
|
88
|
-
/**
|
|
89
|
-
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside the popover.
|
|
90
|
-
* Default: true
|
|
91
|
-
*/
|
|
92
|
-
this.closeOnOutsideClick = true;
|
|
93
|
-
/**
|
|
94
|
-
* @prop {boolean} closeOnEscape - Whether to close when pressing the Escape key.
|
|
95
|
-
* Default: true
|
|
96
|
-
*/
|
|
97
|
-
this.closeOnEscape = true;
|
|
98
|
-
this.isOpen = false;
|
|
99
|
-
this.handleSlotChange = () => {
|
|
100
|
-
var _a;
|
|
101
|
-
const slot = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
|
|
102
|
-
if (!slot)
|
|
103
|
-
return;
|
|
104
|
-
const elements = slot.assignedElements();
|
|
105
|
-
const assignedElement = elements[0];
|
|
106
|
-
this.triggerRef = (assignedElement || this.host);
|
|
107
|
-
if (!this.triggerRef)
|
|
108
|
-
return;
|
|
109
|
-
if (this.popconfirmRef && this.popconfirmId) {
|
|
110
|
-
this.triggerRef.setAttribute('aria-describedby', this.popconfirmId);
|
|
111
|
-
}
|
|
112
|
-
this.removeTriggerListeners();
|
|
113
|
-
this.setupTriggerListeners();
|
|
114
|
-
};
|
|
115
|
-
this.handleTriggerClick = () => {
|
|
116
|
-
this.toggle();
|
|
117
|
-
};
|
|
118
|
-
this.handleOutsideClick = (e) => {
|
|
119
|
-
var _a;
|
|
120
|
-
if (!this.closeOnOutsideClick || !this.isOpen)
|
|
121
|
-
return;
|
|
122
|
-
const target = e.target;
|
|
123
|
-
if (!this.host.contains(target) && !((_a = this.popconfirmRef) === null || _a === void 0 ? void 0 : _a.contains(target))) {
|
|
124
|
-
this.handleCancel();
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
this.handleToggle = (e) => {
|
|
128
|
-
const toggleEvent = e;
|
|
129
|
-
if (toggleEvent.newState === 'open' && !this.isOpen) {
|
|
130
|
-
this.isOpen = true;
|
|
131
|
-
}
|
|
132
|
-
else if (toggleEvent.newState === 'closed' && this.isOpen) {
|
|
133
|
-
this.isOpen = false;
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
this.handleConfirm = () => {
|
|
137
|
-
this.bcmConfirm.emit();
|
|
138
|
-
this.hide();
|
|
139
|
-
};
|
|
140
|
-
this.handleCancel = () => {
|
|
141
|
-
this.bcmCancel.emit();
|
|
142
|
-
this.hide();
|
|
143
|
-
};
|
|
144
|
-
this.popconfirmClass = tv({
|
|
145
|
-
slots: {
|
|
146
|
-
container: 'bcm-ui-element fixed m-0 flex flex-col bg-[--popover-bg] rounded-lg shadow-3 z-[9999]',
|
|
147
|
-
arrow: 'absolute w-3 h-3 bg-[--popover-bg] rotate-45',
|
|
148
|
-
closeBtn: 'absolute flex size-6 items-center justify-center hover:bg-gray-100 rounded-full cursor-pointer text-color-muted',
|
|
149
|
-
header: 'flex items-center pr-8',
|
|
150
|
-
headerLeft: 'flex items-center gap-2',
|
|
151
|
-
title: '!text-color-header font-semibold',
|
|
152
|
-
body: 'flex-1 font-sans text-pretty',
|
|
153
|
-
footer: 'flex flex-row justify-end gap-2',
|
|
154
|
-
},
|
|
155
|
-
variants: {
|
|
156
|
-
size: {
|
|
157
|
-
small: {
|
|
158
|
-
container: 'text-size-4 max-w-64 p-4 gap-4',
|
|
159
|
-
title: 'text-size-5',
|
|
160
|
-
closeBtn: 'top-3 right-3',
|
|
161
|
-
},
|
|
162
|
-
medium: {
|
|
163
|
-
container: 'text-size-5 max-w-80 p-6 gap-6',
|
|
164
|
-
title: 'text-size-6',
|
|
165
|
-
closeBtn: 'top-4 right-4',
|
|
166
|
-
},
|
|
167
|
-
large: {
|
|
168
|
-
container: 'text-size-6 max-w-96 p-8 gap-8',
|
|
169
|
-
title: 'text-size-7',
|
|
170
|
-
closeBtn: 'top-6 right-6',
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
status: {
|
|
174
|
-
info: { headerLeft: 'text-[var(--bcm-ui-color-text-info)]' },
|
|
175
|
-
success: { headerLeft: 'text-[var(--bcm-ui-color-text-success)]' },
|
|
176
|
-
warning: { headerLeft: 'text-[var(--bcm-ui-color-text-warning)]' },
|
|
177
|
-
error: { headerLeft: 'text-[var(--bcm-ui-color-text-error)]' },
|
|
178
|
-
},
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
27
|
}
|
|
28
|
+
get host() { return this; }
|
|
29
|
+
popconfirmRef;
|
|
30
|
+
arrowRef;
|
|
31
|
+
triggerRef;
|
|
32
|
+
cleanupAutoUpdate;
|
|
33
|
+
popconfirmId;
|
|
34
|
+
/**
|
|
35
|
+
* @prop {PopConfirmPlacement} placement - Position of the popover relative to the trigger element.
|
|
36
|
+
* Automatically flips if there's not enough space.
|
|
37
|
+
* Default: 'top'
|
|
38
|
+
*/
|
|
39
|
+
placement = 'top';
|
|
40
|
+
/**
|
|
41
|
+
* @prop {PopConfirmSize} size - Size variant that controls padding and text size.
|
|
42
|
+
* - 'small': Compact size with minimal padding
|
|
43
|
+
* - 'medium': Standard size
|
|
44
|
+
* - 'large': Spacious size with more padding
|
|
45
|
+
* Default: 'medium'
|
|
46
|
+
*/
|
|
47
|
+
size = 'medium';
|
|
48
|
+
/**
|
|
49
|
+
* @prop {PopConfirmStatus} status - Status type that determines the color scheme and icon.
|
|
50
|
+
* - 'info': Informational (blue)
|
|
51
|
+
* - 'success': Success/positive action (green)
|
|
52
|
+
* - 'warning': Warning/caution (yellow)
|
|
53
|
+
* - 'error': Error/destructive action (red)
|
|
54
|
+
* Default: 'info'
|
|
55
|
+
*/
|
|
56
|
+
status = 'info';
|
|
57
|
+
/**
|
|
58
|
+
* @prop {string} headerText - Text displayed in the header section.
|
|
59
|
+
* Can be overridden by using the 'header' slot.
|
|
60
|
+
* Default: ''
|
|
61
|
+
*/
|
|
62
|
+
headerText = '';
|
|
63
|
+
/**
|
|
64
|
+
* @prop {string} description - Description text displayed in the body section.
|
|
65
|
+
* Can be overridden by using the 'body' slot.
|
|
66
|
+
* Default: ''
|
|
67
|
+
*/
|
|
68
|
+
description = '';
|
|
69
|
+
/**
|
|
70
|
+
* @prop {string} confirmText - Text for the confirm button.
|
|
71
|
+
* Default: 'Yes'
|
|
72
|
+
*/
|
|
73
|
+
confirmText = 'Yes';
|
|
74
|
+
/**
|
|
75
|
+
* @prop {string} cancelText - Text for the cancel button.
|
|
76
|
+
* Default: 'Cancel'
|
|
77
|
+
*/
|
|
78
|
+
cancelText = 'Cancel';
|
|
79
|
+
/**
|
|
80
|
+
* @prop {boolean} showArrow - Whether to show the arrow pointing to the trigger.
|
|
81
|
+
* Default: true
|
|
82
|
+
*/
|
|
83
|
+
showArrow = true;
|
|
84
|
+
/**
|
|
85
|
+
* @prop {boolean} statusIcon - Whether to show the status icon in the header.
|
|
86
|
+
* Icon only shows if headerText is also provided.
|
|
87
|
+
* Default: true
|
|
88
|
+
*/
|
|
89
|
+
statusIcon = true;
|
|
90
|
+
/**
|
|
91
|
+
* @prop {number} offsetDistance - Distance in pixels between the popover and trigger element.
|
|
92
|
+
* Default: 12
|
|
93
|
+
*/
|
|
94
|
+
offsetDistance = 12;
|
|
95
|
+
/**
|
|
96
|
+
* @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside the popover.
|
|
97
|
+
* Default: true
|
|
98
|
+
*/
|
|
99
|
+
closeOnOutsideClick = true;
|
|
100
|
+
/**
|
|
101
|
+
* @prop {boolean} closeOnEscape - Whether to close when pressing the Escape key.
|
|
102
|
+
* Default: true
|
|
103
|
+
*/
|
|
104
|
+
closeOnEscape = true;
|
|
105
|
+
isOpen = false;
|
|
106
|
+
/**
|
|
107
|
+
* @event bcmBeforeOpen - Emitted before the popover opens.
|
|
108
|
+
* Useful for performing actions before the popover becomes visible.
|
|
109
|
+
*/
|
|
110
|
+
bcmBeforeOpen;
|
|
111
|
+
/**
|
|
112
|
+
* @event bcmOpen - Emitted when the popover is opened.
|
|
113
|
+
* Useful for tracking when the popover becomes visible.
|
|
114
|
+
*/
|
|
115
|
+
bcmOpen;
|
|
116
|
+
/**
|
|
117
|
+
* @event bcmBeforeClose - Emitted before the popover closes.
|
|
118
|
+
* Useful for performing cleanup actions before hiding.
|
|
119
|
+
*/
|
|
120
|
+
bcmBeforeClose;
|
|
121
|
+
/**
|
|
122
|
+
* @event bcmClose - Emitted when the popover is closed.
|
|
123
|
+
* Useful for tracking when the popover is hidden.
|
|
124
|
+
*/
|
|
125
|
+
bcmClose;
|
|
126
|
+
/**
|
|
127
|
+
* @event bcmConfirm - Emitted when the user clicks the confirm button.
|
|
128
|
+
* This is where you should handle the confirmed action.
|
|
129
|
+
*/
|
|
130
|
+
bcmConfirm;
|
|
131
|
+
/**
|
|
132
|
+
* @event bcmCancel - Emitted when the user clicks cancel, presses Escape, or clicks outside.
|
|
133
|
+
* Useful for tracking when the user dismisses the confirmation.
|
|
134
|
+
*/
|
|
135
|
+
bcmCancel;
|
|
182
136
|
async handleOpenChange(open) {
|
|
183
137
|
if (!this.popconfirmRef)
|
|
184
138
|
return;
|
|
@@ -286,6 +240,21 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
286
240
|
});
|
|
287
241
|
}
|
|
288
242
|
}
|
|
243
|
+
handleSlotChange = () => {
|
|
244
|
+
const slot = this.host.shadowRoot?.querySelector('slot:not([name])');
|
|
245
|
+
if (!slot)
|
|
246
|
+
return;
|
|
247
|
+
const elements = slot.assignedElements();
|
|
248
|
+
const assignedElement = elements[0];
|
|
249
|
+
this.triggerRef = (assignedElement || this.host);
|
|
250
|
+
if (!this.triggerRef)
|
|
251
|
+
return;
|
|
252
|
+
if (this.popconfirmRef && this.popconfirmId) {
|
|
253
|
+
this.triggerRef.setAttribute('aria-describedby', this.popconfirmId);
|
|
254
|
+
}
|
|
255
|
+
this.removeTriggerListeners();
|
|
256
|
+
this.setupTriggerListeners();
|
|
257
|
+
};
|
|
289
258
|
setupTriggerListeners() {
|
|
290
259
|
if (!this.triggerRef)
|
|
291
260
|
return;
|
|
@@ -296,15 +265,25 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
296
265
|
return;
|
|
297
266
|
this.triggerRef.removeEventListener('click', this.handleTriggerClick);
|
|
298
267
|
}
|
|
268
|
+
handleTriggerClick = () => {
|
|
269
|
+
this.toggle();
|
|
270
|
+
};
|
|
271
|
+
handleOutsideClick = (e) => {
|
|
272
|
+
if (!this.closeOnOutsideClick || !this.isOpen)
|
|
273
|
+
return;
|
|
274
|
+
const target = e.target;
|
|
275
|
+
if (!this.host.contains(target) && !this.popconfirmRef?.contains(target)) {
|
|
276
|
+
this.handleCancel();
|
|
277
|
+
}
|
|
278
|
+
};
|
|
299
279
|
handleKeyDown(e) {
|
|
300
280
|
if (!this.closeOnEscape || !this.isOpen)
|
|
301
281
|
return;
|
|
302
282
|
if (e.key === 'Escape') {
|
|
303
283
|
// Check if this is the topmost open popconfirm
|
|
304
284
|
const openPopconfirms = Array.from(document.querySelectorAll('bcm-pop-confirm')).filter(el => {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
return popconfirmEl === null || popconfirmEl === void 0 ? void 0 : popconfirmEl.matches(':popover-open');
|
|
285
|
+
const popconfirmEl = el.shadowRoot?.querySelector('[popover]');
|
|
286
|
+
return popconfirmEl?.matches(':popover-open');
|
|
308
287
|
});
|
|
309
288
|
const topPopconfirm = openPopconfirms[openPopconfirms.length - 1];
|
|
310
289
|
if (topPopconfirm === this.host) {
|
|
@@ -314,6 +293,23 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
314
293
|
}
|
|
315
294
|
}
|
|
316
295
|
}
|
|
296
|
+
handleToggle = (e) => {
|
|
297
|
+
const toggleEvent = e;
|
|
298
|
+
if (toggleEvent.newState === 'open' && !this.isOpen) {
|
|
299
|
+
this.isOpen = true;
|
|
300
|
+
}
|
|
301
|
+
else if (toggleEvent.newState === 'closed' && this.isOpen) {
|
|
302
|
+
this.isOpen = false;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
handleConfirm = () => {
|
|
306
|
+
this.bcmConfirm.emit();
|
|
307
|
+
this.hide();
|
|
308
|
+
};
|
|
309
|
+
handleCancel = () => {
|
|
310
|
+
this.bcmCancel.emit();
|
|
311
|
+
this.hide();
|
|
312
|
+
};
|
|
317
313
|
componentWillLoad() {
|
|
318
314
|
this.popconfirmId = `popconfirm-${Math.random().toString(36).substring(2, 11)}`;
|
|
319
315
|
}
|
|
@@ -330,6 +326,43 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
330
326
|
this.popconfirmRef.removeEventListener('toggle', this.handleToggle);
|
|
331
327
|
}
|
|
332
328
|
}
|
|
329
|
+
popconfirmClass = tv({
|
|
330
|
+
slots: {
|
|
331
|
+
container: 'bcm-ui-element fixed m-0 flex flex-col bg-[--popover-bg] rounded-lg shadow-3 z-[9999]',
|
|
332
|
+
arrow: 'absolute w-3 h-3 bg-[--popover-bg] rotate-45',
|
|
333
|
+
closeBtn: 'absolute flex size-6 items-center justify-center hover:bg-gray-100 rounded-full cursor-pointer text-color-muted',
|
|
334
|
+
header: 'flex items-center pr-8',
|
|
335
|
+
headerLeft: 'flex items-center gap-2',
|
|
336
|
+
title: '!text-color-header font-semibold',
|
|
337
|
+
body: 'flex-1 font-sans text-pretty',
|
|
338
|
+
footer: 'flex flex-row justify-end gap-2',
|
|
339
|
+
},
|
|
340
|
+
variants: {
|
|
341
|
+
size: {
|
|
342
|
+
small: {
|
|
343
|
+
container: 'text-size-4 max-w-64 p-4 gap-4',
|
|
344
|
+
title: 'text-size-5',
|
|
345
|
+
closeBtn: 'top-3 right-3',
|
|
346
|
+
},
|
|
347
|
+
medium: {
|
|
348
|
+
container: 'text-size-5 max-w-80 p-6 gap-6',
|
|
349
|
+
title: 'text-size-6',
|
|
350
|
+
closeBtn: 'top-4 right-4',
|
|
351
|
+
},
|
|
352
|
+
large: {
|
|
353
|
+
container: 'text-size-6 max-w-96 p-8 gap-8',
|
|
354
|
+
title: 'text-size-7',
|
|
355
|
+
closeBtn: 'top-6 right-6',
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
status: {
|
|
359
|
+
info: { headerLeft: 'text-[var(--bcm-ui-color-text-info)]' },
|
|
360
|
+
success: { headerLeft: 'text-[var(--bcm-ui-color-text-success)]' },
|
|
361
|
+
warning: { headerLeft: 'text-[var(--bcm-ui-color-text-warning)]' },
|
|
362
|
+
error: { headerLeft: 'text-[var(--bcm-ui-color-text-error)]' },
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
});
|
|
333
366
|
render() {
|
|
334
367
|
const { container, arrow: arrowClass, header, headerLeft, title, closeBtn, body, footer } = this.popconfirmClass({
|
|
335
368
|
size: this.size,
|
|
@@ -341,7 +374,6 @@ const BcmPopConfirm$1 = /*@__PURE__*/ proxyCustomElement(class BcmPopConfirm ext
|
|
|
341
374
|
const hasHeaderText = Boolean(this.headerText);
|
|
342
375
|
return (h("div", { key: '7329eb6db100b57368ca73b36a2a2ad66b218b8e', class: "inline-block" }, h("slot", { key: '0d775cf4a00b4ef97e8e75e2620ddf420caf43c6', onSlotchange: this.handleSlotChange }), h("div", { key: '19c4c001fbf51b895a45b271365b3a7cb22590bb', ref: el => (this.popconfirmRef = el), id: this.popconfirmId, part: "container", class: container(), popover: "manual", role: "alertdialog", "aria-labelledby": hasHeaderText ? `${this.popconfirmId}-header` : undefined, "aria-describedby": `${this.popconfirmId}-body` }, this.showArrow && h("div", { key: '91aaa976265c10537cea1d0d57d08df27c838645', ref: el => (this.arrowRef = el), part: "arrow", class: arrowClass() }), h("div", { key: '91a049dd52d47d267d11c8e8c628aa417fb40663', class: closeBtn(), onClick: this.handleCancel, role: "button", tabIndex: 0, "aria-label": "Close" }, h("bcm-icon", { key: 'd15fb5922185f246c15e9480c3a4652ef9e96ffa', "icon-name": "far fa-times" })), h("header", { key: 'b62f81fd72a05aa116ecad7614f20645aa85f060', class: header() }, h("div", { key: '226cbb6ac92d294b67eb0c33ed0faea52d56689a', class: headerLeft() }, showStatusIcon && h("bcm-icon", { key: '0e5cd64e8369876b9016af3c9607cdb406828651', "icon-name": statusIcons[this.status] }), hasHeaderText && (h("span", { key: '4a1cf44acf56bc46ad52fda1d1d29da0c838fded', id: `${this.popconfirmId}-header`, class: title() }, this.headerText)), h("slot", { key: '5e159545f0b12d97c9b632653955f636866c2a14', name: "header" }))), h("main", { key: '6e082c73048583a1447dc4fb7c9940a677e7d587', id: `${this.popconfirmId}-body`, part: "body", class: body() }, h("slot", { key: '6d0546a06ca77118d82074fffb9164c4b4f86a5c', name: "body" }, this.description)), h("footer", { key: '4f36400e44847e31d6ceed5fd7f47d35f68af458', part: "footer", class: footer() }, h("slot", { key: '97b85bb7dd3d39790b91e6bffef01f7eb077c2c3', name: "footer" }, h("bcm-button", { key: '8e8b7175a1dd9e069e9cbca7b430fdc1e9a7beab', kind: "outline", size: this.size, onClick: this.handleCancel }, this.cancelText), h("bcm-button", { key: 'ae9daeacaf77c8abfe92951eefe2e885d23eab79', size: this.size, status: this.status, kind: "primary", onClick: this.handleConfirm }, this.confirmText))))));
|
|
343
376
|
}
|
|
344
|
-
get host() { return this; }
|
|
345
377
|
static get watchers() { return {
|
|
346
378
|
"isOpen": ["handleOpenChange"]
|
|
347
379
|
}; }
|