You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/08/11 16:34:35 UTC
[camel-karavan] branch main updated: Fix #857
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push:
new 0534301b Fix #857
0534301b is described below
commit 0534301bbd7a9da21ea41df1c47a0964b573ddc8
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Fri Aug 11 12:34:28 2023 -0400
Fix #857
---
karavan-designer/package.json | 4 +-
karavan-space/package-lock.json | 167 ++++++++-------------
karavan-space/package.json | 6 +-
karavan-space/src/App.tsx | 8 +-
.../src/designer/beans/BeanProperties.tsx | 37 +++--
.../src/designer/rest/RestMethodSelector.tsx | 2 +-
.../src/designer/route/DslConnections.tsx | 4 +-
karavan-space/src/designer/route/DslElement.tsx | 8 +-
karavan-space/src/designer/route/DslProperties.tsx | 17 ++-
karavan-space/src/designer/route/DslSelector.tsx | 13 +-
karavan-space/src/designer/route/RouteDesigner.tsx | 2 +-
.../route/property/ComponentParameterField.tsx | 49 +++---
.../designer/route/property/DataFormatField.tsx | 19 ++-
.../designer/route/property/DslPropertyField.tsx | 112 +++++++-------
.../designer/route/property/ExpressionField.tsx | 26 ++--
.../route/property/InfrastructureSelector.tsx | 22 +--
.../route/property/KameletPropertyField.tsx | 10 +-
.../src/designer/route/property/ModalEditor.tsx | 6 +-
.../src/designer/templates/TemplatesDesigner.tsx | 7 +-
karavan-space/src/designer/utils/CamelUi.tsx | 1 -
.../src/designer/utils/KaravanComponents.tsx | 4 +-
karavan-space/src/index.css | 26 ++--
.../src/knowledgebase/KnowledgebasePage.tsx | 4 +-
.../knowledgebase/components/ComponentModal.tsx | 15 +-
karavan-space/src/knowledgebase/eip/EipCard.tsx | 6 +-
karavan-space/src/knowledgebase/eip/EipModal.tsx | 15 +-
.../src/knowledgebase/kamelets/KameletCard.tsx | 2 +-
.../src/knowledgebase/kamelets/KameletModal.tsx | 15 +-
karavan-space/src/space/GithubModal.tsx | 14 +-
karavan-space/src/space/SpaceBus.ts | 6 +-
karavan-space/src/space/SpacePage.tsx | 10 +-
karavan-space/src/space/UploadModal.tsx | 17 ++-
32 files changed, 321 insertions(+), 333 deletions(-)
diff --git a/karavan-designer/package.json b/karavan-designer/package.json
index 1a04f9bd..548304dd 100644
--- a/karavan-designer/package.json
+++ b/karavan-designer/package.json
@@ -26,7 +26,7 @@
]
},
"dependencies": {
- "@monaco-editor/react": "4.5.0",
+ "@monaco-editor/react": "4.5.1",
"@patternfly/patternfly": "^5.0.2",
"@patternfly/react-core": "^5.0.0",
"@patternfly/react-table": "^5.0.0",
@@ -53,7 +53,7 @@
"@typescript-eslint/eslint-plugin": "^5.59.2",
"@typescript-eslint/parser": "^5.59.2",
"eslint": "^8.39.0",
- "monaco-editor": "0.38.0",
+ "monaco-editor": "0.41.0",
"react-scripts": "5.0.1",
"typescript": "^4.9.5"
},
diff --git a/karavan-space/package-lock.json b/karavan-space/package-lock.json
index c8f2a906..e6696d93 100644
--- a/karavan-space/package-lock.json
+++ b/karavan-space/package-lock.json
@@ -10,9 +10,9 @@
"license": "Apache-2.0",
"dependencies": {
"@monaco-editor/react": "4.5.0",
- "@patternfly/patternfly": "4.224.2",
- "@patternfly/react-core": "4.276.8",
- "@patternfly/react-table": "4.113.0",
+ "@patternfly/patternfly": "^5.0.2",
+ "@patternfly/react-core": "^5.0.0",
+ "@patternfly/react-table": "^5.0.0",
"@types/js-yaml": "4.0.5",
"@types/node": "18.15.3",
"@types/uuid": "9.0.1",
@@ -3379,63 +3379,62 @@
"integrity": "sha512-AanzbulOHljrku1NGfafxdpTCfw2ENaWzH01N2vqQM+cUFbk868Cgh0xylz0JIM9BoKbfI++bdD6EYX0Q/UTEw=="
},
"node_modules/@patternfly/patternfly": {
- "version": "4.224.2",
- "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-4.224.2.tgz",
- "integrity": "sha512-HGNV26uyHSIECuhjPg/WGn0mXbAotcs6ODfhAOkfYjIgGylddgiwElxUe1rpEHV5mQJJ2rMn4OdeJIIpzRX61g=="
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.0.2.tgz",
+ "integrity": "sha512-PB8+MLdYVgF1hIOxGmnVsZG+YHUX3RePe5W1oMS4gS00EmSgw1cobr1Qbpy/BqqS8/R9DRN4hZ2FKDT0d5tkFQ=="
},
"node_modules/@patternfly/react-core": {
- "version": "4.276.8",
- "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.8.tgz",
- "integrity": "sha512-dn322rEzBeiVztZEuCZMUUittNb8l1hk30h9ZN31FLZLLVtXGlThFNV9ieqOJYA9zrYxYZrHMkTnOxSWVacMZg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.0.0.tgz",
+ "integrity": "sha512-kewRVFhLw0Dvt8250pqrO47sVRx8E93sMGZbHQomJnZdachYeQ9STnQTP2gvOBq/GPnMei0LZLv0T99g8mPE4w==",
"dependencies": {
- "@patternfly/react-icons": "^4.93.6",
- "@patternfly/react-styles": "^4.92.6",
- "@patternfly/react-tokens": "^4.94.6",
- "focus-trap": "6.9.2",
- "react-dropzone": "9.0.0",
- "tippy.js": "5.1.2",
- "tslib": "^2.0.0"
+ "@patternfly/react-icons": "^5.0.0",
+ "@patternfly/react-styles": "^5.0.0",
+ "@patternfly/react-tokens": "^5.0.0",
+ "focus-trap": "7.4.3",
+ "react-dropzone": "^14.2.3",
+ "tslib": "^2.5.0"
},
"peerDependencies": {
- "react": "^16.8 || ^17 || ^18",
- "react-dom": "^16.8 || ^17 || ^18"
+ "react": "^17 || ^18",
+ "react-dom": "^17 || ^18"
}
},
"node_modules/@patternfly/react-icons": {
- "version": "4.93.6",
- "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-4.93.6.tgz",
- "integrity": "sha512-ZrXegc/81oiuTIeWvoHb3nG/eZODbB4rYmekBEsrbiysyO7m/sUFoi/RLvgFINrRoh6YCJqL5fj06Jg6d7jX1g==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.0.0.tgz",
+ "integrity": "sha512-GG5Y/UYl0h346MyDU9U650Csaq4Mxk8S6U8XC7ERk/xIrRr2RF67O2uY7zKBDMTNLYdBvPzgc2s3OMV1+d2/mg==",
"peerDependencies": {
- "react": "^16.8 || ^17 || ^18",
- "react-dom": "^16.8 || ^17 || ^18"
+ "react": "^17 || ^18",
+ "react-dom": "^17 || ^18"
}
},
"node_modules/@patternfly/react-styles": {
- "version": "4.92.6",
- "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-4.92.6.tgz",
- "integrity": "sha512-b8uQdEReMyeoMzjpMri845QxqtupY/tIFFYfVeKoB2neno8gkcW1RvDdDe62LF88q45OktCwAe/8A99ker10Iw=="
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.0.0.tgz",
+ "integrity": "sha512-xbSCgjx+fPrXbIzUznwTFWtJEbzVS0Wn4zrejdKJYQTY+4YcuPlFkeq2tl3syzwGsaYMpHiFwQiTaKyTvlwtuw=="
},
"node_modules/@patternfly/react-table": {
- "version": "4.113.0",
- "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.113.0.tgz",
- "integrity": "sha512-qxa3NWCdYasqQQL1rqEd8DyNa8oWr6HNveNW5YJRakE7imWZhUPG2Nd6Op60+KYX8kbCSl7gwSmgAZAYMBMZkQ==",
- "dependencies": {
- "@patternfly/react-core": "^4.276.8",
- "@patternfly/react-icons": "^4.93.6",
- "@patternfly/react-styles": "^4.92.6",
- "@patternfly/react-tokens": "^4.94.6",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.0.0.tgz",
+ "integrity": "sha512-Q3MBo9+ZmBvLJzVHxmV9f/4qQAz5Si743zVLHRwjh+tjbn/DrcbxJdT8Uxa3NGKkpvszzgi/LPeXipJOHOELug==",
+ "dependencies": {
+ "@patternfly/react-core": "^5.0.0",
+ "@patternfly/react-icons": "^5.0.0",
+ "@patternfly/react-styles": "^5.0.0",
+ "@patternfly/react-tokens": "^5.0.0",
"lodash": "^4.17.19",
- "tslib": "^2.0.0"
+ "tslib": "^2.5.0"
},
"peerDependencies": {
- "react": "^16.8 || ^17 || ^18",
- "react-dom": "^16.8 || ^17 || ^18"
+ "react": "^17 || ^18",
+ "react-dom": "^17 || ^18"
}
},
"node_modules/@patternfly/react-tokens": {
- "version": "4.94.6",
- "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-4.94.6.tgz",
- "integrity": "sha512-tm7C6nat+uKMr1hrapis7hS3rN9cr41tpcCKhx6cod6FLU8KwF2Yt5KUxakhIOCEcE/M/EhXhAw/qejp8w0r7Q=="
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.0.0.tgz",
+ "integrity": "sha512-to2CXIZ6WTuzBcjLZ+nXi5LhnYkSIDu3RBMRZwrplmECOoUWv87CC+2T0EVxtASRtpQfikjD2PDKMsif5i0BxQ=="
},
"node_modules/@pmmmwh/react-refresh-webpack-plugin": {
"version": "0.5.10",
@@ -5025,12 +5024,9 @@
}
},
"node_modules/attr-accept": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.3.tgz",
- "integrity": "sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ==",
- "dependencies": {
- "core-js": "^2.5.0"
- },
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
+ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==",
"engines": {
"node": ">=4"
}
@@ -8073,14 +8069,14 @@
}
},
"node_modules/file-selector": {
- "version": "0.1.19",
- "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz",
- "integrity": "sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
+ "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
"dependencies": {
- "tslib": "^2.0.1"
+ "tslib": "^2.4.0"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/filelist": {
@@ -8208,11 +8204,11 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
},
"node_modules/focus-trap": {
- "version": "6.9.2",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-6.9.2.tgz",
- "integrity": "sha512-gBEuXOPNOKPrLdZpMFUSTyIo1eT2NSZRrwZ9r/0Jqw5tmT3Yvxfmu8KBHw8xW2XQkw6E/JoG+OlEq7UDtSUNgw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.4.3.tgz",
+ "integrity": "sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==",
"dependencies": {
- "tabbable": "^5.3.2"
+ "tabbable": "^6.1.2"
}
},
"node_modules/follow-redirects": {
@@ -13086,16 +13082,6 @@
"node": ">=4"
}
},
- "node_modules/popper.js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
- "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
- "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
"node_modules/postcss": {
"version": "8.4.23",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
@@ -14423,18 +14409,6 @@
"react-is": "^16.13.1"
}
},
- "node_modules/prop-types-extra": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
- "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
- "dependencies": {
- "react-is": "^16.3.2",
- "warning": "^4.0.0"
- },
- "peerDependencies": {
- "react": ">=0.14.0"
- }
- },
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -14725,20 +14699,19 @@
}
},
"node_modules/react-dropzone": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-9.0.0.tgz",
- "integrity": "sha512-wZ2o9B2qkdE3RumWhfyZT9swgJYJPeU5qHEcMU8weYpmLex1eeWX0CC32/Y0VutB+BBi2D+iePV/YZIiB4kZGw==",
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
+ "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
"dependencies": {
- "attr-accept": "^1.1.3",
- "file-selector": "^0.1.8",
- "prop-types": "^15.6.2",
- "prop-types-extra": "^1.1.0"
+ "attr-accept": "^2.2.2",
+ "file-selector": "^0.6.0",
+ "prop-types": "^15.8.1"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 10.13"
},
"peerDependencies": {
- "react": ">=0.14.0"
+ "react": ">= 16.8 || 18.0.0"
}
},
"node_modules/react-error-overlay": {
@@ -16161,9 +16134,9 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
"node_modules/tabbable": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz",
- "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
},
"node_modules/tailwindcss": {
"version": "3.3.2",
@@ -16363,14 +16336,6 @@
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
},
- "node_modules/tippy.js": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-5.1.2.tgz",
- "integrity": "sha512-Qtrv2wqbRbaKMUb6bWWBQWPayvcDKNrGlvihxtsyowhT7RLGEh1STWuy6EMXC6QLkfKPB2MLnf8W2mzql9VDAw==",
- "dependencies": {
- "popper.js": "^1.16.0"
- }
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -16790,14 +16755,6 @@
"makeerror": "1.0.12"
}
},
- "node_modules/warning": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
- "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
"node_modules/watchpack": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
diff --git a/karavan-space/package.json b/karavan-space/package.json
index bd111fa6..0a7e0fe7 100644
--- a/karavan-space/package.json
+++ b/karavan-space/package.json
@@ -32,9 +32,9 @@
},
"dependencies": {
"@monaco-editor/react": "4.5.0",
- "@patternfly/patternfly": "4.224.2",
- "@patternfly/react-core": "4.276.8",
- "@patternfly/react-table": "4.113.0",
+ "@patternfly/patternfly": "^5.0.2",
+ "@patternfly/react-core": "^5.0.0",
+ "@patternfly/react-table": "^5.0.0",
"@types/js-yaml": "4.0.5",
"@types/node": "18.15.3",
"@types/uuid": "9.0.1",
diff --git a/karavan-space/src/App.tsx b/karavan-space/src/App.tsx
index 0c594cb8..f647aa14 100644
--- a/karavan-space/src/App.tsx
+++ b/karavan-space/src/App.tsx
@@ -38,9 +38,9 @@ class ToastMessage {
id: string = ''
text: string = ''
title: string = ''
- variant?: 'success' | 'danger' | 'warning' | 'info' | 'default';
+ variant?: 'success' | 'danger' | 'warning' | 'info' | 'custom';
- constructor(title: string, text: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'default') {
+ constructor(title: string, text: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'custom') {
this.id = Date.now().toString().concat(Math.random().toString());
this.title = title;
this.text = text;
@@ -85,7 +85,7 @@ class App extends React.Component<Props, State> {
githubModalIsOpen: false
}
- toast = (title: string, text: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'default') => {
+ toast = (title: string, text: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'custom') => {
const mess = [];
mess.push(...this.state.alerts, new ToastMessage(title, text, variant));
this.setState({alerts: mess})
@@ -144,7 +144,7 @@ class App extends React.Component<Props, State> {
getSpinner() {
return (
<Bullseye className="loading-page">
- <Spinner className="progress-stepper" isSVG diameter="80px" aria-label="Loading..."/>
+ <Spinner className="progress-stepper" diameter="80px" aria-label="Loading..."/>
</Bullseye>
)
}
diff --git a/karavan-space/src/designer/beans/BeanProperties.tsx b/karavan-space/src/designer/beans/BeanProperties.tsx
index 45f773fc..4470c01a 100644
--- a/karavan-space/src/designer/beans/BeanProperties.tsx
+++ b/karavan-space/src/designer/beans/BeanProperties.tsx
@@ -18,7 +18,7 @@ import React from 'react';
import {
Form,
FormGroup,
- TextInput, Button, Title, Tooltip, Popover, InputGroup,
+ TextInput, Button, Title, Tooltip, Popover, InputGroup, InputGroupItem,
} from '@patternfly/react-core';
import '../karavan.css';
import "@patternfly/patternfly/patternfly.css";
@@ -167,8 +167,8 @@ export class BeanProperties extends React.Component<Props, State> {
<button type="button" aria-label="More info" onClick={e => {
e.preventDefault();
e.stopPropagation();
- }} className="pf-c-form__group-label-help">
- <HelpIcon noVerticalAlign/>
+ }} className="pf-v5-c-form__group-label-help">
+ <HelpIcon />
</button>
</Popover>
)
@@ -188,10 +188,11 @@ export class BeanProperties extends React.Component<Props, State> {
</div>
<FormGroup label="Name" fieldId="name" isRequired labelIcon={this.getLabelIcon("Name", "Bean name used as a reference ex: myBean")}>
<TextInput className="text-field" isRequired type="text" id="name" name="name" value={bean?.name}
- onChange={e => this.beanChanged("name", e)}/>
+ onChange={(_, value)=> this.beanChanged("name", value)}/>
</FormGroup>
<FormGroup label="Type" fieldId="type" isRequired labelIcon={this.getLabelIcon("Type", "Bean class Canonical Name ex: org.demo.MyBean")}>
- <TextInput className="text-field" isRequired type="text" id="type" name="type" value={bean?.type} onChange={e => this.beanChanged("type", e)}/>
+ <TextInput className="text-field" isRequired type="text" id="type" name="type" value={bean?.type}
+ onChange={(_, value) => this.beanChanged("type", value)}/>
</FormGroup>
<FormGroup label="Properties" fieldId="properties" className="bean-properties">
{Array.from(this.state.properties.entries()).map((v, index, array) => {
@@ -205,7 +206,9 @@ export class BeanProperties extends React.Component<Props, State> {
return (
<div key={"key-" + i} className="bean-property">
<TextInput placeholder="Bean Field Name" className="text-field" isRequired type="text" id="key" name="key" value={key}
- onChange={e => this.propertyChanged(i, e, value, showPassword)}/>
+ onChange={(_, beanFieldName) => {
+ this.propertyChanged(i, beanFieldName, value, showPassword)
+ }}/>
<InputGroup>
{inInfrastructure &&
<Tooltip position="bottom-end" content="Select value from Infrastructure">
@@ -213,15 +216,19 @@ export class BeanProperties extends React.Component<Props, State> {
{icon}
</Button>
</Tooltip>}
- <TextInput
- placeholder="Bean Field Value"
- type={isSecret && !showPassword ? "password" : "text"}
- className="text-field"
- isRequired
- id="value"
- name="value"
- value={value}
- onChange={e => this.propertyChanged(i, key, e, showPassword)}/>
+ <InputGroupItem isFill>
+ <TextInput
+ placeholder="Bean Field Value"
+ type={isSecret && !showPassword ? "password" : "text"}
+ className="text-field"
+ isRequired
+ id="value"
+ name="value"
+ value={value}
+ onChange={(_, value) => {
+ this.propertyChanged(i, key, value, showPassword)
+ }}/>
+ </InputGroupItem>
{isSecret && <Tooltip position="bottom-end" content={showPassword ? "Hide" : "Show"}>
<Button variant="control" onClick={e => this.propertyChanged(i, key, value, !showPassword)}>
{showPassword ? <ShowIcon/> : <HideIcon/>}
diff --git a/karavan-space/src/designer/rest/RestMethodSelector.tsx b/karavan-space/src/designer/rest/RestMethodSelector.tsx
index 316145ce..d3c4ec66 100644
--- a/karavan-space/src/designer/rest/RestMethodSelector.tsx
+++ b/karavan-space/src/designer/rest/RestMethodSelector.tsx
@@ -50,7 +50,7 @@ export class RestMethodSelector extends React.Component<Props, State> {
getCard(dsl: DslMetaModel, index: number) {
return (
- <Card key={dsl.dsl + index} isHoverable isCompact className="dsl-card"
+ <Card key={dsl.dsl + index} isCompact className="dsl-card"
onClick={event => this.selectMethod(event, dsl)}>
<CardHeader>
{CamelUi.getIconForDsl(dsl)}
diff --git a/karavan-space/src/designer/route/DslConnections.tsx b/karavan-space/src/designer/route/DslConnections.tsx
index 5280bc12..938042d4 100644
--- a/karavan-space/src/designer/route/DslConnections.tsx
+++ b/karavan-space/src/designer/route/DslConnections.tsx
@@ -126,7 +126,7 @@ export class DslConnections extends React.Component<Props, State> {
const imageX = incomingX - r + 5;
const imageY = fromY - r + 5;
return (
- <div style={{display: "block", position: "absolute", top: imageY, left: imageX}}>
+ <div key={pos.step.uuid + "-icon"} style={{display: "block", position: "absolute", top: imageY, left: imageX}}>
{CamelUi.getConnectionIcon(pos.step)}
</div>
)
@@ -212,7 +212,7 @@ export class DslConnections extends React.Component<Props, State> {
const imageX = outgoingX - r + 5;
const imageY = outgoingY - r + 5;
return (
- <div style={{display: "block", position: "absolute", top: imageY, left: imageX}}>
+ <div key={pos.step.uuid + "-icon"} style={{display: "block", position: "absolute", top: imageY, left: imageX}}>
{CamelUi.getConnectionIcon(pos.step)}
</div>
)
diff --git a/karavan-space/src/designer/route/DslElement.tsx b/karavan-space/src/designer/route/DslElement.tsx
index f9cd9498..2ea1aaa2 100644
--- a/karavan-space/src/designer/route/DslElement.tsx
+++ b/karavan-space/src/designer/route/DslElement.tsx
@@ -379,7 +379,7 @@ export class DslElement extends React.Component<Props, State> {
content={<div>{"Add step to " + CamelUi.getTitle(step)}</div>}>
<button type="button" aria-label="Add" onClick={e => this.openSelector(e)}
className={this.isAddStepButtonLeft() ? "add-button add-button-left" : "add-button add-button-bottom"}>
- <AddIcon noVerticalAlign/>
+ <AddIcon />
</button>
</Tooltip>
)
@@ -393,7 +393,7 @@ export class DslElement extends React.Component<Props, State> {
aria-label="Add"
onClick={e => this.openSelector(e, false)}
className={"add-element-button"}>
- <AddIcon noVerticalAlign/>
+ <AddIcon />
</button>
</Tooltip>
)
@@ -402,7 +402,7 @@ export class DslElement extends React.Component<Props, State> {
getInsertElementButton() {
return (
<Tooltip position={"left"} content={<div>{"Insert element before"}</div>}>
- <button type="button" aria-label="Insert" onClick={e => this.openSelector(e, true, true)} className={"insert-element-button"}><InsertIcon noVerticalAlign/>
+ <button type="button" aria-label="Insert" onClick={e => this.openSelector(e, true, true)} className={"insert-element-button"}><InsertIcon />
</button>
</Tooltip>
)
@@ -411,7 +411,7 @@ export class DslElement extends React.Component<Props, State> {
getDeleteButton() {
return (
<Tooltip position={"right"} content={<div>{"Delete element"}</div>}>
- <button type="button" aria-label="Delete" onClick={e => this.delete(e)} className="delete-button"><DeleteIcon noVerticalAlign/></button>
+ <button type="button" aria-label="Delete" onClick={e => this.delete(e)} className="delete-button"><DeleteIcon /></button>
</Tooltip>
)
}
diff --git a/karavan-space/src/designer/route/DslProperties.tsx b/karavan-space/src/designer/route/DslProperties.tsx
index 435480de..87f93c79 100644
--- a/karavan-space/src/designer/route/DslProperties.tsx
+++ b/karavan-space/src/designer/route/DslProperties.tsx
@@ -33,7 +33,7 @@ import {Integration, CamelElement} from "karavan-core/lib/model/IntegrationDefin
import {CamelDefinitionApiExt} from "karavan-core/lib/api/CamelDefinitionApiExt";
import {CamelUtil} from "karavan-core/lib/api/CamelUtil";
import {CamelUi, RouteToCreate} from "../utils/CamelUi";
-import {CamelMetadataApi, PropertyMeta} from "karavan-core/lib/model/CamelMetadata";
+import {CamelMetadataApi, DataFormats, PropertyMeta} from "karavan-core/lib/model/CamelMetadata";
import {IntegrationHeader} from "../utils/KaravanComponents";
import CloneIcon from "@patternfly/react-icons/dist/esm/icons/clone-icon";
@@ -128,7 +128,7 @@ export class DslProperties extends React.Component<Props, State> {
</div>
<Text component={TextVariants.p}>{descriptionLines.at(0)}</Text>
{descriptionLines.length > 1 && <ExpandableSection toggleText={isDescriptionExpanded ? 'Show less' : 'Show more'}
- onToggle={isExpanded => this.setState({isDescriptionExpanded: !isDescriptionExpanded})}
+ onToggle={(_event, isExpanded) => this.setState({isDescriptionExpanded: !isDescriptionExpanded})}
isExpanded={isDescriptionExpanded}>
{descriptionLines.filter((value, index) => index > 0)
.map((desc, index, array) => <Text key={index} component={TextVariants.p}>{desc}</Text>)}
@@ -170,7 +170,7 @@ export class DslProperties extends React.Component<Props, State> {
getPropertyFields = (properties: PropertyMeta[]) => {
return (<>
- {this.state.step && !['MarshalDefinition', 'UnmarshalDefinition'].includes(this.state.step.dslName) && properties.map((property: PropertyMeta) =>
+ {properties.map((property: PropertyMeta) =>
<DslPropertyField key={property.name}
integration={this.props.integration}
property={property}
@@ -186,7 +186,11 @@ export class DslProperties extends React.Component<Props, State> {
}
render() {
- const properties = this.getProperties();
+ const dataFormats = DataFormats.map(value => value[0]);
+ const dataFormatElement = this.state.step !== undefined && ['MarshalDefinition', 'UnmarshalDefinition'].includes(this.state.step.dslName);
+ const properties = !dataFormatElement
+ ? this.getProperties()
+ : this.getProperties().filter(p => !dataFormats.includes(p.name));
const propertiesMain = properties.filter(p => !p.label.includes("advanced"));
const propertiesAdvanced = properties.filter(p => p.label.includes("advanced"));
return (
@@ -196,10 +200,11 @@ export class DslProperties extends React.Component<Props, State> {
{this.state.step === undefined && <IntegrationHeader integration={this.props.integration}/>}
{this.state.step && this.getComponentHeader()}
{this.getPropertyFields(propertiesMain)}
- {propertiesAdvanced.length > 0 &&
+ {this.state.step && !['MarshalDefinition', 'UnmarshalDefinition'].includes(this.state.step.dslName)
+ && propertiesAdvanced.length > 0 &&
<ExpandableSection
toggleText={'Advanced properties'}
- onToggle={isExpanded => this.setState({isShowAdvanced: !this.state.isShowAdvanced})}
+ onToggle={(_event, isExpanded) => this.setState({isShowAdvanced: !this.state.isShowAdvanced})}
isExpanded={this.state.isShowAdvanced}>
<div className="parameters">
{this.getPropertyFields(propertiesAdvanced)}
diff --git a/karavan-space/src/designer/route/DslSelector.tsx b/karavan-space/src/designer/route/DslSelector.tsx
index 3baca8d8..47eb3b39 100644
--- a/karavan-space/src/designer/route/DslSelector.tsx
+++ b/karavan-space/src/designer/route/DslSelector.tsx
@@ -17,7 +17,7 @@
import React from 'react';
import {
Badge,
- Card, CardBody, CardFooter, CardHeader, Flex, FlexItem, Form, FormGroup, Gallery, Label, Modal, PageSection,
+ Card, CardBody, CardFooter, CardHeader, Flex, FlexItem, Form, FormGroup, Gallery, Modal, PageSection,
Tab, Tabs, TabTitleText,
Text, TextInput, ToggleGroup, ToggleGroupItem,
} from '@patternfly/react-core';
@@ -71,9 +71,9 @@ export class DslSelector extends React.Component<Props, State> {
return (
<Form isHorizontal className="search" autoComplete="off">
<FormGroup fieldId="search">
- <TextInput className="text-field" type="text" id="search" name="search" iconVariant='search'
- value={this.state.filter}
- onChange={e => this.setState({filter: e})}/>
+ <TextInput className="text-field" type="text" id="search" name="search"
+ value={this.state.filter}
+ onChange={(_, value) => this.setState({filter: value})}/>
</FormGroup>
</Form>
)
@@ -99,7 +99,7 @@ export class DslSelector extends React.Component<Props, State> {
</CardBody>
<CardFooter className="footer-labels">
<div style={{display: "flex", flexDirection: "row", justifyContent: "start"}}>
- {labels.map(label => <Badge isRead className="labels">{label}</Badge>)}
+ {labels.map(label => <Badge key={label} isRead className="labels">{label}</Badge>)}
</div>
</CardFooter>
@@ -176,9 +176,10 @@ export class DslSelector extends React.Component<Props, State> {
</Flex>
}
actions={{}}>
- <PageSection variant={this.props.dark ? "darker" : "light"}>
+ <PageSection padding={{default:"noPadding"}} variant={this.props.dark ? "darker" : "light"}>
{isEip && <ToggleGroup aria-label="Labels" isCompact>
{eipLabels.map(eipLabel => <ToggleGroupItem
+ key={eipLabel}
text={eipLabel}
buttonId={eipLabel}
isSelected={this.state.selectedLabels.includes(eipLabel)}
diff --git a/karavan-space/src/designer/route/RouteDesigner.tsx b/karavan-space/src/designer/route/RouteDesigner.tsx
index db2662e0..f7607b90 100644
--- a/karavan-space/src/designer/route/RouteDesigner.tsx
+++ b/karavan-space/src/designer/route/RouteDesigner.tsx
@@ -146,7 +146,7 @@ export class RouteDesigner extends React.Component<Props, RouteDesignerState> {
getPropertiesPanel() {
return (
- <DrawerPanelContent onResize={width => this.setState({key: Math.random().toString()})}
+ <DrawerPanelContent onResize={(_event, width) => this.setState({key: Math.random().toString()})}
style={{transform: "initial"}} isResizable hasNoBorder defaultSize={'400px'}
maxSize={'800px'} minSize={'300px'}>
<DslProperties ref={this.state.ref}
diff --git a/karavan-space/src/designer/route/property/ComponentParameterField.tsx b/karavan-space/src/designer/route/property/ComponentParameterField.tsx
index 2a7996df..69175d98 100644
--- a/karavan-space/src/designer/route/property/ComponentParameterField.tsx
+++ b/karavan-space/src/designer/route/property/ComponentParameterField.tsx
@@ -16,15 +16,22 @@
*/
import React from 'react';
import {
- FormGroup,
- TextInput,
- Popover,
- Switch,
- Select,
- SelectVariant,
- SelectDirection,
- SelectOption, InputGroup, TextArea, Tooltip, Button, capitalize,
+ FormGroup,
+ TextInput,
+ Popover,
+ Switch,
+ InputGroup,
+ TextArea,
+ Tooltip,
+ Button,
+ capitalize, InputGroupItem
} from '@patternfly/react-core';
+import {
+ Select,
+ SelectVariant,
+ SelectDirection,
+ SelectOption
+} from '@patternfly/react-core/deprecated';
import '../../karavan.css';
import "@patternfly/patternfly/patternfly.css";
import HelpIcon from "@patternfly/react-icons/dist/js/icons/help-icon";
@@ -99,7 +106,7 @@ export class ComponentParameterField extends React.Component<Props, State> {
id={this.state.id} name={this.state.id}
variant={SelectVariant.single}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => this.parametersChanged(property.name, (!isPlaceholder ? value : undefined))}
@@ -147,12 +154,12 @@ export class ComponentParameterField extends React.Component<Props, State> {
<SelectOption key={value} value={value ? value.trim() : value}/>));
}
return <InputGroup id={this.state.id} name={this.state.id}>
- <Select
+ <InputGroupItem><Select
id={this.state.id} name={this.state.id}
placeholderText="Select or type an URI"
variant={SelectVariant.typeahead}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => {
@@ -167,8 +174,8 @@ export class ComponentParameterField extends React.Component<Props, State> {
direction={SelectDirection.down}
>
{selectOptions}
- </Select>
- <Tooltip position="bottom-end" content={"Create route"}>
+ </Select></InputGroupItem>
+ <InputGroupItem><Tooltip position="bottom-end" content={"Create route"}>
<Button isDisabled={value === undefined} variant="control" onClick={e => {
if (value) {
const newRoute = !internalUris.includes(value.toString()) ? new RouteToCreate(componentName, value.toString()) : undefined;
@@ -177,7 +184,7 @@ export class ComponentParameterField extends React.Component<Props, State> {
}}>
{<PlusIcon/>}
</Button>
- </Tooltip>
+ </Tooltip></InputGroupItem>
</InputGroup>
}
@@ -233,14 +240,14 @@ export class ComponentParameterField extends React.Component<Props, State> {
type={property.secret && !showPassword ? "password" : "text"}
id={this.state.id} name={this.state.id}
value={value !== undefined ? value : property.defaultValue}
- onChange={e => this.parametersChanged(property.name, e, property.kind === 'path')}/>}
+ onChange={(e, value) => this.parametersChanged(property.name, value, property.kind === 'path')}/>}
{showEditor && !property.secret &&
<TextArea autoResize={true} ref={this.state.ref}
className="text-field" isRequired
type="text"
id={this.state.id} name={this.state.id}
value={value !== undefined ? value : property.defaultValue}
- onChange={e => this.parametersChanged(property.name, e, property.kind === 'path')}/>}
+ onChange={(e, value) => this.parametersChanged(property.name, value, property.kind === 'path')}/>}
{!property.secret &&
<Tooltip position="bottom-end" content={showEditor ? "Change to TextField" : "Change to Text Area"}>
<Button variant="control" onClick={e => this.setState({showEditor: !showEditor})}>
@@ -265,7 +272,9 @@ export class ComponentParameterField extends React.Component<Props, State> {
type={['integer', 'int', 'number'].includes(property.type) ? 'number' : (property.secret ? "password" : "text")}
id={this.state.id} name={this.state.id}
value={value !== undefined ? value : property.defaultValue}
- onChange={e => this.parametersChanged(property.name, ['integer', 'int', 'number'].includes(property.type) ? Number(e) : e, property.kind === 'path')}/>
+ onChange={(e, value) => {
+ this.parametersChanged(property.name, ['integer', 'int', 'number'].includes(property.type) ? Number(value) : value, property.kind === 'path')
+ }}/>
)
}
@@ -280,7 +289,7 @@ export class ComponentParameterField extends React.Component<Props, State> {
id={this.state.id} name={this.state.id}
variant={SelectVariant.single}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => this.parametersChanged(property.name, (!isPlaceholder ? value : undefined), property.kind === 'path')}
@@ -326,8 +335,8 @@ export class ComponentParameterField extends React.Component<Props, State> {
</div>
}>
<button type="button" aria-label="More info" onClick={e => e.preventDefault()}
- className="pf-c-form__group-label-help">
- <HelpIcon noVerticalAlign/>
+ className="pf-v5-c-form__group-label-help">
+ <HelpIcon />
</button>
</Popover>
}>
diff --git a/karavan-space/src/designer/route/property/DataFormatField.tsx b/karavan-space/src/designer/route/property/DataFormatField.tsx
index aad00220..ef447b6f 100644
--- a/karavan-space/src/designer/route/property/DataFormatField.tsx
+++ b/karavan-space/src/designer/route/property/DataFormatField.tsx
@@ -16,11 +16,14 @@
*/
import React from 'react';
import {
- Select,
- SelectVariant,
- SelectDirection,
- SelectOption, ExpandableSection,
+ ExpandableSection
} from '@patternfly/react-core';
+import {
+ Select,
+ SelectVariant,
+ SelectDirection,
+ SelectOption
+} from '@patternfly/react-core/deprecated';
import '../../karavan.css';
import "@patternfly/patternfly/patternfly.css";
import {CamelMetadataApi, PropertyMeta} from "karavan-core/lib/model/CamelMetadata";
@@ -135,9 +138,9 @@ export class DataFormatField extends React.Component<Props, State> {
return (
<div>
<div>
- <label className="pf-c-form__label" htmlFor="expression">
- <span className="pf-c-form__label-text">{"Data Format"}</span>
- <span className="pf-c-form__label-required" aria-hidden="true"> *</span>
+ <label className="pf-v5-c-form__label" htmlFor="expression">
+ <span className="pf-v5-c-form__label-text">{"Data Format"}</span>
+ <span className="pf-v5-c-form__label-required" aria-hidden="true"> *</span>
</label>
<Select
variant={SelectVariant.typeahead}
@@ -160,7 +163,7 @@ export class DataFormatField extends React.Component<Props, State> {
{propertiesAdvanced.length > 0 &&
<ExpandableSection
toggleText={'Advanced properties'}
- onToggle={isExpanded => this.setState({isShowAdvanced: !this.state.isShowAdvanced})}
+ onToggle={(_event, isExpanded) => this.setState({isShowAdvanced: !this.state.isShowAdvanced})}
isExpanded={this.state.isShowAdvanced}>
{this.getPropertyFields(value, propertiesAdvanced)}
</ExpandableSection>}
diff --git a/karavan-space/src/designer/route/property/DslPropertyField.tsx b/karavan-space/src/designer/route/property/DslPropertyField.tsx
index 63ff380f..3021baf2 100644
--- a/karavan-space/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-space/src/designer/route/property/DslPropertyField.tsx
@@ -16,27 +16,30 @@
*/
import React from 'react';
import {
- FormGroup,
- TextInput,
- Popover,
- Switch,
- Select,
- SelectVariant,
- SelectDirection,
- SelectOption,
- ExpandableSection,
- TextArea,
- Chip,
- TextInputGroup,
- TextInputGroupMain,
- TextInputGroupUtilities,
- ChipGroup,
- Button,
- Text,
- Tooltip,
- Card,
- InputGroup, capitalize,
+ FormGroup,
+ TextInput,
+ Popover,
+ Switch,
+ ExpandableSection,
+ TextArea,
+ Chip,
+ TextInputGroup,
+ TextInputGroupMain,
+ TextInputGroupUtilities,
+ ChipGroup,
+ Button,
+ Text,
+ Tooltip,
+ Card,
+ InputGroup,
+ capitalize, InputGroupItem
} from '@patternfly/react-core';
+import {
+ Select,
+ SelectVariant,
+ SelectDirection,
+ SelectOption
+} from '@patternfly/react-core/deprecated';
import '../../karavan.css';
import "@patternfly/patternfly/patternfly.css";
import HelpIcon from "@patternfly/react-icons/dist/js/icons/help-icon";
@@ -155,7 +158,7 @@ export class DslPropertyField extends React.Component<Props, State> {
const tooltip = value ? "Delete " + property.name : "Add " + property.name;
const className = value ? "change-button delete-button" : "change-button add-button";
const x = value ? undefined : CamelDefinitionApi.createStep(property.type, {});
- const icon = value ? (<DeleteIcon noVerticalAlign/>) : (<AddIcon noVerticalAlign/>);
+ const icon = value ? (<DeleteIcon />) : (<AddIcon />);
return (
<div style={{display: "flex"}}>
<Text>{property.displayName} </Text>
@@ -173,7 +176,7 @@ export class DslPropertyField extends React.Component<Props, State> {
isUriReadOnly = (property: PropertyMeta): boolean => {
const dslName: string = this.props.element?.dslName || '';
- return property.name === 'uri' && !['ToDefinition', 'ToDynamicDefinition', 'WireTapDefinition'].includes(dslName)
+ return property.name === 'uri' && !['ToDynamicDefinition', 'WireTapDefinition'].includes(dslName)
}
selectInfrastructure = (value: string) => {
@@ -225,20 +228,22 @@ export class DslPropertyField extends React.Component<Props, State> {
</Tooltip>}
{(!showEditor || property.secret) && <TextInput
ref={this.state.ref}
- className="text-field" isRequired isReadOnly={this.isUriReadOnly(property)}
+ className="text-field" isRequired
type={['integer', 'number'].includes(property.type) ? 'number' : (property.secret ? "password" : "text")}
id={property.name} name={property.name}
value={value?.toString()}
- onChange={e => this.propertyChanged(property.name, ['integer', 'number'].includes(property.type) ? Number(e) : e)}/>
+ onChange={(_, v) => this.propertyChanged(property.name, ['integer', 'number'].includes(property.type) ? Number(v) : v)}
+ readOnlyVariant={this.isUriReadOnly(property) ? "default" : undefined}/>
}
{showEditor && !property.secret && <TextArea
ref={this.state.ref}
autoResize={true}
- className="text-field" isRequired isReadOnly={this.isUriReadOnly(property)}
+ className="text-field" isRequired
type="text"
id={property.name} name={property.name}
value={value?.toString()}
- onChange={e => this.propertyChanged(property.name, ['integer', 'number'].includes(property.type) ? Number(e) : e)}/>
+ onChange={(_, v) => this.propertyChanged(property.name, ['integer', 'number'].includes(property.type) ? Number(v) : v)}
+ readOnlyVariant={this.isUriReadOnly(property) ? "default" : undefined}/>
}
{!property.secret &&
<Tooltip position="bottom-end" content={showEditor ? "Change to TextField" : "Change to Text Area"}>
@@ -266,19 +271,24 @@ export class DslPropertyField extends React.Component<Props, State> {
const {dslLanguage, dark} = this.props;
const {showEditor, customCode} = this.state;
return (<InputGroup>
- <TextInput
- ref={this.state.ref}
- className="text-field" isRequired isReadOnly={this.isUriReadOnly(property)}
- type="text"
- id={property.name} name={property.name}
- value={value?.toString()}
- onChange={e => this.propertyChanged(property.name, CamelUtil.capitalizeName(e?.replace(/\s/g, '')))}/>
- <Tooltip position="bottom-end" content={"Create Java Class"}>
+ <InputGroupItem isFill >
+ <TextInput
+ ref={this.state.ref}
+ className="text-field" isRequired
+ type="text"
+ id={property.name} name={property.name}
+ value={value?.toString()}
+ onChange={(_, value) => {
+ this.propertyChanged(property.name, CamelUtil.capitalizeName(value?.replace(/\s/g, '')))
+ }}
+ readOnlyVariant={this.isUriReadOnly(property) ? "default" : undefined}/>
+ </InputGroupItem>
+ <InputGroupItem><Tooltip position="bottom-end" content={"Create Java Class"}>
<Button isDisabled={value?.length === 0} variant="control" onClick={e => this.showCode(value, property.javaType)}>
<PlusIcon/>
</Button>
- </Tooltip>
- <ModalEditor property={property}
+ </Tooltip></InputGroupItem>
+ <InputGroupItem><ModalEditor property={property}
customCode={customCode}
showEditor={showEditor}
dark={dark}
@@ -289,7 +299,7 @@ export class DslPropertyField extends React.Component<Props, State> {
this.propertyChanged(fieldId, value);
KaravanInstance.getProps().onSaveCustomCode?.call(this, value, value1);
this.setState({showEditor: false});
- }}/>
+ }}/></InputGroupItem>
</InputGroup>)
}
@@ -298,7 +308,7 @@ export class DslPropertyField extends React.Component<Props, State> {
const {showEditor} = this.state;
return (
<InputGroup>
- <TextArea
+ <InputGroupItem isFill ><TextArea
autoResize
className="text-field" isRequired
type={"text"}
@@ -306,13 +316,13 @@ export class DslPropertyField extends React.Component<Props, State> {
name={property.name}
height={"100px"}
value={value?.toString()}
- onChange={e => this.propertyChanged(property.name, e)}/>
- <Tooltip position="bottom-end" content={"Show Editor"}>
+ onChange={(_, v) => this.propertyChanged(property.name, v)}/></InputGroupItem>
+ <InputGroupItem><Tooltip position="bottom-end" content={"Show Editor"}>
<Button variant="control" onClick={e => this.setState({showEditor: !showEditor})}>
<EditorIcon/>
</Button>
- </Tooltip>
- <ModalEditor property={property}
+ </Tooltip></InputGroupItem>
+ <InputGroupItem><ModalEditor property={property}
customCode={value}
showEditor={showEditor}
dark={dark}
@@ -322,7 +332,7 @@ export class DslPropertyField extends React.Component<Props, State> {
onSave={(fieldId, value1) => {
this.propertyChanged(fieldId, value1);
this.setState({showEditor: false});
- }}/>
+ }}/></InputGroupItem>
</InputGroup>
)
}
@@ -359,7 +369,7 @@ export class DslPropertyField extends React.Component<Props, State> {
value={value?.toString()}
aria-label={property.name}
isChecked={isChecked}
- onChange={e => this.propertyChanged(property.name, e)}/>
+ onChange={(_, v) => this.propertyChanged(property.name, v)}/>
)
}
@@ -374,7 +384,7 @@ export class DslPropertyField extends React.Component<Props, State> {
<Select
variant={SelectVariant.single}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => this.propertyChanged(property.name, (!isPlaceholder ? value : undefined))}
@@ -399,7 +409,7 @@ export class DslPropertyField extends React.Component<Props, State> {
<Select
variant={SelectVariant.single}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => this.propertyChanged(property.name, (!isPlaceholder ? value : undefined))}
@@ -433,7 +443,7 @@ export class DslPropertyField extends React.Component<Props, State> {
placeholderText="Select Media Type"
variant={SelectVariant.typeahead}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => this.propertyChanged(property.name, (!isPlaceholder ? value : undefined))}
@@ -490,7 +500,7 @@ export class DslPropertyField extends React.Component<Props, State> {
variant={SelectVariant.typeahead}
aria-label={property.name}
onClear={event => this.clearSelection(property.name)}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(property.name, isExpanded)
}}
onSelect={(e, value, isPlaceholder) => {
@@ -621,7 +631,7 @@ export class DslPropertyField extends React.Component<Props, State> {
return (
<ExpandableSection
toggleText={label}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.setState(state => {
state.isShowAdvanced.set(label, !state.isShowAdvanced.get(label));
return {isShowAdvanced: state.isShowAdvanced};
@@ -659,8 +669,8 @@ export class DslPropertyField extends React.Component<Props, State> {
<button type="button" aria-label="More info" onClick={e => {
e.preventDefault();
e.stopPropagation();
- }} className="pf-c-form__group-label-help">
- <HelpIcon noVerticalAlign/>
+ }} className="pf-v5-c-form__group-label-help">
+ <HelpIcon />
</button>
</Popover>
: <div></div>
diff --git a/karavan-space/src/designer/route/property/ExpressionField.tsx b/karavan-space/src/designer/route/property/ExpressionField.tsx
index 95cf6383..135c11fe 100644
--- a/karavan-space/src/designer/route/property/ExpressionField.tsx
+++ b/karavan-space/src/designer/route/property/ExpressionField.tsx
@@ -16,13 +16,15 @@
*/
import React from 'react';
import {
- FormGroup,
- Popover,
- Select,
- SelectVariant,
- SelectDirection,
- SelectOption
+ FormGroup,
+ Popover
} from '@patternfly/react-core';
+import {
+ Select,
+ SelectVariant,
+ SelectDirection,
+ SelectOption
+} from '@patternfly/react-core/deprecated';
import '../../karavan.css';
import "@patternfly/patternfly/patternfly.css";
import HelpIcon from "@patternfly/react-icons/dist/js/icons/help-icon";
@@ -109,14 +111,14 @@ export class ExpressionField extends React.Component<Props, State> {
})
return (
<div>
- <label className="pf-c-form__label" htmlFor="expression">
- <span className="pf-c-form__label-text">Language</span>
- <span className="pf-c-form__label-required" aria-hidden="true"> *</span>
+ <label className="pf-v5-c-form__label" htmlFor="expression">
+ <span className="pf-v5-c-form__label-text">Language</span>
+ <span className="pf-v5-c-form__label-required" aria-hidden="true"> *</span>
</label>
<Select
variant={SelectVariant.typeahead}
aria-label={property.name}
- onToggle={isExpanded => {
+ onToggle={(_event, isExpanded) => {
this.openSelect(isExpanded)
}}
onSelect={(e, lang, isPlaceholder) => {
@@ -141,8 +143,8 @@ export class ExpressionField extends React.Component<Props, State> {
e.preventDefault();
e.stopPropagation();
}}
- className="pf-c-form__group-label-help">
- <HelpIcon noVerticalAlign/>
+ className="pf-v5-c-form__group-label-help">
+ <HelpIcon />
</button>
</Popover> : <div></div>
}>
diff --git a/karavan-space/src/designer/route/property/InfrastructureSelector.tsx b/karavan-space/src/designer/route/property/InfrastructureSelector.tsx
index e0069bc0..a9e9649f 100644
--- a/karavan-space/src/designer/route/property/InfrastructureSelector.tsx
+++ b/karavan-space/src/designer/route/property/InfrastructureSelector.tsx
@@ -22,7 +22,7 @@ import {
Tab, Tabs, TabTitleText, TextInput,
} from '@patternfly/react-core';
import '../../karavan.css';
-import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
+import {Table /* data-codemods */, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
interface Props {
@@ -65,9 +65,11 @@ export class InfrastructureSelector extends React.Component<Props, State> {
return (
<Form isHorizontal className="search" autoComplete="off">
<FormGroup fieldId="search">
- <TextInput className="text-field" type="text" id="search" name="search" iconVariant='search'
- value={this.state.filter}
- onChange={e => this.setState({filter: e})}/>
+ <TextInput className="text-field" type="text" id="search" name="search"
+ value={this.state.filter}
+ onChange={(_, value) => {
+ this.setState({filter: value})
+ }}/>
</FormGroup>
</Form>
)
@@ -76,7 +78,7 @@ export class InfrastructureSelector extends React.Component<Props, State> {
getConfigMapTable() {
const configMaps = this.state.configMaps;
return (
- <TableComposable variant='compact' borders={false}>
+ <Table variant='compact' borders={false}>
<Thead>
<Tr>
<Th/>
@@ -108,14 +110,14 @@ export class InfrastructureSelector extends React.Component<Props, State> {
)
})}
</Tbody>
- </TableComposable>
+ </Table>
)
}
getSecretsTable() {
const secrets = this.state.secrets;
return (
- <TableComposable variant='compact' borders={false}>
+ <Table variant='compact' borders={false}>
<Thead>
<Tr>
<Th/>
@@ -147,14 +149,14 @@ export class InfrastructureSelector extends React.Component<Props, State> {
)
})}
</Tbody>
- </TableComposable>
+ </Table>
)
}
getServicesTable() {
const services = this.state.services;
return (
- <TableComposable variant='compact' borders={false}>
+ <Table variant='compact' borders={false}>
<Thead>
<Tr>
<Th/>
@@ -202,7 +204,7 @@ export class InfrastructureSelector extends React.Component<Props, State> {
)
})}
</Tbody>
- </TableComposable>
+ </Table>
)
}
diff --git a/karavan-space/src/designer/route/property/KameletPropertyField.tsx b/karavan-space/src/designer/route/property/KameletPropertyField.tsx
index 9b0a3b39..e837677f 100644
--- a/karavan-space/src/designer/route/property/KameletPropertyField.tsx
+++ b/karavan-space/src/designer/route/property/KameletPropertyField.tsx
@@ -127,14 +127,14 @@ export class KameletPropertyField extends React.Component<Props, State> {
type={property.format && !showPassword ? "password" : "text"}
id={id} name={id}
value={value}
- onChange={e => this.parametersChanged(property.id, e)}/>}
+ onChange={(e, value) => this.parametersChanged(property.id, value)}/>}
{showEditor && property.format !== "password" &&
<TextArea autoResize={true}
className="text-field" isRequired
type="text"
id={id} name={id}
value={value}
- onChange={e => this.parametersChanged(property.id, e)}/>}
+ onChange={(e, value) => this.parametersChanged(property.id, value)}/>}
{property.format !== "password" &&
<Tooltip position="bottom-end" content={showEditor ? "Change to TextField" : "Change to Text Area"}>
<Button variant="control" onClick={e => this.setState({showEditor: !showEditor})}>
@@ -177,8 +177,8 @@ export class KameletPropertyField extends React.Component<Props, State> {
</div>
}>
<button type="button" aria-label="More info" onClick={e => e.preventDefault()}
- className="pf-c-form__group-label-help">
- <HelpIcon noVerticalAlign/>
+ className="pf-v5-c-form__group-label-help">
+ <HelpIcon />
</button>
</Popover>
}>
@@ -186,7 +186,7 @@ export class KameletPropertyField extends React.Component<Props, State> {
}
{['integer', 'int', 'number'].includes(property.type) &&
<TextInput className="text-field" isRequired type='number' id={id} name={id} value={value}
- onChange={e => this.parametersChanged(property.id, Number(e))}
+ onChange={(e, value) => this.parametersChanged(property.id, Number(value))}
/>
}
{property.type === 'boolean' && <Switch
diff --git a/karavan-space/src/designer/route/property/ModalEditor.tsx b/karavan-space/src/designer/route/property/ModalEditor.tsx
index 0d5568e8..ac953db3 100644
--- a/karavan-space/src/designer/route/property/ModalEditor.tsx
+++ b/karavan-space/src/designer/route/property/ModalEditor.tsx
@@ -71,14 +71,14 @@ export class ModalEditor extends React.Component<Props, State> {
<Title id="modal-custom-header-label" headingLevel="h1" size={TitleSizes['2xl']}>
{title}
</Title>
- <p className="pf-u-pt-sm">{dslLanguage?.[2]}</p>
+ <p className="pf-v5-u-pt-sm">{dslLanguage?.[2]}</p>
</React.Fragment>}
isOpen={showEditor}
onClose={() => this.close()}
actions={[
- <Button key="save" variant="primary" isSmall
+ <Button key="save" variant="primary" size="sm"
onClick={e => this.closeAndSave()}>Save</Button>,
- <Button key="cancel" variant="secondary" isSmall
+ <Button key="cancel" variant="secondary" size="sm"
onClick={e => this.close()}>Close</Button>
]}
onEscapePress={e => this.close()}>
diff --git a/karavan-space/src/designer/templates/TemplatesDesigner.tsx b/karavan-space/src/designer/templates/TemplatesDesigner.tsx
index 78c8b070..ffc5d9d9 100644
--- a/karavan-space/src/designer/templates/TemplatesDesigner.tsx
+++ b/karavan-space/src/designer/templates/TemplatesDesigner.tsx
@@ -17,7 +17,7 @@
import React from 'react';
import {
EmptyState, EmptyStateBody, EmptyStateIcon,
- PageSection, Title
+ PageSection, EmptyStateHeader,
} from '@patternfly/react-core';
import '../karavan.css';
import {CamelElement, Integration} from "karavan-core/lib/model/IntegrationDefinition";
@@ -59,10 +59,7 @@ export class TemplatesDesigner extends React.Component<Props, State> {
<PageSection className="templates-page" isFilled padding={{default: 'noPadding'}}>
<div className="templates-page-columns">
<EmptyState>
- <EmptyStateIcon icon={CubesIcon} />
- <Title headingLevel="h4" size="lg">
- Templates
- </Title>
+ <EmptyStateHeader titleText="Templates" icon={<EmptyStateIcon icon={CubesIcon} />} headingLevel="h4" />
<EmptyStateBody>
Templates not implemented yet
</EmptyStateBody>
diff --git a/karavan-space/src/designer/utils/CamelUi.tsx b/karavan-space/src/designer/utils/CamelUi.tsx
index a94ed0ac..8d4157c4 100644
--- a/karavan-space/src/designer/utils/CamelUi.tsx
+++ b/karavan-space/src/designer/utils/CamelUi.tsx
@@ -88,7 +88,6 @@ import {
WorkflowIcon
} from "./KaravanIcons";
import React from "react";
-import {Icon} from "@patternfly/react-core";
const StepElements: string[] = [
"AggregateDefinition",
diff --git a/karavan-space/src/designer/utils/KaravanComponents.tsx b/karavan-space/src/designer/utils/KaravanComponents.tsx
index 72b92b93..faddd84d 100644
--- a/karavan-space/src/designer/utils/KaravanComponents.tsx
+++ b/karavan-space/src/designer/utils/KaravanComponents.tsx
@@ -35,8 +35,8 @@ export class IntegrationHeader extends React.Component<Props> {
{/* }/>*/}
{/*</FormGroup>*/}
<FormGroup label="Name" fieldId="name" isRequired>
- <TextInput className="text-field" type="text" id="name" name="name" isReadOnly
- value={this.props.integration.metadata.name}/>
+ <TextInput className="text-field" type="text" id="name" name="name"
+ value={this.props.integration.metadata.name} readOnlyVariant="default"/>
</FormGroup>
</div>
)
diff --git a/karavan-space/src/index.css b/karavan-space/src/index.css
index 4cb3c637..3d054e2d 100644
--- a/karavan-space/src/index.css
+++ b/karavan-space/src/index.css
@@ -15,7 +15,7 @@ body,
flex-direction: column;
}
-.karavan .pf-c-page__main {
+.karavan .pf-v5-c-page__main {
overflow: hidden;
}
@@ -23,13 +23,13 @@ body,
display: flex;
}
-.logo .pf-c-brand {
+.logo .pf-v5-c-brand {
height: 30px;
margin-right: 10px;
}
.karavan .nav-buttons {
- background: var(--pf-c-page__header--BackgroundColor);
+ background: var(--pf-v5-c-page__header--BackgroundColor);
}
.karavan .nav-buttons .logo {
@@ -39,14 +39,14 @@ body,
height: 32px;
}
-.karavan .nav-buttons .pf-c-button {
+.karavan .nav-buttons .pf-v5-c-button {
padding: 0;
width: 64px;
height: 64px;
- color: var(--pf-global--Color--light-100);
+ color: var(--pf-v5-global--Color--light-100);
}
-.karavan .nav-buttons .pf-c-button svg {
+.karavan .nav-buttons .pf-v5-c-button svg {
width: 24px;
}
@@ -54,26 +54,26 @@ body,
width: 32px;
height: 32px;
margin-bottom: 6px;
- border: solid var(--pf-global--Color--light-100) 1px;
- background-color: var(--pf-global--Color--light-100);
+ border: solid var(--pf-v5-global--Color--light-100) 1px;
+ background-color: var(--pf-v5-global--Color--light-100);
border-radius: 32px;
padding: 6px;
}
-.karavan .nav-buttons .pf-c-button.pf-m-plain {
+.karavan .nav-buttons .pf-v5-c-button.pf-m-plain {
border-left-width: 3px;
border-left-style: solid;
border-left-color: transparent;
border-radius: 0;
}
-.karavan .nav-button-selected .pf-c-button.pf-m-plain {
- border-left-color: var(--pf-global--active-color--400);
- background-color: var(--pf-global--BackgroundColor--dark-400);
+.karavan .nav-button-selected .pf-v5-c-button.pf-m-plain {
+ border-left-color: var(--pf-v5-global--active-color--400);
+ background-color: var(--pf-v5-global--BackgroundColor--dark-400);
}
-.github-modal .pf-c-form-control {
+.github-modal .pf-v5-c-form-control {
font-size: 14px;
width: 144px;
height: auto;
diff --git a/karavan-space/src/knowledgebase/KnowledgebasePage.tsx b/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
index d7856f55..02c6b641 100644
--- a/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
+++ b/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
@@ -45,13 +45,13 @@ export const KnowledgebasePage = (props: Props) => {
<Switch
label="Custom only"
isChecked={customOnly}
- onChange={checked => setCustomOnly(checked)}
+ onChange={(_event, checked) => setCustomOnly(checked)}
/>
</ToolbarItem>}
<ToolbarItem>
<TextInput className="text-field" type="search" id="search" name="search"
value={filter}
- onChange={value => setFilter(value)}
+ onChange={(_event, value) => setFilter(value)}
autoComplete="off"
placeholder="Search by name"/>
</ToolbarItem>
diff --git a/karavan-space/src/knowledgebase/components/ComponentModal.tsx b/karavan-space/src/knowledgebase/components/ComponentModal.tsx
index 7d622425..fd082fee 100644
--- a/karavan-space/src/knowledgebase/components/ComponentModal.tsx
+++ b/karavan-space/src/knowledgebase/components/ComponentModal.tsx
@@ -21,11 +21,10 @@ import {
ActionGroup,
Text,
CardHeader,
- CardActions,
Badge, Flex, CardTitle,
} from '@patternfly/react-core';
import '../../designer/karavan.css';
-import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
+import {Table /* data-codemods */, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
import {Component} from "karavan-core/lib/model/ComponentModels";
import {CamelUi} from "../../designer/utils/CamelUi";
import {ComponentApi} from "karavan-core/lib/api/ComponentApi";
@@ -84,18 +83,16 @@ export class ComponentModal extends React.Component<Props, State> {
>
<Flex direction={{default: 'column'}} key={component?.component.name}
className="kamelet-modal-card">
- <CardHeader>
+ <CardHeader actions={{ actions: <><Badge className="badge"
+ isRead> {component?.component.label}</Badge></>, hasNoOffset: false, className: undefined}} >
{component && CamelUi.getIconForComponent(component.component.title, component.component.label)}
- <CardActions>
- <Badge className="badge"
- isRead> {component?.component.label}</Badge>
- </CardActions>
+
</CardHeader>
<Text className="description">{component?.component.description}</Text>
{props.size !== 0 &&
<div>
<CardTitle>Properties</CardTitle>
- <TableComposable aria-label="Simple table" variant='compact'>
+ <Table aria-label="Simple table" variant='compact'>
<Thead>
<Tr>
<Th key='name'>Display Name / Name</Th>
@@ -122,7 +119,7 @@ export class ComponentModal extends React.Component<Props, State> {
</Tr>
))}
</Tbody>
- </TableComposable>
+ </Table>
</div>
}
</Flex>
diff --git a/karavan-space/src/knowledgebase/eip/EipCard.tsx b/karavan-space/src/knowledgebase/eip/EipCard.tsx
index 2fee706f..db980615 100644
--- a/karavan-space/src/knowledgebase/eip/EipCard.tsx
+++ b/karavan-space/src/knowledgebase/eip/EipCard.tsx
@@ -45,13 +45,15 @@ export class EipCard extends React.Component<Props, State> {
render() {
const component = this.state.element;
return (
- <Card isHoverable isCompact key={component.name} className="kamelet-card"
+ <Card isCompact key={component.name} className="kamelet-card"
onClick={event => this.click(event)}
>
+ <CardHeader>
+ </CardHeader>
<CardHeader>
{CamelUi.getIconForDslName(component.className)}
+ <CardTitle>{component.title}</CardTitle>
</CardHeader>
- <CardTitle>{component.title}</CardTitle>
<CardBody>{component.description}</CardBody>
<CardFooter className="footer-labels">
<div>
diff --git a/karavan-space/src/knowledgebase/eip/EipModal.tsx b/karavan-space/src/knowledgebase/eip/EipModal.tsx
index 55ae5f36..4757b953 100644
--- a/karavan-space/src/knowledgebase/eip/EipModal.tsx
+++ b/karavan-space/src/knowledgebase/eip/EipModal.tsx
@@ -21,11 +21,10 @@ import {
ActionGroup,
Text,
CardHeader,
- CardActions,
Badge, Flex, CardTitle,
} from '@patternfly/react-core';
import '../../designer/karavan.css';
-import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
+import {Table /* data-codemods */, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
import {CamelUi} from "../../designer/utils/CamelUi";
import {ElementMeta, PropertyMeta} from "karavan-core/lib/model/CamelMetadata";
@@ -77,18 +76,16 @@ export class EipModal extends React.Component<Props, State> {
>
<Flex direction={{default: 'column'}} key={component?.name}
className="kamelet-modal-card">
- <CardHeader>
+ <CardHeader actions={{ actions: <><Badge className="badge"
+ isRead> {component?.labels}</Badge></>, hasNoOffset: false, className: undefined}} >
{component && CamelUi.getIconForDslName(component?.className)}
- <CardActions>
- <Badge className="badge"
- isRead> {component?.labels}</Badge>
- </CardActions>
+
</CardHeader>
<Text className="description">{component?.description}</Text>
{component?.properties.length !== 0 &&
<div>
<CardTitle>Properties</CardTitle>
- <TableComposable aria-label="Simple table" variant='compact'>
+ <Table aria-label="Simple table" variant='compact'>
<Thead>
<Tr>
<Th key='name'>Display Name / Name</Th>
@@ -115,7 +112,7 @@ export class EipModal extends React.Component<Props, State> {
</Tr>
))}
</Tbody>
- </TableComposable>
+ </Table>
</div>
}
</Flex>
diff --git a/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx b/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
index 649076b3..948ffb70 100644
--- a/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
+++ b/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
@@ -47,7 +47,7 @@ export class KameletCard extends React.Component<Props, State> {
const kamelet = this.state.kamelet;
const isCustom = KameletApi.getCustomKameletNames().includes(kamelet.metadata.name);
return (
- <Card isHoverable isCompact key={kamelet.metadata.name} className="kamelet-card"
+ <Card isCompact key={kamelet.metadata.name} className="kamelet-card"
onClick={event => this.click(event)}
>
<CardHeader className="header-labels">
diff --git a/karavan-space/src/knowledgebase/kamelets/KameletModal.tsx b/karavan-space/src/knowledgebase/kamelets/KameletModal.tsx
index cf9ba3c1..33801485 100644
--- a/karavan-space/src/knowledgebase/kamelets/KameletModal.tsx
+++ b/karavan-space/src/knowledgebase/kamelets/KameletModal.tsx
@@ -21,12 +21,11 @@ import {
ActionGroup,
Text,
CardHeader,
- CardActions,
Badge, Flex, CardTitle,
} from '@patternfly/react-core';
import '../../designer/karavan.css';
import {KameletModel, Property} from "karavan-core/lib/model/KameletModels";
-import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
+import {Table /* data-codemods */, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
import {CamelUi} from "../../designer/utils/CamelUi";
interface Props {
@@ -82,18 +81,16 @@ export class KameletModal extends Component<Props, State> {
>
<Flex direction={{default: 'column'}} key={this.state.kamelet?.metadata.name}
className="kamelet-modal-card">
- <CardHeader>
+ <CardHeader actions={{ actions: <><Badge className="badge"
+ isRead> {this.state.kamelet?.metadata.labels["camel.apache.org/kamelet.type"].toLowerCase()}</Badge></>, hasNoOffset: false, className: undefined}} >
{this.state.kamelet && CamelUi.getIconFromSource(this.state.kamelet?.icon())}
- <CardActions>
- <Badge className="badge"
- isRead> {this.state.kamelet?.metadata.labels["camel.apache.org/kamelet.type"].toLowerCase()}</Badge>
- </CardActions>
+
</CardHeader>
<Text className="description">{this.state.kamelet?.spec.definition.description}</Text>
{this.state.kamelet?.spec.definition.properties && this.state.kamelet?.spec.definition.properties.length !== 0 &&
<div>
<CardTitle>Properties</CardTitle>
- <TableComposable aria-label="Simple table" variant='compact'>
+ <Table aria-label="Simple table" variant='compact'>
<Thead>
<Tr>
<Th key='title'>Title</Th>
@@ -114,7 +111,7 @@ export class KameletModal extends Component<Props, State> {
</Tr>
))}
</Tbody>
- </TableComposable>
+ </Table>
</div>
}
</Flex>
diff --git a/karavan-space/src/space/GithubModal.tsx b/karavan-space/src/space/GithubModal.tsx
index ff90d220..70682d81 100644
--- a/karavan-space/src/space/GithubModal.tsx
+++ b/karavan-space/src/space/GithubModal.tsx
@@ -152,26 +152,26 @@ export class GithubModal extends React.Component<Props, State> {
<FormGroup label="Repository" fieldId="repository" isRequired>
<Flex direction={{default: "row"}} justifyContent={{default: "justifyContentSpaceBetween"}} alignItems={{default: "alignItemsStretch"}}>
<FlexItem>
- <TextInput id="owner" placeholder="Owner" value={owner} onChange={value => this.setState({owner: value})}/>
+ <TextInput id="owner" placeholder="Owner" value={owner} onChange={(_event, value) => this.setState({owner: value})}/>
</FlexItem>
<FlexItem>
- <TextInput id="repo" placeholder="Repo" value={repo} onChange={value => this.setState({repo: value})}/>
+ <TextInput id="repo" placeholder="Repo" value={repo} onChange={(_event, value) => this.setState({repo: value})}/>
</FlexItem>
<FlexItem>
- <TextInput id="path" placeholder="Path" value={path} onChange={value => this.setState({path: value})}/>
+ <TextInput id="path" placeholder="Path" value={path} onChange={(_event, value) => this.setState({path: value})}/>
</FlexItem>
<FlexItem>
- <TextInput id="branch" placeholder="branch" value={branch} onChange={value => this.setState({branch: value})}/>
+ <TextInput id="branch" placeholder="branch" value={branch} onChange={(_event, value) => this.setState({branch: value})}/>
</FlexItem>
</Flex>
</FormGroup>
<FormGroup label="Commit user" fieldId="user" isRequired>
<Flex direction={{default: "row"}} justifyContent={{default: "justifyContentSpaceBetween"}} alignItems={{default: "alignItemsStretch"}}>
<FlexItem>
- <TextInput id="username" placeholder="Username" value={name} onChange={value => this.setState({name: value})}/>
+ <TextInput id="username" placeholder="Username" value={name} onChange={(_event, value) => this.setState({name: value})}/>
</FlexItem>
<FlexItem flex={{default: "flex_3"}}>
- <TextInput id="email" placeholder="Email" value={email} onChange={value => this.setState({email: value})}/>
+ <TextInput id="email" placeholder="Email" value={email} onChange={(_event, value) => this.setState({email: value})}/>
</FlexItem>
</Flex>
</FormGroup>
@@ -187,7 +187,7 @@ export class GithubModal extends React.Component<Props, State> {
</FormGroup>
<FormGroup label="Save" fieldId="save" isRequired>
<TextInputGroup className="input-group">
- <Switch label="Save parameters in browser (except token)" checked={save} onChange={checked => this.setState({save: checked})}/>
+ <Switch label="Save parameters in browser (except token)" checked={save} onChange={(_event, checked) => this.setState({save: checked})}/>
</TextInputGroup>
</FormGroup>
</Form>
diff --git a/karavan-space/src/space/SpaceBus.ts b/karavan-space/src/space/SpaceBus.ts
index 2325749f..bb209bfb 100644
--- a/karavan-space/src/space/SpaceBus.ts
+++ b/karavan-space/src/space/SpaceBus.ts
@@ -21,10 +21,10 @@ const alerts = new Subject<AlertMessage>();
export class AlertMessage {
title: string;
message: string;
- variant: 'success' | 'danger' | 'warning' | 'info' | 'default';
+ variant: 'success' | 'danger' | 'warning' | 'info' | 'custom';
- constructor(title: string, message: string, variant: "success" | "danger" | "warning" | "info" | "default") {
+ constructor(title: string, message: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'custom') {
this.title = title;
this.message = message;
this.variant = variant;
@@ -35,7 +35,7 @@ export const SpaceBus = {
sendAlert: (
title: string,
message: string,
- variant: "success" | "danger" | "warning" | "info" | "default" = 'success'
+ variant: 'success' | 'danger' | 'warning' | 'info' | 'custom' = 'success'
) => alerts.next(new AlertMessage(title, message, variant)),
onAlert: () => alerts.asObservable(),
}
diff --git a/karavan-space/src/space/SpacePage.tsx b/karavan-space/src/space/SpacePage.tsx
index 2aa44536..0f71ff2e 100644
--- a/karavan-space/src/space/SpacePage.tsx
+++ b/karavan-space/src/space/SpacePage.tsx
@@ -87,7 +87,9 @@ export class SpacePage extends React.Component<Props, State> {
}
addYaml = (yaml: string | undefined) => {
- this.save(this.props.name, this.props.yaml + "\n" + yaml, false);
+ if (yaml) {
+ this.save(this.props.name, this.props.yaml + "\n" + yaml, false);
+ }
this.setState({showUploadModal: false, key: Math.random().toString()})
}
@@ -135,7 +137,7 @@ export class SpacePage extends React.Component<Props, State> {
return (
<PageSection className="kamelet-section designer-page" padding={{default: 'noPadding'}}>
<PageSection className="tools-section" padding={{default: 'noPadding'}}
- style={{backgroundColor:"transparent", paddingLeft: "var(--pf-c-page__main-section--PaddingLeft)"}}>
+ style={{backgroundColor:"transparent", paddingLeft: "var(--pf-v5-c-page__main-section--PaddingLeft)"}}>
<Flex className="tools" justifyContent={{default: 'justifyContentSpaceBetween'}}>
<FlexItem>
<Flex>
@@ -147,9 +149,9 @@ export class SpacePage extends React.Component<Props, State> {
<FlexItem>
<ToggleGroup>
<ToggleGroupItem text="Design" buttonId="design" isSelected={mode === "design"}
- onChange={s => this.setState({mode: 'design'})} />
+ onChange={(_event, s) => this.setState({mode: 'design'})} />
<ToggleGroupItem text="Code" buttonId="code" isSelected={mode === "code"}
- onChange={s => this.setState({mode: 'code'})} />
+ onChange={(_event, s) => this.setState({mode: 'code'})} />
</ToggleGroup>
</FlexItem>
</Flex>
diff --git a/karavan-space/src/space/UploadModal.tsx b/karavan-space/src/space/UploadModal.tsx
index 1ea8f463..5db50419 100644
--- a/karavan-space/src/space/UploadModal.tsx
+++ b/karavan-space/src/space/UploadModal.tsx
@@ -5,6 +5,7 @@ import {
import '../designer/karavan.css';
import {GeneratorApi} from "../api/GeneratorApi";
import {SpaceBus} from "./SpaceBus";
+import {DropEvent, FileRejection} from "react-dropzone";
interface Props {
isOpen: boolean,
@@ -50,11 +51,11 @@ export class UploadModal extends React.Component<Props, State> {
})
}
- handleFileInputChange = (event: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLElement>, file: File) => this.setState({filename: file.name});
+ handleFileInputChange = (file: File) => this.setState({filename: file.name});
handleFileReadStarted = (fileHandle: File) => this.setState({isLoading: true});
handleFileReadFinished = (fileHandle: File) => this.setState({isLoading: false});
handleTextOrDataChange = (data: string) => this.setState({data: data});
- handleFileRejected = (acceptedOrRejected: File[], event: React.DragEvent<HTMLElement>) => this.setState({isRejected: true});
+ handleFileRejected = (fileRejections: FileRejection[], event: DropEvent) => this.setState({isRejected: true});
handleClear = (event: React.MouseEvent<HTMLButtonElement>) => this.setState({
filename: '',
data: '',
@@ -66,7 +67,7 @@ export class UploadModal extends React.Component<Props, State> {
const {generating} = this.state;
const fileNotUploaded = (this.state.filename === '' || this.state.data === '');
const isDisabled = fileNotUploaded || generating;
- const accept = '.json, .yaml';
+ const accept = {'application/yaml': ['.yaml', '.yml'], 'application/json': ['.json']}
return (
<Modal
title="Upload OpenAPI"
@@ -88,11 +89,11 @@ export class UploadModal extends React.Component<Props, State> {
hideDefaultPreview
browseButtonText="Upload"
isLoading={this.state.isLoading}
- onFileInputChange={this.handleFileInputChange}
- onDataChange={data => this.handleTextOrDataChange(data)}
- onTextChange={text => this.handleTextOrDataChange(text)}
- onReadStarted={this.handleFileReadStarted}
- onReadFinished={this.handleFileReadFinished}
+ onFileInputChange={(event, file) => this.handleFileInputChange(file)}
+ onDataChange={(_event, data) => this.handleTextOrDataChange(data)}
+ onTextChange={(_event, text) => this.handleTextOrDataChange(text)}
+ onReadStarted={(_event, fileHandle: File) => this.handleFileReadStarted(fileHandle)}
+ onReadFinished={(_event, fileHandle: File) => this.handleFileReadFinished(fileHandle)}
allowEditingUploadedText={false}
onClearClick={this.handleClear}
dropzoneProps={{accept: accept, onDropRejected: this.handleFileRejected}}