cisse-vue-ui 0.2.4 → 0.2.6
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/README.md +67 -1
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Do0H2ZOe.cjs → CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs} +67 -125
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs.map +1 -0
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Cymj-zkh.js → CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js} +68 -126
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js → Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js} +26 -74
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs → Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs} +25 -73
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +1 -0
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-DoawksKc.cjs → PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs} +2 -2
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-DoawksKc.cjs.map → PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map} +1 -1
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-J1I-WjM-.js → PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js} +2 -2
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-J1I-WjM-.js.map → PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map} +1 -1
- package/dist/{Switch.vue_vue_type_script_setup_true_lang-C2_5u-HL.js → Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js} +33 -103
- package/dist/Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js.map +1 -0
- package/dist/{Switch.vue_vue_type_script_setup_true_lang-V-FtNcTd.cjs → Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs} +32 -102
- package/dist/Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs.map +1 -0
- package/dist/components/core/Dropdown.vue.d.ts +2 -4
- package/dist/components/core/index.cjs +2 -2
- package/dist/components/core/index.js +2 -2
- package/dist/components/form/index.cjs +1 -1
- package/dist/components/form/index.js +1 -1
- package/dist/components/index.cjs +4 -4
- package/dist/components/index.js +4 -4
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/composables/index.cjs +8 -4
- package/dist/composables/index.cjs.map +1 -1
- package/dist/composables/index.d.ts +2 -0
- package/dist/composables/index.js +5 -1
- package/dist/composables/index.js.map +1 -1
- package/dist/composables/useDropdown.d.ts +51 -0
- package/dist/composables/useModal.d.ts +60 -0
- package/dist/{index-D_7WQIhA.cjs → index-C-qIi_nO.cjs} +5 -5
- package/dist/index-C-qIi_nO.cjs.map +1 -0
- package/dist/{index-CNQJxtkC.js → index-DUVvDjHF.js} +5 -5
- package/dist/index-DUVvDjHF.js.map +1 -0
- package/dist/index.cjs +13 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/useDropdown-DHFnd259.cjs +130 -0
- package/dist/useDropdown-DHFnd259.cjs.map +1 -0
- package/dist/useDropdown-iVu14E6s.js +131 -0
- package/dist/useDropdown-iVu14E6s.js.map +1 -0
- package/dist/{useExportCSV-B9o9lJ3D.js → useModal-Aq8hn152.js} +40 -1
- package/dist/useModal-Aq8hn152.js.map +1 -0
- package/dist/{useExportCSV-BPC_hd25.cjs → useModal-DDF_ZS8C.cjs} +40 -1
- package/dist/useModal-DDF_ZS8C.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Cymj-zkh.js.map +0 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Do0H2ZOe.cjs.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs.map +0 -1
- package/dist/Switch.vue_vue_type_script_setup_true_lang-C2_5u-HL.js.map +0 -1
- package/dist/Switch.vue_vue_type_script_setup_true_lang-V-FtNcTd.cjs.map +0 -1
- package/dist/index-CNQJxtkC.js.map +0 -1
- package/dist/index-D_7WQIhA.cjs.map +0 -1
- package/dist/useExportCSV-B9o9lJ3D.js.map +0 -1
- package/dist/useExportCSV-BPC_hd25.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -151,7 +151,73 @@ app.use(VueTailwindUI, { components: ['Button', 'CardComponent'] })
|
|
|
151
151
|
## Composables
|
|
152
152
|
|
|
153
153
|
```typescript
|
|
154
|
-
import { useNotifications, useDarkMode, useExportCSV } from 'cisse-vue-ui/composables'
|
|
154
|
+
import { useNotifications, useDarkMode, useExportCSV, useDropdown, useModal } from 'cisse-vue-ui/composables'
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### useModal
|
|
158
|
+
|
|
159
|
+
Manage modal state with data support:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
import { useModal } from 'cisse-vue-ui/composables'
|
|
163
|
+
|
|
164
|
+
// Simple modal
|
|
165
|
+
const createModal = useModal()
|
|
166
|
+
createModal.open()
|
|
167
|
+
createModal.close()
|
|
168
|
+
|
|
169
|
+
// Modal with data (e.g., for editing)
|
|
170
|
+
const editModal = useModal<User>()
|
|
171
|
+
editModal.open(selectedUser)
|
|
172
|
+
// Access editModal.data.value in template
|
|
173
|
+
|
|
174
|
+
// With callbacks
|
|
175
|
+
const deleteModal = useModal<Item>({
|
|
176
|
+
onOpen: (data) => console.log('Opening with:', data),
|
|
177
|
+
onClose: () => refetchData()
|
|
178
|
+
})
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
```vue
|
|
182
|
+
<template>
|
|
183
|
+
<!-- Use isOpen for v-model binding -->
|
|
184
|
+
<Modal v-model="editModal.isOpen.value" title="Edit User">
|
|
185
|
+
<FormInput v-model="editModal.data.value.name" label="Name" />
|
|
186
|
+
<template #footer>
|
|
187
|
+
<Button @click="editModal.close()">Cancel</Button>
|
|
188
|
+
<Button variant="primary" @click="save">Save</Button>
|
|
189
|
+
</template>
|
|
190
|
+
</Modal>
|
|
191
|
+
</template>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### useDropdown
|
|
195
|
+
|
|
196
|
+
Shared dropdown logic for custom dropdown components (used internally by Dropdown, FormSelect, AutocompleteComponent):
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import { useDropdown } from 'cisse-vue-ui/composables'
|
|
200
|
+
import { ref } from 'vue'
|
|
201
|
+
|
|
202
|
+
const triggerRef = ref<HTMLElement>()
|
|
203
|
+
const dropdownRef = ref<HTMLElement>()
|
|
204
|
+
|
|
205
|
+
const {
|
|
206
|
+
isOpen,
|
|
207
|
+
highlightedIndex,
|
|
208
|
+
dropdownStyle,
|
|
209
|
+
open,
|
|
210
|
+
close,
|
|
211
|
+
toggle,
|
|
212
|
+
handleKeydown,
|
|
213
|
+
scrollToHighlighted,
|
|
214
|
+
} = useDropdown(triggerRef, dropdownRef, {
|
|
215
|
+
teleport: true,
|
|
216
|
+
align: 'left',
|
|
217
|
+
gap: 8,
|
|
218
|
+
onOpen: () => console.log('Opened'),
|
|
219
|
+
onClose: () => console.log('Closed'),
|
|
220
|
+
})
|
|
155
221
|
```
|
|
156
222
|
|
|
157
223
|
### useNotifications
|
|
@@ -3,6 +3,7 @@ const vue = require("vue");
|
|
|
3
3
|
const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
|
|
4
4
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
5
5
|
const vue$1 = require("@iconify/vue");
|
|
6
|
+
const useDropdown = require("./useDropdown-DHFnd259.cjs");
|
|
6
7
|
const _hoisted_1$8 = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
|
|
7
8
|
const _hoisted_2$6 = {
|
|
8
9
|
key: 0,
|
|
@@ -236,10 +237,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
236
237
|
}
|
|
237
238
|
});
|
|
238
239
|
const _hoisted_1$6 = { class: "space-y-3" };
|
|
239
|
-
const _hoisted_2$4 = {
|
|
240
|
-
key: 0,
|
|
241
|
-
class: "flex items-center gap-3 p-3 bg-white dark:bg-slate-950 rounded-lg shadow-md"
|
|
242
|
-
};
|
|
240
|
+
const _hoisted_2$4 = { class: "flex items-center gap-3 p-3" };
|
|
243
241
|
const _hoisted_3$2 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
244
242
|
const _hoisted_4$1 = {
|
|
245
243
|
key: 0,
|
|
@@ -305,39 +303,47 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
305
303
|
const hasEmptySlot = vue.computed(() => !!slots.empty);
|
|
306
304
|
return (_ctx, _cache) => {
|
|
307
305
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
|
|
308
|
-
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.
|
|
309
|
-
vue.
|
|
310
|
-
"
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
306
|
+
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$b, { key: 0 }, {
|
|
307
|
+
default: vue.withCtx(() => [
|
|
308
|
+
vue.createElementVNode("div", _hoisted_2$4, [
|
|
309
|
+
vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
310
|
+
"model-value": allSelected.value,
|
|
311
|
+
indeterminate: someSelected.value,
|
|
312
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
|
|
313
|
+
}, null, 8, ["model-value", "indeterminate"]),
|
|
314
|
+
vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
|
|
315
|
+
__props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$1, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
|
|
316
|
+
])
|
|
317
|
+
]),
|
|
318
|
+
_: 1
|
|
319
|
+
})) : vue.createCommentVNode("", true),
|
|
317
320
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
|
|
318
|
-
return vue.openBlock(), vue.
|
|
321
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$b, {
|
|
319
322
|
key: getKey(item),
|
|
320
|
-
class: vue.normalizeClass(["
|
|
323
|
+
class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
|
|
321
324
|
"ring-2 ring-primary": isSelected(item)
|
|
322
325
|
}])
|
|
323
|
-
},
|
|
324
|
-
vue.
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
vue.
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
vue.
|
|
326
|
+
}, {
|
|
327
|
+
default: vue.withCtx(() => [
|
|
328
|
+
vue.createElementVNode("div", _hoisted_5$1, [
|
|
329
|
+
__props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, [
|
|
330
|
+
isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
331
|
+
key: 0,
|
|
332
|
+
"model-value": isSelected(item),
|
|
333
|
+
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
334
|
+
}, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1))
|
|
335
|
+
])) : vue.createCommentVNode("", true),
|
|
336
|
+
vue.renderSlot(_ctx.$slots, "avatar", { item }),
|
|
337
|
+
vue.createElementVNode("div", _hoisted_8$1, [
|
|
338
|
+
vue.renderSlot(_ctx.$slots, "content", { item })
|
|
339
|
+
]),
|
|
340
|
+
vue.createElementVNode("div", _hoisted_9$1, [
|
|
341
|
+
vue.renderSlot(_ctx.$slots, "actions", { item })
|
|
342
|
+
])
|
|
338
343
|
])
|
|
339
|
-
])
|
|
340
|
-
|
|
344
|
+
]),
|
|
345
|
+
_: 2
|
|
346
|
+
}, 1032, ["class"]);
|
|
341
347
|
}), 128)),
|
|
342
348
|
__props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
|
|
343
349
|
vue.renderSlot(_ctx.$slots, "empty")
|
|
@@ -708,13 +714,21 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
708
714
|
const props = __props;
|
|
709
715
|
const emit = __emit;
|
|
710
716
|
const searchQuery = vue.ref("");
|
|
711
|
-
const isOpen = vue.ref(false);
|
|
712
|
-
const highlightedIndex = vue.ref(-1);
|
|
713
717
|
const inputRef = vue.ref(null);
|
|
714
|
-
const dropdownRef = vue.ref(null);
|
|
715
718
|
const containerRef = vue.ref(null);
|
|
719
|
+
const dropdownRef = vue.ref(null);
|
|
716
720
|
const inputWrapperRef = vue.ref(null);
|
|
717
|
-
const
|
|
721
|
+
const {
|
|
722
|
+
isOpen,
|
|
723
|
+
highlightedIndex,
|
|
724
|
+
dropdownStyle,
|
|
725
|
+
open: openBase,
|
|
726
|
+
close: closeBase,
|
|
727
|
+
handleKeydown: baseHandleKeydown,
|
|
728
|
+
scrollToHighlighted
|
|
729
|
+
} = useDropdown.useDropdown(inputWrapperRef, dropdownRef, {
|
|
730
|
+
teleport: props.teleport
|
|
731
|
+
});
|
|
718
732
|
const filteredOptions = vue.computed(() => {
|
|
719
733
|
if (!searchQuery.value) {
|
|
720
734
|
return props.options;
|
|
@@ -738,30 +752,19 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
738
752
|
},
|
|
739
753
|
{ immediate: true }
|
|
740
754
|
);
|
|
741
|
-
const updatePosition = () => {
|
|
742
|
-
if (!inputWrapperRef.value || !props.teleport) return;
|
|
743
|
-
const rect = inputWrapperRef.value.getBoundingClientRect();
|
|
744
|
-
dropdownPosition.value = {
|
|
745
|
-
top: rect.bottom + window.scrollY + 8,
|
|
746
|
-
left: rect.left + window.scrollX,
|
|
747
|
-
width: rect.width
|
|
748
|
-
};
|
|
749
|
-
};
|
|
750
755
|
const openDropdown = () => {
|
|
751
756
|
if (props.disabled) return;
|
|
752
|
-
isOpen.value = true;
|
|
753
757
|
searchQuery.value = "";
|
|
754
758
|
highlightedIndex.value = -1;
|
|
759
|
+
openBase();
|
|
755
760
|
vue.nextTick(() => {
|
|
756
761
|
var _a;
|
|
757
762
|
(_a = inputRef.value) == null ? void 0 : _a.focus();
|
|
758
|
-
updatePosition();
|
|
759
763
|
});
|
|
760
764
|
};
|
|
761
765
|
const closeDropdown = () => {
|
|
762
|
-
|
|
766
|
+
closeBase();
|
|
763
767
|
searchQuery.value = selectedLabel.value;
|
|
764
|
-
highlightedIndex.value = -1;
|
|
765
768
|
};
|
|
766
769
|
const selectOption = (option) => {
|
|
767
770
|
emit("update:modelValue", option.value);
|
|
@@ -778,79 +781,18 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
778
781
|
});
|
|
779
782
|
};
|
|
780
783
|
const handleKeydown = (event) => {
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
highlightedIndex.value + 1,
|
|
787
|
-
filteredOptions.value.length - 1
|
|
788
|
-
);
|
|
789
|
-
scrollToHighlighted();
|
|
790
|
-
break;
|
|
791
|
-
case "ArrowUp":
|
|
792
|
-
event.preventDefault();
|
|
793
|
-
highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0);
|
|
794
|
-
scrollToHighlighted();
|
|
795
|
-
break;
|
|
796
|
-
case "Enter":
|
|
797
|
-
event.preventDefault();
|
|
798
|
-
if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {
|
|
799
|
-
selectOption(filteredOptions.value[highlightedIndex.value]);
|
|
800
|
-
}
|
|
801
|
-
break;
|
|
802
|
-
case "Escape":
|
|
803
|
-
event.preventDefault();
|
|
804
|
-
closeDropdown();
|
|
805
|
-
break;
|
|
806
|
-
}
|
|
807
|
-
};
|
|
808
|
-
const scrollToHighlighted = () => {
|
|
809
|
-
vue.nextTick(() => {
|
|
810
|
-
if (dropdownRef.value) {
|
|
811
|
-
const highlightedElement = dropdownRef.value.querySelector(
|
|
812
|
-
`[data-index="${highlightedIndex.value}"]`
|
|
813
|
-
);
|
|
814
|
-
if (highlightedElement) {
|
|
815
|
-
highlightedElement.scrollIntoView({ block: "nearest" });
|
|
784
|
+
baseHandleKeydown(event, {
|
|
785
|
+
itemCount: filteredOptions.value.length,
|
|
786
|
+
onSelect: (index) => {
|
|
787
|
+
if (filteredOptions.value[index]) {
|
|
788
|
+
selectOption(filteredOptions.value[index]);
|
|
816
789
|
}
|
|
817
790
|
}
|
|
818
791
|
});
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
var _a, _b;
|
|
822
|
-
const target = event.target;
|
|
823
|
-
const isInsideContainer = (_a = containerRef.value) == null ? void 0 : _a.contains(target);
|
|
824
|
-
const isInsideDropdown = (_b = dropdownRef.value) == null ? void 0 : _b.contains(target);
|
|
825
|
-
if (!isInsideContainer && !isInsideDropdown) {
|
|
826
|
-
closeDropdown();
|
|
792
|
+
if (isOpen.value) {
|
|
793
|
+
scrollToHighlighted(dropdownRef.value);
|
|
827
794
|
}
|
|
828
795
|
};
|
|
829
|
-
vue.watch(isOpen, (newValue) => {
|
|
830
|
-
if (newValue) {
|
|
831
|
-
document.addEventListener("click", handleClickOutside);
|
|
832
|
-
window.addEventListener("scroll", updatePosition, true);
|
|
833
|
-
window.addEventListener("resize", updatePosition);
|
|
834
|
-
} else {
|
|
835
|
-
document.removeEventListener("click", handleClickOutside);
|
|
836
|
-
window.removeEventListener("scroll", updatePosition, true);
|
|
837
|
-
window.removeEventListener("resize", updatePosition);
|
|
838
|
-
}
|
|
839
|
-
});
|
|
840
|
-
vue.onUnmounted(() => {
|
|
841
|
-
document.removeEventListener("click", handleClickOutside);
|
|
842
|
-
window.removeEventListener("scroll", updatePosition, true);
|
|
843
|
-
window.removeEventListener("resize", updatePosition);
|
|
844
|
-
});
|
|
845
|
-
const dropdownStyle = vue.computed(() => {
|
|
846
|
-
if (!props.teleport) return {};
|
|
847
|
-
return {
|
|
848
|
-
position: "absolute",
|
|
849
|
-
top: `${dropdownPosition.value.top}px`,
|
|
850
|
-
left: `${dropdownPosition.value.left}px`,
|
|
851
|
-
width: `${dropdownPosition.value.width}px`
|
|
852
|
-
};
|
|
853
|
-
});
|
|
854
796
|
return (_ctx, _cache) => {
|
|
855
797
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
856
798
|
ref_key: "containerRef",
|
|
@@ -864,8 +806,8 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
864
806
|
ref: inputWrapperRef,
|
|
865
807
|
class: vue.normalizeClass([{
|
|
866
808
|
"border-red-500": __props.error,
|
|
867
|
-
"border-gray-300 dark:border-gray-600": !__props.error && !isOpen
|
|
868
|
-
"border-primary ring-2 ring-primary/20": isOpen
|
|
809
|
+
"border-gray-300 dark:border-gray-600": !__props.error && !vue.unref(isOpen),
|
|
810
|
+
"border-primary ring-2 ring-primary/20": vue.unref(isOpen),
|
|
869
811
|
"cursor-not-allowed opacity-50": __props.disabled
|
|
870
812
|
}, "flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition dark:bg-gray-800"])
|
|
871
813
|
}, [
|
|
@@ -901,10 +843,10 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
901
843
|
disabled: __props.disabled,
|
|
902
844
|
class: "rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700",
|
|
903
845
|
type: "button",
|
|
904
|
-
onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => isOpen
|
|
846
|
+
onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => vue.unref(isOpen) ? closeDropdown() : openDropdown(), ["stop"]))
|
|
905
847
|
}, [
|
|
906
848
|
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
907
|
-
class: vue.normalizeClass([{ "rotate-180": isOpen
|
|
849
|
+
class: vue.normalizeClass([{ "rotate-180": vue.unref(isOpen) }, "size-4 text-gray-400 transition"]),
|
|
908
850
|
icon: "lucide:chevron-down"
|
|
909
851
|
}, null, 8, ["class"])
|
|
910
852
|
], 8, _hoisted_4)
|
|
@@ -922,11 +864,11 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
922
864
|
"leave-to-class": "opacity-0 scale-95"
|
|
923
865
|
}, {
|
|
924
866
|
default: vue.withCtx(() => [
|
|
925
|
-
isOpen
|
|
867
|
+
vue.unref(isOpen) ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
926
868
|
key: 0,
|
|
927
869
|
ref_key: "dropdownRef",
|
|
928
870
|
ref: dropdownRef,
|
|
929
|
-
style: vue.normalizeStyle(dropdownStyle
|
|
871
|
+
style: vue.normalizeStyle(vue.unref(dropdownStyle)),
|
|
930
872
|
class: vue.normalizeClass([
|
|
931
873
|
"autocomplete-dropdown z-[9999] max-h-60 overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-800",
|
|
932
874
|
!__props.teleport && "absolute mt-2 w-full"
|
|
@@ -937,7 +879,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
937
879
|
return vue.openBlock(), vue.createElementBlock("button", {
|
|
938
880
|
key: option.value,
|
|
939
881
|
class: vue.normalizeClass([{
|
|
940
|
-
"bg-gray-100 dark:bg-gray-700": highlightedIndex
|
|
882
|
+
"bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index,
|
|
941
883
|
"bg-primary/10": __props.modelValue === option.value
|
|
942
884
|
}, "flex w-full items-center gap-2 px-4 py-2 text-left text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700"]),
|
|
943
885
|
"data-index": index,
|
|
@@ -1475,4 +1417,4 @@ exports._sfc_main$6 = _sfc_main$5;
|
|
|
1475
1417
|
exports._sfc_main$7 = _sfc_main$4;
|
|
1476
1418
|
exports._sfc_main$8 = _sfc_main$3;
|
|
1477
1419
|
exports._sfc_main$9 = _sfc_main$2;
|
|
1478
|
-
//# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
1420
|
+
//# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs.map
|