@openli1115/lowcode-edit-pro-table 1.0.103 → 1.0.106

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,7 +9,7 @@ export interface ProSearchField {
9
9
  defaultConditions?: Array<{
10
10
  id?: string;
11
11
  sign: 'I' | 'E';
12
- option: '' | 'EQ' | 'NE' | 'BT' | 'LT' | 'LE' | 'GT' | 'GE' | 'CO' | 'NC';
12
+ option: '' | 'EQ' | 'NE' | 'BT' | 'LT' | 'LE' | 'GT' | 'GE' | 'CO' | 'NC' | 'IS_EMPTY' | 'IS_NOT_EMPTY';
13
13
  low: string;
14
14
  high: string;
15
15
  }>;
@@ -27,6 +27,8 @@ export interface ProSearchProps {
27
27
  descriptionAlign?: 'left' | 'center' | 'right' | 'justify';
28
28
  techNameAlign?: 'left' | 'center' | 'right' | 'justify';
29
29
  onSearch?: (data: Record<string, any[]>) => void;
30
+ /** 由低代码引擎样式 tab 传入的样式,将应用于各子条件输入框 */
31
+ style?: React.CSSProperties;
30
32
  }
31
33
  declare const ProSearch: React.FC<ProSearchProps>;
32
34
  export default ProSearch;
@@ -41,6 +41,12 @@ var OPTION_OPTIONS = [{
41
41
  }, {
42
42
  label: '不包含',
43
43
  value: 'NC'
44
+ }, {
45
+ label: '为空',
46
+ value: 'IS_EMPTY'
47
+ }, {
48
+ label: '不为空',
49
+ value: 'IS_NOT_EMPTY'
44
50
  }];
45
51
  var OPTION_SYMBOL = {
46
52
  EQ: '=',
@@ -51,7 +57,9 @@ var OPTION_SYMBOL = {
51
57
  LE: '≤',
52
58
  BT: '~',
53
59
  CO: '∋',
54
- NC: '∌'
60
+ NC: '∌',
61
+ IS_EMPTY: '∅',
62
+ IS_NOT_EMPTY: '≠∅'
55
63
  };
56
64
  var genId = function genId() {
57
65
  return Math.random().toString(36).slice(2);
@@ -116,6 +124,7 @@ var ConditionTable = function ConditionTable(_ref) {
116
124
  },
117
125
  placeholder: "\u503C/\u4E0B\u9650\u503C",
118
126
  value: row.low,
127
+ disabled: row.option === 'IS_EMPTY' || row.option === 'IS_NOT_EMPTY',
119
128
  onChange: function onChange(e) {
120
129
  return update(row.id, 'low', e.target.value);
121
130
  }
@@ -170,7 +179,8 @@ var ProSearch = function ProSearch(_ref2) {
170
179
  descriptionAlign = _ref2$descriptionAlig === void 0 ? 'right' : _ref2$descriptionAlig,
171
180
  _ref2$techNameAlign = _ref2.techNameAlign,
172
181
  techNameAlign = _ref2$techNameAlign === void 0 ? 'left' : _ref2$techNameAlign,
173
- onSearch = _ref2.onSearch;
182
+ onSearch = _ref2.onSearch,
183
+ style = _ref2.style;
174
184
  var _useState = useState({}),
175
185
  fieldValues = _useState[0],
176
186
  setFieldValues = _useState[1];
@@ -231,6 +241,24 @@ var ProSearch = function ProSearch(_ref2) {
231
241
  }, (_extends3 = {}, _extends3[key] = val, _extends3)), _extends4));
232
242
  });
233
243
  };
244
+
245
+ // 更新多值条件中指定行的 low/high 值(用于字段行直接编辑同步到弹窗第一行)
246
+ var updateConditionRow = function updateConditionRow(fieldId, condId, key, val) {
247
+ return setFieldValues(function (prev) {
248
+ var _extends6;
249
+ var fv = prev[fieldId] || {
250
+ low: '',
251
+ high: '',
252
+ conditions: []
253
+ };
254
+ return _extends({}, prev, (_extends6 = {}, _extends6[fieldId] = _extends({}, fv, {
255
+ conditions: fv.conditions.map(function (c) {
256
+ var _extends5;
257
+ return c.id === condId ? _extends({}, c, (_extends5 = {}, _extends5[key] = val, _extends5)) : c;
258
+ })
259
+ }), _extends6));
260
+ });
261
+ };
234
262
  var openModal = function openModal(fieldId) {
235
263
  setActiveFieldId(fieldId);
236
264
  var fv = fieldValues[fieldId] || {
@@ -257,13 +285,13 @@ var ProSearch = function ProSearch(_ref2) {
257
285
  return r.low || r.option;
258
286
  }));
259
287
  setFieldValues(function (prev) {
260
- var _extends5;
261
- return _extends({}, prev, (_extends5 = {}, _extends5[activeFieldId] = _extends({}, prev[activeFieldId] || {
288
+ var _extends7;
289
+ return _extends({}, prev, (_extends7 = {}, _extends7[activeFieldId] = _extends({}, prev[activeFieldId] || {
262
290
  low: '',
263
291
  high: ''
264
292
  }, {
265
293
  conditions: conditions
266
- }), _extends5));
294
+ }), _extends7));
267
295
  });
268
296
  setModalVisible(false);
269
297
  };
@@ -414,48 +442,54 @@ var ProSearch = function ProSearch(_ref2) {
414
442
  high: '',
415
443
  conditions: []
416
444
  };
417
- var hasConditions = fv.conditions.length > 0;
418
- var disabled = hasConditions;
419
- // 4.2 / 4.2a / 4.2b / 4.5 / 4.6:有多值条件时,字段行展示"首行代表"的 low/high 值
420
- // - 4.2a BT(介于):起始值=low,到值=high 分别填入两个输入框
421
- // - 非 BT 情况:到值留空,仅展示 low
422
- var val = displayCond ? key === 'low' ? displayCond.low : displayCond.option === 'BT' ? displayCond.high : '' : fv[key];
445
+ // 有多值条件时,字段行展示"首行代表"的 low/high 值,且不置灰,用户可直接编辑同步到弹窗第一行
446
+ var val = displayCond ? key === 'low' ? displayCond.low : displayCond.high : fv[key];
423
447
  var _onChange = function onChange(v) {
424
- return updateVal(field.id, key, v);
448
+ if (displayCond) {
449
+ // 将修改同步到多值弹窗的第一行对应字段
450
+ updateConditionRow(field.id, displayCond.id, key, v);
451
+ } else {
452
+ updateVal(field.id, key, v);
453
+ }
425
454
  };
455
+
456
+ // 将样式 tab 的所有属性直接应用于输入框
457
+ var inputStyle = style ? _extends({}, style) : {};
458
+
459
+ // IS_EMPTY / IS_NOT_EMPTY 时输入框置灰
460
+ var isEmptyOp = displayCond && (displayCond.option === 'IS_EMPTY' || displayCond.option === 'IS_NOT_EMPTY');
461
+ var isDisabled = !!isEmptyOp;
426
462
  if (field.fieldType === 'date') {
427
463
  return /*#__PURE__*/React.createElement(_DatePicker, {
428
- size: "small",
429
- style: {
464
+ style: _extends({
430
465
  width: '100%'
431
- },
466
+ }, inputStyle),
432
467
  value: val ? moment(val) : null,
468
+ disabled: isDisabled,
433
469
  onChange: function onChange(_, s) {
434
470
  return _onChange(s);
435
- },
436
- disabled: disabled
471
+ }
437
472
  });
438
473
  }
439
474
  if (field.fieldType === 'time') {
440
475
  return /*#__PURE__*/React.createElement(_TimePicker, {
441
- size: "small",
442
- style: {
476
+ style: _extends({
443
477
  width: '100%'
444
- },
478
+ }, inputStyle),
445
479
  value: val ? moment(val, 'HH:mm:ss') : null,
480
+ disabled: isDisabled,
446
481
  onChange: function onChange(_, s) {
447
482
  return _onChange(s);
448
- },
449
- disabled: disabled
483
+ }
450
484
  });
451
485
  }
452
486
  return /*#__PURE__*/React.createElement(_Input, {
453
- size: "small",
487
+ style: Object.keys(inputStyle).length ? inputStyle : undefined,
454
488
  value: val,
489
+ disabled: isDisabled,
455
490
  onChange: function onChange(e) {
456
491
  return _onChange(e.target.value);
457
- },
458
- disabled: disabled
492
+ }
459
493
  });
460
494
  };
461
495
 
@@ -532,7 +566,7 @@ var ProSearch = function ProSearch(_ref2) {
532
566
  fontFamily: 'sans-serif',
533
567
  border: '1px solid #f0f0f0',
534
568
  borderRadius: 4,
535
- padding: '8px 4px'
569
+ padding: '0 4px 8px 4px'
536
570
  }
537
571
  }, showHeader && /*#__PURE__*/React.createElement("div", {
538
572
  style: _extends({
@@ -571,7 +605,7 @@ var ProSearch = function ProSearch(_ref2) {
571
605
  }, "\u591A\u503C"), showTechName && /*#__PURE__*/React.createElement("div", {
572
606
  style: {
573
607
  flex: 3,
574
- textAlign: 'center'
608
+ textAlign: techNameAlign
575
609
  }
576
610
  }, "\u6280\u672F\u540D\u79F0")), fields.length === 0 && /*#__PURE__*/React.createElement("div", {
577
611
  style: {
@@ -9,7 +9,7 @@ export interface ProSearchField {
9
9
  defaultConditions?: Array<{
10
10
  id?: string;
11
11
  sign: 'I' | 'E';
12
- option: '' | 'EQ' | 'NE' | 'BT' | 'LT' | 'LE' | 'GT' | 'GE' | 'CO' | 'NC';
12
+ option: '' | 'EQ' | 'NE' | 'BT' | 'LT' | 'LE' | 'GT' | 'GE' | 'CO' | 'NC' | 'IS_EMPTY' | 'IS_NOT_EMPTY';
13
13
  low: string;
14
14
  high: string;
15
15
  }>;
@@ -27,6 +27,8 @@ export interface ProSearchProps {
27
27
  descriptionAlign?: 'left' | 'center' | 'right' | 'justify';
28
28
  techNameAlign?: 'left' | 'center' | 'right' | 'justify';
29
29
  onSearch?: (data: Record<string, any[]>) => void;
30
+ /** 由低代码引擎样式 tab 传入的样式,将应用于各子条件输入框 */
31
+ style?: React.CSSProperties;
30
32
  }
31
33
  declare const ProSearch: React.FC<ProSearchProps>;
32
34
  export default ProSearch;
@@ -11,7 +11,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
  var _button = _interopRequireDefault(require("antd/lib/button"));
12
12
  var _input = _interopRequireDefault(require("antd/lib/input"));
13
13
  var _select = _interopRequireDefault(require("antd/lib/select"));
14
- var _extends6 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
+ var _extends8 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
  var _react = _interopRequireWildcard(require("react"));
16
16
  var React = _react;
17
17
  var _icons = require("@ant-design/icons");
@@ -47,6 +47,12 @@ var OPTION_OPTIONS = [{
47
47
  }, {
48
48
  label: '不包含',
49
49
  value: 'NC'
50
+ }, {
51
+ label: '为空',
52
+ value: 'IS_EMPTY'
53
+ }, {
54
+ label: '不为空',
55
+ value: 'IS_NOT_EMPTY'
50
56
  }];
51
57
  var OPTION_SYMBOL = {
52
58
  EQ: '=',
@@ -57,7 +63,9 @@ var OPTION_SYMBOL = {
57
63
  LE: '≤',
58
64
  BT: '~',
59
65
  CO: '∋',
60
- NC: '∌'
66
+ NC: '∌',
67
+ IS_EMPTY: '∅',
68
+ IS_NOT_EMPTY: '≠∅'
61
69
  };
62
70
  var genId = function genId() {
63
71
  return Math.random().toString(36).slice(2);
@@ -80,7 +88,7 @@ var ConditionTable = function ConditionTable(_ref) {
80
88
  var update = function update(id, key, val) {
81
89
  return onChange(rows.map(function (r) {
82
90
  var _extends2;
83
- return r.id === id ? (0, _extends6["default"])({}, r, (_extends2 = {}, _extends2[key] = val, _extends2)) : r;
91
+ return r.id === id ? (0, _extends8["default"])({}, r, (_extends2 = {}, _extends2[key] = val, _extends2)) : r;
84
92
  }));
85
93
  };
86
94
  var remove = function remove(id) {
@@ -122,6 +130,7 @@ var ConditionTable = function ConditionTable(_ref) {
122
130
  },
123
131
  placeholder: "\u503C/\u4E0B\u9650\u503C",
124
132
  value: row.low,
133
+ disabled: row.option === 'IS_EMPTY' || row.option === 'IS_NOT_EMPTY',
125
134
  onChange: function onChange(e) {
126
135
  return update(row.id, 'low', e.target.value);
127
136
  }
@@ -176,7 +185,8 @@ var ProSearch = function ProSearch(_ref2) {
176
185
  descriptionAlign = _ref2$descriptionAlig === void 0 ? 'right' : _ref2$descriptionAlig,
177
186
  _ref2$techNameAlign = _ref2.techNameAlign,
178
187
  techNameAlign = _ref2$techNameAlign === void 0 ? 'left' : _ref2$techNameAlign,
179
- onSearch = _ref2.onSearch;
188
+ onSearch = _ref2.onSearch,
189
+ style = _ref2.style;
180
190
  var _useState = (0, _react.useState)({}),
181
191
  fieldValues = _useState[0],
182
192
  setFieldValues = _useState[1];
@@ -230,13 +240,31 @@ var ProSearch = function ProSearch(_ref2) {
230
240
  var updateVal = function updateVal(id, key, val) {
231
241
  return setFieldValues(function (prev) {
232
242
  var _extends3, _extends4;
233
- return (0, _extends6["default"])({}, prev, (_extends4 = {}, _extends4[id] = (0, _extends6["default"])({}, prev[id] || {
243
+ return (0, _extends8["default"])({}, prev, (_extends4 = {}, _extends4[id] = (0, _extends8["default"])({}, prev[id] || {
234
244
  low: '',
235
245
  high: '',
236
246
  conditions: []
237
247
  }, (_extends3 = {}, _extends3[key] = val, _extends3)), _extends4));
238
248
  });
239
249
  };
250
+
251
+ // 更新多值条件中指定行的 low/high 值(用于字段行直接编辑同步到弹窗第一行)
252
+ var updateConditionRow = function updateConditionRow(fieldId, condId, key, val) {
253
+ return setFieldValues(function (prev) {
254
+ var _extends6;
255
+ var fv = prev[fieldId] || {
256
+ low: '',
257
+ high: '',
258
+ conditions: []
259
+ };
260
+ return (0, _extends8["default"])({}, prev, (_extends6 = {}, _extends6[fieldId] = (0, _extends8["default"])({}, fv, {
261
+ conditions: fv.conditions.map(function (c) {
262
+ var _extends5;
263
+ return c.id === condId ? (0, _extends8["default"])({}, c, (_extends5 = {}, _extends5[key] = val, _extends5)) : c;
264
+ })
265
+ }), _extends6));
266
+ });
267
+ };
240
268
  var openModal = function openModal(fieldId) {
241
269
  setActiveFieldId(fieldId);
242
270
  var fv = fieldValues[fieldId] || {
@@ -263,13 +291,13 @@ var ProSearch = function ProSearch(_ref2) {
263
291
  return r.low || r.option;
264
292
  }));
265
293
  setFieldValues(function (prev) {
266
- var _extends5;
267
- return (0, _extends6["default"])({}, prev, (_extends5 = {}, _extends5[activeFieldId] = (0, _extends6["default"])({}, prev[activeFieldId] || {
294
+ var _extends7;
295
+ return (0, _extends8["default"])({}, prev, (_extends7 = {}, _extends7[activeFieldId] = (0, _extends8["default"])({}, prev[activeFieldId] || {
268
296
  low: '',
269
297
  high: ''
270
298
  }, {
271
299
  conditions: conditions
272
- }), _extends5));
300
+ }), _extends7));
273
301
  });
274
302
  setModalVisible(false);
275
303
  };
@@ -420,48 +448,54 @@ var ProSearch = function ProSearch(_ref2) {
420
448
  high: '',
421
449
  conditions: []
422
450
  };
423
- var hasConditions = fv.conditions.length > 0;
424
- var disabled = hasConditions;
425
- // 4.2 / 4.2a / 4.2b / 4.5 / 4.6:有多值条件时,字段行展示"首行代表"的 low/high 值
426
- // - 4.2a BT(介于):起始值=low,到值=high 分别填入两个输入框
427
- // - 非 BT 情况:到值留空,仅展示 low
428
- var val = displayCond ? key === 'low' ? displayCond.low : displayCond.option === 'BT' ? displayCond.high : '' : fv[key];
451
+ // 有多值条件时,字段行展示"首行代表"的 low/high 值,且不置灰,用户可直接编辑同步到弹窗第一行
452
+ var val = displayCond ? key === 'low' ? displayCond.low : displayCond.high : fv[key];
429
453
  var _onChange = function onChange(v) {
430
- return updateVal(field.id, key, v);
454
+ if (displayCond) {
455
+ // 将修改同步到多值弹窗的第一行对应字段
456
+ updateConditionRow(field.id, displayCond.id, key, v);
457
+ } else {
458
+ updateVal(field.id, key, v);
459
+ }
431
460
  };
461
+
462
+ // 将样式 tab 的所有属性直接应用于输入框
463
+ var inputStyle = style ? (0, _extends8["default"])({}, style) : {};
464
+
465
+ // IS_EMPTY / IS_NOT_EMPTY 时输入框置灰
466
+ var isEmptyOp = displayCond && (displayCond.option === 'IS_EMPTY' || displayCond.option === 'IS_NOT_EMPTY');
467
+ var isDisabled = !!isEmptyOp;
432
468
  if (field.fieldType === 'date') {
433
469
  return /*#__PURE__*/React.createElement(_datePicker["default"], {
434
- size: "small",
435
- style: {
470
+ style: (0, _extends8["default"])({
436
471
  width: '100%'
437
- },
472
+ }, inputStyle),
438
473
  value: val ? (0, _moment["default"])(val) : null,
474
+ disabled: isDisabled,
439
475
  onChange: function onChange(_, s) {
440
476
  return _onChange(s);
441
- },
442
- disabled: disabled
477
+ }
443
478
  });
444
479
  }
445
480
  if (field.fieldType === 'time') {
446
481
  return /*#__PURE__*/React.createElement(_timePicker["default"], {
447
- size: "small",
448
- style: {
482
+ style: (0, _extends8["default"])({
449
483
  width: '100%'
450
- },
484
+ }, inputStyle),
451
485
  value: val ? (0, _moment["default"])(val, 'HH:mm:ss') : null,
486
+ disabled: isDisabled,
452
487
  onChange: function onChange(_, s) {
453
488
  return _onChange(s);
454
- },
455
- disabled: disabled
489
+ }
456
490
  });
457
491
  }
458
492
  return /*#__PURE__*/React.createElement(_input["default"], {
459
- size: "small",
493
+ style: Object.keys(inputStyle).length ? inputStyle : undefined,
460
494
  value: val,
495
+ disabled: isDisabled,
461
496
  onChange: function onChange(e) {
462
497
  return _onChange(e.target.value);
463
- },
464
- disabled: disabled
498
+ }
465
499
  });
466
500
  };
467
501
 
@@ -502,7 +536,7 @@ var ProSearch = function ProSearch(_ref2) {
502
536
  var sym = OPTION_SYMBOL[opt];
503
537
  if (!sym) return null;
504
538
  return /*#__PURE__*/React.createElement("span", {
505
- style: (0, _extends6["default"])({}, badgeStyle, {
539
+ style: (0, _extends8["default"])({}, badgeStyle, {
506
540
  background: '#52c41a'
507
541
  })
508
542
  }, sym);
@@ -512,7 +546,7 @@ var ProSearch = function ProSearch(_ref2) {
512
546
  // 4.5.2:空 / EQ 也要显示红底 "=" ;其它按 OPTION_SYMBOL 显示
513
547
  var _sym = _opt && OPTION_SYMBOL[_opt] || '=';
514
548
  return /*#__PURE__*/React.createElement("span", {
515
- style: (0, _extends6["default"])({}, badgeStyle, {
549
+ style: (0, _extends8["default"])({}, badgeStyle, {
516
550
  background: '#ff4d4f'
517
551
  })
518
552
  }, _sym);
@@ -538,10 +572,10 @@ var ProSearch = function ProSearch(_ref2) {
538
572
  fontFamily: 'sans-serif',
539
573
  border: '1px solid #f0f0f0',
540
574
  borderRadius: 4,
541
- padding: '8px 4px'
575
+ padding: '0 4px 8px 4px'
542
576
  }
543
577
  }, showHeader && /*#__PURE__*/React.createElement("div", {
544
- style: (0, _extends6["default"])({
578
+ style: (0, _extends8["default"])({
545
579
  display: 'flex',
546
580
  padding: '4px 8px',
547
581
  gap: 6,
@@ -577,7 +611,7 @@ var ProSearch = function ProSearch(_ref2) {
577
611
  }, "\u591A\u503C"), showTechName && /*#__PURE__*/React.createElement("div", {
578
612
  style: {
579
613
  flex: 3,
580
- textAlign: 'center'
614
+ textAlign: techNameAlign
581
615
  }
582
616
  }, "\u6280\u672F\u540D\u79F0")), fields.length === 0 && /*#__PURE__*/React.createElement("div", {
583
617
  style: {
@@ -102,7 +102,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
102
102
  packageName = '@openli1115/lowcode-edit-pro-table';
103
103
  }
104
104
  if (version === void 0) {
105
- version = '1.0.103';
105
+ version = '1.0.106';
106
106
  }
107
107
  if (basicLibraryVersion === void 0) {
108
108
  basicLibraryVersion = {
@@ -107,7 +107,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
107
107
  packageName = '@openli1115/lowcode-edit-pro-table';
108
108
  }
109
109
  if (version === void 0) {
110
- version = '1.0.103';
110
+ version = '1.0.106';
111
111
  }
112
112
  if (basicLibraryVersion === void 0) {
113
113
  basicLibraryVersion = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openli1115/lowcode-edit-pro-table",
3
- "version": "1.0.103",
3
+ "version": "1.0.106",
4
4
  "description": "@openli1115/lowcode-edit-pro-table",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -101,10 +101,10 @@
101
101
  },
102
102
  "componentConfig": {
103
103
  "isComponentLibrary": true,
104
- "materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.103/build/lowcode/assets-prod.json"
104
+ "materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.106/build/lowcode/assets-prod.json"
105
105
  },
106
106
  "lcMeta": {
107
107
  "type": "component"
108
108
  },
109
- "homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.103/build/index.html"
109
+ "homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.106/build/index.html"
110
110
  }