@platox/pivot-table 0.0.53 → 0.0.54

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.
@@ -9,3 +9,4 @@ interface AddModuleBtnProps {
9
9
  }
10
10
  declare const AddModuleBtn: React.FC<AddModuleBtnProps>;
11
11
  export default AddModuleBtn;
12
+ export declare const AddBtn: () => import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { jsx, Fragment, jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { Popover, Button } from "antd";
3
+ import { Popover } from "antd";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import SvgComponent from "../../icon/icon-chart-combination.js";
6
6
  import IconBar from "../../icon/icon-bar.js";
@@ -10,11 +10,9 @@ import IconLine from "../../icon/icon-line.js";
10
10
  import IconPie from "../../icon/icon-pie.js";
11
11
  import IconStatistics from "../../icon/icon-statistics.js";
12
12
  import IconStripBar from "../../icon/icon-strip-bar.js";
13
- import { useChartTypeOption } from "../add-module-modal/add-chart-modal/config.js";
14
13
  import { ChartType } from "../add-module-modal/add-chart-modal/interface.js";
15
14
  const AddModuleBtn = ({ onOk }) => {
16
15
  const { t } = useTranslation();
17
- useChartTypeOption();
18
16
  const navs = [
19
17
  {
20
18
  title: t("add.add1"),
@@ -96,11 +94,41 @@ const AddModuleBtn = ({ onOk }) => {
96
94
  )) })
97
95
  ] }, key)) }),
98
96
  trigger: "click",
99
- children: /* @__PURE__ */ jsx(Button, { children: t("add.add10") })
97
+ children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(AddBtn, {}) })
100
98
  }
101
99
  ) });
102
100
  };
101
+ const AddBtn = () => {
102
+ return /* @__PURE__ */ jsx(
103
+ "div",
104
+ {
105
+ style: {
106
+ width: "1.5rem",
107
+ height: "1.5rem",
108
+ backgroundColor: "var(--brand)",
109
+ display: "flex",
110
+ alignItems: "center",
111
+ justifyContent: "center",
112
+ borderRadius: "9999px",
113
+ cursor: "pointer"
114
+ },
115
+ children: /* @__PURE__ */ jsx(
116
+ "div",
117
+ {
118
+ style: {
119
+ fontSize: "1.25rem",
120
+ color: "black",
121
+ lineHeight: "1.25rem",
122
+ marginTop: "-2px"
123
+ },
124
+ children: "+"
125
+ }
126
+ )
127
+ }
128
+ );
129
+ };
103
130
  export {
131
+ AddBtn,
104
132
  AddModuleBtn as default
105
133
  };
106
134
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/add-module-btn/index.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Button, Popover } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport IconChartCombination from '@platox/pivot-table/icon/icon-chart-combination'\nimport IconBar from '../../icon/icon-bar'\nimport IconCalendar from '../../icon/icon-calendar'\nimport IconEditor from '../../icon/icon-editor'\nimport IconLine from '../../icon/icon-line'\nimport IconPie from '../../icon/icon-pie'\nimport IconStatistics from '../../icon/icon-statistics'\nimport IconStripBar from '../../icon/icon-strip-bar'\nimport { useChartTypeOption } from '../add-module-modal/add-chart-modal/config'\nimport { ChartType } from '../add-module-modal/add-chart-modal/interface'\n\nexport interface ModuleValueType {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n id?: any\n type?:\n | 'text'\n | 'statistics'\n | 'chart-bar'\n | 'chart-bar-pile'\n | 'chart-bar-percentage'\n | 'chart-line'\n | 'chart-line-smooth'\n | 'chart-strip-bar'\n | 'chart-strip-bar-pile'\n | 'chart-strip-bar-percentage'\n | 'chart-pie'\n | 'chart-pie-circular'\n | 'calendar'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customData?: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customeStyle?: any\n}\n\ninterface AddModuleBtnProps {\n onOk?: (type: ModuleValueType['type']) => void\n}\n\nconst AddModuleBtn: React.FC<AddModuleBtnProps> = ({ onOk }) => {\n const { t } = useTranslation()\n\n const chartTypeOptions = useChartTypeOption()\n\n const navs = [\n {\n title: t('add.add1'),\n child: [\n {\n title: t('add.add2'),\n type: 'chart-bar',\n icon: <IconBar />,\n },\n {\n title: t('add.add3'),\n type: 'chart-line',\n icon: <IconLine />,\n },\n {\n title: t('add.add4'),\n type: 'chart-pie',\n icon: <IconPie />,\n },\n {\n title: t('add.add5'),\n type: 'chart-strip-bar',\n icon: <IconStripBar />,\n },\n {\n title: t('add._add5'),\n type: ChartType['chartCombination'],\n icon: <IconChartCombination />,\n },\n ],\n },\n {\n title: t('add.add6'),\n child: [\n {\n title: t('add.add7'),\n type: 'statistics',\n icon: <IconStatistics />,\n },\n {\n title: t('add.add8'),\n type: 'text',\n icon: <IconEditor />,\n },\n {\n title: t('add.add9'),\n type: 'calendar',\n icon: <IconCalendar />,\n },\n ],\n },\n ]\n\n const [open, setOpen] = useState(false)\n const onAdd = (value: ModuleValueType['type']) => {\n setOpen(false)\n onOk?.(value)\n }\n\n return (\n <>\n <Popover\n placement=\"bottomRight\"\n open={open}\n onOpenChange={setOpen}\n content={\n <div className=\"pivot-table-modal box-widget-popover-item-container\">\n {navs.map((item, key) => (\n <div key={key} className=\"box-widget-popover-item-group\">\n <p className=\"box-widget-popover-item-group-header\">{item.title}</p>\n <div className=\"box-widget-popover-item-group-content\">\n {item.child.map((child, childKey) => (\n <div\n key={childKey}\n onClick={() => {\n onAdd(child.type as ModuleValueType['type'])\n }}\n className=\"box-widget-popover-item\"\n >\n <div className=\"img\">{child.icon}</div>\n <div className=\"title\">{child.title}</div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n }\n trigger=\"click\"\n >\n <Button>{t('add.add10')}</Button>\n </Popover>\n </>\n )\n}\n\nexport default AddModuleBtn\n"],"names":["IconChartCombination"],"mappings":";;;;;;;;;;;;;;AAyCA,MAAM,eAA4C,CAAC,EAAE,WAAW;AACxD,QAAA,EAAE,EAAE,IAAI,eAAe;AAEJ,qBAAmB;AAE5C,QAAM,OAAO;AAAA,IACX;AAAA,MACE,OAAO,EAAE,UAAU;AAAA,MACnB,OAAO;AAAA,QACL;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,SAAQ,CAAA,CAAA;AAAA,QACjB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,UAAS,CAAA,CAAA;AAAA,QAClB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,SAAQ,CAAA,CAAA;AAAA,QACjB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,cAAa,CAAA,CAAA;AAAA,QACtB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,WAAW;AAAA,UACpB,MAAM,UAAU,kBAAkB;AAAA,UAClC,0BAAOA,cAAqB,CAAA,CAAA;AAAA,QAAA;AAAA,MAC9B;AAAA,IAEJ;AAAA,IACA;AAAA,MACE,OAAO,EAAE,UAAU;AAAA,MACnB,OAAO;AAAA,QACL;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,gBAAe,CAAA,CAAA;AAAA,QACxB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,YAAW,CAAA,CAAA;AAAA,QACpB;AAAA,QACA;AAAA,UACE,OAAO,EAAE,UAAU;AAAA,UACnB,MAAM;AAAA,UACN,0BAAO,cAAa,CAAA,CAAA;AAAA,QAAA;AAAA,MACtB;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAChC,QAAA,QAAQ,CAAC,UAAmC;AAChD,YAAQ,KAAK;AACb,iCAAO;AAAA,EACT;AAEA,SAEI,oBAAA,UAAA,EAAA,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,cAAc;AAAA,MACd,SACE,oBAAC,OAAI,EAAA,WAAU,uDACZ,UAAA,KAAK,IAAI,CAAC,MAAM,QACd,qBAAA,OAAA,EAAc,WAAU,iCACvB,UAAA;AAAA,QAAA,oBAAC,KAAE,EAAA,WAAU,wCAAwC,UAAA,KAAK,OAAM;AAAA,QAChE,oBAAC,SAAI,WAAU,yCACZ,eAAK,MAAM,IAAI,CAAC,OAAO,aACtB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM;AACb,oBAAM,MAAM,IAA+B;AAAA,YAC7C;AAAA,YACA,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,oBAAC,OAAI,EAAA,WAAU,OAAO,UAAA,MAAM,MAAK;AAAA,cAChC,oBAAA,OAAA,EAAI,WAAU,SAAS,gBAAM,MAAM,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAP/B;AAAA,QAAA,CASR,EACH,CAAA;AAAA,MAAA,KAfQ,GAgBV,CACD,GACH;AAAA,MAEF,SAAQ;AAAA,MAER,UAAC,oBAAA,QAAA,EAAQ,UAAE,EAAA,WAAW,EAAE,CAAA;AAAA,IAAA;AAAA,EAAA,GAE5B;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/add-module-btn/index.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Button, Popover } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport IconChartCombination from '@platox/pivot-table/icon/icon-chart-combination'\nimport IconBar from '../../icon/icon-bar'\nimport IconCalendar from '../../icon/icon-calendar'\nimport IconEditor from '../../icon/icon-editor'\nimport IconLine from '../../icon/icon-line'\nimport IconPie from '../../icon/icon-pie'\nimport IconStatistics from '../../icon/icon-statistics'\nimport IconStripBar from '../../icon/icon-strip-bar'\nimport { useChartTypeOption } from '../add-module-modal/add-chart-modal/config'\nimport { ChartType } from '../add-module-modal/add-chart-modal/interface'\n\nexport interface ModuleValueType {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n id?: any\n type?:\n | 'text'\n | 'statistics'\n | 'chart-bar'\n | 'chart-bar-pile'\n | 'chart-bar-percentage'\n | 'chart-line'\n | 'chart-line-smooth'\n | 'chart-strip-bar'\n | 'chart-strip-bar-pile'\n | 'chart-strip-bar-percentage'\n | 'chart-pie'\n | 'chart-pie-circular'\n | 'calendar'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customData?: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customeStyle?: any\n}\n\ninterface AddModuleBtnProps {\n onOk?: (type: ModuleValueType['type']) => void\n}\n\nconst AddModuleBtn: React.FC<AddModuleBtnProps> = ({ onOk }) => {\n const { t } = useTranslation()\n\n const navs = [\n {\n title: t('add.add1'),\n child: [\n {\n title: t('add.add2'),\n type: 'chart-bar',\n icon: <IconBar />,\n },\n {\n title: t('add.add3'),\n type: 'chart-line',\n icon: <IconLine />,\n },\n {\n title: t('add.add4'),\n type: 'chart-pie',\n icon: <IconPie />,\n },\n {\n title: t('add.add5'),\n type: 'chart-strip-bar',\n icon: <IconStripBar />,\n },\n {\n title: t('add._add5'),\n type: ChartType['chartCombination'],\n icon: <IconChartCombination />,\n },\n ],\n },\n {\n title: t('add.add6'),\n child: [\n {\n title: t('add.add7'),\n type: 'statistics',\n icon: <IconStatistics />,\n },\n {\n title: t('add.add8'),\n type: 'text',\n icon: <IconEditor />,\n },\n {\n title: t('add.add9'),\n type: 'calendar',\n icon: <IconCalendar />,\n },\n ],\n },\n ]\n\n const [open, setOpen] = useState(false)\n const onAdd = (value: ModuleValueType['type']) => {\n setOpen(false)\n onOk?.(value)\n }\n\n return (\n <>\n <Popover\n placement=\"bottomRight\"\n open={open}\n onOpenChange={setOpen}\n content={\n <div className=\"pivot-table-modal box-widget-popover-item-container\">\n {navs.map((item, key) => (\n <div key={key} className=\"box-widget-popover-item-group\">\n <p className=\"box-widget-popover-item-group-header\">{item.title}</p>\n <div className=\"box-widget-popover-item-group-content\">\n {item.child.map((child, childKey) => (\n <div\n key={childKey}\n onClick={() => {\n onAdd(child.type as ModuleValueType['type'])\n }}\n className=\"box-widget-popover-item\"\n >\n <div className=\"img\">{child.icon}</div>\n <div className=\"title\">{child.title}</div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n }\n trigger=\"click\"\n >\n <span>\n <AddBtn />\n </span>\n </Popover>\n </>\n )\n}\n\nexport default AddModuleBtn\n\n/* ============================== split =============================== */\n\nexport const AddBtn = () => {\n return (\n <div\n style={{\n width: '1.5rem',\n height: '1.5rem',\n backgroundColor: 'var(--brand)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '9999px',\n cursor: 'pointer',\n }}\n >\n <div\n style={{\n fontSize: '1.25rem',\n color: 'black',\n lineHeight: '1.25rem',\n marginTop: '-2px',\n }}\n >\n +\n </div>\n </div>\n )\n}\n"],"names":["IconChartCombination"],"mappings":"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"}
@@ -2,11 +2,12 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState, useMemo, useEffect } from "react";
3
3
  import clsx from "clsx";
4
4
  import { Popover, Button, Select } from "antd";
5
- import { FilterOutlined, PlusOutlined } from "@ant-design/icons";
5
+ import { PlusOutlined } from "@ant-design/icons";
6
6
  import { useTranslation } from "react-i18next";
7
7
  import { useMemoizedFn } from "ahooks";
8
8
  import { cloneDeep, isEqual } from "lodash-es";
9
9
  import { useAppContext } from "../../context.js";
10
+ import SvgComponent from "../../icon/icon-Filter.js";
10
11
  import { useConditionTypeOptions } from "../add-module-modal/components/condition-modal/config.js";
11
12
  import { ConditionRowItem } from "./ConditionRowItem.js";
12
13
  import styles from "./index.module.less.js";
@@ -74,11 +75,15 @@ const GlobalFilterCondition = (props) => {
74
75
  trigger: "click",
75
76
  open,
76
77
  onOpenChange: setOpen,
77
- children: /* @__PURE__ */ jsxs(Button, { children: [
78
- /* @__PURE__ */ jsx(FilterOutlined, {}),
79
- t("globalfilter"),
80
- ((globalFilterCondition == null ? void 0 : globalFilterCondition.length) ?? 0) > 0 ? `(${globalFilterCondition == null ? void 0 : globalFilterCondition.length})` : ""
81
- ] })
78
+ children: /* @__PURE__ */ jsx(
79
+ Button,
80
+ {
81
+ className: `!px-1 ${((globalFilterCondition == null ? void 0 : globalFilterCondition.length) ?? 0) > 0 ? "!bg-primary/10" : ""}`,
82
+ type: "text",
83
+ icon: /* @__PURE__ */ jsx(SvgComponent, {}),
84
+ children: t("globalfilter")
85
+ }
86
+ )
82
87
  }
83
88
  ) })
84
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/global-filter-condition/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react'\nimport clsx from 'clsx'\nimport { Button, MenuProps, Popover, Select, Space } from 'antd'\nimport { FilterOutlined, PlusOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\nimport { useMemoizedFn } from 'ahooks'\nimport { cloneDeep, isEqual } from 'lodash-es'\nimport { useAppContext } from '@platox/pivot-table/context'\nimport { useConditionTypeOptions } from '../add-module-modal/components/condition-modal/config'\nimport ConditionRowItem from './ConditionRowItem'\nimport { FieldPickerDataSourceItem } from './FieldPicker'\nimport styles from './index.module.less'\nimport { ConditionBlockWrapper, ConditionListItemWrapper } from './interface'\nimport { Context, ContextProps, useContext } from './useContext'\nimport { getMergeId } from './util'\n\nconst componentName = 'global-filter-condition'\n\nconst Empty: unknown[] = []\n\n/* ============================== split =============================== */\n\nexport interface GlobalFilterConditionProps {\n className?: string\n style?: React.CSSProperties\n}\nexport const GlobalFilterCondition: React.FC<GlobalFilterConditionProps> = props => {\n const { className, style } = props\n\n const { t } = useTranslation()\n\n const { globalFilterCondition, setGlobalFilterCondition } = useAppContext()\n\n const [open, setOpen] = useState<boolean>(false)\n\n /* ============================== 整理数据 =============================== */\n const { globalData } = useAppContext()\n const { fieldPickerDataSource, flattenFieldMap } = useMemo(() => {\n let flattenFieldMap: ContextProps['flattenFieldMap'] = new Map()\n\n let fieldPickerDataSource = (globalData?.sourceData || []).map(item => {\n let children = (item?.fields || []).map(v => {\n let mergeId = getMergeId(item?.value, v?.value)\n\n // 记录mergeId对应的field和source\n flattenFieldMap.set(mergeId, {\n field: v,\n source: item,\n mergeId: mergeId,\n })\n\n return {\n key: mergeId,\n label: v?.label,\n }\n })\n\n return {\n key: item?.value,\n label: item?.label,\n children,\n popupClassName: styles['sub-popup'],\n }\n })\n\n return {\n fieldPickerDataSource: fieldPickerDataSource as unknown as FieldPickerDataSourceItem[],\n flattenFieldMap,\n }\n }, [globalData?.sourceData])\n\n return (\n <Context.Provider\n value={{\n fieldPickerDataSource: fieldPickerDataSource,\n flattenFieldMap: flattenFieldMap,\n }}\n >\n <div className={clsx(styles[`${componentName}`], className)} style={style}>\n <Popover\n content={\n <PopoverContent\n defaultValue={globalFilterCondition}\n onClose={(isOk, data) => {\n if (isOk) {\n setGlobalFilterCondition(data!)\n }\n setOpen(false)\n }}\n />\n }\n destroyTooltipOnHide\n placement=\"bottomRight\"\n trigger=\"click\"\n open={open}\n onOpenChange={setOpen}\n >\n <Button>\n <FilterOutlined />\n {t('globalfilter')}\n {(globalFilterCondition?.length ?? 0) > 0 ? `(${globalFilterCondition?.length})` : ''}\n </Button>\n </Popover>\n </div>\n </Context.Provider>\n )\n}\n\nGlobalFilterCondition.displayName = 'GlobalFilterCondition'\n\nexport default GlobalFilterCondition\n\n/* ============================== split =============================== */\n\nexport type PopoverContentProps = {\n defaultValue?: ConditionBlockWrapper[]\n onClose?: (isOk: boolean, data?: ConditionBlockWrapper[]) => void\n}\n\nexport const PopoverContent = (props: PopoverContentProps) => {\n const { defaultValue } = props\n\n const { t } = useTranslation()\n const fieldPickerDataSource = useContext().fieldPickerDataSource\n const conditionTypeOptions = useConditionTypeOptions()\n\n /* ============================== split =============================== */\n const [value = Empty as ConditionBlockWrapper[], setValue] = useState<ConditionBlockWrapper[]>([])\n\n useEffect(() => {\n if (defaultValue) {\n setValue(cloneDeep(defaultValue))\n }\n }, [defaultValue])\n\n /* ============================== 这是empty =============================== */\n const [emptyBlockList, setEmptyBlockList] = useState<ConditionListItemWrapper[]>([])\n\n const handleEmptyBlockListChange = (newItem: ConditionListItemWrapper) => {\n if (newItem?.field) {\n setValue(prev => {\n let ret = [...prev]\n let match = ret.find(item => item.dataSourceId === newItem.dataSourceId)\n if (match) {\n match.conditionList.push(newItem)\n return [...ret]\n } else {\n //  创建一个\n let newConditionBlockWrapper = {\n dataSourceId: newItem.dataSourceId,\n conditionType: 'all',\n conditionList: [newItem],\n } as ConditionBlockWrapper\n return [...ret, newConditionBlockWrapper]\n }\n })\n }\n }\n\n const handleAddEmptyBlock = () => {\n setEmptyBlockList([...emptyBlockList, {}])\n }\n\n /* ============================== split =============================== */\n const hasChange = useMemo(() => {\n return !isEqual(value, defaultValue)\n }, [value, defaultValue])\n\n const handleSubmit = useMemoizedFn(() => {\n props?.onClose?.(true, value)\n })\n\n return (\n <div className={clsx(styles[`${componentName}__popover`])}>\n <div\n style={{\n marginBottom: '10px',\n }}\n >\n {t('setFilterCondition')}\n </div>\n\n {value.map((item, index) => {\n let conditionList = item?.conditionList\n let dataSourceName = fieldPickerDataSource?.find(v => v.key === item?.dataSourceId)?.label\n\n return (\n <div className={clsx(styles[`${componentName}__block`])} key={item?.dataSourceId}>\n <div\n style={{\n marginBottom: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <div>{dataSourceName}</div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {t('conformTo')}\n <Select\n style={{ width: '80px' }}\n options={conditionTypeOptions}\n value={item?.conditionType}\n onChange={v => {\n setValue(prev => {\n let ret = [...prev]\n ret[index].conditionType = v\n return ret\n })\n }}\n />\n {t('addCondition')}\n </div>\n </div>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '10px',\n }}\n >\n {conditionList.map((v, conditionIndex) => {\n return (\n <ConditionRowItem\n key={conditionIndex}\n value={v}\n onChange={newValue => {\n setValue(prev => {\n let ret = [...prev]\n let prevItem = ret[index].conditionList[conditionIndex]\n if (prevItem?.dataSourceId !== newValue?.dataSourceId) {\n // 数据源变化了 删除原来的\n ret[index].conditionList.splice(conditionIndex, 1)\n if (ret[index].conditionList.length === 0) {\n ret.splice(index, 1)\n }\n // 添加到新的数据源添\n let newItem = newValue\n let match = ret.find(item => item.dataSourceId === newItem.dataSourceId)\n if (match) {\n match.conditionList.push(newItem)\n return [...ret]\n } else {\n let newConditionBlockWrapper = {\n dataSourceId: newItem.dataSourceId,\n conditionType: 'all',\n conditionList: [newItem],\n } as ConditionBlockWrapper\n return [...ret, newConditionBlockWrapper]\n }\n } else {\n ret[index].conditionList[conditionIndex] = {\n ...prevItem,\n ...newValue,\n }\n }\n\n return ret\n })\n }}\n onDelete={() => {\n setValue(prev => {\n let ret = [...prev]\n ret[index].conditionList.splice(conditionIndex, 1)\n\n if (ret[index].conditionList.length === 0) {\n ret.splice(index, 1)\n }\n return ret\n })\n }}\n />\n )\n })}\n </div>\n </div>\n )\n })}\n\n {emptyBlockList.map((item, index) => {\n return (\n <div className={clsx(styles[`${componentName}__block`])} key={index}>\n <ConditionRowItem\n value={item}\n onChange={newValue => {\n handleEmptyBlockListChange(newValue)\n }}\n onDelete={() => {\n setEmptyBlockList(prev => {\n let ret = [...prev]\n ret.splice(index, 1)\n return ret\n })\n }}\n />\n </div>\n )\n })}\n\n <Button\n type=\"dashed\"\n block\n style={{\n marginBottom: '10px',\n }}\n icon={<PlusOutlined />}\n onClick={() => {\n handleAddEmptyBlock()\n }}\n >\n {t('addCondition')}\n </Button>\n\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <Button\n type=\"primary\"\n disabled={!hasChange}\n onClick={() => {\n handleSubmit()\n }}\n >\n {t('confirm')}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["flattenFieldMap","fieldPickerDataSource","item"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,gBAAgB;AAEtB,MAAM,QAAmB,CAAC;AAQnB,MAAM,wBAA8D,CAAS,UAAA;AAC5E,QAAA,EAAE,WAAW,MAAA,IAAU;AAEvB,QAAA,EAAE,EAAE,IAAI,eAAe;AAE7B,QAAM,EAAE,uBAAuB,yBAAyB,IAAI,cAAc;AAE1E,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAGzC,QAAA,EAAE,WAAW,IAAI,cAAc;AACrC,QAAM,EAAE,uBAAuB,gBAAgB,IAAI,QAAQ,MAAM;AAC3DA,QAAAA,uCAAuD,IAAI;AAE/D,QAAIC,2BAAyB,yCAAY,eAAc,CAAA,GAAI,IAAI,CAAQ,SAAA;AACrE,UAAI,aAAY,6BAAM,WAAU,CAAA,GAAI,IAAI,CAAK,MAAA;AAC3C,YAAI,UAAU,WAAW,6BAAM,OAAO,uBAAG,KAAK;AAG9CD,yBAAgB,IAAI,SAAS;AAAA,UAC3B,OAAO;AAAA,UACP,QAAQ;AAAA,UACR;AAAA,QAAA,CACD;AAEM,eAAA;AAAA,UACL,KAAK;AAAA,UACL,OAAO,uBAAG;AAAA,QACZ;AAAA,MAAA,CACD;AAEM,aAAA;AAAA,QACL,KAAK,6BAAM;AAAA,QACX,OAAO,6BAAM;AAAA,QACb;AAAA,QACA,gBAAgB,OAAO,WAAW;AAAA,MACpC;AAAA,IAAA,CACD;AAEM,WAAA;AAAA,MACL,uBAAuBC;AAAAA,MACvB,iBAAAD;AAAAA,IACF;AAAA,EAAA,GACC,CAAC,yCAAY,UAAU,CAAC;AAGzB,SAAA;AAAA,IAAC,QAAQ;AAAA,IAAR;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MAEA,UAAA,oBAAC,OAAI,EAAA,WAAW,KAAK,OAAO,GAAG,aAAa,EAAE,GAAG,SAAS,GAAG,OAC3D,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,cAAc;AAAA,cACd,SAAS,CAAC,MAAM,SAAS;AACvB,oBAAI,MAAM;AACR,2CAAyB,IAAK;AAAA,gBAAA;AAEhC,wBAAQ,KAAK;AAAA,cAAA;AAAA,YACf;AAAA,UACF;AAAA,UAEF,sBAAoB;AAAA,UACpB,WAAU;AAAA,UACV,SAAQ;AAAA,UACR;AAAA,UACA,cAAc;AAAA,UAEd,+BAAC,QACC,EAAA,UAAA;AAAA,YAAA,oBAAC,gBAAe,EAAA;AAAA,YACf,EAAE,cAAc;AAAA,cACf,+DAAuB,WAAU,KAAK,IAAI,IAAI,+DAAuB,MAAM,MAAM;AAAA,UAAA,EACrF,CAAA;AAAA,QAAA;AAAA,MAAA,EAEJ,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;AAEA,sBAAsB,cAAc;AAWvB,MAAA,iBAAiB,CAAC,UAA+B;AACtD,QAAA,EAAE,iBAAiB;AAEnB,QAAA,EAAE,EAAE,IAAI,eAAe;AACvB,QAAA,wBAAwB,aAAa;AAC3C,QAAM,uBAAuB,wBAAwB;AAGrD,QAAM,CAAC,QAAQ,OAAkC,QAAQ,IAAI,SAAkC,CAAA,CAAE;AAEjG,YAAU,MAAM;AACd,QAAI,cAAc;AACP,eAAA,UAAU,YAAY,CAAC;AAAA,IAAA;AAAA,EAClC,GACC,CAAC,YAAY,CAAC;AAGjB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAqC,CAAA,CAAE;AAE7E,QAAA,6BAA6B,CAAC,YAAsC;AACxE,QAAI,mCAAS,OAAO;AAClB,eAAS,CAAQ,SAAA;AACX,YAAA,MAAM,CAAC,GAAG,IAAI;AAClB,YAAI,QAAQ,IAAI,KAAK,UAAQ,KAAK,iBAAiB,QAAQ,YAAY;AACvE,YAAI,OAAO;AACH,gBAAA,cAAc,KAAK,OAAO;AACzB,iBAAA,CAAC,GAAG,GAAG;AAAA,QAAA,OACT;AAEL,cAAI,2BAA2B;AAAA,YAC7B,cAAc,QAAQ;AAAA,YACtB,eAAe;AAAA,YACf,eAAe,CAAC,OAAO;AAAA,UACzB;AACO,iBAAA,CAAC,GAAG,KAAK,wBAAwB;AAAA,QAAA;AAAA,MAC1C,CACD;AAAA,IAAA;AAAA,EAEL;AAEA,QAAM,sBAAsB,MAAM;AAChC,sBAAkB,CAAC,GAAG,gBAAgB,CAAA,CAAE,CAAC;AAAA,EAC3C;AAGM,QAAA,YAAY,QAAQ,MAAM;AACvB,WAAA,CAAC,QAAQ,OAAO,YAAY;AAAA,EAAA,GAClC,CAAC,OAAO,YAAY,CAAC;AAElB,QAAA,eAAe,cAAc,MAAM;;AAChC,yCAAA,YAAA,+BAAU,MAAM;AAAA,EAAK,CAC7B;AAGC,SAAA,qBAAC,SAAI,WAAW,KAAK,OAAO,GAAG,aAAa,WAAW,CAAC,GACtD,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,cAAc;AAAA,QAChB;AAAA,QAEC,YAAE,oBAAoB;AAAA,MAAA;AAAA,IACzB;AAAA,IAEC,MAAM,IAAI,CAAC,MAAM,UAAU;;AAC1B,UAAI,gBAAgB,6BAAM;AACtB,UAAA,kBAAiB,oEAAuB,KAAK,CAAA,MAAK,EAAE,SAAQ,6BAAM,mBAAjD,mBAAgE;AAGnF,aAAA,qBAAC,SAAI,WAAW,KAAK,OAAO,GAAG,aAAa,SAAS,CAAC,GACpD,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,cAAc;AAAA,cACd,SAAS;AAAA,cACT,gBAAgB;AAAA,YAClB;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,SAAK,UAAe,eAAA,CAAA;AAAA,cACrB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,KAAK;AAAA,kBACP;AAAA,kBAEC,UAAA;AAAA,oBAAA,EAAE,WAAW;AAAA,oBACd;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,OAAO,EAAE,OAAO,OAAO;AAAA,wBACvB,SAAS;AAAA,wBACT,OAAO,6BAAM;AAAA,wBACb,UAAU,CAAK,MAAA;AACb,mCAAS,CAAQ,SAAA;AACX,gCAAA,MAAM,CAAC,GAAG,IAAI;AACd,gCAAA,KAAK,EAAE,gBAAgB;AACpB,mCAAA;AAAA,0BAAA,CACR;AAAA,wBAAA;AAAA,sBACH;AAAA,oBACF;AAAA,oBACC,EAAE,cAAc;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACnB;AAAA,UAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAK;AAAA,YACP;AAAA,YAEC,UAAc,cAAA,IAAI,CAAC,GAAG,mBAAmB;AAEtC,qBAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,OAAO;AAAA,kBACP,UAAU,CAAY,aAAA;AACpB,6BAAS,CAAQ,SAAA;AACX,0BAAA,MAAM,CAAC,GAAG,IAAI;AAClB,0BAAI,WAAW,IAAI,KAAK,EAAE,cAAc,cAAc;AAClD,2BAAA,qCAAU,mBAAiB,qCAAU,eAAc;AAErD,4BAAI,KAAK,EAAE,cAAc,OAAO,gBAAgB,CAAC;AACjD,4BAAI,IAAI,KAAK,EAAE,cAAc,WAAW,GAAG;AACrC,8BAAA,OAAO,OAAO,CAAC;AAAA,wBAAA;AAGrB,4BAAI,UAAU;AACV,4BAAA,QAAQ,IAAI,KAAK,CAAAE,UAAQA,MAAK,iBAAiB,QAAQ,YAAY;AACvE,4BAAI,OAAO;AACH,gCAAA,cAAc,KAAK,OAAO;AACzB,iCAAA,CAAC,GAAG,GAAG;AAAA,wBAAA,OACT;AACL,8BAAI,2BAA2B;AAAA,4BAC7B,cAAc,QAAQ;AAAA,4BACtB,eAAe;AAAA,4BACf,eAAe,CAAC,OAAO;AAAA,0BACzB;AACO,iCAAA,CAAC,GAAG,KAAK,wBAAwB;AAAA,wBAAA;AAAA,sBAC1C,OACK;AACL,4BAAI,KAAK,EAAE,cAAc,cAAc,IAAI;AAAA,0BACzC,GAAG;AAAA,0BACH,GAAG;AAAA,wBACL;AAAA,sBAAA;AAGK,6BAAA;AAAA,oBAAA,CACR;AAAA,kBACH;AAAA,kBACA,UAAU,MAAM;AACd,6BAAS,CAAQ,SAAA;AACX,0BAAA,MAAM,CAAC,GAAG,IAAI;AAClB,0BAAI,KAAK,EAAE,cAAc,OAAO,gBAAgB,CAAC;AAEjD,0BAAI,IAAI,KAAK,EAAE,cAAc,WAAW,GAAG;AACrC,4BAAA,OAAO,OAAO,CAAC;AAAA,sBAAA;AAEd,6BAAA;AAAA,oBAAA,CACR;AAAA,kBAAA;AAAA,gBACH;AAAA,gBA9CK;AAAA,cA+CP;AAAA,YAEH,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,GA5F4D,6BAAM,YA6FpE;AAAA,IAAA,CAEH;AAAA,IAEA,eAAe,IAAI,CAAC,MAAM,UAAU;AAEjC,aAAA,oBAAC,SAAI,WAAW,KAAK,OAAO,GAAG,aAAa,SAAS,CAAC,GACpD,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,UACP,UAAU,CAAY,aAAA;AACpB,uCAA2B,QAAQ;AAAA,UACrC;AAAA,UACA,UAAU,MAAM;AACd,8BAAkB,CAAQ,SAAA;AACpB,kBAAA,MAAM,CAAC,GAAG,IAAI;AACd,kBAAA,OAAO,OAAO,CAAC;AACZ,qBAAA;AAAA,YAAA,CACR;AAAA,UAAA;AAAA,QACH;AAAA,WAZ0D,KAc9D;AAAA,IAAA,CAEH;AAAA,IAED;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAK;AAAA,QACL,OAAO;AAAA,UACL,cAAc;AAAA,QAChB;AAAA,QACA,0BAAO,cAAa,EAAA;AAAA,QACpB,SAAS,MAAM;AACO,8BAAA;AAAA,QACtB;AAAA,QAEC,YAAE,cAAc;AAAA,MAAA;AAAA,IACnB;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,gBAAgB;AAAA,QAClB;AAAA,QAEA,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,UAAU,CAAC;AAAA,YACX,SAAS,MAAM;AACA,2BAAA;AAAA,YACf;AAAA,YAEC,YAAE,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MACd;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/global-filter-condition/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react'\nimport clsx from 'clsx'\nimport { Button, Popover, Select } from 'antd'\nimport { PlusOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\nimport { useMemoizedFn } from 'ahooks'\nimport { cloneDeep, isEqual } from 'lodash-es'\nimport { useAppContext } from '@platox/pivot-table/context'\nimport IconFilter from '@platox/pivot-table/icon/icon-Filter'\nimport { useConditionTypeOptions } from '../add-module-modal/components/condition-modal/config'\nimport ConditionRowItem from './ConditionRowItem'\nimport { FieldPickerDataSourceItem } from './FieldPicker'\nimport styles from './index.module.less'\nimport { ConditionBlockWrapper, ConditionListItemWrapper } from './interface'\nimport { Context, ContextProps, useContext } from './useContext'\nimport { getMergeId } from './util'\n\nconst componentName = 'global-filter-condition'\n\nconst Empty: unknown[] = []\n\n/* ============================== split =============================== */\n\nexport interface GlobalFilterConditionProps {\n className?: string\n style?: React.CSSProperties\n}\nexport const GlobalFilterCondition: React.FC<GlobalFilterConditionProps> = props => {\n const { className, style } = props\n\n const { t } = useTranslation()\n\n const { globalFilterCondition, setGlobalFilterCondition } = useAppContext()\n\n const [open, setOpen] = useState<boolean>(false)\n\n /* ============================== 整理数据 =============================== */\n const { globalData } = useAppContext()\n const { fieldPickerDataSource, flattenFieldMap } = useMemo(() => {\n let flattenFieldMap: ContextProps['flattenFieldMap'] = new Map()\n\n let fieldPickerDataSource = (globalData?.sourceData || []).map(item => {\n let children = (item?.fields || []).map(v => {\n let mergeId = getMergeId(item?.value, v?.value)\n\n // 记录mergeId对应的field和source\n flattenFieldMap.set(mergeId, {\n field: v,\n source: item,\n mergeId: mergeId,\n })\n\n return {\n key: mergeId,\n label: v?.label,\n }\n })\n\n return {\n key: item?.value,\n label: item?.label,\n children,\n popupClassName: styles['sub-popup'],\n }\n })\n\n return {\n fieldPickerDataSource: fieldPickerDataSource as unknown as FieldPickerDataSourceItem[],\n flattenFieldMap,\n }\n }, [globalData?.sourceData])\n\n return (\n <Context.Provider\n value={{\n fieldPickerDataSource: fieldPickerDataSource,\n flattenFieldMap: flattenFieldMap,\n }}\n >\n <div className={clsx(styles[`${componentName}`], className)} style={style}>\n <Popover\n content={\n <PopoverContent\n defaultValue={globalFilterCondition}\n onClose={(isOk, data) => {\n if (isOk) {\n setGlobalFilterCondition(data!)\n }\n setOpen(false)\n }}\n />\n }\n destroyTooltipOnHide\n placement=\"bottomRight\"\n trigger=\"click\"\n open={open}\n onOpenChange={setOpen}\n >\n <Button\n className={`!px-1 ${(globalFilterCondition?.length ?? 0) > 0 ? '!bg-primary/10' : ''}`}\n type=\"text\"\n icon={<IconFilter />}\n >\n {t('globalfilter')}\n {/* {t('common.filter')} */}\n </Button>\n </Popover>\n </div>\n </Context.Provider>\n )\n}\n\nGlobalFilterCondition.displayName = 'GlobalFilterCondition'\n\nexport default GlobalFilterCondition\n\n/* ============================== split =============================== */\n\nexport type PopoverContentProps = {\n defaultValue?: ConditionBlockWrapper[]\n onClose?: (isOk: boolean, data?: ConditionBlockWrapper[]) => void\n}\n\nexport const PopoverContent = (props: PopoverContentProps) => {\n const { defaultValue } = props\n\n const { t } = useTranslation()\n const fieldPickerDataSource = useContext().fieldPickerDataSource\n const conditionTypeOptions = useConditionTypeOptions()\n\n /* ============================== split =============================== */\n const [value = Empty as ConditionBlockWrapper[], setValue] = useState<ConditionBlockWrapper[]>([])\n\n useEffect(() => {\n if (defaultValue) {\n setValue(cloneDeep(defaultValue))\n }\n }, [defaultValue])\n\n /* ============================== 这是empty =============================== */\n const [emptyBlockList, setEmptyBlockList] = useState<ConditionListItemWrapper[]>([])\n\n const handleEmptyBlockListChange = (newItem: ConditionListItemWrapper) => {\n if (newItem?.field) {\n setValue(prev => {\n let ret = [...prev]\n let match = ret.find(item => item.dataSourceId === newItem.dataSourceId)\n if (match) {\n match.conditionList.push(newItem)\n return [...ret]\n } else {\n //  创建一个\n let newConditionBlockWrapper = {\n dataSourceId: newItem.dataSourceId,\n conditionType: 'all',\n conditionList: [newItem],\n } as ConditionBlockWrapper\n return [...ret, newConditionBlockWrapper]\n }\n })\n }\n }\n\n const handleAddEmptyBlock = () => {\n setEmptyBlockList([...emptyBlockList, {}])\n }\n\n /* ============================== split =============================== */\n const hasChange = useMemo(() => {\n return !isEqual(value, defaultValue)\n }, [value, defaultValue])\n\n const handleSubmit = useMemoizedFn(() => {\n props?.onClose?.(true, value)\n })\n\n return (\n <div className={clsx(styles[`${componentName}__popover`])}>\n <div\n style={{\n marginBottom: '10px',\n }}\n >\n {t('setFilterCondition')}\n </div>\n\n {value.map((item, index) => {\n let conditionList = item?.conditionList\n let dataSourceName = fieldPickerDataSource?.find(v => v.key === item?.dataSourceId)?.label\n\n return (\n <div className={clsx(styles[`${componentName}__block`])} key={item?.dataSourceId}>\n <div\n style={{\n marginBottom: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <div>{dataSourceName}</div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n }}\n >\n {t('conformTo')}\n <Select\n style={{ width: '80px' }}\n options={conditionTypeOptions}\n value={item?.conditionType}\n onChange={v => {\n setValue(prev => {\n let ret = [...prev]\n ret[index].conditionType = v\n return ret\n })\n }}\n />\n {t('addCondition')}\n </div>\n </div>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '10px',\n }}\n >\n {conditionList.map((v, conditionIndex) => {\n return (\n <ConditionRowItem\n key={conditionIndex}\n value={v}\n onChange={newValue => {\n setValue(prev => {\n let ret = [...prev]\n let prevItem = ret[index].conditionList[conditionIndex]\n if (prevItem?.dataSourceId !== newValue?.dataSourceId) {\n // 数据源变化了 删除原来的\n ret[index].conditionList.splice(conditionIndex, 1)\n if (ret[index].conditionList.length === 0) {\n ret.splice(index, 1)\n }\n // 添加到新的数据源添\n let newItem = newValue\n let match = ret.find(item => item.dataSourceId === newItem.dataSourceId)\n if (match) {\n match.conditionList.push(newItem)\n return [...ret]\n } else {\n let newConditionBlockWrapper = {\n dataSourceId: newItem.dataSourceId,\n conditionType: 'all',\n conditionList: [newItem],\n } as ConditionBlockWrapper\n return [...ret, newConditionBlockWrapper]\n }\n } else {\n ret[index].conditionList[conditionIndex] = {\n ...prevItem,\n ...newValue,\n }\n }\n\n return ret\n })\n }}\n onDelete={() => {\n setValue(prev => {\n let ret = [...prev]\n ret[index].conditionList.splice(conditionIndex, 1)\n\n if (ret[index].conditionList.length === 0) {\n ret.splice(index, 1)\n }\n return ret\n })\n }}\n />\n )\n })}\n </div>\n </div>\n )\n })}\n\n {emptyBlockList.map((item, index) => {\n return (\n <div className={clsx(styles[`${componentName}__block`])} key={index}>\n <ConditionRowItem\n value={item}\n onChange={newValue => {\n handleEmptyBlockListChange(newValue)\n }}\n onDelete={() => {\n setEmptyBlockList(prev => {\n let ret = [...prev]\n ret.splice(index, 1)\n return ret\n })\n }}\n />\n </div>\n )\n })}\n\n <Button\n type=\"dashed\"\n block\n style={{\n marginBottom: '10px',\n }}\n icon={<PlusOutlined />}\n onClick={() => {\n handleAddEmptyBlock()\n }}\n >\n {t('addCondition')}\n </Button>\n\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n >\n <Button\n type=\"primary\"\n disabled={!hasChange}\n onClick={() => {\n handleSubmit()\n }}\n >\n {t('confirm')}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["flattenFieldMap","fieldPickerDataSource","IconFilter","item"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SVGProps } from 'react';
2
+ declare const SvgComponent: (props: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
3
+ export default SvgComponent;
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgComponent = (props) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "currentColor", ...props, children: [
3
+ /* @__PURE__ */ jsx("g", { clipPath: "url(#a)", children: /* @__PURE__ */ jsx(
4
+ "path",
5
+ {
6
+ fill: "#000",
7
+ fillRule: "evenodd",
8
+ d: "M3 2.666a.167.167 0 0 0-.166.167v1.634c0 .057.03.11.077.14l3.05 1.94c.336.215.54.586.54.985v4.634a.5.5 0 1 1-1 0V7.532c0-.057-.03-.11-.078-.14L2.374 5.45a1.167 1.167 0 0 1-.54-.984V2.833c0-.645.522-1.167 1.167-1.167h10c.644 0 1.166.522 1.166 1.167v1.634c0 .399-.204.77-.54.984l-3.05 1.94a.167.167 0 0 0-.076.141v6.3a.5.5 0 0 1-1 0v-6.3c0-.399.203-.77.54-.984l3.05-1.94a.167.167 0 0 0 .076-.141V2.833a.167.167 0 0 0-.166-.167H3Z",
9
+ clipRule: "evenodd"
10
+ }
11
+ ) }),
12
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "a", children: /* @__PURE__ */ jsx("path", { fill: "#fff", d: "M0 0h16v16H0z" }) }) })
13
+ ] });
14
+ export {
15
+ SvgComponent as default
16
+ };
17
+ //# sourceMappingURL=icon-Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-Filter.js","sources":["../../../packages/dashboard-workbench/icon/icon-Filter.tsx"],"sourcesContent":["import * as React from 'react'\nimport { SVGProps } from 'react'\n\nconst SvgComponent = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"currentColor\" {...props}>\n <g clipPath=\"url(#a)\">\n <path\n fill=\"#000\"\n fillRule=\"evenodd\"\n d=\"M3 2.666a.167.167 0 0 0-.166.167v1.634c0 .057.03.11.077.14l3.05 1.94c.336.215.54.586.54.985v4.634a.5.5 0 1 1-1 0V7.532c0-.057-.03-.11-.078-.14L2.374 5.45a1.167 1.167 0 0 1-.54-.984V2.833c0-.645.522-1.167 1.167-1.167h10c.644 0 1.166.522 1.166 1.167v1.634c0 .399-.204.77-.54.984l-3.05 1.94a.167.167 0 0 0-.076.141v6.3a.5.5 0 0 1-1 0v-6.3c0-.399.203-.77.54-.984l3.05-1.94a.167.167 0 0 0 .076-.141V2.833a.167.167 0 0 0-.166-.167H3Z\"\n clipRule=\"evenodd\"\n />\n </g>\n <defs>\n <clipPath id=\"a\">\n <path fill=\"#fff\" d=\"M0 0h16v16H0z\" />\n </clipPath>\n </defs>\n </svg>\n)\nexport default SvgComponent\n"],"names":[],"mappings":";AAGA,MAAM,eAAe,CAAC,UACpB,qBAAC,SAAI,OAAM,8BAA6B,OAAM,OAAM,QAAO,OAAM,MAAK,gBAAgB,GAAG,OACvF,UAAA;AAAA,EAAC,oBAAA,KAAA,EAAE,UAAS,WACV,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAS;AAAA,MACT,GAAE;AAAA,MACF,UAAS;AAAA,IAAA;AAAA,EAAA,GAEb;AAAA,EACC,oBAAA,QAAA,EACC,UAAC,oBAAA,YAAA,EAAS,IAAG,KACX,UAAC,oBAAA,QAAA,EAAK,MAAK,QAAO,GAAE,gBAAA,CAAgB,GACtC,EACF,CAAA;AAAA,EACF,CAAA;"}
@@ -202,13 +202,18 @@ const DashboardWorkbench = ({
202
202
  }
203
203
  ),
204
204
  /* @__PURE__ */ jsx(
205
- GlobalFilterCondition,
205
+ "div",
206
206
  {
207
207
  style: {
208
- marginLeft: 10
208
+ width: "1px",
209
+ height: "1rem",
210
+ backgroundColor: "rgba(217, 217, 217, 1)",
211
+ marginLeft: "12px",
212
+ marginRight: "4px"
209
213
  }
210
214
  }
211
- )
215
+ ),
216
+ /* @__PURE__ */ jsx(GlobalFilterCondition, {})
212
217
  ] }) }),
213
218
  /* @__PURE__ */ jsx("div", { className: "bitable-block-dashboard__mount", children: /* @__PURE__ */ jsx("div", { className: "dashboard-container", children: /* @__PURE__ */ jsx(
214
219
  "div",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../packages/dashboard-workbench/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Modal } from 'antd'\nimport { ExclamationCircleOutlined } from '@ant-design/icons'\nimport { Layout, Responsive, WidthProvider } from 'react-grid-layout'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useLatest, useLocalStorageState, useMemoizedFn } from 'ahooks'\nimport { omit, pick } from 'lodash-es'\nimport AddModuleBtn, { ModuleValueType } from './components/add-module-btn'\nimport AddCalendarModal from './components/add-module-modal/add-calendar-modal'\nimport AddChartModal from './components/add-module-modal/add-chart-modal'\nimport AddStatisticsModal from './components/add-module-modal/add-statistics-modal'\nimport { GlobalFilterCondition } from './components/global-filter-condition'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport ModuleContent, { ModuleData } from './components/module-content'\nimport ModuleHeader from './components/module-header'\nimport { AppContext } from './context'\nimport { EnumDataApi, ModuleConfigDataTypes, ModuleDataApi, SourceDataItem } from './types'\nimport { findChangedItems } from './utils'\nimport './lang/index'\nimport '/node_modules/react-grid-layout/css/styles.css'\nimport './styles/index.less'\n\nconst ResponsiveReactGridLayout = WidthProvider(Responsive)\n\ninterface DashboardWorkbenchProps {\n sourceData?: SourceDataItem[]\n moduleConfigData?: ModuleConfigDataTypes\n fieldMap?: Record<string, string>\n lang?: 'zh-CN' | 'en-US'\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n onLayoutChange?: (layout: Layout[]) => void\n className?: string\n cols?: { lg: number; md: number; sm: number; xs: number; xxs: number }\n rowHeight?: number\n}\n\nconst DashboardWorkbench: React.FC<DashboardWorkbenchProps> = ({\n moduleConfigData,\n moduleDataApi,\n enumDataApi,\n onCreateModule,\n onUpdateModule,\n onDeleteModule,\n className = 'layout',\n cols = { lg: 12, md: 12, sm: 12, xs: 12, xxs: 12 },\n rowHeight = 79,\n}) => {\n const { t } = useTranslation()\n\n /* ============================== modules =============================== */\n const [modules, setModules] = useState<ModuleData[] | undefined>([])\n const [activeId, setActiveId] = useState<ModuleData['id']>()\n\n useEffect(() => {\n setModules(\n moduleConfigData?.map(item => ({\n ...item,\n i: item.i ? item.i : item.id,\n })) || []\n )\n }, [moduleConfigData])\n\n const addModule = async (data: ModuleValueType) => {\n const wMultiple = data.type === 'calendar' ? 5 : 4\n const hMultiple = data.type === 'calendar' ? 5 : 3\n\n if (Array.isArray(modules) && data.type) {\n const newModuleData = {\n x: 0,\n y: 0,\n w: wMultiple,\n h: hMultiple,\n title: data.type.includes('chart') ? t('chartText') : title[data.type],\n ...data,\n type: data.type,\n }\n await onCreateModule?.(newModuleData).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setModules([...modules, { ...newModuleData, i: res.data?.id, id: res.data?.id }])\n })\n }\n }\n\n // 单个\n const updateModule = async (id: ModuleData['id'], updatedProps: Partial<ModuleData>) => {\n if (modules?.length) {\n const oldData = modules.find(m => m.id === id)\n const updatedModule = {\n ...oldData!,\n ...updatedProps,\n }\n const modulesData = modules.map(m => (m.id === id ? updatedModule : m))\n setModules(modulesData)\n await onUpdateModule?.(updatedModule).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n })\n }\n }\n\n // 批量\n const updateModules = async (updatedItems: Partial<ModuleData>[]) => {\n if (!modules?.length || !updatedItems?.length) return\n const updatedModules = modules.map(module => {\n const update = updatedItems.find(item => item.id === module.id)\n return update ? { ...module, ...update } : module\n })\n setModules(updatedModules)\n try {\n for (const updatedItem of updatedItems) {\n const res: any = await onUpdateModule?.(updatedItem as ModuleData)\n if (!res?.success) {\n throw new Error(res?.message || `Failed to update module: ${updatedItem.id}`)\n }\n }\n } catch (error: any) {\n setModules(modules)\n message.error(error.message || 'Failed to update modules')\n }\n }\n\n const deleteModule = async (id: ModuleData['id']) => {\n if (modules?.length) {\n setModules(modules.filter(m => m.id !== id))\n await onDeleteModule?.(id || '')\n }\n }\n\n /* ============================== drag =============================== */\n\n const margins: [number, number] = [10, 10]\n const [rowWidth, setRowWidth] = useState(0)\n const [, setCurrentCols] = useState<number>(cols.lg)\n\n const [isDragOrResize, setIsDragOrResize] = useState(false)\n const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false)\n\n const onBreakpointChange = (_breakpoint: string, cols: number) => {\n setCurrentCols(cols)\n }\n\n const onDragResizeStop = (newLayout: Layout[]) => {\n const changedItems = findChangedItems(newLayout, modules as any)\n const newChangedItems = changedItems.map(item => {\n const module = modules?.find(module => module.i === item.i)\n return { ...module, ...item }\n })\n updateModules(newChangedItems)\n }\n\n const onDragStartOrEnd = (type: 'start' | 'end', newLayout?: Layout[]) => {\n if (type === 'start') {\n setIsDragOrResize(true)\n setIsDragOrResizeEnd(true)\n } else {\n setIsDragOrResize(false)\n setTimeout(() => {\n setIsDragOrResizeEnd(false)\n }, 500)\n onDragResizeStop(newLayout || [])\n }\n }\n\n /* ============================== split =============================== */\n const [selectModuleData, setSelectModuleData] = useState<ModuleData>()\n\n const [isShowAddStatisticsModal, setIsShowAddStatisticsModal] = useState<boolean>(false)\n const [isShowAddCalendarModal, setIsShowAddCalendarModal] = useState<boolean>(false)\n const [isShowAddChartModal, setIsShowAddChartModal] = useState<boolean>(false)\n\n const handleOpenCreateModal = (val: any) => {\n if (val === 'text') {\n const data = {\n type: val,\n customData: {\n title: t('text'),\n editor: [\n {\n type: 'paragraph',\n children: [\n {\n text: '',\n },\n ],\n },\n ],\n },\n }\n addModule(data)\n } else if (val === 'statistics') {\n setIsShowAddStatisticsModal(true)\n } else if (val === 'calendar') {\n setIsShowAddCalendarModal(true)\n } else if (val?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n\n setSelectModuleData({\n title: '',\n type: val,\n w: 0,\n h: 0,\n x: 0,\n y: 0,\n })\n }\n\n const commonModalProps = {\n moduleDataApi: moduleDataApi,\n enumDataApi: enumDataApi,\n selectModuleData: selectModuleData,\n }\n const handleModalSubmit = (data: Partial<ModuleData>) => {\n if (data.id) {\n updateModule(data.id, omit(data, 'id'))\n } else {\n addModule(data)\n }\n }\n /* ============================== split =============================== */\n const title: any = {\n text: t('pb.text'),\n calendar: t('calendarText'),\n statistics: t('chartText'),\n }\n\n return (\n <div className=\"pivot-table\">\n <div className=\"bitable-block-dashboard\">\n <div className=\"bitable-block-dashboard-toolbar bitable-toolbar\">\n <div className=\"bitable-block-dashboard-toolbar--left\">\n <AddModuleBtn\n onOk={val => {\n handleOpenCreateModal(val)\n }}\n />\n <GlobalFilterCondition\n style={{\n marginLeft: 10,\n }}\n />\n </div>\n </div>\n <div className=\"bitable-block-dashboard__mount\">\n <div className=\"dashboard-container\">\n <div\n className={`dashboard-content-container ${isDragOrResize ? 'isDragOrResize' : ''} ${\n isDragOrResizeEnd ? 'isDragOrResizeEnd' : ''\n }`}\n >\n <ResponsiveReactGridLayout\n onBreakpointChange={onBreakpointChange}\n className={className}\n compactType=\"vertical\"\n preventCollision={false}\n cols={cols}\n margin={margins}\n rowHeight={rowHeight}\n measureBeforeMount={false}\n draggableHandle=\".isCanDrag\"\n // draggableCancel=\".isNoCanDrag\"\n onWidthChange={(containerWidth, _margin, cols) => {\n setRowWidth(containerWidth / cols - 1)\n }}\n onDragStart={() => {\n onDragStartOrEnd('start')\n }}\n onDragStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n onResizeStart={() => {\n onDragStartOrEnd('start')\n }}\n onResizeStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n style={{\n backgroundSize: `${rowWidth}px ${rowHeight + margins[0]}px`,\n backgroundPosition: `${margins[0]}px ${margins[0]}px`,\n minHeight: '100vh',\n }}\n >\n {modules?.map(module => (\n <div\n className={`box-dashboard ${activeId === module.id ? 'active' : ''}`}\n onClick={() => {\n setActiveId(module.id)\n }}\n key={module.id}\n data-grid={{\n i: module.id,\n x: module.x || 0,\n y: module.y || 0, // puts it at the bottom\n w: module.w || 2,\n h: module.h || 2,\n minW: 2,\n minH: 2,\n }}\n >\n <ModuleHeader\n module={module}\n defaultValue={module.title}\n onChange={val =>\n updateModule(module.id, {\n title: val,\n })\n }\n onDropdownItem={key => {\n if (key === 'edit') {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n } else if (key === 'delete') {\n Modal.confirm({\n title: t('promptTitle'),\n icon: <ExclamationCircleOutlined />,\n content: t('promptContentDeleteComponents'),\n onOk() {\n deleteModule(module.id)\n },\n })\n } else if (key === 'copy') {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }\n }}\n />\n\n <ModuleContent\n module={module}\n onUpdate={updateModule}\n moduleDataApi={moduleDataApi}\n activeId={activeId}\n onClick={() => {\n setActiveId(module.id)\n }}\n rowWidth={rowWidth}\n rowHeight={rowHeight}\n onEdit={() => {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n }}\n onDelete={() => {\n deleteModule(module.id)\n }}\n onCopy={() => {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }}\n onStartDragOrResize={() => {\n setIsDragOrResize(true)\n }}\n onStopDragOrResize={() => {\n setIsDragOrResize(false)\n }}\n />\n </div>\n ))}\n </ResponsiveReactGridLayout>\n </div>\n </div>\n </div>\n </div>\n\n <AddStatisticsModal\n {...commonModalProps}\n open={isShowAddStatisticsModal}\n onClose={() => {\n setIsShowAddStatisticsModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'statistics',\n })\n setIsShowAddStatisticsModal(false)\n }}\n />\n\n <AddCalendarModal\n {...commonModalProps}\n open={isShowAddCalendarModal}\n onClose={() => {\n setIsShowAddCalendarModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'calendar',\n })\n setIsShowAddCalendarModal(false)\n }}\n />\n\n <AddChartModal\n {...commonModalProps}\n open={isShowAddChartModal}\n // open={true}\n onClose={() => {\n setIsShowAddChartModal(false)\n }}\n onOk={data => {\n handleModalSubmit(data)\n setIsShowAddChartModal(false)\n }}\n />\n </div>\n )\n}\n\n/* ============================== split =============================== */\n\nexport type { ConditionBlockWrapper }\nexport type GlobalProps = {\n globalFilterCondition: ConditionBlockWrapper[]\n onGlobalFilterConditionChange: (condition: ConditionBlockWrapper[]) => void\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n}\n\nconst Empty: unknown = []\n\nexport default React.memo((props: DashboardWorkbenchProps & GlobalProps) => {\n /* ============================== i18n =============================== */\n const { i18n } = useTranslation()\n useEffect(() => {\n i18n.changeLanguage(props?.lang || 'zh_CN')\n }, [i18n, props?.lang])\n\n const globalData = {\n fieldMap: props.fieldMap,\n sourceData: props?.sourceData,\n }\n\n const service = pick(props, [\n 'moduleDataApi',\n 'enumDataApi',\n 'onCreateModule',\n 'onUpdateModule',\n 'onDeleteModule',\n ])\n\n /* ============================== 全局筛选条件 =============================== */\n const [globalFilterCondition = Empty as ConditionBlockWrapper[], setGlobalFilterCondition] =\n useControllableValue<ConditionBlockWrapper[]>(props, {\n valuePropName: 'globalFilterCondition',\n trigger: 'onGlobalFilterConditionChange',\n })\n\n return (\n <AppContext.Provider\n value={{\n globalData,\n service,\n formatCurrency: props?.formatCurrency,\n globalFilterCondition,\n setGlobalFilterCondition: setGlobalFilterCondition as React.Dispatch<\n React.SetStateAction<ConditionBlockWrapper[]>\n >,\n }}\n >\n <DashboardWorkbench {...props} />\n </AppContext.Provider>\n )\n})\n"],"names":["cols","module","AddCalendarModal","AddChartModal"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../packages/dashboard-workbench/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Modal } from 'antd'\nimport { ExclamationCircleOutlined } from '@ant-design/icons'\nimport { Layout, Responsive, WidthProvider } from 'react-grid-layout'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useLatest, useLocalStorageState, useMemoizedFn } from 'ahooks'\nimport { omit, pick } from 'lodash-es'\nimport AddModuleBtn, { ModuleValueType } from './components/add-module-btn'\nimport AddCalendarModal from './components/add-module-modal/add-calendar-modal'\nimport AddChartModal from './components/add-module-modal/add-chart-modal'\nimport AddStatisticsModal from './components/add-module-modal/add-statistics-modal'\nimport { GlobalFilterCondition } from './components/global-filter-condition'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport ModuleContent, { ModuleData } from './components/module-content'\nimport ModuleHeader from './components/module-header'\nimport { AppContext } from './context'\nimport { EnumDataApi, ModuleConfigDataTypes, ModuleDataApi, SourceDataItem } from './types'\nimport { findChangedItems } from './utils'\nimport './lang/index'\nimport '/node_modules/react-grid-layout/css/styles.css'\nimport './styles/index.less'\n\nconst ResponsiveReactGridLayout = WidthProvider(Responsive)\n\ninterface DashboardWorkbenchProps {\n sourceData?: SourceDataItem[]\n moduleConfigData?: ModuleConfigDataTypes\n fieldMap?: Record<string, string>\n lang?: 'zh-CN' | 'en-US'\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n onLayoutChange?: (layout: Layout[]) => void\n className?: string\n cols?: { lg: number; md: number; sm: number; xs: number; xxs: number }\n rowHeight?: number\n}\n\nconst DashboardWorkbench: React.FC<DashboardWorkbenchProps> = ({\n moduleConfigData,\n moduleDataApi,\n enumDataApi,\n onCreateModule,\n onUpdateModule,\n onDeleteModule,\n className = 'layout',\n cols = { lg: 12, md: 12, sm: 12, xs: 12, xxs: 12 },\n rowHeight = 79,\n}) => {\n const { t } = useTranslation()\n\n /* ============================== modules =============================== */\n const [modules, setModules] = useState<ModuleData[] | undefined>([])\n const [activeId, setActiveId] = useState<ModuleData['id']>()\n\n useEffect(() => {\n setModules(\n moduleConfigData?.map(item => ({\n ...item,\n i: item.i ? item.i : item.id,\n })) || []\n )\n }, [moduleConfigData])\n\n const addModule = async (data: ModuleValueType) => {\n const wMultiple = data.type === 'calendar' ? 5 : 4\n const hMultiple = data.type === 'calendar' ? 5 : 3\n\n if (Array.isArray(modules) && data.type) {\n const newModuleData = {\n x: 0,\n y: 0,\n w: wMultiple,\n h: hMultiple,\n title: data.type.includes('chart') ? t('chartText') : title[data.type],\n ...data,\n type: data.type,\n }\n await onCreateModule?.(newModuleData).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setModules([...modules, { ...newModuleData, i: res.data?.id, id: res.data?.id }])\n })\n }\n }\n\n // 单个\n const updateModule = async (id: ModuleData['id'], updatedProps: Partial<ModuleData>) => {\n if (modules?.length) {\n const oldData = modules.find(m => m.id === id)\n const updatedModule = {\n ...oldData!,\n ...updatedProps,\n }\n const modulesData = modules.map(m => (m.id === id ? updatedModule : m))\n setModules(modulesData)\n await onUpdateModule?.(updatedModule).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n })\n }\n }\n\n // 批量\n const updateModules = async (updatedItems: Partial<ModuleData>[]) => {\n if (!modules?.length || !updatedItems?.length) return\n const updatedModules = modules.map(module => {\n const update = updatedItems.find(item => item.id === module.id)\n return update ? { ...module, ...update } : module\n })\n setModules(updatedModules)\n try {\n for (const updatedItem of updatedItems) {\n const res: any = await onUpdateModule?.(updatedItem as ModuleData)\n if (!res?.success) {\n throw new Error(res?.message || `Failed to update module: ${updatedItem.id}`)\n }\n }\n } catch (error: any) {\n setModules(modules)\n message.error(error.message || 'Failed to update modules')\n }\n }\n\n const deleteModule = async (id: ModuleData['id']) => {\n if (modules?.length) {\n setModules(modules.filter(m => m.id !== id))\n await onDeleteModule?.(id || '')\n }\n }\n\n /* ============================== drag =============================== */\n\n const margins: [number, number] = [10, 10]\n const [rowWidth, setRowWidth] = useState(0)\n const [, setCurrentCols] = useState<number>(cols.lg)\n\n const [isDragOrResize, setIsDragOrResize] = useState(false)\n const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false)\n\n const onBreakpointChange = (_breakpoint: string, cols: number) => {\n setCurrentCols(cols)\n }\n\n const onDragResizeStop = (newLayout: Layout[]) => {\n const changedItems = findChangedItems(newLayout, modules as any)\n const newChangedItems = changedItems.map(item => {\n const module = modules?.find(module => module.i === item.i)\n return { ...module, ...item }\n })\n updateModules(newChangedItems)\n }\n\n const onDragStartOrEnd = (type: 'start' | 'end', newLayout?: Layout[]) => {\n if (type === 'start') {\n setIsDragOrResize(true)\n setIsDragOrResizeEnd(true)\n } else {\n setIsDragOrResize(false)\n setTimeout(() => {\n setIsDragOrResizeEnd(false)\n }, 500)\n onDragResizeStop(newLayout || [])\n }\n }\n\n /* ============================== split =============================== */\n const [selectModuleData, setSelectModuleData] = useState<ModuleData>()\n\n const [isShowAddStatisticsModal, setIsShowAddStatisticsModal] = useState<boolean>(false)\n const [isShowAddCalendarModal, setIsShowAddCalendarModal] = useState<boolean>(false)\n const [isShowAddChartModal, setIsShowAddChartModal] = useState<boolean>(false)\n\n const handleOpenCreateModal = (val: any) => {\n if (val === 'text') {\n const data = {\n type: val,\n customData: {\n title: t('text'),\n editor: [\n {\n type: 'paragraph',\n children: [\n {\n text: '',\n },\n ],\n },\n ],\n },\n }\n addModule(data)\n } else if (val === 'statistics') {\n setIsShowAddStatisticsModal(true)\n } else if (val === 'calendar') {\n setIsShowAddCalendarModal(true)\n } else if (val?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n\n setSelectModuleData({\n title: '',\n type: val,\n w: 0,\n h: 0,\n x: 0,\n y: 0,\n })\n }\n\n const commonModalProps = {\n moduleDataApi: moduleDataApi,\n enumDataApi: enumDataApi,\n selectModuleData: selectModuleData,\n }\n const handleModalSubmit = (data: Partial<ModuleData>) => {\n if (data.id) {\n updateModule(data.id, omit(data, 'id'))\n } else {\n addModule(data)\n }\n }\n /* ============================== split =============================== */\n const title: any = {\n text: t('pb.text'),\n calendar: t('calendarText'),\n statistics: t('chartText'),\n }\n\n return (\n <div className=\"pivot-table\">\n <div className=\"bitable-block-dashboard\">\n <div className=\"bitable-block-dashboard-toolbar bitable-toolbar\">\n <div className=\"bitable-block-dashboard-toolbar--left\">\n <AddModuleBtn\n onOk={val => {\n handleOpenCreateModal(val)\n }}\n />\n <div\n style={{\n width: '1px',\n height: '1rem',\n backgroundColor: 'rgba(217, 217, 217, 1)',\n marginLeft: '12px',\n marginRight: '4px',\n }}\n />\n <GlobalFilterCondition />\n </div>\n </div>\n <div className=\"bitable-block-dashboard__mount\">\n <div className=\"dashboard-container\">\n <div\n className={`dashboard-content-container ${isDragOrResize ? 'isDragOrResize' : ''} ${\n isDragOrResizeEnd ? 'isDragOrResizeEnd' : ''\n }`}\n >\n <ResponsiveReactGridLayout\n onBreakpointChange={onBreakpointChange}\n className={className}\n compactType=\"vertical\"\n preventCollision={false}\n cols={cols}\n margin={margins}\n rowHeight={rowHeight}\n measureBeforeMount={false}\n draggableHandle=\".isCanDrag\"\n // draggableCancel=\".isNoCanDrag\"\n onWidthChange={(containerWidth, _margin, cols) => {\n setRowWidth(containerWidth / cols - 1)\n }}\n onDragStart={() => {\n onDragStartOrEnd('start')\n }}\n onDragStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n onResizeStart={() => {\n onDragStartOrEnd('start')\n }}\n onResizeStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n style={{\n backgroundSize: `${rowWidth}px ${rowHeight + margins[0]}px`,\n backgroundPosition: `${margins[0]}px ${margins[0]}px`,\n minHeight: '100vh',\n }}\n >\n {modules?.map(module => (\n <div\n className={`box-dashboard ${activeId === module.id ? 'active' : ''}`}\n onClick={() => {\n setActiveId(module.id)\n }}\n key={module.id}\n data-grid={{\n i: module.id,\n x: module.x || 0,\n y: module.y || 0, // puts it at the bottom\n w: module.w || 2,\n h: module.h || 2,\n minW: 2,\n minH: 2,\n }}\n >\n <ModuleHeader\n module={module}\n defaultValue={module.title}\n onChange={val =>\n updateModule(module.id, {\n title: val,\n })\n }\n onDropdownItem={key => {\n if (key === 'edit') {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n } else if (key === 'delete') {\n Modal.confirm({\n title: t('promptTitle'),\n icon: <ExclamationCircleOutlined />,\n content: t('promptContentDeleteComponents'),\n onOk() {\n deleteModule(module.id)\n },\n })\n } else if (key === 'copy') {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }\n }}\n />\n\n <ModuleContent\n module={module}\n onUpdate={updateModule}\n moduleDataApi={moduleDataApi}\n activeId={activeId}\n onClick={() => {\n setActiveId(module.id)\n }}\n rowWidth={rowWidth}\n rowHeight={rowHeight}\n onEdit={() => {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n }}\n onDelete={() => {\n deleteModule(module.id)\n }}\n onCopy={() => {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }}\n onStartDragOrResize={() => {\n setIsDragOrResize(true)\n }}\n onStopDragOrResize={() => {\n setIsDragOrResize(false)\n }}\n />\n </div>\n ))}\n </ResponsiveReactGridLayout>\n </div>\n </div>\n </div>\n </div>\n\n <AddStatisticsModal\n {...commonModalProps}\n open={isShowAddStatisticsModal}\n onClose={() => {\n setIsShowAddStatisticsModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'statistics',\n })\n setIsShowAddStatisticsModal(false)\n }}\n />\n\n <AddCalendarModal\n {...commonModalProps}\n open={isShowAddCalendarModal}\n onClose={() => {\n setIsShowAddCalendarModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'calendar',\n })\n setIsShowAddCalendarModal(false)\n }}\n />\n\n <AddChartModal\n {...commonModalProps}\n open={isShowAddChartModal}\n // open={true}\n onClose={() => {\n setIsShowAddChartModal(false)\n }}\n onOk={data => {\n handleModalSubmit(data)\n setIsShowAddChartModal(false)\n }}\n />\n </div>\n )\n}\n\n/* ============================== split =============================== */\n\nexport type { ConditionBlockWrapper }\nexport type GlobalProps = {\n globalFilterCondition: ConditionBlockWrapper[]\n onGlobalFilterConditionChange: (condition: ConditionBlockWrapper[]) => void\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n}\n\nconst Empty: unknown = []\n\nexport default React.memo((props: DashboardWorkbenchProps & GlobalProps) => {\n /* ============================== i18n =============================== */\n const { i18n } = useTranslation()\n useEffect(() => {\n i18n.changeLanguage(props?.lang || 'zh_CN')\n }, [i18n, props?.lang])\n\n const globalData = {\n fieldMap: props.fieldMap,\n sourceData: props?.sourceData,\n }\n\n const service = pick(props, [\n 'moduleDataApi',\n 'enumDataApi',\n 'onCreateModule',\n 'onUpdateModule',\n 'onDeleteModule',\n ])\n\n /* ============================== 全局筛选条件 =============================== */\n const [globalFilterCondition = Empty as ConditionBlockWrapper[], setGlobalFilterCondition] =\n useControllableValue<ConditionBlockWrapper[]>(props, {\n valuePropName: 'globalFilterCondition',\n trigger: 'onGlobalFilterConditionChange',\n })\n\n return (\n <AppContext.Provider\n value={{\n globalData,\n service,\n formatCurrency: props?.formatCurrency,\n globalFilterCondition,\n setGlobalFilterCondition: setGlobalFilterCondition as React.Dispatch<\n React.SetStateAction<ConditionBlockWrapper[]>\n >,\n }}\n >\n <DashboardWorkbench {...props} />\n </AppContext.Provider>\n )\n})\n"],"names":["cols","module","AddCalendarModal","AddChartModal"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platox/pivot-table",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "exports": {