react-pivottable-plus 1.0.14 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/PivotTableUI.js +147 -213
- package/dist/PivotTableUI.js.map +1 -1
- package/dist/TableRenderers.js +273 -49
- package/dist/TableRenderers.js.map +1 -1
- package/dist/core/CellPipeline.js +167 -0
- package/dist/core/CellPipeline.js.map +1 -0
- package/dist/core/ColumnEngine.js +299 -0
- package/dist/core/ColumnEngine.js.map +1 -0
- package/dist/core/EventBus.js +109 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/ModuleRegistry.js +140 -0
- package/dist/core/ModuleRegistry.js.map +1 -0
- package/dist/core/PivotCore.js +254 -0
- package/dist/core/PivotCore.js.map +1 -0
- package/dist/core/PivotEngine.js +151 -0
- package/dist/core/PivotEngine.js.map +1 -0
- package/dist/core/StateManager.js +142 -0
- package/dist/core/StateManager.js.map +1 -0
- package/dist/core/VirtualScroller.js +138 -0
- package/dist/core/VirtualScroller.js.map +1 -0
- package/dist/core/api/ColumnApi.js +162 -0
- package/dist/core/api/ColumnApi.js.map +1 -0
- package/dist/core/api/GridApi.js +208 -0
- package/dist/core/api/GridApi.js.map +1 -0
- package/dist/core/index.js +89 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/rowModels/ClientSideRowModel.js +177 -0
- package/dist/core/rowModels/ClientSideRowModel.js.map +1 -0
- package/dist/core/rowModels/index.js +13 -0
- package/dist/core/rowModels/index.js.map +1 -0
- package/dist/hooks/useColumnResize.js +112 -0
- package/dist/hooks/useColumnResize.js.map +1 -0
- package/dist/hooks/usePivot.js +68 -155
- package/dist/hooks/usePivot.js.map +1 -1
- package/dist/modules/FilterModule.js +156 -0
- package/dist/modules/FilterModule.js.map +1 -0
- package/dist/modules/PaginationModule.js +115 -0
- package/dist/modules/PaginationModule.js.map +1 -0
- package/dist/modules/SortModule.js +88 -0
- package/dist/modules/SortModule.js.map +1 -0
- package/dist/modules/ThemeModule.js +83 -0
- package/dist/modules/ThemeModule.js.map +1 -0
- package/dist/modules/VirtualizationModule.js +89 -0
- package/dist/modules/VirtualizationModule.js.map +1 -0
- package/dist/modules/index.js +41 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/react/index.js +13 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/usePivotGrid.js +116 -0
- package/dist/react/usePivotGrid.js.map +1 -0
- package/dist/renderers/RadixUI.js +1 -1
- package/dist/renderers/RadixUI.js.map +1 -1
- package/dist/renderers/ShadcnDashboardUI.js +1 -1
- package/dist/renderers/ShadcnDashboardUI.js.map +1 -1
- package/dist/renderers/TailwindUI.js +1 -1
- package/dist/renderers/TailwindUI.js.map +1 -1
- package/package.json +8 -5
- package/pivottable.css +69 -12
package/README.md
CHANGED
|
@@ -34,6 +34,8 @@ npm install --save react-pivottable-plus react react-dom
|
|
|
34
34
|
Gracias a las últimas optimizaciones, implementar la tabla dinámica es más sencillo que nunca. La mayoría de las propiedades ya tienen valores por defecto inteligentes.
|
|
35
35
|
|
|
36
36
|
```jsx
|
|
37
|
+
"use client";
|
|
38
|
+
|
|
37
39
|
import React, { useState } from 'react';
|
|
38
40
|
import PivotTableUI from 'react-pivottable-plus'; // Importación directa
|
|
39
41
|
import 'react-pivottable-plus/pivottable.css';
|
package/dist/PivotTableUI.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
"use client";
|
|
2
3
|
|
|
3
4
|
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); }
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -7,10 +8,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
8
|
exports["default"] = exports.Dropdown = exports.DraggableAttribute = void 0;
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
|
|
11
11
|
var _Utilities = require("./Utilities");
|
|
12
12
|
var _PivotTable = _interopRequireDefault(require("./PivotTable"));
|
|
13
13
|
var _TableRenderers = _interopRequireDefault(require("./TableRenderers"));
|
|
14
|
+
var _usePivot2 = require("./hooks/usePivot");
|
|
14
15
|
var _reactDraggable = _interopRequireDefault(require("react-draggable"));
|
|
15
16
|
var _core = require("@dnd-kit/core");
|
|
16
17
|
var _sortable = require("@dnd-kit/sortable");
|
|
@@ -274,170 +275,85 @@ var DnDCell = function DnDCell(_ref4) {
|
|
|
274
275
|
};
|
|
275
276
|
var PivotTableUI = function PivotTableUI(props) {
|
|
276
277
|
var _aggregators$aggregat, _aggregators$aggregat2;
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
cols = _props$cols === void 0 ? [] : _props$cols,
|
|
285
|
-
_props$vals = props.vals,
|
|
286
|
-
vals = _props$vals === void 0 ? [] : _props$vals,
|
|
287
|
-
_props$aggregatorName = props.aggregatorName,
|
|
288
|
-
aggregatorName = _props$aggregatorName === void 0 ? 'Count' : _props$aggregatorName,
|
|
289
|
-
_props$aggregators = props.aggregators,
|
|
290
|
-
aggregators = _props$aggregators === void 0 ? _Utilities.aggregators : _props$aggregators,
|
|
291
|
-
_props$rendererName = props.rendererName,
|
|
292
|
-
rendererName = _props$rendererName === void 0 ? 'Table' : _props$rendererName,
|
|
293
|
-
_props$renderers = props.renderers,
|
|
294
|
-
renderers = _props$renderers === void 0 ? _TableRenderers["default"] : _props$renderers,
|
|
295
|
-
_props$valueFilter = props.valueFilter,
|
|
296
|
-
valueFilter = _props$valueFilter === void 0 ? {} : _props$valueFilter,
|
|
297
|
-
_props$sorters = props.sorters,
|
|
298
|
-
sorters = _props$sorters === void 0 ? {} : _props$sorters,
|
|
299
|
-
_props$menuLimit = props.menuLimit,
|
|
300
|
-
menuLimit = _props$menuLimit === void 0 ? 500 : _props$menuLimit,
|
|
301
|
-
_props$unusedOrientat = props.unusedOrientationCutoff,
|
|
302
|
-
unusedOrientationCutoff = _props$unusedOrientat === void 0 ? 85 : _props$unusedOrientat,
|
|
303
|
-
_props$hiddenAttribut = props.hiddenAttributes,
|
|
304
|
-
hiddenAttributes = _props$hiddenAttribut === void 0 ? [] : _props$hiddenAttribut,
|
|
305
|
-
_props$hiddenFromAggr = props.hiddenFromAggregators,
|
|
306
|
-
hiddenFromAggregators = _props$hiddenFromAggr === void 0 ? [] : _props$hiddenFromAggr,
|
|
307
|
-
_props$hiddenFromDrag = props.hiddenFromDragDrop,
|
|
308
|
-
hiddenFromDragDrop = _props$hiddenFromDrag === void 0 ? [] : _props$hiddenFromDrag,
|
|
309
|
-
_props$pagination = props.pagination,
|
|
310
|
-
pagination = _props$pagination === void 0 ? false : _props$pagination,
|
|
311
|
-
_props$page = props.page,
|
|
312
|
-
page = _props$page === void 0 ? 1 : _props$page,
|
|
313
|
-
_props$pageSize = props.pageSize,
|
|
314
|
-
pageSize = _props$pageSize === void 0 ? 20 : _props$pageSize,
|
|
315
|
-
_props$rowOrder = props.rowOrder,
|
|
316
|
-
rowOrder = _props$rowOrder === void 0 ? 'key_a_to_z' : _props$rowOrder,
|
|
317
|
-
_props$colOrder = props.colOrder,
|
|
318
|
-
colOrder = _props$colOrder === void 0 ? 'key_a_to_z' : _props$colOrder,
|
|
319
|
-
_props$derivedAttribu = props.derivedAttributes,
|
|
320
|
-
derivedAttributes = _props$derivedAttribu === void 0 ? {} : _props$derivedAttribu,
|
|
321
|
-
_props$size = props.size,
|
|
322
|
-
size = _props$size === void 0 ? 'lg' : _props$size;
|
|
278
|
+
// ─── Headless Core: toda la lógica de datos y props fluye a través del Core ───
|
|
279
|
+
var _usePivot = (0, _usePivot2.usePivot)(props),
|
|
280
|
+
pivotProps = _usePivot.props,
|
|
281
|
+
pivotState = _usePivot.state,
|
|
282
|
+
actions = _usePivot.actions;
|
|
283
|
+
|
|
284
|
+
// ─── Estado local solo para UI (no pertenece al Core) ─────────────────────────
|
|
323
285
|
var _useState5 = (0, _react.useState)({
|
|
324
|
-
unusedOrder: [],
|
|
325
286
|
zIndices: {},
|
|
326
287
|
maxZIndex: 1000,
|
|
327
|
-
openDropdown: false
|
|
328
|
-
attrValues: {},
|
|
329
|
-
materializedInput: [],
|
|
330
|
-
data: null
|
|
288
|
+
openDropdown: false
|
|
331
289
|
}),
|
|
332
290
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
333
|
-
|
|
334
|
-
|
|
291
|
+
uiState = _useState6[0],
|
|
292
|
+
setUiState = _useState6[1];
|
|
335
293
|
var _useState7 = (0, _react.useState)(null),
|
|
336
294
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
337
295
|
activeId = _useState8[0],
|
|
338
296
|
setActiveId = _useState8[1];
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
var newState = {
|
|
342
|
-
data: data,
|
|
343
|
-
attrValues: {},
|
|
344
|
-
materializedInput: []
|
|
345
|
-
};
|
|
346
|
-
var recordsProcessed = 0;
|
|
347
|
-
_Utilities.PivotData.forEachRecord(data, derivedAttributes, function (record) {
|
|
348
|
-
newState.materializedInput.push(record);
|
|
349
|
-
for (var _i = 0, _Object$keys = Object.keys(record); _i < _Object$keys.length; _i++) {
|
|
350
|
-
var attr = _Object$keys[_i];
|
|
351
|
-
if (!(attr in newState.attrValues)) {
|
|
352
|
-
newState.attrValues[attr] = {};
|
|
353
|
-
if (recordsProcessed > 0) newState.attrValues[attr]["null"] = recordsProcessed;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
for (var _attr in newState.attrValues) {
|
|
357
|
-
var value = _attr in record ? record[_attr] : 'null';
|
|
358
|
-
if (!(value in newState.attrValues[_attr])) newState.attrValues[_attr][value] = 0;
|
|
359
|
-
newState.attrValues[_attr][value]++;
|
|
360
|
-
}
|
|
361
|
-
recordsProcessed++;
|
|
362
|
-
});
|
|
363
|
-
setState(function (s) {
|
|
364
|
-
return _objectSpread(_objectSpread({}, s), newState);
|
|
365
|
-
});
|
|
366
|
-
}, [data, derivedAttributes, state.data]);
|
|
367
|
-
var sendPropUpdate = (0, _react.useCallback)(function (command) {
|
|
368
|
-
var newProps = (0, _immutabilityHelper["default"])(props, command);
|
|
369
|
-
if (onChange) onChange(newProps);
|
|
370
|
-
}, [props, onChange]);
|
|
371
|
-
var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
|
|
372
|
-
if (!newAttrs || !existingAttrs) return existingAttrs || [];
|
|
373
|
-
var dups = newAttrs.filter(function (item) {
|
|
374
|
-
return existingAttrs.includes(item);
|
|
375
|
-
});
|
|
376
|
-
return dups.length > 0 ? existingAttrs.filter(function (item) {
|
|
377
|
-
return !dups.includes(item);
|
|
378
|
-
}) : existingAttrs;
|
|
379
|
-
};
|
|
380
|
-
var propUpdater = (0, _react.useCallback)(function (key) {
|
|
381
|
-
return function (value) {
|
|
382
|
-
var updateObj = _defineProperty({}, key, {
|
|
383
|
-
$set: value
|
|
384
|
-
});
|
|
385
|
-
if (key === 'rows') {
|
|
386
|
-
var updatedCols = handleDuplicates(value, cols);
|
|
387
|
-
if (updatedCols.length !== cols.length) updateObj.cols = {
|
|
388
|
-
$set: updatedCols
|
|
389
|
-
};
|
|
390
|
-
} else if (key === 'cols') {
|
|
391
|
-
var updatedRows = handleDuplicates(value, rows);
|
|
392
|
-
if (updatedRows.length !== rows.length) updateObj.rows = {
|
|
393
|
-
$set: updatedRows
|
|
394
|
-
};
|
|
395
|
-
}
|
|
396
|
-
sendPropUpdate(updateObj);
|
|
397
|
-
};
|
|
398
|
-
}, [cols, rows, sendPropUpdate]);
|
|
399
|
-
var setValuesInFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
400
|
-
sendPropUpdate({
|
|
401
|
-
valueFilter: _defineProperty({}, attribute, {
|
|
402
|
-
$set: values.reduce(function (r, v) {
|
|
403
|
-
r[v] = true;
|
|
404
|
-
return r;
|
|
405
|
-
}, {})
|
|
406
|
-
})
|
|
407
|
-
});
|
|
408
|
-
}, [sendPropUpdate]);
|
|
409
|
-
var addValuesToFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
410
|
-
if (attribute in valueFilter) {
|
|
411
|
-
sendPropUpdate({
|
|
412
|
-
valueFilter: _defineProperty({}, attribute, values.reduce(function (r, v) {
|
|
413
|
-
r[v] = {
|
|
414
|
-
$set: true
|
|
415
|
-
};
|
|
416
|
-
return r;
|
|
417
|
-
}, {}))
|
|
418
|
-
});
|
|
419
|
-
} else {
|
|
420
|
-
setValuesInFilter(attribute, values);
|
|
421
|
-
}
|
|
422
|
-
}, [sendPropUpdate, valueFilter, setValuesInFilter]);
|
|
423
|
-
var removeValuesFromFilter = (0, _react.useCallback)(function (attribute, values) {
|
|
424
|
-
sendPropUpdate({
|
|
425
|
-
valueFilter: _defineProperty({}, attribute, {
|
|
426
|
-
$unset: values
|
|
427
|
-
})
|
|
428
|
-
});
|
|
429
|
-
}, [sendPropUpdate]);
|
|
297
|
+
|
|
298
|
+
// ─── Helpers de UI local ──────────────────────────────────────────────────────
|
|
430
299
|
var moveFilterBoxToTop = (0, _react.useCallback)(function (attribute) {
|
|
431
|
-
|
|
300
|
+
setUiState(function (s) {
|
|
432
301
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
433
302
|
maxZIndex: s.maxZIndex + 1,
|
|
434
303
|
zIndices: _objectSpread(_objectSpread({}, s.zIndices), {}, _defineProperty({}, attribute, s.maxZIndex + 1))
|
|
435
304
|
});
|
|
436
305
|
});
|
|
437
306
|
}, []);
|
|
438
|
-
|
|
307
|
+
|
|
308
|
+
// ─── Derivados desde el Core ──────────────────────────────────────────────────
|
|
309
|
+
var _pivotProps$rows = pivotProps.rows,
|
|
310
|
+
rows = _pivotProps$rows === void 0 ? [] : _pivotProps$rows,
|
|
311
|
+
_pivotProps$cols = pivotProps.cols,
|
|
312
|
+
cols = _pivotProps$cols === void 0 ? [] : _pivotProps$cols,
|
|
313
|
+
_pivotProps$vals = pivotProps.vals,
|
|
314
|
+
vals = _pivotProps$vals === void 0 ? [] : _pivotProps$vals,
|
|
315
|
+
_pivotProps$aggregato = pivotProps.aggregatorName,
|
|
316
|
+
aggregatorName = _pivotProps$aggregato === void 0 ? 'Count' : _pivotProps$aggregato,
|
|
317
|
+
_pivotProps$aggregato2 = pivotProps.aggregators,
|
|
318
|
+
aggregators = _pivotProps$aggregato2 === void 0 ? _Utilities.aggregators : _pivotProps$aggregato2,
|
|
319
|
+
_pivotProps$rendererN = pivotProps.rendererName,
|
|
320
|
+
rendererName = _pivotProps$rendererN === void 0 ? 'Table' : _pivotProps$rendererN,
|
|
321
|
+
_pivotProps$renderers = pivotProps.renderers,
|
|
322
|
+
renderers = _pivotProps$renderers === void 0 ? _TableRenderers["default"] : _pivotProps$renderers,
|
|
323
|
+
_pivotProps$valueFilt = pivotProps.valueFilter,
|
|
324
|
+
valueFilter = _pivotProps$valueFilt === void 0 ? {} : _pivotProps$valueFilt,
|
|
325
|
+
_pivotProps$sorters = pivotProps.sorters,
|
|
326
|
+
sorters = _pivotProps$sorters === void 0 ? {} : _pivotProps$sorters,
|
|
327
|
+
_pivotProps$menuLimit = pivotProps.menuLimit,
|
|
328
|
+
menuLimit = _pivotProps$menuLimit === void 0 ? 500 : _pivotProps$menuLimit,
|
|
329
|
+
_pivotProps$unusedOri = pivotProps.unusedOrientationCutoff,
|
|
330
|
+
unusedOrientationCutoff = _pivotProps$unusedOri === void 0 ? 85 : _pivotProps$unusedOri,
|
|
331
|
+
_pivotProps$hiddenAtt = pivotProps.hiddenAttributes,
|
|
332
|
+
hiddenAttributes = _pivotProps$hiddenAtt === void 0 ? [] : _pivotProps$hiddenAtt,
|
|
333
|
+
_pivotProps$hiddenFro = pivotProps.hiddenFromAggregators,
|
|
334
|
+
hiddenFromAggregators = _pivotProps$hiddenFro === void 0 ? [] : _pivotProps$hiddenFro,
|
|
335
|
+
_pivotProps$hiddenFro2 = pivotProps.hiddenFromDragDrop,
|
|
336
|
+
hiddenFromDragDrop = _pivotProps$hiddenFro2 === void 0 ? [] : _pivotProps$hiddenFro2,
|
|
337
|
+
_pivotProps$paginatio = pivotProps.pagination,
|
|
338
|
+
pagination = _pivotProps$paginatio === void 0 ? false : _pivotProps$paginatio,
|
|
339
|
+
_pivotProps$page = pivotProps.page,
|
|
340
|
+
page = _pivotProps$page === void 0 ? 1 : _pivotProps$page,
|
|
341
|
+
_pivotProps$pageSize = pivotProps.pageSize,
|
|
342
|
+
pageSize = _pivotProps$pageSize === void 0 ? 20 : _pivotProps$pageSize,
|
|
343
|
+
_pivotProps$rowOrder = pivotProps.rowOrder,
|
|
344
|
+
rowOrder = _pivotProps$rowOrder === void 0 ? 'key_a_to_z' : _pivotProps$rowOrder,
|
|
345
|
+
_pivotProps$colOrder = pivotProps.colOrder,
|
|
346
|
+
colOrder = _pivotProps$colOrder === void 0 ? 'key_a_to_z' : _pivotProps$colOrder,
|
|
347
|
+
_pivotProps$size = pivotProps.size,
|
|
348
|
+
size = _pivotProps$size === void 0 ? 'lg' : _pivotProps$size,
|
|
349
|
+
_pivotProps$columnRes = pivotProps.columnResizing,
|
|
350
|
+
columnResizing = _pivotProps$columnRes === void 0 ? false : _pivotProps$columnRes,
|
|
351
|
+
_pivotProps$columnWid = pivotProps.columnWidths,
|
|
352
|
+
columnWidths = _pivotProps$columnWid === void 0 ? {} : _pivotProps$columnWid,
|
|
353
|
+
onColumnWidthChange = pivotProps.onColumnWidthChange;
|
|
354
|
+
var unusedAttrs = Object.keys(pivotState.attrValues).filter(function (e) {
|
|
439
355
|
return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
440
|
-
}).sort((0, _Utilities.sortAs)(
|
|
356
|
+
}).sort((0, _Utilities.sortAs)(pivotState.unusedOrder || []));
|
|
441
357
|
var unusedLength = unusedAttrs.reduce(function (r, e) {
|
|
442
358
|
return r + e.length;
|
|
443
359
|
}, 0);
|
|
@@ -448,6 +364,8 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
448
364
|
var rowAttrs = rows.filter(function (e) {
|
|
449
365
|
return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
|
|
450
366
|
});
|
|
367
|
+
|
|
368
|
+
// ─── DnD Zones ────────────────────────────────────────────────────────────────
|
|
451
369
|
var getZoneOfItem = function getZoneOfItem(id) {
|
|
452
370
|
if (rowAttrs.includes(id)) return 'rows';
|
|
453
371
|
if (colAttrs.includes(id)) return 'cols';
|
|
@@ -461,14 +379,14 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
461
379
|
return [];
|
|
462
380
|
};
|
|
463
381
|
var getUpdaterByZone = function getUpdaterByZone(zone) {
|
|
464
|
-
if (zone === 'rows') return
|
|
465
|
-
|
|
382
|
+
if (zone === 'rows') return function (value) {
|
|
383
|
+
return actions.updateProp('rows', value);
|
|
384
|
+
};
|
|
385
|
+
if (zone === 'cols') return function (value) {
|
|
386
|
+
return actions.updateProp('cols', value);
|
|
387
|
+
};
|
|
466
388
|
if (zone === 'unused') return function (order) {
|
|
467
|
-
return
|
|
468
|
-
return _objectSpread(_objectSpread({}, s), {}, {
|
|
469
|
-
unusedOrder: order
|
|
470
|
-
});
|
|
471
|
-
});
|
|
389
|
+
return actions.setUnusedOrder(order);
|
|
472
390
|
};
|
|
473
391
|
return function () {};
|
|
474
392
|
};
|
|
@@ -517,8 +435,10 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
517
435
|
if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
|
|
518
436
|
}
|
|
519
437
|
};
|
|
438
|
+
|
|
439
|
+
// ─── Dropdowns y controles ────────────────────────────────────────────────────
|
|
520
440
|
var isOpen = function isOpen(dropdown) {
|
|
521
|
-
return
|
|
441
|
+
return uiState.openDropdown === dropdown;
|
|
522
442
|
};
|
|
523
443
|
var numValsAllowed = ((_aggregators$aggregat = aggregators[aggregatorName]) === null || _aggregators$aggregat === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat.call(aggregators, [])) === null || _aggregators$aggregat2 === void 0 || (_aggregators$aggregat2 = _aggregators$aggregat2()) === null || _aggregators$aggregat2 === void 0 ? void 0 : _aggregators$aggregat2.numInputs) || 0;
|
|
524
444
|
var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
|
|
@@ -539,19 +459,25 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
539
459
|
next: 'key_a_to_z'
|
|
540
460
|
}
|
|
541
461
|
};
|
|
462
|
+
|
|
463
|
+
// Estado combinado para DnDCell (necesita zIndices del UI local + attrValues del Core)
|
|
464
|
+
var combinedState = {
|
|
465
|
+
attrValues: pivotState.attrValues,
|
|
466
|
+
zIndices: uiState.zIndices,
|
|
467
|
+
maxZIndex: uiState.maxZIndex
|
|
468
|
+
};
|
|
542
469
|
var sharedCellProps = {
|
|
543
|
-
state:
|
|
470
|
+
state: combinedState,
|
|
544
471
|
valueFilter: valueFilter,
|
|
545
472
|
sorters: sorters,
|
|
546
473
|
menuLimit: menuLimit,
|
|
547
|
-
setValuesInFilter: setValuesInFilter,
|
|
548
|
-
addValuesToFilter: addValuesToFilter,
|
|
474
|
+
setValuesInFilter: actions.setValuesInFilter,
|
|
475
|
+
addValuesToFilter: actions.addValuesToFilter,
|
|
549
476
|
moveFilterBoxToTop: moveFilterBoxToTop,
|
|
550
|
-
removeValuesFromFilter: removeValuesFromFilter
|
|
477
|
+
removeValuesFromFilter: actions.removeValuesFromFilter
|
|
551
478
|
};
|
|
552
479
|
var componentProps = {
|
|
553
|
-
data:
|
|
554
|
-
onChange: onChange,
|
|
480
|
+
data: pivotState.materializedInput,
|
|
555
481
|
rows: rows,
|
|
556
482
|
cols: cols,
|
|
557
483
|
vals: vals,
|
|
@@ -571,12 +497,17 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
571
497
|
pageSize: pageSize,
|
|
572
498
|
rowOrder: rowOrder,
|
|
573
499
|
colOrder: colOrder,
|
|
574
|
-
derivedAttributes: derivedAttributes
|
|
500
|
+
derivedAttributes: pivotProps.derivedAttributes,
|
|
501
|
+
cellPipeline: pivotProps.cellPipeline,
|
|
502
|
+
virtualization: pivotProps.virtualization,
|
|
503
|
+
columnResizing: columnResizing,
|
|
504
|
+
columnWidths: columnWidths,
|
|
505
|
+
onColumnWidthChange: onColumnWidthChange
|
|
575
506
|
};
|
|
576
507
|
var renderFooter = function renderFooter() {
|
|
577
508
|
var pivotData = new _Utilities.PivotData(componentProps);
|
|
578
509
|
var totalPivotRows = pivotData.getRowKeys().length;
|
|
579
|
-
var totalRecords =
|
|
510
|
+
var totalRecords = pivotState.materializedInput.length;
|
|
580
511
|
var totalPages = Math.ceil(totalPivotRows / pageSize);
|
|
581
512
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
582
513
|
className: "pvtFooter"
|
|
@@ -588,13 +519,13 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
588
519
|
className: "pvtButton",
|
|
589
520
|
disabled: page <= 1,
|
|
590
521
|
onClick: function onClick() {
|
|
591
|
-
return
|
|
522
|
+
return actions.updateProp('page', 1);
|
|
592
523
|
}
|
|
593
524
|
}, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
594
525
|
className: "pvtButton",
|
|
595
526
|
disabled: page <= 1,
|
|
596
527
|
onClick: function onClick() {
|
|
597
|
-
return
|
|
528
|
+
return actions.updateProp('page', page - 1);
|
|
598
529
|
}
|
|
599
530
|
}, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
|
|
600
531
|
type: "number",
|
|
@@ -604,32 +535,26 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
604
535
|
max: totalPages,
|
|
605
536
|
onChange: function onChange(e) {
|
|
606
537
|
var val = parseInt(e.target.value, 10);
|
|
607
|
-
if (val > 0 && val <= totalPages)
|
|
538
|
+
if (val > 0 && val <= totalPages) actions.updateProp('page', val);
|
|
608
539
|
}
|
|
609
540
|
}), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
|
|
610
541
|
className: "pvtButton",
|
|
611
542
|
disabled: page >= totalPages,
|
|
612
543
|
onClick: function onClick() {
|
|
613
|
-
return
|
|
544
|
+
return actions.updateProp('page', page + 1);
|
|
614
545
|
}
|
|
615
546
|
}, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
616
547
|
className: "pvtButton",
|
|
617
548
|
disabled: page >= totalPages,
|
|
618
549
|
onClick: function onClick() {
|
|
619
|
-
return
|
|
550
|
+
return actions.updateProp('page', totalPages);
|
|
620
551
|
}
|
|
621
552
|
}, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
|
|
622
553
|
className: "pvtPageSize",
|
|
623
554
|
value: pageSize,
|
|
624
555
|
onChange: function onChange(e) {
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
$set: parseInt(e.target.value, 10)
|
|
628
|
-
},
|
|
629
|
-
page: {
|
|
630
|
-
$set: 1
|
|
631
|
-
}
|
|
632
|
-
});
|
|
556
|
+
actions.updateProp('pageSize', parseInt(e.target.value, 10));
|
|
557
|
+
actions.updateProp('page', 1);
|
|
633
558
|
}
|
|
634
559
|
}, [10, 20, 50, 100].map(function (n) {
|
|
635
560
|
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
@@ -645,10 +570,10 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
645
570
|
onDragOver: handleDragOver,
|
|
646
571
|
onDragEnd: handleDragEnd
|
|
647
572
|
}, /*#__PURE__*/_react["default"].createElement("table", {
|
|
648
|
-
className: "pvtUi
|
|
573
|
+
className: "pvtUi pvt-theme-".concat(props.theme || 'default', " pvt-size-").concat(size || 'lg')
|
|
649
574
|
}, /*#__PURE__*/_react["default"].createElement("tbody", {
|
|
650
575
|
onClick: function onClick() {
|
|
651
|
-
return
|
|
576
|
+
return setUiState(function (s) {
|
|
652
577
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
653
578
|
openDropdown: false
|
|
654
579
|
});
|
|
@@ -660,15 +585,17 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
660
585
|
current: actualRendererName,
|
|
661
586
|
values: Object.keys(renderers),
|
|
662
587
|
open: isOpen('renderer'),
|
|
663
|
-
zIndex: isOpen('renderer') ?
|
|
588
|
+
zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
|
|
664
589
|
toggle: function toggle() {
|
|
665
|
-
return
|
|
590
|
+
return setUiState(function (s) {
|
|
666
591
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
667
592
|
openDropdown: isOpen('renderer') ? false : 'renderer'
|
|
668
593
|
});
|
|
669
594
|
});
|
|
670
595
|
},
|
|
671
|
-
setValue:
|
|
596
|
+
setValue: function setValue(v) {
|
|
597
|
+
return actions.updateProp('rendererName', v);
|
|
598
|
+
}
|
|
672
599
|
})), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
|
|
673
600
|
id: "unused",
|
|
674
601
|
items: unusedAttrs,
|
|
@@ -680,49 +607,49 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
680
607
|
current: aggregatorName,
|
|
681
608
|
values: Object.keys(aggregators),
|
|
682
609
|
open: isOpen('aggregators'),
|
|
683
|
-
zIndex: isOpen('aggregators') ?
|
|
610
|
+
zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
|
|
684
611
|
toggle: function toggle() {
|
|
685
|
-
return
|
|
612
|
+
return setUiState(function (s) {
|
|
686
613
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
687
614
|
openDropdown: isOpen('aggregators') ? false : 'aggregators'
|
|
688
615
|
});
|
|
689
616
|
});
|
|
690
617
|
},
|
|
691
|
-
setValue:
|
|
618
|
+
setValue: function setValue(v) {
|
|
619
|
+
return actions.updateProp('aggregatorName', v);
|
|
620
|
+
}
|
|
692
621
|
}), /*#__PURE__*/_react["default"].createElement("a", {
|
|
693
622
|
role: "button",
|
|
694
623
|
className: "pvtRowOrder",
|
|
695
624
|
onClick: function onClick() {
|
|
696
|
-
return
|
|
625
|
+
return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
|
|
697
626
|
}
|
|
698
627
|
}, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
|
|
699
628
|
role: "button",
|
|
700
629
|
className: "pvtColOrder",
|
|
701
630
|
onClick: function onClick() {
|
|
702
|
-
return
|
|
631
|
+
return actions.updateProp('colOrder', sortIcons[colOrder].next);
|
|
703
632
|
}
|
|
704
633
|
}, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
|
|
705
634
|
return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
706
635
|
key: i,
|
|
707
636
|
current: vals[i],
|
|
708
|
-
values: Object.keys(
|
|
637
|
+
values: Object.keys(pivotState.attrValues).filter(function (e) {
|
|
709
638
|
return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
|
|
710
639
|
}),
|
|
711
640
|
open: isOpen("val".concat(i)),
|
|
712
|
-
zIndex: isOpen("val".concat(i)) ?
|
|
641
|
+
zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
|
|
713
642
|
toggle: function toggle() {
|
|
714
|
-
return
|
|
643
|
+
return setUiState(function (s) {
|
|
715
644
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
716
645
|
openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
|
|
717
646
|
});
|
|
718
647
|
});
|
|
719
648
|
},
|
|
720
649
|
setValue: function setValue(value) {
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
}
|
|
725
|
-
});
|
|
650
|
+
var newVals = _toConsumableArray(vals);
|
|
651
|
+
newVals[i] = value;
|
|
652
|
+
actions.updateProp('vals', newVals);
|
|
726
653
|
}
|
|
727
654
|
}), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
|
|
728
655
|
key: "br".concat(i)
|
|
@@ -745,64 +672,66 @@ var PivotTableUI = function PivotTableUI(props) {
|
|
|
745
672
|
current: actualRendererName,
|
|
746
673
|
values: Object.keys(renderers),
|
|
747
674
|
open: isOpen('renderer'),
|
|
748
|
-
zIndex: isOpen('renderer') ?
|
|
675
|
+
zIndex: isOpen('renderer') ? uiState.maxZIndex + 1 : 1,
|
|
749
676
|
toggle: function toggle() {
|
|
750
|
-
return
|
|
677
|
+
return setUiState(function (s) {
|
|
751
678
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
752
679
|
openDropdown: isOpen('renderer') ? false : 'renderer'
|
|
753
680
|
});
|
|
754
681
|
});
|
|
755
682
|
},
|
|
756
|
-
setValue:
|
|
683
|
+
setValue: function setValue(v) {
|
|
684
|
+
return actions.updateProp('rendererName', v);
|
|
685
|
+
}
|
|
757
686
|
})), /*#__PURE__*/_react["default"].createElement("td", {
|
|
758
687
|
className: "pvtVals"
|
|
759
688
|
}, /*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
760
689
|
current: aggregatorName,
|
|
761
690
|
values: Object.keys(aggregators),
|
|
762
691
|
open: isOpen('aggregators'),
|
|
763
|
-
zIndex: isOpen('aggregators') ?
|
|
692
|
+
zIndex: isOpen('aggregators') ? uiState.maxZIndex + 1 : 1,
|
|
764
693
|
toggle: function toggle() {
|
|
765
|
-
return
|
|
694
|
+
return setUiState(function (s) {
|
|
766
695
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
767
696
|
openDropdown: isOpen('aggregators') ? false : 'aggregators'
|
|
768
697
|
});
|
|
769
698
|
});
|
|
770
699
|
},
|
|
771
|
-
setValue:
|
|
700
|
+
setValue: function setValue(v) {
|
|
701
|
+
return actions.updateProp('aggregatorName', v);
|
|
702
|
+
}
|
|
772
703
|
}), /*#__PURE__*/_react["default"].createElement("a", {
|
|
773
704
|
role: "button",
|
|
774
705
|
className: "pvtRowOrder",
|
|
775
706
|
onClick: function onClick() {
|
|
776
|
-
return
|
|
707
|
+
return actions.updateProp('rowOrder', sortIcons[rowOrder].next);
|
|
777
708
|
}
|
|
778
709
|
}, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
|
|
779
710
|
role: "button",
|
|
780
711
|
className: "pvtColOrder",
|
|
781
712
|
onClick: function onClick() {
|
|
782
|
-
return
|
|
713
|
+
return actions.updateProp('colOrder', sortIcons[colOrder].next);
|
|
783
714
|
}
|
|
784
715
|
}, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
|
|
785
716
|
return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
|
|
786
717
|
key: i,
|
|
787
718
|
current: vals[i],
|
|
788
|
-
values: Object.keys(
|
|
719
|
+
values: Object.keys(pivotState.attrValues).filter(function (e) {
|
|
789
720
|
return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
|
|
790
721
|
}),
|
|
791
722
|
open: isOpen("val".concat(i)),
|
|
792
|
-
zIndex: isOpen("val".concat(i)) ?
|
|
723
|
+
zIndex: isOpen("val".concat(i)) ? uiState.maxZIndex + 1 : 1,
|
|
793
724
|
toggle: function toggle() {
|
|
794
|
-
return
|
|
725
|
+
return setUiState(function (s) {
|
|
795
726
|
return _objectSpread(_objectSpread({}, s), {}, {
|
|
796
727
|
openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
|
|
797
728
|
});
|
|
798
729
|
});
|
|
799
730
|
},
|
|
800
731
|
setValue: function setValue(value) {
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
}
|
|
805
|
-
});
|
|
732
|
+
var newVals = _toConsumableArray(vals);
|
|
733
|
+
newVals[i] = value;
|
|
734
|
+
actions.updateProp('vals', newVals);
|
|
806
735
|
}
|
|
807
736
|
}), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
|
|
808
737
|
key: "br".concat(i)
|
|
@@ -843,7 +772,10 @@ PivotTableUI.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
|
|
|
843
772
|
menuLimit: _propTypes["default"].number,
|
|
844
773
|
rendererName: _propTypes["default"].string,
|
|
845
774
|
renderers: _propTypes["default"].objectOf(_propTypes["default"].func),
|
|
846
|
-
size: _propTypes["default"].oneOf(['sm', 'md', 'lg'])
|
|
775
|
+
size: _propTypes["default"].oneOf(['sm', 'md', 'lg']),
|
|
776
|
+
columnResizing: _propTypes["default"].bool,
|
|
777
|
+
columnWidths: _propTypes["default"].object,
|
|
778
|
+
onColumnWidthChange: _propTypes["default"].func
|
|
847
779
|
});
|
|
848
780
|
PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
|
|
849
781
|
onChange: function onChange() {},
|
|
@@ -853,7 +785,9 @@ PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps,
|
|
|
853
785
|
unusedOrientationCutoff: 85,
|
|
854
786
|
menuLimit: 500,
|
|
855
787
|
rendererName: 'Table',
|
|
856
|
-
renderers: _TableRenderers["default"]
|
|
788
|
+
renderers: _TableRenderers["default"],
|
|
789
|
+
columnResizing: false,
|
|
790
|
+
columnWidths: {}
|
|
857
791
|
});
|
|
858
792
|
var _default = exports["default"] = PivotTableUI;
|
|
859
793
|
//# sourceMappingURL=PivotTableUI.js.map
|