admins-components 9.0.68 → 9.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/admins-components.js +44 -43
  2. package/dist/admins-components103.js +102 -94
  3. package/dist/admins-components103.js.map +1 -1
  4. package/dist/admins-components105.js.map +1 -1
  5. package/dist/admins-components12.js +41 -31
  6. package/dist/admins-components12.js.map +1 -1
  7. package/dist/admins-components29.js +19 -19
  8. package/dist/admins-components29.js.map +1 -1
  9. package/dist/admins-components30.js.map +1 -1
  10. package/dist/admins-components5.js +4 -1
  11. package/dist/admins-components5.js.map +1 -1
  12. package/dist/admins-components57.js +86 -24
  13. package/dist/admins-components57.js.map +1 -1
  14. package/dist/admins-components58.js +4 -9
  15. package/dist/admins-components58.js.map +1 -1
  16. package/dist/admins-components59.js +24 -6
  17. package/dist/admins-components59.js.map +1 -1
  18. package/dist/admins-components6.js.map +1 -1
  19. package/dist/admins-components60.js +9 -31
  20. package/dist/admins-components60.js.map +1 -1
  21. package/dist/admins-components61.js +8 -0
  22. package/dist/admins-components61.js.map +1 -0
  23. package/dist/admins-components62.js +31 -6
  24. package/dist/admins-components62.js.map +1 -1
  25. package/dist/admins-components64.js +6 -70
  26. package/dist/admins-components64.js.map +1 -1
  27. package/dist/admins-components65.js +96 -4
  28. package/dist/admins-components65.js.map +1 -1
  29. package/dist/admins-components66.js +65 -84
  30. package/dist/admins-components66.js.map +1 -1
  31. package/dist/admins-components67.js +1 -1
  32. package/dist/admins-components67.js.map +1 -1
  33. package/dist/admins-components68.js +34 -26
  34. package/dist/admins-components68.js.map +1 -1
  35. package/dist/admins-components70.js +1 -1
  36. package/dist/admins-components70.js.map +1 -1
  37. package/dist/admins-components71.js +33 -29
  38. package/dist/admins-components71.js.map +1 -1
  39. package/dist/admins-components73.js +1 -1
  40. package/dist/admins-components73.js.map +1 -1
  41. package/dist/admins-components75.js +1 -1
  42. package/dist/main.css +1 -1
  43. package/dist/main.css.map +1 -1
  44. package/dist/src/components/data-table/DataCards.vue.d.ts +6 -0
  45. package/dist/src/components/data-table/DataList.vue.d.ts +4 -0
  46. package/dist/src/components/data-table/DataTable.vue.d.ts +6 -0
  47. package/dist/src/composables/useDropdownAnchor.d.ts +12 -0
  48. package/dist/src/index.d.ts +1 -0
  49. package/dist/src/styles/components/data-table/data-table.scss_vue_type_style_index_0_src_true_lang.css +1 -1
  50. package/package.json +1 -1
  51. package/dist/admins-components63.js +0 -97
  52. package/dist/admins-components63.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components60.js","names":[],"sources":["../src/components/data-table/TagList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\n\ninterface TagListProps {\n items: Array<string | { label?: string; id?: string | number }>\n visibleCount?: number\n class?: string\n}\n\nconst props = withDefaults(defineProps<TagListProps>(), {\n visibleCount: 3,\n items: () => [],\n class: undefined,\n})\n\nconst expanded = ref(false)\n\nconst total = computed(() => props.items.length)\nconst overflow = computed(() => Math.max(0, total.value - props.visibleCount))\n\nconst visibleItems = computed(() => {\n if (expanded.value || total.value <= props.visibleCount) {\n return props.items\n }\n return props.items.slice(0, props.visibleCount)\n})\n\nconst hiddenCount = computed(() => {\n return expanded.value ? 0 : overflow.value\n})\n\nfunction labelOf(item: TagListProps['items'][number]): string {\n if (item == null) return ''\n if (typeof item === 'string') return item\n return item.label ?? (item.id != null ? String(item.id) : '')\n}\n\nfunction toggle() {\n expanded.value = !expanded.value\n}\n</script>\n\n<template>\n <span class=\"tag-list\" :class=\"props.class\">\n <span v-for=\"(item, i) in visibleItems\" :key=\"i\" class=\"tag-list__item\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ',' : '' }}</span\n >\n<!-- <template v-for=\"(item, i) in visibleItems\" :key=\"i\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ', ' : '' }}</template\n > -->\n <button\n v-if=\"hiddenCount > 0\"\n type=\"button\"\n class=\"tag-list__toggle\"\n :aria-expanded=\"expanded\"\n :title=\"expanded ? 'Összecsukás' : `További ${hiddenCount} megjelenítése`\"\n @click=\"toggle\"\n >\n +{{ hiddenCount }}\n </button>\n <!-- <button\n v-else-if=\"expanded && total > visibleCount\"\n type=\"button\"\n class=\"tag-list__toggle tag-list__toggle--collapse\"\n :aria-expanded=\"expanded\"\n title=\"Összecsukás\"\n @click=\"toggle\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-up\" aria-hidden=\"true\"></i>\n </button> -->\n </span>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/tag-list.scss\"></style>\n"],"mappings":";;;;;;;;;;EASA,IAAM,IAAQ,GAMR,IAAW,EAAI,EAAK,GAEpB,IAAQ,QAAe,EAAM,MAAM,MAAM,GACzC,IAAW,QAAe,KAAK,IAAI,GAAG,EAAM,QAAQ,EAAM,YAAY,CAAC,GAEvE,IAAe,QACf,EAAS,SAAS,EAAM,SAAS,EAAM,eAClC,EAAM,QAER,EAAM,MAAM,MAAM,GAAG,EAAM,YAAY,CAC/C,GAEK,IAAc,QACX,EAAS,QAAQ,IAAI,EAAS,KACtC;EAED,SAAS,EAAQ,GAA6C;GAG5D,OAFI,KAAQ,OAAa,KACrB,OAAO,KAAS,WAAiB,IAC9B,EAAK,UAAU,EAAK,MAAM,OAAyB,KAAlB,OAAO,EAAK,EAAE;EACxD;EAEA,SAAS,IAAS;GAChB,EAAS,QAAQ,CAAC,EAAS;EAC7B;yBAIE,EA2BO,QAAA,EA3BD,OAAK,EAAA,CAAC,YAAmB,EAAM,KAAK,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GACxC,EAEC,GAAA,MAAA,EAFyB,EAAA,QAAZ,GAAM,YAApB,EAEC,QAAA;GAFwC,KAAK;GAAG,OAAM;OACjD,EAAQ,CAAI,CAAA,IAAA,EAAO,IAAI,EAAA,MAAa,SAAM,IAAA,MAAA,EAAA,GAAA,CAAA,YAMxC,EAAA,QAAW,KAAA,EAAA,GADnB,EASS,UAAA;;GAPP,MAAK;GACL,OAAM;GACL,iBAAe,EAAA;GACf,OAAO,EAAA,QAAQ,gBAAA,WAA8B,EAAA,MAAW;GACxD,SAAO;KACT,OACE,EAAG,EAAA,KAAW,GAAA,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"admins-components60.js","names":[],"sources":["../src/types/data-list.ts"],"sourcesContent":["import type { DropdownOption } from '@/components/DropdownSelect.vue'\nimport type { PickedDate, PickedUtcRange } from '@/types/types'\nimport type { ButtonType } from '@/components/Button.vue'\nimport type { ConfirmModalProps } from '@/components/ConfirmModal.vue'\n\nexport type FilterValue = string | PickedDate | PickedUtcRange | string[] | null | undefined\n\nexport interface FilterConfig {\n type: 'text' | 'date' | 'date-range' | 'select' | 'multi-select'\n key: string\n placeholder?: string\n options?: DropdownOption[]\n}\n\nexport type LayoutMode = 'table' | 'cards' | 'screen'\n\nexport interface DataTableSettings {\n striped: boolean\n compact: boolean\n}\n\nexport interface DataCardsSettings {\n compact: boolean\n}\n\nexport interface DataListSettings extends DataTableSettings, DataCardsSettings {\n layout: LayoutMode\n columns: Record<string, boolean>\n cardHeaderColumns: Record<string, boolean>\n columnOrder: string[]\n cardHeaderOrder: string[]\n}\n\nexport interface PageSettings {\n page: number\n pageSize: number\n}\n\nexport interface PaginatorSettings extends PageSettings {\n total: number\n}\n\nexport interface DataListConfig {\n selectableAttr?: string\n columns: Column[]\n\n actions?: Array<Action | ActionGroup>\n actionHeader?: string\n}\n\nexport type ColumnType = 'normal' | 'uuid' | 'date' | 'datetime'\n\nexport interface Column {\n visible?: boolean\n primary?: boolean\n hideable?: boolean\n defaultCardHeader?: boolean\n label: string\n property: string\n sort?: Sort | boolean\n type?: ColumnType\n class?: string\n headerClass?: string\n hideCopyToClipboard?: boolean\n hideHeader?: boolean\n\n converter?: ((v: any, item: any) => any)\n loading?: (() => boolean)\n}\n\nexport type SortDirection = 'asc' | 'desc' | null\n\nexport interface Sort {\n label: string\n callback: (property: string, direction: SortDirection) => any\n}\n\nexport interface Action {\n icon: string\n label?: string\n ariaLabel?: string\n cardLabel?: string\n type?: ButtonType\n class?: string\n config?: Record<string, any>\n disabled?: (item: any) => boolean\n hidden?: (item: any) => boolean\n callback: (item: any) => any\n withConfirm?: boolean\n withConfirmConfig?: (item: any) => ConfirmModalProps\n}\n\nexport interface ActionGroup {\n isGroup: true\n icon?: string\n label?: string\n ariaLabel?: string\n cardLabel?: string\n class?: string\n config?: Record<string, any>\n items: Action[]\n disabled?: (item: any) => boolean\n hidden?: (item: any) => boolean\n}\n\nexport const dataTableSettingsDefaults: DataTableSettings = {\n striped: true,\n compact: false,\n}\n\nexport const dataCardsSettingsDefaults: DataCardsSettings = {\n compact: false,\n}\n\nexport const dataListSettingsDefaults: Partial<DataListSettings> = {\n layout: 'screen',\n compact: false,\n}\n"],"mappings":";AAyGA,IAAa,IAA+C;CAC1D,SAAS;CACT,SAAS;AACX,GAEa,IAA+C,EAC1D,SAAS,GACX,GAEa,IAAsD;CACjE,QAAQ;CACR,SAAS;AACX"}
@@ -0,0 +1,8 @@
1
+ //#region src/utils/dataList.ts
2
+ function e(e, t) {
3
+ if (!t) return "";
4
+ let n = e[t.property];
5
+ return t.converter ? t.converter(n, e) : n;
6
+ }
7
+ //#endregion
8
+ export { e as getColumnValue };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admins-components61.js","names":[],"sources":["../src/utils/dataList.ts"],"sourcesContent":["import type { Column } from '@/types/data-list'\nimport type { Action, ActionGroup } from '@/types/data-list'\nimport type { DropdownMenuItem } from '@/components/DropdownMenu.vue'\n\nexport function getColumnValue(item: Record<string, unknown>, col: Column | undefined) {\n if (!col) return ''\n const value = (item as any)[col.property]\n return col.converter ? col.converter(value, item) : value\n}\n\nexport function isUuid(str: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(str)\n}\n\nexport function isActionGroup(entry: Action | ActionGroup): entry is ActionGroup {\n return (entry as ActionGroup).isGroup === true && Array.isArray((entry as ActionGroup).items)\n}\n\nexport function buildActionGroupMenuItems(\n group: ActionGroup,\n item: Record<string, unknown>,\n): DropdownMenuItem[] {\n return group.items.map((action: Action) => ({\n icon: action.icon,\n label: action.label ?? '',\n type: action.type,\n size: action.label ? 'small' : 'normal',\n callback: () => action.callback(item),\n }))\n}\n"],"mappings":";AAIA,SAAgB,EAAe,GAA+B,GAAyB;CACrF,IAAI,CAAC,GAAK,OAAO;CACjB,IAAM,IAAS,EAAa,EAAI;CAChC,OAAO,EAAI,YAAY,EAAI,UAAU,GAAO,CAAI,IAAI;AACtD"}
@@ -1,7 +1,32 @@
1
- import './src/styles/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css';
2
- import e from "./admins-components60.js";
3
- /* empty css */
4
- //#region src/components/data-table/TagList.vue
5
- var t = e;
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, defineComponent as i, normalizeClass as a, openBlock as o, ref as s, renderList as c, toDisplayString as l } from "vue";
2
+ //#region src/components/data-table/TagList.vue?vue&type=script&setup=true&lang.ts
3
+ var u = ["aria-expanded", "title"], d = /* @__PURE__ */ i({
4
+ __name: "TagList",
5
+ props: {
6
+ items: { default: () => [] },
7
+ visibleCount: { default: 3 },
8
+ class: { default: void 0 }
9
+ },
10
+ setup(i) {
11
+ let d = i, f = s(!1), p = t(() => d.items.length), m = t(() => Math.max(0, p.value - d.visibleCount)), h = t(() => f.value || p.value <= d.visibleCount ? d.items : d.items.slice(0, d.visibleCount)), g = t(() => f.value ? 0 : m.value);
12
+ function _(e) {
13
+ return e == null ? "" : typeof e == "string" ? e : e.label ?? (e.id == null ? "" : String(e.id));
14
+ }
15
+ function v() {
16
+ f.value = !f.value;
17
+ }
18
+ return (t, i) => (o(), r("span", { class: a(["tag-list", d.class]) }, [(o(!0), r(e, null, c(h.value, (e, t) => (o(), r("span", {
19
+ key: t,
20
+ class: "tag-list__item"
21
+ }, l(_(e)) + l(t < h.value.length - 1 ? "," : ""), 1))), 128)), g.value > 0 ? (o(), r("button", {
22
+ key: 0,
23
+ type: "button",
24
+ class: "tag-list__toggle",
25
+ "aria-expanded": f.value,
26
+ title: f.value ? "Összecsukás" : `További ${g.value} megjelenítése`,
27
+ onClick: v
28
+ }, " +" + l(g.value), 9, u)) : n("", !0)], 2));
29
+ }
30
+ });
6
31
  //#endregion
7
- export { t as default };
32
+ export { d as default };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components62.js","names":[],"sources":["../src/components/data-table/TagList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\n\ninterface TagListProps {\n items: Array<string | { label?: string; id?: string | number }>\n visibleCount?: number\n class?: string\n}\n\nconst props = withDefaults(defineProps<TagListProps>(), {\n visibleCount: 3,\n items: () => [],\n class: undefined,\n})\n\nconst expanded = ref(false)\n\nconst total = computed(() => props.items.length)\nconst overflow = computed(() => Math.max(0, total.value - props.visibleCount))\n\nconst visibleItems = computed(() => {\n if (expanded.value || total.value <= props.visibleCount) {\n return props.items\n }\n return props.items.slice(0, props.visibleCount)\n})\n\nconst hiddenCount = computed(() => {\n return expanded.value ? 0 : overflow.value\n})\n\nfunction labelOf(item: TagListProps['items'][number]): string {\n if (item == null) return ''\n if (typeof item === 'string') return item\n return item.label ?? (item.id != null ? String(item.id) : '')\n}\n\nfunction toggle() {\n expanded.value = !expanded.value\n}\n</script>\n\n<template>\n <span class=\"tag-list\" :class=\"props.class\">\n <span v-for=\"(item, i) in visibleItems\" :key=\"i\" class=\"tag-list__item\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ',' : '' }}</span\n >\n<!-- <template v-for=\"(item, i) in visibleItems\" :key=\"i\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ', ' : '' }}</template\n > -->\n <button\n v-if=\"hiddenCount > 0\"\n type=\"button\"\n class=\"tag-list__toggle\"\n :aria-expanded=\"expanded\"\n :title=\"expanded ? 'Összecsukás' : `További ${hiddenCount} megjelenítése`\"\n @click=\"toggle\"\n >\n +{{ hiddenCount }}\n </button>\n <!-- <button\n v-else-if=\"expanded && total > visibleCount\"\n type=\"button\"\n class=\"tag-list__toggle tag-list__toggle--collapse\"\n :aria-expanded=\"expanded\"\n title=\"Összecsukás\"\n @click=\"toggle\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-up\" aria-hidden=\"true\"></i>\n </button> -->\n </span>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/tag-list.scss\"></style>\n"],"mappings":""}
1
+ {"version":3,"file":"admins-components62.js","names":[],"sources":["../src/components/data-table/TagList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\n\ninterface TagListProps {\n items: Array<string | { label?: string; id?: string | number }>\n visibleCount?: number\n class?: string\n}\n\nconst props = withDefaults(defineProps<TagListProps>(), {\n visibleCount: 3,\n items: () => [],\n class: undefined,\n})\n\nconst expanded = ref(false)\n\nconst total = computed(() => props.items.length)\nconst overflow = computed(() => Math.max(0, total.value - props.visibleCount))\n\nconst visibleItems = computed(() => {\n if (expanded.value || total.value <= props.visibleCount) {\n return props.items\n }\n return props.items.slice(0, props.visibleCount)\n})\n\nconst hiddenCount = computed(() => {\n return expanded.value ? 0 : overflow.value\n})\n\nfunction labelOf(item: TagListProps['items'][number]): string {\n if (item == null) return ''\n if (typeof item === 'string') return item\n return item.label ?? (item.id != null ? String(item.id) : '')\n}\n\nfunction toggle() {\n expanded.value = !expanded.value\n}\n</script>\n\n<template>\n <span class=\"tag-list\" :class=\"props.class\">\n <span v-for=\"(item, i) in visibleItems\" :key=\"i\" class=\"tag-list__item\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ',' : '' }}</span\n >\n<!-- <template v-for=\"(item, i) in visibleItems\" :key=\"i\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ', ' : '' }}</template\n > -->\n <button\n v-if=\"hiddenCount > 0\"\n type=\"button\"\n class=\"tag-list__toggle\"\n :aria-expanded=\"expanded\"\n :title=\"expanded ? 'Összecsukás' : `További ${hiddenCount} megjelenítése`\"\n @click=\"toggle\"\n >\n +{{ hiddenCount }}\n </button>\n <!-- <button\n v-else-if=\"expanded && total > visibleCount\"\n type=\"button\"\n class=\"tag-list__toggle tag-list__toggle--collapse\"\n :aria-expanded=\"expanded\"\n title=\"Összecsukás\"\n @click=\"toggle\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-up\" aria-hidden=\"true\"></i>\n </button> -->\n </span>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/tag-list.scss\"></style>\n"],"mappings":";;;;;;;;;;EASA,IAAM,IAAQ,GAMR,IAAW,EAAI,EAAK,GAEpB,IAAQ,QAAe,EAAM,MAAM,MAAM,GACzC,IAAW,QAAe,KAAK,IAAI,GAAG,EAAM,QAAQ,EAAM,YAAY,CAAC,GAEvE,IAAe,QACf,EAAS,SAAS,EAAM,SAAS,EAAM,eAClC,EAAM,QAER,EAAM,MAAM,MAAM,GAAG,EAAM,YAAY,CAC/C,GAEK,IAAc,QACX,EAAS,QAAQ,IAAI,EAAS,KACtC;EAED,SAAS,EAAQ,GAA6C;GAG5D,OAFI,KAAQ,OAAa,KACrB,OAAO,KAAS,WAAiB,IAC9B,EAAK,UAAU,EAAK,MAAM,OAAyB,KAAlB,OAAO,EAAK,EAAE;EACxD;EAEA,SAAS,IAAS;GAChB,EAAS,QAAQ,CAAC,EAAS;EAC7B;yBAIE,EA2BO,QAAA,EA3BD,OAAK,EAAA,CAAC,YAAmB,EAAM,KAAK,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GACxC,EAEC,GAAA,MAAA,EAFyB,EAAA,QAAZ,GAAM,YAApB,EAEC,QAAA;GAFwC,KAAK;GAAG,OAAM;OACjD,EAAQ,CAAI,CAAA,IAAA,EAAO,IAAI,EAAA,MAAa,SAAM,IAAA,MAAA,EAAA,GAAA,CAAA,YAMxC,EAAA,QAAW,KAAA,EAAA,GADnB,EASS,UAAA;;GAPP,MAAK;GACL,OAAM;GACL,iBAAe,EAAA;GACf,OAAO,EAAA,QAAQ,gBAAA,WAA8B,EAAA,MAAW;GACxD,SAAO;KACT,OACE,EAAG,EAAA,KAAW,GAAA,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,CAAA"}
@@ -1,71 +1,7 @@
1
- import e from "./admins-components25.js";
2
- import t from "./admins-components45.js";
3
- import { getColumnValue as n } from "./admins-components59.js";
4
- import { shortUuid as r } from "./admins-components63.js";
5
- import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, isVNode as d, openBlock as f, renderSlot as p, resolveDirective as m, resolveDynamicComponent as h, toDisplayString as g, withDirectives as _ } from "vue";
6
- //#region src/components/data-table/DataCell.vue?vue&type=script&setup=true&lang.ts
7
- var v = { class: "dc-cell" }, y = {
8
- key: 0,
9
- class: "dc-loading"
10
- }, b = { key: 2 }, x = ["innerHTML"], S = {
11
- key: 3,
12
- class: "dc-datetime"
13
- }, C = { class: "dc-datetime__part" }, w = {
14
- key: 0,
15
- class: "dc-datetime__sep"
16
- }, T = { class: "dc-datetime__part" }, E = { key: 4 }, D = ["innerHTML"], O = /* @__PURE__ */ u({
17
- __name: "DataCell",
18
- props: {
19
- item: {},
20
- col: {},
21
- copy: {
22
- type: Boolean,
23
- default: !0
24
- }
25
- },
26
- setup(u) {
27
- let O = u, k = i(() => n(O.item, O.col)), A = i(() => d(k.value)), j = i(() => r()(k.value)), M = i(() => {
28
- if (O.col.type !== "datetime") return null;
29
- let e = k.value;
30
- if (!e) return {
31
- date: "",
32
- time: ""
33
- };
34
- let t = e.indexOf(" ");
35
- return t === -1 ? {
36
- date: e,
37
- time: ""
38
- } : {
39
- date: e.slice(0, t),
40
- time: e.slice(t + 1)
41
- };
42
- });
43
- return (n, r) => {
44
- let i = m("tooltip");
45
- return f(), s("span", v, [p(n.$slots, "cell", {
46
- item: u.item,
47
- col: u.col,
48
- value: k.value
49
- }, () => [u.col.loading?.() ? (f(), s("span", y, [l(e, {
50
- loading: !0,
51
- size: "1rem"
52
- })])) : A.value ? (f(), a(h(k.value), { key: 1 })) : u.col.type === "uuid" ? _((f(), s("span", b, [c("span", { innerHTML: j.value }, null, 8, x), u.copy && k.value ? (f(), a(t, {
53
- key: 0,
54
- value: k.value
55
- }, null, 8, ["value"])) : o("", !0)])), [[i, k.value]]) : u.col.type === "datetime" ? (f(), s("span", S, [
56
- c("span", C, g(M.value?.date), 1),
57
- M.value?.time ? (f(), s("span", w)) : o("", !0),
58
- c("span", T, g(M.value?.time), 1),
59
- u.copy && k.value ? (f(), a(t, {
60
- key: 1,
61
- value: k.value
62
- }, null, 8, ["value"])) : o("", !0)
63
- ])) : (f(), s("span", E, [c("span", { innerHTML: k.value }, null, 8, D), u.copy && k.value ? (f(), a(t, {
64
- key: 0,
65
- value: k.value
66
- }, null, 8, ["value"])) : o("", !0)]))])]);
67
- };
68
- }
69
- });
1
+ import './src/styles/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css';
2
+ import e from "./admins-components62.js";
3
+ /* empty css */
4
+ //#region src/components/data-table/TagList.vue
5
+ var t = e;
70
6
  //#endregion
71
- export { O as default };
7
+ export { t as default };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components64.js","names":[],"sources":["../src/components/data-table/DataCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Column } from '@/types/data-list'\nimport { getColumnValue } from '@/utils/dataList'\nimport CopyToClipboard from '@/components/CopyToClipboard.vue'\nimport Loader from '@/components/Loader.vue'\nimport { computed, isVNode, type VNode } from 'vue'\nimport { shortUuid } from '@/utils/dataListConverters'\n\nconst props = withDefaults(\n defineProps<{\n item: Record<string, unknown>\n col: Column\n copy?: boolean\n }>(),\n {\n copy: true,\n },\n)\n\nconst columnValue = computed<string | VNode>(() => getColumnValue(props.item, props.col))\nconst isVnodeValue = computed(() => isVNode(columnValue.value))\n\nconst uuIdValue = computed(() => {\n return shortUuid()(columnValue.value as string)\n})\n\nconst datetimeParts = computed<{ date: string; time: string } | null>(() => {\n if (props.col.type !== 'datetime') return null\n const value = columnValue.value as string\n if (!value) return { date: '', time: '' }\n const spaceIdx = value.indexOf(' ')\n if (spaceIdx === -1) return { date: value, time: '' }\n return {\n date: value.slice(0, spaceIdx),\n time: value.slice(spaceIdx + 1),\n }\n})\n</script>\n<template>\n <span class=\"dc-cell\">\n <slot name=\"cell\" :item=\"item\" :col=\"col\" :value=\"columnValue\">\n <span v-if=\"col.loading?.()\" class=\"dc-loading\">\n <Loader :loading=\"true\" size=\"1rem\" />\n </span>\n\n <component :is=\"columnValue\" v-else-if=\"isVnodeValue\" />\n\n <span v-else-if=\"col.type === 'uuid'\" v-tooltip=\"columnValue\">\n <span v-html=\"uuIdValue\"></span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n <span v-else-if=\"col.type === 'datetime'\" class=\"dc-datetime\">\n <span class=\"dc-datetime__part\">{{ datetimeParts?.date }}</span\n ><span v-if=\"datetimeParts?.time\" class=\"dc-datetime__sep\"> </span\n ><span class=\"dc-datetime__part\">{{ datetimeParts?.time }}</span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n\n <span v-else\n ><span v-html=\"columnValue\"></span\n ><CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n </slot>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAM,IAAQ,GAWR,IAAc,QAA+B,EAAe,EAAM,MAAM,EAAM,GAAG,CAAC,GAClF,IAAe,QAAe,EAAQ,EAAY,KAAK,CAAC,GAExD,IAAY,QACT,EAAU,EAAE,EAAY,KAAe,CAC/C,GAEK,IAAgB,QAAsD;GAC1E,IAAI,EAAM,IAAI,SAAS,YAAY,OAAO;GAC1C,IAAM,IAAQ,EAAY;GAC1B,IAAI,CAAC,GAAO,OAAO;IAAE,MAAM;IAAI,MAAM;GAAG;GACxC,IAAM,IAAW,EAAM,QAAQ,GAAG;GAElC,OADI,MAAa,KAAW;IAAE,MAAM;IAAO,MAAM;GAAG,IAC7C;IACL,MAAM,EAAM,MAAM,GAAG,CAAQ;IAC7B,MAAM,EAAM,MAAM,IAAW,CAAC;GAChC;EACF,CAAC;;;eAGC,EAwBO,QAxBP,GAwBO,CAvBL,EAsBO,EAAA,QAAA,QAAA;IAtBY,MAAM,EAAA;IAAO,KAAK,EAAA;IAAM,OAAO,EAAA;YAsB3C,CArBO,EAAA,IAAI,UAAO,KAAA,EAAA,GAAvB,EAEO,QAFP,GAEO,CADL,EAAsC,GAAA;IAA7B,SAAS;IAAM,MAAK;WAGS,EAAA,SAAA,EAAA,GAAxC,EAAwD,EAAxC,EAAA,KAAW,GAAA,EAAA,KAAA,EAAA,CAAA,KAEV,EAAA,IAAI,SAAI,SAAA,GAAA,EAAA,GAAzB,EAGO,QAAA,GAAA,CAFL,EAAgC,QAAA,EAA1B,WAAQ,EAAA,MAAS,GAAA,MAAA,GAAA,CAAA,GACA,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;IAAtB,OAAO,EAAA;gDAFL,EAAA,KAAW,CAAA,CAAA,IAI3C,EAAA,IAAI,SAAI,cAAA,EAAA,GAAzB,EAKO,QALP,GAKO;IAJL,EACC,QADD,GACC,EADkC,EAAA,OAAe,IAAI,GAAA,CAAA;IACzC,EAAA,OAAe,QAAA,EAAA,GAA3B,EACA,QADA,CACA,KAAA,EAAA,IAAA,EAAA;IAAA,EAAgE,QAAhE,GAAgE,EAA7B,EAAA,OAAe,IAAI,GAAA,CAAA;IAChC,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;KAAtB,OAAO,EAAA;;eAGtD,EAGO,QAAA,GAAA,CAFJ,EACA,QAAA,EADM,WAAQ,EAAA,MAAW,GAAA,MAAA,GAAA,CAAA,GACF,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;IAAtB,OAAO,EAAA"}
1
+ {"version":3,"file":"admins-components64.js","names":[],"sources":["../src/components/data-table/TagList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\n\ninterface TagListProps {\n items: Array<string | { label?: string; id?: string | number }>\n visibleCount?: number\n class?: string\n}\n\nconst props = withDefaults(defineProps<TagListProps>(), {\n visibleCount: 3,\n items: () => [],\n class: undefined,\n})\n\nconst expanded = ref(false)\n\nconst total = computed(() => props.items.length)\nconst overflow = computed(() => Math.max(0, total.value - props.visibleCount))\n\nconst visibleItems = computed(() => {\n if (expanded.value || total.value <= props.visibleCount) {\n return props.items\n }\n return props.items.slice(0, props.visibleCount)\n})\n\nconst hiddenCount = computed(() => {\n return expanded.value ? 0 : overflow.value\n})\n\nfunction labelOf(item: TagListProps['items'][number]): string {\n if (item == null) return ''\n if (typeof item === 'string') return item\n return item.label ?? (item.id != null ? String(item.id) : '')\n}\n\nfunction toggle() {\n expanded.value = !expanded.value\n}\n</script>\n\n<template>\n <span class=\"tag-list\" :class=\"props.class\">\n <span v-for=\"(item, i) in visibleItems\" :key=\"i\" class=\"tag-list__item\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ',' : '' }}</span\n >\n<!-- <template v-for=\"(item, i) in visibleItems\" :key=\"i\"\n >{{ labelOf(item) }}{{ i < visibleItems.length - 1 ? ', ' : '' }}</template\n > -->\n <button\n v-if=\"hiddenCount > 0\"\n type=\"button\"\n class=\"tag-list__toggle\"\n :aria-expanded=\"expanded\"\n :title=\"expanded ? 'Összecsukás' : `További ${hiddenCount} megjelenítése`\"\n @click=\"toggle\"\n >\n +{{ hiddenCount }}\n </button>\n <!-- <button\n v-else-if=\"expanded && total > visibleCount\"\n type=\"button\"\n class=\"tag-list__toggle tag-list__toggle--collapse\"\n :aria-expanded=\"expanded\"\n title=\"Összecsukás\"\n @click=\"toggle\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-up\" aria-hidden=\"true\"></i>\n </button> -->\n </span>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/tag-list.scss\"></style>\n"],"mappings":""}
@@ -1,5 +1,97 @@
1
- import e from "./admins-components64.js";
2
- //#region src/components/data-table/DataCell.vue
3
- var t = e;
1
+ import { castToDate as e, formatDate as t } from "./admins-components3.js";
2
+ import n from "./admins-components64.js";
3
+ import { h as r } from "vue";
4
+ //#region src/utils/dataListConverters.ts
5
+ function i(n = !1, r) {
6
+ return (i) => {
7
+ let a = e(i);
8
+ return a ? r ? t(a, r) : n ? t(a, "YYYY-MM-DD HH:mm") : t(a, "YYYY-MM-DD") : "";
9
+ };
10
+ }
11
+ function a(e = 3) {
12
+ return (t) => {
13
+ if (!t) return "";
14
+ let n = typeof t == "string" ? t : String(t);
15
+ return `${n.slice(0, e)}...${n.slice(-e)}`;
16
+ };
17
+ }
18
+ function o(n = "YYYY-MM-DD") {
19
+ return (r) => {
20
+ let i = e(r);
21
+ return i ? t(i, n) : "";
22
+ };
23
+ }
24
+ function s(e = 60, t = "…") {
25
+ return (n) => {
26
+ let r = typeof n == "string" ? n : n == null ? "" : String(n);
27
+ return r.length <= e ? r : r.slice(0, e).trimEnd() + t;
28
+ };
29
+ }
30
+ function c(e = "Igen", t = "Nem", n = "") {
31
+ return (r) => r === !0 ? e : r === !1 ? t : n;
32
+ }
33
+ function l(e, t) {
34
+ return (n) => {
35
+ if (n == null) return t ?? "";
36
+ let r = String(n);
37
+ return r in e ? e[r] : t ?? n;
38
+ };
39
+ }
40
+ function u(e = 0, t = "hu-HU") {
41
+ return (n) => {
42
+ let r = typeof n == "number" ? n : Number(n);
43
+ return Number.isFinite(r) ? r.toLocaleString(t, {
44
+ minimumFractionDigits: e,
45
+ maximumFractionDigits: e
46
+ }) : n;
47
+ };
48
+ }
49
+ function d(e = "HUF", t = "hu-HU", n = 0) {
50
+ return (r) => {
51
+ let i = typeof r == "number" ? r : Number(r);
52
+ return Number.isFinite(i) ? i.toLocaleString(t, {
53
+ style: "currency",
54
+ currency: e,
55
+ minimumFractionDigits: n,
56
+ maximumFractionDigits: n
57
+ }) : r;
58
+ };
59
+ }
60
+ function f(e = ", ", t = !1) {
61
+ return (n) => {
62
+ if (Array.isArray(n)) {
63
+ let r = n.map(String);
64
+ if (!t || r.length === 0) return r.join(e);
65
+ let [i, ...a] = r;
66
+ return `<strong>${i}</strong>${a.length ? e + a.join(e) : ""}`;
67
+ }
68
+ return n == null ? "" : String(n);
69
+ };
70
+ }
71
+ function p(e = {}) {
72
+ let { visibleCount: t = 3, class: i } = e;
73
+ return (e) => Array.isArray(e) ? r(n, {
74
+ items: e,
75
+ visibleCount: t,
76
+ class: i
77
+ }) : r(n, {
78
+ items: [],
79
+ visibleCount: t,
80
+ class: i
81
+ });
82
+ }
83
+ var m = (e) => e, h = {
84
+ utcToLocalString: i,
85
+ localToLocalString: o,
86
+ shortUuid: a,
87
+ textEllipse: s,
88
+ booleanToString: c,
89
+ enumMap: l,
90
+ formatNumber: u,
91
+ formatCurrency: d,
92
+ listToString: f,
93
+ tagList: p,
94
+ identity: m
95
+ };
4
96
  //#endregion
5
- export { t as default };
97
+ export { c as booleanToString, h as dataListConverters, l as enumMap, d as formatCurrency, u as formatNumber, m as identity, f as listToString, o as localToLocalString, a as shortUuid, p as tagList, s as textEllipse, i as utcToLocalString };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components65.js","names":[],"sources":["../src/components/data-table/DataCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Column } from '@/types/data-list'\nimport { getColumnValue } from '@/utils/dataList'\nimport CopyToClipboard from '@/components/CopyToClipboard.vue'\nimport Loader from '@/components/Loader.vue'\nimport { computed, isVNode, type VNode } from 'vue'\nimport { shortUuid } from '@/utils/dataListConverters'\n\nconst props = withDefaults(\n defineProps<{\n item: Record<string, unknown>\n col: Column\n copy?: boolean\n }>(),\n {\n copy: true,\n },\n)\n\nconst columnValue = computed<string | VNode>(() => getColumnValue(props.item, props.col))\nconst isVnodeValue = computed(() => isVNode(columnValue.value))\n\nconst uuIdValue = computed(() => {\n return shortUuid()(columnValue.value as string)\n})\n\nconst datetimeParts = computed<{ date: string; time: string } | null>(() => {\n if (props.col.type !== 'datetime') return null\n const value = columnValue.value as string\n if (!value) return { date: '', time: '' }\n const spaceIdx = value.indexOf(' ')\n if (spaceIdx === -1) return { date: value, time: '' }\n return {\n date: value.slice(0, spaceIdx),\n time: value.slice(spaceIdx + 1),\n }\n})\n</script>\n<template>\n <span class=\"dc-cell\">\n <slot name=\"cell\" :item=\"item\" :col=\"col\" :value=\"columnValue\">\n <span v-if=\"col.loading?.()\" class=\"dc-loading\">\n <Loader :loading=\"true\" size=\"1rem\" />\n </span>\n\n <component :is=\"columnValue\" v-else-if=\"isVnodeValue\" />\n\n <span v-else-if=\"col.type === 'uuid'\" v-tooltip=\"columnValue\">\n <span v-html=\"uuIdValue\"></span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n <span v-else-if=\"col.type === 'datetime'\" class=\"dc-datetime\">\n <span class=\"dc-datetime__part\">{{ datetimeParts?.date }}</span\n ><span v-if=\"datetimeParts?.time\" class=\"dc-datetime__sep\"> </span\n ><span class=\"dc-datetime__part\">{{ datetimeParts?.time }}</span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n\n <span v-else\n ><span v-html=\"columnValue\"></span\n ><CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n </slot>\n </span>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"admins-components65.js","names":[],"sources":["../src/utils/dataListConverters.ts"],"sourcesContent":["import { h } from 'vue'\nimport { castToDate, formatDate } from '@/utils/date'\nimport TagList from '@/components/data-table/TagList.vue'\n\ntype Converter = (value: unknown, item?: unknown) => unknown\n\nexport function utcToLocalString(time = false, format?: string): Converter {\n return (value) => {\n const d = castToDate(value)\n if (!d) return ''\n if (format) return formatDate(d, format)\n if (time) return formatDate(d, 'YYYY-MM-DD HH:mm')\n return formatDate(d, 'YYYY-MM-DD');\n }\n}\nexport function shortUuid(length = 3): Converter {\n return (value) => {\n if (!value) return ''\n const s = typeof value === 'string' ? value : String(value)\n return `${s.slice(0, length)}...${s.slice(-length)}`\n }\n}\n\nexport function localToLocalString(format = 'YYYY-MM-DD'): Converter {\n return (value) => {\n const d = castToDate(value)\n return d ? formatDate(d, format) : ''\n }\n}\n\nexport function textEllipse(max = 60, suffix = '…'): Converter {\n return (value) => {\n const s = typeof value === 'string' ? value : value == null ? '' : String(value)\n if (s.length <= max) return s\n return s.slice(0, max).trimEnd() + suffix\n }\n}\n\nexport function booleanToString(trueLabel = 'Igen', falseLabel = 'Nem', fallback = ''): Converter {\n return (value) => {\n if (value === true) return trueLabel\n if (value === false) return falseLabel\n return fallback\n }\n}\n\nexport function enumMap<T = unknown>(map: Record<string, T>, fallback?: T): Converter {\n return (value) => {\n if (value == null) return fallback ?? ''\n const key = String(value)\n return key in map ? map[key] : (fallback ?? value)\n }\n}\n\nexport function formatNumber(decimals = 0, locale = 'hu-HU'): Converter {\n return (value) => {\n const n = typeof value === 'number' ? value : Number(value)\n if (!Number.isFinite(n)) return value\n return n.toLocaleString(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n }\n}\n\nexport function formatCurrency(currencyCode = 'HUF', locale = 'hu-HU', decimals = 0): Converter {\n return (value) => {\n const n = typeof value === 'number' ? value : Number(value)\n if (!Number.isFinite(n)) return value\n return n.toLocaleString(locale, {\n style: 'currency',\n currency: currencyCode,\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n }\n}\n\nexport function listToString(\n separator = ', ',\n boldFirstItem = false,\n): Converter {\n return (value) => {\n if (Array.isArray(value)) {\n const parts = value.map(String)\n if (!boldFirstItem || parts.length === 0) {\n return parts.join(separator)\n }\n const [head, ...rest] = parts\n return `<strong>${head}</strong>${rest.length ? separator + rest.join(separator) : ''}`\n }\n if (value == null) return ''\n return String(value)\n }\n}\n/**\n * Converter that renders an array of values as a collapsed tag list.\n *\n * - `visibleCount` controls how many items show before the `+N` toggle.\n * The component lets the user expand to show every item, and re-collapse\n * via a small chevron. Expansion state is per-cell (one per row).\n * - `class` is forwarded to the wrapping element.\n *\n * Returns a Vue `VNode` so the toggle state can persist within the cell.\n */\nexport function tagList(\n options: { visibleCount?: number; class?: string } = {},\n): Converter {\n const { visibleCount = 3, class: cls } = options\n return (value) => {\n if (!Array.isArray(value)) return h(TagList, { items: [], visibleCount, class: cls })\n const items = value as Array<string | { label?: string; id?: string | number }>\n return h(TagList, { items, visibleCount, class: cls })\n }\n}\nexport const identity: Converter = (value) => value\n\nexport const dataListConverters = {\n utcToLocalString,\n localToLocalString,\n shortUuid,\n textEllipse,\n booleanToString,\n enumMap,\n formatNumber,\n formatCurrency,\n listToString,\n tagList,\n identity,\n} as const\n"],"mappings":";;;;AAMA,SAAgB,EAAiB,IAAO,IAAO,GAA4B;CACzE,QAAQ,MAAU;EAChB,IAAM,IAAI,EAAW,CAAK;EAI1B,OAHK,IACD,IAAe,EAAW,GAAG,CAAM,IACnC,IAAa,EAAW,GAAG,kBAAkB,IAC1C,EAAW,GAAG,YAAY,IAHlB;CAIjB;AACF;AACA,SAAgB,EAAU,IAAS,GAAc;CAC/C,QAAQ,MAAU;EAChB,IAAI,CAAC,GAAO,OAAO;EACnB,IAAM,IAAI,OAAO,KAAU,WAAW,IAAQ,OAAO,CAAK;EAC1D,OAAO,GAAG,EAAE,MAAM,GAAG,CAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAM;CACnD;AACF;AAEA,SAAgB,EAAmB,IAAS,cAAyB;CACnE,QAAQ,MAAU;EAChB,IAAM,IAAI,EAAW,CAAK;EAC1B,OAAO,IAAI,EAAW,GAAG,CAAM,IAAI;CACrC;AACF;AAEA,SAAgB,EAAY,IAAM,IAAI,IAAS,KAAgB;CAC7D,QAAQ,MAAU;EAChB,IAAM,IAAI,OAAO,KAAU,WAAW,IAAQ,KAAS,OAAO,KAAK,OAAO,CAAK;EAE/E,OADI,EAAE,UAAU,IAAY,IACrB,EAAE,MAAM,GAAG,CAAG,EAAE,QAAQ,IAAI;CACrC;AACF;AAEA,SAAgB,EAAgB,IAAY,QAAQ,IAAa,OAAO,IAAW,IAAe;CAChG,QAAQ,MACF,MAAU,KAAa,IACvB,MAAU,KAAc,IACrB;AAEX;AAEA,SAAgB,EAAqB,GAAwB,GAAyB;CACpF,QAAQ,MAAU;EAChB,IAAI,KAAS,MAAM,OAAO,KAAY;EACtC,IAAM,IAAM,OAAO,CAAK;EACxB,OAAO,KAAO,IAAM,EAAI,KAAQ,KAAY;CAC9C;AACF;AAEA,SAAgB,EAAa,IAAW,GAAG,IAAS,SAAoB;CACtE,QAAQ,MAAU;EAChB,IAAM,IAAI,OAAO,KAAU,WAAW,IAAQ,OAAO,CAAK;EAE1D,OADK,OAAO,SAAS,CAAC,IACf,EAAE,eAAe,GAAQ;GAC9B,uBAAuB;GACvB,uBAAuB;EACzB,CAAC,IAJ+B;CAKlC;AACF;AAEA,SAAgB,EAAe,IAAe,OAAO,IAAS,SAAS,IAAW,GAAc;CAC9F,QAAQ,MAAU;EAChB,IAAM,IAAI,OAAO,KAAU,WAAW,IAAQ,OAAO,CAAK;EAE1D,OADK,OAAO,SAAS,CAAC,IACf,EAAE,eAAe,GAAQ;GAC9B,OAAO;GACP,UAAU;GACV,uBAAuB;GACvB,uBAAuB;EACzB,CAAC,IAN+B;CAOlC;AACF;AAEA,SAAgB,EACd,IAAY,MACZ,IAAgB,IACL;CACX,QAAQ,MAAU;EAChB,IAAI,MAAM,QAAQ,CAAK,GAAG;GACxB,IAAM,IAAQ,EAAM,IAAI,MAAM;GAC9B,IAAI,CAAC,KAAiB,EAAM,WAAW,GACrC,OAAO,EAAM,KAAK,CAAS;GAE7B,IAAM,CAAC,GAAM,GAAG,KAAQ;GACxB,OAAO,WAAW,EAAK,WAAW,EAAK,SAAS,IAAY,EAAK,KAAK,CAAS,IAAI;EACrF;EAEA,OADI,KAAS,OAAa,KACnB,OAAO,CAAK;CACrB;AACF;AAWA,SAAgB,EACd,IAAqD,CAAC,GAC3C;CACX,IAAM,EAAE,kBAAe,GAAG,OAAO,MAAQ;CACzC,QAAQ,MACD,MAAM,QAAQ,CAAK,IAEjB,EAAE,GAAS;EAAE,OAAA;EAAO;EAAc,OAAO;CAAI,CAAC,IAFnB,EAAE,GAAS;EAAE,OAAO,CAAC;EAAG;EAAc,OAAO;CAAI,CAAC;AAIxF;AACA,IAAa,KAAuB,MAAU,GAEjC,IAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
@@ -1,90 +1,71 @@
1
- import e from "./admins-components6.js";
2
- import t from "./admins-components30.js";
3
- import n from "./admins-components42.js";
4
- import { Fragment as r, createBlock as i, createCommentVNode as a, createElementBlock as o, defineComponent as s, mergeProps as c, openBlock as l, ref as u, renderList as d } from "vue";
5
- //#region src/components/data-table/DataListActions.vue?vue&type=script&setup=true&lang.ts
6
- var f = /* @__PURE__ */ s({
7
- __name: "DataListActions",
1
+ import e from "./admins-components25.js";
2
+ import t from "./admins-components45.js";
3
+ import { getColumnValue as n } from "./admins-components61.js";
4
+ import { shortUuid as r } from "./admins-components65.js";
5
+ import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, isVNode as d, openBlock as f, renderSlot as p, resolveDirective as m, resolveDynamicComponent as h, toDisplayString as g, withDirectives as _ } from "vue";
6
+ //#region src/components/data-table/DataCell.vue?vue&type=script&setup=true&lang.ts
7
+ var v = { class: "dc-cell" }, y = {
8
+ key: 0,
9
+ class: "dc-loading"
10
+ }, b = { key: 2 }, x = ["innerHTML"], S = {
11
+ key: 3,
12
+ class: "dc-datetime"
13
+ }, C = { class: "dc-datetime__part" }, w = {
14
+ key: 0,
15
+ class: "dc-datetime__sep"
16
+ }, T = { class: "dc-datetime__part" }, E = { key: 4 }, D = ["innerHTML"], O = /* @__PURE__ */ u({
17
+ __name: "DataCell",
8
18
  props: {
9
- actions: {},
10
- item: {}
19
+ item: {},
20
+ col: {},
21
+ copy: {
22
+ type: Boolean,
23
+ default: !0
24
+ }
11
25
  },
12
- setup(s) {
13
- let f = u(null);
14
- function p(e, t) {
15
- let n = {
16
- title: e.label ?? "Megerősítés",
17
- message: "Biztosan végrehajta a műveletet?",
18
- type: e.type
19
- }, r = typeof e.withConfirmConfig == "function" ? e.withConfirmConfig(t) : e.withConfirmConfig;
20
- return {
21
- ...n,
22
- ...r
26
+ setup(u) {
27
+ let O = u, k = i(() => n(O.item, O.col)), A = i(() => d(k.value)), j = i(() => r()(k.value)), M = i(() => {
28
+ if (O.col.type !== "datetime") return null;
29
+ let e = k.value;
30
+ if (!e) return {
31
+ date: "",
32
+ time: ""
23
33
  };
24
- }
25
- function m(e, t) {
26
- e.withConfirm ? f.value = {
27
- action: e,
28
- item: t
29
- } : e.callback(t);
30
- }
31
- function h() {
32
- f.value &&= (f.value.action.callback(f.value.item), null);
33
- }
34
- function g(e) {
35
- return e.isGroup === !0 && Array.isArray(e.items);
36
- }
37
- function _(e, t) {
38
- return e.items.map((e) => {
39
- let n = e.disabled, r = e.hidden;
40
- return {
41
- icon: e.icon,
42
- label: e.label ?? "",
43
- type: e.type,
44
- size: e.label ? "small" : "normal",
45
- class: e.class,
46
- callback: () => m(e, t),
47
- disabled: n ? () => n(t) : void 0,
48
- hidden: r ? () => r(t) : void 0
49
- };
50
- });
51
- }
52
- return (u, v) => (l(), o(r, null, [(l(!0), o(r, null, d(s.actions, (n, u) => (l(), o(r, { key: u }, [n.hidden && n.hidden(s.item) ? a("", !0) : (l(), o(r, { key: 0 }, [g(n) ? (l(), i(t, c({
53
- key: 0,
54
- icon: n.icon,
55
- label: n.label,
56
- items: _(n, s.item),
57
- class: n.class
58
- }, { ref_for: !0 }, n.config), null, 16, [
59
- "icon",
60
- "label",
61
- "items",
62
- "class"
63
- ])) : (l(), i(e, c({
64
- key: 1,
65
- icon: n.icon,
66
- label: n.label,
67
- type: n.type,
68
- size: n.label ? "small" : "normal",
69
- ariaLabel: n.ariaLabel,
70
- class: n.class,
71
- outline: "",
72
- callback: () => m(n, s.item),
73
- disabled: n.disabled ? n.disabled(s.item) : !1
74
- }, { ref_for: !0 }, n.config), null, 16, [
75
- "icon",
76
- "label",
77
- "type",
78
- "size",
79
- "ariaLabel",
80
- "class",
81
- "callback",
82
- "disabled"
83
- ]))], 64))], 64))), 128)), f.value ? (l(), i(n, c({ key: 0 }, p(f.value.action, f.value.item), {
84
- onConfirm: h,
85
- onCancel: v[0] ||= (e) => f.value = null
86
- }), null, 16)) : a("", !0)], 64));
34
+ let t = e.indexOf(" ");
35
+ return t === -1 ? {
36
+ date: e,
37
+ time: ""
38
+ } : {
39
+ date: e.slice(0, t),
40
+ time: e.slice(t + 1)
41
+ };
42
+ });
43
+ return (n, r) => {
44
+ let i = m("tooltip");
45
+ return f(), s("span", v, [p(n.$slots, "cell", {
46
+ item: u.item,
47
+ col: u.col,
48
+ value: k.value
49
+ }, () => [u.col.loading?.() ? (f(), s("span", y, [l(e, {
50
+ loading: !0,
51
+ size: "1rem"
52
+ })])) : A.value ? (f(), a(h(k.value), { key: 1 })) : u.col.type === "uuid" ? _((f(), s("span", b, [c("span", { innerHTML: j.value }, null, 8, x), u.copy && k.value ? (f(), a(t, {
53
+ key: 0,
54
+ value: k.value
55
+ }, null, 8, ["value"])) : o("", !0)])), [[i, k.value]]) : u.col.type === "datetime" ? (f(), s("span", S, [
56
+ c("span", C, g(M.value?.date), 1),
57
+ M.value?.time ? (f(), s("span", w)) : o("", !0),
58
+ c("span", T, g(M.value?.time), 1),
59
+ u.copy && k.value ? (f(), a(t, {
60
+ key: 1,
61
+ value: k.value
62
+ }, null, 8, ["value"])) : o("", !0)
63
+ ])) : (f(), s("span", E, [c("span", { innerHTML: k.value }, null, 8, D), u.copy && k.value ? (f(), a(t, {
64
+ key: 0,
65
+ value: k.value
66
+ }, null, 8, ["value"])) : o("", !0)]))])]);
67
+ };
87
68
  }
88
69
  });
89
70
  //#endregion
90
- export { f as default };
71
+ export { O as default };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components66.js","names":[],"sources":["../src/components/data-table/DataListActions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { Action, ActionGroup } from '@/types/data-list'\nimport type { ConfirmModalProps } from '@/components/ConfirmModal.vue'\nimport Button from '@/components/Button.vue'\nimport DropdownMenu from '@/components/DropdownMenu.vue'\nimport ConfirmModal from '@/components/ConfirmModal.vue'\nimport type { DropdownMenuItem } from '@/components/DropdownMenu.vue'\n\ndefineProps<{\n actions: Array<Action | ActionGroup>\n item?: Record<string, unknown>\n}>()\n\nconst activeConfirm = ref<{\n action: Action\n item?: Record<string, unknown>\n} | null>(null)\n\nfunction getConfirmConfig(action: Action, item?: Record<string, unknown>): ConfirmModalProps {\n const defaultConfig = {\n title: action.label ?? 'Megerősítés',\n message: 'Biztosan végrehajta a műveletet?',\n type: action.type,\n }\n const extra = typeof action.withConfirmConfig === 'function'\n ? action.withConfirmConfig(item)\n : action.withConfirmConfig\n return {\n ...defaultConfig,\n ...extra,\n }\n}\n\nfunction handleOnClick(action: Action, item?: Record<string, unknown>) {\n if (action.withConfirm) {\n activeConfirm.value = { action, item }\n } else {\n action.callback(item)\n }\n}\n\nfunction handleConfirm() {\n if (activeConfirm.value) {\n activeConfirm.value.action.callback(activeConfirm.value.item)\n activeConfirm.value = null\n }\n}\n\nfunction isActionGroup(entry: Action | ActionGroup): entry is ActionGroup {\n return (entry as ActionGroup).isGroup === true && Array.isArray((entry as ActionGroup).items)\n}\n\nfunction buildActionGroupMenuItems(\n group: ActionGroup,\n item?: Record<string, unknown>,\n): DropdownMenuItem[] {\n return group.items.map((action: Action) => {\n const isDisabled = action.disabled\n const isHidden = action.hidden\n return {\n icon: action.icon,\n label: action.label ?? '',\n type: action.type,\n size: action.label ? 'small' : 'normal',\n class: action.class,\n callback: () => handleOnClick(action, item),\n disabled: isDisabled ? () => isDisabled(item) : undefined,\n hidden: isHidden ? () => isHidden(item) : undefined,\n }\n })\n}\n</script>\n\n<template>\n <template v-for=\"(action, ai) in actions\" :key=\"ai\">\n <template v-if=\"!(action.hidden && action.hidden(item))\">\n <DropdownMenu\n v-if=\"isActionGroup(action)\"\n :icon=\"action.icon\"\n :label=\"action.label\"\n :items=\"buildActionGroupMenuItems(action, item)\"\n :class=\"action.class\"\n v-bind=\"action.config\"\n />\n\n <Button\n v-else\n :icon=\"action.icon\"\n :label=\"action.label\"\n :type=\"action.type\"\n :size=\"action.label ? 'small' : 'normal'\"\n :ariaLabel=\"action.ariaLabel\"\n :class=\"action.class\"\n outline\n :callback=\"() => handleOnClick(action, item)\"\n :disabled=\"action.disabled ? action.disabled(item) : false\"\n v-bind=\"action.config\"\n />\n </template>\n </template>\n\n <ConfirmModal\n v-if=\"activeConfirm\"\n v-bind=\"getConfirmConfig(activeConfirm.action, activeConfirm.item)\"\n @confirm=\"handleConfirm\"\n @cancel=\"activeConfirm = null\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;EAcA,IAAM,IAAgB,EAGZ,IAAI;EAEd,SAAS,EAAiB,GAAgB,GAAmD;GAC3F,IAAM,IAAgB;IACpB,OAAO,EAAO,SAAS;IACvB,SAAS;IACT,MAAM,EAAO;GACf,GACM,IAAQ,OAAO,EAAO,qBAAsB,aAC9C,EAAO,kBAAkB,CAAI,IAC7B,EAAO;GACX,OAAO;IACL,GAAG;IACH,GAAG;GACL;EACF;EAEA,SAAS,EAAc,GAAgB,GAAgC;GACrE,AAAI,EAAO,cACT,EAAc,QAAQ;IAAE;IAAQ;GAAK,IAErC,EAAO,SAAS,CAAI;EAExB;EAEA,SAAS,IAAgB;GACvB,AAEE,EAAc,WADd,EAAc,MAAM,OAAO,SAAS,EAAc,MAAM,IAAI,GACtC;EAE1B;EAEA,SAAS,EAAc,GAAmD;GACxE,OAAQ,EAAsB,YAAY,MAAQ,MAAM,QAAS,EAAsB,KAAK;EAC9F;EAEA,SAAS,EACP,GACA,GACoB;GACpB,OAAO,EAAM,MAAM,KAAK,MAAmB;IACzC,IAAM,IAAa,EAAO,UACpB,IAAW,EAAO;IACxB,OAAO;KACL,MAAM,EAAO;KACb,OAAO,EAAO,SAAS;KACvB,MAAM,EAAO;KACb,MAAM,EAAO,QAAQ,UAAU;KAC/B,OAAO,EAAO;KACd,gBAAgB,EAAc,GAAQ,CAAI;KAC1C,UAAU,UAAmB,EAAW,CAAI,IAAI,KAAA;KAChD,QAAQ,UAAiB,EAAS,CAAI,IAAI,KAAA;IAC5C;GACF,CAAC;EACH;6CAIE,EAyBW,GAAA,MAAA,EAzBsB,EAAA,UAAf,GAAQ,wBAAsB,EAAE,GAAA,CAC9B,EAAO,UAAU,EAAO,OAAO,EAAA,IAAI,IAqB5B,EAAA,IAAA,EAAA,KArB4B,EAAA,GAArD,EAuBW,GAAA,EAAA,KAAA,EAAA,GAAA,CArBD,EAAc,CAAM,KAAA,EAAA,GAD5B,EAOE,GAPF,EAOE;;GALC,MAAM,EAAO;GACb,OAAO,EAAO;GACd,OAAO,EAA0B,GAAQ,EAAA,IAAI;GAC7C,OAAO,EAAO;sBACP,EAAO,MAAM,GAAA,MAAA,IAAA;GAAA;GAAA;GAAA;GAAA;EAAA,CAAA,MAAA,EAAA,GAGvB,EAYE,GAZF,EAYE;;GAVC,MAAM,EAAO;GACb,OAAO,EAAO;GACd,MAAM,EAAO;GACb,MAAM,EAAO,QAAK,UAAA;GAClB,WAAW,EAAO;GAClB,OAAO,EAAO;GACf,SAAA;GACC,gBAAgB,EAAc,GAAQ,EAAA,IAAI;GAC1C,UAAU,EAAO,WAAW,EAAO,SAAS,EAAA,IAAI,IAAA;sBACzC,EAAO,MAAM,GAAA,MAAA,IAAA;GAAA;GAAA;GAAA;GAAA;GAAA;GAAA;GAAA;GAAA;EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,YAMnB,EAAA,SAAA,EAAA,GADR,EAKE,GALF,EAKE,EAAA,KAAA,EAAA,GAHQ,EAAiB,EAAA,MAAc,QAAQ,EAAA,MAAc,IAAI,GAAA;GAChE,WAAS;GACT,UAAM,AAAA,EAAA,QAAA,MAAE,EAAA,QAAa"}
1
+ {"version":3,"file":"admins-components66.js","names":[],"sources":["../src/components/data-table/DataCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Column } from '@/types/data-list'\nimport { getColumnValue } from '@/utils/dataList'\nimport CopyToClipboard from '@/components/CopyToClipboard.vue'\nimport Loader from '@/components/Loader.vue'\nimport { computed, isVNode, type VNode } from 'vue'\nimport { shortUuid } from '@/utils/dataListConverters'\n\nconst props = withDefaults(\n defineProps<{\n item: Record<string, unknown>\n col: Column\n copy?: boolean\n }>(),\n {\n copy: true,\n },\n)\n\nconst columnValue = computed<string | VNode>(() => getColumnValue(props.item, props.col))\nconst isVnodeValue = computed(() => isVNode(columnValue.value))\n\nconst uuIdValue = computed(() => {\n return shortUuid()(columnValue.value as string)\n})\n\nconst datetimeParts = computed<{ date: string; time: string } | null>(() => {\n if (props.col.type !== 'datetime') return null\n const value = columnValue.value as string\n if (!value) return { date: '', time: '' }\n const spaceIdx = value.indexOf(' ')\n if (spaceIdx === -1) return { date: value, time: '' }\n return {\n date: value.slice(0, spaceIdx),\n time: value.slice(spaceIdx + 1),\n }\n})\n</script>\n<template>\n <span class=\"dc-cell\">\n <slot name=\"cell\" :item=\"item\" :col=\"col\" :value=\"columnValue\">\n <span v-if=\"col.loading?.()\" class=\"dc-loading\">\n <Loader :loading=\"true\" size=\"1rem\" />\n </span>\n\n <component :is=\"columnValue\" v-else-if=\"isVnodeValue\" />\n\n <span v-else-if=\"col.type === 'uuid'\" v-tooltip=\"columnValue\">\n <span v-html=\"uuIdValue\"></span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n <span v-else-if=\"col.type === 'datetime'\" class=\"dc-datetime\">\n <span class=\"dc-datetime__part\">{{ datetimeParts?.date }}</span\n ><span v-if=\"datetimeParts?.time\" class=\"dc-datetime__sep\"> </span\n ><span class=\"dc-datetime__part\">{{ datetimeParts?.time }}</span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n\n <span v-else\n ><span v-html=\"columnValue\"></span\n ><CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n </slot>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAM,IAAQ,GAWR,IAAc,QAA+B,EAAe,EAAM,MAAM,EAAM,GAAG,CAAC,GAClF,IAAe,QAAe,EAAQ,EAAY,KAAK,CAAC,GAExD,IAAY,QACT,EAAU,EAAE,EAAY,KAAe,CAC/C,GAEK,IAAgB,QAAsD;GAC1E,IAAI,EAAM,IAAI,SAAS,YAAY,OAAO;GAC1C,IAAM,IAAQ,EAAY;GAC1B,IAAI,CAAC,GAAO,OAAO;IAAE,MAAM;IAAI,MAAM;GAAG;GACxC,IAAM,IAAW,EAAM,QAAQ,GAAG;GAElC,OADI,MAAa,KAAW;IAAE,MAAM;IAAO,MAAM;GAAG,IAC7C;IACL,MAAM,EAAM,MAAM,GAAG,CAAQ;IAC7B,MAAM,EAAM,MAAM,IAAW,CAAC;GAChC;EACF,CAAC;;;eAGC,EAwBO,QAxBP,GAwBO,CAvBL,EAsBO,EAAA,QAAA,QAAA;IAtBY,MAAM,EAAA;IAAO,KAAK,EAAA;IAAM,OAAO,EAAA;YAsB3C,CArBO,EAAA,IAAI,UAAO,KAAA,EAAA,GAAvB,EAEO,QAFP,GAEO,CADL,EAAsC,GAAA;IAA7B,SAAS;IAAM,MAAK;WAGS,EAAA,SAAA,EAAA,GAAxC,EAAwD,EAAxC,EAAA,KAAW,GAAA,EAAA,KAAA,EAAA,CAAA,KAEV,EAAA,IAAI,SAAI,SAAA,GAAA,EAAA,GAAzB,EAGO,QAAA,GAAA,CAFL,EAAgC,QAAA,EAA1B,WAAQ,EAAA,MAAS,GAAA,MAAA,GAAA,CAAA,GACA,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;IAAtB,OAAO,EAAA;gDAFL,EAAA,KAAW,CAAA,CAAA,IAI3C,EAAA,IAAI,SAAI,cAAA,EAAA,GAAzB,EAKO,QALP,GAKO;IAJL,EACC,QADD,GACC,EADkC,EAAA,OAAe,IAAI,GAAA,CAAA;IACzC,EAAA,OAAe,QAAA,EAAA,GAA3B,EACA,QADA,CACA,KAAA,EAAA,IAAA,EAAA;IAAA,EAAgE,QAAhE,GAAgE,EAA7B,EAAA,OAAe,IAAI,GAAA,CAAA;IAChC,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;KAAtB,OAAO,EAAA;;eAGtD,EAGO,QAAA,GAAA,CAFJ,EACA,QAAA,EADM,WAAQ,EAAA,MAAW,GAAA,MAAA,GAAA,CAAA,GACF,EAAA,QAAQ,EAAA,SAAA,EAAA,GAA/B,EAAmE,GAAA;;IAAtB,OAAO,EAAA"}
@@ -1,5 +1,5 @@
1
1
  import e from "./admins-components66.js";
2
- //#region src/components/data-table/DataListActions.vue
2
+ //#region src/components/data-table/DataCell.vue
3
3
  var t = e;
4
4
  //#endregion
5
5
  export { t as default };
@@ -1 +1 @@
1
- {"version":3,"file":"admins-components67.js","names":[],"sources":["../src/components/data-table/DataListActions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport type { Action, ActionGroup } from '@/types/data-list'\nimport type { ConfirmModalProps } from '@/components/ConfirmModal.vue'\nimport Button from '@/components/Button.vue'\nimport DropdownMenu from '@/components/DropdownMenu.vue'\nimport ConfirmModal from '@/components/ConfirmModal.vue'\nimport type { DropdownMenuItem } from '@/components/DropdownMenu.vue'\n\ndefineProps<{\n actions: Array<Action | ActionGroup>\n item?: Record<string, unknown>\n}>()\n\nconst activeConfirm = ref<{\n action: Action\n item?: Record<string, unknown>\n} | null>(null)\n\nfunction getConfirmConfig(action: Action, item?: Record<string, unknown>): ConfirmModalProps {\n const defaultConfig = {\n title: action.label ?? 'Megerősítés',\n message: 'Biztosan végrehajta a műveletet?',\n type: action.type,\n }\n const extra = typeof action.withConfirmConfig === 'function'\n ? action.withConfirmConfig(item)\n : action.withConfirmConfig\n return {\n ...defaultConfig,\n ...extra,\n }\n}\n\nfunction handleOnClick(action: Action, item?: Record<string, unknown>) {\n if (action.withConfirm) {\n activeConfirm.value = { action, item }\n } else {\n action.callback(item)\n }\n}\n\nfunction handleConfirm() {\n if (activeConfirm.value) {\n activeConfirm.value.action.callback(activeConfirm.value.item)\n activeConfirm.value = null\n }\n}\n\nfunction isActionGroup(entry: Action | ActionGroup): entry is ActionGroup {\n return (entry as ActionGroup).isGroup === true && Array.isArray((entry as ActionGroup).items)\n}\n\nfunction buildActionGroupMenuItems(\n group: ActionGroup,\n item?: Record<string, unknown>,\n): DropdownMenuItem[] {\n return group.items.map((action: Action) => {\n const isDisabled = action.disabled\n const isHidden = action.hidden\n return {\n icon: action.icon,\n label: action.label ?? '',\n type: action.type,\n size: action.label ? 'small' : 'normal',\n class: action.class,\n callback: () => handleOnClick(action, item),\n disabled: isDisabled ? () => isDisabled(item) : undefined,\n hidden: isHidden ? () => isHidden(item) : undefined,\n }\n })\n}\n</script>\n\n<template>\n <template v-for=\"(action, ai) in actions\" :key=\"ai\">\n <template v-if=\"!(action.hidden && action.hidden(item))\">\n <DropdownMenu\n v-if=\"isActionGroup(action)\"\n :icon=\"action.icon\"\n :label=\"action.label\"\n :items=\"buildActionGroupMenuItems(action, item)\"\n :class=\"action.class\"\n v-bind=\"action.config\"\n />\n\n <Button\n v-else\n :icon=\"action.icon\"\n :label=\"action.label\"\n :type=\"action.type\"\n :size=\"action.label ? 'small' : 'normal'\"\n :ariaLabel=\"action.ariaLabel\"\n :class=\"action.class\"\n outline\n :callback=\"() => handleOnClick(action, item)\"\n :disabled=\"action.disabled ? action.disabled(item) : false\"\n v-bind=\"action.config\"\n />\n </template>\n </template>\n\n <ConfirmModal\n v-if=\"activeConfirm\"\n v-bind=\"getConfirmConfig(activeConfirm.action, activeConfirm.item)\"\n @confirm=\"handleConfirm\"\n @cancel=\"activeConfirm = null\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"admins-components67.js","names":[],"sources":["../src/components/data-table/DataCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Column } from '@/types/data-list'\nimport { getColumnValue } from '@/utils/dataList'\nimport CopyToClipboard from '@/components/CopyToClipboard.vue'\nimport Loader from '@/components/Loader.vue'\nimport { computed, isVNode, type VNode } from 'vue'\nimport { shortUuid } from '@/utils/dataListConverters'\n\nconst props = withDefaults(\n defineProps<{\n item: Record<string, unknown>\n col: Column\n copy?: boolean\n }>(),\n {\n copy: true,\n },\n)\n\nconst columnValue = computed<string | VNode>(() => getColumnValue(props.item, props.col))\nconst isVnodeValue = computed(() => isVNode(columnValue.value))\n\nconst uuIdValue = computed(() => {\n return shortUuid()(columnValue.value as string)\n})\n\nconst datetimeParts = computed<{ date: string; time: string } | null>(() => {\n if (props.col.type !== 'datetime') return null\n const value = columnValue.value as string\n if (!value) return { date: '', time: '' }\n const spaceIdx = value.indexOf(' ')\n if (spaceIdx === -1) return { date: value, time: '' }\n return {\n date: value.slice(0, spaceIdx),\n time: value.slice(spaceIdx + 1),\n }\n})\n</script>\n<template>\n <span class=\"dc-cell\">\n <slot name=\"cell\" :item=\"item\" :col=\"col\" :value=\"columnValue\">\n <span v-if=\"col.loading?.()\" class=\"dc-loading\">\n <Loader :loading=\"true\" size=\"1rem\" />\n </span>\n\n <component :is=\"columnValue\" v-else-if=\"isVnodeValue\" />\n\n <span v-else-if=\"col.type === 'uuid'\" v-tooltip=\"columnValue\">\n <span v-html=\"uuIdValue\"></span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n <span v-else-if=\"col.type === 'datetime'\" class=\"dc-datetime\">\n <span class=\"dc-datetime__part\">{{ datetimeParts?.date }}</span\n ><span v-if=\"datetimeParts?.time\" class=\"dc-datetime__sep\"> </span\n ><span class=\"dc-datetime__part\">{{ datetimeParts?.time }}</span>\n <CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n\n <span v-else\n ><span v-html=\"columnValue\"></span\n ><CopyToClipboard v-if=\"copy && columnValue\" :value=\"columnValue\" />\n </span>\n </slot>\n </span>\n</template>\n"],"mappings":""}