@next-libs/cmdb-instances 7.27.3 → 7.28.1
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.
- package/dist/cjs/i18n/constants.js +4 -0
- package/dist/cjs/i18n/constants.js.map +1 -1
- package/dist/cjs/i18n/locales/en.js +5 -1
- package/dist/cjs/i18n/locales/en.js.map +1 -1
- package/dist/cjs/i18n/locales/zh.js +5 -1
- package/dist/cjs/i18n/locales/zh.js.map +1 -1
- package/dist/cjs/instance-list/InstanceList.js +2 -1
- package/dist/cjs/instance-list/InstanceList.js.map +1 -1
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js +53 -10
- package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js +1 -0
- package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/cjs/instance-list-table/SortSettings.js +145 -0
- package/dist/cjs/instance-list-table/SortSettings.js.map +1 -0
- package/dist/esm/i18n/constants.js +4 -0
- package/dist/esm/i18n/constants.js.map +1 -1
- package/dist/esm/i18n/locales/en.js +5 -1
- package/dist/esm/i18n/locales/en.js.map +1 -1
- package/dist/esm/i18n/locales/zh.js +5 -1
- package/dist/esm/i18n/locales/zh.js.map +1 -1
- package/dist/esm/instance-list/InstanceList.js +2 -1
- package/dist/esm/instance-list/InstanceList.js.map +1 -1
- package/dist/esm/instance-list-table/DisplaySettingsModal.js +54 -10
- package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
- package/dist/esm/instance-list-table/MoreButtonsContainer.js +1 -0
- package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
- package/dist/esm/instance-list-table/SortSettings.js +141 -0
- package/dist/esm/instance-list-table/SortSettings.js.map +1 -0
- package/dist/esm/instance-list-table/SortSettings.module.css +15 -0
- package/dist/types/i18n/constants.d.ts +5 -1
- package/dist/types/instance-list-table/DisplaySettingsModal.d.ts +4 -0
- package/dist/types/instance-list-table/MoreButtonsContainer.d.ts +4 -0
- package/dist/types/instance-list-table/SortSettings.d.ts +13 -0
- package/dist/types/instance-list-table/SortSettings.spec.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
1
2
|
import { Button, Modal, Dropdown, Menu } from "antd";
|
|
2
3
|
import React, { useMemo, useState } from "react";
|
|
3
4
|
import { useTranslation } from "react-i18next";
|
|
4
5
|
import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
|
|
5
6
|
import { DisplaySettings } from "./DisplaySettings";
|
|
7
|
+
import { SortSettings } from "./SortSettings";
|
|
6
8
|
import { getAuth } from "@next-core/brick-kit";
|
|
7
9
|
import { EllipsisOutlined } from "@ant-design/icons";
|
|
10
|
+
var sortField = function () {
|
|
11
|
+
var dataSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
12
|
+
var order = arguments.length > 1 ? arguments[1] : undefined;
|
|
13
|
+
return dataSource === null || dataSource === void 0 ? void 0 : dataSource.sort((a, b) => {
|
|
14
|
+
var indexA = order.indexOf(a);
|
|
15
|
+
var indexB = order.indexOf(b);
|
|
16
|
+
return indexA - indexB;
|
|
17
|
+
});
|
|
18
|
+
};
|
|
8
19
|
export function DisplaySettingsModal(props) {
|
|
9
20
|
var {
|
|
10
21
|
visible,
|
|
@@ -16,13 +27,18 @@ export function DisplaySettingsModal(props) {
|
|
|
16
27
|
defaultFields,
|
|
17
28
|
extraDisabledField,
|
|
18
29
|
extraDisabledFields,
|
|
30
|
+
sortFields,
|
|
19
31
|
onOk,
|
|
20
32
|
onCancel
|
|
21
33
|
} = props;
|
|
22
34
|
var {
|
|
23
35
|
t
|
|
24
36
|
} = useTranslation(NS_LIBS_CMDB_INSTANCES);
|
|
25
|
-
var
|
|
37
|
+
var sortAttrList = sortFields ? sortFields.map(v => v.field) : [];
|
|
38
|
+
var sortCurrentFields = sortField(currentFields, sortAttrList);
|
|
39
|
+
var [nextFields, setNextFields] = useState(sortCurrentFields);
|
|
40
|
+
var [sortSettingsVisible, setSortSettingsVisible] = useState(false);
|
|
41
|
+
var [originalNextFields, setOriginalNextFields] = useState(sortCurrentFields);
|
|
26
42
|
var count = useMemo(() => nextFields === null || nextFields === void 0 ? void 0 : nextFields.filter(v => v !== "_object_id").length, [nextFields]);
|
|
27
43
|
var handleReset = () => {
|
|
28
44
|
var fields = defaultFields ? defaultFields.slice() : [];
|
|
@@ -33,22 +49,24 @@ export function DisplaySettingsModal(props) {
|
|
|
33
49
|
});
|
|
34
50
|
};
|
|
35
51
|
var handleCancel = () => {
|
|
36
|
-
setNextFields(
|
|
52
|
+
setNextFields(sortCurrentFields ? [...sortCurrentFields] : []);
|
|
37
53
|
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
38
54
|
};
|
|
55
|
+
var handleSortFields = () => {
|
|
56
|
+
setSortSettingsVisible(true);
|
|
57
|
+
setOriginalNextFields(nextFields ? [...nextFields] : []);
|
|
58
|
+
};
|
|
39
59
|
var handleDropdownMenuClick = e => {
|
|
40
|
-
// istanbul ignore next
|
|
41
60
|
if (e.key === "restore-default") {
|
|
42
61
|
handleReset();
|
|
43
62
|
} else {
|
|
44
|
-
// istanbul ignore next
|
|
45
63
|
// 管理员将现在选中的字段设置为默认显示, 不会影响到当前列表展示字段,所以需要类似【取消】操作重置字段。
|
|
46
64
|
props === null || props === void 0 ? void 0 : props.onOk({
|
|
47
65
|
fields: nextFields,
|
|
48
66
|
isReset: false,
|
|
49
67
|
isAdminSetDisplay: true
|
|
50
68
|
});
|
|
51
|
-
setNextFields(
|
|
69
|
+
setNextFields(sortCurrentFields ? [...sortCurrentFields] : []);
|
|
52
70
|
}
|
|
53
71
|
};
|
|
54
72
|
var showIsAdminSetDefault = getAuth().isAdmin;
|
|
@@ -60,7 +78,21 @@ export function DisplaySettingsModal(props) {
|
|
|
60
78
|
key: "restore-default",
|
|
61
79
|
onClick: handleDropdownMenuClick
|
|
62
80
|
}, t(K.RESTORE_DEFAULT)));
|
|
63
|
-
|
|
81
|
+
var handleSortEnd = data => {
|
|
82
|
+
setNextFields(data);
|
|
83
|
+
};
|
|
84
|
+
var handleSortSettingCancel = () => {
|
|
85
|
+
setSortSettingsVisible(false);
|
|
86
|
+
setNextFields(originalNextFields ? [...originalNextFields] : []);
|
|
87
|
+
};
|
|
88
|
+
var handleSortSettingOk = () => {
|
|
89
|
+
setSortSettingsVisible(false);
|
|
90
|
+
setNextFields(nextFields ? [...nextFields] : []);
|
|
91
|
+
props === null || props === void 0 ? void 0 : props.onOk({
|
|
92
|
+
fields: nextFields
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Modal, {
|
|
64
96
|
title: t(K.DISPLAY_SETTINGS),
|
|
65
97
|
visible: visible,
|
|
66
98
|
footer: /*#__PURE__*/React.createElement("div", {
|
|
@@ -86,11 +118,11 @@ export function DisplaySettingsModal(props) {
|
|
|
86
118
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
87
119
|
type: "text",
|
|
88
120
|
onClick: handleCancel,
|
|
89
|
-
style: {
|
|
90
|
-
marginRight: 10
|
|
91
|
-
},
|
|
92
121
|
"data-testid": "cancel-button"
|
|
93
122
|
}, t(K.CANCEL)), /*#__PURE__*/React.createElement(Button, {
|
|
123
|
+
onClick: handleSortFields,
|
|
124
|
+
"data-testid": "sort-settings-button"
|
|
125
|
+
}, t(K.SORT_SETTINGS)), /*#__PURE__*/React.createElement(Button, {
|
|
94
126
|
type: "primary",
|
|
95
127
|
onClick: () => props === null || props === void 0 ? void 0 : props.onOk({
|
|
96
128
|
fields: nextFields
|
|
@@ -109,6 +141,18 @@ export function DisplaySettingsModal(props) {
|
|
|
109
141
|
extraDisabledField: extraDisabledField,
|
|
110
142
|
extraDisabledFields: extraDisabledFields,
|
|
111
143
|
onChange: fields => setNextFields(fields)
|
|
112
|
-
}))
|
|
144
|
+
})), /*#__PURE__*/React.createElement(Modal, {
|
|
145
|
+
title: t(K.SORT_SETTINGS),
|
|
146
|
+
visible: sortSettingsVisible,
|
|
147
|
+
destroyOnClose: true,
|
|
148
|
+
centered: true,
|
|
149
|
+
onCancel: handleSortSettingCancel,
|
|
150
|
+
onOk: handleSortSettingOk
|
|
151
|
+
}, /*#__PURE__*/React.createElement(SortSettings, {
|
|
152
|
+
rowKey: "id",
|
|
153
|
+
modelData: modelData,
|
|
154
|
+
currentFields: nextFields,
|
|
155
|
+
onSortEnd: handleSortEnd
|
|
156
|
+
})));
|
|
113
157
|
}
|
|
114
158
|
//# sourceMappingURL=DisplaySettingsModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplaySettingsModal.js","names":["Button","Modal","Dropdown","Menu","React","useMemo","useState","useTranslation","K","NS_LIBS_CMDB_INSTANCES","DisplaySettings","getAuth","EllipsisOutlined","DisplaySettingsModal","props","visible","objectId","modelData","saveFieldsBackend","useExternalCmdbApi","currentFields","defaultFields","extraDisabledField","extraDisabledFields","onOk","onCancel","t","nextFields","setNextFields","count","filter","v","length","handleReset","fields","slice","isReset","handleCancel","handleDropdownMenuClick","e","key","isAdminSetDisplay","showIsAdminSetDefault","isAdmin","dropdownMenuItems","createElement","Item","disabled","onClick","DEFAULT_DISPLAY","RESTORE_DEFAULT","title","DISPLAY_SETTINGS","footer","style","display","overlay","placement","trigger","type","icon","marginLeft","marginRight","CANCEL","CONFIRM","destroyOnClose","width","centered","onChange"],"sources":["../../../src/instance-list-table/DisplaySettingsModal.tsx"],"sourcesContent":["import { Button, Modal, Dropdown, Menu } from \"antd\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { DisplaySettings, DisplaySettingsProps } from \"./DisplaySettings\";\nimport { getAuth } from \"@next-core/brick-kit\";\nimport { EllipsisOutlined } from \"@ant-design/icons\";\n\nexport interface DisplaySettingsModalData {\n fields: string[];\n isReset?: boolean;\n isAdminSetDisplay?: boolean;\n}\n\nexport interface DisplaySettingsModalProps extends DisplaySettingsProps {\n visible?: boolean;\n defaultFields?: string[];\n saveFieldsBackend?: boolean;\n useExternalCmdbApi?: boolean;\n onOk?(data: DisplaySettingsModalData): void;\n onCancel?(): void;\n}\n\nexport function DisplaySettingsModal(\n props: DisplaySettingsModalProps\n): React.ReactElement {\n const {\n visible,\n objectId,\n modelData,\n saveFieldsBackend,\n useExternalCmdbApi,\n currentFields,\n defaultFields,\n extraDisabledField,\n extraDisabledFields,\n onOk,\n onCancel,\n } = props;\n const { t } = useTranslation(NS_LIBS_CMDB_INSTANCES);\n const [nextFields, setNextFields] = useState<string[]>(currentFields);\n const count = useMemo(\n () => nextFields?.filter((v) => v !== \"_object_id\").length,\n [nextFields]\n );\n\n const handleReset = (): void => {\n const fields = defaultFields ? defaultFields.slice() : [];\n\n setNextFields(fields);\n onOk?.({ fields, isReset: true });\n };\n\n const handleCancel = (): void => {\n setNextFields(currentFields ? [...currentFields] : []);\n onCancel?.();\n };\n\n const handleDropdownMenuClick = (e: any): void => {\n // istanbul ignore next\n if (e.key === \"restore-default\") {\n handleReset();\n } else {\n // istanbul ignore next\n // 管理员将现在选中的字段设置为默认显示, 不会影响到当前列表展示字段,所以需要类似【取消】操作重置字段。\n props?.onOk({\n fields: nextFields,\n isReset: false,\n isAdminSetDisplay: true,\n });\n setNextFields(currentFields ? [...currentFields] : []);\n }\n };\n\n const showIsAdminSetDefault = getAuth().isAdmin;\n\n const dropdownMenuItems = (\n <Menu>\n <Menu.Item\n key=\"set-default-display\"\n disabled={count === 0}\n onClick={handleDropdownMenuClick}\n >\n {t(K.DEFAULT_DISPLAY)}\n </Menu.Item>\n <Menu.Item key=\"restore-default\" onClick={handleDropdownMenuClick}>\n {t(K.RESTORE_DEFAULT)}\n </Menu.Item>\n </Menu>\n );\n return (\n <Modal\n title={t(K.DISPLAY_SETTINGS)}\n visible={visible}\n footer={\n <div style={{ display: \"flex\" }}>\n {showIsAdminSetDefault && saveFieldsBackend && !useExternalCmdbApi ? (\n <Dropdown\n overlay={dropdownMenuItems}\n placement=\"topLeft\"\n trigger={[\"click\"]}\n data-testid=\"admin-set-display-dropdown\"\n >\n <Button type=\"default\" icon={<EllipsisOutlined />}></Button>\n </Dropdown>\n ) : (\n <div>\n <Button\n type=\"default\"\n onClick={handleReset}\n data-testid=\"reset-button\"\n >\n {t(K.RESTORE_DEFAULT)}\n </Button>\n </div>\n )}\n <div style={{ marginLeft: \"auto\" }}>\n <Button\n type=\"text\"\n onClick={handleCancel}\n style={{ marginRight: 10 }}\n data-testid=\"cancel-button\"\n >\n {t(K.CANCEL)}\n </Button>\n <Button\n type=\"primary\"\n onClick={() => props?.onOk({ fields: nextFields })}\n disabled={count === 0}\n data-testid=\"ok-button\"\n >\n {t(K.CONFIRM)}\n </Button>\n </div>\n </div>\n }\n onCancel={handleCancel}\n destroyOnClose={true}\n width={780}\n centered={true}\n >\n <DisplaySettings\n objectId={objectId}\n modelData={modelData}\n currentFields={nextFields}\n extraDisabledField={extraDisabledField}\n extraDisabledFields={extraDisabledFields}\n onChange={(fields) => setNextFields(fields)}\n />\n </Modal>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DisplaySettingsModal.js","names":["Button","Modal","Dropdown","Menu","React","useMemo","useState","useTranslation","K","NS_LIBS_CMDB_INSTANCES","DisplaySettings","SortSettings","getAuth","EllipsisOutlined","sortField","dataSource","arguments","length","undefined","order","sort","a","b","indexA","indexOf","indexB","DisplaySettingsModal","props","visible","objectId","modelData","saveFieldsBackend","useExternalCmdbApi","currentFields","defaultFields","extraDisabledField","extraDisabledFields","sortFields","onOk","onCancel","t","sortAttrList","map","v","field","sortCurrentFields","nextFields","setNextFields","sortSettingsVisible","setSortSettingsVisible","originalNextFields","setOriginalNextFields","count","filter","handleReset","fields","slice","isReset","handleCancel","handleSortFields","handleDropdownMenuClick","e","key","isAdminSetDisplay","showIsAdminSetDefault","isAdmin","dropdownMenuItems","createElement","Item","disabled","onClick","DEFAULT_DISPLAY","RESTORE_DEFAULT","handleSortEnd","data","handleSortSettingCancel","handleSortSettingOk","Fragment","title","DISPLAY_SETTINGS","footer","style","display","overlay","placement","trigger","type","icon","marginLeft","CANCEL","SORT_SETTINGS","CONFIRM","destroyOnClose","width","centered","onChange","rowKey","onSortEnd"],"sources":["../../../src/instance-list-table/DisplaySettingsModal.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { Button, Modal, Dropdown, Menu } from \"antd\";\nimport React, { useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { DisplaySettings, DisplaySettingsProps } from \"./DisplaySettings\";\nimport { SortSettings } from \"./SortSettings\";\nimport { getAuth } from \"@next-core/brick-kit\";\nimport { EllipsisOutlined } from \"@ant-design/icons\";\n\nexport interface DisplaySettingsModalData {\n fields: string[];\n isReset?: boolean;\n isAdminSetDisplay?: boolean;\n}\n\nexport interface DisplaySettingsModalProps extends DisplaySettingsProps {\n visible?: boolean;\n defaultFields?: string[];\n saveFieldsBackend?: boolean;\n useExternalCmdbApi?: boolean;\n sortFields?: { field: string; order: number }[];\n onOk?(data: DisplaySettingsModalData): void;\n onCancel?(): void;\n}\n\nconst sortField = (dataSource: string[] = [], order: string[]) => {\n return dataSource?.sort((a: string, b: string) => {\n const indexA = order.indexOf(a);\n const indexB = order.indexOf(b);\n return indexA - indexB;\n });\n};\nexport function DisplaySettingsModal(\n props: DisplaySettingsModalProps\n): React.ReactElement {\n const {\n visible,\n objectId,\n modelData,\n saveFieldsBackend,\n useExternalCmdbApi,\n currentFields,\n defaultFields,\n extraDisabledField,\n extraDisabledFields,\n sortFields,\n onOk,\n onCancel,\n } = props;\n\n const { t } = useTranslation(NS_LIBS_CMDB_INSTANCES);\n const sortAttrList = sortFields ? sortFields.map((v) => v.field) : [];\n const sortCurrentFields = sortField(currentFields, sortAttrList);\n\n const [nextFields, setNextFields] = useState<string[]>(sortCurrentFields);\n const [sortSettingsVisible, setSortSettingsVisible] =\n useState<boolean>(false);\n const [originalNextFields, setOriginalNextFields] =\n useState<string[]>(sortCurrentFields);\n\n const count = useMemo(\n () => nextFields?.filter((v) => v !== \"_object_id\").length,\n [nextFields]\n );\n\n const handleReset = (): void => {\n const fields = defaultFields ? defaultFields.slice() : [];\n setNextFields(fields);\n onOk?.({ fields, isReset: true });\n };\n\n const handleCancel = (): void => {\n setNextFields(sortCurrentFields ? [...sortCurrentFields] : []);\n onCancel?.();\n };\n\n const handleSortFields = (): void => {\n setSortSettingsVisible(true);\n setOriginalNextFields(nextFields ? [...nextFields] : []);\n };\n\n const handleDropdownMenuClick = (e: any): void => {\n if (e.key === \"restore-default\") {\n handleReset();\n } else {\n // 管理员将现在选中的字段设置为默认显示, 不会影响到当前列表展示字段,所以需要类似【取消】操作重置字段。\n props?.onOk({\n fields: nextFields,\n isReset: false,\n isAdminSetDisplay: true,\n });\n setNextFields(sortCurrentFields ? [...sortCurrentFields] : []);\n }\n };\n\n const showIsAdminSetDefault = getAuth().isAdmin;\n\n const dropdownMenuItems = (\n <Menu>\n <Menu.Item\n key=\"set-default-display\"\n disabled={count === 0}\n onClick={handleDropdownMenuClick}\n >\n {t(K.DEFAULT_DISPLAY)}\n </Menu.Item>\n <Menu.Item key=\"restore-default\" onClick={handleDropdownMenuClick}>\n {t(K.RESTORE_DEFAULT)}\n </Menu.Item>\n </Menu>\n );\n\n const handleSortEnd = (data: any): void => {\n setNextFields(data);\n };\n\n const handleSortSettingCancel = (): void => {\n setSortSettingsVisible(false);\n setNextFields(originalNextFields ? [...originalNextFields] : []);\n };\n\n const handleSortSettingOk = (): void => {\n setSortSettingsVisible(false);\n setNextFields(nextFields ? [...nextFields] : []);\n props?.onOk({ fields: nextFields });\n };\n\n return (\n <>\n <Modal\n title={t(K.DISPLAY_SETTINGS)}\n visible={visible}\n footer={\n <div style={{ display: \"flex\" }}>\n {showIsAdminSetDefault &&\n saveFieldsBackend &&\n !useExternalCmdbApi ? (\n <Dropdown\n overlay={dropdownMenuItems}\n placement=\"topLeft\"\n trigger={[\"click\"]}\n data-testid=\"admin-set-display-dropdown\"\n >\n <Button type=\"default\" icon={<EllipsisOutlined />}></Button>\n </Dropdown>\n ) : (\n <div>\n <Button\n type=\"default\"\n onClick={handleReset}\n data-testid=\"reset-button\"\n >\n {t(K.RESTORE_DEFAULT)}\n </Button>\n </div>\n )}\n <div style={{ marginLeft: \"auto\" }}>\n <Button\n type=\"text\"\n onClick={handleCancel}\n data-testid=\"cancel-button\"\n >\n {t(K.CANCEL)}\n </Button>\n <Button\n onClick={handleSortFields}\n data-testid=\"sort-settings-button\"\n >\n {t(K.SORT_SETTINGS)}\n </Button>\n <Button\n type=\"primary\"\n onClick={() => props?.onOk({ fields: nextFields })}\n disabled={count === 0}\n data-testid=\"ok-button\"\n >\n {t(K.CONFIRM)}\n </Button>\n </div>\n </div>\n }\n onCancel={handleCancel}\n destroyOnClose={true}\n width={780}\n centered={true}\n >\n <DisplaySettings\n objectId={objectId}\n modelData={modelData}\n currentFields={nextFields}\n extraDisabledField={extraDisabledField}\n extraDisabledFields={extraDisabledFields}\n onChange={(fields) => setNextFields(fields)}\n />\n </Modal>\n <Modal\n title={t(K.SORT_SETTINGS)}\n visible={sortSettingsVisible}\n destroyOnClose={true}\n centered={true}\n onCancel={handleSortSettingCancel}\n onOk={handleSortSettingOk}\n >\n <SortSettings\n rowKey=\"id\"\n modelData={modelData}\n currentFields={nextFields}\n onSortEnd={handleSortEnd}\n />\n </Modal>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,6 +48,7 @@ export class MoreButtonsContainer extends React.Component {
|
|
|
48
48
|
visible: this.state.visible,
|
|
49
49
|
currentFields: this.props.fieldIds,
|
|
50
50
|
modelData: this.props.modelData,
|
|
51
|
+
sortFields: this.props.sortFields,
|
|
51
52
|
onCancel: this.handleCancel,
|
|
52
53
|
onOk: this.handleOk,
|
|
53
54
|
saveFieldsBackend: this.props.saveFieldsBackend,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreButtonsContainer.js","names":["React","EllipsisOutlined","SettingOutlined","PushpinOutlined","Dropdown","Menu","Button","i18n","K","NS_LIBS_CMDB_INSTANCES","styles","DisplaySettingsModal","MoreButtonsContainer","Component","constructor","props","_defineProperty","setState","visible","data","_this$props","onConfirm","handleSettingButtonClick","bind","state","render","menu","createElement","Item","onClick","t","concat","DISPLAY_SETTINGS","showFixedHeader","handleToggleFixHeader","fixedHeader","CANCEL_FIX_HEADER","FIX_HEADER","Fragment","overlay","trigger","className","moreButtonsContainer","shape","icon","currentFields","fieldIds","modelData","onCancel","handleCancel","onOk","handleOk","saveFieldsBackend","useExternalCmdbApi","defaultFields","extraDisabledField"],"sources":["../../../src/instance-list-table/MoreButtonsContainer.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n EllipsisOutlined,\n SettingOutlined,\n PushpinOutlined,\n} from \"@ant-design/icons\";\nimport { Dropdown, Menu, Button } from \"antd\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport styles from \"./InstanceListTable.module.css\";\nimport {\n DisplaySettingsModal,\n DisplaySettingsModalData,\n} from \"./DisplaySettingsModal\";\ninterface MoreButtonsContainerProps {\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n currentFields?: string[];\n defaultFields: string[];\n saveFieldsBackend?: boolean;\n useExternalCmdbApi?: boolean;\n onConfirm: (data: DisplaySettingsModalData) => void;\n onHideSettings?: () => void;\n fieldIds?: string[];\n extraDisabledField?: string;\n handleToggleFixHeader?: () => void;\n fixedHeader?: boolean;\n showFixedHeader?: boolean;\n}\n\ninterface MoreButtonsContainerState {\n visible?: boolean;\n}\n\nexport class MoreButtonsContainer extends React.Component<\n MoreButtonsContainerProps,\n MoreButtonsContainerState\n> {\n constructor(props: MoreButtonsContainerProps) {\n super(props);\n\n this.handleSettingButtonClick = this.handleSettingButtonClick.bind(this);\n\n this.state = {\n visible: false,\n };\n }\n\n handleSettingButtonClick = () => {\n this.setState({\n visible: true,\n });\n };\n\n handleOk = (data: DisplaySettingsModalData): void => {\n this.setState({\n visible: false,\n });\n this.props?.onConfirm(data);\n };\n\n handleCancel = () => {\n this.setState({\n visible: false,\n });\n };\n render(): React.ReactNode {\n const menu = (\n <Menu>\n <Menu.Item onClick={this.handleSettingButtonClick}>\n <SettingOutlined />\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.DISPLAY_SETTINGS}`)}\n </Menu.Item>\n {this.props.showFixedHeader && (\n <Menu.Item onClick={this.props.handleToggleFixHeader}>\n <PushpinOutlined />\n {this.props.fixedHeader\n ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL_FIX_HEADER}`)\n : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FIX_HEADER}`)}\n </Menu.Item>\n )}\n </Menu>\n );\n\n return (\n <>\n <Dropdown\n overlay={menu}\n trigger={[\"click\"]}\n className={styles.moreButtonsContainer}\n >\n <Button shape=\"circle\" icon={<EllipsisOutlined />} />\n </Dropdown>\n <DisplaySettingsModal\n visible={this.state.visible}\n currentFields={this.props.fieldIds}\n modelData={this.props.modelData}\n onCancel={this.handleCancel}\n onOk={this.handleOk}\n saveFieldsBackend={this.props.saveFieldsBackend}\n useExternalCmdbApi={this.props.useExternalCmdbApi}\n defaultFields={this.props.defaultFields}\n extraDisabledField={this.props.extraDisabledField}\n />\n </>\n );\n }\n}\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,QACV,mBAAmB;AAC1B,SAASC,QAAQ,EAAEC,IAAI,EAAEC,MAAM,QAAQ,MAAM;AAE7C,OAAOC,IAAI,MAAM,SAAS;AAC1B,SAASC,CAAC,EAAEC,sBAAsB,QAAQ,mBAAmB;AAC7D,OAAOC,MAAM,MAAM,gCAAgC;AACnD,SACEC,oBAAoB,QAEf,wBAAwB;
|
|
1
|
+
{"version":3,"file":"MoreButtonsContainer.js","names":["React","EllipsisOutlined","SettingOutlined","PushpinOutlined","Dropdown","Menu","Button","i18n","K","NS_LIBS_CMDB_INSTANCES","styles","DisplaySettingsModal","MoreButtonsContainer","Component","constructor","props","_defineProperty","setState","visible","data","_this$props","onConfirm","handleSettingButtonClick","bind","state","render","menu","createElement","Item","onClick","t","concat","DISPLAY_SETTINGS","showFixedHeader","handleToggleFixHeader","fixedHeader","CANCEL_FIX_HEADER","FIX_HEADER","Fragment","overlay","trigger","className","moreButtonsContainer","shape","icon","currentFields","fieldIds","modelData","sortFields","onCancel","handleCancel","onOk","handleOk","saveFieldsBackend","useExternalCmdbApi","defaultFields","extraDisabledField"],"sources":["../../../src/instance-list-table/MoreButtonsContainer.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n EllipsisOutlined,\n SettingOutlined,\n PushpinOutlined,\n} from \"@ant-design/icons\";\nimport { Dropdown, Menu, Button } from \"antd\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport i18n from \"i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport styles from \"./InstanceListTable.module.css\";\nimport {\n DisplaySettingsModal,\n DisplaySettingsModalData,\n} from \"./DisplaySettingsModal\";\n\ninterface MoreButtonsContainerProps {\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n currentFields?: string[];\n defaultFields: string[];\n saveFieldsBackend?: boolean;\n useExternalCmdbApi?: boolean;\n onConfirm: (data: DisplaySettingsModalData) => void;\n onHideSettings?: () => void;\n fieldIds?: string[];\n extraDisabledField?: string;\n handleToggleFixHeader?: () => void;\n fixedHeader?: boolean;\n showFixedHeader?: boolean;\n sortFields?: { field: string; order: number }[];\n}\n\ninterface MoreButtonsContainerState {\n visible?: boolean;\n}\n\nexport class MoreButtonsContainer extends React.Component<\n MoreButtonsContainerProps,\n MoreButtonsContainerState\n> {\n constructor(props: MoreButtonsContainerProps) {\n super(props);\n\n this.handleSettingButtonClick = this.handleSettingButtonClick.bind(this);\n\n this.state = {\n visible: false,\n };\n }\n\n handleSettingButtonClick = (): void => {\n this.setState({\n visible: true,\n });\n };\n\n handleOk = (data: DisplaySettingsModalData): void => {\n this.setState({\n visible: false,\n });\n this.props?.onConfirm(data);\n };\n\n handleCancel = (): void => {\n this.setState({\n visible: false,\n });\n };\n\n render(): React.ReactNode {\n const menu = (\n <Menu>\n <Menu.Item onClick={this.handleSettingButtonClick}>\n <SettingOutlined />\n {i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.DISPLAY_SETTINGS}`)}\n </Menu.Item>\n {this.props.showFixedHeader && (\n <Menu.Item onClick={this.props.handleToggleFixHeader}>\n <PushpinOutlined />\n {this.props.fixedHeader\n ? i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.CANCEL_FIX_HEADER}`)\n : i18n.t(`${NS_LIBS_CMDB_INSTANCES}:${K.FIX_HEADER}`)}\n </Menu.Item>\n )}\n </Menu>\n );\n\n return (\n <>\n <Dropdown\n overlay={menu}\n trigger={[\"click\"]}\n className={styles.moreButtonsContainer}\n >\n <Button shape=\"circle\" icon={<EllipsisOutlined />} />\n </Dropdown>\n <DisplaySettingsModal\n visible={this.state.visible}\n currentFields={this.props.fieldIds}\n modelData={this.props.modelData}\n sortFields={this.props.sortFields}\n onCancel={this.handleCancel}\n onOk={this.handleOk}\n saveFieldsBackend={this.props.saveFieldsBackend}\n useExternalCmdbApi={this.props.useExternalCmdbApi}\n defaultFields={this.props.defaultFields}\n extraDisabledField={this.props.extraDisabledField}\n />\n </>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["index", "moveRow", "acceptType", "className", "style"];
|
|
5
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
6
|
+
/* eslint-disable react-hooks/exhaustive-deps */
|
|
7
|
+
import React, { useCallback, useState } from "react";
|
|
8
|
+
import { useTranslation } from "react-i18next";
|
|
9
|
+
import { K, NS_LIBS_CMDB_INSTANCES } from "../i18n/constants";
|
|
10
|
+
import { Table } from "antd";
|
|
11
|
+
import { UnorderedListOutlined } from "@ant-design/icons";
|
|
12
|
+
import { DndProvider, useDrag, useDrop } from "react-dnd";
|
|
13
|
+
import { HTML5Backend } from "react-dnd-html5-backend";
|
|
14
|
+
import update from "immutability-helper";
|
|
15
|
+
import classNames from "classnames";
|
|
16
|
+
import { getBatchEditableFields } from "@next-libs/cmdb-utils";
|
|
17
|
+
import styles from "./SortSettings.module.css";
|
|
18
|
+
import { includes } from "lodash";
|
|
19
|
+
var type = "DraggableBodyRow";
|
|
20
|
+
var sortField = function () {
|
|
21
|
+
var dataSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
22
|
+
var order = arguments.length > 1 ? arguments[1] : undefined;
|
|
23
|
+
return dataSource === null || dataSource === void 0 ? void 0 : dataSource.sort((a, b) => {
|
|
24
|
+
var indexA = order.indexOf(a.id);
|
|
25
|
+
var indexB = order.indexOf(b.id);
|
|
26
|
+
return indexA - indexB;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export function SortSettings(props) {
|
|
30
|
+
var {
|
|
31
|
+
modelData,
|
|
32
|
+
currentFields,
|
|
33
|
+
rowKey,
|
|
34
|
+
onSortEnd
|
|
35
|
+
} = props;
|
|
36
|
+
var attrAndRelationList = getBatchEditableFields(modelData);
|
|
37
|
+
var sortAttrList = attrAndRelationList.filter(item => includes(currentFields, item.id));
|
|
38
|
+
var {
|
|
39
|
+
t
|
|
40
|
+
} = useTranslation(NS_LIBS_CMDB_INSTANCES);
|
|
41
|
+
var [data, setData] = useState(sortField(sortAttrList, currentFields));
|
|
42
|
+
var columns = [{
|
|
43
|
+
title: t(K.ID),
|
|
44
|
+
dataIndex: "id",
|
|
45
|
+
key: "id"
|
|
46
|
+
}, {
|
|
47
|
+
title: t(K.NAME),
|
|
48
|
+
dataIndex: "name",
|
|
49
|
+
key: "name"
|
|
50
|
+
}, {
|
|
51
|
+
title: t(K.SORT),
|
|
52
|
+
width: 80,
|
|
53
|
+
render: () => {
|
|
54
|
+
return /*#__PURE__*/React.createElement(UnorderedListOutlined, null);
|
|
55
|
+
}
|
|
56
|
+
}];
|
|
57
|
+
var DraggableBodyRow = _ref => {
|
|
58
|
+
var {
|
|
59
|
+
index,
|
|
60
|
+
moveRow,
|
|
61
|
+
acceptType,
|
|
62
|
+
className,
|
|
63
|
+
style
|
|
64
|
+
} = _ref,
|
|
65
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
66
|
+
var ref = React.useRef();
|
|
67
|
+
var [{
|
|
68
|
+
isOver,
|
|
69
|
+
dropClassName
|
|
70
|
+
}, drop] = useDrop({
|
|
71
|
+
accept: acceptType || type,
|
|
72
|
+
collect: monitor => {
|
|
73
|
+
var {
|
|
74
|
+
index: dragIndex
|
|
75
|
+
} = monitor.getItem() || {};
|
|
76
|
+
if (dragIndex === index) {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
isOver: monitor.isOver(),
|
|
81
|
+
dropClassName: dragIndex < index ? "".concat(styles.dropOverDownward) : "".concat(styles.dropOverUpward)
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
drop: item => {
|
|
85
|
+
moveRow(item.index, index);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
var [, drag] = useDrag({
|
|
89
|
+
item: {
|
|
90
|
+
type: acceptType || type,
|
|
91
|
+
index
|
|
92
|
+
},
|
|
93
|
+
collect: monitor => ({
|
|
94
|
+
isDragging: monitor.isDragging()
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
drop(drag(ref));
|
|
98
|
+
return /*#__PURE__*/React.createElement("tr", _extends({
|
|
99
|
+
ref: ref,
|
|
100
|
+
className: classNames(className, {
|
|
101
|
+
[dropClassName]: isOver
|
|
102
|
+
}),
|
|
103
|
+
style: _objectSpread({
|
|
104
|
+
cursor: "move"
|
|
105
|
+
}, style)
|
|
106
|
+
}, restProps));
|
|
107
|
+
};
|
|
108
|
+
var components = {
|
|
109
|
+
body: {
|
|
110
|
+
row: DraggableBodyRow
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var moveRow = useCallback((dragIndex, hoverIndex) => {
|
|
114
|
+
var dragRow = data[dragIndex];
|
|
115
|
+
var newData = update(data, {
|
|
116
|
+
$splice: [[dragIndex, 1], [hoverIndex, 0, dragRow]]
|
|
117
|
+
});
|
|
118
|
+
setData(newData);
|
|
119
|
+
var sortFields = newData.map(item => item.id);
|
|
120
|
+
onSortEnd === null || onSortEnd === void 0 ? void 0 : onSortEnd(sortFields);
|
|
121
|
+
}, [data]);
|
|
122
|
+
return /*#__PURE__*/React.createElement(DndProvider, {
|
|
123
|
+
backend: HTML5Backend,
|
|
124
|
+
context: window
|
|
125
|
+
}, /*#__PURE__*/React.createElement(Table, {
|
|
126
|
+
className: styles.customDropTable,
|
|
127
|
+
columns: columns,
|
|
128
|
+
dataSource: data,
|
|
129
|
+
rowKey: rowKey,
|
|
130
|
+
components: components,
|
|
131
|
+
onRow: (_, index) => ({
|
|
132
|
+
index,
|
|
133
|
+
moveRow
|
|
134
|
+
}),
|
|
135
|
+
pagination: false,
|
|
136
|
+
scroll: {
|
|
137
|
+
y: 400
|
|
138
|
+
}
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=SortSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortSettings.js","names":["React","useCallback","useState","useTranslation","K","NS_LIBS_CMDB_INSTANCES","Table","UnorderedListOutlined","DndProvider","useDrag","useDrop","HTML5Backend","update","classNames","getBatchEditableFields","styles","includes","type","sortField","dataSource","arguments","length","undefined","order","sort","a","b","indexA","indexOf","id","indexB","SortSettings","props","modelData","currentFields","rowKey","onSortEnd","attrAndRelationList","sortAttrList","filter","item","t","data","setData","columns","title","ID","dataIndex","key","NAME","SORT","width","render","createElement","DraggableBodyRow","_ref","index","moveRow","acceptType","className","style","restProps","_objectWithoutProperties","_excluded","ref","useRef","isOver","dropClassName","drop","accept","collect","monitor","dragIndex","getItem","concat","dropOverDownward","dropOverUpward","drag","isDragging","_extends","_objectSpread","cursor","components","body","row","hoverIndex","dragRow","newData","$splice","sortFields","map","backend","context","window","customDropTable","onRow","_","pagination","scroll","y"],"sources":["../../../src/instance-list-table/SortSettings.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useCallback, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { K, NS_LIBS_CMDB_INSTANCES } from \"../i18n/constants\";\nimport { CmdbModels } from \"@next-sdk/cmdb-sdk\";\nimport { Table } from \"antd\";\nimport { UnorderedListOutlined } from \"@ant-design/icons\";\nimport { DndProvider, useDrag, useDrop } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport update from \"immutability-helper\";\nimport classNames from \"classnames\";\nimport { getBatchEditableFields } from \"@next-libs/cmdb-utils\";\nimport styles from \"./SortSettings.module.css\";\nimport { includes } from \"lodash\";\n\nexport interface SortSettingsProps {\n modelData: Partial<CmdbModels.ModelCmdbObject>;\n currentFields: string[];\n sortFields?: { field: string; order: number }[];\n rowKey?: string;\n onSortEnd?: (data: any[]) => void;\n}\n\ninterface DraggableBodyRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {\n index: number;\n acceptType: string;\n moveRow: (dragIndex: number, hoverIndex: number) => void;\n}\n\nconst type = \"DraggableBodyRow\";\n\nconst sortField = (dataSource: any[] = [], order: string[]) => {\n return dataSource?.sort((a: any, b: any) => {\n const indexA = order.indexOf(a.id);\n const indexB = order.indexOf(b.id);\n return indexA - indexB;\n });\n};\n\nexport function SortSettings(props: SortSettingsProps): React.ReactElement {\n const { modelData, currentFields, rowKey, onSortEnd } = props;\n\n const attrAndRelationList = getBatchEditableFields(modelData);\n const sortAttrList = attrAndRelationList.filter((item: any) =>\n includes(currentFields, item.id)\n );\n const { t } = useTranslation(NS_LIBS_CMDB_INSTANCES);\n\n const [data, setData] = useState(sortField(sortAttrList, currentFields));\n const columns = [\n {\n title: t(K.ID),\n dataIndex: \"id\",\n key: \"id\",\n },\n {\n title: t(K.NAME),\n dataIndex: \"name\",\n key: \"name\",\n },\n {\n title: t(K.SORT),\n width: 80,\n render: () => {\n return <UnorderedListOutlined />;\n },\n },\n ];\n\n const DraggableBodyRow = ({\n index,\n moveRow,\n acceptType,\n className,\n style,\n ...restProps\n }: DraggableBodyRowProps): React.ReactElement => {\n const ref = React.useRef();\n const [{ isOver, dropClassName }, drop] = useDrop({\n accept: acceptType || type,\n collect: (monitor) => {\n const { index: dragIndex } = monitor.getItem() || {};\n if (dragIndex === index) {\n return {};\n }\n return {\n isOver: monitor.isOver(),\n dropClassName:\n dragIndex < index\n ? `${styles.dropOverDownward}`\n : `${styles.dropOverUpward}`,\n };\n },\n drop: (item: any) => {\n moveRow(item.index, index);\n },\n });\n const [, drag] = useDrag({\n item: {\n type: acceptType || type,\n index,\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n drop(drag(ref));\n return (\n <tr\n ref={ref}\n className={classNames(className, {\n [dropClassName]: isOver,\n })}\n style={{ cursor: \"move\", ...style }}\n {...restProps}\n />\n );\n };\n\n const components = {\n body: {\n row: DraggableBodyRow,\n },\n };\n\n const moveRow = useCallback(\n (dragIndex: number, hoverIndex: number) => {\n const dragRow = data[dragIndex];\n const newData = update(data, {\n $splice: [\n [dragIndex, 1],\n [hoverIndex, 0, dragRow],\n ],\n });\n setData(newData);\n const sortFields = newData.map((item: any) => item.id);\n onSortEnd?.(sortFields);\n },\n [data]\n );\n\n return (\n <DndProvider backend={HTML5Backend} context={window}>\n <Table\n className={styles.customDropTable}\n columns={columns}\n dataSource={data}\n rowKey={rowKey}\n components={components}\n onRow={(_, index) =>\n ({\n index,\n moveRow,\n } as React.HTMLAttributes<any>)\n }\n pagination={false}\n scroll={{ y: 400 }}\n />\n </DndProvider>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
.customDropTable {
|
|
2
|
+
:global(.ant-table-tbody) {
|
|
3
|
+
tr.dropOverDownward {
|
|
4
|
+
td {
|
|
5
|
+
border-bottom: 2px dashed var(--antd-table-drop-hover-border-color);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
tr.dropOverUpward {
|
|
10
|
+
td {
|
|
11
|
+
border-top: 2px dashed var(--antd-table-drop-hover-border-color);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -46,6 +46,7 @@ export declare enum K {
|
|
|
46
46
|
SET_DEFAULT_DISPLAY_SUCCESS = "SET_DEFAULT_DISPLAY_SUCCESS",
|
|
47
47
|
DEFAULT_DISPLAY = "DEFAULT_DISPLAY",
|
|
48
48
|
CONFIRM = "CONFIRM",
|
|
49
|
+
SORT_SETTINGS = "SORT_SETTINGS",
|
|
49
50
|
ONLY_ONE_INSTANCE_TO_ALLOWED = "ONLY_ONE_INSTANCE_TO_ALLOWED",
|
|
50
51
|
OPERATOR_CONTAIN_DEFINE = "OPERATOR_CONTAIN_DEFINE",
|
|
51
52
|
OPERATOR_NOT_CONTAIN_DEFINE = "OPERATOR_NOT_CONTAIN_DEFINE",
|
|
@@ -119,7 +120,10 @@ export declare enum K {
|
|
|
119
120
|
UPLOAD = "UPLOAD",
|
|
120
121
|
BACKGROUND_SEARCH = "BACKGROUND_SEARCH",
|
|
121
122
|
BACK = "BACK",
|
|
122
|
-
RELATION_INSTANCE_TOOLTIP = "RELATION_INSTANCE_TOOLTIP"
|
|
123
|
+
RELATION_INSTANCE_TOOLTIP = "RELATION_INSTANCE_TOOLTIP",
|
|
124
|
+
NAME = "NAME",
|
|
125
|
+
ID = "ID",
|
|
126
|
+
SORT = "SORT"
|
|
123
127
|
}
|
|
124
128
|
export declare type Locale = {
|
|
125
129
|
[key in K]: string;
|
|
@@ -10,6 +10,10 @@ export interface DisplaySettingsModalProps extends DisplaySettingsProps {
|
|
|
10
10
|
defaultFields?: string[];
|
|
11
11
|
saveFieldsBackend?: boolean;
|
|
12
12
|
useExternalCmdbApi?: boolean;
|
|
13
|
+
sortFields?: {
|
|
14
|
+
field: string;
|
|
15
|
+
order: number;
|
|
16
|
+
}[];
|
|
13
17
|
onOk?(data: DisplaySettingsModalData): void;
|
|
14
18
|
onCancel?(): void;
|
|
15
19
|
}
|
|
@@ -14,6 +14,10 @@ interface MoreButtonsContainerProps {
|
|
|
14
14
|
handleToggleFixHeader?: () => void;
|
|
15
15
|
fixedHeader?: boolean;
|
|
16
16
|
showFixedHeader?: boolean;
|
|
17
|
+
sortFields?: {
|
|
18
|
+
field: string;
|
|
19
|
+
order: number;
|
|
20
|
+
}[];
|
|
17
21
|
}
|
|
18
22
|
interface MoreButtonsContainerState {
|
|
19
23
|
visible?: boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CmdbModels } from "@next-sdk/cmdb-sdk";
|
|
3
|
+
export interface SortSettingsProps {
|
|
4
|
+
modelData: Partial<CmdbModels.ModelCmdbObject>;
|
|
5
|
+
currentFields: string[];
|
|
6
|
+
sortFields?: {
|
|
7
|
+
field: string;
|
|
8
|
+
order: number;
|
|
9
|
+
}[];
|
|
10
|
+
rowKey?: string;
|
|
11
|
+
onSortEnd?: (data: any[]) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function SortSettings(props: SortSettingsProps): React.ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-libs/cmdb-instances",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.28.1",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/cmdb-instances",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"js-base64": "^3.7.7",
|
|
53
53
|
"marked": "^2.1.3"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "b9aa00fcbcd5b8b6ea685e0e0335c6c103ad6037"
|
|
56
56
|
}
|