@aplus-frontend/ui
Version:
182 lines (181 loc) • 4.53 kB
JavaScript
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
};