Files
gnezim 60e2149072 Add comprehensive e2e test suites for Tasks 16-25
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date)
- Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class
- Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting
- Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states
- Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions
- Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation

Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares)
- Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline
- Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements
- Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations
- Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary
- Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds

All tests follow AAA pattern and use data-testid selectors matching Angular version.
Total: 245 tests across 10 feature suites.
2026-04-05 19:25:03 +03:00

7687 lines
314 KiB
JavaScript

'use client';
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var PrimeReact$1 = require('primereact/api');
var componentbase = require('primereact/componentbase');
var utils = require('primereact/utils');
var hooks = require('primereact/hooks');
var arrowdown = require('primereact/icons/arrowdown');
var arrowup = require('primereact/icons/arrowup');
var spinner = require('primereact/icons/spinner');
var paginator = require('primereact/paginator');
var virtualscroller = require('primereact/virtualscroller');
var bars = require('primereact/icons/bars');
var check = require('primereact/icons/check');
var chevrondown = require('primereact/icons/chevrondown');
var chevronright = require('primereact/icons/chevronright');
var pencil = require('primereact/icons/pencil');
var times = require('primereact/icons/times');
var ripple = require('primereact/ripple');
var tooltip = require('primereact/tooltip');
var button = require('primereact/button');
var csstransition = require('primereact/csstransition');
var dropdown = require('primereact/dropdown');
var filter = require('primereact/icons/filter');
var filterslash = require('primereact/icons/filterslash');
var plus = require('primereact/icons/plus');
var trash = require('primereact/icons/trash');
var inputtext = require('primereact/inputtext');
var overlayservice = require('primereact/overlayservice');
var portal = require('primereact/portal');
var sortalt = require('primereact/icons/sortalt');
var sortamountdown = require('primereact/icons/sortamountdown');
var sortamountupalt = require('primereact/icons/sortamountupalt');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var PrimeReact__default = /*#__PURE__*/_interopDefaultLegacy(PrimeReact$1);
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function _arrayLikeToArray$1(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _arrayWithoutHoles(r) {
if (Array.isArray(r)) return _arrayLikeToArray$1(r);
}
function _iterableToArray(r) {
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
}
function _unsupportedIterableToArray$1(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray$1(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0;
}
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _toConsumableArray(r) {
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray$1(r) || _nonIterableSpread();
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray$1(r, e) || _nonIterableRest();
}
var getStorage = function getStorage(stateStorageProp) {
switch (stateStorageProp) {
case 'local':
return window.localStorage;
case 'session':
return window.sessionStorage;
case 'custom':
return null;
default:
throw new Error(stateStorageProp + ' is not a valid value for the state storage, supported values are "local", "session" and "custom".');
}
};
var ColumnBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'Column',
align: null,
alignFrozen: 'left',
alignHeader: null,
body: null,
bodyClassName: null,
bodyStyle: null,
cellEditValidateOnClose: false,
cellEditValidator: null,
cellEditValidatorEvent: 'click',
className: null,
colSpan: null,
columnKey: null,
dataType: 'text',
editor: null,
excludeGlobalFilter: false,
expander: false,
exportField: null,
exportable: true,
field: null,
filter: false,
filterApply: null,
filterClear: null,
filterElement: null,
filterField: null,
filterFooter: null,
filterFunction: null,
filterHeader: null,
filterHeaderClassName: null,
filterHeaderStyle: null,
filterMatchMode: null,
filterMatchModeOptions: null,
filterMaxLength: null,
filterMenuClassName: null,
filterMenuStyle: null,
filterPlaceholder: null,
filterType: 'text',
footer: null,
footerClassName: null,
footerStyle: null,
frozen: false,
header: null,
headerClassName: null,
headerStyle: null,
headerTooltip: null,
headerTooltipOptions: null,
hidden: false,
maxConstraints: 2,
onBeforeCellEditHide: null,
onBeforeCellEditShow: null,
onCellEditCancel: null,
onCellEditComplete: null,
onCellEditInit: null,
onFilterApplyClick: null,
onFilterClear: null,
onFilterConstraintAdd: null,
onFilterConstraintRemove: null,
onFilterMatchModeChange: null,
onFilterOperatorChange: null,
reorderable: true,
resizeable: true,
rowEditor: false,
rowReorder: false,
rowReorderIcon: null,
rowSpan: null,
selectionMode: null,
showAddButton: true,
showApplyButton: true,
showClearButton: true,
showFilterMatchModes: true,
showFilterMenu: true,
showFilterMenuOptions: true,
showFilterOperator: true,
sortField: null,
sortFunction: null,
sortable: false,
sortableDisabled: false,
style: null,
children: undefined
},
getCProp: function getCProp(column, name) {
return utils.ObjectUtils.getComponentProp(column, name, ColumnBase.defaultProps);
},
getCProps: function getCProps(column) {
return utils.ObjectUtils.getComponentProps(column, ColumnBase.defaultProps);
},
getCOtherProps: function getCOtherProps(column) {
return utils.ObjectUtils.getComponentDiffProps(column, ColumnBase.defaultProps);
}
});
function ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var styles$1 = "\n@layer primereact {\n .p-datatable {\n position: relative;\n }\n\n .p-datatable > .p-datatable-wrapper {\n overflow: auto;\n }\n\n .p-datatable-table {\n border-spacing: 0px;\n width: 100%;\n }\n\n .p-datatable .p-sortable-disabled {\n cursor: auto;\n }\n\n .p-datatable .p-sortable-column {\n cursor: pointer;\n user-select: none;\n }\n\n .p-datatable .p-sortable-column .p-column-title,\n .p-datatable .p-sortable-column .p-sortable-column-icon,\n .p-datatable .p-sortable-column .p-sortable-column-badge {\n vertical-align: middle;\n }\n\n .p-datatable .p-sortable-column .p-sortable-column-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .p-datatable-selectable .p-selectable-row,\n .p-datatable-selectable-cell .p-selectable-cell {\n cursor: pointer;\n }\n\n .p-datatable-drag-selection-helper {\n position: absolute;\n z-index: 99999999;\n }\n\n /* Scrollable */\n .p-datatable-scrollable > .p-datatable-wrapper {\n position: relative;\n }\n\n .p-datatable-scrollable-table > .p-datatable-thead {\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .p-datatable.p-datatable-gridlines .p-datatable-scrollable-table > .p-datatable-thead {\n top: -1px;\n }\n\n .p-datatable-scrollable-table > .p-datatable-frozen-tbody {\n position: sticky;\n z-index: 1;\n }\n\n .p-datatable-scrollable-table > .p-datatable-tfoot {\n position: sticky;\n bottom: 0;\n z-index: 1;\n }\n\n .p-datatable-scrollable .p-frozen-column {\n position: sticky;\n background: inherit;\n }\n\n .p-datatable-scrollable th.p-frozen-column {\n z-index: 1;\n }\n\n .p-datatable-flex-scrollable {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .p-datatable-flex-scrollable > .p-datatable-wrapper {\n display: flex;\n flex-direction: column;\n flex: 1;\n height: 100%;\n }\n\n .p-datatable-scrollable-table > .p-datatable-tbody > .p-rowgroup-header {\n position: sticky;\n z-index: 1;\n }\n\n /* Resizable */\n .p-datatable-resizable-table > .p-datatable-thead > tr > th,\n .p-datatable-resizable-table > .p-datatable-tfoot > tr > td,\n .p-datatable-resizable-table > .p-datatable-tbody > tr > td {\n overflow: hidden;\n white-space: nowrap;\n }\n\n .p-datatable-resizable-table > .p-datatable-thead > tr > th.p-resizable-column:not(.p-frozen-column) {\n background-clip: padding-box;\n position: relative;\n }\n\n .p-datatable-resizable-table-fit > .p-datatable-thead > tr > th.p-resizable-column:last-child .p-column-resizer {\n display: none;\n }\n\n .p-datatable .p-column-resizer {\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n margin: 0;\n width: 0.5rem;\n height: 100%;\n padding: 0px;\n cursor: col-resize;\n border: 1px solid transparent;\n }\n\n .p-datatable .p-column-header-content {\n display: flex;\n align-items: center;\n }\n\n .p-datatable .p-column-resizer-helper {\n width: 1px;\n position: absolute;\n z-index: 10;\n display: none;\n }\n\n .p-datatable .p-row-editor-init,\n .p-datatable .p-row-editor-save,\n .p-datatable .p-row-editor-cancel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n }\n\n /* Expand */\n .p-datatable .p-row-toggler {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n position: relative;\n }\n\n /* Reorder */\n .p-datatable-reorder-indicator-up,\n .p-datatable-reorder-indicator-down {\n position: absolute;\n display: none;\n }\n\n .p-reorderable-column,\n .p-datatable-reorderablerow-handle {\n cursor: move;\n }\n\n /* Loader */\n .p-datatable .p-datatable-loading-overlay {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n }\n\n /* Filter */\n .p-column-filter-row {\n display: flex;\n align-items: center;\n width: 100%;\n }\n\n .p-column-filter-menu {\n display: inline-flex;\n margin-left: auto;\n }\n\n .p-column-filter-row .p-column-filter-element {\n flex: 1 1 auto;\n width: 1%;\n }\n\n .p-column-filter-menu-button,\n .p-column-filter-clear-button {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n overflow: hidden;\n position: relative;\n }\n\n .p-column-filter-overlay {\n position: absolute;\n top: 0;\n left: 0;\n }\n\n .p-column-filter-row-items {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .p-column-filter-row-item {\n cursor: pointer;\n }\n\n .p-column-filter-add-button,\n .p-column-filter-remove-button {\n justify-content: center;\n }\n\n .p-column-filter-add-button .p-button-label,\n .p-column-filter-remove-button .p-button-label {\n flex-grow: 0;\n }\n\n .p-column-filter-buttonbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .p-column-filter-buttonbar .p-button:not(.p-button-icon-only) {\n width: auto;\n }\n\n /* Responsive */\n .p-datatable .p-datatable-tbody > tr > td > .p-column-title {\n display: none;\n }\n\n /* VirtualScroller */\n .p-datatable-virtualscroller-spacer {\n display: flex;\n }\n\n .p-datatable .p-virtualscroller .p-virtualscroller-loading {\n transform: none;\n min-height: 0;\n position: sticky;\n top: 0;\n left: 0;\n }\n\n /* Alignment */\n .p-datatable .p-datatable-thead > tr > th.p-align-left > .p-column-header-content,\n .p-datatable .p-datatable-tbody > tr > td.p-align-left,\n .p-datatable .p-datatable-tfoot > tr > td.p-align-left {\n text-align: left;\n justify-content: flex-start;\n }\n\n .p-datatable .p-datatable-thead > tr > th.p-align-right > .p-column-header-content,\n .p-datatable .p-datatable-tbody > tr > td.p-align-right,\n .p-datatable .p-datatable-tfoot > tr > td.p-align-right {\n text-align: right;\n justify-content: flex-end;\n }\n\n .p-datatable .p-datatable-thead > tr > th.p-align-center > .p-column-header-content,\n .p-datatable .p-datatable-tbody > tr > td.p-align-center,\n .p-datatable .p-datatable-tfoot > tr > td.p-align-center {\n text-align: center;\n justify-content: center;\n }\n}\n";
var classes$2 = {
root: function root(_ref) {
var props = _ref.props,
selectable = _ref.selectable;
return utils.classNames('p-datatable p-component', {
'p-datatable-hoverable-rows': props.rowHover,
'p-datatable-selectable': selectable && !props.cellSelection,
'p-datatable-selectable-cell': selectable && props.cellSelection,
'p-datatable-resizable': props.resizableColumns,
'p-datatable-resizable-fit': props.resizableColumns && props.columnResizeMode === 'fit',
'p-datatable-scrollable': props.scrollable,
'p-datatable-flex-scrollable': props.scrollable && props.scrollHeight === 'flex',
'p-datatable-responsive-stack': props.responsiveLayout === 'stack',
'p-datatable-responsive-scroll': props.responsiveLayout === 'scroll',
'p-datatable-striped': props.stripedRows,
'p-datatable-gridlines': props.showGridlines,
'p-datatable-grouped-header': props.headerColumnGroup != null,
'p-datatable-grouped-footer': props.footerColumnGroup != null,
'p-datatable-sm': props.size === 'small',
'p-datatable-lg': props.size === 'large'
});
},
loadingIcon: 'p-datatable-loading-icon',
loadingOverlay: 'p-datatable-loading-overlay p-component-overlay',
header: 'p-datatable-header',
wrapper: 'p-datatable-wrapper',
table: function table(_ref2) {
var props = _ref2.props;
return utils.classNames('p-datatable-table', {
'p-datatable-scrollable-table': props.scrollable,
'p-datatable-resizable-table': props.resizableColumns,
'p-datatable-resizable-table-fit': props.resizableColumns && props.columnResizeMode === 'fit'
});
},
thead: 'p-datatable-thead',
tfoot: 'p-datatable-tfoot',
footer: 'p-datatable-footer',
checkIcon: 'p-checkbox-icon',
resizeHelper: 'p-column-resizer-helper',
reorderIndicatorUp: 'p-datatable-reorder-indicator-up',
reorderIndicatorDown: 'p-datatable-reorder-indicator-down',
paginator: function paginator(_ref3) {
var position = _ref3.position;
return utils.classNames('p-paginator-' + position);
},
bodyCell: function bodyCell(_ref4) {
var selectionMode = _ref4.selectionMode,
editor = _ref4.editor,
editingState = _ref4.editingState,
frozen = _ref4.frozen,
cellSelected = _ref4.cellSelected,
align = _ref4.align,
props = _ref4.bodyProps,
getCellParams = _ref4.getCellParams;
return utils.classNames(_defineProperty({
'p-selection-column': selectionMode !== null,
'p-editable-column': editor,
'p-cell-editing': editor && editingState,
'p-frozen-column': frozen,
'p-selectable-cell': props.allowCellSelection && props.isSelectable({
data: getCellParams(),
index: props.rowIndex
}),
'p-highlight': cellSelected
}, "p-align-".concat(align), !!align));
},
columnTitle: 'p-column-title',
bodyRow: function bodyRow(_ref5) {
var props = _ref5.rowProps;
return utils.classNames({
'p-highlight': !props.allowCellSelection && props.selected || props.contextMenuSelected,
'p-highlight-contextmenu': props.contextMenuSelected,
'p-selectable-row': props.allowRowSelection && props.isSelectable({
data: props.rowData,
index: props.rowIndex
}),
'p-row-odd': props.rowIndex % 2 !== 0
});
},
rowGroupTogglerIcon: 'p-row-toggler-icon',
rowGroupToggler: 'p-row-toggler p-link',
rowGroupHeader: 'p-rowgroup-header',
rowGroupHeaderName: 'p-rowgroup-header-name',
rowGroupFooter: 'p-rowgroup-footer',
rowReorderIcon: 'p-datatable-reorderablerow-handle',
rowTogglerIcon: 'p-row-toggler-icon',
rowToggler: 'p-row-toggler p-link',
rowEditorSaveIcon: 'p-row-editor-save-icon',
rowEditorSaveButton: 'p-row-editor-save p-link',
rowEditorCancelIcon: 'p-row-editor-cancel-icon',
rowEditorCancelButton: 'p-row-editor-cancel p-link',
rowEditorInitIcon: 'p-row-editor-init-icon',
rowEditorInitButton: 'p-row-editor-init p-link',
rowExpansion: 'p-datatable-row-expansion',
virtualScrollerSpacer: function virtualScrollerSpacer(_ref6) {
var className = _ref6.className;
return className;
},
tbody: function tbody(_ref7) {
var className = _ref7.className;
return className;
},
filterInput: 'p-fluid p-column-filter-element',
filterMenuButton: function filterMenuButton(_ref8) {
var overlayVisibleState = _ref8.overlayVisibleState,
hasFilter = _ref8.hasFilter;
return utils.classNames('p-column-filter-menu-button p-link', {
'p-column-filter-menu-button-open': overlayVisibleState,
'p-column-filter-menu-button-active': hasFilter()
});
},
headerFilterClearButton: function headerFilterClearButton(_ref9) {
var hasRowFilter = _ref9.hasRowFilter;
return utils.classNames('p-column-filter-clear-button p-link', {
'p-hidden-space': !hasRowFilter()
});
},
filterSeparator: 'p-column-filter-separator',
filterRowItem: function filterRowItem(_ref10) {
var isRowMatchModeSelected = _ref10.isRowMatchModeSelected,
isShowMatchModes = _ref10.isShowMatchModes,
value = _ref10.value;
return isShowMatchModes() ? utils.classNames('p-column-filter-row-item', {
'p-highlight': value && isRowMatchModeSelected(value)
}) : undefined;
},
filterRowItems: 'p-column-filter-row-items',
filterOperator: 'p-column-filter-operator',
filterConstraints: 'p-column-filter-constraints',
filterConstraint: 'p-column-filter-constraint',
filterAddRule: 'p-column-filter-add-rule',
filterButtonBar: 'p-column-filter-buttonbar',
filterOverlay: function filterOverlay(_ref11) {
var props = _ref11.columnFilterProps,
context = _ref11.context,
getColumnProp = _ref11.getColumnProp;
return utils.classNames('p-column-filter-overlay p-component p-fluid', getColumnProp('filterMenuClassName'), {
'p-column-filter-overlay-menu': props.display === 'menu',
'p-input-filled': context && context.inputStyle === 'filled' || PrimeReact__default["default"].inputStyle === 'filled',
'p-ripple-disabled': context && context.ripple === false || PrimeReact__default["default"].ripple === false
});
},
columnFilter: function columnFilter(_ref12) {
var props = _ref12.columnFilterProps;
return utils.classNames('p-column-filter p-fluid', {
'p-column-filter-row': props.display === 'row',
'p-column-filter-menu': props.display === 'menu'
});
},
columnResizer: 'p-column-resizer',
emptyMessage: 'p-datatable-emptymessage',
sortBadge: 'p-sortable-column-badge',
sortIcon: 'p-sortable-column-icon',
headerTitle: 'p-column-title',
headerContent: 'p-column-header-content',
headerCell: function headerCell(_ref13) {
var props = _ref13.headerProps,
frozen = _ref13.frozen,
sortMeta = _ref13.sortMeta,
align = _ref13.align,
_isSortableDisabled = _ref13._isSortableDisabled,
getColumnProp = _ref13.getColumnProp;
return utils.ObjectUtils.isEmpty(props) ? utils.classNames('p-filter-column', {
'p-frozen-column': frozen
}) : utils.classNames(_defineProperty({
'p-filter-column': !props.headerColumnGroup && props.filterDisplay === 'row',
'p-sortable-column': getColumnProp('sortable'),
'p-resizable-column': props.resizableColumns && getColumnProp('resizeable'),
'p-highlight': sortMeta.sorted,
'p-frozen-column': frozen,
'p-selection-column': getColumnProp('selectionMode'),
'p-sortable-disabled': getColumnProp('sortable') && _isSortableDisabled,
'p-reorderable-column': props.reorderableColumns && getColumnProp('reorderable') && !frozen
}, "p-align-".concat(align), !!align));
},
footerCell: function footerCell(_ref14) {
var getColumnProp = _ref14.getColumnProp,
align = _ref14.align;
return utils.classNames(_defineProperty({
'p-frozen-column': getColumnProp('frozen')
}, "p-align-".concat(align), !!align));
},
transition: 'p-connected-overlay'
};
var inlineStyles = {
wrapper: {
overflow: 'auto'
},
resizeHelper: {
display: 'none'
},
reorderIndicatorUp: function reorderIndicatorUp(_ref15) {
var style = _ref15.style;
return _objectSpread$f({}, style);
},
reorderIndicatorDown: function reorderIndicatorDown(_ref16) {
var style = _ref16.style;
return _objectSpread$f({}, style);
}
};
var DataTableBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'DataTable',
alwaysShowPaginator: true,
breakpoint: '960px',
cellClassName: null,
cellMemo: true,
cellMemoProps: ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'],
cellMemoPropsDepth: 1,
cellSelection: false,
checkIcon: null,
className: null,
collapsedRowIcon: null,
columnResizeMode: 'fit',
compareSelectionBy: 'deepEquals',
contextMenuSelection: null,
csvSeparator: ',',
currentPageReportTemplate: '({currentPage} of {totalPages})',
customRestoreState: null,
customSaveState: null,
dataKey: null,
defaultSortOrder: 1,
dragSelection: false,
editMode: null,
editingRows: null,
emptyMessage: null,
expandableRowGroups: false,
expandedRowIcon: null,
expandedRows: null,
exportFilename: 'download',
exportFunction: null,
filterClearIcon: null,
filterDelay: 300,
filterDisplay: 'menu',
filterIcon: null,
filterLocale: undefined,
filters: null,
first: 0,
footer: null,
footerColumnGroup: null,
frozenRow: false,
frozenValue: null,
frozenWidth: null,
globalFilter: null,
globalFilterFields: null,
globalFilterMatchMode: PrimeReact$1.FilterMatchMode.CONTAINS,
groupRowsBy: null,
header: null,
headerColumnGroup: null,
id: null,
isDataSelectable: null,
lazy: false,
loading: false,
loadingIcon: null,
metaKeySelection: false,
multiSortMeta: null,
onAllRowsSelect: null,
onAllRowsUnselect: null,
onCellClick: null,
onCellSelect: null,
onCellUnselect: null,
onColReorder: null,
onColumnResizeEnd: null,
onColumnResizerClick: null,
onColumnResizerDoubleClick: null,
onContextMenu: null,
onContextMenuSelectionChange: null,
onFilter: null,
onPage: null,
onRowClick: null,
onRowCollapse: null,
onRowDoubleClick: null,
onRowEditCancel: null,
onRowEditChange: null,
onRowEditComplete: null,
onRowEditInit: null,
onRowEditSave: null,
onRowExpand: null,
onRowMouseEnter: null,
onRowMouseLeave: null,
onRowPointerDown: null,
onRowPointerUp: null,
onRowReorder: null,
onRowSelect: null,
onRowToggle: null,
onRowUnselect: null,
onSelectAllChange: null,
onSelectionChange: null,
onSort: null,
onStateRestore: null,
onStateSave: null,
onValueChange: null,
pageLinkSize: 5,
paginator: false,
paginatorClassName: null,
paginatorDropdownAppendTo: null,
paginatorLeft: null,
paginatorPosition: 'bottom',
paginatorRight: null,
paginatorTemplate: 'FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown',
removableSort: false,
reorderIndicatorDownIcon: null,
reorderIndicatorUpIcon: null,
reorderableColumns: false,
reorderableRows: false,
resizableColumns: false,
responsiveLayout: 'scroll',
rowClassName: null,
rowEditValidator: null,
rowEditorCancelIcon: null,
rowEditorInitIcon: null,
rowEditorSaveIcon: null,
rowExpansionTemplate: null,
rowGroupFooterTemplate: null,
rowGroupHeaderTemplate: null,
rowGroupMode: null,
rowHover: false,
rows: null,
rowsPerPageOptions: null,
scrollHeight: null,
scrollable: false,
selectAll: false,
selectOnEdit: true,
selection: null,
selectionAriaLabel: null,
selectionAutoFocus: true,
selectionMode: null,
selectionPageOnly: false,
showGridlines: false,
showHeaders: true,
showRowReorderElement: null,
showSelectAll: true,
showSelectionElement: null,
size: 'normal',
sortField: null,
sortIcon: null,
sortMode: 'single',
sortOrder: null,
stateKey: null,
stateStorage: 'session',
stripedRows: false,
style: null,
tabIndex: 0,
tableClassName: null,
tableStyle: null,
totalRecords: null,
value: null,
virtualScrollerOptions: null,
children: undefined
},
css: {
styles: styles$1,
classes: classes$2,
inlineStyles: inlineStyles
}
});
function _objectWithoutPropertiesLoose(r, e) {
if (null == r) return {};
var t = {};
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
if (-1 !== e.indexOf(n)) continue;
t[n] = r[n];
}
return t;
}
function _objectWithoutProperties(e, t) {
if (null == e) return {};
var o,
r,
i = _objectWithoutPropertiesLoose(e, t);
if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);
for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
}
return i;
}
var classes$1 = {
box: 'p-checkbox-box',
input: 'p-checkbox-input',
icon: 'p-checkbox-icon',
root: function root(_ref) {
var props = _ref.props,
checked = _ref.checked,
context = _ref.context;
return utils.classNames('p-checkbox p-component', {
'p-highlight': checked,
'p-disabled': props.disabled,
'p-invalid': props.invalid,
'p-variant-filled': props.variant ? props.variant === 'filled' : context && context.inputStyle === 'filled'
});
}
};
var CheckboxBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'Checkbox',
autoFocus: false,
checked: false,
className: null,
disabled: false,
falseValue: false,
icon: null,
id: null,
inputId: null,
inputRef: null,
invalid: false,
variant: null,
name: null,
onChange: null,
onContextMenu: null,
onMouseDown: null,
readOnly: false,
required: false,
style: null,
tabIndex: null,
tooltip: null,
tooltipOptions: null,
trueValue: true,
value: null,
children: undefined
},
css: {
classes: classes$1
}
});
function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Checkbox = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
var mergeProps = hooks.useMergeProps();
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var props = CheckboxBase.getProps(inProps, context);
var _React$useState = React__namespace.useState(false),
_React$useState2 = _slicedToArray(_React$useState, 2),
focusedState = _React$useState2[0],
setFocusedState = _React$useState2[1];
var _CheckboxBase$setMeta = CheckboxBase.setMetaData({
props: props,
state: {
focused: focusedState
},
context: {
checked: props.checked === props.trueValue,
disabled: props.disabled
}
}),
ptm = _CheckboxBase$setMeta.ptm,
cx = _CheckboxBase$setMeta.cx,
isUnstyled = _CheckboxBase$setMeta.isUnstyled;
componentbase.useHandleStyle(CheckboxBase.css.styles, isUnstyled, {
name: 'checkbox'
});
var elementRef = React__namespace.useRef(null);
var inputRef = React__namespace.useRef(props.inputRef);
var isChecked = function isChecked() {
return props.checked === props.trueValue;
};
var _onChange = function onChange(event) {
if (props.disabled || props.readOnly) {
return;
}
if (props.onChange) {
var _props$onChange;
var _checked = isChecked();
var value = _checked ? props.falseValue : props.trueValue;
var eventData = {
originalEvent: event,
value: props.value,
checked: value,
stopPropagation: function stopPropagation() {
event === null || event === void 0 || event.stopPropagation();
},
preventDefault: function preventDefault() {
event === null || event === void 0 || event.preventDefault();
},
target: {
type: 'checkbox',
name: props.name,
id: props.id,
value: props.value,
checked: value
}
};
props === null || props === void 0 || (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, eventData);
// do not continue if the user defined click wants to prevent
if (event.defaultPrevented) {
return;
}
utils.DomHandler.focus(inputRef.current);
}
};
var _onFocus = function onFocus(event) {
var _props$onFocus;
setFocusedState(true);
props === null || props === void 0 || (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, event);
};
var _onBlur = function onBlur(event) {
var _props$onBlur;
setFocusedState(false);
props === null || props === void 0 || (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, event);
};
React__namespace.useImperativeHandle(ref, function () {
return {
props: props,
focus: function focus() {
return utils.DomHandler.focus(inputRef.current);
},
getElement: function getElement() {
return elementRef.current;
},
getInput: function getInput() {
return inputRef.current;
}
};
});
React__namespace.useEffect(function () {
utils.ObjectUtils.combinedRefs(inputRef, props.inputRef);
}, [inputRef, props.inputRef]);
hooks.useUpdateEffect(function () {
inputRef.current.checked = isChecked();
}, [props.checked, props.trueValue]);
hooks.useMountEffect(function () {
if (props.autoFocus) {
utils.DomHandler.focus(inputRef.current, props.autoFocus);
}
});
var checked = isChecked();
var hasTooltip = utils.ObjectUtils.isNotEmpty(props.tooltip);
var otherProps = CheckboxBase.getOtherProps(props);
var rootProps = mergeProps({
id: props.id,
className: utils.classNames(props.className, cx('root', {
checked: checked,
context: context
})),
style: props.style,
'data-p-highlight': checked,
'data-p-disabled': props.disabled,
onContextMenu: props.onContextMenu,
onMouseDown: props.onMouseDown
}, otherProps, ptm('root'));
var createInputElement = function createInputElement() {
var ariaProps = utils.ObjectUtils.reduceKeys(otherProps, utils.DomHandler.ARIA_PROPS);
var inputProps = mergeProps(_objectSpread$e({
id: props.inputId,
type: 'checkbox',
className: cx('input'),
name: props.name,
tabIndex: props.tabIndex,
onFocus: function onFocus(e) {
return _onFocus(e);
},
onBlur: function onBlur(e) {
return _onBlur(e);
},
onChange: function onChange(e) {
return _onChange(e);
},
disabled: props.disabled,
readOnly: props.readOnly,
required: props.required,
'aria-invalid': props.invalid,
checked: checked
}, ariaProps), ptm('input'));
return /*#__PURE__*/React__namespace.createElement("input", _extends({
ref: inputRef
}, inputProps));
};
var createBoxElement = function createBoxElement() {
var iconProps = mergeProps({
className: cx('icon')
}, ptm('icon'));
var boxProps = mergeProps({
className: cx('box', {
checked: checked
}),
'data-p-highlight': checked,
'data-p-disabled': props.disabled
}, ptm('box'));
var icon = checked ? props.icon || /*#__PURE__*/React__namespace.createElement(check.CheckIcon, iconProps) : null;
var checkboxIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$e({}, iconProps), {
props: props,
checked: checked
});
return /*#__PURE__*/React__namespace.createElement("div", boxProps, checkboxIcon);
};
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: elementRef
}, rootProps), createInputElement(), createBoxElement()), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
target: elementRef,
content: props.tooltip,
pt: ptm('tooltip')
}, props.tooltipOptions)));
}));
Checkbox.displayName = 'Checkbox';
function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var RowCheckbox = /*#__PURE__*/React__namespace.memo(function (props) {
var mergeProps = hooks.useMergeProps();
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var getColumnPTOptions = function getColumnPTOptions(key) {
var columnMetaData = {
props: getColumnProps(),
parent: props.metaData,
hostName: props.hostName,
state: {},
context: {
index: props.tabIndex,
checked: props.checked,
disabled: props.disabled
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(getColumnProps(), key, columnMetaData));
};
var onChange = function onChange(event) {
if (!props.disabled) {
props.onChange(event);
}
};
var checkboxIconProps = mergeProps({
className: cx('checkIcon')
}, getColumnPTOptions('rowCheckbox.icon'));
var icon = props.checked ? props.checkIcon || /*#__PURE__*/React__namespace.createElement(check.CheckIcon, checkboxIconProps) : null;
var checkIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$d({}, checkboxIconProps), {
props: props
});
var tabIndex = props.disabled ? null : '0';
var checkboxProps = {
role: 'checkbox',
'aria-checked': props.checked,
tabIndex: tabIndex,
onChange: onChange,
'aria-label': props.ariaLabel,
checked: props.checked,
icon: checkIcon,
disabled: props.disabled,
unstyled: props.unstyled,
pt: getColumnPTOptions('rowCheckbox')
};
return /*#__PURE__*/React__namespace.createElement(Checkbox, checkboxProps);
});
RowCheckbox.displayName = 'RowCheckbox';
var classes = {
root: function root(_ref) {
var props = _ref.props,
context = _ref.context;
return utils.classNames('p-radiobutton p-component', {
'p-highlight': props.checked,
'p-disabled': props.disabled,
'p-invalid': props.invalid,
'p-variant-filled': props.variant ? props.variant === 'filled' : context && context.inputStyle === 'filled'
});
},
box: 'p-radiobutton-box',
input: 'p-radiobutton-input',
icon: 'p-radiobutton-icon'
};
var RadioButtonBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'RadioButton',
autoFocus: false,
checked: false,
className: null,
disabled: false,
id: null,
inputId: null,
inputRef: null,
invalid: false,
variant: null,
name: null,
onChange: null,
onClick: null,
required: false,
style: null,
tabIndex: null,
tooltip: null,
tooltipOptions: null,
value: null,
children: undefined
},
css: {
classes: classes
}
});
function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var RadioButton = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
var mergeProps = hooks.useMergeProps();
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var props = RadioButtonBase.getProps(inProps, context);
var elementRef = React__namespace.useRef(null);
var inputRef = React__namespace.useRef(props.inputRef);
var _RadioButtonBase$setM = RadioButtonBase.setMetaData({
props: props
}),
ptm = _RadioButtonBase$setM.ptm,
cx = _RadioButtonBase$setM.cx,
isUnstyled = _RadioButtonBase$setM.isUnstyled;
componentbase.useHandleStyle(RadioButtonBase.css.styles, isUnstyled, {
name: 'radiobutton'
});
var select = function select(event) {
onChange(event);
};
var onChange = function onChange(event) {
if (props.disabled || props.readOnly) {
return;
}
if (props.onChange) {
var checked = props.checked;
var radioClicked = event.target instanceof HTMLDivElement;
var inputClicked = event.target === inputRef.current;
var isInputToggled = inputClicked && event.target.checked !== checked;
var isRadioToggled = radioClicked && (utils.DomHandler.hasClass(elementRef.current, 'p-radiobutton-checked') === checked ? !checked : false);
var value = !checked;
var eventData = {
originalEvent: event,
value: props.value,
checked: value,
stopPropagation: function stopPropagation() {
event === null || event === void 0 || event.stopPropagation();
},
preventDefault: function preventDefault() {
event === null || event === void 0 || event.preventDefault();
},
target: {
type: 'radio',
name: props.name,
id: props.id,
value: props.value,
checked: value
}
};
if (isInputToggled || isRadioToggled) {
var _props$onChange;
props === null || props === void 0 || (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, eventData);
// do not continue if the user defined click wants to prevent
if (event.defaultPrevented) {
return;
}
if (isRadioToggled) {
inputRef.current.checked = value;
}
}
utils.DomHandler.focus(inputRef.current);
}
};
var onFocus = function onFocus(event) {
var _props$onFocus;
props === null || props === void 0 || (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, event);
};
var onBlur = function onBlur(event) {
var _props$onBlur;
props === null || props === void 0 || (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, event);
};
React__namespace.useImperativeHandle(ref, function () {
return {
props: props,
select: select,
focus: function focus() {
return utils.DomHandler.focus(inputRef.current);
},
getElement: function getElement() {
return elementRef.current;
},
getInput: function getInput() {
return inputRef.current;
}
};
});
React__namespace.useEffect(function () {
if (inputRef.current) {
inputRef.current.checked = props.checked;
}
}, [props.checked]);
React__namespace.useEffect(function () {
utils.ObjectUtils.combinedRefs(inputRef, props.inputRef);
}, [inputRef, props.inputRef]);
hooks.useMountEffect(function () {
if (props.autoFocus) {
utils.DomHandler.focus(inputRef.current, props.autoFocus);
}
});
var hasTooltip = utils.ObjectUtils.isNotEmpty(props.tooltip);
var otherProps = RadioButtonBase.getOtherProps(props);
var rootProps = mergeProps({
id: props.id,
className: utils.classNames(props.className, cx('root', {
context: context
})),
style: props.style,
'data-p-checked': props.checked
}, otherProps, ptm('root'));
delete rootProps.input;
delete rootProps.box;
delete rootProps.icon;
var createInputElement = function createInputElement() {
var ariaProps = utils.ObjectUtils.reduceKeys(otherProps, utils.DomHandler.ARIA_PROPS);
var inputProps = mergeProps(_objectSpread$c({
id: props.inputId,
type: 'radio',
name: props.name,
defaultChecked: props.checked,
onFocus: onFocus,
onBlur: onBlur,
onChange: onChange,
disabled: props.disabled,
readOnly: props.readOnly,
required: props.required,
tabIndex: props.tabIndex,
className: cx('input')
}, ariaProps), inProps.input, ptm('input'));
return /*#__PURE__*/React__namespace.createElement("input", _extends({
ref: inputRef
}, inputProps));
};
var createBoxElement = function createBoxElement() {
var boxProps = mergeProps({
className: cx('box')
}, inProps.box, ptm('box'));
var iconProps = mergeProps({
className: cx('icon')
}, inProps.icon, ptm('icon'));
return /*#__PURE__*/React__namespace.createElement("div", boxProps, /*#__PURE__*/React__namespace.createElement("div", iconProps));
};
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: elementRef
}, rootProps), createInputElement(), createBoxElement()), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
target: elementRef,
content: props.tooltip,
pt: ptm('tooltip')
}, props.tooltipOptions)));
}));
RadioButton.displayName = 'RadioButton';
var RowRadioButton = /*#__PURE__*/React__namespace.memo(function (props) {
var mergeProps = hooks.useMergeProps();
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo;
var getColumnPTOptions = function getColumnPTOptions(key) {
var columnMetaData = {
props: getColumnProps(),
parent: props.metaData,
hostName: props.hostName,
state: {},
context: {
index: props.tabIndex,
checked: props.checked,
disabled: props.disabled
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(getColumnProps(), key, columnMetaData));
};
var onChange = function onChange(event) {
if (!props.disabled) {
props.onChange(event);
}
};
var radioButtonProps = {
role: 'radio',
'aria-checked': props.checked,
checked: props.checked,
disabled: props.disabled,
name: "".concat(props.tableSelector, "_dt_radio"),
onChange: onChange,
unstyled: props.unstyled,
pt: getColumnPTOptions('rowRadioButton')
};
return /*#__PURE__*/React__namespace.createElement(RadioButton, radioButtonProps);
});
RowRadioButton.displayName = 'RowRadioButton';
function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Cell = function Cell(props) {
var mergeProps = hooks.useMergeProps();
var _React$useState = React__namespace.useState(props.editing),
_React$useState2 = _slicedToArray(_React$useState, 2),
editingState = _React$useState2[0],
setEditingState = _React$useState2[1];
var _React$useState3 = React__namespace.useState(props.rowData),
_React$useState4 = _slicedToArray(_React$useState3, 2),
editingRowDataState = _React$useState4[0],
setEditingRowDataState = _React$useState4[1];
var _React$useState5 = React__namespace.useState({}),
_React$useState6 = _slicedToArray(_React$useState5, 2),
styleObjectState = _React$useState6[0],
setStyleObjectState = _React$useState6[1];
var elementRef = React__namespace.useRef(null);
var keyHelperRef = React__namespace.useRef(null);
var focusTimeout = React__namespace.useRef(null);
var initFocusTimeout = React__namespace.useRef(null);
var editingRowDataStateRef = React__namespace.useRef(null);
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var getColumnProp = function getColumnProp(name) {
return ColumnBase.getCProp(props.column, name);
};
var getColumnPTOptions = function getColumnPTOptions(key) {
var columnMetaData = {
props: props.cProps,
parent: props.metaData,
hostName: props.hostName,
state: {
styleObject: styleObjectState,
editing: editingState,
editingRowData: editingRowDataState
},
context: {
index: props.index,
size: props.metaData.props.size,
showGridlines: props.metaData.props.showGridlines
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(props.cProps, key, columnMetaData));
};
var isEditable = function isEditable() {
return utils.ObjectUtils.isNotEmpty(props.editMode) && getColumnProp('editor');
};
var cellEditValidateOnClose = function cellEditValidateOnClose() {
return getColumnProp('cellEditValidateOnClose');
};
var isIgnoredElement = function isIgnoredElement(element) {
var isOverlay = function isOverlay(el) {
return el.getAttribute && el.getAttribute('data-pr-is-overlay');
};
return isOverlay(element) || utils.DomHandler.getParents(element).find(function (el) {
return isOverlay(el);
});
};
var _useEventListener = hooks.useEventListener({
type: 'click',
listener: function listener(e) {
if (!isIgnoredElement(e.target) && isOutsideClicked(e.target)) {
switchCellToViewMode(e, true);
}
},
options: true,
when: isEditable()
}),
_useEventListener2 = _slicedToArray(_useEventListener, 2),
bindDocumentClickListener = _useEventListener2[0],
unbindDocumentClickListener = _useEventListener2[1];
var isOutsideClicked = function isOutsideClicked(target) {
return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
};
var getStyle = function getStyle() {
var bodyStyle = getColumnProp('bodyStyle');
var columnStyle = getColumnProp('style');
return props.frozenCol ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
};
var getCellParams = function getCellParams() {
return {
value: props.resolveFieldData(),
field: props.field,
rowData: props.rowData,
rowIndex: props.rowIndex,
cellIndex: props.index,
selected: props.isCellSelected,
column: props.column,
props: props
};
};
var getCellCallbackParams = function getCellCallbackParams(event) {
var params = getCellParams();
return _objectSpread$b({
originalEvent: event
}, params);
};
var closeCell = function closeCell(event) {
var params = getCellCallbackParams(event);
var onBeforeCellEditHide = getColumnProp('onBeforeCellEditHide');
if (onBeforeCellEditHide) {
onBeforeCellEditHide(params);
}
/* When using the 'tab' key, the focus event of the next cell is not called in IE. */
setTimeout(function () {
setEditingState(false);
unbindDocumentClickListener();
}, 1);
};
var switchCellToViewMode = function switchCellToViewMode(event, submit) {
var callbackParams = getCellCallbackParams(event);
var newRowData = _objectSpread$b({}, editingRowDataStateRef.current);
var newValue = props.resolveFieldData(newRowData);
var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
newRowData: newRowData,
newValue: newValue
});
var onCellEditCancel = getColumnProp('onCellEditCancel');
var cellEditValidator = getColumnProp('cellEditValidator');
var onCellEditComplete = getColumnProp('onCellEditComplete');
if (!submit && onCellEditCancel) {
onCellEditCancel(params);
}
var valid = true;
if ((!submit || cellEditValidateOnClose()) && cellEditValidator) {
valid = cellEditValidator(params);
}
if (valid) {
if (submit && onCellEditComplete) {
onCellEditComplete(params);
}
closeCell(event);
} else {
event.preventDefault();
}
setEditingRowDataState(newRowData);
};
var editorCallback = function editorCallback(val) {
var editingRowData = _objectSpread$b({}, editingRowDataState);
utils.ObjectUtils.mutateFieldData(editingRowData, props.field, val);
setEditingRowDataState(editingRowData);
// update editing meta for complete methods on row mode
var currentData = props.getEditingRowData();
if (currentData) {
utils.ObjectUtils.mutateFieldData(currentData, props.field, val);
}
editingRowDataStateRef.current = editingRowData;
};
var _onClick = function onClick(event) {
props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, props.column, bindDocumentClickListener);
};
var _onMouseDown = function onMouseDown(event) {
var params = getCellCallbackParams(event);
props.onMouseDown && props.onMouseDown(params);
};
var _onMouseUp = function onMouseUp(event) {
var params = getCellCallbackParams(event);
props.onMouseUp && props.onMouseUp(params);
};
var _onKeyDown = function onKeyDown(event) {
if (props.editMode !== 'row') {
if (event.code === 'Enter' || event.code === 'NumpadEnter' || event.code === 'Tab') {
switchCellToViewMode(event, true);
}
if (event.code === 'Escape') {
switchCellToViewMode(event, false);
}
}
if (props.allowCellSelection) {
var target = event.target,
cell = event.currentTarget;
switch (event.code) {
case 'ArrowLeft':
var prevCell = props.findPrevSelectableCell(cell);
if (prevCell) {
changeTabIndex(cell, prevCell);
prevCell.focus();
}
event.preventDefault();
break;
case 'ArrowRight':
var nextCell = props.findNextSelectableCell(cell);
if (nextCell) {
changeTabIndex(cell, nextCell);
nextCell.focus();
}
event.preventDefault();
break;
case 'ArrowUp':
var upCell = props.findUpSelectableCell(cell, index);
if (upCell) {
changeTabIndex(cell, upCell);
upCell.focus();
}
event.preventDefault();
break;
case 'ArrowDown':
var downCell = props.findDownSelectableCell(cell, index);
if (downCell) {
changeTabIndex(cell, downCell);
downCell.focus();
}
event.preventDefault();
break;
case 'Enter':
case 'NumpadEnter':
if (event.shiftKey || event.ctrlKey) ; else if (!utils.DomHandler.isClickable(target)) {
_onClick(event);
event.preventDefault();
}
break;
case 'Space':
if (!utils.DomHandler.isClickable(target) && !target.readOnly) {
_onClick(event);
event.preventDefault();
}
break;
}
}
};
var _onBlur = function onBlur(event) {
if (props.editMode !== 'row' && editingState && getColumnProp('cellEditValidatorEvent') === 'blur') {
switchCellToViewMode(event, true);
}
};
var onEditorFocus = function onEditorFocus(event) {
_onClick(event);
};
var onRadioChange = function onRadioChange(event) {
props.onRadioChange({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var onRowToggle = function onRowToggle(event) {
props.onRowToggle({
originalEvent: event,
data: props.rowData
});
event.preventDefault();
event.stopPropagation();
};
var onRowEditInit = function onRowEditInit(event) {
props.onRowEditInit({
originalEvent: event,
data: props.rowData,
newData: props.getEditingRowData(),
field: props.field,
index: props.rowIndex
});
};
var onRowEditSave = function onRowEditSave(event) {
props.onRowEditSave({
originalEvent: event,
data: props.rowData,
newData: props.getEditingRowData(),
field: props.field,
index: props.rowIndex
});
props.focusOnInit(initFocusTimeout, elementRef);
};
var onRowEditCancel = function onRowEditCancel(event) {
props.onRowEditCancel({
originalEvent: event,
data: props.rowData,
newData: props.getEditingRowData(),
field: props.field,
index: props.rowIndex
});
props.focusOnInit(initFocusTimeout, elementRef);
};
React__namespace.useEffect(function () {
if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
if (props.editMode === 'cell' || props.editMode === 'row') props.focusOnElement(focusTimeout, editingState, elementRef, keyHelperRef);
}, [props.editMode, props.editing, editingState, props.frozenCol, props.alignFrozenCol]); // eslint-disable-line react-hooks/exhaustive-deps
React__namespace.useEffect(function () {
if (props.editMode === 'row' && props.editing !== editingState) {
setEditingState(props.editing);
}
}, [props.editMode, props.editing, editingState]);
hooks.useUpdateEffect(function () {
if (props.editMode === 'cell' || props.editMode === 'row') {
var editingRowData = props.getEditingRowData();
setEditingRowDataState(editingRowData);
editingRowDataStateRef.current = editingRowData;
}
}, [props.editingMeta]);
React__namespace.useEffect(function () {
if (props.editMode === 'cell' || props.editMode === 'row') {
var callbackParams = getCellCallbackParams();
var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
editing: editingState,
editingKey: props.editingKey
});
props.onEditingMetaChange(params);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [editingState]);
hooks.useUnmountEffect(function () {
if (editingRowDataStateRef.current) {
editingRowDataStateRef.current = null;
}
});
var createLoading = function createLoading() {
var options = props.getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
cellIndex: props.index,
cellFirst: props.index === 0,
cellLast: props.index === props.getVirtualScrollerOption('columns').length - 1,
cellEven: props.index % 2 === 0,
cellOdd: props.index % 2 !== 0,
column: props.column,
field: props.field
});
var content = utils.ObjectUtils.getJSXElement(props.getVirtualScrollerOption('loadingTemplate'), options);
var bodyCellProps = mergeProps(getColumnPTOptions('bodyCell'), {
role: 'cell'
});
return /*#__PURE__*/React__namespace.createElement("td", bodyCellProps, content);
};
var createElement = function createElement() {
var content;
var editorKeyHelper;
var cellSelected = props.allowCellSelection && props.isCellSelected;
var isRowEditor = props.editMode === 'row';
var tabIndex = props.getTabIndex(cellSelected, props.index);
var selectionMode = getColumnProp('selectionMode');
var rowReorder = getColumnProp('rowReorder');
var header = getColumnProp('header');
var body = getColumnProp('body');
var editor = getColumnProp('editor');
var frozen = props.frozenCol;
var align = getColumnProp('align');
var value = props.resolveFieldData();
var columnBodyOptions = {
column: props.column,
field: props.field,
rowIndex: props.rowIndex,
frozenRow: props.frozenRow,
props: props.tableProps
};
var rowEditor = utils.ObjectUtils.getPropValue(getColumnProp('rowEditor'), props.rowData, columnBodyOptions);
var expander = utils.ObjectUtils.getPropValue(getColumnProp('expander'), props.rowData, columnBodyOptions);
var cellClassName = utils.ObjectUtils.getPropValue(props.cellClassName, value, columnBodyOptions);
var bodyClassName = utils.ObjectUtils.getPropValue(getColumnProp('bodyClassName'), props.rowData, columnBodyOptions);
var style = getStyle();
var columnTitleProps = mergeProps({
className: cx('columnTitle')
}, getColumnPTOptions('columnTitle'));
var title = props.responsiveLayout === 'stack' && /*#__PURE__*/React__namespace.createElement("span", columnTitleProps, utils.ObjectUtils.getJSXElement(header, {
props: props.tableProps
}));
if (selectionMode) {
var showSelection = props.showSelectionElement ? props.showSelectionElement(props.rowData, {
rowIndex: props.rowIndex,
props: props.tableProps
}) : true;
var label;
if (showSelection) {
var ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
var ariaLabelText = utils.ObjectUtils.resolveFieldData(props.rowData, ariaLabelField);
label = "".concat(props.isRowSelected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
}
content = showSelection && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, selectionMode === 'single' && /*#__PURE__*/React__namespace.createElement(RowRadioButton, {
hostName: props.hostName,
column: props.column,
checked: props.isRowSelected,
disabled: !props.isSelectable({
data: props.rowData,
index: props.rowIndex
}),
onChange: onRadioChange,
tabIndex: props.tabIndex,
tableSelector: props.tableSelector,
ariaLabel: label,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: props.unstyled
}), selectionMode === 'multiple' && /*#__PURE__*/React__namespace.createElement(RowCheckbox, {
hostName: props.hostName,
column: props.column,
checked: props.isRowSelected,
disabled: !props.isSelectable({
data: props.rowData,
index: props.rowIndex
}),
onChange: props.onCheckboxChange,
tabIndex: props.tabIndex,
ariaLabel: label,
checkIcon: props.checkIcon,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: props.unstyled
}));
} else if (rowReorder) {
var showReorder = props.showRowReorderElement ? props.showRowReorderElement(props.rowData, {
rowIndex: props.rowIndex,
props: props.tableProps
}) : true;
var customIcon = getColumnProp('rowReorderIcon');
var rowReorderIconProps = mergeProps({
className: cx('rowReorderIcon')
}, customIcon ? null : getColumnPTOptions('rowReorderIcon'));
var rowReorderIcon = customIcon || /*#__PURE__*/React__namespace.createElement(bars.BarsIcon, rowReorderIconProps);
content = showReorder ? utils.IconUtils.getJSXIcon(rowReorderIcon, _objectSpread$b({}, rowReorderIconProps), {
props: props
}) : null;
} else if (expander) {
var rowTogglerIconProps = mergeProps({
className: cx('rowTogglerIcon'),
'aria-hidden': true
}, getColumnPTOptions('rowTogglerIcon'));
var icon = props.expanded ? props.expandedRowIcon || /*#__PURE__*/React__namespace.createElement(chevrondown.ChevronDownIcon, rowTogglerIconProps) : props.collapsedRowIcon || /*#__PURE__*/React__namespace.createElement(chevronright.ChevronRightIcon, rowTogglerIconProps);
var togglerIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$b({}, rowTogglerIconProps), {
props: props
});
var ariaControls = "".concat(props.tableSelector, "_content_").concat(props.rowIndex, "_expanded");
var _ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
var _ariaLabelText = utils.ObjectUtils.resolveFieldData(props.rowData, _ariaLabelField);
var _label = "".concat(props.expanded ? PrimeReact$1.ariaLabel('collapseLabel') : PrimeReact$1.ariaLabel('expandLabel'), " ").concat(_ariaLabelText);
var expanderProps = {
onClick: onRowToggle,
className: cx('rowToggler')
};
var rowTogglerProps = mergeProps(_objectSpread$b(_objectSpread$b({}, expanderProps), {}, {
type: 'button',
'aria-expanded': props.expanded,
'aria-controls': ariaControls,
tabIndex: props.tabIndex,
'aria-label': _label
}), getColumnPTOptions('rowToggler'));
content = /*#__PURE__*/React__namespace.createElement("button", rowTogglerProps, togglerIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
if (body) {
expanderProps.element = content;
content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
column: props.column,
field: props.field,
rowIndex: props.rowIndex,
frozenRow: props.frozenRow,
props: props.tableProps,
expander: expanderProps
});
}
} else if (isRowEditor && rowEditor) {
var rowEditorProps = {};
var rowEditorSaveIconProps = mergeProps({
className: cx('rowEditorSaveIcon')
}, getColumnPTOptions('rowEditorSaveIcon'));
var rowEditorCancelIconProps = mergeProps({
className: cx('rowEditorCancelIcon')
}, getColumnPTOptions('rowEditorCancelIcon'));
var rowEditorInitIconProps = mergeProps({
className: cx('rowEditorInitIcon')
}, getColumnPTOptions('rowEditorInitIcon'));
var rowEditorSaveIcon = utils.IconUtils.getJSXIcon(props.rowEditorSaveIcon || /*#__PURE__*/React__namespace.createElement(check.CheckIcon, rowEditorSaveIconProps), _objectSpread$b({}, rowEditorSaveIconProps), {
props: props
});
var rowEditorCancelIcon = utils.IconUtils.getJSXIcon(props.rowEditorCancelIcon || /*#__PURE__*/React__namespace.createElement(times.TimesIcon, rowEditorCancelIconProps), _objectSpread$b({}, rowEditorCancelIconProps), {
props: props
});
var rowEditorInitIcon = utils.IconUtils.getJSXIcon(props.rowEditorInitIcon || /*#__PURE__*/React__namespace.createElement(pencil.PencilIcon, rowEditorInitIconProps), _objectSpread$b({}, rowEditorInitIconProps), {
props: props
});
if (editingState) {
rowEditorProps = {
editing: true,
onSaveClick: onRowEditSave,
saveClassName: cx('rowEditorSaveButton'),
onCancelClick: onRowEditCancel,
cancelClassName: cx('rowEditorCancelButton')
};
var rowEditorSaveButtonProps = mergeProps({
type: 'button',
name: 'row-save',
'aria-label': PrimeReact$1.ariaLabel('saveEdit'),
onClick: rowEditorProps.onSaveClick,
className: rowEditorProps.saveClassName,
tabIndex: props.tabIndex,
'data-p-row-editor-save': true
}, getColumnPTOptions('rowEditorSaveButton'));
var rowEditorCancelButtonProps = mergeProps({
type: 'button',
name: 'row-cancel',
'aria-label': PrimeReact$1.ariaLabel('cancelEdit'),
onClick: rowEditorProps.onCancelClick,
className: rowEditorProps.cancelClassName,
tabIndex: props.tabIndex
}, getColumnPTOptions('rowEditorCancelButton'));
content = /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("button", rowEditorSaveButtonProps, rowEditorSaveIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)), /*#__PURE__*/React__namespace.createElement("button", rowEditorCancelButtonProps, rowEditorCancelIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null)));
} else {
rowEditorProps = {
editing: false,
onInitClick: onRowEditInit,
initClassName: cx('rowEditorInitButton')
};
var rowEditorInitButtonProps = mergeProps({
type: 'button',
name: 'row-edit',
'aria-label': PrimeReact$1.ariaLabel('editRow'),
onClick: rowEditorProps.onInitClick,
className: rowEditorProps.initClassName,
tabIndex: props.tabIndex,
'data-p-row-editor-init': true
}, getColumnPTOptions('rowEditorInitButton'));
content = /*#__PURE__*/React__namespace.createElement("button", rowEditorInitButtonProps, rowEditorInitIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
}
if (body) {
rowEditorProps.element = content;
content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
column: props.column,
field: props.field,
rowIndex: props.rowIndex,
frozenRow: props.frozenRow,
props: props.tableProps,
rowEditor: rowEditorProps
});
}
} else if (body && (!editingState || !editor)) {
content = body ? utils.ObjectUtils.getJSXElement(body, props.rowData, {
column: props.column,
field: props.field,
rowIndex: props.rowIndex,
frozenRow: props.frozenRow,
props: props.tableProps
}) : value;
} else if (editor && editingState) {
content = utils.ObjectUtils.getJSXElement(editor, {
rowData: editingRowDataState,
value: props.resolveFieldData(editingRowDataState),
column: props.column,
field: props.field,
rowIndex: props.rowIndex,
frozenRow: props.frozenRow,
props: props.tableProps,
editorCallback: editorCallback
});
} else {
content = value;
}
content = typeof content === 'boolean' ? content.toString() : content;
if (!isRowEditor && editor) {
var editorKeyHelperProps = mergeProps({
tabIndex: '0',
className: 'p-cell-editor-key-helper p-hidden-accessible',
onFocus: function onFocus(e) {
return onEditorFocus(e);
}
}, getColumnPTOptions('editorKeyHelperLabel'));
var editorKeyHelperLabelProps = mergeProps(getColumnPTOptions('editorKeyHelper'));
/* eslint-disable */
editorKeyHelper = /*#__PURE__*/React__namespace.createElement("a", _extends({
ref: keyHelperRef
}, editorKeyHelperProps), /*#__PURE__*/React__namespace.createElement("span", editorKeyHelperLabelProps));
/* eslint-enable */
}
var bodyCellProps = mergeProps({
style: style,
className: utils.classNames(bodyClassName, getColumnProp('className'), cellClassName, cx('bodyCell', {
selectionMode: selectionMode,
editor: editor,
editingState: editingState,
frozen: frozen,
cellSelected: cellSelected,
align: align,
bodyProps: props,
getCellParams: getCellParams
})),
rowSpan: props.rowSpan,
tabIndex: tabIndex,
role: 'cell',
onClick: function onClick(e) {
return _onClick(e);
},
onKeyDown: function onKeyDown(e) {
return _onKeyDown(e);
},
onBlur: function onBlur(e) {
return _onBlur(e);
},
onMouseDown: function onMouseDown(e) {
return _onMouseDown(e);
},
onMouseUp: function onMouseUp(e) {
return _onMouseUp(e);
},
'data-p-selectable-cell': props.allowCellSelection && props.isSelectable({
data: getCellParams(),
index: props.rowIndex
}),
'data-p-selection-column': getColumnProp('selectionMode') != null,
'data-p-editable-column': isEditable() != null,
'data-p-cell-editing': editingState,
'data-p-frozen-column': frozen
}, getColumnPTOptions('root'), getColumnPTOptions('bodyCell'));
return /*#__PURE__*/React__namespace.createElement("td", _extends({
ref: elementRef
}, bodyCellProps), editorKeyHelper, title, content);
};
return props.getVirtualScrollerOption('loading') ? createLoading() : createElement();
};
// RadioCheckCell is used for the Radio and Checkbox selection and has the isRowSelected dependency
var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
return /*#__PURE__*/React__namespace.createElement(Cell, props);
}, function (prevProps, nextProps) {
if (nextProps.cellMemo === false) return false;
var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
});
RadioCheckCell.displayName = 'RadioCheckCell';
var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
return /*#__PURE__*/React__namespace.createElement(Cell, props);
}, function (prevProps, nextProps) {
if (nextProps.cellMemo === false) return false;
var memoProps = nextProps.cellMemoProps;
var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
return typeof prop === 'string';
}) ? memoProps : defaultKeysToCompare;
var memoPropsDepth = nextProps.cellMemoPropsDepth;
var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
});
BodyCell.displayName = 'BodyCell';
function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
var mergeProps = hooks.useMergeProps();
var _React$useState = React__namespace.useState(false),
_React$useState2 = _slicedToArray(_React$useState, 2),
editingState = _React$useState2[0],
setEditingState = _React$useState2[1];
var editing = props.onRowEditChange ? props.editing : editingState;
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
cx = _props$ptCallbacks.cx;
var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
return ptm(key, {
parent: props.metaData,
hostName: props.hostName,
state: {
editing: editing
},
context: {
index: props.index,
selectable: props.allowRowSelection && props.isSelectable({
data: props.rowData,
index: props.rowIndex
}),
selected: isRowSelected,
stripedRows: props.metaData.props.stripedRows
}
});
};
var getColumnProp = function getColumnProp(column, name) {
return ColumnBase.getCProp(column, name);
};
var isFocusable = function isFocusable() {
return props.selectionMode && props.selectionModeInColumn !== 'single' && props.selectionModeInColumn !== 'multiple';
};
var isGrouped = function isGrouped(column) {
var columnField = getColumnProp(column, 'field');
if (props.groupRowsBy && columnField) {
return Array.isArray(props.groupRowsBy) ? props.groupRowsBy.indexOf(columnField) > -1 : props.groupRowsBy === columnField;
}
return false;
};
var equals = function equals(data1, data2) {
return props.compareSelectionBy === 'equals' ? data1 === data2 : utils.ObjectUtils.equals(data1, data2, props.dataKey);
};
var getTabIndex = function getTabIndex() {
return isFocusable() && !props.allowCellSelection ? props.rowIndex === 0 ? props.tabIndex : -1 : null;
};
var findIndex = function findIndex(collection, rowData) {
return (collection || []).findIndex(function (data) {
return equals(rowData, data);
});
};
var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
if (currentElement && nextElement) {
currentElement.tabIndex = -1;
nextElement.tabIndex = props.tabIndex;
}
};
var findFirstSelectableRow = function findFirstSelectableRow(row) {
var firstRow = utils.DomHandler.findSingle(row.parentNode, 'tr[data-p-selectable-row]');
return firstRow ? firstRow : null;
};
var _findNextSelectableRow = function findNextSelectableRow(row) {
var nextRow = row.nextElementSibling;
return nextRow ? utils.DomHandler.getAttribute(nextRow, 'data-p-selectable-row') === true ? nextRow : _findNextSelectableRow(nextRow) : null;
};
var _findPrevSelectableRow = function findPrevSelectableRow(row) {
var prevRow = row.previousElementSibling;
return prevRow ? utils.DomHandler.getAttribute(prevRow, 'data-p-selectable-row') === true ? prevRow : _findPrevSelectableRow(prevRow) : null;
};
var findLastSelectableRow = function findLastSelectableRow(row) {
var lastRow = utils.DomHandler.findSingle(row.parentNode, 'tr[data-p-selectable-row]:last-child');
return lastRow ? lastRow : null;
};
var shouldRenderBodyCell = function shouldRenderBodyCell(value, column, i) {
if (getColumnProp(column, 'hidden')) {
return false;
} else if (props.rowGroupMode && props.rowGroupMode === 'rowspan' && isGrouped(column)) {
var prevRowData = value[i - 1];
if (prevRowData) {
var currentRowFieldData = utils.ObjectUtils.resolveFieldData(value[i], getColumnProp(column, 'field'));
var previousRowFieldData = utils.ObjectUtils.resolveFieldData(prevRowData, getColumnProp(column, 'field'));
return currentRowFieldData !== previousRowFieldData;
}
}
return true;
};
var calculateRowGroupSize = function calculateRowGroupSize(value, column, index) {
if (isGrouped(column)) {
var currentRowFieldData = utils.ObjectUtils.resolveFieldData(value[index], getColumnProp(column, 'field'));
var nextRowFieldData = currentRowFieldData;
var groupRowSpan = 0;
while (currentRowFieldData === nextRowFieldData) {
groupRowSpan++;
var nextRowData = value[++index];
if (nextRowData) {
nextRowFieldData = utils.ObjectUtils.resolveFieldData(nextRowData, getColumnProp(column, 'field'));
} else {
break;
}
}
return groupRowSpan === 1 ? null : groupRowSpan;
}
return null;
};
var _onClick = function onClick(event) {
props.onRowClick({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDoubleClick = function onDoubleClick(event) {
props.onRowDoubleClick({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onPointerDown = function onPointerDown(event) {
props.onRowPointerDown({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onPointerUp = function onPointerUp(event) {
props.onRowPointerUp({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var onRightClick = function onRightClick(event) {
props.onRowRightClick({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onMouseEnter = function onMouseEnter(event) {
props.onRowMouseEnter({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onMouseLeave = function onMouseLeave(event) {
props.onRowMouseLeave({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onTouchEnd = function onTouchEnd(event) {
props.onRowTouchEnd(event);
};
var _onKeyDown = function onKeyDown(event) {
if (isFocusable() && !props.allowCellSelection) {
var target = event.target,
row = event.currentTarget;
switch (event.code) {
case 'ArrowDown':
onArrowDownKey(row, event);
break;
case 'ArrowUp':
onArrowUpKey(row, event);
break;
case 'Home':
onHomeKey(row, event);
break;
case 'End':
onEndKey(row, event);
break;
case 'Enter':
case 'NumpadEnter':
onEnterKey(row, event, target);
break;
case 'Space':
onSpaceKey(row, event, target);
break;
case 'Tab':
onTabKey(row, event);
break;
}
}
};
var onArrowDownKey = function onArrowDownKey(row, event) {
var nextRow = _findNextSelectableRow(row);
if (nextRow) {
changeTabIndex(row, nextRow);
nextRow.focus();
}
event.preventDefault();
};
var onArrowUpKey = function onArrowUpKey(row, event) {
var prevRow = _findPrevSelectableRow(row);
if (prevRow) {
changeTabIndex(row, prevRow);
prevRow.focus();
}
event.preventDefault();
};
var onHomeKey = function onHomeKey(row, event) {
var firstRow = findFirstSelectableRow(row);
if (firstRow) {
changeTabIndex(row, firstRow);
firstRow.focus();
}
event.preventDefault();
};
var onEndKey = function onEndKey(row, event) {
var lastRow = findLastSelectableRow(row);
if (lastRow) {
changeTabIndex(row, lastRow);
lastRow.focus();
}
event.preventDefault();
};
var onEnterKey = function onEnterKey(row, event, target) {
if (!utils.DomHandler.isClickable(target)) {
_onClick(event);
event.preventDefault();
}
};
var onSpaceKey = function onSpaceKey(row, event, target) {
if (!utils.DomHandler.isClickable(target) && !target.readOnly) {
_onClick(event);
event.preventDefault();
}
};
var onTabKey = function onTabKey(row, event) {
var parent = row.parentNode;
var rows = utils.DomHandler.find(parent, 'tr[data-p-selectable-row="true"]');
if (event.code === 'Tab' && rows && rows.length > 0) {
var firstSelectedRow = utils.DomHandler.findSingle(parent, 'tr[data-p-highlight="true"]');
var focusedItem = utils.DomHandler.findSingle(parent, 'tr[data-p-selectable-row="true"][tabindex="0"]');
if (firstSelectedRow) {
firstSelectedRow.tabIndex = '0';
focusedItem && focusedItem !== firstSelectedRow && (focusedItem.tabIndex = '-1');
} else {
rows[0].tabIndex = '0';
focusedItem !== rows[0] && (rows[props.rowIndex].tabIndex = '-1');
}
}
};
var _onMouseDown = function onMouseDown(event) {
props.onRowMouseDown({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onMouseUp = function onMouseUp(event) {
props.onRowMouseUp({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDragStart = function onDragStart(event) {
props.onRowDragStart({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDragOver = function onDragOver(event) {
props.onRowDragOver({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDragLeave = function onDragLeave(event) {
props.onRowDragLeave({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDragEnd = function onDragEnd(event) {
props.onRowDragEnd({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var _onDrop = function onDrop(event) {
props.onRowDrop({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var onEditChange = function onEditChange(e, isEditing) {
if (props.onRowEditChange) {
var editingRows;
var dataKey = props.dataKey;
var originalEvent = e.originalEvent,
data = e.data,
index = e.index,
newData = e.newData;
if (dataKey) {
var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(data, dataKey));
editingRows = props.editingRows ? _objectSpread$a({}, props.editingRows) : {};
if (!isEditing) {
delete editingRows[dataKeyValue];
// if the key value was changed, stop editing for the new key value too
var newDataKeyValue = String(utils.ObjectUtils.resolveFieldData(newData, dataKey));
delete editingRows[newDataKeyValue];
} else {
editingRows[dataKeyValue] = true;
}
} else {
var editingRowIndex = findIndex(props.editingRows, data);
editingRows = props.editingRows ? _toConsumableArray(props.editingRows) : [];
if (editingRowIndex !== -1) {
editingRows = editingRows.filter(function (val, i) {
return i !== editingRowIndex;
});
} else {
editingRows.push(data);
}
}
props.onRowEditChange({
originalEvent: originalEvent,
data: editingRows,
index: index
});
} else {
setEditingState(isEditing);
}
};
var onEditInit = function onEditInit(e) {
var event = e.originalEvent;
if (props.onRowEditInit) {
props.onRowEditInit({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
}
onEditChange(e, true);
event.preventDefault();
};
var onEditSave = function onEditSave(e) {
var event = e.originalEvent,
newData = e.newData;
var valid = props.rowEditValidator ? props.rowEditValidator(newData, {
props: props.tableProps,
rowIndex: props.rowIndex
}) : true;
if (props.onRowEditSave) {
props.onRowEditSave({
originalEvent: event,
data: props.rowData,
index: props.rowIndex,
newData: newData,
valid: valid
});
}
if (valid) {
if (props.onRowEditComplete) {
props.onRowEditComplete(e);
}
onEditChange(e, false);
}
event.preventDefault();
};
var onEditCancel = function onEditCancel(e) {
var event = e.originalEvent;
if (props.onRowEditCancel) {
props.onRowEditCancel({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
}
onEditChange(e, false);
event.preventDefault();
};
var equalsDataCell = function equalsDataCell(data) {
return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
};
var equalsCell = function equalsCell(selectedCell, field, colIndex) {
return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
};
var findIndexCell = function findIndexCell(collection, field, colIndex) {
return (collection || []).findIndex(function (data) {
return equalsCell(data, field, colIndex);
});
};
var isCellSelected = function isCellSelected(selection, field, colIndex) {
return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
};
var onCheckboxChange = function onCheckboxChange(event) {
props.onCheckboxChange({
originalEvent: event,
data: props.rowData,
index: props.rowIndex
});
};
var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
var getVirtualScrollerOption = React__namespace.useCallback(function (option) {
return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
}, [props.virtualScrollerOptions]);
var getEditingRowData = function getEditingRowData() {
return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
};
var getTabIndexCell = React__namespace.useCallback(function (cellSelected, cellIndex) {
return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
}, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
var findNextSelectableCell = React__namespace.useCallback(function (cell) {
var nextCell = cell.nextElementSibling;
return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
}, []);
var findPrevSelectableCell = React__namespace.useCallback(function (cell) {
var prevCell = cell.previousElementSibling;
return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
}, []);
var findDownSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
var downRow = cell.parentElement.nextElementSibling;
var downCell = downRow ? downRow.children[cellIndex] : null;
return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
}, []);
var findUpSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
var upRow = cell.parentElement.previousElementSibling;
var upCell = upRow ? upRow.children[cellIndex] : null;
return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
}, []);
var focusOnElement = React__namespace.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
clearTimeout(focusTimeoutRef.current);
focusTimeoutRef.current = setTimeout(function () {
if (editingState) {
var focusableEl = props.editMode === 'cell' ? utils.DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
focusableEl && focusableEl.focus();
}
keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
}, 1);
}, [props.editMode]);
var focusOnInit = React__namespace.useCallback(function (initFocusTimeoutRef, elementRef) {
clearTimeout(initFocusTimeoutRef.current);
initFocusTimeoutRef.current = setTimeout(function () {
var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
focusableEl && focusableEl.focus();
}, 1);
}, [props.editMode]);
var updateStickyPosition = React__namespace.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
if (frozen) {
var styleObject = _objectSpread$a({}, styleObjectState);
if (alignFrozen === 'right') {
var right = 0;
var next = elementRef.current && elementRef.current.nextElementSibling;
if (next && next.classList.contains('p-frozen-column')) {
right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
}
styleObject.right = right + 'px';
} else {
var left = 0;
var prev = elementRef.current && elementRef.current.previousElementSibling;
while (prev) {
if (prev.classList.contains('p-frozen-column')) {
left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
elementRef.current.style.left = left + 'px';
break;
}
prev = prev.previousElementSibling;
}
styleObject.left = left + 'px';
}
var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
!isSameStyle && setStyleObjectState(styleObject);
}
}, []);
var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, column, bindDocumentClickListener) {
if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
var onCellEditInit = getColumnProp(column, 'onCellEditInit');
var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
if (onBeforeCellEditShow) {
// if user returns false do not show the editor
if (onBeforeCellEditShow(params) === false) {
return;
}
// if user prevents default stop the editor
if (event && event.defaultPrevented) {
return;
}
}
// If the data is sorted using sort icon, it has been added to wait for the sort operation when any cell is wanted to be opened.
setTimeout(function () {
setEditingState(true);
if (onCellEditInit) {
if (onCellEditInit(params) === false) {
return;
}
// if user prevents default stop the editor
if (event && event.defaultPrevented) {
return;
}
}
if (cellEditValidatorEvent === 'click') {
bindDocumentClickListener();
}
}, 1);
}
if (props.allowCellSelection && props.onCellClick) {
props.onCellClick(params);
}
};
var createContent = function createContent() {
return props.columns.map(function (col, i) {
if (shouldRenderBodyCell(props.value, col, props.index)) {
var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
var field = getColumnProp(col, 'field') || "field_".concat(i);
var resolveFieldData = function resolveFieldData(data) {
return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
};
var selectionMode = getColumnProp(col, 'selectionMode');
var cellProps = mergeProps({
hostName: props.hostName,
allowCellSelection: props.allowCellSelection,
cellMemo: props.cellMemo,
cellMemoProps: props.cellMemoProps,
cellMemoPropsDepth: props.cellMemoPropsDepth,
cellClassName: props.cellClassName,
checkIcon: props.checkIcon,
collapsedRowIcon: props.collapsedRowIcon,
field: field,
resolveFieldData: resolveFieldData,
column: col,
cProps: props.colsProps[i],
dataKey: props.dataKey,
editMode: props.editMode,
editing: editing,
editingMeta: props.editingMeta,
onEditingMetaChange: props.onEditingMetaChange,
editingKey: editingKey,
getEditingRowData: getEditingRowData,
expanded: props.expanded,
expandedRowIcon: props.expandedRowIcon,
frozenRow: props.frozenRow,
frozenCol: getColumnProp(col, 'frozen'),
alignFrozenCol: getColumnProp(col, 'alignFrozen'),
index: i,
isSelectable: props.isSelectable,
onCheckboxChange: onCheckboxChange,
onClick: onCellClick,
onMouseDown: props.onCellMouseDown,
onMouseUp: props.onCellMouseUp,
onRadioChange: props.onRadioChange,
onRowEditCancel: onEditCancel,
onRowEditInit: onEditInit,
onRowEditSave: onEditSave,
onRowToggle: props.onRowToggle,
responsiveLayout: props.responsiveLayout,
rowData: props.rowData,
rowEditorCancelIcon: props.rowEditorCancelIcon,
rowEditorInitIcon: props.rowEditorInitIcon,
rowEditorSaveIcon: props.rowEditorSaveIcon,
rowIndex: props.rowIndex,
rowSpan: rowSpan,
selectOnEdit: props.selectOnEdit,
isRowSelected: isRowSelected,
isCellSelected: isCellSelected(props.selection, field, i),
selectionAriaLabel: props.tableProps.selectionAriaLabel,
showRowReorderElement: props.showRowReorderElement,
showSelectionElement: props.showSelectionElement,
tabIndex: props.tabIndex,
getTabIndex: getTabIndexCell,
tableProps: props.tableProps,
tableSelector: props.tableSelector,
value: props.value,
getVirtualScrollerOption: getVirtualScrollerOption,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: props.unstyled,
findNextSelectableCell: findNextSelectableCell,
findPrevSelectableCell: findPrevSelectableCell,
findDownSelectableCell: findDownSelectableCell,
findUpSelectableCell: findUpSelectableCell,
focusOnElement: focusOnElement,
focusOnInit: focusOnInit,
updateStickyPosition: updateStickyPosition
});
return /*#__PURE__*/React__namespace.createElement(React.Fragment, {
key: key
}, selectionMode ? /*#__PURE__*/React__namespace.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React__namespace.createElement(BodyCell, cellProps));
}
return null;
});
};
var rowClassName = utils.ObjectUtils.getPropValue(props.rowClassName, props.rowData, {
props: props.tableProps
});
var style = {
height: props.virtualScrollerOptions ? props.virtualScrollerOptions.itemSize : undefined
};
var content = createContent();
var tabIndex = getTabIndex();
var rowProps = mergeProps({
role: 'row',
tabIndex: tabIndex,
className: utils.classNames(cx('bodyRow', {
rowProps: props
})),
style: style,
onMouseDown: function onMouseDown(e) {
return _onMouseDown(e);
},
onMouseUp: function onMouseUp(e) {
return _onMouseUp(e);
},
onMouseEnter: function onMouseEnter(e) {
return _onMouseEnter(e);
},
onMouseLeave: function onMouseLeave(e) {
return _onMouseLeave(e);
},
onClick: function onClick(e) {
return _onClick(e);
},
onDoubleClick: function onDoubleClick(e) {
return _onDoubleClick(e);
},
onPointerDown: function onPointerDown(e) {
return _onPointerDown(e);
},
onPointerUp: function onPointerUp(e) {
return _onPointerUp(e);
},
onContextMenu: function onContextMenu(e) {
return onRightClick(e);
},
onTouchEnd: function onTouchEnd(e) {
return _onTouchEnd(e);
},
onKeyDown: function onKeyDown(e) {
return _onKeyDown(e);
},
onDragStart: function onDragStart(e) {
return _onDragStart(e);
},
onDragOver: function onDragOver(e) {
return _onDragOver(e);
},
onDragLeave: function onDragLeave(e) {
return _onDragLeave(e);
},
onDragEnd: function onDragEnd(e) {
return _onDragEnd(e);
},
onDrop: function onDrop(e) {
return _onDrop(e);
},
'aria-selected': props !== null && props !== void 0 && props.selectionMode ? props.selected : null,
'data-p-selectable-row': props.allowRowSelection && props.isSelectable({
data: props.rowData,
index: props.rowIndex
}),
'data-p-highlight': props.selected,
'data-p-highlight-contextmenu': props.contextMenuSelected
}, getBodyRowPTOptions('bodyRow'), {
className: utils.classNames(rowClassName) // #5983 must be last so all unstyled merging takes place first
});
return /*#__PURE__*/React__namespace.createElement("tr", rowProps, content);
});
BodyRow.displayName = 'BodyRow';
function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var RowTogglerButton = /*#__PURE__*/React__namespace.memo(function (props) {
var mergeProps = hooks.useMergeProps();
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
_props$ptCallbacks.isUnstyled;
var _onClick = function onClick(event) {
props.onClick({
originalEvent: event,
data: props.rowData
});
};
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var getColumnPTOptions = function getColumnPTOptions(key) {
var cProps = getColumnProps();
var columnMetaData = {
props: getColumnProps(),
parent: props.metaData,
hostName: props.hostName
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var rowGroupTogglerIconProps = mergeProps({
className: cx('rowGroupTogglerIcon'),
'aria-hidden': true
}, ptm('rowGroupTogglerIcon'), getColumnPTOptions('rowGroupTogglerIcon'));
var icon = props.expanded ? props.expandedRowIcon || /*#__PURE__*/React__namespace.createElement(chevrondown.ChevronDownIcon, rowGroupTogglerIconProps) : props.collapsedRowIcon || /*#__PURE__*/React__namespace.createElement(chevronright.ChevronRightIcon, rowGroupTogglerIconProps);
var togglerIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$9({}, rowGroupTogglerIconProps), {
props: props
});
var label = props.expanded ? PrimeReact$1.ariaLabel('collapseLabel') : PrimeReact$1.ariaLabel('expandLabel');
var rowGroupTogglerProps = mergeProps({
type: 'button',
onClick: function onClick(e) {
return _onClick(e);
},
className: cx('rowGroupToggler'),
tabIndex: props.tabIndex,
'aria-label': label
}, ptm('rowGroupToggler'), getColumnPTOptions('rowGroupToggler'));
return /*#__PURE__*/React__namespace.createElement("button", rowGroupTogglerProps, togglerIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
});
RowTogglerButton.displayName = 'RowTogglerButton';
var _excluded$2 = ["originalEvent"];
function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.forwardRef(function (props, ref) {
var mergeProps = hooks.useMergeProps();
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx,
isUnstyled = _props$ptCallbacks.isUnstyled;
var _React$useState = React__namespace.useState({}),
_React$useState2 = _slicedToArray(_React$useState, 2),
rowGroupHeaderStyleObjectState = _React$useState2[0],
setRowGroupHeaderStyleObjectState = _React$useState2[1];
var getColumnProps = function getColumnProps(column) {
return ColumnBase.getCProps(column);
};
var cProps = getColumnProps(props.column);
var colsProps = props.columns ? props.columns.map(function (col) {
return getColumnProps(col);
}) : [];
var getColumnPTOptions = function getColumnPTOptions(key) {
var columnMetaData = {
props: cProps,
parent: props.metaData,
hostName: props.hostName,
state: {
rowGroupHeaderStyleObject: rowGroupHeaderStyleObjectState
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var elementRef = React__namespace.useRef(null);
var refCallback = React__namespace.useCallback(function (el) {
elementRef.current = el;
props.virtualScrollerContentRef && props.virtualScrollerContentRef(el);
}, [props]);
var dragSelectionHelper = React__namespace.useRef(null);
var initialDragPosition = React__namespace.useRef(null);
var anchorRowIndex = React__namespace.useRef(null);
var anchorCellIndex = React__namespace.useRef(null);
var rangeRowIndex = React__namespace.useRef(null);
var anchorRowFirst = React__namespace.useRef(null);
var rowTouched = React__namespace.useRef(false);
var rowDragging = React__namespace.useRef(false);
var draggedRowIndex = React__namespace.useRef(null);
var droppedRowIndex = React__namespace.useRef(null);
var isSubheaderGrouping = props.rowGroupMode && props.rowGroupMode === 'subheader';
var isRadioSelectionMode = props.selectionMode === 'radiobutton';
var isCheckboxSelectionMode = props.selectionMode === 'checkbox';
var isRadioSelectionModeInColumn = props.selectionModeInColumn === 'single';
var isCheckboxSelectionModeInColumn = props.selectionModeInColumn === 'multiple';
var equals = function equals(data1, data2) {
if (allowCellSelection()) {
return (data1.rowIndex === data2.rowIndex || data1.rowData === data2.rowData) && (data1.field === data2.field || data1.cellIndex === data2.cellIndex);
}
return props.compareSelectionBy === 'equals' ? data1 === data2 : utils.ObjectUtils.equals(data1, data2, props.dataKey);
};
var isSelectionEnabled = function isSelectionEnabled() {
return props.selectionMode || props.selectionModeInColumn !== null || props.columns && props.columns.some(function (col) {
return col && !!getColumnProp(col, 'selectionMode');
});
};
var isSingleSelection = function isSingleSelection() {
return props.selectionMode === 'single' && !isCheckboxSelectionModeInColumn || !isRadioSelectionMode && isRadioSelectionModeInColumn;
};
var isMultipleSelection = function isMultipleSelection() {
return props.selectionMode === 'multiple' && !isRadioSelectionModeInColumn || isCheckboxSelectionModeInColumn;
};
var isRadioOnlySelection = function isRadioOnlySelection() {
return isRadioSelectionMode && isRadioSelectionModeInColumn;
};
var isCheckboxOnlySelection = function isCheckboxOnlySelection() {
return isCheckboxSelectionMode && isCheckboxSelectionModeInColumn;
};
var isSelected = function isSelected(rowData) {
if (rowData && props.selection) {
return props.selection instanceof Array ? findIndex(props.selection, rowData) > -1 : equals(rowData, props.selection);
}
return false;
};
var isContextMenuSelected = function isContextMenuSelected(rowData) {
if (rowData && props.contextMenuSelection) {
return equals(rowData, props.contextMenuSelection);
}
return false;
};
var isSelectable = function isSelectable(options) {
return props.isDataSelectable ? props.isDataSelectable(options) : true;
};
var isRowExpanded = function isRowExpanded(rowData) {
if (rowData && props.expandedRows) {
if (isSubheaderGrouping && props.expandableRowGroups) {
return isRowGroupExpanded(rowData);
}
if (props.dataKey) {
var rowId = utils.ObjectUtils.resolveFieldData(rowData, props.dataKey);
var expanded = false;
if (props.expandedRows) {
if (Array.isArray(props.expandedRows)) {
expanded = props.expandedRows.some(function (row) {
return utils.ObjectUtils.resolveFieldData(row, props.dataKey) === rowId;
});
} else {
expanded = props.expandedRows[rowId] !== undefined;
}
}
return expanded;
}
return findIndex(props.expandedRows, rowData) !== -1;
}
return false;
};
var isRowGroupExpanded = function isRowGroupExpanded(rowData) {
if (props.dataKey === props.groupRowsBy) {
return Object.keys(props.expandedRows).some(function (data) {
return utils.ObjectUtils.equals(data, utils.ObjectUtils.resolveFieldData(rowData, props.dataKey));
});
}
return props.expandedRows.some(function (data) {
return utils.ObjectUtils.equals(data, rowData, props.groupRowsBy);
});
};
var isRowEditing = function isRowEditing(rowData) {
if (props.editMode === 'row' && rowData && props.editingRows) {
if (props.dataKey) {
return props.editingRows ? props.editingRows[utils.ObjectUtils.resolveFieldData(rowData, props.dataKey)] !== undefined : false;
}
return findIndex(props.editingRows, rowData) !== -1;
}
return false;
};
var allowDrag = function allowDrag(event) {
return props.dragSelection && isMultipleSelection() && !event.originalEvent.shiftKey;
};
var allowRowDrag = function allowRowDrag(event) {
return !allowCellSelection() && allowDrag(event) || props.reorderableRows;
};
var allowCellDrag = function allowCellDrag(event) {
return allowCellSelection() && allowDrag(event);
};
var allowSelection = function allowSelection(event) {
return !utils.DomHandler.isClickable(event.originalEvent.target);
};
var metaKeySelectionRef = React__namespace.useRef(props.metaKeySelection);
React__namespace.useEffect(function () {
metaKeySelectionRef.current = props.metaKeySelection;
}, [props.metaKeySelection]);
var allowMetaKeySelection = function allowMetaKeySelection(event) {
return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
};
var allowRangeSelection = function allowRangeSelection(event) {
return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
};
var allowRowSelection = function allowRowSelection() {
return (props.selectionMode || props.selectionModeInColumn) && !isRadioOnlySelection() && !isCheckboxOnlySelection();
};
var allowCellSelection = function allowCellSelection() {
return props.cellSelection && !isRadioSelectionModeInColumn && !isCheckboxSelectionModeInColumn;
};
var getColumnsLength = function getColumnsLength() {
return props.columns ? props.columns.length : 0;
};
var getColumnProp = function getColumnProp(column, name) {
return ColumnBase.getCProp(column, name);
};
var getVirtualScrollerOption = function getVirtualScrollerOption(option, options) {
options = options || props.virtualScrollerOptions;
return options ? options[option] : null;
};
var findIndex = function findIndex(collection, rowData) {
return (collection || []).findIndex(function (data) {
return equals(rowData, data);
});
};
var rowGroupHeaderStyle = function rowGroupHeaderStyle() {
if (props.scrollable) {
return {
top: rowGroupHeaderStyleObjectState.top
};
}
return null;
};
var getRowKey = function getRowKey(rowData, index) {
return props.dataKey ? utils.ObjectUtils.resolveFieldData(rowData, props.dataKey) : index;
};
var shouldRenderRowGroupHeader = function shouldRenderRowGroupHeader(value, rowData, i) {
var currentRowFieldData = utils.ObjectUtils.resolveFieldData(rowData, props.groupRowsBy);
var prevRowData = value[i - 1];
if (prevRowData) {
var previousRowFieldData = utils.ObjectUtils.resolveFieldData(prevRowData, props.groupRowsBy);
return !utils.ObjectUtils.deepEquals(currentRowFieldData, previousRowFieldData);
}
return true;
};
var shouldRenderRowGroupFooter = function shouldRenderRowGroupFooter(value, rowData, i, expanded) {
if (props.expandableRowGroups && !expanded) {
return false;
}
var currentRowFieldData = utils.ObjectUtils.resolveFieldData(rowData, props.groupRowsBy);
var nextRowData = value[i + 1];
if (nextRowData) {
var nextRowFieldData = utils.ObjectUtils.resolveFieldData(nextRowData, props.groupRowsBy);
return !utils.ObjectUtils.deepEquals(currentRowFieldData, nextRowFieldData);
}
return true;
};
var updateFrozenRowStickyPosition = function updateFrozenRowStickyPosition() {
elementRef.current.style.top = utils.DomHandler.getOuterHeight(elementRef.current.previousElementSibling) + 'px';
};
var updateFrozenRowGroupHeaderStickyPosition = function updateFrozenRowGroupHeaderStickyPosition() {
var tableHeaderHeight = utils.DomHandler.getOuterHeight(elementRef.current.previousElementSibling);
var top = tableHeaderHeight + 'px';
if (rowGroupHeaderStyleObjectState.top !== top) {
setRowGroupHeaderStyleObjectState({
top: top
});
}
};
var selectionRef = React__namespace.useRef(props.selection);
React__namespace.useEffect(function () {
selectionRef.current = props.selection;
}, [props.selection]);
var onSingleSelection = function onSingleSelection(_ref) {
var originalEvent = _ref.originalEvent,
data = _ref.data,
index = _ref.index,
toggleable = _ref.toggleable,
type = _ref.type;
if (!isSelectable({
data: data,
index: index
})) {
return;
}
var selected = isSelected(data);
var currentSelection = selectionRef.current || [];
var newSelection = currentSelection;
if (selected) {
if (toggleable) {
newSelection = null;
onUnselect({
originalEvent: originalEvent,
data: data,
type: type
});
}
} else {
newSelection = data;
onSelect({
originalEvent: originalEvent,
data: data,
type: type
});
}
focusOnElement(originalEvent, true);
if (props.onSelectionChange && newSelection !== currentSelection) {
props.onSelectionChange({
originalEvent: originalEvent,
value: newSelection,
type: type
});
}
};
var onMultipleSelection = function onMultipleSelection(_ref2) {
var originalEvent = _ref2.originalEvent,
data = _ref2.data,
index = _ref2.index,
toggleable = _ref2.toggleable,
type = _ref2.type;
if (!isSelectable({
data: data,
index: index
})) {
return;
}
var selected = isSelected(data);
var currentSelection = selectionRef.current || [];
var newSelection = currentSelection;
if (selected) {
if (toggleable) {
var selectionIndex = findIndex(currentSelection, data);
newSelection = currentSelection.filter(function (val, i) {
return i !== selectionIndex;
});
onUnselect({
originalEvent: originalEvent,
data: data,
type: type
});
} else if (currentSelection.length) {
currentSelection.forEach(function (d) {
return onUnselect({
originalEvent: originalEvent,
data: d,
type: type
});
});
newSelection = [data];
onSelect({
originalEvent: originalEvent,
data: data,
type: type
});
}
} else {
newSelection = utils.ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
onSelect({
originalEvent: originalEvent,
data: data,
type: type
});
}
if (props.onSelectionChange && newSelection !== currentSelection) {
props.onSelectionChange({
originalEvent: originalEvent,
value: newSelection,
type: type
});
}
};
var onRangeSelection = function onRangeSelection(event, type) {
utils.DomHandler.clearSelection();
rangeRowIndex.current = allowCellSelection() ? event.rowIndex : event.index;
var selection = selectRange(event);
if (props.onSelectionChange && selection !== props.selection) {
props.onSelectionChange({
originalEvent: event.originalEvent,
value: selection,
type: type
});
}
anchorRowIndex.current = rangeRowIndex.current;
anchorCellIndex.current = event.cellIndex;
};
var selectRange = function selectRange(event) {
var rangeStart;
var rangeEnd;
var isAllowCellSelection = allowCellSelection();
if (rangeRowIndex.current > anchorRowIndex.current) {
rangeStart = anchorRowIndex.current;
rangeEnd = rangeRowIndex.current;
} else if (rangeRowIndex.current < anchorRowIndex.current) {
rangeStart = rangeRowIndex.current;
rangeEnd = anchorRowIndex.current;
} else {
rangeStart = rangeEnd = rangeRowIndex.current;
}
return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
};
var selectRangeOnRow = function selectRangeOnRow(event, rowRangeStart, rowRangeEnd) {
var selection = [];
for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
var rangeRowData = props.processedData[i];
if (!isSelectable({
data: rangeRowData,
index: i
})) {
continue;
}
selection.push(rangeRowData);
onSelect({
originalEvent: event.originalEvent,
data: rangeRowData,
type: 'row'
});
}
return selection;
};
var selectRangeOnCell = function selectRangeOnCell(event, rowRangeStart, rowRangeEnd) {
var cellRangeStart;
var cellRangeEnd;
var cellIndex = event.cellIndex;
if (cellIndex > anchorCellIndex.current) {
cellRangeStart = anchorCellIndex.current;
cellRangeEnd = cellIndex;
} else if (cellIndex < anchorCellIndex.current) {
cellRangeStart = cellIndex;
cellRangeEnd = anchorCellIndex.current;
} else {
cellRangeStart = cellRangeEnd = cellIndex;
}
var value = props.value;
var selection = [];
for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
var rowData = value[i];
var columns = props.columns;
var rowIndex = props.paginator ? i + props.first : i;
for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
var field = getColumnProp(columns[j], 'field');
var _value = utils.ObjectUtils.resolveFieldData(rowData, field);
var rangeRowData = {
value: _value,
field: field,
rowData: rowData,
rowIndex: rowIndex,
cellIndex: j,
selected: true
};
if (!isSelectable({
data: rangeRowData,
index: i
})) {
continue;
}
selection.push(rangeRowData);
onSelect({
originalEvent: event.originalEvent,
data: rangeRowData,
type: 'cell'
});
}
}
return selection;
};
var onSelect = function onSelect(event) {
if (allowCellSelection()) {
props.onCellSelect && props.onCellSelect(_objectSpread$8(_objectSpread$8({
originalEvent: event.originalEvent
}, event.data), {}, {
type: event.type
}));
} else {
props.onRowSelect && props.onRowSelect(event);
}
};
var onUnselect = function onUnselect(event) {
if (allowCellSelection()) {
props.onCellUnselect && props.onCellUnselect(_objectSpread$8(_objectSpread$8({
originalEvent: event.originalEvent
}, event.data), {}, {
type: event.type
}));
} else {
props.onRowUnselect && props.onRowUnselect(event);
}
};
var enableDragSelection = function enableDragSelection(event) {
if (props.dragSelection && !dragSelectionHelper.current) {
dragSelectionHelper.current = document.createElement('div');
dragSelectionHelper.current.setAttribute('p-datatable-drag-selection-helper', 'true');
!isUnstyled() && utils.DomHandler.addClass(dragSelectionHelper.current, 'p-datatable-drag-selection-helper');
initialDragPosition.current = {
x: event.clientX,
y: event.clientY
};
dragSelectionHelper.current.style.top = "".concat(event.pageY, "px");
dragSelectionHelper.current.style.left = "".concat(event.pageX, "px");
bindDragSelectionEvents();
}
};
var focusOnElement = function focusOnElement(event, isFocused) {
var target = event.currentTarget;
if (!allowCellSelection() && props.selectionAutoFocus) {
if (isCheckboxSelectionModeInColumn) {
var checkbox = utils.DomHandler.findSingle(target, 'td[data-p-selection-column="true"] [data-pc-section="checkbox"]');
checkbox && checkbox.focus();
} else if (isRadioSelectionModeInColumn) {
var radio = utils.DomHandler.findSingle(target, 'td[data-p-selection-column="true"] input[type="radio"]');
radio && radio.focus();
}
}
!isFocused && target && target.focus();
};
var changeTabIndex = function changeTabIndex(event, type) {
var target = event.currentTarget;
var isSelectable = utils.DomHandler.getAttribute(target, type === 'cell' ? 'data-p-selectable-cell' : 'data-p-selectable-row') === true;
if (isSelectable) {
var selector = type === 'cell' ? 'tr > td' : 'tr';
var tabbableEl = utils.DomHandler.findSingle(elementRef.current, "".concat(selector, "[tabindex=\"").concat(props.tabIndex, "\"]"));
if (tabbableEl && target) {
tabbableEl.tabIndex = -1;
target.tabIndex = props.tabIndex;
}
}
};
var onRowClick = function onRowClick(event) {
if (event.defaultPrevented || event.originalEvent && event.originalEvent.defaultPrevented || allowCellSelection() || !allowSelection(event)) {
return;
}
props.onRowClick && props.onRowClick(event);
if (allowRowSelection()) {
if (allowRangeSelection(event)) {
onRangeSelection(event, 'row');
} else {
var toggleable = isRadioSelectionModeInColumn || isCheckboxSelectionModeInColumn || allowMetaKeySelection(event);
anchorRowIndex.current = event.index;
rangeRowIndex.current = event.index;
anchorRowFirst.current = props.first;
if (isSingleSelection()) {
onSingleSelection(_objectSpread$8(_objectSpread$8({}, event), {}, {
toggleable: toggleable,
type: 'row'
}));
} else {
onMultipleSelection(_objectSpread$8(_objectSpread$8({}, event), {}, {
toggleable: toggleable,
type: 'row'
}));
}
}
changeTabIndex(event.originalEvent, 'row');
} else {
focusOnElement(event.originalEvent);
}
rowTouched.current = false;
};
var onRowDoubleClick = function onRowDoubleClick(e) {
var event = e.originalEvent;
if (utils.DomHandler.isClickable(event.target)) {
return;
}
if (props.onRowDoubleClick) {
props.onRowDoubleClick(e);
}
};
var onRowPointerDown = function onRowPointerDown(e) {
var event = e.originalEvent;
if (utils.DomHandler.isClickable(event.target)) {
return;
}
if (props.onRowPointerDown) {
props.onRowPointerDown(e);
}
};
var onRowPointerUp = function onRowPointerUp(e) {
var event = e.originalEvent;
if (utils.DomHandler.isClickable(event.target)) {
return;
}
if (props.onRowPointerUp) {
props.onRowPointerUp(e);
}
};
var onRowRightClick = function onRowRightClick(event) {
if (props.onContextMenu || props.onContextMenuSelectionChange) {
var hasSelection = utils.ObjectUtils.isNotEmpty(props.selection);
var data = event.data;
if (hasSelection) {
utils.DomHandler.clearSelection();
}
if (props.onContextMenuSelectionChange) {
props.onContextMenuSelectionChange({
originalEvent: event.originalEvent,
value: data,
index: event.index
});
}
if (props.onContextMenu) {
props.onContextMenu({
originalEvent: event.originalEvent,
data: data,
index: event.index
});
}
event.originalEvent.preventDefault();
}
};
var onRowMouseEnter = function onRowMouseEnter(event) {
props.onRowMouseEnter && props.onRowMouseEnter(event);
};
var onRowMouseLeave = function onRowMouseLeave(event) {
props.onRowMouseLeave && props.onRowMouseLeave(event);
};
var onRowTouchEnd = function onRowTouchEnd() {
rowTouched.current = true;
};
var onRowMouseDown = function onRowMouseDown(e) {
var event = e.originalEvent;
var isDraggableHandle = isUnstyled() ? utils.DomHandler.getAttribute(event.target, 'data-pc-section') === 'rowreordericon' || event.target.closest('[data-pc-section="rowreordericon"]') : utils.DomHandler.hasClass(event.target, 'p-datatable-reorderablerow-handle') || event.target.closest('.p-datatable-reorderablerow-handle');
event.currentTarget.draggable = isDraggableHandle;
//event.target.draggable = isDraggableHandle;
if (allowRowDrag(e)) {
enableDragSelection(event);
anchorRowIndex.current = e.index;
rangeRowIndex.current = e.index;
anchorRowFirst.current = props.first;
}
};
var onRowMouseUp = function onRowMouseUp(event) {
var isSameRow = event.index === anchorRowIndex.current;
if (allowRowDrag(event) && !isSameRow) {
onRangeSelection(event, 'row');
}
};
var expandedRowsRef = React__namespace.useRef(props.expandedRows);
React__namespace.useEffect(function () {
expandedRowsRef.current = props.expandedRows;
}, [props.expandedRows]);
var onRowToggle = function onRowToggle(event) {
var expandedRows;
var dataKey = props.dataKey;
var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
if (hasDataKey) {
var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(event.data, dataKey));
expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
if (expandedRows[dataKeyValue] != null) {
delete expandedRows[dataKeyValue];
if (props.onRowCollapse) {
props.onRowCollapse({
originalEvent: event,
data: event.data
});
}
} else {
expandedRows[dataKeyValue] = true;
if (props.onRowExpand) {
props.onRowExpand({
originalEvent: event,
data: event.data
});
}
}
} else {
var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
if (expandedRowIndex !== -1) {
expandedRows = expandedRows.filter(function (_, i) {
return i !== expandedRowIndex;
});
if (props.onRowCollapse) {
props.onRowCollapse({
originalEvent: event,
data: event.data
});
}
} else {
expandedRows.push(event.data);
if (props.onRowExpand) {
props.onRowExpand({
originalEvent: event,
data: event.data
});
}
}
}
if (props.onRowToggle) {
props.onRowToggle({
data: expandedRows
});
}
};
var onRowDragStart = function onRowDragStart(e) {
var event = e.originalEvent,
index = e.index;
if (allowRowDrag(e)) {
rowDragging.current = true;
draggedRowIndex.current = index;
event.dataTransfer.setData('text', 'b'); // For firefox
}
};
var onRowDragOver = function onRowDragOver(e) {
var event = e.originalEvent,
index = e.index;
if (!rowDragging.current) {
return;
}
if (draggedRowIndex.current !== index) {
var rowElement = event.currentTarget;
var rowY = utils.DomHandler.getOffset(rowElement).top + utils.DomHandler.getWindowScrollTop();
var pageY = event.pageY + window.scrollY;
var rowMidY = rowY + utils.DomHandler.getOuterHeight(rowElement) / 2;
var prevRowElement = rowElement.previousElementSibling;
if (pageY < rowMidY) {
rowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'false');
!isUnstyled() && utils.DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
droppedRowIndex.current = index;
if (prevRowElement) {
prevRowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'true');
!isUnstyled() && utils.DomHandler.addClass(prevRowElement, 'p-datatable-dragpoint-bottom');
} else {
rowElement.setAttribute('data-p-datatable-dragpoint-top', 'true');
!isUnstyled() && utils.DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
}
} else {
if (prevRowElement) {
prevRowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'false');
!isUnstyled() && utils.DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
} else {
rowElement.setAttribute('data-p-datatable-dragpoint-top', 'true');
!isUnstyled() && utils.DomHandler.addClass(rowElement, 'p-datatable-dragpoint-top');
}
if (index + 1 !== draggedRowIndex.current) droppedRowIndex.current = index + 1;
rowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'true');
!isUnstyled() && utils.DomHandler.addClass(rowElement, 'p-datatable-dragpoint-bottom');
}
}
event.preventDefault();
};
var onRowDragLeave = function onRowDragLeave(e) {
var event = e.originalEvent;
var rowElement = event.currentTarget;
var prevRowElement = rowElement.previousElementSibling;
if (prevRowElement) {
prevRowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'false');
!isUnstyled() && utils.DomHandler.removeClass(prevRowElement, 'p-datatable-dragpoint-bottom');
}
rowElement.setAttribute('data-p-datatable-dragpoint-bottom', 'false');
!isUnstyled() && utils.DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-bottom');
rowElement.setAttribute('data-p-datatable-dragpoint-top', 'false');
!isUnstyled() && utils.DomHandler.removeClass(rowElement, 'p-datatable-dragpoint-top');
};
var onRowDragEnd = function onRowDragEnd(e) {
var event = e.originalEvent;
rowDragging.current = false;
draggedRowIndex.current = null;
droppedRowIndex.current = null;
event.currentTarget.draggable = false;
};
var onRowDrop = function onRowDrop(e) {
var event = e.originalEvent;
if (droppedRowIndex.current != null) {
var dropIndex = draggedRowIndex.current > droppedRowIndex.current ? droppedRowIndex.current : droppedRowIndex.current === 0 ? 0 : droppedRowIndex.current - 1;
var val = _toConsumableArray(props.tableProps.value);
utils.ObjectUtils.reorderArray(val, draggedRowIndex.current, dropIndex);
if (props.onRowReorder) {
props.onRowReorder({
originalEvent: event,
value: val,
dragIndex: draggedRowIndex.current,
dropIndex: dropIndex
});
}
}
//cleanup
onRowDragLeave(e);
onRowDragEnd(e);
event.preventDefault();
};
var onRadioChange = function onRadioChange(event) {
onSingleSelection(_objectSpread$8(_objectSpread$8({}, event), {}, {
toggleable: true,
type: 'radio'
}));
};
var onCheckboxChange = function onCheckboxChange(event) {
onMultipleSelection(_objectSpread$8(_objectSpread$8({}, event), {}, {
toggleable: true,
type: 'checkbox'
}));
};
var onDragSelectionMouseMove = function onDragSelectionMouseMove(event) {
var _initialDragPosition$ = initialDragPosition.current,
x = _initialDragPosition$.x,
y = _initialDragPosition$.y;
var dx = event.clientX - x;
var dy = event.clientY - y;
if (dy < 0) {
dragSelectionHelper.current.style.top = "".concat(event.pageY + 5, "px");
}
if (dx < 0) {
dragSelectionHelper.current.style.left = "".concat(event.pageX + 5, "px");
}
dragSelectionHelper.current.style.height = "".concat(Math.abs(dy), "px");
dragSelectionHelper.current.style.width = "".concat(Math.abs(dx), "px");
event.preventDefault();
};
var _onDragSelectionMouseUp = function onDragSelectionMouseUp() {
if (dragSelectionHelper.current) {
dragSelectionHelper.current.remove();
dragSelectionHelper.current = null;
}
document.removeEventListener('mousemove', onDragSelectionMouseMove);
document.removeEventListener('mouseup', _onDragSelectionMouseUp);
};
var onCellClick = function onCellClick(event) {
if (!allowSelection(event)) {
return;
}
props.onCellClick && props.onCellClick(event);
if (allowCellSelection()) {
if (allowRangeSelection(event)) {
onRangeSelection(event, 'cell');
} else {
var toggleable = allowMetaKeySelection(event);
var originalEvent = event.originalEvent,
data = _objectWithoutProperties(event, _excluded$2);
anchorRowIndex.current = event.rowIndex;
rangeRowIndex.current = event.rowIndex;
anchorRowFirst.current = props.first;
anchorCellIndex.current = event.cellIndex;
if (isSingleSelection()) {
onSingleSelection({
originalEvent: originalEvent,
data: data,
index: event.rowIndex,
toggleable: toggleable,
type: 'cell'
});
} else {
onMultipleSelection({
originalEvent: originalEvent,
data: data,
index: event.rowIndex,
toggleable: toggleable,
type: 'cell'
});
}
}
changeTabIndex(event.originalEvent, 'cell');
}
rowTouched.current = false;
};
var onCellMouseDown = function onCellMouseDown(event) {
if (allowCellDrag(event)) {
enableDragSelection(event.originalEvent);
anchorRowIndex.current = event.rowIndex;
rangeRowIndex.current = event.rowIndex;
anchorRowFirst.current = props.first;
anchorCellIndex.current = event.cellIndex;
}
};
var onCellMouseUp = function onCellMouseUp(event) {
var isSameCell = event.rowIndex === anchorRowIndex.current && event.cellIndex === anchorCellIndex.current;
if (allowCellDrag(event) && !isSameCell) {
onRangeSelection(event, 'cell');
}
};
var bindDragSelectionEvents = function bindDragSelectionEvents() {
document.addEventListener('mousemove', onDragSelectionMouseMove);
document.addEventListener('mouseup', _onDragSelectionMouseUp);
document.body.appendChild(dragSelectionHelper.current);
};
var unbindDragSelectionEvents = function unbindDragSelectionEvents() {
_onDragSelectionMouseUp();
};
React__namespace.useEffect(function () {
if (props.frozenRow) {
updateFrozenRowStickyPosition();
}
if (props.scrollable && props.rowGroupMode === 'subheader') {
updateFrozenRowGroupHeaderStickyPosition();
}
});
hooks.useUpdateEffect(function () {
if (props.paginator && isMultipleSelection()) {
anchorRowIndex.current = null;
}
}, [props.first]);
hooks.useUnmountEffect(function () {
if (props.dragSelection) {
unbindDragSelectionEvents();
}
});
var createEmptyContent = function createEmptyContent() {
if (!props.loading) {
var colSpan = getColumnsLength();
var _content = utils.ObjectUtils.getJSXElement(props.emptyMessage, {
props: props.tableProps,
frozen: props.frozenRow
}) || PrimeReact$1.localeOption('emptyMessage');
var emptyMessageProps = mergeProps({
className: cx('emptyMessage'),
role: 'row'
}, ptm('emptyMessage'));
var bodyCellProps = mergeProps({
colSpan: colSpan,
role: 'cell'
}, getColumnPTOptions('root'), getColumnPTOptions('bodyCell'));
return /*#__PURE__*/React__namespace.createElement("tr", emptyMessageProps, /*#__PURE__*/React__namespace.createElement("td", bodyCellProps, _content));
}
return null;
};
var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
var style = rowGroupHeaderStyle();
var toggler = props.expandableRowGroups && /*#__PURE__*/React__namespace.createElement(RowTogglerButton, {
hostName: props.hostName,
onClick: onRowToggle,
rowData: rowData,
expanded: expanded,
expandedRowIcon: props.expandedRowIcon,
collapsedRowIcon: props.collapsedRowIcon,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: isUnstyled()
});
var options = {
index: rowIndex,
props: props.tableProps,
customRendering: false
};
var _content2 = utils.ObjectUtils.getJSXElement(props.rowGroupHeaderTemplate, rowData, options);
// check if the user wants complete control of the rendering
if (!options.customRendering) {
var bodyCellProps = mergeProps({
colSpan: colSpan
}, getColumnPTOptions('root'), getColumnPTOptions('bodyCell'));
var rowGroupHeaderNameProps = mergeProps({
className: cx('rowGroupHeaderName')
}, ptm('rowGroupHeaderName'));
_content2 = /*#__PURE__*/React__namespace.createElement("td", bodyCellProps, toggler, /*#__PURE__*/React__namespace.createElement("span", rowGroupHeaderNameProps, _content2));
}
var rowGroupHeaderProps = mergeProps({
className: cx('rowGroupHeader'),
style: style,
role: 'row'
}, ptm('rowGroupHeader'));
return /*#__PURE__*/React__namespace.createElement("tr", rowGroupHeaderProps, _content2);
}
return null;
};
var createRow = function createRow(rowData, rowIndex, index, expanded) {
if (!props.expandableRowGroups || expanded) {
var selected = isSelectionEnabled() ? isSelected(rowData) : false;
var contextMenuSelected = isContextMenuSelected(rowData);
var _allowRowSelection = allowRowSelection();
var _allowCellSelection = allowCellSelection();
var editing = isRowEditing(rowData);
return /*#__PURE__*/React__namespace.createElement(BodyRow, {
hostName: props.hostName,
allowCellSelection: _allowCellSelection,
allowRowSelection: _allowRowSelection,
cellMemo: props.cellMemo,
cellMemoProps: props.cellMemoProps,
cellMemoPropsDepth: props.cellMemoPropsDepth,
cellClassName: props.cellClassName,
checkIcon: props.checkIcon,
collapsedRowIcon: props.collapsedRowIcon,
columns: props.columns,
colsProps: colsProps,
compareSelectionBy: props.compareSelectionBy,
contextMenuSelected: contextMenuSelected,
dataKey: props.dataKey,
editMode: props.editMode,
editing: editing,
editingMeta: props.editingMeta,
editingRows: props.editingRows,
expanded: expanded,
expandedRowIcon: props.expandedRowIcon,
frozenRow: props.frozenRow,
groupRowsBy: props.groupRowsBy,
index: index,
isSelectable: isSelectable,
onCellClick: onCellClick,
onCellMouseDown: onCellMouseDown,
onCellMouseUp: onCellMouseUp,
onCheckboxChange: onCheckboxChange,
onEditingMetaChange: props.onEditingMetaChange,
onRadioChange: onRadioChange,
onRowClick: onRowClick,
onRowDoubleClick: onRowDoubleClick,
onRowPointerDown: onRowPointerDown,
onRowPointerUp: onRowPointerUp,
onRowDragEnd: onRowDragEnd,
onRowDragLeave: onRowDragLeave,
onRowDragOver: onRowDragOver,
onRowDragStart: onRowDragStart,
onRowDrop: onRowDrop,
onRowEditCancel: props.onRowEditCancel,
onRowEditChange: props.onRowEditChange,
onRowEditComplete: props.onRowEditComplete,
onRowEditInit: props.onRowEditInit,
onRowEditSave: props.onRowEditSave,
onRowMouseDown: onRowMouseDown,
onRowMouseEnter: onRowMouseEnter,
onRowMouseLeave: onRowMouseLeave,
onRowMouseUp: onRowMouseUp,
onRowRightClick: onRowRightClick,
onRowToggle: onRowToggle,
onRowTouchEnd: onRowTouchEnd,
responsiveLayout: props.responsiveLayout,
rowClassName: props.rowClassName,
rowData: rowData,
rowEditValidator: props.rowEditValidator,
rowEditorCancelIcon: props.rowEditorCancelIcon,
rowEditorInitIcon: props.rowEditorInitIcon,
rowEditorSaveIcon: props.rowEditorSaveIcon,
rowGroupMode: props.rowGroupMode,
rowIndex: rowIndex,
selectOnEdit: props.selectOnEdit,
selected: selected,
selection: props.selection,
selectionMode: props.selectionMode,
selectionModeInColumn: props.selectionModeInColumn,
showRowReorderElement: props.showRowReorderElement,
showSelectionElement: props.showSelectionElement,
tabIndex: props.tabIndex,
tableProps: props.tableProps,
tableSelector: props.tableSelector,
value: props.value,
virtualScrollerOptions: props.virtualScrollerOptions,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: isUnstyled()
});
}
};
var createExpansion = function createExpansion(rowData, rowIndex, expanded, colSpan) {
if (expanded && !(isSubheaderGrouping && props.expandableRowGroups)) {
var id = "".concat(props.tableSelector, "_content_").concat(rowIndex, "_expanded");
var options = {
index: rowIndex,
customRendering: false
};
var _content3 = utils.ObjectUtils.getJSXElement(props.rowExpansionTemplate, rowData, options);
// check if the user wants complete control of the rendering
if (!options.customRendering) {
var bodyCellProps = mergeProps({
colSpan: colSpan,
role: 'cell'
}, getColumnPTOptions('root'), getColumnPTOptions('bodyCell'));
_content3 = /*#__PURE__*/React__namespace.createElement("td", bodyCellProps, _content3);
}
var rowExpansionProps = mergeProps({
id: id,
className: cx('rowExpansion'),
role: 'row'
}, ptm('rowExpansion'));
return /*#__PURE__*/React__namespace.createElement("tr", rowExpansionProps, _content3);
}
return null;
};
var createGroupFooter = function createGroupFooter(rowData, rowIndex, expanded, colSpan) {
if (isSubheaderGrouping && shouldRenderRowGroupFooter(props.value, rowData, rowIndex - props.first, expanded)) {
var _content4 = utils.ObjectUtils.getJSXElement(props.rowGroupFooterTemplate, rowData, {
index: rowIndex,
colSpan: colSpan,
props: props.tableProps
});
var rowGroupFooterProps = mergeProps({
className: cx('rowGroupFooter'),
role: 'row'
}, ptm('rowGroupFooter'));
return /*#__PURE__*/React__namespace.createElement("tr", rowGroupFooterProps, _content4);
}
return null;
};
var createContent = function createContent() {
return props.value && props.value.map(function (rowData, index) {
var rowIndex = getVirtualScrollerOption('getItemOptions') ? getVirtualScrollerOption('getItemOptions')(index).index : props.first + index;
var key = getRowKey(rowData, rowIndex);
var expanded = isRowExpanded(rowData);
var colSpan = getColumnsLength();
var groupHeader = createGroupHeader(rowData, rowIndex, expanded, colSpan);
var row = createRow(rowData, rowIndex, index, expanded);
var expansion = createExpansion(rowData, rowIndex, expanded, colSpan);
var groupFooter = createGroupFooter(rowData, rowIndex, expanded, colSpan);
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, {
key: key
}, groupHeader, row, expansion, groupFooter);
});
};
var content = props.empty ? createEmptyContent() : createContent();
var ptKey = props.className === 'p-datatable-virtualscroller-spacer' ? 'virtualScrollerSpacer' : 'tbody';
var tbodyProps = mergeProps({
style: props.style,
className: cx(ptKey, {
className: props.className
}),
role: ' rowgroup'
}, ptm(ptKey, {
hostName: props.hostName
}));
return /*#__PURE__*/React__namespace.createElement("tbody", _extends({
ref: refCallback
}, tbodyProps), content);
}));
TableBody.displayName = 'TableBody';
var ColumnGroupBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'ColumnGroup',
children: undefined
},
getCProp: function getCProp(group, name) {
return utils.ObjectUtils.getComponentProp(group, name, ColumnGroupBase.defaultProps);
},
getCProps: function getCProps(group) {
return utils.ObjectUtils.getComponentProps(group, ColumnGroupBase.defaultProps);
}
});
var RowBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'Row',
style: null,
className: null,
children: undefined
},
getCProp: function getCProp(row, name) {
return utils.ObjectUtils.getComponentProp(row, name, RowBase.defaultProps);
}
});
function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var FooterCell = /*#__PURE__*/React__namespace.memo(function (props) {
var _React$useState = React__namespace.useState({}),
_React$useState2 = _slicedToArray(_React$useState, 2),
styleObjectState = _React$useState2[0],
setStyleObjectState = _React$useState2[1];
var elementRef = React__namespace.useRef(null);
var mergeProps = hooks.useMergeProps();
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var getColumnPTOptions = function getColumnPTOptions(key) {
var cProps = getColumnProps();
var columnMetaData = {
props: cProps,
parent: props.metaData,
hostName: props.hostName,
state: {
styleObject: styleObjectState
},
context: {
index: props.index,
size: props.metaData.props.size,
showGridlines: props.metaData.props.showGridlines
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var getColumnProp = function getColumnProp(name) {
return ColumnBase.getCProp(props.column, name);
};
var getStyle = function getStyle() {
var footerStyle = getColumnProp('footerStyle');
var columnStyle = getColumnProp('style');
return getColumnProp('frozen') ? Object.assign({}, columnStyle, footerStyle, styleObjectState) : Object.assign({}, columnStyle, footerStyle);
};
var updateStickyPosition = function updateStickyPosition() {
if (getColumnProp('frozen')) {
var styleObject = _objectSpread$7({}, styleObjectState);
var _align = getColumnProp('alignFrozen');
if (_align === 'right') {
var right = 0;
var next = elementRef.current && elementRef.current.nextElementSibling;
if (next && next.classList.contains('p-frozen-column')) {
right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
}
styleObject.right = right + 'px';
} else {
var left = 0;
var prev = elementRef.current && elementRef.current.previousElementSibling;
while (prev) {
if (prev && prev.classList.contains('p-frozen-column')) {
left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
elementRef.current.style.left = left + 'px';
break;
}
prev = prev.previousElementSibling;
}
styleObject.left = left + 'px';
}
var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
!isSameStyle && setStyleObjectState(styleObject);
}
};
React__namespace.useEffect(function () {
if (getColumnProp('frozen')) {
updateStickyPosition();
}
});
var style = getStyle();
var align = getColumnProp('align');
var colSpan = getColumnProp('colSpan');
var rowSpan = getColumnProp('rowSpan');
var content = utils.ObjectUtils.getJSXElement(getColumnProp('footer'), {
props: props.tableProps
});
var footerCellProps = mergeProps({
style: style,
className: utils.classNames(getColumnProp('footerClassName'), getColumnProp('className'), cx('footerCell', {
getColumnProp: getColumnProp,
align: align
})),
role: 'cell',
colSpan: colSpan,
rowSpan: rowSpan
}, getColumnPTOptions('root'), getColumnPTOptions('footerCell'));
return /*#__PURE__*/React__namespace.createElement("td", _extends({
ref: elementRef
}, footerCellProps), content);
});
FooterCell.displayName = 'FooterCell';
var _excluded$1 = ["unstyled", "__TYPE", "ptOptions"];
function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var TableFooter = /*#__PURE__*/React__namespace.memo(function (props) {
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var mergeProps = hooks.useMergeProps();
var getRowProps = function getRowProps(row) {
return ColumnGroupBase.getCProps(row);
};
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var getColumnGroupProps = function getColumnGroupProps() {
return props.footerColumnGroup ? ColumnGroupBase.getCProps(props.footerColumnGroup) : undefined;
};
var getRowPTOptions = function getRowPTOptions(row, key) {
var rProps = getRowProps(row);
var rowMetaData = {
props: rProps,
parent: props.metaData,
hostName: props.hostName
};
return mergeProps(ptm("row.".concat(key), {
row: rowMetaData
}), ptm("row.".concat(key), rowMetaData), ptmo(rProps, key, rowMetaData));
};
var getColumnGroupPTOptions = function getColumnGroupPTOptions(key) {
var cGProps = getColumnGroupProps();
var columnGroupMetaData = {
props: getColumnGroupProps(),
parent: props.metaData,
hostName: props.hostName
};
return mergeProps(ptm("columnGroup.".concat(key), {
columnGroup: columnGroupMetaData
}), ptm("columnGroup.".concat(key), columnGroupMetaData), ptmo(cGProps, key, columnGroupMetaData));
};
var hasFooter = function hasFooter() {
return props.footerColumnGroup ? true : props.columns ? props.columns.some(function (col) {
return col && getColumnProp(col, 'footer');
}) : false;
};
var getColumnProp = function getColumnProp(column, name) {
return ColumnBase.getCProp(column, name);
};
var createGroupFooterCells = function createGroupFooterCells(row) {
var columns = React__namespace.Children.toArray(RowBase.getCProp(row, 'children'));
return createFooterCells(columns);
};
var createFooterCells = function createFooterCells(columns) {
return React__namespace.Children.map(columns, function (col, i) {
var isVisible = col ? !getColumnProp(col, 'hidden') : true;
var key = col ? getColumnProp(col, 'columnKey') || getColumnProp(col, 'field') || i : i;
return isVisible && /*#__PURE__*/React__namespace.createElement(FooterCell, {
hostName: props.hostName,
key: key,
tableProps: props.tableProps,
column: col,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData
});
});
};
var createContent = function createContent() {
if (props.footerColumnGroup) {
var rows = React__namespace.Children.toArray(ColumnGroupBase.getCProp(props.footerColumnGroup, 'children'));
return rows.map(function (row, i) {
var _RowBase$getProps = RowBase.getProps(row.props, context),
unstyled = _RowBase$getProps.unstyled;
_RowBase$getProps.__TYPE;
_RowBase$getProps.ptOptions;
var rest = _objectWithoutProperties(_RowBase$getProps, _excluded$1);
var rootProps = mergeProps({
role: 'row'
}, unstyled ? _objectSpread$6({
unstyled: unstyled
}, rest) : rest, getRowPTOptions(row, 'root'));
return /*#__PURE__*/React__namespace.createElement("tr", _extends({}, rootProps, {
key: i
}), createGroupFooterCells(row));
});
}
var footerRowProps = mergeProps({
role: 'row'
}, ptm('footerRow', {
hostName: props.hostName
}));
return /*#__PURE__*/React__namespace.createElement("tr", footerRowProps, createFooterCells(props.columns));
};
if (hasFooter()) {
var content = createContent();
var tfootProps = mergeProps({
className: cx('tfoot'),
role: 'rowgroup'
}, getColumnGroupPTOptions('root'), ptm('tfoot', {
hostName: props.hostName
}));
return /*#__PURE__*/React__namespace.createElement("tfoot", tfootProps, content);
}
return null;
});
TableFooter.displayName = 'TableFooter';
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: !1
}), e;
}
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
var FilterMatchMode = Object.freeze({
STARTS_WITH: 'startsWith',
CONTAINS: 'contains',
NOT_CONTAINS: 'notContains',
ENDS_WITH: 'endsWith',
EQUALS: 'equals',
NOT_EQUALS: 'notEquals',
IN: 'in',
NOT_IN: 'notIn',
LESS_THAN: 'lt',
LESS_THAN_OR_EQUAL_TO: 'lte',
GREATER_THAN: 'gt',
GREATER_THAN_OR_EQUAL_TO: 'gte',
BETWEEN: 'between',
DATE_IS: 'dateIs',
DATE_IS_NOT: 'dateIsNot',
DATE_BEFORE: 'dateBefore',
DATE_AFTER: 'dateAfter',
CUSTOM: 'custom'
});
/**
* @deprecated please use PrimeReactContext
*/
var PrimeReact = /*#__PURE__*/_createClass(function PrimeReact() {
_classCallCheck(this, PrimeReact);
});
_defineProperty(PrimeReact, "ripple", false);
_defineProperty(PrimeReact, "inputStyle", 'outlined');
_defineProperty(PrimeReact, "locale", 'en');
_defineProperty(PrimeReact, "appendTo", null);
_defineProperty(PrimeReact, "cssTransition", true);
_defineProperty(PrimeReact, "autoZIndex", true);
_defineProperty(PrimeReact, "hideOverlaysOnDocumentScrolling", false);
_defineProperty(PrimeReact, "nonce", null);
_defineProperty(PrimeReact, "nullSortOrder", 1);
_defineProperty(PrimeReact, "zIndex", {
modal: 1100,
overlay: 1000,
menu: 1000,
tooltip: 1100,
toast: 1200
});
_defineProperty(PrimeReact, "pt", undefined);
_defineProperty(PrimeReact, "filterMatchModeOptions", {
text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],
numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],
date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]
});
_defineProperty(PrimeReact, "changeTheme", function (currentTheme, newTheme, linkElementId, callback) {
var _linkElement$parentNo;
var linkElement = document.getElementById(linkElementId);
if (!linkElement) {
throw Error("Element with id ".concat(linkElementId, " not found."));
}
var newThemeUrl = linkElement.getAttribute('href').replace(currentTheme, newTheme);
var newLinkElement = document.createElement('link');
newLinkElement.setAttribute('rel', 'stylesheet');
newLinkElement.setAttribute('id', linkElementId);
newLinkElement.setAttribute('href', newThemeUrl);
newLinkElement.addEventListener('load', function () {
if (callback) {
callback();
}
});
(_linkElement$parentNo = linkElement.parentNode) === null || _linkElement$parentNo === void 0 || _linkElement$parentNo.replaceChild(newLinkElement, linkElement);
});
var locales = {
en: {
accept: 'Yes',
addRule: 'Add Rule',
am: 'AM',
apply: 'Apply',
cancel: 'Cancel',
choose: 'Choose',
chooseDate: 'Choose Date',
chooseMonth: 'Choose Month',
chooseYear: 'Choose Year',
clear: 'Clear',
completed: 'Completed',
contains: 'Contains',
custom: 'Custom',
dateAfter: 'Date is after',
dateBefore: 'Date is before',
dateFormat: 'mm/dd/yy',
dateIs: 'Date is',
dateIsNot: 'Date is not',
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
emptyFilterMessage: 'No results found',
emptyMessage: 'No available options',
emptySearchMessage: 'No results found',
emptySelectionMessage: 'No selected item',
endsWith: 'Ends with',
equals: 'Equals',
fileChosenMessage: '{0} files',
fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
filter: 'Filter',
firstDayOfWeek: 0,
gt: 'Greater than',
gte: 'Greater than or equal to',
lt: 'Less than',
lte: 'Less than or equal to',
matchAll: 'Match All',
matchAny: 'Match Any',
medium: 'Medium',
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
nextDecade: 'Next Decade',
nextHour: 'Next Hour',
nextMinute: 'Next Minute',
nextMonth: 'Next Month',
nextSecond: 'Next Second',
nextYear: 'Next Year',
noFileChosenMessage: 'No file chosen',
noFilter: 'No Filter',
notContains: 'Not contains',
notEquals: 'Not equals',
now: 'Now',
passwordPrompt: 'Enter a password',
pending: 'Pending',
pm: 'PM',
prevDecade: 'Previous Decade',
prevHour: 'Previous Hour',
prevMinute: 'Previous Minute',
prevMonth: 'Previous Month',
prevSecond: 'Previous Second',
prevYear: 'Previous Year',
reject: 'No',
removeRule: 'Remove Rule',
searchMessage: '{0} results are available',
selectionMessage: '{0} items selected',
showMonthAfterYear: false,
startsWith: 'Starts with',
strong: 'Strong',
today: 'Today',
upload: 'Upload',
weak: 'Weak',
weekHeader: 'Wk',
aria: {
cancelEdit: 'Cancel Edit',
close: 'Close',
collapseLabel: 'Collapse',
collapseRow: 'Row Collapsed',
editRow: 'Edit Row',
expandLabel: 'Expand',
expandRow: 'Row Expanded',
falseLabel: 'False',
filterConstraint: 'Filter Constraint',
filterOperator: 'Filter Operator',
firstPageLabel: 'First Page',
gridView: 'Grid View',
hideFilterMenu: 'Hide Filter Menu',
jumpToPageDropdownLabel: 'Jump to Page Dropdown',
jumpToPageInputLabel: 'Jump to Page Input',
lastPageLabel: 'Last Page',
listLabel: 'Option List',
listView: 'List View',
moveAllToSource: 'Move All to Source',
moveAllToTarget: 'Move All to Target',
moveBottom: 'Move Bottom',
moveDown: 'Move Down',
moveToSource: 'Move to Source',
moveToTarget: 'Move to Target',
moveTop: 'Move Top',
moveUp: 'Move Up',
navigation: 'Navigation',
next: 'Next',
nextPageLabel: 'Next Page',
nullLabel: 'Not Selected',
otpLabel: 'Please enter one time password character {0}',
pageLabel: 'Page {page}',
passwordHide: 'Hide Password',
passwordShow: 'Show Password',
previous: 'Previous',
prevPageLabel: 'Previous Page',
removeLabel: 'Remove',
rotateLeft: 'Rotate Left',
rotateRight: 'Rotate Right',
rowsPerPageLabel: 'Rows per page',
saveEdit: 'Save Edit',
scrollTop: 'Scroll Top',
selectAll: 'All items selected',
selectLabel: 'Select',
selectRow: 'Row Selected',
showFilterMenu: 'Show Filter Menu',
slide: 'Slide',
slideNumber: '{slideNumber}',
star: '1 star',
stars: '{star} stars',
trueLabel: 'True',
unselectAll: 'All items unselected',
unselectLabel: 'Unselect',
unselectRow: 'Row Unselected',
zoomImage: 'Zoom Image',
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out'
}
}
};
/**
* Find an ARIA label in the locale by key. If options are passed it will replace all options:
* ```ts
* const ariaValue = "Page {page}, User {user}, Role {role}";
* const options = { page: 2, user: "John", role: "Admin" };
* const result = ariaLabel('yourLabel', { page: 2, user: "John", role: "Admin" })
* console.log(result); // Output: Page 2, User John, Role Admin
* ```
* @param {string} ariaKey key of the ARIA label to look up in locale.
* @param {any} options JSON options like { page: 2, user: "John", role: "Admin" }
* @returns the ARIA label with replaced values
*/
function ariaLabel(ariaKey, options) {
if (ariaKey.includes('__proto__') || ariaKey.includes('prototype')) {
throw new Error('Unsafe ariaKey detected');
}
var _locale = PrimeReact.locale;
try {
var _ariaLabel = localeOptions(_locale).aria[ariaKey];
if (_ariaLabel) {
for (var key in options) {
if (options.hasOwnProperty(key)) {
_ariaLabel = _ariaLabel.replace("{".concat(key, "}"), options[key]);
}
}
}
return _ariaLabel;
} catch (error) {
throw new Error("The ".concat(ariaKey, " option is not found in the current locale('").concat(_locale, "')."));
}
}
function localeOptions(locale) {
var _locale = locale || PrimeReact.locale;
if (_locale.includes('__proto__') || _locale.includes('prototype')) {
throw new Error('Unsafe locale detected');
}
return locales[_locale];
}
var styles = '';
var FocusTrapBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'FocusTrap',
children: undefined
},
css: {
styles: styles
},
getProps: function getProps(props) {
return utils.ObjectUtils.getMergedProps(props, FocusTrapBase.defaultProps);
},
getOtherProps: function getOtherProps(props) {
return utils.ObjectUtils.getDiffProps(props, FocusTrapBase.defaultProps);
}
});
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var FocusTrap = /*#__PURE__*/React__default["default"].memo(/*#__PURE__*/React__default["default"].forwardRef(function (inProps, ref) {
var targetRef = React__default["default"].useRef(null);
var firstFocusableElementRef = React__default["default"].useRef(null);
var lastFocusableElementRef = React__default["default"].useRef(null);
var context = React__default["default"].useContext(PrimeReact$1.PrimeReactContext);
var props = FocusTrapBase.getProps(inProps, context);
var metaData = {
props: props
};
hooks.useStyle(FocusTrapBase.css.styles, {
name: 'focustrap'
});
var _FocusTrapBase$setMet = FocusTrapBase.setMetaData(_objectSpread$5({}, metaData));
_FocusTrapBase$setMet.ptm;
React__default["default"].useImperativeHandle(ref, function () {
return {
props: props,
getInk: function getInk() {
return firstFocusableElementRef.current;
},
getTarget: function getTarget() {
return targetRef.current;
}
};
});
hooks.useMountEffect(function () {
if (!props.disabled) {
targetRef.current = getTarget();
setAutoFocus(targetRef.current);
}
});
var getTarget = function getTarget() {
return firstFocusableElementRef.current && firstFocusableElementRef.current.parentElement;
};
/**
* This method sets the auto focus on the first focusable element within the target element.
* It first tries to find a focusable element using the autoFocusSelector. If no such element is found,
* it then tries to find a focusable element using the firstFocusableSelector.
* If the autoFocus prop is set to true and a focusable element is found, it sets the focus on that element.
*
* @param {HTMLElement} target - The target element within which to find a focusable element.
*/
var setAutoFocus = function setAutoFocus(target) {
var _ref = props || {},
_ref$autoFocusSelecto = _ref.autoFocusSelector,
autoFocusSelector = _ref$autoFocusSelecto === void 0 ? '' : _ref$autoFocusSelecto,
_ref$firstFocusableSe = _ref.firstFocusableSelector,
firstFocusableSelector = _ref$firstFocusableSe === void 0 ? '' : _ref$firstFocusableSe,
_ref$autoFocus = _ref.autoFocus,
autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus;
var defaultAutoFocusSelector = "".concat(getComputedSelector(autoFocusSelector));
var computedAutoFocusSelector = "[autofocus]".concat(defaultAutoFocusSelector, ", [data-pc-autofocus='true']").concat(defaultAutoFocusSelector);
var focusableElement = utils.DomHandler.getFirstFocusableElement(target, computedAutoFocusSelector);
autoFocus && !focusableElement && (focusableElement = utils.DomHandler.getFirstFocusableElement(target, getComputedSelector(firstFocusableSelector)));
utils.DomHandler.focus(focusableElement);
};
var getComputedSelector = function getComputedSelector(selector) {
return ":not(.p-hidden-focusable):not([data-p-hidden-focusable=\"true\"])".concat(selector !== null && selector !== void 0 ? selector : '');
};
var onFirstHiddenElementFocus = function onFirstHiddenElementFocus(event) {
var _targetRef$current;
var currentTarget = event.currentTarget,
relatedTarget = event.relatedTarget;
var focusableElement = relatedTarget === currentTarget.$_pfocustrap_lasthiddenfocusableelement || !((_targetRef$current = targetRef.current) !== null && _targetRef$current !== void 0 && _targetRef$current.contains(relatedTarget)) ? utils.DomHandler.getFirstFocusableElement(currentTarget.parentElement, getComputedSelector(currentTarget.$_pfocustrap_focusableselector)) : currentTarget.$_pfocustrap_lasthiddenfocusableelement;
utils.DomHandler.focus(focusableElement);
};
var onLastHiddenElementFocus = function onLastHiddenElementFocus(event) {
var _targetRef$current2;
var currentTarget = event.currentTarget,
relatedTarget = event.relatedTarget;
var focusableElement = relatedTarget === currentTarget.$_pfocustrap_firsthiddenfocusableelement || !((_targetRef$current2 = targetRef.current) !== null && _targetRef$current2 !== void 0 && _targetRef$current2.contains(relatedTarget)) ? utils.DomHandler.getLastFocusableElement(currentTarget.parentElement, getComputedSelector(currentTarget.$_pfocustrap_focusableselector)) : currentTarget.$_pfocustrap_firsthiddenfocusableelement;
utils.DomHandler.focus(focusableElement);
};
var createHiddenFocusableElements = function createHiddenFocusableElements() {
var _ref2 = props || {},
_ref2$tabIndex = _ref2.tabIndex,
tabIndex = _ref2$tabIndex === void 0 ? 0 : _ref2$tabIndex;
var createFocusableElement = function createFocusableElement(inRef, onFocus, section) {
return /*#__PURE__*/React__default["default"].createElement("span", {
ref: inRef,
className: 'p-hidden-accessible p-hidden-focusable',
tabIndex: tabIndex,
role: 'presentation',
"aria-hidden": true,
"data-p-hidden-accessible": true,
"data-p-hidden-focusable": true,
onFocus: onFocus,
"data-pc-section": section
});
};
var firstFocusableElement = createFocusableElement(firstFocusableElementRef, onFirstHiddenElementFocus, 'firstfocusableelement');
var lastFocusableElement = createFocusableElement(lastFocusableElementRef, onLastHiddenElementFocus, 'lastfocusableelement');
if (firstFocusableElementRef.current && lastFocusableElementRef.current) {
firstFocusableElementRef.current.$_pfocustrap_lasthiddenfocusableelement = lastFocusableElementRef.current;
lastFocusableElementRef.current.$_pfocustrap_firsthiddenfocusableelement = firstFocusableElementRef.current;
}
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, firstFocusableElement, props.children, lastFocusableElement);
};
return createHiddenFocusableElements();
}));
var FocusTrap$1 = FocusTrap;
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
var _React$useState = React__namespace.useState(false),
_React$useState2 = _slicedToArray(_React$useState, 2),
overlayVisibleState = _React$useState2[0],
setOverlayVisibleState = _React$useState2[1];
var overlayRef = React__namespace.useRef(null);
var overlayId = React__namespace.useRef(null);
var iconRef = React__namespace.useRef(null);
var selfClick = React__namespace.useRef(false);
var overlayEventListener = React__namespace.useRef(null);
var mergeProps = hooks.useMergeProps();
var getColumnProp = function getColumnProp(name) {
return ColumnBase.getCProp(props.column, name);
};
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var getColumnPTOptions = function getColumnPTOptions(key, params) {
var cProps = getColumnProps();
var columnMetadata = _objectSpread$4({
props: cProps,
parent: props.metaData,
hostName: props.hostName,
state: {
overlayVisible: overlayVisibleState
}
}, params);
return mergeProps(ptm("column.".concat(key), {
column: columnMetadata
}), ptm("column.".concat(key), columnMetadata), ptmo(cProps, key, columnMetadata));
};
var field = getColumnProp('filterField') || getColumnProp('field');
var filterModel = props.filters[field];
var filterStoreModel = props.filtersStore && props.filtersStore[field];
var _useOverlayListener = hooks.useOverlayListener({
target: iconRef,
overlay: overlayRef,
listener: function listener(event, _ref) {
var type = _ref.type,
valid = _ref.valid;
if (valid) {
if (type === 'outside') {
if (!selfClick.current && !isTargetClicked(event.target)) {
hide();
}
selfClick.current = false;
} else if (context.hideOverlaysOnDocumentScrolling) {
hide();
} else if (!utils.DomHandler.isDocument(event.target)) {
utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
}
}
},
when: overlayVisibleState
}),
_useOverlayListener2 = _slicedToArray(_useOverlayListener, 2),
bindOverlayListener = _useOverlayListener2[0],
unbindOverlayListener = _useOverlayListener2[1];
var hasFilter = function hasFilter() {
if (!filterStoreModel || !filterModel) {
return false;
}
return filterStoreModel.operator ? !isFilterBlank(filterModel.constraints[0].value) : !isFilterBlank(filterModel.value);
};
var hasRowFilter = function hasRowFilter() {
return filterModel && !isFilterBlank(filterModel.value);
};
var isFilterBlank = function isFilterBlank(filter) {
return utils.ObjectUtils.isEmpty(filter);
};
var isRowMatchModeSelected = function isRowMatchModeSelected(matchMode) {
return filterModel && filterModel.matchMode === matchMode;
};
var matchModes = function matchModes() {
return getColumnProp('filterMatchModeOptions') || context && context.filterMatchModeOptions[findDataType()].map(function (key) {
return {
label: PrimeReact$1.localeOption(key),
value: key
};
}) || PrimeReact__default["default"].filterMatchModeOptions[findDataType()].map(function (key) {
return {
label: PrimeReact$1.localeOption(key),
value: key
};
});
};
var isShowMenuButton = function isShowMenuButton() {
return getColumnProp('showFilterMenu') && (props.display === 'row' ? getColumnProp('dataType') !== 'boolean' : true);
};
var isShowClearButton = function isShowClearButton() {
return getColumnProp('showClearButton') && props.display === 'row';
};
var isShowMatchModes = function isShowMatchModes() {
return getColumnProp('dataType') !== 'boolean' && getColumnProp('showFilterMatchModes') && matchModes() && getColumnProp('showFilterMenuOptions');
};
var isShowOperator = function isShowOperator() {
return getColumnProp('showFilterOperator') && filterModel && filterModel.operator && getColumnProp('showFilterMenuOptions');
};
var showRemoveIcon = function showRemoveIcon() {
return fieldConstraints().length > 1;
};
var isShowAddConstraint = function isShowAddConstraint() {
return getColumnProp('showAddButton') && filterModel && filterModel.operator && fieldConstraints() && fieldConstraints().length < getColumnProp('maxConstraints') && getColumnProp('showFilterMenuOptions');
};
var isOutsideClicked = function isOutsideClicked(target) {
return !isTargetClicked(target) && overlayRef.current && !(overlayRef.current.isSameNode(target) || overlayRef.current.contains(target));
};
var isTargetClicked = function isTargetClicked(target) {
return iconRef.current && (iconRef.current.isSameNode(target) || iconRef.current.contains(target));
};
var getDefaultConstraint = function getDefaultConstraint() {
if (filterStoreModel) {
if (filterStoreModel.operator) {
return {
matchMode: filterStoreModel.constraints[0].matchMode,
operator: filterStoreModel.operator
};
}
return {
matchMode: filterStoreModel.matchMode
};
}
};
var findDataType = function findDataType() {
var dataType = getColumnProp('dataType');
var matchMode = getColumnProp('filterMatchMode');
var hasMatchMode = function hasMatchMode(key) {
return context && context.filterMatchModeOptions[key].some(function (mode) {
return mode === matchMode;
}) || PrimeReact__default["default"].filterMatchModeOptions[key].some(function (mode) {
return mode === matchMode;
});
};
if (matchMode === 'custom' && !hasMatchMode(dataType)) {
context && context.filterMatchModeOptions[dataType].push(PrimeReact$1.FilterMatchMode.CUSTOM) || PrimeReact__default["default"].filterMatchModeOptions[dataType].push(PrimeReact$1.FilterMatchMode.CUSTOM);
return dataType;
} else if (matchMode) {
return Object.keys(context && context.filterMatchModeOptions || PrimeReact__default["default"].filterMatchModeOptions).find(function (key) {
return hasMatchMode(key);
}) || dataType;
}
return dataType;
};
var clearFilter = function clearFilter() {
var filterClearCallback = getColumnProp('onFilterClear');
var defaultConstraint = getDefaultConstraint();
var filters = _objectSpread$4({}, props.filters);
if (filters[field].operator) {
filters[field].constraints.splice(1);
filters[field].operator = defaultConstraint.operator;
filters[field].constraints[0] = {
value: null,
matchMode: defaultConstraint.matchMode
};
} else {
filters[field].value = null;
filters[field].matchMode = defaultConstraint ? defaultConstraint.matchMode : filters[field].matchMode;
}
filterClearCallback && filterClearCallback();
props.onFilterChange(filters);
props.onFilterApply();
hide();
};
var applyFilter = function applyFilter() {
var filterApplyClickCallback = getColumnProp('onFilterApplyClick');
filterApplyClickCallback && filterApplyClickCallback({
field: field,
constraints: filterModel
});
props.onFilterApply();
hide();
};
var toggleMenu = function toggleMenu() {
setOverlayVisibleState(function (prevVisible) {
return !prevVisible;
});
};
var onToggleButtonKeyDown = function onToggleButtonKeyDown(event) {
switch (event.key) {
case 'Escape':
case 'Tab':
hide();
break;
case 'ArrowDown':
if (overlayVisibleState) {
var focusable = utils.DomHandler.getFirstFocusableElement(overlayRef.current);
focusable && focusable.focus();
event.preventDefault();
} else if (event.altKey) {
setOverlayVisibleState(true);
event.preventDefault();
}
break;
}
};
var onContentKeyDown = function onContentKeyDown(event) {
if (event.key === 'Escape') {
hide();
iconRef.current && iconRef.current.focus();
}
};
var onInputChange = function onInputChange(event, index) {
var filters = _objectSpread$4({}, props.filters);
var value = event.target.value;
var filterField = filters[field];
if (props.display === 'menu' && utils.ObjectUtils.isNotEmpty(filterField.constraints)) {
filterField.constraints[index].value = value;
} else {
filterField.value = value;
}
props.onFilterChange(filters);
if (!getColumnProp('showApplyButton') || props.display === 'row') {
props.onFilterApply();
}
};
var onInputKeydown = function onInputKeydown(event, _index) {
if (event.key === 'Enter') {
if (!getColumnProp('showApplyButton') || props.display === 'menu') {
applyFilter();
}
}
};
var onRowMatchModeChange = function onRowMatchModeChange(matchMode) {
var _iconRef$current;
var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
var filters = _objectSpread$4({}, props.filters);
filters[field].matchMode = matchMode;
filterMatchModeChangeCallback && filterMatchModeChangeCallback({
field: field,
matchMode: matchMode
});
props.onFilterChange(filters);
props.onFilterApply();
hide();
(_iconRef$current = iconRef.current) === null || _iconRef$current === void 0 || _iconRef$current.focus();
};
var onRowMatchModeKeyDown = function onRowMatchModeKeyDown(event, matchMode, clear) {
var item = event.target;
switch (event.key) {
case 'ArrowDown':
var nextItem = _findNextItem(item);
if (nextItem) {
item.removeAttribute('tabindex');
nextItem.tabIndex = 0;
nextItem.focus();
}
event.preventDefault();
break;
case 'ArrowUp':
var prevItem = _findPrevItem(item);
if (prevItem) {
item.removeAttribute('tabindex');
prevItem.tabIndex = 0;
prevItem.focus();
}
event.preventDefault();
break;
case 'Enter':
clear ? clearFilter() : onRowMatchModeChange(matchMode.value);
event.preventDefault();
break;
}
};
var onOperatorChange = function onOperatorChange(e) {
var filterOperationChangeCallback = getColumnProp('onFilterOperatorChange');
var value = e.value;
var filters = _objectSpread$4({}, props.filters);
filters[field].operator = value;
props.onFilterChange(filters);
filterOperationChangeCallback && filterOperationChangeCallback({
field: field,
operator: value
});
if (!getColumnProp('showApplyButton')) {
props.onFilterApply();
}
};
var onMenuMatchModeChange = function onMenuMatchModeChange(value, index) {
var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
var filters = _objectSpread$4({}, props.filters);
var filterField = filters[field];
if (props.display === 'menu' && utils.ObjectUtils.isNotEmpty(filterField.constraints)) {
filterField.constraints[index].matchMode = value;
} else {
filterField.matchMode = value;
}
props.onFilterChange(filters);
filterMatchModeChangeCallback && filterMatchModeChangeCallback({
field: field,
matchMode: value,
index: index
});
if (!getColumnProp('showApplyButton')) {
props.onFilterApply();
}
};
var addConstraint = function addConstraint() {
var filterConstraintAddCallback = getColumnProp('onFilterConstraintAdd');
var defaultConstraint = getDefaultConstraint();
var filters = _objectSpread$4({}, props.filters);
var newConstraint = {
value: null,
matchMode: defaultConstraint.matchMode
};
filters[field].constraints.push(newConstraint);
filterConstraintAddCallback && filterConstraintAddCallback({
field: field,
constraint: newConstraint
});
props.onFilterChange(filters);
if (!getColumnProp('showApplyButton')) {
props.onFilterApply();
}
};
var removeConstraint = function removeConstraint(index) {
var filterConstraintRemoveCallback = getColumnProp('onFilterConstraintRemove');
var filters = _objectSpread$4({}, props.filters);
var removedConstraint = filters[field].constraints.splice(index, 1);
filterConstraintRemoveCallback && filterConstraintRemoveCallback({
field: field,
constraint: removedConstraint
});
props.onFilterChange(filters);
if (!getColumnProp('showApplyButton')) {
props.onFilterApply();
}
};
var _findNextItem = function findNextItem(item) {
var nextItem = item.nextElementSibling;
return nextItem ? utils.DomHandler.getAttribute(nextItem, 'data-p-column-filter-separator') === true ? _findNextItem(nextItem) : nextItem : item.parentElement.firstElementChild;
};
var _findPrevItem = function findPrevItem(item) {
var prevItem = item.previousElementSibling;
return prevItem ? utils.DomHandler.getAttribute(prevItem, 'data-p-column-filter-separator') === true ? _findPrevItem(prevItem) : prevItem : item.parentElement.lastElementChild;
};
var hide = function hide() {
setOverlayVisibleState(false);
};
var onContentClick = function onContentClick(event) {
selfClick.current = true;
overlayservice.OverlayService.emit('overlay-click', {
originalEvent: event,
target: overlayRef.current
});
};
var onContentMouseDown = function onContentMouseDown() {
selfClick.current = true;
};
var onOverlayEnter = function onOverlayEnter() {
utils.ZIndexUtils.set('overlay', overlayRef.current, context && context.autoZIndex || PrimeReact__default["default"].autoZIndex, context && context.zIndex.overlay || PrimeReact__default["default"].zIndex.overlay);
utils.DomHandler.addStyles(overlayRef.current, {
position: 'absolute',
top: '0',
left: '0'
});
utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
overlayEventListener.current = function (e) {
if (!isOutsideClicked(e.target)) {
selfClick.current = true;
}
};
overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
};
var onOverlayEntered = function onOverlayEntered() {
bindOverlayListener();
};
var onOverlayExit = function onOverlayExit() {
onOverlayHide();
};
var onOverlayExited = function onOverlayExited() {
utils.ZIndexUtils.clear(overlayRef.current);
};
var onOverlayHide = function onOverlayHide() {
unbindOverlayListener();
overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
overlayEventListener.current = null;
selfClick.current = false;
};
var fieldConstraints = function fieldConstraints() {
return filterModel ? filterModel.constraints || [filterModel] : [];
};
var operator = function operator() {
return filterModel.operator;
};
var operatorOptions = function operatorOptions() {
return [{
label: PrimeReact$1.localeOption('matchAll'),
value: PrimeReact$1.FilterOperator.AND
}, {
label: PrimeReact$1.localeOption('matchAny'),
value: PrimeReact$1.FilterOperator.OR
}];
};
var noFilterLabel = function noFilterLabel() {
return PrimeReact$1.localeOption('noFilter');
};
var removeRuleButtonLabel = function removeRuleButtonLabel() {
return PrimeReact$1.localeOption('removeRule');
};
var addRuleButtonLabel = function addRuleButtonLabel() {
return PrimeReact$1.localeOption('addRule');
};
var clearButtonLabel = function clearButtonLabel() {
return PrimeReact$1.localeOption('clear');
};
var applyButtonLabel = function applyButtonLabel() {
return PrimeReact$1.localeOption('apply');
};
var filterCallback = function filterCallback(value) {
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var filters = _objectSpread$4({}, props.filters);
var meta = filters[field];
props.display === 'menu' && meta && meta.operator ? filters[field].constraints[index].value = value : filters[field].value = value;
props.onFilterChange(filters);
};
var filterApplyCallback = function filterApplyCallback() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
args && filterCallback(args[0], args[1]);
props.onFilterApply();
};
hooks.useUpdateEffect(function () {
if (props.display === 'menu' && overlayVisibleState) {
utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
}
});
hooks.useMountEffect(function () {
if (!overlayId.current) {
overlayId.current = utils.UniqueComponentId();
}
});
hooks.useUnmountEffect(function () {
if (overlayEventListener.current) {
overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
overlayEventListener.current = null;
}
if (overlayRef.current) {
utils.ZIndexUtils.clear(overlayRef.current);
onOverlayHide();
}
});
var createFilterElement = function createFilterElement(model, index) {
var value = model ? model.value : null;
return getColumnProp('filterElement') ? utils.ObjectUtils.getJSXElement(getColumnProp('filterElement'), {
field: field,
index: index,
filterModel: model,
value: value,
filterApplyCallback: filterApplyCallback,
filterCallback: filterCallback
}) : /*#__PURE__*/React__namespace.createElement(inputtext.InputText, {
type: getColumnProp('filterType'),
value: value || '',
onChange: function onChange(e) {
return onInputChange(e, index);
},
onKeyDown: function onKeyDown(e) {
return onInputKeydown(e);
},
className: "p-column-filter",
placeholder: getColumnProp('filterPlaceholder'),
maxLength: getColumnProp('filterMaxLength'),
"aria-label": getColumnProp('filterPlaceholder'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
}
});
};
var createRowFilterElement = function createRowFilterElement() {
if (props.display === 'row') {
var content = createFilterElement(filterModel, 0);
var filterInputProps = mergeProps({
className: cx('filterInput')
}, getColumnPTOptions('filterInput'));
return /*#__PURE__*/React__namespace.createElement("div", filterInputProps, content);
}
return null;
};
var createMenuFilterElement = function createMenuFilterElement(fieldConstraint, index) {
return props.display === 'menu' ? createFilterElement(fieldConstraint, index) : null;
};
var createMenuButton = function createMenuButton() {
if (!isShowMenuButton()) {
return null;
}
var filterIconProps = mergeProps({
'aria-hidden': true
}, getColumnPTOptions('filterIcon'));
var icon = props.filterIcon || /*#__PURE__*/React__namespace.createElement(filter.FilterIcon, filterIconProps);
var columnFilterIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$4({}, filterIconProps), {
props: props
});
var label = overlayVisibleState ? ariaLabel('hideFilterMenu') : ariaLabel('showFilterMenu');
var filterMenuButtonProps = mergeProps({
type: 'button',
className: cx('filterMenuButton', {
overlayVisibleState: overlayVisibleState,
hasFilter: hasFilter
}),
'aria-haspopup': true,
'aria-expanded': overlayVisibleState,
'aria-label': label,
'aria-controls': overlayVisibleState ? overlayId.current : undefined,
onClick: function onClick(e) {
return toggleMenu();
},
onKeyDown: function onKeyDown(e) {
return onToggleButtonKeyDown(e);
}
}, getColumnPTOptions('filterMenuButton', {
context: {
active: hasFilter()
}
}));
return /*#__PURE__*/React__namespace.createElement("button", _extends({
ref: iconRef
}, filterMenuButtonProps), columnFilterIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
};
var createClearButton = function createClearButton() {
if (!isShowClearButton()) {
return null;
}
var filterClearIconProps = mergeProps({
'aria-hidden': true
}, getColumnPTOptions('filterClearIcon'));
var icon = props.filterClearIcon || /*#__PURE__*/React__namespace.createElement(filterslash.FilterSlashIcon, filterClearIconProps);
var filterClearIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$4({}, filterClearIconProps), {
props: props
});
var clearLabel = clearButtonLabel();
var headerFilterClearButtonProps = mergeProps({
className: cx('headerFilterClearButton', {
hasRowFilter: hasRowFilter
}),
type: 'button',
onClick: function onClick(e) {
return clearFilter();
},
'aria-label': clearLabel
}, getColumnPTOptions('headerFilterClearButton', {
context: {
hidden: hasRowFilter()
}
}));
return /*#__PURE__*/React__namespace.createElement("button", headerFilterClearButtonProps, filterClearIcon, /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null));
};
var createRowItems = function createRowItems() {
if (isShowMatchModes()) {
var _matchModes = matchModes();
var _noFilterLabel = noFilterLabel();
var filterSeparatorProps = mergeProps({
className: cx('filterSeparator'),
'data-p-column-filter-separator': true
}, getColumnPTOptions('filterSeparator'));
var filterRowItemProps = mergeProps({
className: cx('filterRowItem', {
isRowMatchModeSelected: isRowMatchModeSelected,
isShowMatchModes: isShowMatchModes
}),
onClick: function onClick(e) {
return clearFilter();
},
onKeyDown: function onKeyDown(e) {
return onRowMatchModeKeyDown(e, null, true);
}
}, getColumnPTOptions('filterRowItem'));
var filterRowItemsProps = mergeProps({
className: cx('filterRowItems')
}, getColumnPTOptions('filterRowItems'));
return /*#__PURE__*/React__namespace.createElement("ul", filterRowItemsProps, _matchModes.map(function (matchMode, i) {
var value = matchMode.value,
label = matchMode.label;
var tabIndex = i === 0 ? 0 : null;
var filterRowItemProps = mergeProps({
className: cx('filterRowItem', {
isRowMatchModeSelected: isRowMatchModeSelected,
isShowMatchModes: isShowMatchModes,
value: value
}),
onClick: function onClick() {
return onRowMatchModeChange(value);
},
onKeyDown: function onKeyDown(e) {
return onRowMatchModeKeyDown(e, matchMode);
},
tabIndex: tabIndex
}, getColumnPTOptions('filterRowItem', {
context: {
highlighted: matchMode && isRowMatchModeSelected(value)
}
}));
return /*#__PURE__*/React__namespace.createElement("li", _extends({}, filterRowItemProps, {
key: label
}), label);
}), /*#__PURE__*/React__namespace.createElement("li", filterSeparatorProps), /*#__PURE__*/React__namespace.createElement("li", filterRowItemProps, _noFilterLabel));
}
return null;
};
var createOperator = function createOperator() {
if (isShowOperator()) {
var options = operatorOptions();
var value = operator();
var filterOperatorProps = mergeProps({
className: cx('filterOperator')
}, getColumnPTOptions('filterOperator'));
return /*#__PURE__*/React__namespace.createElement("div", filterOperatorProps, /*#__PURE__*/React__namespace.createElement(dropdown.Dropdown, {
options: options,
value: value,
onChange: onOperatorChange,
className: "p-column-filter-operator-dropdown",
pt: getColumnPTOptions('filterOperatorDropdown'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
},
"aria-label": ariaLabel('filterOperator')
}));
}
return null;
};
var createMatchModeDropdown = function createMatchModeDropdown(constraint, index) {
if (isShowMatchModes()) {
var options = matchModes();
return /*#__PURE__*/React__namespace.createElement(dropdown.Dropdown, {
options: options,
value: constraint.matchMode,
onChange: function onChange(e) {
return onMenuMatchModeChange(e.value, index);
},
className: "p-column-filter-matchmode-dropdown",
pt: getColumnPTOptions('filterMatchModeDropdown'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
},
"aria-label": ariaLabel('filterConstraint')
});
}
return null;
};
var createRemoveButton = function createRemoveButton(index) {
if (showRemoveIcon()) {
var removeRuleLabel = removeRuleButtonLabel();
return /*#__PURE__*/React__namespace.createElement(button.Button, {
type: "button",
icon: props.filterRemoveIcon || /*#__PURE__*/React__namespace.createElement(trash.TrashIcon, null),
className: "p-column-filter-remove-button p-button-text p-button-danger p-button-sm",
onClick: function onClick() {
return removeConstraint(index);
},
label: removeRuleLabel,
pt: getColumnPTOptions('filterRemoveButton'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
}
});
}
return null;
};
var createConstraints = function createConstraints() {
var _fieldConstraints = fieldConstraints();
var filterConstraintsProps = mergeProps({
className: cx('filterConstraints')
}, getColumnPTOptions('filterConstraints'));
var filterConstraintProps = mergeProps({
className: cx('filterConstraint')
}, getColumnPTOptions('filterConstraint'));
return /*#__PURE__*/React__namespace.createElement("div", filterConstraintsProps, _fieldConstraints.map(function (fieldConstraint, i) {
var matchModeDropdown = createMatchModeDropdown(fieldConstraint, i);
var menuFilterElement = createMenuFilterElement(fieldConstraint, i);
var removeButton = createRemoveButton(i);
var filterRemoveProps = mergeProps(getColumnPTOptions('filterRemove'));
return /*#__PURE__*/React__namespace.createElement("div", _extends({}, filterConstraintProps, {
key: i
}), matchModeDropdown, menuFilterElement, /*#__PURE__*/React__namespace.createElement("div", filterRemoveProps, removeButton));
}));
};
var createAddRule = function createAddRule() {
if (isShowAddConstraint()) {
var addRuleLabel = addRuleButtonLabel();
var filterAddRuleProps = mergeProps({
className: cx('filterAddRule')
}, getColumnPTOptions('filterAddRule'));
return /*#__PURE__*/React__namespace.createElement("div", filterAddRuleProps, /*#__PURE__*/React__namespace.createElement(button.Button, {
type: "button",
label: addRuleLabel,
icon: props.filterAddIcon || /*#__PURE__*/React__namespace.createElement(plus.PlusIcon, null),
className: "p-column-filter-add-button p-button-text p-button-sm",
onClick: addConstraint,
pt: getColumnPTOptions('filterAddRuleButton'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
}
}));
}
return null;
};
var createFilterClearButton = function createFilterClearButton() {
if (getColumnProp('showClearButton')) {
if (!getColumnProp('filterClear')) {
var clearLabel = clearButtonLabel();
return /*#__PURE__*/React__namespace.createElement(button.Button, {
type: "button",
outlined: true,
size: "small",
onClick: clearFilter,
label: clearLabel,
pt: getColumnPTOptions('filterClearButton'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
}
});
}
return utils.ObjectUtils.getJSXElement(getColumnProp('filterClear'), {
field: field,
filterModel: filterModel,
filterClearCallback: clearFilter
});
}
return null;
};
var createFilterApplyButton = function createFilterApplyButton() {
if (getColumnProp('showApplyButton')) {
if (!getColumnProp('filterApply')) {
var applyLabel = applyButtonLabel();
return /*#__PURE__*/React__namespace.createElement(button.Button, {
type: "button",
size: "small",
onClick: applyFilter,
label: applyLabel,
pt: getColumnPTOptions('filterApplyButton'),
unstyled: props.unstyled,
__parentMetadata: {
parent: props.metaData
}
});
}
return utils.ObjectUtils.getJSXElement(getColumnProp('filterApply'), {
field: field,
filterModel: filterModel,
filterApplyCallback: applyFilter
});
}
return null;
};
var createButtonBar = function createButtonBar() {
var clearButton = createFilterClearButton();
var applyButton = createFilterApplyButton();
var filterButtonbarProps = mergeProps({
className: cx('filterButtonBar')
}, getColumnPTOptions('filterButtonBar'));
return /*#__PURE__*/React__namespace.createElement("div", filterButtonbarProps, clearButton, applyButton);
};
var createItems = function createItems() {
var operator = createOperator();
var constraints = createConstraints();
var addRule = createAddRule();
var buttonBar = createButtonBar();
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, operator, constraints, addRule, buttonBar);
};
var createOverlay = function createOverlay() {
var style = getColumnProp('filterMenuStyle');
var filterHeader = utils.ObjectUtils.getJSXElement(getColumnProp('filterHeader'), {
field: field,
filterModel: filterModel,
filterApplyCallback: filterApplyCallback
});
var filterFooter = utils.ObjectUtils.getJSXElement(getColumnProp('filterFooter'), {
field: field,
filterModel: filterModel,
filterApplyCallback: filterApplyCallback
});
var items = props.display === 'row' ? createRowItems() : createItems();
var filterOverlayProps = mergeProps({
style: style,
className: cx('filterOverlay', {
columnFilterProps: props,
context: context,
getColumnProp: getColumnProp
}),
onKeyDown: function onKeyDown(e) {
return onContentKeyDown(e);
},
onClick: function onClick(e) {
return onContentClick(e);
},
onMouseDown: function onMouseDown(e) {
return onContentMouseDown();
},
id: overlayId.current,
'aria-modal': overlayVisibleState,
role: 'dialog'
}, getColumnPTOptions('filterOverlay'));
var transitionProps = mergeProps({
classNames: cx('transition'),
"in": overlayVisibleState,
timeout: {
enter: 120,
exit: 100
},
unmountOnExit: true,
onEnter: onOverlayEnter,
onEntered: onOverlayEntered,
onExit: onOverlayExit,
onExited: onOverlayExited
}, getColumnPTOptions('transition'));
return /*#__PURE__*/React__namespace.createElement(portal.Portal, null, /*#__PURE__*/React__namespace.createElement(csstransition.CSSTransition, _extends({
nodeRef: overlayRef
}, transitionProps), /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: overlayRef
}, filterOverlayProps), /*#__PURE__*/React__namespace.createElement(FocusTrap$1, {
autoFocus: true
}, filterHeader, items, filterFooter))));
};
var rowFilterElement = createRowFilterElement();
var menuButton = createMenuButton();
var clearButton = createClearButton();
var overlay = createOverlay();
var columnFilter = mergeProps({
className: cx('columnFilter', {
columnFilterProps: props
})
}, getColumnPTOptions('columnFilter'));
return /*#__PURE__*/React__namespace.createElement("div", columnFilter, rowFilterElement, menuButton, clearButton, overlay);
});
ColumnFilter.displayName = 'ColumnFilter';
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var HeaderCheckbox = /*#__PURE__*/React__namespace.memo(function (props) {
var mergeProps = hooks.useMergeProps();
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var getColumnPTOptions = function getColumnPTOptions(key) {
var cProps = getColumnProps();
var columnMetaData = {
props: cProps,
parent: props.metaData,
hostName: props.hostName,
state: {},
context: {
checked: props.checked,
disabled: props.disabled
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var onChange = function onChange(event) {
if (!props.disabled) {
props.onChange({
originalEvent: event,
checked: !props.checked
});
}
};
var headerCheckboxIconProps = mergeProps({
className: cx('checkIcon')
}, getColumnPTOptions('headerCheckbox.icon'));
var icon = props.checked ? props.checkIcon || /*#__PURE__*/React__namespace.createElement(check.CheckIcon, headerCheckboxIconProps) : null;
var checkIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread$3({}, headerCheckboxIconProps), {
props: props
});
var tabIndex = props.disabled ? null : 0;
var headerCheckboxProps = {
role: 'checkbox',
'aria-checked': props.checked,
'aria-label': props.checked ? ariaLabel('selectAll') : ariaLabel('unselectAll'),
tabIndex: tabIndex,
onChange: onChange,
icon: checkIcon,
checked: props.checked,
disabled: props.disabled,
unstyled: props.unstyled,
pt: getColumnPTOptions('headerCheckbox')
};
return /*#__PURE__*/React__namespace.createElement(Checkbox, headerCheckboxProps);
});
HeaderCheckbox.displayName = 'HeaderCheckbox';
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var HeaderCell = /*#__PURE__*/React__namespace.memo(function (props) {
var _React$useState = React__namespace.useState({}),
_React$useState2 = _slicedToArray(_React$useState, 2),
styleObjectState = _React$useState2[0],
setStyleObjectState = _React$useState2[1];
var elementRef = React__namespace.useRef(null);
var prevColumn = hooks.usePrevious(props.column);
var mergeProps = hooks.useMergeProps();
var parentMetaData = props.metaData,
ptCallbacks = props.ptCallbacks,
index = props.index;
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var params = {
index: index
};
var parentParams = _objectSpread$2(_objectSpread$2({}, parentMetaData), params);
var getColumnProps = function getColumnProps() {
return ColumnBase.getCProps(props.column);
};
var getColumnPTOptions = function getColumnPTOptions(key) {
var cProps = getColumnProps();
var columnMetaData = {
props: cProps,
parent: parentParams,
hostName: props.hostName,
state: {
styleObject: styleObjectState
},
context: {
index: props.index,
sorted: getSortMeta().sorted,
resizable: props.resizableColumns,
size: props.metaData.props.size,
showGridlines: props.metaData.props.showGridlines
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var isBadgeVisible = function isBadgeVisible() {
return props.multiSortMeta && props.multiSortMeta.length > 1;
};
var isSortableDisabled = function isSortableDisabled() {
return !getColumnProp('sortable') || getColumnProp('sortable') && (props.allSortableDisabled || getColumnProp('sortableDisabled'));
};
var getColumnProp = function getColumnProp() {
return props.column ? typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string' ? ColumnBase.getCProp(props.column, arguments.length <= 0 ? undefined : arguments[0]) : ColumnBase.getCProp((arguments.length <= 0 ? undefined : arguments[0]) || props.column, arguments.length <= 1 ? undefined : arguments[1]) : null;
};
var getStyle = function getStyle() {
var headerStyle = getColumnProp('headerStyle');
var columnStyle = getColumnProp('style');
return getColumnProp('frozen') ? Object.assign({}, columnStyle, headerStyle, styleObjectState) : Object.assign({}, columnStyle, headerStyle);
};
var getMultiSortMetaIndex = function getMultiSortMetaIndex() {
return props.multiSortMeta.findIndex(function (meta) {
return meta.field === getColumnProp('field') || meta.field === getColumnProp('sortField');
});
};
var getSortMeta = function getSortMeta() {
var sorted = false;
var sortOrder = 0;
var metaIndex = -1;
if (props.sortMode === 'single') {
sorted = props.sortField && (props.sortField === getColumnProp('field') || props.sortField === getColumnProp('sortField'));
sortOrder = sorted ? props.sortOrder : 0;
} else if (props.sortMode === 'multiple') {
metaIndex = getMultiSortMetaIndex();
if (metaIndex > -1) {
sorted = true;
sortOrder = props.multiSortMeta[metaIndex].order;
}
}
return {
sorted: sorted,
sortOrder: sortOrder,
metaIndex: metaIndex
};
};
var getAriaSort = function getAriaSort(_ref) {
var sorted = _ref.sorted,
sortOrder = _ref.sortOrder;
if (getColumnProp('sortable')) {
if (sorted && sortOrder < 0) {
return 'descending';
} else if (sorted && sortOrder > 0) {
return 'ascending';
}
return 'none';
}
return null;
};
var updateStickyPosition = function updateStickyPosition() {
if (getColumnProp('frozen')) {
var styleObject = _objectSpread$2({}, styleObjectState);
var align = getColumnProp('alignFrozen');
if (align === 'right') {
var right = 0;
var next = elementRef.current && elementRef.current.nextElementSibling;
if (next && next.classList.contains('p-frozen-column')) {
right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
}
styleObject.right = right + 'px';
} else {
var left = 0;
var prev = elementRef.current && elementRef.current.previousElementSibling;
while (prev) {
if (prev && prev.classList.contains('p-frozen-column')) {
left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
elementRef.current.style.left = left + 'px';
break;
}
prev = prev.previousElementSibling;
}
styleObject.left = left + 'px';
}
var filterRow = elementRef.current.parentElement.nextElementSibling;
if (filterRow) {
var _index = utils.DomHandler.index(elementRef.current);
filterRow.children[_index].style.left = styleObject.left;
filterRow.children[_index].style.right = styleObject.right;
}
var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
!isSameStyle && setStyleObjectState(styleObject);
}
};
var updateSortableDisabled = function updateSortableDisabled(prevColumn) {
if (getColumnProp(prevColumn, 'sortableDisabled') !== getColumnProp('sortableDisabled') || getColumnProp(prevColumn, 'sortable') !== getColumnProp('sortable')) {
props.onSortableChange();
}
};
var _onClick = function onClick(event) {
if (!isSortableDisabled()) {
var targetNode = event.target;
if (utils.DomHandler.getAttribute(targetNode, 'data-p-sortable-column') === true || utils.DomHandler.getAttribute(targetNode, 'data-pc-section') === 'headertitle' || utils.DomHandler.getAttribute(targetNode, 'data-pc-section') === 'headercontent' || utils.DomHandler.getAttribute(targetNode, 'data-pc-section') === 'sortIcon' || utils.DomHandler.getAttribute(targetNode.parentElement, 'data-pc-section') === 'sortIcon' || targetNode.closest('[data-p-sortable-column="true"]') && !targetNode.closest('[data-pc-section="filtermenubutton"]')) {
utils.DomHandler.clearSelection();
props.onSortChange({
originalEvent: event,
column: props.column,
sortableDisabledFields: props.sortableDisabledFields
});
}
}
};
var _onMouseDown = function onMouseDown(event) {
props.onColumnMouseDown({
originalEvent: event,
column: props.column
});
};
var _onKeyDown = function onKeyDown(event) {
if ((event.code == 'Enter' || event.code === 'NumpadEnter' || event.code == 'Space') && event.target === elementRef.current && utils.DomHandler.getAttribute(event.currentTarget, 'data-p-sortable-column') === true) {
_onClick(event);
event.preventDefault();
}
};
var _onDragStart = function onDragStart(event) {
props.onColumnDragStart({
originalEvent: event,
column: props.column
});
};
var _onDragOver = function onDragOver(event) {
props.onColumnDragOver({
originalEvent: event,
column: props.column
});
};
var _onDragLeave = function onDragLeave(event) {
props.onColumnDragLeave({
originalEvent: event,
column: props.column
});
};
var _onDrop = function onDrop(event) {
props.onColumnDrop({
originalEvent: event,
column: props.column
});
};
var onResizeStart = function onResizeStart(event) {
props.onColumnResizeStart({
originalEvent: event,
column: props.column
});
};
var onResizerClick = function onResizerClick(event) {
if (props.onColumnResizerClick) {
props.onColumnResizerClick({
originalEvent: event,
element: event.currentTarget.parentElement,
column: props.column
});
event.preventDefault();
}
};
var onResizerDoubleClick = function onResizerDoubleClick(event) {
if (props.onColumnResizerDoubleClick) {
props.onColumnResizerDoubleClick({
originalEvent: event,
element: event.currentTarget.parentElement,
column: props.column
});
event.preventDefault();
}
};
React__namespace.useEffect(function () {
if (getColumnProp('frozen')) {
updateStickyPosition();
}
updateSortableDisabled(prevColumn);
});
var createResizer = function createResizer() {
if (props.resizableColumns && !getColumnProp('frozen')) {
var columnResizerProps = mergeProps({
className: cx('columnResizer'),
onMouseDown: function onMouseDown(e) {
return onResizeStart(e);
},
onTouchStart: function onTouchStart(e) {
return onResizeStart(e);
},
onClick: function onClick(e) {
return onResizerClick(e);
},
onDoubleClick: function onDoubleClick(e) {
return onResizerDoubleClick(e);
}
}, getColumnPTOptions('columnResizer'));
return /*#__PURE__*/React__namespace.createElement("span", columnResizerProps);
}
return null;
};
var createTitle = function createTitle() {
var title = utils.ObjectUtils.getJSXElement(getColumnProp('header'), {
props: props.tableProps
});
var headerTitleProps = mergeProps({
className: cx('headerTitle')
}, getColumnPTOptions('headerTitle'));
return /*#__PURE__*/React__namespace.createElement("span", headerTitleProps, title);
};
var createSortIcon = function createSortIcon(_ref2) {
var sorted = _ref2.sorted,
sortOrder = _ref2.sortOrder;
if (getColumnProp('sortable')) {
var sortIconProps = mergeProps({
className: cx('sortIcon')
}, getColumnPTOptions('sortIcon'));
var sortProps = mergeProps(getColumnPTOptions('sort'));
var icon = sorted ? sortOrder < 0 ? /*#__PURE__*/React__namespace.createElement(sortamountdown.SortAmountDownIcon, sortIconProps) : /*#__PURE__*/React__namespace.createElement(sortamountupalt.SortAmountUpAltIcon, sortIconProps) : /*#__PURE__*/React__namespace.createElement(sortalt.SortAltIcon, sortIconProps);
var sortIcon = utils.IconUtils.getJSXIcon(props.sortIcon || icon, _objectSpread$2({}, sortIconProps), {
props: props,
sorted: sorted,
sortOrder: sortOrder
});
return /*#__PURE__*/React__namespace.createElement("span", sortProps, sortIcon);
}
return null;
};
var createBadge = function createBadge(_ref3) {
var metaIndex = _ref3.metaIndex;
if (metaIndex !== -1 && isBadgeVisible()) {
var value = props.groupRowsBy && props.groupRowsBy === props.groupRowSortField ? metaIndex : metaIndex + 1;
var sortBadgeProps = mergeProps({
className: cx('sortBadge')
}, getColumnPTOptions('root'), getColumnPTOptions('sortBadge'));
return /*#__PURE__*/React__namespace.createElement("span", sortBadgeProps, value);
}
return null;
};
var createCheckbox = function createCheckbox() {
if (props.showSelectAll && getColumnProp('selectionMode') === 'multiple' && props.filterDisplay !== 'row') {
var allRowsSelected = props.allRowsSelected(props.value);
return /*#__PURE__*/React__namespace.createElement(HeaderCheckbox, {
hostName: props.hostName,
column: props.column,
checked: allRowsSelected,
onChange: props.onColumnCheckboxChange,
disabled: props.empty,
ptCallbacks: ptCallbacks,
metaData: parentMetaData,
unstyled: props.unstyled
});
}
return null;
};
var createFilter = function createFilter() {
if (props.filterDisplay === 'menu' && getColumnProp('filter')) {
return /*#__PURE__*/React__namespace.createElement(ColumnFilter, {
hostName: props.hostName,
display: "menu",
column: props.column,
filters: props.filters,
onFilterChange: props.onFilterChange,
onFilterApply: props.onFilterApply,
filtersStore: props.filtersStore,
filterIcon: props.filterIcon,
filterClearIcon: props.filterClearIcon,
ptCallbacks: ptCallbacks,
metaData: parentMetaData,
unstyled: props.unstyled
});
}
return null;
};
var createHeader = function createHeader(sortMeta) {
var title = createTitle();
var sortIcon = createSortIcon(sortMeta);
var badge = createBadge(sortMeta);
var checkbox = createCheckbox();
var filter = createFilter();
var headerContentProps = mergeProps({
className: cx('headerContent')
}, getColumnPTOptions('headerContent'));
return /*#__PURE__*/React__namespace.createElement("div", headerContentProps, title, sortIcon, badge, checkbox, filter);
};
var createElement = function createElement() {
var _isSortableDisabled = isSortableDisabled();
var sortMeta = getSortMeta();
var style = getStyle();
var align = getColumnProp('alignHeader') || getColumnProp('align');
var frozen = getColumnProp('frozen');
var tabIndex = getColumnProp('sortable') && !_isSortableDisabled ? props.tabIndex : null;
var colSpan = getColumnProp('colSpan');
var rowSpan = getColumnProp('rowSpan');
var ariaSort = getAriaSort(sortMeta);
var headerTooltip = getColumnProp('headerTooltip');
var headerClassName = getColumnProp('headerClassName');
var hasTooltip = utils.ObjectUtils.isNotEmpty(headerTooltip);
var headerTooltipOptions = getColumnProp('headerTooltipOptions');
var resizer = createResizer();
var header = createHeader(sortMeta);
var headerCellProps = mergeProps({
className: utils.classNames(headerClassName, cx('headerCell', {
headerProps: props,
frozen: frozen,
sortMeta: sortMeta,
align: align,
_isSortableDisabled: _isSortableDisabled,
getColumnProp: getColumnProp
})),
style: style,
role: 'columnheader',
onClick: function onClick(e) {
return _onClick(e);
},
onKeyDown: function onKeyDown(e) {
return _onKeyDown(e);
},
onMouseDown: function onMouseDown(e) {
return _onMouseDown(e);
},
onDragStart: function onDragStart(e) {
return _onDragStart(e);
},
onDragOver: function onDragOver(e) {
return _onDragOver(e);
},
onDragLeave: function onDragLeave(e) {
return _onDragLeave(e);
},
onDrop: function onDrop(e) {
return _onDrop(e);
},
tabIndex: tabIndex,
colSpan: colSpan,
rowSpan: rowSpan,
'aria-sort': ariaSort,
'data-p-sortable-column': getColumnProp('sortable'),
'data-p-resizable-column': props.resizableColumns,
'data-p-highlight': sortMeta.sorted,
'data-p-filter-column': !props.metaData.props.headerColumnGroup && props.filterDisplay === 'row',
'data-p-frozen-column': getColumnProp('frozen'),
'data-p-reorderable-column': props.reorderableColumns
}, getColumnPTOptions('root'), getColumnPTOptions('headerCell'));
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("th", _extends({
ref: elementRef
}, headerCellProps), resizer, header), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
target: elementRef,
content: headerTooltip,
pt: getColumnPTOptions('tooltip'),
unstyled: props.unstyled
}, headerTooltipOptions)));
};
var element = createElement();
return element;
});
HeaderCell.displayName = 'HeaderCell';
var _excluded = ["unstyled", "__TYPE", "ptOptions"];
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var TableHeader = /*#__PURE__*/React__namespace.memo(function (props) {
var _React$useState = React__namespace.useState([]),
_React$useState2 = _slicedToArray(_React$useState, 2),
sortableDisabledFieldsState = _React$useState2[0],
setSortableDisabledFieldsState = _React$useState2[1];
var _React$useState3 = React__namespace.useState(false),
_React$useState4 = _slicedToArray(_React$useState3, 2),
allSortableDisabledState = _React$useState4[0],
setAllSortableDisabledState = _React$useState4[1];
var mergeProps = hooks.useMergeProps();
var isSingleSort = props.sortMode === 'single';
var isMultipleSort = props.sortMode === 'multiple';
var isAllSortableDisabled = isSingleSort && allSortableDisabledState;
var _props$ptCallbacks = props.ptCallbacks,
ptm = _props$ptCallbacks.ptm,
ptmo = _props$ptCallbacks.ptmo,
cx = _props$ptCallbacks.cx;
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var getColumnProp = function getColumnProp(column, name) {
return ColumnBase.getCProp(column, name);
};
var getColumnProps = function getColumnProps(column) {
return ColumnBase.getCProps(column);
};
var getRowProps = function getRowProps(row) {
return ColumnGroupBase.getCProps(row);
};
var getColumnGroupProps = function getColumnGroupProps() {
return props.headerColumnGroup ? ptmo(ColumnGroupBase.getCProps(props.headerColumnGroup)) : undefined;
};
var getColumnGroupPTOptions = function getColumnGroupPTOptions(key) {
var cGProps = getColumnGroupProps();
var columnGroupMetaData = {
props: cGProps,
parent: props.metaData,
hostName: props.hostName,
state: {
sortableDisabledFields: sortableDisabledFieldsState,
allSortableDisabled: allSortableDisabledState
}
};
return mergeProps(ptm("columnGroup.".concat(key), {
columnGroup: columnGroupMetaData
}), ptm("columnGroup.".concat(key), columnGroupMetaData), ptmo(cGProps, key, columnGroupMetaData));
};
var getColumnPTOptions = function getColumnPTOptions(column, key) {
var cProps = getColumnProps(column);
var columnMetaData = {
props: cProps,
parent: props.metaData,
hostName: props.hostName,
state: {
sortableDisabledFields: sortableDisabledFieldsState,
allSortableDisabled: allSortableDisabledState
}
};
return mergeProps(ptm("column.".concat(key), {
column: columnMetaData
}), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
};
var getRowPTOptions = function getRowPTOptions(row, key) {
var rProps = getRowProps(row);
var rowMetaData = {
props: rProps,
parent: props.metaData,
hostName: props.hostName
};
return mergeProps(ptm("row.".concat(key), {
row: rowMetaData
}), ptm("row.".concat(key), rowMetaData), ptmo(rProps, key, rowMetaData));
};
var isColumnSorted = function isColumnSorted(column) {
return props.sortField !== null ? getColumnProp(column, 'field') === props.sortField || getColumnProp(column, 'sortField') === props.sortField : false;
};
var updateSortableDisabled = function updateSortableDisabled() {
if (isSingleSort || isMultipleSort && props.onSortChange) {
var sortableDisabledFields = [];
var allSortableDisabled = false;
props.columns.forEach(function (column) {
if (getColumnProp(column, 'sortableDisabled')) {
sortableDisabledFields.push(getColumnProp(column, 'sortField') || getColumnProp(column, 'field'));
if (!allSortableDisabled && isColumnSorted(column)) {
allSortableDisabled = true;
}
}
});
setSortableDisabledFieldsState(sortableDisabledFields);
setAllSortableDisabledState(allSortableDisabled);
}
};
var onSortableChange = function onSortableChange() {
updateSortableDisabled();
};
var onCheckboxChange = function onCheckboxChange(e) {
props.onColumnCheckboxChange(e, props.value);
};
hooks.useMountEffect(function () {
updateSortableDisabled();
});
var createGroupHeaderCells = function createGroupHeaderCells(row) {
var columns = React__namespace.Children.toArray(RowBase.getCProp(row, 'children'));
return createHeaderCells(columns);
};
var createHeaderCells = function createHeaderCells(columns) {
return React__namespace.Children.map(columns, function (col, i) {
var isVisible = col ? !getColumnProp(col, 'hidden') : true;
var key = col ? getColumnProp(col, 'columnKey') || getColumnProp(col, 'field') || i : i;
return isVisible && /*#__PURE__*/React__namespace.createElement(HeaderCell, {
hostName: props.hostName,
allRowsSelected: props.allRowsSelected,
allSortableDisabled: isAllSortableDisabled,
column: col,
index: i,
empty: props.empty,
filterClearIcon: props.filterClearIcon,
filterDisplay: props.filterDisplay,
filterIcon: props.filterIcon,
filters: props.filters,
filtersStore: props.filtersStore,
groupRowSortField: props.groupRowSortField,
groupRowsBy: props.groupRowsBy,
key: key,
multiSortMeta: props.multiSortMeta,
onColumnCheckboxChange: onCheckboxChange,
onColumnDragLeave: props.onColumnDragLeave,
onColumnDragOver: props.onColumnDragOver,
onColumnDragStart: props.onColumnDragStart,
onColumnDrop: props.onColumnDrop,
onColumnMouseDown: props.onColumnMouseDown,
onColumnResizeStart: props.onColumnResizeStart,
onColumnResizerClick: props.onColumnResizerClick,
onColumnResizerDoubleClick: props.onColumnResizerDoubleClick,
onFilterApply: props.onFilterApply,
onFilterChange: props.onFilterChange,
onSortChange: props.onSortChange,
onSortableChange: onSortableChange,
reorderableColumns: props.reorderableColumns,
resizableColumns: props.resizableColumns,
showSelectAll: props.showSelectAll,
sortField: props.sortField,
sortIcon: props.sortIcon,
sortMode: props.sortMode,
sortOrder: props.sortOrder,
sortableDisabledFields: sortableDisabledFieldsState,
tabIndex: props.tabIndex,
tableProps: props.tableProps,
value: props.value,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: props.unstyled
});
});
};
var createCheckbox = function createCheckbox(column, selectionMode) {
if (props.showSelectAll && selectionMode === 'multiple') {
var allRowsSelected = props.allRowsSelected(props.value);
return /*#__PURE__*/React__namespace.createElement(HeaderCheckbox, {
hostName: props.hostName,
column: column,
checked: allRowsSelected,
onChange: onCheckboxChange,
disabled: props.empty,
ptCallbacks: props.ptCallbacks,
metaData: props.metaData,
unstyled: props.unstyled
});
}
return null;
};
var createFilter = function createFilter(column, filter) {
if (filter) {
return /*#__PURE__*/React__namespace.createElement(ColumnFilter, {
hostName: props.hostName,
display: "row",
column: column,
filterClearIcon: props.filterClearIcon,
filterIcon: props.filterIcon,
filters: props.filters,
filtersStore: props.filtersStore,
metaData: props.metaData,
onFilterApply: props.onFilterApply,
onFilterChange: props.onFilterChange,
ptCallbacks: props.ptCallbacks,
unstyled: props.unstyled
});
}
return null;
};
var createFilterCells = function createFilterCells() {
return React__namespace.Children.map(props.columns, function (col, i) {
var isVisible = !getColumnProp(col, 'hidden');
if (isVisible) {
var _ColumnBase$getCProps = ColumnBase.getCProps(col),
filterHeaderStyle = _ColumnBase$getCProps.filterHeaderStyle,
style = _ColumnBase$getCProps.style,
filterHeaderClassName = _ColumnBase$getCProps.filterHeaderClassName,
className = _ColumnBase$getCProps.className,
frozen = _ColumnBase$getCProps.frozen,
columnKey = _ColumnBase$getCProps.columnKey,
field = _ColumnBase$getCProps.field,
selectionMode = _ColumnBase$getCProps.selectionMode,
filter = _ColumnBase$getCProps.filter;
var colStyle = _objectSpread$1(_objectSpread$1({}, filterHeaderStyle || {}), style || {});
var colKey = columnKey || field || i;
var checkbox = createCheckbox(col, selectionMode);
var filterRow = createFilter(col, filter);
var headerCellProps = mergeProps({
style: colStyle,
className: utils.classNames(filterHeaderClassName, className, cx('headerCell', {
frozen: frozen,
column: col
}))
}, getColumnPTOptions(col, 'root'), getColumnPTOptions(col, 'headerCell'));
return /*#__PURE__*/React__namespace.createElement("th", _extends({
key: colKey
}, headerCellProps), checkbox, filterRow);
}
return null;
});
};
var createContent = function createContent() {
if (props.headerColumnGroup) {
var rows = React__namespace.Children.toArray(ColumnGroupBase.getCProp(props.headerColumnGroup, 'children'));
return rows.map(function (row, i) {
var _RowBase$getProps = RowBase.getProps(row.props, context),
unstyled = _RowBase$getProps.unstyled;
_RowBase$getProps.__TYPE;
_RowBase$getProps.ptOptions;
var rest = _objectWithoutProperties(_RowBase$getProps, _excluded);
var headerRowProps = mergeProps({
role: 'row'
}, unstyled ? _objectSpread$1({
unstyled: unstyled
}, rest) : rest, getRowPTOptions(row, 'root'));
return /*#__PURE__*/React__namespace.createElement("tr", _extends({}, headerRowProps, {
key: i
}), createGroupHeaderCells(row));
});
}
var headerRowProps = mergeProps({
role: 'row'
}, ptm('headerRow', {
hostName: props.hostName
}));
var headerRow = /*#__PURE__*/React__namespace.createElement("tr", headerRowProps, createHeaderCells(props.columns));
var filterRow = props.filterDisplay === 'row' && /*#__PURE__*/React__namespace.createElement("tr", headerRowProps, createFilterCells());
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, headerRow, filterRow);
};
var content = createContent();
var theadProps = mergeProps({
className: cx('thead'),
role: 'rowgroup'
}, getColumnGroupPTOptions('root'), ptm('thead', {
hostName: props.hostName
}));
return /*#__PURE__*/React__namespace.createElement("thead", theadProps, content);
});
TableHeader.displayName = 'TableHeader';
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
var context = React__namespace.useContext(PrimeReact$1.PrimeReactContext);
var mergeProps = hooks.useMergeProps();
var props = DataTableBase.getProps(inProps, context);
var _React$useState = React__namespace.useState(props.first),
_React$useState2 = _slicedToArray(_React$useState, 2),
firstState = _React$useState2[0],
setFirstState = _React$useState2[1];
var _React$useState3 = React__namespace.useState(props.rows),
_React$useState4 = _slicedToArray(_React$useState3, 2),
rowsState = _React$useState4[0],
setRowsState = _React$useState4[1];
var _React$useState5 = React__namespace.useState(props.sortField),
_React$useState6 = _slicedToArray(_React$useState5, 2),
sortFieldState = _React$useState6[0],
setSortFieldState = _React$useState6[1];
var _React$useState7 = React__namespace.useState(props.sortOrder),
_React$useState8 = _slicedToArray(_React$useState7, 2),
sortOrderState = _React$useState8[0],
setSortOrderState = _React$useState8[1];
var _React$useState9 = React__namespace.useState(props.multiSortMeta),
_React$useState10 = _slicedToArray(_React$useState9, 2),
multiSortMetaState = _React$useState10[0],
setMultiSortMetaState = _React$useState10[1];
var _React$useState11 = React__namespace.useState(props.filters),
_React$useState12 = _slicedToArray(_React$useState11, 2),
filtersState = _React$useState12[0],
setFiltersState = _React$useState12[1];
var _React$useState13 = React__namespace.useState([]),
_React$useState14 = _slicedToArray(_React$useState13, 2),
columnOrderState = _React$useState14[0],
setColumnOrderState = _React$useState14[1];
var _React$useState15 = React__namespace.useState(null),
_React$useState16 = _slicedToArray(_React$useState15, 2),
groupRowsSortMetaState = _React$useState16[0],
setGroupRowsSortMetaState = _React$useState16[1];
var _React$useState17 = React__namespace.useState({}),
_React$useState18 = _slicedToArray(_React$useState17, 2),
editingMetaState = _React$useState18[0],
setEditingMetaState = _React$useState18[1];
var _React$useState19 = React__namespace.useState({}),
_React$useState20 = _slicedToArray(_React$useState19, 2),
frozenEditingMetaState = _React$useState20[0],
setFrozenEditingMetaState = _React$useState20[1];
var _React$useState21 = React__namespace.useState(props.rows),
_React$useState22 = _slicedToArray(_React$useState21, 2),
d_rowsState = _React$useState22[0],
setD_rowsState = _React$useState22[1];
var _React$useState23 = React__namespace.useState({}),
_React$useState24 = _slicedToArray(_React$useState23, 2),
d_filtersState = _React$useState24[0],
setD_filtersState = _React$useState24[1];
var metaData = {
props: props,
state: {
first: firstState,
rows: rowsState,
sortField: sortFieldState,
sortOrder: sortOrderState,
multiSortMeta: multiSortMetaState,
filters: filtersState,
columnOrder: columnOrderState,
groupRowsSortMeta: groupRowsSortMetaState,
editingMeta: editingMetaState,
frozenEditingMeta: frozenEditingMetaState,
d_rows: d_rowsState,
d_filters: d_filtersState
},
context: {
scrollable: props.scrollable
}
};
var ptCallbacks = DataTableBase.setMetaData(metaData);
componentbase.useHandleStyle(DataTableBase.css.styles, ptCallbacks.isUnstyled, {
name: 'datatable'
});
var attributeSelector = React__namespace.useRef('');
var elementRef = React__namespace.useRef(null);
var tableRef = React__namespace.useRef(null);
var wrapperRef = React__namespace.useRef(null);
var bodyRef = React__namespace.useRef(null);
var frozenBodyRef = React__namespace.useRef(null);
var virtualScrollerRef = React__namespace.useRef(null);
var reorderIndicatorUpRef = React__namespace.useRef(null);
var reorderIndicatorDownRef = React__namespace.useRef(null);
var colReorderIconWidth = React__namespace.useRef(null);
var colReorderIconHeight = React__namespace.useRef(null);
var resizeHelperRef = React__namespace.useRef(null);
var draggedColumnElement = React__namespace.useRef(null);
var draggedColumn = React__namespace.useRef(null);
var dropPosition = React__namespace.useRef(null);
var styleElement = React__namespace.useRef(null);
var responsiveStyleElement = React__namespace.useRef(null);
var beforeResizeStyleElement = React__namespace.useRef(null);
var columnWidthsState = React__namespace.useRef(null);
var tableWidthState = React__namespace.useRef(null);
var resizeColumn = React__namespace.useRef(null);
var resizeColumnElement = React__namespace.useRef(null);
var columnResizing = React__namespace.useRef(false);
var lastResizeHelperX = React__namespace.useRef(null);
var columnSortable = React__namespace.useRef(false);
var columnSortFunction = React__namespace.useRef(null);
var columnField = React__namespace.useRef(null);
var filterTimeout = React__namespace.useRef(null);
if (props.rows !== d_rowsState && !props.onPage) {
setRowsState(props.rows);
setD_rowsState(props.rows);
}
var columnResizeStartListener = function columnResizeStartListener(event) {
return columnResizing.current && onColumnResize(event);
};
var columnResizeEndListener = function columnResizeEndListener() {
return columnResizing.current && (columnResizing.current = false, onColumnResizeEnd());
};
var _useEventListener = hooks.useEventListener({
type: 'mousemove',
listener: columnResizeStartListener
}),
_useEventListener2 = _slicedToArray(_useEventListener, 2),
bindDocumentMouseMoveListener = _useEventListener2[0],
unbindDocumentMouseMoveListener = _useEventListener2[1];
var _useEventListener3 = hooks.useEventListener({
type: 'mouseup',
listener: columnResizeEndListener
}),
_useEventListener4 = _slicedToArray(_useEventListener3, 2),
bindDocumentMouseUpListener = _useEventListener4[0],
unbindDocumentMouseUpListener = _useEventListener4[1];
var _useEventListener5 = hooks.useEventListener({
type: 'touchmove',
listener: columnResizeStartListener
}),
_useEventListener6 = _slicedToArray(_useEventListener5, 2),
bindDocumentTouchMoveListener = _useEventListener6[0],
unbindDocumentTouchMoveListener = _useEventListener6[1];
var _useEventListener7 = hooks.useEventListener({
type: 'touchend',
listener: columnResizeEndListener
}),
_useEventListener8 = _slicedToArray(_useEventListener7, 2),
bindDocumentTouchEndListener = _useEventListener8[0],
unbindDocumentTouchEndListener = _useEventListener8[1];
var isCustomStateStorage = function isCustomStateStorage() {
return props.stateStorage === 'custom';
};
var isStateful = function isStateful() {
return props.stateKey != null || isCustomStateStorage();
};
var isVirtualScrollerDisabled = function isVirtualScrollerDisabled() {
return utils.ObjectUtils.isEmpty(props.virtualScrollerOptions) || !props.scrollable;
};
var isEquals = function isEquals(data1, data2) {
return props.compareSelectionBy === 'equals' ? data1 === data2 : utils.ObjectUtils.equals(data1, data2, props.dataKey);
};
var hasFilter = function hasFilter() {
return utils.ObjectUtils.isNotEmpty(getFilters()) || props.globalFilter;
};
var getFirst = function getFirst() {
return props.onPage ? props.first : firstState;
};
var getRows = function getRows() {
return props.onPage ? props.rows : rowsState;
};
var getSortField = function getSortField() {
return props.onSort ? props.sortField : sortFieldState;
};
var getSortOrder = function getSortOrder() {
return props.onSort ? props.sortOrder : sortOrderState;
};
var getMultiSortMeta = function getMultiSortMeta() {
return (props.onSort ? props.multiSortMeta : multiSortMetaState) || [];
};
var getFilters = function getFilters() {
return props.onFilter ? props.filters : filtersState;
};
var getColumnProp = function getColumnProp(column, name) {
return ColumnBase.getCProp(column, name);
};
var getColumns = function getColumns(ignoreReorderable) {
var columns = React__namespace.Children.toArray(props.children);
if (!columns) {
return null;
}
if (!ignoreReorderable && props.reorderableColumns && columnOrderState) {
var orderedColumns = columnOrderState.reduce(function (arr, columnKey) {
var column = findColumnByKey(columns, columnKey);
column && arr.push(column);
return arr;
}, []);
return [].concat(_toConsumableArray(orderedColumns), _toConsumableArray(columns.filter(function (col) {
return orderedColumns.indexOf(col) < 0;
})));
}
return columns;
};
var saveState = function saveState() {
var state = {};
if (props.paginator) {
state.first = getFirst();
state.rows = getRows();
}
var sortField = getSortField();
if (sortField) {
state.sortField = sortField;
state.sortOrder = getSortOrder();
}
var multiSortMeta = getMultiSortMeta();
if (multiSortMeta) {
state.multiSortMeta = multiSortMeta;
}
if (hasFilter()) {
state.filters = getFilters();
}
if (props.resizableColumns) {
saveColumnWidths(state);
}
if (props.reorderableColumns) {
state.columnOrder = columnOrderState;
}
if (props.expandedRows) {
state.expandedRows = props.expandedRows;
}
if (props.selection && props.onSelectionChange) {
state.selection = props.selection;
}
if (isCustomStateStorage()) {
if (props.customSaveState) {
props.customSaveState(state);
}
} else {
var storage = getStorage(props.stateStorage);
if (utils.ObjectUtils.isNotEmpty(state)) {
storage.setItem(props.stateKey, JSON.stringify(state));
}
}
if (props.onStateSave) {
props.onStateSave(state);
}
};
var clearState = function clearState() {
var storage = getStorage(props.stateStorage);
if (storage && props.stateKey) {
storage.removeItem(props.stateKey);
}
};
var restoreState = function restoreState() {
var restoredState = {};
if (isCustomStateStorage()) {
if (props.customRestoreState) {
restoredState = props.customRestoreState();
}
} else {
var storage = getStorage(props.stateStorage);
var stateString = storage.getItem(props.stateKey);
var dateFormat = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/;
var reviver = function reviver(key, value) {
return typeof value === 'string' && dateFormat.test(value) ? new Date(value) : value;
};
if (stateString) {
restoredState = JSON.parse(stateString, reviver);
}
}
_restoreState(restoredState);
};
var restoreTableState = function restoreTableState(restoredState) {
_restoreState(restoredState);
};
var _restoreState = function _restoreState() {
var restoredState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (utils.ObjectUtils.isNotEmpty(restoredState)) {
if (props.paginator) {
if (props.onPage) {
var getOnPageParams = function getOnPageParams(first, rows) {
var totalRecords = getTotalRecords(processedData());
var pageCount = Math.ceil(totalRecords / rows) || 1;
var page = Math.floor(first / rows);
return {
first: first,
rows: rows,
page: page,
pageCount: pageCount
};
};
props.onPage(createEvent(getOnPageParams(restoredState.first, restoredState.rows)));
} else {
setFirstState(restoredState.first);
setRowsState(restoredState.rows);
}
}
if (restoredState.sortField) {
if (props.onSort) {
props.onSort(createEvent({
sortField: restoredState.sortField,
sortOrder: restoredState.sortOrder
}));
} else {
setSortFieldState(restoredState.sortField);
setSortOrderState(restoredState.sortOrder);
}
}
if (restoredState.multiSortMeta) {
if (props.onSort) {
props.onSort(createEvent({
multiSortMeta: restoredState.multiSortMeta
}));
} else {
var lastMeta = restoredState.multiSortMeta[restoredState.multiSortMeta.length - 1];
var field = lastMeta && lastMeta.field ? lastMeta.field : null;
if (field) {
var sortColumn = findColumnByKey(getColumns(), field);
if (sortColumn) {
var sortFunction = getColumnProp(sortColumn, 'sortFunction');
var sortable = getColumnProp(sortColumn, 'sortable');
if (sortFunction && sortable) {
columnSortFunction.current = sortFunction;
columnSortable.current = sortable;
columnField.current = field;
}
}
}
setMultiSortMetaState(restoredState.multiSortMeta);
}
}
if (restoredState.filters) {
setD_filtersState(cloneFilters(restoredState.filters));
if (props.onFilter) {
props.onFilter(createEvent({
filters: restoredState.filters
}));
} else {
setFiltersState(cloneFilters(restoredState.filters));
}
}
if (props.resizableColumns) {
columnWidthsState.current = restoredState.columnWidths;
tableWidthState.current = restoredState.tableWidth;
restoreColumnWidths();
}
if (props.reorderableColumns) {
setColumnOrderState(restoredState.columnOrder);
}
if (restoredState.expandedRows && props.onRowToggle) {
props.onRowToggle({
data: restoredState.expandedRows
});
}
if (restoredState.selection && props.onSelectionChange) {
props.onSelectionChange({
value: restoredState.selection
});
}
if (props.onStateRestore) {
props.onStateRestore(restoredState);
}
}
};
var saveColumnWidths = function saveColumnWidths(state) {
var widths = [];
var headers = utils.DomHandler.find(elementRef.current, '[data-pc-section="thead"] > tr > th');
headers.forEach(function (header) {
return widths.push(utils.DomHandler.getOuterWidth(header));
});
state.columnWidths = widths.join(',');
if (props.columnResizeMode === 'expand') {
state.tableWidth = utils.DomHandler.getOuterWidth(tableRef.current) + 'px';
}
};
var addColumnWidthStyles = function addColumnWidthStyles(widths) {
createStyleElement();
var innerHTML = '';
var selector = "[data-pc-name=\"datatable\"][".concat(attributeSelector.current, "] > [data-pc-section=\"wrapper\"] ").concat(isVirtualScrollerDisabled() ? '' : '> [data-pc-name="virtualscroller"]', " > [data-pc-section=\"table\"]");
widths.forEach(function (width, index) {
var style = "width: ".concat(width, "px !important; max-width: ").concat(width, "px !important");
innerHTML = innerHTML + "\n ".concat(selector, " > [data-pc-section=\"thead\"] > tr > th:nth-child(").concat(index + 1, "),\n ").concat(selector, " > [data-pc-section=\"tbody\"] > tr > td:nth-child(").concat(index + 1, "),\n ").concat(selector, " > [data-pc-section=\"tfoot\"] > tr > td:nth-child(").concat(index + 1, ") {\n ").concat(style, "\n }\n ");
});
styleElement.current.innerHTML = innerHTML;
};
var restoreColumnWidths = function restoreColumnWidths() {
if (columnWidthsState.current) {
var widths = columnWidthsState.current.split(',');
if (props.columnResizeMode === 'expand' && tableWidthState.current) {
tableRef.current.style.width = tableWidthState.current;
tableRef.current.style.minWidth = tableWidthState.current;
}
if (utils.ObjectUtils.isNotEmpty(widths)) {
addColumnWidthStyles(widths);
}
}
};
var findParentHeader = function findParentHeader(element) {
if (element.nodeName === 'TH') {
return element;
}
var parent = element.parentElement;
while (parent.nodeName !== 'TH') {
parent = parent.parentElement;
if (!parent) {
break;
}
}
return parent;
};
var getGroupRowSortField = function getGroupRowSortField() {
return props.sortMode === 'single' ? props.sortField : groupRowsSortMetaState ? groupRowsSortMetaState.field : null;
};
var getSelectableData = function getSelectableData(val) {
if (props.showSelectionElement || props.isDataSelectable) {
return val.filter(function (data, index) {
var isSelectable = true;
if (props.showSelectionElement) {
isSelectable = props.showSelectionElement({
rowIndex: index,
props: props
});
}
if (props.isDataSelectable && isSelectable) {
isSelectable = props.isDataSelectable({
data: data,
index: index
});
}
return isSelectable;
});
}
return val;
};
var allRowsSelected = function allRowsSelected(processedData) {
if (props.onSelectAllChange) {
return props.selectAll;
}
var data = props.selectionPageOnly ? dataToRender(processedData) : processedData;
var val = utils.ObjectUtils.isNotEmpty(props.frozenValue) ? [].concat(_toConsumableArray(props.frozenValue), _toConsumableArray(data)) : data;
var selectableVal = getSelectableData(val);
return utils.ObjectUtils.isNotEmpty(selectableVal) && props.selection && selectableVal.every(function (sv) {
return utils.ObjectUtils.isArray(props.selection) && props.selection.some(function (s) {
return isEquals(s, sv);
});
});
};
var getSelectionModeInColumn = function getSelectionModeInColumn(columns) {
if (columns) {
var col = columns.find(function (c) {
return !!getColumnProp(c, 'selectionMode');
});
return col ? getColumnProp(col, 'selectionMode') : null;
}
return null;
};
var findColumnByKey = function findColumnByKey(columns, key) {
return utils.ObjectUtils.isNotEmpty(columns) ? columns.find(function (col) {
return getColumnProp(col, 'columnKey') === key || getColumnProp(col, 'field') === key;
}) : null;
};
var getTotalRecords = function getTotalRecords(data) {
return props.lazy ? props.totalRecords : data ? data.length : 0;
};
var onEditingMetaChange = function onEditingMetaChange(e) {
var rowData = e.rowData,
field = e.field,
editingKey = e.editingKey;
e.rowIndex;
var editing = e.editing;
var editingMeta = _objectSpread({}, editingMetaState);
var meta = editingMeta[editingKey];
if (editing) {
!meta && (meta = editingMeta[editingKey] = {
data: _objectSpread({}, rowData),
fields: []
});
meta.fields.push(field);
} else if (meta) {
var fields = meta.fields.filter(function (f) {
return f !== field;
});
!fields.length ? delete editingMeta[editingKey] : meta.fields = fields;
}
setEditingMetaState(editingMeta);
};
var clearEditingMetaData = function clearEditingMetaData() {
if (props.editMode && utils.ObjectUtils.isNotEmpty(editingMetaState)) {
setEditingMetaState({});
}
};
var onFrozenEditingMetaChange = function onFrozenEditingMetaChange(e) {
var rowData = e.rowData,
field = e.field,
editingKey = e.editingKey,
editing = e.editing;
var frozenEditingMeta = _objectSpread({}, frozenEditingMetaState);
var meta = frozenEditingMeta[editingKey];
if (editing) {
!meta && (meta = frozenEditingMeta[editingKey] = {
data: _objectSpread({}, rowData),
fields: []
});
meta.fields.push(field);
} else if (meta) {
var fields = meta.fields.filter(function (f) {
return f !== field;
});
!fields.length ? delete frozenEditingMeta[editingKey] : meta.fields = fields;
}
setFrozenEditingMetaState(frozenEditingMeta);
};
var clearFrozenEditingMetaData = function clearFrozenEditingMetaData() {
if (props.editMode && utils.ObjectUtils.isNotEmpty(frozenEditingMetaState)) {
setFrozenEditingMetaState({});
}
};
var onColumnResizeStart = function onColumnResizeStart(e) {
createBeforeResizeStyleElement();
var event = e.originalEvent,
column = e.column;
var containerLeft = utils.DomHandler.getOffset(elementRef.current).left;
resizeColumn.current = column;
resizeColumnElement.current = event.currentTarget.parentElement;
columnResizing.current = true;
lastResizeHelperX.current = (event.type === 'touchstart' ? event.changedTouches[0].clientX : event.pageX) - containerLeft + elementRef.current.scrollLeft;
bindColumnResizeEvents();
};
var onColumnResize = function onColumnResize(event) {
var containerLeft = utils.DomHandler.getOffset(elementRef.current).left;
elementRef.current.setAttribute('data-p-unselectable-text', true);
resizeHelperRef.current.style.height = elementRef.current.offsetHeight + 'px';
resizeHelperRef.current.style.top = 0 + 'px';
resizeHelperRef.current.style.left = (event.type === 'touchmove' ? event.changedTouches[0].clientX : event.pageX) - containerLeft + elementRef.current.scrollLeft + 'px';
resizeHelperRef.current.style.display = 'block';
};
var onColumnResizeEnd = function onColumnResizeEnd() {
var delta = resizeHelperRef.current.offsetLeft - lastResizeHelperX.current;
var columnWidth = resizeColumnElement.current.offsetWidth;
var newColumnWidth = columnWidth + delta;
var minWidth = resizeColumnElement.current.style.minWidth || 15;
if (columnWidth + delta > parseInt(minWidth, 10)) {
if (props.columnResizeMode === 'fit') {
var nextColumn = resizeColumnElement.current.nextElementSibling;
var nextColumnWidth = nextColumn.offsetWidth - delta;
if (newColumnWidth > 15 && nextColumnWidth > 15) {
resizeTableCells(newColumnWidth, nextColumnWidth);
}
} else if (props.columnResizeMode === 'expand') {
var tableWidth = tableRef.current.offsetWidth + delta + 'px';
var updateTableWidth = function updateTableWidth(el) {
!!el && (el.style.width = el.style.minWidth = tableWidth);
};
// https://github.com/primefaces/primereact/issues/3970 Reasoning: resize table cells before updating the table width so that it can use existing computed cell widths and adjust only the one column.
resizeTableCells(newColumnWidth);
updateTableWidth(tableRef.current);
if (!isVirtualScrollerDisabled()) {
updateTableWidth(bodyRef.current);
updateTableWidth(frozenBodyRef.current);
if (wrapperRef.current) {
updateTableWidth(utils.DomHandler.findSingle(wrapperRef.current, '[data-pc-name="virtualscroller"] > table > tbody'));
}
}
}
if (props.onColumnResizeEnd) {
props.onColumnResizeEnd({
element: resizeColumnElement.current,
column: resizeColumn.current,
delta: delta
});
}
if (isStateful()) {
saveState();
}
}
resizeHelperRef.current.style.display = 'none';
resizeColumn.current = null;
resizeColumnElement.current = null;
elementRef.current.setAttribute('data-p-unselectable-text', 'true');
destroyBeforeResizeStyleElement();
unbindColumnResizeEvents();
};
var resizeTableCells = function resizeTableCells(newColumnWidth, nextColumnWidth) {
var widths = [];
var colIndex = utils.DomHandler.index(resizeColumnElement.current);
var headers = utils.DomHandler.find(tableRef.current, '[data-pc-section="thead"] > tr > th');
headers.forEach(function (header) {
return widths.push(utils.DomHandler.getOuterWidth(header));
});
destroyStyleElement();
createStyleElement();
var innerHTML = '';
var selector = "[data-pc-name=\"datatable\"][".concat(attributeSelector.current, "] > [data-pc-section=\"wrapper\"] ").concat(isVirtualScrollerDisabled() ? '' : '> [data-pc-name="virtualscroller"]', " > [data-pc-section=\"table\"]");
widths.forEach(function (width, index) {
var colWidth = index === colIndex ? newColumnWidth : nextColumnWidth && index === colIndex + 1 ? nextColumnWidth : width;
var style = "width: ".concat(colWidth, "px !important; max-width: ").concat(colWidth, "px !important");
innerHTML = innerHTML + "\n ".concat(selector, " > [data-pc-section=\"thead\"] > tr > th:nth-child(").concat(index + 1, "),\n ").concat(selector, " > [data-pc-section=\"tbody\"] > tr > td:nth-child(").concat(index + 1, "),\n ").concat(selector, " > [data-pc-section=\"tfoot\"] > tr > td:nth-child(").concat(index + 1, ") {\n ").concat(style, "\n }\n ");
});
styleElement.current.innerHTML = innerHTML;
};
var bindColumnResizeEvents = function bindColumnResizeEvents() {
bindDocumentMouseMoveListener();
bindDocumentMouseUpListener();
bindDocumentTouchMoveListener();
bindDocumentTouchEndListener();
};
var unbindColumnResizeEvents = function unbindColumnResizeEvents() {
unbindDocumentMouseMoveListener();
unbindDocumentMouseUpListener();
unbindDocumentTouchMoveListener();
unbindDocumentTouchEndListener();
};
var onColumnHeaderMouseDown = function onColumnHeaderMouseDown(e) {
utils.DomHandler.clearSelection();
var event = e.originalEvent,
column = e.column;
if (props.reorderableColumns && getColumnProp(column, 'reorderable') !== false && !getColumnProp(column, 'frozen')) {
if (event.target.nodeName === 'INPUT' || event.target.nodeName === 'TEXTAREA' || utils.DomHandler.getAttribute(event.target, '[data-pc-section="columnresizer"]')) {
event.currentTarget.draggable = false;
} else {
event.currentTarget.draggable = true;
}
}
};
var onColumnHeaderCheckboxChange = function onColumnHeaderCheckboxChange(e, processedData) {
if (props.onSelectAllChange) {
props.onSelectAllChange(e);
} else {
var originalEvent = e.originalEvent,
checked = e.checked;
var _data = props.selectionPageOnly ? dataToRender(processedData) : processedData;
var selection = props.selectionPageOnly && props.selection ? props.selection.filter(function (s) {
return !_data.some(function (d) {
return isEquals(s, d);
});
}) : [];
if (checked) {
selection = utils.ObjectUtils.isNotEmpty(props.frozenValue) ? [].concat(_toConsumableArray(selection), _toConsumableArray(props.frozenValue), _toConsumableArray(_data)) : [].concat(_toConsumableArray(selection), _toConsumableArray(_data));
selection = getSelectableData(selection);
props.onAllRowsSelect && props.onAllRowsSelect({
originalEvent: originalEvent,
data: selection,
type: 'all'
});
} else {
props.onAllRowsUnselect && props.onAllRowsUnselect({
originalEvent: originalEvent,
data: selection,
type: 'all'
});
}
if (props.onSelectionChange) {
props.onSelectionChange({
originalEvent: originalEvent,
value: selection,
type: 'all'
});
}
}
};
var onColumnHeaderDragStart = function onColumnHeaderDragStart(e) {
var event = e.originalEvent,
column = e.column;
if (columnResizing.current) {
event.preventDefault();
return;
}
if (!props.reorderableColumns) {
return;
}
colReorderIconWidth.current = utils.DomHandler.getHiddenElementOuterWidth(reorderIndicatorUpRef.current);
colReorderIconHeight.current = utils.DomHandler.getHiddenElementOuterHeight(reorderIndicatorUpRef.current);
draggedColumn.current = column;
draggedColumnElement.current = findParentHeader(event.currentTarget);
event.dataTransfer.setData('text', 'b'); // Firefox requires this to make dragging possible
};
var onColumnHeaderDragOver = function onColumnHeaderDragOver(e) {
var event = e.originalEvent,
column = e.column;
var dropHeader = findParentHeader(event.currentTarget);
if (props.reorderableColumns && draggedColumnElement.current && dropHeader && !getColumnProp(column, 'frozen')) {
event.preventDefault();
if (draggedColumnElement.current !== dropHeader) {
var containerOffset = utils.DomHandler.getOffset(elementRef.current);
var dropHeaderOffset = utils.DomHandler.getOffset(dropHeader);
var targetLeft = dropHeaderOffset.left - containerOffset.left;
var columnCenter = dropHeaderOffset.left + dropHeader.offsetWidth / 2;
var dragIndex = utils.DomHandler.index(draggedColumnElement.current);
var dropIndex = utils.DomHandler.index(findParentHeader(event.currentTarget));
reorderIndicatorUpRef.current.style.top = dropHeaderOffset.top - containerOffset.top - (colReorderIconHeight.current - 1) + 'px';
reorderIndicatorDownRef.current.style.top = dropHeaderOffset.top - containerOffset.top + dropHeader.offsetHeight + 'px';
if (event.pageX > columnCenter && dragIndex < dropIndex) {
reorderIndicatorUpRef.current.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(colReorderIconWidth.current / 2) + 'px';
reorderIndicatorDownRef.current.style.left = targetLeft + dropHeader.offsetWidth - Math.ceil(colReorderIconWidth.current / 2) + 'px';
dropPosition.current = 1;
} else if (dragIndex > dropIndex) {
reorderIndicatorUpRef.current.style.left = targetLeft - Math.ceil(colReorderIconWidth.current / 2) + 'px';
reorderIndicatorDownRef.current.style.left = targetLeft - Math.ceil(colReorderIconWidth.current / 2) + 'px';
dropPosition.current = -1;
}
reorderIndicatorUpRef.current.style.display = 'block';
reorderIndicatorDownRef.current.style.display = 'block';
}
}
};
var onColumnHeaderDragLeave = function onColumnHeaderDragLeave(e) {
var event = e.originalEvent;
if (props.reorderableColumns && draggedColumnElement.current) {
event.preventDefault();
reorderIndicatorUpRef.current.style.display = 'none';
reorderIndicatorDownRef.current.style.display = 'none';
}
};
var onColumnHeaderDrop = function onColumnHeaderDrop(e) {
var event = e.originalEvent,
column = e.column;
event.preventDefault();
if (draggedColumnElement.current) {
var dragIndex = utils.DomHandler.index(draggedColumnElement.current);
var dropIndex = utils.DomHandler.index(findParentHeader(event.currentTarget));
var allowDrop = dragIndex !== dropIndex;
if (allowDrop && (dropIndex - dragIndex === 1 && dropPosition.current === -1 || dragIndex - dropIndex === 1 && dropPosition.current === 1)) {
allowDrop = false;
}
if (allowDrop) {
var _columns = getColumns();
var isSameColumn = function isSameColumn(col1, col2) {
return getColumnProp(col1, 'columnKey') || getColumnProp(col2, 'columnKey') ? utils.ObjectUtils.equals(col1.props, col2.props, 'columnKey') : utils.ObjectUtils.equals(col1.props, col2.props, 'field');
};
var dragColIndex = _columns.findIndex(function (child) {
return isSameColumn(child, draggedColumn.current);
});
var dropColIndex = _columns.findIndex(function (child) {
return isSameColumn(child, column);
});
var widths = [];
var headers = utils.DomHandler.find(tableRef.current, '[data-pc-section="thead"] > tr > th');
headers.forEach(function (header) {
return widths.push(utils.DomHandler.getOuterWidth(header));
});
var movedItem = widths.find(function (items, index) {
return index === dragColIndex;
});
var remainingItems = widths.filter(function (items, index) {
return index !== dragColIndex;
});
var reorderedWidths = [].concat(_toConsumableArray(remainingItems.slice(0, dropColIndex)), [movedItem], _toConsumableArray(remainingItems.slice(dropColIndex)));
addColumnWidthStyles(reorderedWidths);
if (dropColIndex < dragColIndex && dropPosition.current === 1) {
dropColIndex++;
}
if (dropColIndex > dragColIndex && dropPosition.current === -1) {
dropColIndex--;
}
utils.ObjectUtils.reorderArray(_columns, dragColIndex, dropColIndex);
var columnOrder = _columns.reduce(function (orders, col) {
orders.push(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'));
return orders;
}, []);
setColumnOrderState(columnOrder);
if (props.onColReorder) {
props.onColReorder({
originalEvent: event,
dragIndex: dragColIndex,
dropIndex: dropColIndex,
columns: _columns
});
}
}
reorderIndicatorUpRef.current.style.display = 'none';
reorderIndicatorDownRef.current.style.display = 'none';
draggedColumnElement.current.draggable = false;
draggedColumnElement.current = null;
draggedColumn.current = null;
dropPosition.current = null;
}
};
var createBeforeResizeStyleElement = function createBeforeResizeStyleElement() {
beforeResizeStyleElement.current = utils.DomHandler.createInlineStyle(context && context.nonce || PrimeReact__default["default"].nonce, context && context.styleContainer);
var innerHTML = "\n[data-pc-name=\"datatable\"][".concat(attributeSelector.current, "] {\n user-select:none;\n}\n ");
beforeResizeStyleElement.current.innerHTML = innerHTML;
};
var createStyleElement = function createStyleElement() {
styleElement.current = utils.DomHandler.createInlineStyle(context && context.nonce || PrimeReact__default["default"].nonce, context && context.styleContainer);
};
var createResponsiveStyle = function createResponsiveStyle() {
if (!responsiveStyleElement.current) {
responsiveStyleElement.current = utils.DomHandler.createInlineStyle(context && context.nonce || PrimeReact__default["default"].nonce, context && context.styleContainer);
var tableSelector = ".p-datatable-wrapper ".concat(isVirtualScrollerDisabled() ? '' : '> .p-virtualscroller', " > .p-datatable-table");
var selector = ".p-datatable[".concat(attributeSelector.current, "] > ").concat(tableSelector);
var gridLinesSelector = ".p-datatable[".concat(attributeSelector.current, "].p-datatable-gridlines > ").concat(tableSelector);
var innerHTML = "\n@media screen and (max-width: ".concat(props.breakpoint, ") {\n ").concat(selector, " > .p-datatable-thead > tr > th,\n ").concat(selector, " > .p-datatable-tfoot > tr > td {\n display: none;\n }\n\n ").concat(selector, " > .p-datatable-tbody > tr > td {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n }\n\n ").concat(selector, " > .p-datatable-tbody > tr > td:not(:last-child) {\n border: 0 none;\n }\n\n ").concat(gridLinesSelector, " > .p-datatable-tbody > tr > td:last-child {\n border-top: 0;\n border-right: 0;\n border-left: 0;\n }\n\n ").concat(selector, " > .p-datatable-tbody > tr > td > .p-column-title {\n display: block;\n }\n}\n");
responsiveStyleElement.current.innerHTML = innerHTML;
}
};
var destroyResponsiveStyle = function destroyResponsiveStyle() {
responsiveStyleElement.current = utils.DomHandler.removeInlineStyle(responsiveStyleElement.current);
};
var destroyStyleElement = function destroyStyleElement() {
styleElement.current = utils.DomHandler.removeInlineStyle(styleElement.current);
};
var destroyBeforeResizeStyleElement = function destroyBeforeResizeStyleElement() {
beforeResizeStyleElement.current = utils.DomHandler.removeInlineStyle(beforeResizeStyleElement.current);
};
var onPageChange = function onPageChange(e) {
clearEditingMetaData();
clearFrozenEditingMetaData();
if (props.onPage) {
props.onPage(createEvent(e));
} else {
setFirstState(e.first);
setRowsState(e.rows);
}
if (props.onValueChange) {
props.onValueChange(processedData());
}
};
var onSortChange = function onSortChange(e) {
clearEditingMetaData();
clearFrozenEditingMetaData();
var event = e.originalEvent,
column = e.column,
sortableDisabledFields = e.sortableDisabledFields;
var sortField = getColumnProp(column, 'sortField') || getColumnProp(column, 'field');
var sortOrder = props.defaultSortOrder;
var multiSortMeta;
var eventMeta;
columnSortable.current = getColumnProp(column, 'sortable');
columnSortFunction.current = getColumnProp(column, 'sortFunction');
columnField.current = sortField;
if (props.sortMode === 'multiple') {
var metaKey = event.metaKey || event.ctrlKey;
multiSortMeta = _toConsumableArray(getMultiSortMeta());
var sortMeta = multiSortMeta.find(function (sortMeta) {
return sortMeta.field === sortField;
});
sortOrder = sortMeta ? getCalculatedSortOrder(sortMeta.order) : sortOrder;
var newMetaData = {
field: sortField,
order: sortOrder
};
if (sortOrder) {
multiSortMeta = metaKey ? multiSortMeta : multiSortMeta.filter(function (meta) {
return sortableDisabledFields.some(function (field) {
return field === meta.field;
});
});
addSortMeta(newMetaData, multiSortMeta);
} else if (props.removableSort) {
removeSortMeta(newMetaData, multiSortMeta);
}
eventMeta = {
multiSortMeta: multiSortMeta
};
} else {
sortOrder = getSortField() === sortField ? getCalculatedSortOrder(getSortOrder()) : sortOrder;
if (props.removableSort) {
sortField = sortOrder ? sortField : null;
}
eventMeta = {
sortField: sortField,
sortOrder: sortOrder
};
}
if (props.onSort) {
props.onSort(createEvent(eventMeta));
} else {
setFirstState(0);
setSortFieldState(eventMeta.sortField);
setSortOrderState(eventMeta.sortOrder);
setMultiSortMetaState(eventMeta.multiSortMeta);
}
if (props.onValueChange) {
props.onValueChange(processedData({
sortField: sortField,
sortOrder: sortOrder,
multiSortMeta: multiSortMeta
}));
}
};
var getCalculatedSortOrder = function getCalculatedSortOrder(currentOrder) {
return props.removableSort ? props.defaultSortOrder === currentOrder ? currentOrder * -1 : 0 : currentOrder * -1;
};
var compareValuesOnSort = function compareValuesOnSort(value1, value2, comparator, order) {
return utils.ObjectUtils.sort(value1, value2, order, comparator, context && context.nullSortOrder || PrimeReact__default["default"].nullSortOrder);
};
var addSortMeta = function addSortMeta(meta, multiSortMeta) {
var index = multiSortMeta.findIndex(function (sortMeta) {
return sortMeta.field === meta.field;
});
if (index >= 0) {
multiSortMeta[index] = meta;
} else {
multiSortMeta.push(meta);
}
};
var removeSortMeta = function removeSortMeta(meta, multiSortMeta) {
var index = multiSortMeta.findIndex(function (sortMeta) {
return sortMeta.field === meta.field;
});
if (index >= 0) {
multiSortMeta.splice(index, 1);
}
multiSortMeta = multiSortMeta.length > 0 ? multiSortMeta : null;
};
var sortSingle = function sortSingle(data, field, order) {
if (props.groupRowsBy && props.groupRowsBy === props.sortField) {
var multiSortMeta = [{
field: props.sortField,
order: props.sortOrder || props.defaultSortOrder
}];
props.sortField !== field && multiSortMeta.push({
field: field,
order: order
});
return sortMultiple(data, multiSortMeta);
}
var value = _toConsumableArray(data);
if (columnSortable.current && columnSortFunction.current) {
value = columnSortFunction.current({
data: data,
field: field,
order: order
});
} else {
// performance optimization to prevent resolving field data in each loop
var lookupMap = new Map();
var comparator = utils.ObjectUtils.localeComparator(context && context.locale || PrimeReact__default["default"].locale);
var _iterator = _createForOfIteratorHelper(data),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var item = _step.value;
lookupMap.set(item, utils.ObjectUtils.resolveFieldData(item, field));
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
value.sort(function (data1, data2) {
var value1 = lookupMap.get(data1);
var value2 = lookupMap.get(data2);
return compareValuesOnSort(value1, value2, comparator, order);
});
}
return value;
};
var sortMultiple = function sortMultiple(data) {
var multiSortMeta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
if (props.groupRowsBy && (groupRowsSortMetaState || multiSortMeta.length && props.groupRowsBy === multiSortMeta[0].field)) {
var groupRowsSortMeta = groupRowsSortMetaState;
var firstSortMeta = multiSortMeta[0];
if (!groupRowsSortMeta) {
groupRowsSortMeta = firstSortMeta;
setGroupRowsSortMetaState(groupRowsSortMeta);
}
if (firstSortMeta.field !== groupRowsSortMeta.field) {
multiSortMeta = [groupRowsSortMeta].concat(_toConsumableArray(multiSortMeta));
}
}
var value = _toConsumableArray(data);
if (columnSortable.current && columnSortFunction.current) {
var meta = multiSortMeta.find(function (meta) {
return meta.field === columnField.current;
});
var field = columnField.current;
var order = meta ? meta.order : props.defaultSortOrder;
value = columnSortFunction.current({
data: data,
field: field,
order: order,
multiSortMeta: multiSortMeta
});
} else {
var comparator = utils.ObjectUtils.localeComparator(context && context.locale || PrimeReact__default["default"].locale);
value.sort(function (data1, data2) {
return _multisortField(data1, data2, multiSortMeta, 0, comparator);
});
}
return value;
};
var _multisortField = function multisortField(data1, data2, multiSortMeta, index, comparator) {
if (!multiSortMeta || !multiSortMeta[index]) {
return;
}
var value1 = utils.ObjectUtils.resolveFieldData(data1, multiSortMeta[index].field);
var value2 = utils.ObjectUtils.resolveFieldData(data2, multiSortMeta[index].field);
// check if they are equal handling dates and locales
if (utils.ObjectUtils.compare(value1, value2, comparator) === 0) {
return multiSortMeta.length - 1 > index ? _multisortField(data1, data2, multiSortMeta, index + 1, comparator) : 0;
}
return compareValuesOnSort(value1, value2, comparator, multiSortMeta[index].order);
};
var onFilterChange = function onFilterChange(filters) {
clearEditingMetaData();
clearFrozenEditingMetaData();
setD_filtersState(filters);
};
var onFilterApply = function onFilterApply(filtersToApply) {
clearTimeout(filterTimeout.current);
filterTimeout.current = setTimeout(function () {
var filters = cloneFilters(filtersToApply || d_filtersState);
if (props.onFilter) {
props.onFilter(createEvent({
filters: filters
}));
} else {
setFirstState(0);
setFiltersState(filters);
}
if (props.onValueChange) {
props.onValueChange(processedData({
filters: filters
}));
}
}, props.filterDelay);
};
var getActiveFilters = function getActiveFilters(filters) {
var removeEmptyFilters = function removeEmptyFilters(_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
value = _ref2[1];
if (value.constraints) {
var filteredConstraints = value.constraints.filter(function (constraint) {
return constraint.value !== null;
});
if (filteredConstraints.length > 0) {
return [key, _objectSpread(_objectSpread({}, value), {}, {
constraints: filteredConstraints
})];
}
} else if (value.value !== null) {
return [key, value];
}
return undefined;
};
var filterValidEntries = function filterValidEntries(entry) {
return entry !== undefined;
};
var entries = Object.entries(filters).map(removeEmptyFilters).filter(filterValidEntries);
return Object.fromEntries(entries);
};
var filterLocal = function filterLocal(data, filters) {
if (!data) {
return;
}
var activeFilters = filters ? getActiveFilters(filters) : {};
var columns = getColumns();
var filteredValue = [];
var isGlobalFilter = activeFilters.global || props.globalFilter;
var globalFilterFieldsArray;
if (isGlobalFilter) {
globalFilterFieldsArray = props.globalFilterFields || columns.filter(function (col) {
return !getColumnProp(col, 'excludeGlobalFilter');
}).map(function (col) {
return getColumnProp(col, 'filterField') || getColumnProp(col, 'field');
});
}
for (var i = 0; i < data.length; i++) {
var localMatch = true;
var globalMatch = false;
var localFiltered = false;
for (var prop in activeFilters) {
if (prop === 'null') {
continue;
}
if (Object.prototype.hasOwnProperty.call(activeFilters, prop) && prop !== 'global') {
localFiltered = true;
var filterField = prop;
var filterMeta = activeFilters[filterField];
if (filterMeta.operator) {
for (var j = 0; j < filterMeta.constraints.length; j++) {
var filterConstraint = filterMeta.constraints[j];
localMatch = executeLocalFilter(filterField, data[i], filterConstraint, j);
if (filterMeta.operator === PrimeReact$1.FilterOperator.OR && localMatch || filterMeta.operator === PrimeReact$1.FilterOperator.AND && !localMatch) {
break;
}
}
} else {
localMatch = executeLocalFilter(filterField, data[i], filterMeta, 0);
}
if (!localMatch) {
break;
}
}
}
if (localMatch && isGlobalFilter && !globalMatch && globalFilterFieldsArray) {
for (var _j = 0; _j < globalFilterFieldsArray.length; _j++) {
var globalFilterField = globalFilterFieldsArray[_j];
var matchMode = activeFilters.global ? activeFilters.global.matchMode : props.globalFilterMatchMode;
var value = activeFilters.global ? activeFilters.global.value : props.globalFilter;
globalMatch = PrimeReact$1.FilterService.filters[matchMode](utils.ObjectUtils.resolveFieldData(data[i], globalFilterField), value, props.filterLocale);
if (globalMatch) {
break;
}
}
}
var matches = void 0;
if (isGlobalFilter) {
matches = localFiltered ? localFiltered && localMatch && globalMatch : globalMatch;
} else {
matches = localFiltered && localMatch;
}
if (matches) {
filteredValue.push(data[i]);
}
}
if (filteredValue.length === props.value.length || Object.keys(activeFilters).length === 0) {
filteredValue = data;
}
return filteredValue;
};
var executeLocalFilter = function executeLocalFilter(field, rowData, filterMeta, index) {
var filterValue = filterMeta.value;
var filterMatchMode = filterMeta.matchMode === 'custom' ? "custom_".concat(field) : filterMeta.matchMode || PrimeReact$1.FilterMatchMode.STARTS_WITH;
var dataFieldValue = utils.ObjectUtils.resolveFieldData(rowData, field);
var filterConstraint = PrimeReact$1.FilterService.filters[filterMatchMode];
return utils.ObjectUtils.isFunction(filterConstraint) && filterConstraint(dataFieldValue, filterValue, props.filterLocale, index);
};
var cloneFilters = function cloneFilters(filters) {
filters = filters || props.filters;
var cloned = {};
if (filters) {
Object.entries(filters).forEach(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
prop = _ref4[0],
value = _ref4[1];
cloned[prop] = value.operator ? {
operator: value.operator,
constraints: value.constraints.map(function (constraint) {
return _objectSpread({}, constraint);
})
} : _objectSpread({}, value);
});
} else {
var _columns2 = getColumns();
cloned = _columns2.reduce(function (filters, col) {
var field = getColumnProp(col, 'filterField') || getColumnProp(col, 'field');
var filterFunction = getColumnProp(col, 'filterFunction');
var dataType = getColumnProp(col, 'dataType');
var matchMode = getColumnProp(col, 'filterMatchMode') || (context && context.filterMatchModeOptions[dataType] || PrimeReact__default["default"].filterMatchModeOptions[dataType] ? context && context.filterMatchModeOptions[dataType][0] || PrimeReact__default["default"].filterMatchModeOptions[dataType][0] : PrimeReact$1.FilterMatchMode.STARTS_WITH);
var constraint = {
value: null,
matchMode: matchMode
};
if (filterFunction) {
PrimeReact$1.FilterService.register("custom_".concat(field), function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return filterFunction.apply(void 0, args.concat([{
column: col
}]));
});
}
filters[field] = props.filterDisplay === 'menu' ? {
operator: PrimeReact$1.FilterOperator.AND,
constraints: [constraint]
} : constraint;
return filters;
}, {});
}
return cloned;
};
var filter = function filter(value, field, matchMode) {
var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var filters = _objectSpread({}, d_filtersState);
var meta = filters[field];
var constraint = meta && meta.operator ? meta.constraints[index] : meta;
constraint = meta ? {
value: value,
matchMode: matchMode || constraint.matchMode
} : {
value: value,
matchMode: matchMode
};
props.filterDisplay === 'menu' && meta && meta.operator ? filters[field].constraints[index] = constraint : filters[field] = constraint;
setD_filtersState(filters);
onFilterApply(filters);
};
var reset = function reset() {
setD_rowsState(props.rows);
setD_filtersState(cloneFilters(props.filters));
setGroupRowsSortMetaState(null);
setEditingMetaState({});
setFrozenEditingMetaState({});
if (!props.onPage) {
setFirstState(props.first);
setRowsState(props.rows);
}
if (!props.onSort) {
setSortFieldState(props.sortField);
setSortOrderState(props.sortOrder);
setMultiSortMetaState(props.multiSortMeta);
}
if (!props.onFilter) {
setFiltersState(props.filters);
}
resetColumnOrder();
};
var resetScroll = function resetScroll() {
if (wrapperRef.current) {
var scrollableContainer = !isVirtualScrollerDisabled() ? utils.DomHandler.findSingle(wrapperRef.current, '[data-pc-name="virtualscroller"]') : wrapperRef.current;
scrollableContainer.scrollTo(0, 0);
}
};
var resetResizeColumnsWidth = function resetResizeColumnsWidth() {
destroyStyleElement();
};
var resetColumnOrder = function resetColumnOrder() {
var columns = getColumns(true);
var columnOrder = [];
if (columns) {
columnOrder = columns.reduce(function (orders, col) {
orders.push(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'));
return orders;
}, []);
}
setColumnOrderState(columnOrder);
};
var exportCSV = function exportCSV(options) {
var data;
var csv = "\uFEFF";
if (options && options.selectionOnly) {
data = props.selection || [];
} else {
data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
}
// First build collection of exportable columns
var exportableColumns = getColumns().filter(function (column) {
var exportable = getColumnProp(column, 'exportable');
var field = getColumnProp(column, 'field');
// Column must be exportable (or undefined/not set) and have a field defined
return exportable !== false && field;
});
// headers
exportableColumns.forEach(function (column, i) {
var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
field = _ref5[0],
header = _ref5[1],
exportHeader = _ref5[2];
var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
csv = csv + ('"' + columnHeader + '"');
if (i < exportableColumns.length - 1) {
csv = csv + props.csvSeparator;
}
});
// body
data.forEach(function (record) {
csv = csv + '\n';
exportableColumns.forEach(function (column, i) {
var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
colField = _ref6[0],
exportField = _ref6[1];
var field = exportField || colField;
var cellData = utils.ObjectUtils.resolveFieldData(record, field);
if (cellData != null) {
if (props.exportFunction) {
cellData = props.exportFunction({
data: cellData,
field: field,
rowData: record,
column: column
});
} else {
cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
}
} else {
cellData = '';
}
csv = csv + ('"' + cellData + '"');
if (i < exportableColumns.length - 1) {
csv = csv + props.csvSeparator;
}
});
});
utils.DomHandler.exportCSV(csv, props.exportFilename);
};
var closeEditingCell = function closeEditingCell() {
if (props.editMode !== 'row') {
document.body.click();
}
};
var closeEditingRows = function closeEditingRows() {
utils.DomHandler.find(document.body, '[data-pc-section="roweditorcancelbuttonprops"]').forEach(function (button, index) {
setTimeout(function () {
button.click();
}, index * 5);
});
};
var createEvent = function createEvent(event) {
return _objectSpread({
first: getFirst(),
rows: getRows(),
sortField: getSortField(),
sortOrder: getSortOrder(),
multiSortMeta: getMultiSortMeta(),
filters: getFilters()
}, event);
};
var processedData = function processedData(localState) {
var data = props.value || [];
if (!props.lazy) {
if (data && data.length) {
var filters = localState && localState.filters || getFilters();
var sortField = localState && localState.sortField || getSortField();
var sortOrder = localState && localState.sortOrder || getSortOrder();
var multiSortMeta = localState && localState.multiSortMeta || getMultiSortMeta();
var _columns3 = getColumns();
var sortColumn = _columns3.find(function (col) {
return getColumnProp(col, 'field') === sortField;
});
if (sortColumn) {
columnSortable.current = getColumnProp(sortColumn, 'sortable');
columnSortFunction.current = getColumnProp(sortColumn, 'sortFunction');
}
if (utils.ObjectUtils.isNotEmpty(filters) || props.globalFilter) {
data = filterLocal(data, filters);
}
if (sortField || utils.ObjectUtils.isNotEmpty(multiSortMeta)) {
if (props.sortMode === 'single') {
data = sortSingle(data, sortField, sortOrder);
} else if (props.sortMode === 'multiple') {
data = sortMultiple(data, multiSortMeta);
}
}
}
}
return data;
};
var dataToRender = function dataToRender(data) {
if (data && props.paginator) {
var first = props.lazy ? 0 : getFirst();
return data.slice(first, first + getRows());
}
return data;
};
hooks.useMountEffect(function () {
if (elementRef.current) {
attributeSelector.current = utils.UniqueComponentId();
elementRef.current.setAttribute(attributeSelector.current, '');
}
//setFiltersState(cloneFilters(props.filters)); // Github #4248
setD_filtersState(cloneFilters(props.filters));
if (isStateful()) {
restoreState();
if (props.resizableColumns) {
restoreColumnWidths();
}
}
});
hooks.useUpdateEffect(function () {
if (props.responsiveLayout === 'stack' && !props.scrollable) {
createResponsiveStyle();
}
return function () {
destroyResponsiveStyle();
};
}, [props.breakpoint]);
hooks.useUpdateEffect(function () {
var filters = cloneFilters(props.filters);
setFiltersState(filters);
setD_filtersState(cloneFilters(props.filters));
if (props.onValueChange) {
props.onValueChange(processedData({
filters: filters
}));
}
}, [props.filters]);
hooks.useUpdateEffect(function () {
if (isStateful()) {
saveState();
}
});
hooks.useUpdateEffect(function () {
destroyResponsiveStyle();
if (props.responsiveLayout === 'stack' && !props.scrollable) {
createResponsiveStyle();
}
}, [props.responsiveLayout, props.scrollable]);
hooks.useUpdateEffect(function () {
if (props.globalFilter) {
filter(props.globalFilter, 'global', props.globalFilterMatchMode);
} else {
// #3819 was filtering but now reset filter state
if (d_filtersState['global']) {
var filters = _objectSpread({}, d_filtersState);
delete filters['global'];
setD_filtersState(filters);
onFilterApply(filters);
}
}
}, [props.globalFilter, props.globalFilterMatchMode]);
hooks.useUnmountEffect(function () {
unbindColumnResizeEvents();
destroyStyleElement();
destroyResponsiveStyle();
destroyBeforeResizeStyleElement();
});
React__namespace.useImperativeHandle(ref, function () {
return {
props: props,
clearState: clearState,
closeEditingCell: closeEditingCell,
closeEditingRows: closeEditingRows,
exportCSV: exportCSV,
filter: filter,
reset: reset,
resetColumnOrder: resetColumnOrder,
resetScroll: resetScroll,
resetResizeColumnsWidth: resetResizeColumnsWidth,
restoreColumnWidths: restoreColumnWidths,
restoreState: restoreState,
restoreTableState: restoreTableState,
saveState: saveState,
getFilterMeta: function getFilterMeta() {
return filtersState;
},
setFilterMeta: function setFilterMeta(filters) {
return setFiltersState(filters);
},
getSortMeta: function getSortMeta() {
return multiSortMetaState;
},
setSortMeta: function setSortMeta(sorts) {
return setMultiSortMetaState(sorts);
},
getElement: function getElement() {
return elementRef.current;
},
getTable: function getTable() {
return tableRef.current;
},
getVirtualScroller: function getVirtualScroller() {
return virtualScrollerRef.current;
},
getProcessedData: function getProcessedData() {
return processedData();
}
};
});
var createLoader = function createLoader() {
if (props.loading) {
var loadingIconProps = mergeProps({
className: ptCallbacks.cx('loadingIcon')
}, ptCallbacks.ptm('loadingIcon'));
var icon = props.loadingIcon || /*#__PURE__*/React__namespace.createElement(spinner.SpinnerIcon, _extends({}, loadingIconProps, {
spin: true
}));
var loadingIcon = utils.IconUtils.getJSXIcon(icon, _objectSpread({}, loadingIconProps), {
props: props
});
var loadingOverlayProps = mergeProps({
className: ptCallbacks.cx('loadingOverlay')
}, ptCallbacks.ptm('loadingOverlay'));
return /*#__PURE__*/React__namespace.createElement("div", loadingOverlayProps, loadingIcon);
}
return null;
};
var createHeader = function createHeader() {
if (props.header) {
var _content = utils.ObjectUtils.getJSXElement(props.header, {
props: props
});
var headerProps = mergeProps({
className: ptCallbacks.cx('header')
}, ptCallbacks.ptm('header'));
return /*#__PURE__*/React__namespace.createElement("div", headerProps, _content);
}
return null;
};
var createTableHeader = function createTableHeader(options, empty, _isVirtualScrollerDisabled) {
if (props.showHeaders === false) {
return null;
}
var sortField = getSortField();
var sortOrder = getSortOrder();
var multiSortMeta = _toConsumableArray(getMultiSortMeta());
var groupRowSortField = getGroupRowSortField();
var filters = d_filtersState;
var filtersStore = !props.onFilter && props.filters || getFilters();
var processedData = options.items,
virtualScrollerProps = options.props,
columns = options.columns;
var data = _isVirtualScrollerDisabled || virtualScrollerProps.lazy ? processedData : virtualScrollerProps.items;
return /*#__PURE__*/React__namespace.createElement(TableHeader, {
hostName: "DataTable",
value: data,
tableProps: props,
columns: columns,
tabIndex: props.tabIndex,
empty: empty,
headerColumnGroup: props.headerColumnGroup,
resizableColumns: props.resizableColumns,
onColumnResizeStart: onColumnResizeStart,
onColumnResizerClick: props.onColumnResizerClick,
onColumnResizerDoubleClick: props.onColumnResizerDoubleClick,
sortMode: props.sortMode,
sortField: sortField,
sortIcon: props.sortIcon,
sortOrder: sortOrder,
multiSortMeta: multiSortMeta,
groupRowsBy: props.groupRowsBy,
groupRowSortField: groupRowSortField,
onSortChange: onSortChange,
filterDisplay: props.filterDisplay,
filters: filters,
filtersStore: filtersStore,
filterIcon: props.filterIcon,
filterClearIcon: props.filterClearIcon,
onFilterChange: onFilterChange,
onFilterApply: onFilterApply,
showSelectAll: props.showSelectAll,
allRowsSelected: allRowsSelected,
onColumnCheckboxChange: onColumnHeaderCheckboxChange,
onColumnMouseDown: onColumnHeaderMouseDown,
onColumnDragStart: onColumnHeaderDragStart,
onColumnDragOver: onColumnHeaderDragOver,
onColumnDragLeave: onColumnHeaderDragLeave,
onColumnDrop: onColumnHeaderDrop,
rowGroupMode: props.rowGroupMode,
reorderableColumns: props.reorderableColumns,
ptCallbacks: ptCallbacks,
metaData: metaData,
unstyled: props.unstyled
});
};
var createTableBody = function createTableBody(options, selectionModeInColumn, empty, isVirtualScrollerDisabled, processedData) {
var first = getFirst();
var rows = options.rows,
columns = options.columns,
contentRef = options.contentRef,
style = options.style,
className = options.className,
spacerStyle = options.spacerStyle,
itemSize = options.itemSize;
var frozenBody = utils.ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React__namespace.createElement(TableBody, {
hostName: "DataTable",
ref: frozenBodyRef,
cellMemo: props.cellMemo,
cellMemoProps: props.cellMemoProps,
cellMemoPropsDepth: props.cellMemoPropsDepth,
cellClassName: props.cellClassName,
cellSelection: props.cellSelection,
checkIcon: props.checkIcon,
className: "p-datatable-tbody p-datatable-frozen-tbody",
collapsedRowIcon: props.collapsedRowIcon,
columns: columns,
compareSelectionBy: props.compareSelectionBy,
contextMenuSelection: props.contextMenuSelection,
dataKey: props.dataKey,
dragSelection: props.dragSelection,
editMode: props.editMode,
editingMeta: frozenEditingMetaState,
editingRows: props.editingRows,
emptyMessage: props.emptyMessage,
expandableRowGroups: props.expandableRowGroups,
expandedRowIcon: props.expandedRowIcon,
expandedRows: props.expandedRows,
first: first,
frozenRow: true,
groupRowsBy: props.groupRowsBy,
isDataSelectable: props.isDataSelectable,
isVirtualScrollerDisabled: true,
lazy: props.lazy,
loading: props.loading,
metaKeySelection: props.metaKeySelection,
onCellClick: props.onCellClick,
onCellSelect: props.onCellSelect,
onCellUnselect: props.onCellUnselect,
onContextMenu: props.onContextMenu,
onContextMenuSelectionChange: props.onContextMenuSelectionChange,
onEditingMetaChange: onFrozenEditingMetaChange,
onRowClick: props.onRowClick,
onRowCollapse: props.onRowCollapse,
onRowDoubleClick: props.onRowDoubleClick,
onRowPointerDown: props.onRowPointerDown,
onRowPointerUp: props.onRowPointerUp,
onRowEditCancel: props.onRowEditCancel,
onRowEditChange: props.onRowEditChange,
onRowEditComplete: props.onRowEditComplete,
onRowEditInit: props.onRowEditInit,
onRowEditSave: props.onRowEditSave,
onRowExpand: props.onRowExpand,
onRowMouseEnter: props.onRowMouseEnter,
onRowMouseLeave: props.onRowMouseLeave,
onRowReorder: props.onRowReorder,
onRowSelect: props.onRowSelect,
onRowToggle: props.onRowToggle,
onRowUnselect: props.onRowUnselect,
onSelectionChange: props.onSelectionChange,
paginator: props.paginator
// pass processedData #7546
,
processedData: processedData,
reorderableRows: props.reorderableRows,
responsiveLayout: props.responsiveLayout,
rowClassName: props.rowClassName,
rowEditValidator: props.rowEditValidator,
rowEditorCancelIcon: props.rowEditorCancelIcon,
rowEditorInitIcon: props.rowEditorInitIcon,
rowEditorSaveIcon: props.rowEditorSaveIcon,
rowExpansionTemplate: props.rowExpansionTemplate,
rowGroupFooterTemplate: props.rowGroupFooterTemplate,
rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,
rowGroupMode: props.rowGroupMode,
scrollable: props.scrollable,
selectOnEdit: props.selectOnEdit,
selection: props.selection,
selectionAutoFocus: props.selectionAutoFocus,
selectionMode: props.selectionMode,
selectionModeInColumn: selectionModeInColumn,
showRowReorderElement: props.showRowReorderElement,
showSelectionElement: props.showSelectionElement,
tabIndex: props.tabIndex,
tableProps: props,
tableSelector: attributeSelector.current,
value: props.frozenValue,
virtualScrollerOptions: options,
ptCallbacks: ptCallbacks,
metaData: metaData,
unstyled: props.unstyled
});
var body = /*#__PURE__*/React__namespace.createElement(TableBody, {
hostName: "DataTable",
ref: bodyRef,
cellMemo: props.cellMemo,
cellMemoProps: props.cellMemoProps,
cellMemoPropsDepth: props.cellMemoPropsDepth,
cellClassName: props.cellClassName,
cellSelection: props.cellSelection,
checkIcon: props.checkIcon,
className: utils.classNames('p-datatable-tbody', className),
collapsedRowIcon: props.collapsedRowIcon,
columns: columns,
compareSelectionBy: props.compareSelectionBy,
contextMenuSelection: props.contextMenuSelection,
dataKey: props.dataKey,
dragSelection: props.dragSelection,
editMode: props.editMode,
editingMeta: editingMetaState,
editingRows: props.editingRows,
empty: empty,
emptyMessage: props.emptyMessage,
expandableRowGroups: props.expandableRowGroups,
expandedRowIcon: props.expandedRowIcon,
expandedRows: props.expandedRows,
first: first,
frozenRow: false,
groupRowsBy: props.groupRowsBy,
isDataSelectable: props.isDataSelectable,
isVirtualScrollerDisabled: isVirtualScrollerDisabled,
lazy: props.lazy,
loading: props.loading,
metaKeySelection: props.metaKeySelection,
onCellClick: props.onCellClick,
onCellSelect: props.onCellSelect,
onCellUnselect: props.onCellUnselect,
onContextMenu: props.onContextMenu,
onContextMenuSelectionChange: props.onContextMenuSelectionChange,
onEditingMetaChange: onEditingMetaChange,
onRowClick: props.onRowClick,
onRowCollapse: props.onRowCollapse,
onRowDoubleClick: props.onRowDoubleClick,
onRowEditCancel: props.onRowEditCancel,
onRowEditChange: props.onRowEditChange,
onRowEditComplete: props.onRowEditComplete,
onRowEditInit: props.onRowEditInit,
onRowEditSave: props.onRowEditSave,
onRowExpand: props.onRowExpand,
onRowMouseEnter: props.onRowMouseEnter,
onRowMouseLeave: props.onRowMouseLeave,
onRowPointerDown: props.onRowPointerDown,
onRowPointerUp: props.onRowPointerUp,
onRowReorder: props.onRowReorder,
onRowSelect: props.onRowSelect,
onRowToggle: props.onRowToggle,
onRowUnselect: props.onRowUnselect,
onSelectionChange: props.onSelectionChange,
paginator: props.paginator
// pass processedData #7546
,
processedData: processedData,
reorderableRows: props.reorderableRows,
responsiveLayout: props.responsiveLayout,
rowClassName: props.rowClassName,
rowEditValidator: props.rowEditValidator,
rowEditorCancelIcon: props.rowEditorCancelIcon,
rowEditorInitIcon: props.rowEditorInitIcon,
rowEditorSaveIcon: props.rowEditorSaveIcon,
rowExpansionTemplate: props.rowExpansionTemplate,
rowGroupFooterTemplate: props.rowGroupFooterTemplate,
rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,
rowGroupMode: props.rowGroupMode,
scrollable: props.scrollable,
selectOnEdit: props.selectOnEdit,
selection: props.selection,
selectionAutoFocus: props.selectionAutoFocus,
selectionMode: props.selectionMode,
selectionModeInColumn: selectionModeInColumn,
showRowReorderElement: props.showRowReorderElement,
showSelectionElement: props.showSelectionElement,
style: style,
tabIndex: props.tabIndex,
tableProps: props,
tableSelector: attributeSelector.current,
value: dataToRender(rows),
virtualScrollerContentRef: contentRef,
virtualScrollerOptions: options,
ptCallbacks: ptCallbacks,
metaData: metaData,
unstyled: props.unstyled
});
var spacerBody = utils.ObjectUtils.isNotEmpty(spacerStyle) ? /*#__PURE__*/React__namespace.createElement(TableBody, {
hostName: "DataTable",
style: {
height: "calc(".concat(spacerStyle.height, " - ").concat(rows.length * itemSize, "px)")
},
className: "p-datatable-virtualscroller-spacer",
ptCallbacks: ptCallbacks,
metaData: metaData,
unstyled: props.unstyled
}) : null;
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, frozenBody, body, spacerBody);
};
var createTableFooter = function createTableFooter(options) {
var columns = options.columns;
return /*#__PURE__*/React__namespace.createElement(TableFooter, {
hostName: "DataTable",
tableProps: props,
columns: columns,
footerColumnGroup: props.footerColumnGroup,
ptCallbacks: ptCallbacks,
metaData: metaData,
unstyled: props.unstyled
});
};
var createContent = function createContent(processedData, columns, selectionModeInColumn, empty) {
if (!columns) {
return;
}
var _isVirtualScrollerDisabled = isVirtualScrollerDisabled();
var virtualScrollerOptions = props.virtualScrollerOptions || {};
var wrapperProps = mergeProps({
className: ptCallbacks.cx('wrapper'),
style: _objectSpread(_objectSpread({}, ptCallbacks.sx('wrapper')), {}, {
maxHeight: _isVirtualScrollerDisabled ? props.scrollHeight : null
})
}, ptCallbacks.ptm('wrapper'));
return /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: wrapperRef
}, wrapperProps), /*#__PURE__*/React__namespace.createElement(virtualscroller.VirtualScroller, _extends({
ref: virtualScrollerRef
}, virtualScrollerOptions, {
items: processedData,
columns: columns,
style: _objectSpread(_objectSpread({}, virtualScrollerOptions.style), {
height: props.scrollHeight !== 'flex' ? props.scrollHeight : undefined
}),
scrollHeight: props.scrollHeight !== 'flex' ? undefined : '100%',
disabled: _isVirtualScrollerDisabled,
loaderDisabled: true,
inline: true,
autoSize: true,
pt: ptCallbacks.ptm('virtualScroller'),
__parentMetadata: {
parent: metaData
},
showSpacer: false,
unstyled: props.unstyled,
contentTemplate: function contentTemplate(options) {
var ref = function ref(el) {
tableRef.current = el;
options.spacerRef && options.spacerRef(el);
};
var tableHeader = createTableHeader(options, empty, _isVirtualScrollerDisabled);
var tableBody = createTableBody(options, selectionModeInColumn, empty, _isVirtualScrollerDisabled, processedData);
var tableFooter = createTableFooter(options);
var tableProps = mergeProps({
className: utils.classNames(props.tableClassName, ptCallbacks.cx('table')),
style: props.tableStyle,
role: 'table'
}, ptCallbacks.ptm('table'));
return /*#__PURE__*/React__namespace.createElement("table", _extends({
ref: ref
}, tableProps), tableHeader, tableBody, tableFooter);
}
})));
};
var createFooter = function createFooter() {
if (props.footer) {
var _content2 = utils.ObjectUtils.getJSXElement(props.footer, {
props: props
});
var footerProps = mergeProps({
className: ptCallbacks.cx('footer')
}, ptCallbacks.ptm('footer'));
return /*#__PURE__*/React__namespace.createElement("div", footerProps, _content2);
}
return null;
};
var createPaginator = function createPaginator(position, totalRecords) {
return /*#__PURE__*/React__namespace.createElement(paginator.Paginator, {
first: getFirst(),
rows: getRows(),
pageLinkSize: props.pageLinkSize,
className: utils.classNames(props.paginatorClassName, ptCallbacks.cx('paginator', {
position: position
})),
onPageChange: onPageChange,
template: props.paginatorTemplate,
totalRecords: totalRecords,
rowsPerPageOptions: props.rowsPerPageOptions,
currentPageReportTemplate: props.currentPageReportTemplate,
leftContent: props.paginatorLeft,
rightContent: props.paginatorRight,
alwaysShow: props.alwaysShowPaginator,
dropdownAppendTo: props.paginatorDropdownAppendTo,
pt: ptCallbacks.ptm('paginator'),
unstyled: props.unstyled,
__parentMetadata: {
parent: metaData
}
});
};
var createPaginatorTop = function createPaginatorTop(totalRecords) {
if (props.paginator && props.paginatorPosition !== 'bottom') {
return createPaginator('top', totalRecords);
}
return null;
};
var createPaginatorBottom = function createPaginatorBottom(totalRecords) {
if (props.paginator && props.paginatorPosition !== 'top') {
return createPaginator('bottom', totalRecords);
}
return null;
};
var createResizeHelper = function createResizeHelper() {
if (props.resizableColumns) {
var resizeHelperProps = mergeProps({
className: ptCallbacks.cx('resizeHelper'),
style: ptCallbacks.sx('resizeHelper')
}, ptCallbacks.ptm('resizeHelper'));
return /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: resizeHelperRef
}, resizeHelperProps));
}
return null;
};
var createReorderIndicators = function createReorderIndicators() {
if (props.reorderableColumns) {
var style = {
position: 'absolute',
display: 'none'
};
var reorderIndicatorUpProps = mergeProps({
className: ptCallbacks.cx('reorderIndicatorUp'),
style: ptCallbacks.sx('reorderIndicatorUp', {
style: style
})
}, ptCallbacks.ptm('reorderIndicatorUp'));
var reorderIndicatorUpIconProps = mergeProps(ptCallbacks.ptm('reorderIndicatorUpIcon'));
var reorderIndicatorUpIcon = utils.IconUtils.getJSXIcon(props.reorderIndicatorUpIcon || /*#__PURE__*/React__namespace.createElement(arrowdown.ArrowDownIcon, reorderIndicatorUpIconProps), _objectSpread({}, reorderIndicatorUpIconProps), {
props: props
});
var reorderIndicatorDownProps = mergeProps({
className: ptCallbacks.cx('reorderIndicatorDown'),
style: ptCallbacks.sx('reorderIndicatorDown', {
style: style
})
}, ptCallbacks.ptm('reorderIndicatorDown'));
var reorderIndicatorDownIconProps = mergeProps(ptCallbacks.ptm('reorderIndicatorDownIcon'));
var reorderIndicatorDownIcon = utils.IconUtils.getJSXIcon(props.reorderIndicatorDownIcon || /*#__PURE__*/React__namespace.createElement(arrowup.ArrowUpIcon, reorderIndicatorDownIconProps), _objectSpread({}, reorderIndicatorDownIconProps), {
props: props
});
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("span", _extends({
ref: reorderIndicatorUpRef
}, reorderIndicatorUpProps), reorderIndicatorUpIcon), /*#__PURE__*/React__namespace.createElement("span", _extends({
ref: reorderIndicatorDownRef
}, reorderIndicatorDownProps), reorderIndicatorDownIcon));
}
return null;
};
var data = processedData();
var columns = getColumns();
var totalRecords = getTotalRecords(data);
var empty = utils.ObjectUtils.isEmpty(data);
var selectionModeInColumn = getSelectionModeInColumn(columns);
var selectable = props.selectionMode || selectionModeInColumn;
var loader = createLoader();
var header = createHeader();
var paginatorTop = createPaginatorTop(totalRecords);
var content = createContent(data, columns, selectionModeInColumn, empty);
var paginatorBottom = createPaginatorBottom(totalRecords);
var footer = createFooter();
var resizeHelper = createResizeHelper();
var reorderIndicators = createReorderIndicators();
var rootProps = mergeProps({
id: props.id,
className: utils.classNames(props.className, ptCallbacks.cx('root', {
selectable: selectable
})),
style: props.style,
'data-scrollselectors': '.p-datatable-wrapper',
'data-showgridlines': props.showGridlines
}, DataTableBase.getOtherProps(props), ptCallbacks.ptm('root'));
return /*#__PURE__*/React__namespace.createElement("div", _extends({
ref: elementRef
}, rootProps), loader, header, paginatorTop, content, paginatorBottom, footer, resizeHelper, reorderIndicators);
});
DataTable.displayName = 'DataTable';
exports.DataTable = DataTable;