vue-efko-data-view 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/data-view.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-view.es.js","sources":["../dataview/table/ui/filter/FilterTagCloud.vue","../dataview/table/ui/table-cell/TableCellStatus.vue","../dataview/card/ui/CardCellActions.vue","../dataview/card/TheCard.vue","../dataview/lazyload/LazyLoadTrigger.vue","../dataview/card/CardGrid.vue","../dataview/table/enum/table.ts","../dataview/ui/TheSelect.vue","../dataview/table/ui/filter/FilterDropdown.vue","../dataview/table/ui/table-cell/TableCellActions.vue","../dataview/table/ui/table-cell/TableBodyCell.vue","../dataview/table/TheTable.vue","../dataview/table/ui/ColumnSettingsDrawer.vue","../dataview/card/FilterInput.vue","../dataview/card/CardFiltersDrawer.vue","../dataview/card/CardFiltersModal.vue","../dataview/table/ui/ColumnSettingsDrawer.ts","../dataview/DataView.vue","../dataview/lazyload/LazyLoadContainer.vue"],"sourcesContent":["<template>\n <div class=\"flex flex-wrap tag-cloud\">\n <div class=\"flex flex-wrap\">\n <template\n v-for=\"[filterKey, filterValue] in Object.entries(filters)\"\n :key=\"filterKey\"\n >\n <a-tag\n v-for=\"value in parseFilterValues(filterValue)\"\n :key=\"value.key\"\n class=\"filter-tag\"\n :closable=\"true\"\n :style=\"tagStyle\"\n @close=\"() => removeFilter(filterKey, filterValue, value.original)\"\n >\n {{ value.label }}\n </a-tag>\n </template>\n </div>\n <a-button v-if=\"hasFilters\" type=\"link\" @click=\"clearAllFilters\">\n Очистить все\n </a-button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { theme } from 'efko-ui-library';\nimport type {\n FilterItem,\n FilterValue,\n} from '../../interface/table.d';\n\nconst props = defineProps<{\n filters: Partial<Record<string, FilterValue>>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:filters', value: Partial<Record<string, FilterValue>>): void,\n (\n event: 'remove',\n key: string,\n filterValue: FilterValue | undefined,\n valueToRemove: FilterItem\n ): void,\n (event: 'clear'): void,\n}>();\n\nconst { token } = theme.useToken();\n\nconst tagStyle = computed(() => {\n console.log(token);\n return {\n color: token.value.colorSelectedMenu,\n borderColor: token.value.colorBorderSecondary,\n backgroundColor: token.value.mainBgColor || token.value.colorPrimaryBg,\n }\n});\n\nconst hasValidFilter = (value: FilterValue | undefined): boolean => {\n if (value === null || value === undefined) {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return Boolean(value);\n};\n\nconst hasFilters = computed(() => Object.values(props.filters).some(hasValidFilter));\n\nfunction hasNameField(obj: unknown): obj is { name: string } {\n return (\n typeof obj === 'object'\n && obj !== null\n && 'name' in obj\n && typeof (obj as { name: unknown }).name === 'string'\n );\n}\n\nconst formatFilterItem = (\n item: FilterItem,\n): { key: string, label: string, original: FilterItem } => {\n if (typeof item === 'string') {\n return {\n key: item,\n label: item,\n original: item,\n };\n }\n if (Array.isArray(item)) {\n if (\n item.length === 2\n && typeof item[0] === 'string'\n && typeof item[1] === 'string'\n ) {\n const intervalLabel = `${item[0]} - ${item[1]}`;\n return {\n key: intervalLabel,\n label: intervalLabel,\n original: item,\n };\n }\n const joinedLabel = item.join(', ');\n return {\n key: joinedLabel,\n label: joinedLabel,\n original: item,\n };\n }\n\n if (hasNameField(item)) {\n const nameLabel = item.name;\n return {\n key: nameLabel,\n label: nameLabel,\n original: item,\n };\n }\n const jsonLabel = JSON.stringify(item);\n return {\n key: jsonLabel,\n label: jsonLabel,\n original: item,\n };\n};\n\nconst parseFilterValues = (\n value: FilterValue | undefined,\n): { key: string, label: string, original: FilterItem }[] => {\n if (value === undefined || value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.map((item: FilterItem) => formatFilterItem(item));\n }\n return [\n formatFilterItem(value),\n ];\n};\n\nconst isFilterItemEqual = (a: FilterItem, b: FilterItem): boolean => {\n if (typeof a === 'string' || typeof b === 'string') {\n return a === b;\n }\n return JSON.stringify(a) === JSON.stringify(b);\n};\n\nconst removeFilter = (\n key: string,\n fullValue: FilterValue | undefined,\n itemToRemove: FilterItem,\n): void => {\n if (Array.isArray(fullValue)) {\n const updated = fullValue.filter(\n (value: FilterItem) => !isFilterItemEqual(value, itemToRemove),\n );\n emit('update:filters', {\n ...props.filters,\n [key]: updated,\n });\n } else {\n emit('update:filters', {\n ...props.filters,\n [key]: null,\n });\n }\n emit('remove', key, fullValue, itemToRemove);\n};\n\nconst clearAllFilters = (): void => {\n emit('update:filters', {});\n emit('clear');\n};\n</script>\n\n<style scoped>\n.tag-cloud {\n display: flex;\n flex-wrap: wrap;\n}\n.filter-tag {\n padding: 5px 10px;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 600;\n margin: 4px;\n}\n</style>\n","<template>\n <div class=\"flex items-center justify-center text-lg\">\n <check-circle-two-tone\n v-if=\"!Boolean(value)\"\n two-tone-color=\"#4ade80\"\n />\n <check-circle-two-tone\n v-else\n two-tone-color=\"#bfbfbf\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { CheckCircleTwoTone } from '@ant-design/icons-vue';\n\ndefineProps<{\n value: unknown,\n}>();\n</script>\n","<template>\n <div class=\"flex items-center justify-center gap-2\">\n <a-tooltip v-if=\"canEdit === false\" title=\"Смотреть\">\n <a-button :icon=\"h(EyeOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <template v-if=\"canEdit !== false\">\n <a-tooltip v-if=\"editAction !== false\" title=\"Редактировать\">\n <a-button :icon=\"h(EditOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <a-tooltip :title=\"record.deletedAt ? 'Восстановить' : 'Удалить'\">\n <a-button\n :icon=\"h(record.deletedAt ? RedoOutlined : DeleteOutlined)\"\n @click=\"\n record.deletedAt ? restoreHandler(record) : deleteHandler(record)\n \"\n />\n </a-tooltip>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\n\nimport {\n EditOutlined,\n DeleteOutlined,\n RedoOutlined,\n EyeOutlined,\n} from '@ant-design/icons-vue';\n\ninterface TableRecord {\n deletedAt?: string | null,\n [key: string]: unknown,\n}\n\nconst props = defineProps<{\n record: TableRecord,\n canEdit?: boolean,\n editAction?: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'edit' | 'delete' | 'restore', record: TableRecord): void,\n}>();\n\nconst canEdit = props.canEdit ?? true;\nconst editAction = props.editAction ?? true;\n\nconst deleteHandler = (record: TableRecord): void => emit('delete', record);\nconst restoreHandler = (record: TableRecord): void => emit('restore', record);\nconst editHandler = (record: TableRecord): void => emit('edit', record);\n</script>\n","<template>\n <a-card\n :loading=\"loading\"\n :bordered=\"false\"\n class=\"data-card bg-white rounded-3 shadow-sm\"\n >\n <template #title>\n <div class=\"data-card__header\">\n <slot name=\"title\" />\n </div>\n </template>\n\n <div class=\"data-card__body\">\n <slot name=\"body\" :record=\"record\" :columns=\"columns\">\n <div\n v-for=\"column in columns\"\n :key=\"column.dataIndex\"\n class=\"data-card__row\"\n >\n <span class=\"data-card__label\">\n {{ column.title }}:\n </span>\n\n <span class=\"data-card__value\">\n <span v-if=\"column.dataIndex === 'deletedAt'\">\n <table-cell-status :value=\"record.deletedAt\" />\n </span>\n\n <template v-else-if=\"Array.isArray(recordValue(column))\">\n <template v-if=\"column.tag === true\">\n <a-tag\n v-for=\"item in tagItems(column)\"\n :key=\"item.key\"\n class=\"mr-1 mb-1\"\n >\n {{ item.label }}\n </a-tag>\n </template>\n\n <template v-else>\n <span\n v-for=\"(item, index) in displayItems(column)\"\n :key=\"index\"\n >\n {{ item }}\n\n <template v-if=\"index < displayItems(column).length - 1\">\n ,\n </template>\n </span>\n </template>\n </template>\n\n <span v-else-if=\"typeof recordValue(column) === 'boolean'\">\n <table-cell-status :value=\"!Boolean(recordValue(column))\" />\n </span>\n\n <span v-else-if=\"recordValue(column) !== null && typeof recordValue(column) === 'object'\">\n {{ getNameOrEmpty(recordValue(column)) }}\n </span>\n\n <span v-else-if=\"column.tag === true\">\n <a-tag v-if=\"!isEmptyTagValue(recordValue(column))\">\n {{ recordValue(column) }}\n </a-tag>\n </span>\n\n <span v-else>\n {{ recordValue(column) }}\n </span>\n </span>\n </div>\n </slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"data-card__footer\">\n <slot name=\"footer\" :record=\"record\" :columns=\"columns\" />\n </div>\n\n <template v-if=\"showActionsColumn\" #actions>\n <card-cell-actions\n :record=\"record\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n @edit=\"editHandler\"\n @delete=\"deleteHandler\"\n @restore=\"restoreHandler\"\n />\n </template>\n </a-card>\n</template>\n\n<script lang=\"ts\" setup>\nimport TableCellStatus from '../table/ui/table-cell/TableCellStatus.vue';\nimport CardCellActions from './ui/CardCellActions.vue';\n\nimport type { ColumnConfig } from '../table/interface/table.d';\nimport type { TableRecord } from './TheCard.d';\n\nconst props = defineProps<{\n loading: boolean,\n record: TableRecord,\n columns: ColumnConfig[],\n canEdit?: boolean,\n editAction?: boolean,\n showActionsColumn?: boolean,\n}>();\n\nconst recordValue = (column: ColumnConfig): unknown =>\n (props.record as Record<string, unknown>)[String(column.dataIndex)];\n\nconst recordArray = (column: ColumnConfig): unknown[] => {\n const value = recordValue(column);\n return Array.isArray(value) ? value : [];\n};\n\nconst getNameOrEmpty = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return '';\n }\n if ('name' in (value as Record<string, unknown>)) {\n const name = (value as { name?: unknown }).name;\n return typeof name === 'string' ? name : '';\n }\n return '';\n};\n\nconst isEmptyTagValue = (value: unknown): boolean => {\n if (value === null || value === undefined) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n return false;\n};\n\nconst normalizeItemLabel = (item: unknown): string => {\n if (item === null || item === undefined) {\n return '';\n }\n if (typeof item === 'string') {\n return item.trim();\n }\n if (typeof item === 'object') {\n return getNameOrEmpty(item);\n }\n return String(item);\n};\n\nconst displayItems = (column: ColumnConfig): string[] => {\n const value = recordValue(column);\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((item) => normalizeItemLabel(item))\n .filter((label) => label.trim().length > 0);\n};\n\nconst tagItems = (column: ColumnConfig): { key: string; label: string }[] =>\n displayItems(column).map((label, index) => ({\n key: `${label}-${index}`,\n label,\n }));\n\nconst emit = defineEmits<{(e: 'delete' | 'restore' | 'edit', record: TableRecord): void,\n}>();\n\nconst canEdit = props.canEdit ?? true;\nconst editAction = props.editAction ?? true;\nconst showActionsColumn = props.showActionsColumn ?? true;\n\nconst deleteHandler = (record: TableRecord): void => emit('delete', record);\nconst restoreHandler = (record: TableRecord): void => emit('restore', record);\nconst editHandler = (record: TableRecord): void => emit('edit', record);\n</script>\n\n<style scoped>\n.data-card {\n transition: box-shadow 0.18s ease-out, transform 0.18s ease-out;\n}\n\n.data-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 12px 30px rgba(33, 37, 41, 0.08);\n}\n\n.data-card__header {\n display: flex;\n align-items: center;\n min-height: 32px;\n}\n\n.data-card__body {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.data-card__row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 2px 0;\n}\n\n.data-card__label {\n flex: 0 0 auto;\n font-weight: 500;\n font-size: 12px;\n color: #6c757d;\n}\n\n.data-card__value {\n flex: 1 1 auto;\n font-size: 13px;\n word-break: break-word;\n}\n\n.data-card__footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 12px;\n}\n</style>\n","<template>\n <div class=\"efko-dataview\">\n <div\n ref=\"container\"\n style=\"height: 1px\"\n class=\"flex items-center justify-center py-5\"\n >\n <a-spin :spinning=\"loading\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n onMounted,\n onBeforeUnmount,\n} from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n onIntersect:() => void,\n threshold?: number,\n once?: boolean,\n loading: boolean,\n }>(),\n {\n threshold: 0.1,\n once: false,\n },\n);\n\nconst container = ref<HTMLElement | null>(null);\nlet observer: IntersectionObserver | null = null;\n\nconst handleIntersection = (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n props.onIntersect?.();\n if (props.once && observer) {\n observer.disconnect();\n }\n }\n};\n\nonMounted(() => {\n observer = new IntersectionObserver(handleIntersection, {\n threshold: props.threshold,\n });\n if (container.value) {\n observer.observe(container.value);\n }\n});\n\nonBeforeUnmount(() => {\n if (observer) observer.disconnect();\n});\n</script>\n","<template>\n <div class=\"efko-dataview\">\n <div class=\"flex flex-col gap-4\">\n <div :class=\"gridClass\">\n <the-card\n v-for=\"(record, index) in internalData\"\n :key=\"String(record.id ?? `card-${index}`)\"\n :loading=\"loading\"\n :record=\"record\"\n :columns=\"preparedColumns\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :show-actions-column=\"showActionsColumn\"\n @edit=\"(rec) => emit('edit', rec)\"\n @delete=\"(rec) => emit('delete', rec)\"\n @restore=\"(rec) => emit('restore', rec)\"\n >\n <template v-if=\"$slots.titleCard\" #title>\n <slot\n name=\"titleCard\"\n :record=\"record\"\n :columns=\"preparedColumns\"\n />\n </template>\n\n <template v-if=\"$slots.bodyCard\" #body=\"{ record: bodyRecord, columns: bodyColumns }\">\n <slot\n name=\"bodyCard\"\n :record=\"bodyRecord\"\n :columns=\"bodyColumns\"\n />\n </template>\n\n <template v-if=\"$slots.footerCard\" #footer=\"{ record: footerRecord, columns: footerColumns }\">\n <slot\n name=\"footerCard\"\n :record=\"footerRecord\"\n :columns=\"footerColumns\"\n />\n </template>\n </the-card>\n </div>\n\n <LazyLoadTrigger\n v-if=\"pagination && !isLastPage\"\n :loading=\"loading\"\n :once=\"false\"\n :on-intersect=\"loadNextPage\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, computed, watch, onMounted,\n} from 'vue';\nimport autoAnimate from '@formkit/auto-animate';\nimport TheCard from './TheCard.vue';\nimport type { ColumnConfig, Meta } from '../table/interface/table.d';\nimport type { TableRecord } from './TheCard.d';\nimport LazyLoadTrigger from '../lazyload/LazyLoadTrigger.vue';\n\nconst props = defineProps<{\n loading: boolean,\n columns: ColumnConfig[],\n dataSource: TableRecord[],\n cardLayout: 'grid' | 'row',\n canEdit: boolean,\n editAction: boolean,\n showActionsColumn?: boolean,\n pagination: boolean,\n meta: Meta | undefined,\n}>();\n\nconst emit = defineEmits<{(event: 'delete' | 'restore' | 'edit', record: Record<string, unknown>): void,\n (event: 'pageChange', page: number): void,\n (event: 'sizeChange', page: number, size: number): void,\n}>();\n\nonMounted(() => {\n const container = document.querySelector<HTMLElement>('.card-grid');\n if (container !== null) {\n autoAnimate(container);\n }\n});\n\nconst gridClass = computed(\n () => (props.cardLayout === 'row'\n ? 'card-grid card-grid--row'\n : 'card-grid card-grid--grid'),\n);\n\nconst preparedColumns = computed(() => props.columns);\n\nconst internalData = ref<TableRecord[]>([]);\n\nconst mergeData = (): void => {\n if (props.meta?.currentPage === 1) {\n internalData.value = [\n ...props.dataSource,\n ];\n return;\n }\n\n const existingIds = new Set(internalData.value.map((record: Record<string, unknown>) => record.id));\n const toAdd = props.dataSource.filter((record: TableRecord) => !existingIds.has(record.id));\n internalData.value.push(...toAdd);\n};\n\nmergeData();\n\nwatch(() => [\n props.dataSource,\n props.meta?.currentPage,\n], mergeData, {\n deep: true,\n});\n\nconst isLastPage = computed(() => {\n if (props.meta === undefined) {\n return true;\n }\n return (\n props.meta.currentPage * props.meta.pageSize\n >= props.meta.total\n );\n});\n\nconst loadNextPage = (): void => {\n if (props.loading || isLastPage.value || !props.meta) {\n return;\n }\n emit('pageChange', props.meta.currentPage + 1);\n};\n</script>\n\n<style scoped>\n.card-grid {\n display: grid;\n gap: 24px;\n}\n\n.card-grid--row {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.card-grid--grid {\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n}\n</style>\n","export const PAGE_SIZE_SMALL = '10';\nexport const PAGE_SIZE_MEDIUM = '20';\nexport const PAGE_SIZE_LARGE = '50';\nexport const PAGE_SIZE_EXTRA_LARGE = '100';\nexport const PAGE_SIZE_ULTRA = '1000';\nexport const DEFAULT_PAGE_NUMBER = 1;\n\nexport const DEFAULT_PAGE_SIZE = PAGE_SIZE_SMALL;\n\nexport enum FilterMode {\n SEARCH = 'search',\n SELECT = 'select',\n DATE = 'date',\n}\n\nexport enum PageSizes {\n SMALL = '10',\n MEDIUM = '20',\n LARGE = '50',\n EXTRA_LARGE = '100',\n ULTRA = '1000'\n}\n\nexport const PAGE_SIZE_OPTIONS = [\n PageSizes.SMALL,\n PageSizes.MEDIUM,\n PageSizes.LARGE,\n PageSizes.EXTRA_LARGE,\n];\n\nexport enum SkipSizes {\n NONE = 0,\n SMALL = 10,\n MEDIUM = 20,\n LARGE = 50\n}\n\nexport enum TableDefaults {\n DEFAULT_CURRENT_PAGE = 1\n}\n\nexport enum TableSortOrder {\n ASCEND = 'ascend',\n DESCEND = 'descend'\n}\n\nexport enum SortOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n","<template>\n <VueMultiselect\n v-bind=\"$attrs\"\n class=\"filter-select\"\n :modelValue=\"modelValue\"\n @update:modelValue=\"$emit('update:modelValue', $event)\"\n label=\"name\"\n value-prop=\"id\"\n >\n <template #nooptions>\n <a-empty :image=\"simpleImage\" />\n </template>\n </VueMultiselect>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport VueMultiselect from '@vueform/multiselect';\nimport { Empty } from 'efko-ui-library';\n\nexport default defineComponent({\n name: 'MultiselectWrapper',\n components: { VueMultiselect },\n props: {\n modelValue: {\n type: [Array, String, Number, Object, Boolean, null],\n default: null,\n },\n },\n emits: ['update:modelValue'],\n data() {\n return { simpleImage: Empty.PRESENTED_IMAGE_SIMPLE };\n },\n});\n</script>\n\n<style scoped>\n.filter-select :deep(.multiselect-placeholder) {\n font-size: 12px;\n}\n</style>\n","<template>\n <div class=\"efko-dataview\">\n <div class=\"flex items-center gap-2 p-2\">\n <component\n v-bind=\"componentProps\"\n :is=\"filterComponent\"\n v-model:value=\"localValue\"\n v-model=\"localValue\"\n :placeholder=\"placeholder\"\n style=\"min-width: 240px; max-width: 300px; font-size: 14px\"\n object\n />\n <a-button type=\"primary\" size=\"small\" @click=\"handleApply\">\n Добавить\n </a-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed, ref,\n} from 'vue';\nimport Multiselect from '../../../ui/TheSelect.vue';\nimport { FilterMode } from '../../enum/table';\n\ntype FilterValue =\n | string\n | number\n | boolean\n | object\n | (string | number | boolean | object)[]\n | null;\n\nconst props = defineProps<{\n placeholder: string,\n filterMode?: FilterMode,\n componentProps?: Record<string, unknown>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:modelValue', value: FilterValue): void,\n (event: 'apply'): void,\n}>();\n\nconst filterComponent = computed(() => {\n if (props.filterMode === FilterMode.SEARCH) {\n return 'a-input';\n }\n\n if (props.filterMode === FilterMode.SELECT) {\n return Multiselect;\n }\n\n if (props.filterMode === FilterMode.DATE) {\n return 'a-range-picker';\n }\n\n return null;\n});\n\nconst localValue = ref(null);\n\nconst handleApply = (): void => {\n emit('update:modelValue', localValue.value);\n emit('apply');\n localValue.value = null;\n};\n</script>\n","<template>\n <div class=\"flex items-center justify-center gap-2\">\n <a-tooltip v-if=\"props.canEdit === false\" title=\"Смотреть\">\n <a-button :icon=\"h(EyeOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <template v-if=\"canEdit !== false\">\n <a-tooltip v-if=\"props.editAction !== false\" title=\"Редактировать\">\n <a-button :icon=\"h(EditOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <a-tooltip v-if=\"deleteAction !== false\" :title=\"record.isDeleted ? 'Восстановить' : 'Удалить'\">\n <a-button\n :icon=\"h(record.isDeleted ? RedoOutlined : DeleteOutlined)\"\n @click=\"\n record.isDeleted ? restoreHandler(record) : deleteHandler(record)\n \"\n />\n </a-tooltip>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\n\nimport {\n EditOutlined,\n DeleteOutlined,\n RedoOutlined,\n EyeOutlined,\n} from '@ant-design/icons-vue';\n\ninterface TableRecord {\n name?: string,\n isDeleted?: string | null,\n}\n\nconst props = defineProps<{\n record: TableRecord,\n canEdit: boolean,\n editAction: boolean,\n deleteAction: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'edit' | 'delete' | 'restore', record: TableRecord): void,\n}>();\n\nconst deleteHandler = (record: TableRecord): void => {\n emit('delete', record);\n};\n\nconst restoreHandler = (record: TableRecord): void => {\n emit('restore', record);\n};\n\nconst editHandler = (record: TableRecord): void => {\n emit('edit', record);\n};\n</script>\n","<template>\n <a-skeleton\n v-if=\"loading\"\n :active=\"true\"\n :loading=\"true\"\n :title=\"false\"\n :paragraph=\"{ rows: 1 }\"\n />\n\n <template v-else>\n <span v-if=\"column.dataIndex === 'isDeleted'\">\n <table-cell-status :value=\"(record as any).isDeleted\" />\n </span>\n\n <span v-else-if=\"Array.isArray(cellValue)\">\n <template v-if=\"column.tag === true\">\n <a-tag\n v-for=\"item in tagItems\"\n :key=\"item.key\"\n :style=\"tagStyle\"\n class=\"mr-1 mb-1\"\n >\n {{ item.label }}\n </a-tag>\n </template>\n\n <template v-else>\n <span v-for=\"(item, index) in displayItems\" :key=\"index\">\n {{ item }}\n <template v-if=\"index < displayItems.length - 1\">, </template>\n </span>\n </template>\n </span>\n\n <span v-else-if=\"typeof cellValue === 'boolean'\">\n <table-cell-status :value=\"!Boolean(cellValue)\" />\n </span>\n\n <span v-else-if=\"cellValue !== null && typeof cellValue === 'object'\">\n {{ getNameOrEmpty(cellValue) }}\n </span>\n\n <span v-else-if=\"column.tag === true\">\n <a-tag v-if=\"hasTagValue\" :style=\"tagStyle\">\n {{ String(cellValue) }}\n </a-tag>\n <template v-else />\n </span>\n\n <span v-else>{{ cellValue }}</span>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { CSSProperties } from 'vue';\n\nimport TableCellStatus from './TableCellStatus.vue';\nimport type { ColumnConfig } from '../../interface/table.d';\n\nconst props = defineProps<{\n loading: boolean;\n column: ColumnConfig;\n record: Record<string, unknown>;\n tagStyle?: CSSProperties;\n}>();\n\nconst cellValue = computed<unknown>(() => props.record[String(props.column.dataIndex)]);\n\nconst isEmptyTagValue = (value: unknown): boolean => {\n if (value === null || value === undefined) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n return false;\n};\n\nconst getNameOrEmpty = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return '';\n }\n if ('name' in (value as Record<string, unknown>)) {\n const nameValue = (value as { name?: unknown }).name;\n return typeof nameValue === 'string' ? nameValue : '';\n }\n return '';\n};\n\nconst normalizeItemLabel = (item: unknown): string => {\n if (item === null || item === undefined) {\n return '';\n }\n if (typeof item === 'string') {\n return item.trim();\n }\n if (typeof item === 'object') {\n return getNameOrEmpty(item);\n }\n return String(item);\n};\n\nconst displayItems = computed<string[]>(() => {\n const value = cellValue.value;\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((item) => normalizeItemLabel(item))\n .filter((label) => label.trim().length > 0);\n});\n\nconst tagItems = computed<{ key: string; label: string }[]>(() =>\n displayItems.value.map((label, index) => ({\n key: `${label}-${index}`,\n label,\n })));\n\nconst hasTagValue = computed(() => !isEmptyTagValue(cellValue.value));\n</script>\n","<template>\n <div class=\"efko-dataview\">\n <a-table\n bordered\n table-layout=\"fixed\"\n class=\"the-table\"\n :loading=\"loading\"\n :columns=\"computedColumns\"\n :data-source=\"dataSource\"\n :row-key=\"(record: Record<string, unknown>) => record.id\"\n :pagination=\"false\"\n :scroll=\"{ x: 'max-content'}\"\n :row-class-name=\"rowClassName\"\n @change=\"onTableChange\"\n @resize-column=\"resizeColumn\"\n >\n <template #title>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <a-badge dot :count=\"hiddenColumnCount\">\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"$emit('openColumnDrawer')\"\n >\n <Icon name=\"solar:settings-outline\" class=\"text-lg\" />\n </a-button>\n </a-badge>\n\n <a-button\n v-if=\"showFilterButton\"\n class=\"flex items-center justify-center p-2\"\n @click=\"$emit('openFilterDrawer')\"\n >\n <Icon name=\"ant-design:filter-outlined\" class=\"text-lg\" />\n </a-button>\n </div>\n\n <slot name=\"title\" />\n </div>\n </template>\n\n <template\n v-for=\"column in filterableColumns\"\n :key=\"String(column.dataIndex)\"\n #[`filter${String(column.dataIndex)}Dropdown`]\n >\n <filter-dropdown\n v-model=\"inputFilters[column.dataIndex]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n @update:model-value=\"(value) => applyFilter(column, value)\"\n />\n </template>\n\n <template #bodyCell=\"{ column, record }\">\n <slot name=\"bodyCell\" :column=\"column\" :record=\"record\">\n <table-body-cell\n :loading=\"loading\"\n :column=\"column\"\n :record=\"record\"\n :tag-style=\"tagStyle\"\n />\n </slot>\n </template>\n\n <template #actionColumn=\"{ record }\">\n <slot name=\"actionColumn\" :record=\"record\">\n <table-cell-actions\n :edit-action=\"editAction\"\n :delete-action=\"deleteAction\"\n :can-edit=\"canEdit\"\n :record=\"record\"\n @edit=\"() => $emit('edit', record)\"\n @delete=\"() => $emit('delete', record)\"\n @restore=\"() => $emit('restore', record)\"\n />\n </slot>\n </template>\n </a-table>\n\n <a-pagination\n v-if=\"pagination\"\n class=\"mt-4 text-right\"\n :current=\"meta?.currentPage\"\n :page-size=\"meta?.pageSize\"\n :total=\"meta?.total\"\n :show-total=\"(total: string) => `Всего ${total} элементов`\"\n :page-size-options=\"meta?.pageSizeOptions\"\n :show-size-changer=\"true\"\n @change=\"(page: number) => $emit('pageChange', page)\"\n @show-size-change=\"(page: number, size: number) => $emit('sizeChange', page, size)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, computed, watch, onMounted,\n} from 'vue';\nimport autoAnimate from '@formkit/auto-animate';\nimport { isEqual } from 'lodash';\n\nimport { FilterMode, TableSortOrder } from './enum/table';\nimport FilterDropdown from './ui/filter/FilterDropdown.vue';\nimport TableCellActions from './ui/table-cell/TableCellActions.vue';\nimport TableBodyCell from './ui/table-cell/TableBodyCell.vue';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n Meta,\n SortPayload,\n} from './interface/table.d';\nimport type { TableRecord } from '../card/TheCard.d';\nimport { theme } from 'efko-ui-library';\n\nconst { token } = theme.useToken();\n\ntype TableColumnDefinition = Record<string, unknown> & ColumnConfig & {\n slots?: Record<string, string>;\n};\n\nconst props = defineProps<{\n loading: boolean,\n pagination: boolean,\n columns: ColumnConfig[],\n dataSource: TableRecord[],\n filterValues?: Partial<Record<string, FilterValue>>,\n meta: Meta | undefined,\n canEdit: boolean,\n editAction: boolean,\n deleteAction: boolean,\n showActionsColumn?: boolean,\n columnsVisibility: Record<string, boolean>,\n disableColumnFilterDropdowns?: boolean,\n showFilterButton?: boolean,\n multiColumnFilters?: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'update:filterValues',\n values: Partial<Record<string, FilterValue>>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n (event: 'restore' | 'edit' | 'delete', record: Record<string, unknown>): void,\n (event: 'sortChange', payload: SortPayload): void,\n (event: 'pageChange', page: number): void,\n (event: 'sizeChange', page: number, pageSize: number): void,\n (event: 'openColumnDrawer'): void,\n (event: 'openFilterDrawer'): void,\n}>();\n\nconst showFilterButton = computed<boolean>(() => props.showFilterButton === true);\n\nconst localFilterValues = ref<Partial<Record<string, FilterValue>>>(\n props.filterValues || {},\n);\nconst localColumns = ref<ColumnConfig[]>([\n ...props.columns,\n]);\nconst inputFilters = ref<Record<string, unknown | null>>({});\n\nconst filterableColumns = computed(() => {\n if (props.disableColumnFilterDropdowns === true) {\n return [];\n }\n\n return localColumns.value.filter(\n (column: ColumnConfig) => column.filterable,\n );\n});\n\nconst computedColumns = computed(() => {\n const visible = localColumns.value.filter((column: ColumnConfig) => {\n if (column.filterOnly) {\n return false;\n }\n\n const key = column.key || String(column.dataIndex);\n return props.columnsVisibility[key] !== false;\n });\n\n const result: TableColumnDefinition[] = visible.map((column: ColumnConfig) => {\n const { headerAlign, cellAlign, ...rest } = column;\n\n return {\n ...rest,\n sorter: Boolean(rest.sortable),\n sortDirections: rest.sortable\n ? [\n TableSortOrder.ASCEND,\n TableSortOrder.DESCEND,\n ]\n : undefined,\n customHeaderCell: (): { style: { textAlign: string } } | undefined => (headerAlign ? {\n style: {\n textAlign: headerAlign,\n },\n } : undefined),\n customCell: (): { style: { textAlign: string } } | undefined => (cellAlign ? {\n style: {\n textAlign: cellAlign,\n },\n } : undefined),\n customFilterDropdown: Boolean(rest.filterable),\n slots: rest.filterable\n ? {\n filterDropdown: `filter${String(rest.dataIndex)}Dropdown`,\n }\n : undefined,\n } as TableColumnDefinition;\n });\n\n if (\n props.showActionsColumn !== false\n && props.columnsVisibility.actions !== false\n ) {\n result.push({\n title: 'Действия',\n key: 'actions',\n dataIndex: 'actions' as keyof TableRecord,\n width: 100,\n slots: {\n customRender: 'actionColumn',\n },\n } as TableColumnDefinition);\n }\n\n return result;\n});\n\nconst hiddenColumnCount = computed(\n () => Object.keys(props.columnsVisibility).filter(\n (key: string) => props.columnsVisibility[key] === false,\n ).length,\n);\n\nconst tagStyle = computed(() => ({\n color: token.value.colorSelectedMenu,\n borderColor: token.value.colorBorderSecondary,\n backgroundColor: token.value.mainBgColor || token.value.colorPrimaryBg,\n}));\n\nconst getFilterArray = (key: string): FilterItem[] => {\n const value = localFilterValues.value[key];\n if (Array.isArray(value)) {\n return value;\n }\n if (value !== null && value !== undefined) {\n return [value];\n }\n return [];\n};\n\nconst isRangeTuple = (value: unknown): value is [string, string] => (\n Array.isArray(value)\n && value.length === 2\n && typeof value[0] === 'string'\n && typeof value[1] === 'string'\n);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeCandidates = (column: ColumnConfig, raw: unknown): FilterItem[] => {\n if (raw === null || raw === undefined) {\n return [];\n }\n\n if (column.filterMode === FilterMode.SEARCH) {\n if (typeof raw !== 'string') {\n return [];\n }\n const trimmed = raw.trim();\n return trimmed.length === 0 ? [] : [trimmed];\n }\n\n if (column.filterMode === FilterMode.DATE) {\n if (!Array.isArray(raw) || raw.length !== 2) {\n return [];\n }\n const tuple: [string, string] = [\n formatDateLike(raw[0]),\n formatDateLike(raw[1]),\n ];\n return [tuple];\n }\n\n if (Array.isArray(raw)) {\n return raw as FilterItem[];\n }\n\n return [raw as FilterItem];\n};\n\nconst setFilterValue = (key: string, value: FilterItem[] | FilterItem | null): void => {\n const next = { ...localFilterValues.value };\n\n if (value === null) {\n next[key] = null;\n emit('filterApply', { key, value: [] });\n } else if (Array.isArray(value)) {\n const compact = value.filter((v) => v !== null && v !== undefined);\n if (compact.length === 0) {\n next[key] = null;\n emit('filterApply', { key, value: [] });\n } else if (compact.length === 1 && !isRangeTuple(compact[0])) {\n next[key] = compact[0];\n emit('filterApply', { key, value: compact });\n } else {\n next[key] = compact;\n emit('filterApply', { key, value: compact });\n }\n } else {\n next[key] = value;\n emit('filterApply', { key, value: [value] });\n }\n\n emit('update:filterValues', next);\n localFilterValues.value = next;\n inputFilters.value[key] = null;\n};\n\nconst applyFilter = (column: ColumnConfig, newValue: unknown): void => {\n const key = String(column.dataIndex);\n\n const candidates = normalizeCandidates(column, newValue);\n if (candidates.length === 0) {\n inputFilters.value[key] = null;\n return;\n }\n\n const isMultiple = (column.filterMultiple ?? props.multiColumnFilters ?? true) !== false;\n if (!isMultiple) {\n if (column.filterMode === FilterMode.DATE) {\n setFilterValue(key, candidates);\n return;\n }\n\n if (Array.isArray(newValue)) {\n setFilterValue(key, candidates[candidates.length - 1] as FilterItem);\n return;\n }\n\n setFilterValue(key, candidates[0] as FilterItem);\n return;\n }\n\n const current = getFilterArray(key);\n const next = [\n ...current,\n ];\n let changed = false;\n\n candidates.forEach((candidate) => {\n if (next.some((item) => isEqual(item, candidate))) {\n return;\n }\n next.push(candidate);\n changed = true;\n });\n\n if (!changed) {\n inputFilters.value[key] = null;\n return;\n }\n\n setFilterValue(key, next);\n};\n\nconst rowClassName = (record: Record<string, unknown>): string => (record.isGroup ? 'parent-row' : '');\n\nconst onTableChange = (\n _pagination: unknown,\n _filters: unknown,\n sorter: { columnKey?: string, order?: TableSortOrder | null },\n): void => {\n emit('sortChange', {\n columnKey: sorter.columnKey || '',\n order: sorter.order || null,\n });\n};\n\nconst resizeColumn = (width: number, col: ColumnConfig): void => {\n const key = col.key || String(col.dataIndex);\n const index = localColumns.value.findIndex(\n (column: ColumnConfig) => (column.key || String(column.dataIndex)) === key,\n );\n if (index === -1) {\n return;\n }\n localColumns.value.splice(index, 1, {\n ...col,\n width,\n });\n};\n\nwatch(\n () => props.filterValues,\n (newVal: Partial<Record<string, FilterValue>> | undefined) => {\n localFilterValues.value = newVal || {};\n },\n);\n\nwatch(\n () => props.columns,\n (newColumns: ColumnConfig[]) => {\n localColumns.value = [\n ...newColumns,\n ];\n },\n {\n immediate: true,\n },\n);\n\nonMounted(() => {\n const tbody = document.querySelector<HTMLElement>('.the-table tbody');\n if (tbody !== null) {\n autoAnimate(tbody);\n }\n});\n</script>\n","<template>\n <a-drawer\n v-model:open=\"drawerOpen\"\n class=\"efko-dataview\"\n title=\"Настройки представления\"\n placement=\"right\"\n >\n <section class=\"mb-4\">\n <h3 class=\"font-bold text-base mb-2\">Отображение колонок</h3>\n\n <div class=\"flex flex-col gap-1\">\n <div v-for=\"col in columns\" :key=\"col.key ?? col.dataIndex\">\n <a-checkbox\n v-model:checked=\"visibility[col.key ?? col.dataIndex]\"\n :disabled=\"isCardMode\"\n class=\"flex\"\n >\n {{ col.title }}\n </a-checkbox>\n </div>\n </div>\n </section>\n\n <section>\n <h3 class=\"font-bold text-base mb-2\">Вид</h3>\n\n <a-radio-group\n v-model:value=\"localViewMode\"\n button-style=\"solid\"\n class=\"mb-3\"\n :disabled=\"disabledViewMode\"\n >\n <a-radio value=\"table\">Таблица</a-radio>\n <a-radio value=\"grid\">Карточки</a-radio>\n </a-radio-group>\n\n <a-radio-group\n v-model:value=\"localCardLayout\"\n button-style=\"solid\"\n :disabled=\"!isCardMode\"\n >\n <a-radio-button value=\"grid\">\n <AppstoreOutlined class=\"mr-2\" />Сетка\n </a-radio-button>\n\n <a-radio-button value=\"row\">\n <PicCenterOutlined class=\"mr-2\" />Строка\n </a-radio-button>\n </a-radio-group>\n </section>\n </a-drawer>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, watch, computed, reactive,\n} from 'vue';\nimport { AppstoreOutlined, PicCenterOutlined } from '@ant-design/icons-vue';\nimport type { ColumnConfig } from '../interface/table.d';\nimport { CardLayout, ViewMode } from './ColumnSettingsDrawer';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n modelValue: Record<string, boolean>,\n showActionsColumn?: boolean,\n disableViewMode?: boolean,\n viewMode: ViewMode,\n cardLayout: CardLayout,\n}>();\n\nconst emit = defineEmits<{(e: 'update:visible', value: boolean): void,\n (e: 'update:modelValue', value: Record<string, boolean>): void,\n (e: 'update:viewMode', value: ViewMode): void,\n (e: 'update:cardLayout', value: CardLayout): void,\n}>();\n\nconst drawerOpen = ref(props.visible);\nconst localViewMode = ref(props.viewMode);\nconst localCardLayout = ref(props.cardLayout);\nconst visibility = reactive<Record<string, boolean>>({\n ...props.modelValue,\n});\n\nconst isCardMode = computed(() => localViewMode.value === 'grid');\nconst disabledViewMode = props.disableViewMode || false;\n\nwatch(\n () => props.visible,\n (value: boolean) => {\n drawerOpen.value = value;\n },\n);\n\nwatch(drawerOpen, (value: boolean) => {\n emit('update:visible', value);\n});\n\nwatch(\n () => props.viewMode,\n (mode: ViewMode) => {\n localViewMode.value = mode;\n },\n);\n\nwatch(localViewMode, (mode: ViewMode) => {\n emit('update:viewMode', mode);\n});\n\nwatch(\n () => props.cardLayout,\n (layout: CardLayout) => {\n localCardLayout.value = layout;\n },\n);\n\nwatch(localCardLayout, (layout: CardLayout) => {\n emit('update:cardLayout', layout);\n});\n\nwatch(\n () => props.modelValue,\n (view: Record<string, boolean>) => Object.assign(visibility, view),\n {\n deep: true,\n },\n);\n\nwatch(visibility, (view: Record<string, boolean>) => emit('update:modelValue', {\n ...view,\n}), {\n deep: true,\n});\n\nif (props.showActionsColumn && visibility.actions === undefined) {\n visibility.actions = true;\n}\n</script>\n","<template>\n <component\n v-bind=\"componentProps\"\n :is=\"inputComponent\"\n v-model:value=\"inputValue\"\n v-model=\"inputValue\"\n :placeholder=\"placeholder\"\n class=\"w-full text-sm\"\n />\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed, ref, watch,\n} from 'vue';\nimport Multiselect from '../ui/TheSelect.vue';\nimport { FilterMode } from '../table/enum/table';\n\ntype Mode = 'search' | 'select' | 'date'\ntype Value =\n | string\n | number\n | boolean\n | object\n | (string | number | boolean | object)[]\n | null\n | undefined\n\nconst props = defineProps<{\n modelValue: Value,\n filterMode?: Mode,\n componentProps?: Record<string, unknown>,\n placeholder: string,\n}>();\n\nconst emit = defineEmits<{(event:'update:modelValue', value:Value): void }>();\n\nconst inputComponent = computed(() => {\n if (props.filterMode === FilterMode.SEARCH) {\n return 'a-input';\n }\n if (props.filterMode === FilterMode.SELECT) {\n return Multiselect;\n }\n if (props.filterMode === FilterMode.DATE) {\n return 'a-range-picker';\n }\n return 'a-input';\n});\n\nconst inputValue = ref<Value>(props.modelValue);\n\nwatch(() => props.modelValue, (value: Value) => {\n inputValue.value = value;\n});\nwatch(inputValue, (value: Value) => emit('update:modelValue', value));\n</script>\n","<template>\n <a-drawer\n v-model:open=\"drawerOpen\"\n class=\"efko-dataview\"\n placement=\"right\"\n width=\"360\"\n title=\"Фильтры\"\n body-style=\"padding: 24px\"\n >\n <section\n v-for=\"column in filterableColumns\"\n :key=\"columnKey(column)\"\n class=\"mb-4 flex flex-col gap-2\"\n >\n <span class=\"text-sm font-medium\">{{ column.title }}</span>\n\n <filter-input\n v-model=\"draft[columnKey(column)]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n />\n </section>\n\n <div class=\"mt-2 flex flex-col gap-2\">\n <a-button block @click=\"resetFilters\">\n Сбросить\n </a-button>\n <a-button\n type=\"primary\"\n block\n :disabled=\"!hasModifications\"\n @click=\"applyFilters\"\n >\n Применить\n </a-button>\n </div>\n </a-drawer>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, reactive, watch, computed,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport FilterInput from './FilterInput.vue';\nimport { FilterMode } from '../table/enum/table';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n} from '../table/interface/table.d';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n filterValues: Record<string, FilterValue | undefined>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:visible', value: boolean): void,\n (\n event: 'update:filterValues',\n value: Record<string, FilterValue | undefined>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n}>();\n\nconst drawerOpen = ref(props.visible);\nconst draft = reactive<Record<string, FilterValue | undefined>>({\n ...props.filterValues,\n});\n\nconst columnKey = (column: ColumnConfig): string | number => column.key ?? String(column.dataIndex);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeToStoredValue = (\n column: ColumnConfig,\n candidate: FilterValue | undefined,\n): FilterValue | undefined => {\n if (candidate === undefined) {\n return undefined;\n }\n if (column.filterMode === FilterMode.DATE) {\n if (Array.isArray(candidate) && candidate.length === 2) {\n return [[formatDateLike(candidate[0]), formatDateLike(candidate[1])]] as unknown as FilterValue;\n }\n return candidate;\n }\n return candidate;\n};\n\nconst toArray = (val: FilterValue | undefined): FilterItem[] => {\n if (Array.isArray(val)) {\n return val as FilterItem[];\n }\n if (val !== null && val !== undefined) {\n return [val as FilterItem];\n }\n return [];\n};\n\nconst valueIsEmpty = (val: FilterValue | undefined): boolean => {\n if (val === null || val === undefined) {\n return true;\n }\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n if (typeof val === 'string') {\n return val.trim() === '';\n }\n return false;\n};\n\nconst filterableColumns = computed(() => props.columns.filter((column: ColumnConfig) => column.filterable));\n\nconst hasModifications = computed(() => Object.keys(draft).some(\n (key: string) => !isEqual(draft[key], props.filterValues[key]),\n));\n\nconst syncDraft = (values: Record<string, FilterValue | undefined>): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n Object.assign(draft, values);\n};\n\nwatch(\n () => props.visible,\n (view: boolean) => {\n drawerOpen.value = view;\n if (view) {\n syncDraft(props.filterValues);\n }\n },\n);\nwatch(drawerOpen, (view: boolean) => {\n emit('update:visible', view);\n});\n\nwatch(\n () => props.filterValues,\n (newVal: Record<string, FilterValue | undefined>) => {\n syncDraft(newVal);\n },\n {\n deep: true,\n },\n);\n\nconst applyFilters = (): void => {\n const updated: Record<string, FilterValue | undefined> = {\n ...props.filterValues,\n };\n\n Object.entries(draft).forEach(([key, candidate]) => {\n const column = props.columns.find((c) => String(columnKey(c)) === key);\n const normalized = column ? normalizeToStoredValue(column, candidate as FilterValue | undefined) : candidate;\n\n if (valueIsEmpty(candidate)) {\n updated[key] = null;\n emit('filterApply', {\n key,\n value: [],\n });\n return;\n }\n updated[key] = normalized as FilterValue;\n emit('filterApply', {\n key,\n value: toArray(normalized as FilterValue),\n });\n });\n\n emit('update:filterValues', updated);\n drawerOpen.value = false;\n};\n\nconst resetFilters = (): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n\n const cleared: Record<string, FilterValue | undefined> = {};\n emit('update:filterValues', cleared);\n};\n</script>\n\n<style scoped>\nspan {\n line-height: 1;\n}\n</style>\n","<template>\n <a-modal\n v-model:visible=\"modalOpen\"\n class=\"efko-dataview\"\n title=\"Фильтры\"\n destroy-on-close\n :ok-text=\"'Применить'\"\n :cancel-text=\"'Сбросить'\"\n :ok-button-props=\"{ disabled: !hasModifications }\"\n @ok=\"applyFilters\"\n @cancel=\"handleCancel\"\n >\n <section\n v-for=\"column in filterableColumns\"\n :key=\"columnKey(column)\"\n class=\"mb-4 flex flex-col gap-2\"\n >\n <span class=\"text-sm font-medium\">{{ column.title }}</span>\n\n <filter-input\n v-model=\"draft[columnKey(column)]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n />\n </section>\n </a-modal>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, reactive, watch, computed,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport FilterInput from './FilterInput.vue';\nimport { FilterMode } from '../table/enum/table';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n} from '../table/interface/table.d';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n filterValues: Record<string, FilterValue | undefined>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:visible', value: boolean): void,\n (\n event: 'update:filterValues',\n value: Record<string, FilterValue | undefined>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n}>();\n\nconst modalOpen = ref(props.visible);\nconst draft = reactive<Record<string, FilterValue | undefined>>({\n ...props.filterValues,\n});\n\nconst columnKey = (column: ColumnConfig): string | number => column.key ?? String(column.dataIndex);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeToStoredValue = (\n column: ColumnConfig,\n candidate: FilterValue | undefined,\n): FilterValue | undefined => {\n if (candidate === undefined) {\n return undefined;\n }\n if (column.filterMode === FilterMode.DATE) {\n if (Array.isArray(candidate) && candidate.length === 2) {\n return [[formatDateLike(candidate[0]), formatDateLike(candidate[1])]] as unknown as FilterValue;\n }\n return candidate;\n }\n return candidate;\n};\n\nconst toArray = (val: FilterValue | undefined): FilterItem[] => {\n if (Array.isArray(val)) {\n return val as FilterItem[];\n }\n if (val !== null && val !== undefined) {\n return [val as FilterItem];\n }\n return [];\n};\n\nconst valueIsEmpty = (val: FilterValue | undefined): boolean => {\n if (val === null || val === undefined) {\n return true;\n }\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n if (typeof val === 'string') {\n return val.trim() === '';\n }\n return false;\n};\n\nconst filterableColumns = computed(\n () => props.columns.filter((column: ColumnConfig) => column.filterable),\n);\n\nconst hasModifications = computed(() => Object.keys(draft).some(\n (key: string) => !isEqual(draft[key], props.filterValues[key]),\n));\n\nconst syncDraft = (values: Record<string, FilterValue | undefined>): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n Object.assign(draft, values);\n};\n\nwatch(\n () => props.visible,\n (view: boolean) => {\n modalOpen.value = view;\n if (view) {\n syncDraft(props.filterValues);\n }\n },\n);\nwatch(modalOpen, (view: boolean) => {\n emit('update:visible', view);\n});\n\nwatch(\n () => props.filterValues,\n (newVal: Record<string, FilterValue | undefined>) => {\n syncDraft(newVal);\n },\n {\n deep: true,\n },\n);\n\nconst applyFilters = (): void => {\n const updated: Record<string, FilterValue | undefined> = {\n ...props.filterValues,\n };\n\n Object.entries(draft).forEach(([key, candidate]) => {\n const column = props.columns.find((c) => String(columnKey(c)) === key);\n const normalized = column ? normalizeToStoredValue(column, candidate as FilterValue | undefined) : candidate;\n\n if (valueIsEmpty(candidate)) {\n updated[key] = null;\n emit('filterApply', {\n key,\n value: [],\n });\n return;\n }\n updated[key] = normalized as FilterValue;\n emit('filterApply', {\n key,\n value: toArray(normalized as FilterValue),\n });\n });\n\n emit('update:filterValues', updated);\n modalOpen.value = false;\n};\n\nconst handleCancel = (): void => {\n modalOpen.value = false;\n};\n</script>\n\n<style scoped>\nspan {\n line-height: 1;\n}\n</style>\n","export enum ViewMode {\n Table = 'table',\n Grid = 'grid',\n}\nexport enum CardLayout {\n Grid = 'grid',\n Row = 'row',\n}\n","<template>\n <div class=\"efko-dataview\">\n <div ref=\"tagCloudContainer\">\n <filter-tag-cloud\n :filters=\"activeFilters\"\n @update:filters=\"updateFilters\"\n @remove=\"removeFilter\"\n @clear=\"clearFilters\"\n />\n </div>\n\n <template v-if=\"isCardMode\">\n <div class=\"flex items-center justify-between gap-2 mb-2\">\n <div class=\"flex items-center gap-1\">\n <a-badge dot :count=\"hiddenColumnCount\">\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"isColumnDrawerOpen = true\"\n >\n <Icon name=\"solar:settings-outline\" class=\"text-lg\" />\n </a-button>\n </a-badge>\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"isFilterDrawerOpen = true\"\n >\n <Icon name=\"ant-design:filter-outlined\" class=\"text-lg\" />\n </a-button>\n </div>\n\n <slot name=\"headerCardContainer\" />\n <slot name=\"title\" />\n </div>\n\n <card-grid\n v-if=\"isCardMode\"\n :loading=\"loading\"\n :columns=\"columns\"\n :data-source=\"dataSource\"\n :card-layout=\"cardLayout\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :show-actions-column=\"showActionsColumn\"\n :pagination=\"pagination\"\n :meta=\"meta\"\n @restore=\"(r) => emit('restore', r)\"\n @edit=\"(r) => emit('edit', r)\"\n @delete=\"(r) => emit('delete', r)\"\n @page-change=\"(p) => emit('pageChange', p)\"\n @size-change=\"(p, s) => emit('sizeChange', p, s)\"\n >\n <template v-if=\"$slots.titleCard\" #titleCard=\"p\">\n <slot name=\"titleCard\" v-bind=\"p\" />\n </template>\n\n <template v-if=\"$slots.body\" #bodyCard=\"p\">\n <slot name=\"body\" v-bind=\"p\" />\n </template>\n\n <template v-if=\"$slots.footer\" #footerCard=\"p\">\n <slot name=\"footer\" v-bind=\"p\" />\n </template>\n </card-grid>\n </template>\n\n <data-table\n v-else\n :loading=\"loading\"\n :pagination=\"pagination\"\n :columns=\"columns\"\n :data-source=\"dataSource\"\n :filter-values=\"activeFilters\"\n :meta=\"meta\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :delete-action=\"deleteAction\"\n :show-actions-column=\"showActionsColumn\"\n :columns-visibility=\"columnVisibility\"\n :disable-column-filter-dropdowns=\"props.disableColumnFilterDropdowns === true\"\n :show-filter-button=\"props.enableTableFilterDrawer === true\"\n :multi-column-filters=\"props.multiColumnFilters\"\n @open-column-drawer=\"isColumnDrawerOpen = true\"\n @open-filter-drawer=\"isFilterDrawerOpen = true\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n @restore=\"(record) => emit('restore', record)\"\n @edit=\"(record) => emit('edit', record)\"\n @delete=\"(record) => emit('delete', record)\"\n @sort-change=\"(payload) => emit('sortChange', payload)\"\n @page-change=\"(page) => emit('pageChange', page)\"\n @size-change=\"(page, size) => emit('sizeChange', page, size)\"\n >\n <template #title>\n <slot name=\"title\" />\n </template>\n <template #bodyCell=\"p\"><slot name=\"bodyCell\" v-bind=\"p\" /></template>\n <template #actionColumn=\"p\"><slot name=\"actionColumn\" v-bind=\"p\" /></template>\n </data-table>\n\n <slot\n name=\"filtersDrawer\"\n :visible=\"isFilterDrawerOpen\"\n :set-visible=\"(value: boolean) => { isFilterDrawerOpen = value; }\"\n :filters=\"activeFilters\"\n :update-filters=\"updateFilters\"\n :emit-filter-apply=\"emitFilterApply\"\n >\n <card-filters-modal\n v-if=\"props.useFilterModal === true\"\n v-model:visible=\"isFilterDrawerOpen\"\n :columns=\"columns\"\n :filter-values=\"activeFilters\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n />\n <card-filters-drawer\n v-else\n v-model:visible=\"isFilterDrawerOpen\"\n :columns=\"columns\"\n :filter-values=\"activeFilters\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n />\n </slot>\n\n <column-settings-drawer\n v-model:visible=\"isColumnDrawerOpen\"\n v-model:model-value=\"columnVisibility\"\n v-model:view-mode=\"currentViewMode\"\n v-model:card-layout=\"cardLayout\"\n :columns=\"columns\"\n :show-actions-column=\"showActionsColumn\"\n :disable-view-mode=\"disableViewMode\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, watch, computed, onMounted,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport autoAnimate from '@formkit/auto-animate';\n\nimport FilterTagCloud from './table/ui/filter/FilterTagCloud.vue';\nimport CardGrid from './card/CardGrid.vue';\nimport DataTable from './table/TheTable.vue';\nimport ColumnSettingsDrawer from './table/ui/ColumnSettingsDrawer.vue';\nimport CardFiltersDrawer from './card/CardFiltersDrawer.vue';\nimport CardFiltersModal from './card/CardFiltersModal.vue';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n Meta,\n SortPayload,\n} from './table/interface/table.d';\nimport { CardLayout, ViewMode } from './table/ui/ColumnSettingsDrawer';\nimport type { FilterValues } from './DataView.d';\nimport type { TableRecord } from './card/TheCard.d';\n\nconst props = withDefaults(\n defineProps<{\n viewMode?: ViewMode;\n loading: boolean;\n pagination?: boolean;\n columns: ColumnConfig[];\n dataSource: TableRecord[];\n filterValues?: Partial<Record<string, FilterValue>>;\n meta?: Meta;\n canEdit?: boolean;\n editAction?: boolean;\n deleteAction?: boolean;\n showActionsColumn?: boolean;\n disableViewMode?: boolean;\n enableTableFilterDrawer?: boolean;\n disableColumnFilterDropdowns?: boolean;\n useFilterModal?: boolean;\n multiColumnFilters?: boolean;\n }>(),\n {\n pagination: false,\n canEdit: true,\n editAction: true,\n deleteAction: true,\n showActionsColumn: true,\n disableViewMode: false,\n enableTableFilterDrawer: false,\n disableColumnFilterDropdowns: false,\n useFilterModal: false,\n multiColumnFilters: true,\n },\n);\n\nconst emit = defineEmits<{(e: 'update:viewMode', value: ViewMode): void,\n (e: 'update:filterValues', value: Partial<Record<string, FilterValue>>): void,\n (e: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n (e: 'edit' | 'delete' | 'restore', record: Record<string, unknown>): void,\n (e: 'sortChange', payload: SortPayload): void,\n (e: 'pageChange', page: number): void,\n (e: 'sizeChange', page: number, pageSize: number): void,\n}>();\n\nconst currentViewMode = ref<ViewMode>(props.viewMode || ViewMode.Table);\nconst isCardMode = computed(() => currentViewMode?.value === ViewMode.Grid);\nconst cardLayout = ref<CardLayout>(CardLayout.Grid);\nconst activeFilters = ref<Partial<Record<string, FilterValue>>>(\n props.filterValues || {},\n);\n\nconst tagCloudContainer = ref<HTMLElement | null>(null);\n\nconst updateFilters = (filters: Partial<Record<string, FilterValue>>): void => {\n activeFilters.value = filters;\n emit('update:filterValues', filters);\n};\n\nconst removeFilter = (\n key: string,\n value: FilterValue | undefined,\n target: FilterItem,\n): void => {\n const next = { ...activeFilters.value };\n\n if (value === undefined) {\n return;\n }\n\n if (Array.isArray(value)) {\n const remaining = value.filter((item: FilterItem) => !isEqual(item, target));\n if (remaining.length === 0) {\n next[key] = null;\n } else if (remaining.length === 1 && !Array.isArray(remaining[0])) {\n next[key] = remaining[0];\n } else {\n next[key] = remaining;\n }\n updateFilters(next);\n return;\n }\n\n if (isEqual(value, target)) {\n next[key] = null;\n updateFilters(next);\n }\n};\n\nconst clearFilters = (): void => updateFilters({});\n\nconst emitFilterApply = (payload: { key: string; value: FilterItem[] }): void => {\n emit('filterApply', payload);\n};\n\nconst isFilterDrawerOpen = ref(false);\nconst isColumnDrawerOpen = ref(false);\n\nconst columnVisibility = ref<Record<string, boolean>>({});\n\nconst hiddenColumnCount = computed(() => (currentViewMode.value === 'table'\n ? Object.keys(columnVisibility.value).filter(\n (key: string) => columnVisibility.value[key] === false,\n ).length\n : 0));\n\nconst initVisibility = (cols: ColumnConfig[]): void => {\n cols.forEach((col: ColumnConfig) => {\n const key = col.key ?? String(col.dataIndex);\n if (columnVisibility.value[key] === undefined) {\n columnVisibility.value[key] = true;\n }\n });\n\n if (props.showActionsColumn && columnVisibility.value.actions === undefined) {\n columnVisibility.value.actions = true;\n }\n};\n\nwatch(\n () => props.filterValues,\n (value: FilterValues) => {\n activeFilters.value = value || {};\n },\n);\n\nwatch(\n () => props.viewMode,\n (mode: ViewMode | undefined) => {\n if (mode !== undefined) {\n currentViewMode.value = mode;\n }\n },\n);\n\nwatch(() => props.columns, initVisibility);\n\nwatch(currentViewMode, (mode: ViewMode) => emit('update:viewMode', mode));\n\nonMounted(() => initVisibility(props.columns));\n\nonMounted(() => {\n if (tagCloudContainer.value) {\n autoAnimate(tagCloudContainer.value);\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n onMounted,\n onBeforeUnmount,\n} from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n onIntersect?:() => void,\n threshold?: number,\n once?: boolean,\n rootMargin?: string,\n }>(),\n {\n threshold: 0.1,\n once: false,\n rootMargin: '0px',\n },\n);\n\nconst container = ref<HTMLElement | null>(null);\nlet observer: IntersectionObserver | null = null;\n\nconst handleIntersection = (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (entry.isIntersecting && props.onIntersect) {\n props.onIntersect();\n if (props.once && observer) {\n observer.disconnect();\n }\n }\n};\n\nonMounted(() => {\n observer = new IntersectionObserver(handleIntersection, {\n threshold: props.threshold,\n rootMargin: props.rootMargin,\n });\n\n if (container.value) {\n observer.observe(container.value);\n }\n});\n\nonBeforeUnmount(() => {\n observer?.disconnect();\n});\n</script>\n"],"names":["props","__props","emit","__emit","token","theme","tagStyle","computed","hasValidFilter","value","hasFilters","hasNameField","obj","formatFilterItem","item","intervalLabel","joinedLabel","nameLabel","jsonLabel","parseFilterValues","isFilterItemEqual","a","b","removeFilter","key","fullValue","itemToRemove","updated","clearAllFilters","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_Fragment","_renderList","filterKey","filterValue","_createBlock","_component_a_tag","_createTextVNode","_toDisplayString","_component_a_button","_cache","_unref","CheckCircleTwoTone","canEdit","editAction","deleteHandler","record","restoreHandler","editHandler","_component_a_tooltip","_createVNode","h","EyeOutlined","$event","EditOutlined","RedoOutlined","DeleteOutlined","recordValue","column","getNameOrEmpty","name","isEmptyTagValue","normalizeItemLabel","displayItems","label","tagItems","index","showActionsColumn","_component_a_card","_renderSlot","_ctx","_hoisted_3","_hoisted_4","_hoisted_5","TableCellStatus","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","$slots","_hoisted_10","CardCellActions","container","ref","observer","handleIntersection","entries","_a","onMounted","onBeforeUnmount","_component_a_spin","autoAnimate","gridClass","preparedColumns","internalData","mergeData","existingIds","toAdd","watch","isLastPage","loadNextPage","TheCard","rec","bodyRecord","bodyColumns","footerRecord","footerColumns","LazyLoadTrigger","PAGE_SIZE_SMALL","PAGE_SIZE_MEDIUM","PAGE_SIZE_LARGE","PAGE_SIZE_EXTRA_LARGE","PAGE_SIZE_ULTRA","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","FilterMode","PageSizes","PAGE_SIZE_OPTIONS","SkipSizes","TableDefaults","TableSortOrder","SortOrder","_sfc_main$a","defineComponent","VueMultiselect","Empty","_component_VueMultiselect","_mergeProps","_withCtx","_component_a_empty","filterComponent","Multiselect","localValue","handleApply","_resolveDynamicComponent","cellValue","nameValue","hasTagValue","_component_a_skeleton","showFilterButton","localFilterValues","localColumns","inputFilters","filterableColumns","computedColumns","result","headerAlign","cellAlign","rest","hiddenColumnCount","getFilterArray","isRangeTuple","formatDateLike","maybeFormat","maybeToISOString","normalizeCandidates","raw","trimmed","setFilterValue","next","compact","v","applyFilter","newValue","candidates","changed","candidate","isEqual","rowClassName","onTableChange","_pagination","_filters","sorter","resizeColumn","width","col","newVal","newColumns","tbody","_component_a_table","_component_a_badge","$emit","_component_Icon","TableBodyCell","TableCellActions","FilterDropdown","_component_a_pagination","_b","_c","total","_d","page","size","drawerOpen","localViewMode","localCardLayout","visibility","reactive","isCardMode","disabledViewMode","mode","layout","view","_component_a_drawer","_component_a_checkbox","_component_a_radio_group","_component_a_radio","_component_a_radio_button","AppstoreOutlined","PicCenterOutlined","inputComponent","inputValue","draft","columnKey","normalizeToStoredValue","toArray","val","valueIsEmpty","hasModifications","syncDraft","values","applyFilters","c","normalized","resetFilters","FilterInput","modalOpen","handleCancel","_component_a_modal","ViewMode","CardLayout","currentViewMode","cardLayout","activeFilters","tagCloudContainer","updateFilters","filters","target","remaining","clearFilters","emitFilterApply","payload","isFilterDrawerOpen","isColumnDrawerOpen","columnVisibility","initVisibility","cols","FilterTagCloud","CardGrid","r","p","s","DataTable","CardFiltersModal","CardFiltersDrawer","ColumnSettingsDrawer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-view.es.js","sources":["../dataview/table/ui/filter/FilterTagCloud.vue","../dataview/table/ui/table-cell/TableCellStatus.vue","../dataview/card/ui/CardCellActions.vue","../dataview/card/TheCard.vue","../dataview/lazyload/LazyLoadTrigger.vue","../dataview/card/CardGrid.vue","../dataview/table/enum/table.ts","../dataview/ui/TheSelect.vue","../dataview/table/ui/filter/FilterDropdown.vue","../dataview/table/ui/table-cell/TableCellActions.vue","../dataview/table/ui/table-cell/TableBodyCell.vue","../dataview/table/TheTable.vue","../dataview/table/ui/ColumnSettingsDrawer.vue","../dataview/card/FilterInput.vue","../dataview/card/CardFiltersDrawer.vue","../dataview/card/CardFiltersModal.vue","../dataview/table/ui/ColumnSettingsDrawer.ts","../dataview/DataView.vue","../dataview/lazyload/LazyLoadContainer.vue"],"sourcesContent":["<template>\n <a-flex align=\"center\" wrap=\"wrap\" class=\"tag-cloud\">\n <a-flex wrap=\"wrap\">\n <template\n v-for=\"[filterKey, filterValue] in Object.entries(filters)\"\n :key=\"filterKey\"\n >\n <a-tag\n v-for=\"value in parseFilterValues(filterValue)\"\n :key=\"value.key\"\n class=\"filter-tag\"\n :closable=\"true\"\n :style=\"tagStyle\"\n @close=\"() => removeFilter(filterKey, filterValue, value.original)\"\n >\n {{ value.label }}\n </a-tag>\n </template>\n </a-flex>\n <a-button v-if=\"hasFilters\" type=\"link\" @click=\"clearAllFilters\">\n Очистить все\n </a-button>\n </a-flex>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { theme } from 'efko-ui-library';\nimport type {\n FilterItem,\n FilterValue,\n} from '../../interface/table.d';\n\nconst props = defineProps<{\n filters: Partial<Record<string, FilterValue>>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:filters', value: Partial<Record<string, FilterValue>>): void,\n (\n event: 'remove',\n key: string,\n filterValue: FilterValue | undefined,\n valueToRemove: FilterItem\n ): void,\n (event: 'clear'): void,\n}>();\n\nconst { token } = theme.useToken();\n\nconst tagStyle = computed(() => {\n return {\n color: token.value.colorSelectedMenu,\n borderColor: token.value.colorBorderSecondary,\n backgroundColor: token.value.mainBgColor || token.value.colorPrimaryBg,\n }\n});\n\nconst hasValidFilter = (value: FilterValue | undefined): boolean => {\n if (value === null || value === undefined) {\n return false;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return Boolean(value);\n};\n\nconst hasFilters = computed(() => Object.values(props.filters).some(hasValidFilter));\n\nfunction hasNameField(obj: unknown): obj is { name: string } {\n return (\n typeof obj === 'object'\n && obj !== null\n && 'name' in obj\n && typeof (obj as { name: unknown }).name === 'string'\n );\n}\n\nconst formatFilterItem = (\n item: FilterItem,\n): { key: string, label: string, original: FilterItem } => {\n if (typeof item === 'string') {\n return {\n key: item,\n label: item,\n original: item,\n };\n }\n if (Array.isArray(item)) {\n if (\n item.length === 2\n && typeof item[0] === 'string'\n && typeof item[1] === 'string'\n ) {\n const intervalLabel = `${item[0]} - ${item[1]}`;\n return {\n key: intervalLabel,\n label: intervalLabel,\n original: item,\n };\n }\n const joinedLabel = item.join(', ');\n return {\n key: joinedLabel,\n label: joinedLabel,\n original: item,\n };\n }\n\n if (hasNameField(item)) {\n const nameLabel = item.name;\n return {\n key: nameLabel,\n label: nameLabel,\n original: item,\n };\n }\n const jsonLabel = JSON.stringify(item);\n return {\n key: jsonLabel,\n label: jsonLabel,\n original: item,\n };\n};\n\nconst parseFilterValues = (\n value: FilterValue | undefined,\n): { key: string, label: string, original: FilterItem }[] => {\n if (value === undefined || value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.map((item: FilterItem) => formatFilterItem(item));\n }\n return [\n formatFilterItem(value),\n ];\n};\n\nconst isFilterItemEqual = (a: FilterItem, b: FilterItem): boolean => {\n if (typeof a === 'string' || typeof b === 'string') {\n return a === b;\n }\n return JSON.stringify(a) === JSON.stringify(b);\n};\n\nconst removeFilter = (\n key: string,\n fullValue: FilterValue | undefined,\n itemToRemove: FilterItem,\n): void => {\n if (Array.isArray(fullValue)) {\n const updated = fullValue.filter(\n (value: FilterItem) => !isFilterItemEqual(value, itemToRemove),\n );\n emit('update:filters', {\n ...props.filters,\n [key]: updated,\n });\n } else {\n emit('update:filters', {\n ...props.filters,\n [key]: null,\n });\n }\n emit('remove', key, fullValue, itemToRemove);\n};\n\nconst clearAllFilters = (): void => {\n emit('update:filters', {});\n emit('clear');\n};\n</script>\n\n<style scoped>\n.tag-cloud {\n display: flex;\n flex-wrap: wrap;\n}\n.filter-tag {\n padding: 5px 10px;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 600;\n margin: 4px;\n}\n</style>\n","<template>\n <div class=\"flex items-center justify-center text-lg\">\n <check-circle-two-tone\n v-if=\"!Boolean(value)\"\n two-tone-color=\"#4ade80\"\n />\n <check-circle-two-tone\n v-else\n two-tone-color=\"#bfbfbf\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { CheckCircleTwoTone } from '@ant-design/icons-vue';\n\ndefineProps<{\n value: unknown,\n}>();\n</script>\n","<template>\n <div class=\"flex items-center justify-center gap-2\">\n <a-tooltip v-if=\"canEdit === false\" title=\"Смотреть\">\n <a-button :icon=\"h(EyeOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <template v-if=\"canEdit !== false\">\n <a-tooltip v-if=\"editAction !== false\" title=\"Редактировать\">\n <a-button :icon=\"h(EditOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <a-tooltip :title=\"record.deletedAt ? 'Восстановить' : 'Удалить'\">\n <a-button\n :icon=\"h(record.deletedAt ? RedoOutlined : DeleteOutlined)\"\n @click=\"\n record.deletedAt ? restoreHandler(record) : deleteHandler(record)\n \"\n />\n </a-tooltip>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\n\nimport {\n EditOutlined,\n DeleteOutlined,\n RedoOutlined,\n EyeOutlined,\n} from '@ant-design/icons-vue';\n\ninterface TableRecord {\n deletedAt?: string | null,\n [key: string]: unknown,\n}\n\nconst props = defineProps<{\n record: TableRecord,\n canEdit?: boolean,\n editAction?: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'edit' | 'delete' | 'restore', record: TableRecord): void,\n}>();\n\nconst canEdit = props.canEdit ?? true;\nconst editAction = props.editAction ?? true;\n\nconst deleteHandler = (record: TableRecord): void => emit('delete', record);\nconst restoreHandler = (record: TableRecord): void => emit('restore', record);\nconst editHandler = (record: TableRecord): void => emit('edit', record);\n</script>\n","<template>\n <a-card\n :loading=\"loading\"\n :bordered=\"false\"\n class=\"data-card bg-white rounded-3 shadow-sm\"\n >\n <template #title>\n <div class=\"data-card__header\">\n <slot name=\"title\" />\n </div>\n </template>\n\n <div class=\"data-card__body\">\n <slot name=\"body\" :record=\"record\" :columns=\"columns\">\n <div\n v-for=\"column in columns\"\n :key=\"column.dataIndex\"\n class=\"data-card__row\"\n >\n <span class=\"data-card__label\">\n {{ column.title }}:\n </span>\n\n <span class=\"data-card__value\">\n <span v-if=\"column.dataIndex === 'deletedAt'\">\n <table-cell-status :value=\"record.deletedAt\" />\n </span>\n\n <template v-else-if=\"Array.isArray(recordValue(column))\">\n <template v-if=\"column.tag === true\">\n <a-tag\n v-for=\"item in tagItems(column)\"\n :key=\"item.key\"\n class=\"mr-1 mb-1\"\n >\n {{ item.label }}\n </a-tag>\n </template>\n\n <template v-else>\n <span\n v-for=\"(item, index) in displayItems(column)\"\n :key=\"index\"\n >\n {{ item }}\n\n <template v-if=\"index < displayItems(column).length - 1\">\n ,\n </template>\n </span>\n </template>\n </template>\n\n <span v-else-if=\"typeof recordValue(column) === 'boolean'\">\n <table-cell-status :value=\"!Boolean(recordValue(column))\" />\n </span>\n\n <span v-else-if=\"recordValue(column) !== null && typeof recordValue(column) === 'object'\">\n {{ getNameOrEmpty(recordValue(column)) }}\n </span>\n\n <span v-else-if=\"column.tag === true\">\n <a-tag v-if=\"!isEmptyTagValue(recordValue(column))\">\n {{ recordValue(column) }}\n </a-tag>\n </span>\n\n <span v-else>\n {{ recordValue(column) }}\n </span>\n </span>\n </div>\n </slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"data-card__footer\">\n <slot name=\"footer\" :record=\"record\" :columns=\"columns\" />\n </div>\n\n <template v-if=\"showActionsColumn\" #actions>\n <card-cell-actions\n :record=\"record\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n @edit=\"editHandler\"\n @delete=\"deleteHandler\"\n @restore=\"restoreHandler\"\n />\n </template>\n </a-card>\n</template>\n\n<script lang=\"ts\" setup>\nimport TableCellStatus from '../table/ui/table-cell/TableCellStatus.vue';\nimport CardCellActions from './ui/CardCellActions.vue';\n\nimport type { ColumnConfig } from '../table/interface/table.d';\nimport type { TableRecord } from './TheCard.d';\n\nconst props = defineProps<{\n loading: boolean,\n record: TableRecord,\n columns: ColumnConfig[],\n canEdit?: boolean,\n editAction?: boolean,\n showActionsColumn?: boolean,\n}>();\n\nconst recordValue = (column: ColumnConfig): unknown =>\n (props.record as Record<string, unknown>)[String(column.dataIndex)];\n\nconst recordArray = (column: ColumnConfig): unknown[] => {\n const value = recordValue(column);\n return Array.isArray(value) ? value : [];\n};\n\nconst getNameOrEmpty = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return '';\n }\n if ('name' in (value as Record<string, unknown>)) {\n const name = (value as { name?: unknown }).name;\n return typeof name === 'string' ? name : '';\n }\n return '';\n};\n\nconst isEmptyTagValue = (value: unknown): boolean => {\n if (value === null || value === undefined) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n return false;\n};\n\nconst normalizeItemLabel = (item: unknown): string => {\n if (item === null || item === undefined) {\n return '';\n }\n if (typeof item === 'string') {\n return item.trim();\n }\n if (typeof item === 'object') {\n return getNameOrEmpty(item);\n }\n return String(item);\n};\n\nconst displayItems = (column: ColumnConfig): string[] => {\n const value = recordValue(column);\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((item) => normalizeItemLabel(item))\n .filter((label) => label.trim().length > 0);\n};\n\nconst tagItems = (column: ColumnConfig): { key: string; label: string }[] =>\n displayItems(column).map((label, index) => ({\n key: `${label}-${index}`,\n label,\n }));\n\nconst emit = defineEmits<{(e: 'delete' | 'restore' | 'edit', record: TableRecord): void,\n}>();\n\nconst canEdit = props.canEdit ?? true;\nconst editAction = props.editAction ?? true;\nconst showActionsColumn = props.showActionsColumn ?? true;\n\nconst deleteHandler = (record: TableRecord): void => emit('delete', record);\nconst restoreHandler = (record: TableRecord): void => emit('restore', record);\nconst editHandler = (record: TableRecord): void => emit('edit', record);\n</script>\n\n<style scoped>\n.data-card {\n transition: box-shadow 0.18s ease-out, transform 0.18s ease-out;\n}\n\n.data-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 12px 30px rgba(33, 37, 41, 0.08);\n}\n\n.data-card__header {\n display: flex;\n align-items: center;\n min-height: 32px;\n}\n\n.data-card__body {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.data-card__row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 2px 0;\n}\n\n.data-card__label {\n flex: 0 0 auto;\n font-weight: 500;\n font-size: 12px;\n color: #6c757d;\n}\n\n.data-card__value {\n flex: 1 1 auto;\n font-size: 13px;\n word-break: break-word;\n}\n\n.data-card__footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 12px;\n}\n</style>\n","<template>\n <div class=\"efko-dataview\">\n <div\n ref=\"container\"\n style=\"height: 1px\"\n class=\"flex items-center justify-center py-5\"\n >\n <a-spin :spinning=\"loading\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n onMounted,\n onBeforeUnmount,\n} from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n onIntersect:() => void,\n threshold?: number,\n once?: boolean,\n loading: boolean,\n }>(),\n {\n threshold: 0.1,\n once: false,\n },\n);\n\nconst container = ref<HTMLElement | null>(null);\nlet observer: IntersectionObserver | null = null;\n\nconst handleIntersection = (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n props.onIntersect?.();\n if (props.once && observer) {\n observer.disconnect();\n }\n }\n};\n\nonMounted(() => {\n observer = new IntersectionObserver(handleIntersection, {\n threshold: props.threshold,\n });\n if (container.value) {\n observer.observe(container.value);\n }\n});\n\nonBeforeUnmount(() => {\n if (observer) observer.disconnect();\n});\n</script>\n","<template>\n <div class=\"efko-dataview\">\n <div class=\"flex flex-col gap-4\">\n <div :class=\"gridClass\">\n <the-card\n v-for=\"(record, index) in internalData\"\n :key=\"String(record.id ?? `card-${index}`)\"\n :loading=\"loading\"\n :record=\"record\"\n :columns=\"preparedColumns\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :show-actions-column=\"showActionsColumn\"\n @edit=\"(rec) => emit('edit', rec)\"\n @delete=\"(rec) => emit('delete', rec)\"\n @restore=\"(rec) => emit('restore', rec)\"\n >\n <template v-if=\"$slots.titleCard\" #title>\n <slot\n name=\"titleCard\"\n :record=\"record\"\n :columns=\"preparedColumns\"\n />\n </template>\n\n <template v-if=\"$slots.bodyCard\" #body=\"{ record: bodyRecord, columns: bodyColumns }\">\n <slot\n name=\"bodyCard\"\n :record=\"bodyRecord\"\n :columns=\"bodyColumns\"\n />\n </template>\n\n <template v-if=\"$slots.footerCard\" #footer=\"{ record: footerRecord, columns: footerColumns }\">\n <slot\n name=\"footerCard\"\n :record=\"footerRecord\"\n :columns=\"footerColumns\"\n />\n </template>\n </the-card>\n </div>\n\n <LazyLoadTrigger\n v-if=\"pagination && !isLastPage\"\n :loading=\"loading\"\n :once=\"false\"\n :on-intersect=\"loadNextPage\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, computed, watch, onMounted,\n} from 'vue';\nimport autoAnimate from '@formkit/auto-animate';\nimport TheCard from './TheCard.vue';\nimport type { ColumnConfig, Meta } from '../table/interface/table.d';\nimport type { TableRecord } from './TheCard.d';\nimport LazyLoadTrigger from '../lazyload/LazyLoadTrigger.vue';\n\nconst props = defineProps<{\n loading: boolean,\n columns: ColumnConfig[],\n dataSource: TableRecord[],\n cardLayout: 'grid' | 'row',\n canEdit: boolean,\n editAction: boolean,\n showActionsColumn?: boolean,\n pagination: boolean,\n meta: Meta | undefined,\n}>();\n\nconst emit = defineEmits<{(event: 'delete' | 'restore' | 'edit', record: Record<string, unknown>): void,\n (event: 'pageChange', page: number): void,\n (event: 'sizeChange', page: number, size: number): void,\n}>();\n\nonMounted(() => {\n const container = document.querySelector<HTMLElement>('.card-grid');\n if (container !== null) {\n autoAnimate(container);\n }\n});\n\nconst gridClass = computed(\n () => (props.cardLayout === 'row'\n ? 'card-grid card-grid--row'\n : 'card-grid card-grid--grid'),\n);\n\nconst preparedColumns = computed(() => props.columns);\n\nconst internalData = ref<TableRecord[]>([]);\n\nconst mergeData = (): void => {\n if (props.meta?.currentPage === 1) {\n internalData.value = [\n ...props.dataSource,\n ];\n return;\n }\n\n const existingIds = new Set(internalData.value.map((record: Record<string, unknown>) => record.id));\n const toAdd = props.dataSource.filter((record: TableRecord) => !existingIds.has(record.id));\n internalData.value.push(...toAdd);\n};\n\nmergeData();\n\nwatch(() => [\n props.dataSource,\n props.meta?.currentPage,\n], mergeData, {\n deep: true,\n});\n\nconst isLastPage = computed(() => {\n if (props.meta === undefined) {\n return true;\n }\n return (\n props.meta.currentPage * props.meta.pageSize\n >= props.meta.total\n );\n});\n\nconst loadNextPage = (): void => {\n if (props.loading || isLastPage.value || !props.meta) {\n return;\n }\n emit('pageChange', props.meta.currentPage + 1);\n};\n</script>\n\n<style scoped>\n.card-grid {\n display: grid;\n gap: 24px;\n}\n\n.card-grid--row {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.card-grid--grid {\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n}\n</style>\n","export const PAGE_SIZE_SMALL = '10';\nexport const PAGE_SIZE_MEDIUM = '20';\nexport const PAGE_SIZE_LARGE = '50';\nexport const PAGE_SIZE_EXTRA_LARGE = '100';\nexport const PAGE_SIZE_ULTRA = '1000';\nexport const DEFAULT_PAGE_NUMBER = 1;\n\nexport const DEFAULT_PAGE_SIZE = PAGE_SIZE_SMALL;\n\nexport enum FilterMode {\n SEARCH = 'search',\n SELECT = 'select',\n DATE = 'date',\n}\n\nexport enum PageSizes {\n SMALL = '10',\n MEDIUM = '20',\n LARGE = '50',\n EXTRA_LARGE = '100',\n ULTRA = '1000'\n}\n\nexport const PAGE_SIZE_OPTIONS = [\n PageSizes.SMALL,\n PageSizes.MEDIUM,\n PageSizes.LARGE,\n PageSizes.EXTRA_LARGE,\n];\n\nexport enum SkipSizes {\n NONE = 0,\n SMALL = 10,\n MEDIUM = 20,\n LARGE = 50\n}\n\nexport enum TableDefaults {\n DEFAULT_CURRENT_PAGE = 1\n}\n\nexport enum TableSortOrder {\n ASCEND = 'ascend',\n DESCEND = 'descend'\n}\n\nexport enum SortOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n","<template>\n <VueMultiselect\n v-bind=\"$attrs\"\n class=\"filter-select\"\n :modelValue=\"modelValue\"\n @update:modelValue=\"$emit('update:modelValue', $event)\"\n label=\"name\"\n value-prop=\"id\"\n >\n <template #nooptions>\n <a-empty :image=\"simpleImage\" />\n </template>\n </VueMultiselect>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport VueMultiselect from '@vueform/multiselect';\nimport { Empty } from 'efko-ui-library';\n\nexport default defineComponent({\n name: 'MultiselectWrapper',\n components: { VueMultiselect },\n props: {\n modelValue: {\n type: [Array, String, Number, Object, Boolean, null],\n default: null,\n },\n },\n emits: ['update:modelValue'],\n data() {\n return { simpleImage: Empty.PRESENTED_IMAGE_SIMPLE };\n },\n});\n</script>\n\n<style scoped>\n.filter-select :deep(.multiselect-placeholder) {\n font-size: 12px;\n}\n</style>\n","<template>\n <div class=\"efko-dataview\">\n <div class=\"flex items-center gap-2 p-2\">\n <component\n v-bind=\"componentProps\"\n :is=\"filterComponent\"\n v-model:value=\"localValue\"\n v-model=\"localValue\"\n :placeholder=\"placeholder\"\n style=\"min-width: 240px; max-width: 300px; font-size: 14px\"\n object\n />\n <a-button type=\"primary\" size=\"small\" @click=\"handleApply\">\n Добавить\n </a-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed, ref,\n} from 'vue';\nimport Multiselect from '../../../ui/TheSelect.vue';\nimport { FilterMode } from '../../enum/table';\n\ntype FilterValue =\n | string\n | number\n | boolean\n | object\n | (string | number | boolean | object)[]\n | null;\n\nconst props = defineProps<{\n placeholder: string,\n filterMode?: FilterMode,\n componentProps?: Record<string, unknown>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:modelValue', value: FilterValue): void,\n (event: 'apply'): void,\n}>();\n\nconst filterComponent = computed(() => {\n if (props.filterMode === FilterMode.SEARCH) {\n return 'a-input';\n }\n\n if (props.filterMode === FilterMode.SELECT) {\n return Multiselect;\n }\n\n if (props.filterMode === FilterMode.DATE) {\n return 'a-range-picker';\n }\n\n return null;\n});\n\nconst localValue = ref(null);\n\nconst handleApply = (): void => {\n emit('update:modelValue', localValue.value);\n emit('apply');\n localValue.value = null;\n};\n</script>\n","<template>\n <div class=\"flex items-center justify-center gap-2\">\n <a-tooltip v-if=\"props.canEdit === false\" title=\"Смотреть\">\n <a-button :icon=\"h(EyeOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <template v-if=\"canEdit !== false\">\n <a-tooltip v-if=\"props.editAction !== false\" title=\"Редактировать\">\n <a-button :icon=\"h(EditOutlined)\" @click=\"editHandler(record)\" />\n </a-tooltip>\n\n <a-tooltip v-if=\"deleteAction !== false\" :title=\"record.isDeleted ? 'Восстановить' : 'Удалить'\">\n <a-button\n :icon=\"h(record.isDeleted ? RedoOutlined : DeleteOutlined)\"\n @click=\"\n record.isDeleted ? restoreHandler(record) : deleteHandler(record)\n \"\n />\n </a-tooltip>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { h } from 'vue';\n\nimport {\n EditOutlined,\n DeleteOutlined,\n RedoOutlined,\n EyeOutlined,\n} from '@ant-design/icons-vue';\n\ninterface TableRecord {\n name?: string,\n isDeleted?: string | null,\n}\n\nconst props = defineProps<{\n record: TableRecord,\n canEdit: boolean,\n editAction: boolean,\n deleteAction: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'edit' | 'delete' | 'restore', record: TableRecord): void,\n}>();\n\nconst deleteHandler = (record: TableRecord): void => {\n emit('delete', record);\n};\n\nconst restoreHandler = (record: TableRecord): void => {\n emit('restore', record);\n};\n\nconst editHandler = (record: TableRecord): void => {\n emit('edit', record);\n};\n</script>\n","<template>\n <a-skeleton\n v-if=\"loading\"\n :active=\"true\"\n :loading=\"true\"\n :title=\"false\"\n :paragraph=\"{ rows: 1 }\"\n />\n\n <template v-else>\n <span v-if=\"column.dataIndex === 'isDeleted'\">\n <table-cell-status :value=\"(record as any).isDeleted\" />\n </span>\n\n <span v-else-if=\"Array.isArray(cellValue)\">\n <template v-if=\"column.tag === true\">\n <a-tag\n v-for=\"item in tagItems\"\n :key=\"item.key\"\n :style=\"tagStyle\"\n class=\"mr-1 mb-1\"\n >\n {{ item.label }}\n </a-tag>\n </template>\n\n <template v-else>\n <span v-for=\"(item, index) in displayItems\" :key=\"index\">\n {{ item }}\n <template v-if=\"index < displayItems.length - 1\">, </template>\n </span>\n </template>\n </span>\n\n <span v-else-if=\"typeof cellValue === 'boolean'\">\n <table-cell-status :value=\"!Boolean(cellValue)\" />\n </span>\n\n <span v-else-if=\"cellValue !== null && typeof cellValue === 'object'\">\n {{ getNameOrEmpty(cellValue) }}\n </span>\n\n <span v-else-if=\"column.tag === true\">\n <a-tag v-if=\"hasTagValue\" :style=\"tagStyle\">\n {{ String(cellValue) }}\n </a-tag>\n <template v-else />\n </span>\n\n <span v-else>{{ cellValue }}</span>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { CSSProperties } from 'vue';\n\nimport TableCellStatus from './TableCellStatus.vue';\nimport type { ColumnConfig } from '../../interface/table.d';\n\nconst props = defineProps<{\n loading: boolean;\n column: ColumnConfig;\n record: Record<string, unknown>;\n tagStyle?: CSSProperties;\n}>();\n\nconst cellValue = computed<unknown>(() => props.record[String(props.column.dataIndex)]);\n\nconst isEmptyTagValue = (value: unknown): boolean => {\n if (value === null || value === undefined) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim().length === 0;\n }\n return false;\n};\n\nconst getNameOrEmpty = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return '';\n }\n if ('name' in (value as Record<string, unknown>)) {\n const nameValue = (value as { name?: unknown }).name;\n return typeof nameValue === 'string' ? nameValue : '';\n }\n return '';\n};\n\nconst normalizeItemLabel = (item: unknown): string => {\n if (item === null || item === undefined) {\n return '';\n }\n if (typeof item === 'string') {\n return item.trim();\n }\n if (typeof item === 'object') {\n return getNameOrEmpty(item);\n }\n return String(item);\n};\n\nconst displayItems = computed<string[]>(() => {\n const value = cellValue.value;\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((item) => normalizeItemLabel(item))\n .filter((label) => label.trim().length > 0);\n});\n\nconst tagItems = computed<{ key: string; label: string }[]>(() =>\n displayItems.value.map((label, index) => ({\n key: `${label}-${index}`,\n label,\n })));\n\nconst hasTagValue = computed(() => !isEmptyTagValue(cellValue.value));\n</script>\n","<template>\n <div class=\"efko-dataview\">\n <a-table\n bordered\n table-layout=\"fixed\"\n class=\"the-table\"\n :loading=\"loading\"\n :columns=\"computedColumns\"\n :data-source=\"dataSource\"\n :row-key=\"(record: Record<string, unknown>) => record.id\"\n :pagination=\"false\"\n :scroll=\"{ x: 'max-content'}\"\n :row-class-name=\"rowClassName\"\n @change=\"onTableChange\"\n @resize-column=\"resizeColumn\"\n >\n <template #title>\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-2\">\n <a-badge dot :count=\"hiddenColumnCount\">\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"$emit('openColumnDrawer')\"\n >\n <Icon name=\"solar:settings-outline\" class=\"text-lg\" />\n </a-button>\n </a-badge>\n\n <a-button\n v-if=\"showFilterButton\"\n class=\"flex items-center justify-center p-2\"\n @click=\"$emit('openFilterDrawer')\"\n >\n <Icon name=\"ant-design:filter-outlined\" class=\"text-lg\" />\n </a-button>\n </div>\n\n <slot name=\"title\" />\n </div>\n </template>\n\n <template\n v-for=\"column in filterableColumns\"\n :key=\"String(column.dataIndex)\"\n #[`filter${String(column.dataIndex)}Dropdown`]\n >\n <filter-dropdown\n v-model=\"inputFilters[column.dataIndex]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n @update:model-value=\"(value) => applyFilter(column, value)\"\n />\n </template>\n\n <template #bodyCell=\"{ column, record }\">\n <slot name=\"bodyCell\" :column=\"column\" :record=\"record\">\n <table-body-cell\n :loading=\"loading\"\n :column=\"column\"\n :record=\"record\"\n :tag-style=\"tagStyle\"\n />\n </slot>\n </template>\n\n <template #actionColumn=\"{ record }\">\n <slot name=\"actionColumn\" :record=\"record\">\n <table-cell-actions\n :edit-action=\"editAction\"\n :delete-action=\"deleteAction\"\n :can-edit=\"canEdit\"\n :record=\"record\"\n @edit=\"() => $emit('edit', record)\"\n @delete=\"() => $emit('delete', record)\"\n @restore=\"() => $emit('restore', record)\"\n />\n </slot>\n </template>\n </a-table>\n\n <a-pagination\n v-if=\"pagination\"\n class=\"mt-4 text-right\"\n :current=\"meta?.currentPage\"\n :page-size=\"meta?.pageSize\"\n :total=\"meta?.total\"\n :show-total=\"(total: string) => `Всего ${total} элементов`\"\n :page-size-options=\"meta?.pageSizeOptions\"\n :show-size-changer=\"true\"\n @change=\"(page: number) => $emit('pageChange', page)\"\n @show-size-change=\"(page: number, size: number) => $emit('sizeChange', page, size)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, computed, watch, onMounted,\n} from 'vue';\nimport autoAnimate from '@formkit/auto-animate';\nimport { isEqual } from 'lodash';\n\nimport { FilterMode, TableSortOrder } from './enum/table';\nimport FilterDropdown from './ui/filter/FilterDropdown.vue';\nimport TableCellActions from './ui/table-cell/TableCellActions.vue';\nimport TableBodyCell from './ui/table-cell/TableBodyCell.vue';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n Meta,\n SortPayload,\n} from './interface/table.d';\nimport type { TableRecord } from '../card/TheCard.d';\nimport { theme } from 'efko-ui-library';\n\nconst { token } = theme.useToken();\n\ntype TableColumnDefinition = Record<string, unknown> & ColumnConfig & {\n slots?: Record<string, string>;\n};\n\nconst props = defineProps<{\n loading: boolean,\n pagination: boolean,\n columns: ColumnConfig[],\n dataSource: TableRecord[],\n filterValues?: Partial<Record<string, FilterValue>>,\n meta: Meta | undefined,\n canEdit: boolean,\n editAction: boolean,\n deleteAction: boolean,\n showActionsColumn?: boolean,\n columnsVisibility: Record<string, boolean>,\n disableColumnFilterDropdowns?: boolean,\n showFilterButton?: boolean,\n multiColumnFilters?: boolean,\n}>();\n\nconst emit = defineEmits<{(event: 'update:filterValues',\n values: Partial<Record<string, FilterValue>>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n (event: 'restore' | 'edit' | 'delete', record: Record<string, unknown>): void,\n (event: 'sortChange', payload: SortPayload): void,\n (event: 'pageChange', page: number): void,\n (event: 'sizeChange', page: number, pageSize: number): void,\n (event: 'openColumnDrawer'): void,\n (event: 'openFilterDrawer'): void,\n}>();\n\nconst showFilterButton = computed<boolean>(() => props.showFilterButton === true);\n\nconst localFilterValues = ref<Partial<Record<string, FilterValue>>>(\n props.filterValues || {},\n);\nconst localColumns = ref<ColumnConfig[]>([\n ...props.columns,\n]);\nconst inputFilters = ref<Record<string, unknown | null>>({});\n\nconst filterableColumns = computed(() => {\n if (props.disableColumnFilterDropdowns === true) {\n return [];\n }\n\n return localColumns.value.filter(\n (column: ColumnConfig) => column.filterable,\n );\n});\n\nconst computedColumns = computed(() => {\n const visible = localColumns.value.filter((column: ColumnConfig) => {\n if (column.filterOnly) {\n return false;\n }\n\n const key = column.key || String(column.dataIndex);\n return props.columnsVisibility[key] !== false;\n });\n\n const result: TableColumnDefinition[] = visible.map((column: ColumnConfig) => {\n const { headerAlign, cellAlign, ...rest } = column;\n\n return {\n ...rest,\n sorter: Boolean(rest.sortable),\n sortDirections: rest.sortable\n ? [\n TableSortOrder.ASCEND,\n TableSortOrder.DESCEND,\n ]\n : undefined,\n customHeaderCell: (): { style: { textAlign: string } } | undefined => (headerAlign ? {\n style: {\n textAlign: headerAlign,\n },\n } : undefined),\n customCell: (): { style: { textAlign: string } } | undefined => (cellAlign ? {\n style: {\n textAlign: cellAlign,\n },\n } : undefined),\n customFilterDropdown: Boolean(rest.filterable),\n slots: rest.filterable\n ? {\n filterDropdown: `filter${String(rest.dataIndex)}Dropdown`,\n }\n : undefined,\n } as TableColumnDefinition;\n });\n\n if (\n props.showActionsColumn !== false\n && props.columnsVisibility.actions !== false\n ) {\n result.push({\n title: 'Действия',\n key: 'actions',\n dataIndex: 'actions' as keyof TableRecord,\n width: 100,\n slots: {\n customRender: 'actionColumn',\n },\n } as TableColumnDefinition);\n }\n\n return result;\n});\n\nconst hiddenColumnCount = computed(\n () => Object.keys(props.columnsVisibility).filter(\n (key: string) => props.columnsVisibility[key] === false,\n ).length,\n);\n\nconst tagStyle = computed(() => ({\n color: token.value.colorSelectedMenu,\n borderColor: token.value.colorBorderSecondary,\n backgroundColor: token.value.mainBgColor || token.value.colorPrimaryBg,\n}));\n\nconst getFilterArray = (key: string): FilterItem[] => {\n const value = localFilterValues.value[key];\n if (Array.isArray(value)) {\n return value;\n }\n if (value !== null && value !== undefined) {\n return [value];\n }\n return [];\n};\n\nconst isRangeTuple = (value: unknown): value is [string, string] => (\n Array.isArray(value)\n && value.length === 2\n && typeof value[0] === 'string'\n && typeof value[1] === 'string'\n);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeCandidates = (column: ColumnConfig, raw: unknown): FilterItem[] => {\n if (raw === null || raw === undefined) {\n return [];\n }\n\n if (column.filterMode === FilterMode.SEARCH) {\n if (typeof raw !== 'string') {\n return [];\n }\n const trimmed = raw.trim();\n return trimmed.length === 0 ? [] : [trimmed];\n }\n\n if (column.filterMode === FilterMode.DATE) {\n if (!Array.isArray(raw) || raw.length !== 2) {\n return [];\n }\n const tuple: [string, string] = [\n formatDateLike(raw[0]),\n formatDateLike(raw[1]),\n ];\n return [tuple];\n }\n\n if (Array.isArray(raw)) {\n return raw as FilterItem[];\n }\n\n return [raw as FilterItem];\n};\n\nconst setFilterValue = (key: string, value: FilterItem[] | FilterItem | null): void => {\n const next = { ...localFilterValues.value };\n\n if (value === null) {\n next[key] = null;\n emit('filterApply', { key, value: [] });\n } else if (Array.isArray(value)) {\n const compact = value.filter((v) => v !== null && v !== undefined);\n if (compact.length === 0) {\n next[key] = null;\n emit('filterApply', { key, value: [] });\n } else if (compact.length === 1 && !isRangeTuple(compact[0])) {\n next[key] = compact[0];\n emit('filterApply', { key, value: compact });\n } else {\n next[key] = compact;\n emit('filterApply', { key, value: compact });\n }\n } else {\n next[key] = value;\n emit('filterApply', { key, value: [value] });\n }\n\n emit('update:filterValues', next);\n localFilterValues.value = next;\n inputFilters.value[key] = null;\n};\n\nconst applyFilter = (column: ColumnConfig, newValue: unknown): void => {\n const key = String(column.dataIndex);\n\n const candidates = normalizeCandidates(column, newValue);\n if (candidates.length === 0) {\n inputFilters.value[key] = null;\n return;\n }\n\n const isMultiple = (column.filterMultiple ?? props.multiColumnFilters ?? true) !== false;\n if (!isMultiple) {\n if (column.filterMode === FilterMode.DATE) {\n setFilterValue(key, candidates);\n return;\n }\n\n if (Array.isArray(newValue)) {\n setFilterValue(key, candidates[candidates.length - 1] as FilterItem);\n return;\n }\n\n setFilterValue(key, candidates[0] as FilterItem);\n return;\n }\n\n const current = getFilterArray(key);\n const next = [\n ...current,\n ];\n let changed = false;\n\n candidates.forEach((candidate) => {\n if (next.some((item) => isEqual(item, candidate))) {\n return;\n }\n next.push(candidate);\n changed = true;\n });\n\n if (!changed) {\n inputFilters.value[key] = null;\n return;\n }\n\n setFilterValue(key, next);\n};\n\nconst rowClassName = (record: Record<string, unknown>): string => (record.isGroup ? 'parent-row' : '');\n\nconst onTableChange = (\n _pagination: unknown,\n _filters: unknown,\n sorter: { columnKey?: string, order?: TableSortOrder | null },\n): void => {\n emit('sortChange', {\n columnKey: sorter.columnKey || '',\n order: sorter.order || null,\n });\n};\n\nconst resizeColumn = (width: number, col: ColumnConfig): void => {\n const key = col.key || String(col.dataIndex);\n const index = localColumns.value.findIndex(\n (column: ColumnConfig) => (column.key || String(column.dataIndex)) === key,\n );\n if (index === -1) {\n return;\n }\n localColumns.value.splice(index, 1, {\n ...col,\n width,\n });\n};\n\nwatch(\n () => props.filterValues,\n (newVal: Partial<Record<string, FilterValue>> | undefined) => {\n localFilterValues.value = newVal || {};\n },\n);\n\nwatch(\n () => props.columns,\n (newColumns: ColumnConfig[]) => {\n localColumns.value = [\n ...newColumns,\n ];\n },\n {\n immediate: true,\n },\n);\n\nonMounted(() => {\n const tbody = document.querySelector<HTMLElement>('.the-table tbody');\n if (tbody !== null) {\n autoAnimate(tbody);\n }\n});\n</script>\n","<template>\n <a-drawer\n v-model:open=\"drawerOpen\"\n class=\"efko-dataview\"\n title=\"Настройки представления\"\n placement=\"right\"\n >\n <section class=\"mb-4\">\n <h3 class=\"font-bold text-base mb-2\">Отображение колонок</h3>\n\n <div class=\"flex flex-col gap-1\">\n <div v-for=\"col in columns\" :key=\"col.key ?? col.dataIndex\">\n <a-checkbox\n v-model:checked=\"visibility[col.key ?? col.dataIndex]\"\n :disabled=\"isCardMode\"\n class=\"flex\"\n >\n {{ col.title }}\n </a-checkbox>\n </div>\n </div>\n </section>\n\n <section>\n <h3 class=\"font-bold text-base mb-2\">Вид</h3>\n\n <a-radio-group\n v-model:value=\"localViewMode\"\n button-style=\"solid\"\n class=\"mb-3\"\n :disabled=\"disabledViewMode\"\n >\n <a-radio value=\"table\">Таблица</a-radio>\n <a-radio value=\"grid\">Карточки</a-radio>\n </a-radio-group>\n\n <a-radio-group\n v-model:value=\"localCardLayout\"\n button-style=\"solid\"\n :disabled=\"!isCardMode\"\n >\n <a-radio-button value=\"grid\">\n <AppstoreOutlined class=\"mr-2\" />Сетка\n </a-radio-button>\n\n <a-radio-button value=\"row\">\n <PicCenterOutlined class=\"mr-2\" />Строка\n </a-radio-button>\n </a-radio-group>\n </section>\n </a-drawer>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, watch, computed, reactive,\n} from 'vue';\nimport { AppstoreOutlined, PicCenterOutlined } from '@ant-design/icons-vue';\nimport type { ColumnConfig } from '../interface/table.d';\nimport { CardLayout, ViewMode } from './ColumnSettingsDrawer';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n modelValue: Record<string, boolean>,\n showActionsColumn?: boolean,\n disableViewMode?: boolean,\n viewMode: ViewMode,\n cardLayout: CardLayout,\n}>();\n\nconst emit = defineEmits<{(e: 'update:visible', value: boolean): void,\n (e: 'update:modelValue', value: Record<string, boolean>): void,\n (e: 'update:viewMode', value: ViewMode): void,\n (e: 'update:cardLayout', value: CardLayout): void,\n}>();\n\nconst drawerOpen = ref(props.visible);\nconst localViewMode = ref(props.viewMode);\nconst localCardLayout = ref(props.cardLayout);\nconst visibility = reactive<Record<string, boolean>>({\n ...props.modelValue,\n});\n\nconst isCardMode = computed(() => localViewMode.value === 'grid');\nconst disabledViewMode = props.disableViewMode || false;\n\nwatch(\n () => props.visible,\n (value: boolean) => {\n drawerOpen.value = value;\n },\n);\n\nwatch(drawerOpen, (value: boolean) => {\n emit('update:visible', value);\n});\n\nwatch(\n () => props.viewMode,\n (mode: ViewMode) => {\n localViewMode.value = mode;\n },\n);\n\nwatch(localViewMode, (mode: ViewMode) => {\n emit('update:viewMode', mode);\n});\n\nwatch(\n () => props.cardLayout,\n (layout: CardLayout) => {\n localCardLayout.value = layout;\n },\n);\n\nwatch(localCardLayout, (layout: CardLayout) => {\n emit('update:cardLayout', layout);\n});\n\nwatch(\n () => props.modelValue,\n (view: Record<string, boolean>) => Object.assign(visibility, view),\n {\n deep: true,\n },\n);\n\nwatch(visibility, (view: Record<string, boolean>) => emit('update:modelValue', {\n ...view,\n}), {\n deep: true,\n});\n\nif (props.showActionsColumn && visibility.actions === undefined) {\n visibility.actions = true;\n}\n</script>\n","<template>\n <component\n v-bind=\"componentProps\"\n :is=\"inputComponent\"\n v-model:value=\"inputValue\"\n v-model=\"inputValue\"\n :placeholder=\"placeholder\"\n class=\"w-full text-sm\"\n />\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed, ref, watch,\n} from 'vue';\nimport Multiselect from '../ui/TheSelect.vue';\nimport { FilterMode } from '../table/enum/table';\n\ntype Mode = 'search' | 'select' | 'date'\ntype Value =\n | string\n | number\n | boolean\n | object\n | (string | number | boolean | object)[]\n | null\n | undefined\n\nconst props = defineProps<{\n modelValue: Value,\n filterMode?: Mode,\n componentProps?: Record<string, unknown>,\n placeholder: string,\n}>();\n\nconst emit = defineEmits<{(event:'update:modelValue', value:Value): void }>();\n\nconst inputComponent = computed(() => {\n if (props.filterMode === FilterMode.SEARCH) {\n return 'a-input';\n }\n if (props.filterMode === FilterMode.SELECT) {\n return Multiselect;\n }\n if (props.filterMode === FilterMode.DATE) {\n return 'a-range-picker';\n }\n return 'a-input';\n});\n\nconst inputValue = ref<Value>(props.modelValue);\n\nwatch(() => props.modelValue, (value: Value) => {\n inputValue.value = value;\n});\nwatch(inputValue, (value: Value) => emit('update:modelValue', value));\n</script>\n","<template>\n <a-drawer\n v-model:open=\"drawerOpen\"\n class=\"efko-dataview\"\n placement=\"right\"\n width=\"360\"\n title=\"Фильтры\"\n body-style=\"padding: 24px\"\n >\n <section\n v-for=\"column in filterableColumns\"\n :key=\"columnKey(column)\"\n class=\"mb-4 flex flex-col gap-2\"\n >\n <span class=\"text-sm font-medium\">{{ column.title }}</span>\n\n <filter-input\n v-model=\"draft[columnKey(column)]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n />\n </section>\n\n <div class=\"mt-2 flex flex-col gap-2\">\n <a-button block @click=\"resetFilters\">\n Сбросить\n </a-button>\n <a-button\n type=\"primary\"\n block\n :disabled=\"!hasModifications\"\n @click=\"applyFilters\"\n >\n Применить\n </a-button>\n </div>\n </a-drawer>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, reactive, watch, computed,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport FilterInput from './FilterInput.vue';\nimport { FilterMode } from '../table/enum/table';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n} from '../table/interface/table.d';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n filterValues: Record<string, FilterValue | undefined>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:visible', value: boolean): void,\n (\n event: 'update:filterValues',\n value: Record<string, FilterValue | undefined>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n}>();\n\nconst drawerOpen = ref(props.visible);\nconst draft = reactive<Record<string, FilterValue | undefined>>({\n ...props.filterValues,\n});\n\nconst columnKey = (column: ColumnConfig): string | number => column.key ?? String(column.dataIndex);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeToStoredValue = (\n column: ColumnConfig,\n candidate: FilterValue | undefined,\n): FilterValue | undefined => {\n if (candidate === undefined) {\n return undefined;\n }\n if (column.filterMode === FilterMode.DATE) {\n if (Array.isArray(candidate) && candidate.length === 2) {\n return [[formatDateLike(candidate[0]), formatDateLike(candidate[1])]] as unknown as FilterValue;\n }\n return candidate;\n }\n return candidate;\n};\n\nconst toArray = (val: FilterValue | undefined): FilterItem[] => {\n if (Array.isArray(val)) {\n return val as FilterItem[];\n }\n if (val !== null && val !== undefined) {\n return [val as FilterItem];\n }\n return [];\n};\n\nconst valueIsEmpty = (val: FilterValue | undefined): boolean => {\n if (val === null || val === undefined) {\n return true;\n }\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n if (typeof val === 'string') {\n return val.trim() === '';\n }\n return false;\n};\n\nconst filterableColumns = computed(() => props.columns.filter((column: ColumnConfig) => column.filterable));\n\nconst hasModifications = computed(() => Object.keys(draft).some(\n (key: string) => !isEqual(draft[key], props.filterValues[key]),\n));\n\nconst syncDraft = (values: Record<string, FilterValue | undefined>): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n Object.assign(draft, values);\n};\n\nwatch(\n () => props.visible,\n (view: boolean) => {\n drawerOpen.value = view;\n if (view) {\n syncDraft(props.filterValues);\n }\n },\n);\nwatch(drawerOpen, (view: boolean) => {\n emit('update:visible', view);\n});\n\nwatch(\n () => props.filterValues,\n (newVal: Record<string, FilterValue | undefined>) => {\n syncDraft(newVal);\n },\n {\n deep: true,\n },\n);\n\nconst applyFilters = (): void => {\n const updated: Record<string, FilterValue | undefined> = {\n ...props.filterValues,\n };\n\n Object.entries(draft).forEach(([key, candidate]) => {\n const column = props.columns.find((c) => String(columnKey(c)) === key);\n const normalized = column ? normalizeToStoredValue(column, candidate as FilterValue | undefined) : candidate;\n\n if (valueIsEmpty(candidate)) {\n updated[key] = null;\n emit('filterApply', {\n key,\n value: [],\n });\n return;\n }\n updated[key] = normalized as FilterValue;\n emit('filterApply', {\n key,\n value: toArray(normalized as FilterValue),\n });\n });\n\n emit('update:filterValues', updated);\n drawerOpen.value = false;\n};\n\nconst resetFilters = (): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n\n const cleared: Record<string, FilterValue | undefined> = {};\n emit('update:filterValues', cleared);\n};\n</script>\n\n<style scoped>\nspan {\n line-height: 1;\n}\n</style>\n","<template>\n <a-modal\n v-model:visible=\"modalOpen\"\n class=\"efko-dataview\"\n title=\"Фильтры\"\n destroy-on-close\n :ok-text=\"'Применить'\"\n :cancel-text=\"'Сбросить'\"\n :ok-button-props=\"{ disabled: !hasModifications }\"\n @ok=\"applyFilters\"\n @cancel=\"handleCancel\"\n >\n <section\n v-for=\"column in filterableColumns\"\n :key=\"columnKey(column)\"\n class=\"mb-4 flex flex-col gap-2\"\n >\n <span class=\"text-sm font-medium\">{{ column.title }}</span>\n\n <filter-input\n v-model=\"draft[columnKey(column)]\"\n :filter-mode=\"column.filterMode\"\n :component-props=\"column.componentProps\"\n :placeholder=\"column.title\"\n />\n </section>\n </a-modal>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, reactive, watch, computed,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport FilterInput from './FilterInput.vue';\nimport { FilterMode } from '../table/enum/table';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n} from '../table/interface/table.d';\n\nconst props = defineProps<{\n visible: boolean,\n columns: ColumnConfig[],\n filterValues: Record<string, FilterValue | undefined>,\n}>();\n\nconst emit = defineEmits<{(event: 'update:visible', value: boolean): void,\n (\n event: 'update:filterValues',\n value: Record<string, FilterValue | undefined>,\n ): void,\n (event: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n}>();\n\nconst modalOpen = ref(props.visible);\nconst draft = reactive<Record<string, FilterValue | undefined>>({\n ...props.filterValues,\n});\n\nconst columnKey = (column: ColumnConfig): string | number => column.key ?? String(column.dataIndex);\n\nconst formatDateLike = (value: unknown): string => {\n if (typeof value === 'string') {\n return value;\n }\n if (value !== null && typeof value === 'object') {\n const maybeFormat = (value as { format?: unknown }).format;\n if (typeof maybeFormat === 'function') {\n return (maybeFormat as (pattern: string) => string)('YYYY-MM-DD');\n }\n const maybeToISOString = (value as { toISOString?: unknown }).toISOString;\n if (typeof maybeToISOString === 'function') {\n return (maybeToISOString as () => string)();\n }\n }\n return String(value);\n};\n\nconst normalizeToStoredValue = (\n column: ColumnConfig,\n candidate: FilterValue | undefined,\n): FilterValue | undefined => {\n if (candidate === undefined) {\n return undefined;\n }\n if (column.filterMode === FilterMode.DATE) {\n if (Array.isArray(candidate) && candidate.length === 2) {\n return [[formatDateLike(candidate[0]), formatDateLike(candidate[1])]] as unknown as FilterValue;\n }\n return candidate;\n }\n return candidate;\n};\n\nconst toArray = (val: FilterValue | undefined): FilterItem[] => {\n if (Array.isArray(val)) {\n return val as FilterItem[];\n }\n if (val !== null && val !== undefined) {\n return [val as FilterItem];\n }\n return [];\n};\n\nconst valueIsEmpty = (val: FilterValue | undefined): boolean => {\n if (val === null || val === undefined) {\n return true;\n }\n if (Array.isArray(val)) {\n return val.length === 0;\n }\n if (typeof val === 'string') {\n return val.trim() === '';\n }\n return false;\n};\n\nconst filterableColumns = computed(\n () => props.columns.filter((column: ColumnConfig) => column.filterable),\n);\n\nconst hasModifications = computed(() => Object.keys(draft).some(\n (key: string) => !isEqual(draft[key], props.filterValues[key]),\n));\n\nconst syncDraft = (values: Record<string, FilterValue | undefined>): void => {\n Object.keys(draft).forEach((key: string) => {\n delete draft[key];\n });\n Object.assign(draft, values);\n};\n\nwatch(\n () => props.visible,\n (view: boolean) => {\n modalOpen.value = view;\n if (view) {\n syncDraft(props.filterValues);\n }\n },\n);\nwatch(modalOpen, (view: boolean) => {\n emit('update:visible', view);\n});\n\nwatch(\n () => props.filterValues,\n (newVal: Record<string, FilterValue | undefined>) => {\n syncDraft(newVal);\n },\n {\n deep: true,\n },\n);\n\nconst applyFilters = (): void => {\n const updated: Record<string, FilterValue | undefined> = {\n ...props.filterValues,\n };\n\n Object.entries(draft).forEach(([key, candidate]) => {\n const column = props.columns.find((c) => String(columnKey(c)) === key);\n const normalized = column ? normalizeToStoredValue(column, candidate as FilterValue | undefined) : candidate;\n\n if (valueIsEmpty(candidate)) {\n updated[key] = null;\n emit('filterApply', {\n key,\n value: [],\n });\n return;\n }\n updated[key] = normalized as FilterValue;\n emit('filterApply', {\n key,\n value: toArray(normalized as FilterValue),\n });\n });\n\n emit('update:filterValues', updated);\n modalOpen.value = false;\n};\n\nconst handleCancel = (): void => {\n modalOpen.value = false;\n};\n</script>\n\n<style scoped>\nspan {\n line-height: 1;\n}\n</style>\n","export enum ViewMode {\n Table = 'table',\n Grid = 'grid',\n}\nexport enum CardLayout {\n Grid = 'grid',\n Row = 'row',\n}\n","<template>\n <div class=\"efko-dataview\">\n <div ref=\"tagCloudContainer\">\n <filter-tag-cloud\n :filters=\"activeFilters\"\n @update:filters=\"updateFilters\"\n @remove=\"removeFilter\"\n @clear=\"clearFilters\"\n />\n </div>\n\n <template v-if=\"isCardMode\">\n <div class=\"flex items-center justify-between gap-2 mb-2\">\n <div class=\"flex items-center gap-1\">\n <a-badge dot :count=\"hiddenColumnCount\">\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"isColumnDrawerOpen = true\"\n >\n <Icon name=\"solar:settings-outline\" class=\"text-lg\" />\n </a-button>\n </a-badge>\n <a-button\n class=\"flex items-center justify-center p-2\"\n @click=\"isFilterDrawerOpen = true\"\n >\n <Icon name=\"ant-design:filter-outlined\" class=\"text-lg\" />\n </a-button>\n </div>\n\n <slot name=\"headerCardContainer\" />\n <slot name=\"title\" />\n </div>\n\n <card-grid\n v-if=\"isCardMode\"\n :loading=\"loading\"\n :columns=\"columns\"\n :data-source=\"dataSource\"\n :card-layout=\"cardLayout\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :show-actions-column=\"showActionsColumn\"\n :pagination=\"pagination\"\n :meta=\"meta\"\n @restore=\"(r) => emit('restore', r)\"\n @edit=\"(r) => emit('edit', r)\"\n @delete=\"(r) => emit('delete', r)\"\n @page-change=\"(p) => emit('pageChange', p)\"\n @size-change=\"(p, s) => emit('sizeChange', p, s)\"\n >\n <template v-if=\"$slots.titleCard\" #titleCard=\"p\">\n <slot name=\"titleCard\" v-bind=\"p\" />\n </template>\n\n <template v-if=\"$slots.body\" #bodyCard=\"p\">\n <slot name=\"body\" v-bind=\"p\" />\n </template>\n\n <template v-if=\"$slots.footer\" #footerCard=\"p\">\n <slot name=\"footer\" v-bind=\"p\" />\n </template>\n </card-grid>\n </template>\n\n <data-table\n v-else\n :loading=\"loading\"\n :pagination=\"pagination\"\n :columns=\"columns\"\n :data-source=\"dataSource\"\n :filter-values=\"activeFilters\"\n :meta=\"meta\"\n :can-edit=\"canEdit\"\n :edit-action=\"editAction\"\n :delete-action=\"deleteAction\"\n :show-actions-column=\"showActionsColumn\"\n :columns-visibility=\"columnVisibility\"\n :disable-column-filter-dropdowns=\"props.disableColumnFilterDropdowns === true\"\n :show-filter-button=\"props.enableTableFilterDrawer === true\"\n :multi-column-filters=\"props.multiColumnFilters\"\n @open-column-drawer=\"isColumnDrawerOpen = true\"\n @open-filter-drawer=\"isFilterDrawerOpen = true\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n @restore=\"(record) => emit('restore', record)\"\n @edit=\"(record) => emit('edit', record)\"\n @delete=\"(record) => emit('delete', record)\"\n @sort-change=\"(payload) => emit('sortChange', payload)\"\n @page-change=\"(page) => emit('pageChange', page)\"\n @size-change=\"(page, size) => emit('sizeChange', page, size)\"\n >\n <template #title>\n <slot name=\"title\" />\n </template>\n <template #bodyCell=\"p\"><slot name=\"bodyCell\" v-bind=\"p\" /></template>\n <template #actionColumn=\"p\"><slot name=\"actionColumn\" v-bind=\"p\" /></template>\n </data-table>\n\n <slot\n name=\"filtersDrawer\"\n :visible=\"isFilterDrawerOpen\"\n :set-visible=\"(value: boolean) => { isFilterDrawerOpen = value; }\"\n :filters=\"activeFilters\"\n :update-filters=\"updateFilters\"\n :emit-filter-apply=\"emitFilterApply\"\n >\n <card-filters-modal\n v-if=\"props.useFilterModal === true\"\n v-model:visible=\"isFilterDrawerOpen\"\n :columns=\"columns\"\n :filter-values=\"activeFilters\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n />\n <card-filters-drawer\n v-else\n v-model:visible=\"isFilterDrawerOpen\"\n :columns=\"columns\"\n :filter-values=\"activeFilters\"\n @update:filter-values=\"updateFilters\"\n @filter-apply=\"(payload) => emit('filterApply', payload)\"\n />\n </slot>\n\n <column-settings-drawer\n v-model:visible=\"isColumnDrawerOpen\"\n v-model:model-value=\"columnVisibility\"\n v-model:view-mode=\"currentViewMode\"\n v-model:card-layout=\"cardLayout\"\n :columns=\"columns\"\n :show-actions-column=\"showActionsColumn\"\n :disable-view-mode=\"disableViewMode\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n ref, watch, computed, onMounted,\n} from 'vue';\nimport { isEqual } from 'lodash';\nimport autoAnimate from '@formkit/auto-animate';\n\nimport FilterTagCloud from './table/ui/filter/FilterTagCloud.vue';\nimport CardGrid from './card/CardGrid.vue';\nimport DataTable from './table/TheTable.vue';\nimport ColumnSettingsDrawer from './table/ui/ColumnSettingsDrawer.vue';\nimport CardFiltersDrawer from './card/CardFiltersDrawer.vue';\nimport CardFiltersModal from './card/CardFiltersModal.vue';\nimport type {\n ColumnConfig,\n FilterItem,\n FilterValue,\n Meta,\n SortPayload,\n} from './table/interface/table.d';\nimport { CardLayout, ViewMode } from './table/ui/ColumnSettingsDrawer';\nimport type { FilterValues } from './DataView.d';\nimport type { TableRecord } from './card/TheCard.d';\n\nconst props = withDefaults(\n defineProps<{\n viewMode?: ViewMode;\n loading: boolean;\n pagination?: boolean;\n columns: ColumnConfig[];\n dataSource: TableRecord[];\n filterValues?: Partial<Record<string, FilterValue>>;\n meta?: Meta;\n canEdit?: boolean;\n editAction?: boolean;\n deleteAction?: boolean;\n showActionsColumn?: boolean;\n disableViewMode?: boolean;\n enableTableFilterDrawer?: boolean;\n disableColumnFilterDropdowns?: boolean;\n useFilterModal?: boolean;\n multiColumnFilters?: boolean;\n }>(),\n {\n pagination: false,\n canEdit: true,\n editAction: true,\n deleteAction: true,\n showActionsColumn: true,\n disableViewMode: false,\n enableTableFilterDrawer: false,\n disableColumnFilterDropdowns: false,\n useFilterModal: false,\n multiColumnFilters: true,\n },\n);\n\nconst emit = defineEmits<{(e: 'update:viewMode', value: ViewMode): void,\n (e: 'update:filterValues', value: Partial<Record<string, FilterValue>>): void,\n (e: 'filterApply', payload: { key: string, value: FilterItem[] }): void,\n (e: 'edit' | 'delete' | 'restore', record: Record<string, unknown>): void,\n (e: 'sortChange', payload: SortPayload): void,\n (e: 'pageChange', page: number): void,\n (e: 'sizeChange', page: number, pageSize: number): void,\n}>();\n\nconst currentViewMode = ref<ViewMode>(props.viewMode || ViewMode.Table);\nconst isCardMode = computed(() => currentViewMode?.value === ViewMode.Grid);\nconst cardLayout = ref<CardLayout>(CardLayout.Grid);\nconst activeFilters = ref<Partial<Record<string, FilterValue>>>(\n props.filterValues || {},\n);\n\nconst tagCloudContainer = ref<HTMLElement | null>(null);\n\nconst updateFilters = (filters: Partial<Record<string, FilterValue>>): void => {\n activeFilters.value = filters;\n emit('update:filterValues', filters);\n};\n\nconst removeFilter = (\n key: string,\n value: FilterValue | undefined,\n target: FilterItem,\n): void => {\n const next = { ...activeFilters.value };\n\n if (value === undefined) {\n return;\n }\n\n if (Array.isArray(value)) {\n const remaining = value.filter((item: FilterItem) => !isEqual(item, target));\n if (remaining.length === 0) {\n next[key] = null;\n } else if (remaining.length === 1 && !Array.isArray(remaining[0])) {\n next[key] = remaining[0];\n } else {\n next[key] = remaining;\n }\n updateFilters(next);\n return;\n }\n\n if (isEqual(value, target)) {\n next[key] = null;\n updateFilters(next);\n }\n};\n\nconst clearFilters = (): void => updateFilters({});\n\nconst emitFilterApply = (payload: { key: string; value: FilterItem[] }): void => {\n emit('filterApply', payload);\n};\n\nconst isFilterDrawerOpen = ref(false);\nconst isColumnDrawerOpen = ref(false);\n\nconst columnVisibility = ref<Record<string, boolean>>({});\n\nconst hiddenColumnCount = computed(() => (currentViewMode.value === 'table'\n ? Object.keys(columnVisibility.value).filter(\n (key: string) => columnVisibility.value[key] === false,\n ).length\n : 0));\n\nconst initVisibility = (cols: ColumnConfig[]): void => {\n cols.forEach((col: ColumnConfig) => {\n const key = col.key ?? String(col.dataIndex);\n if (columnVisibility.value[key] === undefined) {\n columnVisibility.value[key] = true;\n }\n });\n\n if (props.showActionsColumn && columnVisibility.value.actions === undefined) {\n columnVisibility.value.actions = true;\n }\n};\n\nwatch(\n () => props.filterValues,\n (value: FilterValues) => {\n activeFilters.value = value || {};\n },\n);\n\nwatch(\n () => props.viewMode,\n (mode: ViewMode | undefined) => {\n if (mode !== undefined) {\n currentViewMode.value = mode;\n }\n },\n);\n\nwatch(() => props.columns, initVisibility);\n\nwatch(currentViewMode, (mode: ViewMode) => emit('update:viewMode', mode));\n\nonMounted(() => initVisibility(props.columns));\n\nonMounted(() => {\n if (tagCloudContainer.value) {\n autoAnimate(tagCloudContainer.value);\n }\n});\n</script>\n","<template>\n <div ref=\"container\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n ref,\n onMounted,\n onBeforeUnmount,\n} from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n onIntersect?:() => void,\n threshold?: number,\n once?: boolean,\n rootMargin?: string,\n }>(),\n {\n threshold: 0.1,\n once: false,\n rootMargin: '0px',\n },\n);\n\nconst container = ref<HTMLElement | null>(null);\nlet observer: IntersectionObserver | null = null;\n\nconst handleIntersection = (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (entry.isIntersecting && props.onIntersect) {\n props.onIntersect();\n if (props.once && observer) {\n observer.disconnect();\n }\n }\n};\n\nonMounted(() => {\n observer = new IntersectionObserver(handleIntersection, {\n threshold: props.threshold,\n rootMargin: props.rootMargin,\n });\n\n if (container.value) {\n observer.observe(container.value);\n }\n});\n\nonBeforeUnmount(() => {\n observer?.disconnect();\n});\n</script>\n"],"names":["props","__props","emit","__emit","token","theme","tagStyle","computed","hasValidFilter","value","hasFilters","hasNameField","obj","formatFilterItem","item","intervalLabel","joinedLabel","nameLabel","jsonLabel","parseFilterValues","isFilterItemEqual","a","b","removeFilter","key","fullValue","itemToRemove","updated","clearAllFilters","_createBlock","_component_a_flex","_createVNode","_createElementBlock","_Fragment","_renderList","filterKey","filterValue","_openBlock","_component_a_tag","_createTextVNode","_toDisplayString","_component_a_button","_cache","_hoisted_1","_unref","CheckCircleTwoTone","canEdit","editAction","deleteHandler","record","restoreHandler","editHandler","_component_a_tooltip","h","EyeOutlined","$event","EditOutlined","RedoOutlined","DeleteOutlined","recordValue","column","getNameOrEmpty","name","isEmptyTagValue","normalizeItemLabel","displayItems","label","tagItems","index","showActionsColumn","_component_a_card","_createElementVNode","_renderSlot","_ctx","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","TableCellStatus","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","$slots","_hoisted_10","CardCellActions","container","ref","observer","handleIntersection","entries","_a","onMounted","onBeforeUnmount","_component_a_spin","autoAnimate","gridClass","preparedColumns","internalData","mergeData","existingIds","toAdd","watch","isLastPage","loadNextPage","TheCard","rec","bodyRecord","bodyColumns","footerRecord","footerColumns","LazyLoadTrigger","PAGE_SIZE_SMALL","PAGE_SIZE_MEDIUM","PAGE_SIZE_LARGE","PAGE_SIZE_EXTRA_LARGE","PAGE_SIZE_ULTRA","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","FilterMode","PageSizes","PAGE_SIZE_OPTIONS","SkipSizes","TableDefaults","TableSortOrder","SortOrder","_sfc_main$a","defineComponent","VueMultiselect","Empty","_component_VueMultiselect","_mergeProps","_withCtx","_component_a_empty","filterComponent","Multiselect","localValue","handleApply","_resolveDynamicComponent","cellValue","nameValue","hasTagValue","_component_a_skeleton","showFilterButton","localFilterValues","localColumns","inputFilters","filterableColumns","computedColumns","result","headerAlign","cellAlign","rest","hiddenColumnCount","getFilterArray","isRangeTuple","formatDateLike","maybeFormat","maybeToISOString","normalizeCandidates","raw","trimmed","setFilterValue","next","compact","v","applyFilter","newValue","candidates","changed","candidate","isEqual","rowClassName","onTableChange","_pagination","_filters","sorter","resizeColumn","width","col","newVal","newColumns","tbody","_component_a_table","_component_a_badge","$emit","_component_Icon","TableBodyCell","TableCellActions","FilterDropdown","_component_a_pagination","_b","_c","total","_d","page","size","drawerOpen","localViewMode","localCardLayout","visibility","reactive","isCardMode","disabledViewMode","mode","layout","view","_component_a_drawer","_component_a_checkbox","_component_a_radio_group","_component_a_radio","_component_a_radio_button","AppstoreOutlined","PicCenterOutlined","inputComponent","inputValue","draft","columnKey","normalizeToStoredValue","toArray","val","valueIsEmpty","hasModifications","syncDraft","values","applyFilters","c","normalized","resetFilters","FilterInput","modalOpen","handleCancel","_component_a_modal","ViewMode","CardLayout","currentViewMode","cardLayout","activeFilters","tagCloudContainer","updateFilters","filters","target","remaining","clearFilters","emitFilterApply","payload","isFilterDrawerOpen","isColumnDrawerOpen","columnVisibility","initVisibility","cols","FilterTagCloud","CardGrid","r","p","s","DataTable","CardFiltersModal","CardFiltersDrawer","ColumnSettingsDrawer"],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
10
10
|
"onUpdate:filters"?: ((value: Partial<Record<string, FilterValue>>) => any) | undefined;
|
|
11
11
|
onRemove?: ((key: string, filterValue: FilterValue | undefined, valueToRemove: FilterItem) => any) | undefined;
|
|
12
12
|
onClear?: (() => any) | undefined;
|
|
13
|
-
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {},
|
|
13
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
14
14
|
export default _default;
|