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 0b49a1a16896cb8397e28aab42d3fbe880776579 Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Mon Sep 16 14:03:00 2024 -0400 #1398 --- .../src/designer/icons/ComponentIcons.tsx | 103 ++++++++++++++++++--- .../src/designer/selector/DslSelector.tsx | 24 +++-- karavan-designer/src/designer/utils/CamelUi.tsx | 14 ++- .../src/designer/icons/ComponentIcons.tsx | 103 ++++++++++++++++++--- .../src/designer/selector/DslSelector.tsx | 24 +++-- karavan-space/src/designer/utils/CamelUi.tsx | 14 ++- 6 files changed, 228 insertions(+), 54 deletions(-) diff --git a/karavan-designer/src/designer/icons/ComponentIcons.tsx b/karavan-designer/src/designer/icons/ComponentIcons.tsx index 5d13362a..c7f9c3ea 100644 --- a/karavan-designer/src/designer/icons/ComponentIcons.tsx +++ b/karavan-designer/src/designer/icons/ComponentIcons.tsx @@ -16,6 +16,35 @@ */ import React from 'react'; +export function SalesforceIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + xmlnsXlink="http://www.w3.org/1999/xlink" + viewBox="0 0 273 191" + className="icon" + > + <defs> + <path id="a" d="M.06.5h272v190H.06z" /> + </defs> + <g fillRule="evenodd"> + <path + fill="#00A1E0" + d="M113 21.3c8.78-9.14 21-14.8 34.5-14.8 18 0 33.6 10 42 24.9a58 58 0 0 1 23.7-5.05c32.4 0 58.7 26.5 58.7 59.2s-26.3 59.2-58.7 59.2c-3.96 0-7.82-.398-11.6-1.15-7.35 13.1-21.4 22-37.4 22a42.7 42.7 0 0 1-18.8-4.32c-7.45 17.5-24.8 29.8-45 29.8-21.1 0-39-13.3-45.9-32a45.1 45.1 0 0 1-9.34.972c-25.1 0-45.4-20.6-45.4-45.9 0-17 9.14-31.8 22.7-39.8a52.6 52.6 0 0 1-4.35-21c0-29.2 23.7-52.8 52.9-52.8 17.1 0 32.4 8.15 42 20.8" + mask="url(#b)" + /> + <path + fill="#FFFFFE" + d="M39.4 99.3c-.171.446.061.539.116.618.511.37 1.03.638 1.55.939 2.78 1.47 5.4 1.9 8.14 1.9 5.58 0 9.05-2.97 9.05-7.75v-.094c0-4.42-3.92-6.03-7.58-7.18l-.479-.155c-2.77-.898-5.16-1.68-5.16-3.5v-.093c0-1.56 1.4-2.71 3.56-2.71 2.4 0 5.26.799 7.09 1.81 0 0 .542.35.739-.173.107-.283 1.04-2.78 1.14-3.06.106-.293-.08-.514-.271-.628-2.1-1.28-5-2.15-8-2.15l-.557.002c-5.11 0-8.68 3.09-8.68 7.51v.095c0 4.66 3.94 6.18 7.62 7.23l.592.184c2.68.824 5 1.54 5 3.42v.094c0 1.73-1.5 [...] + /> + <path + fill="#FFFFFE" + d="M162.201 67.548a13.258 13.258 0 0 0-1.559-.37 12.217 12.217 0 0 0-2.144-.166c-2.853 0-5.102.806-6.681 2.398-1.568 1.58-2.635 3.987-3.17 7.154l-.193 1.069h-3.581s-.437-.018-.529.459l-.588 3.28c-.041.314.094.51.514.508h3.486l-3.537 19.743c-.277 1.59-.594 2.898-.945 3.889-.346.978-.684 1.711-1.1 2.243-.403.515-.785.894-1.444 1.115-.544.183-1.17.267-1.856.267-.382 0-.89-.064-1.265-.139-.375-.074-.57-.158-.851-.276 0 0-.409-.156-.57.254-.131.335-1.06 2.89-1.17 3.206 [...] + /> + </g> + </svg> + ) +} export function SlackIcon() { return ( <svg xmlns="http://www.w3.org/2000/svg" width={127} height={127} className="icon"> @@ -135,7 +164,6 @@ export function DHIS2Icon() { <defs id="defs1"> <style id="style1">{".cls-1{fill:#0080d4}"}</style> </defs> - <title id="title1">{"dhis2-logo-rgb-positive"}</title> <path id="path1" d="m189.415 56.477-82.74-53.66a19.75 19.75 0 0 0-20.33 0l-80.35 52.09a12 12 0 0 0-.25 20.63l80.54 54.94a19.39 19.39 0 0 0 20.38.25l82.75-53.65a11.87 11.87 0 0 0 0-20.59zm-91 61.45a4.29 4.29 0 0 1-3.49-.05l-77-52.49 76.71-49.78a4.76 4.76 0 0 1 3.74 0l78.91 51.15z" @@ -254,7 +282,6 @@ export function FileIcon() { xmlSpace="preserve" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"document"}</title> <path d="m25.7 9.3-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7zM18 4.4l5.6 5.6H18V4.4zM24 28H8V4h8v6c0 1.1.9 2 2 2h6v16z"/> <path d="M10 22h12v2H10zM10 16h12v2H10z"/> @@ -379,7 +406,6 @@ export function MailIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"email"}</title> <path d="M28 6H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2Zm-2.2 2L16 14.78 6.2 8ZM4 24V8.91l11.43 7.91a1 1 0 0 0 1.14 0L28 8.91V24Z"/> <path @@ -399,7 +425,6 @@ export function IotIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"iot--platform"}</title> <path d="M30 19h-4v-4h-2v9H8V8h9V6h-4V2h-2v4H8a2.002 2.002 0 0 0-2 2v3H2v2h4v6H2v2h4v3a2.002 2.002 0 0 0 2 2h3v4h2v-4h6v4h2v-4h3a2.003 2.003 0 0 0 2-2v-3h4Z"/> <path d="M21 21H11V11h10Zm-8-2h6v-6h-6ZM31 13h-2A10.012 10.012 0 0 0 19 3V1a12.013 12.013 0 0 1 12 12Z"/> @@ -880,7 +905,6 @@ export function TerminalIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"terminal"}</title> <path d="M26 4.01H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-20a2 2 0 0 0-2-2Zm0 2v4H6v-4Zm-20 20v-14h20v14Z"/> <path d="m10.76 16.18 2.82 2.83-2.82 2.83 1.41 1.41 4.24-4.24-4.24-4.24-1.41 1.41z"/> @@ -925,7 +949,6 @@ export function ScriptIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"script"}</title> <path d="m18.83 26 2.58-2.58L20 22l-4 4 4 4 1.42-1.41L18.83 26zM27.17 26l-2.58 2.58L26 30l4-4-4-4-1.42 1.41L27.17 26z"/> <path @@ -1111,7 +1134,6 @@ export function BlockchainIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"blockchain"}</title> <path d="M6 24H4V8h2ZM28 8h-2v16h2Zm-4-2V4H8v2Zm0 22v-2H8v2Z"/> <path d="M0 0h32v32H0z" @@ -1130,7 +1152,6 @@ export function ChatIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"chat"}</title> <path d="M17.74 30 16 29l4-7h6a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h9v2H6a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4h20a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4h-4.84Z"/> <path d="M8 10h16v2H8zM8 16h10v2H8z"/> @@ -1164,7 +1185,6 @@ export function WebserviceIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"fog"}</title> <path d="M25.829 13.116A10.02 10.02 0 0 0 16 5v2a8.023 8.023 0 0 1 7.865 6.493l.259 1.346 1.349.245A5.502 5.502 0 0 1 24.508 26H16v2h8.508a7.502 7.502 0 0 0 1.32-14.884ZM8 24h6v2H8zM4 24h2v2H4zM6 20h8v2H6zM2 20h2v2H2zM8 16h6v2H8zM4 16h2v2H4zM10 12h4v2h-4zM6 12h2v2H6zM12 8h2v2h-2z"/> <path @@ -1270,7 +1290,6 @@ export function TransformationIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"data-share"}</title> <path d="M5 25v-9.172l-3.586 3.586L0 18l6-6 6 6-1.414 1.414L7 15.828V25h12v2H7a2.002 2.002 0 0 1-2-2ZM24 22h4a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2h-4a2.002 2.002 0 0 1-2-2v-4a2.002 2.002 0 0 1 2-2Zm4 6v-4h-4.002L24 28ZM27 6v9.172l3.586-3.586L32 13l-6 6-6-6 1.414-1.414L25 15.172V6H13V4h12a2.002 2.002 0 0 1 2 2ZM2 6h6v2H2zM2 2h8v2H2z"/> <path @@ -1311,7 +1330,6 @@ export function ApiIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"api"}</title> <path d="M26 22a3.86 3.86 0 0 0-2 .57l-3.09-3.1a6 6 0 0 0 0-6.94L24 9.43a3.86 3.86 0 0 0 2 .57 4 4 0 1 0-4-4 3.86 3.86 0 0 0 .57 2l-3.1 3.09a6 6 0 0 0-6.94 0L9.43 8A3.86 3.86 0 0 0 10 6a4 4 0 1 0-4 4 3.86 3.86 0 0 0 2-.57l3.09 3.1a6 6 0 0 0 0 6.94L8 22.57A3.86 3.86 0 0 0 6 22a4 4 0 1 0 4 4 3.86 3.86 0 0 0-.57-2l3.1-3.09a6 6 0 0 0 6.94 0l3.1 3.09a3.86 3.86 0 0 0-.57 2 4 4 0 1 0 4-4Zm0-18a2 2 0 1 1-2 2 2 2 0 0 1 2-2ZM4 6a2 2 0 1 1 2 2 2 2 0 0 1-2-2Zm2 22a2 2 0 1 1 2-2 2 2 0 0 1-2 [...] <path @@ -1331,7 +1349,6 @@ export function KameletIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" > - <title>{"application"}</title> <path d="M16 18H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2ZM6 6v10h10V6ZM26 12v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2ZM26 22v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2ZM16 22v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2Z" /> <path d="M0 0h32v32H0z" @@ -1344,6 +1361,65 @@ export function KameletIcon() { ) } +export function CouchbaseIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + viewBox="0 0 256 256" + className="icon" + > + <path + fill="#ED2226" + d="M128 0C57.426 0 0 57.233 0 128c0 70.574 57.233 128 128 128 70.574 0 128-57.233 128-128S198.574 0 128 0Zm86.429 150.429c0 7.734-4.447 14.502-13.148 16.048-15.082 2.707-46.792 4.254-73.281 4.254-26.49 0-58.2-1.547-73.281-4.254-8.7-1.546-13.148-8.314-13.148-16.048v-49.885c0-7.734 5.994-14.888 13.148-16.049 4.447-.773 14.888-1.546 23.01-1.546 3.093 0 5.606 2.32 5.606 5.994v34.997l44.858-.967 44.858.967V88.943c0-3.674 2.514-5.994 5.608-5.994 8.12 0 18.562.773 23.009 1.546 7 [...] + /> + </svg> + ); +} + +export function TwilioIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + preserveAspectRatio="xMidYMid" + viewBox="0 0 256 256" + className="icon" + > + <path + fill="#F12E45" + d="M128 0c70.656 0 128 57.344 128 128s-57.344 128-128 128S0 198.656 0 128 57.344 0 128 0Zm0 33.792c-52.224 0-94.208 41.984-94.208 94.208S75.776 222.208 128 222.208s94.208-41.984 94.208-94.208S180.224 33.792 128 33.792Zm31.744 99.328c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624Zm-63.488 0c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624- [...] + /> + </svg> + ); +} + +export function TwitterIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + viewBox="-0.25 -104.25 1109.5 1109.5" + className="icon" + > + <path + fill="#5da8dc" + stroke="#5da8dc" + strokeWidth={0.5} + d="M741 .2V0h52l19 3.8c12.667 2.467 24.167 5.7 34.5 9.7 10.334 4 20.334 8.667 30 14 9.667 5.333 18.434 10.767 26.301 16.3 7.8 5.467 14.8 11.267 21 17.4C929.933 67.4 939.5 69 952.5 66s27-7.167 42-12.5 29.834-11.333 44.5-18c14.667-6.667 23.601-10.9 26.801-12.7 3.133-1.866 4.8-2.866 5-3l.199-.3 1-.5 1-.5 1-.5 1-.5.2-.3.3-.2.301-.2.199-.3 1-.3 1-.2-.199 1.5-.301 1.5-.5 1.5-.5 1.5-.5 1-.5 1-.5 1.5c-.333 1-.666 2.333-1 4-.333 1.667-3.5 8.333-9.5 20S1051 73 1042 85s-17.066 21.06 [...] + /> + <path + fill="#fff" + stroke="#fff" + strokeWidth={0.5} + d="M0 399V0h741v.2c0 .2-4.333.966-13 2.3-8.666 1.333-19.333 4.167-32 8.5-12.666 4.333-26.5 10.667-41.5 19s-28.333 17.833-40 28.5c-11.666 10.667-21.166 21-28.5 31-7.333 10-13.266 18.9-17.8 26.7-4.466 7.866-9.033 18.3-13.7 31.3-4.666 13-8.166 25.833-10.5 38.5-2.333 12.667-3.5 26.5-3.5 41.5s.667 26.667 2 35l2 12.5.301 1.5.199 1.5-7-.2c-4.666-.2-13.333-.966-26-2.3-12.666-1.333-31.5-4.333-56.5-9s-42.666-8.5-53-11.5c-10.333-3-28.333-9.333-54-19-25.666-9.667-49.666-20.5-72-32.5- [...] + /> + </svg> + ); +} export function MonitoringIcon() { return ( @@ -1412,7 +1488,7 @@ export function KubernetesIcon(className?: string) { <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -10.44 722.846 722.846" - className={className ? className + " icon" : "icon"} + className={className ? className + " icon" : "icon"} width="32px" height="32px"> <path fill="#326ce5" @@ -1445,7 +1521,6 @@ export function DocumentIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"document--blank"}</title> <path d="m25.7 9.3-7-7A.908.908 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h16a2.006 2.006 0 0 0 2-2V10a.908.908 0 0 0-.3-.7ZM18 4.4l5.6 5.6H18ZM24 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6Z"/> <path diff --git a/karavan-designer/src/designer/selector/DslSelector.tsx b/karavan-designer/src/designer/selector/DslSelector.tsx index 85837e12..23c1018d 100644 --- a/karavan-designer/src/designer/selector/DslSelector.tsx +++ b/karavan-designer/src/designer/selector/DslSelector.tsx @@ -40,7 +40,7 @@ import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon"; import {addPreferredElement, deletePreferredElement, getPreferredElements} from "./DslPreferences"; import {DslFastCard} from "./DslFastCard"; import {DslCard} from "./DslCard"; -import {useDebounceValue} from 'usehooks-ts'; +import {useDebounceCallback, useDebounceValue} from 'usehooks-ts'; interface Props { tabIndex?: string | number @@ -58,7 +58,9 @@ export function DslSelector(props: Props) { const {onDslSelect} = useRouteDesignerHook(); - const [filter, setFilter] = useDebounceValue('', 300) + const [filterShown, setFilterShown] = useState<string>(''); + const [filter, setFilter] = useDebounceValue('', 300); + const [customOnly, setCustomOnly] = useState<boolean>(false); const [elements, setElements] = useState<DslMetaModel[]>([]); const [preferredElements, setPreferredElements] = useState<string[]>([]); @@ -119,20 +121,22 @@ export function DslSelector(props: Props) { return ( <TextInputGroup className="search"> <TextInput - defaultValue={filter} + value={filterShown} type="text" autoComplete={"off"} autoFocus={true} - onChange={(_event, value) => setFilter(value)} + onChange={(_event, value) => { + setFilterShown(value); + setFilter(value); + }} aria-label="text input example" /> - {/*<TextInputGroupMain className="text-field" type="text" autoComplete={"off"}*/} - {/* value={filter}*/} - {/* autoFocus={true}*/} - {/* onChange={(_, value) => setFilter(value)}/>*/} <TextInputGroupUtilities> - <Button variant="plain" onClick={_ => setFilter('')}> - <TimesIcon/> + <Button variant="plain" onClick={_ => { + setFilterShown(''); + setFilter(''); + }}> + <TimesIcon aria-hidden={true}/> </Button> </TextInputGroupUtilities> </TextInputGroup> diff --git a/karavan-designer/src/designer/utils/CamelUi.tsx b/karavan-designer/src/designer/utils/CamelUi.tsx index fe6de7f2..15a3ba9f 100644 --- a/karavan-designer/src/designer/utils/CamelUi.tsx +++ b/karavan-designer/src/designer/utils/CamelUi.tsx @@ -36,7 +36,7 @@ import { CassandraIcon, ChatIcon, CloudIcon, - ClusterIcon, + ClusterIcon, CouchbaseIcon, DatabaseIcon, DebeziumIcon, DHIS2Icon, DirectIcon, DocumentIcon, @@ -63,7 +63,7 @@ import { OpenstackIcon, RedisIcon, RefIcon, - RpcIcon, + RpcIcon, SalesforceIcon, SapIcon, SchedulingIcon, ScriptIcon, @@ -72,7 +72,7 @@ import { SpringIcon, TerminalIcon, TestingIcon, - TransformationIcon, + TransformationIcon, TwilioIcon, TwitterIcon, ValidationIcon, VertXIcon, WebserviceIcon, WorkflowIcon @@ -591,6 +591,14 @@ export class CamelUi { return DirectIcon(); } else if (title.startsWith("Vert.x")) { return VertXIcon(); + } else if (title.startsWith("Couchbase")) { + return CouchbaseIcon(); + } else if (title.startsWith("Twilio")) { + return TwilioIcon(); + } else if (title.startsWith("Twitter")) { + return TwitterIcon(); + } else if (title.startsWith("Salesforce")) { + return SalesforceIcon(); } else if (title.startsWith("Slack")) { return SlackIcon(); } else if (title === "Exec") { diff --git a/karavan-space/src/designer/icons/ComponentIcons.tsx b/karavan-space/src/designer/icons/ComponentIcons.tsx index 5d13362a..c7f9c3ea 100644 --- a/karavan-space/src/designer/icons/ComponentIcons.tsx +++ b/karavan-space/src/designer/icons/ComponentIcons.tsx @@ -16,6 +16,35 @@ */ import React from 'react'; +export function SalesforceIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + xmlnsXlink="http://www.w3.org/1999/xlink" + viewBox="0 0 273 191" + className="icon" + > + <defs> + <path id="a" d="M.06.5h272v190H.06z" /> + </defs> + <g fillRule="evenodd"> + <path + fill="#00A1E0" + d="M113 21.3c8.78-9.14 21-14.8 34.5-14.8 18 0 33.6 10 42 24.9a58 58 0 0 1 23.7-5.05c32.4 0 58.7 26.5 58.7 59.2s-26.3 59.2-58.7 59.2c-3.96 0-7.82-.398-11.6-1.15-7.35 13.1-21.4 22-37.4 22a42.7 42.7 0 0 1-18.8-4.32c-7.45 17.5-24.8 29.8-45 29.8-21.1 0-39-13.3-45.9-32a45.1 45.1 0 0 1-9.34.972c-25.1 0-45.4-20.6-45.4-45.9 0-17 9.14-31.8 22.7-39.8a52.6 52.6 0 0 1-4.35-21c0-29.2 23.7-52.8 52.9-52.8 17.1 0 32.4 8.15 42 20.8" + mask="url(#b)" + /> + <path + fill="#FFFFFE" + d="M39.4 99.3c-.171.446.061.539.116.618.511.37 1.03.638 1.55.939 2.78 1.47 5.4 1.9 8.14 1.9 5.58 0 9.05-2.97 9.05-7.75v-.094c0-4.42-3.92-6.03-7.58-7.18l-.479-.155c-2.77-.898-5.16-1.68-5.16-3.5v-.093c0-1.56 1.4-2.71 3.56-2.71 2.4 0 5.26.799 7.09 1.81 0 0 .542.35.739-.173.107-.283 1.04-2.78 1.14-3.06.106-.293-.08-.514-.271-.628-2.1-1.28-5-2.15-8-2.15l-.557.002c-5.11 0-8.68 3.09-8.68 7.51v.095c0 4.66 3.94 6.18 7.62 7.23l.592.184c2.68.824 5 1.54 5 3.42v.094c0 1.73-1.5 [...] + /> + <path + fill="#FFFFFE" + d="M162.201 67.548a13.258 13.258 0 0 0-1.559-.37 12.217 12.217 0 0 0-2.144-.166c-2.853 0-5.102.806-6.681 2.398-1.568 1.58-2.635 3.987-3.17 7.154l-.193 1.069h-3.581s-.437-.018-.529.459l-.588 3.28c-.041.314.094.51.514.508h3.486l-3.537 19.743c-.277 1.59-.594 2.898-.945 3.889-.346.978-.684 1.711-1.1 2.243-.403.515-.785.894-1.444 1.115-.544.183-1.17.267-1.856.267-.382 0-.89-.064-1.265-.139-.375-.074-.57-.158-.851-.276 0 0-.409-.156-.57.254-.131.335-1.06 2.89-1.17 3.206 [...] + /> + </g> + </svg> + ) +} export function SlackIcon() { return ( <svg xmlns="http://www.w3.org/2000/svg" width={127} height={127} className="icon"> @@ -135,7 +164,6 @@ export function DHIS2Icon() { <defs id="defs1"> <style id="style1">{".cls-1{fill:#0080d4}"}</style> </defs> - <title id="title1">{"dhis2-logo-rgb-positive"}</title> <path id="path1" d="m189.415 56.477-82.74-53.66a19.75 19.75 0 0 0-20.33 0l-80.35 52.09a12 12 0 0 0-.25 20.63l80.54 54.94a19.39 19.39 0 0 0 20.38.25l82.75-53.65a11.87 11.87 0 0 0 0-20.59zm-91 61.45a4.29 4.29 0 0 1-3.49-.05l-77-52.49 76.71-49.78a4.76 4.76 0 0 1 3.74 0l78.91 51.15z" @@ -254,7 +282,6 @@ export function FileIcon() { xmlSpace="preserve" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"document"}</title> <path d="m25.7 9.3-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7zM18 4.4l5.6 5.6H18V4.4zM24 28H8V4h8v6c0 1.1.9 2 2 2h6v16z"/> <path d="M10 22h12v2H10zM10 16h12v2H10z"/> @@ -379,7 +406,6 @@ export function MailIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"email"}</title> <path d="M28 6H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2Zm-2.2 2L16 14.78 6.2 8ZM4 24V8.91l11.43 7.91a1 1 0 0 0 1.14 0L28 8.91V24Z"/> <path @@ -399,7 +425,6 @@ export function IotIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"iot--platform"}</title> <path d="M30 19h-4v-4h-2v9H8V8h9V6h-4V2h-2v4H8a2.002 2.002 0 0 0-2 2v3H2v2h4v6H2v2h4v3a2.002 2.002 0 0 0 2 2h3v4h2v-4h6v4h2v-4h3a2.003 2.003 0 0 0 2-2v-3h4Z"/> <path d="M21 21H11V11h10Zm-8-2h6v-6h-6ZM31 13h-2A10.012 10.012 0 0 0 19 3V1a12.013 12.013 0 0 1 12 12Z"/> @@ -880,7 +905,6 @@ export function TerminalIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"terminal"}</title> <path d="M26 4.01H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-20a2 2 0 0 0-2-2Zm0 2v4H6v-4Zm-20 20v-14h20v14Z"/> <path d="m10.76 16.18 2.82 2.83-2.82 2.83 1.41 1.41 4.24-4.24-4.24-4.24-1.41 1.41z"/> @@ -925,7 +949,6 @@ export function ScriptIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"script"}</title> <path d="m18.83 26 2.58-2.58L20 22l-4 4 4 4 1.42-1.41L18.83 26zM27.17 26l-2.58 2.58L26 30l4-4-4-4-1.42 1.41L27.17 26z"/> <path @@ -1111,7 +1134,6 @@ export function BlockchainIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"blockchain"}</title> <path d="M6 24H4V8h2ZM28 8h-2v16h2Zm-4-2V4H8v2Zm0 22v-2H8v2Z"/> <path d="M0 0h32v32H0z" @@ -1130,7 +1152,6 @@ export function ChatIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"chat"}</title> <path d="M17.74 30 16 29l4-7h6a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h9v2H6a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4h20a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4h-4.84Z"/> <path d="M8 10h16v2H8zM8 16h10v2H8z"/> @@ -1164,7 +1185,6 @@ export function WebserviceIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"fog"}</title> <path d="M25.829 13.116A10.02 10.02 0 0 0 16 5v2a8.023 8.023 0 0 1 7.865 6.493l.259 1.346 1.349.245A5.502 5.502 0 0 1 24.508 26H16v2h8.508a7.502 7.502 0 0 0 1.32-14.884ZM8 24h6v2H8zM4 24h2v2H4zM6 20h8v2H6zM2 20h2v2H2zM8 16h6v2H8zM4 16h2v2H4zM10 12h4v2h-4zM6 12h2v2H6zM12 8h2v2h-2z"/> <path @@ -1270,7 +1290,6 @@ export function TransformationIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"data-share"}</title> <path d="M5 25v-9.172l-3.586 3.586L0 18l6-6 6 6-1.414 1.414L7 15.828V25h12v2H7a2.002 2.002 0 0 1-2-2ZM24 22h4a2.002 2.002 0 0 1 2 2v4a2.002 2.002 0 0 1-2 2h-4a2.002 2.002 0 0 1-2-2v-4a2.002 2.002 0 0 1 2-2Zm4 6v-4h-4.002L24 28ZM27 6v9.172l3.586-3.586L32 13l-6 6-6-6 1.414-1.414L25 15.172V6H13V4h12a2.002 2.002 0 0 1 2 2ZM2 6h6v2H2zM2 2h8v2H2z"/> <path @@ -1311,7 +1330,6 @@ export function ApiIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"api"}</title> <path d="M26 22a3.86 3.86 0 0 0-2 .57l-3.09-3.1a6 6 0 0 0 0-6.94L24 9.43a3.86 3.86 0 0 0 2 .57 4 4 0 1 0-4-4 3.86 3.86 0 0 0 .57 2l-3.1 3.09a6 6 0 0 0-6.94 0L9.43 8A3.86 3.86 0 0 0 10 6a4 4 0 1 0-4 4 3.86 3.86 0 0 0 2-.57l3.09 3.1a6 6 0 0 0 0 6.94L8 22.57A3.86 3.86 0 0 0 6 22a4 4 0 1 0 4 4 3.86 3.86 0 0 0-.57-2l3.1-3.09a6 6 0 0 0 6.94 0l3.1 3.09a3.86 3.86 0 0 0-.57 2 4 4 0 1 0 4-4Zm0-18a2 2 0 1 1-2 2 2 2 0 0 1 2-2ZM4 6a2 2 0 1 1 2 2 2 2 0 0 1-2-2Zm2 22a2 2 0 1 1 2-2 2 2 0 0 1-2 [...] <path @@ -1331,7 +1349,6 @@ export function KameletIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" > - <title>{"application"}</title> <path d="M16 18H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2ZM6 6v10h10V6ZM26 12v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2ZM26 22v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2ZM16 22v4h-4v-4h4m0-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2Z" /> <path d="M0 0h32v32H0z" @@ -1344,6 +1361,65 @@ export function KameletIcon() { ) } +export function CouchbaseIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + viewBox="0 0 256 256" + className="icon" + > + <path + fill="#ED2226" + d="M128 0C57.426 0 0 57.233 0 128c0 70.574 57.233 128 128 128 70.574 0 128-57.233 128-128S198.574 0 128 0Zm86.429 150.429c0 7.734-4.447 14.502-13.148 16.048-15.082 2.707-46.792 4.254-73.281 4.254-26.49 0-58.2-1.547-73.281-4.254-8.7-1.546-13.148-8.314-13.148-16.048v-49.885c0-7.734 5.994-14.888 13.148-16.049 4.447-.773 14.888-1.546 23.01-1.546 3.093 0 5.606 2.32 5.606 5.994v34.997l44.858-.967 44.858.967V88.943c0-3.674 2.514-5.994 5.608-5.994 8.12 0 18.562.773 23.009 1.546 7 [...] + /> + </svg> + ); +} + +export function TwilioIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + preserveAspectRatio="xMidYMid" + viewBox="0 0 256 256" + className="icon" + > + <path + fill="#F12E45" + d="M128 0c70.656 0 128 57.344 128 128s-57.344 128-128 128S0 198.656 0 128 57.344 0 128 0Zm0 33.792c-52.224 0-94.208 41.984-94.208 94.208S75.776 222.208 128 222.208s94.208-41.984 94.208-94.208S180.224 33.792 128 33.792Zm31.744 99.328c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624-11.92-26.624-26.624 0-14.704 11.92-26.624 26.624-26.624Zm-63.488 0c14.704 0 26.624 11.92 26.624 26.624 0 14.704-11.92 26.624-26.624 26.624-14.704 0-26.624- [...] + /> + </svg> + ); +} + +export function TwitterIcon() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={800} + height={800} + viewBox="-0.25 -104.25 1109.5 1109.5" + className="icon" + > + <path + fill="#5da8dc" + stroke="#5da8dc" + strokeWidth={0.5} + d="M741 .2V0h52l19 3.8c12.667 2.467 24.167 5.7 34.5 9.7 10.334 4 20.334 8.667 30 14 9.667 5.333 18.434 10.767 26.301 16.3 7.8 5.467 14.8 11.267 21 17.4C929.933 67.4 939.5 69 952.5 66s27-7.167 42-12.5 29.834-11.333 44.5-18c14.667-6.667 23.601-10.9 26.801-12.7 3.133-1.866 4.8-2.866 5-3l.199-.3 1-.5 1-.5 1-.5 1-.5.2-.3.3-.2.301-.2.199-.3 1-.3 1-.2-.199 1.5-.301 1.5-.5 1.5-.5 1.5-.5 1-.5 1-.5 1.5c-.333 1-.666 2.333-1 4-.333 1.667-3.5 8.333-9.5 20S1051 73 1042 85s-17.066 21.06 [...] + /> + <path + fill="#fff" + stroke="#fff" + strokeWidth={0.5} + d="M0 399V0h741v.2c0 .2-4.333.966-13 2.3-8.666 1.333-19.333 4.167-32 8.5-12.666 4.333-26.5 10.667-41.5 19s-28.333 17.833-40 28.5c-11.666 10.667-21.166 21-28.5 31-7.333 10-13.266 18.9-17.8 26.7-4.466 7.866-9.033 18.3-13.7 31.3-4.666 13-8.166 25.833-10.5 38.5-2.333 12.667-3.5 26.5-3.5 41.5s.667 26.667 2 35l2 12.5.301 1.5.199 1.5-7-.2c-4.666-.2-13.333-.966-26-2.3-12.666-1.333-31.5-4.333-56.5-9s-42.666-8.5-53-11.5c-10.333-3-28.333-9.333-54-19-25.666-9.667-49.666-20.5-72-32.5- [...] + /> + </svg> + ); +} export function MonitoringIcon() { return ( @@ -1412,7 +1488,7 @@ export function KubernetesIcon(className?: string) { <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -10.44 722.846 722.846" - className={className ? className + " icon" : "icon"} + className={className ? className + " icon" : "icon"} width="32px" height="32px"> <path fill="#326ce5" @@ -1445,7 +1521,6 @@ export function DocumentIcon() { xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" className="icon" width="32px" height="32px"> - <title>{"document--blank"}</title> <path d="m25.7 9.3-7-7A.908.908 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h16a2.006 2.006 0 0 0 2-2V10a.908.908 0 0 0-.3-.7ZM18 4.4l5.6 5.6H18ZM24 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6Z"/> <path diff --git a/karavan-space/src/designer/selector/DslSelector.tsx b/karavan-space/src/designer/selector/DslSelector.tsx index 85837e12..23c1018d 100644 --- a/karavan-space/src/designer/selector/DslSelector.tsx +++ b/karavan-space/src/designer/selector/DslSelector.tsx @@ -40,7 +40,7 @@ import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon"; import {addPreferredElement, deletePreferredElement, getPreferredElements} from "./DslPreferences"; import {DslFastCard} from "./DslFastCard"; import {DslCard} from "./DslCard"; -import {useDebounceValue} from 'usehooks-ts'; +import {useDebounceCallback, useDebounceValue} from 'usehooks-ts'; interface Props { tabIndex?: string | number @@ -58,7 +58,9 @@ export function DslSelector(props: Props) { const {onDslSelect} = useRouteDesignerHook(); - const [filter, setFilter] = useDebounceValue('', 300) + const [filterShown, setFilterShown] = useState<string>(''); + const [filter, setFilter] = useDebounceValue('', 300); + const [customOnly, setCustomOnly] = useState<boolean>(false); const [elements, setElements] = useState<DslMetaModel[]>([]); const [preferredElements, setPreferredElements] = useState<string[]>([]); @@ -119,20 +121,22 @@ export function DslSelector(props: Props) { return ( <TextInputGroup className="search"> <TextInput - defaultValue={filter} + value={filterShown} type="text" autoComplete={"off"} autoFocus={true} - onChange={(_event, value) => setFilter(value)} + onChange={(_event, value) => { + setFilterShown(value); + setFilter(value); + }} aria-label="text input example" /> - {/*<TextInputGroupMain className="text-field" type="text" autoComplete={"off"}*/} - {/* value={filter}*/} - {/* autoFocus={true}*/} - {/* onChange={(_, value) => setFilter(value)}/>*/} <TextInputGroupUtilities> - <Button variant="plain" onClick={_ => setFilter('')}> - <TimesIcon/> + <Button variant="plain" onClick={_ => { + setFilterShown(''); + setFilter(''); + }}> + <TimesIcon aria-hidden={true}/> </Button> </TextInputGroupUtilities> </TextInputGroup> diff --git a/karavan-space/src/designer/utils/CamelUi.tsx b/karavan-space/src/designer/utils/CamelUi.tsx index fe6de7f2..15a3ba9f 100644 --- a/karavan-space/src/designer/utils/CamelUi.tsx +++ b/karavan-space/src/designer/utils/CamelUi.tsx @@ -36,7 +36,7 @@ import { CassandraIcon, ChatIcon, CloudIcon, - ClusterIcon, + ClusterIcon, CouchbaseIcon, DatabaseIcon, DebeziumIcon, DHIS2Icon, DirectIcon, DocumentIcon, @@ -63,7 +63,7 @@ import { OpenstackIcon, RedisIcon, RefIcon, - RpcIcon, + RpcIcon, SalesforceIcon, SapIcon, SchedulingIcon, ScriptIcon, @@ -72,7 +72,7 @@ import { SpringIcon, TerminalIcon, TestingIcon, - TransformationIcon, + TransformationIcon, TwilioIcon, TwitterIcon, ValidationIcon, VertXIcon, WebserviceIcon, WorkflowIcon @@ -591,6 +591,14 @@ export class CamelUi { return DirectIcon(); } else if (title.startsWith("Vert.x")) { return VertXIcon(); + } else if (title.startsWith("Couchbase")) { + return CouchbaseIcon(); + } else if (title.startsWith("Twilio")) { + return TwilioIcon(); + } else if (title.startsWith("Twitter")) { + return TwitterIcon(); + } else if (title.startsWith("Salesforce")) { + return SalesforceIcon(); } else if (title.startsWith("Slack")) { return SlackIcon(); } else if (title === "Exec") {