@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.
@@ -0,0 +1,285 @@
1
+ import { A as e, D as t, G as n, N as ee, O as r, P as te, k as ne } from "./query-DQWMlX0m.js";
2
+ import { i as re } from "./plugin-DhgcjEdi.js";
3
+ import { a as ie, i as ae, n as oe, r as se, t as ce } from "./TextEditor-DPqiiRau.js";
4
+ import { t as le } from "./Layer-Di-tPd8b.js";
5
+ import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as ue, createTextVNode as u, createVNode as d, defineAsyncComponent as de, defineComponent as f, openBlock as p, ref as m, renderList as h, resolveDynamicComponent as fe, toDisplayString as g, unref as _, vModelText as pe, withCtx as v, withDirectives as me } from "vue";
6
+ import { PhArrowDown as he, PhArrowUp as ge, PhCaretDown as y, PhCaretLeft as _e, PhCaretRight as ve, PhMagnifyingGlass as ye, PhPlus as be, PhX as xe } from "@phosphor-icons/vue";
7
+ import { ToggleGroupItem as b, ToggleGroupRoot as Se } from "reka-ui";
8
+ //#region src/core/filters/FiltersSheet.vue?vue&type=script&setup=true&lang.ts
9
+ var Ce = ["aria-label"], we = ["disabled"], Te = ["onClick"], x = { class: "dt-bsheet-field" }, S = { class: "dt-bsheet-value is-strong" }, C = ["aria-label", "onClick"], w = { class: "dt-bsheet-label" }, T = ["onClick"], E = { class: "dt-bsheet-field" }, D = { class: "dt-bsheet-value" }, O = { class: "dt-bsheet-label" }, Ee = { class: "dt-bsheet-row is-sort" }, De = { class: "dt-select dt-bsheet-select" }, Oe = ["value", "aria-label"], ke = { value: "" }, Ae = ["value"], je = { class: "dt-input has-icon dt-bsheet-search" }, Me = { class: "dt-input-icon" }, Ne = ["placeholder", "aria-label"], Pe = ["onClick"], Fe = {
10
+ key: 0,
11
+ class: "dt-options-empty"
12
+ }, Ie = {
13
+ key: 2,
14
+ class: "dt-bsheet-editor"
15
+ }, Le = { class: "dt-select dt-bsheet-select" }, Re = ["value", "aria-label"], ze = ["value"], k = /* @__PURE__ */ f({
16
+ __name: "FiltersSheet",
17
+ props: {
18
+ columns: {},
19
+ chips: {},
20
+ sort: {},
21
+ rows: {},
22
+ labels: {},
23
+ summaryOf: { type: Function },
24
+ currenciesOf: { type: Function }
25
+ },
26
+ emits: ["apply"],
27
+ setup(f, { expose: k, emit: A }) {
28
+ let Be = de(() => import("./DateEditor-BTIZMwf1.js")), j = f, Ve = A, { i18n: M } = re(), N = m(!1), P = m([]), F = m(null), I = m("main"), L = m(null), R = m(""), z = (e) => j.columns.find((t) => t.id === e), B = (e) => z(e)?.header ?? e, V = a(() => j.columns.filter((e) => e.filterable ?? n[e.type].filterable)), He = a(() => j.columns.filter((e) => e.sortable ?? n[e.type].sortable)), H = (e) => P.value.some((t) => t.column === e), U = a(() => V.value.filter((e) => e.suggested && !H(e.id))), W = a(() => V.value.filter((e) => !H(e.id) && (!R.value || e.header.toLocaleLowerCase().includes(R.value.toLocaleLowerCase()))));
29
+ k({ show: (e) => {
30
+ P.value = j.chips.map((e) => ({ ...e })), F.value = j.sort[0] ?? null, I.value = "main", L.value = null, R.value = "", N.value = !0, e && G(e);
31
+ } });
32
+ let G = (e) => {
33
+ let t = z(e);
34
+ if (!t) return;
35
+ let n = P.value.find((t) => t.column === e);
36
+ t.type === "boolean" ? P.value = n ? P.value.map((e) => e === n ? {
37
+ ...e,
38
+ value: e.value !== !0
39
+ } : e) : [...P.value, {
40
+ column: e,
41
+ op: r(t),
42
+ value: !0
43
+ }] : (n || (P.value = [...P.value, {
44
+ column: e,
45
+ op: r(t)
46
+ }]), L.value = e, I.value = "editor");
47
+ }, K = a(() => P.value.find((e) => e.column === L.value) ?? null), q = a(() => L.value ? z(L.value) : void 0), J = a(() => K.value && q.value ? ne(K.value.op, q.value.type) : null), Ue = a(() => q.value ? te(q.value) : []), We = a(() => Array.isArray(K.value?.value) ? K.value.value.length : 1), Y = (e) => P.value = P.value.map((t) => t.column === L.value ? {
48
+ ...t,
49
+ ...e
50
+ } : t), X = (e) => {
51
+ let t = q.value;
52
+ Y({
53
+ value: e,
54
+ currency: t.type === "currency" ? K.value?.currency ?? j.currenciesOf(t)[0] : K.value?.currency
55
+ });
56
+ }, Z = (e) => P.value = P.value.map((n) => n.column === L.value ? t(n, e, q.value.type) : n), Ge = () => Z(K.value?.op === "is_empty" ? "in" : "is_empty"), Q = (e) => P.value = P.value.filter((t) => t.column !== e), $ = () => {
57
+ let t = K.value;
58
+ t && q.value && !e(t, q.value.type) && Q(t.column), L.value = null, I.value = "main";
59
+ }, Ke = (e) => F.value = e ? {
60
+ column: e,
61
+ dir: F.value?.dir ?? "asc"
62
+ } : null, qe = (e) => {
63
+ (e === "asc" || e === "desc") && F.value && (F.value = {
64
+ ...F.value,
65
+ dir: e
66
+ });
67
+ }, Je = () => {
68
+ Ve("apply", P.value.filter((t) => e(t, z(t.column).type)), F.value ? [F.value] : []), N.value = !1;
69
+ }, Ye = a(() => I.value === "main" ? M.t("mobile.filters") : I.value === "picker" ? M.t("filter.addFilter") : q.value?.header ?? "");
70
+ return (e, t) => (p(), o(le, {
71
+ open: N.value,
72
+ "onUpdate:open": t[7] ||= (e) => N.value = e,
73
+ sheet: "",
74
+ "content-class": "dt-filters-sheet",
75
+ title: Ye.value
76
+ }, ue({
77
+ "head-end": v(() => [I.value === "main" ? (p(), c("button", {
78
+ key: 0,
79
+ type: "button",
80
+ class: "dt-bsheet-action",
81
+ onClick: t[0] ||= (e) => P.value = []
82
+ }, g(_(M).t("filter.clearAll")), 1)) : I.value === "editor" ? (p(), c("button", {
83
+ key: 1,
84
+ type: "button",
85
+ class: "dt-bsheet-action",
86
+ disabled: K.value?.value === void 0,
87
+ onClick: t[1] ||= (e) => Y({ value: void 0 })
88
+ }, g(_(M).t("common.clear")), 9, we)) : s("", !0)]),
89
+ foot: v(() => [I.value === "editor" ? (p(), c("button", {
90
+ key: 0,
91
+ type: "button",
92
+ class: "dt-bsheet-primary",
93
+ onClick: $
94
+ }, g(_(M).t("common.done")), 1)) : (p(), c("button", {
95
+ key: 1,
96
+ type: "button",
97
+ class: "dt-bsheet-primary",
98
+ onClick: Je
99
+ }, g(_(M).t("mobile.showResults")), 1))]),
100
+ default: v(() => [I.value === "main" ? (p(), c(i, { key: 0 }, [
101
+ (p(!0), c(i, null, h(P.value, (e) => (p(), c("div", {
102
+ key: e.column,
103
+ class: "dt-bsheet-row is-split"
104
+ }, [l("button", {
105
+ type: "button",
106
+ class: "dt-bsheet-row-main",
107
+ onClick: (t) => G(e.column)
108
+ }, [l("span", x, g(B(e.column)), 1), l("span", S, g(f.summaryOf(e).text), 1)], 8, Te), l("button", {
109
+ type: "button",
110
+ class: "dt-bsheet-x",
111
+ "aria-label": _(M).t("filter.removeAria", { column: B(e.column) }),
112
+ onClick: (t) => Q(e.column)
113
+ }, [d(_(xe), {
114
+ size: 16,
115
+ "aria-hidden": "true"
116
+ })], 8, C)]))), 128)),
117
+ U.value.length ? (p(), c(i, { key: 0 }, [l("div", w, g(_(M).t("picker.suggested")), 1), (p(!0), c(i, null, h(U.value, (e) => (p(), c("button", {
118
+ key: e.id,
119
+ type: "button",
120
+ class: "dt-bsheet-row",
121
+ onClick: (t) => G(e.id)
122
+ }, [
123
+ l("span", E, g(e.header), 1),
124
+ l("span", D, g(_(M).t("common.any")), 1),
125
+ d(_(ve), {
126
+ size: 16,
127
+ "aria-hidden": "true"
128
+ })
129
+ ], 8, T))), 128))], 64)) : s("", !0),
130
+ l("button", {
131
+ type: "button",
132
+ class: "dt-bsheet-row is-accent",
133
+ onClick: t[2] ||= (e) => I.value = "picker"
134
+ }, [d(_(be), {
135
+ size: 18,
136
+ "aria-hidden": "true"
137
+ }), u(" " + g(_(M).t("filter.addFilter")), 1)]),
138
+ t[8] ||= l("div", { class: "dt-bsheet-sep" }, null, -1),
139
+ l("div", O, g(_(M).t("mobile.sort")), 1),
140
+ l("div", Ee, [l("label", De, [l("select", {
141
+ value: F.value?.column ?? "",
142
+ "aria-label": _(M).t("mobile.sort"),
143
+ onChange: t[3] ||= (e) => Ke(e.target.value)
144
+ }, [l("option", ke, g(_(M).t("common.empty")), 1), (p(!0), c(i, null, h(He.value, (e) => (p(), c("option", {
145
+ key: e.id,
146
+ value: e.id
147
+ }, g(e.header), 9, Ae))), 128))], 40, Oe), d(_(y), {
148
+ size: 14,
149
+ "aria-hidden": "true"
150
+ })]), d(_(Se), {
151
+ class: "dt-seg dt-bsheet-dir",
152
+ type: "single",
153
+ "model-value": F.value?.dir ?? "",
154
+ disabled: !F.value,
155
+ "onUpdate:modelValue": qe
156
+ }, {
157
+ default: v(() => [d(_(b), {
158
+ class: "dt-seg-item",
159
+ value: "asc",
160
+ "aria-label": _(M).t("header.sortAsc")
161
+ }, {
162
+ default: v(() => [d(_(ge), {
163
+ size: 16,
164
+ "aria-hidden": "true"
165
+ })]),
166
+ _: 1
167
+ }, 8, ["aria-label"]), d(_(b), {
168
+ class: "dt-seg-item",
169
+ value: "desc",
170
+ "aria-label": _(M).t("header.sortDesc")
171
+ }, {
172
+ default: v(() => [d(_(he), {
173
+ size: 16,
174
+ "aria-hidden": "true"
175
+ })]),
176
+ _: 1
177
+ }, 8, ["aria-label"])]),
178
+ _: 1
179
+ }, 8, ["model-value", "disabled"])])
180
+ ], 64)) : I.value === "picker" ? (p(), c(i, { key: 1 }, [
181
+ l("label", je, [l("span", Me, [d(_(ye), {
182
+ size: 16,
183
+ "aria-hidden": "true"
184
+ })]), me(l("input", {
185
+ "onUpdate:modelValue": t[4] ||= (e) => R.value = e,
186
+ type: "search",
187
+ placeholder: _(M).t("picker.search"),
188
+ "aria-label": _(M).t("picker.search")
189
+ }, null, 8, Ne), [[pe, R.value]])]),
190
+ (p(!0), c(i, null, h(W.value, (e) => (p(), c("button", {
191
+ key: e.id,
192
+ type: "button",
193
+ class: "dt-bsheet-row",
194
+ onClick: (t) => G(e.id)
195
+ }, [(p(), o(fe(_(ie)[e.type]), {
196
+ size: 16,
197
+ class: "dt-bsheet-icon",
198
+ "aria-hidden": "true"
199
+ })), u(" " + g(e.header), 1)], 8, Pe))), 128)),
200
+ W.value.length ? s("", !0) : (p(), c("div", Fe, g(_(M).t("picker.noMatch")), 1))
201
+ ], 64)) : K.value && q.value ? (p(), c("div", Ie, [l("label", Le, [l("select", {
202
+ value: K.value.op,
203
+ "aria-label": _(M).t("mobile.operator"),
204
+ onChange: t[5] ||= (e) => Z(e.target.value)
205
+ }, [(p(!0), c(i, null, h(Ue.value, (e) => (p(), c("option", {
206
+ key: e,
207
+ value: e
208
+ }, g(_(ee)(_(M), e, q.value.type, We.value)), 9, ze))), 128))], 40, Re), d(_(y), {
209
+ size: 14,
210
+ "aria-hidden": "true"
211
+ })]), J.value === "options" ? (p(), o(se, {
212
+ key: 0,
213
+ column: q.value,
214
+ op: K.value.op,
215
+ "model-value": Array.isArray(K.value.value) ? K.value.value : [],
216
+ rows: f.rows,
217
+ labels: f.labels,
218
+ "onUpdate:modelValue": X,
219
+ onUnassigned: Ge
220
+ }, null, 8, [
221
+ "column",
222
+ "op",
223
+ "model-value",
224
+ "rows",
225
+ "labels"
226
+ ])) : J.value === "text" ? (p(), o(ce, {
227
+ key: 1,
228
+ column: q.value,
229
+ op: K.value.op,
230
+ "model-value": K.value.value,
231
+ "onUpdate:modelValue": X,
232
+ onDone: $
233
+ }, null, 8, [
234
+ "column",
235
+ "op",
236
+ "model-value"
237
+ ])) : J.value === "number" ? (p(), o(ae, {
238
+ key: 2,
239
+ column: q.value,
240
+ op: K.value.op,
241
+ "model-value": K.value.value,
242
+ currency: K.value.currency,
243
+ currencies: f.currenciesOf(q.value),
244
+ "onUpdate:modelValue": X,
245
+ "onUpdate:currency": t[6] ||= (e) => Y({ currency: e }),
246
+ onDone: $
247
+ }, null, 8, [
248
+ "column",
249
+ "op",
250
+ "model-value",
251
+ "currency",
252
+ "currencies"
253
+ ])) : J.value === "star" ? (p(), o(oe, {
254
+ key: 3,
255
+ column: q.value,
256
+ "model-value": K.value.value,
257
+ "onUpdate:modelValue": X,
258
+ onDone: $
259
+ }, null, 8, ["column", "model-value"])) : J.value === "date" ? (p(), o(_(Be), {
260
+ key: 4,
261
+ op: K.value.op,
262
+ "model-value": K.value.value,
263
+ "onUpdate:modelValue": X,
264
+ onDone: $
265
+ }, null, 8, ["op", "model-value"])) : s("", !0)])) : s("", !0)]),
266
+ _: 2
267
+ }, [I.value === "main" ? void 0 : {
268
+ name: "head-start",
269
+ fn: v(() => [l("button", {
270
+ type: "button",
271
+ class: "dt-bsheet-back",
272
+ "aria-label": _(M).t("mobile.backToFilters"),
273
+ onClick: $
274
+ }, [d(_(_e), {
275
+ size: 20,
276
+ "aria-hidden": "true"
277
+ })], 8, Ce)]),
278
+ key: "0"
279
+ }]), 1032, ["open", "title"]));
280
+ }
281
+ });
282
+ //#endregion
283
+ export { k as default };
284
+
285
+ //# sourceMappingURL=FiltersSheet-o2HaQuhq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersSheet-o2HaQuhq.js","names":["_openBlock","_createBlock","Layer","_createSlots","_withCtx","_createElementBlock","_toDisplayString","_unref","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_createVNode","_createTextVNode","_withDirectives","_vModelText","_resolveDynamicComponent","OptionsEditor","TextEditor","NumberEditor","StarEditor","_sfc_main","isComplete","changeOperator","TYPE_SPECS","opLabel","defaultOperator","operatorsOf","editorOf","useDataTableContext","TYPE_ICONS","NumberEditor_default","StarEditor_default","OptionsEditor_default","TextEditor_default","Layer_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","FiltersSheet_default","defineComponent","__expose","__emit","DateEditor","defineAsyncComponent","props","__props","emit","open","ref","draft","draftSort","level","editingCol","q","defOf","c","id","headerOf","filterable","computed","sortable","drafted","suggested","pickable","column","edit","def","existing","editing","editingDef","editor","ops","valueCount","update","patch","setValue","setOp","op","unassigned","remove","back","setSortColumn","setSortDir","dir","apply","title","i18n","openBlock","createBlock","_cache","$event","createSlots","withCtx","createElementBlock","toDisplayString","unref","createCommentVNode","Fragment","renderList","createElementVNode","createVNode","PhX","PhCaretRight","PhPlus","createTextVNode","PhCaretDown","ToggleGroupRoot","ToggleGroupItem","PhArrowUp","PhArrowDown","PhMagnifyingGlass","withDirectives","vModelText","resolveDynamicComponent","PhCaretLeft"],"sources":["../src/core/filters/FiltersSheet.vue","../src/core/filters/FiltersSheet.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Telefon Filters alt sayfası (04 §9, handoff 04 §6.1–6.2, T13-04/05): uygulanmış filtreler · Suggested · Add filter · Sort ·\n// Show results. Değişiklikler taslakta birikir ve Show results'la tek seferde uygulanır (masaüstündeki anında uygulamadan\n// farklı). Değer editörü ve sütun seçici aynı sayfanın alt seviyeleridir (geri okuyla döner).\nimport {\n PhArrowDown,\n PhArrowUp,\n PhCaretDown,\n PhCaretLeft,\n PhCaretRight,\n PhMagnifyingGlass,\n PhPlus,\n PhX,\n} from '@phosphor-icons/vue'\nimport { ToggleGroupItem, ToggleGroupRoot } from 'reka-ui'\nimport { computed, defineAsyncComponent, ref } from 'vue'\nimport type { ColumnDef } from '../../types/columns'\nimport type { FilterOp, SortRule } from '../../types/query'\nimport type { RemoteLabels } from '../cells/remoteLabels'\nimport { TYPE_SPECS } from '../cells/specs'\nconst DateEditor = defineAsyncComponent(() => import('../editors/DateEditor.vue'))\nimport NumberEditor from '../editors/NumberEditor.vue'\nimport OptionsEditor from '../editors/OptionsEditor.vue'\nimport StarEditor from '../editors/StarEditor.vue'\nimport TextEditor from '../editors/TextEditor.vue'\nimport { useDataTableContext } from '../plugin'\nimport Layer from '../ui/Layer.vue'\nimport {\n changeOperator,\n defaultOperator,\n editorOf,\n isComplete,\n opLabel,\n operatorsOf,\n type Chip,\n type Summary,\n} from './model'\nimport { TYPE_ICONS } from './typeIcons'\n\nconst props = defineProps<{\n columns: ColumnDef[]\n chips: Chip[]\n sort: SortRule[]\n rows: object[]\n labels: RemoteLabels\n summaryOf: (chip: Chip) => Summary\n currenciesOf: (def: ColumnDef) => string[]\n}>()\nconst emit = defineEmits<{ apply: [chips: Chip[], sort: SortRule[]] }>()\nconst { i18n } = useDataTableContext()\n\nconst open = ref(false)\nconst draft = ref<Chip[]>([])\n// shortcut: telefonda tek sıralama kuralı; çoklu sıralama masaüstü Display › Sort'ta (ikincil kurallar Show results'ta düşer).\nconst draftSort = ref<SortRule | null>(null)\nconst level = ref<'main' | 'editor' | 'picker'>('main')\nconst editingCol = ref<string | null>(null)\nconst q = ref('')\n\nconst defOf = (id: string) => props.columns.find((c) => c.id === id)\nconst headerOf = (id: string) => defOf(id)?.header ?? id\nconst filterable = computed(() => props.columns.filter((c) => c.filterable ?? TYPE_SPECS[c.type].filterable))\nconst sortable = computed(() => props.columns.filter((c) => c.sortable ?? TYPE_SPECS[c.type].sortable))\nconst drafted = (id: string) => draft.value.some((c) => c.column === id)\nconst suggested = computed(() => filterable.value.filter((c) => c.suggested && !drafted(c.id as string)))\nconst pickable = computed(() =>\n filterable.value.filter(\n (c) => !drafted(c.id as string) && (!q.value || c.header.toLocaleLowerCase().includes(q.value.toLocaleLowerCase())),\n ),\n)\n\n/** Açılış: taslak = uygulanan çipler + ilk sıralama kuralı. `column` verilirse doğrudan o sütunun editörü (çip, header hunisi). */\nconst show = (column?: string) => {\n draft.value = props.chips.map((c) => ({ ...c }))\n draftSort.value = props.sort[0] ?? null\n level.value = 'main'\n editingCol.value = null\n q.value = ''\n open.value = true\n if (column) edit(column)\n}\ndefineExpose({ show })\n\n/** Var olan taslak çipi açar, yoksa varsayılan operatörle oluşturur. boolean'ın editörü yok: dokunuş Yes ↔ No. */\nconst edit = (column: string) => {\n const def = defOf(column)\n if (!def) return\n const existing = draft.value.find((c) => c.column === column)\n if (def.type === 'boolean') {\n draft.value = existing\n ? draft.value.map((c) => (c === existing ? { ...c, value: !(c.value === true) } : c))\n : [...draft.value, { column, op: defaultOperator(def), value: true }]\n return\n }\n if (!existing) draft.value = [...draft.value, { column, op: defaultOperator(def) }]\n editingCol.value = column\n level.value = 'editor'\n}\nconst editing = computed(() => draft.value.find((c) => c.column === editingCol.value) ?? null)\nconst editingDef = computed(() => (editingCol.value ? defOf(editingCol.value) : undefined))\nconst editor = computed(() =>\n editing.value && editingDef.value ? editorOf(editing.value.op, editingDef.value.type) : null,\n)\nconst ops = computed(() => (editingDef.value ? operatorsOf(editingDef.value) : []))\nconst valueCount = computed(() => (Array.isArray(editing.value?.value) ? editing.value.value.length : 1))\nconst update = (patch: Partial<Chip>) =>\n (draft.value = draft.value.map((c) => (c.column === editingCol.value ? { ...c, ...patch } : c)))\nconst setValue = (value: unknown) => {\n const def = editingDef.value!\n update({\n value,\n currency:\n def.type === 'currency' ? (editing.value?.currency ?? props.currenciesOf(def)[0]) : editing.value?.currency,\n })\n}\nconst setOp = (op: FilterOp) =>\n (draft.value = draft.value.map((c) =>\n c.column === editingCol.value ? changeOperator(c, op, editingDef.value!.type) : c,\n ))\n/** Kişi listesinde Unassigned: `is_empty` ile değişimli (FilterChip ile aynı). */\nconst unassigned = () => setOp(editing.value?.op === 'is_empty' ? 'in' : 'is_empty')\nconst remove = (column: string) => (draft.value = draft.value.filter((c) => c.column !== column))\n/** Geri / Done: değer seçilmemiş çip taslaktan düşer (04 §1). */\nconst back = () => {\n const c = editing.value\n if (c && editingDef.value && !isComplete(c, editingDef.value.type)) remove(c.column)\n editingCol.value = null\n level.value = 'main'\n}\nconst setSortColumn = (column: string) =>\n (draftSort.value = column ? { column, dir: draftSort.value?.dir ?? 'asc' } : null)\nconst setSortDir = (dir: unknown) => {\n if ((dir === 'asc' || dir === 'desc') && draftSort.value) draftSort.value = { ...draftSort.value, dir }\n}\nconst apply = () => {\n emit(\n 'apply',\n draft.value.filter((c) => isComplete(c, defOf(c.column)!.type)),\n draftSort.value ? [draftSort.value] : [],\n )\n open.value = false\n}\nconst title = computed(() =>\n level.value === 'main'\n ? i18n.t('mobile.filters')\n : level.value === 'picker'\n ? i18n.t('filter.addFilter')\n : (editingDef.value?.header ?? ''),\n)\n</script>\n\n<template>\n <Layer v-model:open=\"open\" sheet content-class=\"dt-filters-sheet\" :title=\"title\">\n <template v-if=\"level !== 'main'\" #head-start>\n <button type=\"button\" class=\"dt-bsheet-back\" :aria-label=\"i18n.t('mobile.backToFilters')\" @click=\"back\">\n <PhCaretLeft :size=\"20\" aria-hidden=\"true\" />\n </button>\n </template>\n <template #head-end>\n <button v-if=\"level === 'main'\" type=\"button\" class=\"dt-bsheet-action\" @click=\"draft = []\">\n {{ i18n.t('filter.clearAll') }}\n </button>\n <button\n v-else-if=\"level === 'editor'\"\n type=\"button\"\n class=\"dt-bsheet-action\"\n :disabled=\"editing?.value === undefined\"\n @click=\"update({ value: undefined })\"\n >\n {{ i18n.t('common.clear') }}\n </button>\n </template>\n\n <template v-if=\"level === 'main'\">\n <div v-for=\"c in draft\" :key=\"c.column\" class=\"dt-bsheet-row is-split\">\n <button type=\"button\" class=\"dt-bsheet-row-main\" @click=\"edit(c.column)\">\n <span class=\"dt-bsheet-field\">{{ headerOf(c.column) }}</span>\n <span class=\"dt-bsheet-value is-strong\">{{ summaryOf(c).text }}</span>\n </button>\n <button\n type=\"button\"\n class=\"dt-bsheet-x\"\n :aria-label=\"i18n.t('filter.removeAria', { column: headerOf(c.column) })\"\n @click=\"remove(c.column)\"\n >\n <PhX :size=\"16\" aria-hidden=\"true\" />\n </button>\n </div>\n <template v-if=\"suggested.length\">\n <div class=\"dt-bsheet-label\">{{ i18n.t('picker.suggested') }}</div>\n <button v-for=\"c in suggested\" :key=\"c.id\" type=\"button\" class=\"dt-bsheet-row\" @click=\"edit(c.id as string)\">\n <span class=\"dt-bsheet-field\">{{ c.header }}</span>\n <span class=\"dt-bsheet-value\">{{ i18n.t('common.any') }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n </template>\n <button type=\"button\" class=\"dt-bsheet-row is-accent\" @click=\"level = 'picker'\">\n <PhPlus :size=\"18\" aria-hidden=\"true\" />\n {{ i18n.t('filter.addFilter') }}\n </button>\n <div class=\"dt-bsheet-sep\" />\n <div class=\"dt-bsheet-label\">{{ i18n.t('mobile.sort') }}</div>\n <div class=\"dt-bsheet-row is-sort\">\n <label class=\"dt-select dt-bsheet-select\">\n <select\n :value=\"draftSort?.column ?? ''\"\n :aria-label=\"i18n.t('mobile.sort')\"\n @change=\"setSortColumn(($event.target as HTMLSelectElement).value)\"\n >\n <option value=\"\">{{ i18n.t('common.empty') }}</option>\n <option v-for=\"c in sortable\" :key=\"c.id\" :value=\"c.id\">{{ c.header }}</option>\n </select>\n <PhCaretDown :size=\"14\" aria-hidden=\"true\" />\n </label>\n <ToggleGroupRoot\n class=\"dt-seg dt-bsheet-dir\"\n type=\"single\"\n :model-value=\"draftSort?.dir ?? ''\"\n :disabled=\"!draftSort\"\n @update:model-value=\"setSortDir\"\n >\n <ToggleGroupItem class=\"dt-seg-item\" value=\"asc\" :aria-label=\"i18n.t('header.sortAsc')\">\n <PhArrowUp :size=\"16\" aria-hidden=\"true\" />\n </ToggleGroupItem>\n <ToggleGroupItem class=\"dt-seg-item\" value=\"desc\" :aria-label=\"i18n.t('header.sortDesc')\">\n <PhArrowDown :size=\"16\" aria-hidden=\"true\" />\n </ToggleGroupItem>\n </ToggleGroupRoot>\n </div>\n </template>\n\n <template v-else-if=\"level === 'picker'\">\n <label class=\"dt-input has-icon dt-bsheet-search\">\n <span class=\"dt-input-icon\"><PhMagnifyingGlass :size=\"16\" aria-hidden=\"true\" /></span>\n <input v-model=\"q\" type=\"search\" :placeholder=\"i18n.t('picker.search')\" :aria-label=\"i18n.t('picker.search')\" />\n </label>\n <button v-for=\"c in pickable\" :key=\"c.id\" type=\"button\" class=\"dt-bsheet-row\" @click=\"edit(c.id as string)\">\n <component :is=\"TYPE_ICONS[c.type]\" :size=\"16\" class=\"dt-bsheet-icon\" aria-hidden=\"true\" />\n {{ c.header }}\n </button>\n <div v-if=\"!pickable.length\" class=\"dt-options-empty\">{{ i18n.t('picker.noMatch') }}</div>\n </template>\n\n <div v-else-if=\"editing && editingDef\" class=\"dt-bsheet-editor\">\n <label class=\"dt-select dt-bsheet-select\">\n <select\n :value=\"editing.op\"\n :aria-label=\"i18n.t('mobile.operator')\"\n @change=\"setOp(($event.target as HTMLSelectElement).value as FilterOp)\"\n >\n <option v-for=\"op in ops\" :key=\"op\" :value=\"op\">{{ opLabel(i18n, op, editingDef.type, valueCount) }}</option>\n </select>\n <PhCaretDown :size=\"14\" aria-hidden=\"true\" />\n </label>\n <OptionsEditor\n v-if=\"editor === 'options'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"Array.isArray(editing.value) ? (editing.value as Array<string | number>) : []\"\n :rows=\"rows\"\n :labels=\"labels\"\n @update:model-value=\"setValue\"\n @unassigned=\"unassigned\"\n />\n <TextEditor\n v-else-if=\"editor === 'text'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n <NumberEditor\n v-else-if=\"editor === 'number'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n :currency=\"editing.currency\"\n :currencies=\"currenciesOf(editingDef)\"\n @update:model-value=\"setValue\"\n @update:currency=\"(c) => update({ currency: c })\"\n @done=\"back\"\n />\n <StarEditor\n v-else-if=\"editor === 'star'\"\n :column=\"editingDef\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n <DateEditor\n v-else-if=\"editor === 'date'\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n </div>\n\n <template #foot>\n <button v-if=\"level === 'editor'\" type=\"button\" class=\"dt-bsheet-primary\" @click=\"back\">\n {{ i18n.t('common.done') }}\n </button>\n <button v-else type=\"button\" class=\"dt-bsheet-primary\" @click=\"apply\">\n {{ i18n.t('mobile.showResults') }}\n </button>\n </template>\n </Layer>\n</template>\n","<script setup lang=\"ts\">\n// Telefon Filters alt sayfası (04 §9, handoff 04 §6.1–6.2, T13-04/05): uygulanmış filtreler · Suggested · Add filter · Sort ·\n// Show results. Değişiklikler taslakta birikir ve Show results'la tek seferde uygulanır (masaüstündeki anında uygulamadan\n// farklı). Değer editörü ve sütun seçici aynı sayfanın alt seviyeleridir (geri okuyla döner).\nimport {\n PhArrowDown,\n PhArrowUp,\n PhCaretDown,\n PhCaretLeft,\n PhCaretRight,\n PhMagnifyingGlass,\n PhPlus,\n PhX,\n} from '@phosphor-icons/vue'\nimport { ToggleGroupItem, ToggleGroupRoot } from 'reka-ui'\nimport { computed, defineAsyncComponent, ref } from 'vue'\nimport type { ColumnDef } from '../../types/columns'\nimport type { FilterOp, SortRule } from '../../types/query'\nimport type { RemoteLabels } from '../cells/remoteLabels'\nimport { TYPE_SPECS } from '../cells/specs'\nconst DateEditor = defineAsyncComponent(() => import('../editors/DateEditor.vue'))\nimport NumberEditor from '../editors/NumberEditor.vue'\nimport OptionsEditor from '../editors/OptionsEditor.vue'\nimport StarEditor from '../editors/StarEditor.vue'\nimport TextEditor from '../editors/TextEditor.vue'\nimport { useDataTableContext } from '../plugin'\nimport Layer from '../ui/Layer.vue'\nimport {\n changeOperator,\n defaultOperator,\n editorOf,\n isComplete,\n opLabel,\n operatorsOf,\n type Chip,\n type Summary,\n} from './model'\nimport { TYPE_ICONS } from './typeIcons'\n\nconst props = defineProps<{\n columns: ColumnDef[]\n chips: Chip[]\n sort: SortRule[]\n rows: object[]\n labels: RemoteLabels\n summaryOf: (chip: Chip) => Summary\n currenciesOf: (def: ColumnDef) => string[]\n}>()\nconst emit = defineEmits<{ apply: [chips: Chip[], sort: SortRule[]] }>()\nconst { i18n } = useDataTableContext()\n\nconst open = ref(false)\nconst draft = ref<Chip[]>([])\n// shortcut: telefonda tek sıralama kuralı; çoklu sıralama masaüstü Display › Sort'ta (ikincil kurallar Show results'ta düşer).\nconst draftSort = ref<SortRule | null>(null)\nconst level = ref<'main' | 'editor' | 'picker'>('main')\nconst editingCol = ref<string | null>(null)\nconst q = ref('')\n\nconst defOf = (id: string) => props.columns.find((c) => c.id === id)\nconst headerOf = (id: string) => defOf(id)?.header ?? id\nconst filterable = computed(() => props.columns.filter((c) => c.filterable ?? TYPE_SPECS[c.type].filterable))\nconst sortable = computed(() => props.columns.filter((c) => c.sortable ?? TYPE_SPECS[c.type].sortable))\nconst drafted = (id: string) => draft.value.some((c) => c.column === id)\nconst suggested = computed(() => filterable.value.filter((c) => c.suggested && !drafted(c.id as string)))\nconst pickable = computed(() =>\n filterable.value.filter(\n (c) => !drafted(c.id as string) && (!q.value || c.header.toLocaleLowerCase().includes(q.value.toLocaleLowerCase())),\n ),\n)\n\n/** Açılış: taslak = uygulanan çipler + ilk sıralama kuralı. `column` verilirse doğrudan o sütunun editörü (çip, header hunisi). */\nconst show = (column?: string) => {\n draft.value = props.chips.map((c) => ({ ...c }))\n draftSort.value = props.sort[0] ?? null\n level.value = 'main'\n editingCol.value = null\n q.value = ''\n open.value = true\n if (column) edit(column)\n}\ndefineExpose({ show })\n\n/** Var olan taslak çipi açar, yoksa varsayılan operatörle oluşturur. boolean'ın editörü yok: dokunuş Yes ↔ No. */\nconst edit = (column: string) => {\n const def = defOf(column)\n if (!def) return\n const existing = draft.value.find((c) => c.column === column)\n if (def.type === 'boolean') {\n draft.value = existing\n ? draft.value.map((c) => (c === existing ? { ...c, value: !(c.value === true) } : c))\n : [...draft.value, { column, op: defaultOperator(def), value: true }]\n return\n }\n if (!existing) draft.value = [...draft.value, { column, op: defaultOperator(def) }]\n editingCol.value = column\n level.value = 'editor'\n}\nconst editing = computed(() => draft.value.find((c) => c.column === editingCol.value) ?? null)\nconst editingDef = computed(() => (editingCol.value ? defOf(editingCol.value) : undefined))\nconst editor = computed(() =>\n editing.value && editingDef.value ? editorOf(editing.value.op, editingDef.value.type) : null,\n)\nconst ops = computed(() => (editingDef.value ? operatorsOf(editingDef.value) : []))\nconst valueCount = computed(() => (Array.isArray(editing.value?.value) ? editing.value.value.length : 1))\nconst update = (patch: Partial<Chip>) =>\n (draft.value = draft.value.map((c) => (c.column === editingCol.value ? { ...c, ...patch } : c)))\nconst setValue = (value: unknown) => {\n const def = editingDef.value!\n update({\n value,\n currency:\n def.type === 'currency' ? (editing.value?.currency ?? props.currenciesOf(def)[0]) : editing.value?.currency,\n })\n}\nconst setOp = (op: FilterOp) =>\n (draft.value = draft.value.map((c) =>\n c.column === editingCol.value ? changeOperator(c, op, editingDef.value!.type) : c,\n ))\n/** Kişi listesinde Unassigned: `is_empty` ile değişimli (FilterChip ile aynı). */\nconst unassigned = () => setOp(editing.value?.op === 'is_empty' ? 'in' : 'is_empty')\nconst remove = (column: string) => (draft.value = draft.value.filter((c) => c.column !== column))\n/** Geri / Done: değer seçilmemiş çip taslaktan düşer (04 §1). */\nconst back = () => {\n const c = editing.value\n if (c && editingDef.value && !isComplete(c, editingDef.value.type)) remove(c.column)\n editingCol.value = null\n level.value = 'main'\n}\nconst setSortColumn = (column: string) =>\n (draftSort.value = column ? { column, dir: draftSort.value?.dir ?? 'asc' } : null)\nconst setSortDir = (dir: unknown) => {\n if ((dir === 'asc' || dir === 'desc') && draftSort.value) draftSort.value = { ...draftSort.value, dir }\n}\nconst apply = () => {\n emit(\n 'apply',\n draft.value.filter((c) => isComplete(c, defOf(c.column)!.type)),\n draftSort.value ? [draftSort.value] : [],\n )\n open.value = false\n}\nconst title = computed(() =>\n level.value === 'main'\n ? i18n.t('mobile.filters')\n : level.value === 'picker'\n ? i18n.t('filter.addFilter')\n : (editingDef.value?.header ?? ''),\n)\n</script>\n\n<template>\n <Layer v-model:open=\"open\" sheet content-class=\"dt-filters-sheet\" :title=\"title\">\n <template v-if=\"level !== 'main'\" #head-start>\n <button type=\"button\" class=\"dt-bsheet-back\" :aria-label=\"i18n.t('mobile.backToFilters')\" @click=\"back\">\n <PhCaretLeft :size=\"20\" aria-hidden=\"true\" />\n </button>\n </template>\n <template #head-end>\n <button v-if=\"level === 'main'\" type=\"button\" class=\"dt-bsheet-action\" @click=\"draft = []\">\n {{ i18n.t('filter.clearAll') }}\n </button>\n <button\n v-else-if=\"level === 'editor'\"\n type=\"button\"\n class=\"dt-bsheet-action\"\n :disabled=\"editing?.value === undefined\"\n @click=\"update({ value: undefined })\"\n >\n {{ i18n.t('common.clear') }}\n </button>\n </template>\n\n <template v-if=\"level === 'main'\">\n <div v-for=\"c in draft\" :key=\"c.column\" class=\"dt-bsheet-row is-split\">\n <button type=\"button\" class=\"dt-bsheet-row-main\" @click=\"edit(c.column)\">\n <span class=\"dt-bsheet-field\">{{ headerOf(c.column) }}</span>\n <span class=\"dt-bsheet-value is-strong\">{{ summaryOf(c).text }}</span>\n </button>\n <button\n type=\"button\"\n class=\"dt-bsheet-x\"\n :aria-label=\"i18n.t('filter.removeAria', { column: headerOf(c.column) })\"\n @click=\"remove(c.column)\"\n >\n <PhX :size=\"16\" aria-hidden=\"true\" />\n </button>\n </div>\n <template v-if=\"suggested.length\">\n <div class=\"dt-bsheet-label\">{{ i18n.t('picker.suggested') }}</div>\n <button v-for=\"c in suggested\" :key=\"c.id\" type=\"button\" class=\"dt-bsheet-row\" @click=\"edit(c.id as string)\">\n <span class=\"dt-bsheet-field\">{{ c.header }}</span>\n <span class=\"dt-bsheet-value\">{{ i18n.t('common.any') }}</span>\n <PhCaretRight :size=\"16\" aria-hidden=\"true\" />\n </button>\n </template>\n <button type=\"button\" class=\"dt-bsheet-row is-accent\" @click=\"level = 'picker'\">\n <PhPlus :size=\"18\" aria-hidden=\"true\" />\n {{ i18n.t('filter.addFilter') }}\n </button>\n <div class=\"dt-bsheet-sep\" />\n <div class=\"dt-bsheet-label\">{{ i18n.t('mobile.sort') }}</div>\n <div class=\"dt-bsheet-row is-sort\">\n <label class=\"dt-select dt-bsheet-select\">\n <select\n :value=\"draftSort?.column ?? ''\"\n :aria-label=\"i18n.t('mobile.sort')\"\n @change=\"setSortColumn(($event.target as HTMLSelectElement).value)\"\n >\n <option value=\"\">{{ i18n.t('common.empty') }}</option>\n <option v-for=\"c in sortable\" :key=\"c.id\" :value=\"c.id\">{{ c.header }}</option>\n </select>\n <PhCaretDown :size=\"14\" aria-hidden=\"true\" />\n </label>\n <ToggleGroupRoot\n class=\"dt-seg dt-bsheet-dir\"\n type=\"single\"\n :model-value=\"draftSort?.dir ?? ''\"\n :disabled=\"!draftSort\"\n @update:model-value=\"setSortDir\"\n >\n <ToggleGroupItem class=\"dt-seg-item\" value=\"asc\" :aria-label=\"i18n.t('header.sortAsc')\">\n <PhArrowUp :size=\"16\" aria-hidden=\"true\" />\n </ToggleGroupItem>\n <ToggleGroupItem class=\"dt-seg-item\" value=\"desc\" :aria-label=\"i18n.t('header.sortDesc')\">\n <PhArrowDown :size=\"16\" aria-hidden=\"true\" />\n </ToggleGroupItem>\n </ToggleGroupRoot>\n </div>\n </template>\n\n <template v-else-if=\"level === 'picker'\">\n <label class=\"dt-input has-icon dt-bsheet-search\">\n <span class=\"dt-input-icon\"><PhMagnifyingGlass :size=\"16\" aria-hidden=\"true\" /></span>\n <input v-model=\"q\" type=\"search\" :placeholder=\"i18n.t('picker.search')\" :aria-label=\"i18n.t('picker.search')\" />\n </label>\n <button v-for=\"c in pickable\" :key=\"c.id\" type=\"button\" class=\"dt-bsheet-row\" @click=\"edit(c.id as string)\">\n <component :is=\"TYPE_ICONS[c.type]\" :size=\"16\" class=\"dt-bsheet-icon\" aria-hidden=\"true\" />\n {{ c.header }}\n </button>\n <div v-if=\"!pickable.length\" class=\"dt-options-empty\">{{ i18n.t('picker.noMatch') }}</div>\n </template>\n\n <div v-else-if=\"editing && editingDef\" class=\"dt-bsheet-editor\">\n <label class=\"dt-select dt-bsheet-select\">\n <select\n :value=\"editing.op\"\n :aria-label=\"i18n.t('mobile.operator')\"\n @change=\"setOp(($event.target as HTMLSelectElement).value as FilterOp)\"\n >\n <option v-for=\"op in ops\" :key=\"op\" :value=\"op\">{{ opLabel(i18n, op, editingDef.type, valueCount) }}</option>\n </select>\n <PhCaretDown :size=\"14\" aria-hidden=\"true\" />\n </label>\n <OptionsEditor\n v-if=\"editor === 'options'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"Array.isArray(editing.value) ? (editing.value as Array<string | number>) : []\"\n :rows=\"rows\"\n :labels=\"labels\"\n @update:model-value=\"setValue\"\n @unassigned=\"unassigned\"\n />\n <TextEditor\n v-else-if=\"editor === 'text'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n <NumberEditor\n v-else-if=\"editor === 'number'\"\n :column=\"editingDef\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n :currency=\"editing.currency\"\n :currencies=\"currenciesOf(editingDef)\"\n @update:model-value=\"setValue\"\n @update:currency=\"(c) => update({ currency: c })\"\n @done=\"back\"\n />\n <StarEditor\n v-else-if=\"editor === 'star'\"\n :column=\"editingDef\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n <DateEditor\n v-else-if=\"editor === 'date'\"\n :op=\"editing.op\"\n :model-value=\"editing.value\"\n @update:model-value=\"setValue\"\n @done=\"back\"\n />\n </div>\n\n <template #foot>\n <button v-if=\"level === 'editor'\" type=\"button\" class=\"dt-bsheet-primary\" @click=\"back\">\n {{ i18n.t('common.done') }}\n </button>\n <button v-else type=\"button\" class=\"dt-bsheet-primary\" @click=\"apply\">\n {{ i18n.t('mobile.showResults') }}\n </button>\n </template>\n </Layer>\n</template>\n"],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { createBlock as e, createCommentVNode as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, mergeModels as s, normalizeClass as c, openBlock as l, renderSlot as u, toDisplayString as d, unref as f, useModel as p, withCtx as m } from "vue";
2
+ import { DialogContent as h, DialogOverlay as g, DialogPortal as _, DialogRoot as v, DialogTitle as y, DialogTrigger as b, PopoverContent as x, PopoverPortal as S, PopoverRoot as C, PopoverTrigger as w } from "reka-ui";
3
+ //#region src/core/ui/Layer.vue?vue&type=script&setup=true&lang.ts
4
+ var T = {
5
+ key: 0,
6
+ class: "dt-bsheet-head"
7
+ }, E = { class: "dt-bsheet-body" }, D = {
8
+ key: 2,
9
+ class: "dt-bsheet-foot"
10
+ }, O = /* @__PURE__ */ o({
11
+ __name: "Layer",
12
+ props: /*@__PURE__*/ s({
13
+ sheet: { type: Boolean },
14
+ title: {},
15
+ hideTitle: { type: Boolean },
16
+ contentClass: {},
17
+ align: {},
18
+ sideOffset: {}
19
+ }, {
20
+ open: {
21
+ type: Boolean,
22
+ default: !1
23
+ },
24
+ openModifiers: {}
25
+ }),
26
+ emits: /*@__PURE__*/ s(["focusOutside"], ["update:open"]),
27
+ setup(o, { emit: s }) {
28
+ let O = s, k = p(o, "open");
29
+ return (s, p) => o.sheet ? (l(), e(f(v), {
30
+ key: 0,
31
+ open: k.value,
32
+ "onUpdate:open": p[0] ||= (e) => k.value = e
33
+ }, {
34
+ default: m(() => [s.$slots.trigger ? (l(), e(f(b), {
35
+ key: 0,
36
+ "as-child": ""
37
+ }, {
38
+ default: m(() => [u(s.$slots, "trigger")]),
39
+ _: 3
40
+ })) : t("", !0), a(f(_), null, {
41
+ default: m(() => [a(f(g), { class: "dt-scrim" }), a(f(h), {
42
+ class: c(["dt-bsheet", o.contentClass]),
43
+ "aria-describedby": void 0
44
+ }, {
45
+ default: m(() => [
46
+ p[3] ||= r("span", {
47
+ class: "dt-bsheet-handle",
48
+ "aria-hidden": "true"
49
+ }, null, -1),
50
+ o.hideTitle ? (l(), e(f(y), {
51
+ key: 1,
52
+ class: "dt-sr-only"
53
+ }, {
54
+ default: m(() => [i(d(o.title), 1)]),
55
+ _: 1
56
+ })) : (l(), n("div", T, [
57
+ u(s.$slots, "head-start"),
58
+ a(f(y), { class: "dt-bsheet-title" }, {
59
+ default: m(() => [i(d(o.title), 1)]),
60
+ _: 1
61
+ }),
62
+ u(s.$slots, "head-end")
63
+ ])),
64
+ r("div", E, [u(s.$slots, "default")]),
65
+ s.$slots.foot ? (l(), n("div", D, [u(s.$slots, "foot")])) : t("", !0)
66
+ ]),
67
+ _: 3
68
+ }, 8, ["class"])]),
69
+ _: 3
70
+ })]),
71
+ _: 3
72
+ }, 8, ["open"])) : (l(), e(f(C), {
73
+ key: 1,
74
+ open: k.value,
75
+ "onUpdate:open": p[2] ||= (e) => k.value = e
76
+ }, {
77
+ default: m(() => [s.$slots.trigger ? (l(), e(f(w), {
78
+ key: 0,
79
+ "as-child": ""
80
+ }, {
81
+ default: m(() => [u(s.$slots, "trigger")]),
82
+ _: 3
83
+ })) : t("", !0), a(f(S), null, {
84
+ default: m(() => [a(f(x), {
85
+ class: c(["dt-pop", o.contentClass]),
86
+ align: o.align,
87
+ "side-offset": o.sideOffset ?? 4,
88
+ onFocusOutside: p[1] ||= (e) => O("focusOutside", e)
89
+ }, {
90
+ default: m(() => [u(s.$slots, "default")]),
91
+ _: 3
92
+ }, 8, [
93
+ "class",
94
+ "align",
95
+ "side-offset"
96
+ ])]),
97
+ _: 3
98
+ })]),
99
+ _: 3
100
+ }, 8, ["open"]));
101
+ }
102
+ });
103
+ //#endregion
104
+ export { O as t };
105
+
106
+ //# sourceMappingURL=Layer-Di-tPd8b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layer-Di-tPd8b.js","names":["$slots","_useModel","_openBlock","_createBlock","_unref","_withCtx","_renderSlot","_createCommentVNode","_createVNode","_normalizeClass","_createElementVNode","_createElementBlock","_createTextVNode","_toDisplayString","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","Layer_default","defineComponent","\"open\"","\"openModifiers\"","__emit","emit","open","useModel","__props","openBlock","createBlock","unref","DialogRoot","_cache","$event","withCtx","_ctx","DialogTrigger","renderSlot","createCommentVNode","createVNode","DialogPortal","DialogOverlay","DialogContent","normalizeClass","createElementVNode","DialogTitle","createTextVNode","toDisplayString","createElementBlock","PopoverRoot","PopoverTrigger","PopoverPortal","PopoverContent"],"sources":["../src/core/ui/Layer.vue","../src/core/ui/Layer.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Popover ya da telefonda alt sayfa (05 §11, handoff 04 §6): aynı içerik, farklı kap. Alt sayfa reka Dialog'dur: scrim,\n// odak hapsi, Esc, kapanınca odak tetikleyiciye. Tutamaç · başlık satırı (geri / başlık / metin düğmesi) · kayan gövde · alt düğme.\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n DialogTrigger,\n PopoverContent,\n PopoverPortal,\n PopoverRoot,\n PopoverTrigger,\n} from 'reka-ui'\n\ndefineProps<{\n sheet?: boolean\n /** Alt sayfanın erişilebilir adı; `hideTitle` ile yalnızca ekran okuyucuya. */\n title: string\n hideTitle?: boolean\n contentClass?: string\n align?: 'start' | 'center' | 'end'\n sideOffset?: number\n}>()\nconst emit = defineEmits<{ focusOutside: [e: CustomEvent<{ originalEvent: FocusEvent }>] }>()\nconst open = defineModel<boolean>('open', { default: false })\n</script>\n\n<template>\n <DialogRoot v-if=\"sheet\" v-model:open=\"open\">\n <DialogTrigger v-if=\"$slots.trigger\" as-child><slot name=\"trigger\" /></DialogTrigger>\n <DialogPortal>\n <DialogOverlay class=\"dt-scrim\" />\n <DialogContent class=\"dt-bsheet\" :class=\"contentClass\" :aria-describedby=\"undefined\">\n <span class=\"dt-bsheet-handle\" aria-hidden=\"true\" />\n <div v-if=\"!hideTitle\" class=\"dt-bsheet-head\">\n <slot name=\"head-start\" />\n <DialogTitle class=\"dt-bsheet-title\">{{ title }}</DialogTitle>\n <slot name=\"head-end\" />\n </div>\n <DialogTitle v-else class=\"dt-sr-only\">{{ title }}</DialogTitle>\n <div class=\"dt-bsheet-body\"><slot /></div>\n <div v-if=\"$slots.foot\" class=\"dt-bsheet-foot\"><slot name=\"foot\" /></div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n <PopoverRoot v-else v-model:open=\"open\">\n <PopoverTrigger v-if=\"$slots.trigger\" as-child><slot name=\"trigger\" /></PopoverTrigger>\n <PopoverPortal>\n <PopoverContent\n class=\"dt-pop\"\n :class=\"contentClass\"\n :align=\"align\"\n :side-offset=\"sideOffset ?? 4\"\n @focus-outside=\"(e) => emit('focusOutside', e)\"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n </PopoverRoot>\n</template>\n","<script setup lang=\"ts\">\n// Popover ya da telefonda alt sayfa (05 §11, handoff 04 §6): aynı içerik, farklı kap. Alt sayfa reka Dialog'dur: scrim,\n// odak hapsi, Esc, kapanınca odak tetikleyiciye. Tutamaç · başlık satırı (geri / başlık / metin düğmesi) · kayan gövde · alt düğme.\nimport {\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n DialogTrigger,\n PopoverContent,\n PopoverPortal,\n PopoverRoot,\n PopoverTrigger,\n} from 'reka-ui'\n\ndefineProps<{\n sheet?: boolean\n /** Alt sayfanın erişilebilir adı; `hideTitle` ile yalnızca ekran okuyucuya. */\n title: string\n hideTitle?: boolean\n contentClass?: string\n align?: 'start' | 'center' | 'end'\n sideOffset?: number\n}>()\nconst emit = defineEmits<{ focusOutside: [e: CustomEvent<{ originalEvent: FocusEvent }>] }>()\nconst open = defineModel<boolean>('open', { default: false })\n</script>\n\n<template>\n <DialogRoot v-if=\"sheet\" v-model:open=\"open\">\n <DialogTrigger v-if=\"$slots.trigger\" as-child><slot name=\"trigger\" /></DialogTrigger>\n <DialogPortal>\n <DialogOverlay class=\"dt-scrim\" />\n <DialogContent class=\"dt-bsheet\" :class=\"contentClass\" :aria-describedby=\"undefined\">\n <span class=\"dt-bsheet-handle\" aria-hidden=\"true\" />\n <div v-if=\"!hideTitle\" class=\"dt-bsheet-head\">\n <slot name=\"head-start\" />\n <DialogTitle class=\"dt-bsheet-title\">{{ title }}</DialogTitle>\n <slot name=\"head-end\" />\n </div>\n <DialogTitle v-else class=\"dt-sr-only\">{{ title }}</DialogTitle>\n <div class=\"dt-bsheet-body\"><slot /></div>\n <div v-if=\"$slots.foot\" class=\"dt-bsheet-foot\"><slot name=\"foot\" /></div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n <PopoverRoot v-else v-model:open=\"open\">\n <PopoverTrigger v-if=\"$slots.trigger\" as-child><slot name=\"trigger\" /></PopoverTrigger>\n <PopoverPortal>\n <PopoverContent\n class=\"dt-pop\"\n :class=\"contentClass\"\n :align=\"align\"\n :side-offset=\"sideOffset ?? 4\"\n @focus-outside=\"(e) => emit('focusOutside', e)\"\n >\n <slot />\n </PopoverContent>\n </PopoverPortal>\n </PopoverRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAMuB,IAAOD,GACPE,IAAOvB,EAAoByB,GAAC,MAA0B;E,iBAIxCA,EAAA,SAAlBxB,EAAA,GAAAC,EAgBaC,EAAA0B,CAAA,GAAA;;GAhBoB,MAAMN,EAAA;GAAA,iBAAA,AAAAO,EAAA,QAAA,MAAA,EAAI,QAAAC;;GACzC,SAAA3B,QAAqF,CAAhEL,EAAAA,OAAO,WAA5BE,EAAA,GAAAC,EAAqFC,EAAA+B,CAAA,GAAA;;IAAhD,YAAA;;IAAS,SAAA9B,QAAuB,CAAvBC,EAAuB4B,EAAA,QAAA,SAAA,C;;G,iBACrE1B,EAaeJ,EAAAmC,CAAA,GAAA,MAAA;IAZb,SAAAlC,QAAkC,CAAlCG,EAAkCJ,EAAAoC,CAAA,GAAA,EAAnB,OAAM,WAAU,CAAA,GAC/BhC,EAUgBJ,EAAAqC,CAAA,GAAA;KAVD,OAAKhC,EAAA,CAAC,aAAoBiB,EAAA,YAAY,CAAA;KAAG,oBAAkB,KAAA;;KACxE,SAAArB,QAAoD;MAApD,AAAA0B,EAAA,OAAArB,EAAoD,QAAA;OAA9C,OAAM;OAAmB,eAAY;;MAC/BgB,EAAA,aAKZxB,EAAA,GAAAC,EAAgEC,EAAAwC,CAAA,GAAA;;OAA5C,OAAM;;OAAa,SAAAvC,QAAW,CAARO,EAAAC,EAAAa,EAAA,KAAK,GAAA,CAAA,C;;M,OAL/CxB,EAAA,GAAAS,EAIM,OAJNI,GAIM;OAHJT,EAA0B4B,EAAA,QAAA,YAAA;OAC1B1B,EAA8DJ,EAAAwC,CAAA,GAAA,EAAjD,OAAM,kBAAiB,GAAA;QAAC,SAAAvC,QAAW,CAARO,EAAAC,EAAAa,EAAA,KAAK,GAAA,CAAA,C;;;OAC7CpB,EAAwB4B,EAAA,QAAA,UAAA;;MAG1BxB,EAA0C,OAA1CM,GAA0C,CAAdV,EAAQ4B,EAAA,QAAA,SAAA,C;MACzBlC,EAAAA,OAAO,QAAlBE,EAAA,GAAAS,EAAyE,OAAzEM,GAAyE,CAA1BX,EAAoB4B,EAAA,QAAA,MAAA,C;;;;;;;E,oBAIzEhC,EAAA,GAAAC,EAacC,EAAA4C,CAAA,GAAA;;GAbc,MAAMxB,EAAA;GAAA,iBAAA,AAAAO,EAAA,QAAA,MAAA,EAAI,QAAAC;;GACpC,SAAA3B,QAAuF,CAAjEL,EAAAA,OAAO,WAA7BE,EAAA,GAAAC,EAAuFC,EAAA6C,CAAA,GAAA;;IAAjD,YAAA;;IAAS,SAAA5C,QAAuB,CAAvBC,EAAuB4B,EAAA,QAAA,SAAA,C;;G,iBACtE1B,EAUgBJ,EAAA8C,CAAA,GAAA,MAAA;IATd,SAAA7C,QAQiB,CARjBG,EAQiBJ,EAAA+C,CAAA,GAAA;KAPf,OAAK1C,EAAA,CAAC,UACEiB,EAAA,YAAY,CAAA;KACnB,OAAOA,EAAA;KACP,eAAaA,EAAA,cAAU;KACvB,gBAAa,AAAAK,EAAA,QAAG,MAAMR,EAAI,gBAAiB,CAAC;;KAE7C,SAAAlB,QAAQ,CAARC,EAAQ4B,EAAA,QAAA,SAAA,C"}