@canvas-components/react-pivot-table 0.2.16 → 0.2.17

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/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createContext, forwardRef, useMemo, useRef, useState, useEffect, useImperativeHandle, useContext, Fragment as Fragment$1 } from 'react';
2
2
  import { createEmptyPivotFieldLayout, createPivotFieldCatalog, resolvePivotDimensionKey, resolvePivotFieldLayoutOptions, PivotTable, loadPivotFieldLayout, DEFAULT_PIVOT_TABLE_DEBUG_OPTIONS, getValueByDataIndex, resolvePivotDimensionTitle, findPivotFieldArea, removePivotField, movePivotField, resolvePivotValueFieldTitle, savePivotFieldLayout, createPivotCellKey } from '@canvas-components/pivot-table';
3
- import { ReactResizablePanels, ReactFilterPanel, ReactPopup, ReactCheckbox, ReactInput, ReactSelect, ReactInputNumber } from '@canvas-components/react-components';
3
+ import { ReactResizablePanels, ReactFilterPanel, ReactPopup, ReactCheckbox, ReactModal, ReactInput, ReactSelect, ReactInputNumber } from '@canvas-components/react-components';
4
4
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
5
5
  import { createPortal } from 'react-dom';
6
6
  import { CanvasChart } from '@canvas-components/chart';
@@ -690,6 +690,58 @@ function DataFormatMenu(props) {
690
690
  }
691
691
  );
692
692
  }
693
+ function PivotExportNameDialog({
694
+ request
695
+ }) {
696
+ const extension = request.fileName.match(/\.(xlsx|csv)$/i)?.[0] ?? "";
697
+ const [fileName, setFileName] = useState(
698
+ extension ? request.fileName.slice(0, -extension.length) : request.fileName
699
+ );
700
+ const [invalid, setInvalid] = useState(false);
701
+ const confirm = () => {
702
+ if (!fileName.trim()) {
703
+ setInvalid(true);
704
+ return;
705
+ }
706
+ request.onConfirm(`${fileName.trim()}${extension}`);
707
+ };
708
+ return /* @__PURE__ */ jsxs(
709
+ ReactModal,
710
+ {
711
+ open: true,
712
+ title: "\u5BFC\u51FA\u6587\u4EF6",
713
+ width: 420,
714
+ fullscreenable: false,
715
+ onCancel: request.onCancel,
716
+ onOk: confirm,
717
+ okText: "\u5BFC\u51FA",
718
+ cancelText: "\u53D6\u6D88",
719
+ children: [
720
+ /* @__PURE__ */ jsxs("label", { style: { display: "flex", flexDirection: "column", gap: 8 }, children: [
721
+ "\u6587\u4EF6\u540D\u79F0",
722
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
723
+ /* @__PURE__ */ jsx(
724
+ ReactInput,
725
+ {
726
+ autoFocus: true,
727
+ value: fileName,
728
+ placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0",
729
+ onFocus: (event) => event.target.select(),
730
+ onChange: (event) => {
731
+ setFileName(event.target.value);
732
+ setInvalid(false);
733
+ },
734
+ onPressEnter: confirm
735
+ }
736
+ ),
737
+ /* @__PURE__ */ jsx("span", { "aria-label": "\u6587\u4EF6\u540E\u7F00", style: { flexShrink: 0 }, children: extension })
738
+ ] })
739
+ ] }),
740
+ invalid ? /* @__PURE__ */ jsx("div", { role: "alert", style: { color: "#ff4d4f", marginTop: 8 }, children: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0" }) : null
741
+ ]
742
+ }
743
+ );
744
+ }
693
745
  function PivotTooltip(props) {
694
746
  const { request } = props;
695
747
  if (!request) return null;
@@ -1710,6 +1762,7 @@ function ReactPivotTableInner(props, ref) {
1710
1762
  const [densityOverride, setDensityOverride] = useState(null);
1711
1763
  const [filterRequest, setFilterRequest] = useState(null);
1712
1764
  const [contextMenuRequest, setContextMenuRequest] = useState(null);
1765
+ const [exportNameRequest, setExportNameRequest] = useState(null);
1713
1766
  const [tooltipRequest, setTooltipRequest] = useState(null);
1714
1767
  const panelOpen = customizationOptions?.open ?? internalPanelOpen;
1715
1768
  const fieldLayout = customizationOptions?.layout ?? internalLayout;
@@ -1788,6 +1841,9 @@ function ReactPivotTableInner(props, ref) {
1788
1841
  rowHeight: densityOverride == null ? tableOptions.rowHeight : resolveDensityRowHeight(densityOverride),
1789
1842
  indicators: customizedOptions?.indicators ?? overriddenIndicators,
1790
1843
  ui: {
1844
+ onExportNameRequest: (request) => {
1845
+ setExportNameRequest(request);
1846
+ },
1791
1847
  onFilterPanelRequest: setFilterRequest,
1792
1848
  onContextMenuRequest: (request) => {
1793
1849
  if (request) {
@@ -2063,6 +2119,7 @@ function ReactPivotTableInner(props, ref) {
2063
2119
  ),
2064
2120
  /* @__PURE__ */ jsx(ReactFilterPanel, { request: sharedFilterRequest }),
2065
2121
  /* @__PURE__ */ jsx(PivotContextMenu, { request: contextMenuRequest }),
2122
+ exportNameRequest ? /* @__PURE__ */ jsx(PivotExportNameDialog, { request: exportNameRequest }) : null,
2066
2123
  /* @__PURE__ */ jsx(PivotTooltip, { request: tooltipRequest })
2067
2124
  ] });
2068
2125
  }