@next-libs/cmdb-instances 6.27.0 → 6.27.3

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 (24) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/cjs/instance-list/InstanceList.js +1 -0
  3. package/dist/cjs/instance-list/InstanceList.js.map +1 -1
  4. package/dist/cjs/instance-list-table/AdvancedSearchCondition.js +71 -200
  5. package/dist/cjs/instance-list-table/AdvancedSearchCondition.js.map +1 -1
  6. package/dist/cjs/instance-list-table/DynamicSearch.js +284 -0
  7. package/dist/cjs/instance-list-table/DynamicSearch.js.map +1 -0
  8. package/dist/cjs/instance-list-table/InstanceListTable.js +10 -6
  9. package/dist/cjs/instance-list-table/InstanceListTable.js.map +1 -1
  10. package/dist/esm/instance-list/InstanceList.js +1 -0
  11. package/dist/esm/instance-list/InstanceList.js.map +1 -1
  12. package/dist/esm/instance-list-table/AdvancedSearchCondition.js +71 -202
  13. package/dist/esm/instance-list-table/AdvancedSearchCondition.js.map +1 -1
  14. package/dist/esm/instance-list-table/DynamicSearch.js +269 -0
  15. package/dist/esm/instance-list-table/DynamicSearch.js.map +1 -0
  16. package/dist/esm/instance-list-table/DynamicSearch.module.css +40 -0
  17. package/dist/esm/instance-list-table/InstanceListTable.js +10 -6
  18. package/dist/esm/instance-list-table/InstanceListTable.js.map +1 -1
  19. package/dist/types/instance-list/InstanceList.d.ts +1 -0
  20. package/dist/types/instance-list-table/AdvancedSearchCondition.d.ts +2 -5
  21. package/dist/types/instance-list-table/DynamicSearch.d.ts +32 -0
  22. package/dist/types/instance-list-table/DynamicSearch.spec.d.ts +1 -0
  23. package/dist/types/instance-list-table/InstanceListTable.d.ts +2 -1
  24. package/package.json +2 -2
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DynamicSearchForm = exports.DynamicSearch = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
15
+
16
+ var _lodash = require("lodash");
17
+
18
+ var _compatible = require("@ant-design/compatible");
19
+
20
+ var _antd = require("antd");
21
+
22
+ var _cmdbUtils = require("@next-libs/cmdb-utils");
23
+
24
+ var _DynamicSearchModule = _interopRequireDefault(require("./DynamicSearch.module.css"));
25
+
26
+ var _i18next = _interopRequireDefault(require("i18next"));
27
+
28
+ var _constants = require("../i18n/constants");
29
+
30
+ var _processors = require("../processors");
31
+
32
+ class DynamicSearchForm extends _react.default.Component {
33
+ constructor(props) {
34
+ super(props);
35
+ (0, _defineProperty2.default)(this, "onValueChange", (value, fieldIndex, valueIndex) => {
36
+ this.setState({
37
+ fields: (0, _immutabilityHelper.default)(this.state.fields, {
38
+ [fieldIndex]: {
39
+ values: {
40
+ [valueIndex]: {
41
+ $set: value
42
+ }
43
+ }
44
+ }
45
+ })
46
+ });
47
+ });
48
+ (0, _defineProperty2.default)(this, "handleValueChange", (e, fieldIndex) => {
49
+ this.onValueChange(e.target.value, fieldIndex, 0);
50
+ });
51
+ (0, _defineProperty2.default)(this, "handleSearch", e => {
52
+ e.preventDefault();
53
+
54
+ if (this.props.onSearch) {
55
+ let queries = [];
56
+ let queriesToShow = [];
57
+ const fieldToShow = [];
58
+ this.state.fields.forEach(field => {
59
+ const expressions = {};
60
+ const fieldId = field.id;
61
+ let fieldQuery = {
62
+ [fieldId]: expressions
63
+ };
64
+ let fieldQueryToShow = {
65
+ [fieldId]: expressions
66
+ };
67
+ let hasValue = false;
68
+ const operator = {
69
+ comparisonOperator: _cmdbUtils.ComparisonOperators.Like,
70
+ logicalOperator: _cmdbUtils.LogicalOperators.Or
71
+ };
72
+ field.values.forEach(value => {
73
+ fieldQuery = {
74
+ [field.id]: expressions
75
+ };
76
+ const fieldIdToShow = field.id;
77
+ fieldQueryToShow = {
78
+ [fieldIdToShow]: expressions
79
+ };
80
+
81
+ if (value !== null && value !== "" && !(Array.isArray(value) && value.length === 0)) {
82
+ let values;
83
+
84
+ if (typeof value === "string") {
85
+ values = (0, _processors.processAttrValueWithQuote)(value, []);
86
+ }
87
+
88
+ if (values.length) {
89
+ fieldQuery = {
90
+ [operator.logicalOperator]: values.map(value => {
91
+ return {
92
+ [fieldId]: {
93
+ [operator.comparisonOperator]: `%${value}%`
94
+ }
95
+ };
96
+ })
97
+ };
98
+ }
99
+
100
+ fieldQueryToShow = {
101
+ [operator.logicalOperator]: values.map(value => {
102
+ return {
103
+ [fieldIdToShow]: {
104
+ [operator.comparisonOperator]: `%${value}%`
105
+ }
106
+ };
107
+ })
108
+ };
109
+ hasValue = true;
110
+ fieldToShow.push({
111
+ [field.id]: field.values
112
+ });
113
+ }
114
+ });
115
+
116
+ if (hasValue) {
117
+ queries.push(fieldQuery);
118
+ queriesToShow.push(fieldQueryToShow);
119
+ }
120
+ });
121
+
122
+ if (queries.length === 0) {
123
+ queries = undefined;
124
+ queriesToShow = undefined;
125
+ }
126
+
127
+ if (!(0, _lodash.isEqual)(this.props.q, queries)) {
128
+ this.props.onSearch(queries, queriesToShow, fieldToShow);
129
+ }
130
+ }
131
+ });
132
+ (0, _defineProperty2.default)(this, "handleReset", () => {
133
+ this.props.onSearch([], [], []);
134
+ this.props.form.resetFields();
135
+ });
136
+ this.state = this.computeState();
137
+ }
138
+
139
+ componentDidUpdate(prevProps) {
140
+ if (!(0, _lodash.isEqual)(this.props.q, prevProps.q)) {
141
+ const newState = this.computeState();
142
+ this.setState(newState);
143
+ this.setFormFieldValues(newState.fields);
144
+ }
145
+ }
146
+
147
+ computeState() {
148
+ const fieldQueryOperatorExpressionsMap = {};
149
+ let fields = [];
150
+
151
+ if (this.props.q) {
152
+ this.props.q.forEach(query => {
153
+ Object.entries(query).forEach(([key, expressions]) => {
154
+ if (key === _cmdbUtils.LogicalOperators.Or || key === _cmdbUtils.LogicalOperators.And) {
155
+ const firstSubQuery = expressions[0];
156
+ const fieldId = Object.keys(firstSubQuery)[0];
157
+ const compareOperator = Object.keys(firstSubQuery[fieldId])[0];
158
+ let subQueryValue = "";
159
+ let targetField;
160
+
161
+ if (_processors.ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {
162
+ var _this$props$fieldToSh;
163
+
164
+ targetField = (_this$props$fieldToSh = this.props.fieldToShow) === null || _this$props$fieldToSh === void 0 ? void 0 : _this$props$fieldToSh.find(fieldItem => Object.keys(fieldItem)[0] === fieldId);
165
+ }
166
+
167
+ if (!(0, _lodash.isNil)(targetField)) {
168
+ // 二维数组会有问题,
169
+ subQueryValue = (0, _lodash.isArray)(targetField[fieldId]) ? targetField[fieldId].map(item => (0, _lodash.isArray)(item) ? item.join(" ") : item).join("") : targetField[fieldId];
170
+ } else {
171
+ subQueryValue = expressions.map(query => {
172
+ const targetValue = query[fieldId][compareOperator];
173
+
174
+ if (compareOperator === _cmdbUtils.ComparisonOperators.Like || compareOperator === _cmdbUtils.ComparisonOperators.NotLike) {
175
+ return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `${targetValue[0]}"${targetValue.slice(1, targetValue.length - 1)}"${targetValue[targetValue.length - 1]}` : targetValue;
176
+ } else {
177
+ return (0, _lodash.isString)(targetValue) && targetValue.includes(" ") ? `"${targetValue}"` : targetValue;
178
+ }
179
+ }).join(" ");
180
+ }
181
+
182
+ key = fieldId;
183
+ expressions = {
184
+ [compareOperator]: subQueryValue
185
+ };
186
+ }
187
+
188
+ fieldQueryOperatorExpressionsMap[key] = expressions;
189
+ });
190
+ });
191
+ }
192
+
193
+ if (this.props.fields) {
194
+ fields = this.props.fields.map(v => ({ ...v,
195
+ values: [null]
196
+ }));
197
+
198
+ if (!(0, _lodash.isEmpty)(fieldQueryOperatorExpressionsMap)) {
199
+ fields = this.props.fields.map(v => {
200
+ let str = null;
201
+
202
+ if (fieldQueryOperatorExpressionsMap[v.id]) {
203
+ const expressions = fieldQueryOperatorExpressionsMap[v.id]["$like"];
204
+ str = expressions.replace(/%/g, "");
205
+ }
206
+
207
+ return { ...v,
208
+ values: [str]
209
+ };
210
+ });
211
+ }
212
+ }
213
+
214
+ return {
215
+ fields
216
+ };
217
+ }
218
+
219
+ setFormFieldValues(fields) {
220
+ const values = fields.reduce((acc, field) => {
221
+ acc[`${field.id}`] = field.values.join("");
222
+ return acc;
223
+ }, {});
224
+ this.props.form.setFieldsValue(values);
225
+ }
226
+
227
+ getFields() {
228
+ const {
229
+ getFieldDecorator
230
+ } = this.props.form;
231
+ return this.state.fields.map((field, fieldIndex) => {
232
+ return /*#__PURE__*/_react.default.createElement(_antd.Col, {
233
+ span: 12,
234
+ key: field.id
235
+ }, /*#__PURE__*/_react.default.createElement(_compatible.Form.Item, {
236
+ label: field.name
237
+ }, getFieldDecorator(`${field.id}`, {
238
+ initialValue: field.values || ""
239
+ })( /*#__PURE__*/_react.default.createElement(_antd.Input, {
240
+ className: _DynamicSearchModule.default.conditionInput,
241
+ addonBefore: _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.OPERATOR_CONTAIN_DEFINE}`),
242
+ placeholder: _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`),
243
+ onChange: e => this.handleValueChange(e, fieldIndex)
244
+ }))));
245
+ });
246
+ }
247
+
248
+ render() {
249
+ return /*#__PURE__*/_react.default.createElement("div", {
250
+ className: _DynamicSearchModule.default.dynamicSearch
251
+ }, /*#__PURE__*/_react.default.createElement(_compatible.Form, {
252
+ layout: "vertical",
253
+ className: _DynamicSearchModule.default.dynamicSearchForm,
254
+ onSubmit: this.handleSearch
255
+ }, /*#__PURE__*/_react.default.createElement(_antd.Row, {
256
+ gutter: 50
257
+ }, this.getFields()), /*#__PURE__*/_react.default.createElement(_antd.Row, null, /*#__PURE__*/_react.default.createElement(_antd.Col, {
258
+ span: 24,
259
+ style: {
260
+ textAlign: "right"
261
+ }
262
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
263
+ type: "primary",
264
+ htmlType: "submit",
265
+ "data-testid": "submit-button"
266
+ }, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.SEARCH}`)), /*#__PURE__*/_react.default.createElement(_antd.Button, {
267
+ style: {
268
+ marginLeft: 8
269
+ },
270
+ onClick: this.handleReset,
271
+ "data-testid": "reset-button"
272
+ }, _i18next.default.t(`${_constants.NS_LIBS_CMDB_INSTANCES}:${_constants.K.RESET}`))))));
273
+ }
274
+
275
+ }
276
+
277
+ exports.DynamicSearchForm = DynamicSearchForm;
278
+
279
+ const DynamicSearch = _compatible.Form.create({
280
+ name: "dynamic_search"
281
+ })(DynamicSearchForm);
282
+
283
+ exports.DynamicSearch = DynamicSearch;
284
+ //# sourceMappingURL=DynamicSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/instance-list-table/DynamicSearch.tsx"],"names":["DynamicSearchForm","React","Component","constructor","props","value","fieldIndex","valueIndex","setState","fields","state","values","$set","e","onValueChange","target","preventDefault","onSearch","queries","queriesToShow","fieldToShow","forEach","field","expressions","fieldId","id","fieldQuery","fieldQueryToShow","hasValue","operator","comparisonOperator","ComparisonOperators","Like","logicalOperator","LogicalOperators","Or","fieldIdToShow","Array","isArray","length","map","push","undefined","q","form","resetFields","computeState","componentDidUpdate","prevProps","newState","setFormFieldValues","fieldQueryOperatorExpressionsMap","query","Object","entries","key","And","firstSubQuery","keys","compareOperator","subQueryValue","targetField","ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE","find","fieldItem","item","join","targetValue","NotLike","includes","slice","v","str","replace","reduce","acc","setFieldsValue","getFields","getFieldDecorator","name","initialValue","styles","conditionInput","i18n","t","NS_LIBS_CMDB_INSTANCES","K","OPERATOR_CONTAIN_DEFINE","ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER","handleValueChange","render","dynamicSearch","dynamicSearchForm","handleSearch","textAlign","SEARCH","marginLeft","handleReset","RESET","DynamicSearch","Form","create"],"mappings":"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","sourcesContent":["import React, { FormEvent } from \"react\";\nimport update from \"immutability-helper\";\nimport { isEqual, isNil, isString, isArray, isEmpty } from \"lodash\";\nimport { Form } from \"@ant-design/compatible\";\nimport { Button, Col, Input, Row, Select } from \"antd\";\nimport { FormComponentProps } from \"@ant-design/compatible/lib/form\";\nimport {\n ComparisonOperators,\n LogicalOperators,\n Query,\n QueryOperatorExpressions,\n} from \"@next-libs/cmdb-utils\";\nimport styles from \"./DynamicSearch.module.css\";\nimport i18n from \"i18next\";\nimport { NS_LIBS_CMDB_INSTANCES, K } from \"../i18n/constants\";\nimport {\n processAttrValueWithQuote,\n ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE,\n} from \"../processors\";\n\nexport interface Field {\n id: string;\n name: string;\n values?: any[];\n}\n\nexport interface DynamicSearchFormProps extends FormComponentProps {\n fields: Record<string, any>[];\n q?: Query[];\n onSearch?(\n queries: Query[],\n queriesToShow?: Query[],\n fieldToShow?: Record<string, any[]>[]\n ): void;\n fieldToShow?: Record<string, any[]>[]; // 回填高级搜索的field值(根据query回填丢失了引号信息)\n}\n\nexport interface DynamicSearchFormState {\n fields: Field[];\n}\n\nexport class DynamicSearchForm extends React.Component<\n DynamicSearchFormProps,\n DynamicSearchFormState\n> {\n constructor(props: DynamicSearchFormProps) {\n super(props);\n\n this.state = this.computeState();\n }\n\n componentDidUpdate(prevProps: Readonly<DynamicSearchFormProps>): void {\n if (!isEqual(this.props.q, prevProps.q)) {\n const newState = this.computeState();\n this.setState(newState);\n this.setFormFieldValues(newState.fields);\n }\n }\n\n computeState(): { fields: Field[] } {\n const fieldQueryOperatorExpressionsMap: Record<\n string,\n QueryOperatorExpressions\n > = {};\n let fields: Field[] = [];\n if (this.props.q) {\n this.props.q.forEach((query) => {\n Object.entries(query).forEach(([key, expressions]) => {\n if (key === LogicalOperators.Or || key === LogicalOperators.And) {\n const firstSubQuery = (expressions as Query[])[0];\n const fieldId = Object.keys(firstSubQuery)[0];\n const compareOperator = Object.keys(firstSubQuery[fieldId])[0];\n let subQueryValue = \"\";\n let targetField;\n if (ENABLED_CMDB_ADVANCE_SEARCH_WITH_QUOTE) {\n targetField = this.props.fieldToShow?.find(\n (fieldItem) => Object.keys(fieldItem)[0] === fieldId\n );\n }\n if (!isNil(targetField)) {\n // 二维数组会有问题,\n subQueryValue = isArray(targetField[fieldId])\n ? targetField[fieldId]\n .map((item) => (isArray(item) ? item.join(\" \") : item))\n .join(\"\")\n : (targetField[fieldId] as any);\n } else {\n subQueryValue = (expressions as Query[])\n .map((query) => {\n const targetValue = (\n query[fieldId] as Record<ComparisonOperators, any>\n )[compareOperator as ComparisonOperators];\n if (\n compareOperator === ComparisonOperators.Like ||\n compareOperator === ComparisonOperators.NotLike\n ) {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `${targetValue[0]}\"${targetValue.slice(\n 1,\n targetValue.length - 1\n )}\"${targetValue[targetValue.length - 1]}`\n : targetValue;\n } else {\n return isString(targetValue) && targetValue.includes(\" \")\n ? `\"${targetValue}\"`\n : targetValue;\n }\n })\n .join(\" \");\n }\n key = fieldId;\n expressions = {\n [compareOperator]: subQueryValue,\n };\n }\n\n fieldQueryOperatorExpressionsMap[key] =\n expressions as QueryOperatorExpressions;\n });\n });\n }\n if (this.props.fields) {\n fields = this.props.fields.map(\n (v) => ({ ...v, values: [null] } as Field)\n );\n if (!isEmpty(fieldQueryOperatorExpressionsMap)) {\n fields = this.props.fields.map((v) => {\n let str: any = null;\n if (fieldQueryOperatorExpressionsMap[v.id]) {\n const expressions = fieldQueryOperatorExpressionsMap[v.id][\"$like\"];\n str = expressions.replace(/%/g, \"\");\n }\n return {\n ...v,\n values: [str],\n } as Field;\n });\n }\n }\n return { fields };\n }\n\n setFormFieldValues(fields: Field[]): void {\n const values = fields.reduce<{ [key: string]: any }>((acc, field) => {\n acc[`${field.id}`] = field.values.join(\"\");\n return acc;\n }, {});\n this.props.form.setFieldsValue(values);\n }\n\n onValueChange = (value: any, fieldIndex: number, valueIndex: number) => {\n this.setState({\n fields: update(this.state.fields, {\n [fieldIndex]: { values: { [valueIndex]: { $set: value } } },\n }),\n });\n };\n\n getFields() {\n const { getFieldDecorator } = this.props.form;\n return this.state.fields.map((field, fieldIndex) => {\n return (\n <Col span={12} key={field.id}>\n <Form.Item label={field.name}>\n {getFieldDecorator(`${field.id}`, {\n initialValue: field.values || \"\",\n })(\n <Input\n className={styles.conditionInput}\n addonBefore={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.OPERATOR_CONTAIN_DEFINE}`\n )}\n placeholder={i18n.t(\n `${NS_LIBS_CMDB_INSTANCES}:${K.ADVANCE_SEARCH_SINGLE_INPUT_PLACEHOLDER}`\n )}\n onChange={(e) => this.handleValueChange(e, fieldIndex)}\n />\n )}\n </Form.Item>\n </Col>\n );\n });\n }\n\n handleValueChange = (e: any, fieldIndex: number) => {\n this.onValueChange(e.target.value, fieldIndex, 0);\n };\n\n handleSearch = (e: FormEvent<any>): void => {\n e.preventDefault();\n if (this.props.onSearch) {\n let queries: Query[] = [];\n let queriesToShow: Query[] = [];\n const fieldToShow: Record<string, any[]>[] = [];\n this.state.fields.forEach((field) => {\n const expressions: QueryOperatorExpressions = {};\n const fieldId = field.id;\n let fieldQuery: Query = { [fieldId]: expressions };\n let fieldQueryToShow: Query = { [fieldId]: expressions };\n let hasValue = false;\n const operator = {\n comparisonOperator: ComparisonOperators.Like,\n logicalOperator: LogicalOperators.Or,\n };\n field.values.forEach((value) => {\n fieldQuery = { [field.id]: expressions };\n const fieldIdToShow = field.id;\n fieldQueryToShow = { [fieldIdToShow]: expressions };\n if (\n value !== null &&\n value !== \"\" &&\n !(Array.isArray(value) && value.length === 0)\n ) {\n let values: any[];\n if (typeof value === \"string\") {\n values = processAttrValueWithQuote(value, []);\n }\n if (values.length) {\n fieldQuery = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldId]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n }\n fieldQueryToShow = {\n [operator.logicalOperator]: values.map((value) => {\n return {\n [fieldIdToShow]: {\n [operator.comparisonOperator]: `%${value}%`,\n },\n };\n }),\n };\n hasValue = true;\n fieldToShow.push({ [field.id]: field.values });\n }\n });\n if (hasValue) {\n queries.push(fieldQuery);\n queriesToShow.push(fieldQueryToShow);\n }\n });\n if (queries.length === 0) {\n queries = undefined;\n queriesToShow = undefined;\n }\n if (!isEqual(this.props.q, queries)) {\n this.props.onSearch(queries, queriesToShow, fieldToShow);\n }\n }\n };\n\n handleReset = () => {\n this.props.onSearch([], [], []);\n this.props.form.resetFields();\n };\n\n render(): React.ReactNode {\n return (\n <div className={styles.dynamicSearch}>\n <Form\n layout=\"vertical\"\n className={styles.dynamicSearchForm}\n onSubmit={this.handleSearch}\n >\n <Row gutter={50}>{this.getFields()}</Row>\n <Row>\n <Col span={24} style={{ textAlign: \"right\" }}>\n <Button\n type=\"primary\"\n htmlType=\"submit\"\n data-testid=\"submit-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.SEARCH}`)}\n </Button>\n <Button\n style={{ marginLeft: 8 }}\n onClick={this.handleReset}\n data-testid=\"reset-button\"\n >\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.RESET}`)}\n </Button>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n}\n\nexport const DynamicSearch = Form.create<DynamicSearchFormProps>({\n name: \"dynamic_search\",\n})(DynamicSearchForm);\n"],"file":"DynamicSearch.js"}
@@ -363,9 +363,13 @@ class LegacyInstanceListTable extends _react.default.Component {
363
363
  });
364
364
  }
365
365
 
366
- handleClickItem(e, id) {
366
+ handleClickItem(e, record) {
367
367
  if (this.props.onClickItem) {
368
- this.props.onClickItem(e, id);
368
+ this.props.onClickItem(e, record.instanceId);
369
+ }
370
+
371
+ if (this.props.onClickItemV2) {
372
+ this.props.onClickItemV2(e, record);
369
373
  }
370
374
  }
371
375
 
@@ -397,7 +401,7 @@ class LegacyInstanceListTable extends _react.default.Component {
397
401
  if (!url) {
398
402
  return /*#__PURE__*/_react.default.createElement("a", {
399
403
  role: "button",
400
- onClick: e => this.handleClickItem(e, record.instanceId),
404
+ onClick: e => this.handleClickItem(e, record),
401
405
  "data-testid": "instance-detail-link"
402
406
  }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
403
407
  placement: "top",
@@ -428,7 +432,7 @@ class LegacyInstanceListTable extends _react.default.Component {
428
432
  className: isRenderStructList ? _InstanceListTableModule.default.iconWrapOfStruct : _InstanceListTableModule.default.iconWrap
429
433
  }, /*#__PURE__*/_react.default.createElement(_basicComponents.Link, {
430
434
  to: url,
431
- onClick: e => this.handleClickItem(e, record.instanceId),
435
+ onClick: e => this.handleClickItem(e, record),
432
436
  "data-testid": "instance-detail-link"
433
437
  }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
434
438
  placement: "top",
@@ -607,7 +611,7 @@ class LegacyInstanceListTable extends _react.default.Component {
607
611
 
608
612
  return /*#__PURE__*/_react.default.createElement(_basicComponents.Link, (0, _extends2.default)({
609
613
  to: url,
610
- onClick: e => this.handleClickItem(e, record.instanceId),
614
+ onClick: e => this.handleClickItem(e, record),
611
615
  "data-testid": "instance-detail-link"
612
616
  }, !firstColumns || object.isAbstract ? {
613
617
  target: "_blank"
@@ -685,7 +689,7 @@ class LegacyInstanceListTable extends _react.default.Component {
685
689
  ,
686
690
  to: url // 自定义 onClick 以支持事件配置和拦截
687
691
  ,
688
- onClick: e => this.handleClickItem(e, record.instanceId)
692
+ onClick: e => this.handleClickItem(e, record)
689
693
  }, instanceName));
690
694
  } else {
691
695
  if (index > 0) {