@aplus-frontend/ui
Version:
152 lines (151 loc) • 3.8 kB
JavaScript
import { isFunction as h, isUndefined as _, isNumber as K, cloneDeep as S, isArray as x, isString as z } from "lodash-unified";
import { shallowRef as A, computed as E, unref as d, isRef as N } from "vue";
import "../../utils/index.mjs";
import { arrayToObject as U } from "../editable/utils.mjs";
import { isDef as I } from "../../utils/is.mjs";
let $ = 0;
function R() {
return `_ag_grid${$++}`;
}
const P = (n, m, i, g) => {
const w = A([]), y = E(() => N(m) ? d(m) : m);
function F(u, r) {
const l = d(i)?.length || 0;
if (I(n.maxLength) && l >= n.maxLength || !u && h(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;
}
_(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 (I(n.maxLength) && l + f > n.maxLength || K(u) && h(n.rowKey))
return;
const o = K(u) ? new Array(u).fill(0).map(() => ({ [n.rowKey]: R() })) : S(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 = x(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 z(l) ? u[l] : l(u, r);
}
function L(u) {
const r = new Set(x(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 {
P as useEditableApi
};