@gingkoo/pandora-metabase 1.0.123 → 1.0.124

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.
@@ -3,12 +3,14 @@ interface DateRangeFormatPickerProps {
3
3
  value?: string[];
4
4
  format?: string;
5
5
  onChange?: (val: string[], format?: string) => void;
6
+ getPopupContainer?: (node: HTMLElement) => Element;
6
7
  }
7
8
  export declare const DateRangeFormatPicker: React.FC<DateRangeFormatPickerProps>;
8
9
  interface DateFormatPickerProps {
9
10
  value?: string;
10
11
  format?: string;
11
12
  onChange?: (val: string, format?: string) => void;
13
+ getPopupContainer?: (node: HTMLElement) => Element;
12
14
  }
13
15
  export declare const DateFormatPicker: React.FC<DateFormatPickerProps>;
14
16
  export {};
@@ -24,7 +24,8 @@ var DEFAULT_FORMAT = 'YYYY-MM-DD HH:mm';
24
24
  var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
25
25
  var value = _ref.value,
26
26
  format = _ref.format,
27
- onChange = _ref.onChange;
27
+ onChange = _ref.onChange,
28
+ getPopupContainer = _ref.getPopupContainer;
28
29
  var _useState = (0, _react.useState)(format || DEFAULT_FORMAT),
29
30
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
30
31
  currentFormat = _useState2[0],
@@ -79,6 +80,7 @@ var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFo
79
80
  },
80
81
  value: currentFormat,
81
82
  onChange: handleFormatChange,
83
+ getPopupContainer: getPopupContainer,
82
84
  children: DATE_FORMAT_OPTIONS.map(function (option) {
83
85
  return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
84
86
  value: option.value,
@@ -93,14 +95,16 @@ var DateRangeFormatPicker = exports.DateRangeFormatPicker = function DateRangeFo
93
95
  },
94
96
  format: currentFormat,
95
97
  showTime: showTime,
96
- mode: getRangePickerMode()
98
+ mode: getRangePickerMode(),
99
+ getPopupContainer: getPopupContainer
97
100
  })]
98
101
  });
99
102
  };
100
103
  var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref2) {
101
104
  var value = _ref2.value,
102
105
  format = _ref2.format,
103
- onChange = _ref2.onChange;
106
+ onChange = _ref2.onChange,
107
+ getPopupContainer = _ref2.getPopupContainer;
104
108
  var _useState3 = (0, _react.useState)(format || DEFAULT_FORMAT),
105
109
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
106
110
  currentFormat = _useState4[0],
@@ -147,7 +151,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
147
151
  onChange: handleYearChange,
148
152
  style: {
149
153
  flex: 1
150
- }
154
+ },
155
+ getPopupContainer: getPopupContainer
151
156
  });
152
157
  }
153
158
  if (isMonthOnly) {
@@ -157,7 +162,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
157
162
  style: {
158
163
  flex: 1
159
164
  },
160
- format: currentFormat
165
+ format: currentFormat,
166
+ getPopupContainer: getPopupContainer
161
167
  });
162
168
  }
163
169
  return (0, _jsxRuntime.jsx)(_pandora.DatePicker, {
@@ -167,7 +173,8 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
167
173
  flex: 1
168
174
  },
169
175
  format: currentFormat,
170
- showTime: showTime
176
+ showTime: showTime,
177
+ getPopupContainer: getPopupContainer
171
178
  });
172
179
  };
173
180
  return (0, _jsxRuntime.jsxs)("div", {
@@ -181,6 +188,7 @@ var DateFormatPicker = exports.DateFormatPicker = function DateFormatPicker(_ref
181
188
  },
182
189
  value: currentFormat,
183
190
  onChange: handleFormatChange,
191
+ getPopupContainer: getPopupContainer,
184
192
  children: DATE_FORMAT_OPTIONS.map(function (option) {
185
193
  return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
186
194
  value: option.value,
@@ -9,6 +9,7 @@ interface PropsType {
9
9
  isCustom?: boolean;
10
10
  container?: any;
11
11
  filterCustomType?: boolean;
12
+ parentPopupChannel?: 'primary' | 'secondary';
12
13
  }
13
14
  declare const _default: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
14
15
  export default _default;
@@ -54,7 +54,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
54
54
  _ref$container = _ref.container,
55
55
  container = _ref$container === void 0 ? null : _ref$container,
56
56
  _ref$filterCustomType = _ref.filterCustomType,
57
- filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType;
57
+ filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType,
58
+ parentPopupChannel = _ref.parentPopupChannel;
58
59
  var _useState = (0, _react.useState)(value),
59
60
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
60
61
  curColumn = _useState2[0],
@@ -84,6 +85,37 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
84
85
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
85
86
  isNext = _useState12[0],
86
87
  setIsNext = _useState12[1];
88
+ var setParentClosable = function setParentClosable(closable) {
89
+ if (parentPopupChannel === 'secondary') {
90
+ store.setClosable2(closable);
91
+ return;
92
+ }
93
+ store.setClosable(closable);
94
+ };
95
+ var setDropdownClosable = function setDropdownClosable(visible) {
96
+ if (visible) {
97
+ setParentClosable(false);
98
+ return;
99
+ }
100
+ setTimeout(function () {
101
+ return setParentClosable(true);
102
+ }, 300);
103
+ };
104
+ var setSelectPopupClosable = function setSelectPopupClosable(visible) {
105
+ setPopupVisible(visible);
106
+ if (visible) {
107
+ setParentClosable(false);
108
+ return;
109
+ }
110
+ setTimeout(function () {
111
+ return setParentClosable(true);
112
+ }, 300);
113
+ };
114
+ var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
115
+ var _node$closest;
116
+ var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
117
+ return popupContainer || document.body;
118
+ };
87
119
  var table2Selected = Boolean(rhsVal && (rhsVal === null || rhsVal === void 0 ? void 0 : rhsVal.length) > 0);
88
120
  var disabled = (0, _react.useMemo)(function () {
89
121
  if (!condition) return true;
@@ -362,6 +394,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
362
394
  return (0, _jsxRuntime.jsx)("div", {
363
395
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
364
396
  trigger: ['click'],
397
+ onVisibleChange: setDropdownClosable,
398
+ getPopupContainer: getCurrentPopupContainer,
365
399
  onChange: function onChange(key) {
366
400
  setRhsVal([{
367
401
  type: _types.AtomsTypeEnum.INPUT_STRING,
@@ -404,6 +438,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
404
438
  }
405
439
  }), (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
406
440
  trigger: ['click'],
441
+ onVisibleChange: setDropdownClosable,
442
+ getPopupContainer: getCurrentPopupContainer,
407
443
  droplist: [{
408
444
  key: '分',
409
445
  label: (0, _locale.__)('filter.minute')
@@ -444,6 +480,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
444
480
  return (0, _jsxRuntime.jsx)(_dateFormatPicker.DateFormatPicker, {
445
481
  value: _dateVal,
446
482
  format: _dateFormat,
483
+ getPopupContainer: getCurrentPopupContainer,
447
484
  onChange: function onChange(val, format) {
448
485
  if (val) {
449
486
  setRhsVal([{
@@ -467,6 +504,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
467
504
  return (0, _jsxRuntime.jsx)(_dateFormatPicker.DateFormatPicker, {
468
505
  value: _dateVal2,
469
506
  format: _dateFormat2,
507
+ getPopupContainer: getCurrentPopupContainer,
470
508
  onChange: function onChange(val, format) {
471
509
  if (val) {
472
510
  setRhsVal([{
@@ -492,6 +530,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
492
530
  placeholder: "\u53EF\u8F93\u5165\u56DE\u8F66\u65B0\u589E\u4E0B\u62C9\u9009\u9879",
493
531
  allowCreate: true,
494
532
  multiple: true,
533
+ getPopupContainer: getCurrentPopupContainer,
495
534
  value: options,
496
535
  onChange: function onChange(val) {
497
536
  setRhsVal([{
@@ -501,10 +540,10 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
501
540
  },
502
541
  popupVisible: popupVisible,
503
542
  onBlur: function onBlur() {
504
- setPopupVisible(false);
543
+ setSelectPopupClosable(false);
505
544
  },
506
545
  onClick: function onClick() {
507
- setPopupVisible(true);
546
+ setSelectPopupClosable(true);
508
547
  },
509
548
  children: options.map(function (option) {
510
549
  return (0, _jsxRuntime.jsx)(_pandora.Select.Option, {
@@ -536,7 +575,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
536
575
  });
537
576
  }
538
577
  var selectConstant = function selectConstant(e) {
539
- store.setClosable(false);
578
+ setParentClosable(false);
540
579
  var node = e.currentTarget;
541
580
  var _val = node.getAttribute('v-val');
542
581
  store.setPopup2({
@@ -552,13 +591,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
552
591
  newVal[0].id = val;
553
592
  newVal[0].val = (0, _utils.getConstantLabel)(store.constantList, val);
554
593
  setRhsVal(newVal);
555
- store.setClosable(true);
594
+ setParentClosable(true);
556
595
  }
557
596
  })
558
597
  });
559
598
  };
560
599
  var onRepeat = function onRepeat(e) {
561
- store.setClosable(false);
600
+ setParentClosable(false);
562
601
  store.setPopup2({
563
602
  visible: true,
564
603
  node: e.currentTarget,
@@ -600,13 +639,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
600
639
  type: _types.AtomsTypeEnum.FIELD
601
640
  }]);
602
641
  }
603
- store.setClosable(true);
642
+ setParentClosable(true);
604
643
  }
605
644
  })
606
645
  });
607
646
  };
608
647
  var selectTable = function selectTable(e) {
609
- store.setClosable(false);
648
+ setParentClosable(false);
610
649
  var node = e.currentTarget;
611
650
  var _index = Number(node.getAttribute('v-index'));
612
651
  store.setPopup2({
@@ -633,7 +672,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
633
672
  store.setPopup2({
634
673
  visible: false
635
674
  });
636
- store.setClosable(true);
675
+ setParentClosable(true);
637
676
  }
638
677
  })
639
678
  });
@@ -680,6 +719,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
680
719
  className: 'left-info-formula',
681
720
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
682
721
  trigger: ['click'],
722
+ onVisibleChange: setDropdownClosable,
723
+ getPopupContainer: getCurrentPopupContainer,
683
724
  onChange: function onChange(key) {
684
725
  changeFormula(key);
685
726
  },
@@ -745,6 +786,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
745
786
  className: 'right-info',
746
787
  children: [filterCustomType && (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
747
788
  trigger: ['click'],
789
+ onVisibleChange: setDropdownClosable,
790
+ getPopupContainer: getCurrentPopupContainer,
748
791
  onChange: function onChange(key) {
749
792
  setCondition('');
750
793
  setCurColumn((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, curColumn), {}, {
@@ -768,6 +811,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
768
811
  })
769
812
  }), (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
770
813
  trigger: ['click'],
814
+ onVisibleChange: setDropdownClosable,
815
+ getPopupContainer: getCurrentPopupContainer,
771
816
  onChange: function onChange(key) {
772
817
  setCurColumn((0, _objectSpread2["default"])({}, curColumn));
773
818
  setDefaultVal(key);
@@ -633,6 +633,11 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
633
633
  visible: false
634
634
  });
635
635
  }
636
+ var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
637
+ var _node$closest;
638
+ var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
639
+ return popupContainer || document.body;
640
+ };
636
641
  var getSelectTriggerProps = function getSelectTriggerProps() {
637
642
  return {
638
643
  clickToClose: true,
@@ -657,6 +662,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
657
662
  showSearch: true,
658
663
  trigger: trigger,
659
664
  triggerProps: getSelectTriggerProps(),
665
+ getPopupContainer: getCurrentPopupContainer,
660
666
  virtualListProps: {
661
667
  threshold: null
662
668
  },
@@ -754,6 +760,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
754
760
  filterCustomType: filterCustomType,
755
761
  data: data,
756
762
  container: ref === null || ref === void 0 ? void 0 : ref.current,
763
+ parentPopupChannel: 'primary',
757
764
  value: val || {},
758
765
  onChange: function onChange(data) {
759
766
  var _caseList = caseList.slice();
@@ -1216,6 +1223,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1216
1223
  }),
1217
1224
  node: (0, _jsxRuntime.jsx)(_pandora.Select, {
1218
1225
  triggerProps: getSelectTriggerProps(),
1226
+ getPopupContainer: getCurrentPopupContainer,
1219
1227
  value: v.val,
1220
1228
  triggerElement: function triggerElement() {
1221
1229
  return renderTokenContent((0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -1317,6 +1325,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1317
1325
  }),
1318
1326
  node: (0, _jsxRuntime.jsx)(_pandora.Select, {
1319
1327
  triggerProps: getSelectTriggerProps(),
1328
+ getPopupContainer: getCurrentPopupContainer,
1320
1329
  multiple: v.multiple,
1321
1330
  value: v.val,
1322
1331
  triggerElement: function triggerElement() {
@@ -26,6 +26,7 @@ var _metaIcon = _interopRequireDefault(require("./components/meta-icon"));
26
26
  var _header = _interopRequireDefault(require("./components/header"));
27
27
  var _itemWrapper = _interopRequireDefault(require("./components/item-wrapper"));
28
28
  var _itemName = _interopRequireDefault(require("./components/item-name"));
29
+ var _helperDom = require("../../utils/helper-dom");
29
30
  var CustomColumn = function CustomColumn(props) {
30
31
  var meta = props.meta,
31
32
  groupIndex = props.groupIndex;
@@ -213,7 +214,9 @@ var CustomColumn = function CustomColumn(props) {
213
214
  var showSubQuery = function showSubQuery(e, i) {
214
215
  var newMeta = store.metaList[groupIndex].list.slice();
215
216
  var _value = newMeta[index].customColumn[i] || [];
217
+ var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
216
218
  var o = _pandora.Modal2.openModal({
219
+ zIndex: childModalZIndex,
217
220
  title: (0, _locale.__)('SqlQueryBuilder.customExpression'),
218
221
  transparentMask: true,
219
222
  content: (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
@@ -365,7 +365,6 @@ var GroupBy = function GroupBy(props) {
365
365
  newMeta = store.metaList[groupIndex].list.slice();
366
366
  newMeta[index].by[i].fieldAlias = fieldAlias;
367
367
  newMeta[index].by[i].sql = (0, _helper2.summarizeByToSql)(newMeta[index].by[i]);
368
- newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].by[i]);
369
368
  store.setMeta(newMeta, groupIndex, {
370
369
  obj: newMeta[index].by,
371
370
  type: _types.ChangeType.by
@@ -460,6 +459,10 @@ var GroupBy = function GroupBy(props) {
460
459
  var field = getField(record);
461
460
  return field.fieldName ? [field] : [];
462
461
  };
462
+ var getErrorCheckField = function getErrorCheckField(record) {
463
+ var atoms = getAtomsValue(record);
464
+ return _getFirstField(atoms) || getField(record);
465
+ };
463
466
  var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
464
467
  var _store$preProps;
465
468
  var atoms = getAtomsValue(record);
@@ -496,7 +499,7 @@ var GroupBy = function GroupBy(props) {
496
499
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
497
500
  children: [meta.by.map(function (v, i) {
498
501
  return (0, _jsxRuntime.jsx)(_itemName["default"], {
499
- isError: (0, _utils.isExistsError)([getField(v)], store.existsError),
502
+ isError: (0, _utils.isExistsError)([getErrorCheckField(v)], store.existsError),
500
503
  children: (0, _jsxRuntime.jsxs)("div", {
501
504
  className: "Sqb-TableName green-name",
502
505
  onClick: function onClick(e) {
@@ -161,7 +161,11 @@ var SelectIndex = function SelectIndex(props) {
161
161
  _pandora.Toast.warning(summarizeWithoutArgumentMessage);
162
162
  return;
163
163
  }
164
- newMeta[index].group.splice(i, 1, normalizeGroupRecord(data));
164
+ var prevRecord = newMeta[index].group[i];
165
+ var nextRecord = normalizeGroupRecord(data);
166
+ nextRecord.fieldAlias = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldAlias) || nextRecord.fieldAlias;
167
+ nextRecord.fieldUuid = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldUuid) || nextRecord.fieldUuid;
168
+ newMeta[index].group.splice(i, 1, nextRecord);
165
169
  newMeta[index].group = newMeta[index].group.map(function (v) {
166
170
  var _summarizeToSql = (0, _helper.summarizeToSql)(newMeta[index].group, v),
167
171
  sql = _summarizeToSql.sql,
@@ -169,7 +173,8 @@ var SelectIndex = function SelectIndex(props) {
169
173
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
170
174
  name: v.name || v.quotes,
171
175
  sql: sql,
172
- fieldAlias: fieldAlias
176
+ fieldUuid: v.fieldUuid || (0, _helper2.uuidv4)('field'),
177
+ fieldAlias: v.fieldAlias || fieldAlias
173
178
  });
174
179
  });
175
180
  store.setMeta(newMeta, groupIndex, {
@@ -221,7 +226,7 @@ var SelectIndex = function SelectIndex(props) {
221
226
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
222
227
  name: v.name || v.quotes,
223
228
  sql: sql,
224
- fieldUuid: (0, _helper2.uuidv4)('field'),
229
+ fieldUuid: v.fieldUuid || (0, _helper2.uuidv4)('field'),
225
230
  fieldAlias: v.fieldAlias || fieldAlias,
226
231
  summarizeType: _types.MetaSummarize_Enum.GROUP
227
232
  });
@@ -276,7 +281,6 @@ var SelectIndex = function SelectIndex(props) {
276
281
  newMeta = store.metaList[groupIndex].list.slice();
277
282
  newMeta[index].group[i].fieldAlias = fieldAlias;
278
283
  newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
279
- newMeta = (0, _utils.changeFieldAlias)(newMeta, newMeta[index].group[i]);
280
284
  store.setMeta(newMeta, groupIndex, {
281
285
  obj: newMeta[index].group,
282
286
  type: _types.ChangeType.group
@@ -379,6 +383,10 @@ var SelectIndex = function SelectIndex(props) {
379
383
  var field = getField(record);
380
384
  return field.fieldName ? [field] : [];
381
385
  };
386
+ var getErrorCheckField = function getErrorCheckField(record) {
387
+ var atoms = getAtomsValue(record);
388
+ return _getFirstField(atoms) || getField(record);
389
+ };
382
390
  var normalizeGroupRecord = function normalizeGroupRecord(record) {
383
391
  var atoms = getAtomsValue(record);
384
392
  var firstField = _getFirstField(atoms);
@@ -406,7 +414,7 @@ var SelectIndex = function SelectIndex(props) {
406
414
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
407
415
  children: [meta.group.map(function (v, i) {
408
416
  return (0, _jsxRuntime.jsx)(_itemName["default"], {
409
- isError: (0, _utils.isExistsError)([getField(v)], store.existsError),
417
+ isError: (0, _utils.isExistsError)([getErrorCheckField(v)], store.existsError),
410
418
  children: (0, _jsxRuntime.jsxs)("div", {
411
419
  className: "Sqb-TableName green-name",
412
420
  onClick: function onClick(e) {
@@ -3,12 +3,14 @@ interface DateRangeFormatPickerProps {
3
3
  value?: string[];
4
4
  format?: string;
5
5
  onChange?: (val: string[], format?: string) => void;
6
+ getPopupContainer?: (node: HTMLElement) => Element;
6
7
  }
7
8
  export declare const DateRangeFormatPicker: React.FC<DateRangeFormatPickerProps>;
8
9
  interface DateFormatPickerProps {
9
10
  value?: string;
10
11
  format?: string;
11
12
  onChange?: (val: string, format?: string) => void;
13
+ getPopupContainer?: (node: HTMLElement) => Element;
12
14
  }
13
15
  export declare const DateFormatPicker: React.FC<DateFormatPickerProps>;
14
16
  export {};
@@ -17,7 +17,8 @@ var DEFAULT_FORMAT = 'YYYY-MM-DD HH:mm';
17
17
  export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
18
18
  var value = _ref.value,
19
19
  format = _ref.format,
20
- onChange = _ref.onChange;
20
+ onChange = _ref.onChange,
21
+ getPopupContainer = _ref.getPopupContainer;
21
22
  var _useState = useState(format || DEFAULT_FORMAT),
22
23
  _useState2 = _slicedToArray(_useState, 2),
23
24
  currentFormat = _useState2[0],
@@ -72,6 +73,7 @@ export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
72
73
  },
73
74
  value: currentFormat,
74
75
  onChange: handleFormatChange,
76
+ getPopupContainer: getPopupContainer,
75
77
  children: DATE_FORMAT_OPTIONS.map(function (option) {
76
78
  return _jsx(Select.Option, {
77
79
  value: option.value,
@@ -86,14 +88,16 @@ export var DateRangeFormatPicker = function DateRangeFormatPicker(_ref) {
86
88
  },
87
89
  format: currentFormat,
88
90
  showTime: showTime,
89
- mode: getRangePickerMode()
91
+ mode: getRangePickerMode(),
92
+ getPopupContainer: getPopupContainer
90
93
  })]
91
94
  });
92
95
  };
93
96
  export var DateFormatPicker = function DateFormatPicker(_ref2) {
94
97
  var value = _ref2.value,
95
98
  format = _ref2.format,
96
- onChange = _ref2.onChange;
99
+ onChange = _ref2.onChange,
100
+ getPopupContainer = _ref2.getPopupContainer;
97
101
  var _useState3 = useState(format || DEFAULT_FORMAT),
98
102
  _useState4 = _slicedToArray(_useState3, 2),
99
103
  currentFormat = _useState4[0],
@@ -140,7 +144,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
140
144
  onChange: handleYearChange,
141
145
  style: {
142
146
  flex: 1
143
- }
147
+ },
148
+ getPopupContainer: getPopupContainer
144
149
  });
145
150
  }
146
151
  if (isMonthOnly) {
@@ -150,7 +155,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
150
155
  style: {
151
156
  flex: 1
152
157
  },
153
- format: currentFormat
158
+ format: currentFormat,
159
+ getPopupContainer: getPopupContainer
154
160
  });
155
161
  }
156
162
  return _jsx(DatePicker, {
@@ -160,7 +166,8 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
160
166
  flex: 1
161
167
  },
162
168
  format: currentFormat,
163
- showTime: showTime
169
+ showTime: showTime,
170
+ getPopupContainer: getPopupContainer
164
171
  });
165
172
  };
166
173
  return _jsxs("div", {
@@ -174,6 +181,7 @@ export var DateFormatPicker = function DateFormatPicker(_ref2) {
174
181
  },
175
182
  value: currentFormat,
176
183
  onChange: handleFormatChange,
184
+ getPopupContainer: getPopupContainer,
177
185
  children: DATE_FORMAT_OPTIONS.map(function (option) {
178
186
  return _jsx(Select.Option, {
179
187
  value: option.value,
@@ -9,6 +9,7 @@ interface PropsType {
9
9
  isCustom?: boolean;
10
10
  container?: any;
11
11
  filterCustomType?: boolean;
12
+ parentPopupChannel?: 'primary' | 'secondary';
12
13
  }
13
14
  declare const _default: (props: PropsType) => import("react/jsx-runtime").JSX.Element;
14
15
  export default _default;
@@ -46,7 +46,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
46
46
  _ref$container = _ref.container,
47
47
  container = _ref$container === void 0 ? null : _ref$container,
48
48
  _ref$filterCustomType = _ref.filterCustomType,
49
- filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType;
49
+ filterCustomType = _ref$filterCustomType === void 0 ? false : _ref$filterCustomType,
50
+ parentPopupChannel = _ref.parentPopupChannel;
50
51
  var _useState = useState(value),
51
52
  _useState2 = _slicedToArray(_useState, 2),
52
53
  curColumn = _useState2[0],
@@ -76,6 +77,37 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
76
77
  _useState12 = _slicedToArray(_useState11, 2),
77
78
  isNext = _useState12[0],
78
79
  setIsNext = _useState12[1];
80
+ var setParentClosable = function setParentClosable(closable) {
81
+ if (parentPopupChannel === 'secondary') {
82
+ store.setClosable2(closable);
83
+ return;
84
+ }
85
+ store.setClosable(closable);
86
+ };
87
+ var setDropdownClosable = function setDropdownClosable(visible) {
88
+ if (visible) {
89
+ setParentClosable(false);
90
+ return;
91
+ }
92
+ setTimeout(function () {
93
+ return setParentClosable(true);
94
+ }, 300);
95
+ };
96
+ var setSelectPopupClosable = function setSelectPopupClosable(visible) {
97
+ setPopupVisible(visible);
98
+ if (visible) {
99
+ setParentClosable(false);
100
+ return;
101
+ }
102
+ setTimeout(function () {
103
+ return setParentClosable(true);
104
+ }, 300);
105
+ };
106
+ var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
107
+ var _node$closest;
108
+ var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
109
+ return popupContainer || document.body;
110
+ };
79
111
  var table2Selected = Boolean(rhsVal && (rhsVal === null || rhsVal === void 0 ? void 0 : rhsVal.length) > 0);
80
112
  var disabled = useMemo(function () {
81
113
  if (!condition) return true;
@@ -354,6 +386,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
354
386
  return _jsx("div", {
355
387
  children: _jsx(Dropdown, {
356
388
  trigger: ['click'],
389
+ onVisibleChange: setDropdownClosable,
390
+ getPopupContainer: getCurrentPopupContainer,
357
391
  onChange: function onChange(key) {
358
392
  setRhsVal([{
359
393
  type: AtomsTypeEnum.INPUT_STRING,
@@ -396,6 +430,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
396
430
  }
397
431
  }), _jsx(Dropdown, {
398
432
  trigger: ['click'],
433
+ onVisibleChange: setDropdownClosable,
434
+ getPopupContainer: getCurrentPopupContainer,
399
435
  droplist: [{
400
436
  key: '分',
401
437
  label: __('filter.minute')
@@ -436,6 +472,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
436
472
  return _jsx(DateFormatPicker, {
437
473
  value: _dateVal,
438
474
  format: _dateFormat,
475
+ getPopupContainer: getCurrentPopupContainer,
439
476
  onChange: function onChange(val, format) {
440
477
  if (val) {
441
478
  setRhsVal([{
@@ -459,6 +496,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
459
496
  return _jsx(DateFormatPicker, {
460
497
  value: _dateVal2,
461
498
  format: _dateFormat2,
499
+ getPopupContainer: getCurrentPopupContainer,
462
500
  onChange: function onChange(val, format) {
463
501
  if (val) {
464
502
  setRhsVal([{
@@ -484,6 +522,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
484
522
  placeholder: "\u53EF\u8F93\u5165\u56DE\u8F66\u65B0\u589E\u4E0B\u62C9\u9009\u9879",
485
523
  allowCreate: true,
486
524
  multiple: true,
525
+ getPopupContainer: getCurrentPopupContainer,
487
526
  value: options,
488
527
  onChange: function onChange(val) {
489
528
  setRhsVal([{
@@ -493,10 +532,10 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
493
532
  },
494
533
  popupVisible: popupVisible,
495
534
  onBlur: function onBlur() {
496
- setPopupVisible(false);
535
+ setSelectPopupClosable(false);
497
536
  },
498
537
  onClick: function onClick() {
499
- setPopupVisible(true);
538
+ setSelectPopupClosable(true);
500
539
  },
501
540
  children: options.map(function (option) {
502
541
  return _jsx(Select.Option, {
@@ -528,7 +567,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
528
567
  });
529
568
  }
530
569
  var selectConstant = function selectConstant(e) {
531
- store.setClosable(false);
570
+ setParentClosable(false);
532
571
  var node = e.currentTarget;
533
572
  var _val = node.getAttribute('v-val');
534
573
  store.setPopup2({
@@ -544,13 +583,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
544
583
  newVal[0].id = val;
545
584
  newVal[0].val = getConstantLabel(store.constantList, val);
546
585
  setRhsVal(newVal);
547
- store.setClosable(true);
586
+ setParentClosable(true);
548
587
  }
549
588
  })
550
589
  });
551
590
  };
552
591
  var onRepeat = function onRepeat(e) {
553
- store.setClosable(false);
592
+ setParentClosable(false);
554
593
  store.setPopup2({
555
594
  visible: true,
556
595
  node: e.currentTarget,
@@ -592,13 +631,13 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
592
631
  type: AtomsTypeEnum.FIELD
593
632
  }]);
594
633
  }
595
- store.setClosable(true);
634
+ setParentClosable(true);
596
635
  }
597
636
  })
598
637
  });
599
638
  };
600
639
  var selectTable = function selectTable(e) {
601
- store.setClosable(false);
640
+ setParentClosable(false);
602
641
  var node = e.currentTarget;
603
642
  var _index = Number(node.getAttribute('v-index'));
604
643
  store.setPopup2({
@@ -625,7 +664,7 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
625
664
  store.setPopup2({
626
665
  visible: false
627
666
  });
628
- store.setClosable(true);
667
+ setParentClosable(true);
629
668
  }
630
669
  })
631
670
  });
@@ -672,6 +711,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
672
711
  className: 'left-info-formula',
673
712
  children: _jsx(Dropdown, {
674
713
  trigger: ['click'],
714
+ onVisibleChange: setDropdownClosable,
715
+ getPopupContainer: getCurrentPopupContainer,
675
716
  onChange: function onChange(key) {
676
717
  changeFormula(key);
677
718
  },
@@ -737,6 +778,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
737
778
  className: 'right-info',
738
779
  children: [filterCustomType && _jsx(Dropdown, {
739
780
  trigger: ['click'],
781
+ onVisibleChange: setDropdownClosable,
782
+ getPopupContainer: getCurrentPopupContainer,
740
783
  onChange: function onChange(key) {
741
784
  setCondition('');
742
785
  setCurColumn(_objectSpread(_objectSpread({}, curColumn), {}, {
@@ -760,6 +803,8 @@ var SelectFilterColumn = function SelectFilterColumn(_ref) {
760
803
  })
761
804
  }), _jsx(Dropdown, {
762
805
  trigger: ['click'],
806
+ onVisibleChange: setDropdownClosable,
807
+ getPopupContainer: getCurrentPopupContainer,
763
808
  onChange: function onChange(key) {
764
809
  setCurColumn(_objectSpread({}, curColumn));
765
810
  setDefaultVal(key);
@@ -624,6 +624,11 @@ var FormulaList = forwardRef(function (props, ref) {
624
624
  visible: false
625
625
  });
626
626
  }
627
+ var getCurrentPopupContainer = function getCurrentPopupContainer(node) {
628
+ var _node$closest;
629
+ var popupContainer = node === null || node === void 0 || (_node$closest = node.closest) === null || _node$closest === void 0 ? void 0 : _node$closest.call(node, '[data-sqb-popup-container="true"]');
630
+ return popupContainer || document.body;
631
+ };
627
632
  var getSelectTriggerProps = function getSelectTriggerProps() {
628
633
  return {
629
634
  clickToClose: true,
@@ -648,6 +653,7 @@ var FormulaList = forwardRef(function (props, ref) {
648
653
  showSearch: true,
649
654
  trigger: trigger,
650
655
  triggerProps: getSelectTriggerProps(),
656
+ getPopupContainer: getCurrentPopupContainer,
651
657
  virtualListProps: {
652
658
  threshold: null
653
659
  },
@@ -745,6 +751,7 @@ var FormulaList = forwardRef(function (props, ref) {
745
751
  filterCustomType: filterCustomType,
746
752
  data: data,
747
753
  container: ref === null || ref === void 0 ? void 0 : ref.current,
754
+ parentPopupChannel: 'primary',
748
755
  value: val || {},
749
756
  onChange: function onChange(data) {
750
757
  var _caseList = caseList.slice();
@@ -1207,6 +1214,7 @@ var FormulaList = forwardRef(function (props, ref) {
1207
1214
  }),
1208
1215
  node: _jsx(Select, {
1209
1216
  triggerProps: getSelectTriggerProps(),
1217
+ getPopupContainer: getCurrentPopupContainer,
1210
1218
  value: v.val,
1211
1219
  triggerElement: function triggerElement() {
1212
1220
  return renderTokenContent(_jsxs(_Fragment, {
@@ -1308,6 +1316,7 @@ var FormulaList = forwardRef(function (props, ref) {
1308
1316
  }),
1309
1317
  node: _jsx(Select, {
1310
1318
  triggerProps: getSelectTriggerProps(),
1319
+ getPopupContainer: getCurrentPopupContainer,
1311
1320
  multiple: v.multiple,
1312
1321
  value: v.val,
1313
1322
  triggerElement: function triggerElement() {
@@ -21,6 +21,7 @@ import NextDom from './components/meta-icon';
21
21
  import Header from './components/header';
22
22
  import ItemWrapper from './components/item-wrapper';
23
23
  import ItemName from './components/item-name';
24
+ import { getTopLayerZIndex } from '../../utils/helper-dom';
24
25
  import { useStore } from '../../hooks/use-provider';
25
26
  var CustomColumn = function CustomColumn(props) {
26
27
  var meta = props.meta,
@@ -209,7 +210,9 @@ var CustomColumn = function CustomColumn(props) {
209
210
  var showSubQuery = function showSubQuery(e, i) {
210
211
  var newMeta = store.metaList[groupIndex].list.slice();
211
212
  var _value = newMeta[index].customColumn[i] || [];
213
+ var childModalZIndex = getTopLayerZIndex() + 1;
212
214
  var o = Modal2.openModal({
215
+ zIndex: childModalZIndex,
213
216
  title: __('SqlQueryBuilder.customExpression'),
214
217
  transparentMask: true,
215
218
  content: _jsx(_Fragment, {
@@ -14,7 +14,7 @@ import { TypeEnum, SQL_COLUMN_TYPE } from '../../../store/enum';
14
14
  import { MetaSummarize_Enum, AtomsTypeEnum, ChangeType } from '../../../store/types';
15
15
  import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
16
16
  import { uuidv4, getAlias } from '../../../utils/helper';
17
- import { changeFieldAlias, isExistsError, isValidSQLAlias } from '../../../utils';
17
+ import { isExistsError, isValidSQLAlias } from '../../../utils';
18
18
  import ItemName from '../components/item-name';
19
19
  import { AddIcon, CloseIcon } from '../../icons';
20
20
  import FormulaList from '../../dialog/formula-list';
@@ -359,7 +359,6 @@ var GroupBy = function GroupBy(props) {
359
359
  newMeta = store.metaList[groupIndex].list.slice();
360
360
  newMeta[index].by[i].fieldAlias = fieldAlias;
361
361
  newMeta[index].by[i].sql = summarizeByToSql(newMeta[index].by[i]);
362
- newMeta = changeFieldAlias(newMeta, newMeta[index].by[i]);
363
362
  store.setMeta(newMeta, groupIndex, {
364
363
  obj: newMeta[index].by,
365
364
  type: ChangeType.by
@@ -454,6 +453,10 @@ var GroupBy = function GroupBy(props) {
454
453
  var field = getField(record);
455
454
  return field.fieldName ? [field] : [];
456
455
  };
456
+ var getErrorCheckField = function getErrorCheckField(record) {
457
+ var atoms = getAtomsValue(record);
458
+ return _getFirstField(atoms) || getField(record);
459
+ };
457
460
  var normalizeByRecord = function normalizeByRecord(record, itemIndex, metaList) {
458
461
  var _store$preProps;
459
462
  var atoms = getAtomsValue(record);
@@ -490,7 +493,7 @@ var GroupBy = function GroupBy(props) {
490
493
  return _jsxs(_Fragment, {
491
494
  children: [meta.by.map(function (v, i) {
492
495
  return _jsx(ItemName, {
493
- isError: isExistsError([getField(v)], store.existsError),
496
+ isError: isExistsError([getErrorCheckField(v)], store.existsError),
494
497
  children: _jsxs("div", {
495
498
  className: "Sqb-TableName green-name",
496
499
  onClick: function onClick(e) {
@@ -13,7 +13,7 @@ import { summarizeToSql } from '../../../store/helper';
13
13
  import { Tooltip, Button, Modal, Input, Toast } from '@gingkoo/pandora';
14
14
  import { uuidv4 } from '../../../utils/helper';
15
15
  import { MetaSummarize_Enum, AtomsTypeEnum, ChangeType } from '../../../store/types';
16
- import { changeFieldAlias, isExistsError, isValidSQLAlias } from '../../../utils';
16
+ import { isExistsError, isValidSQLAlias } from '../../../utils';
17
17
  import ItemName from '../components/item-name';
18
18
  import { AddIcon, CloseIcon } from '../../icons';
19
19
  import { SelectSummarize } from '../../dialog';
@@ -155,7 +155,11 @@ var SelectIndex = function SelectIndex(props) {
155
155
  Toast.warning(summarizeWithoutArgumentMessage);
156
156
  return;
157
157
  }
158
- newMeta[index].group.splice(i, 1, normalizeGroupRecord(data));
158
+ var prevRecord = newMeta[index].group[i];
159
+ var nextRecord = normalizeGroupRecord(data);
160
+ nextRecord.fieldAlias = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldAlias) || nextRecord.fieldAlias;
161
+ nextRecord.fieldUuid = (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.fieldUuid) || nextRecord.fieldUuid;
162
+ newMeta[index].group.splice(i, 1, nextRecord);
159
163
  newMeta[index].group = newMeta[index].group.map(function (v) {
160
164
  var _summarizeToSql = summarizeToSql(newMeta[index].group, v),
161
165
  sql = _summarizeToSql.sql,
@@ -163,7 +167,8 @@ var SelectIndex = function SelectIndex(props) {
163
167
  return _objectSpread(_objectSpread({}, v), {}, {
164
168
  name: v.name || v.quotes,
165
169
  sql: sql,
166
- fieldAlias: fieldAlias
170
+ fieldUuid: v.fieldUuid || uuidv4('field'),
171
+ fieldAlias: v.fieldAlias || fieldAlias
167
172
  });
168
173
  });
169
174
  store.setMeta(newMeta, groupIndex, {
@@ -215,7 +220,7 @@ var SelectIndex = function SelectIndex(props) {
215
220
  return _objectSpread(_objectSpread({}, v), {}, {
216
221
  name: v.name || v.quotes,
217
222
  sql: sql,
218
- fieldUuid: uuidv4('field'),
223
+ fieldUuid: v.fieldUuid || uuidv4('field'),
219
224
  fieldAlias: v.fieldAlias || fieldAlias,
220
225
  summarizeType: MetaSummarize_Enum.GROUP
221
226
  });
@@ -270,7 +275,6 @@ var SelectIndex = function SelectIndex(props) {
270
275
  newMeta = store.metaList[groupIndex].list.slice();
271
276
  newMeta[index].group[i].fieldAlias = fieldAlias;
272
277
  newMeta[index].group[i].sql = newMeta[index].group[i].sql.split('AS ')[0] + "AS ".concat(fieldAlias);
273
- newMeta = changeFieldAlias(newMeta, newMeta[index].group[i]);
274
278
  store.setMeta(newMeta, groupIndex, {
275
279
  obj: newMeta[index].group,
276
280
  type: ChangeType.group
@@ -373,6 +377,10 @@ var SelectIndex = function SelectIndex(props) {
373
377
  var field = getField(record);
374
378
  return field.fieldName ? [field] : [];
375
379
  };
380
+ var getErrorCheckField = function getErrorCheckField(record) {
381
+ var atoms = getAtomsValue(record);
382
+ return _getFirstField(atoms) || getField(record);
383
+ };
376
384
  var normalizeGroupRecord = function normalizeGroupRecord(record) {
377
385
  var atoms = getAtomsValue(record);
378
386
  var firstField = _getFirstField(atoms);
@@ -400,7 +408,7 @@ var SelectIndex = function SelectIndex(props) {
400
408
  return _jsxs(_Fragment, {
401
409
  children: [meta.group.map(function (v, i) {
402
410
  return _jsx(ItemName, {
403
- isError: isExistsError([getField(v)], store.existsError),
411
+ isError: isExistsError([getErrorCheckField(v)], store.existsError),
404
412
  children: _jsxs("div", {
405
413
  className: "Sqb-TableName green-name",
406
414
  onClick: function onClick(e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.123",
3
+ "version": "1.0.124",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",