UNPKG

@progress/kendo-react-grid

Version:

React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package

619 lines (618 loc) • 26 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import * as i from "react"; import { uGrid as Bt, hasValidLicense as zt, getLicenseMessage as Wt, validatePackage as Ft, getter as G, classNames as f, WatermarkOverlay as Je } from "@progress/kendo-react-common"; import { getDetailExpandableOptions as Ot, getGroupExpandableOptions as _t, getSelectionOptions as Vt, tableKeyboardNavigationTools as M, Pager as $t, tableKeyboardNavigationBodyAttributes as jt, tableKeyboardNavigationScopeAttributes as Qe } from "@progress/kendo-react-data-tools"; import { GridHierarchyCell as Ut } from "./cells/hierarchycell/GridHierarchyCell.mjs"; import { GridEditCell as qt } from "./cells/editcell/GridEditCell.mjs"; import { Header as Jt } from "./header/Header.mjs"; import { HeaderRow as Qt } from "./header/HeaderRow.mjs"; import { FilterRow as Xt } from "./header/FilterRow.mjs"; import { GroupPanel as Yt } from "./header/GroupPanel.mjs"; import { Footer as Zt } from "./footer/Footer.mjs"; import { isRowReorderEnabled as pt, getRowSpanOptions as Xe, getColumnWidth as te, isSorted as Ye, flatData as ea, autoGenerateColumns as ta, mapColumns as aa, clientColumn as la, getColSpan as ia, resolveCells as na, readColumns as ra, getFlatColumnsState as oa, getColumnState as ae } from "./utils/index.mjs"; import { normalizeAutoProcessData as da, processData as ma } from "./utils/dataProcessing.mjs"; import { GridCell as sa } from "./cells/datacell/GridCell.mjs"; import { GridGroupCell as ca } from "./cells/groupcell/GridGroupCell.mjs"; import { GridHeaderSelectionCell as ua } from "./header/GridHeaderSelectionCell.mjs"; import { GridNoRecords as Ze } from "./components/noRecords/GridNoRecords.mjs"; import { operators as pe } from "./filterCommon.mjs"; import { FooterRow as fa } from "./footer/FooterRow.mjs"; import { normalize as ga } from "./paging/GridPagerSettings.mjs"; import { packageMetadata as le } from "./package-metadata.mjs"; import { GridDetailCell as ba } from "./cells/detailcell/GridDetailCell.mjs"; import { GridNoRecordsContainer as et } from "./components/noRecords/GridNoRecordsContainer.mjs"; import { GridClientWrapper as tt } from "./GridClientWrapper.mjs"; import { GridColGroup as ha } from "./components/colGroup/GridColGroup.mjs"; import { GridTable as Ca } from "./components/table/GridTable.mjs"; import { GridDropClue as at } from "./components/GridDropClue.mjs"; import { GridDragClue as lt } from "./components/GridDragClue.mjs"; import { GridTableBody as it } from "./components/table/GridTableBody.mjs"; import { PagerContainer as ya } from "./components/PagerContainer.mjs"; import { GridTableScrollable as wa } from "./components/table/GridTableScrollable.mjs"; import { GridElementContainer as nt } from "./components/GridElementContainer.mjs"; import { GridContainerElementContainer as Ea } from "./components/GridContainerElementContainer.mjs"; import { VirtualScrollHeightContainer as Sa } from "./components/VirtualScrollHeightContainer.mjs"; import { gridAriaLabel as rt, messages as va } from "./messages/index.mjs"; import { GridReorderableRowsContainer as Ra } from "./components/GridDraggableRowsContainer.mjs"; import { GridRowReorderCell as Ia } from "./cells/rowreordercell/GridRowReorderCell.mjs"; import { GridHeaderRowReorderCell as Ga } from "./header/client/GridHeaderRowReorderCell.mjs"; import { GridLoader as ot } from "./components/GridLoader.mjs"; import { gridPremiumFeatures as xa } from "./utils/premium.mjs"; import { LocalizationService as ka, IntlService as Na } from "@progress/kendo-react-intl"; import { getVirtualCellsToRender as Da } from "./utils/virtualColumns.mjs"; import { GridEditDialog as Ha } from "./components/GridEditDialog.mjs"; import { GridCellServer as Ta } from "./cells/datacell/GridCellServer.mjs"; import { GridEditCellServer as Ka } from "./cells/editcell/GridEditCellServer.mjs"; import { GridSelectionCellServer as La } from "./cells/selectioncell/GridSelectionCellServer.mjs"; import { GridSelectionCell as Pa } from "./cells/selectioncell/GridSelectionCell.mjs"; import { GridHierarchyCellServer as Aa } from "./cells/hierarchycell/GridHierarchyCellServer.mjs"; import { GridRowReorderCellServer as Ma } from "./cells/rowreordercell/GridRowReorderCellServer.mjs"; import { GridDetailCellServer as Ba } from "./cells/detailcell/GridDetailCellServer.mjs"; import { GridGroupCellServer as za } from "./cells/groupcell/GridGroupCellServer.mjs"; import { StackedModeColGroup as Wa } from "./stacked/StackedModeComponents.mjs"; import { GridRowRenderer as Fa } from "./rows/GridRowRenderer.mjs"; import { GridDetailRowRenderer as Oa } from "./rows/GridDetailRowRenderer.mjs"; const _a = i.forwardRef((e, dt) => { var He, Te, Ke, Le, Pe, Ae, Me, Be, ze, We, Fe, Oe; const L = e.id + "-role-element-id", x = e.navigatable ? L : ""; let C = e.columnsState || []; const mt = (t, o, r, d, a, l, m) => { const c = [], h = ea( c, t, o, { index: r }, d !== void 0, a, l, Rt.defaultExpand, m ); return { flattedData: c, resolvedGroupsCount: h }; }, st = (t) => { const o = t.filter( (r) => r && r.type && r.type.displayName === "KendoReactGridColumn" ); return ra(o, C, { prevId: 0, idPrefix: x }); }, ct = () => { const t = [], o = (r, d) => r == null ? void 0 : r.forEach((a) => { const l = a.hidden || d; t.push({ ...a, hidden: l }), o(a.children, l); }); return o(C, !1), t; }, ut = (t) => { const o = ct(); return [ t.filter((r) => { var d; return !r.hidden && !((d = o.find((a) => a.id === r.id)) != null && d.hidden); }), t.filter((r) => { var d; return r.hidden || ((d = o.find((a) => a.id === r.id)) == null ? void 0 : d.hidden); }) ]; }, ft = (t, o) => { s = st(t), s.filter((a) => !a.hidden).length === 0 && (s = ta( y, e.group, { column: D.column }, { prevId: 0, idPrefix: x } )), bt(s, o); const [r, d] = ut(s); s = r, re = d, P = aa(s, C, !0), oe = s.map(la); }, gt = (t, o) => { const r = (d) => { var l; const a = o.find((m) => m.id === d.id); if (a) { const m = { ...a }; return m.children = (l = d.children) == null ? void 0 : l.map(r), m; } return ae(d); }; C = t.filter((d) => d.parentIndex === -1).map(r); }, bt = (t, o) => { t.filter((l) => l.columnType === "checkbox").forEach((l) => { l.width = l.width || "50px", l.defaultCell = e.isClient ? Pa : La, l.defaultHeaderCell = ua, l._type = "edit"; }), T !== void 0 && t.filter((l) => l.columnType === "reorder").forEach((l) => { l.width = l.width || "50px", l.defaultCell = e.isClient ? Ia : Ma, l.defaultHeaderCell = Ga, l.sortable = !1, l.filterable = !1, l.editable = !1; }); const r = oa(C); gt(t, r); const d = { id: "", resizable: !0, width: "32px", title: " ", declarationIndex: -1, orderIndex: -1, children: [], parentIndex: -1, depth: 0, colSpan: 0, headerColSpan: 0, rowSpan: 0, left: 0, right: 0, index: 0, rightBorder: !1, ariaColumnIndex: 0, isAccessible: !0 }; let a = 0; if (D.enabled && e.detail) { const l = { ...d, _type: "expand", id: M.generateNavigatableId(`${a++}`, "expand", "column"), defaultCell: e.isClient ? Ut : Aa, field: D.column, headerClassName: f(u.hierarchyCell({})) }; t.unshift(l), C.unshift(r.find((m) => m.id === l.id) || ae(l)); } for (let l = 0; l < o; l++) { const m = { ...d, isAccessible: !1, defaultCell: e.isClient ? ca : za, id: M.generateNavigatableId(`${a++}`, "group", "column"), field: "value", locked: e.lockGroups }; t.unshift(m), C.unshift(r.find((c) => c.id === m.id) || ae(m)); } t.slice(a).forEach((l) => { l.parentIndex >= 0 && (l.parentIndex += a), l.rowSpannable = l.rowSpannable !== void 0 ? Xe(l.rowSpannable) : fe; }); }, ie = () => e.isClient ? s : oe, ne = (t) => { const o = []; let r = null, d = 0; if (g.forEach((a, l) => { let m = parseFloat((a.width || "").toString()) || 10; if (typeof (a == null ? void 0 : a.width) == "number" && (a != null && a.minResizableWidth) && (a == null ? void 0 : a.width) < (a == null ? void 0 : a.minResizableWidth) && (m = a == null ? void 0 : a.minResizableWidth), typeof (a == null ? void 0 : a.width) == "number" && (a != null && a.minWidth) && (a == null ? void 0 : a.width) < (a == null ? void 0 : a.minWidth) ? m = a == null ? void 0 : a.minWidth : typeof (a == null ? void 0 : a.width) == "number" && (a != null && a.maxWidth) && (a == null ? void 0 : a.width) > (a == null ? void 0 : a.maxWidth) && (m = a == null ? void 0 : a.maxWidth), d) { d--, r && (r.width += m); return; } const c = Math.min(ia(a, t), g.length - l); d = c - 1, r = { width: m, colSpan: c, columnIndex: l }, o.push(r); }), e.columnVirtualization) { const a = Ct.current || 0, l = yt.current || parseFloat(((e.style || {}).width || "").toString()); return Da({ cellModels: o, columns: g, tableViewPortWidth: l, scrollLeft: a }); } return o; }, ht = () => { const { pageable: t, take: o, pageSize: r } = e; if (!w) return 0; if (!t) { if (o) return o; if (r) return r; } const d = e.rowHeight || Et.current, a = wt.current; return a && d ? Math.ceil(a / d * 1.5) : 0; }; let b = [], _, s = [], re = [], oe = [], P = [[]]; const Ct = e.scrollLeftRef || { current: 0 }, yt = e.widthRef || { current: 0 }, wt = e.containerHeightRef || { current: 0 }, Et = e.minRowHeightRef || { current: 0 }, B = e.localization || new ka(e.language), St = e.intl || new Na((He = e.locale) != null ? He : "en"), H = e.unstyled, u = H && H.uGrid ? H.uGrid : Bt, T = pt(e.rowReorderable), w = e.scrollable === "virtual" || e.scrollable === void 0 && e.isClient && zt(le) || !1, k = e.dataLayoutMode === "stacked", V = ((Te = e.group) == null ? void 0 : Te.length) || 0, de = Wt(le), me = da(e.autoProcessData); let y, N; if (Array.isArray(e.data) ? (y = e.data, N = (Ke = e.total) != null ? Ke : y.length) : (y = ((Le = e.data) == null ? void 0 : Le.data) || [], N = (Me = (Ae = e.total) != null ? Ae : (Pe = e.data) == null ? void 0 : Pe.total) != null ? Me : y.length), me) { const t = ma(y, { autoProcessData: me, group: e.group, sort: e.sort, filter: e.filter, search: e.search, pageable: e.pageable, take: e.take, skip: e.skip, total: e.total, isVirtualScroll: w, includePaging: !0 }); y = t.data, N = t.total; } const z = y.length === N, { size: E } = e, vt = typeof e.groupable == "object" && e.groupable.footer || "none", W = e.groupable === !0 || typeof e.groupable == "object" && e.groupable.enabled !== !1, D = Ot(!!e.detail), Rt = _t( typeof e.groupable == "object" && e.groupable.enabled !== !1 ? e.groupable.expandable : e.groupable ), se = !!((Be = e.group) != null && Be.length), { resolvedGroupsCount: It, flattedData: Gt } = mt( y, vt, z ? 0 : e.skip || 0, e.group, e.detailExpand, e.groupExpand, e.dataItemKey ); b = Gt; const $ = ht(), j = ((ze = e.virtualSkipRef) == null ? void 0 : ze.current) || 0; let ce = N; if (w) { let t = e.skip || 0; if ((se || e.pageable) && (t = j, ce = b.length), z || se || e.pageable) if ($ === 0) { const o = Math.min(e.take || e.pageSize || 20, b.length); _ = b.slice(t, t + o); } else _ = b.slice(t, t + $); } const ue = Vt(e.selectable), fe = Xe(e.rowSpannable), xt = ue && ue.drag ? "none" : void 0, F = i.useMemo(() => i.Children.toArray(e.children), [e.children]); ft(F, It); const U = i.useMemo(() => { const t = xa(e, s); return { premium: t.length > 0, features: t }; }, [e, s]), ge = i.useMemo(() => U.premium ? !Ft(le, { component: "Grid", features: U.features }) : !1, [U.premium]), be = F.map((t) => t && t.type && t.type.displayName === "KendoReactGridToolbar" ? i.cloneElement(t, { ...t.props, _ariaControls: L, ariaLabel: "Top toolbar" }) : null), O = F.filter((t) => t && t.type && t.type.displayName === "KendoReactGridNoRecords"), he = F.filter( (t) => t && t.type && t.type.displayName === "KendoReactGridStatusBar" ), g = s.filter((t) => t.children.length === 0), Ce = W && !k && /* @__PURE__ */ i.createElement(Yt, { columns: ie(), group: e.group || [], ariaControls: L }), ye = k ? null : /* @__PURE__ */ i.createElement( Jt, { size: E, staticHeaders: e.scrollable !== "none", draggable: e.reorderable || W, headerRow: /* @__PURE__ */ i.createElement( Qt, { cells: e.cells, sort: e.sort, sortable: e.sortable, group: e.group || [], groupable: W, filter: e.filter, filterable: e.filterable, filterOperators: e.filterOperators || pe, columnMenu: e.columnMenu, columnMenuIcon: e.columnMenuIcon, columns: s, columnsMap: P, navigatable: !!e.navigatable, localization: B, unstyled: H, columnsState: C, headerSelectionValue: !!(e.select && b.filter((t) => t.rowType === "data").every( (t) => e.select && e.dataItemKey && G(e.dataItemKey)(t.dataItem) !== void 0 ? e.select[G(e.dataItemKey)(t.dataItem)] : void 0 )) } ), filterRow: e.filterable && /* @__PURE__ */ i.createElement( Xt, { cells: e.cells, size: E, columns: s, filter: e.filter, filterOperators: e.filterOperators || pe, sort: e.sort, navigatable: !!e.navigatable, ariaRowIndex: P.length + 1, localization: B } ) || void 0, cols: g.map((t, o) => /* @__PURE__ */ i.createElement("col", { key: o.toString(), width: te(t) })) } ), we = g.findIndex((t) => typeof t.colSpan == "function") > -1; let q; we || (q = ne(null)); const J = ((We = e.editable) == null ? void 0 : We.mode) === "dialog", kt = (Fe = e.editable) == null ? void 0 : Fe.enabled, Nt = (t, o, r, d, a) => { let l = !1; const m = e.select && e.dataItemKey && G(e.dataItemKey)(t.dataItem) !== void 0 ? e.select[G(e.dataItemKey)(t.dataItem)] : void 0, c = e.highlight && e.dataItemKey && G(e.dataItemKey)(t.dataItem) !== void 0 ? e.highlight[G(e.dataItemKey)(t.dataItem)] : void 0; return we && (q = ne(t.dataItem)), { row: q.map(({ columnIndex: h, colSpan: K }) => { var _e, Ve, $e, je, Ue, qe; const n = g[h], S = C[h], v = (Ve = (_e = n.locked) != null ? _e : S == null ? void 0 : S.locked) != null ? Ve : !1; let R; if (($e = n.rowSpannable) != null && $e.enabled && t.rowType === "data" && n.field && a) { const I = n.field ? (Ue = (je = n.rowSpannable).valueGetter) == null ? void 0 : Ue.call(je, t.dataItem, n.field) : null; R = { value: I, count: 1 }, a[n.field] && ((qe = a[n.field]) == null ? void 0 : qe.value) === I && a[n.field] !== null ? (a[n.field].count++, R.count = null) : a[n.field] = R; } const Z = n.id ? n.id : h, Kt = f(u.contentSticky({ locked: v }), n.className), Lt = n.left !== void 0 ? { left: n.left, right: n.right } : {}; let p = !1; if (n.editable && e.editable) { const I = e.edit && e.dataItemKey ? e.edit[G(e.dataItemKey)(t.dataItem)] : void 0, ee = typeof I == "boolean" ? I : Array.isArray(I) ? n.field && I.indexOf(n.field) > -1 : n.field !== void 0 && I === n.field; ee && n.columnType === "data" && (ee === !0 || ee === n.field) && (l = !0, J || (p = !0)); } const Pt = n._type === "expand", At = { locked: n.locked, id: M.generateNavigatableId( `${o}-${String(h)}`, x, Pt || t.rowType === "groupHeader" || t.rowType === "groupFooter" || n.field === "value" ? "nodata" : "cell" ), colSpan: K, dataItem: t.dataItem, field: n.field, editor: n.editor, format: n.format, columnType: n.columnType, rowReorderable: T, className: Kt, cells: na(e.cells, n.cells), columnIndex: h, columnsCount: g.length, rowType: t.rowType, level: t.level, expanded: t.expanded, dataIndex: t.dataIndex, rowDataIndex: r, columnPosition: Lt, style: {}, ariaColumnIndex: n.ariaColumnIndex, isSelected: !!((n == null ? void 0 : n._type) === "edit" ? m : Array.isArray(m) && m.indexOf(h) > -1), isHighlighted: !!((n == null ? void 0 : n._type) === "edit" ? c : Array.isArray(c) && c.indexOf(h) > -1), isSorted: !!Ye(n.field, e.sort), isInEdit: p, isAlt: d, unstyled: H, group: t.group, localization: B, intl: St, _rowSpan: R }, Mt = n.defaultCell || p && (e.isClient ? qt : Ka) || (e.isClient ? sa : Ta); return /* @__PURE__ */ i.createElement(Mt, { key: Z, cellProps: At }); }), isInEdit: l, isSelected: typeof m == "boolean" && m, isHighlighted: typeof c == "boolean" && c }; }, Dt = 0; let Q = null; const Ee = (t) => t >= b.length - Dt, X = [], Se = !b.length; let A = 0; if (b.length) { const t = P.length + (e.filterable ? 1 : 0) + 1; let o = e.skip || 0, r = -1, d = 0; const a = fe.enabled ? {} : void 0; if (w) { if (j > 0) { const l = b.slice(0, j).filter((m) => m.rowType === "data").length; r += l, o += l; } !e.pageable && z && (r += e.skip || 0); } (_ || b).forEach((l, m) => { var R; l.rowType === "data" && r++; const c = l.dataIndex % 2 !== 0, h = e.dataItemKey && G(e.dataItemKey)(l.dataItem), K = m + o, n = h || "ai" + K, S = n + "_1", v = Nt(l, n, r, c, a); if (A = K + t + d, J && kt && v.isInEdit && (Q = l.dataItem), X.push( /* @__PURE__ */ i.createElement( Fa, { key: n, isStackedMode: k, item: l, rowId: n, dataIndex: r, idPrefix: x, ariaRowIndex: A, absoluteRowIndex: K, isAltRow: c, isHidden: Ee(m), isRowReorderable: T, rowHeight: e.rowHeight, rows: e.rows, leafColumns: g, groupLevelCount: V, stackedLayoutSettings: e.stackedLayoutSettings, cells: e.cells, editMode: (R = e.editable) == null ? void 0 : R.mode, isSelected: v.isSelected, isHighlighted: v.isHighlighted, isInEdit: v.isInEdit && !J, preparedCells: v.row, showDetailToggle: !!e.detail && !!D.enabled, isDetailExpanded: !!l.expanded, detailExpandField: D.column } ) ), e.detail && l.rowType === "data" && l.expanded) { d++, A = K + t + d; const Z = e.isClient ? ba : Ba; X.push( /* @__PURE__ */ i.createElement( Oa, { key: S, isStackedMode: k, detailRowId: S, isHidden: Ee(m), detailRowHeight: e.detailRowHeight, ariaRowIndex: A, item: l, groupLevelCount: V, groupDescriptors: e.group, lockGroups: e.lockGroups, cells: e.cells, leafColumns: g, detailExpandableEnabled: !!D.enabled, preparedCells: v.row, DetailCell: Z, detail: e.detail, detailCellId: M.generateNavigatableId(`${S}-dcell`, x), detailHierarchyCellId: D.enabled ? M.generateNavigatableId(`${S}-dhcell`, x) : void 0, detailTrClassName: f(u.detailTr({ isAlt: c })), unstyled: H } ) ); } }); } const ve = { size: E, total: N, skip: e.skip || 0, take: (e.take !== void 0 ? e.take : e.pageSize) || 10, ...ga(e.pageable || {}) }, Re = /* @__PURE__ */ i.createElement(ya, null, e.pager ? /* @__PURE__ */ i.createElement(e.pager, { ...ve }) : /* @__PURE__ */ i.createElement($t, { className: f(u.pager({})), ...ve })), Ht = (t, o) => /* @__PURE__ */ i.createElement("col", { key: o.toString(), width: te(t) }), Ie = (Oe = e.cells) != null && Oe.footerCell || s.some((t) => { var o; return !!((o = t.cells) != null && o.footerCell); }) ? /* @__PURE__ */ i.createElement( Zt, { size: E, staticHeaders: e.scrollable !== "none", row: /* @__PURE__ */ i.createElement( fa, { cells: e.cells, idPrefix: x, columns: s, ariaRowIndex: A + 1 } ), cols: g.map(Ht) } ) : null, Ge = k ? /* @__PURE__ */ i.createElement(Wa, { groupLevelCount: V }) : /* @__PURE__ */ i.createElement(ha, null, g.map((t, o) => /* @__PURE__ */ i.createElement( "col", { key: o.toString(), className: Ye(t.field, e.sort) ? f(u.sorted({})) : void 0, width: te(t) } ))), xe = e.reorderable || W, { detail: Va, cells: $a, rows: ja, ...Tt } = e, ke = /* @__PURE__ */ i.createElement( "tbody", { role: "rowgroup", className: f(u.tbody({})), ...jt }, X ), Ne = Q ? /* @__PURE__ */ i.createElement(Ha, { columns: g, customEditDialog: e.editDialog, dataItem: Q }) : null; let Y = ke; T && (Y = /* @__PURE__ */ i.createElement( Ra, { unstyled: u, columns: s, rowReorderSettings: e.rowReorderable }, ke )); const De = { gridRef: dt, innerGrid: e.innerGrid, gridProps: Tt, columnsRef: ie(), hiddenColumnsRef: re, columnsMapRef: P, columnsState: C, dataRef: b, id: L, virtualTotal: ce, isAllData: z, virtualPageSize: $, isVirtualScroll: w, detailExpandable: !!e.detail }; return e.scrollable === "none" ? /* @__PURE__ */ i.createElement(tt, { ...De }, /* @__PURE__ */ i.createElement(nt, null, /* @__PURE__ */ i.createElement( "div", { id: e.id, style: e.style, className: f(u.wrapper({ size: E, isStackedMode: k }), e.className), ...Qe }, be, Ce, /* @__PURE__ */ i.createElement( Ca, { selectable: e.selectable, className: f(u.table({ size: E })) }, Ge, ye, /* @__PURE__ */ i.createElement(it, { rowReorderable: T }, Y), Ie ), Se && /* @__PURE__ */ i.createElement(et, null, O.length ? O : /* @__PURE__ */ i.createElement(Ze, null)), xe && /* @__PURE__ */ i.createElement(i.Fragment, null, /* @__PURE__ */ i.createElement(at, null), /* @__PURE__ */ i.createElement(lt, null)) )), he, e.pageable && Re, /* @__PURE__ */ i.createElement(ot, { loader: e.loader, showLoader: e.showLoader }), Ne, ge && /* @__PURE__ */ i.createElement(Je, { message: de })) : /* @__PURE__ */ i.createElement(tt, { ...De }, /* @__PURE__ */ i.createElement(nt, null, /* @__PURE__ */ i.createElement( "div", { id: e.id, style: e.style, className: f( u.wrapper({ size: E, virtual: w, isStackedMode: k }), e.className ), ...Qe }, be, Ce, /* @__PURE__ */ i.createElement( "div", { className: f(u.ariaRoot({})), role: "grid", "aria-colcount": g.length, "aria-rowcount": N, id: L, "aria-label": B.toLanguageString(rt, va[rt]) }, ye, /* @__PURE__ */ i.createElement("div", { className: f(u.container({})), role: "presentation" }, /* @__PURE__ */ i.createElement(Ea, null, /* @__PURE__ */ i.createElement("div", { className: f(u.content({})), role: "presentation" }, /* @__PURE__ */ i.createElement("div", { className: f(u.tableWrap({})), role: "presentation" }, /* @__PURE__ */ i.createElement( wa, { selectable: e.selectable, tableClassName: f( u.table({ size: E }) ), tableStyle: { userSelect: xt } }, Ge, /* @__PURE__ */ i.createElement(it, { rowReorderable: T }, Y) ), Se && /* @__PURE__ */ i.createElement(et, null, O.length ? O : /* @__PURE__ */ i.createElement(Ze, null))), w && /* @__PURE__ */ i.createElement( "div", { className: f(u.heightContainer({})), role: "presentation" }, /* @__PURE__ */ i.createElement(Sa, { isVirtualScroll: w }) )))), Ie, xe && /* @__PURE__ */ i.createElement(i.Fragment, null, /* @__PURE__ */ i.createElement(at, null), /* @__PURE__ */ i.createElement(lt, null)), ge && /* @__PURE__ */ i.createElement(Je, { message: de }) ), he, e.pageable && Re, /* @__PURE__ */ i.createElement(ot, { loader: e.loader, showLoader: e.showLoader }), Ne ))); }); _a.displayName = "KendoReactGridComponent"; export { _a as GridComponent };