From bc5c32350415c8834052932b8cdd7c3cb232d499 Mon Sep 17 00:00:00 2001 From: Sebastian Helzle Date: Wed, 15 Feb 2023 09:16:58 +0100 Subject: [PATCH] FEATURE: Commandbar for modules Wrapped as webcomponent to prevent the module styles from interfering. Icons are now provided as prop to the CommandBar to allow using the react-ui-components in the UI and some custom implementation in the modules as the ui component is too heavy. --- ...uild-essentials-npm-8.2.3-d9fe30a4f4.patch | 19 - ...uild-essentials-npm-8.2.6-787ecaf75f.patch | 17 + package.json | 4 +- packages/commandbar/package.json | 2 +- packages/commandbar/src/CommandBar.tsx | 5 +- packages/commandbar/src/Variables.module.css | 4 +- .../CommandBarDialog.module.css | 17 + .../CommandBarFooter.module.css | 2 + .../CommandBarFooter/CommandBarFooter.tsx | 21 +- .../CommandBarHeader.module.css | 1 + .../CommandBarHeader/CommandBarHeader.tsx | 11 +- .../components/CommandList/CommandList.tsx | 2 + .../CommandListItem.module.css | 5 + .../CommandListItem/CommandListItem.tsx | 6 +- .../CommandResultsView.module.css | 35 ++ .../CommandResultsView/CommandResultsView.tsx | 6 +- .../src/components/Icon/Icon.module.css | 5 - .../commandbar/src/components/Icon/Icon.tsx | 20 -- .../IconWrapper/IconWrapper.module.css | 12 + .../components/IconWrapper/IconWrapper.tsx | 13 + .../components/SearchBox/SearchBox.module.css | 3 +- .../src/components/SearchBox/SearchBox.tsx | 11 +- .../ToggleButton/ToggleButton.module.css | 4 +- packages/commandbar/src/components/index.ts | 4 +- .../src/state/CommandBarStateProvider.tsx | 19 +- packages/commandbar/src/typings/global.d.ts | 3 + packages/dev-server/src/index.tsx | 13 + packages/module-plugin/package.json | 3 +- .../module-plugin/src/ModulePlugin.module.css | 27 +- packages/module-plugin/src/index.tsx | 134 ++++--- packages/ui-plugin/package.json | 5 +- packages/ui-plugin/src/CommandBarUiPlugin.tsx | 4 + yarn.lock | 328 ++++++++++++------ 33 files changed, 552 insertions(+), 213 deletions(-) delete mode 100644 .yarn/patches/@neos-project-build-essentials-npm-8.2.3-d9fe30a4f4.patch create mode 100644 .yarn/patches/@neos-project-build-essentials-npm-8.2.6-787ecaf75f.patch delete mode 100644 packages/commandbar/src/components/Icon/Icon.module.css delete mode 100644 packages/commandbar/src/components/Icon/Icon.tsx create mode 100644 packages/commandbar/src/components/IconWrapper/IconWrapper.module.css create mode 100644 packages/commandbar/src/components/IconWrapper/IconWrapper.tsx diff --git a/.yarn/patches/@neos-project-build-essentials-npm-8.2.3-d9fe30a4f4.patch b/.yarn/patches/@neos-project-build-essentials-npm-8.2.3-d9fe30a4f4.patch deleted file mode 100644 index 53f5ec8..0000000 --- a/.yarn/patches/@neos-project-build-essentials-npm-8.2.3-d9fe30a4f4.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/src/webpack.config.js b/src/webpack.config.js -index 2fa005bffa952dcdbe5ff657d54c9f090f60f1d0..5dfe3e872f077e440bf903d038e8a4a77039e24f 100644 ---- a/src/webpack.config.js -+++ b/src/webpack.config.js -@@ -123,14 +123,6 @@ const webpackConfig = { - }, - importLoaders: 1 - } -- }, -- { -- loader: 'postcss-loader', -- options: { -- config: { -- path: path.join(__dirname, 'postcss.config.js') -- } -- } - } - ] - }, diff --git a/.yarn/patches/@neos-project-build-essentials-npm-8.2.6-787ecaf75f.patch b/.yarn/patches/@neos-project-build-essentials-npm-8.2.6-787ecaf75f.patch new file mode 100644 index 0000000..2e65478 --- /dev/null +++ b/.yarn/patches/@neos-project-build-essentials-npm-8.2.6-787ecaf75f.patch @@ -0,0 +1,17 @@ +diff --git a/src/postcss.config.js b/src/postcss.config.js +index 7d74e8f86c90e5afe0b66c159918e0b6d53fcd96..17b22e59f103325cf7a3804d0c3fbfee7fbc45ff 100644 +--- a/src/postcss.config.js ++++ b/src/postcss.config.js +@@ -4,9 +4,9 @@ const styleVars = styles.generateCssVarsObject(styles.config); + module.exports = { + plugins: [ + require('autoprefixer'), +- require('postcss-css-variables')({ +- variables: Object.assign(styleVars) +- }), ++ // require('postcss-css-variables')({ ++ // variables: Object.assign(styleVars) ++ // }), + require('postcss-import')(), + require('postcss-nested')(), + require('postcss-hexrgba')() diff --git a/package.json b/package.json index c9604e3..59237e3 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@neos-commandbar/ui-plugin": "workspace:*" }, "devDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^16.14.35", "@typescript-eslint/eslint-plugin": "^5.47.1", "@typescript-eslint/parser": "^5.47.1", "eslint": "^8.30.0", @@ -51,6 +51,6 @@ ], "flat": true, "resolutions": { - "@neos-project/build-essentials@^8.2.3": "patch:@neos-project/build-essentials@npm%3A7.3.10#./.yarn/patches/@neos-project-build-essentials-npm-8.2.3-d9fe30a4f4.patch" + "@neos-project/build-essentials@^8.2.6": "patch:@neos-project/build-essentials@npm%3A8.2.6#./.yarn/patches/@neos-project-build-essentials-npm-8.2.6-787ecaf75f.patch" } } diff --git a/packages/commandbar/package.json b/packages/commandbar/package.json index 632af44..b49aa8a 100644 --- a/packages/commandbar/package.json +++ b/packages/commandbar/package.json @@ -2,7 +2,7 @@ "name": "@neos-commandbar/commandbar", "version": "1.0.0", "dependencies": { - "@neos-project/react-ui-components": "^8.2.3", + "classnames": "^2.3.2", "fuzzy-search": "^3.2.1", "react": "^16.14.0" }, diff --git a/packages/commandbar/src/CommandBar.tsx b/packages/commandbar/src/CommandBar.tsx index 2a070f1..630238a 100644 --- a/packages/commandbar/src/CommandBar.tsx +++ b/packages/commandbar/src/CommandBar.tsx @@ -10,11 +10,12 @@ type CommandBarProps = { open: boolean; toggleOpen: () => void; onDrag?: (state: boolean) => void; + IconComponent: React.FC; }; -const CommandBar: React.FC = ({ commands, open, toggleOpen, onDrag }) => { +const CommandBar: React.FC = ({ commands, open, toggleOpen, onDrag, IconComponent }) => { return ( - + ); diff --git a/packages/commandbar/src/Variables.module.css b/packages/commandbar/src/Variables.module.css index 76b69e4..8f27054 100644 --- a/packages/commandbar/src/Variables.module.css +++ b/packages/commandbar/src/Variables.module.css @@ -19,9 +19,11 @@ --dialog-blur: 5px; /* Neos UI colors */ - --grayLight: #3f3f3f; + --grayLight: #999; --grayLighter: #eee; --grayMedium: #323232; + --grayDark: #3f3f3f; + --gray: #555; --textSubtleLight: #adadad; --textOnGray: #fff; --textOnWhite: #252525; diff --git a/packages/commandbar/src/components/CommandBarDialog/CommandBarDialog.module.css b/packages/commandbar/src/components/CommandBarDialog/CommandBarDialog.module.css index 515bc87..d6e3e7b 100644 --- a/packages/commandbar/src/components/CommandBarDialog/CommandBarDialog.module.css +++ b/packages/commandbar/src/components/CommandBarDialog/CommandBarDialog.module.css @@ -31,6 +31,23 @@ font-size: 90%; } +.commandBar ::-webkit-scrollbar { + width: 4px; + height: 4px; +} + +.commandBar ::-webkit-scrollbar-track { + background-color: transparent; +} + +.commandBar ::-webkit-scrollbar-thumb { + background-color: var(--grayLight); +} + +.commandBar ::-webkit-scrollbar-corner { + background-color: var(--grayDark); +} + .resultsWrap { display: grid; grid-template-rows: 0fr; diff --git a/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.module.css b/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.module.css index 44f7b5e..c1bbc6a 100644 --- a/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.module.css +++ b/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.module.css @@ -12,11 +12,13 @@ .breadcrumb { display: flex; gap: 1rem; + --icon-size: 0.875em; } .activity { display: flex; gap: 1rem; + --icon-size: 0.875em; } .madeWithLove { diff --git a/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.tsx b/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.tsx index 1aa6098..5c0f8e5 100644 --- a/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.tsx +++ b/packages/commandbar/src/components/CommandBarFooter/CommandBarFooter.tsx @@ -1,13 +1,14 @@ import React from 'react'; -import Icon from '../Icon/Icon'; import { useCommandBarState } from '../../state'; import * as styles from './CommandBarFooter.module.css'; +import IconWrapper from '../IconWrapper/IconWrapper'; const CommandBarFooter: React.FC = () => { const { state: { activeCommandId, activeCommandMessage, commands, result, selectedCommandGroup, expanded }, + Icon, } = useCommandBarState(); if (!expanded) return null; @@ -18,7 +19,14 @@ const CommandBarFooter: React.FC = () => {