@medyat/vue-data-table 1.0.0 → 1.0.1
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 +33 -0
- package/dist/ColumnsDialog-dngip-aF.js +251 -0
- package/dist/ColumnsDialog-dngip-aF.js.map +1 -0
- package/dist/{DateEditor-BTIZMwf1.js → DateEditor-C2zzyoPQ.js} +2 -2
- package/dist/{DateEditor-BTIZMwf1.js.map → DateEditor-C2zzyoPQ.js.map} +1 -1
- package/dist/FiltersSheet-C3zOlbkN.js +284 -0
- package/dist/{FiltersSheet-o2HaQuhq.js.map → FiltersSheet-C3zOlbkN.js.map} +1 -1
- package/dist/PhoneMoreSheet-66OdIZrl.js +266 -0
- package/dist/PhoneMoreSheet-66OdIZrl.js.map +1 -0
- package/dist/{TextEditor-DPqiiRau.js → TextEditor-CHLM6u-l.js} +24 -25
- package/dist/{TextEditor-DPqiiRau.js.map → TextEditor-CHLM6u-l.js.map} +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.js +1423 -1568
- package/dist/index.js.map +1 -1
- package/dist/query-CGNWUi2E.js +2904 -0
- package/dist/query-CGNWUi2E.js.map +1 -0
- package/dist/sheet.d.ts +15 -14
- package/dist/sheet.js +1754 -1816
- package/dist/sheet.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +24 -17
- package/dist/FiltersSheet-o2HaQuhq.js +0 -285
- package/dist/PhoneMoreSheet-gfkH96RR.js +0 -227
- package/dist/PhoneMoreSheet-gfkH96RR.js.map +0 -1
- package/dist/plugin-DhgcjEdi.js +0 -813
- package/dist/plugin-DhgcjEdi.js.map +0 -1
- package/dist/query-DQWMlX0m.js +0 -2121
- package/dist/query-DQWMlX0m.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
# Sürüm notları
|
|
2
2
|
|
|
3
|
+
## 1.0.1 — 2026-10-29
|
|
4
|
+
|
|
5
|
+
### İçe ve dışa aktarma (D46)
|
|
6
|
+
|
|
7
|
+
- **Excel ve CSV paketin içinde.** `@export` dinlenmezse DataTable ve DataSheet dosyayı kendisi yazar; DataSheet `parseFile` verilmezse .xlsx / .csv'yi kendisi okur. Yeni zorunlu peer'ler: `read-excel-file` (^9.3.13) ve `write-excel-file` (^4.1.1); ilk Import/Export'ta yüklenir. **Geçiş:** `pnpm add read-excel-file write-excel-file`; mevcut `@export` / `parseFile` kodu aynen çalışır (override), istenirse silinebilir.
|
|
8
|
+
- DataTable Export ekranda görüneni yazar: seçim varsa seçili satırlar, yoksa sayfadaki satırlar. Menü etiketi “Export matching rows” → “Export 100 rows” (`toolbar.export` artık `.one` / `.other`). `export` olayına `rows` eklendi.
|
|
9
|
+
- Export menüsü artık dinleyici olmadan da görünür; `:exportable="false"` gizler. DataSheet'te Import da varsayılan açık, `:importable="false"` gizler.
|
|
10
|
+
- .xlsx: yazı 16 pt; başlık kalın, dolgulu, dondurulmuş; sayı, para, yüzde ve tarih tipli hücre; `select` ve `boolean` sütunlarının seçenekleri ikinci sayfada (“Options”), hücreler o listeden açılır liste.
|
|
11
|
+
- Eski ikili `.xls` yerleşik okuyucuda desteklenmez (`import.xlsxOnly`); `import.drop` metninden `.xls` çıktı.
|
|
12
|
+
|
|
13
|
+
### DataSheet
|
|
14
|
+
|
|
15
|
+
- **Yeni / Güncelle ayrımı kalktı (D47).** `lookupKeys` prop'u, New / Update etiketi ve Update satırını sunucudan doldurma yok; eklenen satır gutter'da `+` ile işaretlenir, sunucu anahtara göre upsert eder. **Geçiş:** `:lookup-keys` ve sorgu uç noktası silinebilir; `@save` yükünde `SheetChangeRow.op` yok, `values` artık değişen alanlar + `required` sütunlar + anahtar (eklenen satırda boş değer gitmez). Import özeti ve toast metinleri “listede olan / olmayan”, “added” oldu; `sheet.tag.new` / `sheet.tag.update` yerine `sheet.addedRow`.
|
|
16
|
+
- Büyük içe aktarma artık sayfayı dondurmuyor: listede olmayan 10.000 anahtarın içe aktarılması ~27 s'den ~1–2 s'ye indi. Yeni satırlar satır satır değil toplu ekleniyor (her satırda tüm parti yeniden doğrulanıyordu); `applyResult` da sonuçları tek seferde işliyor.
|
|
17
|
+
- İçe aktarmada `maxRows` sınırı eklenen satırları iki kez sayıyordu; 10.000 sınırında yalnızca 5.000 satır alınıyordu.
|
|
18
|
+
- `required` sütunlar gizlenemez: Columns dialog'unda kilitli, görünümde gizli kayıtlı olsa da görünür.
|
|
19
|
+
|
|
20
|
+
### DataTable
|
|
21
|
+
|
|
22
|
+
- **Satır klavyesi kaldırıldı (D40).** Satır odağı ve çerçevesi, satır okları, satırda `↵` / `→` / `←` / `X` / `⇧↑↓` / `⌘A` / `⇧F10` ve başlıklar arası ok gezinmesi yok. Satırdaki widget'lar ve başlık düğmeleri doğal Tab sırasında; kök `role="table"`, hücreler `cell`, satırda `aria-selected` yok. Sayfa kısayolları ve başlık düğmesindeki sıralama/menü/genişlik/taşıma tuşları değişmedi. DataSheet etkilenmez.
|
|
23
|
+
- Toolbar sırası spesifikasyona döndü: görünüm · arama · Filter solda, Display · ⋯ · birincil aksiyon sağda.
|
|
24
|
+
- Odak seçim checkbox'ındayken `Esc` seçimi temizler ve tek harfli kısayollar çalışır.
|
|
25
|
+
- Filtre için alan seçilince (column picker, header menüsü › Filter by this column…, mevcut çip) odak doğrudan editörün ilk alanına gelir; önceden picker/menü odağı tetikleyicisine geri alıyor ya da operatör düğmesine düşüyordu.
|
|
26
|
+
- Popover içeriği kenarlara eşit uzaklıkta: column picker, görünüm menüsü ve Columns panelindeki arama kutuları ile filtre editörü gövdesi her yönde `--dt-pop-pad` (önceden üstte 4, yanlarda 8 px).
|
|
27
|
+
- Sütun sürüklenerek minimum genişliğin (80 px) altına inemez; önceden sürüklerken daralıp ilk tıklamada 80'e sıçrıyordu. Görünüme kaydedilen ve görünümden okunan genişlik de sütunun min–max aralığına kırpılır.
|
|
28
|
+
- **İçeriğe sığdırma kaldırıldı (D42).** Resize tutamacında çift tık ve sütun menüsündeki Fit to content yok; genişlik sürükleyerek ayarlanır. `header.fit` i18n anahtarı kaldırıldı.
|
|
29
|
+
- Display düğmesi her genişlikte yalnızca ikon (DataTable ve DataSheet); adı tooltip'te ve `aria-label`'da.
|
|
30
|
+
- **Toolbar grupları (D43).** Görünüm seçici başında ikon kutusuyla ghost (select kutusu görünümü geri alındı); arama + Filter grubu toolbar'ın tam ortasında; arama + Filter ve Display + ⋯ birleşik düğme grubu. Telefon düzeni değişmedi.
|
|
31
|
+
- Kaydırma hapı (Rows 41–56) kaydırma alanının köşesinden sağdan ve alttan eşit uzaklıkta; görünür kaydırma çubukları (Windows, macOS "her zaman göster") hesaba katılır; yazı dikeyde ortalı.
|
|
32
|
+
- Satıra sağ tık artık satır ⋯ menüsünü açmaz; tarayıcının kendi menüsü açılır.
|
|
33
|
+
- Header (D44): filtre işareti etiketin solunda; ⋯ her sütunda sağ uçta ve yalnızca hover, klavye odağı veya menü açıkken yer kaplar (önceden hep yer ayırıyordu; sayısal sütunlarda en soldaydı). Dokunmatikte hep görünür.
|
|
34
|
+
- **Ölçek büyüdü ve token'a bağlandı (D41).** Arayüz yazısı 13 → 14 px, ikonlar 16 → 18, kontroller 32 → 36, aralıklar 8 → 10, popover dolgusu 4 → 6; Comfortable satırı 52 → 56, Standard 40 → 44 (hücre yazısı 13 → 14). Toolbar, filtre satırı ve footer dolgusu dört yönde eşit. Varsayılan sütun genişlikleri hücre yazısıyla orantılı büyür. Yeni token'lar: `--dt-ui-fs`, `--dt-icon`, `--dt-control-h`, `--dt-checkbox`, `--dt-space`, `--dt-pop-pad`, `--dt-item-x` ve türevleri (02 · Ölçek); uygulama bunları ezerek paketi büyütüp küçültebilir. DataSheet'in ortak parçaları (buton, menü, popover, dialog) da büyür; Compact satır yoğunluğu değişmez.
|
|
35
|
+
|
|
3
36
|
## 1.0.0 — 2026-10-28
|
|
4
37
|
|
|
5
38
|
İlk sürüm: Faz 0–7 (`docs/data-table/10-roadmap.md`).
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { W as e } from "./query-CGNWUi2E.js";
|
|
2
|
+
import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, mergeModels as u, normalizeClass as d, openBlock as f, ref as p, renderList as m, toDisplayString as h, unref as g, useModel as _, vModelText as v, watch as y, withCtx as b, withDirectives as x } from "vue";
|
|
3
|
+
import { PhDotsSixVertical as S, PhLock as ee, PhMagnifyingGlass as te, PhPushPin as C } from "@phosphor-icons/vue";
|
|
4
|
+
import { DialogClose as ne, DialogContent as re, DialogOverlay as w, DialogPortal as T, DialogRoot as E, DialogTitle as D, RadioGroupIndicator as O, RadioGroupItem as ie, RadioGroupRoot as ae, SwitchRoot as k, SwitchThumb as A } from "reka-ui";
|
|
5
|
+
import { Accessibility as j } from "@dnd-kit/dom";
|
|
6
|
+
import { DragDropProvider as oe } from "@dnd-kit/vue";
|
|
7
|
+
import { isSortable as M, useSortable as N } from "@dnd-kit/vue/sortable";
|
|
8
|
+
//#region src/core/toolbar/ColumnsDialogRow.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
+
var P = ["data-col"], F = ["disabled", "aria-label"], I = { class: "dt-col-name" }, L = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "dt-col-desc"
|
|
12
|
+
}, R = /* @__PURE__ */ l({
|
|
13
|
+
__name: "ColumnsDialogRow",
|
|
14
|
+
props: {
|
|
15
|
+
column: {},
|
|
16
|
+
index: {},
|
|
17
|
+
disabled: { type: Boolean },
|
|
18
|
+
pinned: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["update:visible"],
|
|
21
|
+
setup(t, { emit: n }) {
|
|
22
|
+
let l = t, u = n, { i18n: m } = e(), _ = p(null), v = p(null), { isDragSource: y } = N({
|
|
23
|
+
id: () => l.column.id,
|
|
24
|
+
index: () => l.index,
|
|
25
|
+
disabled: () => l.disabled,
|
|
26
|
+
element: _,
|
|
27
|
+
handle: v
|
|
28
|
+
});
|
|
29
|
+
return (e, n) => (f(), a("li", {
|
|
30
|
+
ref_key: "element",
|
|
31
|
+
ref: _,
|
|
32
|
+
class: d(["dt-col-row", {
|
|
33
|
+
"is-hidden": !t.column.visible,
|
|
34
|
+
"is-dragging": g(y)
|
|
35
|
+
}]),
|
|
36
|
+
"data-col": t.column.id
|
|
37
|
+
}, [
|
|
38
|
+
o("button", {
|
|
39
|
+
ref_key: "handle",
|
|
40
|
+
ref: v,
|
|
41
|
+
type: "button",
|
|
42
|
+
class: "dt-icon-btn-xs dt-col-handle",
|
|
43
|
+
disabled: t.disabled,
|
|
44
|
+
"aria-label": g(m).t("columns.reorder", { column: t.column.def.header })
|
|
45
|
+
}, [c(g(S), {
|
|
46
|
+
size: 16,
|
|
47
|
+
weight: "bold",
|
|
48
|
+
"aria-hidden": "true"
|
|
49
|
+
})], 8, F),
|
|
50
|
+
o("span", I, [o("span", null, [s(h(t.column.def.header) + " ", 1), t.pinned ? (f(), r(g(C), {
|
|
51
|
+
key: 0,
|
|
52
|
+
size: 12,
|
|
53
|
+
class: "dt-col-pin",
|
|
54
|
+
"aria-label": g(m).t("columns.pinned")
|
|
55
|
+
}, null, 8, ["aria-label"])) : i("", !0)]), t.column.def.description ? (f(), a("span", L, h(t.column.def.description), 1)) : i("", !0)]),
|
|
56
|
+
c(g(k), {
|
|
57
|
+
class: "dt-switch dt-col-switch",
|
|
58
|
+
"model-value": t.column.visible,
|
|
59
|
+
disabled: !t.column.canHide,
|
|
60
|
+
"aria-label": t.column.def.header,
|
|
61
|
+
"onUpdate:modelValue": n[0] ||= (e) => u("update:visible", e)
|
|
62
|
+
}, {
|
|
63
|
+
default: b(() => [c(g(A), { class: "dt-switch-thumb" })]),
|
|
64
|
+
_: 1
|
|
65
|
+
}, 8, [
|
|
66
|
+
"model-value",
|
|
67
|
+
"disabled",
|
|
68
|
+
"aria-label"
|
|
69
|
+
])
|
|
70
|
+
], 10, P));
|
|
71
|
+
}
|
|
72
|
+
}), z = { class: "dt-cols-body" }, B = {
|
|
73
|
+
key: 0,
|
|
74
|
+
class: "dt-cols-pins"
|
|
75
|
+
}, V = ["id"], H = { class: "dt-cols-desc" }, U = { class: "dt-cols-section dt-cols-main" }, W = { class: "dt-cols-title" }, G = { class: "dt-pop-value" }, K = { class: "dt-cols-desc" }, q = { class: "dt-input has-icon dt-cols-find" }, se = { class: "dt-input-icon" }, ce = ["placeholder", "aria-label"], le = { class: "dt-cols-list" }, ue = { class: "dt-col-name" }, de = {
|
|
76
|
+
key: 0,
|
|
77
|
+
class: "dt-col-desc"
|
|
78
|
+
}, fe = { class: "dt-cols-foot" }, pe = {
|
|
79
|
+
type: "button",
|
|
80
|
+
class: "dt-btn"
|
|
81
|
+
}, J = /* @__PURE__ */ l({
|
|
82
|
+
__name: "ColumnsDialog",
|
|
83
|
+
props: /*@__PURE__*/ u({
|
|
84
|
+
columns: {},
|
|
85
|
+
phone: { type: Boolean }
|
|
86
|
+
}, {
|
|
87
|
+
open: {
|
|
88
|
+
type: Boolean,
|
|
89
|
+
default: !1
|
|
90
|
+
},
|
|
91
|
+
openModifiers: {}
|
|
92
|
+
}),
|
|
93
|
+
emits: /*@__PURE__*/ u(["save", "closeAutoFocus"], ["update:open"]),
|
|
94
|
+
setup(l, { emit: u }) {
|
|
95
|
+
let S = l, C = u, k = _(l, "open"), { i18n: A } = e(), N = [
|
|
96
|
+
0,
|
|
97
|
+
1,
|
|
98
|
+
2
|
|
99
|
+
], P = p([]), F = p(0), I = p(0), L = p(""), J = (e) => Math.min(2, S.columns.filter((t) => t.pinned === e && t.visible && !t.fixed).length);
|
|
100
|
+
y(k, (e) => {
|
|
101
|
+
e && (P.value = S.columns.map((e) => ({ ...e })), F.value = J("start"), I.value = J("end"), L.value = "");
|
|
102
|
+
}, { immediate: !0 });
|
|
103
|
+
let Y = n(() => P.value.filter((e) => e.fixed)), me = (e) => !L.value || e.def.header.toLocaleLowerCase().includes(L.value.toLocaleLowerCase()), X = n(() => P.value.filter((e) => !e.fixed && me(e))), he = n(() => {
|
|
104
|
+
if (S.phone) return /* @__PURE__ */ new Set();
|
|
105
|
+
let e = P.value.filter((e) => e.visible && !e.fixed).map((e) => e.id), t = e.slice(0, F.value);
|
|
106
|
+
return /* @__PURE__ */ new Set([...t, ...I.value ? e.slice(t.length).slice(-I.value) : []]);
|
|
107
|
+
}), Z = n(() => P.value.filter((e) => e.canHide && !e.fixed)), Q = n(() => Z.value.every((e) => e.visible)), ge = ({ operation: { source: e }, canceled: t }) => {
|
|
108
|
+
if (t || !M(e) || e.initialIndex === e.index) return;
|
|
109
|
+
let n = [...X.value], [r] = n.splice(e.initialIndex, 1);
|
|
110
|
+
n.splice(e.index, 0, r), P.value = [...Y.value, ...n];
|
|
111
|
+
}, _e = (e) => P.value.find((t) => t.id === e)?.def.header ?? String(e), $ = ({ source: e }) => e && M(e) ? {
|
|
112
|
+
column: _e(e.id),
|
|
113
|
+
position: e.index + 1,
|
|
114
|
+
total: X.value.length
|
|
115
|
+
} : void 0, ve = (e) => [...e.filter((e) => e !== j), j.configure({
|
|
116
|
+
screenReaderInstructions: { draggable: A.t("columns.dragInstructions") },
|
|
117
|
+
announcements: {
|
|
118
|
+
dragstart: ({ operation: e }) => $(e) ? A.t("columns.dragStart", $(e)) : void 0,
|
|
119
|
+
dragover: ({ operation: e }) => $(e) && e.target?.id !== e.source?.id ? A.t("columns.dragOver", $(e)) : void 0,
|
|
120
|
+
dragend: ({ operation: e, canceled: t }) => $(e) ? A.t(t ? "columns.dragCancel" : "columns.dragEnd", $(e)) : void 0
|
|
121
|
+
}
|
|
122
|
+
})], ye = () => {
|
|
123
|
+
let e = !Q.value;
|
|
124
|
+
for (let t of Z.value) t.visible = e;
|
|
125
|
+
}, be = () => {
|
|
126
|
+
C("save", {
|
|
127
|
+
order: P.value.map((e) => e.id),
|
|
128
|
+
visible: P.value.filter((e) => e.visible).map((e) => e.id),
|
|
129
|
+
start: S.phone ? J("start") : F.value,
|
|
130
|
+
end: S.phone ? J("end") : I.value
|
|
131
|
+
}), k.value = !1;
|
|
132
|
+
};
|
|
133
|
+
return (e, n) => (f(), r(g(E), {
|
|
134
|
+
open: k.value,
|
|
135
|
+
"onUpdate:open": n[2] ||= (e) => k.value = e
|
|
136
|
+
}, {
|
|
137
|
+
default: b(() => [c(g(T), null, {
|
|
138
|
+
default: b(() => [c(g(w), { class: "dt-scrim" }), c(g(re), {
|
|
139
|
+
class: d(["dt-dialog dt-cols-dialog", { "is-phone": l.phone }]),
|
|
140
|
+
"aria-describedby": void 0,
|
|
141
|
+
onCloseAutoFocus: n[1] ||= (e) => C("closeAutoFocus", e)
|
|
142
|
+
}, {
|
|
143
|
+
default: b(() => [
|
|
144
|
+
c(g(D), { class: "dt-sr-only" }, {
|
|
145
|
+
default: b(() => [s(h(g(A).t("display.columns")), 1)]),
|
|
146
|
+
_: 1
|
|
147
|
+
}),
|
|
148
|
+
o("div", z, [l.phone ? i("", !0) : (f(), a("div", B, [(f(), a(t, null, m(["start", "end"], (e) => o("section", {
|
|
149
|
+
key: e,
|
|
150
|
+
class: "dt-cols-section"
|
|
151
|
+
}, [
|
|
152
|
+
o("h3", {
|
|
153
|
+
id: `dt-cols-${e}`,
|
|
154
|
+
class: "dt-cols-title"
|
|
155
|
+
}, h(g(A).t(`columns.pin.${e}.title`)), 9, V),
|
|
156
|
+
o("p", H, h(g(A).t(`columns.pin.${e}.desc`)), 1),
|
|
157
|
+
c(g(ae), {
|
|
158
|
+
class: "dt-radio-group",
|
|
159
|
+
"aria-labelledby": `dt-cols-${e}`,
|
|
160
|
+
"model-value": e === "start" ? F.value : I.value,
|
|
161
|
+
"onUpdate:modelValue": (t) => e === "start" ? F.value = Number(t) : I.value = Number(t)
|
|
162
|
+
}, {
|
|
163
|
+
default: b(() => [(f(), a(t, null, m(N, (t) => o("label", {
|
|
164
|
+
key: t,
|
|
165
|
+
class: "dt-radio-row"
|
|
166
|
+
}, [c(g(ie), {
|
|
167
|
+
class: "dt-radio",
|
|
168
|
+
value: t
|
|
169
|
+
}, {
|
|
170
|
+
default: b(() => [c(g(O), { class: "dt-radio-dot" })]),
|
|
171
|
+
_: 1
|
|
172
|
+
}, 8, ["value"]), s(" " + h(g(A).t(`columns.pin.${e}.${t}`)), 1)])), 64))]),
|
|
173
|
+
_: 2
|
|
174
|
+
}, 1032, [
|
|
175
|
+
"aria-labelledby",
|
|
176
|
+
"model-value",
|
|
177
|
+
"onUpdate:modelValue"
|
|
178
|
+
])
|
|
179
|
+
])), 64))])), o("section", U, [
|
|
180
|
+
o("h3", W, [s(h(g(A).t("columns.title")) + " ", 1), o("span", G, h(g(A).t("columns.shownOf", {
|
|
181
|
+
shown: P.value.filter((e) => e.visible).length,
|
|
182
|
+
total: P.value.length
|
|
183
|
+
})), 1)]),
|
|
184
|
+
o("p", K, h(g(A).t("columns.desc")), 1),
|
|
185
|
+
o("label", q, [o("span", se, [c(g(te), {
|
|
186
|
+
size: 14,
|
|
187
|
+
"aria-hidden": "true"
|
|
188
|
+
})]), x(o("input", {
|
|
189
|
+
"onUpdate:modelValue": n[0] ||= (e) => L.value = e,
|
|
190
|
+
type: "search",
|
|
191
|
+
placeholder: g(A).t("columns.find"),
|
|
192
|
+
"aria-label": g(A).t("columns.find")
|
|
193
|
+
}, null, 8, ce), [[v, L.value]])]),
|
|
194
|
+
o("ul", le, [L.value ? i("", !0) : (f(!0), a(t, { key: 0 }, m(Y.value, (e) => (f(), a("li", {
|
|
195
|
+
key: e.id,
|
|
196
|
+
class: "dt-col-row is-fixed"
|
|
197
|
+
}, [o("span", ue, [o("span", null, h(e.def.header), 1), e.def.description ? (f(), a("span", de, h(e.def.description), 1)) : i("", !0)]), c(g(ee), {
|
|
198
|
+
size: 14,
|
|
199
|
+
class: "dt-col-lock",
|
|
200
|
+
"aria-label": g(A).t("columns.alwaysShown")
|
|
201
|
+
}, null, 8, ["aria-label"])]))), 128)), c(g(oe), {
|
|
202
|
+
plugins: ve,
|
|
203
|
+
onDragEnd: ge
|
|
204
|
+
}, {
|
|
205
|
+
default: b(() => [(f(!0), a(t, null, m(X.value, (e, t) => (f(), r(R, {
|
|
206
|
+
key: e.id,
|
|
207
|
+
column: e,
|
|
208
|
+
index: t,
|
|
209
|
+
disabled: !!L.value,
|
|
210
|
+
pinned: he.value.has(e.id),
|
|
211
|
+
"onUpdate:visible": (t) => e.visible = t
|
|
212
|
+
}, null, 8, [
|
|
213
|
+
"column",
|
|
214
|
+
"index",
|
|
215
|
+
"disabled",
|
|
216
|
+
"pinned",
|
|
217
|
+
"onUpdate:visible"
|
|
218
|
+
]))), 128))]),
|
|
219
|
+
_: 1
|
|
220
|
+
})])
|
|
221
|
+
])]),
|
|
222
|
+
o("div", fe, [
|
|
223
|
+
o("button", {
|
|
224
|
+
type: "button",
|
|
225
|
+
class: "dt-btn",
|
|
226
|
+
onClick: ye
|
|
227
|
+
}, h(g(A).t(Q.value ? "columns.hideAll" : "columns.showAll")), 1),
|
|
228
|
+
n[3] ||= o("span", { class: "dt-pop-end" }, null, -1),
|
|
229
|
+
c(g(ne), { "as-child": "" }, {
|
|
230
|
+
default: b(() => [o("button", pe, h(g(A).t("common.cancel")), 1)]),
|
|
231
|
+
_: 1
|
|
232
|
+
}),
|
|
233
|
+
o("button", {
|
|
234
|
+
type: "button",
|
|
235
|
+
class: "dt-btn dt-btn-primary",
|
|
236
|
+
onClick: be
|
|
237
|
+
}, h(g(A).t("common.save")), 1)
|
|
238
|
+
])
|
|
239
|
+
]),
|
|
240
|
+
_: 1
|
|
241
|
+
}, 8, ["class"])]),
|
|
242
|
+
_: 1
|
|
243
|
+
})]),
|
|
244
|
+
_: 1
|
|
245
|
+
}, 8, ["open"]));
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
//#endregion
|
|
249
|
+
export { J as default };
|
|
250
|
+
|
|
251
|
+
//# sourceMappingURL=ColumnsDialog-dngip-aF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnsDialog-dngip-aF.js","names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","_createTextVNode","_toDisplayString","_createBlock","_createCommentVNode","_withCtx","_sfc_main","_useModel","_openBlock","_createBlock","_unref","_withCtx","_createVNode","_normalizeClass","_createTextVNode","_toDisplayString","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createCommentVNode","_withDirectives","_vModelText","ColumnsDialogRow","_sfc_main","useDataTableContext","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","ColumnsDialogRow_default","defineComponent","__emit","props","__props","emit","element","ref","handle","useSortable","openBlock","createElementBlock","normalizeClass","unref","isDragSource","createElementVNode","i18n","createVNode","PhDotsSixVertical","createTextVNode","toDisplayString","createBlock","PhPushPin","createCommentVNode","SwitchRoot","_cache","v","withCtx","SwitchThumb","_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","ColumnsDialog_default","\"open\"","\"openModifiers\"","open","useModel","PIN_COUNTS","rows","start","end","find","pinCount","c","side","o","fixedRows","computed","matches","listed","willPin","free","left","hideable","allShown","onDragEnd","canceled","isSortable","source","list","moved","nameOf","id","at","plugins","defaults","p","Accessibility","operation","toggleAll","save","DialogRoot","$event","DialogPortal","DialogOverlay","DialogContent","DialogTitle","Fragment","renderList","RadioGroupRoot","n","RadioGroupItem","RadioGroupIndicator","PhMagnifyingGlass","withDirectives","vModelText","PhLock","DragDropProvider","i","DialogClose"],"sources":["../src/core/toolbar/ColumnsDialogRow.vue","../src/core/toolbar/ColumnsDialogRow.vue","../src/core/toolbar/ColumnsDialog.vue","../src/core/toolbar/ColumnsDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Columns dialog'unda sıralanabilir satır (D22, D45): tutamaçtan fare/dokunmatik sürükleme ve klavye (Space al · ↑↓ · Space bırak · Esc).\n// useSortable DragDropProvider'ın alt bileşeninde çağrılmak zorunda; bu yüzden satır ayrı bileşen.\nimport { PhDotsSixVertical, PhPushPin } from '@phosphor-icons/vue'\nimport { useSortable } from '@dnd-kit/vue/sortable'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { ref } from 'vue'\nimport { useDataTableContext } from '../plugin'\nimport type { PanelColumn } from './ColumnsDialog.vue'\n\nconst props = defineProps<{\n column: PanelColumn\n index: number\n /** Arama süzerken sıralama kapalı: süzülmüş listede taşımak gizli satırların yerini belirsizleştirir. */\n disabled: boolean\n /** Kaydedilince sabitlenecek. */\n pinned: boolean\n}>()\nconst emit = defineEmits<{ 'update:visible': [visible: boolean] }>()\nconst { i18n } = useDataTableContext()\n\nconst element = ref<HTMLElement | null>(null)\nconst handle = ref<HTMLElement | null>(null)\nconst { isDragSource } = useSortable({\n id: () => props.column.id,\n index: () => props.index,\n disabled: () => props.disabled,\n element,\n handle,\n})\n</script>\n\n<template>\n <li\n ref=\"element\"\n class=\"dt-col-row\"\n :class=\"{ 'is-hidden': !column.visible, 'is-dragging': isDragSource }\"\n :data-col=\"column.id\"\n >\n <button\n ref=\"handle\"\n type=\"button\"\n class=\"dt-icon-btn-xs dt-col-handle\"\n :disabled=\"disabled\"\n :aria-label=\"i18n.t('columns.reorder', { column: column.def.header })\"\n >\n <PhDotsSixVertical :size=\"16\" weight=\"bold\" aria-hidden=\"true\" />\n </button>\n <span class=\"dt-col-name\">\n <span>\n {{ column.def.header }}\n <PhPushPin v-if=\"pinned\" :size=\"12\" class=\"dt-col-pin\" :aria-label=\"i18n.t('columns.pinned')\" />\n </span>\n <span v-if=\"column.def.description\" class=\"dt-col-desc\">{{ column.def.description }}</span>\n </span>\n <SwitchRoot\n class=\"dt-switch dt-col-switch\"\n :model-value=\"column.visible\"\n :disabled=\"!column.canHide\"\n :aria-label=\"column.def.header\"\n @update:model-value=\"(v) => emit('update:visible', v)\"\n >\n <SwitchThumb class=\"dt-switch-thumb\" />\n </SwitchRoot>\n </li>\n</template>\n","<script setup lang=\"ts\">\n// Columns dialog'unda sıralanabilir satır (D22, D45): tutamaçtan fare/dokunmatik sürükleme ve klavye (Space al · ↑↓ · Space bırak · Esc).\n// useSortable DragDropProvider'ın alt bileşeninde çağrılmak zorunda; bu yüzden satır ayrı bileşen.\nimport { PhDotsSixVertical, PhPushPin } from '@phosphor-icons/vue'\nimport { useSortable } from '@dnd-kit/vue/sortable'\nimport { SwitchRoot, SwitchThumb } from 'reka-ui'\nimport { ref } from 'vue'\nimport { useDataTableContext } from '../plugin'\nimport type { PanelColumn } from './ColumnsDialog.vue'\n\nconst props = defineProps<{\n column: PanelColumn\n index: number\n /** Arama süzerken sıralama kapalı: süzülmüş listede taşımak gizli satırların yerini belirsizleştirir. */\n disabled: boolean\n /** Kaydedilince sabitlenecek. */\n pinned: boolean\n}>()\nconst emit = defineEmits<{ 'update:visible': [visible: boolean] }>()\nconst { i18n } = useDataTableContext()\n\nconst element = ref<HTMLElement | null>(null)\nconst handle = ref<HTMLElement | null>(null)\nconst { isDragSource } = useSortable({\n id: () => props.column.id,\n index: () => props.index,\n disabled: () => props.disabled,\n element,\n handle,\n})\n</script>\n\n<template>\n <li\n ref=\"element\"\n class=\"dt-col-row\"\n :class=\"{ 'is-hidden': !column.visible, 'is-dragging': isDragSource }\"\n :data-col=\"column.id\"\n >\n <button\n ref=\"handle\"\n type=\"button\"\n class=\"dt-icon-btn-xs dt-col-handle\"\n :disabled=\"disabled\"\n :aria-label=\"i18n.t('columns.reorder', { column: column.def.header })\"\n >\n <PhDotsSixVertical :size=\"16\" weight=\"bold\" aria-hidden=\"true\" />\n </button>\n <span class=\"dt-col-name\">\n <span>\n {{ column.def.header }}\n <PhPushPin v-if=\"pinned\" :size=\"12\" class=\"dt-col-pin\" :aria-label=\"i18n.t('columns.pinned')\" />\n </span>\n <span v-if=\"column.def.description\" class=\"dt-col-desc\">{{ column.def.description }}</span>\n </span>\n <SwitchRoot\n class=\"dt-switch dt-col-switch\"\n :model-value=\"column.visible\"\n :disabled=\"!column.canHide\"\n :aria-label=\"column.def.header\"\n @update:model-value=\"(v) => emit('update:visible', v)\"\n >\n <SwitchThumb class=\"dt-switch-thumb\" />\n </SwitchRoot>\n </li>\n</template>\n","<script setup lang=\"ts\">\n// Manage columns dialog'u (05 §5, D45): solda konumsal sabitleme (ilk / son 0–2 sütun), sağda bul · liste (tutamaç · göster/gizle).\n// Taslak üzerinde çalışır: Save tek seferde uygular, kapatmak ya da Cancel hiçbir şeyi değiştirmez. Sıralama @dnd-kit ile\n// sürükle-bırak; klavye ve ekran okuyucu duyuruları kütüphanenin Accessibility eklentisinden, metinler i18n'den (D22 revize).\nimport { Accessibility, type Draggable } from '@dnd-kit/dom'\nimport {\n DragDropProvider,\n type DragDropProviderProps,\n type DragEndEvent,\n type DragOverEvent,\n type DragStartEvent,\n} from '@dnd-kit/vue'\nimport { isSortable } from '@dnd-kit/vue/sortable'\nimport { PhLock, PhMagnifyingGlass } from '@phosphor-icons/vue'\nimport {\n DialogClose,\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n RadioGroupIndicator,\n RadioGroupItem,\n RadioGroupRoot,\n} from 'reka-ui'\nimport { computed, ref, watch } from 'vue'\nimport type { ColumnDef } from '../../types/columns'\nimport { useDataTableContext } from '../plugin'\nimport ColumnsDialogRow from './ColumnsDialogRow.vue'\n\nexport interface PanelColumn {\n id: string\n def: ColumnDef\n visible: boolean\n pinned: 'start' | 'end' | null\n canHide: boolean\n /** Her zaman sola sabit (birincil, sheet anahtarı): listede kilitli, taşınmaz, gizlenmez. */\n fixed: boolean\n}\nexport interface ColumnsDraft {\n order: string[]\n visible: string[]\n start: number\n end: number\n}\n\nconst props = defineProps<{\n columns: PanelColumn[]\n /** Telefonda sabitleme uygulanmaz (05 §11); sol bölüm gizlenir. */\n phone?: boolean\n}>()\nconst emit = defineEmits<{\n save: [draft: ColumnsDraft]\n /** Açan popover/sayfa kapandığı için odağı nereye döndüreceğine çağıran karar verir. */\n closeAutoFocus: [e: Event]\n}>()\nconst open = defineModel<boolean>('open', { default: false })\nconst { i18n } = useDataTableContext()\n\nconst PIN_COUNTS = [0, 1, 2] as const\nconst rows = ref<PanelColumn[]>([])\nconst start = ref(0)\nconst end = ref(0)\nconst find = ref('')\nconst pinCount = (side: 'start' | 'end') =>\n Math.min(2, props.columns.filter((c) => c.pinned === side && c.visible && !c.fixed).length)\nwatch(\n open,\n (o) => {\n if (!o) return\n rows.value = props.columns.map((c) => ({ ...c }))\n start.value = pinCount('start')\n end.value = pinCount('end')\n find.value = ''\n },\n { immediate: true },\n)\n\nconst fixedRows = computed(() => rows.value.filter((c) => c.fixed))\nconst matches = (c: PanelColumn) =>\n !find.value || c.def.header.toLocaleLowerCase().includes(find.value.toLocaleLowerCase())\nconst listed = computed(() => rows.value.filter((c) => !c.fixed && matches(c)))\n/** Kaydedilince sabitlenecek sütunlar: listede raptiye ile gösterilir. */\nconst willPin = computed(() => {\n if (props.phone) return new Set<string>()\n const free = rows.value.filter((c) => c.visible && !c.fixed).map((c) => c.id)\n const left = free.slice(0, start.value)\n return new Set([...left, ...(end.value ? free.slice(left.length).slice(-end.value) : [])])\n})\nconst hideable = computed(() => rows.value.filter((c) => c.canHide && !c.fixed))\nconst allShown = computed(() => hideable.value.every((c) => c.visible))\n\n/** Bırakınca taslak sırası güncellenir (arama yokken listed = sabit olmayan tüm satırlar). */\nconst onDragEnd = ({ operation: { source }, canceled }: DragEndEvent) => {\n if (canceled || !isSortable(source) || source.initialIndex === source.index) return\n const list = [...listed.value]\n const [moved] = list.splice(source.initialIndex, 1)\n list.splice(source.index, 0, moved!)\n rows.value = [...fixedRows.value, ...list]\n}\nconst nameOf = (id: unknown) => rows.value.find((c) => c.id === id)?.def.header ?? String(id)\nconst at = ({ source }: { source: Draggable | null }) =>\n source && isSortable(source)\n ? { column: nameOf(source.id), position: source.index + 1, total: listed.value.length }\n : undefined\nconst plugins: DragDropProviderProps['plugins'] = (defaults) => [\n ...defaults.filter((p) => p !== Accessibility),\n Accessibility.configure({\n screenReaderInstructions: { draggable: i18n.t('columns.dragInstructions') },\n announcements: {\n dragstart: ({ operation }: DragStartEvent) => (at(operation) ? i18n.t('columns.dragStart', at(operation)) : undefined),\n // Kütüphanenin varsayılanı gibi: hedef kaynağın kendisiyse (yer değişmedi) duyurma.\n dragover: ({ operation }: DragOverEvent) =>\n at(operation) && operation.target?.id !== operation.source?.id\n ? i18n.t('columns.dragOver', at(operation))\n : undefined,\n dragend: ({ operation, canceled }: DragEndEvent) =>\n at(operation) ? i18n.t(canceled ? 'columns.dragCancel' : 'columns.dragEnd', at(operation)) : undefined,\n },\n }),\n]\nconst toggleAll = () => {\n const v = !allShown.value\n for (const c of hideable.value) c.visible = v\n}\nconst save = () => {\n emit('save', {\n order: rows.value.map((c) => c.id),\n visible: rows.value.filter((c) => c.visible).map((c) => c.id),\n start: props.phone ? pinCount('start') : start.value,\n end: props.phone ? pinCount('end') : end.value,\n })\n open.value = false\n}\n</script>\n\n<template>\n <DialogRoot v-model:open=\"open\">\n <DialogPortal>\n <DialogOverlay class=\"dt-scrim\" />\n <DialogContent class=\"dt-dialog dt-cols-dialog\" :class=\"{ 'is-phone': phone }\" :aria-describedby=\"undefined\"\n @close-auto-focus=\"(e: Event) => emit('closeAutoFocus', e)\"\n >\n <DialogTitle class=\"dt-sr-only\">{{ i18n.t('display.columns') }}</DialogTitle>\n <div class=\"dt-cols-body\">\n <div v-if=\"!phone\" class=\"dt-cols-pins\">\n <section v-for=\"side in ['start', 'end'] as const\" :key=\"side\" class=\"dt-cols-section\">\n <h3 :id=\"`dt-cols-${side}`\" class=\"dt-cols-title\">{{ i18n.t(`columns.pin.${side}.title`) }}</h3>\n <p class=\"dt-cols-desc\">{{ i18n.t(`columns.pin.${side}.desc`) }}</p>\n <RadioGroupRoot\n class=\"dt-radio-group\"\n :aria-labelledby=\"`dt-cols-${side}`\"\n :model-value=\"side === 'start' ? start : end\"\n @update:model-value=\"(v) => (side === 'start' ? (start = Number(v)) : (end = Number(v)))\"\n >\n <label v-for=\"n in PIN_COUNTS\" :key=\"n\" class=\"dt-radio-row\">\n <RadioGroupItem class=\"dt-radio\" :value=\"n\">\n <RadioGroupIndicator class=\"dt-radio-dot\" />\n </RadioGroupItem>\n {{ i18n.t(`columns.pin.${side}.${n}`) }}\n </label>\n </RadioGroupRoot>\n </section>\n </div>\n <section class=\"dt-cols-section dt-cols-main\">\n <h3 class=\"dt-cols-title\">\n {{ i18n.t('columns.title') }}\n <span class=\"dt-pop-value\">\n {{ i18n.t('columns.shownOf', { shown: rows.filter((c) => c.visible).length, total: rows.length }) }}\n </span>\n </h3>\n <p class=\"dt-cols-desc\">{{ i18n.t('columns.desc') }}</p>\n <label class=\"dt-input has-icon dt-cols-find\">\n <span class=\"dt-input-icon\"><PhMagnifyingGlass :size=\"14\" aria-hidden=\"true\" /></span>\n <input\n v-model=\"find\"\n type=\"search\"\n :placeholder=\"i18n.t('columns.find')\"\n :aria-label=\"i18n.t('columns.find')\"\n />\n </label>\n <ul class=\"dt-cols-list\">\n <template v-if=\"!find\">\n <li v-for=\"c in fixedRows\" :key=\"c.id\" class=\"dt-col-row is-fixed\">\n <span class=\"dt-col-name\">\n <span>{{ c.def.header }}</span>\n <span v-if=\"c.def.description\" class=\"dt-col-desc\">{{ c.def.description }}</span>\n </span>\n <PhLock :size=\"14\" class=\"dt-col-lock\" :aria-label=\"i18n.t('columns.alwaysShown')\" />\n </li>\n </template>\n <DragDropProvider :plugins=\"plugins\" @drag-end=\"onDragEnd\">\n <ColumnsDialogRow\n v-for=\"(c, i) in listed\"\n :key=\"c.id\"\n :column=\"c\"\n :index=\"i\"\n :disabled=\"!!find\"\n :pinned=\"willPin.has(c.id)\"\n @update:visible=\"(v) => (c.visible = v)\"\n />\n </DragDropProvider>\n </ul>\n </section>\n </div>\n <div class=\"dt-cols-foot\">\n <button type=\"button\" class=\"dt-btn\" @click=\"toggleAll\">\n {{ i18n.t(allShown ? 'columns.hideAll' : 'columns.showAll') }}\n </button>\n <span class=\"dt-pop-end\" />\n <DialogClose as-child>\n <button type=\"button\" class=\"dt-btn\">{{ i18n.t('common.cancel') }}</button>\n </DialogClose>\n <button type=\"button\" class=\"dt-btn dt-btn-primary\" @click=\"save\">{{ i18n.t('common.save') }}</button>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n","<script setup lang=\"ts\">\n// Manage columns dialog'u (05 §5, D45): solda konumsal sabitleme (ilk / son 0–2 sütun), sağda bul · liste (tutamaç · göster/gizle).\n// Taslak üzerinde çalışır: Save tek seferde uygular, kapatmak ya da Cancel hiçbir şeyi değiştirmez. Sıralama @dnd-kit ile\n// sürükle-bırak; klavye ve ekran okuyucu duyuruları kütüphanenin Accessibility eklentisinden, metinler i18n'den (D22 revize).\nimport { Accessibility, type Draggable } from '@dnd-kit/dom'\nimport {\n DragDropProvider,\n type DragDropProviderProps,\n type DragEndEvent,\n type DragOverEvent,\n type DragStartEvent,\n} from '@dnd-kit/vue'\nimport { isSortable } from '@dnd-kit/vue/sortable'\nimport { PhLock, PhMagnifyingGlass } from '@phosphor-icons/vue'\nimport {\n DialogClose,\n DialogContent,\n DialogOverlay,\n DialogPortal,\n DialogRoot,\n DialogTitle,\n RadioGroupIndicator,\n RadioGroupItem,\n RadioGroupRoot,\n} from 'reka-ui'\nimport { computed, ref, watch } from 'vue'\nimport type { ColumnDef } from '../../types/columns'\nimport { useDataTableContext } from '../plugin'\nimport ColumnsDialogRow from './ColumnsDialogRow.vue'\n\nexport interface PanelColumn {\n id: string\n def: ColumnDef\n visible: boolean\n pinned: 'start' | 'end' | null\n canHide: boolean\n /** Her zaman sola sabit (birincil, sheet anahtarı): listede kilitli, taşınmaz, gizlenmez. */\n fixed: boolean\n}\nexport interface ColumnsDraft {\n order: string[]\n visible: string[]\n start: number\n end: number\n}\n\nconst props = defineProps<{\n columns: PanelColumn[]\n /** Telefonda sabitleme uygulanmaz (05 §11); sol bölüm gizlenir. */\n phone?: boolean\n}>()\nconst emit = defineEmits<{\n save: [draft: ColumnsDraft]\n /** Açan popover/sayfa kapandığı için odağı nereye döndüreceğine çağıran karar verir. */\n closeAutoFocus: [e: Event]\n}>()\nconst open = defineModel<boolean>('open', { default: false })\nconst { i18n } = useDataTableContext()\n\nconst PIN_COUNTS = [0, 1, 2] as const\nconst rows = ref<PanelColumn[]>([])\nconst start = ref(0)\nconst end = ref(0)\nconst find = ref('')\nconst pinCount = (side: 'start' | 'end') =>\n Math.min(2, props.columns.filter((c) => c.pinned === side && c.visible && !c.fixed).length)\nwatch(\n open,\n (o) => {\n if (!o) return\n rows.value = props.columns.map((c) => ({ ...c }))\n start.value = pinCount('start')\n end.value = pinCount('end')\n find.value = ''\n },\n { immediate: true },\n)\n\nconst fixedRows = computed(() => rows.value.filter((c) => c.fixed))\nconst matches = (c: PanelColumn) =>\n !find.value || c.def.header.toLocaleLowerCase().includes(find.value.toLocaleLowerCase())\nconst listed = computed(() => rows.value.filter((c) => !c.fixed && matches(c)))\n/** Kaydedilince sabitlenecek sütunlar: listede raptiye ile gösterilir. */\nconst willPin = computed(() => {\n if (props.phone) return new Set<string>()\n const free = rows.value.filter((c) => c.visible && !c.fixed).map((c) => c.id)\n const left = free.slice(0, start.value)\n return new Set([...left, ...(end.value ? free.slice(left.length).slice(-end.value) : [])])\n})\nconst hideable = computed(() => rows.value.filter((c) => c.canHide && !c.fixed))\nconst allShown = computed(() => hideable.value.every((c) => c.visible))\n\n/** Bırakınca taslak sırası güncellenir (arama yokken listed = sabit olmayan tüm satırlar). */\nconst onDragEnd = ({ operation: { source }, canceled }: DragEndEvent) => {\n if (canceled || !isSortable(source) || source.initialIndex === source.index) return\n const list = [...listed.value]\n const [moved] = list.splice(source.initialIndex, 1)\n list.splice(source.index, 0, moved!)\n rows.value = [...fixedRows.value, ...list]\n}\nconst nameOf = (id: unknown) => rows.value.find((c) => c.id === id)?.def.header ?? String(id)\nconst at = ({ source }: { source: Draggable | null }) =>\n source && isSortable(source)\n ? { column: nameOf(source.id), position: source.index + 1, total: listed.value.length }\n : undefined\nconst plugins: DragDropProviderProps['plugins'] = (defaults) => [\n ...defaults.filter((p) => p !== Accessibility),\n Accessibility.configure({\n screenReaderInstructions: { draggable: i18n.t('columns.dragInstructions') },\n announcements: {\n dragstart: ({ operation }: DragStartEvent) => (at(operation) ? i18n.t('columns.dragStart', at(operation)) : undefined),\n // Kütüphanenin varsayılanı gibi: hedef kaynağın kendisiyse (yer değişmedi) duyurma.\n dragover: ({ operation }: DragOverEvent) =>\n at(operation) && operation.target?.id !== operation.source?.id\n ? i18n.t('columns.dragOver', at(operation))\n : undefined,\n dragend: ({ operation, canceled }: DragEndEvent) =>\n at(operation) ? i18n.t(canceled ? 'columns.dragCancel' : 'columns.dragEnd', at(operation)) : undefined,\n },\n }),\n]\nconst toggleAll = () => {\n const v = !allShown.value\n for (const c of hideable.value) c.visible = v\n}\nconst save = () => {\n emit('save', {\n order: rows.value.map((c) => c.id),\n visible: rows.value.filter((c) => c.visible).map((c) => c.id),\n start: props.phone ? pinCount('start') : start.value,\n end: props.phone ? pinCount('end') : end.value,\n })\n open.value = false\n}\n</script>\n\n<template>\n <DialogRoot v-model:open=\"open\">\n <DialogPortal>\n <DialogOverlay class=\"dt-scrim\" />\n <DialogContent class=\"dt-dialog dt-cols-dialog\" :class=\"{ 'is-phone': phone }\" :aria-describedby=\"undefined\"\n @close-auto-focus=\"(e: Event) => emit('closeAutoFocus', e)\"\n >\n <DialogTitle class=\"dt-sr-only\">{{ i18n.t('display.columns') }}</DialogTitle>\n <div class=\"dt-cols-body\">\n <div v-if=\"!phone\" class=\"dt-cols-pins\">\n <section v-for=\"side in ['start', 'end'] as const\" :key=\"side\" class=\"dt-cols-section\">\n <h3 :id=\"`dt-cols-${side}`\" class=\"dt-cols-title\">{{ i18n.t(`columns.pin.${side}.title`) }}</h3>\n <p class=\"dt-cols-desc\">{{ i18n.t(`columns.pin.${side}.desc`) }}</p>\n <RadioGroupRoot\n class=\"dt-radio-group\"\n :aria-labelledby=\"`dt-cols-${side}`\"\n :model-value=\"side === 'start' ? start : end\"\n @update:model-value=\"(v) => (side === 'start' ? (start = Number(v)) : (end = Number(v)))\"\n >\n <label v-for=\"n in PIN_COUNTS\" :key=\"n\" class=\"dt-radio-row\">\n <RadioGroupItem class=\"dt-radio\" :value=\"n\">\n <RadioGroupIndicator class=\"dt-radio-dot\" />\n </RadioGroupItem>\n {{ i18n.t(`columns.pin.${side}.${n}`) }}\n </label>\n </RadioGroupRoot>\n </section>\n </div>\n <section class=\"dt-cols-section dt-cols-main\">\n <h3 class=\"dt-cols-title\">\n {{ i18n.t('columns.title') }}\n <span class=\"dt-pop-value\">\n {{ i18n.t('columns.shownOf', { shown: rows.filter((c) => c.visible).length, total: rows.length }) }}\n </span>\n </h3>\n <p class=\"dt-cols-desc\">{{ i18n.t('columns.desc') }}</p>\n <label class=\"dt-input has-icon dt-cols-find\">\n <span class=\"dt-input-icon\"><PhMagnifyingGlass :size=\"14\" aria-hidden=\"true\" /></span>\n <input\n v-model=\"find\"\n type=\"search\"\n :placeholder=\"i18n.t('columns.find')\"\n :aria-label=\"i18n.t('columns.find')\"\n />\n </label>\n <ul class=\"dt-cols-list\">\n <template v-if=\"!find\">\n <li v-for=\"c in fixedRows\" :key=\"c.id\" class=\"dt-col-row is-fixed\">\n <span class=\"dt-col-name\">\n <span>{{ c.def.header }}</span>\n <span v-if=\"c.def.description\" class=\"dt-col-desc\">{{ c.def.description }}</span>\n </span>\n <PhLock :size=\"14\" class=\"dt-col-lock\" :aria-label=\"i18n.t('columns.alwaysShown')\" />\n </li>\n </template>\n <DragDropProvider :plugins=\"plugins\" @drag-end=\"onDragEnd\">\n <ColumnsDialogRow\n v-for=\"(c, i) in listed\"\n :key=\"c.id\"\n :column=\"c\"\n :index=\"i\"\n :disabled=\"!!find\"\n :pinned=\"willPin.has(c.id)\"\n @update:visible=\"(v) => (c.visible = v)\"\n />\n </DragDropProvider>\n </ul>\n </section>\n </div>\n <div class=\"dt-cols-foot\">\n <button type=\"button\" class=\"dt-btn\" @click=\"toggleAll\">\n {{ i18n.t(allShown ? 'columns.hideAll' : 'columns.showAll') }}\n </button>\n <span class=\"dt-pop-end\" />\n <DialogClose as-child>\n <button type=\"button\" class=\"dt-btn\">{{ i18n.t('common.cancel') }}</button>\n </DialogClose>\n <button type=\"button\" class=\"dt-btn dt-btn-primary\" @click=\"save\">{{ i18n.t('common.save') }}</button>\n </div>\n </DialogContent>\n </DialogPortal>\n </DialogRoot>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { W as e } from "./query-CGNWUi2E.js";
|
|
2
2
|
import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, normalizeClass as u, openBlock as d, ref as f, renderList as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
|
|
3
3
|
import { PhCaretLeft as _, PhCaretRight as v, PhCheck as y } from "@phosphor-icons/vue";
|
|
4
4
|
import { CalendarCell as ee, CalendarCellTrigger as te, CalendarGrid as ne, CalendarGridBody as re, CalendarGridHead as ie, CalendarGridRow as b, CalendarHeadCell as x, CalendarHeader as S, CalendarHeading as ae, CalendarNext as C, CalendarPrev as oe, CalendarRoot as se, RangeCalendarCell as ce, RangeCalendarCellTrigger as le, RangeCalendarGrid as ue, RangeCalendarGridBody as de, RangeCalendarGridHead as w, RangeCalendarGridRow as T, RangeCalendarHeadCell as E, RangeCalendarHeader as D, RangeCalendarHeading as O, RangeCalendarNext as k, RangeCalendarPrev as A, RangeCalendarRoot as j } from "reka-ui";
|
|
@@ -221,4 +221,4 @@ var L = { class: "dt-editor-date" }, R = { class: "dt-date-presets" }, z = ["onC
|
|
|
221
221
|
//#endregion
|
|
222
222
|
export { B as default };
|
|
223
223
|
|
|
224
|
-
//# sourceMappingURL=DateEditor-
|
|
224
|
+
//# sourceMappingURL=DateEditor-C2zzyoPQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateEditor-BTIZMwf1.js","names":["_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_unref","_createBlock","_createCommentVNode","_withCtx","_createVNode","_sfc_main","useDataTableContext","_hoisted_1","_hoisted_2","_hoisted_3","DateEditor_default","defineComponent","__emit","props","__props","emit","PRESETS","tz","getLocalTimeZone","now","today","weekStartsOn","getDayOfWeek","startOfWeek","locale","isRange","computed","obj","v","preset","custom","ref","safe","s","parseDate","rangeValue","o","single","pickPreset","p","onRange","r","onSingle","d","pickToday","openBlock","createElementBlock","createElementVNode","Fragment","renderList","normalizeClass","createTextVNode","toDisplayString","unref","i18n","createBlock","PhCheck","createCommentVNode","_cache","RangeCalendarRoot","withCtx","createVNode","RangeCalendarHeader","RangeCalendarPrev","PhCaretLeft","RangeCalendarHeading","RangeCalendarNext","PhCaretRight","grid","RangeCalendarGrid","month","RangeCalendarGridHead","RangeCalendarGridRow","weekDays","RangeCalendarHeadCell","day","RangeCalendarGridBody","week","RangeCalendarCell","RangeCalendarCellTrigger","CalendarRoot","CalendarHeader","CalendarPrev","CalendarHeading","CalendarNext","CalendarGrid","CalendarGridHead","CalendarGridRow","CalendarHeadCell","CalendarGridBody","CalendarCell","CalendarCellTrigger"],"sources":["../src/core/editors/DateEditor.vue","../src/core/editors/DateEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Tarih editörü (04 §3, T2-04): `within` → solda hazır aralıklar + Custom range, sağda aralık takvimi; `eq/before/after` →\n// Today + tek takvim. Hazır aralık tıklanınca uygulanır ve kapanır; özel aralıkta ikinci uç seçilince. Hafta başı yerel ayardan.\nimport { getDayOfWeek, getLocalTimeZone, parseDate, startOfWeek, today, type DateValue } from '@internationalized/date'\nimport { PhCaretLeft, PhCaretRight, PhCheck } from '@phosphor-icons/vue'\nimport {\n CalendarCell,\n CalendarCellTrigger,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHead,\n CalendarGridRow,\n CalendarHeadCell,\n CalendarHeader,\n CalendarHeading,\n CalendarNext,\n CalendarPrev,\n CalendarRoot,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarGrid,\n RangeCalendarGridBody,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarNext,\n RangeCalendarPrev,\n RangeCalendarRoot,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport type { DatePreset, FilterOp } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\n\nconst props = defineProps<{ op: FilterOp; modelValue: unknown }>()\nconst emit = defineEmits<{ 'update:modelValue': [value: unknown]; done: [] }>()\nconst { i18n, locale } = useDataTableContext()\n\nconst PRESETS: DatePreset[] = [\n 'today',\n 'this_week',\n 'next_7_days',\n 'this_month',\n 'last_30_days',\n 'this_quarter',\n 'overdue',\n]\nconst tz = getLocalTimeZone()\nconst now = today(tz)\nconst weekStartsOn = getDayOfWeek(startOfWeek(now, locale), 'en-US') as 0 | 1 | 2 | 3 | 4 | 5 | 6\nconst isRange = computed(() => props.op === 'within')\nconst obj = (v: unknown): Record<string, unknown> | null =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : null\nconst preset = computed(() => obj(props.modelValue)?.preset as string | undefined)\nconst custom = ref(false)\n\nconst safe = (s: unknown): DateValue | undefined => {\n try {\n return typeof s === 'string' && s ? parseDate(s.slice(0, 10)) : undefined\n } catch {\n return undefined\n }\n}\nconst rangeValue = computed(() => {\n const o = obj(props.modelValue)\n return { start: safe(o?.from), end: safe(o?.to) }\n})\nconst single = computed(() => safe(props.modelValue))\n\nconst pickPreset = (p: DatePreset) => {\n custom.value = false\n emit('update:modelValue', { preset: p })\n emit('done')\n}\nconst onRange = (r: { start: DateValue | undefined; end: DateValue | undefined } | null) => {\n if (!r?.start || !r.end) return\n emit('update:modelValue', { from: r.start.toString(), to: r.end.toString() })\n emit('done')\n}\nconst onSingle = (d: DateValue | undefined) => {\n if (!d) return\n emit('update:modelValue', d.toString())\n emit('done')\n}\nconst pickToday = () => {\n emit('update:modelValue', { preset: 'today' })\n emit('done')\n}\n</script>\n\n<template>\n <div class=\"dt-editor-date\">\n <div class=\"dt-date-presets\">\n <template v-if=\"isRange\">\n <button\n v-for=\"p in PRESETS\"\n :key=\"p\"\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === p }\"\n @click=\"pickPreset(p)\"\n >\n {{ i18n.t(`date.${p}`) }}\n <PhCheck v-if=\"preset === p\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n <div class=\"dt-pop-sep\" />\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': custom || (!preset && rangeValue.start) }\"\n @click=\"custom = true\"\n >\n {{ i18n.t('date.customRange') }}\n </button>\n </template>\n <template v-else>\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === 'today' }\"\n @click=\"pickToday\"\n >\n {{ i18n.t('date.today') }}\n <PhCheck v-if=\"preset === 'today'\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n </template>\n </div>\n <RangeCalendarRoot\n v-if=\"isRange\"\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"rangeValue.start && rangeValue.end ? { start: rangeValue.start, end: rangeValue.end } : undefined\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"rangeValue.start ?? now\"\n @update:model-value=\"onRange\"\n >\n <RangeCalendarHeader class=\"dt-cal-head\">\n <RangeCalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></RangeCalendarPrev>\n <RangeCalendarHeading class=\"dt-cal-title\" />\n <RangeCalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></RangeCalendarNext>\n </RangeCalendarHeader>\n <RangeCalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <RangeCalendarGridHead>\n <RangeCalendarGridRow>\n <RangeCalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody>\n <RangeCalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <RangeCalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <RangeCalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </RangeCalendarRoot>\n <CalendarRoot\n v-else\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"single\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"single ?? now\"\n @update:model-value=\"(d) => onSingle(d as DateValue | undefined)\"\n >\n <CalendarHeader class=\"dt-cal-head\">\n <CalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></CalendarPrev>\n <CalendarHeading class=\"dt-cal-title\" />\n <CalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></CalendarNext>\n </CalendarHeader>\n <CalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <CalendarGridHead>\n <CalendarGridRow>\n <CalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">{{ day }}</CalendarHeadCell>\n </CalendarGridRow>\n </CalendarGridHead>\n <CalendarGridBody>\n <CalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <CalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <CalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </CalendarCell>\n </CalendarGridRow>\n </CalendarGridBody>\n </CalendarGrid>\n </CalendarRoot>\n </div>\n</template>\n","<script setup lang=\"ts\">\n// Tarih editörü (04 §3, T2-04): `within` → solda hazır aralıklar + Custom range, sağda aralık takvimi; `eq/before/after` →\n// Today + tek takvim. Hazır aralık tıklanınca uygulanır ve kapanır; özel aralıkta ikinci uç seçilince. Hafta başı yerel ayardan.\nimport { getDayOfWeek, getLocalTimeZone, parseDate, startOfWeek, today, type DateValue } from '@internationalized/date'\nimport { PhCaretLeft, PhCaretRight, PhCheck } from '@phosphor-icons/vue'\nimport {\n CalendarCell,\n CalendarCellTrigger,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHead,\n CalendarGridRow,\n CalendarHeadCell,\n CalendarHeader,\n CalendarHeading,\n CalendarNext,\n CalendarPrev,\n CalendarRoot,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarGrid,\n RangeCalendarGridBody,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarNext,\n RangeCalendarPrev,\n RangeCalendarRoot,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport type { DatePreset, FilterOp } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\n\nconst props = defineProps<{ op: FilterOp; modelValue: unknown }>()\nconst emit = defineEmits<{ 'update:modelValue': [value: unknown]; done: [] }>()\nconst { i18n, locale } = useDataTableContext()\n\nconst PRESETS: DatePreset[] = [\n 'today',\n 'this_week',\n 'next_7_days',\n 'this_month',\n 'last_30_days',\n 'this_quarter',\n 'overdue',\n]\nconst tz = getLocalTimeZone()\nconst now = today(tz)\nconst weekStartsOn = getDayOfWeek(startOfWeek(now, locale), 'en-US') as 0 | 1 | 2 | 3 | 4 | 5 | 6\nconst isRange = computed(() => props.op === 'within')\nconst obj = (v: unknown): Record<string, unknown> | null =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : null\nconst preset = computed(() => obj(props.modelValue)?.preset as string | undefined)\nconst custom = ref(false)\n\nconst safe = (s: unknown): DateValue | undefined => {\n try {\n return typeof s === 'string' && s ? parseDate(s.slice(0, 10)) : undefined\n } catch {\n return undefined\n }\n}\nconst rangeValue = computed(() => {\n const o = obj(props.modelValue)\n return { start: safe(o?.from), end: safe(o?.to) }\n})\nconst single = computed(() => safe(props.modelValue))\n\nconst pickPreset = (p: DatePreset) => {\n custom.value = false\n emit('update:modelValue', { preset: p })\n emit('done')\n}\nconst onRange = (r: { start: DateValue | undefined; end: DateValue | undefined } | null) => {\n if (!r?.start || !r.end) return\n emit('update:modelValue', { from: r.start.toString(), to: r.end.toString() })\n emit('done')\n}\nconst onSingle = (d: DateValue | undefined) => {\n if (!d) return\n emit('update:modelValue', d.toString())\n emit('done')\n}\nconst pickToday = () => {\n emit('update:modelValue', { preset: 'today' })\n emit('done')\n}\n</script>\n\n<template>\n <div class=\"dt-editor-date\">\n <div class=\"dt-date-presets\">\n <template v-if=\"isRange\">\n <button\n v-for=\"p in PRESETS\"\n :key=\"p\"\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === p }\"\n @click=\"pickPreset(p)\"\n >\n {{ i18n.t(`date.${p}`) }}\n <PhCheck v-if=\"preset === p\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n <div class=\"dt-pop-sep\" />\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': custom || (!preset && rangeValue.start) }\"\n @click=\"custom = true\"\n >\n {{ i18n.t('date.customRange') }}\n </button>\n </template>\n <template v-else>\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === 'today' }\"\n @click=\"pickToday\"\n >\n {{ i18n.t('date.today') }}\n <PhCheck v-if=\"preset === 'today'\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n </template>\n </div>\n <RangeCalendarRoot\n v-if=\"isRange\"\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"rangeValue.start && rangeValue.end ? { start: rangeValue.start, end: rangeValue.end } : undefined\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"rangeValue.start ?? now\"\n @update:model-value=\"onRange\"\n >\n <RangeCalendarHeader class=\"dt-cal-head\">\n <RangeCalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></RangeCalendarPrev>\n <RangeCalendarHeading class=\"dt-cal-title\" />\n <RangeCalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></RangeCalendarNext>\n </RangeCalendarHeader>\n <RangeCalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <RangeCalendarGridHead>\n <RangeCalendarGridRow>\n <RangeCalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody>\n <RangeCalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <RangeCalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <RangeCalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </RangeCalendarRoot>\n <CalendarRoot\n v-else\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"single\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"single ?? now\"\n @update:model-value=\"(d) => onSingle(d as DateValue | undefined)\"\n >\n <CalendarHeader class=\"dt-cal-head\">\n <CalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></CalendarPrev>\n <CalendarHeading class=\"dt-cal-title\" />\n <CalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></CalendarNext>\n </CalendarHeader>\n <CalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <CalendarGridHead>\n <CalendarGridRow>\n <CalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">{{ day }}</CalendarHeadCell>\n </CalendarGridRow>\n </CalendarGridHead>\n <CalendarGridBody>\n <CalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <CalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <CalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </CalendarCell>\n </CalendarGridRow>\n </CalendarGridBody>\n </CalendarGrid>\n </CalendarRoot>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateEditor-C2zzyoPQ.js","names":["_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_normalizeClass","_createTextVNode","_toDisplayString","_unref","_createBlock","_createCommentVNode","_withCtx","_createVNode","_sfc_main","useDataTableContext","_hoisted_1","_hoisted_2","_hoisted_3","DateEditor_default","defineComponent","__emit","props","__props","emit","PRESETS","tz","getLocalTimeZone","now","today","weekStartsOn","getDayOfWeek","startOfWeek","locale","isRange","computed","obj","v","preset","custom","ref","safe","s","parseDate","rangeValue","o","single","pickPreset","p","onRange","r","onSingle","d","pickToday","openBlock","createElementBlock","createElementVNode","Fragment","renderList","normalizeClass","createTextVNode","toDisplayString","unref","i18n","createBlock","PhCheck","createCommentVNode","_cache","RangeCalendarRoot","withCtx","createVNode","RangeCalendarHeader","RangeCalendarPrev","PhCaretLeft","RangeCalendarHeading","RangeCalendarNext","PhCaretRight","grid","RangeCalendarGrid","month","RangeCalendarGridHead","RangeCalendarGridRow","weekDays","RangeCalendarHeadCell","day","RangeCalendarGridBody","week","RangeCalendarCell","RangeCalendarCellTrigger","CalendarRoot","CalendarHeader","CalendarPrev","CalendarHeading","CalendarNext","CalendarGrid","CalendarGridHead","CalendarGridRow","CalendarHeadCell","CalendarGridBody","CalendarCell","CalendarCellTrigger"],"sources":["../src/core/editors/DateEditor.vue","../src/core/editors/DateEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// Tarih editörü (04 §3, T2-04): `within` → solda hazır aralıklar + Custom range, sağda aralık takvimi; `eq/before/after` →\n// Today + tek takvim. Hazır aralık tıklanınca uygulanır ve kapanır; özel aralıkta ikinci uç seçilince. Hafta başı yerel ayardan.\nimport { getDayOfWeek, getLocalTimeZone, parseDate, startOfWeek, today, type DateValue } from '@internationalized/date'\nimport { PhCaretLeft, PhCaretRight, PhCheck } from '@phosphor-icons/vue'\nimport {\n CalendarCell,\n CalendarCellTrigger,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHead,\n CalendarGridRow,\n CalendarHeadCell,\n CalendarHeader,\n CalendarHeading,\n CalendarNext,\n CalendarPrev,\n CalendarRoot,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarGrid,\n RangeCalendarGridBody,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarNext,\n RangeCalendarPrev,\n RangeCalendarRoot,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport type { DatePreset, FilterOp } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\n\nconst props = defineProps<{ op: FilterOp; modelValue: unknown }>()\nconst emit = defineEmits<{ 'update:modelValue': [value: unknown]; done: [] }>()\nconst { i18n, locale } = useDataTableContext()\n\nconst PRESETS: DatePreset[] = [\n 'today',\n 'this_week',\n 'next_7_days',\n 'this_month',\n 'last_30_days',\n 'this_quarter',\n 'overdue',\n]\nconst tz = getLocalTimeZone()\nconst now = today(tz)\nconst weekStartsOn = getDayOfWeek(startOfWeek(now, locale), 'en-US') as 0 | 1 | 2 | 3 | 4 | 5 | 6\nconst isRange = computed(() => props.op === 'within')\nconst obj = (v: unknown): Record<string, unknown> | null =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : null\nconst preset = computed(() => obj(props.modelValue)?.preset as string | undefined)\nconst custom = ref(false)\n\nconst safe = (s: unknown): DateValue | undefined => {\n try {\n return typeof s === 'string' && s ? parseDate(s.slice(0, 10)) : undefined\n } catch {\n return undefined\n }\n}\nconst rangeValue = computed(() => {\n const o = obj(props.modelValue)\n return { start: safe(o?.from), end: safe(o?.to) }\n})\nconst single = computed(() => safe(props.modelValue))\n\nconst pickPreset = (p: DatePreset) => {\n custom.value = false\n emit('update:modelValue', { preset: p })\n emit('done')\n}\nconst onRange = (r: { start: DateValue | undefined; end: DateValue | undefined } | null) => {\n if (!r?.start || !r.end) return\n emit('update:modelValue', { from: r.start.toString(), to: r.end.toString() })\n emit('done')\n}\nconst onSingle = (d: DateValue | undefined) => {\n if (!d) return\n emit('update:modelValue', d.toString())\n emit('done')\n}\nconst pickToday = () => {\n emit('update:modelValue', { preset: 'today' })\n emit('done')\n}\n</script>\n\n<template>\n <div class=\"dt-editor-date\">\n <div class=\"dt-date-presets\">\n <template v-if=\"isRange\">\n <button\n v-for=\"p in PRESETS\"\n :key=\"p\"\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === p }\"\n @click=\"pickPreset(p)\"\n >\n {{ i18n.t(`date.${p}`) }}\n <PhCheck v-if=\"preset === p\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n <div class=\"dt-pop-sep\" />\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': custom || (!preset && rangeValue.start) }\"\n @click=\"custom = true\"\n >\n {{ i18n.t('date.customRange') }}\n </button>\n </template>\n <template v-else>\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === 'today' }\"\n @click=\"pickToday\"\n >\n {{ i18n.t('date.today') }}\n <PhCheck v-if=\"preset === 'today'\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n </template>\n </div>\n <RangeCalendarRoot\n v-if=\"isRange\"\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"rangeValue.start && rangeValue.end ? { start: rangeValue.start, end: rangeValue.end } : undefined\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"rangeValue.start ?? now\"\n @update:model-value=\"onRange\"\n >\n <RangeCalendarHeader class=\"dt-cal-head\">\n <RangeCalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></RangeCalendarPrev>\n <RangeCalendarHeading class=\"dt-cal-title\" />\n <RangeCalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></RangeCalendarNext>\n </RangeCalendarHeader>\n <RangeCalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <RangeCalendarGridHead>\n <RangeCalendarGridRow>\n <RangeCalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody>\n <RangeCalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <RangeCalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <RangeCalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </RangeCalendarRoot>\n <CalendarRoot\n v-else\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"single\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"single ?? now\"\n @update:model-value=\"(d) => onSingle(d as DateValue | undefined)\"\n >\n <CalendarHeader class=\"dt-cal-head\">\n <CalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></CalendarPrev>\n <CalendarHeading class=\"dt-cal-title\" />\n <CalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></CalendarNext>\n </CalendarHeader>\n <CalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <CalendarGridHead>\n <CalendarGridRow>\n <CalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">{{ day }}</CalendarHeadCell>\n </CalendarGridRow>\n </CalendarGridHead>\n <CalendarGridBody>\n <CalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <CalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <CalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </CalendarCell>\n </CalendarGridRow>\n </CalendarGridBody>\n </CalendarGrid>\n </CalendarRoot>\n </div>\n</template>\n","<script setup lang=\"ts\">\n// Tarih editörü (04 §3, T2-04): `within` → solda hazır aralıklar + Custom range, sağda aralık takvimi; `eq/before/after` →\n// Today + tek takvim. Hazır aralık tıklanınca uygulanır ve kapanır; özel aralıkta ikinci uç seçilince. Hafta başı yerel ayardan.\nimport { getDayOfWeek, getLocalTimeZone, parseDate, startOfWeek, today, type DateValue } from '@internationalized/date'\nimport { PhCaretLeft, PhCaretRight, PhCheck } from '@phosphor-icons/vue'\nimport {\n CalendarCell,\n CalendarCellTrigger,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHead,\n CalendarGridRow,\n CalendarHeadCell,\n CalendarHeader,\n CalendarHeading,\n CalendarNext,\n CalendarPrev,\n CalendarRoot,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarGrid,\n RangeCalendarGridBody,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarNext,\n RangeCalendarPrev,\n RangeCalendarRoot,\n} from 'reka-ui'\nimport { computed, ref } from 'vue'\nimport type { DatePreset, FilterOp } from '../../types/query'\nimport { useDataTableContext } from '../plugin'\n\nconst props = defineProps<{ op: FilterOp; modelValue: unknown }>()\nconst emit = defineEmits<{ 'update:modelValue': [value: unknown]; done: [] }>()\nconst { i18n, locale } = useDataTableContext()\n\nconst PRESETS: DatePreset[] = [\n 'today',\n 'this_week',\n 'next_7_days',\n 'this_month',\n 'last_30_days',\n 'this_quarter',\n 'overdue',\n]\nconst tz = getLocalTimeZone()\nconst now = today(tz)\nconst weekStartsOn = getDayOfWeek(startOfWeek(now, locale), 'en-US') as 0 | 1 | 2 | 3 | 4 | 5 | 6\nconst isRange = computed(() => props.op === 'within')\nconst obj = (v: unknown): Record<string, unknown> | null =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : null\nconst preset = computed(() => obj(props.modelValue)?.preset as string | undefined)\nconst custom = ref(false)\n\nconst safe = (s: unknown): DateValue | undefined => {\n try {\n return typeof s === 'string' && s ? parseDate(s.slice(0, 10)) : undefined\n } catch {\n return undefined\n }\n}\nconst rangeValue = computed(() => {\n const o = obj(props.modelValue)\n return { start: safe(o?.from), end: safe(o?.to) }\n})\nconst single = computed(() => safe(props.modelValue))\n\nconst pickPreset = (p: DatePreset) => {\n custom.value = false\n emit('update:modelValue', { preset: p })\n emit('done')\n}\nconst onRange = (r: { start: DateValue | undefined; end: DateValue | undefined } | null) => {\n if (!r?.start || !r.end) return\n emit('update:modelValue', { from: r.start.toString(), to: r.end.toString() })\n emit('done')\n}\nconst onSingle = (d: DateValue | undefined) => {\n if (!d) return\n emit('update:modelValue', d.toString())\n emit('done')\n}\nconst pickToday = () => {\n emit('update:modelValue', { preset: 'today' })\n emit('done')\n}\n</script>\n\n<template>\n <div class=\"dt-editor-date\">\n <div class=\"dt-date-presets\">\n <template v-if=\"isRange\">\n <button\n v-for=\"p in PRESETS\"\n :key=\"p\"\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === p }\"\n @click=\"pickPreset(p)\"\n >\n {{ i18n.t(`date.${p}`) }}\n <PhCheck v-if=\"preset === p\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n <div class=\"dt-pop-sep\" />\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': custom || (!preset && rangeValue.start) }\"\n @click=\"custom = true\"\n >\n {{ i18n.t('date.customRange') }}\n </button>\n </template>\n <template v-else>\n <button\n type=\"button\"\n class=\"dt-pop-item dt-date-preset\"\n :class=\"{ 'is-on': preset === 'today' }\"\n @click=\"pickToday\"\n >\n {{ i18n.t('date.today') }}\n <PhCheck v-if=\"preset === 'today'\" :size=\"14\" class=\"dt-pop-end\" aria-hidden=\"true\" />\n </button>\n </template>\n </div>\n <RangeCalendarRoot\n v-if=\"isRange\"\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"rangeValue.start && rangeValue.end ? { start: rangeValue.start, end: rangeValue.end } : undefined\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"rangeValue.start ?? now\"\n @update:model-value=\"onRange\"\n >\n <RangeCalendarHeader class=\"dt-cal-head\">\n <RangeCalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></RangeCalendarPrev>\n <RangeCalendarHeading class=\"dt-cal-title\" />\n <RangeCalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></RangeCalendarNext>\n </RangeCalendarHeader>\n <RangeCalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <RangeCalendarGridHead>\n <RangeCalendarGridRow>\n <RangeCalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody>\n <RangeCalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <RangeCalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <RangeCalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </RangeCalendarRoot>\n <CalendarRoot\n v-else\n v-slot=\"{ weekDays, grid }\"\n class=\"dt-calendar\"\n :model-value=\"single\"\n :locale=\"locale\"\n :week-starts-on=\"weekStartsOn\"\n :placeholder=\"single ?? now\"\n @update:model-value=\"(d) => onSingle(d as DateValue | undefined)\"\n >\n <CalendarHeader class=\"dt-cal-head\">\n <CalendarPrev class=\"dt-icon-btn-sm\"><PhCaretLeft :size=\"16\" aria-hidden=\"true\" /></CalendarPrev>\n <CalendarHeading class=\"dt-cal-title\" />\n <CalendarNext class=\"dt-icon-btn-sm\"><PhCaretRight :size=\"16\" aria-hidden=\"true\" /></CalendarNext>\n </CalendarHeader>\n <CalendarGrid v-for=\"month in grid\" :key=\"month.value.toString()\" class=\"dt-cal-grid\">\n <CalendarGridHead>\n <CalendarGridRow>\n <CalendarHeadCell v-for=\"day in weekDays\" :key=\"day\" class=\"dt-cal-dow\">{{ day }}</CalendarHeadCell>\n </CalendarGridRow>\n </CalendarGridHead>\n <CalendarGridBody>\n <CalendarGridRow v-for=\"(week, i) in month.rows\" :key=\"i\">\n <CalendarCell v-for=\"d in week\" :key=\"d.toString()\" :date=\"d\" class=\"dt-cal-cell\">\n <CalendarCellTrigger :day=\"d\" :month=\"month.value\" class=\"dt-cal-day\" />\n </CalendarCell>\n </CalendarGridRow>\n </CalendarGridBody>\n </CalendarGrid>\n </CalendarRoot>\n </div>\n</template>\n"],"mappings":"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"}
|