From e26d821f738525477472e631d170d9ed218c1603 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 25 Feb 2022 19:17:09 +0100 Subject: chore: combine input/textarea/select in a single component --- src/components/Form/Form.module.scss | 70 ------------------------- src/components/Form/Form.tsx | 25 --------- src/components/Form/FormItem/FormItem.tsx | 7 --- src/components/Form/Input/Input.tsx | 50 ------------------ src/components/Form/Label/Label.module.scss | 22 -------- src/components/Form/Label/Label.tsx | 24 --------- src/components/Form/Select/Select.module.scss | 23 -------- src/components/Form/Select/Select.tsx | 56 -------------------- src/components/Form/TextArea/TextArea.tsx | 35 ------------- src/components/Form/Toggle/Toggle.module.scss | 75 --------------------------- src/components/Form/Toggle/Toggle.tsx | 46 ---------------- src/components/Form/index.tsx | 9 ---- 12 files changed, 442 deletions(-) delete mode 100644 src/components/Form/Form.module.scss delete mode 100644 src/components/Form/Form.tsx delete mode 100644 src/components/Form/FormItem/FormItem.tsx delete mode 100644 src/components/Form/Input/Input.tsx delete mode 100644 src/components/Form/Label/Label.module.scss delete mode 100644 src/components/Form/Label/Label.tsx delete mode 100644 src/components/Form/Select/Select.module.scss delete mode 100644 src/components/Form/Select/Select.tsx delete mode 100644 src/components/Form/TextArea/TextArea.tsx delete mode 100644 src/components/Form/Toggle/Toggle.module.scss delete mode 100644 src/components/Form/Toggle/Toggle.tsx delete mode 100644 src/components/Form/index.tsx (limited to 'src/components/Form') diff --git a/src/components/Form/Form.module.scss b/src/components/Form/Form.module.scss deleted file mode 100644 index 6ccdb11..0000000 --- a/src/components/Form/Form.module.scss +++ /dev/null @@ -1,70 +0,0 @@ -@use "@styles/abstracts/functions" as fun; - -.wrapper { - width: 100%; - - &--search, - &--toggle { - display: flex; - flex-flow: row nowrap; - align-items: center; - } - - &--toggle { - position: relative; - margin: var(--spacing-sm) 0; - } - - &--centered { - max-width: 45ch; - margin-left: auto; - margin-right: auto; - } -} - -.item { - margin: var(--spacing-xs) 0; - max-width: 45ch; -} - -.field { - width: 100%; - padding: var(--spacing-2xs) var(--spacing-xs); - background: var(--color-bg-tertiary); - border: fun.convert-px(2) solid var(--color-border); - box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-shadow); - transition: all 0.25s linear 0s; - - &:hover { - box-shadow: fun.convert-px(5) fun.convert-px(5) 0 fun.convert-px(1) - var(--color-shadow); - transform: translate(#{fun.convert-px(-3)}, #{fun.convert-px(-3)}); - } - - &:focus { - background: var(--color-bg); - border-color: var(--color-primary-darker); - box-shadow: 0 0 0 0 var(--color-shadow); - transform: translate(#{fun.convert-px(3)}, #{fun.convert-px(3)}); - outline: none; - transition: all 0.2s ease-in-out 0s, transform 0.3s ease-out 0s; - } -} - -.textarea { - min-height: fun.convert-px(200); -} - -.wrapper--search { - > input { - padding-right: calc(var(--btn-size) + var(--spacing-2xs)); - - &:hover ~ button { - transform: translate(fun.convert-px(-3), fun.convert-px(-3)); - } - - &:focus ~ button { - transform: translate(fun.convert-px(3), fun.convert-px(3)); - } - } -} diff --git a/src/components/Form/Form.tsx b/src/components/Form/Form.tsx deleted file mode 100644 index 44763c4..0000000 --- a/src/components/Form/Form.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { ReactNode } from 'react'; -import styles from './Form.module.scss'; - -const Form = ({ - children, - submitHandler, - modifier = '', - id, -}: { - children: ReactNode; - submitHandler: any; - modifier?: string; - id?: string; -}) => { - const withModifier = modifier ? styles[`wrapper--${modifier}`] : ''; - const classes = `${styles.wrapper} ${withModifier}`; - - return ( -
- {children} -
- ); -}; - -export default Form; diff --git a/src/components/Form/FormItem/FormItem.tsx b/src/components/Form/FormItem/FormItem.tsx deleted file mode 100644 index 0f12e64..0000000 --- a/src/components/Form/FormItem/FormItem.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import styles from '../Form.module.scss'; - -const FormItem: React.FunctionComponent = ({ children }) => { - return
{children}
; -}; - -export default FormItem; diff --git a/src/components/Form/Input/Input.tsx b/src/components/Form/Input/Input.tsx deleted file mode 100644 index 07f0410..0000000 --- a/src/components/Form/Input/Input.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { - ChangeEvent, - ForwardedRef, - forwardRef, - ReactElement, - SetStateAction, -} from 'react'; -import styles from '../Form.module.scss'; - -type InputType = 'text' | 'email' | 'number' | 'search'; - -const Input = ( - { - id, - name, - value, - setValue, - type = 'text', - label, - }: { - id: string; - name: string; - value: string; - setValue: (value: SetStateAction) => void; - type?: InputType; - label?: ReactElement; - }, - ref: ForwardedRef -) => { - const updateValue = (e: ChangeEvent) => { - setValue(e.target.value); - }; - - return ( - <> - {label} - - - ); -}; - -export default forwardRef(Input); diff --git a/src/components/Form/Label/Label.module.scss b/src/components/Form/Label/Label.module.scss deleted file mode 100644 index c527b16..0000000 --- a/src/components/Form/Label/Label.module.scss +++ /dev/null @@ -1,22 +0,0 @@ -@use "@styles/abstracts/functions" as fun; - -.regular { - display: block; - color: var(--color-primary-darker); - font-size: var(--font-size-sm); - font-variant: small-caps; - font-weight: 600; -} - -.settings { - --icon-size: #{fun.convert-px(25)}; - --toggle-width: #{fun.convert-px(45)}; - --toggle-height: calc(var(--toggle-width) / 2); - - display: inline-flex; - align-items: center; -} - -.required { - color: var(--color-secondary); -} diff --git a/src/components/Form/Label/Label.tsx b/src/components/Form/Label/Label.tsx deleted file mode 100644 index baedff0..0000000 --- a/src/components/Form/Label/Label.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import styles from './Label.module.scss'; - -type LabelKind = 'regular' | 'settings'; - -const Label = ({ - body, - htmlFor, - required = false, - kind = 'regular', -}: { - body: string; - htmlFor: string; - required?: boolean; - kind?: LabelKind; -}) => { - return ( - - ); -}; - -export default Label; diff --git a/src/components/Form/Select/Select.module.scss b/src/components/Form/Select/Select.module.scss deleted file mode 100644 index d4a40eb..0000000 --- a/src/components/Form/Select/Select.module.scss +++ /dev/null @@ -1,23 +0,0 @@ -@use "@styles/abstracts/functions" as fun; - -.wrapper { - padding: fun.convert-px(3) var(--spacing-xs); - background: var(--color-bg-tertiary); - border: fun.convert-px(2) solid var(--color-border); - box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-shadow); - cursor: pointer; - transition: all 0.3s ease-in-out 0s; - - &:hover { - box-shadow: fun.convert-px(4) fun.convert-px(4) 0 fun.convert-px(1) - var(--color-shadow); - transform: translate(#{fun.convert-px(-2)}, #{fun.convert-px(-2)}); - } - - &:focus { - background: var(--color-bg); - border-color: var(--color-primary); - box-shadow: 0 0 0 0 var(--color-shadow); - transform: translate(#{fun.convert-px(3)}, #{fun.convert-px(3)}); - } -} diff --git a/src/components/Form/Select/Select.tsx b/src/components/Form/Select/Select.tsx deleted file mode 100644 index feab991..0000000 --- a/src/components/Form/Select/Select.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { ChangeEvent, ReactElement, SetStateAction } from 'react'; -import styles from './Select.module.scss'; - -type SelectOptions = { - id: string; - name: string; - value: string; -}; - -const Select = ({ - options, - id, - name, - value, - setValue, - required = false, - label, -}: { - options: SelectOptions[]; - id: string; - name: string; - value: string; - setValue: (value: SetStateAction) => void; - required?: boolean; - label?: ReactElement; -}) => { - const getOptions = () => { - return options.map((option) => ( - - )); - }; - - const handleChange = (event: ChangeEvent) => { - setValue(event.target.value); - }; - - return ( - <> - {label} - - - ); -}; - -export default Select; diff --git a/src/components/Form/TextArea/TextArea.tsx b/src/components/Form/TextArea/TextArea.tsx deleted file mode 100644 index b8894ab..0000000 --- a/src/components/Form/TextArea/TextArea.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { ChangeEvent, ReactElement, SetStateAction } from 'react'; -import styles from '../Form.module.scss'; - -const TextArea = ({ - id, - name, - value, - setValue, - label, -}: { - id: string; - name: string; - value: string; - setValue: (value: SetStateAction) => void; - label?: ReactElement; -}) => { - const updateValue = (e: ChangeEvent) => { - setValue(e.target.value); - }; - - return ( - <> - {label} -