diff options
author | Dominik Guzei <dominik.guzei@gmail.com> | 2019-04-11 12:00:07 +0200 |
---|---|---|
committer | Dominik Guzei <dominik.guzei@gmail.com> | 2019-04-11 12:00:07 +0200 |
commit | e43d6bd80b3d76aae627fa8174eea98c14016549 (patch) | |
tree | de1d0a3ba10100ce68d0cb1ed618095e362fe573 /packages/forms/src | |
parent | implements basic release announcement feature (diff) | |
parent | handle deleted services that are attached to workspaces (diff) | |
download | ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.tar.gz ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.tar.zst ferdium-app-e43d6bd80b3d76aae627fa8174eea98c14016549.zip |
merge-in workspace feature
Diffstat (limited to 'packages/forms/src')
-rw-r--r-- | packages/forms/src/button/index.tsx | 1 | ||||
-rw-r--r-- | packages/forms/src/input/index.tsx | 20 | ||||
-rw-r--r-- | packages/forms/src/input/styles.ts | 7 | ||||
-rw-r--r-- | packages/forms/src/label/index.tsx | 6 | ||||
-rw-r--r-- | packages/forms/src/label/styles.ts | 4 | ||||
-rw-r--r-- | packages/forms/src/select/index.tsx | 8 | ||||
-rw-r--r-- | packages/forms/src/toggle/index.tsx | 4 | ||||
-rw-r--r-- | packages/forms/src/typings/generic.ts | 1 |
8 files changed, 43 insertions, 8 deletions
diff --git a/packages/forms/src/button/index.tsx b/packages/forms/src/button/index.tsx index 7a7f83dab..6959cde73 100644 --- a/packages/forms/src/button/index.tsx +++ b/packages/forms/src/button/index.tsx | |||
@@ -44,6 +44,7 @@ const styles = (theme: Theme) => ({ | |||
44 | width: (props: IProps) => (props.stretch ? '100%' : 'auto') as CSS.WidthProperty<string>, | 44 | width: (props: IProps) => (props.stretch ? '100%' : 'auto') as CSS.WidthProperty<string>, |
45 | fontSize: theme.uiFontSize, | 45 | fontSize: theme.uiFontSize, |
46 | textDecoration: 'none', | 46 | textDecoration: 'none', |
47 | height: theme.buttonHeight, | ||
47 | 48 | ||
48 | '&:hover': { | 49 | '&:hover': { |
49 | opacity: 0.8, | 50 | opacity: 0.8, |
diff --git a/packages/forms/src/input/index.tsx b/packages/forms/src/input/index.tsx index 478738cad..a2d7c62d5 100644 --- a/packages/forms/src/input/index.tsx +++ b/packages/forms/src/input/index.tsx | |||
@@ -25,6 +25,7 @@ interface IProps extends React.InputHTMLAttributes<HTMLInputElement>, IFormField | |||
25 | showPasswordToggle?: boolean; | 25 | showPasswordToggle?: boolean; |
26 | data: IData; | 26 | data: IData; |
27 | inputClassName?: string; | 27 | inputClassName?: string; |
28 | onEnterKey?: Function; | ||
28 | } | 29 | } |
29 | 30 | ||
30 | interface IState { | 31 | interface IState { |
@@ -33,7 +34,7 @@ interface IState { | |||
33 | } | 34 | } |
34 | 35 | ||
35 | class InputComponent extends Component<IProps, IState> { | 36 | class InputComponent extends Component<IProps, IState> { |
36 | public static defaultProps = { | 37 | static defaultProps = { |
37 | focus: false, | 38 | focus: false, |
38 | onChange: () => {}, | 39 | onChange: () => {}, |
39 | onBlur: () => {}, | 40 | onBlur: () => {}, |
@@ -81,6 +82,13 @@ class InputComponent extends Component<IProps, IState> { | |||
81 | } | 82 | } |
82 | } | 83 | } |
83 | 84 | ||
85 | onInputKeyPress(e: React.KeyboardEvent) { | ||
86 | if (e.key === "Enter") { | ||
87 | const { onEnterKey } = this.props; | ||
88 | onEnterKey && onEnterKey(); | ||
89 | } | ||
90 | } | ||
91 | |||
84 | render() { | 92 | render() { |
85 | const { | 93 | const { |
86 | classes, | 94 | classes, |
@@ -102,6 +110,10 @@ class InputComponent extends Component<IProps, IState> { | |||
102 | spellCheck, | 110 | spellCheck, |
103 | onBlur, | 111 | onBlur, |
104 | onFocus, | 112 | onFocus, |
113 | min, | ||
114 | max, | ||
115 | step, | ||
116 | required, | ||
105 | } = this.props; | 117 | } = this.props; |
106 | 118 | ||
107 | const { | 119 | const { |
@@ -120,6 +132,8 @@ class InputComponent extends Component<IProps, IState> { | |||
120 | title={label} | 132 | title={label} |
121 | showLabel={showLabel} | 133 | showLabel={showLabel} |
122 | htmlFor={id} | 134 | htmlFor={id} |
135 | className={classes.label} | ||
136 | isRequired={required} | ||
123 | > | 137 | > |
124 | <div | 138 | <div |
125 | className={classnames({ | 139 | className={classnames({ |
@@ -147,6 +161,10 @@ class InputComponent extends Component<IProps, IState> { | |||
147 | onFocus={onFocus} | 161 | onFocus={onFocus} |
148 | onBlur={onBlur} | 162 | onBlur={onBlur} |
149 | disabled={disabled} | 163 | disabled={disabled} |
164 | onKeyPress={this.onInputKeyPress.bind(this)} | ||
165 | min={min} | ||
166 | max={max} | ||
167 | step={step} | ||
150 | /> | 168 | /> |
151 | {suffix && ( | 169 | {suffix && ( |
152 | <span className={classes.suffix}> | 170 | <span className={classes.suffix}> |
diff --git a/packages/forms/src/input/styles.ts b/packages/forms/src/input/styles.ts index a64d2c340..e2ab30a4f 100644 --- a/packages/forms/src/input/styles.ts +++ b/packages/forms/src/input/styles.ts | |||
@@ -4,12 +4,17 @@ import CSS from 'csstype'; | |||
4 | const prefixStyles = (theme: Theme) => ({ | 4 | const prefixStyles = (theme: Theme) => ({ |
5 | background: theme.inputPrefixBackground, | 5 | background: theme.inputPrefixBackground, |
6 | color: theme.inputPrefixColor, | 6 | color: theme.inputPrefixColor, |
7 | lineHeight: theme.inputHeight, | 7 | lineHeight: `${theme.inputHeight}px`, |
8 | padding: '0 10px', | 8 | padding: '0 10px', |
9 | fontSize: theme.uiFontSize, | 9 | fontSize: theme.uiFontSize, |
10 | }); | 10 | }); |
11 | 11 | ||
12 | export default (theme: Theme) => ({ | 12 | export default (theme: Theme) => ({ |
13 | label: { | ||
14 | '& > div': { | ||
15 | marginTop: 5, | ||
16 | } | ||
17 | }, | ||
13 | disabled: { | 18 | disabled: { |
14 | opacity: theme.inputDisabledOpacity, | 19 | opacity: theme.inputDisabledOpacity, |
15 | }, | 20 | }, |
diff --git a/packages/forms/src/label/index.tsx b/packages/forms/src/label/index.tsx index 36fcfbedf..1b33ba22c 100644 --- a/packages/forms/src/label/index.tsx +++ b/packages/forms/src/label/index.tsx | |||
@@ -9,6 +9,7 @@ import styles from './styles'; | |||
9 | 9 | ||
10 | interface ILabel extends IFormField, React.LabelHTMLAttributes<HTMLLabelElement> { | 10 | interface ILabel extends IFormField, React.LabelHTMLAttributes<HTMLLabelElement> { |
11 | classes: Classes; | 11 | classes: Classes; |
12 | isRequired: boolean; | ||
12 | } | 13 | } |
13 | 14 | ||
14 | class LabelComponent extends Component<ILabel> { | 15 | class LabelComponent extends Component<ILabel> { |
@@ -24,8 +25,11 @@ class LabelComponent extends Component<ILabel> { | |||
24 | className, | 25 | className, |
25 | children, | 26 | children, |
26 | htmlFor, | 27 | htmlFor, |
28 | isRequired, | ||
27 | } = this.props; | 29 | } = this.props; |
28 | 30 | ||
31 | if (!showLabel) return children; | ||
32 | |||
29 | return ( | 33 | return ( |
30 | <label | 34 | <label |
31 | className={classnames({ | 35 | className={classnames({ |
@@ -34,7 +38,7 @@ class LabelComponent extends Component<ILabel> { | |||
34 | htmlFor={htmlFor} | 38 | htmlFor={htmlFor} |
35 | > | 39 | > |
36 | {showLabel && ( | 40 | {showLabel && ( |
37 | <span className={classes.label}>{title}</span> | 41 | <span className={classes.label}>{title}{isRequired && ' *'}</span> |
38 | )} | 42 | )} |
39 | <div className={classes.content}> | 43 | <div className={classes.content}> |
40 | {children} | 44 | {children} |
diff --git a/packages/forms/src/label/styles.ts b/packages/forms/src/label/styles.ts index f3998de04..c64c9b285 100644 --- a/packages/forms/src/label/styles.ts +++ b/packages/forms/src/label/styles.ts | |||
@@ -1,9 +1,7 @@ | |||
1 | import { Theme } from '../../../theme/lib'; | 1 | import { Theme } from '../../../theme/lib'; |
2 | 2 | ||
3 | export default (theme: Theme) => ({ | 3 | export default (theme: Theme) => ({ |
4 | content: { | 4 | content: {}, |
5 | marginTop: 5, | ||
6 | }, | ||
7 | label: { | 5 | label: { |
8 | color: theme.labelColor, | 6 | color: theme.labelColor, |
9 | fontSize: theme.uiFontSize, | 7 | fontSize: theme.uiFontSize, |
diff --git a/packages/forms/src/select/index.tsx b/packages/forms/src/select/index.tsx index 4a9e3c56e..0e5ded176 100644 --- a/packages/forms/src/select/index.tsx +++ b/packages/forms/src/select/index.tsx | |||
@@ -56,6 +56,11 @@ const styles = (theme: Theme) => ({ | |||
56 | textAlign: 'left', | 56 | textAlign: 'left', |
57 | color: theme.selectColor, | 57 | color: theme.selectColor, |
58 | }, | 58 | }, |
59 | label: { | ||
60 | '& > div': { | ||
61 | marginTop: 5, | ||
62 | } | ||
63 | }, | ||
59 | popup: { | 64 | popup: { |
60 | opacity: 0, | 65 | opacity: 0, |
61 | height: 0, | 66 | height: 0, |
@@ -306,6 +311,7 @@ class SelectComponent extends Component<IProps> { | |||
306 | showLabel, | 311 | showLabel, |
307 | showSearch, | 312 | showSearch, |
308 | onChange, | 313 | onChange, |
314 | required, | ||
309 | } = this.props; | 315 | } = this.props; |
310 | 316 | ||
311 | const { | 317 | const { |
@@ -334,6 +340,8 @@ class SelectComponent extends Component<IProps> { | |||
334 | title={label} | 340 | title={label} |
335 | showLabel={showLabel} | 341 | showLabel={showLabel} |
336 | htmlFor={id} | 342 | htmlFor={id} |
343 | className={classes.label} | ||
344 | isRequired={required} | ||
337 | > | 345 | > |
338 | <div | 346 | <div |
339 | className={classnames({ | 347 | className={classnames({ |
diff --git a/packages/forms/src/toggle/index.tsx b/packages/forms/src/toggle/index.tsx index 6487f1d07..d84508a5f 100644 --- a/packages/forms/src/toggle/index.tsx +++ b/packages/forms/src/toggle/index.tsx | |||
@@ -1,7 +1,7 @@ | |||
1 | import { Theme } from '@meetfranz/theme'; | 1 | import { Theme } from '@meetfranz/theme'; |
2 | import classnames from 'classnames'; | 2 | import classnames from 'classnames'; |
3 | import CSS from 'csstype'; | 3 | import CSS from 'csstype'; |
4 | import React, { Component, createRef } from 'react'; | 4 | import React, { Component } from 'react'; |
5 | import injectStyle from 'react-jss'; | 5 | import injectStyle from 'react-jss'; |
6 | 6 | ||
7 | import { IFormField, IWithStyle, Omit } from '../typings/generic'; | 7 | import { IFormField, IWithStyle, Omit } from '../typings/generic'; |
@@ -45,11 +45,11 @@ const styles = (theme: Theme) => ({ | |||
45 | }, | 45 | }, |
46 | toggleLabel: { | 46 | toggleLabel: { |
47 | display: 'flex', | 47 | display: 'flex', |
48 | alignItems: 'center', | ||
48 | 49 | ||
49 | '& > span': { | 50 | '& > span': { |
50 | order: 1, | 51 | order: 1, |
51 | marginLeft: 15, | 52 | marginLeft: 15, |
52 | marginTop: 2, | ||
53 | }, | 53 | }, |
54 | }, | 54 | }, |
55 | }); | 55 | }); |
diff --git a/packages/forms/src/typings/generic.ts b/packages/forms/src/typings/generic.ts index b7f2fc452..9688ce2c7 100644 --- a/packages/forms/src/typings/generic.ts +++ b/packages/forms/src/typings/generic.ts | |||
@@ -5,6 +5,7 @@ export interface IFormField { | |||
5 | showLabel?: boolean; | 5 | showLabel?: boolean; |
6 | label?: string; | 6 | label?: string; |
7 | error?: string; | 7 | error?: string; |
8 | required?: boolean; | ||
8 | } | 9 | } |
9 | 10 | ||
10 | export interface IWithStyle { | 11 | export interface IWithStyle { |