bromcom-ui-next 0.1.13 → 0.1.15
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/bromcom-ui.esm.js +1 -1
- package/dist/bromcom-ui/{p-88d78cdd.entry.js → p-03be08cc.entry.js} +2 -2
- package/dist/bromcom-ui/{p-098c2b77.entry.js → p-0721540b.entry.js} +2 -2
- package/dist/bromcom-ui/{p-352a0465.entry.js → p-1be5f78e.entry.js} +2 -2
- package/dist/bromcom-ui/p-35559656.entry.js +2 -0
- package/dist/bromcom-ui/p-35559656.entry.js.map +1 -0
- package/dist/bromcom-ui/{p-36656795.entry.js → p-404e19f9.entry.js} +2 -2
- package/dist/bromcom-ui/{p-86feadca.entry.js → p-4106560e.entry.js} +2 -2
- package/dist/bromcom-ui/{p-1c2d7a9f.entry.js → p-4149c766.entry.js} +2 -2
- package/dist/bromcom-ui/{p-7e9223c8.entry.js → p-42b485a7.entry.js} +2 -2
- package/dist/bromcom-ui/{p-fd7f1fa0.entry.js → p-42feef7e.entry.js} +2 -2
- package/dist/bromcom-ui/{p-a4148502.entry.js → p-560b2394.entry.js} +2 -2
- package/dist/bromcom-ui/{p-c9b1e4ec.entry.js → p-56f1cec8.entry.js} +2 -2
- package/dist/bromcom-ui/{p-5cb49a5f.entry.js → p-67ceb7f3.entry.js} +2 -2
- package/dist/bromcom-ui/{p-1ad74a16.entry.js → p-77abe8d1.entry.js} +2 -2
- package/dist/bromcom-ui/{p-3ef04b27.entry.js → p-7b93985f.entry.js} +2 -2
- package/dist/bromcom-ui/{p-25ad3dab.entry.js → p-7e97d4e2.entry.js} +2 -2
- package/dist/bromcom-ui/{p-d9dfad58.entry.js → p-7f4cb7a0.entry.js} +2 -2
- package/dist/bromcom-ui/{p-3254a2a8.entry.js → p-842b48ae.entry.js} +2 -2
- package/dist/bromcom-ui/{p-5f8c6436.entry.js → p-8550a2aa.entry.js} +2 -2
- package/dist/bromcom-ui/p-9cb99b5d.entry.js +2 -0
- package/dist/bromcom-ui/{p-a4ee16c5.entry.js.map → p-9cb99b5d.entry.js.map} +1 -1
- package/dist/bromcom-ui/{p-52ae94e5.entry.js → p-aae240d5.entry.js} +2 -2
- package/dist/bromcom-ui/{p-52a20dbc.entry.js → p-adda3b4e.entry.js} +2 -2
- package/dist/bromcom-ui/{p-82ba9870.entry.js → p-cbd2f782.entry.js} +2 -2
- package/dist/bromcom-ui/p-ddf64315.js.map +1 -1
- package/dist/bromcom-ui/{p-a4c27c77.entry.js → p-ea1368b5.entry.js} +2 -2
- package/dist/bromcom-ui/{p-604cb620.entry.js → p-fe7e2cfd.entry.js} +2 -2
- package/dist/cjs/app-globals-e0eef2e9.js.map +1 -1
- package/dist/cjs/bcm-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/bcm-accordion.cjs.entry.js +2 -2
- package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
- package/dist/cjs/bcm-badge.cjs.entry.js +2 -2
- package/dist/cjs/bcm-basic-badge.cjs.entry.js +2 -2
- package/dist/cjs/bcm-button-group.cjs.entry.js +2 -2
- package/dist/cjs/bcm-button_5.cjs.entry.js +73 -60
- package/dist/cjs/bcm-button_5.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/bcm-chip.cjs.entry.js +1 -1
- package/dist/cjs/bcm-divider.cjs.entry.js +1 -1
- package/dist/cjs/bcm-input.cjs.entry.js +2 -2
- package/dist/cjs/bcm-pop-confirm.cjs.entry.js +1 -1
- package/dist/cjs/bcm-popover.cjs.entry.js +1 -1
- package/dist/cjs/bcm-radio-group.cjs.entry.js +2 -2
- package/dist/cjs/bcm-radio.cjs.entry.js +1 -1
- package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +2 -2
- package/dist/cjs/bcm-segmented-picker.cjs.entry.js +2 -2
- package/dist/cjs/bcm-switch.cjs.entry.js +2 -2
- package/dist/cjs/bcm-tabs-content.cjs.entry.js +1 -1
- package/dist/cjs/bcm-tabs-list.cjs.entry.js +1 -1
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +2 -2
- package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +1 -1
- package/dist/cjs/bcm-tabs.cjs.entry.js +1 -1
- package/dist/cjs/bcm-textarea.cjs.entry.js +3 -3
- package/dist/cjs/bcm-tooltip.cjs.entry.js +1 -1
- package/dist/collection/components/accordion/accordion.component.js +2 -2
- package/dist/collection/components/accordion-group/accordion-group.component.js +1 -1
- package/dist/collection/components/alert/alert.component.js +1 -1
- package/dist/collection/components/badge/badge.component.js +2 -2
- package/dist/collection/components/basic-badge/basic-badge.component.js +2 -2
- package/dist/collection/components/button/button.component.js +2 -2
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/button-group/button-group.component.js +2 -2
- package/dist/collection/components/checkbox/checkbox.component.js +1 -1
- package/dist/collection/components/chip/chip.component.js +1 -1
- package/dist/collection/components/divider/divider.component.js +1 -1
- package/dist/collection/components/dropdown/dropdown.component.js +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.component.js +2 -2
- package/dist/collection/components/input/input.component.js +2 -2
- package/dist/collection/components/linked/linked.component.js +67 -54
- package/dist/collection/components/linked/linked.component.js.map +1 -1
- package/dist/collection/components/linked/linked.css +1 -1
- package/dist/collection/components/pop-confirm/pop-confirm.component.js +1 -1
- package/dist/collection/components/popover/popover.component.js +1 -1
- package/dist/collection/components/radio/radio.component.js +1 -1
- package/dist/collection/components/radio-group/radio-group.component.js +2 -2
- package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +2 -2
- package/dist/collection/components/segmented-picker/segmented-picker.component.js +2 -2
- package/dist/collection/components/switch/switch.component.js +2 -2
- package/dist/collection/components/tabs/tabs-content.component.js +1 -1
- package/dist/collection/components/tabs/tabs-list.component.js +1 -1
- package/dist/collection/components/tabs/tabs-trigger.component.js +1 -1
- package/dist/collection/components/tabs/tabs-trigger.css +1 -1
- package/dist/collection/components/tabs/tabs.component.js +1 -1
- package/dist/collection/components/text/text.component.js +1 -1
- package/dist/collection/components/textarea/textarea.component.js +3 -3
- package/dist/collection/components/tooltip/tooltip.component.js +1 -1
- package/dist/components/bcm-accordion-group.js +1 -1
- package/dist/components/bcm-accordion.js +2 -2
- package/dist/components/bcm-alert.js +1 -1
- package/dist/components/bcm-avatar.js +1 -1
- package/dist/components/bcm-badge.js +1 -1
- package/dist/components/bcm-basic-badge.js +2 -2
- package/dist/components/bcm-button-group.js +2 -2
- package/dist/components/bcm-button.js +1 -1
- package/dist/components/bcm-checkbox.js +1 -1
- package/dist/components/bcm-chip.js +1 -1
- package/dist/components/bcm-divider.js +1 -1
- package/dist/components/bcm-dropdown-item.js +2 -2
- package/dist/components/bcm-dropdown.js +4 -4
- package/dist/components/bcm-dropdown.js.map +1 -1
- package/dist/components/bcm-input.js +2 -2
- package/dist/components/bcm-linked.js +1 -1
- package/dist/components/bcm-pop-confirm.js +2 -2
- package/dist/components/bcm-popover.js +1 -1
- package/dist/components/bcm-radio-group.js +2 -2
- package/dist/components/bcm-radio.js +1 -1
- package/dist/components/bcm-segmented-picker-option.js +2 -2
- package/dist/components/bcm-segmented-picker.js +2 -2
- package/dist/components/bcm-switch.js +2 -2
- package/dist/components/bcm-tabs-content.js +1 -1
- package/dist/components/bcm-tabs-list.js +1 -1
- package/dist/components/bcm-tabs-trigger.js +2 -2
- package/dist/components/bcm-tabs-trigger.js.map +1 -1
- package/dist/components/bcm-tabs.js +1 -1
- package/dist/components/bcm-text.js +1 -1
- package/dist/components/bcm-textarea.js +3 -3
- package/dist/components/bcm-tooltip.js +1 -1
- package/dist/components/{p-a83859ff.js → p-39872cdf.js} +67 -54
- package/dist/components/p-39872cdf.js.map +1 -0
- package/dist/components/{p-69f4b010.js → p-4cc3e4d7.js} +3 -3
- package/dist/components/{p-69f4b010.js.map → p-4cc3e4d7.js.map} +1 -1
- package/dist/components/{p-d600acb5.js → p-c7b74f83.js} +4 -4
- package/dist/components/{p-d600acb5.js.map → p-c7b74f83.js.map} +1 -1
- package/dist/esm/app-globals-f7994f55.js.map +1 -1
- package/dist/esm/bcm-accordion-group.entry.js +1 -1
- package/dist/esm/bcm-accordion.entry.js +2 -2
- package/dist/esm/bcm-alert.entry.js +1 -1
- package/dist/esm/bcm-badge.entry.js +2 -2
- package/dist/esm/bcm-basic-badge.entry.js +2 -2
- package/dist/esm/bcm-button-group.entry.js +2 -2
- package/dist/esm/bcm-button_5.entry.js +73 -60
- package/dist/esm/bcm-button_5.entry.js.map +1 -1
- package/dist/esm/bcm-checkbox.entry.js +1 -1
- package/dist/esm/bcm-chip.entry.js +1 -1
- package/dist/esm/bcm-divider.entry.js +1 -1
- package/dist/esm/bcm-input.entry.js +2 -2
- package/dist/esm/bcm-pop-confirm.entry.js +1 -1
- package/dist/esm/bcm-popover.entry.js +1 -1
- package/dist/esm/bcm-radio-group.entry.js +2 -2
- package/dist/esm/bcm-radio.entry.js +1 -1
- package/dist/esm/bcm-segmented-picker-option.entry.js +2 -2
- package/dist/esm/bcm-segmented-picker.entry.js +2 -2
- package/dist/esm/bcm-switch.entry.js +2 -2
- package/dist/esm/bcm-tabs-content.entry.js +1 -1
- package/dist/esm/bcm-tabs-list.entry.js +1 -1
- package/dist/esm/bcm-tabs-trigger.entry.js +2 -2
- package/dist/esm/bcm-tabs-trigger.entry.js.map +1 -1
- package/dist/esm/bcm-tabs.entry.js +1 -1
- package/dist/esm/bcm-textarea.entry.js +3 -3
- package/dist/esm/bcm-tooltip.entry.js +1 -1
- package/dist/types/components/linked/linked.component.d.ts +3 -2
- package/package.json +1 -1
- package/dist/bromcom-ui/p-2f1a832e.entry.js +0 -2
- package/dist/bromcom-ui/p-2f1a832e.entry.js.map +0 -1
- package/dist/bromcom-ui/p-a4ee16c5.entry.js +0 -2
- package/dist/components/p-a83859ff.js.map +0 -1
- /package/dist/bromcom-ui/{p-88d78cdd.entry.js.map → p-03be08cc.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-098c2b77.entry.js.map → p-0721540b.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-352a0465.entry.js.map → p-1be5f78e.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-36656795.entry.js.map → p-404e19f9.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-86feadca.entry.js.map → p-4106560e.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-1c2d7a9f.entry.js.map → p-4149c766.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-7e9223c8.entry.js.map → p-42b485a7.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-fd7f1fa0.entry.js.map → p-42feef7e.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-a4148502.entry.js.map → p-560b2394.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-c9b1e4ec.entry.js.map → p-56f1cec8.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-5cb49a5f.entry.js.map → p-67ceb7f3.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-1ad74a16.entry.js.map → p-77abe8d1.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-3ef04b27.entry.js.map → p-7b93985f.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-25ad3dab.entry.js.map → p-7e97d4e2.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-d9dfad58.entry.js.map → p-7f4cb7a0.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-3254a2a8.entry.js.map → p-842b48ae.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-5f8c6436.entry.js.map → p-8550a2aa.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-52ae94e5.entry.js.map → p-aae240d5.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-52a20dbc.entry.js.map → p-adda3b4e.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-82ba9870.entry.js.map → p-cbd2f782.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-a4c27c77.entry.js.map → p-ea1368b5.entry.js.map} +0 -0
- /package/dist/bromcom-ui/{p-604cb620.entry.js.map → p-fe7e2cfd.entry.js.map} +0 -0
|
@@ -160,7 +160,7 @@ const BcmRadio$1 = /*@__PURE__*/ proxyCustomElement(class BcmRadio extends H {
|
|
|
160
160
|
readonly: this.readonly,
|
|
161
161
|
labelPosition: this.labelPosition,
|
|
162
162
|
});
|
|
163
|
-
return (h("label", { key: '
|
|
163
|
+
return (h("label", { key: '49fcb622640b201f52dd9f39aaae789803a85c73', class: container(), style: this.getRadioStyle() }, h("input", { key: '2c9bb12a06d535504439f8c72524103a109107e7', "aria-label": this.label, role: "radio", "aria-checked": this.checked.toString(), type: "radio", name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, checked: this.checked, class: "appearance-none sr-only", onClick: () => this.handleClick(), onFocus: e => this.bcmFocus.emit(e), onBlur: e => this.bcmBlur.emit(e) }), h("div", { key: '879d950b3885ef9e5a155086869efa5c037e7b1b', class: dotContainer() }, h("div", { key: '62c61bce309b364dbc3dce3d2159210d56249889', class: dot() })), h("span", { key: '277221257d5dc646a195e8361893a83886bbbcef', class: labelClass() }, h("slot", { key: 'bc348844c8722e7c8f119bebd1e726fab50fa650' }, this.label))));
|
|
164
164
|
}
|
|
165
165
|
get host() { return this; }
|
|
166
166
|
static get style() { return BcmRadioStyle0; }
|
|
@@ -92,11 +92,11 @@ const BcmSegmentedPickerOption$1 = /*@__PURE__*/ proxyCustomElement(class BcmSeg
|
|
|
92
92
|
render() {
|
|
93
93
|
const size = this.size || this.getSizeFromParent();
|
|
94
94
|
const disabled = this.isDisabled();
|
|
95
|
-
return (h(Host, { key: '
|
|
95
|
+
return (h(Host, { key: '1dbccef734760bfce79b3349e3443edc81eb18c8' }, h("button", { key: 'bd45f4fe085df93346f1c471ee25f41f3d1f599c', class: this.optionClass({
|
|
96
96
|
size,
|
|
97
97
|
selected: this.selected,
|
|
98
98
|
disabled,
|
|
99
|
-
}), onClick: this.handleClick, disabled: disabled, type: "button" }, h("slot", { key: '
|
|
99
|
+
}), onClick: this.handleClick, disabled: disabled, type: "button" }, h("slot", { key: '138c4b9ab99a738ec8b69726a44961ba2aaf0cdc' }, this.label))));
|
|
100
100
|
}
|
|
101
101
|
get host() { return this; }
|
|
102
102
|
static get style() { return BcmSegmentedPickerOptionStyle0; }
|
|
@@ -126,11 +126,11 @@ const BcmSegmentedPicker$1 = /*@__PURE__*/ proxyCustomElement(class BcmSegmented
|
|
|
126
126
|
}, 10);
|
|
127
127
|
}
|
|
128
128
|
render() {
|
|
129
|
-
return (h(Host, { key: '
|
|
129
|
+
return (h(Host, { key: '571801e9cda644fdeefdf11f33789051c0f70145' }, h("div", { key: '0dde275a03d67eab8acfe4fab419f59bbabcf0f2', class: this.segmentedClass({
|
|
130
130
|
size: this.size,
|
|
131
131
|
fullWidth: this.fullWidth,
|
|
132
132
|
disabled: this.disabled,
|
|
133
|
-
}) }, h("div", { key: '
|
|
133
|
+
}) }, h("div", { key: '87a53fc461965d4fc29b16e20585b0db2c4fe459', class: "segmented-indicator absolute bg-[--bcm-ui-color-background-base-default] z-0 rounded", style: this.indicatorStyles }), h("div", { key: 'a803b9207b514760ba16c004aa33836379797fd9', class: "segmented-options flex relative z-10 w-full" }, h("slot", { key: '7b5df35c4d424ab84cfebac564a50b96dcbd933b' })))));
|
|
134
134
|
}
|
|
135
135
|
get host() { return this; }
|
|
136
136
|
static get watchers() { return {
|
|
@@ -170,12 +170,12 @@ const BcmSwitch$1 = /*@__PURE__*/ proxyCustomElement(class BcmSwitch extends H {
|
|
|
170
170
|
});
|
|
171
171
|
const ariaAttributes = Object.assign({ 'role': 'switch', 'aria-checked': this.checked.toString(), 'aria-disabled': this.disabled.toString(), 'aria-readonly': this.readonly.toString() }, (this.required && { 'aria-required': 'true' }));
|
|
172
172
|
const tabIndexAttr = !this.readonly && !this.disabled ? { tabindex: '0' } : {};
|
|
173
|
-
return (h("div", { key: '
|
|
173
|
+
return (h("div", { key: '78be11da3cff01c755620ffc913a1acf714ff04d', class: base() }, h("label", { key: '9eeecd62889eb6c2aa5b3184682bda4b0d36f04a', class: switchWrapper(), style: this.switchStyle() }, h("input", { key: '9b22c1f3dcddbf24db21fd86347773f739abc731', id: this.switchId, type: "checkbox", class: "hidden peer", checked: this.checked, name: this.name, value: this.value, disabled: this.disabled, readOnly: this.readonly, required: this.required, onChange: () => this.toggleSwitch() }), this.label && h("span", { key: '829c07905b163187b5802be3145e02976b8b8fcc', class: label() }, h("slot", { key: '45e44bdba10ea0695d5ce346283827dfe9f8575d' }, this.label)), h("label", Object.assign({ key: '3b918162f05b833c339b46bc3d3bc07f4e86c8bd', htmlFor: this.switchId, class: dotContainer() }, tabIndexAttr, ariaAttributes, { onKeyDown: event => {
|
|
174
174
|
if ((event.key === 'Enter' || event.key === ' ') && !this.readonly && !this.disabled) {
|
|
175
175
|
event.preventDefault();
|
|
176
176
|
this.toggleSwitch();
|
|
177
177
|
}
|
|
178
|
-
} }), h("div", { key: '
|
|
178
|
+
} }), h("div", { key: 'c77f5b63686eeebe72dab50b2e00d5cfec7ddecf', class: dot() }))), this.error && this.caption && h("span", { key: 'c872a7d7fba3a650341cb230c7377b32f43c937d', class: caption() }, this.caption), h("slot", { key: '36c8458eefd92f6889951c36f46d84f3675ba193', name: "caption" })));
|
|
179
179
|
}
|
|
180
180
|
get el() { return this; }
|
|
181
181
|
static get style() { return BcmSwitchStyle0; }
|
|
@@ -10,7 +10,7 @@ const BcmTabsContent$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsContent e
|
|
|
10
10
|
this.__attachShadow();
|
|
11
11
|
}
|
|
12
12
|
render() {
|
|
13
|
-
return (h(Host, { key: '
|
|
13
|
+
return (h(Host, { key: '99de2fdc1c528dd7287d0e49858cc04b7207c244', role: "tabpanel" }, h("slot", { key: '48fe2edf256c352892714aba90468e43e7deff4a' })));
|
|
14
14
|
}
|
|
15
15
|
static get style() { return BcmTabsContentStyle0; }
|
|
16
16
|
}, [1, "bcm-tabs-content", {
|
|
@@ -31,7 +31,7 @@ const BcmTabsList$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsList extends
|
|
|
31
31
|
}
|
|
32
32
|
render() {
|
|
33
33
|
const { container, inkbar, tabList } = this.class();
|
|
34
|
-
return (h("div", { key: '
|
|
34
|
+
return (h("div", { key: '8965018c5da77378a119c889044088caf1ff2659', class: container(), slot: "tabs-list" }, h("div", { key: '83b1220210909270e5b9b30e827bade4ddf7059f', class: inkbar() }), h("div", { key: '0a8c25220e73a2a2054dad1395e557fb5eadea5c', class: tabList(), role: "tablist" }, h("slot", { key: '4c5574f602a3721b9d1437b39b1b1ff54e735daf' }))));
|
|
35
35
|
}
|
|
36
36
|
static get style() { return BcmTabsListStyle0; }
|
|
37
37
|
}, [1, "bcm-tabs-list"]);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-30135590.js';
|
|
2
2
|
import { c as ce } from './p-5fcf77f9.js';
|
|
3
3
|
|
|
4
|
-
const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.flex{display:flex}.h-\\[2px\\]{height:2px}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.border-none{border-style:none}.bg-\\[--bcm-ui-color-text-default\\]{background-color:var(--bcm-ui-color-text-default)}.bg-\\[--bcm-ui-color-text-disabled\\]{background-color:var(--bcm-ui-color-text-disabled)}.bg-color-primary{background-color:var(--bcm-ui-color-background-primary-default)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-center{text-align:center}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:text-color-primary:hover{color:var(--bcm-ui-color-text-primary)}";
|
|
4
|
+
const tabsTriggerCss = ".relative{position:relative}.block{display:block}:host{display:block;position:relative;width:100%}.bcm-ui-element{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.static{position:static}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.flex{display:flex}.h-\\[2px\\]{height:2px}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.border-none{border-style:none}.bg-\\[--bcm-ui-color-text-default\\]{background-color:var(--bcm-ui-color-text-default)}.bg-\\[--bcm-ui-color-text-disabled\\]{background-color:var(--bcm-ui-color-text-disabled)}.bg-color-primary{background-color:var(--bcm-ui-color-background-primary-default)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-center{text-align:center}.text-size-4{font-size:var(--bcm-ui-font-size-4,14px);line-height:var(--bcm-ui-line-height-4,20px)}.text-size-5{font-size:var(--bcm-ui-font-size-5,16px);line-height:var(--bcm-ui-line-height-5,24px)}.text-size-6{font-size:var(--bcm-ui-font-size-6,18px);line-height:var(--bcm-ui-line-height-6,24px)}.font-medium{font-weight:500}.text-color-disabled{color:var(--bcm-ui-color-text-disabled)}.text-color-primary{color:var(--bcm-ui-color-text-primary)}.shadow{--tw-shadow:var(--bcm-ui-box-shadow-default);--tw-shadow-colored:var(--bcm-ui-box-shadow-default);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\\:text-color-primary:hover{color:var(--bcm-ui-color-text-primary)}";
|
|
5
5
|
const BcmTabsTriggerStyle0 = tabsTriggerCss;
|
|
6
6
|
|
|
7
7
|
const BcmTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsTrigger extends H {
|
|
@@ -79,7 +79,7 @@ const BcmTabsTrigger$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabsTrigger e
|
|
|
79
79
|
active: this.active,
|
|
80
80
|
disabled: this.disabled,
|
|
81
81
|
});
|
|
82
|
-
return (h(Host, { key: '
|
|
82
|
+
return (h(Host, { key: '2d8e6c966162facbc2c34aeecdd32d0b69024a3a', role: "tab", "aria-selected": this.active.toString(), "aria-disabled": this.disabled }, h("button", { key: '258b41f80ef9ab8b258e27aca6f44f1888dc7da7', class: tab(), disabled: this.disabled, part: "tab", onClick: () => this.handleClick() }, h("slot", { key: '2d98c9a3e6c85e9bbb9803c47934cc0b31b5a736' })), h("div", { key: 'bd48f01c90894e1a1553e1de2bb16c24239ec9fd', class: borderLine() })));
|
|
83
83
|
}
|
|
84
84
|
get el() { return this; }
|
|
85
85
|
static get style() { return BcmTabsTriggerStyle0; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"bcm-tabs-trigger.js","mappings":";;;AAAA,MAAM,cAAc,GAAG
|
|
1
|
+
{"file":"bcm-tabs-trigger.js","mappings":";;;AAAA,MAAM,cAAc,GAAG,u+DAAu+D,CAAC;AAC//D,6BAAe,cAAc;;MCWhBA,gBAAc;IAL3B;;;;;;;;QAqBI,WAAM,GAAY,KAAK,CAAC;;;;QAMxB,SAAI,GAAiC,QAAQ,CAAC;;;;QAM9C,aAAQ,GAAY,KAAK,CAAC;;;;QAyBlB,UAAK,GAAGC,EAAE,CACd;YACI,KAAK,EAAE;gBACH,GAAG,EAAE,gKAAgK;gBACrK,UAAU,EAAE,iGAAiG;aAChH;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE;oBACF,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;oBACnC,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE;oBACtC,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;iBACtC;gBACD,MAAM,EAAE;oBACJ,IAAI,EAAE;wBACF,GAAG,EAAE,oBAAoB;qBAC5B;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,YAAY;qBACpB;iBACJ;gBACD,QAAQ,EAAE;oBACN,IAAI,EAAE;wBACF,GAAG,EAAE,wCAAwC;wBAC7C,UAAU,EAAE,mCAAmC;qBAClD;oBACD,KAAK,EAAE;wBACH,GAAG,EAAE,oDAAoD;wBACzD,UAAU,EAAE,kCAAkC;qBACjD;iBACJ;aACJ;YACD,eAAe,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,KAAK;aAClB;SACJ,EACD;YACI,OAAO,EAAE,KAAK;SACjB,CACJ,CAAC;KAiBL;;;;;IAjEW,WAAW;QACf,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;IA+CD,MAAM;QACF,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;QACH,QACI,EAAC,IAAI,qDAAC,IAAI,EAAC,KAAK,mBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAiB,IAAI,CAAC,QAAQ,IAChF,+DAAQ,KAAK,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAC,KAAK,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,IACvF,8DAAQ,CACH,EACT,4DAAK,KAAK,EAAE,UAAU,EAAE,GAAQ,CAC7B,EACT;KACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["BcmTabsTrigger","tv"],"sources":["src/components/tabs/tabs-trigger.css?tag=bcm-tabs-trigger&encapsulation=shadow","src/components/tabs/tabs-trigger.component.tsx"],"sourcesContent":[":host {\n position: relative;\n display: block;\n width: 100%;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter, ComponentInterface } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @description Tab trigger component that functions as a clickable tab button\n * @slot - Default slot for tab label content\n */\n@Component({\n tag: 'bcm-tabs-trigger',\n styleUrl: 'tabs-trigger.css',\n shadow: true,\n})\nexport class BcmTabsTrigger implements ComponentInterface {\n /**\n * Reference to the host element\n */\n @Element() el: HTMLElement;\n\n /**\n * Unique identifier value for the tab\n */\n @Prop({ reflect: true })\n value: string;\n\n /**\n * Whether the tab is currently active\n */\n @Prop({ reflect: true })\n active: boolean = false;\n\n /**\n * Size of the tab\n */\n @Prop({ reflect: true })\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true })\n disabled: boolean = false;\n\n /**\n * Event emitted when this tab is selected\n */\n @Event({\n composed: false,\n bubbles: false,\n cancelable: true,\n eventName: 'bcmTabSelected',\n })\n bcmTabSelected: EventEmitter<string>;\n\n /**\n * Handles click events on the tab\n * Emits bcmTabSelected event with tab value if not disabled\n */\n private handleClick() {\n if (this.disabled) return;\n this.bcmTabSelected.emit(this.value);\n }\n\n /**\n * Tailwind variants configuration for styling\n */\n private class = tv(\n {\n slots: {\n tab: 'bcm-ui-element text-center flex flex-row justify-center items-center font-medium transition-all duration-200 ease-in-out py-1 px-3 w-full bg-white border-none',\n borderLine: 'bottom-0 w-full left-0 right-0 h-[2px] bg-color-primary transition-all duration-200 ease-in-out',\n },\n variants: {\n size: {\n small: { tab: 'text-size-4 gap-2' },\n medium: { tab: 'text-size-5 gap-2.5' },\n large: { tab: 'text-size-6 gap-3' },\n },\n active: {\n true: {\n tab: 'text-color-primary',\n },\n false: {\n tab: 'text-color',\n },\n },\n disabled: {\n true: {\n tab: 'cursor-not-allowed text-color-disabled',\n borderLine: 'bg-[--bcm-ui-color-text-disabled]',\n },\n false: {\n tab: 'cursor-pointer text-color hover:text-color-primary',\n borderLine: 'bg-[--bcm-ui-color-text-default]',\n },\n },\n },\n defaultVariants: {\n size: 'medium',\n active: false,\n disabled: false,\n },\n },\n {\n twMerge: false,\n },\n );\n\n render() {\n const { tab, borderLine } = this.class({\n size: this.size,\n active: this.active,\n disabled: this.disabled,\n });\n return (\n <Host role=\"tab\" aria-selected={this.active.toString()} aria-disabled={this.disabled}>\n <button class={tab()} disabled={this.disabled} part=\"tab\" onClick={() => this.handleClick()}>\n <slot />\n </button>\n <div class={borderLine()}></div>\n </Host>\n );\n }\n}"],"version":3}
|
|
@@ -195,7 +195,7 @@ const BcmTabs$1 = /*@__PURE__*/ proxyCustomElement(class BcmTabs extends H {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
render() {
|
|
198
|
-
return (h(Host, { key: '
|
|
198
|
+
return (h(Host, { key: '90a1296c412a53c936691176b1d1e4feb1459a4d' }, h("div", { key: 'bfb23bf3b9bdb94aefab65541a0b3eb0423b726b', class: this.tabClass() }, h("slot", { key: 'fd4a8809d06c9c155f2d2f87caa1c55087f423f7', name: "tabs-list" }), h("slot", { key: '218450d64bd1cf715581e0a17070b88211e81d9f' }))));
|
|
199
199
|
}
|
|
200
200
|
get el() { return this; }
|
|
201
201
|
static get watchers() { return {
|
|
@@ -114,7 +114,7 @@ const BcmText$1 = /*@__PURE__*/ proxyCustomElement(class BcmText extends H {
|
|
|
114
114
|
const Tag = variantTagMap[this.variant];
|
|
115
115
|
const variantClass = this.getTextClass(this.variant, this.size);
|
|
116
116
|
const overflowClass = this.getOverflowClass((_a = this.overflow) !== null && _a !== void 0 ? _a : false);
|
|
117
|
-
return (h(Tag, { key: '
|
|
117
|
+
return (h(Tag, { key: 'ef2836e00bfbb1dd406179f403720e013eeb6239', class: classNames('bcm-text appearance-none m-0 p-0', variantClass, overflowClass), part: "text" }, h("slot", { key: 'b707cba3afdcb3892a4fa0d3ea22daefa4b7952a' }, this.text)));
|
|
118
118
|
}
|
|
119
119
|
static get style() { return BcmTextStyle0; }
|
|
120
120
|
}, [1, "bcm-text", {
|
|
@@ -273,14 +273,14 @@ const BcmTextarea$1 = /*@__PURE__*/ proxyCustomElement(class BcmTextarea extends
|
|
|
273
273
|
disabled: this.disabled,
|
|
274
274
|
focused: this.isFocused,
|
|
275
275
|
});
|
|
276
|
-
return (h("div", { key: '
|
|
276
|
+
return (h("div", { key: '84e5a1c974ab1998170232ef63f58a1cf967beee', class: "bcm-ui-element" }, this.label && (h("label", { key: '3d3bd4c4d65307917aeb5f4175cd3e09e7acd2d3', class: classNames('textarea-label font-medium', {
|
|
277
277
|
'text-color-label': !this.disabled,
|
|
278
278
|
'text-color-disabled': this.disabled,
|
|
279
279
|
}, {
|
|
280
280
|
'text-size-3': this.size === 'small',
|
|
281
281
|
'text-size-4': this.size === 'medium',
|
|
282
282
|
'text-size-5': this.size === 'large',
|
|
283
|
-
}), htmlFor: textareaId }, h("slot", { key: '
|
|
283
|
+
}), htmlFor: textareaId }, h("slot", { key: '5262a6ebe929e326355e4cf18e47db49e8350b05', name: "label" }, this.label), this.required && h("span", { key: '42205548abefadd715eaafdcad4031effc71a4c4' }, "*"))), h("div", { key: 'e7305ad7b923e27b63b518a45bd21470214db4d2', class: base() }, h("textarea", { key: '276dbfa0caea27960607f29ced885ca557519e95', ref: el => (this.textareaRef = el), id: textareaId, class: textareaClass(), name: this.name, rows: this.rows, cols: this.cols, disabled: this.disabled, readonly: this.readonly, required: this.required, placeholder: this.placeholder, minLength: this.minLength, maxLength: this.maxLength, "aria-invalid": this.status === 'error', "aria-required": this.required, "aria-labelledby": this.labelledby, "aria-describedby": this.describedby, value: this.value, onInput: event => {
|
|
284
284
|
const target = event.target;
|
|
285
285
|
this.value = target.value;
|
|
286
286
|
this.bcmInput.emit(event);
|
|
@@ -288,7 +288,7 @@ const BcmTextarea$1 = /*@__PURE__*/ proxyCustomElement(class BcmTextarea extends
|
|
|
288
288
|
if (this.autoGrow) {
|
|
289
289
|
this.adjustHeight();
|
|
290
290
|
}
|
|
291
|
-
}, onChange: this.onChange, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, onKeyUp: this.onKeyUp }), this.showCounter && (h("div", { key: '
|
|
291
|
+
}, onChange: this.onChange, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, onKeyUp: this.onKeyUp }), this.showCounter && (h("div", { key: 'ec27b73083d38acf3a7814c0ad6dfa3d48972302', class: counterText() }, this.value.length, this.maxLength ? `/${this.maxLength}` : ''))), (this.captionText || this.internalErrorMessage || this.validationMessage) && (h("div", { key: '34bea9b1ba9edf75f569668b0ea93796d517f312', class: classNames('textarea-caption-text font-regular mt-1', {
|
|
292
292
|
'text-[--bcm-ui-color-text-caption]': !this.disabled && this.internalStatus === 'default',
|
|
293
293
|
'text-[--bcm-ui-color-text-error]': !this.disabled && (this.internalStatus === 'error' || !this.isValid),
|
|
294
294
|
'text-[--bcm-ui-color-text-success]': !this.disabled && this.internalStatus === 'success',
|
|
@@ -174,7 +174,7 @@ const Tooltip = /*@__PURE__*/ proxyCustomElement(class Tooltip extends H {
|
|
|
174
174
|
size: this.size,
|
|
175
175
|
isOpen: this.open,
|
|
176
176
|
});
|
|
177
|
-
return (h("div", { key: '
|
|
177
|
+
return (h("div", { key: '5a1c6f133d30fa10beac54fafd9f890cf359ff9c', class: "relative" }, h("slot", { key: '5f6b49c72c789a214b506c653205757b3b331913', onSlotchange: () => this.handleSlotChange() }), h("div", { key: '0c91d8ed31a3ca64dd2ae3f15a89438083fcad17', role: "tooltip", class: tooltip(), ref: (el) => (this.tooltipElement = el), part: "tooltip" }, h("div", { key: 'a0f68b67b517b4890d9774d117a54722119916f5', class: arrow(), ref: (el) => (this.arrowElement = el), part: "arrow" }), h("slot", { key: '3ae9d5e6694faf19712bb8eb58452a48df49d382', name: "tooltip" }, this.message))));
|
|
178
178
|
}
|
|
179
179
|
get el() { return this; }
|
|
180
180
|
static get style() { return BcmTooltipStyle0; }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { p as proxyCustomElement, H, c as createEvent, h } from './p-30135590.js';
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-30135590.js';
|
|
2
2
|
import { a as autoUpdate, o as offset, f as flip, s as shift, c as computePosition } from './p-50133556.js';
|
|
3
3
|
|
|
4
|
-
const linkedCss = ".absolute{position:absolute}.relative{position:relative}.block{display:block}.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))}.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)}
|
|
4
|
+
const linkedCss = ".absolute{position:absolute}.relative{position:relative}.block{display:block}.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))}.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)}bcm-linked{display:block;position:relative}bcm-linked[append-to-body]{display:none}.floating-content{min-width:-moz-max-content;min-width:max-content;transition:opacity .2s ease,visibility .2s ease,transform .2s ease;will-change:transform,opacity}.floating-visible{animation:fadeInScale .2s ease-out}.floating-hidden{display:none!important;pointer-events:none}.floating-wrapper{position:relative;z-index:1}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.floating-arrow{z-index:-1}.floating-arrow,.floating-arrow:before{height:10px;position:absolute;width:10px}.floating-arrow:before{background:#fff;border:1px solid #e2e8f0;content:\"\";transform:rotate(45deg)}.arrow-top{bottom:-5px}.arrow-bottom,.arrow-top{left:50%;transform:translateX(-50%)}.arrow-bottom{top:-5px}.arrow-left{right:-5px}.arrow-left,.arrow-right{top:50%;transform:translateY(-50%)}.arrow-right{left:-5px}.arrow-top:before{border-bottom:0;border-right:0}.arrow-bottom:before{border-left:0;border-top:0}.arrow-left:before{border-right:0;border-top:0}.arrow-right:before{border-bottom:0;border-left:0}@media (max-width:768px){.floating-content{max-height:calc(100vh - 32px);max-width:calc(100vw - 32px)}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.hidden{display:none}.resize{resize:both}.blur{--tw-blur:blur(8px);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)}.flex{display:flex}.max-h-64{max-height:16rem}.w-full{width:100%}.min-w-10{min-width:2.5rem}.max-w-64{max-width:16rem}.flex-col{flex-direction:column}.items-center{align-items:center}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--bcm-ui-border-radius-lg,8px)}.bg-color-basic-panel{background-color:var(--bcm-ui-color-background-basic-panel)}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.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}";
|
|
5
5
|
const BcmLinkedStyle0 = linkedCss;
|
|
6
6
|
|
|
7
7
|
const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
@@ -84,12 +84,19 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
84
84
|
this.bcmHidden.emit();
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
componentDidLoad() {
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
async componentDidLoad() {
|
|
88
|
+
// Wait for render
|
|
89
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
90
|
+
this.floatingEl = this.host.querySelector('.floating-content');
|
|
91
|
+
if (this.floatingEl) {
|
|
90
92
|
this.isReady = true;
|
|
91
93
|
this.connectTarget();
|
|
92
|
-
|
|
94
|
+
this.setupFloatingObserver();
|
|
95
|
+
console.log('✅ bcm-linked initialized successfully');
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.error('❌ Could not find .floating-content element');
|
|
99
|
+
}
|
|
93
100
|
}
|
|
94
101
|
disconnectedCallback() {
|
|
95
102
|
var _a, _b;
|
|
@@ -97,16 +104,9 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
97
104
|
this.clearTimeouts();
|
|
98
105
|
(_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
99
106
|
(_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
|
100
|
-
// Restore
|
|
101
|
-
if (this.appendToBody && this.floatingEl && this.
|
|
102
|
-
|
|
103
|
-
if (this.originalNextSibling) {
|
|
104
|
-
this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
this.originalParent.appendChild(this.floatingEl);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
107
|
+
// Restore element to original position if component is destroyed while in portal
|
|
108
|
+
if (this.appendToBody && this.floatingEl && this.originalParent) {
|
|
109
|
+
this.originalParent.appendChild(this.floatingEl);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
connectTarget() {
|
|
@@ -208,12 +208,23 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
208
208
|
async updatePosition() {
|
|
209
209
|
if (!this.targetEl || !this.floatingEl || !this.isVisible)
|
|
210
210
|
return;
|
|
211
|
+
// Use autoPlacement only for bottom-start (dropdown default)
|
|
212
|
+
// For other placements, respect the manual placement with flip fallback
|
|
213
|
+
// const useAutoPlacement = this.placement === 'bottom-start';
|
|
211
214
|
const middleware = [
|
|
212
215
|
offset(this.offset),
|
|
216
|
+
// useAutoPlacement
|
|
217
|
+
// ? autoPlacement({
|
|
218
|
+
// allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],
|
|
219
|
+
// boundary: document.body,
|
|
220
|
+
// })
|
|
221
|
+
// :
|
|
213
222
|
flip({
|
|
214
|
-
fallbackPlacements: ['top-start', 'bottom-start', '
|
|
223
|
+
fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],
|
|
224
|
+
}),
|
|
225
|
+
shift({
|
|
226
|
+
padding: 8,
|
|
215
227
|
}),
|
|
216
|
-
shift({ padding: 8 }),
|
|
217
228
|
];
|
|
218
229
|
const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {
|
|
219
230
|
placement: this.placement,
|
|
@@ -245,16 +256,15 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
245
256
|
if (this.disabled || this.isVisible)
|
|
246
257
|
return;
|
|
247
258
|
this.bcmShow.emit();
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
this.originalParent = this.floatingEl.parentElement;
|
|
253
|
-
this.originalNextSibling = this.floatingEl.nextElementSibling;
|
|
254
|
-
// Move the actual element to body (preserves all content including Angular components)
|
|
255
|
-
this.floatingEl.setAttribute('data-floating-portal', 'true');
|
|
259
|
+
// Portalling: Move the floating element to the body
|
|
260
|
+
if (this.appendToBody && this.floatingEl) {
|
|
261
|
+
this.originalParent = this.floatingEl.parentNode;
|
|
262
|
+
this.originalNextSibling = this.floatingEl.nextSibling;
|
|
256
263
|
document.body.appendChild(this.floatingEl);
|
|
257
264
|
}
|
|
265
|
+
this.isVisible = true;
|
|
266
|
+
// Use requestAnimationFrame to ensure the element is visible before positioning
|
|
267
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
258
268
|
await this.updatePosition();
|
|
259
269
|
}
|
|
260
270
|
async hide() {
|
|
@@ -262,20 +272,16 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
262
272
|
return;
|
|
263
273
|
this.bcmHide.emit();
|
|
264
274
|
this.isVisible = false;
|
|
265
|
-
// Restore element to original position
|
|
266
|
-
if (this.appendToBody && this.floatingEl && this.
|
|
267
|
-
this.
|
|
268
|
-
|
|
269
|
-
if (this.originalNextSibling) {
|
|
270
|
-
this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
this.originalParent.appendChild(this.floatingEl);
|
|
274
|
-
}
|
|
275
|
+
// Portalling: Restore the floating element to its original position
|
|
276
|
+
if (this.appendToBody && this.floatingEl && this.originalParent) {
|
|
277
|
+
if (this.originalNextSibling) {
|
|
278
|
+
this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
|
|
275
279
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
280
|
+
else {
|
|
281
|
+
this.originalParent.appendChild(this.floatingEl);
|
|
282
|
+
}
|
|
283
|
+
this.originalParent = undefined;
|
|
284
|
+
this.originalNextSibling = undefined;
|
|
279
285
|
}
|
|
280
286
|
if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {
|
|
281
287
|
this.floatingEl.parentNode.removeChild(this.floatingEl);
|
|
@@ -292,6 +298,17 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
292
298
|
async updatePositioning() {
|
|
293
299
|
await this.updatePosition();
|
|
294
300
|
}
|
|
301
|
+
setupFloatingObserver() {
|
|
302
|
+
if (!this.floatingEl)
|
|
303
|
+
return;
|
|
304
|
+
// Observe floating element size changes for position updates
|
|
305
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
306
|
+
if (this.isVisible) {
|
|
307
|
+
this.updatePosition();
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
this.resizeObserver.observe(this.floatingEl);
|
|
311
|
+
}
|
|
295
312
|
render() {
|
|
296
313
|
const floatingClasses = {
|
|
297
314
|
'floating-content': true,
|
|
@@ -300,20 +317,16 @@ const BcmLinked = /*@__PURE__*/ proxyCustomElement(class BcmLinked extends H {
|
|
|
300
317
|
'floating-with-arrow': this.arrow,
|
|
301
318
|
'floating-destroy-on-hide': this.destroyOnHide,
|
|
302
319
|
};
|
|
303
|
-
return
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
} }, this.arrow && h("div", { key: '6a25f85392fd3031a52f3f3be53263917adb61c8', class: "floating-arrow" }), h("div", { key: '0e1295e4f9b9764971689d94fa21e9c2b0dcefea', class: "floating-wrapper" }, h("slot", { key: '0b5d6e6cf9ffa8262a6fd9cc7c1b9bd46029c220' }))),
|
|
314
|
-
// Hidden content holder for slot fallback
|
|
315
|
-
h("div", { key: '66f2dd9882f4b1870214db30c8026073c86ad137', style: { display: 'none' } }, h("slot", { key: 'ea0c9eb10e96a65a3af21a615f5c7df939f2717c', name: "fallback" })),
|
|
316
|
-
];
|
|
320
|
+
return (h(Host, { key: 'f5835cc1b6044476e66402d23a3becf18d3f2049' }, h("div", { key: '2c7f92bbe85bc938a767734ef4b27702247fb390', class: floatingClasses, style: {
|
|
321
|
+
position: 'fixed',
|
|
322
|
+
top: '0px',
|
|
323
|
+
left: '0px',
|
|
324
|
+
zIndex: this.zIndex.toString(),
|
|
325
|
+
display: this.isVisible ? 'block' : 'none',
|
|
326
|
+
visibility: this.isVisible ? 'visible' : 'hidden',
|
|
327
|
+
opacity: this.isVisible ? '1' : '0',
|
|
328
|
+
pointerEvents: this.isVisible ? 'auto' : 'none',
|
|
329
|
+
} }, this.arrow && h("div", { key: 'f6eedac02b29b3ca00a9a84eea940ac89089f30c', class: "floating-arrow" }), h("div", { key: '7cb19f085de1d77a41fd9897be90999e78a0a54d', class: "floating-wrapper" }, h("slot", { key: 'a4b4289642850e3c2f7f27771b3d28bc41c8248a' }))), h("div", { key: '61cd7af9a4a47c87c308e1e67f96efb987c97312', style: { display: 'none' } }, h("slot", { key: '7160df275f5c7c66733158f95266598d0d207a17', name: "fallback" }))));
|
|
317
330
|
}
|
|
318
331
|
get host() { return this; }
|
|
319
332
|
static get watchers() { return {
|
|
@@ -363,4 +376,4 @@ defineCustomElement();
|
|
|
363
376
|
|
|
364
377
|
export { BcmLinked as B, defineCustomElement as d };
|
|
365
378
|
|
|
366
|
-
//# sourceMappingURL=p-
|
|
379
|
+
//# sourceMappingURL=p-39872cdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-39872cdf.js","mappings":"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","names":[],"sources":["src/components/linked/linked.css?tag=bcm-linked","src/components/linked/linked.component.tsx"],"sourcesContent":["bcm-linked {\n display: block;\n position: relative;\n}\nbcm-linked[append-to-body] {\n display: none;\n}\n\n.floating-content {\n min-width: max-content;\n transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;\n will-change: transform, opacity;\n}\n\n.floating-visible {\n animation: fadeInScale 0.2s ease-out;\n}\n\n.floating-hidden {\n display: none !important;\n pointer-events: none;\n}\n\n.floating-wrapper {\n position: relative;\n z-index: 1;\n}\n\n/* Animations */\n@keyframes fadeInScale {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-5px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* Arrow Styles */\n.floating-arrow {\n position: absolute;\n width: 10px;\n height: 10px;\n z-index: -1;\n}\n\n.floating-arrow::before {\n content: '';\n position: absolute;\n width: 10px;\n height: 10px;\n background: white;\n border: 1px solid #e2e8f0;\n transform: rotate(45deg);\n}\n\n/* Arrow positioning based on placement */\n.arrow-top {\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-bottom {\n top: -5px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.arrow-left {\n right: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.arrow-right {\n left: -5px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Arrow border fix for bordered popups */\n.arrow-top::before {\n border-bottom: 0;\n border-right: 0;\n}\n\n.arrow-bottom::before {\n border-top: 0;\n border-left: 0;\n}\n\n.arrow-left::before {\n border-top: 0;\n border-right: 0;\n}\n\n.arrow-right::before {\n border-bottom: 0;\n border-left: 0;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .floating-content {\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n }\n}\n","import { Component, ComponentInterface, Prop, Element, State, h, Event, EventEmitter, Watch, Method, Host } from '@stencil/core';\nimport { computePosition, shift, offset, autoUpdate, flip, type Placement } from '@floating-ui/dom';\n\nexport type TriggerType = 'hover' | 'click' | 'focus' | 'manual';\n\n@Component({\n tag: 'bcm-linked',\n styleUrl: 'linked.css',\n shadow: false,\n})\nexport class BcmLinked implements ComponentInterface {\n @Element() host: HTMLElement;\n\n // Target configuration\n @Prop({ reflect: true, attribute: 'target-id' }) targetId?: string;\n @Prop() targetElement?: HTMLElement;\n\n // Trigger configuration\n @Prop() trigger: TriggerType = 'click';\n @Prop() placement: Placement = 'bottom-start';\n\n // Timing configuration\n @Prop() showDelay: number = 0;\n @Prop() hideDelay: number = 0;\n\n // Positioning configuration\n @Prop() offset: number = 8;\n @Prop() arrow: boolean = false;\n @Prop() disabled: boolean = false;\n\n // Style configuration\n @Prop() zIndex: number = 1000;\n @Prop() appendToBody: boolean = false;\n @Prop() destroyOnHide: boolean = false;\n\n // State\n @State() isVisible: boolean = false;\n @State() isReady: boolean = false;\n\n // Events\n @Event() bcmShow: EventEmitter<void>;\n @Event() bcmHide: EventEmitter<void>;\n @Event() bcmShown: EventEmitter<void>;\n @Event() bcmHidden: EventEmitter<void>;\n\n // Private properties\n private floatingEl?: HTMLElement;\n private targetEl?: HTMLElement;\n private showTimeout?: NodeJS.Timeout;\n private hideTimeout?: NodeJS.Timeout;\n private cleanup?: () => void;\n private clickOutsideHandler?: (e: MouseEvent) => void;\n private resizeObserver?: ResizeObserver;\n private originalParent?: Node;\n private originalNextSibling?: Node;\n\n // Watch for changes\n @Watch('targetId')\n @Watch('targetElement')\n setupTarget() {\n this.disconnectTarget();\n this.connectTarget();\n }\n\n @Watch('isVisible')\n onVisibilityChange(newValue: boolean) {\n if (newValue) {\n this.updatePosition();\n this.bcmShown.emit();\n } else {\n this.bcmHidden.emit();\n }\n }\n\n async componentDidLoad() {\n // Wait for render\n await new Promise(resolve => requestAnimationFrame(resolve));\n\n this.floatingEl = this.host.querySelector('.floating-content') as HTMLElement;\n\n if (this.floatingEl) {\n this.isReady = true;\n this.connectTarget();\n this.setupFloatingObserver();\n console.log('✅ bcm-linked initialized successfully');\n } else {\n console.error('❌ Could not find .floating-content element');\n }\n }\n\n disconnectedCallback() {\n this.disconnectTarget();\n this.clearTimeouts();\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n\n // Restore element to original position if component is destroyed while in portal\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n this.originalParent.appendChild(this.floatingEl);\n }\n }\n\n private connectTarget() {\n if (!this.isReady) return;\n\n // Find target element\n this.targetEl =\n this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null) || (this.host.previousElementSibling as HTMLElement) || this.host.parentElement;\n\n if (!this.targetEl) {\n console.warn('bcm-linked: No target element found');\n return;\n }\n\n // Setup event listeners based on trigger type\n this.setupEventListeners();\n\n // Setup auto-update for position\n if (this.targetEl && this.floatingEl) {\n this.cleanup = autoUpdate(this.targetEl, this.floatingEl, () => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n }\n\n // Setup resize observer for responsive positioning\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n this.resizeObserver.observe(this.floatingEl);\n }\n\n private disconnectTarget() {\n if (this.targetEl) {\n this.removeEventListeners();\n }\n this.cleanup?.();\n this.resizeObserver?.disconnect();\n }\n\n private setupEventListeners() {\n if (!this.targetEl || this.disabled) return;\n\n switch (this.trigger) {\n case 'hover':\n this.targetEl.addEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.addEventListener('mouseleave', this.handleMouseLeave);\n this.floatingEl?.addEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.addEventListener('mouseleave', this.handleFloatingMouseLeave);\n break;\n\n case 'click':\n this.targetEl.addEventListener('click', this.handleClick);\n this.setupClickOutside();\n break;\n\n case 'focus':\n this.targetEl.addEventListener('focus', this.handleFocus);\n this.targetEl.addEventListener('blur', this.handleBlur);\n break;\n }\n }\n\n private removeEventListeners() {\n if (!this.targetEl) return;\n\n this.targetEl.removeEventListener('mouseenter', this.handleMouseEnter);\n this.targetEl.removeEventListener('mouseleave', this.handleMouseLeave);\n this.targetEl.removeEventListener('click', this.handleClick);\n this.targetEl.removeEventListener('focus', this.handleFocus);\n this.targetEl.removeEventListener('blur', this.handleBlur);\n\n this.floatingEl?.removeEventListener('mouseenter', this.handleFloatingMouseEnter);\n this.floatingEl?.removeEventListener('mouseleave', this.handleFloatingMouseLeave);\n\n this.removeClickOutside();\n }\n\n private setupClickOutside() {\n this.clickOutsideHandler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (!this.floatingEl?.contains(target) && !this.targetEl?.contains(target) && !this.host.contains(target)) {\n this.hide();\n }\n };\n document.addEventListener('click', this.clickOutsideHandler, true);\n }\n\n private removeClickOutside() {\n if (this.clickOutsideHandler) {\n document.removeEventListener('click', this.clickOutsideHandler, true);\n this.clickOutsideHandler = undefined;\n }\n }\n\n private handleMouseEnter = () => {\n this.clearTimeouts();\n if (this.showDelay > 0) {\n this.showTimeout = setTimeout(() => this.show(), this.showDelay);\n } else {\n this.show();\n }\n };\n\n private handleMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleFloatingMouseEnter = () => {\n this.clearTimeouts();\n };\n\n private handleFloatingMouseLeave = () => {\n this.clearTimeouts();\n if (this.hideDelay > 0) {\n this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);\n } else {\n this.hide();\n }\n };\n\n private handleClick = (e: Event) => {\n e.stopPropagation();\n this.toggle();\n };\n\n private handleFocus = () => {\n this.show();\n };\n\n private handleBlur = () => {\n this.hide();\n };\n\n private clearTimeouts() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private async updatePosition() {\n if (!this.targetEl || !this.floatingEl || !this.isVisible) return;\n\n // Use autoPlacement only for bottom-start (dropdown default)\n // For other placements, respect the manual placement with flip fallback\n // const useAutoPlacement = this.placement === 'bottom-start';\n\n const middleware = [\n offset(this.offset),\n // useAutoPlacement\n // ? autoPlacement({\n // allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],\n // boundary: document.body,\n // })\n // :\n flip({\n fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],\n }),\n shift({\n padding: 8,\n }),\n ];\n\n const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {\n placement: this.placement,\n middleware,\n strategy: 'fixed',\n });\n\n Object.assign(this.floatingEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n zIndex: this.zIndex.toString(),\n });\n\n // Update arrow if enabled\n if (this.arrow) {\n this.updateArrow(placement);\n }\n }\n\n private updateArrow(placement: Placement) {\n const arrow = this.floatingEl?.querySelector('.floating-arrow') as HTMLElement;\n if (!arrow) return;\n\n // Remove all arrow classes\n arrow.className = 'floating-arrow';\n\n // Add placement-specific class\n const side = placement.split('-')[0];\n arrow.classList.add(`arrow-${side}`);\n }\n\n @Method()\n async show(): Promise<void> {\n if (this.disabled || this.isVisible) return;\n\n this.bcmShow.emit();\n\n // Portalling: Move the floating element to the body\n if (this.appendToBody && this.floatingEl) {\n this.originalParent = this.floatingEl.parentNode;\n this.originalNextSibling = this.floatingEl.nextSibling;\n document.body.appendChild(this.floatingEl);\n }\n\n this.isVisible = true;\n\n // Use requestAnimationFrame to ensure the element is visible before positioning\n await new Promise(resolve => requestAnimationFrame(resolve));\n await this.updatePosition();\n }\n\n @Method()\n async hide(): Promise<void> {\n if (!this.isVisible) return;\n\n this.bcmHide.emit();\n this.isVisible = false;\n\n // Portalling: Restore the floating element to its original position\n if (this.appendToBody && this.floatingEl && this.originalParent) {\n if (this.originalNextSibling) {\n this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);\n } else {\n this.originalParent.appendChild(this.floatingEl);\n }\n this.originalParent = undefined;\n this.originalNextSibling = undefined;\n }\n\n if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {\n this.floatingEl.parentNode.removeChild(this.floatingEl);\n }\n }\n\n @Method()\n async toggle(): Promise<void> {\n if (this.isVisible) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n @Method()\n async updatePositioning(): Promise<void> {\n await this.updatePosition();\n }\n\n private setupFloatingObserver() {\n if (!this.floatingEl) return;\n\n // Observe floating element size changes for position updates\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isVisible) {\n this.updatePosition();\n }\n });\n\n this.resizeObserver.observe(this.floatingEl);\n }\n\n render() {\n const floatingClasses = {\n 'floating-content': true,\n 'floating-visible': this.isVisible,\n 'floating-hidden': !this.isVisible,\n 'floating-with-arrow': this.arrow,\n 'floating-destroy-on-hide': this.destroyOnHide,\n };\n\n return (\n <Host>\n <div\n class={floatingClasses}\n style={{\n position: 'fixed',\n top: '0px',\n left: '0px',\n zIndex: this.zIndex.toString(),\n display: this.isVisible ? 'block' : 'none',\n visibility: this.isVisible ? 'visible' : 'hidden',\n opacity: this.isVisible ? '1' : '0',\n pointerEvents: this.isVisible ? 'auto' : 'none',\n }}\n >\n {this.arrow && <div class=\"floating-arrow\" />}\n <div class=\"floating-wrapper\">\n <slot></slot>\n </div>\n </div>\n <div style={{ display: 'none' }}>\n <slot name=\"fallback\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -106,12 +106,12 @@ const Badge = /*@__PURE__*/ proxyCustomElement(class Badge extends H {
|
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
render() {
|
|
109
|
-
return (h("div", { key: '
|
|
109
|
+
return (h("div", { key: 'da26bf1e14ff4098562a3d594ec9c895694f62fa', class: "relative inline-flex" }, h("slot", { key: 'f92bff170f95619ac79bdd0cfb7970e16e581d26' }), h("div", { key: '4379aac0216eec1de7e0908cfa0531c80e8dab23', role: "status", "aria-live": "polite", "aria-label": this.status ? `Status: ${this.status}` : undefined, class: this.classes({
|
|
110
110
|
size: this.size,
|
|
111
111
|
variant: this.variant,
|
|
112
112
|
position: this.position,
|
|
113
113
|
blink: this.blink,
|
|
114
|
-
}), style: Object.assign(Object.assign({}, this.badgeStyle), this.offsetStyle) }, this.variant == 'text' && h("slot", { key: '
|
|
114
|
+
}), style: Object.assign(Object.assign({}, this.badgeStyle), this.offsetStyle) }, this.variant == 'text' && h("slot", { key: '63f5bf1a342f9136a012a98844926dfdee7da40d', name: "badge" }, this.text))));
|
|
115
115
|
}
|
|
116
116
|
static get style() { return BcmBadgeStyle0; }
|
|
117
117
|
}, [1, "bcm-badge", {
|
|
@@ -142,4 +142,4 @@ defineCustomElement();
|
|
|
142
142
|
|
|
143
143
|
export { Badge as B, defineCustomElement as d };
|
|
144
144
|
|
|
145
|
-
//# sourceMappingURL=p-
|
|
145
|
+
//# sourceMappingURL=p-4cc3e4d7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-4cc3e4d7.js","mappings":"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","names":["tv"],"sources":["src/components/badge/badge.css?tag=bcm-badge&encapsulation=shadow","src/components/badge/badge.component.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n --bcm-badge-bg: var(--bcm-ui-color-background-default-default);\n --bcm-badge-text: var(--bcm-ui-color-text-default);\n --bcm-badge-radius: 9999px;\n}\n\n::slotted([slot='badge']) {\n color: var(--bcm-badge-text);\n font-weight: 500;\n}\n","import { Component, ComponentInterface, Prop, h } from '@stencil/core';\nimport { tv } from 'tailwind-variants';\n\n/**\n * @component BcmBadge\n * @description A versatile badge component that can be positioned around its container.\n * Supports different sizes, variants (dot/text), colors, and positioning options.\n * Can display status indicators with optional blinking animation.\n *\n * @example Basic usage\n * <bcm-badge color=\"primary\" position=\"top-right\">\n * <div>Container Content</div>\n * <span slot=\"badge\">New</span>\n * </bcm-badge>\n *\n * @example Status indicator with blink\n * <bcm-badge variant=\"dot\" color=\"success\" blink={true} status=\"Online\">\n * <div>User Profile</div>\n * </bcm-badge>\n */\n@Component({\n tag: 'bcm-badge',\n styleUrl: 'badge.css',\n shadow: true,\n})\nexport class Badge implements ComponentInterface {\n /**\n * Determines the size of the badge.\n * @type {'small' | 'medium' | 'large'}\n * @default 'medium'\n */\n @Prop()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Sets the visual variant of the badge.\n * 'dot': Appears as a small dot indicator\n * 'text': Displays content as text\n * @type {'dot' | 'text'}\n * @default 'text'\n */\n @Prop()\n variant: 'dot' | 'text' = 'text';\n\n /**\n * Defines the color of the badge.\n * Uses system color variables (e.g., 'primary', 'success', 'warning', etc.)\n * @type {string}\n * @optional\n */\n @Prop()\n color?: string;\n\n /**\n * Enables soft color mode for the badge.\n * When true, uses lighter tones and pastel colors.\n * @type {boolean}\n * @default false\n */\n @Prop()\n soft: boolean = false;\n\n /**\n * Enables blinking animation for the badge.\n * Useful for drawing attention or indicating active status.\n * @type {boolean}\n * @default false\n */\n @Prop()\n blink: boolean = false;\n\n /**\n * Status message for accessibility purposes.\n * Will be read by screen readers.\n * @type {string}\n * @optional\n */\n @Prop()\n status?: string;\n\n /**\n * Sets the position of the badge relative to its container.\n * @type {'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'}\n * @default 'top-right'\n */\n @Prop()\n position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' = 'top-right';\n\n /**\n * Fine-tune the badge position with custom offset.\n * Format: \"x,y\" in pixels (e.g., \"10,-5\")\n * @type {string}\n * @optional\n */\n @Prop()\n offset: string;\n\n /**\n * Text to be displayed inside the badge.\n * Used when variant is set to 'text'.\n * Can be overridden using the \"badge\" slot.\n * @type {string}\n * @optional\n */\n @Prop()\n text?: string;\n\n private classes = tv({\n base: 'badge bcm-ui-element absolute font-medium inline-flex items-center justify-center bg-[--bcm-badge-bg] text-[--bcm-badge-text] rounded-[--bcm-badge-radius] z-10',\n variants: {\n size: {\n small: 'gap-1 px-1 text-size-3',\n medium: 'gap-1 py-0.5 px-1.5 text-size-4',\n large: 'gap-2 py-1 px-2 text-size-5',\n },\n variant: {\n dot: 'gap-0 p-0 text-[0px] leading-none',\n text: '',\n },\n position: {\n 'top-right': '-top-1 -right-1',\n 'top-left': '-top-1 -left-1',\n 'bottom-right': '-bottom-1 -right-1',\n 'bottom-left': '-bottom-1 -left-1',\n },\n blink: {\n true: 'after:content-[\"\"] after:absolute after:rounded-full after:bg-[--bcm-badge-bg] after:animate-blink after:w-full after:h-full',\n },\n },\n compoundVariants: [\n {\n variant: 'dot',\n size: 'small',\n class: 'size-1',\n },\n {\n variant: 'dot',\n size: 'medium',\n class: 'size-1.5',\n },\n {\n variant: 'dot',\n size: 'large',\n class: 'size-2',\n },\n ],\n defaultVariants: {\n variant: 'text',\n size: 'medium',\n position: 'top-right',\n blink: false,\n },\n });\n\n private get offsetStyle() {\n if (!this.offset) return {};\n const [x = 0, y = 0] = this.offset.split(',').map(val => val.trim());\n return { transform: `translate(${x}px, ${y}px)` };\n }\n\n private get badgeStyle() {\n if (!this.color) return {};\n const variantType = this.soft ? 'soft' : 'vivid';\n\n return {\n '--bcm-badge-bg': `var(--bcm-ui-color-background-${variantType}-${this.color}-default)`,\n '--bcm-badge-text': this.soft ? `var(--bcm-ui-color-text-palette-${this.color})` : 'var(--bcm-ui-color-text-base)',\n };\n }\n\n render() {\n return (\n <div class=\"relative inline-flex\">\n <slot></slot>\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-label={this.status ? `Status: ${this.status}` : undefined}\n class={this.classes({\n size: this.size,\n variant: this.variant,\n position: this.position,\n blink: this.blink,\n })}\n style={{\n ...this.badgeStyle,\n ...this.offsetStyle,\n }}\n >\n {this.variant == 'text' && <slot name=\"badge\">{this.text}</slot>}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
|