cisse-vue-ui 0.2.5 → 0.2.7

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.
Files changed (61) hide show
  1. package/README.md +67 -1
  2. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-D_8YbCbl.cjs → CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs} +31 -94
  3. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs.map +1 -0
  4. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Cwn5A5CH.js → CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js} +32 -95
  5. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map +1 -0
  6. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js → Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js} +26 -74
  7. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +1 -0
  8. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs → Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs} +25 -73
  9. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +1 -0
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. package/dist/Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js.map +1 -0
  16. 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
  17. package/dist/Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs.map +1 -0
  18. package/dist/components/core/Dropdown.vue.d.ts +2 -4
  19. package/dist/components/core/TableComponent.vue.d.ts +18 -2
  20. package/dist/components/core/index.cjs +2 -2
  21. package/dist/components/core/index.js +2 -2
  22. package/dist/components/form/index.cjs +1 -1
  23. package/dist/components/form/index.js +1 -1
  24. package/dist/components/index.cjs +4 -4
  25. package/dist/components/index.js +4 -4
  26. package/dist/components/layout/index.cjs +1 -1
  27. package/dist/components/layout/index.js +1 -1
  28. package/dist/composables/index.cjs +8 -4
  29. package/dist/composables/index.cjs.map +1 -1
  30. package/dist/composables/index.d.ts +2 -0
  31. package/dist/composables/index.js +5 -1
  32. package/dist/composables/index.js.map +1 -1
  33. package/dist/composables/useDropdown.d.ts +51 -0
  34. package/dist/composables/useModal.d.ts +60 -0
  35. package/dist/{index-9hTVj6LT.cjs → index-CCWZb44b.cjs} +5 -5
  36. package/dist/index-CCWZb44b.cjs.map +1 -0
  37. package/dist/{index-CWhT0eYI.js → index-RD8wq3O6.js} +5 -5
  38. package/dist/index-RD8wq3O6.js.map +1 -0
  39. package/dist/index.cjs +13 -9
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.js +10 -6
  42. package/dist/index.js.map +1 -1
  43. package/dist/useDropdown-DHFnd259.cjs +130 -0
  44. package/dist/useDropdown-DHFnd259.cjs.map +1 -0
  45. package/dist/useDropdown-iVu14E6s.js +131 -0
  46. package/dist/useDropdown-iVu14E6s.js.map +1 -0
  47. package/dist/{useExportCSV-B9o9lJ3D.js → useModal-Aq8hn152.js} +40 -1
  48. package/dist/useModal-Aq8hn152.js.map +1 -0
  49. package/dist/{useExportCSV-BPC_hd25.cjs → useModal-DDF_ZS8C.cjs} +40 -1
  50. package/dist/useModal-DDF_ZS8C.cjs.map +1 -0
  51. package/package.json +1 -1
  52. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Cwn5A5CH.js.map +0 -1
  53. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-D_8YbCbl.cjs.map +0 -1
  54. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js.map +0 -1
  55. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs.map +0 -1
  56. package/dist/Switch.vue_vue_type_script_setup_true_lang-C2_5u-HL.js.map +0 -1
  57. package/dist/Switch.vue_vue_type_script_setup_true_lang-V-FtNcTd.cjs.map +0 -1
  58. package/dist/index-9hTVj6LT.cjs.map +0 -1
  59. package/dist/index-CWhT0eYI.js.map +0 -1
  60. package/dist/useExportCSV-B9o9lJ3D.js.map +0 -1
  61. package/dist/useExportCSV-BPC_hd25.cjs.map +0 -1
@@ -1,7 +1,8 @@
1
- import { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, createElementVNode, createTextVNode, toDisplayString, useSlots, computed, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, withCtx, onMounted, nextTick, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, watch, shallowRef, toValue, watchEffect, unref, createSlots, ref, onUnmounted, withDirectives, vModelText, withModifiers, Teleport, Transition, normalizeStyle, resolveComponent, mergeProps, provide, vShow } from "vue";
1
+ import { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, createElementVNode, createTextVNode, toDisplayString, useSlots, computed, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, withCtx, onMounted, nextTick, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, watch, shallowRef, toValue, watchEffect, unref, createSlots, ref, withDirectives, vModelText, withModifiers, Teleport, Transition, normalizeStyle, resolveComponent, mergeProps, provide, vShow } from "vue";
2
2
  import { _ as _sfc_main$c } from "./Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
3
3
  import { e as _sfc_main$d, d as _sfc_main$e, c as _sfc_main$f, b as _sfc_main$g, a as _sfc_main$h } from "./BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
4
4
  import { Icon } from "@iconify/vue";
5
+ import { u as useDropdown } from "./useDropdown-iVu14E6s.js";
5
6
  const _hoisted_1$8 = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
6
7
  const _hoisted_2$6 = {
7
8
  key: 0,
@@ -82,9 +83,9 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
82
83
  },
83
84
  emits: ["select", "selectAll"],
84
85
  setup(__props, { emit: __emit }) {
86
+ const slots = useSlots();
85
87
  const props = __props;
86
88
  const emit = __emit;
87
- const slots = useSlots();
88
89
  const typeComponents = {
89
90
  text: _sfc_main$h,
90
91
  number: _sfc_main$g,
@@ -712,13 +713,21 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
712
713
  const props = __props;
713
714
  const emit = __emit;
714
715
  const searchQuery = ref("");
715
- const isOpen = ref(false);
716
- const highlightedIndex = ref(-1);
717
716
  const inputRef = ref(null);
718
- const dropdownRef = ref(null);
719
717
  const containerRef = ref(null);
718
+ const dropdownRef = ref(null);
720
719
  const inputWrapperRef = ref(null);
721
- const dropdownPosition = ref({ top: 0, left: 0, width: 0 });
720
+ const {
721
+ isOpen,
722
+ highlightedIndex,
723
+ dropdownStyle,
724
+ open: openBase,
725
+ close: closeBase,
726
+ handleKeydown: baseHandleKeydown,
727
+ scrollToHighlighted
728
+ } = useDropdown(inputWrapperRef, dropdownRef, {
729
+ teleport: props.teleport
730
+ });
722
731
  const filteredOptions = computed(() => {
723
732
  if (!searchQuery.value) {
724
733
  return props.options;
@@ -742,30 +751,19 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
742
751
  },
743
752
  { immediate: true }
744
753
  );
745
- const updatePosition = () => {
746
- if (!inputWrapperRef.value || !props.teleport) return;
747
- const rect = inputWrapperRef.value.getBoundingClientRect();
748
- dropdownPosition.value = {
749
- top: rect.bottom + window.scrollY + 8,
750
- left: rect.left + window.scrollX,
751
- width: rect.width
752
- };
753
- };
754
754
  const openDropdown = () => {
755
755
  if (props.disabled) return;
756
- isOpen.value = true;
757
756
  searchQuery.value = "";
758
757
  highlightedIndex.value = -1;
758
+ openBase();
759
759
  nextTick(() => {
760
760
  var _a;
761
761
  (_a = inputRef.value) == null ? void 0 : _a.focus();
762
- updatePosition();
763
762
  });
764
763
  };
765
764
  const closeDropdown = () => {
766
- isOpen.value = false;
765
+ closeBase();
767
766
  searchQuery.value = selectedLabel.value;
768
- highlightedIndex.value = -1;
769
767
  };
770
768
  const selectOption = (option) => {
771
769
  emit("update:modelValue", option.value);
@@ -782,79 +780,18 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
782
780
  });
783
781
  };
784
782
  const handleKeydown = (event) => {
785
- if (!isOpen.value) return;
786
- switch (event.key) {
787
- case "ArrowDown":
788
- event.preventDefault();
789
- highlightedIndex.value = Math.min(
790
- highlightedIndex.value + 1,
791
- filteredOptions.value.length - 1
792
- );
793
- scrollToHighlighted();
794
- break;
795
- case "ArrowUp":
796
- event.preventDefault();
797
- highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0);
798
- scrollToHighlighted();
799
- break;
800
- case "Enter":
801
- event.preventDefault();
802
- if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {
803
- selectOption(filteredOptions.value[highlightedIndex.value]);
804
- }
805
- break;
806
- case "Escape":
807
- event.preventDefault();
808
- closeDropdown();
809
- break;
810
- }
811
- };
812
- const scrollToHighlighted = () => {
813
- nextTick(() => {
814
- if (dropdownRef.value) {
815
- const highlightedElement = dropdownRef.value.querySelector(
816
- `[data-index="${highlightedIndex.value}"]`
817
- );
818
- if (highlightedElement) {
819
- highlightedElement.scrollIntoView({ block: "nearest" });
783
+ baseHandleKeydown(event, {
784
+ itemCount: filteredOptions.value.length,
785
+ onSelect: (index) => {
786
+ if (filteredOptions.value[index]) {
787
+ selectOption(filteredOptions.value[index]);
820
788
  }
821
789
  }
822
790
  });
823
- };
824
- const handleClickOutside = (event) => {
825
- var _a, _b;
826
- const target = event.target;
827
- const isInsideContainer = (_a = containerRef.value) == null ? void 0 : _a.contains(target);
828
- const isInsideDropdown = (_b = dropdownRef.value) == null ? void 0 : _b.contains(target);
829
- if (!isInsideContainer && !isInsideDropdown) {
830
- closeDropdown();
791
+ if (isOpen.value) {
792
+ scrollToHighlighted(dropdownRef.value);
831
793
  }
832
794
  };
833
- watch(isOpen, (newValue) => {
834
- if (newValue) {
835
- document.addEventListener("click", handleClickOutside);
836
- window.addEventListener("scroll", updatePosition, true);
837
- window.addEventListener("resize", updatePosition);
838
- } else {
839
- document.removeEventListener("click", handleClickOutside);
840
- window.removeEventListener("scroll", updatePosition, true);
841
- window.removeEventListener("resize", updatePosition);
842
- }
843
- });
844
- onUnmounted(() => {
845
- document.removeEventListener("click", handleClickOutside);
846
- window.removeEventListener("scroll", updatePosition, true);
847
- window.removeEventListener("resize", updatePosition);
848
- });
849
- const dropdownStyle = computed(() => {
850
- if (!props.teleport) return {};
851
- return {
852
- position: "absolute",
853
- top: `${dropdownPosition.value.top}px`,
854
- left: `${dropdownPosition.value.left}px`,
855
- width: `${dropdownPosition.value.width}px`
856
- };
857
- });
858
795
  return (_ctx, _cache) => {
859
796
  return openBlock(), createElementBlock("div", {
860
797
  ref_key: "containerRef",
@@ -868,8 +805,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
868
805
  ref: inputWrapperRef,
869
806
  class: normalizeClass([{
870
807
  "border-red-500": __props.error,
871
- "border-gray-300 dark:border-gray-600": !__props.error && !isOpen.value,
872
- "border-primary ring-2 ring-primary/20": isOpen.value,
808
+ "border-gray-300 dark:border-gray-600": !__props.error && !unref(isOpen),
809
+ "border-primary ring-2 ring-primary/20": unref(isOpen),
873
810
  "cursor-not-allowed opacity-50": __props.disabled
874
811
  }, "flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition dark:bg-gray-800"])
875
812
  }, [
@@ -905,10 +842,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
905
842
  disabled: __props.disabled,
906
843
  class: "rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700",
907
844
  type: "button",
908
- onClick: _cache[1] || (_cache[1] = withModifiers(($event) => isOpen.value ? closeDropdown() : openDropdown(), ["stop"]))
845
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => unref(isOpen) ? closeDropdown() : openDropdown(), ["stop"]))
909
846
  }, [
910
847
  createVNode(unref(Icon), {
911
- class: normalizeClass([{ "rotate-180": isOpen.value }, "size-4 text-gray-400 transition"]),
848
+ class: normalizeClass([{ "rotate-180": unref(isOpen) }, "size-4 text-gray-400 transition"]),
912
849
  icon: "lucide:chevron-down"
913
850
  }, null, 8, ["class"])
914
851
  ], 8, _hoisted_4)
@@ -926,11 +863,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
926
863
  "leave-to-class": "opacity-0 scale-95"
927
864
  }, {
928
865
  default: withCtx(() => [
929
- isOpen.value ? (openBlock(), createElementBlock("div", {
866
+ unref(isOpen) ? (openBlock(), createElementBlock("div", {
930
867
  key: 0,
931
868
  ref_key: "dropdownRef",
932
869
  ref: dropdownRef,
933
- style: normalizeStyle(dropdownStyle.value),
870
+ style: normalizeStyle(unref(dropdownStyle)),
934
871
  class: normalizeClass([
935
872
  "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",
936
873
  !__props.teleport && "absolute mt-2 w-full"
@@ -941,7 +878,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
941
878
  return openBlock(), createElementBlock("button", {
942
879
  key: option.value,
943
880
  class: normalizeClass([{
944
- "bg-gray-100 dark:bg-gray-700": highlightedIndex.value === index,
881
+ "bg-gray-100 dark:bg-gray-700": unref(highlightedIndex) === index,
945
882
  "bg-primary/10": __props.modelValue === option.value
946
883
  }, "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"]),
947
884
  "data-index": index,
@@ -1481,4 +1418,4 @@ export {
1481
1418
  _sfc_main$1 as j,
1482
1419
  _sfc_main as k
1483
1420
  };
1484
- //# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-Cwn5A5CH.js.map
1421
+ //# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map