@progress/kendo-vue-grid
Version:
175 lines (174 loc) • 5.67 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import { createVNode as H } from "vue";
import { GridCell as ne } from "./cells/GridCell.mjs";
import { GridEditCell as de } from "./cells/GridEditCell.mjs";
import { getter as c, getNestedValue as g } from "@progress/kendo-vue-common";
import { resolveCells as oe, groupedFirstItemValue as re } from "./utils/main.mjs";
import { tableKeyboardNavigationTools as ie } from "@progress/kendo-vue-data-tools";
const ce = ({
leafColumns: a,
editField: l,
item: o
}) => {
if (!l)
return !1;
for (const n of a)
if (n.editable) {
const r = g(l, o.dataItem);
if (r === !0 || r === n.field)
return !0;
}
return !1;
}, fe = ({
selectedField: a,
dataItemKey: l,
select: o,
item: n
}) => {
if (a) {
const r = g(a, n.dataItem);
return typeof r == "boolean" && r;
}
if (o && l && c(l)(n.dataItem) !== void 0) {
const r = o[c(l)(n.dataItem)];
return typeof r == "boolean" && r;
}
return !1;
}, se = ({
highlight: a,
dataItemKey: l,
item: o
}) => {
if (a && l && c(l)(o.dataItem) !== void 0) {
const n = a[c(l)(o.dataItem)];
return typeof n == "boolean" && n;
}
return !1;
}, be = (a, l, o, n, r, f) => {
const {
leafColumns: I,
selectedField: y,
dataItemKey: i,
select: h,
highlight: v,
editField: S,
cellRender: $,
cells: A,
itemChange: G,
selectionChangeHandler: B,
editHandler: D,
removeHandler: P,
saveHandler: _,
cancelHandler: q,
cellClickHandler: O,
cellKeydownHandler: j,
computedCollapsed: b,
uniqueField: z,
columnsRef: J,
isRtl: x,
idPrefix: K
} = a, L = h && i && c(i)(l.dataItem) !== void 0 ? h[c(i)(l.dataItem)] : void 0, C = y ? g(y, l.dataItem) : L, T = v && i && c(i)(l.dataItem) !== void 0 ? v[c(i)(l.dataItem)] : void 0, M = ce({
leafColumns: I,
editField: S,
item: l
}), Q = fe({
selectedField: y,
dataItemKey: i,
select: h,
item: l
}), U = se({
highlight: v,
dataItemKey: i,
item: l
});
return {
row: (a.hasDynamicColSpan ? a.getCellsToRender(l.dataItem, I) : a.cellsToRender).map(({
columnIndex: s,
colSpan: W
}) => {
var E, V, F, N, R;
const e = I[s];
let u;
if ((E = e.rowSpannable) != null && E.enabled && l.rowType === "data" && e.field && f) {
const d = e.field ? (F = (V = e.rowSpannable).valueGetter) == null ? void 0 : F.call(V, l.dataItem, e.field) : null;
u = {
value: d,
count: 1
}, f[e.field] && ((N = f[e.field]) == null ? void 0 : N.value) === d && f[e.field] !== null ? (f[e.field].count++, u.count = null) : f[e.field] = u;
}
const X = `${e.className ? e.className + " " : ""}${e.locked ? "k-grid-content-sticky" : ""}`, Y = x ? {
left: e.right + "px",
right: e.left + "px"
} : {
left: e.left + "px",
right: e.right + "px"
}, Z = e.locked && (e.left !== void 0 || e.right !== void 0) ? Y : void 0;
let k = !1;
if (e.editable && S) {
const d = g(S, l.dataItem);
(d === !0 || d === e.field) && (k = !0);
}
const t = oe(A, e.cells);
let p;
l.rowType === "groupFooter" ? p = (t == null ? void 0 : t.groupFooter) || e.cell : l.rowType === "groupHeader" ? p = (t == null ? void 0 : t.groupHeader) || e.cell : (e.cell || t != null && t.data) && (p = e.cell || (t == null ? void 0 : t.data));
const w = (R = b == null ? void 0 : b[l.level]) == null ? void 0 : R.some((d) => d === re(l.dataItem, z)), ee = e.id ? e.id : s, le = w ? !w : l.expanded || l.dataItem.expanded, te = e._type === "expand", ae = ie.generateNavigatableId(`${o}-${String(s)}`, K, te || l.rowType === "groupHeader" || l.rowType === "groupFooter" || e.field === "value" ? "nodata" : "cell"), m = {
locked: e.locked,
key: ee,
id: ae,
colSpan: W,
dataItem: l.dataItem,
field: e.field || "",
editor: e.editor,
format: e.format,
readFormat: e.readFormat,
type: e.type,
columnType: e.columnType,
className: X,
render: p || $,
onChange: G,
onSelectionchange: (d) => B({
event: d,
dataItem: l.dataItem,
dataIndex: n,
columnIndex: s
}),
onCellclick: O,
onCellkeydown: j,
onEdit: D,
onRemove: P,
onSave: _,
onCancel: q,
cells: t,
columnIndex: s,
columnsCount: J.filter((d) => !d.children.length).length,
rowType: l.rowType,
level: l.level,
expanded: le,
dataIndex: l.dataIndex,
style: Z,
ariaColumnIndex: e.ariaColumnIndex,
isRtl: x,
isSelected: !!((e == null ? void 0 : e._type) === "edit" ? C : Array.isArray(C) && C.indexOf(s) > -1),
isHighlighted: !!(typeof T != "boolean" && T && (e != null && e.field) && T[e.field] === !0),
group: l.group,
rowSpan: u
};
return e.defaultCell ? H(e.defaultCell, m, null) : k ? H(de, m, null) : H(ne, m, null);
}),
isInEdit: M,
isSelected: Q,
isHighlighted: U
};
};
export {
se as calculateIsHighlighted,
ce as calculateIsInEdit,
fe as calculateIsSelected,
be as getRowContents
};