@pareto-engineering/design-system 4.0.0-alpha.62 → 4.0.0-alpha.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/cjs/f/FormInput/FormInput.js +43 -13
  2. package/dist/cjs/f/common/V2/Description/Description.js +76 -0
  3. package/dist/cjs/f/common/V2/Description/index.js +13 -0
  4. package/dist/cjs/f/common/V2/Description/styles.scss +10 -0
  5. package/dist/cjs/f/common/V2/Label/Label.js +84 -0
  6. package/dist/cjs/f/common/V2/Label/index.js +13 -0
  7. package/dist/cjs/f/common/V2/Label/styles.scss +9 -0
  8. package/dist/cjs/f/common/V2/index.js +19 -0
  9. package/dist/cjs/f/common/index.js +12 -0
  10. package/dist/cjs/f/fields/V2/Checkbox/Checkbox.js +122 -0
  11. package/dist/cjs/f/fields/V2/Checkbox/index.js +13 -0
  12. package/dist/cjs/f/fields/V2/Checkbox/styles.scss +16 -0
  13. package/dist/cjs/f/fields/V2/ChoicesInput/ChoicesInput.js +154 -0
  14. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/Choice.js +104 -0
  15. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/index.js +13 -0
  16. package/dist/cjs/f/fields/V2/ChoicesInput/common/index.js +12 -0
  17. package/dist/cjs/f/fields/V2/ChoicesInput/index.js +13 -0
  18. package/dist/cjs/f/fields/V2/ChoicesInput/styles.scss +79 -0
  19. package/dist/cjs/f/fields/V2/EditorInput/EditorInput.js +197 -0
  20. package/dist/cjs/f/fields/V2/EditorInput/common/Toolbar.js +257 -0
  21. package/dist/cjs/f/fields/V2/EditorInput/common/TreeViewPlugin.js +18 -0
  22. package/dist/cjs/f/fields/V2/EditorInput/common/index.js +20 -0
  23. package/dist/cjs/f/fields/V2/EditorInput/index.js +13 -0
  24. package/dist/cjs/f/fields/V2/EditorInput/styles.scss +149 -0
  25. package/dist/cjs/f/fields/V2/LinkInput/LinkInput.js +156 -0
  26. package/dist/cjs/f/fields/V2/LinkInput/index.js +13 -0
  27. package/dist/cjs/f/fields/V2/LinkInput/styles.scss +90 -0
  28. package/dist/cjs/f/fields/V2/QueryChoices/QueryChoices.js +137 -0
  29. package/dist/cjs/f/fields/V2/QueryChoices/index.js +13 -0
  30. package/dist/cjs/f/fields/V2/QueryCombobox/QueryCombobox.js +229 -0
  31. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +236 -0
  32. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/index.js +13 -0
  33. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/Menu.js +83 -0
  34. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/index.js +13 -0
  35. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +300 -0
  36. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +13 -0
  37. package/dist/cjs/f/fields/V2/QueryCombobox/common/index.js +26 -0
  38. package/dist/cjs/f/fields/V2/QueryCombobox/index.js +13 -0
  39. package/dist/cjs/f/fields/V2/QueryCombobox/styles.scss +127 -0
  40. package/dist/cjs/f/fields/V2/QuerySelect/QuerySelect.js +198 -0
  41. package/dist/cjs/f/fields/V2/QuerySelect/index.js +13 -0
  42. package/dist/cjs/f/fields/V2/RatingsInput/RatingsInput.js +130 -0
  43. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/Rating.js +117 -0
  44. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/index.js +13 -0
  45. package/dist/cjs/f/fields/V2/RatingsInput/common/index.js +12 -0
  46. package/dist/cjs/f/fields/V2/RatingsInput/index.js +13 -0
  47. package/dist/cjs/f/fields/V2/RatingsInput/styles.scss +48 -0
  48. package/dist/cjs/f/fields/V2/SelectInput/SelectInput.js +154 -0
  49. package/dist/cjs/f/fields/V2/SelectInput/index.js +13 -0
  50. package/dist/cjs/f/fields/V2/SelectInput/styles.scss +87 -0
  51. package/dist/cjs/f/fields/V2/TextInput/TextInput.js +155 -0
  52. package/dist/cjs/f/fields/V2/TextInput/index.js +13 -0
  53. package/dist/cjs/f/fields/V2/TextInput/styles.scss +78 -0
  54. package/dist/cjs/f/fields/V2/TextareaInput/TextareaInput.js +152 -0
  55. package/dist/cjs/f/fields/V2/TextareaInput/index.js +13 -0
  56. package/dist/cjs/f/fields/V2/TextareaInput/styles.scss +53 -0
  57. package/dist/cjs/f/fields/V2/index.js +82 -0
  58. package/dist/cjs/f/fields/index.js +26 -1
  59. package/dist/es/f/FormInput/FormInput.js +33 -3
  60. package/dist/es/f/common/V2/Description/Description.js +68 -0
  61. package/dist/es/f/common/V2/Description/index.js +2 -0
  62. package/dist/es/f/common/V2/Description/styles.scss +10 -0
  63. package/dist/es/f/common/V2/Label/Label.js +76 -0
  64. package/dist/es/f/common/V2/Label/index.js +2 -0
  65. package/dist/es/f/common/V2/Label/styles.scss +9 -0
  66. package/dist/es/f/common/V2/index.js +2 -0
  67. package/dist/es/f/common/index.js +2 -1
  68. package/dist/es/f/fields/V2/Checkbox/Checkbox.js +114 -0
  69. package/dist/es/f/fields/V2/Checkbox/index.js +2 -0
  70. package/dist/es/f/fields/V2/Checkbox/styles.scss +16 -0
  71. package/dist/es/f/fields/V2/ChoicesInput/ChoicesInput.js +148 -0
  72. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/Choice.js +97 -0
  73. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  74. package/dist/es/f/fields/V2/ChoicesInput/common/index.js +1 -0
  75. package/dist/es/f/fields/V2/ChoicesInput/index.js +2 -0
  76. package/dist/es/f/fields/V2/ChoicesInput/styles.scss +79 -0
  77. package/dist/es/f/fields/V2/EditorInput/EditorInput.js +192 -0
  78. package/dist/es/f/fields/V2/EditorInput/common/Toolbar.js +246 -0
  79. package/dist/es/f/fields/V2/EditorInput/common/TreeViewPlugin.js +11 -0
  80. package/dist/es/f/fields/V2/EditorInput/common/index.js +2 -0
  81. package/dist/es/f/fields/V2/EditorInput/index.js +2 -0
  82. package/dist/es/f/fields/V2/EditorInput/styles.scss +149 -0
  83. package/dist/es/f/fields/V2/LinkInput/LinkInput.js +148 -0
  84. package/dist/es/f/fields/V2/LinkInput/index.js +2 -0
  85. package/dist/es/f/fields/V2/LinkInput/styles.scss +90 -0
  86. package/dist/es/f/fields/V2/QueryChoices/QueryChoices.js +126 -0
  87. package/dist/es/f/fields/V2/QueryChoices/index.js +2 -0
  88. package/dist/es/f/fields/V2/QueryCombobox/QueryCombobox.js +221 -0
  89. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +229 -0
  90. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  91. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/Menu.js +73 -0
  92. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  93. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +293 -0
  94. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  95. package/dist/es/f/fields/V2/QueryCombobox/common/index.js +3 -0
  96. package/dist/es/f/fields/V2/QueryCombobox/index.js +2 -0
  97. package/dist/es/f/fields/V2/QueryCombobox/styles.scss +127 -0
  98. package/dist/es/f/fields/V2/QuerySelect/QuerySelect.js +186 -0
  99. package/dist/es/f/fields/V2/QuerySelect/index.js +2 -0
  100. package/dist/es/f/fields/V2/RatingsInput/RatingsInput.js +124 -0
  101. package/dist/es/f/fields/V2/RatingsInput/common/Rating/Rating.js +109 -0
  102. package/dist/es/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  103. package/dist/es/f/fields/V2/RatingsInput/common/index.js +1 -0
  104. package/dist/es/f/fields/V2/RatingsInput/index.js +2 -0
  105. package/dist/es/f/fields/V2/RatingsInput/styles.scss +48 -0
  106. package/dist/es/f/fields/V2/SelectInput/SelectInput.js +146 -0
  107. package/dist/es/f/fields/V2/SelectInput/index.js +2 -0
  108. package/dist/es/f/fields/V2/SelectInput/styles.scss +87 -0
  109. package/dist/es/f/fields/V2/TextInput/TextInput.js +147 -0
  110. package/dist/es/f/fields/V2/TextInput/index.js +2 -0
  111. package/dist/es/f/fields/V2/TextInput/styles.scss +78 -0
  112. package/dist/es/f/fields/V2/TextareaInput/TextareaInput.js +146 -0
  113. package/dist/es/f/fields/V2/TextareaInput/index.js +2 -0
  114. package/dist/es/f/fields/V2/TextareaInput/styles.scss +53 -0
  115. package/dist/es/f/fields/V2/index.js +11 -0
  116. package/dist/es/f/fields/index.js +2 -1
  117. package/package.json +3 -3
  118. package/src/stories/f/v2/Checkbox.stories.jsx +102 -0
  119. package/src/stories/f/v2/ChoicesInput.stories.jsx +139 -0
  120. package/src/stories/f/v2/EditorInput.stories.jsx +81 -0
  121. package/src/stories/f/v2/LinkInput.stories.jsx +93 -0
  122. package/src/stories/f/v2/QueryChoices.stories.jsx +144 -0
  123. package/src/stories/f/v2/QueryCombobox.stories.jsx +301 -0
  124. package/src/stories/f/v2/QuerySelect.stories.jsx +150 -0
  125. package/src/stories/f/v2/RatingsInput.stories.jsx +77 -0
  126. package/src/stories/f/v2/SelectInput.stories.jsx +95 -0
  127. package/src/stories/f/v2/TextInput.stories.jsx +120 -0
  128. package/src/stories/f/v2/TextareaInput.stories.jsx +107 -0
  129. package/src/stories/f/v2/__generated__/FormInputAllTaskStatusesQuery.graphql.js +122 -0
  130. package/src/stories/f/v2/__generated__/FormInputAllTeamsQuery.graphql.js +139 -0
  131. package/src/stories/f/v2/__generated__/QueryChoicesAllTaskStatusesQuery.graphql.js +122 -0
  132. package/src/stories/f/v2/__generated__/QueryComboboxAllTeamsQuery.graphql.js +139 -0
  133. package/src/stories/f/v2/__generated__/QuerySelectAllTaskStatusesQuery.graphql.js +122 -0
  134. package/src/ui/f/FormInput/FormInput.jsx +57 -12
  135. package/src/ui/f/common/V2/Description/Description.jsx +94 -0
  136. package/src/ui/f/common/V2/Description/index.js +2 -0
  137. package/src/ui/f/common/V2/Description/styles.scss +10 -0
  138. package/src/ui/f/common/V2/Label/Label.jsx +102 -0
  139. package/src/ui/f/common/V2/Label/index.js +2 -0
  140. package/src/ui/f/common/V2/Label/styles.scss +9 -0
  141. package/src/ui/f/common/V2/index.js +2 -0
  142. package/src/ui/f/common/index.js +1 -0
  143. package/src/ui/f/fields/V2/Checkbox/Checkbox.jsx +146 -0
  144. package/src/ui/f/fields/V2/Checkbox/index.js +2 -0
  145. package/src/ui/f/fields/V2/Checkbox/styles.scss +16 -0
  146. package/src/ui/f/fields/V2/ChoicesInput/ChoicesInput.jsx +183 -0
  147. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/Choice.jsx +125 -0
  148. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  149. package/src/ui/f/fields/V2/ChoicesInput/common/index.js +1 -0
  150. package/src/ui/f/fields/V2/ChoicesInput/index.js +2 -0
  151. package/src/ui/f/fields/V2/ChoicesInput/styles.scss +79 -0
  152. package/src/ui/f/fields/V2/EditorInput/EditorInput.jsx +244 -0
  153. package/src/ui/f/fields/V2/EditorInput/common/Toolbar.jsx +356 -0
  154. package/src/ui/f/fields/V2/EditorInput/common/TreeViewPlugin.jsx +16 -0
  155. package/src/ui/f/fields/V2/EditorInput/common/index.jsx +2 -0
  156. package/src/ui/f/fields/V2/EditorInput/index.js +2 -0
  157. package/src/ui/f/fields/V2/EditorInput/styles.scss +149 -0
  158. package/src/ui/f/fields/V2/LinkInput/LinkInput.jsx +187 -0
  159. package/src/ui/f/fields/V2/LinkInput/index.js +2 -0
  160. package/src/ui/f/fields/V2/LinkInput/styles.scss +90 -0
  161. package/src/ui/f/fields/V2/QueryChoices/QueryChoices.jsx +153 -0
  162. package/src/ui/f/fields/V2/QueryChoices/index.js +2 -0
  163. package/src/ui/f/fields/V2/QueryCombobox/QueryCombobox.jsx +254 -0
  164. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/Combobox.jsx +276 -0
  165. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  166. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/Menu.jsx +103 -0
  167. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  168. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +362 -0
  169. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  170. package/src/ui/f/fields/V2/QueryCombobox/common/index.js +3 -0
  171. package/src/ui/f/fields/V2/QueryCombobox/index.js +2 -0
  172. package/src/ui/f/fields/V2/QueryCombobox/styles.scss +127 -0
  173. package/src/ui/f/fields/V2/QuerySelect/QuerySelect.jsx +220 -0
  174. package/src/ui/f/fields/V2/QuerySelect/index.js +2 -0
  175. package/src/ui/f/fields/V2/RatingsInput/RatingsInput.jsx +152 -0
  176. package/src/ui/f/fields/V2/RatingsInput/common/Rating/Rating.jsx +142 -0
  177. package/src/ui/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  178. package/src/ui/f/fields/V2/RatingsInput/common/index.js +1 -0
  179. package/src/ui/f/fields/V2/RatingsInput/index.js +2 -0
  180. package/src/ui/f/fields/V2/RatingsInput/styles.scss +48 -0
  181. package/src/ui/f/fields/V2/SelectInput/SelectInput.jsx +187 -0
  182. package/src/ui/f/fields/V2/SelectInput/index.js +2 -0
  183. package/src/ui/f/fields/V2/SelectInput/styles.scss +87 -0
  184. package/src/ui/f/fields/V2/TextInput/TextInput.jsx +192 -0
  185. package/src/ui/f/fields/V2/TextInput/index.js +2 -0
  186. package/src/ui/f/fields/V2/TextInput/styles.scss +78 -0
  187. package/src/ui/f/fields/V2/TextareaInput/TextareaInput.jsx +180 -0
  188. package/src/ui/f/fields/V2/TextareaInput/index.js +2 -0
  189. package/src/ui/f/fields/V2/TextareaInput/styles.scss +53 -0
  190. package/src/ui/f/fields/V2/index.js +11 -0
  191. package/src/ui/f/fields/index.js +1 -0
  192. package/tests/__snapshots__/Storyshots.test.js.snap +5909 -0
@@ -0,0 +1,146 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useInsertionEffect } from 'react'
5
+
6
+ import PropTypes from 'prop-types'
7
+
8
+ import styleNames from '@pareto-engineering/bem/exports'
9
+
10
+ import { useField } from 'formik'
11
+
12
+ import { FormLabelV2, FormDescriptionV2 } from '../../../common'
13
+
14
+ // Local Definitions
15
+
16
+ const baseClassName = styleNames.base
17
+
18
+ const componentClassName = 'checkbox'
19
+
20
+ /**
21
+ * This is the component description.
22
+ */
23
+ const Checkbox = ({
24
+ id,
25
+ className:userClassName,
26
+ style,
27
+ name,
28
+ label,
29
+ description,
30
+ disabled,
31
+ optional,
32
+ labelColor,
33
+ // ...otherProps
34
+ }) => {
35
+ useInsertionEffect(() => {
36
+ import('./styles.scss')
37
+ }, [])
38
+
39
+ const [field] = useField({ name, type: 'checkbox' })
40
+
41
+ return (
42
+ <div
43
+ id={id}
44
+ className={[
45
+ baseClassName,
46
+ componentClassName,
47
+ userClassName,
48
+ ]
49
+ .filter((e) => e)
50
+ .join(' ')}
51
+ style={style}
52
+ >
53
+ {label && (
54
+ <FormLabelV2
55
+ name={name}
56
+ color={labelColor}
57
+ optional={optional}
58
+ // {...otherProps}
59
+ >
60
+ {label}
61
+ </FormLabelV2>
62
+ )}
63
+ <input
64
+ id={name}
65
+ className="input"
66
+ type="checkbox"
67
+ disabled={disabled}
68
+ {...field}
69
+ />
70
+ <FormDescriptionV2 className="s-1" description={description} name={name} />
71
+ </div>
72
+ )
73
+ }
74
+
75
+ Checkbox.propTypes = {
76
+ /**
77
+ * The HTML id for this element
78
+ */
79
+ id:PropTypes.string,
80
+
81
+ /**
82
+ * The HTML class names for this element
83
+ */
84
+ className:PropTypes.string,
85
+
86
+ /**
87
+ * The React-written, css properties for this element.
88
+ */
89
+ style:PropTypes.objectOf(PropTypes.string),
90
+
91
+ /**
92
+ * The input name (html - and Formik state)
93
+ */
94
+ name:PropTypes.string.isRequired,
95
+
96
+ /**
97
+ * The Input description to guide the user if it's not obvious
98
+ */
99
+ description:PropTypes.string,
100
+
101
+ /**
102
+ * Whether the input should be disabled
103
+ */
104
+ disabled:PropTypes.bool,
105
+
106
+ /**
107
+ * The color of the label
108
+ */
109
+ labelColor:PropTypes.string,
110
+
111
+ /**
112
+ * The input label
113
+ */
114
+ label:PropTypes.string,
115
+
116
+ /**
117
+ * The number of columns the label should span
118
+ */
119
+ labelSpan:PropTypes.number,
120
+
121
+ /**
122
+ * The number of columns the input should span
123
+ */
124
+ inputSpan:PropTypes.number,
125
+
126
+ /**
127
+ * The number of columns the label should span on desktop
128
+ */
129
+ desktopLabelSpan:PropTypes.number,
130
+
131
+ /**
132
+ * The number of columns the input should span on desktop
133
+ */
134
+ desktopInputSpan:PropTypes.number,
135
+
136
+ /**
137
+ * Whether the input should have an optional tag
138
+ */
139
+ optional:PropTypes.bool,
140
+ }
141
+
142
+ Checkbox.defaultProps = {
143
+ disabled:false,
144
+ }
145
+
146
+ export default Checkbox
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as Checkbox } from './Checkbox'
@@ -0,0 +1,16 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+ @use "@pareto-engineering/styles/src/mixins";
5
+ @use "@pareto-engineering/styles/src/globals" as *;
6
+
7
+ .#{bem.$base}.checkbox {
8
+ align-items: flex-start;
9
+ display: flex;
10
+ flex-direction: column;
11
+ justify-content: center;
12
+
13
+ > .#{bem.$base}.form-label {
14
+ margin-bottom: var(--gap);
15
+ }
16
+ }
@@ -0,0 +1,183 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useInsertionEffect, memo } from 'react'
5
+
6
+ import PropTypes from 'prop-types'
7
+
8
+ import styleNames from '@pareto-engineering/bem/exports'
9
+
10
+ // Local Definitions
11
+
12
+ import { Choice } from './common'
13
+
14
+ import { FormDescriptionV2, FormLabelV2 } from '../../../common'
15
+
16
+ const baseClassName = styleNames.base
17
+
18
+ const componentClassName = 'choices-input'
19
+
20
+ /**
21
+ * This is the component description.
22
+ */
23
+ const ChoicesInput = ({
24
+ id,
25
+ className:userClassName,
26
+ style,
27
+ name,
28
+ validate,
29
+ options,
30
+ multiple,
31
+ color,
32
+ label,
33
+ labelColor,
34
+ optional,
35
+ disabled,
36
+ description,
37
+ spaceBetween,
38
+ ...otherProps
39
+ }) => {
40
+ useInsertionEffect(() => {
41
+ import('./styles.scss')
42
+ }, [])
43
+
44
+ return (
45
+ <div
46
+ id={id}
47
+ className={[
48
+ baseClassName,
49
+ componentClassName,
50
+ userClassName,
51
+ ]
52
+ .filter((e) => e)
53
+ .join(' ')}
54
+ style={style}
55
+ >
56
+ {label && (
57
+ <FormLabelV2
58
+ name={name}
59
+ color={labelColor}
60
+ optional={optional}
61
+ // {...otherProps}
62
+ >
63
+ {label}
64
+ </FormLabelV2>
65
+ )}
66
+ <div className={['choices', spaceBetween && 'space-between'].filter(Boolean).join(' ')}>
67
+ { options.map((choice) => (
68
+ <Choice
69
+ className={`x-${color}`}
70
+ key={choice.value}
71
+ name={name}
72
+ id={`${name}-${choice.value}`}
73
+ multiple={multiple}
74
+ validate={validate}
75
+ disabled={disabled}
76
+ {...otherProps}
77
+ {...choice}
78
+ />
79
+ ))}
80
+ </div>
81
+ <FormDescriptionV2 className="s-1" description={description} name={name} />
82
+ </div>
83
+ )
84
+ }
85
+
86
+ ChoicesInput.propTypes = {
87
+ /**
88
+ * The HTML id for this element
89
+ */
90
+ id:PropTypes.string,
91
+
92
+ /**
93
+ * The HTML class names for this element
94
+ */
95
+ className:PropTypes.string,
96
+
97
+ /**
98
+ * The React-written, css properties for this element.
99
+ */
100
+ style :PropTypes.objectOf(PropTypes.string),
101
+ /**
102
+ * The choices name
103
+ */
104
+ name :PropTypes.string.isRequired,
105
+ /**
106
+ * The input field validator function
107
+ */
108
+ validate:PropTypes.string,
109
+ /**
110
+ * The choices input options
111
+ */
112
+ options :PropTypes.arrayOf(PropTypes.shape({
113
+ value:PropTypes.string,
114
+ label:PropTypes.string,
115
+ })),
116
+ /**
117
+ * If the input should be multiple - checkbox
118
+ */
119
+ multiple :PropTypes.bool,
120
+ /**
121
+ * how many columns should be displayed on the mobile grid
122
+ */
123
+ gridColumnsMobile:PropTypes.number,
124
+
125
+ /**
126
+ * The choice color
127
+ */
128
+ color :PropTypes.string,
129
+ /**
130
+ * The selected choice color
131
+ */
132
+ colorChecked:PropTypes.string,
133
+ /**
134
+ * The label of the choices input
135
+ */
136
+ label :PropTypes.string,
137
+ /**
138
+ * Whether all the Choices inputs should be disabled
139
+ */
140
+ disabled :PropTypes.bool,
141
+
142
+ /**
143
+ * Whether the input is optional or not
144
+ */
145
+ optional:PropTypes.bool,
146
+
147
+ /**
148
+ * The select input description
149
+ */
150
+ description:PropTypes.string,
151
+
152
+ /**
153
+ * The number of columns the label should span
154
+ */
155
+ labelSpan:PropTypes.number,
156
+
157
+ /**
158
+ * The number of columns the input should span
159
+ */
160
+ inputSpan:PropTypes.number,
161
+
162
+ /**
163
+ * The number of columns the label should span on desktop
164
+ */
165
+ desktopLabelSpan:PropTypes.number,
166
+
167
+ /**
168
+ * The number of columns the input should span on desktop
169
+ */
170
+ desktopInputSpan:PropTypes.number,
171
+
172
+ /**
173
+ * The color of the label
174
+ */
175
+ labelColor:PropTypes.string,
176
+ }
177
+
178
+ ChoicesInput.defaultProps = {
179
+ color :'interactive',
180
+ disabled:false,
181
+ }
182
+
183
+ export default memo(ChoicesInput)
@@ -0,0 +1,125 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import PropTypes from 'prop-types'
5
+
6
+ // Local Definitions
7
+ import { useField } from 'formik'
8
+
9
+ import styleNames from '@pareto-engineering/bem/exports'
10
+
11
+ const baseClassName = styleNames.base
12
+
13
+ const componentClassName = 'choice'
14
+
15
+ /**
16
+ * This is the component description.
17
+ */
18
+ const Choice = ({
19
+ id,
20
+ className:userClassName,
21
+ style,
22
+ name,
23
+ label,
24
+ labelClassName,
25
+ labelStyle,
26
+ value,
27
+ multiple,
28
+ validate,
29
+ disabled,
30
+ }) => {
31
+ const type = multiple ? 'checkbox' : 'radio'
32
+
33
+ const [field] = useField({
34
+ name,
35
+ validate,
36
+ type,
37
+ value,
38
+ })
39
+
40
+ return (
41
+ <div
42
+ className={[
43
+ baseClassName,
44
+ componentClassName,
45
+ userClassName,
46
+ ]
47
+ .filter((e) => e)
48
+ .join(' ')}
49
+ style={style}
50
+ >
51
+ <input
52
+ type={type}
53
+ id={id}
54
+ name={name}
55
+ {...field}
56
+ value={value}
57
+ disabled={disabled}
58
+ />
59
+ <label
60
+ htmlFor={id}
61
+ className={[
62
+ labelClassName,
63
+ disabled && 'disabled',
64
+ ]
65
+ .filter((e) => e)
66
+ .join(' ')}
67
+ style={labelStyle}
68
+ >
69
+ { label }
70
+ </label>
71
+ </div>
72
+ )
73
+ }
74
+
75
+ Choice.propTypes = {
76
+ /**
77
+ * The HTML id for this element
78
+ */
79
+ id:PropTypes.string,
80
+
81
+ /**
82
+ * The HTML class names for this element
83
+ */
84
+ className:PropTypes.string,
85
+
86
+ /**
87
+ * The React-written, css properties for this element.
88
+ */
89
+ style:PropTypes.objectOf(PropTypes.string),
90
+
91
+ /**
92
+ * The input name.
93
+ */
94
+ name :PropTypes.string.isRequired,
95
+ /**
96
+ * The input label.
97
+ */
98
+ label :PropTypes.string.isRequired,
99
+ /**
100
+ * The input label class name.
101
+ */
102
+ labelClassName:PropTypes.string,
103
+ /**
104
+ * The input label styles.
105
+ */
106
+ labelStyle :PropTypes.objectOf(PropTypes.string),
107
+ /**
108
+ * The input value.
109
+ */
110
+ value :PropTypes.string.isRequired,
111
+ /**
112
+ * If the input should be multiple - checkbox
113
+ */
114
+ multiple :PropTypes.bool,
115
+ /**
116
+ * The input field validator function
117
+ */
118
+ validate :PropTypes.func,
119
+ /**
120
+ * Whether the radio or checkbox choice should be disabled
121
+ */
122
+ disabled :PropTypes.bool,
123
+ }
124
+
125
+ export default Choice
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as Choice } from './Choice'
@@ -0,0 +1 @@
1
+ export { Choice } from './Choice'
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as ChoicesInput } from './ChoicesInput'
@@ -0,0 +1,79 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ /* stylelint-disable selector-max-compound-selectors -- exception */
3
+ /* stylelint-disable max-nesting-depth -- exception */
4
+
5
+ @use "@pareto-engineering/bem";
6
+ @use "@pareto-engineering/styles/src/mixins";
7
+ @use "@pareto-engineering/styles/src/globals" as *;
8
+
9
+ $default-flex-separator:calc(1em / 2) calc(.75em / 2);
10
+ $default-transition:var(--theme-default-transition);
11
+ $default-label-padding: .3em 1em calc(2em - .3em);
12
+ $default-label-height: .5em;
13
+ $default-input-border-radius: var(--theme-default-input-border-radius);
14
+ $default-border: var(--theme-default-input-border);
15
+ $hover-border: var(--theme-hover-input-border);
16
+ $focus-border: var(--theme-focus-input-border);
17
+ $default-background: var(--background-inputs);
18
+ $disabled-background: var(--background-inputs-30);
19
+
20
+ .#{bem.$base}.choices-input {
21
+ display: flex;
22
+ flex-direction: column;
23
+
24
+ > .#{bem.$base}.form-label {
25
+ margin-bottom: var(--gap);
26
+ }
27
+
28
+ > .choices {
29
+ display: flex;
30
+ flex-wrap: wrap;
31
+ gap: $default-flex-separator;
32
+
33
+ &.space-between {
34
+ justify-content: space-between;
35
+ }
36
+
37
+ >.choice {
38
+ display: flex;
39
+
40
+ input {
41
+ opacity: 0;
42
+ position: fixed;
43
+ visibility: none;
44
+ z-index: -1;
45
+ }
46
+
47
+ input:disabled + label {
48
+ background-color: $disabled-background;
49
+ }
50
+
51
+ > label {
52
+ background-color: $default-background;
53
+ border: $default-border;
54
+ border-radius: $default-input-border-radius;
55
+ color: var(--paragraph);
56
+ cursor: pointer;
57
+ display: block;
58
+ height: $default-label-height;
59
+ max-width: 100%;
60
+ padding: $default-label-padding;
61
+ position: relative;
62
+ transition: $default-transition;
63
+ white-space: nowrap;
64
+
65
+ &:not(.disabled) {
66
+ &:hover {
67
+ border: $hover-border;
68
+ }
69
+ }
70
+ }
71
+
72
+ input:checked + label {
73
+ background: var(--x);
74
+ color: var(--on-x);
75
+ }
76
+ }
77
+ }
78
+ }
79
+