UNPKG

@aplus-frontend/ui

Version:

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