UNPKG

@aplus-frontend/ui

Version:

182 lines (181 loc) 4.53 kB
import { isFunction as V, isUndefined as R, isNumber as F, cloneDeep as U, isArray as I } from "lodash-unified"; import { shallowRef as $, unref as h } from "vue"; import "../../utils/index.mjs"; import { getRowKey as y, arrayToObject as q } from "../editable/utils.mjs"; import { isDef as j } from "../../utils/is.mjs"; let C = 0; function k() { return `_ag_grid${C++}`; } const W = (l, c, n, w) => { const d = $([]); function L(i, t) { const v = h(n)?.length || 0; if (j(l.maxLength) && v >= l.maxLength || !i && V(l.rowKey)) return; const f = { ...i || { [l.rowKey]: k() } }; c?.setFieldValue( w, f, !1, (o, s) => { const e = y(f, void 0, l.rowKey); o[s] ? o[s][e] = f : o[s] = { [e]: f }, n.value ? R(t) ? n.value.push(f) : (d.value = n.value.map( (u, r) => r < t ? null : y(u, r, l.rowKey) ).filter(Boolean), n.value.splice(t, 0, f)) : n.value = [f], c?.setFieldValue( l.name, f, !0, (u, r) => { if (!u[r]) { u[r] = [f]; return; } R(t) ? u[r].push(f) : u[r].splice(t, 0, f); } ); } ); } function x(i, t = "suffix", v = !1) { if (!i) return; const f = h(n)?.length || 0, o = F(i) ? i : i.length; if (j(l.maxLength) && f + o > l.maxLength || F(i) && V(l.rowKey)) return; const s = F(i) ? new Array(i).fill(0).map(() => ({ [l.rowKey]: k() })) : U(i), e = q(s, l.rowKey); c?.setFieldValue( w, e, !1, (u, r) => { u[r] ? Object.assign(u[r], e) : u[r] = e, n.value ? t === "suffix" ? n.value.push(...s) : (d.value = n.value.map( (g, K) => y(g, K, l.rowKey) ), n.value.unshift(...s)) : n.value = [...s], c?.setFieldValue( l.name, s, !0, (g, K) => { if (!g[K] || v) { g[K] = [...s]; return; } t === "suffix" ? g[K].push(...s) : g[K].unshift(...s); } ); } ); } function O(i, t = "suffix") { x(i, t, !1); } function T(i) { const t = I(i) ? i : [i]; c?.setFieldValue( w, void 0, !1, (v, f) => { for (const e of t) { const u = y(e, void 0, l.rowKey); delete v[f][u]; } const o = n.value.filter( (e) => !t.includes(e) ), s = n.value.findIndex( (e) => t.includes(e) ); d.value = n.value.map( (e, u) => u <= s ? null : y(e, u, l.rowKey) ).filter(Boolean), o.length ? n.value = o : n.value.splice(0, n.value.length), c.setFieldValue( l.name, void 0, !0, (e, u) => { e[u] = o; } ); } ); } function _(i) { const t = new Set(I(i) ? i : [i]); t.size !== 0 && c?.setFieldValue( w, void 0, !1, (v, f) => { for (const e of t) delete v[f][e]; const o = n.value.filter( (e, u) => !t.has(y(e, u, l.rowKey)) ), s = n.value.findIndex( (e, u) => t.has(y(e, u, l.rowKey)) ); d.value = n.value.map( (e, u) => u <= s ? null : y(e, u, l.rowKey) ).filter(Boolean), o.length ? n.value = o : n.value.splice(0, n.value.length), c.setFieldValue( l.name, void 0, !0, (e, u) => { e[u] = o; } ); } ); } function B(i) { return h(n)?.[i]; } function z() { return h(n); } function E(i, t, v = !0) { c?.setFieldValue?.( w, void 0, !1, (f, o) => { const s = n.value.findIndex( (u, r) => i === r ); if (!~s) return; const e = y( n.value[s], s, l.rowKey ); if (e && !(!f[o] || !f[o][e])) { if (!v) { const u = Object.keys(f[o][e]); for (const r of u) r !== l.rowKey && delete f[o][e][r]; } Object.assign(f[o][e], { ...t }); } } ); } function S() { c?.setFieldValue(w, {}), c?.setFieldValue(l.name, []); } return { add: L, addMultiple: O, __addMultiple: x, remove: T, removeByKey: _, getRowData: B, getRowsData: z, setRowData: E, clear: S, refreshRowIds: d }; }; export { W as useEditableFormItemApi };