@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.
Files changed (35) hide show
  1. package/dist/cjs/i18n/constants.js +4 -0
  2. package/dist/cjs/i18n/constants.js.map +1 -1
  3. package/dist/cjs/i18n/locales/en.js +5 -1
  4. package/dist/cjs/i18n/locales/en.js.map +1 -1
  5. package/dist/cjs/i18n/locales/zh.js +5 -1
  6. package/dist/cjs/i18n/locales/zh.js.map +1 -1
  7. package/dist/cjs/instance-list/InstanceList.js +2 -1
  8. package/dist/cjs/instance-list/InstanceList.js.map +1 -1
  9. package/dist/cjs/instance-list-table/DisplaySettingsModal.js +53 -10
  10. package/dist/cjs/instance-list-table/DisplaySettingsModal.js.map +1 -1
  11. package/dist/cjs/instance-list-table/MoreButtonsContainer.js +1 -0
  12. package/dist/cjs/instance-list-table/MoreButtonsContainer.js.map +1 -1
  13. package/dist/cjs/instance-list-table/SortSettings.js +145 -0
  14. package/dist/cjs/instance-list-table/SortSettings.js.map +1 -0
  15. package/dist/esm/i18n/constants.js +4 -0
  16. package/dist/esm/i18n/constants.js.map +1 -1
  17. package/dist/esm/i18n/locales/en.js +5 -1
  18. package/dist/esm/i18n/locales/en.js.map +1 -1
  19. package/dist/esm/i18n/locales/zh.js +5 -1
  20. package/dist/esm/i18n/locales/zh.js.map +1 -1
  21. package/dist/esm/instance-list/InstanceList.js +2 -1
  22. package/dist/esm/instance-list/InstanceList.js.map +1 -1
  23. package/dist/esm/instance-list-table/DisplaySettingsModal.js +54 -10
  24. package/dist/esm/instance-list-table/DisplaySettingsModal.js.map +1 -1
  25. package/dist/esm/instance-list-table/MoreButtonsContainer.js +1 -0
  26. package/dist/esm/instance-list-table/MoreButtonsContainer.js.map +1 -1
  27. package/dist/esm/instance-list-table/SortSettings.js +141 -0
  28. package/dist/esm/instance-list-table/SortSettings.js.map +1 -0
  29. package/dist/esm/instance-list-table/SortSettings.module.css +15 -0
  30. package/dist/types/i18n/constants.d.ts +5 -1
  31. package/dist/types/instance-list-table/DisplaySettingsModal.d.ts +4 -0
  32. package/dist/types/instance-list-table/MoreButtonsContainer.d.ts +4 -0
  33. package/dist/types/instance-list-table/SortSettings.d.ts +13 -0
  34. package/dist/types/instance-list-table/SortSettings.spec.d.ts +1 -0
  35. 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 [nextFields, setNextFields] = useState(currentFields);
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(currentFields ? [...currentFields] : []);
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(currentFields ? [...currentFields] : []);
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
- return /*#__PURE__*/React.createElement(Modal, {
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":"AAAA;AACA,SAASA,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,IAAI,QAAQ,MAAM;AACpD,OAAOC,KAAK,IAAIC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAChD,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,CAAC,EAAEC,sBAAsB,QAAQ,mBAAmB;AAC7D,SAASC,eAAe,QAA8B,mBAAmB;AACzE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,gBAAgB,QAAQ,mBAAmB;AAkBpD,IAAMC,SAAS,GAAG,SAAAA,CAAA,EAAgD;EAAA,IAA/CC,UAAoB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IAAEG,KAAe,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAC3D,OAAOH,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEK,IAAI,CAAC,CAACC,CAAS,EAAEC,CAAS,KAAK;IAChD,IAAMC,MAAM,GAAGJ,KAAK,CAACK,OAAO,CAACH,CAAC,CAAC;IAC/B,IAAMI,MAAM,GAAGN,KAAK,CAACK,OAAO,CAACF,CAAC,CAAC;IAC/B,OAAOC,MAAM,GAAGE,MAAM;EACxB,CAAC,CAAC;AACJ,CAAC;AACD,OAAO,SAASC,oBAAoBA,CAClCC,KAAgC,EACZ;EACpB,IAAM;IACJC,OAAO;IACPC,QAAQ;IACRC,SAAS;IACTC,iBAAiB;IACjBC,kBAAkB;IAClBC,aAAa;IACbC,aAAa;IACbC,kBAAkB;IAClBC,mBAAmB;IACnBC,UAAU;IACVC,IAAI;IACJC;EACF,CAAC,GAAGZ,KAAK;EAET,IAAM;IAAEa;EAAE,CAAC,GAAGjC,cAAc,CAACE,sBAAsB,CAAC;EACpD,IAAMgC,YAAY,GAAGJ,UAAU,GAAGA,UAAU,CAACK,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,CAAC,GAAG,EAAE;EACrE,IAAMC,iBAAiB,GAAG/B,SAAS,CAACmB,aAAa,EAAEQ,YAAY,CAAC;EAEhE,IAAM,CAACK,UAAU,EAAEC,aAAa,CAAC,GAAGzC,QAAQ,CAAWuC,iBAAiB,CAAC;EACzE,IAAM,CAACG,mBAAmB,EAAEC,sBAAsB,CAAC,GACjD3C,QAAQ,CAAU,KAAK,CAAC;EAC1B,IAAM,CAAC4C,kBAAkB,EAAEC,qBAAqB,CAAC,GAC/C7C,QAAQ,CAAWuC,iBAAiB,CAAC;EAEvC,IAAMO,KAAK,GAAG/C,OAAO,CACnB,MAAMyC,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEO,MAAM,CAAEV,CAAC,IAAKA,CAAC,KAAK,YAAY,CAAC,CAAC1B,MAAM,EAC1D,CAAC6B,UAAU,CACb,CAAC;EAED,IAAMQ,WAAW,GAAGA,CAAA,KAAY;IAC9B,IAAMC,MAAM,GAAGrB,aAAa,GAAGA,aAAa,CAACsB,KAAK,CAAC,CAAC,GAAG,EAAE;IACzDT,aAAa,CAACQ,MAAM,CAAC;IACrBjB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAG;MAAEiB,MAAM;MAAEE,OAAO,EAAE;IAAK,CAAC,CAAC;EACnC,CAAC;EAED,IAAMC,YAAY,GAAGA,CAAA,KAAY;IAC/BX,aAAa,CAACF,iBAAiB,GAAG,CAAC,GAAGA,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC9DN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAG,CAAC;EACd,CAAC;EAED,IAAMoB,gBAAgB,GAAGA,CAAA,KAAY;IACnCV,sBAAsB,CAAC,IAAI,CAAC;IAC5BE,qBAAqB,CAACL,UAAU,GAAG,CAAC,GAAGA,UAAU,CAAC,GAAG,EAAE,CAAC;EAC1D,CAAC;EAED,IAAMc,uBAAuB,GAAIC,CAAM,IAAW;IAChD,IAAIA,CAAC,CAACC,GAAG,KAAK,iBAAiB,EAAE;MAC/BR,WAAW,CAAC,CAAC;IACf,CAAC,MAAM;MACL;MACA3B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,IAAI,CAAC;QACViB,MAAM,EAAET,UAAU;QAClBW,OAAO,EAAE,KAAK;QACdM,iBAAiB,EAAE;MACrB,CAAC,CAAC;MACFhB,aAAa,CAACF,iBAAiB,GAAG,CAAC,GAAGA,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAChE;EACF,CAAC;EAED,IAAMmB,qBAAqB,GAAGpD,OAAO,CAAC,CAAC,CAACqD,OAAO;EAE/C,IAAMC,iBAAiB,gBACrB9D,KAAA,CAAA+D,aAAA,CAAChE,IAAI,qBACHC,KAAA,CAAA+D,aAAA,CAAChE,IAAI,CAACiE,IAAI;IACRN,GAAG,EAAC,qBAAqB;IACzBO,QAAQ,EAAEjB,KAAK,KAAK,CAAE;IACtBkB,OAAO,EAAEV;EAAwB,GAEhCpB,CAAC,CAAChC,CAAC,CAAC+D,eAAe,CACX,CAAC,eACZnE,KAAA,CAAA+D,aAAA,CAAChE,IAAI,CAACiE,IAAI;IAACN,GAAG,EAAC,iBAAiB;IAACQ,OAAO,EAAEV;EAAwB,GAC/DpB,CAAC,CAAChC,CAAC,CAACgE,eAAe,CACX,CACP,CACP;EAED,IAAMC,aAAa,GAAIC,IAAS,IAAW;IACzC3B,aAAa,CAAC2B,IAAI,CAAC;EACrB,CAAC;EAED,IAAMC,uBAAuB,GAAGA,CAAA,KAAY;IAC1C1B,sBAAsB,CAAC,KAAK,CAAC;IAC7BF,aAAa,CAACG,kBAAkB,GAAG,CAAC,GAAGA,kBAAkB,CAAC,GAAG,EAAE,CAAC;EAClE,CAAC;EAED,IAAM0B,mBAAmB,GAAGA,CAAA,KAAY;IACtC3B,sBAAsB,CAAC,KAAK,CAAC;IAC7BF,aAAa,CAACD,UAAU,GAAG,CAAC,GAAGA,UAAU,CAAC,GAAG,EAAE,CAAC;IAChDnB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,IAAI,CAAC;MAAEiB,MAAM,EAAET;IAAW,CAAC,CAAC;EACrC,CAAC;EAED,oBACE1C,KAAA,CAAA+D,aAAA,CAAA/D,KAAA,CAAAyE,QAAA,qBACEzE,KAAA,CAAA+D,aAAA,CAAClE,KAAK;IACJ6E,KAAK,EAAEtC,CAAC,CAAChC,CAAC,CAACuE,gBAAgB,CAAE;IAC7BnD,OAAO,EAAEA,OAAQ;IACjBoD,MAAM,eACJ5E,KAAA,CAAA+D,aAAA;MAAKc,KAAK,EAAE;QAAEC,OAAO,EAAE;MAAO;IAAE,GAC7BlB,qBAAqB,IACtBjC,iBAAiB,IACjB,CAACC,kBAAkB,gBACjB5B,KAAA,CAAA+D,aAAA,CAACjE,QAAQ;MACPiF,OAAO,EAAEjB,iBAAkB;MAC3BkB,SAAS,EAAC,SAAS;MACnBC,OAAO,EAAE,CAAC,OAAO,CAAE;MACnB,eAAY;IAA4B,gBAExCjF,KAAA,CAAA+D,aAAA,CAACnE,MAAM;MAACsF,IAAI,EAAC,SAAS;MAACC,IAAI,eAAEnF,KAAA,CAAA+D,aAAA,CAACtD,gBAAgB,MAAE;IAAE,CAAS,CACnD,CAAC,gBAEXT,KAAA,CAAA+D,aAAA,2BACE/D,KAAA,CAAA+D,aAAA,CAACnE,MAAM;MACLsF,IAAI,EAAC,SAAS;MACdhB,OAAO,EAAEhB,WAAY;MACrB,eAAY;IAAc,GAEzBd,CAAC,CAAChC,CAAC,CAACgE,eAAe,CACd,CACL,CACN,eACDpE,KAAA,CAAA+D,aAAA;MAAKc,KAAK,EAAE;QAAEO,UAAU,EAAE;MAAO;IAAE,gBACjCpF,KAAA,CAAA+D,aAAA,CAACnE,MAAM;MACLsF,IAAI,EAAC,MAAM;MACXhB,OAAO,EAAEZ,YAAa;MACtB,eAAY;IAAe,GAE1BlB,CAAC,CAAChC,CAAC,CAACiF,MAAM,CACL,CAAC,eACTrF,KAAA,CAAA+D,aAAA,CAACnE,MAAM;MACLsE,OAAO,EAAEX,gBAAiB;MAC1B,eAAY;IAAsB,GAEjCnB,CAAC,CAAChC,CAAC,CAACkF,aAAa,CACZ,CAAC,eACTtF,KAAA,CAAA+D,aAAA,CAACnE,MAAM;MACLsF,IAAI,EAAC,SAAS;MACdhB,OAAO,EAAEA,CAAA,KAAM3C,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEW,IAAI,CAAC;QAAEiB,MAAM,EAAET;MAAW,CAAC,CAAE;MACnDuB,QAAQ,EAAEjB,KAAK,KAAK,CAAE;MACtB,eAAY;IAAW,GAEtBZ,CAAC,CAAChC,CAAC,CAACmF,OAAO,CACN,CACL,CACF,CACN;IACDpD,QAAQ,EAAEmB,YAAa;IACvBkC,cAAc,EAAE,IAAK;IACrBC,KAAK,EAAE,GAAI;IACXC,QAAQ,EAAE;EAAK,gBAEf1F,KAAA,CAAA+D,aAAA,CAACzD,eAAe;IACdmB,QAAQ,EAAEA,QAAS;IACnBC,SAAS,EAAEA,SAAU;IACrBG,aAAa,EAAEa,UAAW;IAC1BX,kBAAkB,EAAEA,kBAAmB;IACvCC,mBAAmB,EAAEA,mBAAoB;IACzC2D,QAAQ,EAAGxC,MAAM,IAAKR,aAAa,CAACQ,MAAM;EAAE,CAC7C,CACI,CAAC,eACRnD,KAAA,CAAA+D,aAAA,CAAClE,KAAK;IACJ6E,KAAK,EAAEtC,CAAC,CAAChC,CAAC,CAACkF,aAAa,CAAE;IAC1B9D,OAAO,EAAEoB,mBAAoB;IAC7B4C,cAAc,EAAE,IAAK;IACrBE,QAAQ,EAAE,IAAK;IACfvD,QAAQ,EAAEoC,uBAAwB;IAClCrC,IAAI,EAAEsC;EAAoB,gBAE1BxE,KAAA,CAAA+D,aAAA,CAACxD,YAAY;IACXqF,MAAM,EAAC,IAAI;IACXlE,SAAS,EAAEA,SAAU;IACrBG,aAAa,EAAEa,UAAW;IAC1BmD,SAAS,EAAExB;EAAc,CAC1B,CACI,CACP,CAAC;AAEP","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":"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","ignoreList":[]}
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-libs/cmdb-instances",
3
- "version": "7.27.3",
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": "969304ae17e2d29730b61c494552f461088aa685"
55
+ "gitHead": "b9aa00fcbcd5b8b6ea685e0e0335c6c103ad6037"
56
56
  }