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

commit 5fbb92cf180528073421852b3331c11b11abb4f3
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Feb 19 16:49:57 2024 -0500

    Configurable show Kamelet/Component blocker checkbox
---
 .../src/main/webui/src/designer/karavan.css        |  4 ----
 .../webui/src/knowledgebase/KnowledgebasePage.tsx  |  9 ++++++++
 .../webui/src/knowledgebase/KnowledgebaseStore.ts  |  8 +++++++
 .../src/knowledgebase/components/ComponentCard.tsx |  7 +++---
 .../src/knowledgebase/kamelets/KameletCard.tsx     |  7 +++---
 .../KnowledgebaseWrapper.tsx}                      | 26 +++++++++++++++++++---
 .../src/main/webui/src/main/MainRoutes.tsx         |  4 ++--
 7 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/karavan.css 
b/karavan-web/karavan-app/src/main/webui/src/designer/karavan.css
index 82f75a51..78b2a135 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/karavan.css
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/karavan.css
@@ -819,7 +819,3 @@
 .karavan .knowledbase-eip-section .pf-v5-c-toggle-group{
     margin:16px;
 }
-.karavan .kamelet-section .kamelet-card .block-checkbox input{
-    width:18px;
-    height:18px
-}
\ No newline at end of file
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
index 66eae532..86b777e5 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebasePage.tsx
@@ -21,18 +21,27 @@ import {MainToolbar} from "../designer/MainToolbar";
 import {KameletsTab} from "./kamelets/KameletsTab";
 import {EipTab} from "./eip/EipTab";
 import {ComponentsTab} from "./components/ComponentsTab";
+import {useKnowledgebaseStore} from "./KnowledgebaseStore";
+import {shallow} from "zustand/shallow";
 
 interface Props {
     dark: boolean,
     changeBlockList: (type: string, name: string, checked: boolean) => void,
+    showBlockCheckbox?: boolean,
 }
 
 export const KnowledgebasePage = (props: Props) => {
 
+    const [setShowBlockCheckbox] = useKnowledgebaseStore((s) => 
[s.setShowBlockCheckbox], shallow)
     const [tab, setTab] = useState<string | number>("eip");
     const [filter, setFilter] = useState<string>("");
     const [customOnly, setCustomOnly] = useState<boolean>(false);
 
+
+    React.useEffect(() => {
+        setShowBlockCheckbox(props.showBlockCheckbox === true)
+    }, []);
+
     function title() {
         return <TextContent>
             <Text component="h2">Knowledgebase</Text>
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseStore.ts
 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseStore.ts
index 32b81787..cb7e3b44 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseStore.ts
+++ 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseStore.ts
@@ -24,6 +24,8 @@ import {KameletModel} from 
"karavan-core/lib/model/KameletModels";
 interface KnowledgebaseState {
     isModalOpen: boolean;
     setModalOpen: (isModalOpen: boolean) => void;
+    showBlockCheckbox: boolean;
+    setShowBlockCheckbox: (showBlockCheckbox: boolean) => void;
     component?: Component;
     setComponent: (component: Component) => void;
     element?: ElementMeta;
@@ -39,6 +41,12 @@ export const useKnowledgebaseStore = 
createWithEqualityFn<KnowledgebaseState>((s
             return {isModalOpen: isModalOpen};
         })
     },
+    showBlockCheckbox: false,
+    setShowBlockCheckbox: (showBlockCheckbox: boolean) => {
+        set((state: KnowledgebaseState) => {
+            return {showBlockCheckbox: showBlockCheckbox};
+        })
+    },
     setComponent: (component: Component) => {
         set((state: KnowledgebaseState) => {
             return {component: component};
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/components/ComponentCard.tsx
 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/components/ComponentCard.tsx
index f99d8136..91ec2595 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/components/ComponentCard.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/components/ComponentCard.tsx
@@ -32,8 +32,8 @@ interface Props {
 
 export function ComponentCard(props: Props) {
 
-    const [setComponent, setModalOpen] = useKnowledgebaseStore((s) =>
-        [s.setComponent, s.setModalOpen], shallow)
+    const [setComponent, setModalOpen, showBlockCheckbox] = 
useKnowledgebaseStore((s) =>
+        [s.setComponent, s.setModalOpen, s.showBlockCheckbox], shallow)
     const component = props.component;
     const [blockedComponents, setBlockedComponents] = useState<string[]>();
     useEffect(() => {
@@ -60,7 +60,8 @@ export function ComponentCard(props: Props) {
             <CardHeader className="header-labels">
                 {component.component.supportType === 'Supported' && <Badge 
isRead className="support-type 
labels">{component.component.supportType}</Badge>}
                 <Badge isRead className="support-level 
labels">{component.component.supportLevel}</Badge>
-                <Checkbox id={component.component.name} 
className="block-checkbox labels" isChecked={!isBlockedComponent} onChange={(_, 
checked) => selectComponent(_, checked)} />
+                {showBlockCheckbox && <Checkbox id={component.component.name} 
className="block-checkbox labels"
+                           isChecked={!isBlockedComponent} onChange={(_, 
checked) => selectComponent(_, checked)}/>}
             </CardHeader>
             <CardHeader>
                 {CamelUi.getIconForComponent(component.component.title, 
component.component.label)}
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/kamelets/KameletCard.tsx
 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/kamelets/KameletCard.tsx
index 1dff9f2c..c773035c 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/kamelets/KameletCard.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/knowledgebase/kamelets/KameletCard.tsx
@@ -32,8 +32,8 @@ interface Props {
 
 export function KameletCard(props: Props) {
 
-    const [setKamelet, setModalOpen] = useKnowledgebaseStore((s) =>
-        [s.setKamelet, s.setModalOpen], shallow)
+    const [setKamelet, setModalOpen, showBlockCheckbox] = 
useKnowledgebaseStore((s) =>
+        [s.setKamelet, s.setModalOpen, s.showBlockCheckbox], shallow)
     const [blockedKamelets, setBlockedKamelets] = useState<string[]>();
     useEffect(() => {
         setBlockedKamelets(KameletApi.getBlockedKameletNames());
@@ -62,7 +62,8 @@ export function KameletCard(props: Props) {
             <CardHeader className="header-labels">
                 {isCustom && <Badge className="custom">custom</Badge>}
                 <Badge isRead className="support-level 
labels">{kamelet.metadata.annotations["camel.apache.org/kamelet.support.level"]}</Badge>
-                <Checkbox id={kamelet.metadata.name} className="block-checkbox 
labels" isChecked={!isblockedKamelet} onChange={(_, checked) => 
selectKamelet(_, checked)} />
+                {showBlockCheckbox && <Checkbox id={kamelet.metadata.name} 
className="block-checkbox labels" isChecked={!isblockedKamelet}
+                           onChange={(_, checked) => selectKamelet(_, 
checked)}/>}
             </CardHeader>
             <CardHeader>
                 {CamelUi.getIconFromSource(kamelet.icon())}
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseHome.tsx
 b/karavan-web/karavan-app/src/main/webui/src/main/KnowledgebaseWrapper.tsx
similarity index 53%
rename from 
karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseHome.tsx
rename to 
karavan-web/karavan-app/src/main/webui/src/main/KnowledgebaseWrapper.tsx
index d9a50a9a..59dda14a 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/knowledgebase/KnowledgebaseHome.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/main/KnowledgebaseWrapper.tsx
@@ -1,5 +1,22 @@
+/*
+ * 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 { KameletApi } from "karavan-core/lib/api/KameletApi";
-import { KnowledgebasePage } from "./KnowledgebasePage"
+import { KnowledgebasePage } from "../knowledgebase/KnowledgebasePage"
 import { ComponentApi } from "karavan-core/lib/api/ComponentApi";
 import { KaravanApi } from "../api/KaravanApi";
 import { useState, useEffect } from "react";
@@ -8,7 +25,7 @@ import { ProjectService } from "../api/ProjectService";
 interface Props {
     dark: boolean,
 }
-export const KnowledgebaseHome = (props: Props) => {
+export const KnowledgebaseWrapper = (props: Props) => {
 
     const [blockList, setBlockList] = useState<ProjectFile[]>();
 
@@ -36,6 +53,9 @@ export const KnowledgebaseHome = (props: Props) => {
     }
 
     return (
-        <KnowledgebasePage dark={props.dark} changeBlockList={(type: string, 
name: string, checked: boolean) => onChangeBlockedList(type, name, checked)} />
+        <KnowledgebasePage
+            dark={props.dark}
+            showBlockCheckbox={true}
+            changeBlockList={(type: string, name: string, checked: boolean) => 
onChangeBlockedList(type, name, checked)} />
     );
 }
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/webui/src/main/MainRoutes.tsx 
b/karavan-web/karavan-app/src/main/webui/src/main/MainRoutes.tsx
index 91956b2c..761bf382 100644
--- a/karavan-web/karavan-app/src/main/webui/src/main/MainRoutes.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/main/MainRoutes.tsx
@@ -23,7 +23,7 @@ import {ServicesPage} from "../services/ServicesPage";
 import {ContainersPage} from "../containers/ContainersPage";
 import {TemplatesPage} from "../templates/TemplatesPage";
 import {ConfigurationPage} from "../config/ConfigurationPage";
-import { KnowledgebaseHome } from '../knowledgebase/KnowledgebaseHome';
+import { KnowledgebaseWrapper } from './KnowledgebaseWrapper';
 
 export function MainRoutes() {
 
@@ -34,7 +34,7 @@ export function MainRoutes() {
             <Route path="/templates" element={<TemplatesPage 
key={'templates'}/>}/>
             <Route path="/services" element={<ServicesPage key="services"/>}/>
             <Route path="/containers" element={<ContainersPage 
key="services"/>}/>
-            <Route path="/knowledgebase" element={<KnowledgebaseHome 
dark={false}/>}/>
+            <Route path="/knowledgebase" element={<KnowledgebaseWrapper 
dark={false}/>}/>
             <Route path="/configuration" element={<ConfigurationPage 
dark={false}/>}/>
             <Route path="*" element={<Navigate to="/projects" replace/>}/>
         </Routes>

Reply via email to