cisse-vue-ui 0.8.0 → 0.8.2
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 +879 -879
- package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-DJbuHoDj.cjs → CheckboxGroup.vue_vue_type_script_setup_true_lang-DuJr8cz3.cjs} +4 -4
- package/dist/CheckboxGroup.vue_vue_type_script_setup_true_lang-DuJr8cz3.cjs.map +1 -0
- package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-hHJdvUYS.js → CheckboxGroup.vue_vue_type_script_setup_true_lang-N4oS_DJD.js} +4 -4
- package/dist/CheckboxGroup.vue_vue_type_script_setup_true_lang-N4oS_DJD.js.map +1 -0
- package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs} +58 -9
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs.map +1 -0
- package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js} +58 -9
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-56CxoSmj.js → Dropdown.vue_vue_type_script_setup_true_lang-A9Ax6iob.js} +110 -14
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-A9Ax6iob.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-Dd3ySRNB.cjs → Dropdown.vue_vue_type_script_setup_true_lang-DoJKvn30.cjs} +109 -13
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DoJKvn30.cjs.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-DzLwUVCW.js → FilterTabs.vue_vue_type_script_setup_true_lang-CcOgc2Y_.js} +2 -2
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-CcOgc2Y_.js.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-Bj3I5Sn7.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-jW6Ikbvy.cjs} +2 -2
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-jW6Ikbvy.cjs.map +1 -0
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +1 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +1 -1
- package/dist/{PageHero.vue_vue_type_script_setup_true_lang-DQQGYAw0.js → PageHero.vue_vue_type_script_setup_true_lang-Gvocjdqh.js} +2 -2
- package/dist/PageHero.vue_vue_type_script_setup_true_lang-Gvocjdqh.js.map +1 -0
- package/dist/{PageHero.vue_vue_type_script_setup_true_lang-Bi97ypMD.cjs → PageHero.vue_vue_type_script_setup_true_lang-rbvfGvll.cjs} +2 -2
- package/dist/PageHero.vue_vue_type_script_setup_true_lang-rbvfGvll.cjs.map +1 -0
- package/dist/cisse-vue-ui.css +57 -57
- package/dist/components/core/MenuItem.stories.d.ts +1 -0
- package/dist/components/core/MenuItem.vue.d.ts +2 -13
- package/dist/components/core/index.cjs +2 -2
- package/dist/components/core/index.js +2 -2
- package/dist/components/feedback/PaginationControls.stories.d.ts +5 -0
- package/dist/components/feedback/PaginationControls.vue.d.ts +2 -0
- package/dist/components/feedback/index.cjs +1 -1
- package/dist/components/feedback/index.js +1 -1
- package/dist/components/form/index.cjs +1 -1
- package/dist/components/form/index.js +1 -1
- package/dist/components/index.cjs +5 -5
- package/dist/components/index.js +5 -5
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/composables/index.cjs +1 -1
- package/dist/composables/index.js +1 -1
- package/dist/composables/useDropdown.d.ts +4 -1
- package/dist/{index-DwqCXgDx.cjs → index-5dQNEzd8.cjs} +6 -6
- package/dist/{index-DwqCXgDx.cjs.map → index-5dQNEzd8.cjs.map} +1 -1
- package/dist/{index-rBD1MYh-.js → index-CDDUEkXf.js} +6 -6
- package/dist/index-CDDUEkXf.js.map +1 -0
- package/dist/index.cjs +7 -7
- package/dist/index.js +7 -7
- package/dist/style.css +1 -1
- package/dist/{useDropdown-DHFnd259.cjs → useDropdown-DK4c5JGL.cjs} +66 -10
- package/dist/useDropdown-DK4c5JGL.cjs.map +1 -0
- package/dist/{useDropdown-iVu14E6s.js → useDropdown-De0cKI83.js} +66 -10
- package/dist/useDropdown-De0cKI83.js.map +1 -0
- package/dist/useFocusTrap-AnlJsihM.js.map +1 -1
- package/dist/useFocusTrap-kcxO8AeU.cjs.map +1 -1
- package/dist/useId-nxrBaIC9.cjs.map +1 -1
- package/dist/useId-xeHj7rkg.js.map +1 -1
- package/dist/useToast-Bk60GArg.cjs.map +1 -1
- package/dist/useToast-ina5g3mj.js.map +1 -1
- package/package.json +169 -169
- package/dist/CheckboxGroup.vue_vue_type_script_setup_true_lang-DJbuHoDj.cjs.map +0 -1
- package/dist/CheckboxGroup.vue_vue_type_script_setup_true_lang-hHJdvUYS.js.map +0 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs.map +0 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-56CxoSmj.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-Dd3ySRNB.cjs.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-Bj3I5Sn7.cjs.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-DzLwUVCW.js.map +0 -1
- package/dist/PageHero.vue_vue_type_script_setup_true_lang-Bi97ypMD.cjs.map +0 -1
- package/dist/PageHero.vue_vue_type_script_setup_true_lang-DQQGYAw0.js.map +0 -1
- package/dist/index-rBD1MYh-.js.map +0 -1
- package/dist/useDropdown-DHFnd259.cjs.map +0 -1
- package/dist/useDropdown-iVu14E6s.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDropdown-DHFnd259.cjs","sources":["../src/composables/useDropdown.ts"],"sourcesContent":["import { ref, computed, watch, onUnmounted, nextTick, type Ref, type ComputedRef } from 'vue'\n\nexport interface UseDropdownOptions {\n /** Whether teleport is enabled (affects position calculation) */\n teleport?: boolean\n /** Alignment for position calculation */\n align?: 'left' | 'right'\n /** Gap between trigger and dropdown in pixels */\n gap?: number\n /** Callback when dropdown opens */\n onOpen?: () => void\n /** Callback when dropdown closes */\n onClose?: () => void\n}\n\nexport interface UseDropdownReturn {\n /** Whether the dropdown is currently open */\n isOpen: Ref<boolean>\n /** Current highlighted index for keyboard navigation */\n highlightedIndex: Ref<number>\n /** Calculated position for teleported dropdown */\n dropdownPosition: Ref<{ top: number; left: number; right: number; width: number }>\n /** Computed style object for teleported dropdown */\n dropdownStyle: ComputedRef<Record<string, string>>\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Toggle the dropdown */\n toggle: () => void\n /** Update position (call after DOM changes) */\n updatePosition: () => void\n /** Handle keyboard navigation */\n handleKeydown: (event: KeyboardEvent, options: KeyboardNavigationOptions) => void\n /** Scroll to highlighted item */\n scrollToHighlighted: (dropdownEl: HTMLElement | null) => void\n}\n\nexport interface KeyboardNavigationOptions {\n /** Total number of items to navigate */\n itemCount: number\n /** Called when Enter is pressed on a highlighted item */\n onSelect?: (index: number) => void\n /** Called when the dropdown should open (Space/Enter/ArrowDown when closed) */\n onOpen?: () => void\n /** Whether to handle open keys (Space/Enter/ArrowDown) when closed */\n handleOpenKeys?: boolean\n}\n\nexport function useDropdown(\n triggerRef: Ref<HTMLElement | null | undefined>,\n dropdownRef: Ref<HTMLElement | null | undefined>,\n options: UseDropdownOptions = {}\n): UseDropdownReturn {\n const { teleport = true, align = 'left', gap = 8, onOpen, onClose } = options\n\n const isOpen = ref(false)\n const highlightedIndex = ref(-1)\n const dropdownPosition = ref({ top: 0, left: 0, right: 0, width: 0 })\n\n const updatePosition = () => {\n if (!triggerRef.value || !teleport) return\n const rect = triggerRef.value.getBoundingClientRect()\n dropdownPosition.value = {\n top: rect.bottom + window.scrollY + gap,\n left: rect.left + window.scrollX,\n right: window.innerWidth - rect.right - window.scrollX,\n width: rect.width,\n }\n }\n\n const open = () => {\n isOpen.value = true\n nextTick(updatePosition)\n onOpen?.()\n }\n\n const close = () => {\n isOpen.value = false\n highlightedIndex.value = -1\n onClose?.()\n }\n\n const toggle = () => {\n if (isOpen.value) {\n close()\n } else {\n open()\n }\n }\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isInsideTrigger = triggerRef.value?.contains(target)\n const isInsideDropdown = dropdownRef.value?.contains(target)\n if (!isInsideTrigger && !isInsideDropdown) {\n close()\n }\n }\n\n const scrollToHighlighted = (dropdownEl: HTMLElement | null) => {\n nextTick(() => {\n if (dropdownEl) {\n const highlighted = dropdownEl.querySelector(\n `[data-index=\"${highlightedIndex.value}\"]`\n ) as HTMLElement\n if (highlighted) {\n highlighted.scrollIntoView({ block: 'nearest' })\n }\n }\n })\n }\n\n const handleKeydown = (event: KeyboardEvent, navOptions: KeyboardNavigationOptions) => {\n const { itemCount, onSelect, onOpen: onOpenNav, handleOpenKeys = false } = navOptions\n\n if (!isOpen.value) {\n if (handleOpenKeys && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault()\n onOpenNav?.()\n open()\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n highlightedIndex.value = Math.min(highlightedIndex.value + 1, itemCount - 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0)\n break\n case 'Enter':\n event.preventDefault()\n if (highlightedIndex.value >= 0) {\n onSelect?.(highlightedIndex.value)\n }\n break\n case 'Escape':\n event.preventDefault()\n close()\n break\n case 'Tab':\n close()\n break\n }\n }\n\n const dropdownStyle = computed(() => {\n if (!teleport) return {} as Record<string, string>\n return {\n position: 'absolute',\n top: `${dropdownPosition.value.top}px`,\n left: align === 'right' ? 'auto' : `${dropdownPosition.value.left}px`,\n right: align === 'right' ? `${dropdownPosition.value.right}px` : 'auto',\n width: `${dropdownPosition.value.width}px`,\n } as Record<string, string>\n })\n\n // Event listener management\n watch(isOpen, (newValue) => {\n if (newValue) {\n document.addEventListener('click', handleClickOutside)\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n } else {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n })\n\n onUnmounted(() => {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n })\n\n return {\n isOpen,\n highlightedIndex,\n dropdownPosition,\n dropdownStyle,\n open,\n close,\n toggle,\n updatePosition,\n handleKeydown,\n scrollToHighlighted,\n }\n}\n"],"names":["ref","nextTick","computed","watch","onUnmounted"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDropdown-iVu14E6s.js","sources":["../src/composables/useDropdown.ts"],"sourcesContent":["import { ref, computed, watch, onUnmounted, nextTick, type Ref, type ComputedRef } from 'vue'\n\nexport interface UseDropdownOptions {\n /** Whether teleport is enabled (affects position calculation) */\n teleport?: boolean\n /** Alignment for position calculation */\n align?: 'left' | 'right'\n /** Gap between trigger and dropdown in pixels */\n gap?: number\n /** Callback when dropdown opens */\n onOpen?: () => void\n /** Callback when dropdown closes */\n onClose?: () => void\n}\n\nexport interface UseDropdownReturn {\n /** Whether the dropdown is currently open */\n isOpen: Ref<boolean>\n /** Current highlighted index for keyboard navigation */\n highlightedIndex: Ref<number>\n /** Calculated position for teleported dropdown */\n dropdownPosition: Ref<{ top: number; left: number; right: number; width: number }>\n /** Computed style object for teleported dropdown */\n dropdownStyle: ComputedRef<Record<string, string>>\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Toggle the dropdown */\n toggle: () => void\n /** Update position (call after DOM changes) */\n updatePosition: () => void\n /** Handle keyboard navigation */\n handleKeydown: (event: KeyboardEvent, options: KeyboardNavigationOptions) => void\n /** Scroll to highlighted item */\n scrollToHighlighted: (dropdownEl: HTMLElement | null) => void\n}\n\nexport interface KeyboardNavigationOptions {\n /** Total number of items to navigate */\n itemCount: number\n /** Called when Enter is pressed on a highlighted item */\n onSelect?: (index: number) => void\n /** Called when the dropdown should open (Space/Enter/ArrowDown when closed) */\n onOpen?: () => void\n /** Whether to handle open keys (Space/Enter/ArrowDown) when closed */\n handleOpenKeys?: boolean\n}\n\nexport function useDropdown(\n triggerRef: Ref<HTMLElement | null | undefined>,\n dropdownRef: Ref<HTMLElement | null | undefined>,\n options: UseDropdownOptions = {}\n): UseDropdownReturn {\n const { teleport = true, align = 'left', gap = 8, onOpen, onClose } = options\n\n const isOpen = ref(false)\n const highlightedIndex = ref(-1)\n const dropdownPosition = ref({ top: 0, left: 0, right: 0, width: 0 })\n\n const updatePosition = () => {\n if (!triggerRef.value || !teleport) return\n const rect = triggerRef.value.getBoundingClientRect()\n dropdownPosition.value = {\n top: rect.bottom + window.scrollY + gap,\n left: rect.left + window.scrollX,\n right: window.innerWidth - rect.right - window.scrollX,\n width: rect.width,\n }\n }\n\n const open = () => {\n isOpen.value = true\n nextTick(updatePosition)\n onOpen?.()\n }\n\n const close = () => {\n isOpen.value = false\n highlightedIndex.value = -1\n onClose?.()\n }\n\n const toggle = () => {\n if (isOpen.value) {\n close()\n } else {\n open()\n }\n }\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node\n const isInsideTrigger = triggerRef.value?.contains(target)\n const isInsideDropdown = dropdownRef.value?.contains(target)\n if (!isInsideTrigger && !isInsideDropdown) {\n close()\n }\n }\n\n const scrollToHighlighted = (dropdownEl: HTMLElement | null) => {\n nextTick(() => {\n if (dropdownEl) {\n const highlighted = dropdownEl.querySelector(\n `[data-index=\"${highlightedIndex.value}\"]`\n ) as HTMLElement\n if (highlighted) {\n highlighted.scrollIntoView({ block: 'nearest' })\n }\n }\n })\n }\n\n const handleKeydown = (event: KeyboardEvent, navOptions: KeyboardNavigationOptions) => {\n const { itemCount, onSelect, onOpen: onOpenNav, handleOpenKeys = false } = navOptions\n\n if (!isOpen.value) {\n if (handleOpenKeys && (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown')) {\n event.preventDefault()\n onOpenNav?.()\n open()\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n highlightedIndex.value = Math.min(highlightedIndex.value + 1, itemCount - 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0)\n break\n case 'Enter':\n event.preventDefault()\n if (highlightedIndex.value >= 0) {\n onSelect?.(highlightedIndex.value)\n }\n break\n case 'Escape':\n event.preventDefault()\n close()\n break\n case 'Tab':\n close()\n break\n }\n }\n\n const dropdownStyle = computed(() => {\n if (!teleport) return {} as Record<string, string>\n return {\n position: 'absolute',\n top: `${dropdownPosition.value.top}px`,\n left: align === 'right' ? 'auto' : `${dropdownPosition.value.left}px`,\n right: align === 'right' ? `${dropdownPosition.value.right}px` : 'auto',\n width: `${dropdownPosition.value.width}px`,\n } as Record<string, string>\n })\n\n // Event listener management\n watch(isOpen, (newValue) => {\n if (newValue) {\n document.addEventListener('click', handleClickOutside)\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n } else {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n })\n\n onUnmounted(() => {\n document.removeEventListener('click', handleClickOutside)\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n })\n\n return {\n isOpen,\n highlightedIndex,\n dropdownPosition,\n dropdownStyle,\n open,\n close,\n toggle,\n updatePosition,\n handleKeydown,\n scrollToHighlighted,\n }\n}\n"],"names":[],"mappings":"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"}
|