You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by he...@apache.org on 2022/07/01 07:40:55 UTC
[inlong] 01/03: [INLONG-4820][Dashboard] Support cluster tag management (#4829)
This is an automated email from the ASF dual-hosted git repository.
healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
commit 46aeec88b7c327f8621243bdf5fc9c6b5b455980
Author: Daniel <le...@outlook.com>
AuthorDate: Fri Jul 1 14:56:02 2022 +0800
[INLONG-4820][Dashboard] Support cluster tag management (#4829)
---
inlong-dashboard/package-lock.json | 715 +++++++++++++++------
inlong-dashboard/package.json | 2 +-
.../src/components/HighSelect/index.tsx | 28 +-
inlong-dashboard/src/configs/menus/index.ts | 11 +-
inlong-dashboard/src/configs/routes/index.tsx | 5 +
inlong-dashboard/src/i18n.ts | 2 +
.../ClusterBindModal.tsx} | 92 +--
.../src/pages/ClusterTags/ClusterList.tsx | 203 ++++++
.../TagDetailModal.tsx} | 40 +-
.../src/pages/ClusterTags/index.module.less | 30 +
inlong-dashboard/src/pages/ClusterTags/index.tsx | 195 ++++++
.../src/pages/Clusters/CreateModal.tsx | 4 +-
.../src/pages/Clusters/config/index.tsx | 27 +-
inlong-dashboard/src/themes/cover.less | 4 -
14 files changed, 1076 insertions(+), 282 deletions(-)
diff --git a/inlong-dashboard/package-lock.json b/inlong-dashboard/package-lock.json
index 37c46a83d..e891898f7 100644
--- a/inlong-dashboard/package-lock.json
+++ b/inlong-dashboard/package-lock.json
@@ -89,9 +89,9 @@
}
},
"@ant-design/react-slick": {
- "version": "0.28.3",
- "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.3.tgz",
- "integrity": "sha512-u3onF2VevGRbkGbgpldVX/nzd7LFtLeZJE0x2xIFT2qYHKkJZ6QT/jQ7KqYK4UpeTndoyrbMqLN4DiJza4BVBg==",
+ "version": "0.28.4",
+ "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.4.tgz",
+ "integrity": "sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg==",
"requires": {
"@babel/runtime": "^7.10.4",
"classnames": "^2.2.5",
@@ -3813,85 +3813,100 @@
}
},
"antd": {
- "version": "4.15.1",
- "resolved": "https://registry.npmjs.org/antd/-/antd-4.15.1.tgz",
- "integrity": "sha512-zTZz8GY9yERNjSnH6xWU3Rw5sC3RtHEs/LOTKcSMTtU3Q5jHXIbAHKd1C6bYLQT6Ru75p+/UyKvJoNip/ax/WQ==",
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/antd/-/antd-4.17.1.tgz",
+ "integrity": "sha512-GNVuVnWJjFE1r3AGYc7vhy+gzlDAimAAZMTNCZdAncLBDN7gCTrf8euSb+C0TEqr7UV26yNGBQ9yGoeUcHUdSA==",
"requires": {
"@ant-design/colors": "^6.0.0",
- "@ant-design/icons": "^4.6.2",
+ "@ant-design/icons": "^4.7.0",
"@ant-design/react-slick": "~0.28.1",
"@babel/runtime": "^7.12.5",
+ "@ctrl/tinycolor": "^3.4.0",
"array-tree-filter": "^2.1.0",
"classnames": "^2.2.6",
"copy-to-clipboard": "^3.2.0",
"lodash": "^4.17.21",
"moment": "^2.25.3",
- "rc-cascader": "~1.4.0",
+ "rc-cascader": "~2.1.0",
"rc-checkbox": "~2.3.0",
"rc-collapse": "~3.1.0",
- "rc-dialog": "~8.5.1",
- "rc-drawer": "~4.3.0",
+ "rc-dialog": "~8.6.0",
+ "rc-drawer": "~4.4.2",
"rc-dropdown": "~3.2.0",
- "rc-field-form": "~1.20.0",
- "rc-image": "~5.2.4",
- "rc-input-number": "~7.0.1",
- "rc-mentions": "~1.5.0",
- "rc-menu": "~8.10.0",
- "rc-motion": "^2.4.0",
- "rc-notification": "~4.5.2",
- "rc-pagination": "~3.1.6",
- "rc-picker": "~2.5.10",
+ "rc-field-form": "~1.21.0",
+ "rc-image": "~5.2.5",
+ "rc-input-number": "~7.3.0",
+ "rc-mentions": "~1.6.1",
+ "rc-menu": "~9.0.12",
+ "rc-motion": "^2.4.4",
+ "rc-notification": "~4.5.7",
+ "rc-pagination": "~3.1.9",
+ "rc-picker": "~2.5.17",
"rc-progress": "~3.1.0",
"rc-rate": "~2.9.0",
"rc-resize-observer": "^1.0.0",
- "rc-select": "~12.1.6",
- "rc-slider": "~9.7.1",
+ "rc-select": "~13.1.0-alpha.0",
+ "rc-slider": "~9.7.4",
"rc-steps": "~4.1.0",
"rc-switch": "~3.2.0",
- "rc-table": "~7.13.0",
- "rc-tabs": "~11.7.0",
+ "rc-table": "~7.19.0",
+ "rc-tabs": "~11.10.0",
"rc-textarea": "~0.3.0",
- "rc-tooltip": "~5.1.0",
- "rc-tree": "~4.1.0",
- "rc-tree-select": "~4.3.0",
- "rc-trigger": "^5.2.1",
- "rc-upload": "~4.2.0-alpha.0",
- "rc-util": "^5.9.4",
- "scroll-into-view-if-needed": "^2.2.25",
- "warning": "^4.0.3"
+ "rc-tooltip": "~5.1.1",
+ "rc-tree": "~5.2.0",
+ "rc-tree-select": "~4.6.0",
+ "rc-trigger": "^5.2.10",
+ "rc-upload": "~4.3.0",
+ "rc-util": "^5.14.0",
+ "scroll-into-view-if-needed": "^2.2.25"
},
"dependencies": {
"@ant-design/icons": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz",
- "integrity": "sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.7.0.tgz",
+ "integrity": "sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==",
"requires": {
"@ant-design/colors": "^6.0.0",
- "@ant-design/icons-svg": "^4.0.0",
+ "@ant-design/icons-svg": "^4.2.1",
"@babel/runtime": "^7.11.2",
"classnames": "^2.2.6",
"rc-util": "^5.9.4"
}
},
+ "@ant-design/icons-svg": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
+ "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
+ },
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
}
},
"rc-util": {
- "version": "5.9.8",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz",
- "integrity": "sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw==",
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
"requires": {
- "@babel/runtime": "^7.12.5",
+ "@babel/runtime": "^7.18.3",
"react-is": "^16.12.0",
"shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
}
}
}
@@ -4142,9 +4157,9 @@
"dev": true
},
"async-validator": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.1.tgz",
- "integrity": "sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ=="
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.1.1.tgz",
+ "integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
},
"asynckit": {
"version": "0.4.0",
@@ -6591,9 +6606,9 @@
}
},
"date-fns": {
- "version": "2.21.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.0.tgz",
- "integrity": "sha512-lbAFpaKz7QuVxm6m1rmioh4BB2gmLx1r1JMYXU2A/ufT5ly4zEG7HYH4fvS/QfbdyC5rkYyiS30mYz4Q7XCO+w=="
+ "version": "2.28.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
+ "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw=="
},
"dayjs": {
"version": "1.10.4",
@@ -6953,9 +6968,9 @@
"dev": true
},
"dom-align": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.0.tgz",
- "integrity": "sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA=="
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.3.tgz",
+ "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA=="
},
"dom-converter": {
"version": "0.2.0",
@@ -11471,7 +11486,7 @@
"json2mq": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
- "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=",
+ "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
"requires": {
"string-convert": "^0.2.0"
}
@@ -12696,15 +12711,6 @@
}
}
},
- "mini-store": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.6.tgz",
- "integrity": "sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==",
- "requires": {
- "hoist-non-react-statics": "^3.3.2",
- "shallowequal": "^1.0.2"
- }
- },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -15508,24 +15514,26 @@
}
},
"rc-align": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.9.tgz",
- "integrity": "sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz",
+ "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
"dom-align": "^1.7.0",
+ "lodash": "^4.17.21",
"rc-util": "^5.3.0",
"resize-observer-polyfill": "^1.5.1"
}
},
"rc-cascader": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.2.tgz",
- "integrity": "sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-2.1.5.tgz",
+ "integrity": "sha512-FiGPfSxKmSft2CT2XSr6HeKihqcxM+1ozmH6FGXTDthVNNvV0ai82CA6l30iPmMmlflwDfSm/623qkekqNq4BQ==",
"requires": {
"@babel/runtime": "^7.12.5",
"array-tree-filter": "^2.1.0",
+ "rc-tree-select": "~4.6.0",
"rc-trigger": "^5.0.4",
"rc-util": "^5.0.1",
"warning": "^4.0.1"
@@ -15541,9 +15549,9 @@
}
},
"rc-collapse": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.0.tgz",
- "integrity": "sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.4.tgz",
+ "integrity": "sha512-WayrhswKMwuJab9xbqFxXTgV0m6X8uOPEO6zm/GJ5YJiJ/wIh/Dd2VtWeI06HYUEnTFv0HNcYv+zWbB+p6OD2A==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
@@ -15553,9 +15561,9 @@
}
},
"rc-dialog": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.2.tgz",
- "integrity": "sha512-3n4taFcjqhTE9uNuzjB+nPDeqgRBTEGBfe46mb1e7r88DgDo0lL4NnxY/PZ6PJKd2tsCt+RrgF/+YeTvJ/Thsw==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.6.0.tgz",
+ "integrity": "sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.6",
@@ -15564,9 +15572,9 @@
}
},
"rc-drawer": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.3.1.tgz",
- "integrity": "sha512-GMfFy4maqxS9faYXEhQ+0cA1xtkddEQzraf6SAdzWbn444DrrLogwYPk1NXSpdXjLCLxgxOj9MYtyYG42JsfXg==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.4.3.tgz",
+ "integrity": "sha512-FYztwRs3uXnFOIf1hLvFxIQP9MiZJA+0w+Os8dfDh/90X7z/HqP/Yg+noLCIeHEbKln1Tqelv8ymCAN24zPcfQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.6",
@@ -15574,9 +15582,9 @@
}
},
"rc-dropdown": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.0.tgz",
- "integrity": "sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw==",
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.5.tgz",
+ "integrity": "sha512-dVO2eulOSbEf+F4OyhCY5iGiMVhUYY/qeXxL7Ex2jDBt/xc89jU07mNoowV6aWxwVOc70pxEINff0oM2ogjluA==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.6",
@@ -15584,30 +15592,30 @@
}
},
"rc-field-form": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.20.0.tgz",
- "integrity": "sha512-jkzsIfXR7ywEYdeAtktt1aLff88wxIPDLpq7KShHNl4wlsWrCE+TzkXBfjvVzYOVZt5GGrD8YDqNO/q6eaR/eA==",
+ "version": "1.21.2",
+ "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.21.2.tgz",
+ "integrity": "sha512-LR/bURt/Tf5g39mb0wtMtQuWn42d/7kEzpzlC5fNC7yaRVmLTtlPP4sBBlaViETM9uZQKLoaB0Pt9Mubhm9gow==",
"requires": {
"@babel/runtime": "^7.8.4",
- "async-validator": "^3.0.3",
+ "async-validator": "^4.0.2",
"rc-util": "^5.8.0"
}
},
"rc-image": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.4.tgz",
- "integrity": "sha512-kWOjhZC1OoGKfvWqtDoO9r8WUNswBwnjcstI6rf7HMudz0usmbGvewcWqsOhyaBRJL9+I4eeG+xiAoxV1xi75Q==",
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.5.tgz",
+ "integrity": "sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw==",
"requires": {
"@babel/runtime": "^7.11.2",
"classnames": "^2.2.6",
- "rc-dialog": "~8.5.0",
+ "rc-dialog": "~8.6.0",
"rc-util": "^5.0.6"
}
},
"rc-input-number": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.0.6.tgz",
- "integrity": "sha512-J5DIoCKIunoPb16FEghaEOyNDuZXD5F9LxLNcqd31z/0e37XtuHgo4QF/TonKLsESwdg7UAzWhiD0K6PPrN3YQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.4.tgz",
+ "integrity": "sha512-W9uqSzuvJUnz8H8vsVY4kx+yK51SsAxNTwr8SNH4G3XqQNocLVmKIibKFRjocnYX1RDHMND9FFbgj2h7E7nvGA==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.5",
@@ -15615,59 +15623,150 @@
},
"dependencies": {
"rc-util": {
- "version": "5.9.8",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz",
- "integrity": "sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw==",
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
"requires": {
- "@babel/runtime": "^7.12.5",
+ "@babel/runtime": "^7.18.3",
"react-is": "^16.12.0",
"shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
}
}
}
},
"rc-mentions": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.5.3.tgz",
- "integrity": "sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==",
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.6.5.tgz",
+ "integrity": "sha512-CUU4+q+awG2pA0l/tG2kPB2ytWbKQUkFxVeKwacr63w7crE/yjfzrFXxs/1fxhyEbQUWdAZt/L25QBieukYQ5w==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.6",
- "rc-menu": "^8.0.1",
+ "rc-menu": "~9.3.2",
"rc-textarea": "^0.3.0",
"rc-trigger": "^5.0.4",
"rc-util": "^5.0.1"
+ },
+ "dependencies": {
+ "rc-menu": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.3.2.tgz",
+ "integrity": "sha512-h3m45oY1INZyqphGELkdT0uiPnFzxkML8m0VMhJnk2fowtqfiT7F5tJLT3znEVaPIY80vMy1bClCkgq8U91CzQ==",
+ "requires": {
+ "@babel/runtime": "^7.10.1",
+ "classnames": "2.x",
+ "rc-motion": "^2.4.3",
+ "rc-overflow": "^1.2.0",
+ "rc-trigger": "^5.1.2",
+ "rc-util": "^5.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
"rc-menu": {
- "version": "8.10.7",
- "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.10.7.tgz",
- "integrity": "sha512-m/ypV7OjkkUsMdutzMUxEI8tWyi0Y1TQ5YkSDk7k2uv2aCKkHYEoDKsDAfcPeejo3HMo2z5unWE+jD+dCphraw==",
+ "version": "9.0.14",
+ "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.0.14.tgz",
+ "integrity": "sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
- "mini-store": "^3.0.1",
- "rc-motion": "^2.0.1",
+ "rc-motion": "^2.4.3",
+ "rc-overflow": "^1.2.0",
"rc-trigger": "^5.1.2",
- "rc-util": "^5.7.0",
- "resize-observer-polyfill": "^1.5.0",
+ "rc-util": "^5.12.0",
"shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
}
},
"rc-motion": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.1.tgz",
- "integrity": "sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.0.tgz",
+ "integrity": "sha512-1MDWA9+i174CZ0SIDenSYm2Wb9YbRkrexjZWR0CUFu7D6f23E8Y0KsTgk9NGOLJsGak5ELZK/Y5lOlf5wQdzbw==",
"requires": {
"@babel/runtime": "^7.11.1",
"classnames": "^2.2.1",
- "rc-util": "^5.2.1"
+ "rc-util": "^5.21.0"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
}
},
"rc-notification": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.5.tgz",
- "integrity": "sha512-YIfhTSw+h5GsSdgMnuMx24wqiPlg3FeamuOlkh9RkyHx+SeZVAKzQ0juy2NGvPEF2hDWi5xTqxUqLdo0L2AmGg==",
+ "version": "4.5.7",
+ "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.7.tgz",
+ "integrity": "sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
@@ -15676,46 +15775,67 @@
}
},
"rc-overflow": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.1.1.tgz",
- "integrity": "sha512-bkGrxvWtz6xQfxBPBQcN8xOEHFCeG0R4pfLAku6kFLQF9NPMTt5HvT+Bq0+stqom9eI3WRlun6RPzfjTamPwew==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.6.tgz",
+ "integrity": "sha512-YqbocgzuQxfq2wZy72vdAgrgzzEuM/5d4gF9TBEodCpXPbUeXGrUXNm1J6G1MSkCU2N0ePIgCEu5qD/0Ldi63Q==",
"requires": {
"@babel/runtime": "^7.11.1",
"classnames": "^2.2.1",
"rc-resize-observer": "^1.0.0",
- "rc-util": "^5.5.1"
+ "rc-util": "^5.19.2"
},
"dependencies": {
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
}
+ },
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
}
}
},
"rc-pagination": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.6.tgz",
- "integrity": "sha512-Pb2zJEt8uxXzYCWx/2qwsYZ3vSS9Eqdw0cJBli6C58/iYhmvutSBqrBJh51Z5UzYc5ZcW5CMeP5LbbKE1J3rpw==",
+ "version": "3.1.16",
+ "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.16.tgz",
+ "integrity": "sha512-GFcHXJ7XxeJDf9B+ndP4PRDt46maSSgYhiwofBMiIGKIlBhJ0wfu8DMCEvaWJJLpI2u4Gb6zF1dHpiqPFrosPg==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1"
}
},
"rc-picker": {
- "version": "2.5.10",
- "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.10.tgz",
- "integrity": "sha512-d2or2jql9SSY8CaRPybpbKkXBq3bZ6g88UKyWQZBLTCrc92Xm87RfRC/P3UEQo/CLmia3jVF7IXVi1HmNe2DZA==",
+ "version": "2.5.19",
+ "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.19.tgz",
+ "integrity": "sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "date-fns": "^2.15.0",
+ "date-fns": "2.x",
+ "dayjs": "1.x",
"moment": "^2.24.0",
"rc-trigger": "^5.0.4",
"rc-util": "^5.4.0",
@@ -15723,18 +15843,18 @@
}
},
"rc-progress": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.3.tgz",
- "integrity": "sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.4.tgz",
+ "integrity": "sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.6"
}
},
"rc-rate": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz",
- "integrity": "sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz",
+ "integrity": "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.5",
@@ -15753,9 +15873,9 @@
}
},
"rc-select": {
- "version": "12.1.9",
- "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-12.1.9.tgz",
- "integrity": "sha512-jsqcdby3Ag9ohYQ0d4vS4Q2jeWjj6kb2NHS9WcQSse0/5lCb3mqXI/1fkKRRIhdQvMBklYh4ctSox3mDrZiB8A==",
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-13.1.1.tgz",
+ "integrity": "sha512-Oy4L27x5QgGR8902pw0bJVjrTWFnKPKvdLHzJl5pjiA+jM1hpzDfLGg/bY2ntk5ElxxQKZUwbFKUeqfCQU7SrQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
@@ -15767,33 +15887,65 @@
},
"dependencies": {
"rc-util": {
- "version": "5.9.8",
- "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz",
- "integrity": "sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw==",
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
"requires": {
- "@babel/runtime": "^7.12.5",
+ "@babel/runtime": "^7.18.3",
"react-is": "^16.12.0",
"shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
}
}
}
},
"rc-slider": {
- "version": "9.7.2",
- "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.2.tgz",
- "integrity": "sha512-mVaLRpDo6otasBs6yVnG02ykI3K6hIrLTNfT5eyaqduFv95UODI9PDS6fWuVVehVpdS4ENgOSwsTjrPVun+k9g==",
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz",
+ "integrity": "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.5",
"rc-tooltip": "^5.0.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.16.1",
"shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
}
},
"rc-steps": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.3.tgz",
- "integrity": "sha512-GXrMfWQOhN3sVze3JnzNboHpQdNHcdFubOETUHyDpa/U3HEKBZC3xJ8XK4paBgF4OJ3bdUVLC+uBPc6dCxvDYA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz",
+ "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==",
"requires": {
"@babel/runtime": "^7.10.2",
"classnames": "^2.2.3",
@@ -15811,133 +15963,264 @@
}
},
"rc-table": {
- "version": "7.13.3",
- "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.13.3.tgz",
- "integrity": "sha512-oP4fknjvKCZAaiDnvj+yzBaWcg+JYjkASbeWonU1BbrLcomkpKvMUgPODNEzg0QdXA9OGW0PO86h4goDSW06Kg==",
+ "version": "7.19.2",
+ "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.19.2.tgz",
+ "integrity": "sha512-NdpnoM50MK02H5/hGOsObfxCvGFUG5cHB9turE5BKJ81T5Ycbq193w5tLhnpILXe//Oanzr47MdMxkUnVGP+qg==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.5",
"rc-resize-observer": "^1.0.0",
- "rc-util": "^5.4.0",
+ "rc-util": "^5.14.0",
"shallowequal": "^1.1.0"
},
"dependencies": {
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
}
+ },
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
}
}
},
"rc-tabs": {
- "version": "11.7.3",
- "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz",
- "integrity": "sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==",
+ "version": "11.10.8",
+ "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.10.8.tgz",
+ "integrity": "sha512-uK+x+eJ8WM4jiXoqGa+P+JUQX2Wlkj9f0o/5dyOw42B6YLnHJN80uTVcCeAmtA1N0xjPW0GNSZvUm4SU3jAYpw==",
"requires": {
"@babel/runtime": "^7.11.2",
"classnames": "2.x",
- "rc-dropdown": "^3.1.3",
- "rc-menu": "^8.6.1",
+ "rc-dropdown": "^3.2.0",
+ "rc-menu": "~9.3.2",
"rc-resize-observer": "^1.0.0",
"rc-util": "^5.5.0"
},
"dependencies": {
+ "rc-menu": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.3.2.tgz",
+ "integrity": "sha512-h3m45oY1INZyqphGELkdT0uiPnFzxkML8m0VMhJnk2fowtqfiT7F5tJLT3znEVaPIY80vMy1bClCkgq8U91CzQ==",
+ "requires": {
+ "@babel/runtime": "^7.10.1",
+ "classnames": "2.x",
+ "rc-motion": "^2.4.3",
+ "rc-overflow": "^1.2.0",
+ "rc-trigger": "^5.1.2",
+ "rc-util": "^5.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
+ }
+ },
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
}
}
}
},
"rc-textarea": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.4.tgz",
- "integrity": "sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A==",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz",
+ "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
"rc-resize-observer": "^1.0.0",
- "rc-util": "^5.7.0"
+ "rc-util": "^5.7.0",
+ "shallowequal": "^1.1.0"
},
"dependencies": {
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
+ },
+ "dependencies": {
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ }
}
}
}
},
"rc-tooltip": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.0.tgz",
- "integrity": "sha512-pFqD1JZwNIpbdcefB7k5xREoHAWM/k3yQwYF0iminbmDXERgq4rvBfUwIvlCqqZSM7HDr9hYeYr6ZsVNaKtvCQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz",
+ "integrity": "sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA==",
"requires": {
"@babel/runtime": "^7.11.2",
"rc-trigger": "^5.0.0"
}
},
"rc-tree": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.5.tgz",
- "integrity": "sha512-q2vjcmnBDylGZ9/ZW4F9oZMKMJdbFWC7um+DAQhZG1nqyg1iwoowbBggUDUaUOEryJP+08bpliEAYnzJXbI5xQ==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.2.2.tgz",
+ "integrity": "sha512-ZQPGi5rGmipXvSUqeMbh0Rm0Cn2zFVWQFvS3sinH+lis5VNCChkFs2dAFpWZnb9/d/SZPeMfYG/x2XFq/q3UTA==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
"rc-motion": "^2.0.1",
"rc-util": "^5.0.0",
- "rc-virtual-list": "^3.0.1"
+ "rc-virtual-list": "^3.4.1"
}
},
"rc-tree-select": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.1.tgz",
- "integrity": "sha512-OeV8u5kBEJ8MbatP04Rh8T3boOHGjdGBTEm1a0bubBbB2GNNhlMOr4ZxezkHYtXf02JdBS/WyydmI/RMjXgtJA==",
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.6.3.tgz",
+ "integrity": "sha512-VymfystOnW8EfoWaWehgB8zpYKgRZf4ILu9KHf7FJZVZ/1dnBEHDqg1bBi43/1BYLwYFKSKKSjkYyNYntWJM4A==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "2.x",
- "rc-select": "^12.0.0",
- "rc-tree": "^4.0.0",
- "rc-util": "^5.0.5"
+ "rc-select": "~13.1.0-alpha.0",
+ "rc-tree": "~5.2.0",
+ "rc-util": "^5.7.0"
}
},
"rc-trigger": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.5.tgz",
- "integrity": "sha512-RlF5RpWqK+JeiFeQVOzwjLFzpNe2FowoXc/42azz+20wr/bYF1Q/MwprUK+3+vs/oFhLC0ht3/NlrslAo/OoWA==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz",
+ "integrity": "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==",
"requires": {
- "@babel/runtime": "^7.11.2",
+ "@babel/runtime": "^7.18.3",
"classnames": "^2.2.6",
"rc-align": "^4.0.0",
"rc-motion": "^2.0.0",
- "rc-util": "^5.5.0"
+ "rc-util": "^5.19.2"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ }
+ }
}
},
"rc-upload": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.2.0.tgz",
- "integrity": "sha512-BXtvBs1PnwLjaUzBBU5z4yb9NMSaxc6mUIoPmS9LUAzaTz12L3TLrwu+8dnopYUiyLmYFS3LEO7aUfEWBqJfSA==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz",
+ "integrity": "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==",
"requires": {
- "@babel/runtime": "^7.10.1",
+ "@babel/runtime": "^7.18.3",
"classnames": "^2.2.5",
"rc-util": "^5.2.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
}
},
"rc-util": {
@@ -15951,25 +16234,45 @@
}
},
"rc-virtual-list": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz",
- "integrity": "sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q==",
+ "version": "3.4.8",
+ "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.8.tgz",
+ "integrity": "sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==",
"requires": {
"classnames": "^2.2.6",
"rc-resize-observer": "^1.0.0",
- "rc-util": "^5.0.7"
+ "rc-util": "^5.15.0"
},
"dependencies": {
"rc-resize-observer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz",
- "integrity": "sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz",
+ "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==",
"requires": {
"@babel/runtime": "^7.10.1",
"classnames": "^2.2.1",
- "rc-util": "^5.0.0",
+ "rc-util": "^5.15.0",
"resize-observer-polyfill": "^1.5.1"
}
+ },
+ "rc-util": {
+ "version": "5.21.5",
+ "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.21.5.tgz",
+ "integrity": "sha512-ip7HqX37Cy/RDl9MlrFp+FbcKnsWZ22sF5MS5eSpYLtg5MpC0TMqGb5ukBatoOhgjnLL+eJGR6e7YAJ/dhK09A==",
+ "requires": {
+ "@babel/runtime": "^7.18.3",
+ "react-is": "^16.12.0",
+ "shallowequal": "^1.1.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
}
}
},
@@ -17400,9 +17703,9 @@
"integrity": "sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA=="
},
"scroll-into-view-if-needed": {
- "version": "2.2.28",
- "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.28.tgz",
- "integrity": "sha512-8LuxJSuFVc92+0AdNv4QOxRL4Abeo1DgLnGNkn1XlaujPH/3cCFz3QI60r2VNu4obJJROzgnIUw5TKQkZvZI1w==",
+ "version": "2.2.29",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz",
+ "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==",
"requires": {
"compute-scroll-into-view": "^1.0.17"
}
diff --git a/inlong-dashboard/package.json b/inlong-dashboard/package.json
index b9261cfc5..e0e55a6d4 100644
--- a/inlong-dashboard/package.json
+++ b/inlong-dashboard/package.json
@@ -6,7 +6,7 @@
"@ant-design/icons": "^4.5.0",
"@ant-design/pro-layout": "^6.15.0",
"ahooks": "^2.10.0",
- "antd": "^4.15.1",
+ "antd": "^4.17.1",
"dayjs": "^1.10.4",
"echarts": "^5.2.2",
"i18next": "^20.3.1",
diff --git a/inlong-dashboard/src/components/HighSelect/index.tsx b/inlong-dashboard/src/components/HighSelect/index.tsx
index 47b18a66a..774b99a47 100644
--- a/inlong-dashboard/src/components/HighSelect/index.tsx
+++ b/inlong-dashboard/src/components/HighSelect/index.tsx
@@ -24,6 +24,7 @@ import React, { useMemo, useState, useEffect } from 'react';
import { Select, Space, Input } from 'antd';
import type { SelectProps, OptionProps } from 'antd/es/select';
import { useRequest } from '@/hooks';
+import debounce from 'lodash/debounce';
// example options: {
// requestService: '/basic/schema/listAll',
@@ -40,9 +41,10 @@ export interface HighSelectProps extends Omit<SelectProps<any>, 'options'> {
options?:
| OptionProps
| {
- requestService?: unknown;
+ requestService: unknown;
requestParams?: unknown;
requestAuto?: boolean;
+ requestTrigger?: 'onOpen' | 'onSearch'[];
};
asyncValueLabel?: string;
useInput?: boolean;
@@ -65,6 +67,10 @@ const HighSelect: React.FC<HighSelectProps> = ({
...options?.requestParams,
});
+ const debounceGetList = debounce(value => {
+ getList(value);
+ }, 300);
+
const optionList = useMemo(() => {
const output = Array.isArray(options) ? options : list;
@@ -86,8 +92,21 @@ const HighSelect: React.FC<HighSelectProps> = ({
return <Select {...rest} />;
}
+ const onSearch = value => {
+ if (options?.requestService && options?.requestTrigger?.includes('onSearch')) {
+ debounceGetList(value);
+ }
+ if (rest.onSearch) {
+ rest.onSearch(value);
+ }
+ };
+
const onDropdownVisibleChange = (open: boolean) => {
- if (open) {
+ if (
+ open &&
+ options?.requestService &&
+ (!options?.requestTrigger || options?.requestTrigger?.includes('onOpen'))
+ ) {
getList();
}
if (rest.onDropdownVisibleChange) {
@@ -121,8 +140,11 @@ const HighSelect: React.FC<HighSelectProps> = ({
const SelectComponent = (
<Select
- showSearch={optionList.length > 5}
+ showSearch={
+ options?.requestTrigger?.includes('onSearch') ? rest.showSearch : optionList.length > 5
+ }
{...rest}
+ onSearch={options?.requestTrigger?.includes('onSearch') ? onSearch : rest.onSearch}
onDropdownVisibleChange={onDropdownVisibleChange}
onChange={onSelectChange}
value={
diff --git a/inlong-dashboard/src/configs/menus/index.ts b/inlong-dashboard/src/configs/menus/index.ts
index 45dcb6707..d92f5cdec 100644
--- a/inlong-dashboard/src/configs/menus/index.ts
+++ b/inlong-dashboard/src/configs/menus/index.ts
@@ -35,8 +35,17 @@ const menus: MenuItemType[] = [
name: i18n.t('configs.menus.DataConsumption'),
},
{
- path: '/clusters',
name: i18n.t('configs.menus.Clusters'),
+ children: [
+ {
+ path: '/clusters',
+ name: i18n.t('configs.menus.Clusters'),
+ },
+ {
+ path: '/clusterTags',
+ name: i18n.t('configs.menus.ClusterTags'),
+ },
+ ],
},
{
path: '/audit',
diff --git a/inlong-dashboard/src/configs/routes/index.tsx b/inlong-dashboard/src/configs/routes/index.tsx
index 081445351..9ecd804af 100644
--- a/inlong-dashboard/src/configs/routes/index.tsx
+++ b/inlong-dashboard/src/configs/routes/index.tsx
@@ -115,6 +115,11 @@ const routes: RouteProps[] = [
},
],
},
+ {
+ path: '/clusterTags',
+ component: () => import('@/pages/ClusterTags'),
+ exact: true,
+ },
{
component: () => import('@/pages/Error/404'),
},
diff --git a/inlong-dashboard/src/i18n.ts b/inlong-dashboard/src/i18n.ts
index 374184dd7..c9ba70cfd 100644
--- a/inlong-dashboard/src/i18n.ts
+++ b/inlong-dashboard/src/i18n.ts
@@ -30,6 +30,7 @@ const resources = {
'configs.menus.DataConsumption': 'Data Consumption',
'configs.menus.Datasources': 'Data Sources',
'configs.menus.Clusters': 'Clusters',
+ 'configs.menus.ClusterTags': 'ClusterTags',
'configs.menus.SystemManagement': 'System',
},
},
@@ -40,6 +41,7 @@ const resources = {
'configs.menus.DataConsumption': '数据消费',
'configs.menus.Datasources': '数据源服务器',
'configs.menus.Clusters': '集群管理',
+ 'configs.menus.ClusterTags': '标签管理',
'configs.menus.SystemManagement': '系统管理',
},
},
diff --git a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx b/inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx
similarity index 54%
copy from inlong-dashboard/src/pages/Clusters/CreateModal.tsx
copy to inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx
index b874a734f..cd190456b 100644
--- a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
+++ b/inlong-dashboard/src/pages/ClusterTags/ClusterBindModal.tsx
@@ -17,58 +17,33 @@
* under the License.
*/
-import React, { useMemo } from 'react';
+import React, { useCallback } from 'react';
import { Modal, message } from 'antd';
import { ModalProps } from 'antd/es/modal';
import FormGenerator, { useForm } from '@/components/FormGenerator';
-import { useRequest, useUpdateEffect } from '@/hooks';
-import request from '@/utils/request';
-import { Clusters } from './config';
+import { useUpdateEffect } from '@/hooks';
import i18n from '@/i18n';
+import request from '@/utils/request';
export interface Props extends ModalProps {
- type: string;
- // Require when edit
- id?: string;
+ tagId: number;
}
-const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
+const Comp: React.FC<Props> = ({ tagId, ...modalProps }) => {
const [form] = useForm();
- const { run: getData } = useRequest(
- id => ({
- url: `/cluster/get/${id}`,
- }),
- {
- manual: true,
- formatResult: result => ({
- ...result,
- inCharges: result.inCharges.split(','),
- }),
- onSuccess: result => {
- form.setFieldsValue(result);
- },
- },
- );
-
const onOk = async () => {
const values = await form.validateFields();
- const isUpdate = id;
const submitData = {
+ tagId,
...values,
- type,
- inCharges: values.inCharges?.join(','),
};
- if (isUpdate) {
- submitData.id = id;
- // submitData.version = data?.version;
- }
await request({
- url: `/cluster/${isUpdate ? 'update' : 'save'}`,
+ url: '/cluster/tag/bind',
method: 'POST',
data: submitData,
});
- await modalProps?.onOk(submitData);
+ await modalProps?.onOk(values);
message.success(i18n.t('basic.OperatingSuccess'));
};
@@ -76,24 +51,49 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
if (modalProps.visible) {
// open
form.resetFields();
- if (id) {
- getData(id);
- }
}
}, [modalProps.visible]);
- const content = useMemo(() => {
- const current = Clusters.find(item => item.value === type);
- return current?.config;
- }, [type]);
+ const getCreateFormContent = useCallback(
+ () => [
+ {
+ type: 'select',
+ label: i18n.t('pages.Clusters.Name'),
+ name: 'clusters',
+ rules: [{ required: true }],
+ props: {
+ mode: 'multiple',
+ filterOption: false,
+ options: {
+ requestTrigger: ['onOpen', 'onSearch'],
+ requestService: keyword => ({
+ url: '/cluster/list',
+ method: 'POST',
+ data: {
+ keyword,
+ pageNum: 1,
+ pageSize: 20,
+ type: '',
+ },
+ }),
+ requestParams: {
+ formatResult: result =>
+ result?.list?.map(item => ({
+ ...item,
+ label: item.clusterTag,
+ value: item.clusterTag,
+ })),
+ },
+ },
+ },
+ },
+ ],
+ [],
+ );
return (
- <Modal
- {...modalProps}
- title={id ? i18n.t('pages.Clusters.Edit') : i18n.t('pages.Clusters.Create')}
- onOk={onOk}
- >
- <FormGenerator content={content} form={form} useMaxWidth />
+ <Modal {...modalProps} title={i18n.t('pages.ClusterTags.BindCluster')} onOk={onOk}>
+ <FormGenerator content={getCreateFormContent()} form={form} useMaxWidth />
</Modal>
);
};
diff --git a/inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx b/inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx
new file mode 100644
index 000000000..2b20da331
--- /dev/null
+++ b/inlong-dashboard/src/pages/ClusterTags/ClusterList.tsx
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import React, { useCallback, useEffect, useMemo, useState } from 'react';
+import { Button, Modal, message } from 'antd';
+import i18n from '@/i18n';
+import HighTable from '@/components/HighTable';
+import { defaultSize } from '@/configs/pagination';
+import { useRequest } from '@/hooks';
+import { Clusters } from '@/pages/Clusters/config';
+import ClusterBindModal from './ClusterBindModal';
+import request from '@/utils/request';
+
+export interface ClusterListProps {
+ tagId: number;
+ clusterTag: string;
+}
+
+const getFilterFormContent = defaultValues => [
+ {
+ type: 'inputsearch',
+ name: 'keyword',
+ },
+ {
+ type: 'select',
+ name: 'type',
+ label: i18n.t('pages.Clusters.Type'),
+ initialValue: defaultValues.type,
+ props: {
+ options: [
+ {
+ label: i18n.t('pages.Clusters.TypeAll'),
+ value: '',
+ },
+ ].concat(
+ Clusters.map(item => ({
+ label: item.label,
+ value: item.value,
+ })),
+ ),
+ },
+ },
+];
+
+const Comp: React.FC<ClusterListProps> = ({ tagId, clusterTag }) => {
+ const [options, setOptions] = useState({
+ keyword: '',
+ pageSize: defaultSize,
+ pageNum: 1,
+ type: '',
+ });
+
+ const [clusterBindModal, setClusterBindModal] = useState<Record<string, unknown>>({
+ visible: false,
+ });
+
+ const { data, loading, run: getList } = useRequest(
+ {
+ url: '/cluster/list',
+ method: 'POST',
+ data: {
+ ...options,
+ clusterTag,
+ },
+ },
+ {
+ manual: true,
+ },
+ );
+
+ useEffect(() => {
+ if (clusterTag) {
+ getList();
+ }
+ }, [options, clusterTag, getList]);
+
+ const onDelete = useCallback(
+ ({ id }) => {
+ Modal.confirm({
+ title: i18n.t('basic.DeleteConfirm'),
+ onOk: async () => {
+ await request({
+ url: `/cluster/delete/${id}`,
+ method: 'DELETE',
+ });
+ await getList();
+ message.success(i18n.t('basic.DeleteSuccess'));
+ },
+ });
+ },
+ [getList],
+ );
+
+ const onChange = ({ current: pageNum, pageSize }) => {
+ setOptions(prev => ({
+ ...prev,
+ pageNum,
+ pageSize,
+ }));
+ };
+
+ const onFilter = allValues => {
+ setOptions(prev => ({
+ ...prev,
+ ...allValues,
+ pageNum: 1,
+ }));
+ };
+
+ const pagination = {
+ pageSize: +options.pageSize,
+ current: +options.pageNum,
+ total: data?.total,
+ };
+
+ const columns = useMemo(() => {
+ const defaultColumns = [
+ {
+ title: i18n.t('pages.Clusters.Name'),
+ dataIndex: 'name',
+ ellipsisMulti: 2,
+ },
+ {
+ title: i18n.t('pages.Clusters.InCharges'),
+ dataIndex: 'inCharges',
+ ellipsisMulti: 2,
+ },
+ ];
+
+ return defaultColumns.concat([
+ {
+ title: i18n.t('basic.Operating'),
+ dataIndex: 'action',
+ width: 200,
+ render: (text, record) => (
+ <>
+ {/* <Button type="link">{i18n.t('basic.Detail')}</Button> */}
+ <Button type="link" onClick={() => onDelete(record)} style={{ display: 'none' }}>
+ {i18n.t('pages.ClusterTags.DelCluster')}
+ </Button>
+ </>
+ ),
+ } as any,
+ ]);
+ }, [onDelete]);
+
+ return (
+ <>
+ <HighTable
+ filterForm={{
+ content: getFilterFormContent(options),
+ onFilter,
+ }}
+ suffix={
+ <Button
+ type="primary"
+ onClick={() => setClusterBindModal({ visible: true })}
+ style={{ display: 'none' }}
+ >
+ {i18n.t('pages.ClusterTags.BindCluster')}
+ </Button>
+ }
+ table={{
+ columns,
+ rowKey: 'id',
+ dataSource: data?.list,
+ pagination,
+ loading,
+ onChange,
+ }}
+ />
+
+ <ClusterBindModal
+ {...clusterBindModal}
+ tagId={tagId}
+ visible={clusterBindModal.visible as boolean}
+ onOk={async () => {
+ await getList();
+ setClusterBindModal({ visible: false });
+ }}
+ onCancel={() => setClusterBindModal({ visible: false })}
+ />
+ </>
+ );
+};
+
+export default Comp;
diff --git a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx b/inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx
similarity index 72%
copy from inlong-dashboard/src/pages/Clusters/CreateModal.tsx
copy to inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx
index b874a734f..07ebc7664 100644
--- a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
+++ b/inlong-dashboard/src/pages/ClusterTags/TagDetailModal.tsx
@@ -18,32 +18,30 @@
*/
import React, { useMemo } from 'react';
+import i18n from '@/i18n';
import { Modal, message } from 'antd';
import { ModalProps } from 'antd/es/modal';
import FormGenerator, { useForm } from '@/components/FormGenerator';
import { useRequest, useUpdateEffect } from '@/hooks';
+import StaffSelect from '@/components/StaffSelect';
import request from '@/utils/request';
-import { Clusters } from './config';
-import i18n from '@/i18n';
-export interface Props extends ModalProps {
- type: string;
- // Require when edit
- id?: string;
+export interface TagDetailModalProps extends ModalProps {
+ id?: number;
}
-const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
+const TagDetailModal: React.FC<TagDetailModalProps> = ({ id, ...modalProps }) => {
const [form] = useForm();
const { run: getData } = useRequest(
id => ({
- url: `/cluster/get/${id}`,
+ url: `/cluster/tag/get/${id}`,
}),
{
manual: true,
formatResult: result => ({
...result,
- inCharges: result.inCharges.split(','),
+ inCharges: result.inCharges ? result.inCharges.split(',') : [],
}),
onSuccess: result => {
form.setFieldsValue(result);
@@ -56,15 +54,13 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
const isUpdate = id;
const submitData = {
...values,
- type,
inCharges: values.inCharges?.join(','),
};
if (isUpdate) {
submitData.id = id;
- // submitData.version = data?.version;
}
await request({
- url: `/cluster/${isUpdate ? 'update' : 'save'}`,
+ url: `/cluster/tag/${isUpdate ? 'update' : 'save'}`,
method: 'POST',
data: submitData,
});
@@ -83,14 +79,24 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
}, [modalProps.visible]);
const content = useMemo(() => {
- const current = Clusters.find(item => item.value === type);
- return current?.config;
- }, [type]);
+ return [
+ {
+ type: 'input',
+ label: i18n.t('pages.ClusterTags.Name'),
+ name: 'clusterTag',
+ },
+ {
+ type: <StaffSelect mode="multiple" currentUserClosable={false} />,
+ label: i18n.t('pages.ClusterTags.InCharges'),
+ name: 'inCharges',
+ },
+ ];
+ }, []);
return (
<Modal
{...modalProps}
- title={id ? i18n.t('pages.Clusters.Edit') : i18n.t('pages.Clusters.Create')}
+ title={i18n.t(id ? 'basic.Edit' : 'basic.Create') + i18n.t('pages.ClusterTags.Name')}
onOk={onOk}
>
<FormGenerator content={content} form={form} useMaxWidth />
@@ -98,4 +104,4 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
);
};
-export default Comp;
+export default TagDetailModal;
diff --git a/inlong-dashboard/src/pages/ClusterTags/index.module.less b/inlong-dashboard/src/pages/ClusterTags/index.module.less
new file mode 100644
index 000000000..8b54a693f
--- /dev/null
+++ b/inlong-dashboard/src/pages/ClusterTags/index.module.less
@@ -0,0 +1,30 @@
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+.listItem {
+ cursor: pointer;
+
+ &:global {
+ &:hover,
+ &.is-selected {
+ background-color: #f6f7fb;
+ }
+ }
+}
diff --git a/inlong-dashboard/src/pages/ClusterTags/index.tsx b/inlong-dashboard/src/pages/ClusterTags/index.tsx
new file mode 100644
index 000000000..0280196af
--- /dev/null
+++ b/inlong-dashboard/src/pages/ClusterTags/index.tsx
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import React, { useState, useCallback, useMemo } from 'react';
+import { Button, Card, List, Col, Row, Descriptions, Input, Modal, message } from 'antd';
+import { PageContainer } from '@/components/PageContainer';
+import { useRequest } from '@/hooks';
+import i18n from '@/i18n';
+import request from '@/utils/request';
+import ClusterList from './ClusterList';
+import TagDetailModal from './TagDetailModal';
+import styles from './index.module.less';
+
+const Comp: React.FC = () => {
+ const [options, setOptions] = useState({
+ keyword: '',
+ pageSize: 20,
+ pageNum: 1,
+ });
+
+ const [tagId, setTagId] = useState<number>();
+
+ const [tagDetailModal, setTagDetailModal] = useState<Record<string, unknown>>({
+ visible: false,
+ });
+
+ const { data, loading, run: getList } = useRequest(
+ {
+ url: '/cluster/tag/list',
+ method: 'POST',
+ data: {
+ ...options,
+ },
+ },
+ {
+ refreshDeps: [options],
+ onSuccess: result => {
+ const defaultTag = result?.list?.[0];
+ if (defaultTag) {
+ setTagId(defaultTag.id);
+ }
+ },
+ },
+ );
+
+ const currentTag = useMemo(() => {
+ return data?.list.find(item => item.id === tagId) || {};
+ }, [tagId, data]);
+
+ const onListPageChange = (pageNum, pageSize) => {
+ setOptions(prev => ({
+ ...prev,
+ pageNum,
+ pageSize,
+ }));
+ };
+
+ const onEdit = useCallback(({ id }) => {
+ setTagDetailModal({ visible: true, id });
+ }, []);
+
+ const onDelete = useCallback(
+ ({ id }) => {
+ Modal.confirm({
+ title: i18n.t('basic.DeleteConfirm'),
+ onOk: async () => {
+ await request({
+ url: `/cluster/tag/delete/${id}`,
+ method: 'DELETE',
+ });
+ await getList();
+ message.success(i18n.t('basic.DeleteSuccess'));
+ },
+ });
+ },
+ [getList],
+ );
+
+ return (
+ <PageContainer useDefaultBreadcrumb={false} useDefaultContainer={false}>
+ <Row gutter={20}>
+ <Col style={{ flex: '0 0 350px' }}>
+ <List
+ size="small"
+ itemLayout="horizontal"
+ loading={loading}
+ pagination={{
+ size: 'small',
+ onChange: onListPageChange,
+ pageSize: 20,
+ total: data?.total,
+ }}
+ dataSource={data?.list}
+ header={
+ <div style={{ display: 'flex', justifyContent: 'space-between', padding: '0 16px' }}>
+ <Input.Search
+ style={{ flex: '0 1 150px' }}
+ onSearch={keyword =>
+ setOptions(prev => ({
+ ...prev,
+ keyword,
+ }))
+ }
+ />
+ <Button type="primary" onClick={() => setTagDetailModal({ visible: true })}>
+ {i18n.t('basic.Create')}
+ </Button>
+ </div>
+ }
+ renderItem={(item: Record<string, any>) => (
+ <List.Item
+ actions={[
+ {
+ title: i18n.t('basic.Edit'),
+ action: onEdit,
+ },
+ {
+ title: i18n.t('basic.Delete'),
+ action: onDelete,
+ },
+ ].map((k, idx) => (
+ <Button
+ key={idx}
+ type="link"
+ size="small"
+ style={{ padding: 0 }}
+ onClick={e => {
+ e.stopPropagation();
+ k.action(item);
+ }}
+ >
+ {k.title}
+ </Button>
+ ))}
+ className={`${styles.listItem} ${tagId === item.id ? 'is-selected' : ''}`}
+ onClick={() => setTagId(item.id)}
+ >
+ {item.clusterTag}
+ </List.Item>
+ )}
+ style={{ background: '#fff', height: '100%' }}
+ />
+ </Col>
+
+ <Col style={{ flex: '1' }}>
+ <Card style={{ marginBottom: 20 }}>
+ <Descriptions title={currentTag.clusterTag}>
+ <Descriptions.Item label={i18n.t('pages.ClusterTags.InCharges')}>
+ {currentTag.inCharges}
+ </Descriptions.Item>
+ <Descriptions.Item label={i18n.t('pages.ClusterTags.Modifier')}>
+ {currentTag.modifier}
+ </Descriptions.Item>
+ <Descriptions.Item label={i18n.t('pages.ClusterTags.ModifyTime')}>
+ {currentTag.modifyTime}
+ </Descriptions.Item>
+ </Descriptions>
+ </Card>
+
+ <Card>
+ <ClusterList tagId={1} clusterTag={currentTag.clusterTag} />
+ </Card>
+ </Col>
+ </Row>
+
+ <TagDetailModal
+ {...tagDetailModal}
+ visible={tagDetailModal.visible as boolean}
+ onOk={async () => {
+ await getList();
+ setTagDetailModal({ visible: false });
+ }}
+ onCancel={() => setTagDetailModal({ visible: false })}
+ />
+ </PageContainer>
+ );
+};
+
+export default Comp;
diff --git a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx b/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
index b874a734f..a0e3a150f 100644
--- a/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
+++ b/inlong-dashboard/src/pages/Clusters/CreateModal.tsx
@@ -43,7 +43,8 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
manual: true,
formatResult: result => ({
...result,
- inCharges: result.inCharges.split(','),
+ inCharges: result.inCharges?.split(','),
+ clusterTags: result.clusterTags?.split(','),
}),
onSuccess: result => {
form.setFieldsValue(result);
@@ -58,6 +59,7 @@ const Comp: React.FC<Props> = ({ type, id, ...modalProps }) => {
...values,
type,
inCharges: values.inCharges?.join(','),
+ clusterTags: values.clusterTags?.join(','),
};
if (isUpdate) {
submitData.id = id;
diff --git a/inlong-dashboard/src/pages/Clusters/config/index.tsx b/inlong-dashboard/src/pages/Clusters/config/index.tsx
index 8f7e22628..f28ea28d0 100644
--- a/inlong-dashboard/src/pages/Clusters/config/index.tsx
+++ b/inlong-dashboard/src/pages/Clusters/config/index.tsx
@@ -61,12 +61,33 @@ export const Clusters: ClusterItemType[] = [
_inTable: true,
},
{
- type: 'input',
+ type: 'select',
label: i18n.t('pages.Clusters.Tag'),
- name: 'clusterTag',
+ name: 'clusterTags',
rules: [{ required: true }],
props: {
- maxLength: 128,
+ mode: 'multiple',
+ filterOption: false,
+ options: {
+ requestTrigger: ['onOpen', 'onSearch'],
+ requestService: keyword => ({
+ url: '/cluster/tag/list',
+ method: 'POST',
+ data: {
+ keyword,
+ pageNum: 1,
+ pageSize: 20,
+ },
+ }),
+ requestParams: {
+ formatResult: result =>
+ result?.list?.map(item => ({
+ ...item,
+ label: item.clusterTag,
+ value: item.clusterTag,
+ })),
+ },
+ },
},
_inTable: true,
},
diff --git a/inlong-dashboard/src/themes/cover.less b/inlong-dashboard/src/themes/cover.less
index baf9b34a5..e6f43430d 100644
--- a/inlong-dashboard/src/themes/cover.less
+++ b/inlong-dashboard/src/themes/cover.less
@@ -45,10 +45,6 @@
}
}
-.ant-spin-nested-loading,
-.ant-spin-container {
- height: 100%;
-}
.ant-spin-nested-loading > div > .ant-spin {
max-height: initial;
}