@medyat/vue-data-table 0.0.0-stage → 1.0.0
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/CHANGELOG.md +32 -0
- package/LICENSE +21 -0
- package/README.md +179 -2
- package/dist/DateEditor-BTIZMwf1.js +224 -0
- package/dist/DateEditor-BTIZMwf1.js.map +1 -0
- package/dist/FiltersSheet-o2HaQuhq.js +285 -0
- package/dist/FiltersSheet-o2HaQuhq.js.map +1 -0
- package/dist/Layer-Di-tPd8b.js +106 -0
- package/dist/Layer-Di-tPd8b.js.map +1 -0
- package/dist/PhoneMoreSheet-gfkH96RR.js +227 -0
- package/dist/PhoneMoreSheet-gfkH96RR.js.map +1 -0
- package/dist/TextEditor-DPqiiRau.js +331 -0
- package/dist/TextEditor-DPqiiRau.js.map +1 -0
- package/dist/index.d.ts +711 -0
- package/dist/index.js +3331 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-DhgcjEdi.js +813 -0
- package/dist/plugin-DhgcjEdi.js.map +1 -0
- package/dist/query-DQWMlX0m.js +2121 -0
- package/dist/query-DQWMlX0m.js.map +1 -0
- package/dist/shadcn-bridge-hsl.css +22 -0
- package/dist/shadcn-bridge.css +23 -0
- package/dist/sheet.d.ts +622 -0
- package/dist/sheet.js +3783 -0
- package/dist/sheet.js.map +1 -0
- package/dist/style.css +2 -0
- package/package.json +85 -3
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { o as e, s as t } from "./query-DQWMlX0m.js";
|
|
2
|
+
import { i as n } from "./plugin-DhgcjEdi.js";
|
|
3
|
+
import { t as r } from "./Layer-Di-tPd8b.js";
|
|
4
|
+
import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createTextVNode as d, createVNode as f, defineComponent as p, openBlock as m, ref as h, renderList as g, toDisplayString as _, unref as v, watch as y, withCtx as b } from "vue";
|
|
5
|
+
import { PhCaretLeft as x, PhCaretRight as S, PhCheck as C, PhDotsThree as w } from "@phosphor-icons/vue";
|
|
6
|
+
import { SwitchRoot as T, SwitchThumb as E } from "reka-ui";
|
|
7
|
+
//#region src/core/toolbar/PhoneMoreSheet.vue?vue&type=script&setup=true&lang.ts
|
|
8
|
+
var D = ["aria-label"], O = ["aria-label"], k = { class: "dt-bsheet-value" }, A = { class: "dt-bsheet-label" }, j = { class: "dt-bsheet-value" }, M = { class: "dt-bsheet-value" }, N = { class: "dt-bsheet-value" }, P = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "dt-bsheet-sep"
|
|
11
|
+
}, F = {
|
|
12
|
+
key: 5,
|
|
13
|
+
class: "dt-bsheet-row"
|
|
14
|
+
}, I = { class: "dt-bsheet-note" }, L = ["onClick"], R = /* @__PURE__ */ p({
|
|
15
|
+
__name: "PhoneMoreSheet",
|
|
16
|
+
props: {
|
|
17
|
+
density: {},
|
|
18
|
+
columns: {},
|
|
19
|
+
counts: {},
|
|
20
|
+
sort: {},
|
|
21
|
+
persistent: { type: Boolean },
|
|
22
|
+
refresh: { type: Boolean },
|
|
23
|
+
export: { type: Boolean },
|
|
24
|
+
import: { type: Boolean },
|
|
25
|
+
print: { type: Boolean },
|
|
26
|
+
autoRefresh: { type: Boolean },
|
|
27
|
+
autoRefreshOn: { type: Boolean }
|
|
28
|
+
},
|
|
29
|
+
emits: [
|
|
30
|
+
"update:density",
|
|
31
|
+
"column-visible",
|
|
32
|
+
"column-move",
|
|
33
|
+
"columns-all",
|
|
34
|
+
"columns-reset",
|
|
35
|
+
"sort-dir",
|
|
36
|
+
"sort-remove",
|
|
37
|
+
"sort-clear",
|
|
38
|
+
"reset",
|
|
39
|
+
"refresh",
|
|
40
|
+
"export",
|
|
41
|
+
"import",
|
|
42
|
+
"print",
|
|
43
|
+
"update:autoRefreshOn"
|
|
44
|
+
],
|
|
45
|
+
setup(p, { emit: R }) {
|
|
46
|
+
let z = p, B = R, { i18n: V } = n(), H = h(!1), U = h("main");
|
|
47
|
+
y(H, (e) => {
|
|
48
|
+
e || (U.value = "main");
|
|
49
|
+
});
|
|
50
|
+
let W = [
|
|
51
|
+
"comfortable",
|
|
52
|
+
"standard",
|
|
53
|
+
"compact"
|
|
54
|
+
], G = {
|
|
55
|
+
main: "toolbar.more",
|
|
56
|
+
density: "display.density",
|
|
57
|
+
columns: "display.columns",
|
|
58
|
+
sort: "display.sort",
|
|
59
|
+
export: "toolbar.export"
|
|
60
|
+
}, K = (e) => z.columns.find((t) => t.id === e)?.def.header ?? e, q = a(() => {
|
|
61
|
+
let e = z.sort[0];
|
|
62
|
+
if (!e) return V.t("common.empty");
|
|
63
|
+
let t = z.sort.length > 1 ? ` +${z.sort.length - 1}` : "";
|
|
64
|
+
return `${K(e.column)} ${e.dir === "asc" ? "↑" : "↓"}${t}`;
|
|
65
|
+
}), J = a(() => z.export || z.import || z.print || z.refresh || z.autoRefresh), Y = (e) => {
|
|
66
|
+
H.value = !1, e();
|
|
67
|
+
}, X = (e) => {
|
|
68
|
+
B("update:density", e), U.value = "main";
|
|
69
|
+
};
|
|
70
|
+
return (n, a) => (m(), o(r, {
|
|
71
|
+
open: H.value,
|
|
72
|
+
"onUpdate:open": a[19] ||= (e) => H.value = e,
|
|
73
|
+
sheet: "",
|
|
74
|
+
"content-class": "dt-more-sheet",
|
|
75
|
+
title: v(V).t(G[U.value]),
|
|
76
|
+
"hide-title": U.value === "main"
|
|
77
|
+
}, u({
|
|
78
|
+
trigger: b(() => [l("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
class: "dt-btn dt-btn-icon dt-more-trigger",
|
|
81
|
+
"aria-label": v(V).t("toolbar.more")
|
|
82
|
+
}, [f(v(w), {
|
|
83
|
+
size: 20,
|
|
84
|
+
weight: "bold",
|
|
85
|
+
"aria-hidden": "true"
|
|
86
|
+
})], 8, D)]),
|
|
87
|
+
default: b(() => [U.value === "main" ? (m(), c(i, { key: 0 }, [
|
|
88
|
+
l("div", A, _(v(V).t("toolbar.display")), 1),
|
|
89
|
+
l("button", {
|
|
90
|
+
type: "button",
|
|
91
|
+
class: "dt-bsheet-row",
|
|
92
|
+
onClick: a[1] ||= (e) => U.value = "density"
|
|
93
|
+
}, [
|
|
94
|
+
d(_(v(V).t("display.density")) + " ", 1),
|
|
95
|
+
l("span", j, _(v(V).t(`display.${p.density}`)), 1),
|
|
96
|
+
f(v(S), {
|
|
97
|
+
size: 16,
|
|
98
|
+
"aria-hidden": "true"
|
|
99
|
+
})
|
|
100
|
+
]),
|
|
101
|
+
l("button", {
|
|
102
|
+
type: "button",
|
|
103
|
+
class: "dt-bsheet-row",
|
|
104
|
+
onClick: a[2] ||= (e) => U.value = "columns"
|
|
105
|
+
}, [
|
|
106
|
+
d(_(v(V).t("display.columns")) + " ", 1),
|
|
107
|
+
l("span", M, _(v(V).t("columns.shownOf", p.counts)), 1),
|
|
108
|
+
f(v(S), {
|
|
109
|
+
size: 16,
|
|
110
|
+
"aria-hidden": "true"
|
|
111
|
+
})
|
|
112
|
+
]),
|
|
113
|
+
l("button", {
|
|
114
|
+
type: "button",
|
|
115
|
+
class: "dt-bsheet-row",
|
|
116
|
+
onClick: a[3] ||= (e) => U.value = "sort"
|
|
117
|
+
}, [
|
|
118
|
+
d(_(v(V).t("display.sort")) + " ", 1),
|
|
119
|
+
l("span", N, _(q.value), 1),
|
|
120
|
+
f(v(S), {
|
|
121
|
+
size: 16,
|
|
122
|
+
"aria-hidden": "true"
|
|
123
|
+
})
|
|
124
|
+
]),
|
|
125
|
+
J.value ? (m(), c("div", P)) : s("", !0),
|
|
126
|
+
n.$props.export ? (m(), c("button", {
|
|
127
|
+
key: 1,
|
|
128
|
+
type: "button",
|
|
129
|
+
class: "dt-bsheet-row",
|
|
130
|
+
onClick: a[4] ||= (e) => U.value = "export"
|
|
131
|
+
}, [d(_(v(V).t("toolbar.export")) + " ", 1), f(v(S), {
|
|
132
|
+
size: 16,
|
|
133
|
+
class: "dt-bsheet-end",
|
|
134
|
+
"aria-hidden": "true"
|
|
135
|
+
})])) : s("", !0),
|
|
136
|
+
n.$props.import ? (m(), c("button", {
|
|
137
|
+
key: 2,
|
|
138
|
+
type: "button",
|
|
139
|
+
class: "dt-bsheet-row",
|
|
140
|
+
onClick: a[5] ||= (e) => Y(() => B("import"))
|
|
141
|
+
}, _(v(V).t("toolbar.import")), 1)) : s("", !0),
|
|
142
|
+
p.print ? (m(), c("button", {
|
|
143
|
+
key: 3,
|
|
144
|
+
type: "button",
|
|
145
|
+
class: "dt-bsheet-row",
|
|
146
|
+
onClick: a[6] ||= (e) => Y(() => B("print"))
|
|
147
|
+
}, _(v(V).t("toolbar.print")), 1)) : s("", !0),
|
|
148
|
+
p.refresh ? (m(), c("button", {
|
|
149
|
+
key: 4,
|
|
150
|
+
type: "button",
|
|
151
|
+
class: "dt-bsheet-row",
|
|
152
|
+
onClick: a[7] ||= (e) => Y(() => B("refresh"))
|
|
153
|
+
}, _(v(V).t("toolbar.refresh")), 1)) : s("", !0),
|
|
154
|
+
p.autoRefresh ? (m(), c("label", F, [d(_(v(V).t("toolbar.autoRefresh")) + " ", 1), f(v(T), {
|
|
155
|
+
class: "dt-switch dt-bsheet-end",
|
|
156
|
+
"model-value": p.autoRefreshOn,
|
|
157
|
+
"onUpdate:modelValue": a[8] ||= (e) => B("update:autoRefreshOn", e)
|
|
158
|
+
}, {
|
|
159
|
+
default: b(() => [f(v(E), { class: "dt-switch-thumb" })]),
|
|
160
|
+
_: 1
|
|
161
|
+
}, 8, ["model-value"])])) : s("", !0),
|
|
162
|
+
l("div", I, [l("span", null, _(p.persistent ? v(V).t("display.savedForYou") : ""), 1), l("button", {
|
|
163
|
+
type: "button",
|
|
164
|
+
class: "dt-bsheet-action",
|
|
165
|
+
onClick: a[9] ||= (e) => B("reset")
|
|
166
|
+
}, _(v(V).t("common.reset")), 1)])
|
|
167
|
+
], 64)) : U.value === "density" ? (m(), c(i, { key: 1 }, g(W, (e) => l("button", {
|
|
168
|
+
key: e,
|
|
169
|
+
type: "button",
|
|
170
|
+
class: "dt-bsheet-row",
|
|
171
|
+
onClick: (t) => X(e)
|
|
172
|
+
}, [d(_(v(V).t(`display.${e}`)) + " ", 1), e === p.density ? (m(), o(v(C), {
|
|
173
|
+
key: 0,
|
|
174
|
+
size: 18,
|
|
175
|
+
class: "dt-bsheet-end dt-bsheet-check",
|
|
176
|
+
"aria-hidden": "true"
|
|
177
|
+
})) : s("", !0)], 8, L)), 64)) : U.value === "columns" ? (m(), o(t, {
|
|
178
|
+
key: 2,
|
|
179
|
+
columns: p.columns,
|
|
180
|
+
onColumnVisible: a[10] ||= (e, t) => B("column-visible", e, t),
|
|
181
|
+
onColumnMove: a[11] ||= (e, t) => B("column-move", e, t),
|
|
182
|
+
onColumnsAll: a[12] ||= (e) => B("columns-all", e),
|
|
183
|
+
onColumnsReset: a[13] ||= (e) => B("columns-reset")
|
|
184
|
+
}, null, 8, ["columns"])) : U.value === "sort" ? (m(), o(e, {
|
|
185
|
+
key: 3,
|
|
186
|
+
sort: p.sort,
|
|
187
|
+
"header-of": K,
|
|
188
|
+
onSortDir: a[14] ||= (e, t) => B("sort-dir", e, t),
|
|
189
|
+
onSortRemove: a[15] ||= (e) => B("sort-remove", e),
|
|
190
|
+
onSortClear: a[16] ||= (e) => B("sort-clear")
|
|
191
|
+
}, null, 8, ["sort"])) : (m(), c(i, { key: 4 }, [l("button", {
|
|
192
|
+
type: "button",
|
|
193
|
+
class: "dt-bsheet-row",
|
|
194
|
+
onClick: a[17] ||= (e) => Y(() => B("export", "csv"))
|
|
195
|
+
}, _(v(V).t("toolbar.csv")), 1), l("button", {
|
|
196
|
+
type: "button",
|
|
197
|
+
class: "dt-bsheet-row",
|
|
198
|
+
onClick: a[18] ||= (e) => Y(() => B("export", "xlsx"))
|
|
199
|
+
}, _(v(V).t("toolbar.xlsx")), 1)], 64))]),
|
|
200
|
+
_: 2
|
|
201
|
+
}, [U.value === "main" ? void 0 : {
|
|
202
|
+
name: "head-start",
|
|
203
|
+
fn: b(() => [l("button", {
|
|
204
|
+
type: "button",
|
|
205
|
+
class: "dt-bsheet-back",
|
|
206
|
+
"aria-label": v(V).t("common.back"),
|
|
207
|
+
onClick: a[0] ||= (e) => U.value = "main"
|
|
208
|
+
}, [f(v(x), {
|
|
209
|
+
size: 20,
|
|
210
|
+
"aria-hidden": "true"
|
|
211
|
+
})], 8, O)]),
|
|
212
|
+
key: "0"
|
|
213
|
+
}, U.value === "columns" ? {
|
|
214
|
+
name: "head-end",
|
|
215
|
+
fn: b(() => [l("span", k, _(v(V).t("columns.shownOf", p.counts)), 1)]),
|
|
216
|
+
key: "1"
|
|
217
|
+
} : void 0]), 1032, [
|
|
218
|
+
"open",
|
|
219
|
+
"title",
|
|
220
|
+
"hide-title"
|
|
221
|
+
]));
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
//#endregion
|
|
225
|
+
export { R as default };
|
|
226
|
+
|
|
227
|
+
//# sourceMappingURL=PhoneMoreSheet-gfkH96RR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhoneMoreSheet-gfkH96RR.js","names":["$props","_openBlock","_createBlock","Layer","_unref","_createSlots","_withCtx","_createElementVNode","_createVNode","_createElementBlock","_Fragment","_toDisplayString","_createTextVNode","_createCommentVNode","_renderList","ColumnsPanel","SortPanel","_sfc_main","SortPanel_default","ColumnsPanel_default","useDataTableContext","Layer_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","PhoneMoreSheet_default","defineComponent","__emit","props","__props","emit","open","ref","level","o","DENSITIES","TITLES","headerOf","c","id","sortSummary","computed","first","i18n","more","hasActions","close","fn","setDensity","d","openBlock","createBlock","_cache","$event","unref","createSlots","withCtx","createElementVNode","createVNode","PhDotsThree","createElementBlock","Fragment","toDisplayString","createTextVNode","PhCaretRight","createCommentVNode","_ctx","SwitchRoot","v","SwitchThumb","renderList","PhCheck","PhCaretLeft"],"sources":["../src/core/toolbar/PhoneMoreSheet.vue","../src/core/toolbar/PhoneMoreSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Telefon ⋯ alt sayfası (handoff 04 §6.4, T13-07): Display (Density › · Columns › · Sort ›) · Export matching rows › · Import ·\n// Print · Refresh · Auto-refresh · \"Saved for you only\" + Reset. Masaüstündeki Display popover'ı ve ⋯ menüsünün yerini alır.\nimport { PhCaretLeft, PhCaretRight, PhCheck, PhDotsThree } from '@phosphor-icons/vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { computed, ref, watch } from 'vue'\nimport type { Density } from '../../types/core'\nimport type { SortRule } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\nimport Layer from '../ui/Layer.vue'\nimport ColumnsPanel, { type PanelColumn } from './ColumnsPanel.vue'\nimport SortPanel from './SortPanel.vue'\n\nconst props = defineProps<{\n density: Density\n columns: PanelColumn[]\n counts: { shown: number; total: number }\n sort: SortRule[]\n persistent: boolean\n refresh: boolean\n export: boolean\n import: boolean\n print: boolean\n autoRefresh: boolean\n autoRefreshOn: boolean\n}>()\nconst emit = defineEmits<{\n 'update:density': [density: Density]\n 'column-visible': [id: string, visible: boolean]\n 'column-move': [id: string, delta: -1 | 1]\n 'columns-all': [visible: boolean]\n 'columns-reset': []\n 'sort-dir': [column: string, dir: 'asc' | 'desc']\n 'sort-remove': [column: string]\n 'sort-clear': []\n reset: []\n refresh: []\n export: [format: 'csv' | 'xlsx']\n import: []\n print: []\n 'update:autoRefreshOn': [on: boolean]\n}>()\nconst { i18n } = useDataTableContext()\nconst open = ref(false)\nconst level = ref<'main' | 'density' | 'columns' | 'sort' | 'export'>('main')\nwatch(open, (o) => {\n if (!o) level.value = 'main'\n})\nconst DENSITIES: Density[] = ['comfortable', 'standard', 'compact']\nconst TITLES = {\n main: 'toolbar.more',\n density: 'display.density',\n columns: 'display.columns',\n sort: 'display.sort',\n export: 'toolbar.export',\n} as const\nconst headerOf = (id: string) => props.columns.find((c) => c.id === id)?.def.header ?? id\nconst sortSummary = computed(() => {\n const first = props.sort[0]\n if (!first) return i18n.t('common.empty')\n const more = props.sort.length > 1 ? ` +${props.sort.length - 1}` : ''\n return `${headerOf(first.column)} ${first.dir === 'asc' ? '↑' : '↓'}${more}`\n})\nconst hasActions = computed(() => props.export || props.import || props.print || props.refresh || props.autoRefresh)\nconst close = (fn: () => void) => {\n open.value = false\n fn()\n}\nconst setDensity = (d: Density) => {\n emit('update:density', d)\n level.value = 'main'\n}\n</script>\n\n<template>\n <Layer\n v-model:open=\"open\"\n sheet\n content-class=\"dt-more-sheet\"\n :title=\"i18n.t(TITLES[level])\"\n :hide-title=\"level === 'main'\"\n >\n <template #trigger>\n <button type=\"button\" class=\"dt-btn dt-btn-icon dt-more-trigger\" :aria-label=\"i18n.t('toolbar.more')\">\n <PhDotsThree :size=\"20\" weight=\"bold\" aria-hidden=\"true\" />\n </button>\n </template>\n <template v-if=\"level !== 'main'\" #head-start>\n <button type=\"button\" class=\"dt-bsheet-back\" :aria-label=\"i18n.t('common.back')\" @click=\"level = 'main'\">\n <PhCaretLeft :size=\"20\" aria-hidden=\"true\" />\n </button>\n </template>\n <template v-if=\"level === 'columns'\" #head-end>\n <span class=\"dt-bsheet-value\">{{ i18n.t('columns.shownOf', counts) }}</span>\n </template>\n\n <template v-if=\"level === 'main'\">\n <div class=\"dt-bsheet-label\">{{ i18n.t('toolbar.display') }}</div>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'density'\">\n {{ i18n.t('display.density') }}\n <span class=\"dt-bsheet-value\">{{ i18n.t(`display.${density}`) }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'columns'\">\n {{ i18n.t('display.columns') }}\n <span class=\"dt-bsheet-value\">{{ i18n.t('columns.shownOf', counts) }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'sort'\">\n {{ i18n.t('display.sort') }}\n <span class=\"dt-bsheet-value\">{{ sortSummary }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <div v-if=\"hasActions\" class=\"dt-bsheet-sep\" />\n <button v-if=\"$props.export\" type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'export'\">\n {{ i18n.t('toolbar.export') }}\n <PhCaretRight :size=\"16\" class=\"dt-bsheet-end\" aria-hidden=\"true\" />\n </button>\n <button v-if=\"$props.import\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('import'))\">\n {{ i18n.t('toolbar.import') }}\n </button>\n <button v-if=\"print\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('print'))\">\n {{ i18n.t('toolbar.print') }}\n </button>\n <button v-if=\"refresh\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('refresh'))\">\n {{ i18n.t('toolbar.refresh') }}\n </button>\n <label v-if=\"autoRefresh\" class=\"dt-bsheet-row\">\n {{ i18n.t('toolbar.autoRefresh') }}\n <SwitchRoot\n class=\"dt-switch dt-bsheet-end\"\n :model-value=\"autoRefreshOn\"\n @update:model-value=\"(v) => emit('update:autoRefreshOn', v)\"\n >\n <SwitchThumb class=\"dt-switch-thumb\" />\n </SwitchRoot>\n </label>\n <div class=\"dt-bsheet-note\">\n <span>{{ persistent ? i18n.t('display.savedForYou') : '' }}</span>\n <button type=\"button\" class=\"dt-bsheet-action\" @click=\"emit('reset')\">{{ i18n.t('common.reset') }}</button>\n </div>\n </template>\n\n <template v-else-if=\"level === 'density'\">\n <button v-for=\"d in DENSITIES\" :key=\"d\" type=\"button\" class=\"dt-bsheet-row\" @click=\"setDensity(d)\">\n {{ i18n.t(`display.${d}`) }}\n <PhCheck v-if=\"d === density\" :size=\"18\" class=\"dt-bsheet-end dt-bsheet-check\" aria-hidden=\"true\" />\n </button>\n </template>\n\n <ColumnsPanel\n v-else-if=\"level === 'columns'\"\n :columns=\"columns\"\n @column-visible=\"(id, v) => emit('column-visible', id, v)\"\n @column-move=\"(id, d) => emit('column-move', id, d)\"\n @columns-all=\"(v) => emit('columns-all', v)\"\n @columns-reset=\"emit('columns-reset')\"\n />\n <SortPanel\n v-else-if=\"level === 'sort'\"\n :sort=\"sort\"\n :header-of=\"headerOf\"\n @sort-dir=\"(c, d) => emit('sort-dir', c, d)\"\n @sort-remove=\"(c) => emit('sort-remove', c)\"\n @sort-clear=\"emit('sort-clear')\"\n />\n\n <template v-else>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('export', 'csv'))\">\n {{ i18n.t('toolbar.csv') }}\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('export', 'xlsx'))\">\n {{ i18n.t('toolbar.xlsx') }}\n </button>\n </template>\n </Layer>\n</template>\n","<script setup lang=\"ts\">\n// Telefon ⋯ alt sayfası (handoff 04 §6.4, T13-07): Display (Density › · Columns › · Sort ›) · Export matching rows › · Import ·\n// Print · Refresh · Auto-refresh · \"Saved for you only\" + Reset. Masaüstündeki Display popover'ı ve ⋯ menüsünün yerini alır.\nimport { PhCaretLeft, PhCaretRight, PhCheck, PhDotsThree } from '@phosphor-icons/vue'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { computed, ref, watch } from 'vue'\nimport type { Density } from '../../types/core'\nimport type { SortRule } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\nimport Layer from '../ui/Layer.vue'\nimport ColumnsPanel, { type PanelColumn } from './ColumnsPanel.vue'\nimport SortPanel from './SortPanel.vue'\n\nconst props = defineProps<{\n density: Density\n columns: PanelColumn[]\n counts: { shown: number; total: number }\n sort: SortRule[]\n persistent: boolean\n refresh: boolean\n export: boolean\n import: boolean\n print: boolean\n autoRefresh: boolean\n autoRefreshOn: boolean\n}>()\nconst emit = defineEmits<{\n 'update:density': [density: Density]\n 'column-visible': [id: string, visible: boolean]\n 'column-move': [id: string, delta: -1 | 1]\n 'columns-all': [visible: boolean]\n 'columns-reset': []\n 'sort-dir': [column: string, dir: 'asc' | 'desc']\n 'sort-remove': [column: string]\n 'sort-clear': []\n reset: []\n refresh: []\n export: [format: 'csv' | 'xlsx']\n import: []\n print: []\n 'update:autoRefreshOn': [on: boolean]\n}>()\nconst { i18n } = useDataTableContext()\nconst open = ref(false)\nconst level = ref<'main' | 'density' | 'columns' | 'sort' | 'export'>('main')\nwatch(open, (o) => {\n if (!o) level.value = 'main'\n})\nconst DENSITIES: Density[] = ['comfortable', 'standard', 'compact']\nconst TITLES = {\n main: 'toolbar.more',\n density: 'display.density',\n columns: 'display.columns',\n sort: 'display.sort',\n export: 'toolbar.export',\n} as const\nconst headerOf = (id: string) => props.columns.find((c) => c.id === id)?.def.header ?? id\nconst sortSummary = computed(() => {\n const first = props.sort[0]\n if (!first) return i18n.t('common.empty')\n const more = props.sort.length > 1 ? ` +${props.sort.length - 1}` : ''\n return `${headerOf(first.column)} ${first.dir === 'asc' ? '↑' : '↓'}${more}`\n})\nconst hasActions = computed(() => props.export || props.import || props.print || props.refresh || props.autoRefresh)\nconst close = (fn: () => void) => {\n open.value = false\n fn()\n}\nconst setDensity = (d: Density) => {\n emit('update:density', d)\n level.value = 'main'\n}\n</script>\n\n<template>\n <Layer\n v-model:open=\"open\"\n sheet\n content-class=\"dt-more-sheet\"\n :title=\"i18n.t(TITLES[level])\"\n :hide-title=\"level === 'main'\"\n >\n <template #trigger>\n <button type=\"button\" class=\"dt-btn dt-btn-icon dt-more-trigger\" :aria-label=\"i18n.t('toolbar.more')\">\n <PhDotsThree :size=\"20\" weight=\"bold\" aria-hidden=\"true\" />\n </button>\n </template>\n <template v-if=\"level !== 'main'\" #head-start>\n <button type=\"button\" class=\"dt-bsheet-back\" :aria-label=\"i18n.t('common.back')\" @click=\"level = 'main'\">\n <PhCaretLeft :size=\"20\" aria-hidden=\"true\" />\n </button>\n </template>\n <template v-if=\"level === 'columns'\" #head-end>\n <span class=\"dt-bsheet-value\">{{ i18n.t('columns.shownOf', counts) }}</span>\n </template>\n\n <template v-if=\"level === 'main'\">\n <div class=\"dt-bsheet-label\">{{ i18n.t('toolbar.display') }}</div>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'density'\">\n {{ i18n.t('display.density') }}\n <span class=\"dt-bsheet-value\">{{ i18n.t(`display.${density}`) }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'columns'\">\n {{ i18n.t('display.columns') }}\n <span class=\"dt-bsheet-value\">{{ i18n.t('columns.shownOf', counts) }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'sort'\">\n {{ i18n.t('display.sort') }}\n <span class=\"dt-bsheet-value\">{{ sortSummary }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n <div v-if=\"hasActions\" class=\"dt-bsheet-sep\" />\n <button v-if=\"$props.export\" type=\"button\" class=\"dt-bsheet-row\" @click=\"level = 'export'\">\n {{ i18n.t('toolbar.export') }}\n <PhCaretRight :size=\"16\" class=\"dt-bsheet-end\" aria-hidden=\"true\" />\n </button>\n <button v-if=\"$props.import\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('import'))\">\n {{ i18n.t('toolbar.import') }}\n </button>\n <button v-if=\"print\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('print'))\">\n {{ i18n.t('toolbar.print') }}\n </button>\n <button v-if=\"refresh\" type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('refresh'))\">\n {{ i18n.t('toolbar.refresh') }}\n </button>\n <label v-if=\"autoRefresh\" class=\"dt-bsheet-row\">\n {{ i18n.t('toolbar.autoRefresh') }}\n <SwitchRoot\n class=\"dt-switch dt-bsheet-end\"\n :model-value=\"autoRefreshOn\"\n @update:model-value=\"(v) => emit('update:autoRefreshOn', v)\"\n >\n <SwitchThumb class=\"dt-switch-thumb\" />\n </SwitchRoot>\n </label>\n <div class=\"dt-bsheet-note\">\n <span>{{ persistent ? i18n.t('display.savedForYou') : '' }}</span>\n <button type=\"button\" class=\"dt-bsheet-action\" @click=\"emit('reset')\">{{ i18n.t('common.reset') }}</button>\n </div>\n </template>\n\n <template v-else-if=\"level === 'density'\">\n <button v-for=\"d in DENSITIES\" :key=\"d\" type=\"button\" class=\"dt-bsheet-row\" @click=\"setDensity(d)\">\n {{ i18n.t(`display.${d}`) }}\n <PhCheck v-if=\"d === density\" :size=\"18\" class=\"dt-bsheet-end dt-bsheet-check\" aria-hidden=\"true\" />\n </button>\n </template>\n\n <ColumnsPanel\n v-else-if=\"level === 'columns'\"\n :columns=\"columns\"\n @column-visible=\"(id, v) => emit('column-visible', id, v)\"\n @column-move=\"(id, d) => emit('column-move', id, d)\"\n @columns-all=\"(v) => emit('columns-all', v)\"\n @columns-reset=\"emit('columns-reset')\"\n />\n <SortPanel\n v-else-if=\"level === 'sort'\"\n :sort=\"sort\"\n :header-of=\"headerOf\"\n @sort-dir=\"(c, d) => emit('sort-dir', c, d)\"\n @sort-remove=\"(c) => emit('sort-remove', c)\"\n @sort-clear=\"emit('sort-clear')\"\n />\n\n <template v-else>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('export', 'csv'))\">\n {{ i18n.t('toolbar.csv') }}\n </button>\n <button type=\"button\" class=\"dt-bsheet-row\" @click=\"close(() => emit('export', 'xlsx'))\">\n {{ i18n.t('toolbar.xlsx') }}\n </button>\n </template>\n </Layer>\n</template>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { B as e, R as t, W as n, z as r } from "./query-DQWMlX0m.js";
|
|
2
|
+
import { i } from "./plugin-DhgcjEdi.js";
|
|
3
|
+
import { Fragment as a, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, normalizeClass as m, normalizeStyle as h, onBeforeUnmount as g, onMounted as _, openBlock as v, ref as y, renderList as b, toDisplayString as x, unref as S, vModelText as C, watch as w, withCtx as T, withDirectives as E, withKeys as D, withModifiers as O } from "vue";
|
|
4
|
+
import { PhBracketsCurly as k, PhCalendarBlank as A, PhCheckSquare as j, PhClock as M, PhCreditCard as N, PhEnvelope as P, PhHash as F, PhLink as I, PhLinkSimple as L, PhListBullets as R, PhListChecks as z, PhMagnifyingGlass as B, PhPalette as V, PhPercent as H, PhPhone as U, PhRadioButton as W, PhStar as G, PhTextAlignLeft as K, PhTextT as q, PhUser as J } from "@phosphor-icons/vue";
|
|
5
|
+
import { ToggleGroupItem as Y, ToggleGroupRoot as X } from "reka-ui";
|
|
6
|
+
//#region src/core/filters/typeIcons.ts
|
|
7
|
+
var Z = {
|
|
8
|
+
int: F,
|
|
9
|
+
float: F,
|
|
10
|
+
percentage: H,
|
|
11
|
+
star: G,
|
|
12
|
+
currency: N,
|
|
13
|
+
string: q,
|
|
14
|
+
text: K,
|
|
15
|
+
uppercase: q,
|
|
16
|
+
lowercase: q,
|
|
17
|
+
phone: U,
|
|
18
|
+
color: V,
|
|
19
|
+
email: P,
|
|
20
|
+
url: I,
|
|
21
|
+
id: F,
|
|
22
|
+
boolean: j,
|
|
23
|
+
select: W,
|
|
24
|
+
multiselect: z,
|
|
25
|
+
ajax: L,
|
|
26
|
+
user: J,
|
|
27
|
+
date: A,
|
|
28
|
+
datetime: M,
|
|
29
|
+
object: k,
|
|
30
|
+
array: R
|
|
31
|
+
}, Q = { class: "dt-editor-number" }, $ = { class: "dt-editor-fields" }, ee = { class: "dt-editor-field" }, te = {
|
|
32
|
+
key: 0,
|
|
33
|
+
class: "dt-editor-label"
|
|
34
|
+
}, ne = ["onKeydown"], re = {
|
|
35
|
+
key: 0,
|
|
36
|
+
class: "dt-input-end dt-input-suffix"
|
|
37
|
+
}, ie = { class: "dt-editor-and" }, ae = { class: "dt-editor-field" }, oe = { class: "dt-editor-label" }, se = ["onKeydown"], ce = {
|
|
38
|
+
key: 0,
|
|
39
|
+
class: "dt-input-end dt-input-suffix"
|
|
40
|
+
}, le = /* @__PURE__ */ p({
|
|
41
|
+
__name: "NumberEditor",
|
|
42
|
+
props: {
|
|
43
|
+
column: {},
|
|
44
|
+
op: {},
|
|
45
|
+
modelValue: {},
|
|
46
|
+
currency: {},
|
|
47
|
+
currencies: {}
|
|
48
|
+
},
|
|
49
|
+
emits: [
|
|
50
|
+
"update:modelValue",
|
|
51
|
+
"update:currency",
|
|
52
|
+
"done"
|
|
53
|
+
],
|
|
54
|
+
setup(e, { emit: n }) {
|
|
55
|
+
let r = e, f = n, { i18n: p, locale: h } = i(), k = o(() => r.op === "between"), A = new Intl.NumberFormat(h, { maximumFractionDigits: 6 }), j = (e) => typeof e == "number" && Number.isFinite(e) ? A.format(e) : "", M = () => {
|
|
56
|
+
let e = r.modelValue;
|
|
57
|
+
return k.value ? [j(Array.isArray(e) ? e[0] : void 0), j(Array.isArray(e) ? e[1] : void 0)] : [j(e), ""];
|
|
58
|
+
}, [N, P] = M(), F = y(N ?? ""), I = y(P ?? "");
|
|
59
|
+
w(() => [r.modelValue, r.op], () => {
|
|
60
|
+
let [e, n] = M();
|
|
61
|
+
t(h, F.value) !== t(h, e ?? "") && (F.value = e ?? ""), t(h, I.value) !== t(h, n ?? "") && (I.value = n ?? "");
|
|
62
|
+
});
|
|
63
|
+
let L = y(null);
|
|
64
|
+
_(() => L.value?.focus());
|
|
65
|
+
let R = () => {
|
|
66
|
+
let e = t(h, F.value);
|
|
67
|
+
if (k.value) {
|
|
68
|
+
let n = t(h, I.value);
|
|
69
|
+
f("update:modelValue", e === null && n === null ? void 0 : [e, n]);
|
|
70
|
+
} else f("update:modelValue", e ?? void 0);
|
|
71
|
+
}, z, B = () => {
|
|
72
|
+
clearTimeout(z), z = setTimeout(R, 250);
|
|
73
|
+
}, V = () => {
|
|
74
|
+
clearTimeout(z), R(), f("done");
|
|
75
|
+
};
|
|
76
|
+
g(() => clearTimeout(z));
|
|
77
|
+
let H = r.column.type === "percentage" ? "%" : "";
|
|
78
|
+
return (t, n) => (v(), l("div", Q, [e.currencies.length > 1 ? (v(), s(S(X), {
|
|
79
|
+
key: 0,
|
|
80
|
+
class: "dt-seg dt-seg-xs",
|
|
81
|
+
type: "single",
|
|
82
|
+
"model-value": e.currency,
|
|
83
|
+
"onUpdate:modelValue": n[0] ||= (e) => e && f("update:currency", String(e))
|
|
84
|
+
}, {
|
|
85
|
+
default: T(() => [(v(!0), l(a, null, b(e.currencies, (e) => (v(), s(S(Y), {
|
|
86
|
+
key: e,
|
|
87
|
+
class: "dt-seg-item",
|
|
88
|
+
value: e
|
|
89
|
+
}, {
|
|
90
|
+
default: T(() => [d(x(e), 1)]),
|
|
91
|
+
_: 2
|
|
92
|
+
}, 1032, ["value"]))), 128))]),
|
|
93
|
+
_: 1
|
|
94
|
+
}, 8, ["model-value"])) : c("", !0), u("div", $, [u("label", ee, [k.value ? (v(), l("span", te, x(S(p).t("number.min")), 1)) : c("", !0), u("span", { class: m(["dt-input", { "has-suffix": S(H) }]) }, [E(u("input", {
|
|
95
|
+
ref_key: "first",
|
|
96
|
+
ref: L,
|
|
97
|
+
"onUpdate:modelValue": n[1] ||= (e) => F.value = e,
|
|
98
|
+
type: "text",
|
|
99
|
+
inputmode: "decimal",
|
|
100
|
+
autocomplete: "off",
|
|
101
|
+
onInput: B,
|
|
102
|
+
onKeydown: D(O(V, ["prevent"]), ["enter"])
|
|
103
|
+
}, null, 40, ne), [[C, F.value]]), S(H) ? (v(), l("span", re, x(S(H)), 1)) : c("", !0)], 2)]), k.value ? (v(), l(a, { key: 0 }, [u("span", ie, x(S(p).t("number.and")), 1), u("label", ae, [u("span", oe, x(S(p).t("number.max")), 1), u("span", { class: m(["dt-input", { "has-suffix": S(H) }]) }, [E(u("input", {
|
|
104
|
+
"onUpdate:modelValue": n[2] ||= (e) => I.value = e,
|
|
105
|
+
type: "text",
|
|
106
|
+
inputmode: "decimal",
|
|
107
|
+
autocomplete: "off",
|
|
108
|
+
onInput: B,
|
|
109
|
+
onKeydown: D(O(V, ["prevent"]), ["enter"])
|
|
110
|
+
}, null, 40, se), [[C, I.value]]), S(H) ? (v(), l("span", ce, x(S(H)), 1)) : c("", !0)], 2)])], 64)) : c("", !0)])]));
|
|
111
|
+
}
|
|
112
|
+
}), ue = { class: "dt-options" }, de = {
|
|
113
|
+
key: 0,
|
|
114
|
+
class: "dt-input has-icon dt-options-search"
|
|
115
|
+
}, fe = { class: "dt-input-icon" }, pe = ["placeholder", "aria-label"], me = {
|
|
116
|
+
class: "dt-options-list",
|
|
117
|
+
role: "group"
|
|
118
|
+
}, he = ["checked"], ge = { class: "dt-option-body" }, _e = {
|
|
119
|
+
class: "dt-avatar dt-tone-blue",
|
|
120
|
+
"aria-hidden": "true"
|
|
121
|
+
}, ve = ["checked"], ye = { class: "dt-option-body" }, be = ["checked", "onChange"], xe = { class: "dt-option-body" }, Se = { class: "dt-mono" }, Ce = ["onClick"], we = {
|
|
122
|
+
key: 1,
|
|
123
|
+
class: "dt-options-empty"
|
|
124
|
+
}, Te = {
|
|
125
|
+
key: 2,
|
|
126
|
+
class: "dt-options-empty"
|
|
127
|
+
}, Ee = {
|
|
128
|
+
key: 3,
|
|
129
|
+
class: "dt-options-empty"
|
|
130
|
+
}, De = /* @__PURE__ */ p({
|
|
131
|
+
__name: "OptionsEditor",
|
|
132
|
+
props: {
|
|
133
|
+
column: {},
|
|
134
|
+
op: {},
|
|
135
|
+
modelValue: {},
|
|
136
|
+
rows: {},
|
|
137
|
+
labels: {}
|
|
138
|
+
},
|
|
139
|
+
emits: ["update:modelValue", "unassigned"],
|
|
140
|
+
setup(t, { emit: p }) {
|
|
141
|
+
let _ = t, T = p, { i18n: D } = i(), k = o(() => _.column), A = o(() => k.value.type === "ajax" || k.value.type === "user" ? k.value.remote : void 0), j = o(() => k.value.type === "user"), M = y(""), N = () => {
|
|
142
|
+
let e = /* @__PURE__ */ new Set();
|
|
143
|
+
for (let t of _.rows) {
|
|
144
|
+
let r = k.value.accessor ? k.value.accessor(t) : n(t, k.value.id);
|
|
145
|
+
for (let t of Array.isArray(r) ? r : [r]) t != null && t !== "" && e.add(t);
|
|
146
|
+
}
|
|
147
|
+
return [...e].sort((e, t) => String(e).localeCompare(String(t))).map((e) => ({
|
|
148
|
+
value: e,
|
|
149
|
+
label: String(e)
|
|
150
|
+
}));
|
|
151
|
+
}, P = o(() => {
|
|
152
|
+
let e = k.value;
|
|
153
|
+
return e.type === "select" || e.type === "multiselect" ? e.options : e.type === "user" && e.options ? [...e.options].sort((e, t) => e.label.localeCompare(t.label)) : e.type === "color" && e.palette ? e.palette.map((e) => ({
|
|
154
|
+
value: e,
|
|
155
|
+
label: e
|
|
156
|
+
})) : e.type === "color" ? N() : [];
|
|
157
|
+
}), F = y([]), I = y(!1), L = y(!1), R = 1, z = null, V, H = async (e) => {
|
|
158
|
+
let t = A.value;
|
|
159
|
+
if (t) {
|
|
160
|
+
z?.abort(), z = new AbortController(), L.value = !0;
|
|
161
|
+
try {
|
|
162
|
+
let n = await t.search(M.value, R, { signal: z.signal });
|
|
163
|
+
F.value = e ? [...F.value, ...n.items] : n.items, I.value = n.hasMore, _.labels.seed(k.value.id, n.items);
|
|
164
|
+
} catch {} finally {
|
|
165
|
+
L.value = !1;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
A.value && H(!1), w(M, () => {
|
|
170
|
+
A.value && (clearTimeout(V), V = setTimeout(() => {
|
|
171
|
+
R = 1, H(!1);
|
|
172
|
+
}, 250));
|
|
173
|
+
});
|
|
174
|
+
let U = () => {
|
|
175
|
+
R += 1, H(!0);
|
|
176
|
+
};
|
|
177
|
+
g(() => {
|
|
178
|
+
clearTimeout(V), z?.abort();
|
|
179
|
+
});
|
|
180
|
+
let W = o(() => {
|
|
181
|
+
if (A.value) return F.value;
|
|
182
|
+
let e = M.value.trim().toLocaleLowerCase();
|
|
183
|
+
return e ? P.value.filter((t) => t.label.toLocaleLowerCase().includes(e)) : P.value;
|
|
184
|
+
}), G = o(() => !!A.value || P.value.length > 7), K = o(() => k.value.filterNoun ? D.t("option.searchNoun", { noun: k.value.filterNoun }) : D.t("option.search")), q = o(() => new Set(_.modelValue.map(String))), J = (e) => q.value.has(String(e)), Y = (e) => {
|
|
185
|
+
let t = J(e) ? _.modelValue.filter((t) => String(t) !== String(e)) : [..._.modelValue, e];
|
|
186
|
+
T("update:modelValue", t);
|
|
187
|
+
}, X = (e) => T("update:modelValue", [e]), Z = o(() => _.op === "is_empty"), Q = o(() => [
|
|
188
|
+
"select",
|
|
189
|
+
"multiselect",
|
|
190
|
+
"user"
|
|
191
|
+
].includes(k.value.type)), $ = (t) => k.value.type === "user" ? [
|
|
192
|
+
r(t.o),
|
|
193
|
+
" ",
|
|
194
|
+
t.o.label
|
|
195
|
+
] : e(t.o.tone ?? "gray", t.o.label);
|
|
196
|
+
return (e, t) => (v(), l("div", ue, [G.value ? (v(), l("label", de, [u("span", fe, [f(S(B), {
|
|
197
|
+
size: 14,
|
|
198
|
+
"aria-hidden": "true"
|
|
199
|
+
})]), E(u("input", {
|
|
200
|
+
"onUpdate:modelValue": t[0] ||= (e) => M.value = e,
|
|
201
|
+
type: "search",
|
|
202
|
+
placeholder: K.value,
|
|
203
|
+
"aria-label": K.value,
|
|
204
|
+
autofocus: ""
|
|
205
|
+
}, null, 8, pe), [[C, M.value]])])) : c("", !0), u("div", me, [
|
|
206
|
+
j.value && !M.value ? (v(), l(a, { key: 0 }, [
|
|
207
|
+
u("label", { class: m(["dt-option", { "is-on": J("@me") }]) }, [u("input", {
|
|
208
|
+
type: "checkbox",
|
|
209
|
+
class: "dt-checkbox",
|
|
210
|
+
checked: J("@me"),
|
|
211
|
+
onChange: t[1] ||= (e) => Y("@me")
|
|
212
|
+
}, null, 40, he), u("span", ge, [u("span", _e, x(S(D).t("common.me").slice(0, 2)), 1), d(" " + x(S(D).t("common.me")), 1)])], 2),
|
|
213
|
+
u("label", { class: m(["dt-option is-unassigned", { "is-on": Z.value }]) }, [u("input", {
|
|
214
|
+
type: "checkbox",
|
|
215
|
+
class: "dt-checkbox",
|
|
216
|
+
checked: Z.value,
|
|
217
|
+
onChange: t[2] ||= (e) => T("unassigned")
|
|
218
|
+
}, null, 40, ve), u("span", ye, [t[3] ||= u("span", {
|
|
219
|
+
class: "dt-avatar is-empty",
|
|
220
|
+
"aria-hidden": "true"
|
|
221
|
+
}, null, -1), d(" " + x(S(D).t("common.unassigned")), 1)])], 2),
|
|
222
|
+
t[4] ||= u("div", { class: "dt-pop-sep" }, null, -1)
|
|
223
|
+
], 64)) : c("", !0),
|
|
224
|
+
(v(!0), l(a, null, b(W.value, (e) => (v(), l("label", {
|
|
225
|
+
key: String(e.value),
|
|
226
|
+
class: m(["dt-option", { "is-on": J(e.value) }])
|
|
227
|
+
}, [
|
|
228
|
+
u("input", {
|
|
229
|
+
type: "checkbox",
|
|
230
|
+
class: "dt-checkbox",
|
|
231
|
+
checked: J(e.value),
|
|
232
|
+
onChange: (t) => Y(e.value)
|
|
233
|
+
}, null, 40, be),
|
|
234
|
+
u("span", xe, [Q.value ? (v(), s($, {
|
|
235
|
+
key: 0,
|
|
236
|
+
o: e
|
|
237
|
+
}, null, 8, ["o"])) : k.value.type === "color" ? (v(), l(a, { key: 1 }, [u("span", {
|
|
238
|
+
class: "dt-swatch",
|
|
239
|
+
style: h({ background: String(e.value) }),
|
|
240
|
+
"aria-hidden": "true"
|
|
241
|
+
}, null, 4), u("span", Se, x(e.label), 1)], 64)) : (v(), l(a, { key: 2 }, [d(x(e.label), 1)], 64))]),
|
|
242
|
+
u("button", {
|
|
243
|
+
type: "button",
|
|
244
|
+
class: "dt-btn dt-btn-xs dt-option-only",
|
|
245
|
+
tabindex: "-1",
|
|
246
|
+
onClick: O((t) => X(e.value), ["prevent"])
|
|
247
|
+
}, x(S(D).t("option.only")), 9, Ce)
|
|
248
|
+
], 2))), 128)),
|
|
249
|
+
A.value && !L.value && W.value.length === 0 ? (v(), l("div", we, x(S(D).t("remote.noResults")), 1)) : !A.value && W.value.length === 0 ? (v(), l("div", Te, x(S(D).t("picker.noMatch")), 1)) : c("", !0),
|
|
250
|
+
L.value ? (v(), l("div", Ee, x(S(D).t("common.loading")), 1)) : c("", !0),
|
|
251
|
+
A.value && I.value && !L.value ? (v(), l("button", {
|
|
252
|
+
key: 4,
|
|
253
|
+
type: "button",
|
|
254
|
+
class: "dt-btn dt-btn-ghost dt-btn-sm dt-options-more",
|
|
255
|
+
onClick: U
|
|
256
|
+
}, x(S(D).t("remote.loadMore")), 1)) : c("", !0)
|
|
257
|
+
])]));
|
|
258
|
+
}
|
|
259
|
+
}), Oe = {
|
|
260
|
+
class: "dt-editor-stars",
|
|
261
|
+
role: "radiogroup"
|
|
262
|
+
}, ke = [
|
|
263
|
+
"aria-checked",
|
|
264
|
+
"aria-label",
|
|
265
|
+
"onClick"
|
|
266
|
+
], Ae = /* @__PURE__ */ p({
|
|
267
|
+
__name: "StarEditor",
|
|
268
|
+
props: {
|
|
269
|
+
column: {},
|
|
270
|
+
modelValue: {}
|
|
271
|
+
},
|
|
272
|
+
emits: ["update:modelValue", "done"],
|
|
273
|
+
setup(e, { emit: t }) {
|
|
274
|
+
let n = e, r = t, i = n.column.max ?? 5, o = (e) => {
|
|
275
|
+
r("update:modelValue", e), r("done");
|
|
276
|
+
};
|
|
277
|
+
return (t, n) => (v(), l("div", Oe, [(v(!0), l(a, null, b(S(i), (t) => (v(), l("button", {
|
|
278
|
+
key: t,
|
|
279
|
+
type: "button",
|
|
280
|
+
class: m(["dt-star-btn", { "is-on": typeof e.modelValue == "number" && t <= e.modelValue }]),
|
|
281
|
+
role: "radio",
|
|
282
|
+
"aria-checked": e.modelValue === t,
|
|
283
|
+
"aria-label": String(t),
|
|
284
|
+
onClick: (e) => o(t)
|
|
285
|
+
}, [f(S(G), {
|
|
286
|
+
size: 18,
|
|
287
|
+
weight: typeof e.modelValue == "number" && t <= e.modelValue ? "fill" : "regular",
|
|
288
|
+
"aria-hidden": "true"
|
|
289
|
+
}, null, 8, ["weight"])], 10, ke))), 128))]));
|
|
290
|
+
}
|
|
291
|
+
}), je = { class: "dt-input dt-editor-text" }, Me = ["value", "onKeydown"], Ne = /* @__PURE__ */ p({
|
|
292
|
+
__name: "TextEditor",
|
|
293
|
+
props: {
|
|
294
|
+
column: {},
|
|
295
|
+
op: {},
|
|
296
|
+
modelValue: {}
|
|
297
|
+
},
|
|
298
|
+
emits: ["update:modelValue", "done"],
|
|
299
|
+
setup(e, { emit: t }) {
|
|
300
|
+
let n = e, r = t, i = (e) => Array.isArray(e) ? e.join(", ") : typeof e == "string" ? e : "", a = y(i(n.modelValue));
|
|
301
|
+
w(() => n.modelValue, (e) => {
|
|
302
|
+
i(e) !== a.value && (a.value = i(e));
|
|
303
|
+
});
|
|
304
|
+
let o = y(null);
|
|
305
|
+
_(() => o.value?.focus());
|
|
306
|
+
let s = () => n.op === "in" || n.op === "not_in", c = (e) => n.column.type === "uppercase" ? e.toLocaleUpperCase() : n.column.type === "lowercase" ? e.toLocaleLowerCase() : e, d = () => {
|
|
307
|
+
let e = c(a.value).trim();
|
|
308
|
+
if (s()) {
|
|
309
|
+
let t = e.split(/[\n,;]+/).map((e) => e.trim()).filter(Boolean);
|
|
310
|
+
r("update:modelValue", t);
|
|
311
|
+
} else r("update:modelValue", e);
|
|
312
|
+
}, f, p = (e) => {
|
|
313
|
+
a.value = c(e.target.value), clearTimeout(f), f = setTimeout(d, 250);
|
|
314
|
+
}, m = () => {
|
|
315
|
+
clearTimeout(f), d(), r("done");
|
|
316
|
+
};
|
|
317
|
+
return g(() => clearTimeout(f)), (e, t) => (v(), l("label", je, [u("input", {
|
|
318
|
+
ref_key: "input",
|
|
319
|
+
ref: o,
|
|
320
|
+
value: a.value,
|
|
321
|
+
type: "text",
|
|
322
|
+
autocomplete: "off",
|
|
323
|
+
onInput: p,
|
|
324
|
+
onKeydown: D(O(m, ["prevent"]), ["enter"])
|
|
325
|
+
}, null, 40, Me)]));
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
//#endregion
|
|
329
|
+
export { Z as a, le as i, Ae as n, De as r, Ne as t };
|
|
330
|
+
|
|
331
|
+
//# sourceMappingURL=TextEditor-DPqiiRau.js.map
|