@gingkoo/pandora-metabase 1.0.141 → 1.0.143-alpha.0

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.
Files changed (33) hide show
  1. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  2. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +64 -18
  3. package/lib/cjs/components/dialog/formula-list/index.js +374 -153
  4. package/lib/cjs/components/dialog/formula-list/index.less +18 -5
  5. package/lib/cjs/components/dialog/formula-list/utils.js +45 -17
  6. package/lib/cjs/components/dialog/select-column/index.js +5 -2
  7. package/lib/cjs/components/dialog/select-summarize/index.js +7 -0
  8. package/lib/cjs/components/modules/summarize/group-by.js +10 -1
  9. package/lib/cjs/components/modules/summarize/select-index.js +3 -1
  10. package/lib/cjs/hooks/use-state.js +173 -77
  11. package/lib/cjs/index.js +17 -3
  12. package/lib/cjs/store/types.d.ts +4 -4
  13. package/lib/cjs/types.d.ts +22 -3
  14. package/lib/cjs/utils/transformSql.js +51 -38
  15. package/lib/cjs/utils.d.ts +1 -0
  16. package/lib/cjs/utils.js +327 -57
  17. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +8 -5
  18. package/lib/es/components/dialog/formula-list/LogicGroup.js +65 -19
  19. package/lib/es/components/dialog/formula-list/index.js +373 -152
  20. package/lib/es/components/dialog/formula-list/index.less +18 -5
  21. package/lib/es/components/dialog/formula-list/utils.js +45 -17
  22. package/lib/es/components/dialog/select-column/index.js +5 -2
  23. package/lib/es/components/dialog/select-summarize/index.js +7 -0
  24. package/lib/es/components/modules/summarize/group-by.js +10 -1
  25. package/lib/es/components/modules/summarize/select-index.js +3 -1
  26. package/lib/es/hooks/use-state.js +173 -77
  27. package/lib/es/index.js +18 -4
  28. package/lib/es/store/types.d.ts +4 -4
  29. package/lib/es/types.d.ts +22 -3
  30. package/lib/es/utils/transformSql.js +52 -39
  31. package/lib/es/utils.d.ts +1 -0
  32. package/lib/es/utils.js +326 -56
  33. package/package.json +1 -1
@@ -1,10 +1,13 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
- operator: 'and' | 'or';
4
- onToggleOperator: () => void;
5
- leftContent: React.ReactNode;
6
- rightContent: React.ReactNode;
3
+ items: {
4
+ operator?: 'and' | 'or';
5
+ content: React.ReactNode;
6
+ }[];
7
+ onChangeOperator: (index: number, operator: 'and' | 'or') => void;
8
+ onAddItem: () => void;
9
+ onDeleteItem: (operatorIndex: number, side: 'left' | 'right') => void;
7
10
  onDelete: (e: any) => void;
8
11
  };
9
- declare const LogicGroup: ({ operator, onToggleOperator, leftContent, rightContent, onDelete, }: Props) => import("react/jsx-runtime").JSX.Element;
12
+ declare const LogicGroup: ({ items, onChangeOperator, onAddItem, onDeleteItem, onDelete, }: Props) => import("react/jsx-runtime").JSX.Element;
10
13
  export default LogicGroup;
@@ -5,35 +5,81 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
8
9
  var _jsxRuntime = require("react/jsx-runtime");
10
+ var _react = _interopRequireDefault(require("react"));
9
11
  var _classnames = _interopRequireDefault(require("classnames"));
10
12
  var _pandora = require("@gingkoo/pandora");
11
13
  var _icons = require("../../icons");
14
+ var operatorMenuItems = [{
15
+ key: 'add',
16
+ label: '添加连接符'
17
+ }, {
18
+ key: 'delete-left',
19
+ label: '删除左侧和当前连接符'
20
+ }, {
21
+ key: 'delete-right',
22
+ label: '删除右侧和当前连接符'
23
+ }];
12
24
  var LogicGroup = function LogicGroup(_ref) {
13
- var operator = _ref.operator,
14
- onToggleOperator = _ref.onToggleOperator,
15
- leftContent = _ref.leftContent,
16
- rightContent = _ref.rightContent,
25
+ var items = _ref.items,
26
+ onChangeOperator = _ref.onChangeOperator,
27
+ onAddItem = _ref.onAddItem,
28
+ onDeleteItem = _ref.onDeleteItem,
17
29
  onDelete = _ref.onDelete;
30
+ var canDeleteItem = items.length > 2;
31
+ var handleOperatorMenuChange = function handleOperatorMenuChange(operatorIndex, action) {
32
+ if (action === 'add') {
33
+ onAddItem();
34
+ return;
35
+ }
36
+ if (action === 'delete-left' || action === 'delete-right') {
37
+ var side = action === 'delete-left' ? 'left' : 'right';
38
+ onDeleteItem(operatorIndex, side);
39
+ }
40
+ };
41
+ var renderOperator = function renderOperator(operator, index) {
42
+ return (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
43
+ trigger: 'contextMenu',
44
+ droplist: operatorMenuItems.map(function (item) {
45
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), {}, {
46
+ disabled: item.key !== 'add' && !canDeleteItem
47
+ });
48
+ }),
49
+ triggerProps: {
50
+ clickToClose: true,
51
+ style: {
52
+ zIndex: 9999
53
+ }
54
+ },
55
+ onChange: function onChange(action) {
56
+ handleOperatorMenuChange(index, action);
57
+ },
58
+ children: (0, _jsxRuntime.jsx)("button", {
59
+ type: 'button',
60
+ className: (0, _classnames["default"])(':Sqb-TableName', 'operator-trigger', 'logic-operator', {
61
+ 'logic-and': operator === 'and',
62
+ 'logic-or': operator === 'or'
63
+ }),
64
+ onClick: function onClick() {
65
+ return onChangeOperator(index, operator === 'or' ? 'and' : 'or');
66
+ },
67
+ children: operator
68
+ })
69
+ });
70
+ };
18
71
  return (0, _jsxRuntime.jsxs)("div", {
19
72
  className: (0, _classnames["default"])('Sqb-FormulaGroup', 'logic-group', 'formula-node-group'),
20
73
  children: [(0, _jsxRuntime.jsx)("span", {
21
74
  className: 'Sqb-CaseKeyword',
22
75
  children: "("
23
- }), (0, _jsxRuntime.jsx)("div", {
24
- className: 'Sqb-LogicGroup-content',
25
- children: leftContent
26
- }), (0, _jsxRuntime.jsx)("button", {
27
- type: 'button',
28
- className: (0, _classnames["default"])('Sqb-TableName', 'operator-trigger', 'logic-operator', {
29
- 'logic-and': operator === 'and',
30
- 'logic-or': operator === 'or'
31
- }),
32
- onClick: onToggleOperator,
33
- children: operator
34
- }), (0, _jsxRuntime.jsx)("div", {
35
- className: 'Sqb-LogicGroup-content',
36
- children: rightContent
76
+ }), items.map(function (item, index) {
77
+ return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
78
+ children: [index > 0 && renderOperator(item.operator || 'and', index), (0, _jsxRuntime.jsx)("div", {
79
+ className: 'Sqb-LogicGroup-content',
80
+ children: item.content
81
+ })]
82
+ }, index);
37
83
  }), (0, _jsxRuntime.jsx)("span", {
38
84
  className: 'Sqb-CaseKeyword',
39
85
  children: ")"