@gingkoo/pandora-metabase 1.0.81 → 1.0.83

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 (57) hide show
  1. package/lib/cjs/components/dialog/formula-list/index.js +139 -74
  2. package/lib/cjs/components/dialog/formula-list/index.less +13 -0
  3. package/lib/cjs/components/metabase/index.js +26 -4
  4. package/lib/cjs/components/metabase/index.less +32 -1
  5. package/lib/cjs/components/modules/components/header.d.ts +2 -0
  6. package/lib/cjs/components/modules/components/header.js +11 -6
  7. package/lib/cjs/components/modules/components/item-wrapper.d.ts +9 -0
  8. package/lib/cjs/components/modules/components/item-wrapper.js +45 -0
  9. package/lib/cjs/components/modules/components/meta-icon.d.ts +11 -0
  10. package/lib/cjs/components/modules/components/meta-icon.js +60 -12
  11. package/lib/cjs/components/modules/custom-column.js +34 -28
  12. package/lib/cjs/components/modules/filter.js +18 -12
  13. package/lib/cjs/components/modules/join-data.js +417 -411
  14. package/lib/cjs/components/modules/permission-table.js +17 -11
  15. package/lib/cjs/components/modules/row-limit.js +18 -12
  16. package/lib/cjs/components/modules/sort.js +33 -27
  17. package/lib/cjs/components/modules/summarize/index.js +26 -20
  18. package/lib/cjs/components/modules/table-data.js +137 -131
  19. package/lib/cjs/components/modules/union.js +14 -8
  20. package/lib/cjs/hooks/use-state.js +84 -31
  21. package/lib/cjs/index.js +9 -3
  22. package/lib/cjs/locale/en.js +5 -3
  23. package/lib/cjs/locale/zh.js +5 -3
  24. package/lib/cjs/types.d.ts +2 -0
  25. package/lib/cjs/utils/storage.d.ts +1 -0
  26. package/lib/cjs/utils/storage.js +2 -1
  27. package/lib/cjs/utils.d.ts +6 -0
  28. package/lib/cjs/utils.js +23 -3
  29. package/lib/es/components/dialog/formula-list/index.js +139 -76
  30. package/lib/es/components/dialog/formula-list/index.less +13 -0
  31. package/lib/es/components/metabase/index.js +26 -4
  32. package/lib/es/components/metabase/index.less +32 -1
  33. package/lib/es/components/modules/components/header.d.ts +2 -0
  34. package/lib/es/components/modules/components/header.js +12 -7
  35. package/lib/es/components/modules/components/item-wrapper.d.ts +9 -0
  36. package/lib/es/components/modules/components/item-wrapper.js +38 -0
  37. package/lib/es/components/modules/components/meta-icon.d.ts +11 -0
  38. package/lib/es/components/modules/components/meta-icon.js +60 -14
  39. package/lib/es/components/modules/custom-column.js +34 -28
  40. package/lib/es/components/modules/filter.js +18 -12
  41. package/lib/es/components/modules/join-data.js +417 -411
  42. package/lib/es/components/modules/permission-table.js +17 -11
  43. package/lib/es/components/modules/row-limit.js +18 -12
  44. package/lib/es/components/modules/sort.js +33 -27
  45. package/lib/es/components/modules/summarize/index.js +26 -20
  46. package/lib/es/components/modules/table-data.js +137 -131
  47. package/lib/es/components/modules/union.js +14 -8
  48. package/lib/es/hooks/use-state.js +84 -31
  49. package/lib/es/index.js +9 -3
  50. package/lib/es/locale/en.js +5 -3
  51. package/lib/es/locale/zh.js +5 -3
  52. package/lib/es/types.d.ts +2 -0
  53. package/lib/es/utils/storage.d.ts +1 -0
  54. package/lib/es/utils/storage.js +2 -1
  55. package/lib/es/utils.d.ts +6 -0
  56. package/lib/es/utils.js +21 -1
  57. package/package.json +1 -1
@@ -1,16 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
8
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
10
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
15
  var _jsxRuntime = require("react/jsx-runtime");
13
- var _react = require("react");
16
+ var _react = _interopRequireWildcard(require("react"));
14
17
  require("./index.less");
15
18
  var _pandoraIcons = require("@gingkoo/pandora-icons");
16
19
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -34,6 +37,7 @@ var _diffViewer = _interopRequireDefault(require("../diff-viewer"));
34
37
  var _storage = _interopRequireDefault(require("../../../utils/storage"));
35
38
  var _excluded = ["notExistsToolbar", "toolbar"],
36
39
  _excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"]; // import './index.less';
40
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
37
41
  var FormulaList = (0, _react.forwardRef)(function (props, ref) {
38
42
  var _storage$_metabaseCop, _caseList2;
39
43
  // 响应 storage._metabaseCopyItems 变化,保证粘贴按钮能实时显示
@@ -315,12 +319,17 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
315
319
  }
316
320
  // 粘贴到末尾并清除勾选
317
321
  function handlePaste() {
322
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
318
323
  var _caseList = caseList.slice();
319
324
  // determine items to paste (selected items have priority)
320
325
  var itemsToPaste = _storage["default"]._metabaseCopyItems || [];
321
326
  itemsToPaste = (0, _utils.changeCopyField)(itemsToPaste, data);
322
327
  if (itemsToPaste.length) {
323
- _caseList.push.apply(_caseList, (0, _toConsumableArray2["default"])(itemsToPaste));
328
+ if (index === -1) {
329
+ _caseList.push.apply(_caseList, (0, _toConsumableArray2["default"])(itemsToPaste));
330
+ } else {
331
+ _caseList.splice.apply(_caseList, [index, 0].concat((0, _toConsumableArray2["default"])(itemsToPaste)));
332
+ }
324
333
  setCaseList(_caseList);
325
334
  }
326
335
  initPaste();
@@ -363,6 +372,38 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
363
372
  setSelectedIndices(allIndices);
364
373
  setLocalItem(allIndices);
365
374
  };
375
+ var delSelect = function delSelect() {
376
+ _pandora.Modal.confirm({
377
+ title: (0, _locale.__)('metabase.prompt'),
378
+ // 提示
379
+ content: (0, _locale.__)('customColumn.confirmDelete'),
380
+ // 确认删除吗
381
+ onOk: function () {
382
+ var _onOk = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
383
+ var _caseList;
384
+ return _regenerator["default"].wrap(function (_context) {
385
+ while (1) switch (_context.prev = _context.next) {
386
+ case 0:
387
+ _caseList = caseList.slice(); // 删除选中项,selectedIndices 已经是排序好的了
388
+ selectedIndices.forEach(function (i) {
389
+ _caseList.splice(i, 1);
390
+ });
391
+ setCaseList(_caseList);
392
+ initPaste();
393
+ case 1:
394
+ case "end":
395
+ return _context.stop();
396
+ }
397
+ }, _callee);
398
+ }));
399
+ function onOk() {
400
+ return _onOk.apply(this, arguments);
401
+ }
402
+ return onOk;
403
+ }(),
404
+ onCancel: function onCancel() {}
405
+ });
406
+ };
366
407
  // 开启关闭勾选,清除别的过滤器勾选
367
408
  var _setIsCheck = function _setIsCheck(val) {
368
409
  initPaste();
@@ -471,6 +512,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
471
512
  transparentMask: true,
472
513
  content: (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
473
514
  children: (0, _jsxRuntime.jsx)(_index2["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other), {}, {
515
+ isExit: true,
516
+ isSubquery: true,
474
517
  notExistsColumns: exitData,
475
518
  fieldEnableAlias: false,
476
519
  toolbar: _toolbar,
@@ -810,6 +853,21 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
810
853
  });
811
854
  }
812
855
  };
856
+ var copyDom = function copyDom() {
857
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
858
+ if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
859
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
860
+ title: "\u5728\u6B64\u5904\u7C98\u8D34(".concat(selectedIndices.length || checkedItemsCount, ")\u9879"),
861
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
862
+ className: (0, _classnames["default"])(':Sqb-Filter-item-copy'),
863
+ onClick: function onClick() {
864
+ return handlePaste(index);
865
+ },
866
+ iconOnly: true,
867
+ icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
868
+ })
869
+ });
870
+ };
813
871
  return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
814
872
  children: (0, _jsxRuntime.jsxs)("div", {
815
873
  className: "Sqb-NotebookCell",
@@ -835,70 +893,88 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
835
893
  },
836
894
  primary: true,
837
895
  children: (0, _locale.__)('customColumn.copyAll')
838
- })]
839
- }), (_caseList2 = caseList) === null || _caseList2 === void 0 ? void 0 : _caseList2.map(function (v, i) {
840
- return (0, _jsxRuntime.jsxs)("div", {
841
- className: (0, _classnames["default"])('Sqb-Filter-item', {
842
- hover: ind === i,
843
- 'item-fixed': v.fixed || false,
844
- 'item-selected': isCheck
845
- }),
846
- onMouseEnter: function onMouseEnter(e) {
847
- if (isCheck) return;
848
- setInd(i);
896
+ }), selectedIndices.length > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
897
+ primary: true,
898
+ danger: true,
899
+ size: 'small',
900
+ onClick: function onClick() {
901
+ return delSelect();
849
902
  },
850
- onMouseLeave: function onMouseLeave() {
851
- if (isCheck) return;
852
- setInd(-1);
903
+ children: (0, _locale.__)('customColumn.delSelect')
904
+ }), !isCheck && checkedItemsCount > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
905
+ primary: true,
906
+ warning: true,
907
+ size: 'small',
908
+ onClick: function onClick() {
909
+ return initPaste();
853
910
  },
854
- children: [selectOperator({
855
- triggerElement: function triggerElement() {
856
- return (0, _jsxRuntime.jsx)("div", {
857
- className: 'left-arrow',
858
- "v-index": i,
859
- "v-type": 'before',
860
- onClick: function onClick() {
861
- if (!selectedIndices.length) addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'before');
862
- },
863
- children: (0, _jsxRuntime.jsx)("img", {
864
- src: _arrow["default"]
865
- })
866
- });
867
- },
868
- ind: i,
869
- position: 'before',
870
- trigger: 'hover'
871
- }), v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
872
- className: 'item-check',
873
- checked: selectedIndices.includes(i),
874
- disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
875
- onChange: function onChange(e) {
876
- var _e$target$checked, _e$target;
877
- return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
878
- }
879
- }), (0, _jsxRuntime.jsx)("div", {
880
- style: {
881
- pointerEvents: isCheck ? 'none' : 'auto'
911
+ children: "\u6E05\u9664\u590D\u5236"
912
+ })]
913
+ }), (_caseList2 = caseList) === null || _caseList2 === void 0 ? void 0 : _caseList2.map(function (v, i) {
914
+ return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
915
+ children: [copyDom(i), (0, _jsxRuntime.jsxs)("div", {
916
+ className: (0, _classnames["default"])('Sqb-Filter-item', {
917
+ hover: ind === i,
918
+ 'item-fixed': v.fixed || false,
919
+ 'item-selected': isCheck
920
+ }),
921
+ onMouseEnter: function onMouseEnter(e) {
922
+ if (isCheck) return;
923
+ setInd(i);
882
924
  },
883
- children: itemDom(v, i)
884
- }), selectOperator({
885
- triggerElement: function triggerElement(value) {
886
- return (0, _jsxRuntime.jsx)("div", {
887
- className: 'right-arrow',
888
- "v-index": i,
889
- "v-type": 'after',
890
- onClick: function onClick() {
891
- addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'after');
892
- },
893
- children: (0, _jsxRuntime.jsx)("img", {
894
- src: _arrow["default"]
895
- })
896
- });
925
+ onMouseLeave: function onMouseLeave() {
926
+ if (isCheck) return;
927
+ setInd(-1);
897
928
  },
898
- ind: i,
899
- position: 'after',
900
- trigger: 'hover'
901
- })]
929
+ children: [selectOperator({
930
+ triggerElement: function triggerElement() {
931
+ return (0, _jsxRuntime.jsx)("div", {
932
+ className: 'left-arrow',
933
+ "v-index": i,
934
+ "v-type": 'before',
935
+ onClick: function onClick() {
936
+ if (!selectedIndices.length) addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'before');
937
+ },
938
+ children: (0, _jsxRuntime.jsx)("img", {
939
+ src: _arrow["default"]
940
+ })
941
+ });
942
+ },
943
+ ind: i,
944
+ position: 'before',
945
+ trigger: 'hover'
946
+ }), v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
947
+ className: 'item-check',
948
+ checked: selectedIndices.includes(i),
949
+ disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
950
+ onChange: function onChange(e) {
951
+ var _e$target$checked, _e$target;
952
+ return toggleSelect(i, (_e$target$checked = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : !selectedIndices.includes(i));
953
+ }
954
+ }), (0, _jsxRuntime.jsx)("div", {
955
+ style: {
956
+ pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
957
+ },
958
+ children: itemDom(v, i)
959
+ }), selectOperator({
960
+ triggerElement: function triggerElement(value) {
961
+ return (0, _jsxRuntime.jsx)("div", {
962
+ className: 'right-arrow',
963
+ "v-index": i,
964
+ "v-type": 'after',
965
+ onClick: function onClick() {
966
+ addOperator(_types.AtomsTypeEnum.UNKNOWN, i, 'after');
967
+ },
968
+ children: (0, _jsxRuntime.jsx)("img", {
969
+ src: _arrow["default"]
970
+ })
971
+ });
972
+ },
973
+ ind: i,
974
+ position: 'after',
975
+ trigger: 'hover'
976
+ })]
977
+ }, i)]
902
978
  }, i);
903
979
  }), Array.from(caseList).length < 1 && selectOperator({
904
980
  triggerElement: function triggerElement() {
@@ -910,18 +986,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
910
986
  ind: -1,
911
987
  position: 'add',
912
988
  trigger: 'click'
913
- }), isCopy && (selectedIndices.length > 0 || checkedItemsCount > 0) && selectOperator({
914
- triggerElement: function triggerElement(value) {
915
- return (0, _jsxRuntime.jsxs)("div", {
916
- className: (0, _classnames["default"])("Sqb-TableName green-name"),
917
- onClick: handlePaste,
918
- children: ["\u7C98\u8D34(", selectedIndices.length || checkedItemsCount, ")\u9879"]
919
- });
920
- },
921
- ind: -1,
922
- position: 'add',
923
- trigger: 'click'
924
- }), showPreview && (0, _jsxRuntime.jsx)("div", {
989
+ }), copyDom(), showPreview && (0, _jsxRuntime.jsx)("div", {
925
990
  className: (0, _classnames["default"])("mb-2 font-bold uppercase tracking-wider preview-box"),
926
991
  style: {
927
992
  fontSize: 12,
@@ -22,6 +22,19 @@
22
22
  }
23
23
  .Sqb-Filter-item {
24
24
  position: relative;
25
+ // &-copy {
26
+ // position: absolute;
27
+ // left: 0;
28
+ // top: 50%;
29
+ // z-index: 1;
30
+ // transform: translate(-100%, -50%);
31
+ // &.isEndCopy {
32
+ // position: relative;
33
+ // left: auto;
34
+ // top: auto;
35
+ // transform: none;
36
+ // }
37
+ // }
25
38
  &.item-selected {
26
39
  .item-check {
27
40
  display: block;
@@ -32,7 +32,8 @@ var Metabase = function Metabase(props) {
32
32
  _props$readonly = props.readonly,
33
33
  readonly = _props$readonly === void 0 ? false : _props$readonly,
34
34
  onOk = props.onOk,
35
- metabaseCopy = props.metabaseCopy;
35
+ metabaseCopy = props.metabaseCopy,
36
+ moduleCopy = props.moduleCopy;
36
37
  var store = (0, _useProvider.useStore)();
37
38
  var _useState = (0, _react.useState)(false),
38
39
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -137,8 +138,29 @@ var Metabase = function Metabase(props) {
137
138
  }();
138
139
  // 复制功能
139
140
  var copy = function copy() {
140
- return (0, _jsxRuntime.jsx)(_pandora.Space, {
141
- children: metabaseCopy && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
141
+ return (0, _jsxRuntime.jsxs)(_pandora.Space, {
142
+ children: [moduleCopy && (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
143
+ children: (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
144
+ title: '开启勾选后可勾选组进行复制,复制后可在其他地方粘贴使用',
145
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
146
+ size: 'small',
147
+ type: 'primary',
148
+ warning: store.isMetabaseCopy,
149
+ className: (0, _classnames["default"])("Sqb-copy-btn ", {
150
+ 'primary-color': !store.isMetabaseCopy
151
+ }),
152
+ onClick: function onClick() {
153
+ // if (store.isMetabaseCopy) {
154
+ // storage._metabaseCopyModule = null;
155
+ // }
156
+ store.setIsMetabaseCopy(!store.isMetabaseCopy);
157
+ store.setMetabaseCopyModule([]);
158
+ _storage["default"]._metabaseCopyModule = [];
159
+ },
160
+ children: store.isMetabaseCopy ? '清除勾选组复制' : '开启勾选组复制'
161
+ })
162
+ })
163
+ }), metabaseCopy && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
142
164
  children: [(0, _jsxRuntime.jsx)(_pandora.Tooltip, {
143
165
  title: '点击复制当前配置,您可以在其他地方粘贴使用',
144
166
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
@@ -175,7 +197,7 @@ var Metabase = function Metabase(props) {
175
197
  children: (0, _locale.__)('metabase.paste')
176
198
  })
177
199
  })]
178
- })
200
+ })]
179
201
  });
180
202
  };
181
203
  return (
@@ -23,6 +23,24 @@
23
23
  }
24
24
  &-list {
25
25
  padding-top: 1.5rem;
26
+ .Sqb-item-check {
27
+ display: flex;
28
+ align-items: center;
29
+ width: 66.6667%;
30
+ .pd-Checkbox-text {
31
+ width: 100%;
32
+
33
+ .Sqb-item--content {
34
+ width: 100%;
35
+ }
36
+
37
+ pointer-events: none; /* 该 div 及内部所有元素不接收鼠标事件 */
38
+
39
+ .Sqb-item {
40
+ pointer-events: none; /* 该 div 及内部所有元素不接收鼠标事件 */
41
+ }
42
+ }
43
+ }
26
44
  }
27
45
  &-hover-parent {
28
46
  margin-bottom: 16px;
@@ -52,10 +70,18 @@
52
70
  width: 16px;
53
71
  height: 16px;
54
72
  color: #b8bbc3;
55
- margin-left: auto;
73
+ // margin-left: auto;
56
74
  visibility: hidden;
57
75
  cursor: pointer;
58
76
  }
77
+ &-actions {
78
+ margin-left: auto;
79
+ // align-items: center;
80
+ .pd-Space-item {
81
+ display: flex;
82
+ align-items: center;
83
+ }
84
+ }
59
85
  &--content {
60
86
  width: 66.6667%;
61
87
  box-sizing: border-box;
@@ -419,6 +445,11 @@
419
445
  visibility: visible;
420
446
  }
421
447
  }
448
+ &-copy {
449
+ width: 33%;
450
+ min-width: 150px;
451
+ margin: 5px 0;
452
+ }
422
453
  }
423
454
 
424
455
  & > &-btn {
@@ -3,6 +3,8 @@ interface HeaderProps {
3
3
  className?: string;
4
4
  onClose?: Function;
5
5
  moduleDiff?: boolean;
6
+ moduleCopy?: boolean;
7
+ groupIndex: number;
6
8
  meta?: any;
7
9
  isDataModule?: boolean;
8
10
  }
@@ -9,6 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _pandora = require("@gingkoo/pandora");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
12
13
  var _icons = require("../../icons");
13
14
  var _locale = require("../../../locale");
14
15
  var _useProvider = require("../../../hooks/use-provider");
@@ -16,6 +17,7 @@ var _utils = require("../../../utils");
16
17
  var _diffViewer = _interopRequireDefault(require("../../dialog/diff-viewer"));
17
18
  var Header = function Header(props) {
18
19
  var meta = props.meta,
20
+ groupIndex = props.groupIndex,
19
21
  isDataModule = props.isDataModule;
20
22
  var store = (0, _useProvider.useStore)();
21
23
  var diff = /*#__PURE__*/function () {
@@ -64,12 +66,15 @@ var Header = function Header(props) {
64
66
  onClick: diff,
65
67
  children: "\u5DEE\u5F02\u5BF9\u6BD4"
66
68
  })
67
- }), props.onClose && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
68
- placement: 'top',
69
- title: (0, _locale.__)('data.del'),
70
- children: (0, _jsxRuntime.jsx)(_icons.CloseIcon2, {
71
- className: "Sqb-item-close",
72
- onClick: props.onClose
69
+ }), (0, _jsxRuntime.jsx)(_pandora.Space, {
70
+ className: (0, _classnames["default"])(':Sqb-item-actions'),
71
+ children: props.onClose && !store.isMetabaseCopy && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
72
+ placement: 'top',
73
+ title: (0, _locale.__)('data.del'),
74
+ children: (0, _jsxRuntime.jsx)(_icons.CloseIcon2, {
75
+ className: "Sqb-item-close",
76
+ onClick: props.onClose
77
+ })
73
78
  })
74
79
  })]
75
80
  });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface HeaderProps {
3
+ className?: string;
4
+ groupIndex: number;
5
+ meta?: any;
6
+ children?: React.ReactNode;
7
+ }
8
+ declare const ItemWrapper: (props: HeaderProps) => string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
9
+ export default ItemWrapper;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ var _pandora = require("@gingkoo/pandora");
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ var _useProvider = require("../../../hooks/use-provider");
13
+ var _utils = require("../../../utils");
14
+ var _storage = _interopRequireDefault(require("../../../utils/storage"));
15
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
16
+ var ItemWrapper = function ItemWrapper(props) {
17
+ var meta = props.meta,
18
+ groupIndex = props.groupIndex,
19
+ children = props.children;
20
+ var store = (0, _useProvider.useStore)();
21
+ var changeCopyModule = function changeCopyModule(isCheck, meta) {
22
+ var data = (0, _cloneDeep["default"])(store.metabaseCopyModule) || [];
23
+ if (isCheck) {
24
+ data = [].concat((0, _toConsumableArray2["default"])(data), [meta]);
25
+ } else {
26
+ data = data.filter(function (v) {
27
+ return v.metaKey !== meta.metaKey;
28
+ });
29
+ }
30
+ store.setMetabaseCopyModule(data);
31
+ _storage["default"]._metabaseCopyModule = data;
32
+ };
33
+ if (store.isMetabaseCopy && meta.type !== 'union' && meta.type !== 'data') {
34
+ return (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
35
+ checked: (0, _utils.metaIsCheck)(store.metabaseCopyModule, meta),
36
+ onChange: function onChange(val) {
37
+ changeCopyModule(val, meta);
38
+ },
39
+ className: (0, _classnames["default"])(':Sqb-item-check'),
40
+ children: children
41
+ });
42
+ }
43
+ return children;
44
+ };
45
+ var _default = exports["default"] = ItemWrapper;
@@ -1,7 +1,18 @@
1
+ import { TypeEnum } from '../../../store/enum';
1
2
  import { MetaListType } from '../../../store/types';
2
3
  interface PropsType {
3
4
  meta: MetaListType;
4
5
  groupIndex: number;
5
6
  }
7
+ type IconInfoType = {
8
+ name: string;
9
+ icon: JSX.Element;
10
+ className?: string;
11
+ };
12
+ export declare const IconTypeMap: Map<TypeEnum, IconInfoType>;
13
+ /**
14
+ * 查找模块下面能放哪些icon (参考来源:metabase.com)
15
+ */
16
+ export declare const findNextIcon: (store: any, props: PropsType) => TypeEnum[];
6
17
  declare const NextDom: (props: PropsType) => import("react/jsx-runtime").JSX.Element | null;
7
18
  export default NextDom;
@@ -1,18 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports["default"] = void 0;
8
+ exports.findNextIcon = exports["default"] = exports.IconTypeMap = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
8
11
  var _jsxRuntime = require("react/jsx-runtime");
12
+ var _react = _interopRequireWildcard(require("react"));
9
13
  var _classnames = _interopRequireDefault(require("classnames"));
10
14
  var _locale = require("../../../locale");
11
15
  var _enum = require("../../../store/enum");
12
16
  var _pandora = require("@gingkoo/pandora");
17
+ var _pandoraIcons = require("@gingkoo/pandora-icons");
18
+ var _storage = _interopRequireDefault(require("../../../utils/storage"));
13
19
  var _utils = require("../../../utils");
14
20
  var _useProvider = require("../../../hooks/use-provider");
15
21
  var _icons = require("../../icons");
22
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
23
  // import { type SqlVisionStoreType } from '../../../store/helper';
17
24
 
18
25
  var IconSIzeEnum;
@@ -20,7 +27,7 @@ var IconSIzeEnum;
20
27
  IconSIzeEnum["SMALL"] = "small";
21
28
  IconSIzeEnum["LARGE"] = "large";
22
29
  })(IconSIzeEnum || (IconSIzeEnum = {}));
23
- var IconTypeMap = new Map([[_enum.TypeEnum.filter, {
30
+ var IconTypeMap = exports.IconTypeMap = new Map([[_enum.TypeEnum.filter, {
24
31
  name: (0, _locale.__)('SqlQueryBuilder.filter'),
25
32
  icon: (0, _jsxRuntime.jsx)(_icons.FilterIcon, {}),
26
33
  className: 'filter'
@@ -125,7 +132,7 @@ var judgeSize = function judgeSize(store, props, nextLen, groupIndex) {
125
132
  /**
126
133
  * 查找模块下面能放哪些icon (参考来源:metabase.com)
127
134
  */
128
- var findNextIcon = function findNextIcon(store, props) {
135
+ var findNextIcon = exports.findNextIcon = function findNextIcon(store, props) {
129
136
  var _store$metaList$group;
130
137
  var meta = props.meta,
131
138
  groupIndex = props.groupIndex;
@@ -326,15 +333,56 @@ var NextDom = function NextDom(props) {
326
333
  store.addMeta(type, index + 1, groupIndex);
327
334
  }
328
335
  var MetaIconDom = metaIcon(size, handleClick);
329
- return (0, _jsxRuntime.jsx)("div", {
330
- className: "Sqb-item--func",
331
- children: sortList(available).filter(function (v) {
332
- return ~store.toolbar.indexOf(v);
333
- }).map(function (v) {
334
- return (0, _jsxRuntime.jsx)(MetaIconDom, {
335
- type: v
336
- }, v);
337
- })
336
+ var _React$useState = _react["default"].useState(false),
337
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
338
+ isShowAdd = _React$useState2[0],
339
+ setIsShowAdd = _React$useState2[1];
340
+ (0, _react.useEffect)(function () {
341
+ if (store.metabaseCopyModule) {
342
+ // let { prevItem, nextItem } = getHelper(store.metaList[groupIndex].list, meta);
343
+ var nextTypes = findNextIcon(store, {
344
+ meta: meta,
345
+ groupIndex: groupIndex
346
+ });
347
+ var isCan = (0, _utils.isCanPaste)(store.metabaseCopyModule, {
348
+ nextTypes: (0, _toConsumableArray2["default"])(nextTypes)
349
+ });
350
+ setIsShowAdd(isCan);
351
+ } else {
352
+ setIsShowAdd(false);
353
+ }
354
+ }, [store.metabaseCopyModule]);
355
+ var handlePaste = function handlePaste() {
356
+ var _store$metaList3;
357
+ var index = (_store$metaList3 = store.metaList) === null || _store$metaList3 === void 0 || (_store$metaList3 = _store$metaList3[groupIndex]) === null || _store$metaList3 === void 0 || (_store$metaList3 = _store$metaList3.list) === null || _store$metaList3 === void 0 ? void 0 : _store$metaList3.indexOf(meta);
358
+ store.addMeta('', index + 1, groupIndex, store.metabaseCopyModule);
359
+ // 粘贴后重置
360
+ store.setMetabaseCopyModule([]);
361
+ store.setIsMetabaseCopy(false);
362
+ _storage["default"]._metabaseCopyModule = [];
363
+ };
364
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
365
+ children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
366
+ title: "\u5728\u6B64\u5904\u7C98\u8D34",
367
+ children: (0, _jsxRuntime.jsxs)(_pandora.Button, {
368
+ className: (0, _classnames["default"])(':Sqb-item-copy'),
369
+ onClick: handlePaste,
370
+ // iconOnly={false}
371
+ // icon={}
372
+ dashed: true,
373
+ ghost: true,
374
+ children: [(0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {}), "\u5C06\u5185\u5BB9\u7C98\u8D34\u5230\u6B64\u5904"]
375
+ })
376
+ }), (0, _jsxRuntime.jsx)("div", {
377
+ className: "Sqb-item--func",
378
+ children: sortList(available).filter(function (v) {
379
+ return ~store.toolbar.indexOf(v);
380
+ }).map(function (v) {
381
+ return (0, _jsxRuntime.jsx)(MetaIconDom, {
382
+ type: v
383
+ }, v);
384
+ })
385
+ })]
338
386
  });
339
387
  };
340
388
  var _default = exports["default"] = NextDom;