tntd 3.0.0-beta.19 → 3.0.0-beta.20

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 (157) hide show
  1. package/es/array-input/index.js +57 -42
  2. package/es/array-input/index.js.map +1 -1
  3. package/es/array-input/index.less +4 -1
  4. package/es/locale/en_US.js +3 -0
  5. package/es/locale/en_US.js.map +1 -1
  6. package/es/locale/zh_CN.js +3 -0
  7. package/es/locale/zh_CN.js.map +1 -1
  8. package/es/table/expand.less +12 -14
  9. package/es/table/hooks/use-expand-fixed.js +4 -2
  10. package/es/table/hooks/use-expand-fixed.js.map +1 -1
  11. package/es/table/table.js +15 -82
  12. package/es/table/table.js.map +1 -1
  13. package/es/tntd-action/Action.js +1 -1
  14. package/es/tntd-action/Action.js.map +1 -1
  15. package/lib/array-input/index.d.ts +1 -12
  16. package/lib/array-input/index.d.ts.map +1 -1
  17. package/lib/array-input/index.js +62 -55
  18. package/lib/array-input/index.js.map +1 -1
  19. package/lib/array-input/index.less +4 -1
  20. package/lib/locale/default.d.ts +3 -0
  21. package/lib/locale/default.d.ts.map +1 -1
  22. package/lib/locale/en_US.d.ts +3 -0
  23. package/lib/locale/en_US.d.ts.map +1 -1
  24. package/lib/locale/en_US.js +3 -0
  25. package/lib/locale/en_US.js.map +1 -1
  26. package/lib/locale/zh_CN.d.ts +3 -0
  27. package/lib/locale/zh_CN.d.ts.map +1 -1
  28. package/lib/locale/zh_CN.js +3 -0
  29. package/lib/locale/zh_CN.js.map +1 -1
  30. package/lib/table/expand.less +12 -14
  31. package/lib/table/hooks/use-expand-fixed.d.ts.map +1 -1
  32. package/lib/table/hooks/use-expand-fixed.js +6 -4
  33. package/lib/table/hooks/use-expand-fixed.js.map +1 -1
  34. package/lib/table/table.d.ts +1 -2
  35. package/lib/table/table.d.ts.map +1 -1
  36. package/lib/table/table.js +15 -78
  37. package/lib/table/table.js.map +1 -1
  38. package/lib/tntd-action/Action.d.ts +1 -1
  39. package/lib/tntd-action/Action.js +1 -1
  40. package/lib/tntd-action/Action.js.map +1 -1
  41. package/package.json +2 -2
  42. package/es/array-input/1.png +0 -1
  43. package/es/array-input/111.gif +0 -0
  44. package/es/array-input/icon.js +0 -25
  45. package/es/array-input/icon.js.map +0 -1
  46. package/es/query-form/Field/Composition/FieldPopover.js +0 -328
  47. package/es/query-form/Field/Composition/FieldPopover.js.map +0 -1
  48. package/es/query-form/Field/Composition/FieldPopover.less +0 -35
  49. package/es/query-form/Field/Composition/Select.js +0 -107
  50. package/es/query-form/Field/Composition/Select.js.map +0 -1
  51. package/es/query-form/Field/Composition/index.js +0 -210
  52. package/es/query-form/Field/Composition/index.js.map +0 -1
  53. package/es/query-form/Field/Composition/index.less +0 -114
  54. package/es/query-form/Field/Composition/utils.js +0 -132
  55. package/es/query-form/Field/Composition/utils.js.map +0 -1
  56. package/es/query-form2/Field/Checkbox.js +0 -23
  57. package/es/query-form2/Field/Checkbox.js.map +0 -1
  58. package/es/query-form2/Field/Composition/FieldPopover.js +0 -308
  59. package/es/query-form2/Field/Composition/FieldPopover.js.map +0 -1
  60. package/es/query-form2/Field/Composition/FieldPopover.less +0 -35
  61. package/es/query-form2/Field/Composition/Select.js +0 -104
  62. package/es/query-form2/Field/Composition/Select.js.map +0 -1
  63. package/es/query-form2/Field/Composition/index.js +0 -299
  64. package/es/query-form2/Field/Composition/index.js.map +0 -1
  65. package/es/query-form2/Field/Composition/index.less +0 -114
  66. package/es/query-form2/Field/Composition/utils.js +0 -19
  67. package/es/query-form2/Field/Composition/utils.js.map +0 -1
  68. package/es/query-form2/Field/Select.js +0 -59
  69. package/es/query-form2/Field/Select.js.map +0 -1
  70. package/es/query-form2/Field/SelectInput.js +0 -87
  71. package/es/query-form2/Field/SelectInput.js.map +0 -1
  72. package/es/query-form2/Field/fieldsMap.js +0 -28
  73. package/es/query-form2/Field/fieldsMap.js.map +0 -1
  74. package/es/query-form2/Field/index.js +0 -117
  75. package/es/query-form2/Field/index.js.map +0 -1
  76. package/es/query-form2/createActions.js +0 -47
  77. package/es/query-form2/createActions.js.map +0 -1
  78. package/es/query-form2/index.js +0 -345
  79. package/es/query-form2/index.js.map +0 -1
  80. package/es/query-form2/index.less +0 -136
  81. package/es/query-form2/useForm.js +0 -6
  82. package/es/query-form2/useForm.js.map +0 -1
  83. package/lib/array-input/1.png +0 -1
  84. package/lib/array-input/111.gif +0 -0
  85. package/lib/array-input/icon.d.ts +0 -4
  86. package/lib/array-input/icon.d.ts.map +0 -1
  87. package/lib/array-input/icon.js +0 -32
  88. package/lib/array-input/icon.js.map +0 -1
  89. package/lib/query-form/Field/Composition/FieldPopover.d.ts +0 -19
  90. package/lib/query-form/Field/Composition/FieldPopover.d.ts.map +0 -1
  91. package/lib/query-form/Field/Composition/FieldPopover.js +0 -368
  92. package/lib/query-form/Field/Composition/FieldPopover.js.map +0 -1
  93. package/lib/query-form/Field/Composition/FieldPopover.less +0 -35
  94. package/lib/query-form/Field/Composition/Select.d.ts +0 -4
  95. package/lib/query-form/Field/Composition/Select.d.ts.map +0 -1
  96. package/lib/query-form/Field/Composition/Select.js +0 -131
  97. package/lib/query-form/Field/Composition/Select.js.map +0 -1
  98. package/lib/query-form/Field/Composition/index.d.ts +0 -10
  99. package/lib/query-form/Field/Composition/index.d.ts.map +0 -1
  100. package/lib/query-form/Field/Composition/index.js +0 -257
  101. package/lib/query-form/Field/Composition/index.js.map +0 -1
  102. package/lib/query-form/Field/Composition/index.less +0 -114
  103. package/lib/query-form/Field/Composition/utils.d.ts +0 -22
  104. package/lib/query-form/Field/Composition/utils.d.ts.map +0 -1
  105. package/lib/query-form/Field/Composition/utils.js +0 -147
  106. package/lib/query-form/Field/Composition/utils.js.map +0 -1
  107. package/lib/query-form2/Field/Checkbox.d.ts +0 -8
  108. package/lib/query-form2/Field/Checkbox.d.ts.map +0 -1
  109. package/lib/query-form2/Field/Checkbox.js +0 -28
  110. package/lib/query-form2/Field/Checkbox.js.map +0 -1
  111. package/lib/query-form2/Field/Composition/FieldPopover.d.ts +0 -19
  112. package/lib/query-form2/Field/Composition/FieldPopover.d.ts.map +0 -1
  113. package/lib/query-form2/Field/Composition/FieldPopover.js +0 -347
  114. package/lib/query-form2/Field/Composition/FieldPopover.js.map +0 -1
  115. package/lib/query-form2/Field/Composition/FieldPopover.less +0 -35
  116. package/lib/query-form2/Field/Composition/Select.d.ts +0 -4
  117. package/lib/query-form2/Field/Composition/Select.d.ts.map +0 -1
  118. package/lib/query-form2/Field/Composition/Select.js +0 -128
  119. package/lib/query-form2/Field/Composition/Select.js.map +0 -1
  120. package/lib/query-form2/Field/Composition/index.d.ts +0 -14
  121. package/lib/query-form2/Field/Composition/index.d.ts.map +0 -1
  122. package/lib/query-form2/Field/Composition/index.js +0 -349
  123. package/lib/query-form2/Field/Composition/index.js.map +0 -1
  124. package/lib/query-form2/Field/Composition/index.less +0 -114
  125. package/lib/query-form2/Field/Composition/utils.d.ts +0 -6
  126. package/lib/query-form2/Field/Composition/utils.d.ts.map +0 -1
  127. package/lib/query-form2/Field/Composition/utils.js +0 -27
  128. package/lib/query-form2/Field/Composition/utils.js.map +0 -1
  129. package/lib/query-form2/Field/Select.d.ts +0 -4
  130. package/lib/query-form2/Field/Select.d.ts.map +0 -1
  131. package/lib/query-form2/Field/Select.js +0 -80
  132. package/lib/query-form2/Field/Select.js.map +0 -1
  133. package/lib/query-form2/Field/SelectInput.d.ts +0 -4
  134. package/lib/query-form2/Field/SelectInput.d.ts.map +0 -1
  135. package/lib/query-form2/Field/SelectInput.js +0 -100
  136. package/lib/query-form2/Field/SelectInput.js.map +0 -1
  137. package/lib/query-form2/Field/fieldsMap.d.ts +0 -27
  138. package/lib/query-form2/Field/fieldsMap.d.ts.map +0 -1
  139. package/lib/query-form2/Field/fieldsMap.js +0 -35
  140. package/lib/query-form2/Field/fieldsMap.js.map +0 -1
  141. package/lib/query-form2/Field/index.d.ts +0 -14
  142. package/lib/query-form2/Field/index.d.ts.map +0 -1
  143. package/lib/query-form2/Field/index.js +0 -147
  144. package/lib/query-form2/Field/index.js.map +0 -1
  145. package/lib/query-form2/createActions.d.ts +0 -14
  146. package/lib/query-form2/createActions.d.ts.map +0 -1
  147. package/lib/query-form2/createActions.js +0 -54
  148. package/lib/query-form2/createActions.js.map +0 -1
  149. package/lib/query-form2/index.d.ts +0 -36
  150. package/lib/query-form2/index.d.ts.map +0 -1
  151. package/lib/query-form2/index.js +0 -385
  152. package/lib/query-form2/index.js.map +0 -1
  153. package/lib/query-form2/index.less +0 -136
  154. package/lib/query-form2/useForm.d.ts +0 -13
  155. package/lib/query-form2/useForm.d.ts.map +0 -1
  156. package/lib/query-form2/useForm.js +0 -13
  157. package/lib/query-form2/useForm.js.map +0 -1
@@ -13,17 +13,19 @@ var __rest = this && this.__rest || function (s, e) {
13
13
  return t;
14
14
  };
15
15
  import React, { isValidElement, useCallback, useEffect, useState } from 'react';
16
- import { deleteIcon, plusIcon } from './icon';
16
+ import LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver';
17
17
  import Col from '../col';
18
18
  import Row from '../row';
19
19
  import Table from '../table';
20
20
  import Tooltip from '../tooltip';
21
+ import Icon from '../icon';
22
+ import Button from '../button';
21
23
  import './index.less';
22
24
  const {
23
25
  Column
24
26
  } = Table;
25
27
  const getWidth = span => 1000 / span;
26
- export default function ArrayInput({
28
+ function ArrayInput({
27
29
  children,
28
30
  defaultValue,
29
31
  value,
@@ -33,11 +35,17 @@ export default function ArrayInput({
33
35
  require = false,
34
36
  deleteTip = '',
35
37
  plusTip = '',
36
- addText = '添加'
38
+ addText,
39
+ locale,
40
+ xProps = {},
41
+ renderAction
37
42
  }) {
38
43
  if (!_isFunction(children)) {
39
44
  throw new Error('ArrayInput的children必须是函数');
40
45
  }
46
+ if (addText === undefined) {
47
+ addText = locale === null || locale === void 0 ? void 0 : locale.add;
48
+ }
41
49
  const [_value, setValue] = useState(value || defaultValue);
42
50
  useEffect(() => {
43
51
  setValue(value);
@@ -79,6 +87,7 @@ export default function ArrayInput({
79
87
  if (!_isArray(fields)) {
80
88
  fields = _get(fields, 'props.children', []);
81
89
  }
90
+ const actionSpan = 24 - _sum(fields.map(f => _get(f, 'props.span', 4))) % 24;
82
91
  return React.createElement(Row, {
83
92
  gutter: gutter,
84
93
  key: index,
@@ -109,29 +118,26 @@ export default function ArrayInput({
109
118
  }
110
119
  }, other)));
111
120
  }), React.createElement(Col, {
112
- span: 24 - _sum(fields.map(f => _get(f, 'props.span', 4))) % 24
121
+ span: actionSpan
113
122
  }, React.createElement("span", {
114
123
  className: "tntd-array-input-action"
115
- }, plusTip ? React.createElement(Tooltip, {
116
- title: plusTip,
117
- placement: "left"
118
- }, React.createElement("span", {
119
- className: "mr10",
120
- onClick: () => onAdd(index)
121
- }, plusIcon)) : React.createElement("span", {
122
- className: "mr10",
123
- onClick: () => onAdd(index)
124
- }, plusIcon), deleteTip ? React.createElement(Tooltip, {
125
- title: deleteTip,
126
- placement: "right"
124
+ }, renderAction ? renderAction(item, index, onDelete, onAdd) : React.createElement(React.Fragment, null, deleteTip ? React.createElement(Tooltip, {
125
+ title: deleteTip
127
126
  }, React.createElement("span", {
128
127
  onClick: () => onDelete(index)
129
- }, deleteIcon)) : React.createElement("span", {
128
+ }, React.createElement(Icon, {
129
+ type: "delete"
130
+ }))) : React.createElement("span", {
130
131
  onClick: () => onDelete(index)
131
- }, deleteIcon))));
132
- }), inValue.length === 0 && React.createElement("a", {
132
+ }, React.createElement(Icon, {
133
+ type: "delete"
134
+ }))))));
135
+ }), React.createElement(Button, {
136
+ type: "link",
133
137
  onClick: () => onAdd()
134
- }, addText));
138
+ }, React.createElement(Icon, {
139
+ type: "plus"
140
+ }), addText));
135
141
  } else {
136
142
  let fields = children({}, 0);
137
143
  if (!_isArray(fields)) {
@@ -149,15 +155,11 @@ export default function ArrayInput({
149
155
  });
150
156
  return React.createElement("div", {
151
157
  className: "tntd-array-input"
152
- }, React.createElement(Table, {
158
+ }, React.createElement(Table, Object.assign({
153
159
  dataSource: dataSource,
154
160
  pagination: false,
155
- locale: {
156
- emptyText: React.createElement("a", {
157
- onClick: () => onAdd()
158
- }, addText)
159
- }
160
- }, fields.map(field => {
161
+ bordered: true
162
+ }, xProps), fields.map(field => {
161
163
  const {
162
164
  name,
163
165
  span,
@@ -191,26 +193,39 @@ export default function ArrayInput({
191
193
  title: "\u64CD\u4F5C",
192
194
  width: getWidth(24 - _sumBy(fields, 'props.span') % 24),
193
195
  render: (text, row, index) => {
196
+ if (renderAction) {
197
+ return renderAction(row, index, onDelete, onAdd);
198
+ }
194
199
  return React.createElement("span", {
195
200
  className: "tntd-array-input-action"
196
- }, plusTip ? React.createElement(Tooltip, {
197
- title: plusTip,
198
- placement: "left"
199
- }, React.createElement("span", {
200
- className: "mr10",
201
- onClick: () => onAdd(index)
202
- }, plusIcon)) : React.createElement("span", {
203
- className: "mr10",
204
- onClick: () => onAdd(index)
205
- }, plusIcon), deleteTip ? React.createElement(Tooltip, {
206
- title: deleteTip,
207
- placement: "right"
201
+ }, deleteTip ? React.createElement(Tooltip, {
202
+ title: deleteTip
208
203
  }, React.createElement("span", {
209
204
  onClick: () => onDelete(index)
210
- }, deleteIcon)) : React.createElement("span", {
205
+ }, React.createElement(Icon, {
206
+ type: "delete"
207
+ }))) : React.createElement("span", {
211
208
  onClick: () => onDelete(index)
212
- }, deleteIcon));
209
+ }, React.createElement(Icon, {
210
+ type: "delete"
211
+ })));
213
212
  }
214
- })));
213
+ })), React.createElement(Button, {
214
+ type: "dashed",
215
+ block: true,
216
+ className: "mt10",
217
+ onClick: () => onAdd()
218
+ }, React.createElement(Icon, {
219
+ type: "plus"
220
+ }), addText));
215
221
  }
222
+ }
223
+ export default function WarpArrayInput(props) {
224
+ return React.createElement(LocaleReceiver, {
225
+ componentName: "ArrayInput"
226
+ }, locale => {
227
+ return React.createElement(ArrayInput, Object.assign({}, props, {
228
+ locale: locale
229
+ }));
230
+ });
216
231
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"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","sourcesContent":["import { get, isArray, isFunction, set, sum, sumBy } from 'lodash'\nimport React, { isValidElement, useCallback, useEffect, useState } from 'react'\nimport { deleteIcon, plusIcon } from './icon'\n\nimport Col from '../col'\nimport Row from '../row'\nimport Table from '../table'\nimport Tooltip from '../tooltip'\n\nimport './index.less'\n\nconst { Column } = Table\nconst getWidth = (span) => 1000 / span\n\nexport default function ArrayInput({\n children,\n defaultValue,\n value,\n onChange,\n mode = 'list',\n gutter = 10,\n require = false,\n deleteTip = '',\n plusTip = '',\n addText = '添加',\n}) {\n if (!isFunction(children)) {\n throw new Error('ArrayInput的children必须是函数')\n }\n\n const [_value, setValue] = useState(value || defaultValue)\n\n useEffect(() => {\n setValue(value)\n }, [value])\n\n const _onChange = useCallback((value) => {\n if (onChange) {\n onChange(value)\n } else {\n setValue(value)\n }\n }, [])\n\n let inValue = _value || []\n if (require && inValue.length === 0) {\n inValue = [{}]\n }\n\n const changeValue = (index, name, value) => {\n inValue[index] = {\n ...inValue[index],\n [name]: value,\n }\n _onChange([...inValue])\n }\n\n const onAdd = (index) => {\n if (index === undefined) {\n _onChange([...inValue, {}])\n } else {\n inValue.splice(index + 1, 0, {})\n _onChange([...inValue])\n }\n }\n\n const onDelete = (i) => {\n inValue.splice(i, 1)\n _onChange([...inValue])\n }\n\n if (mode === 'list') {\n return (\n <div className=\"tntd-array-input\">\n {inValue.map((item, index) => {\n let fields = children(item, index)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n return (\n <Row gutter={gutter} key={index} className=\"tntd-array-input-item\">\n {fields.map((field, i) => {\n if (!isValidElement(field)) {\n return field ? (\n <Col span={4} key={i}>\n {field}\n </Col>\n ) : (\n ''\n )\n }\n const { name, span = 4, onChange: fieldChange, ...other } = field?.props\n return (\n <Col span={span} key={i}>\n {React.cloneElement(field, {\n value: item[name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n ...other,\n })}\n </Col>\n )\n })}\n <Col span={24 - (sum(fields.map((f) => get(f, 'props.span', 4))) % 24)}>\n <span className=\"tntd-array-input-action\">\n {plusTip ? (\n <Tooltip title={plusTip} placement=\"left\">\n <span className=\"mr10\" onClick={() => onAdd(index)}>\n {plusIcon}\n </span>\n </Tooltip>\n ) : (\n <span className=\"mr10\" onClick={() => onAdd(index)}>\n {plusIcon}\n </span>\n )}\n {deleteTip ? (\n <Tooltip title={deleteTip} placement=\"right\">\n <span onClick={() => onDelete(index)}>{deleteIcon}</span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>{deleteIcon}</span>\n )}\n </span>\n </Col>\n </Row>\n )\n })}\n {inValue.length === 0 && <a onClick={() => onAdd()}>{addText}</a>}\n </div>\n )\n } else {\n let fields = children({}, 0)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const dataSource = inValue.map((value, index) => {\n const fields = children(value, index)\n const back = {}\n fields.forEach((field) => {\n const name = field?.props?.name\n name && set(back, name, field)\n })\n return back\n })\n return (\n <div className=\"tntd-array-input\">\n <Table\n dataSource={dataSource}\n pagination={false}\n locale={{\n emptyText: <a onClick={() => onAdd()}>{addText}</a>,\n }}\n >\n {fields.map((field) => {\n const { name, span, title } = field?.props || {}\n return (\n <Column\n key={name}\n dataIndex={name}\n title={title}\n width={getWidth(span || 24 / (fields.length + 1))}\n render={(field, row, index) => {\n if (!isValidElement(field)) {\n return field\n }\n const { onChange: fieldChange } = field.props\n return React.cloneElement(field, {\n value: inValue[index][name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n })\n }}\n ></Column>\n )\n })}\n <Column\n key=\"action\"\n dataIndex=\"action\"\n title=\"操作\"\n width={getWidth(24 - (sumBy(fields, 'props.span') % 24))}\n render={(text, row, index) => {\n return (\n <span className=\"tntd-array-input-action\">\n {plusTip ? (\n <Tooltip title={plusTip} placement=\"left\">\n <span className=\"mr10\" onClick={() => onAdd(index)}>\n {plusIcon}\n </span>\n </Tooltip>\n ) : (\n <span className=\"mr10\" onClick={() => onAdd(index)}>\n {plusIcon}\n </span>\n )}\n {deleteTip ? (\n <Tooltip title={deleteTip} placement=\"right\">\n <span onClick={() => onDelete(index)}>{deleteIcon}</span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>{deleteIcon}</span>\n )}\n </span>\n )\n }}\n ></Column>\n </Table>\n </div>\n )\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/array-input/index.js"],"names":[],"mappings":"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","sourcesContent":["import { get, isArray, isFunction, set, sum, sumBy } from 'lodash'\nimport React, { isValidElement, useCallback, useEffect, useState } from 'react'\nimport LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver'\nimport Col from '../col'\nimport Row from '../row'\nimport Table from '../table'\nimport Tooltip from '../tooltip'\nimport Icon from '../icon'\nimport Button from '../button'\n\nimport './index.less'\n\nconst { Column } = Table\nconst getWidth = (span) => 1000 / span\n\nfunction ArrayInput({\n children,\n defaultValue,\n value,\n onChange,\n mode = 'list',\n gutter = 10,\n require = false,\n deleteTip = '',\n plusTip = '',\n addText,\n locale,\n xProps = {},\n renderAction,\n}) {\n if (!isFunction(children)) {\n throw new Error('ArrayInput的children必须是函数')\n }\n if (addText === undefined) {\n addText = locale?.add\n }\n\n const [_value, setValue] = useState(value || defaultValue)\n\n useEffect(() => {\n setValue(value)\n }, [value])\n\n const _onChange = useCallback((value) => {\n if (onChange) {\n onChange(value)\n } else {\n setValue(value)\n }\n }, [])\n\n let inValue = _value || []\n if (require && inValue.length === 0) {\n inValue = [{}]\n }\n\n const changeValue = (index, name, value) => {\n inValue[index] = {\n ...inValue[index],\n [name]: value,\n }\n _onChange([...inValue])\n }\n\n const onAdd = (index) => {\n if (index === undefined) {\n _onChange([...inValue, {}])\n } else {\n inValue.splice(index + 1, 0, {})\n _onChange([...inValue])\n }\n }\n\n const onDelete = (i) => {\n inValue.splice(i, 1)\n _onChange([...inValue])\n }\n\n if (mode === 'list') {\n return (\n <div className=\"tntd-array-input\">\n {inValue.map((item, index) => {\n let fields = children(item, index)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const actionSpan = 24 - (sum(fields.map((f) => get(f, 'props.span', 4))) % 24)\n return (\n <Row gutter={gutter} key={index} className=\"tntd-array-input-item\">\n {fields.map((field, i) => {\n if (!isValidElement(field)) {\n return field ? (\n <Col span={4} key={i}>\n {field}\n </Col>\n ) : (\n ''\n )\n }\n const { name, span = 4, onChange: fieldChange, ...other } = field?.props\n return (\n <Col span={span} key={i}>\n {React.cloneElement(field, {\n value: item[name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n ...other,\n })}\n </Col>\n )\n })}\n <Col span={actionSpan}>\n <span className=\"tntd-array-input-action\">\n {renderAction ? (\n renderAction(item, index, onDelete, onAdd)\n ) : (\n <>\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </>\n )}\n </span>\n </Col>\n </Row>\n )\n })}\n <Button type=\"link\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n } else {\n let fields = children({}, 0)\n if (!isArray(fields)) {\n fields = get(fields, 'props.children', [])\n }\n const dataSource = inValue.map((value, index) => {\n const fields = children(value, index)\n const back = {}\n fields.forEach((field) => {\n const name = field?.props?.name\n name && set(back, name, field)\n })\n return back\n })\n return (\n <div className=\"tntd-array-input\">\n <Table dataSource={dataSource} pagination={false} bordered {...xProps}>\n {fields.map((field) => {\n const { name, span, title } = field?.props || {}\n return (\n <Column\n key={name}\n dataIndex={name}\n title={title}\n width={getWidth(span || 24 / (fields.length + 1))}\n render={(field, row, index) => {\n if (!isValidElement(field)) {\n return field\n }\n const { onChange: fieldChange } = field.props\n return React.cloneElement(field, {\n value: inValue[index][name] || undefined,\n onChange: (e) => {\n fieldChange && fieldChange(e, index, changeValue)\n const newValue = e.target ? e.target.value : e\n changeValue(index, name, newValue)\n },\n })\n }}\n ></Column>\n )\n })}\n <Column\n key=\"action\"\n dataIndex=\"action\"\n title=\"操作\"\n width={getWidth(24 - (sumBy(fields, 'props.span') % 24))}\n render={(text, row, index) => {\n if (renderAction) {\n return renderAction(row, index, onDelete, onAdd)\n }\n return (\n <span className=\"tntd-array-input-action\">\n {deleteTip ? (\n <Tooltip title={deleteTip}>\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n </Tooltip>\n ) : (\n <span onClick={() => onDelete(index)}>\n <Icon type=\"delete\" />\n </span>\n )}\n </span>\n )\n }}\n ></Column>\n </Table>\n <Button type=\"dashed\" block className=\"mt10\" onClick={() => onAdd()}>\n <Icon type=\"plus\" />\n {addText}\n </Button>\n </div>\n )\n }\n}\n\nexport default function WarpArrayInput(props) {\n return (\n <LocaleReceiver componentName=\"ArrayInput\">\n {(locale) => {\n return <ArrayInput {...props} locale={locale} />\n }}\n </LocaleReceiver>\n )\n}\n"]}
@@ -11,8 +11,11 @@
11
11
  .mr10 {
12
12
  margin-right: 10px;
13
13
  }
14
+ .mt10 {
15
+ margin-top: 10px;
16
+ }
14
17
  &-action {
15
- line-height: 28px;
18
+ line-height: @btn-height-base;
16
19
  > span {
17
20
  cursor: pointer;
18
21
  }
@@ -61,6 +61,9 @@ const en_US = _merge(sourceLocale, {
61
61
  Drawer: {
62
62
  okText: 'Submit',
63
63
  cancelText: 'Cancel'
64
+ },
65
+ ArrayInput: {
66
+ add: 'Add'
64
67
  }
65
68
  });
66
69
  export default en_US;
@@ -1 +1 @@
1
- {"version":3,"file":"en_US.js","sourceRoot":"","sources":["../../src/locale/en_US.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,yCAAyC;AACzC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE;IAChC,KAAK,EAAE;QACL,kBAAkB,EAAE,YAAY;QAChC,gBAAgB,EAAE,SAAS;QAC3B,KAAK,EAAE,4BAA4B;KACpC;IACD,KAAK,EAAE;QACL,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EAAE,sBAAsB;QAC3C,cAAc,EAAE,iBAAiB;QACjC,SAAS,EAAE,uBAAuB;QAClC,MAAM,EAAE,SAAS;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,UAAU,EAAE,aAAa;YACzB,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,aAAa;SAC1B;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;KACb;IACD,SAAS,EAAE;QACT,KAAK,EAAE,0CAA0C;QACjD,KAAK,EAAE,0CAA0C;QACjD,KAAK,EAAE,yCAAyC;KACjD;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,SAAS;KAClB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,SAAS;KAClB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,YAAY;KACnB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;KACb;IACD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,0BAA0B;QACvC,GAAG,EAAE,KAAK;QACV,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,sBAAsB;KAClC;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA","sourcesContent":["/*\n * @Author: 周泽飞 zefei.zhou@tongdun.net\n * @Date: 2023-11-01 17:14:46\n * @LastEditors: 周泽飞 zefei.zhou@tongdun.net\n * @LastEditTime: 2023-11-03 17:02:30\n * @FilePath: /tntd/packages/tntd/src/locale/en_US.ts\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\n */\nimport sourceLocale from 'antd/es/locale/en_US'\n\nimport { merge } from 'lodash'\n\n// 覆盖原始的语言包,以便在使用 LocalReceiver 时获取正确的语言包\nconst en_US = merge(sourceLocale, {\n Table: {\n loadingDescription: 'loading...',\n emptyDescription: 'No data',\n total: 'Totally ${total} Record(s)',\n },\n Empty: {\n noGraphData: 'No data',\n noPermission: 'No permission',\n createdSuccessfully: 'Created successfully',\n creationFailed: 'Creation failed',\n noNetwork: 'Network not connected',\n noData: 'No data',\n },\n Calendar: {\n lang: {\n timeSelect: 'Select time',\n ok: 'OK',\n dateSelect: 'Select date',\n },\n },\n Handle: {\n more: 'More',\n },\n Exception: {\n '403': \"Sorry, we don't have access to this page\",\n '404': 'Sorry, there are no results on this page',\n '500': \"I'm sorry, the server reported an error\",\n },\n TntdCascader: {\n noData: 'No data',\n },\n TntdSelect: {\n noData: 'No data',\n },\n PageLoading: {\n text: 'loading...',\n },\n TntdSecondPage: {\n back: 'Back',\n },\n ColorPicker: {},\n QueryForm: {\n placeholder: 'Attribute type filtering',\n yes: 'Yes',\n no: 'No',\n propTitle: 'Attribute type',\n propValue: 'Attribute type value',\n },\n Drawer: {\n okText: 'Submit',\n cancelText: 'Cancel',\n },\n})\n\nexport default en_US\n"]}
1
+ {"version":3,"file":"en_US.js","sourceRoot":"","sources":["../../src/locale/en_US.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,yCAAyC;AACzC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE;IAChC,KAAK,EAAE;QACL,kBAAkB,EAAE,YAAY;QAChC,gBAAgB,EAAE,SAAS;QAC3B,KAAK,EAAE,4BAA4B;KACpC;IACD,KAAK,EAAE;QACL,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EAAE,sBAAsB;QAC3C,cAAc,EAAE,iBAAiB;QACjC,SAAS,EAAE,uBAAuB;QAClC,MAAM,EAAE,SAAS;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,UAAU,EAAE,aAAa;YACzB,EAAE,EAAE,IAAI;YACR,UAAU,EAAE,aAAa;SAC1B;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;KACb;IACD,SAAS,EAAE;QACT,KAAK,EAAE,0CAA0C;QACjD,KAAK,EAAE,0CAA0C;QACjD,KAAK,EAAE,yCAAyC;KACjD;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,SAAS;KAClB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,SAAS;KAClB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,YAAY;KACnB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;KACb;IACD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,0BAA0B;QACvC,GAAG,EAAE,KAAK;QACV,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,sBAAsB;KAClC;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,QAAQ;KACrB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,KAAK;KACX;CACF,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA","sourcesContent":["/*\n * @Author: 周泽飞 zefei.zhou@tongdun.net\n * @Date: 2023-11-01 17:14:46\n * @LastEditors: 周泽飞 zefei.zhou@tongdun.net\n * @LastEditTime: 2023-11-03 17:02:30\n * @FilePath: /tntd/packages/tntd/src/locale/en_US.ts\n * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\n */\nimport sourceLocale from 'antd/es/locale/en_US'\n\nimport { merge } from 'lodash'\n\n// 覆盖原始的语言包,以便在使用 LocalReceiver 时获取正确的语言包\nconst en_US = merge(sourceLocale, {\n Table: {\n loadingDescription: 'loading...',\n emptyDescription: 'No data',\n total: 'Totally ${total} Record(s)',\n },\n Empty: {\n noGraphData: 'No data',\n noPermission: 'No permission',\n createdSuccessfully: 'Created successfully',\n creationFailed: 'Creation failed',\n noNetwork: 'Network not connected',\n noData: 'No data',\n },\n Calendar: {\n lang: {\n timeSelect: 'Select time',\n ok: 'OK',\n dateSelect: 'Select date',\n },\n },\n Handle: {\n more: 'More',\n },\n Exception: {\n '403': \"Sorry, we don't have access to this page\",\n '404': 'Sorry, there are no results on this page',\n '500': \"I'm sorry, the server reported an error\",\n },\n TntdCascader: {\n noData: 'No data',\n },\n TntdSelect: {\n noData: 'No data',\n },\n PageLoading: {\n text: 'loading...',\n },\n TntdSecondPage: {\n back: 'Back',\n },\n ColorPicker: {},\n QueryForm: {\n placeholder: 'Attribute type filtering',\n yes: 'Yes',\n no: 'No',\n propTitle: 'Attribute type',\n propValue: 'Attribute type value',\n },\n Drawer: {\n okText: 'Submit',\n cancelText: 'Cancel',\n },\n ArrayInput: {\n add: 'Add',\n },\n})\n\nexport default en_US\n"]}
@@ -46,6 +46,9 @@ const zh_CN = _merge(sourceLocale, {
46
46
  Drawer: {
47
47
  okText: '确定',
48
48
  cancelText: '取消'
49
+ },
50
+ ArrayInput: {
51
+ add: '添加'
49
52
  }
50
53
  });
51
54
  export default zh_CN;
@@ -1 +1 @@
1
- {"version":3,"file":"zh_CN.js","sourceRoot":"","sources":["../../src/locale/zh_CN.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,yCAAyC;AACzC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE;IAChC,KAAK,EAAE;QACL,kBAAkB,EAAE,UAAU;QAC9B,gBAAgB,EAAE,MAAM;QACxB,KAAK,EAAE,gBAAgB;KACxB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,MAAM;QACpB,mBAAmB,EAAE,MAAM;QAC3B,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,MAAM;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;KACX;IACD,SAAS,EAAE;QACT,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,WAAW;KACnB;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;KACf;IACD,UAAU,EAAE;QACV,MAAM,EAAE,MAAM;KACf;IACD,cAAc,EAAE;QACd,IAAI,EAAE,IAAI;KACX;IACD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,QAAQ;QACrB,GAAG,EAAE,GAAG;QACR,EAAE,EAAE,GAAG;QACP,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,OAAO;KACnB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;KACjB;CACF,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA","sourcesContent":["import sourceLocale from 'antd/es/locale/zh_CN'\n\nimport { merge } from 'lodash'\n\n// 覆盖原始的语言包,以便在使用 LocalReceiver 时获取正确的语言包\nconst zh_CN = merge(sourceLocale, {\n Table: {\n loadingDescription: '数据加载中...',\n emptyDescription: '暂无数据',\n total: '共 ${total} 条记录',\n },\n Empty: {\n noGraphData: '暂无图表',\n noPermission: '暂无权限',\n createdSuccessfully: '创建成功',\n creationFailed: '创建失败',\n noNetwork: '网络未连接',\n noData: '暂无数据',\n },\n Handle: {\n more: '更多',\n },\n Exception: {\n '403': '很抱歉,暂无该页面访问权限',\n '404': '很抱歉,本页暂无结果',\n '500': '很抱歉,服务器报错',\n },\n TntdCascader: {\n noData: '暂无数据',\n },\n PageLoading: {\n text: '加载中...',\n },\n TntdSelect: {\n noData: '暂无数据',\n },\n TntdSecondPage: {\n back: '返回',\n },\n ColorPicker: {},\n QueryForm: {\n placeholder: '属性类型筛选',\n yes: '是',\n no: '否',\n propTitle: '属性类型',\n propValue: '属性类型值',\n },\n Drawer: {\n okText: '确定',\n cancelText: '取消',\n },\n})\n\nexport default zh_CN\n"]}
1
+ {"version":3,"file":"zh_CN.js","sourceRoot":"","sources":["../../src/locale/zh_CN.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE9B,yCAAyC;AACzC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE;IAChC,KAAK,EAAE;QACL,kBAAkB,EAAE,UAAU;QAC9B,gBAAgB,EAAE,MAAM;QACxB,KAAK,EAAE,gBAAgB;KACxB;IACD,KAAK,EAAE;QACL,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,MAAM;QACpB,mBAAmB,EAAE,MAAM;QAC3B,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,MAAM;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;KACX;IACD,SAAS,EAAE;QACT,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,WAAW;KACnB;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;KACf;IACD,UAAU,EAAE;QACV,MAAM,EAAE,MAAM;KACf;IACD,cAAc,EAAE;QACd,IAAI,EAAE,IAAI;KACX;IACD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE;QACT,WAAW,EAAE,QAAQ;QACrB,GAAG,EAAE,GAAG;QACR,EAAE,EAAE,GAAG;QACP,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,OAAO;KACnB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;KACjB;IACD,UAAU,EAAE;QACV,GAAG,EAAE,IAAI;KACV;CACF,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA","sourcesContent":["import sourceLocale from 'antd/es/locale/zh_CN'\n\nimport { merge } from 'lodash'\n\n// 覆盖原始的语言包,以便在使用 LocalReceiver 时获取正确的语言包\nconst zh_CN = merge(sourceLocale, {\n Table: {\n loadingDescription: '数据加载中...',\n emptyDescription: '暂无数据',\n total: '共 ${total} 条记录',\n },\n Empty: {\n noGraphData: '暂无图表',\n noPermission: '暂无权限',\n createdSuccessfully: '创建成功',\n creationFailed: '创建失败',\n noNetwork: '网络未连接',\n noData: '暂无数据',\n },\n Handle: {\n more: '更多',\n },\n Exception: {\n '403': '很抱歉,暂无该页面访问权限',\n '404': '很抱歉,本页暂无结果',\n '500': '很抱歉,服务器报错',\n },\n TntdCascader: {\n noData: '暂无数据',\n },\n PageLoading: {\n text: '加载中...',\n },\n TntdSelect: {\n noData: '暂无数据',\n },\n TntdSecondPage: {\n back: '返回',\n },\n ColorPicker: {},\n QueryForm: {\n placeholder: '属性类型筛选',\n yes: '是',\n no: '否',\n propTitle: '属性类型',\n propValue: '属性类型值',\n },\n Drawer: {\n okText: '确定',\n cancelText: '取消',\n },\n ArrayInput: {\n add: '添加',\n },\n})\n\nexport default zh_CN\n"]}
@@ -1,7 +1,4 @@
1
1
  @table-prefix-cls: ~'@{ant-prefix}-table';
2
- @pagination-prefix-cls: ~'@{ant-prefix}-pagination';
3
- @spin-prefix-cls: ~'@{ant-prefix}-spin';
4
- @table-borderless-shadow: 0 0 14px rgba(0, 0, 0, 0.08);
5
2
 
6
3
  // .@{table-prefix-cls} {
7
4
  .tnt-table-wrapper {
@@ -15,7 +12,6 @@
15
12
  tr.@{table-prefix-cls}-expanded-row.@{table-prefix-cls}-expanded-row-level-1 {
16
13
  position: relative;
17
14
  z-index: 10;
18
- background: #f3f4f6;
19
15
 
20
16
  > td:not([colspan]) {
21
17
  display: none;
@@ -23,29 +19,31 @@
23
19
 
24
20
  // 兼容低版本浏览器
25
21
  > td[colspan] {
26
- background: #fff;
22
+ position: relative;
27
23
  z-index: 100;
28
24
  padding: 0;
29
- border: none;
30
25
 
31
26
  > .@{table-prefix-cls}-expanded-row-fixed {
32
27
  position: sticky;
33
28
  left: 0px;
34
29
  overflow: hidden;
35
- padding: 16px;
36
- background: inherit;
37
- border-top: 1px solid #e1e6ee;
30
+ padding: 0px 16px;
38
31
  }
39
32
  }
40
33
  }
41
34
  }
42
35
  }
43
36
 
44
- .@{table-prefix-cls}-fixed-left table {
45
- width: fit-content;
46
- }
47
- .@{table-prefix-cls}-fixed-right table {
37
+ .@{table-prefix-cls}-fixed-left table, .@{table-prefix-cls}-fixed-right table {
48
38
  width: fit-content;
39
+
40
+ tr.@{table-prefix-cls}-expanded-row.@{table-prefix-cls}-expanded-row-level-1 {
41
+ > td {
42
+ position: relative;
43
+ z-index: -1;
44
+ }
45
+ }
49
46
  }
47
+
50
48
  }
51
- }
49
+ }
@@ -18,11 +18,13 @@ export const useExpandFixed = () => {
18
18
  };
19
19
  const expand = async () => {
20
20
  const [main, right, left] = getDom(String(activeKeyRef.current) || '');
21
+ const border = 2;
22
+ const height = (main === null || main === void 0 ? void 0 : main.offsetHeight) - border || 0;
21
23
  if (right) {
22
- right.setAttribute('style', `display: inline-block; height: ${(main === null || main === void 0 ? void 0 : main.offsetHeight) || 0}px; overflow: hidden;`);
24
+ right.setAttribute('style', `display: inline-block; height: ${height}px; overflow: hidden;`);
23
25
  }
24
26
  if (left) {
25
- left.setAttribute('style', `display: inline-block; height: ${(main === null || main === void 0 ? void 0 : main.offsetHeight) || 0}px; overflow: hidden;`);
27
+ left.setAttribute('style', `display: inline-block; height: ${height}px; overflow: hidden;`);
26
28
  }
27
29
  if (main) {
28
30
  // 解决 expandIconAsCell为true 且 iconCell的td元素为display: none;时, 展开内容滚动到最右边,会多出一部分iconCell所占据的空间 的问题
@@ -1 +1 @@
1
- {"version":3,"file":"use-expand-fixed.js","sourceRoot":"","sources":["../../../src/table/hooks/use-expand-fixed.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef } from 'react'\nimport { makeRandomCode } from '../utils'\n\nexport type keyType = string | number | null\n\ninterface OldDom {\n main: HTMLDivElement | null\n right: HTMLDivElement | null\n left: HTMLDivElement | null\n}\n\nexport const useExpandFixed = () => {\n const curTableKey = useRef<keyType>(makeRandomCode())\n const activeKeyRef = useRef<string | null>(null)\n const oldActiveKeyRef = useRef<OldDom>({\n main: null,\n right: null,\n left: null,\n })\n const container = useRef<HTMLDivElement | null>(null)\n const observer = useRef<MutationObserver | null>(null)\n\n const getDom = (key: string | number | undefined) => {\n const main =\n (document.querySelector(\n `.${curTableKey.current} .ant-table-scroll [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement) ||\n (document.querySelector(\n `.${curTableKey.current} .ant-table-default [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement)\n const right = document.querySelector(\n `.${curTableKey.current} .ant-table-fixed-right [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement\n const left = document.querySelector(\n `.${curTableKey.current} .ant-table-fixed-left [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement\n return [main, right, left]\n }\n\n const expand = async () => {\n const [main, right, left] = getDom(String(activeKeyRef.current) || '')\n\n if (right) {\n right.setAttribute(\n 'style',\n `display: inline-block; height: ${main?.offsetHeight || 0}px; overflow: hidden;`\n )\n }\n\n if (left) {\n left.setAttribute(\n 'style',\n `display: inline-block; height: ${main?.offsetHeight || 0}px; overflow: hidden;`\n )\n }\n\n if (main) {\n // 解决 expandIconAsCell为true 且 iconCell的td元素为display: none;时, 展开内容滚动到最右边,会多出一部分iconCell所占据的空间 的问题\n const td = main.childNodes[1] as HTMLDivElement\n\n const colspan = td.getAttribute('colspan') || 0\n const Oldcolspan = td.getAttribute('oldcolspan') || 0\n const newColspan = Oldcolspan ? Oldcolspan : Number(colspan) + 1 + ''\n if (!Oldcolspan) td.setAttribute('oldcolspan', newColspan)\n\n td.setAttribute('colspan', newColspan)\n //\n }\n\n oldActiveKeyRef.current = {\n main,\n right,\n left,\n }\n }\n\n const ob = () => {\n const classname = curTableKey.current\n if (!classname) return\n\n container.current = document.querySelector(\n `.${classname}.ant-table-wrapper.collapse-panel > .ant-spin-nested-loading > .ant-spin-container > .ant-table`\n ) as HTMLDivElement\n\n observer.current = new MutationObserver(expand)\n observer.current.observe(container.current, {\n childList: true, // 子节点的变动\n attributes: true,\n })\n }\n\n const setChangedKey = (key: string) => {\n activeKeyRef.current = key\n }\n\n const trigger = (key: string) => {\n setChangedKey(key)\n const className = curTableKey.current\n if (!className) return\n const dom = document?.querySelector(\n `.${className}.ant-table-wrapper.collapse-panel > .ant-spin-nested-loading > .ant-spin-container > .ant-table`\n )\n dom?.setAttribute('c-data', 'Mutation')\n }\n\n useEffect(() => {\n ob()\n }, [curTableKey.current])\n\n return [curTableKey.current, trigger as (key: string) => void] as const\n}\n\nexport const findRowKey = (\n record: any,\n rowKey: string | ((record: any, index: number) => string)\n) => {\n let res: string | number = ''\n if (typeof rowKey === 'function') {\n res = [record].map(rowKey)[0]\n } else if (typeof rowKey === 'string') {\n res = record[rowKey]\n }\n\n return res\n}\n"]}
1
+ {"version":3,"file":"use-expand-fixed.js","sourceRoot":"","sources":["../../../src/table/hooks/use-expand-fixed.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef } from 'react'\nimport { makeRandomCode } from '../utils'\n\nexport type keyType = string | number | null\n\ninterface OldDom {\n main: HTMLDivElement | null\n right: HTMLDivElement | null\n left: HTMLDivElement | null\n}\n\nexport const useExpandFixed = () => {\n const curTableKey = useRef<keyType>(makeRandomCode())\n const activeKeyRef = useRef<string | null>(null)\n const oldActiveKeyRef = useRef<OldDom>({\n main: null,\n right: null,\n left: null,\n })\n const container = useRef<HTMLDivElement | null>(null)\n const observer = useRef<MutationObserver | null>(null)\n\n const getDom = (key: string | number | undefined) => {\n const main =\n (document.querySelector(\n `.${curTableKey.current} .ant-table-scroll [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement) ||\n (document.querySelector(\n `.${curTableKey.current} .ant-table-default [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement)\n const right = document.querySelector(\n `.${curTableKey.current} .ant-table-fixed-right [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement\n const left = document.querySelector(\n `.${curTableKey.current} .ant-table-fixed-left [data-row-key=\"${key}-extra-row\"]`\n ) as HTMLDivElement\n return [main, right, left]\n }\n\n const expand = async () => {\n const [main, right, left] = getDom(String(activeKeyRef.current) || '')\n const border = 2\n const height = main?.offsetHeight - border || 0\n if (right) {\n right.setAttribute('style', `display: inline-block; height: ${height}px; overflow: hidden;`)\n }\n\n if (left) {\n left.setAttribute('style', `display: inline-block; height: ${height}px; overflow: hidden;`)\n }\n\n if (main) {\n // 解决 expandIconAsCell为true 且 iconCell的td元素为display: none;时, 展开内容滚动到最右边,会多出一部分iconCell所占据的空间 的问题\n const td = main.childNodes[1] as HTMLDivElement\n\n const colspan = td.getAttribute('colspan') || 0\n const Oldcolspan = td.getAttribute('oldcolspan') || 0\n const newColspan = Oldcolspan ? Oldcolspan : Number(colspan) + 1 + ''\n if (!Oldcolspan) td.setAttribute('oldcolspan', newColspan)\n\n td.setAttribute('colspan', newColspan)\n //\n }\n\n oldActiveKeyRef.current = {\n main,\n right,\n left,\n }\n }\n\n const ob = () => {\n const classname = curTableKey.current\n if (!classname) return\n\n container.current = document.querySelector(\n `.${classname}.ant-table-wrapper.collapse-panel > .ant-spin-nested-loading > .ant-spin-container > .ant-table`\n ) as HTMLDivElement\n\n observer.current = new MutationObserver(expand)\n observer.current.observe(container.current, {\n childList: true, // 子节点的变动\n attributes: true,\n })\n }\n\n const setChangedKey = (key: string) => {\n activeKeyRef.current = key\n }\n\n const trigger = (key: string) => {\n setChangedKey(key)\n const className = curTableKey.current\n if (!className) return\n const dom = document?.querySelector(\n `.${className}.ant-table-wrapper.collapse-panel > .ant-spin-nested-loading > .ant-spin-container > .ant-table`\n )\n dom?.setAttribute('c-data', 'Mutation')\n }\n\n useEffect(() => {\n ob()\n }, [curTableKey.current])\n\n return [curTableKey.current, trigger as (key: string) => void] as const\n}\n\nexport const findRowKey = (\n record: any,\n rowKey: string | ((record: any, index: number) => string)\n) => {\n let res: string | number = ''\n if (typeof rowKey === 'function') {\n res = [record].map(rowKey)[0]\n } else if (typeof rowKey === 'string') {\n res = record[rowKey]\n }\n\n return res\n}\n"]}
package/es/table/table.js CHANGED
@@ -10,12 +10,11 @@ var __rest = this && this.__rest || function (s, e) {
10
10
  };
11
11
  import { ConfigConsumer } from 'antd/es/config-provider';
12
12
  import LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver';
13
- import Icon from '../icon/index';
14
13
  import { default as AntdTable } from 'antd/es/table';
15
14
  import Column from 'antd/es/table/Column';
16
15
  import ColumnGroup from 'antd/es/table/ColumnGroup';
17
16
  import classNames from 'classnames';
18
- import React, { useMemo, useRef } from 'react';
17
+ import React, { useMemo, useRef, useState } from 'react';
19
18
  import Ellipsis from '../ellipsis';
20
19
  import { TableContext } from './context';
21
20
  import { useColumnSetting, useExpandFixed } from './hooks';
@@ -57,7 +56,7 @@ export const Table = _a => {
57
56
  storageKey,
58
57
  columns,
59
58
  children,
60
- sticky = true,
59
+ sticky = false,
61
60
  shadowed,
62
61
  striped = true,
63
62
  showCellBorders = false,
@@ -68,16 +67,11 @@ export const Table = _a => {
68
67
  unUpperConverted,
69
68
  // 强制不要转换
70
69
  unTooltip,
71
- onExpandedRowsChange,
72
- expandedRowRender,
73
- // expandedRowKeys = [],
74
- onExpand,
75
- rowClassName,
76
- smallPadding
70
+ smallPadding,
71
+ rowClassName
77
72
  } = _a,
78
- rest = __rest(_a, ["className", "locale", "bordered", "size", "storageKey", "columns", "children", "sticky", "shadowed", "striped", "showCellBorders", "enableToolbar", "refresh", "upperCaseIgnore", "unUpperConverted", "unTooltip", "onExpandedRowsChange", "expandedRowRender", "onExpand", "rowClassName", "smallPadding"]);
73
+ rest = __rest(_a, ["className", "locale", "bordered", "size", "storageKey", "columns", "children", "sticky", "shadowed", "striped", "showCellBorders", "enableToolbar", "refresh", "upperCaseIgnore", "unUpperConverted", "unTooltip", "smallPadding", "rowClassName"]);
79
74
  const tableContainer = useRef(null);
80
- const tableContainerWidth = React.useRef(0);
81
75
  // const [innerSize, setInnerSize] = useLocalStorage<TableProps<T>['size']>(
82
76
  // TABLE_SIZE_STORAGE_KEY,
83
77
  // 'default'
@@ -110,6 +104,7 @@ export const Table = _a => {
110
104
  }
111
105
  return rowClassName;
112
106
  };
107
+ const [fixedWidth, setFixedWidth] = useState(Number);
113
108
  const lang = getLanguage();
114
109
  let newColumns = displayColumns;
115
110
  // 非中文做处理
@@ -193,87 +188,25 @@ export const Table = _a => {
193
188
  * expand 与 fix 兼容,expand悬浮
194
189
  */
195
190
  const [tableKey, trigger] = useExpandFixed();
196
- // 自定义展开收起
197
- const customExpandIcon = p => {
198
- const {
199
- expanded
200
- } = p;
201
- if (expanded) {
202
- return React.createElement("span", {
203
- style: {
204
- marginLeft: !rest.rowSelection ? '0px' : undefined,
205
- paddingLeft: !rest.rowSelection ? '0px' : undefined
206
- },
207
- className: "expand",
208
- onClick: e => {
209
- e.stopPropagation();
210
- p === null || p === void 0 ? void 0 : p.onExpand(p.record, e);
211
- if (onExpand) onExpand(p.expanded, p.record);
212
- }
213
- }, React.createElement(Icon, {
214
- type: "minus-square"
215
- }));
216
- }
217
- return React.createElement("span", {
218
- style: {
219
- marginLeft: !rest.rowSelection ? '0px' : undefined,
220
- paddingLeft: !rest.rowSelection ? '0px' : undefined
221
- },
222
- className: "expand",
223
- onClick: e => {
224
- e.stopPropagation();
225
- p === null || p === void 0 ? void 0 : p.onExpand(p.record, e);
226
- if (onExpand) onExpand(p.expanded, p.record);
227
- }
228
- }, React.createElement(Icon, {
229
- type: "plus-square"
230
- }));
231
- };
232
- const expandIconColumnIndex = (rest === null || rest === void 0 ? void 0 : rest.rowSelection) ? 1 : rest.expandIconColumnIndex || 0; // 确定checkbox框位置
233
- // 设置expandIcon的默认值
234
- let expandIcon = rest.expandIcon;
235
- if (expandedRowRender && !rest.expandIcon) {
236
- expandIcon = props => customExpandIcon(Object.assign(Object.assign({}, props), {
237
- needIndentSpaced: true
238
- }));
239
- } else if (!expandedRowRender) {
240
- expandIcon = undefined;
241
- }
242
- // const [activeKeys, setActiveKeys] = React.useState<string[] | number[] | []>(
243
- // expandedRowKeys.splice(0, 1) as string[] | number[] | []
244
- // )
245
191
  const stickyProps = useMemo(() => {
246
192
  return {
247
193
  onExpandedRowsChange: arg => {
248
194
  const key = arg && arg[arg.length - 1];
249
- if (onExpandedRowsChange) onExpandedRowsChange([Number(key)]);
195
+ if (rest === null || rest === void 0 ? void 0 : rest.onExpandedRowsChange) rest === null || rest === void 0 ? void 0 : rest.onExpandedRowsChange([Number(key)]);
250
196
  // 触发MutationObserver监听
251
197
  trigger(key);
252
198
  },
253
- expandedRowRender: expandedRowRender ? (record, index, indent, expanded) => {
199
+ expandedRowRender: (rest === null || rest === void 0 ? void 0 : rest.expandedRowRender) ? (record, index, indent, expanded) => {
254
200
  const padding = 0;
255
201
  return React.createElement("div", {
256
202
  className: "ant-table-expanded-row-fixed",
257
203
  style: {
258
- width: tableContainerWidth.current + padding
204
+ width: fixedWidth + padding
259
205
  }
260
- }, expandedRowRender && expandedRowRender(record, index, indent, expanded));
261
- } : undefined,
262
- expandIconAsCell: true,
263
- expandIconColumnIndex: expandIconColumnIndex,
264
- expandIcon: expandIcon
265
- // expandedRowKeys: activeKeys,
266
- // onExpand: (expanded: boolean, record: any) => {
267
- // const rowKeys: string[] | number[] = [findRowKey(record, rest.rowKey || 'key')] as
268
- // | string[]
269
- // | number[]
270
- // setActiveKeys(expanded ? rowKeys : [])
271
- // },
206
+ }, (rest === null || rest === void 0 ? void 0 : rest.expandedRowRender) && (rest === null || rest === void 0 ? void 0 : rest.expandedRowRender(record, index, indent, expanded)));
207
+ } : undefined
272
208
  };
273
- }, [expandedRowRender, expandIconColumnIndex, expandIcon,
274
- // activeKeys,
275
- // rest.rowKey,
276
- onExpandedRowsChange, trigger]);
209
+ }, [rest === null || rest === void 0 ? void 0 : rest.expandedRowRender, rest === null || rest === void 0 ? void 0 : rest.onExpandedRowsChange, trigger]);
277
210
  return React.createElement(TableContext.Provider, {
278
211
  value: {
279
212
  // size: innerSize,
@@ -300,7 +233,7 @@ export const Table = _a => {
300
233
  onResize: ({
301
234
  width
302
235
  }) => {
303
- tableContainerWidth.current = width;
236
+ setFixedWidth(width);
304
237
  }
305
238
  }, React.createElement(AntdTable, Object.assign({
306
239
  className: classNames(
@@ -313,8 +246,8 @@ export const Table = _a => {
313
246
  [`${prefixCls}-striped`]: striped,
314
247
  [`${prefixCls}-shadowed`]: shadowed,
315
248
  [`${prefixCls}-has-footer`]: rest.footer,
316
- [`${prefixCls}-sticky`]: sticky,
317
- [`${prefixCls}-small-padding`]: smallPadding
249
+ [`${prefixCls}-small-padding`]: smallPadding,
250
+ [`${prefixCls}-sticky`]: sticky
318
251
  }, className),
319
252
  locale: locale,
320
253
  bordered: bordered,