admins-components 9.0.66 → 9.0.67
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/admins-components.js +39 -39
- package/dist/admins-components100.js +75 -249
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components102.js +2 -2
- package/dist/admins-components102.js.map +1 -1
- package/dist/admins-components103.js +256 -3
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components105.js +6 -52
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components106.js +3 -82
- package/dist/admins-components106.js.map +1 -1
- package/dist/admins-components107.js +3 -113
- package/dist/admins-components107.js.map +1 -1
- package/dist/admins-components108.js +49 -44
- package/dist/admins-components108.js.map +1 -1
- package/dist/admins-components109.js +80 -104
- package/dist/admins-components109.js.map +1 -1
- package/dist/admins-components110.js +109 -16
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +46 -6
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js +100 -246
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +19 -26
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components114.js +6 -27
- package/dist/admins-components114.js.map +1 -1
- package/dist/admins-components115.js +239 -159
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +26 -67
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +25 -64
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +169 -27
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +65 -13
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components120.js +64 -24
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +29 -8
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +16 -4
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components123.js +27 -3
- package/dist/admins-components123.js.map +1 -1
- package/dist/admins-components124.js +8 -2
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components125.js +4 -21
- package/dist/admins-components125.js.map +1 -1
- package/dist/admins-components126.js +3 -14
- package/dist/admins-components126.js.map +1 -1
- package/dist/admins-components127.js +3 -8
- package/dist/admins-components127.js.map +1 -1
- package/dist/admins-components128.js +19 -11
- package/dist/admins-components128.js.map +1 -1
- package/dist/admins-components129.js +14 -26
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components130.js +7 -82
- package/dist/admins-components130.js.map +1 -1
- package/dist/admins-components131.js +9 -7
- package/dist/admins-components131.js.map +1 -1
- package/dist/admins-components132.js +25 -4
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js +81 -6
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components134.js +10 -6
- package/dist/admins-components134.js.map +1 -1
- package/dist/admins-components135.js +2 -3
- package/dist/admins-components135.js.map +1 -1
- package/dist/admins-components136.js +8 -15
- package/dist/admins-components136.js.map +1 -1
- package/dist/admins-components137.js +6 -12
- package/dist/admins-components137.js.map +1 -1
- package/dist/admins-components138.js +6 -30
- package/dist/admins-components138.js.map +1 -1
- package/dist/admins-components139.js +15 -4
- package/dist/admins-components139.js.map +1 -1
- package/dist/admins-components140.js +13 -29
- package/dist/admins-components140.js.map +1 -1
- package/dist/admins-components141.js +30 -5
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js +4 -5
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +28 -7
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +4 -73
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +4 -28
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +8 -59
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +72 -22
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +26 -47
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +58 -30
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +24 -3
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +44 -173
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +28 -43
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +3 -37
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +176 -43
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +41 -136
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +36 -57
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +44 -5
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +141 -6
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +57 -75
- package/dist/admins-components159.js.map +1 -1
- package/dist/admins-components160.js +6 -28
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +5 -1930
- package/dist/admins-components161.js.map +1 -1
- package/dist/admins-components162.js +75 -24810
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +28 -8
- package/dist/admins-components163.js.map +1 -1
- package/dist/admins-components164.js +1929 -5
- package/dist/admins-components164.js.map +1 -0
- package/dist/admins-components165.js +24809 -140
- package/dist/admins-components165.js.map +1 -1
- package/dist/admins-components166.js +3 -3
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +7 -9
- package/dist/admins-components168.js +143 -0
- package/dist/admins-components168.js.map +1 -0
- package/dist/admins-components169.js +8 -167
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components170.js +8 -52
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components172.js +161 -43
- package/dist/admins-components172.js.map +1 -1
- package/dist/admins-components173.js +53 -6
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +8 -79
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +35 -43
- package/dist/admins-components175.js.map +1 -1
- package/dist/admins-components176.js +6 -63
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components177.js +79 -8
- package/dist/admins-components177.js.map +1 -1
- package/dist/admins-components178.js +43 -37
- package/dist/admins-components178.js.map +1 -1
- package/dist/admins-components179.js +62 -8
- package/dist/admins-components179.js.map +1 -1
- package/dist/admins-components180.js +10 -0
- package/dist/admins-components180.js.map +1 -0
- package/dist/admins-components181.js +44 -50
- package/dist/admins-components181.js.map +1 -1
- package/dist/admins-components182.js +10 -0
- package/dist/admins-components182.js.map +1 -0
- package/dist/admins-components184.js +59 -0
- package/dist/admins-components184.js.map +1 -0
- package/dist/admins-components29.js.map +1 -1
- package/dist/admins-components30.js.map +1 -1
- package/dist/admins-components5.js.map +1 -1
- package/dist/admins-components6.js.map +1 -1
- package/dist/admins-components60.js +28 -73
- package/dist/admins-components60.js.map +1 -1
- package/dist/admins-components62.js +4 -2
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components63.js +95 -88
- package/dist/admins-components63.js.map +1 -1
- package/dist/admins-components64.js +70 -4
- package/dist/admins-components64.js.map +1 -1
- package/dist/admins-components65.js +4 -157
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components66.js +90 -0
- package/dist/admins-components66.js.map +1 -0
- package/dist/admins-components67.js +2 -5
- package/dist/admins-components67.js.map +1 -1
- package/dist/admins-components68.js +130 -136
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components70.js +2 -2
- package/dist/admins-components70.js.map +1 -1
- package/dist/admins-components71.js +163 -7
- package/dist/admins-components71.js.map +1 -1
- package/dist/admins-components73.js +8 -0
- package/dist/admins-components73.js.map +1 -0
- package/dist/admins-components74.js +7 -6
- package/dist/admins-components74.js.map +1 -1
- package/dist/admins-components75.js +289 -8
- package/dist/admins-components75.js.map +1 -1
- package/dist/admins-components77.js +6 -145
- package/dist/admins-components77.js.map +1 -1
- package/dist/admins-components78.js +10 -0
- package/dist/admins-components78.js.map +1 -0
- package/dist/admins-components79.js +43 -6
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components80.js +130 -121
- package/dist/admins-components80.js.map +1 -1
- package/dist/admins-components82.js +2 -2
- package/dist/admins-components82.js.map +1 -1
- package/dist/admins-components83.js +133 -56
- package/dist/admins-components83.js.map +1 -1
- package/dist/admins-components85.js +6 -238
- package/dist/admins-components85.js.map +1 -1
- package/dist/admins-components86.js +60 -0
- package/dist/admins-components86.js.map +1 -0
- package/dist/admins-components87.js +67 -6
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components88.js +216 -208
- package/dist/admins-components88.js.map +1 -1
- package/dist/admins-components90.js +2 -2
- package/dist/admins-components90.js.map +1 -1
- package/dist/admins-components91.js +218 -58
- package/dist/admins-components91.js.map +1 -1
- package/dist/admins-components93.js +2 -2
- package/dist/admins-components93.js.map +1 -1
- package/dist/admins-components94.js +65 -194
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +2 -2
- package/dist/admins-components96.js.map +1 -1
- package/dist/admins-components97.js +188 -71
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +2 -2
- package/dist/admins-components99.js.map +1 -1
- package/dist/src/components/Button.vue.d.ts +0 -4
- package/dist/src/components/DropdownMenu.vue.d.ts +0 -4
- package/dist/src/components/data-table/DataList.vue.d.ts +0 -5
- package/dist/src/components/data-table/DataSearch.vue.d.ts +0 -4
- package/dist/src/components/data-table/DataSort.vue.d.ts +0 -5
- package/dist/src/components/data-table/FilterTags.vue.d.ts +0 -6
- package/dist/src/components/data-table/TagList.vue.d.ts +18 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/styles/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css +1 -0
- package/dist/src/utils/dataListConverters.d.ts +16 -1
- package/package.json +1 -1
- package/dist/admins-components104.js +0 -4
- package/dist/admins-components104.js.map +0 -1
- package/dist/admins-components167.js.map +0 -1
- package/dist/admins-components171.js +0 -10
- package/dist/admins-components171.js.map +0 -1
- package/dist/admins-components61.js +0 -71
- package/dist/admins-components61.js.map +0 -1
- package/dist/admins-components72.js +0 -289
- package/dist/admins-components72.js.map +0 -1
- package/dist/admins-components76.js +0 -44
- package/dist/admins-components76.js.map +0 -1
- package/dist/admins-components84.js +0 -68
- package/dist/admins-components84.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components80.js","names":[],"sources":["../src/components/data-table/DataSort.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface DataSortOption {\n value: string\n label: string\n icon?: string\n}\n\nexport interface DataSortProps {\n modelValue: { key: string; direction: SortDirection } | null\n options: DataSortOption[]\n placeholder?: string\n handleUrl?: boolean\n disabled?: boolean\n}\n\n/**\n * Resolve the initial sort state from the URL.\n * URL is the only source — there is no localStorage fallback for sort.\n * Returns `null` if no valid `sortBy` + `sortDir` pair is present in the URL.\n */\nexport function getDefaultSort(): { key: string; direction: SortDirection } | null {\n if (typeof window === 'undefined') return null\n const params = new URLSearchParams(window.location.search)\n const key = params.get('sortBy')\n const dir = params.get('sortDir')\n if (key && (dir === 'asc' || dir === 'desc')) {\n return { key, direction: dir }\n }\n return null\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport DropdownSelect from '@/components/DropdownSelect.vue'\nimport { useDropdownAnchor } from '@/composables/useDropdownAnchor'\nimport { writeUrlOrRemove } from '@/utils/url'\nimport Button from '../Button.vue'\n\nconst props = withDefaults(defineProps<DataSortProps>(), {\n placeholder: 'Rendezés...',\n handleUrl: false,\n disabled: false\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [sort: { key: string; direction: SortDirection } | null]\n 'sort-change': [sort: { key: string; direction: SortDirection } | null]\n}>()\n\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst { isOpen, dropdownStyle } = useDropdownAnchor(wrapperRef, dropdownRef, {\n extraStyle: (rect) => ({ minWidth: `${Math.max(rect.width, 240)}px` }),\n closeOnScroll: true,\n})\n\nconst sortBy = computed<string | string[] | null>({\n get: () => props.modelValue?.key ?? null,\n set: (v) => {\n if (Array.isArray(v)) return\n emitChange(v, props.modelValue?.direction ?? 'asc')\n },\n})\n\nconst direction = computed<SortDirection>({\n get: () => props.modelValue?.direction ?? 'asc',\n set: (d) => emitChange(props.modelValue?.key ?? null, d),\n})\n\nconst activeLabel = computed(() => {\n if (!props.modelValue) return props.placeholder\n const opt = props.options.find((o) => o.value === props.modelValue!.key)\n const label = opt?.label ?? props.modelValue.key\n return `${label} (${props.modelValue.direction === 'asc' ? 'növekvő' : 'csökkenő'})`\n})\n\nfunction emitChange(key: string | null, dir: SortDirection) {\n if (key == null) {\n if (props.handleUrl) {\n writeUrlOrRemove('sortBy', null, { handleUrl: true })\n writeUrlOrRemove('sortDir', null, { handleUrl: true })\n }\n emit('update:modelValue', null)\n emit('sort-change', null)\n return\n }\n if (props.handleUrl) {\n writeUrlOrRemove('sortBy', key, { handleUrl: true })\n writeUrlOrRemove('sortDir', dir, { handleUrl: true, default: 'asc' })\n }\n const next = { key, direction: dir }\n emit('update:modelValue', next)\n emit('sort-change', next)\n}\n\nfunction clear() {\n emitChange(null, 'asc')\n isOpen.value = false\n}\n\n// Read initial state from URL on mount when handleUrl is true and modelValue is empty.\nwatch(\n isOpen,\n (open) => {\n if (!open || !props.handleUrl || props.modelValue) return\n const sort = getDefaultSort()\n if (sort) emitChange(sort.key, sort.direction)\n },\n { immediate: true },\n)\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"ds-sort-wrapper\">\n <button\n type=\"button\"\n class=\"c-btn ds-sort-trigger lh-1\"\n :class=\"[modelValue && 'is-active', disabled && 'is-disabled', isOpen && 'is-open']\"\n :disabled=\"disabled\"\n :aria-label=\"`Rendezés: ${activeLabel}`\"\n @click=\"isOpen = !isOpen\"\n >\n <i\n class=\"fa-solid fa-fw\"\n :class=\"\n !modelValue || modelValue.direction === 'asc'\n ? 'fa-arrow-up-wide-short'\n : 'fa-arrow-down-wide-short'\n \"\n ></i>\n <span class=\"ds-sort-label c-truncate\">{{ activeLabel }}</span>\n <button\n v-if=\"modelValue\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-sort-clear\"\n aria-label=\"Rendezés törlése\"\n title=\"Rendezés törlése\"\n @click.stop=\"clear\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </button>\n\n <Teleport to=\"body\">\n <div class=\"ac-component\">\n <div v-if=\"isOpen\" ref=\"dropdownRef\" class=\"ds-sort-panel\" :style=\"dropdownStyle\">\n\n <div class=\"ds-sort-panel__row\">\n <label class=\"ds-sort-panel__label\">Oszlop</label>\n <DropdownSelect\n :model-value=\"sortBy\"\n :options=\"options\"\n :config=\"{\n clearable: false,\n placeholder: 'Válassz oszlopot...',\n filterable: false,\n }\"\n @update:model-value=\"(v) => (sortBy = v)\"\n />\n </div>\n\n <div class=\"ds-sort-panel__row\">\n <span class=\"ds-sort-panel__label\">Irány</span>\n <div class=\"ds-sort-direction\" role=\"group\" aria-label=\"Rendezés iránya\">\n <button\n type=\"button\"\n class=\"ds-sort-direction__btn\"\n :class=\"{ 'is-active': direction === 'asc' }\"\n :aria-pressed=\"direction === 'asc'\"\n aria-label=\"Növekvő\"\n @click=\"direction = 'asc'\"\n >\n <i class=\"fa-solid fa-fw fa-arrow-up-wide-short\"></i>\n <span>Növekvő</span>\n </button>\n <button\n type=\"button\"\n class=\"ds-sort-direction__btn dir-desc\"\n :class=\"{ 'is-active': direction === 'desc' }\"\n :aria-pressed=\"direction === 'desc'\"\n aria-label=\"Csökkenő\"\n @click=\"direction = 'desc'\"\n >\n <i class=\"fa-solid fa-fw fa-arrow-down-wide-short\"></i>\n <span>Csökkenő</span>\n </button>\n </div>\n </div>\n\n <div class=\"ds-sort-panel__footer\">\n <Button label=\"Rendben\" outline size=\"small\" @click=\"isOpen = false\" />\n </div>\n </div>\n </div>\n </Teleport>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-sort.scss\"></style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components80.js","names":[],"sources":["../src/components/data-table/DataPaginator.vue"],"sourcesContent":["<script lang=\"ts\">\nconst SIZE_OPTIONS = [10, 25, 50, 100]\nconst DEFAULT_PAGE_SIZE = 25\n\nexport function getPageSize(storageKey: string): number {\n // URL > localStorage > default\n const urlSize = readUrlNumber('pageSize')\n if (urlSize != null) return urlSize\n try {\n const fullStorageKey = getFullStorageKey('pagination', storageKey)\n const raw = localStorage.getItem(fullStorageKey)\n if (raw) {\n const size = Number(raw)\n if (size > 0) return size\n }\n } catch {\n console.warn('Failed to read page size from localStorage')\n }\n return DEFAULT_PAGE_SIZE\n}\n\nexport function getDefaultPaginator(storageKey: string) {\n return {\n total: 0,\n page: readUrlNumber('page') ?? 1,\n pageSize: getPageSize(storageKey),\n } as PaginatorSettings\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { PaginatorSettings, PageSettings } from '@/types/data-list'\nimport { getFullStorageKey } from '@/utils/storageKey'\nimport { readUrlNumber, writeUrlOrRemove } from '@/utils/url'\n\nconst props = withDefaults(\n defineProps<{ settings: PaginatorSettings; storageKey: string; handleUrl?: boolean }>(),\n { handleUrl: false },\n)\n\nconst emit = defineEmits<{\n 'update:pagination': [pagination: PageSettings]\n}>()\n\nfunction savePageSize(size: number) {\n try {\n localStorage.setItem(getFullStorageKey('pagination', props.storageKey), String(size))\n } catch {\n console.warn('Failed to save page size to localStorage')\n }\n}\n\nconst totalPages = computed(() =>\n Math.max(1, Math.ceil(props.settings.total / props.settings.pageSize)),\n)\n\nconst rangeStart = computed(() =>\n props.settings.total === 0 ? 0 : (props.settings.page - 1) * props.settings.pageSize + 1,\n)\nconst rangeEnd = computed(() =>\n Math.min(props.settings.page * props.settings.pageSize, props.settings.total),\n)\n\nconst visiblePages = computed<(number | '...')[]>(() => {\n const total = totalPages.value\n const current = props.settings.page\n\n if (total <= SLOT_COUNT) {\n const pages: number[] = []\n for (let i = 1; i <= total; i++) pages.push(i)\n return pages\n }\n\n const inner = SLOT_COUNT - 2\n let winStart = current - 1\n let winEnd = current + 1\n if (winStart < 2) {\n winEnd = Math.min(total - 1, winEnd + (2 - winStart))\n winStart = 2\n }\n if (winEnd > total - 1) {\n winStart = Math.max(2, winStart - (winEnd - (total - 1)))\n winEnd = total - 1\n }\n\n while (winEnd - winStart + 1 < inner) {\n const canExtendLeft = winStart > 2\n const canExtendRight = winEnd < total - 1\n if (!canExtendLeft && !canExtendRight) break\n\n const roomLeft = winStart - 2\n const roomRight = total - 1 - winEnd\n\n const ellipsisIfExtendLeft =\n ((canExtendLeft ? winStart - 1 : 0) > 2 ? 1 : 0) + (winEnd < total - 1 ? 1 : 0)\n const ellipsisIfExtendRight =\n (winStart > 2 ? 1 : 0) + ((canExtendRight ? winEnd + 1 : 0) < total - 1 ? 1 : 0)\n\n const newSize = winEnd - winStart + 2\n\n let extended = false\n if (\n canExtendLeft &&\n (roomLeft >= roomRight || !canExtendRight) &&\n newSize + ellipsisIfExtendLeft <= inner\n ) {\n winStart--\n extended = true\n } else if (canExtendRight && newSize + ellipsisIfExtendRight <= inner) {\n winEnd++\n extended = true\n }\n if (!extended) break\n }\n const showLeftEllipsis = winStart > 2\n const showRightEllipsis = winEnd < total - 1\n\n const pages: (number | '...')[] = []\n pages.push(1)\n if (showLeftEllipsis) pages.push('...')\n for (let p = winStart; p <= winEnd; p++) pages.push(p)\n if (showRightEllipsis) pages.push('...')\n pages.push(total)\n\n return pages\n})\n\nconst SLOT_COUNT = 7\n\nfunction shouldHideOnSmall(page: number) {\n const current = props.settings.page\n const total = totalPages.value\n\n const isEdge = page === 1 || page === total\n const isCurrent = page === current\n\n const isMiddleRange = current > 3 && current < total - 2\n\n return isMiddleRange && !isEdge && !isCurrent\n}\n\nfunction goToPage(page: number) {\n if (page < 1 || page > totalPages.value || page === props.settings.page) return\n writeUrlOrRemove('page', page, { handleUrl: props.handleUrl, default: 1 })\n writeUrlOrRemove('pageSize', props.settings.pageSize, { handleUrl: props.handleUrl })\n emit('update:pagination', { page, pageSize: props.settings.pageSize })\n}\n\nfunction changePageSize(event: Event) {\n const size = Number((event.target as HTMLSelectElement).value)\n savePageSize(size)\n writeUrlOrRemove('pageSize', size, { handleUrl: props.handleUrl })\n writeUrlOrRemove('page', 1, { handleUrl: props.handleUrl, default: 1 })\n emit('update:pagination', { page: 1, pageSize: size })\n}\n\nonMounted(() => {\n if (!props.handleUrl) return\n // URL only counts if BOTH `page` and `pageSize` are present and valid.\n // It wins for this load but is intentionally NOT written to localStorage —\n // localStorage holds the user's persistent preference and must not be\n // polluted by transient URL state.\n const urlSize = readUrlNumber('pageSize')\n const urlPage = readUrlNumber('page')\n if (urlSize == null || urlPage == null) return\n if (urlSize === props.settings.pageSize && urlPage === props.settings.page) return\n emit('update:pagination', { page: urlPage, pageSize: urlSize })\n})\n</script>\n\n<template>\n <div class=\"ac-component c-paginator-wrapper\">\n <div class=\"c-paginator\">\n <div class=\"c-paginator__info\">\n <span class=\"c-paginator__range\">{{ rangeStart }}–{{ rangeEnd }}</span>\n <span class=\"c-paginator__total\"> / {{ settings.total }}</span>\n </div>\n\n <nav class=\"c-paginator__nav\" aria-label=\"Pagination\">\n <Button\n icon=\"fa-solid fa-chevron-left\"\n rel=\"prev\"\n :disabled=\"settings.page <= 1\"\n :callback=\"() => goToPage(settings.page - 1)\"\n />\n\n <template v-for=\"(p, i) in visiblePages\" :key=\"i\">\n <span v-if=\"p === '...'\" class=\"c-paginator__ellipsis\">…</span>\n <button\n v-else\n type=\"button\"\n class=\"c-paginator__page\"\n :class=\"{\n 'is-active': p === settings.page,\n 'is-hidden-sm': shouldHideOnSmall(p),\n }\"\n @click=\"goToPage(p)\"\n >\n {{ p }}\n </button>\n </template>\n\n <Button\n icon=\"fa-solid fa-chevron-right\"\n rel=\"next\"\n :disabled=\"settings.page >= totalPages\"\n :callback=\"() => goToPage(settings.page + 1)\"\n />\n </nav>\n\n <div class=\"c-paginator__size\">\n <select\n class=\"c-paginator__select\"\n id=\"page-size-select\"\n :value=\"settings.pageSize\"\n @change=\"changePageSize\"\n >\n <option v-for=\"s in SIZE_OPTIONS\" :key=\"s\" :value=\"s\">{{ s }} elem / oldal</option>\n </select>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-paginator.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import './src/styles/components/data-table/data-
|
|
1
|
+
import './src/styles/components/data-table/data-paginator.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
2
|
import e from "./admins-components80.js";
|
|
3
3
|
/* empty css */
|
|
4
|
-
//#region src/components/data-table/
|
|
4
|
+
//#region src/components/data-table/DataPaginator.vue
|
|
5
5
|
var t = e;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { t as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components82.js","names":[],"sources":["../src/components/data-table/
|
|
1
|
+
{"version":3,"file":"admins-components82.js","names":[],"sources":["../src/components/data-table/DataPaginator.vue"],"sourcesContent":["<script lang=\"ts\">\nconst SIZE_OPTIONS = [10, 25, 50, 100]\nconst DEFAULT_PAGE_SIZE = 25\n\nexport function getPageSize(storageKey: string): number {\n // URL > localStorage > default\n const urlSize = readUrlNumber('pageSize')\n if (urlSize != null) return urlSize\n try {\n const fullStorageKey = getFullStorageKey('pagination', storageKey)\n const raw = localStorage.getItem(fullStorageKey)\n if (raw) {\n const size = Number(raw)\n if (size > 0) return size\n }\n } catch {\n console.warn('Failed to read page size from localStorage')\n }\n return DEFAULT_PAGE_SIZE\n}\n\nexport function getDefaultPaginator(storageKey: string) {\n return {\n total: 0,\n page: readUrlNumber('page') ?? 1,\n pageSize: getPageSize(storageKey),\n } as PaginatorSettings\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { PaginatorSettings, PageSettings } from '@/types/data-list'\nimport { getFullStorageKey } from '@/utils/storageKey'\nimport { readUrlNumber, writeUrlOrRemove } from '@/utils/url'\n\nconst props = withDefaults(\n defineProps<{ settings: PaginatorSettings; storageKey: string; handleUrl?: boolean }>(),\n { handleUrl: false },\n)\n\nconst emit = defineEmits<{\n 'update:pagination': [pagination: PageSettings]\n}>()\n\nfunction savePageSize(size: number) {\n try {\n localStorage.setItem(getFullStorageKey('pagination', props.storageKey), String(size))\n } catch {\n console.warn('Failed to save page size to localStorage')\n }\n}\n\nconst totalPages = computed(() =>\n Math.max(1, Math.ceil(props.settings.total / props.settings.pageSize)),\n)\n\nconst rangeStart = computed(() =>\n props.settings.total === 0 ? 0 : (props.settings.page - 1) * props.settings.pageSize + 1,\n)\nconst rangeEnd = computed(() =>\n Math.min(props.settings.page * props.settings.pageSize, props.settings.total),\n)\n\nconst visiblePages = computed<(number | '...')[]>(() => {\n const total = totalPages.value\n const current = props.settings.page\n\n if (total <= SLOT_COUNT) {\n const pages: number[] = []\n for (let i = 1; i <= total; i++) pages.push(i)\n return pages\n }\n\n const inner = SLOT_COUNT - 2\n let winStart = current - 1\n let winEnd = current + 1\n if (winStart < 2) {\n winEnd = Math.min(total - 1, winEnd + (2 - winStart))\n winStart = 2\n }\n if (winEnd > total - 1) {\n winStart = Math.max(2, winStart - (winEnd - (total - 1)))\n winEnd = total - 1\n }\n\n while (winEnd - winStart + 1 < inner) {\n const canExtendLeft = winStart > 2\n const canExtendRight = winEnd < total - 1\n if (!canExtendLeft && !canExtendRight) break\n\n const roomLeft = winStart - 2\n const roomRight = total - 1 - winEnd\n\n const ellipsisIfExtendLeft =\n ((canExtendLeft ? winStart - 1 : 0) > 2 ? 1 : 0) + (winEnd < total - 1 ? 1 : 0)\n const ellipsisIfExtendRight =\n (winStart > 2 ? 1 : 0) + ((canExtendRight ? winEnd + 1 : 0) < total - 1 ? 1 : 0)\n\n const newSize = winEnd - winStart + 2\n\n let extended = false\n if (\n canExtendLeft &&\n (roomLeft >= roomRight || !canExtendRight) &&\n newSize + ellipsisIfExtendLeft <= inner\n ) {\n winStart--\n extended = true\n } else if (canExtendRight && newSize + ellipsisIfExtendRight <= inner) {\n winEnd++\n extended = true\n }\n if (!extended) break\n }\n const showLeftEllipsis = winStart > 2\n const showRightEllipsis = winEnd < total - 1\n\n const pages: (number | '...')[] = []\n pages.push(1)\n if (showLeftEllipsis) pages.push('...')\n for (let p = winStart; p <= winEnd; p++) pages.push(p)\n if (showRightEllipsis) pages.push('...')\n pages.push(total)\n\n return pages\n})\n\nconst SLOT_COUNT = 7\n\nfunction shouldHideOnSmall(page: number) {\n const current = props.settings.page\n const total = totalPages.value\n\n const isEdge = page === 1 || page === total\n const isCurrent = page === current\n\n const isMiddleRange = current > 3 && current < total - 2\n\n return isMiddleRange && !isEdge && !isCurrent\n}\n\nfunction goToPage(page: number) {\n if (page < 1 || page > totalPages.value || page === props.settings.page) return\n writeUrlOrRemove('page', page, { handleUrl: props.handleUrl, default: 1 })\n writeUrlOrRemove('pageSize', props.settings.pageSize, { handleUrl: props.handleUrl })\n emit('update:pagination', { page, pageSize: props.settings.pageSize })\n}\n\nfunction changePageSize(event: Event) {\n const size = Number((event.target as HTMLSelectElement).value)\n savePageSize(size)\n writeUrlOrRemove('pageSize', size, { handleUrl: props.handleUrl })\n writeUrlOrRemove('page', 1, { handleUrl: props.handleUrl, default: 1 })\n emit('update:pagination', { page: 1, pageSize: size })\n}\n\nonMounted(() => {\n if (!props.handleUrl) return\n // URL only counts if BOTH `page` and `pageSize` are present and valid.\n // It wins for this load but is intentionally NOT written to localStorage —\n // localStorage holds the user's persistent preference and must not be\n // polluted by transient URL state.\n const urlSize = readUrlNumber('pageSize')\n const urlPage = readUrlNumber('page')\n if (urlSize == null || urlPage == null) return\n if (urlSize === props.settings.pageSize && urlPage === props.settings.page) return\n emit('update:pagination', { page: urlPage, pageSize: urlSize })\n})\n</script>\n\n<template>\n <div class=\"ac-component c-paginator-wrapper\">\n <div class=\"c-paginator\">\n <div class=\"c-paginator__info\">\n <span class=\"c-paginator__range\">{{ rangeStart }}–{{ rangeEnd }}</span>\n <span class=\"c-paginator__total\"> / {{ settings.total }}</span>\n </div>\n\n <nav class=\"c-paginator__nav\" aria-label=\"Pagination\">\n <Button\n icon=\"fa-solid fa-chevron-left\"\n rel=\"prev\"\n :disabled=\"settings.page <= 1\"\n :callback=\"() => goToPage(settings.page - 1)\"\n />\n\n <template v-for=\"(p, i) in visiblePages\" :key=\"i\">\n <span v-if=\"p === '...'\" class=\"c-paginator__ellipsis\">…</span>\n <button\n v-else\n type=\"button\"\n class=\"c-paginator__page\"\n :class=\"{\n 'is-active': p === settings.page,\n 'is-hidden-sm': shouldHideOnSmall(p),\n }\"\n @click=\"goToPage(p)\"\n >\n {{ p }}\n </button>\n </template>\n\n <Button\n icon=\"fa-solid fa-chevron-right\"\n rel=\"next\"\n :disabled=\"settings.page >= totalPages\"\n :callback=\"() => goToPage(settings.page + 1)\"\n />\n </nav>\n\n <div class=\"c-paginator__size\">\n <select\n class=\"c-paginator__select\"\n id=\"page-size-select\"\n :value=\"settings.pageSize\"\n @change=\"changePageSize\"\n >\n <option v-for=\"s in SIZE_OPTIONS\" :key=\"s\" :value=\"s\">{{ s }} elem / oldal</option>\n </select>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-paginator.scss\"></style>\n"],"mappings":""}
|
|
@@ -1,60 +1,137 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import e from "./admins-components6.js";
|
|
2
|
+
import { useDropdownAnchor as t } from "./admins-components12.js";
|
|
3
|
+
import n from "./admins-components28.js";
|
|
4
|
+
import { writeUrlOrRemove as r } from "./admins-components79.js";
|
|
5
|
+
import { Teleport as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineComponent as d, normalizeClass as f, normalizeStyle as p, openBlock as m, ref as h, toDisplayString as g, unref as _, watch as v, withModifiers as y } from "vue";
|
|
6
|
+
//#region src/components/data-table/DataSort.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var b = { class: "ac-component" }, x = ["disabled", "aria-label"], S = { class: "ds-sort-label c-truncate" }, C = { class: "ac-component" }, w = { class: "ds-sort-panel__row" }, T = { class: "ds-sort-panel__row" }, E = {
|
|
8
|
+
class: "ds-sort-direction",
|
|
9
|
+
role: "group",
|
|
10
|
+
"aria-label": "Rendezés iránya"
|
|
11
|
+
}, D = ["aria-pressed"], O = ["aria-pressed"], k = { class: "ds-sort-panel__footer" };
|
|
12
|
+
function A() {
|
|
13
|
+
if (typeof window > "u") return null;
|
|
14
|
+
let e = new URLSearchParams(window.location.search), t = e.get("sortBy"), n = e.get("sortDir");
|
|
15
|
+
return t && (n === "asc" || n === "desc") ? {
|
|
16
|
+
key: t,
|
|
17
|
+
direction: n
|
|
18
|
+
} : null;
|
|
19
|
+
}
|
|
20
|
+
var j = /* @__PURE__ */ d({
|
|
21
|
+
__name: "DataSort",
|
|
22
|
+
props: {
|
|
23
|
+
modelValue: {},
|
|
24
|
+
options: {},
|
|
25
|
+
placeholder: { default: "Rendezés..." },
|
|
26
|
+
handleUrl: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
default: !1
|
|
29
|
+
},
|
|
30
|
+
disabled: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: !1
|
|
22
33
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
},
|
|
35
|
+
emits: ["update:modelValue", "sort-change"],
|
|
36
|
+
setup(d, { emit: j }) {
|
|
37
|
+
let M = d, N = j, P = h(null), F = h(null), { isOpen: I, dropdownStyle: L } = t(P, F, {
|
|
38
|
+
extraStyle: (e) => ({ minWidth: `${Math.max(e.width, 240)}px` }),
|
|
39
|
+
closeOnScroll: !0
|
|
40
|
+
}), R = a({
|
|
41
|
+
get: () => M.modelValue?.key ?? null,
|
|
42
|
+
set: (e) => {
|
|
43
|
+
Array.isArray(e) || V(e, M.modelValue?.direction ?? "asc");
|
|
44
|
+
}
|
|
45
|
+
}), z = a({
|
|
46
|
+
get: () => M.modelValue?.direction ?? "asc",
|
|
47
|
+
set: (e) => V(M.modelValue?.key ?? null, e)
|
|
48
|
+
}), B = a(() => M.modelValue ? `${M.options.find((e) => e.value === M.modelValue.key)?.label ?? M.modelValue.key} (${M.modelValue.direction === "asc" ? "növekvő" : "csökkenő"})` : M.placeholder);
|
|
49
|
+
function V(e, t) {
|
|
50
|
+
if (e == null) {
|
|
51
|
+
M.handleUrl && (r("sortBy", null, { handleUrl: !0 }), r("sortDir", null, { handleUrl: !0 })), N("update:modelValue", null), N("sort-change", null);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
M.handleUrl && (r("sortBy", e, { handleUrl: !0 }), r("sortDir", t, {
|
|
55
|
+
handleUrl: !0,
|
|
56
|
+
default: "asc"
|
|
57
|
+
}));
|
|
58
|
+
let n = {
|
|
59
|
+
key: e,
|
|
60
|
+
direction: t
|
|
61
|
+
};
|
|
62
|
+
N("update:modelValue", n), N("sort-change", n);
|
|
26
63
|
}
|
|
64
|
+
function H() {
|
|
65
|
+
V(null, "asc"), I.value = !1;
|
|
66
|
+
}
|
|
67
|
+
return v(I, (e) => {
|
|
68
|
+
if (!e || !M.handleUrl || M.modelValue) return;
|
|
69
|
+
let t = A();
|
|
70
|
+
t && V(t.key, t.direction);
|
|
71
|
+
}, { immediate: !0 }), (t, r) => (m(), c("div", b, [l("div", {
|
|
72
|
+
ref_key: "wrapperRef",
|
|
73
|
+
ref: P,
|
|
74
|
+
class: "ds-sort-wrapper"
|
|
75
|
+
}, [l("button", {
|
|
76
|
+
type: "button",
|
|
77
|
+
class: f(["c-btn ds-sort-trigger lh-1", [
|
|
78
|
+
d.modelValue && "is-active",
|
|
79
|
+
d.disabled && "is-disabled",
|
|
80
|
+
_(I) && "is-open"
|
|
81
|
+
]]),
|
|
82
|
+
disabled: d.disabled,
|
|
83
|
+
"aria-label": `Rendezés: ${B.value}`,
|
|
84
|
+
onClick: r[0] ||= (e) => I.value = !_(I)
|
|
85
|
+
}, [
|
|
86
|
+
l("i", { class: f(["fa-solid fa-fw", !d.modelValue || d.modelValue.direction === "asc" ? "fa-arrow-up-wide-short" : "fa-arrow-down-wide-short"]) }, null, 2),
|
|
87
|
+
l("span", S, g(B.value), 1),
|
|
88
|
+
d.modelValue ? (m(), c("button", {
|
|
89
|
+
key: 0,
|
|
90
|
+
type: "button",
|
|
91
|
+
class: "c-icon-btn c-icon-btn--clear ds-sort-clear",
|
|
92
|
+
"aria-label": "Rendezés törlése",
|
|
93
|
+
title: "Rendezés törlése",
|
|
94
|
+
onClick: y(H, ["stop"])
|
|
95
|
+
}, [...r[5] ||= [l("i", { class: "fa-solid fa-fw fa-xmark" }, null, -1)]])) : s("", !0),
|
|
96
|
+
l("span", { class: f(["c-icon-btn c-icon-btn--chevron", { "c-icon-btn--chevron-open": _(I) }]) }, [...r[6] ||= [l("i", { class: "fa-solid fa-fw fa-chevron-down" }, null, -1)]], 2)
|
|
97
|
+
], 10, x), (m(), o(i, { to: "body" }, [l("div", C, [_(I) ? (m(), c("div", {
|
|
98
|
+
key: 0,
|
|
99
|
+
ref_key: "dropdownRef",
|
|
100
|
+
ref: F,
|
|
101
|
+
class: "ds-sort-panel",
|
|
102
|
+
style: p(_(L))
|
|
103
|
+
}, [
|
|
104
|
+
l("div", w, [r[7] ||= l("label", { class: "ds-sort-panel__label" }, "Oszlop", -1), u(n, {
|
|
105
|
+
"model-value": R.value,
|
|
106
|
+
options: d.options,
|
|
107
|
+
config: {
|
|
108
|
+
clearable: !1,
|
|
109
|
+
placeholder: "Válassz oszlopot...",
|
|
110
|
+
filterable: !1
|
|
111
|
+
},
|
|
112
|
+
"onUpdate:modelValue": r[1] ||= (e) => R.value = e
|
|
113
|
+
}, null, 8, ["model-value", "options"])]),
|
|
114
|
+
l("div", T, [r[10] ||= l("span", { class: "ds-sort-panel__label" }, "Irány", -1), l("div", E, [l("button", {
|
|
115
|
+
type: "button",
|
|
116
|
+
class: f(["ds-sort-direction__btn", { "is-active": z.value === "asc" }]),
|
|
117
|
+
"aria-pressed": z.value === "asc",
|
|
118
|
+
"aria-label": "Növekvő",
|
|
119
|
+
onClick: r[2] ||= (e) => z.value = "asc"
|
|
120
|
+
}, [...r[8] ||= [l("i", { class: "fa-solid fa-fw fa-arrow-up-wide-short" }, null, -1), l("span", null, "Növekvő", -1)]], 10, D), l("button", {
|
|
121
|
+
type: "button",
|
|
122
|
+
class: f(["ds-sort-direction__btn dir-desc", { "is-active": z.value === "desc" }]),
|
|
123
|
+
"aria-pressed": z.value === "desc",
|
|
124
|
+
"aria-label": "Csökkenő",
|
|
125
|
+
onClick: r[3] ||= (e) => z.value = "desc"
|
|
126
|
+
}, [...r[9] ||= [l("i", { class: "fa-solid fa-fw fa-arrow-down-wide-short" }, null, -1), l("span", null, "Csökkenő", -1)]], 10, O)])]),
|
|
127
|
+
l("div", k, [u(e, {
|
|
128
|
+
label: "Rendben",
|
|
129
|
+
outline: "",
|
|
130
|
+
size: "small",
|
|
131
|
+
onClick: r[4] ||= (e) => I.value = !1
|
|
132
|
+
})])
|
|
133
|
+
], 4)) : s("", !0)])]))], 512)]));
|
|
27
134
|
}
|
|
28
|
-
|
|
29
|
-
let t = a.type === "datetimerange" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD";
|
|
30
|
-
return `${i.fromUtc ? e(new Date(i.fromUtc), t) : "…"} - ${i.toUtc ? e(new Date(i.toUtc), t) : "…"}`;
|
|
31
|
-
}
|
|
32
|
-
return typeof i == "object" ? JSON.stringify(i) : String(i);
|
|
33
|
-
}
|
|
34
|
-
function n(e) {
|
|
35
|
-
if (Array.isArray(e)) return e;
|
|
36
|
-
if (typeof e == "string") {
|
|
37
|
-
if (e.startsWith("[") && e.endsWith("]")) try {
|
|
38
|
-
let t = JSON.parse(e);
|
|
39
|
-
if (Array.isArray(t)) return t;
|
|
40
|
-
} catch {}
|
|
41
|
-
return e;
|
|
42
|
-
}
|
|
43
|
-
return e;
|
|
44
|
-
}
|
|
45
|
-
function r(e, n) {
|
|
46
|
-
let r = [];
|
|
47
|
-
for (let [i, a] of Object.entries(n)) {
|
|
48
|
-
let n = t(e, i, a);
|
|
49
|
-
if (!n) continue;
|
|
50
|
-
let o = e.find((e) => e.key === i), s = o?.label ?? i;
|
|
51
|
-
r.push({
|
|
52
|
-
key: i,
|
|
53
|
-
text: `${s}: ${n}`,
|
|
54
|
-
displayClass: o?.displayClass
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return r;
|
|
58
|
-
}
|
|
135
|
+
});
|
|
59
136
|
//#endregion
|
|
60
|
-
export {
|
|
137
|
+
export { j as default, A as getDefaultSort };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components83.js","names":[],"sources":["../src/utils/filterDisplay.ts"],"sourcesContent":["import { formatDate } from '@/utils/date'\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\n\nexport function displayFilterValue(items: FilterItem[], key: string, value: any): string {\n if (value === null || value === undefined || value === '') return ''\n\n const item = items.find((i) => i.key === key)\n\n if (item?.type === 'dropdown' && item.options) {\n const parsedValue = parseDropdownValue(value)\n\n if (Array.isArray(parsedValue)) {\n const labels = parsedValue.map((v) => {\n const opt = item.options?.find((o) => o.value === v)\n return opt ? opt.label : String(v)\n })\n return labels.join(', ')\n }\n\n const opt = item.options.find((o) => o.value === parsedValue)\n if (opt) return opt.label\n }\n if (item?.type === 'checkbox') {\n return value ? 'Bekapcsolva' : ''\n }\n\n if (item?.type === 'date' || item?.type === 'datetime') {\n if (typeof value === 'object' && value !== null) {\n const local: Date | string | null | undefined = value.local ?? value.utc ?? null\n if (local == null) return ''\n const d = local instanceof Date ? local : new Date(local)\n if (!isNaN(d.getTime())) {\n return formatDate(d, item.type === 'datetime' ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD')\n }\n }\n if (typeof value === 'string' && value) {\n const d = new Date(value)\n if (!isNaN(d.getTime())) {\n return formatDate(d, item.type === 'datetime' ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD')\n }\n }\n }\n\n if ((item?.type === 'daterange' || item?.type === 'datetimerange') && typeof value === 'object') {\n const showTime = item.type === 'datetimerange'\n const fmt = showTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD'\n const from = value.fromUtc ? formatDate(new Date(value.fromUtc), fmt) : '…'\n const to = value.toUtc ? formatDate(new Date(value.toUtc), fmt) : '…'\n return `${from} - ${to}`\n }\n\n if (typeof value === 'object') return JSON.stringify(value)\n\n return String(value)\n}\n\nexport function parseDropdownValue(value: any): unknown {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.startsWith('[') && value.endsWith(']')) {\n try {\n const parsed = JSON.parse(value)\n if (Array.isArray(parsed)) {\n return parsed\n }\n } catch {\n // If parsing fails, treat as string\n }\n }\n return value\n }\n\n return value\n}\n\nexport interface FilterDisplayPart {\n key: string\n text: string\n displayClass?: string\n}\n\nexport function buildFilterDisplay(\n items: FilterItem[],\n values: Record<string, any>,\n): FilterDisplayPart[] {\n const parts: FilterDisplayPart[] = []\n for (const [key, rawValue] of Object.entries(values)) {\n const v = displayFilterValue(items, key, rawValue)\n if (!v) continue\n const item = items.find((i) => i.key === key)\n const labelText = item?.label ?? key\n parts.push({ key, text: `${labelText}: ${v}`, displayClass: item?.displayClass })\n }\n\n return parts\n}\n\nexport function buildFilterValues(items: FilterItem[], values: Record<string, any>): string[] {\n return buildFilterDisplay(items, values).map((p) => p.text)\n}\n"],"mappings":";;AAGA,SAAgB,EAAmB,GAAqB,GAAa,GAAoB;CACvF,IAAI,KAAU,QAA+B,MAAU,IAAI,OAAO;CAElE,IAAM,IAAO,EAAM,MAAM,MAAM,EAAE,QAAQ,CAAG;CAE5C,IAAI,GAAM,SAAS,cAAc,EAAK,SAAS;EAC7C,IAAM,IAAc,EAAmB,CAAK;EAE5C,IAAI,MAAM,QAAQ,CAAW,GAK3B,OAJe,EAAY,KAAK,MAAM;GACpC,IAAM,IAAM,EAAK,SAAS,MAAM,MAAM,EAAE,UAAU,CAAC;GACnD,OAAO,IAAM,EAAI,QAAQ,OAAO,CAAC;EACnC,CACO,EAAO,KAAK,IAAI;EAGzB,IAAM,IAAM,EAAK,QAAQ,MAAM,MAAM,EAAE,UAAU,CAAW;EAC5D,IAAI,GAAK,OAAO,EAAI;CACtB;CACA,IAAI,GAAM,SAAS,YACjB,OAAO,IAAQ,gBAAgB;CAGjC,IAAI,GAAM,SAAS,UAAU,GAAM,SAAS,YAAY;EACtD,IAAI,OAAO,KAAU,YAAY,GAAgB;GAC/C,IAAM,IAA0C,EAAM,SAAS,EAAM,OAAO;GAC5E,IAAI,KAAS,MAAM,OAAO;GAC1B,IAAM,IAAI,aAAiB,OAAO,IAAQ,IAAI,KAAK,CAAK;GACxD,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpB,OAAO,EAAW,GAAG,EAAK,SAAS,aAAa,qBAAqB,YAAY;EAErF;EACA,IAAI,OAAO,KAAU,YAAY,GAAO;GACtC,IAAM,IAAI,IAAI,KAAK,CAAK;GACxB,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpB,OAAO,EAAW,GAAG,EAAK,SAAS,aAAa,qBAAqB,YAAY;EAErF;CACF;CAEA,KAAK,GAAM,SAAS,eAAe,GAAM,SAAS,oBAAoB,OAAO,KAAU,UAAU;EAE/F,IAAM,IADW,EAAK,SAAS,kBACR,qBAAqB;EAG5C,OAAO,GAFM,EAAM,UAAU,EAAW,IAAI,KAAK,EAAM,OAAO,GAAG,CAAG,IAAI,IAEzD,KADJ,EAAM,QAAQ,EAAW,IAAI,KAAK,EAAM,KAAK,GAAG,CAAG,IAAI;CAEpE;CAIA,OAFI,OAAO,KAAU,WAAiB,KAAK,UAAU,CAAK,IAEnD,OAAO,CAAK;AACrB;AAEA,SAAgB,EAAmB,GAAqB;CACtD,IAAI,MAAM,QAAQ,CAAK,GACrB,OAAO;CAGT,IAAI,OAAO,KAAU,UAAU;EAC7B,IAAI,EAAM,WAAW,GAAG,KAAK,EAAM,SAAS,GAAG,GAC7C,IAAI;GACF,IAAM,IAAS,KAAK,MAAM,CAAK;GAC/B,IAAI,MAAM,QAAQ,CAAM,GACtB,OAAO;EAEX,QAAQ,CAER;EAEF,OAAO;CACT;CAEA,OAAO;AACT;AAQA,SAAgB,EACd,GACA,GACqB;CACrB,IAAM,IAA6B,CAAC;CACpC,KAAK,IAAM,CAAC,GAAK,MAAa,OAAO,QAAQ,CAAM,GAAG;EACpD,IAAM,IAAI,EAAmB,GAAO,GAAK,CAAQ;EACjD,IAAI,CAAC,GAAG;EACR,IAAM,IAAO,EAAM,MAAM,MAAM,EAAE,QAAQ,CAAG,GACtC,IAAY,GAAM,SAAS;EACjC,EAAM,KAAK;GAAE;GAAK,MAAM,GAAG,EAAU,IAAI;GAAK,cAAc,GAAM;EAAa,CAAC;CAClF;CAEA,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"admins-components83.js","names":[],"sources":["../src/components/data-table/DataSort.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface DataSortOption {\n value: string\n label: string\n icon?: string\n}\n\nexport interface DataSortProps {\n modelValue: { key: string; direction: SortDirection } | null\n options: DataSortOption[]\n placeholder?: string\n handleUrl?: boolean\n disabled?: boolean\n}\n\nexport function getDefaultSort(): { key: string; direction: SortDirection } | null {\n if (typeof window === 'undefined') return null\n const params = new URLSearchParams(window.location.search)\n const key = params.get('sortBy')\n const dir = params.get('sortDir')\n if (key && (dir === 'asc' || dir === 'desc')) {\n return { key, direction: dir }\n }\n return null\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport DropdownSelect from '@/components/DropdownSelect.vue'\nimport { useDropdownAnchor } from '@/composables/useDropdownAnchor'\nimport { writeUrlOrRemove } from '@/utils/url'\nimport Button from '../Button.vue'\n\nconst props = withDefaults(defineProps<DataSortProps>(), {\n placeholder: 'Rendezés...',\n handleUrl: false,\n disabled: false\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [sort: { key: string; direction: SortDirection } | null]\n 'sort-change': [sort: { key: string; direction: SortDirection } | null]\n}>()\n\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst dropdownRef = ref<HTMLElement | null>(null)\nconst { isOpen, dropdownStyle } = useDropdownAnchor(wrapperRef, dropdownRef, {\n extraStyle: (rect) => ({ minWidth: `${Math.max(rect.width, 240)}px` }),\n closeOnScroll: true,\n})\n\nconst sortBy = computed<string | string[] | null>({\n get: () => props.modelValue?.key ?? null,\n set: (v) => {\n if (Array.isArray(v)) return\n emitChange(v, props.modelValue?.direction ?? 'asc')\n },\n})\n\nconst direction = computed<SortDirection>({\n get: () => props.modelValue?.direction ?? 'asc',\n set: (d) => emitChange(props.modelValue?.key ?? null, d),\n})\n\nconst activeLabel = computed(() => {\n if (!props.modelValue) return props.placeholder\n const opt = props.options.find((o) => o.value === props.modelValue!.key)\n const label = opt?.label ?? props.modelValue.key\n return `${label} (${props.modelValue.direction === 'asc' ? 'növekvő' : 'csökkenő'})`\n})\n\nfunction emitChange(key: string | null, dir: SortDirection) {\n if (key == null) {\n if (props.handleUrl) {\n writeUrlOrRemove('sortBy', null, { handleUrl: true })\n writeUrlOrRemove('sortDir', null, { handleUrl: true })\n }\n emit('update:modelValue', null)\n emit('sort-change', null)\n return\n }\n if (props.handleUrl) {\n writeUrlOrRemove('sortBy', key, { handleUrl: true })\n writeUrlOrRemove('sortDir', dir, { handleUrl: true, default: 'asc' })\n }\n const next = { key, direction: dir }\n emit('update:modelValue', next)\n emit('sort-change', next)\n}\n\nfunction clear() {\n emitChange(null, 'asc')\n isOpen.value = false\n}\n\n// Read initial state from URL on mount when handleUrl is true and modelValue is empty.\nwatch(\n isOpen,\n (open) => {\n if (!open || !props.handleUrl || props.modelValue) return\n const sort = getDefaultSort()\n if (sort) emitChange(sort.key, sort.direction)\n },\n { immediate: true },\n)\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"ds-sort-wrapper\">\n <button\n type=\"button\"\n class=\"c-btn ds-sort-trigger lh-1\"\n :class=\"[modelValue && 'is-active', disabled && 'is-disabled', isOpen && 'is-open']\"\n :disabled=\"disabled\"\n :aria-label=\"`Rendezés: ${activeLabel}`\"\n @click=\"isOpen = !isOpen\"\n >\n <i\n class=\"fa-solid fa-fw\"\n :class=\"\n !modelValue || modelValue.direction === 'asc'\n ? 'fa-arrow-up-wide-short'\n : 'fa-arrow-down-wide-short'\n \"\n ></i>\n <span class=\"ds-sort-label c-truncate\">{{ activeLabel }}</span>\n <button\n v-if=\"modelValue\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-sort-clear\"\n aria-label=\"Rendezés törlése\"\n title=\"Rendezés törlése\"\n @click.stop=\"clear\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </button>\n\n <Teleport to=\"body\">\n <div class=\"ac-component\">\n <div v-if=\"isOpen\" ref=\"dropdownRef\" class=\"ds-sort-panel\" :style=\"dropdownStyle\">\n\n <div class=\"ds-sort-panel__row\">\n <label class=\"ds-sort-panel__label\">Oszlop</label>\n <DropdownSelect\n :model-value=\"sortBy\"\n :options=\"options\"\n :config=\"{\n clearable: false,\n placeholder: 'Válassz oszlopot...',\n filterable: false,\n }\"\n @update:model-value=\"(v) => (sortBy = v)\"\n />\n </div>\n\n <div class=\"ds-sort-panel__row\">\n <span class=\"ds-sort-panel__label\">Irány</span>\n <div class=\"ds-sort-direction\" role=\"group\" aria-label=\"Rendezés iránya\">\n <button\n type=\"button\"\n class=\"ds-sort-direction__btn\"\n :class=\"{ 'is-active': direction === 'asc' }\"\n :aria-pressed=\"direction === 'asc'\"\n aria-label=\"Növekvő\"\n @click=\"direction = 'asc'\"\n >\n <i class=\"fa-solid fa-fw fa-arrow-up-wide-short\"></i>\n <span>Növekvő</span>\n </button>\n <button\n type=\"button\"\n class=\"ds-sort-direction__btn dir-desc\"\n :class=\"{ 'is-active': direction === 'desc' }\"\n :aria-pressed=\"direction === 'desc'\"\n aria-label=\"Csökkenő\"\n @click=\"direction = 'desc'\"\n >\n <i class=\"fa-solid fa-fw fa-arrow-down-wide-short\"></i>\n <span>Csökkenő</span>\n </button>\n </div>\n </div>\n\n <div class=\"ds-sort-panel__footer\">\n <Button label=\"Rendben\" outline size=\"small\" @click=\"isOpen = false\" />\n </div>\n </div>\n </div>\n </Teleport>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-sort.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,239 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { getSavedFilters as ee } from "./admins-components84.js";
|
|
7
|
-
import { Fragment as a, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as te, defineComponent as f, nextTick as p, normalizeClass as m, onMounted as ne, openBlock as h, ref as g, renderList as _, resolveDirective as v, toDisplayString as y, vModelText as b, watch as re, withDirectives as x, withKeys as S, withModifiers as C } from "vue";
|
|
8
|
-
//#region src/components/data-table/FiltersHistory.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
-
var ie = { class: "ac-component" }, ae = { class: "filters-history" }, oe = ["aria-expanded"], se = {
|
|
10
|
-
key: 0,
|
|
11
|
-
class: "c-indicator"
|
|
12
|
-
}, ce = { key: 1 }, le = {
|
|
13
|
-
key: 0,
|
|
14
|
-
class: "filters-history__panel c-scroll"
|
|
15
|
-
}, ue = { class: "filters-history__save-row" }, de = {
|
|
16
|
-
key: 0,
|
|
17
|
-
class: "filters-history__hint"
|
|
18
|
-
}, fe = {
|
|
19
|
-
key: 1,
|
|
20
|
-
class: "filters-history__hint"
|
|
21
|
-
}, w = {
|
|
22
|
-
key: 2,
|
|
23
|
-
class: "filters-history__list"
|
|
24
|
-
}, T = [
|
|
25
|
-
"aria-expanded",
|
|
26
|
-
"onClick",
|
|
27
|
-
"onKeydown"
|
|
28
|
-
], E = { class: "filters-history__item-header-text" }, D = { class: "filters-history__item-name" }, O = {
|
|
29
|
-
key: 0,
|
|
30
|
-
class: "filters-history__item-date"
|
|
31
|
-
}, k = [
|
|
32
|
-
"onClick",
|
|
33
|
-
"aria-label",
|
|
34
|
-
"title"
|
|
35
|
-
], A = ["onClick"], j = ["onClick"], M = ["onClick"], N = {
|
|
36
|
-
key: 0,
|
|
37
|
-
class: "filters-history__item-content"
|
|
38
|
-
}, P = {
|
|
39
|
-
key: 0,
|
|
40
|
-
class: "filters-history__item-body"
|
|
41
|
-
}, F = {
|
|
42
|
-
key: 1,
|
|
43
|
-
class: "filters-history__item-empty"
|
|
44
|
-
}, I = { key: 3 }, L = /* @__PURE__ */ f({
|
|
45
|
-
__name: "FiltersHistory",
|
|
46
|
-
props: {
|
|
47
|
-
items: {},
|
|
48
|
-
values: {},
|
|
49
|
-
storageKey: {}
|
|
50
|
-
},
|
|
51
|
-
emits: ["load"],
|
|
52
|
-
setup(f, { emit: L }) {
|
|
53
|
-
let R = f, z = L, B = g(!1), V = g([]), H = g(""), U = g(/* @__PURE__ */ new Set()), W = g(!1);
|
|
54
|
-
function G(e) {
|
|
55
|
-
return U.value.has(e);
|
|
56
|
-
}
|
|
57
|
-
function K(e) {
|
|
58
|
-
let t = new Set(U.value);
|
|
59
|
-
t.has(e) ? t.delete(e) : t.add(e), U.value = t;
|
|
60
|
-
}
|
|
61
|
-
function pe() {
|
|
62
|
-
V.value = ee(R.storageKey);
|
|
63
|
-
}
|
|
64
|
-
function q() {
|
|
65
|
-
try {
|
|
66
|
-
let e = r("filters", R.storageKey);
|
|
67
|
-
localStorage.setItem(e, JSON.stringify(V.value));
|
|
68
|
-
} catch {
|
|
69
|
-
console.warn("Failed to persist saved filters to localStorage");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
ne(pe);
|
|
73
|
-
let J = o(() => Object.values(R.values).some((e) => e !== null && e !== "" && e !== void 0));
|
|
74
|
-
function me() {
|
|
75
|
-
return Date.now().toString(36);
|
|
76
|
-
}
|
|
77
|
-
re(() => [R.values, H.value], () => {
|
|
78
|
-
Y.value &&= !1;
|
|
79
|
-
}, { deep: !0 });
|
|
80
|
-
let Y = g(!1);
|
|
81
|
-
function X() {
|
|
82
|
-
if (!J.value) return;
|
|
83
|
-
let e = H.value.trim();
|
|
84
|
-
V.value = [{
|
|
85
|
-
id: me(),
|
|
86
|
-
savedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
87
|
-
name: e || void 0,
|
|
88
|
-
values: { ...R.values }
|
|
89
|
-
}, ...V.value].slice(0, 50), H.value = "", q(), p(() => {
|
|
90
|
-
Y.value = !0;
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
function he(e) {
|
|
94
|
-
z("load", { ...e.values });
|
|
95
|
-
}
|
|
96
|
-
function Z(e) {
|
|
97
|
-
if (V.value = V.value.filter((t) => t.id !== e.id), U.value.has(e.id)) {
|
|
98
|
-
let t = new Set(U.value);
|
|
99
|
-
t.delete(e.id), U.value = t;
|
|
100
|
-
}
|
|
101
|
-
q();
|
|
102
|
-
}
|
|
103
|
-
function ge() {
|
|
104
|
-
V.value = [], U.value = /* @__PURE__ */ new Set(), q(), W.value = !1;
|
|
105
|
-
}
|
|
106
|
-
function Q(e) {
|
|
107
|
-
return i(R.items, e.values);
|
|
108
|
-
}
|
|
109
|
-
let _e = o(() => {
|
|
110
|
-
let e = /* @__PURE__ */ new Map();
|
|
111
|
-
for (let t of V.value) e.set(t.id, Q(t));
|
|
112
|
-
return e;
|
|
113
|
-
});
|
|
114
|
-
function $(e) {
|
|
115
|
-
return _e.value.get(e.id) ?? Q(e);
|
|
116
|
-
}
|
|
117
|
-
let ve = o(() => {
|
|
118
|
-
let e = V.value.find((e) => e.isDefault);
|
|
119
|
-
return e ? [e, ...V.value.filter((e) => !e.isDefault)] : V.value;
|
|
120
|
-
}), ye = o(() => V.value.length >= 43);
|
|
121
|
-
function be(t) {
|
|
122
|
-
let n = new Date(t);
|
|
123
|
-
return isNaN(n.getTime()) ? t : e(n, "YYYY-MM-DD HH:mm");
|
|
124
|
-
}
|
|
125
|
-
function xe(e) {
|
|
126
|
-
e.isDefault ? e.isDefault = !1 : (V.value.forEach((e) => {
|
|
127
|
-
e.isDefault = !1;
|
|
128
|
-
}), e.isDefault = !0), q();
|
|
129
|
-
}
|
|
130
|
-
return (e, r) => {
|
|
131
|
-
let i = v("tooltip");
|
|
132
|
-
return h(), l("div", ie, [u("div", ae, [u("button", {
|
|
133
|
-
type: "button",
|
|
134
|
-
class: m(["filters-history__toggle", { "is-open": B.value }]),
|
|
135
|
-
"aria-expanded": B.value,
|
|
136
|
-
onClick: r[0] ||= (e) => B.value = !B.value
|
|
137
|
-
}, [
|
|
138
|
-
r[6] ||= u("i", { class: "fa-solid fa-sliders filters-history__toggle-icon" }, null, -1),
|
|
139
|
-
r[7] ||= u("span", { class: "filters-history__toggle-label" }, "Mentett szűrők", -1),
|
|
140
|
-
V.value.length ? (h(), l("span", se, y(V.value.length), 1)) : c("", !0),
|
|
141
|
-
ye.value ? x((h(), l("span", ce, [d("/ " + y(50))])), [[i, "Maximum 50 szűrő menthető"]]) : c("", !0),
|
|
142
|
-
u("i", { class: m(["fa-solid filters-history__chevron", B.value ? "fa-chevron-up" : "fa-chevron-down"]) }, null, 2)
|
|
143
|
-
], 10, oe), B.value ? (h(), l("div", le, [
|
|
144
|
-
u("div", ue, [x(u("input", {
|
|
145
|
-
"onUpdate:modelValue": r[1] ||= (e) => H.value = e,
|
|
146
|
-
type: "text",
|
|
147
|
-
class: "c-input-row c-input-row--sm",
|
|
148
|
-
placeholder: "Elnevezés",
|
|
149
|
-
onKeydown: S(X, ["enter"])
|
|
150
|
-
}, null, 544), [[b, H.value]]), te(t, {
|
|
151
|
-
icon: "fa-solid fa-bookmark",
|
|
152
|
-
label: "Mentés",
|
|
153
|
-
size: "small",
|
|
154
|
-
type: "info",
|
|
155
|
-
disabled: !J.value || Y.value,
|
|
156
|
-
onClick: X
|
|
157
|
-
}, null, 8, ["disabled"])]),
|
|
158
|
-
!J.value && V.value.length === 0 ? (h(), l("p", de, " Nincs aktív szűrő. Adj meg értékeket a mentéshez. ")) : V.value.length === 0 ? (h(), l("p", fe, [...r[8] ||= [
|
|
159
|
-
d(" Még nincs mentett szűrő.", -1),
|
|
160
|
-
u("br", null, null, -1),
|
|
161
|
-
d(" Az aktuális beállítások a „Mentés\" gombbal menthetők.", -1),
|
|
162
|
-
u("br", null, null, -1),
|
|
163
|
-
d(" Az „Elnevezés\" mező csak a könnyebb azonosítás miatt van, megadása nem kötelező. ", -1)
|
|
164
|
-
]])) : c("", !0),
|
|
165
|
-
V.value.length > 0 ? (h(), l("ul", w, [(h(!0), l(a, null, _(ve.value, (e) => (h(), l("li", {
|
|
166
|
-
key: e.id,
|
|
167
|
-
class: m(["filters-history__item", {
|
|
168
|
-
"is-open": G(e.id),
|
|
169
|
-
"is-default": e.isDefault
|
|
170
|
-
}])
|
|
171
|
-
}, [u("div", {
|
|
172
|
-
class: "filters-history__item-header",
|
|
173
|
-
role: "button",
|
|
174
|
-
tabindex: "0",
|
|
175
|
-
"aria-expanded": G(e.id),
|
|
176
|
-
onClick: (t) => K(e.id),
|
|
177
|
-
onKeydown: [S(C((t) => K(e.id), ["prevent"]), ["enter"]), S(C((t) => K(e.id), ["prevent"]), ["space"])]
|
|
178
|
-
}, [
|
|
179
|
-
u("i", { class: m(["fa-solid filters-history__item-chevron", G(e.id) ? "fa-chevron-down" : "fa-chevron-right"]) }, null, 2),
|
|
180
|
-
u("span", E, [u("span", D, y(e.name), 1), e.name ? (h(), l("span", O, y(be(e.savedAt)), 1)) : c("", !0)]),
|
|
181
|
-
u("div", {
|
|
182
|
-
class: "filters-history__item-actions",
|
|
183
|
-
onClick: r[2] ||= C(() => {}, ["stop"])
|
|
184
|
-
}, [
|
|
185
|
-
u("button", {
|
|
186
|
-
type: "button",
|
|
187
|
-
class: m(["c-indicator filters-history__item-btn filters-history__item-default", { active: e.isDefault }]),
|
|
188
|
-
onClick: (t) => xe(e),
|
|
189
|
-
"aria-label": e.isDefault ? "Alapértelmezett szűrő törlése" : "Alapértelmezett szűrő beállítása",
|
|
190
|
-
title: e.isDefault ? "Alapértelmezett szűrő törlése" : "Alapértelmezett szűrő beállítása"
|
|
191
|
-
}, [u("i", { class: m(["fa-star fix-icon-pos", e.isDefault ? "fa-solid" : "fa-regular"]) }, null, 2)], 10, k),
|
|
192
|
-
u("button", {
|
|
193
|
-
type: "button",
|
|
194
|
-
class: "c-indicator filters-history__item-btn filters-history__item-load",
|
|
195
|
-
"aria-label": "Betöltés",
|
|
196
|
-
title: "Betöltés",
|
|
197
|
-
onClick: (t) => he(e)
|
|
198
|
-
}, [...r[9] ||= [u("i", { class: "fa-solid fa-check" }, null, -1)]], 8, A),
|
|
199
|
-
$(e).length ? x((h(), l("span", {
|
|
200
|
-
key: 0,
|
|
201
|
-
class: "c-indicator",
|
|
202
|
-
onClick: C((t) => K(e.id), ["stop"])
|
|
203
|
-
}, [d(y($(e).length), 1)], 8, j)), [[i, `${$(e).length} szűrési feltétel`]]) : c("", !0),
|
|
204
|
-
u("button", {
|
|
205
|
-
type: "button",
|
|
206
|
-
class: "c-indicator filters-history__item-btn filters-history__item-remove",
|
|
207
|
-
"aria-label": "Törlés",
|
|
208
|
-
title: "Törlés",
|
|
209
|
-
onClick: (t) => Z(e)
|
|
210
|
-
}, [...r[10] ||= [u("i", { class: "fa-solid fa-xmark" }, null, -1)]], 8, M)
|
|
211
|
-
])
|
|
212
|
-
], 40, T), G(e.id) ? (h(), l("div", N, [$(e).length ? (h(), l("div", P, [(h(!0), l(a, null, _($(e), (e, t) => (h(), l("span", {
|
|
213
|
-
key: t,
|
|
214
|
-
class: m(["c-chip", e.displayClass])
|
|
215
|
-
}, y(e.text), 3))), 128))])) : (h(), l("p", F, "Nincs megjeleníthető szűrő."))])) : c("", !0)], 2))), 128))])) : c("", !0),
|
|
216
|
-
V.value.length > 3 ? (h(), l("div", I, [
|
|
217
|
-
r[11] ||= u("hr", { class: "separator my-1" }, null, -1),
|
|
218
|
-
V.value.length ? (h(), l("a", {
|
|
219
|
-
key: 0,
|
|
220
|
-
class: "filters-history__clear-all px-2",
|
|
221
|
-
onClick: r[3] ||= (e) => W.value = !0
|
|
222
|
-
}, "Összes törlése")) : c("", !0),
|
|
223
|
-
W.value ? (h(), s(n, {
|
|
224
|
-
key: 1,
|
|
225
|
-
title: "Mentett szűrők törlése",
|
|
226
|
-
message: "Biztosan törlöd az összes mentett szűrőt?",
|
|
227
|
-
"confirm-label": "Törlés",
|
|
228
|
-
"cancel-label": "Mégse",
|
|
229
|
-
type: "error",
|
|
230
|
-
onConfirm: r[4] ||= (e) => ge(),
|
|
231
|
-
onCancel: r[5] ||= (e) => W.value = !1
|
|
232
|
-
})) : c("", !0)
|
|
233
|
-
])) : c("", !0)
|
|
234
|
-
])) : c("", !0)])]);
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
});
|
|
1
|
+
import './src/styles/components/data-table/data-sort.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e from "./admins-components83.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/data-table/DataSort.vue
|
|
5
|
+
var t = e;
|
|
238
6
|
//#endregion
|
|
239
|
-
export {
|
|
7
|
+
export { t as default };
|