From d5844dd8db05a6dd3de7f718d809dfcb8e499bb9 Mon Sep 17 00:00:00 2001 From: dan13ram Date: Wed, 30 Sep 2020 08:51:13 +0530 Subject: [PATCH] Skills Selector (#124) * skills map in context * using react-select * removed sudo from package.json * fixed lint and format issues --- .prettierrc.json | 3 +- docker-compose.yml | 2 + package.json | 1 + packages/design-system/package.json | 3 +- packages/design-system/src/SelectSearch.tsx | 73 +++++++++++++++++++ packages/design-system/src/index.ts | 1 + .../web/components/Setup/SetupProfession.tsx | 6 +- packages/web/components/Setup/SetupSkills.tsx | 22 ++++++ packages/web/contexts/SetupContext.tsx | 21 +++++- packages/web/graphql/getSkills.ts | 38 ++++++++++ packages/web/pages/profile/setup.tsx | 29 +++++--- packages/web/utils/skillHelpers.ts | 33 +++++++++ yarn.lock | 54 ++++++++++++-- 13 files changed, 264 insertions(+), 22 deletions(-) create mode 100644 packages/design-system/src/SelectSearch.tsx create mode 100644 packages/web/components/Setup/SetupSkills.tsx create mode 100644 packages/web/graphql/getSkills.ts create mode 100644 packages/web/utils/skillHelpers.ts diff --git a/.prettierrc.json b/.prettierrc.json index 72f7c036..750b1644 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,5 +1,6 @@ { "printWidth": 80, "singleQuote": true, - "trailingComma": "all" + "trailingComma": "all", + "arrowParens": "always" } diff --git a/docker-compose.yml b/docker-compose.yml index d7ee3b9b..02aadaa4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,6 +39,8 @@ services: dockerfile: ./docker/backend/Dockerfile target: base command: yarn backend:dev + ports: + - 4000:4000 volumes: - ./packages/@types:/usr/src/app/packages/@types - ./packages/backend:/usr/src/app/packages/backend diff --git a/package.json b/package.json index 8168ab71..71b5fa00 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@types/node": "^14.6.4", "@types/react": "^16.9.43", "@types/react-dom": "^16.9.8", + "@types/react-select": "^3.0.20", "@typescript-eslint/eslint-plugin": "3.9.1", "@typescript-eslint/parser": "3.6.0", "eslint": "6.8.0", diff --git a/packages/design-system/package.json b/packages/design-system/package.json index ade5893a..3aab81a2 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -25,8 +25,9 @@ }, "dependencies": { "@chakra-ui/core": "next", + "@chakra-ui/icons": "next", "@chakra-ui/theme": "next", - "@chakra-ui/icons": "next" + "react-select": "^3.1.0" }, "devDependencies": { "@babel/core": "^7.10.5", diff --git a/packages/design-system/src/SelectSearch.tsx b/packages/design-system/src/SelectSearch.tsx new file mode 100644 index 00000000..0f90fd3f --- /dev/null +++ b/packages/design-system/src/SelectSearch.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import Select, { Props as SelectProps, Styles } from 'react-select'; + +import { theme } from './theme'; + +const selectStyles: Styles = { + menu: (styles) => ({ + ...styles, + background: theme.colors.purple[400], + }), + noOptionsMessage: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + input: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + groupHeading: (styles) => ({ + ...styles, + color: theme.colors.white, + }), + option: (styles) => ({ + ...styles, + background: theme.colors.dark, + ':hover': { + backgroundColor: theme.colors.purpleTag, + color: theme.colors.white, + }, + }), + control: (styles) => ({ + ...styles, + background: theme.colors.dark, + border: theme.colors.dark, + }), + multiValue: (styles) => ({ + ...styles, + background: theme.colors.purpleTag, + color: theme.colors.white, + }), + multiValueLabel: (styles) => ({ + ...styles, + background: theme.colors.purpleTag, + color: theme.colors.white, + }), + multiValueRemove: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), + clearIndicator: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), + dropdownIndicator: (styles) => ({ + ...styles, + color: theme.colors.white, + cursor: 'pointer', + ':hover': { + color: theme.colors.blueLight, + }, + }), +}; +export const SelectSearch: React.FC = (props) => ( +