react-pivottable-plus 1.0.0 → 1.0.2

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/PivotTableUI.js CHANGED
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
11
11
  var _Utilities = require("./Utilities");
12
12
  var _PivotTable = _interopRequireDefault(require("./PivotTable"));
13
+ var _TableRenderers = _interopRequireDefault(require("./TableRenderers"));
13
14
  var _reactDraggable = _interopRequireDefault(require("react-draggable"));
14
15
  var _core = require("@dnd-kit/core");
15
16
  var _sortable = require("@dnd-kit/sortable");
@@ -163,9 +164,6 @@ var DraggableAttribute = exports.DraggableAttribute = /*#__PURE__*/_react["defau
163
164
  }, ' ', "\u25BE")), open ? getFilterBox() : null);
164
165
  });
165
166
  DraggableAttribute.displayName = 'DraggableAttribute';
166
-
167
- // ─── SortableAttribute: wrapper que conecta dnd-kit con DraggableAttribute ────
168
-
169
167
  var SortableAttribute = function SortableAttribute(_ref2) {
170
168
  var id = _ref2.id,
171
169
  rest = _objectWithoutProperties(_ref2, _excluded);
@@ -191,9 +189,6 @@ var SortableAttribute = function SortableAttribute(_ref2) {
191
189
  })
192
190
  }, rest));
193
191
  };
194
-
195
- // ─── Dropdown ─────────────────────────────────────────────────────────────────
196
-
197
192
  var Dropdown = exports.Dropdown = function Dropdown(_ref3) {
198
193
  var _ref3$zIndex = _ref3.zIndex,
199
194
  zIndex = _ref3$zIndex === void 0 ? 1 : _ref3$zIndex,
@@ -235,9 +230,6 @@ var Dropdown = exports.Dropdown = function Dropdown(_ref3) {
235
230
  }, r);
236
231
  })));
237
232
  };
238
-
239
- // ─── DnDCell: lista sortable con dnd-kit ──────────────────────────────────────
240
-
241
233
  var DnDCell = function DnDCell(_ref4) {
242
234
  var id = _ref4.id,
243
235
  items = _ref4.items,
@@ -280,11 +272,52 @@ var DnDCell = function DnDCell(_ref4) {
280
272
  });
281
273
  }))));
282
274
  };
283
-
284
- // ─── PivotTableUI ─────────────────────────────────────────────────────────────
285
-
286
275
  var PivotTableUI = function PivotTableUI(props) {
287
- var _aggregators$aggregat, _aggregators$aggregat2, _aggregators$aggregat3, _aggregators$aggregat4;
276
+ var _aggregators$aggregat, _aggregators$aggregat2;
277
+ var _props$data = props.data,
278
+ data = _props$data === void 0 ? [] : _props$data,
279
+ _props$onChange = props.onChange,
280
+ onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
281
+ _props$rows = props.rows,
282
+ rows = _props$rows === void 0 ? [] : _props$rows,
283
+ _props$cols = props.cols,
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;
288
321
  var _useState5 = (0, _react.useState)({
289
322
  unusedOrder: [],
290
323
  zIndices: {},
@@ -297,40 +330,10 @@ var PivotTableUI = function PivotTableUI(props) {
297
330
  _useState6 = _slicedToArray(_useState5, 2),
298
331
  state = _useState6[0],
299
332
  setState = _useState6[1];
300
-
301
- // activeId: el atributo que se está arrastrando
302
333
  var _useState7 = (0, _react.useState)(null),
303
334
  _useState8 = _slicedToArray(_useState7, 2),
304
335
  activeId = _useState8[0],
305
336
  setActiveId = _useState8[1];
306
- var data = props.data,
307
- onChange = props.onChange,
308
- rows = props.rows,
309
- cols = props.cols,
310
- aggregatorName = props.aggregatorName,
311
- aggregators = props.aggregators,
312
- vals = props.vals,
313
- rendererName = props.rendererName,
314
- renderers = props.renderers,
315
- valueFilter = props.valueFilter,
316
- sorters = props.sorters,
317
- menuLimit = props.menuLimit,
318
- unusedOrientationCutoff = props.unusedOrientationCutoff,
319
- hiddenAttributes = props.hiddenAttributes,
320
- hiddenFromAggregators = props.hiddenFromAggregators,
321
- hiddenFromDragDrop = props.hiddenFromDragDrop,
322
- pagination = props.pagination,
323
- page = props.page,
324
- pageSize = props.pageSize,
325
- rowOrder = props.rowOrder,
326
- colOrder = props.colOrder,
327
- derivedAttributes = props.derivedAttributes;
328
- var onChangeRef = (0, _react.useRef)(onChange);
329
- (0, _react.useEffect)(function () {
330
- onChangeRef.current = onChange;
331
- }, [onChange]);
332
-
333
- // ── Materializar datos ───────────────────────────────────────────────────────
334
337
  (0, _react.useEffect)(function () {
335
338
  if (state.data === data) return;
336
339
  var newState = {
@@ -359,8 +362,10 @@ var PivotTableUI = function PivotTableUI(props) {
359
362
  return _objectSpread(_objectSpread({}, s), newState);
360
363
  });
361
364
  }, [data, derivedAttributes, state.data]);
362
-
363
- // ── Helpers ──────────────────────────────────────────────────────────────────
365
+ var sendPropUpdate = (0, _react.useCallback)(function (command) {
366
+ var newProps = (0, _immutabilityHelper["default"])(props, command);
367
+ if (onChange) onChange(newProps);
368
+ }, [props, onChange]);
364
369
  var handleDuplicates = function handleDuplicates(newAttrs, existingAttrs) {
365
370
  if (!newAttrs || !existingAttrs) return existingAttrs || [];
366
371
  var dups = newAttrs.filter(function (item) {
@@ -370,11 +375,6 @@ var PivotTableUI = function PivotTableUI(props) {
370
375
  return !dups.includes(item);
371
376
  }) : existingAttrs;
372
377
  };
373
- var sendPropUpdate = (0, _react.useCallback)(function (command) {
374
- var _onChangeRef$current;
375
- var newProps = (0, _immutabilityHelper["default"])(props, command);
376
- (_onChangeRef$current = onChangeRef.current) === null || _onChangeRef$current === void 0 || _onChangeRef$current.call(onChangeRef, newProps);
377
- }, [props]);
378
378
  var propUpdater = (0, _react.useCallback)(function (key) {
379
379
  return function (value) {
380
380
  var updateObj = _defineProperty({}, key, {
@@ -433,8 +433,6 @@ var PivotTableUI = function PivotTableUI(props) {
433
433
  });
434
434
  });
435
435
  }, []);
436
-
437
- // ── Listas de atributos ──────────────────────────────────────────────────────
438
436
  var unusedAttrs = Object.keys(state.attrValues).filter(function (e) {
439
437
  return e && e.trim() !== '' && !rows.includes(e) && !cols.includes(e) && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
440
438
  }).sort((0, _Utilities.sortAs)(state.unusedOrder));
@@ -448,9 +446,6 @@ var PivotTableUI = function PivotTableUI(props) {
448
446
  var rowAttrs = rows.filter(function (e) {
449
447
  return e && e.trim() !== '' && !hiddenAttributes.includes(e) && !hiddenFromDragDrop.includes(e);
450
448
  });
451
-
452
- // ── Mapa de zona → lista actual ──────────────────────────────────────────────
453
- // Para saber a qué lista pertenece cada atributo durante el drag
454
449
  var getZoneOfItem = function getZoneOfItem(id) {
455
450
  if (rowAttrs.includes(id)) return 'rows';
456
451
  if (colAttrs.includes(id)) return 'cols';
@@ -475,18 +470,14 @@ var PivotTableUI = function PivotTableUI(props) {
475
470
  };
476
471
  return function () {};
477
472
  };
478
-
479
- // ── Sensores dnd-kit ─────────────────────────────────────────────────────────
480
473
  var sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor, {
481
474
  activationConstraint: {
482
475
  distance: 5
483
476
  }
484
477
  }));
485
-
486
- // ── Handlers de dnd-kit ──────────────────────────────────────────────────────
487
478
  var handleDragStart = function handleDragStart(_ref5) {
488
479
  var active = _ref5.active;
489
- setActiveId(active.id);
480
+ return setActiveId(active.id);
490
481
  };
491
482
  var handleDragOver = function handleDragOver(_ref6) {
492
483
  var _over$data$current$so, _over$data;
@@ -495,30 +486,18 @@ var PivotTableUI = function PivotTableUI(props) {
495
486
  if (!over) return;
496
487
  var activeZone = getZoneOfItem(active.id);
497
488
  var overZone = (_over$data$current$so = (_over$data = over.data) === null || _over$data === void 0 || (_over$data = _over$data.current) === null || _over$data === void 0 || (_over$data = _over$data.sortable) === null || _over$data === void 0 ? void 0 : _over$data.containerId) !== null && _over$data$current$so !== void 0 ? _over$data$current$so : getZoneOfItem(over.id);
498
-
499
- // Guardia 1: Ambos deben tener zona y ser distintas
500
489
  if (!activeZone || !overZone || activeZone === overZone) return;
501
-
502
- // Mover entre zonas en tiempo real (mientras se arrastra)
503
490
  var activeList = _toConsumableArray(getListByZone(activeZone));
504
491
  var overList = _toConsumableArray(getListByZone(overZone));
505
492
  var activeIndex = activeList.indexOf(active.id);
506
493
  var overIndex = overList.indexOf(over.id);
507
-
508
- // Guardia 2: El item debe existir en la lista de origen (evita splice -1)
509
494
  if (activeIndex === -1) return;
510
-
511
- // Guardia 3: Evitar duplicados en la lista de destino
512
495
  if (overList.includes(active.id)) return;
513
496
  activeList.splice(activeIndex, 1);
514
497
  var insertAt = overIndex >= 0 ? overIndex : overList.length;
515
498
  overList.splice(insertAt, 0, active.id);
516
-
517
- // Actualizar ambas listas
518
- var updateActiveZone = getUpdaterByZone(activeZone);
519
- var updateOverZone = getUpdaterByZone(overZone);
520
- updateActiveZone(activeList);
521
- updateOverZone(overList);
499
+ getUpdaterByZone(activeZone)(activeList);
500
+ getUpdaterByZone(overZone)(overList);
522
501
  };
523
502
  var handleDragEnd = function handleDragEnd(_ref7) {
524
503
  var _over$data$current$so2, _over$data2;
@@ -530,23 +509,16 @@ var PivotTableUI = function PivotTableUI(props) {
530
509
  var overZone = (_over$data$current$so2 = (_over$data2 = over.data) === null || _over$data2 === void 0 || (_over$data2 = _over$data2.current) === null || _over$data2 === void 0 || (_over$data2 = _over$data2.sortable) === null || _over$data2 === void 0 ? void 0 : _over$data2.containerId) !== null && _over$data$current$so2 !== void 0 ? _over$data$current$so2 : getZoneOfItem(over.id);
531
510
  if (!activeZone || !overZone) return;
532
511
  if (activeZone === overZone) {
533
- // Reordenamiento dentro de la misma zona
534
512
  var list = getListByZone(activeZone);
535
513
  var oldIndex = list.indexOf(active.id);
536
514
  var newIndex = list.indexOf(over.id);
537
- if (oldIndex !== newIndex) {
538
- getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
539
- }
515
+ if (oldIndex !== newIndex) getUpdaterByZone(activeZone)((0, _sortable.arrayMove)(list, oldIndex, newIndex));
540
516
  }
541
- // Si activeZone !== overZone, ya fue manejado en handleDragOver
542
517
  };
543
-
544
- // ── UI ───────────────────────────────────────────────────────────────────────
545
518
  var isOpen = function isOpen(dropdown) {
546
519
  return state.openDropdown === dropdown;
547
520
  };
548
521
  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;
549
- var aggregatorCellOutlet = (_aggregators$aggregat3 = aggregators[aggregatorName]) === null || _aggregators$aggregat3 === void 0 || (_aggregators$aggregat4 = _aggregators$aggregat3.call(aggregators, [])) === null || _aggregators$aggregat4 === void 0 || (_aggregators$aggregat4 = _aggregators$aggregat4()) === null || _aggregators$aggregat4 === void 0 ? void 0 : _aggregators$aggregat4.outlet;
550
522
  var actualRendererName = rendererName in renderers ? rendererName : Object.keys(renderers)[0];
551
523
  var sortIcons = {
552
524
  key_a_to_z: {
@@ -575,7 +547,112 @@ var PivotTableUI = function PivotTableUI(props) {
575
547
  moveFilterBoxToTop: moveFilterBoxToTop,
576
548
  removeValuesFromFilter: removeValuesFromFilter
577
549
  };
578
- var rendererCell = /*#__PURE__*/_react["default"].createElement("td", {
550
+ var componentProps = {
551
+ data: state.materializedInput,
552
+ onChange: onChange,
553
+ rows: rows,
554
+ cols: cols,
555
+ vals: vals,
556
+ aggregatorName: aggregatorName,
557
+ aggregators: aggregators,
558
+ rendererName: rendererName,
559
+ renderers: renderers,
560
+ valueFilter: valueFilter,
561
+ sorters: sorters,
562
+ menuLimit: menuLimit,
563
+ unusedOrientationCutoff: unusedOrientationCutoff,
564
+ hiddenAttributes: hiddenAttributes,
565
+ hiddenFromAggregators: hiddenFromAggregators,
566
+ hiddenFromDragDrop: hiddenFromDragDrop,
567
+ pagination: pagination,
568
+ page: page,
569
+ pageSize: pageSize,
570
+ rowOrder: rowOrder,
571
+ colOrder: colOrder,
572
+ derivedAttributes: derivedAttributes
573
+ };
574
+ var renderFooter = function renderFooter() {
575
+ var pivotData = new _Utilities.PivotData(componentProps);
576
+ var totalPivotRows = pivotData.getRowKeys().length;
577
+ var totalRecords = state.materializedInput.length;
578
+ var totalPages = Math.ceil(totalPivotRows / pageSize);
579
+ return /*#__PURE__*/_react["default"].createElement("div", {
580
+ className: "pvtFooter"
581
+ }, /*#__PURE__*/_react["default"].createElement("div", {
582
+ className: "pvtFooterInfo"
583
+ }, "Total registros: ", totalRecords, " | Filas: ", totalPivotRows), /*#__PURE__*/_react["default"].createElement("div", {
584
+ className: "pvtFooterPagination"
585
+ }, /*#__PURE__*/_react["default"].createElement("button", {
586
+ className: "pvtButton",
587
+ disabled: page <= 1,
588
+ onClick: function onClick() {
589
+ return propUpdater('page')(1);
590
+ }
591
+ }, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
592
+ className: "pvtButton",
593
+ disabled: page <= 1,
594
+ onClick: function onClick() {
595
+ return propUpdater('page')(page - 1);
596
+ }
597
+ }, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina ", /*#__PURE__*/_react["default"].createElement("input", {
598
+ type: "number",
599
+ className: "pvtPageInput",
600
+ value: page,
601
+ min: 1,
602
+ max: totalPages,
603
+ onChange: function onChange(e) {
604
+ var val = parseInt(e.target.value, 10);
605
+ if (val > 0 && val <= totalPages) propUpdater('page')(val);
606
+ }
607
+ }), " de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
608
+ className: "pvtButton",
609
+ disabled: page >= totalPages,
610
+ onClick: function onClick() {
611
+ return propUpdater('page')(page + 1);
612
+ }
613
+ }, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
614
+ className: "pvtButton",
615
+ disabled: page >= totalPages,
616
+ onClick: function onClick() {
617
+ return propUpdater('page')(totalPages);
618
+ }
619
+ }, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
620
+ className: "pvtPageSize",
621
+ value: pageSize,
622
+ onChange: function onChange(e) {
623
+ sendPropUpdate({
624
+ pageSize: {
625
+ $set: parseInt(e.target.value, 10)
626
+ },
627
+ page: {
628
+ $set: 1
629
+ }
630
+ });
631
+ }
632
+ }, [10, 20, 50, 100].map(function (n) {
633
+ return /*#__PURE__*/_react["default"].createElement("option", {
634
+ key: n,
635
+ value: n
636
+ }, n, " / p\xE1g");
637
+ }))));
638
+ };
639
+ return /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
640
+ sensors: sensors,
641
+ collisionDetection: _core.closestCorners,
642
+ onDragStart: handleDragStart,
643
+ onDragOver: handleDragOver,
644
+ onDragEnd: handleDragEnd
645
+ }, /*#__PURE__*/_react["default"].createElement("table", {
646
+ className: "pvtUi"
647
+ }, /*#__PURE__*/_react["default"].createElement("tbody", {
648
+ onClick: function onClick() {
649
+ return setState(function (s) {
650
+ return _objectSpread(_objectSpread({}, s), {}, {
651
+ openDropdown: false
652
+ });
653
+ });
654
+ }
655
+ }, horizUnused ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
579
656
  className: "pvtRenderers"
580
657
  }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
581
658
  current: actualRendererName,
@@ -590,8 +667,12 @@ var PivotTableUI = function PivotTableUI(props) {
590
667
  });
591
668
  },
592
669
  setValue: propUpdater('rendererName')
593
- }));
594
- var aggregatorCell = /*#__PURE__*/_react["default"].createElement("td", {
670
+ })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
671
+ id: "unused",
672
+ items: unusedAttrs,
673
+ classes: "pvtAxisContainer pvtUnused pvtHorizList",
674
+ isHorizontal: true
675
+ }, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
595
676
  className: "pvtVals"
596
677
  }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
597
678
  current: aggregatorName,
@@ -644,120 +725,104 @@ var PivotTableUI = function PivotTableUI(props) {
644
725
  }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
645
726
  key: "br".concat(i)
646
727
  }) : null];
647
- }), aggregatorCellOutlet && aggregatorCellOutlet(data));
648
- var unusedAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
649
- id: "unused",
650
- items: unusedAttrs,
651
- classes: "pvtAxisContainer pvtUnused ".concat(horizUnused ? 'pvtHorizList' : 'pvtVertList'),
652
- isHorizontal: horizUnused
653
- }, sharedCellProps));
654
- var colAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
728
+ })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
655
729
  id: "cols",
656
730
  items: colAttrs,
657
731
  classes: "pvtAxisContainer pvtHorizList pvtCols",
658
732
  isHorizontal: true
659
- }, sharedCellProps));
660
- var rowAttrsCell = /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
733
+ }, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
661
734
  id: "rows",
662
735
  items: rowAttrs,
663
736
  classes: "pvtAxisContainer pvtVertList pvtRows",
664
737
  isHorizontal: false
665
- }, sharedCellProps));
666
-
667
- // Footer de paginación
668
- var renderFooter = function renderFooter() {
669
- var pivotData = new _Utilities.PivotData(_objectSpread(_objectSpread({}, props), {}, {
670
- data: state.materializedInput
671
- }));
672
- var totalPivotRows = pivotData.getRowKeys().length;
673
- var totalRecords = state.materializedInput.length;
674
- var totalPages = Math.ceil(totalPivotRows / pageSize);
675
- return /*#__PURE__*/_react["default"].createElement("div", {
676
- className: "pvtFooter"
677
- }, /*#__PURE__*/_react["default"].createElement("div", {
678
- className: "pvtFooterInfo"
679
- }, "Total registros: ", totalRecords, " | Filas: ", totalPivotRows), /*#__PURE__*/_react["default"].createElement("div", {
680
- className: "pvtFooterPagination"
681
- }, /*#__PURE__*/_react["default"].createElement("button", {
682
- className: "pvtButton",
683
- disabled: page <= 1,
684
- onClick: function onClick() {
685
- return propUpdater('page')(1);
686
- }
687
- }, "\xAB"), /*#__PURE__*/_react["default"].createElement("button", {
688
- className: "pvtButton",
689
- disabled: page <= 1,
690
- onClick: function onClick() {
691
- return propUpdater('page')(page - 1);
692
- }
693
- }, "\u2039"), /*#__PURE__*/_react["default"].createElement("span", null, "P\xE1gina", ' ', /*#__PURE__*/_react["default"].createElement("input", {
694
- type: "number",
695
- className: "pvtPageInput",
696
- value: page,
697
- min: 1,
698
- max: totalPages,
699
- onChange: function onChange(e) {
700
- var val = parseInt(e.target.value, 10);
701
- if (val > 0 && val <= totalPages) propUpdater('page')(val);
702
- }
703
- }), ' ', "de ", totalPages), /*#__PURE__*/_react["default"].createElement("button", {
704
- className: "pvtButton",
705
- disabled: page >= totalPages,
706
- onClick: function onClick() {
707
- return propUpdater('page')(page + 1);
708
- }
709
- }, "\u203A"), /*#__PURE__*/_react["default"].createElement("button", {
710
- className: "pvtButton",
711
- disabled: page >= totalPages,
712
- onClick: function onClick() {
713
- return propUpdater('page')(totalPages);
714
- }
715
- }, "\xBB"), /*#__PURE__*/_react["default"].createElement("select", {
716
- className: "pvtPageSize",
717
- value: pageSize,
718
- onChange: function onChange(e) {
719
- var _onChangeRef$current2;
720
- var newSize = parseInt(e.target.value, 10);
721
- (_onChangeRef$current2 = onChangeRef.current) === null || _onChangeRef$current2 === void 0 || _onChangeRef$current2.call(onChangeRef, (0, _immutabilityHelper["default"])(props, {
722
- pageSize: {
723
- $set: newSize
724
- },
725
- page: {
726
- $set: 1
727
- }
728
- }));
729
- }
730
- }, [10, 20, 50, 100].map(function (n) {
731
- return /*#__PURE__*/_react["default"].createElement("option", {
732
- key: n,
733
- value: n
734
- }, n, " / p\xE1g");
735
- }))));
736
- };
737
- var outputCell = /*#__PURE__*/_react["default"].createElement("td", {
738
+ }, sharedCellProps)), /*#__PURE__*/_react["default"].createElement("td", {
738
739
  className: "pvtOutput"
739
- }, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], (0, _immutabilityHelper["default"])(props, {
740
- data: {
741
- $set: state.materializedInput
742
- }
743
- })), pagination && renderFooter());
744
- return /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
745
- sensors: sensors,
746
- collisionDetection: _core.closestCorners,
747
- onDragStart: handleDragStart,
748
- onDragOver: handleDragOver,
749
- onDragEnd: handleDragEnd
750
- }, /*#__PURE__*/_react["default"].createElement("table", {
751
- className: "pvtUi"
752
- }, /*#__PURE__*/_react["default"].createElement("tbody", {
753
- onClick: function onClick() {
740
+ }, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], componentProps), pagination && renderFooter()))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
741
+ className: "pvtRenderers"
742
+ }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
743
+ current: actualRendererName,
744
+ values: Object.keys(renderers),
745
+ open: isOpen('renderer'),
746
+ zIndex: isOpen('renderer') ? state.maxZIndex + 1 : 1,
747
+ toggle: function toggle() {
754
748
  return setState(function (s) {
755
749
  return _objectSpread(_objectSpread({}, s), {}, {
756
- openDropdown: false
750
+ openDropdown: isOpen('renderer') ? false : 'renderer'
757
751
  });
758
752
  });
753
+ },
754
+ setValue: propUpdater('rendererName')
755
+ })), /*#__PURE__*/_react["default"].createElement("td", {
756
+ className: "pvtVals"
757
+ }, /*#__PURE__*/_react["default"].createElement(Dropdown, {
758
+ current: aggregatorName,
759
+ values: Object.keys(aggregators),
760
+ open: isOpen('aggregators'),
761
+ zIndex: isOpen('aggregators') ? state.maxZIndex + 1 : 1,
762
+ toggle: function toggle() {
763
+ return setState(function (s) {
764
+ return _objectSpread(_objectSpread({}, s), {}, {
765
+ openDropdown: isOpen('aggregators') ? false : 'aggregators'
766
+ });
767
+ });
768
+ },
769
+ setValue: propUpdater('aggregatorName')
770
+ }), /*#__PURE__*/_react["default"].createElement("a", {
771
+ role: "button",
772
+ className: "pvtRowOrder",
773
+ onClick: function onClick() {
774
+ return propUpdater('rowOrder')(sortIcons[rowOrder].next);
759
775
  }
760
- }, horizUnused ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, rendererCell, unusedAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, aggregatorCell, colAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, rowAttrsCell, outputCell)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("tr", null, rendererCell, aggregatorCell, colAttrsCell), /*#__PURE__*/_react["default"].createElement("tr", null, unusedAttrsCell, rowAttrsCell, outputCell)))), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, null, activeId ? /*#__PURE__*/_react["default"].createElement("ul", {
776
+ }, sortIcons[rowOrder].rowSymbol), /*#__PURE__*/_react["default"].createElement("a", {
777
+ role: "button",
778
+ className: "pvtColOrder",
779
+ onClick: function onClick() {
780
+ return propUpdater('colOrder')(sortIcons[colOrder].next);
781
+ }
782
+ }, sortIcons[colOrder].colSymbol), numValsAllowed > 0 && /*#__PURE__*/_react["default"].createElement("br", null), new Array(numValsAllowed).fill(null).map(function (_, i) {
783
+ return [/*#__PURE__*/_react["default"].createElement(Dropdown, {
784
+ key: i,
785
+ current: vals[i],
786
+ values: Object.keys(state.attrValues).filter(function (e) {
787
+ return !hiddenAttributes.includes(e) && !hiddenFromAggregators.includes(e);
788
+ }),
789
+ open: isOpen("val".concat(i)),
790
+ zIndex: isOpen("val".concat(i)) ? state.maxZIndex + 1 : 1,
791
+ toggle: function toggle() {
792
+ return setState(function (s) {
793
+ return _objectSpread(_objectSpread({}, s), {}, {
794
+ openDropdown: isOpen("val".concat(i)) ? false : "val".concat(i)
795
+ });
796
+ });
797
+ },
798
+ setValue: function setValue(value) {
799
+ return sendPropUpdate({
800
+ vals: {
801
+ $splice: [[i, 1, value]]
802
+ }
803
+ });
804
+ }
805
+ }), i + 1 !== numValsAllowed ? /*#__PURE__*/_react["default"].createElement("br", {
806
+ key: "br".concat(i)
807
+ }) : null];
808
+ })), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
809
+ id: "cols",
810
+ items: colAttrs,
811
+ classes: "pvtAxisContainer pvtHorizList pvtCols",
812
+ isHorizontal: true
813
+ }, sharedCellProps))), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
814
+ id: "unused",
815
+ items: unusedAttrs,
816
+ classes: "pvtAxisContainer pvtUnused pvtVertList",
817
+ isHorizontal: false
818
+ }, sharedCellProps)), /*#__PURE__*/_react["default"].createElement(DnDCell, _extends({
819
+ id: "rows",
820
+ items: rowAttrs,
821
+ classes: "pvtAxisContainer pvtVertList pvtRows",
822
+ isHorizontal: false
823
+ }, sharedCellProps)), /*#__PURE__*/_react["default"].createElement("td", {
824
+ className: "pvtOutput"
825
+ }, /*#__PURE__*/_react["default"].createElement(_PivotTable["default"], componentProps), pagination && renderFooter()))))), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, null, activeId ? /*#__PURE__*/_react["default"].createElement("ul", {
761
826
  style: {
762
827
  listStyle: 'none',
763
828
  padding: 0,
@@ -767,20 +832,25 @@ var PivotTableUI = function PivotTableUI(props) {
767
832
  className: "pvtAttr"
768
833
  }, activeId))) : null));
769
834
  };
770
- PivotTableUI.propTypes = {
835
+ PivotTableUI.propTypes = Object.assign({}, _Utilities.PivotData.propTypes, {
771
836
  onChange: _propTypes["default"].func.isRequired,
772
837
  hiddenAttributes: _propTypes["default"].arrayOf(_propTypes["default"].string),
773
838
  hiddenFromAggregators: _propTypes["default"].arrayOf(_propTypes["default"].string),
774
839
  hiddenFromDragDrop: _propTypes["default"].arrayOf(_propTypes["default"].string),
775
840
  unusedOrientationCutoff: _propTypes["default"].number,
776
- menuLimit: _propTypes["default"].number
777
- };
778
- PivotTableUI.defaultProps = {
841
+ menuLimit: _propTypes["default"].number,
842
+ rendererName: _propTypes["default"].string,
843
+ renderers: _propTypes["default"].objectOf(_propTypes["default"].func)
844
+ });
845
+ PivotTableUI.defaultProps = Object.assign({}, _Utilities.PivotData.defaultProps, {
846
+ onChange: function onChange() {},
779
847
  hiddenAttributes: [],
780
848
  hiddenFromAggregators: [],
781
849
  hiddenFromDragDrop: [],
782
850
  unusedOrientationCutoff: 85,
783
- menuLimit: 500
784
- };
851
+ menuLimit: 500,
852
+ rendererName: 'Table',
853
+ renderers: _TableRenderers["default"]
854
+ });
785
855
  var _default = exports["default"] = PivotTableUI;
786
856
  //# sourceMappingURL=PivotTableUI.js.map