UNPKG

@aplus-frontend/ui

Version:

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