admins-components 9.0.38 → 9.0.40
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 +38 -38
- package/dist/admins-components100.js +3 -52
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components101.js +3 -82
- package/dist/admins-components101.js.map +1 -1
- package/dist/admins-components102.js +49 -110
- package/dist/admins-components102.js.map +1 -1
- package/dist/admins-components103.js +80 -45
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components104.js +108 -101
- package/dist/admins-components104.js.map +1 -1
- package/dist/admins-components105.js +41 -14
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components106.js +105 -6
- package/dist/admins-components106.js.map +1 -1
- package/dist/admins-components107.js +16 -248
- package/dist/admins-components107.js.map +1 -1
- package/dist/admins-components108.js +7 -27
- package/dist/admins-components108.js.map +1 -1
- package/dist/admins-components109.js +247 -23
- package/dist/admins-components109.js.map +1 -1
- package/dist/admins-components110.js +26 -171
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +25 -65
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js +163 -58
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +65 -27
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components114.js +63 -12
- package/dist/admins-components114.js.map +1 -1
- package/dist/admins-components115.js +29 -26
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +16 -9
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +26 -3
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +8 -2
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +4 -3
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components120.js +3 -21
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +3 -14
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +20 -7
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components123.js +14 -13
- package/dist/admins-components123.js.map +1 -1
- package/dist/admins-components124.js +8 -26
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components125.js +12 -82
- package/dist/admins-components125.js.map +1 -1
- package/dist/admins-components126.js +24 -9
- package/dist/admins-components126.js.map +1 -1
- package/dist/admins-components127.js +82 -4
- package/dist/admins-components127.js.map +1 -1
- package/dist/admins-components128.js +11 -8
- package/dist/admins-components128.js.map +1 -1
- package/dist/admins-components129.js +4 -6
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components130.js +8 -6
- package/dist/admins-components130.js.map +1 -1
- package/dist/admins-components131.js +6 -14
- package/dist/admins-components131.js.map +1 -1
- package/dist/admins-components132.js +4 -11
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js +15 -30
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components134.js +13 -4
- package/dist/admins-components134.js.map +1 -1
- package/dist/admins-components135.js +30 -29
- package/dist/admins-components135.js.map +1 -1
- package/dist/admins-components136.js +4 -5
- package/dist/admins-components136.js.map +1 -1
- package/dist/admins-components137.js +29 -5
- package/dist/admins-components137.js.map +1 -1
- package/dist/admins-components138.js +4 -7
- package/dist/admins-components138.js.map +1 -1
- package/dist/admins-components139.js +4 -73
- package/dist/admins-components139.js.map +1 -1
- package/dist/admins-components140.js +7 -28
- package/dist/admins-components140.js.map +1 -1
- package/dist/admins-components141.js +73 -58
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js +29 -24
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +56 -47
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +23 -30
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +50 -3
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +29 -177
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +3 -46
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +177 -35
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +41 -41
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +32 -136
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +42 -54
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +140 -6
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +57 -5
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +6 -75
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +5 -28
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +74 -1929
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +29 -24811
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +1930 -8
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +24809 -5
- package/dist/admins-components159.js.map +1 -0
- package/dist/admins-components160.js +8 -141
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +7 -9
- package/dist/admins-components162.js +141 -8
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +10 -0
- package/dist/{admins-components161.js.map → admins-components163.js.map} +1 -1
- package/dist/admins-components164.js +8 -167
- package/dist/admins-components164.js.map +1 -1
- package/dist/admins-components166.js +167 -8
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +39 -38
- package/dist/admins-components167.js.map +1 -1
- package/dist/admins-components168.js +9 -6
- package/dist/admins-components168.js.map +1 -1
- package/dist/admins-components169.js +42 -72
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components170.js +6 -58
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components171.js +72 -51
- package/dist/admins-components171.js.map +1 -1
- package/dist/admins-components172.js +57 -8
- package/dist/admins-components172.js.map +1 -1
- package/dist/admins-components173.js +40 -33
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +3 -3
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +53 -0
- package/dist/admins-components175.js.map +1 -0
- package/dist/admins-components176.js +8 -57
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components178.js +59 -0
- package/dist/admins-components178.js.map +1 -0
- package/dist/admins-components38.js +2 -2
- package/dist/admins-components38.js.map +1 -1
- package/dist/admins-components39.js.map +1 -1
- package/dist/admins-components58.js.map +1 -1
- package/dist/admins-components59.js +1 -13
- package/dist/admins-components59.js.map +1 -1
- package/dist/admins-components61.js +22 -22
- package/dist/admins-components61.js.map +1 -1
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components63.js +69 -133
- package/dist/admins-components63.js.map +1 -1
- package/dist/admins-components64.js +5 -0
- package/dist/admins-components64.js.map +1 -0
- package/dist/admins-components65.js +118 -7
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components67.js +8 -0
- package/dist/admins-components67.js.map +1 -0
- package/dist/admins-components68.js +145 -7
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components70.js +7 -279
- package/dist/admins-components70.js.map +1 -1
- package/dist/{admins-components69.js.map → admins-components71.js.map} +1 -1
- package/dist/admins-components72.js +279 -6
- package/dist/admins-components72.js.map +1 -1
- package/dist/admins-components74.js +6 -126
- package/dist/admins-components74.js.map +1 -1
- package/dist/{admins-components73.js.map → admins-components75.js.map} +1 -1
- package/dist/admins-components76.js +126 -6
- package/dist/admins-components76.js.map +1 -1
- package/dist/admins-components78.js +6 -69
- package/dist/admins-components78.js.map +1 -1
- package/dist/admins-components79.js +55 -234
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components80.js +70 -0
- package/dist/admins-components80.js.map +1 -0
- package/dist/admins-components81.js +238 -6
- package/dist/admins-components81.js.map +1 -1
- package/dist/admins-components83.js +7 -0
- package/dist/admins-components83.js.map +1 -0
- package/dist/admins-components84.js +229 -6
- package/dist/admins-components84.js.map +1 -1
- package/dist/admins-components86.js +7 -0
- package/dist/admins-components86.js.map +1 -0
- package/dist/admins-components87.js +37 -6
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components89.js +7 -0
- package/dist/{admins-components85.js.map → admins-components89.js.map} +1 -1
- package/dist/admins-components90.js +199 -6
- package/dist/admins-components90.js.map +1 -1
- package/dist/admins-components92.js +6 -75
- package/dist/admins-components92.js.map +1 -1
- package/dist/{admins-components91.js.map → admins-components93.js.map} +1 -1
- package/dist/admins-components94.js +75 -6
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +7 -0
- package/dist/admins-components96.js.map +1 -0
- package/dist/admins-components97.js +204 -6
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +6 -3
- package/dist/admins-components99.js.map +1 -1
- package/dist/src/components/ConfirmModal.vue.d.ts +1 -1
- package/dist/src/components/data-table/DataFilters.vue.d.ts +2 -1
- package/dist/src/components/data-table/DataListActions.vue.d.ts +8 -0
- package/dist/src/styles/components/modal.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/src/types/data-list.d.ts +5 -1
- package/package.json +1 -1
- package/dist/admins-components165.js +0 -52
- package/dist/admins-components165.js.map +0 -1
- package/dist/admins-components66.js +0 -171
- package/dist/admins-components66.js.map +0 -1
- package/dist/admins-components77.js +0 -60
- package/dist/admins-components77.js.map +0 -1
- package/dist/admins-components82.js +0 -230
- package/dist/admins-components82.js.map +0 -1
- package/dist/admins-components85.js +0 -38
- package/dist/admins-components88.js +0 -200
- package/dist/admins-components88.js.map +0 -1
- package/dist/admins-components95.js +0 -205
- package/dist/admins-components95.js.map +0 -1
- package/dist/admins-components98.js +0 -4
- package/dist/admins-components98.js.map +0 -1
- /package/dist/{admins-components69.js → admins-components71.js} +0 -0
- /package/dist/{admins-components73.js → admins-components75.js} +0 -0
- /package/dist/{admins-components91.js → admins-components93.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components99.js","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"admins-components99.js","names":[],"sources":["../src/components/data-table/DataList.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type { PaginatorSettings } from '@/types/data-list'\nexport type { DataSearchProps } from './DataSearch.vue'\nexport type { DataFiltersProps } from './DataFilters.vue'\n\nexport interface DataListProps {\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: Partial<DataListSettings>\n id: string\n layoutBreakpoint?: number\n orderable?: boolean\n pagination?: PaginatorSettings\n loading?: boolean\n handleUrl?: boolean\n useSearch?: boolean\n useFilters?: boolean\n searchConfig?: DataSearchProps\n filterConfig?: DataFiltersProps\n}\n\nexport const dataListDefaults = {\n layoutBreakpoint: 768,\n orderable: true,\n loading: false,\n useSearch: true,\n useFilters: true,\n handleUrl: false\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount } from 'vue'\nimport DataTable from '@/components/data-table/DataTable.vue'\nimport DataCards from '@/components/data-table/DataCards.vue'\nimport DataListOptions from '@/components/data-table/DataListOptions.vue'\nimport DataPaginator from '@/components/data-table/DataPaginator.vue'\nimport Button from '@/components/Button.vue'\nimport type {\n DataListConfig,\n DataListSettings,\n PageSettings,\n PaginatorSettings,\n} from '@/types/data-list'\nimport type { FilterValue } from '@/types/data-list'\nimport DataFilters, {\n type FilterResponse,\n type DataFiltersProps,\n} from '@/components/data-table/DataFilters.vue'\nimport FilterTags from '@/components/data-table/FilterTags.vue'\nimport DataListGuide from '@/components/data-table/DataListGuide.vue'\nimport DataSearch, { type DataSearchProps } from './DataSearch.vue'\nimport { getDefaultFilters } from '@/utils/dataFilters.ts'\n\nconst dataFiltersRef = ref<InstanceType<typeof DataFilters> | null>(null)\n\nconst props = withDefaults(defineProps<DataListProps>(), {\n ...dataListDefaults,\n searchConfig: undefined,\n filterConfig: undefined,\n})\n\nfunction resolvedHandleUrl(side: 'searchConfig' | 'filterConfig'): boolean | undefined {\n const sideConfig = props[side]\n if (sideConfig && Object.hasOwn(sideConfig as object, 'handleUrl')) {\n return (sideConfig as { handleUrl?: boolean }).handleUrl\n }\n return props.handleUrl\n}\n\nconst mergedSearchConfig = computed<DataSearchProps>(() => ({\n ...props.searchConfig,\n handleUrl: resolvedHandleUrl('searchConfig'),\n}))\n\nconst mergedFilterConfig = computed<DataFiltersProps>(() => ({\n ...(props.filterConfig as DataFiltersProps),\n handleUrl: resolvedHandleUrl('filterConfig'),\n}))\n\nconst emit = defineEmits<{\n 'filter-change': [filters: Record<string, FilterValue>]\n 'selection-change': [selected: unknown[]]\n 'settings-change': [settings: DataListSettings]\n 'pagination-change': [pagination: PageSettings]\n 'sort-change': [sort: { key: string; direction: 'asc' | 'desc' }]\n 'search-change': [filters: Record<string, string | boolean>]\n}>()\n\nconst showOptions = ref(false)\nconst showGuide = ref(false)\nconst resolvedSettings = ref<DataListSettings | null>(null)\nconst isMobile = ref(false)\nconst root = ref<HTMLElement | null>(null)\nconst showFilters = ref(false)\n\nconst activeFilters = ref<Record<string, unknown>>(\n props.filterConfig?.items ? getDefaultFilters(props.filterConfig.items, props.id, false) : {},\n)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n resizeObserver = new ResizeObserver((entries) => {\n isMobile.value = (entries[0]?.contentRect.width ?? 0) < props.layoutBreakpoint\n })\n if (root.value) resizeObserver.observe(root.value)\n})\n\nonBeforeUnmount(() => resizeObserver?.disconnect())\n\nconst effectiveLayout = computed<'table' | 'cards'>(() => {\n const layout = resolvedSettings.value?.layout\n if (layout === 'table' || layout === 'cards') return layout\n return isMobile.value ? 'cards' : 'table'\n})\n\nconst internalConfig = computed<DataListConfig>(() => {\n if (!resolvedSettings.value) return props.config\n const order = resolvedSettings.value.columnOrder\n const mapped = props.config.columns.map((c) => ({\n ...c,\n visible: resolvedSettings.value!.columns[c.property] ?? c.visible !== false,\n }))\n if (order?.length) {\n mapped.sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return { ...props.config, columns: mapped }\n})\n\nfunction onSettingsChange(s: DataListSettings) {\n resolvedSettings.value = s\n emit('settings-change', s)\n}\n\ndefineExpose({\n openOptions: () => (showOptions.value = true),\n closeOptions: () => (showOptions.value = false),\n openFilters: () => (showFilters.value = true),\n closeFilters: () => (showFilters.value = false),\n})\n\nasync function openFilter(key: string) {\n showFilters.value = true\n setTimeout(() => {\n dataFiltersRef.value?.focusFilter(key)\n }, 300)\n}\n\nfunction onFilterChange(response: FilterResponse) {\n activeFilters.value = response.values\n emit('filter-change', response.transformed)\n}\n\nconst activeFiltersCount = computed(\n () => Object.values(activeFilters.value).filter((v) => v != null && v !== '').length,\n)\n\nconst showPaginator = computed(\n () => !!props.pagination && (props.items.length > 0 || !props.loading),\n)\n\nconst searchChange = (value: Record<string, string | boolean>) => {\n emit('search-change', value)\n}\n\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"root\" class=\"c-data-list\">\n <div class=\"c-data-list__toolbar\">\n <DataSearch v-if=\"useSearch\" v-bind=\"mergedSearchConfig\" @search-change=\"searchChange\" />\n <Button\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n label=\"Szűrők\"\n icon=\"fa-solid fa-filter\"\n @click=\"showFilters = true\"\n style=\"flex-shrink: 0\"\n :type=\"activeFiltersCount > 0 ? 'info' : 'normal'\"\n :indicator=\"activeFiltersCount > 0 ? activeFiltersCount : undefined\"\n />\n <div\n class=\"flex-center gap-1\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n >\n <FilterTags\n :filters=\"activeFilters\"\n :items=\"filterConfig.items\"\n @remove=\"(key: string) => dataFiltersRef?.clearFilter(key)\"\n @openFilter=\"openFilter\"\n />\n </div>\n <div class=\"flex-center ml-auto nowrap\">\n <Button icon=\"fa-solid fa-gear\" class=\"lh-normal\" @click=\"showOptions = true\" />\n <Button icon=\"fa-solid fa-question\" class=\"lh-normal\" @click=\"showGuide = true\" />\n </div>\n </div>\n <DataFilters\n ref=\"dataFiltersRef\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n v-bind=\"mergedFilterConfig\"\n :storage-key=\"id\"\n :open=\"showFilters\"\n @close=\"showFilters = false\"\n @change=\"onFilterChange\"\n />\n <DataListGuide :open=\"showGuide\" @close=\"showGuide = false\" />\n <DataTable\n v-if=\"effectiveLayout === 'table'\"\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @filter-change=\"emit('filter-change', $event)\"\n @selection-change=\"emit('selection-change', $event)\"\n @sort-change=\"emit('sort-change', $event)\"\n />\n\n <DataCards\n v-else\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @selection-change=\"emit('selection-change', $event)\"\n />\n\n <DataPaginator\n v-if=\"pagination && showPaginator\"\n :settings=\"pagination\"\n :storage-key=\"id\"\n @update:pagination=\"emit('pagination-change', $event)\"\n />\n\n <DataListOptions\n :open=\"showOptions\"\n :columns=\"config.columns\"\n :settings=\"settings ?? {}\"\n :storage-key=\"id\"\n :orderable=\"orderable\"\n @close=\"showOptions = false\"\n @change=\"onSettingsChange\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list.scss\"></style>\n"],"mappings":""}
|
|
@@ -12,7 +12,8 @@ export interface FilterItem {
|
|
|
12
12
|
config?: Record<string, any>;
|
|
13
13
|
displayClass?: string;
|
|
14
14
|
transformer?: (value: any) => Record<string, any> | null | undefined;
|
|
15
|
-
|
|
15
|
+
onInnerSearch?: (value: string) => void;
|
|
16
|
+
onChange?: (value: any) => void;
|
|
16
17
|
}
|
|
17
18
|
export interface FilterResponse {
|
|
18
19
|
values: Record<string, any>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Action, ActionGroup } from '../../types/data-list';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
actions: Array<Action | ActionGroup>;
|
|
4
|
+
item?: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ac-component .c-modal-backdrop{z-index:11000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ac-component .c-modal{background:var(--neutral-0);border-radius:.75rem;flex-direction:column;min-width:20rem;max-width:calc(100dvw - 2rem);max-height:calc(100dvh - 4rem);animation:.15s ease-out c-modal-enter;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000001f}.ac-component .c-modal-header{border-bottom:1px solid var(--neutral-100);justify-content:space-between;align-items:center;padding
|
|
1
|
+
.ac-component .c-modal-backdrop{z-index:11000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ac-component .c-modal{background:var(--neutral-0);border-radius:.75rem;flex-direction:column;min-width:20rem;max-width:calc(100dvw - 2rem);max-height:calc(100dvh - 4rem);animation:.15s ease-out c-modal-enter;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000001f}.ac-component .c-modal-header{border-bottom:1px solid var(--neutral-100);justify-content:space-between;align-items:center;padding:.5rem;display:flex}.ac-component .c-modal-title{color:var(--neutral-900);padding-left:.5rem;font-size:1rem;font-weight:600}.ac-component .c-modal-close{color:var(--neutral-600);cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;padding:.5rem .625rem;font-size:1rem;transition:background-color .15s,color .15s;display:inline-flex}.ac-component .c-modal-close i{transform:translate(.5px)}.ac-component .c-modal-close:hover{background:var(--neutral-100);color:var(--neutral-900)}.ac-component .c-modal-close:focus-visible{outline:none;box-shadow:0 0 0 2px #f265221f}.ac-component .c-modal-body{flex:1;padding:1rem;display:flex;overflow-y:auto}.ac-component .c-modal-footer{border-top:1px solid var(--neutral-100);justify-content:flex-end;align-items:center;gap:.5rem;padding:.75rem 1.25rem;display:flex}.ac-component .c-confirm-modal-message{color:var(--neutral-700);margin:0;font-size:.875rem;line-height:1.5}@keyframes c-modal-enter{0%{opacity:0;transform:scale(.95)translateY(-.5rem)}to{opacity:1;transform:scale(1)translateY(0)}}
|
|
@@ -2,6 +2,7 @@ import { Ref } from 'vue';
|
|
|
2
2
|
import { DropdownOption } from '../components/DropdownSelect.vue';
|
|
3
3
|
import { PickedDate, PickedUtcRange } from './types';
|
|
4
4
|
import { ButtonType } from '../components/Button.vue';
|
|
5
|
+
import { ConfirmModalProps } from '../components/ConfirmModal.vue';
|
|
5
6
|
export type FilterValue = string | PickedDate | PickedUtcRange | string[] | null | undefined;
|
|
6
7
|
export interface FilterConfig {
|
|
7
8
|
type: 'text' | 'date' | 'date-range' | 'select' | 'multi-select';
|
|
@@ -44,10 +45,11 @@ export interface Column {
|
|
|
44
45
|
label: string;
|
|
45
46
|
property: string;
|
|
46
47
|
sort?: undefined | Sort;
|
|
47
|
-
converter?: undefined | ((v: any, item: any) => any);
|
|
48
48
|
type?: ColumnType;
|
|
49
49
|
class?: string | undefined;
|
|
50
50
|
headerClass?: string | undefined;
|
|
51
|
+
hideCopyToClipboard?: boolean | undefined;
|
|
52
|
+
converter?: undefined | ((v: any, item: any) => any);
|
|
51
53
|
loading?: (() => boolean) | undefined;
|
|
52
54
|
}
|
|
53
55
|
export type SortDirection = 'asc' | 'desc' | null;
|
|
@@ -66,6 +68,8 @@ export interface Action {
|
|
|
66
68
|
config?: Record<string, any> | undefined;
|
|
67
69
|
disabled?: (item: any) => boolean;
|
|
68
70
|
callback: (item: any) => any;
|
|
71
|
+
confirm?: boolean;
|
|
72
|
+
confirmConfig?: ConfirmModalProps;
|
|
69
73
|
}
|
|
70
74
|
export interface ActionGroup {
|
|
71
75
|
isGroup: true;
|
package/package.json
CHANGED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import e from "./admins-components14.js";
|
|
2
|
-
import { defineElement as t } from "./admins-components157.js";
|
|
3
|
-
import n from "./admins-components159.js";
|
|
4
|
-
import { createBlock as r, createCommentVNode as i, createSlots as a, openBlock as o, ref as s, renderList as c, renderSlot as l, resolveComponent as u, resolveDynamicComponent as d, watch as f, withCtx as p } from "vue";
|
|
5
|
-
//#region src/vueformelements/DateTimePickerElement.vue
|
|
6
|
-
var m = t({
|
|
7
|
-
name: "DateTimePickerElement",
|
|
8
|
-
components: { DatePicker: e },
|
|
9
|
-
setup(e, t) {
|
|
10
|
-
let { value: n } = t.element;
|
|
11
|
-
n.value = /* @__PURE__ */ new Date();
|
|
12
|
-
let r = t.attrs.placeholder, i = s(null), a = s(!1);
|
|
13
|
-
return f(n, () => {
|
|
14
|
-
i.value = {
|
|
15
|
-
local: n.value ? new Date(n.value) : null,
|
|
16
|
-
utc: n.value
|
|
17
|
-
}, a.value = !0;
|
|
18
|
-
}, {
|
|
19
|
-
deep: !0,
|
|
20
|
-
immediate: !0
|
|
21
|
-
}), {
|
|
22
|
-
display: a,
|
|
23
|
-
placeholder: r,
|
|
24
|
-
initial: i,
|
|
25
|
-
value: n,
|
|
26
|
-
setValue: (e) => {
|
|
27
|
-
e && e.utc && (n.value = e.utc);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
function h(e, t, n, s, f, m) {
|
|
33
|
-
let h = u("DatePicker"), g = u("ElementLayout");
|
|
34
|
-
return o(), r(g, null, a({
|
|
35
|
-
element: p(() => [e.display ? (o(), r(h, {
|
|
36
|
-
key: 0,
|
|
37
|
-
"model-value": e.initial,
|
|
38
|
-
config: {
|
|
39
|
-
showTime: !0,
|
|
40
|
-
placeholder: e.placeholder
|
|
41
|
-
},
|
|
42
|
-
"onUpdate:modelValue": t[0] ||= (t) => e.setValue(t)
|
|
43
|
-
}, null, 8, ["model-value", "config"])) : i("", !0)]),
|
|
44
|
-
_: 2
|
|
45
|
-
}, [c(e.elementSlots, (t, n) => ({
|
|
46
|
-
name: n,
|
|
47
|
-
fn: p(() => [l(e.$slots, n, { el$: e.el$ }, () => [(o(), r(d(t), { el$: e.el$ }, null, 8, ["el$"]))])])
|
|
48
|
-
}))]), 1024);
|
|
49
|
-
}
|
|
50
|
-
var g = /* @__PURE__ */ n(m, [["render", h]]);
|
|
51
|
-
//#endregion
|
|
52
|
-
export { g as default };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components165.js","names":[],"sources":["../src/vueformelements/DateTimePickerElement.vue"],"sourcesContent":["<!-- eslint-disable-next-line vue/block-lang -->\n<script>\nimport { defineElement } from '@vueform/vueform'\nimport { ref, watch } from 'vue'\nimport DatePicker from '@/components/DatePicker.vue'\n\nexport default defineElement({\n name: 'DateTimePickerElement',\n components: {\n DatePicker,\n },\n setup(props, context) {\n const { value } = context.element\n value.value = new Date()\n\n const placeholder = context.attrs.placeholder\n const initial = ref(null)\n const display = ref(false)\n\n const setValue = (v) => {\n if (v && v.utc) {\n value.value = v.utc\n }\n }\n\n watch(\n value,\n () => {\n initial.value = {\n local: value.value ? new Date(value.value) : null,\n utc: value.value,\n }\n display.value = true\n },\n { deep: true, immediate: true }\n )\n\n return {\n display,\n placeholder,\n initial,\n value,\n setValue,\n }\n },\n})\n</script>\n\n<template>\n <ElementLayout>\n <template #element>\n <DatePicker\n v-if=\"display\"\n :model-value=\"initial\"\n :config=\"{ showTime: true, placeholder: placeholder }\"\n @update:model-value=\"setValue($event)\"\n />\n </template>\n\n <template v-for=\"(component, slot) in elementSlots\" #[slot]>\n <!-- eslint-disable-next-line vue/valid-attribute-name -->\n <slot :name=\"slot\" :el$=\"el$\">\n <component :is=\"component\" :el$=\"el$\" />\n </slot>\n </template>\n </ElementLayout>\n</template>\n"],"mappings":";;;;;AAMA,IAAK,IAAa,EAAW;CAC3B,MAAM;CACN,YAAY,EACV,YAAA,EACF;CACA,MAAM,GAAO,GAAS;EACpB,IAAM,EAAE,aAAU,EAAQ;EAC1B,EAAM,wBAAQ,IAAI,KAAK;EAEvB,IAAM,IAAc,EAAQ,MAAM,aAC5B,IAAU,EAAI,IAAI,GAClB,IAAU,EAAI,EAAK;EAoBzB,OAZA,EACE,SACM;GAKJ,AAJA,EAAQ,QAAQ;IACd,OAAO,EAAM,QAAQ,IAAI,KAAK,EAAM,KAAK,IAAI;IAC7C,KAAK,EAAM;GACb,GACA,EAAQ,QAAQ;EAClB,GACA;GAAE,MAAM;GAAM,WAAW;EAAK,CAChC,GAEO;GACL;GACA;GACA;GACA;GACA,WAvBgB,MAAM;IACtB,AAAI,KAAK,EAAE,QACT,EAAM,QAAQ,EAAE;GAEpB;EAoBA;CACF;AACF,CAAC;;;aAIC,EAgBgB,GAAA,MAAA,EAAA;EAfH,SAAO,QAMd,CAJM,EAAA,WAAA,EAAA,GADR,EAKE,GAAA;;GAHC,eAAa,EAAA;GACb,QAAM;IAAA,UAAA;IAAA,aAAiC,EAAA;GAAW;GAClD,uBAAkB,AAAA,EAAA,QAAA,MAAE,EAAA,SAAS,CAAM;;;OAIF,EAAA,eAApB,GAAW;QAAwB;cAI5C,CAFP,EAEO,EAAA,QAFM,GAAI,EAAG,KAAK,EAAA,IAAG,SAErB,EAAA,EAAA,GADL,EAAwC,EAAxB,CAAS,GAAA,EAAG,KAAK,EAAA,IAAG,GAAA,MAAA,GAAA,CAAA,KAAA,CAAA,EAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import e from "./admins-components6.js";
|
|
2
|
-
import t from "./admins-components19.js";
|
|
3
|
-
import n from "./admins-components27.js";
|
|
4
|
-
import r from "./admins-components42.js";
|
|
5
|
-
import i from "./admins-components52.js";
|
|
6
|
-
import { useSelection as a } from "./admins-components57.js";
|
|
7
|
-
import { dataCardsSettingsDefaults as o } from "./admins-components58.js";
|
|
8
|
-
import { buildActionGroupMenuItems as s, getColumnValue as c, isActionGroup as l } from "./admins-components59.js";
|
|
9
|
-
import u from "./admins-components62.js";
|
|
10
|
-
import { Fragment as d, computed as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createVNode as _, defineComponent as v, mergeProps as y, normalizeClass as b, openBlock as x, ref as S, renderList as C, toDisplayString as w, unref as T, vShow as E, watch as D, withDirectives as O, withModifiers as k } from "vue";
|
|
11
|
-
//#region src/components/data-table/DataCards.vue?vue&type=script&setup=true&lang.ts
|
|
12
|
-
var A = { class: "ac-component" }, j = ["onClick", "onPointerdown"], M = ["onClick"], N = { class: "c-card__heading" }, P = { class: "c-card__label" }, F = ["innerHTML"], I = { class: "c-card__body" }, L = { class: "c-card__field-label" }, R = {
|
|
13
|
-
key: 1,
|
|
14
|
-
class: "c-cards__loading-wrap"
|
|
15
|
-
}, z = {
|
|
16
|
-
key: 2,
|
|
17
|
-
class: "c-cards__backdrop",
|
|
18
|
-
"aria-hidden": "true"
|
|
19
|
-
}, B = /* @__PURE__ */ v({
|
|
20
|
-
__name: "DataCards",
|
|
21
|
-
props: {
|
|
22
|
-
config: {},
|
|
23
|
-
items: {},
|
|
24
|
-
settings: { default: () => ({ ...o }) },
|
|
25
|
-
loading: {
|
|
26
|
-
type: Boolean,
|
|
27
|
-
default: !1
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
emits: ["selection-change"],
|
|
31
|
-
setup(o, { emit: v }) {
|
|
32
|
-
let B = o, V = v, { selectedKeys: H, toggle: U } = a(() => B.items, () => B.config.selectableAttr, (e) => V("selection-change", e)), W = S(/* @__PURE__ */ new Set());
|
|
33
|
-
D(() => B.items, () => {
|
|
34
|
-
W.value = /* @__PURE__ */ new Set();
|
|
35
|
-
});
|
|
36
|
-
let G = f(() => B.config.columns.filter((e) => e.visible !== !1)), K = f(() => {
|
|
37
|
-
let e = B.settings;
|
|
38
|
-
if (e?.cardHeaderColumns) {
|
|
39
|
-
let t = G.value.filter((t) => e.cardHeaderColumns[t.property]);
|
|
40
|
-
if (t.length > 0) {
|
|
41
|
-
if (e.cardHeaderOrder) {
|
|
42
|
-
let n = e.cardHeaderOrder;
|
|
43
|
-
return [...t].sort((e, t) => {
|
|
44
|
-
let r = n.indexOf(e.property), i = n.indexOf(t.property);
|
|
45
|
-
return (r === -1 ? 999 : r) - (i === -1 ? 999 : i);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
return t;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
let t = G.value.filter((e) => e.primary);
|
|
52
|
-
return t.length > 0 ? t : G.value.slice(0, 1);
|
|
53
|
-
}), q = null, J = !1;
|
|
54
|
-
function Y(e, t) {
|
|
55
|
-
B.config.selectableAttr && e.button === 0 && (J = !1, q = setTimeout(() => {
|
|
56
|
-
J = !0, U(t);
|
|
57
|
-
}, 500));
|
|
58
|
-
}
|
|
59
|
-
function X() {
|
|
60
|
-
q &&= (clearTimeout(q), null);
|
|
61
|
-
}
|
|
62
|
-
function Z(e) {
|
|
63
|
-
J && e.preventDefault();
|
|
64
|
-
}
|
|
65
|
-
function Q(e) {
|
|
66
|
-
if (J) {
|
|
67
|
-
J = !1;
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
$(e);
|
|
71
|
-
}
|
|
72
|
-
function $(e) {
|
|
73
|
-
W.value.has(e) ? W.value.delete(e) : W.value.add(e), W.value = new Set(W.value);
|
|
74
|
-
}
|
|
75
|
-
return (a, f) => (x(), h("div", A, [g("div", { class: b(["c-cards-wrapper", { "is-loading": o.loading }]) }, [!o.loading || o.items.length > 0 ? (x(), h("div", {
|
|
76
|
-
key: 0,
|
|
77
|
-
class: b(["c-cards", { "is-compact": o.settings.compact }])
|
|
78
|
-
}, [(x(!0), h(d, null, C(o.items, (i, a) => (x(), h("div", {
|
|
79
|
-
key: a,
|
|
80
|
-
class: b(["c-card", {
|
|
81
|
-
"is-open": W.value.has(a),
|
|
82
|
-
"is-selected": o.config.selectableAttr && T(H).has(i[o.config.selectableAttr])
|
|
83
|
-
}])
|
|
84
|
-
}, [g("button", {
|
|
85
|
-
type: "button",
|
|
86
|
-
class: "c-card__header",
|
|
87
|
-
onClick: (e) => Q(a),
|
|
88
|
-
onPointerdown: (e) => Y(e, i),
|
|
89
|
-
onPointerup: f[1] ||= (e) => X(),
|
|
90
|
-
onPointerleave: f[2] ||= (e) => X(),
|
|
91
|
-
onContextmenu: Z
|
|
92
|
-
}, [
|
|
93
|
-
o.config.selectableAttr ? (x(), h("span", {
|
|
94
|
-
key: 0,
|
|
95
|
-
class: "c-card__check-zone",
|
|
96
|
-
onClick: k((e) => T(U)(i), ["stop"])
|
|
97
|
-
}, [_(t, {
|
|
98
|
-
"model-value": !!T(H).has(i[o.config.selectableAttr]),
|
|
99
|
-
"onUpdate:modelValue": (e) => T(U)(i),
|
|
100
|
-
onClick: f[0] ||= k(() => {}, ["stop"])
|
|
101
|
-
}, null, 8, ["model-value", "onUpdate:modelValue"])], 8, M)) : m("", !0),
|
|
102
|
-
g("span", N, [(x(!0), h(d, null, C(K.value, (e, t) => (x(), h("span", {
|
|
103
|
-
key: e.property,
|
|
104
|
-
class: "c-card__heading-item"
|
|
105
|
-
}, [g("span", P, w(e.label), 1), g("span", {
|
|
106
|
-
class: b(["c-card__title", { "c-truncate": o.settings.compact && t === 0 }]),
|
|
107
|
-
innerHTML: T(c)(i, e)
|
|
108
|
-
}, null, 10, F)]))), 128))]),
|
|
109
|
-
f[4] ||= g("span", {
|
|
110
|
-
class: "c-card__icon",
|
|
111
|
-
"aria-hidden": "true"
|
|
112
|
-
}, [g("i", { class: "fa-solid fa-chevron-down" })], -1)
|
|
113
|
-
], 40, j), O(g("div", I, [(x(!0), h(d, null, C(G.value, (e) => (x(), h("div", {
|
|
114
|
-
key: e.property,
|
|
115
|
-
class: "c-card__field",
|
|
116
|
-
tabindex: "0"
|
|
117
|
-
}, [
|
|
118
|
-
g("span", L, w(e.label), 1),
|
|
119
|
-
_(u, {
|
|
120
|
-
item: i,
|
|
121
|
-
col: e,
|
|
122
|
-
class: "c-card__field-value",
|
|
123
|
-
copy: !1
|
|
124
|
-
}, null, 8, ["item", "col"]),
|
|
125
|
-
T(c)(i, e) ? (x(), p(r, {
|
|
126
|
-
key: 0,
|
|
127
|
-
class: "c-card__field-copy click-expand",
|
|
128
|
-
value: T(c)(i, e)
|
|
129
|
-
}, null, 8, ["value"])) : m("", !0)
|
|
130
|
-
]))), 128)), o.config.actions ? (x(), h("div", {
|
|
131
|
-
key: 0,
|
|
132
|
-
class: "c-card__actions",
|
|
133
|
-
onClick: f[3] ||= k(() => {}, ["stop"])
|
|
134
|
-
}, [(x(!0), h(d, null, C(o.config.actions, (t, r) => (x(), h(d, { key: r }, [T(l)(t) ? (x(), p(n, y({
|
|
135
|
-
key: 0,
|
|
136
|
-
icon: t.icon,
|
|
137
|
-
label: t.label,
|
|
138
|
-
ariaLabel: t.ariaLabel,
|
|
139
|
-
items: T(s)(t, i)
|
|
140
|
-
}, { ref_for: !0 }, t.config), null, 16, [
|
|
141
|
-
"icon",
|
|
142
|
-
"label",
|
|
143
|
-
"ariaLabel",
|
|
144
|
-
"items"
|
|
145
|
-
])) : (x(), p(e, y({
|
|
146
|
-
key: 1,
|
|
147
|
-
type: t.type,
|
|
148
|
-
icon: t.icon,
|
|
149
|
-
label: t.cardLabel ?? t.label,
|
|
150
|
-
ariaLabel: t.ariaLabel,
|
|
151
|
-
outline: "",
|
|
152
|
-
disabled: t.disabled ? t.disabled(i) : !1,
|
|
153
|
-
callback: () => t.callback(i)
|
|
154
|
-
}, { ref_for: !0 }, t.config), null, 16, [
|
|
155
|
-
"type",
|
|
156
|
-
"icon",
|
|
157
|
-
"label",
|
|
158
|
-
"ariaLabel",
|
|
159
|
-
"disabled",
|
|
160
|
-
"callback"
|
|
161
|
-
]))], 64))), 128))])) : m("", !0)], 512), [[E, W.value.has(a)]])], 2))), 128))], 2)) : (x(), h("div", R, [_(i, {
|
|
162
|
-
loading: !0,
|
|
163
|
-
size: "2.5rem"
|
|
164
|
-
})])), o.loading && o.items.length > 0 ? (x(), h("div", z, [_(i, {
|
|
165
|
-
loading: !0,
|
|
166
|
-
size: "2.5rem"
|
|
167
|
-
})])) : m("", !0)], 2)]));
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
//#endregion
|
|
171
|
-
export { B as default };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components66.js","names":[],"sources":["../src/components/data-table/DataCards.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DataListConfig, DataCardsSettings, DataListSettings } from '@/types/data-list'\nimport DataCell from './DataCell.vue'\nexport { dataCardsSettingsDefaults } from '@/types/data-list'\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Button from '@/components/Button.vue'\nimport Checkbox from '@/components/Checkbox.vue'\nimport CopyToClipboard from '@/components/CopyToClipboard.vue'\nimport Loader from '@/components/Loader.vue'\nimport { useSelection } from '@/composables/useSelection'\nimport { dataCardsSettingsDefaults } from '@/types/data-list'\nimport DropdownMenu from '@/components/DropdownMenu.vue'\nimport { getColumnValue } from '@/utils/dataList'\nimport { buildActionGroupMenuItems, isActionGroup } from '@/utils/dataList'\n\nconst props = withDefaults(\n defineProps<{\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: DataCardsSettings | DataListSettings\n loading?: boolean\n }>(),\n {\n settings: () => ({ ...dataCardsSettingsDefaults }),\n loading: false,\n },\n)\n\nconst emit = defineEmits<{\n 'selection-change': [selected: unknown[]]\n}>()\n\nconst { selectedKeys, toggle: toggleRow } = useSelection(\n () => props.items,\n () => props.config.selectableAttr,\n (s) => emit('selection-change', s),\n)\n\nconst openRowIndexes = ref<Set<number>>(new Set())\n\nwatch(\n () => props.items,\n () => {\n openRowIndexes.value = new Set()\n },\n)\n\nconst visibleColumns = computed(() => props.config.columns.filter((c) => c.visible !== false))\n\nconst cardHeaderColumns = computed(() => {\n const s = props.settings as any\n if (s?.cardHeaderColumns) {\n const cols = visibleColumns.value.filter((c) => s.cardHeaderColumns[c.property])\n if (cols.length > 0) {\n if (s.cardHeaderOrder) {\n const order = s.cardHeaderOrder as string[]\n return [...cols].sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return cols\n }\n }\n const primary = visibleColumns.value.filter((c) => c.primary)\n if (primary.length > 0) return primary\n\n return visibleColumns.value.slice(0, 1)\n})\n\nlet longPressTimer: ReturnType<typeof setTimeout> | null = null\nlet longPressTriggered = false\n\nfunction onPointerDown(e: PointerEvent, item: Record<string, unknown>) {\n if (!props.config.selectableAttr) return\n if (e.button !== 0) return\n longPressTriggered = false\n longPressTimer = setTimeout(() => {\n longPressTriggered = true\n toggleRow(item)\n }, 500)\n}\n\nfunction onPointerUp() {\n if (longPressTimer) {\n clearTimeout(longPressTimer)\n longPressTimer = null\n }\n}\n\nfunction onContextMenu(e: MouseEvent) {\n if (longPressTriggered) {\n e.preventDefault()\n }\n}\n\nfunction onHeaderClick(index: number) {\n if (longPressTriggered) {\n longPressTriggered = false\n return\n }\n toggleAccordion(index)\n}\n\nfunction toggleAccordion(index: number) {\n if (openRowIndexes.value.has(index)) {\n openRowIndexes.value.delete(index)\n } else {\n openRowIndexes.value.add(index)\n }\n openRowIndexes.value = new Set(openRowIndexes.value)\n}\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div class=\"c-cards-wrapper\" :class=\"{ 'is-loading': loading }\">\n <div\n v-if=\"!loading || items.length > 0\"\n class=\"c-cards\"\n :class=\"{ 'is-compact': settings.compact }\"\n >\n <div\n v-for=\"(item, index) in items\"\n :key=\"index\"\n class=\"c-card\"\n :class=\"{\n 'is-open': openRowIndexes.has(index),\n 'is-selected': config.selectableAttr && selectedKeys.has(item[config.selectableAttr]),\n }\"\n >\n <button\n type=\"button\"\n class=\"c-card__header\"\n @click=\"onHeaderClick(index)\"\n @pointerdown=\"onPointerDown($event, item)\"\n @pointerup=\"onPointerUp()\"\n @pointerleave=\"onPointerUp()\"\n @contextmenu=\"onContextMenu\"\n >\n <span\n v-if=\"config.selectableAttr\"\n class=\"c-card__check-zone\"\n @click.stop=\"toggleRow(item)\"\n >\n <Checkbox\n :model-value=\"!!selectedKeys.has(item[config.selectableAttr])\"\n @update:model-value=\"toggleRow(item)\"\n @click.stop\n />\n </span>\n <span class=\"c-card__heading\">\n <span\n v-for=\"(col, i) in cardHeaderColumns\"\n :key=\"col.property\"\n class=\"c-card__heading-item\"\n >\n <span class=\"c-card__label\">{{ col.label }}</span>\n <span\n class=\"c-card__title\"\n :class=\"{ 'c-truncate': settings.compact && i === 0 }\"\n v-html=\"getColumnValue(item, col)\"\n ></span>\n </span>\n </span>\n <span class=\"c-card__icon\" aria-hidden=\"true\"\n ><i class=\"fa-solid fa-chevron-down\"></i\n ></span>\n </button>\n\n <div v-show=\"openRowIndexes.has(index)\" class=\"c-card__body\">\n <div\n v-for=\"col in visibleColumns\"\n :key=\"col.property\"\n class=\"c-card__field\"\n tabindex=\"0\"\n >\n <span class=\"c-card__field-label\">{{ col.label }}</span>\n <DataCell :item=\"item\" :col=\"col\" class=\"c-card__field-value\" :copy=\"false\" />\n\n <CopyToClipboard\n v-if=\"getColumnValue(item, col)\"\n class=\"c-card__field-copy click-expand\"\n :value=\"getColumnValue(item, col)\"\n />\n </div>\n\n <div v-if=\"config.actions\" class=\"c-card__actions\" @click.stop>\n <template v-for=\"(action, ai) in config.actions\" :key=\"ai\">\n <DropdownMenu\n v-if=\"isActionGroup(action)\"\n :icon=\"action.icon\"\n :label=\"action.label\"\n :ariaLabel=\"action.ariaLabel\"\n :items=\"buildActionGroupMenuItems(action, item)\"\n v-bind=\"action.config\"\n />\n\n <Button\n v-else\n :type=\"action.type\"\n :icon=\"action.icon\"\n :label=\"action.cardLabel ?? action.label\"\n :ariaLabel=\"action.ariaLabel\"\n outline\n :disabled=\"action.disabled ? action.disabled(item) : false\"\n :callback=\"() => action.callback(item)\"\n v-bind=\"action.config\"\n />\n </template>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\"c-cards__loading-wrap\">\n <Loader :loading=\"true\" size=\"2.5rem\" />\n </div>\n <div v-if=\"loading && items.length > 0\" class=\"c-cards__backdrop\" aria-hidden=\"true\">\n <Loader :loading=\"true\" size=\"2.5rem\" />\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-cards.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { formatDate as e } from "./admins-components3.js";
|
|
2
|
-
//#region src/utils/filterDisplay.ts
|
|
3
|
-
function t(t, r, i) {
|
|
4
|
-
if (i == null || i === "") return "";
|
|
5
|
-
let a = t.find((e) => e.key === r);
|
|
6
|
-
if (a?.type === "dropdown" && a.options) {
|
|
7
|
-
let e = n(i);
|
|
8
|
-
if (Array.isArray(e)) return e.map((e) => {
|
|
9
|
-
let t = a.options?.find((t) => t.value === e);
|
|
10
|
-
return t ? t.label : String(e);
|
|
11
|
-
}).join(", ");
|
|
12
|
-
let t = a.options.find((t) => t.value === e);
|
|
13
|
-
if (t) return t.label;
|
|
14
|
-
}
|
|
15
|
-
if (a?.type === "checkbox") return i ? "Bekapcsolva" : "";
|
|
16
|
-
if (a?.type === "date" || a?.type === "datetime") {
|
|
17
|
-
if (typeof i == "object" && i) {
|
|
18
|
-
let t = i.local ?? i.utc ?? null;
|
|
19
|
-
if (t == null) return "";
|
|
20
|
-
let n = t instanceof Date ? t : new Date(t);
|
|
21
|
-
if (!isNaN(n.getTime())) return e(n, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
22
|
-
}
|
|
23
|
-
if (typeof i == "string" && i) {
|
|
24
|
-
let t = new Date(i);
|
|
25
|
-
if (!isNaN(t.getTime())) return e(t, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
if ((a?.type === "daterange" || a?.type === "datetimerange") && typeof i == "object") {
|
|
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
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
export { r as buildFilterDisplay, t as displayFilterValue, n as parseDropdownValue };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components77.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"}
|