@pareto-engineering/design-system 4.0.0-alpha.61 → 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 (198) hide show
  1. package/dist/cjs/a/TextSteps/TextSteps.js +4 -4
  2. package/dist/cjs/a/TextSteps/styles.scss +1 -1
  3. package/dist/cjs/f/FormInput/FormInput.js +43 -13
  4. package/dist/cjs/f/common/V2/Description/Description.js +76 -0
  5. package/dist/cjs/f/common/V2/Description/index.js +13 -0
  6. package/dist/cjs/f/common/V2/Description/styles.scss +10 -0
  7. package/dist/cjs/f/common/V2/Label/Label.js +84 -0
  8. package/dist/cjs/f/common/V2/Label/index.js +13 -0
  9. package/dist/cjs/f/common/V2/Label/styles.scss +9 -0
  10. package/dist/cjs/f/common/V2/index.js +19 -0
  11. package/dist/cjs/f/common/index.js +12 -0
  12. package/dist/cjs/f/fields/V2/Checkbox/Checkbox.js +122 -0
  13. package/dist/cjs/f/fields/V2/Checkbox/index.js +13 -0
  14. package/dist/cjs/f/fields/V2/Checkbox/styles.scss +16 -0
  15. package/dist/cjs/f/fields/V2/ChoicesInput/ChoicesInput.js +154 -0
  16. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/Choice.js +104 -0
  17. package/dist/cjs/f/fields/V2/ChoicesInput/common/Choice/index.js +13 -0
  18. package/dist/cjs/f/fields/V2/ChoicesInput/common/index.js +12 -0
  19. package/dist/cjs/f/fields/V2/ChoicesInput/index.js +13 -0
  20. package/dist/cjs/f/fields/V2/ChoicesInput/styles.scss +79 -0
  21. package/dist/cjs/f/fields/V2/EditorInput/EditorInput.js +197 -0
  22. package/dist/cjs/f/fields/V2/EditorInput/common/Toolbar.js +257 -0
  23. package/dist/cjs/f/fields/V2/EditorInput/common/TreeViewPlugin.js +18 -0
  24. package/dist/cjs/f/fields/V2/EditorInput/common/index.js +20 -0
  25. package/dist/cjs/f/fields/V2/EditorInput/index.js +13 -0
  26. package/dist/cjs/f/fields/V2/EditorInput/styles.scss +149 -0
  27. package/dist/cjs/f/fields/V2/LinkInput/LinkInput.js +156 -0
  28. package/dist/cjs/f/fields/V2/LinkInput/index.js +13 -0
  29. package/dist/cjs/f/fields/V2/LinkInput/styles.scss +90 -0
  30. package/dist/cjs/f/fields/V2/QueryChoices/QueryChoices.js +137 -0
  31. package/dist/cjs/f/fields/V2/QueryChoices/index.js +13 -0
  32. package/dist/cjs/f/fields/V2/QueryCombobox/QueryCombobox.js +229 -0
  33. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +236 -0
  34. package/dist/cjs/f/fields/V2/QueryCombobox/common/Combobox/index.js +13 -0
  35. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/Menu.js +83 -0
  36. package/dist/cjs/f/fields/V2/QueryCombobox/common/Menu/index.js +13 -0
  37. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +300 -0
  38. package/dist/cjs/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +13 -0
  39. package/dist/cjs/f/fields/V2/QueryCombobox/common/index.js +26 -0
  40. package/dist/cjs/f/fields/V2/QueryCombobox/index.js +13 -0
  41. package/dist/cjs/f/fields/V2/QueryCombobox/styles.scss +127 -0
  42. package/dist/cjs/f/fields/V2/QuerySelect/QuerySelect.js +198 -0
  43. package/dist/cjs/f/fields/V2/QuerySelect/index.js +13 -0
  44. package/dist/cjs/f/fields/V2/RatingsInput/RatingsInput.js +130 -0
  45. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/Rating.js +117 -0
  46. package/dist/cjs/f/fields/V2/RatingsInput/common/Rating/index.js +13 -0
  47. package/dist/cjs/f/fields/V2/RatingsInput/common/index.js +12 -0
  48. package/dist/cjs/f/fields/V2/RatingsInput/index.js +13 -0
  49. package/dist/cjs/f/fields/V2/RatingsInput/styles.scss +48 -0
  50. package/dist/cjs/f/fields/V2/SelectInput/SelectInput.js +154 -0
  51. package/dist/cjs/f/fields/V2/SelectInput/index.js +13 -0
  52. package/dist/cjs/f/fields/V2/SelectInput/styles.scss +87 -0
  53. package/dist/cjs/f/fields/V2/TextInput/TextInput.js +155 -0
  54. package/dist/cjs/f/fields/V2/TextInput/index.js +13 -0
  55. package/dist/cjs/f/fields/V2/TextInput/styles.scss +78 -0
  56. package/dist/cjs/f/fields/V2/TextareaInput/TextareaInput.js +152 -0
  57. package/dist/cjs/f/fields/V2/TextareaInput/index.js +13 -0
  58. package/dist/cjs/f/fields/V2/TextareaInput/styles.scss +53 -0
  59. package/dist/cjs/f/fields/V2/index.js +82 -0
  60. package/dist/cjs/f/fields/index.js +26 -1
  61. package/dist/es/a/TextSteps/TextSteps.js +4 -4
  62. package/dist/es/a/TextSteps/styles.scss +1 -1
  63. package/dist/es/f/FormInput/FormInput.js +33 -3
  64. package/dist/es/f/common/V2/Description/Description.js +68 -0
  65. package/dist/es/f/common/V2/Description/index.js +2 -0
  66. package/dist/es/f/common/V2/Description/styles.scss +10 -0
  67. package/dist/es/f/common/V2/Label/Label.js +76 -0
  68. package/dist/es/f/common/V2/Label/index.js +2 -0
  69. package/dist/es/f/common/V2/Label/styles.scss +9 -0
  70. package/dist/es/f/common/V2/index.js +2 -0
  71. package/dist/es/f/common/index.js +2 -1
  72. package/dist/es/f/fields/V2/Checkbox/Checkbox.js +114 -0
  73. package/dist/es/f/fields/V2/Checkbox/index.js +2 -0
  74. package/dist/es/f/fields/V2/Checkbox/styles.scss +16 -0
  75. package/dist/es/f/fields/V2/ChoicesInput/ChoicesInput.js +148 -0
  76. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/Choice.js +97 -0
  77. package/dist/es/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  78. package/dist/es/f/fields/V2/ChoicesInput/common/index.js +1 -0
  79. package/dist/es/f/fields/V2/ChoicesInput/index.js +2 -0
  80. package/dist/es/f/fields/V2/ChoicesInput/styles.scss +79 -0
  81. package/dist/es/f/fields/V2/EditorInput/EditorInput.js +192 -0
  82. package/dist/es/f/fields/V2/EditorInput/common/Toolbar.js +246 -0
  83. package/dist/es/f/fields/V2/EditorInput/common/TreeViewPlugin.js +11 -0
  84. package/dist/es/f/fields/V2/EditorInput/common/index.js +2 -0
  85. package/dist/es/f/fields/V2/EditorInput/index.js +2 -0
  86. package/dist/es/f/fields/V2/EditorInput/styles.scss +149 -0
  87. package/dist/es/f/fields/V2/LinkInput/LinkInput.js +148 -0
  88. package/dist/es/f/fields/V2/LinkInput/index.js +2 -0
  89. package/dist/es/f/fields/V2/LinkInput/styles.scss +90 -0
  90. package/dist/es/f/fields/V2/QueryChoices/QueryChoices.js +126 -0
  91. package/dist/es/f/fields/V2/QueryChoices/index.js +2 -0
  92. package/dist/es/f/fields/V2/QueryCombobox/QueryCombobox.js +221 -0
  93. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/Combobox.js +229 -0
  94. package/dist/es/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  95. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/Menu.js +73 -0
  96. package/dist/es/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  97. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +293 -0
  98. package/dist/es/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  99. package/dist/es/f/fields/V2/QueryCombobox/common/index.js +3 -0
  100. package/dist/es/f/fields/V2/QueryCombobox/index.js +2 -0
  101. package/dist/es/f/fields/V2/QueryCombobox/styles.scss +127 -0
  102. package/dist/es/f/fields/V2/QuerySelect/QuerySelect.js +186 -0
  103. package/dist/es/f/fields/V2/QuerySelect/index.js +2 -0
  104. package/dist/es/f/fields/V2/RatingsInput/RatingsInput.js +124 -0
  105. package/dist/es/f/fields/V2/RatingsInput/common/Rating/Rating.js +109 -0
  106. package/dist/es/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  107. package/dist/es/f/fields/V2/RatingsInput/common/index.js +1 -0
  108. package/dist/es/f/fields/V2/RatingsInput/index.js +2 -0
  109. package/dist/es/f/fields/V2/RatingsInput/styles.scss +48 -0
  110. package/dist/es/f/fields/V2/SelectInput/SelectInput.js +146 -0
  111. package/dist/es/f/fields/V2/SelectInput/index.js +2 -0
  112. package/dist/es/f/fields/V2/SelectInput/styles.scss +87 -0
  113. package/dist/es/f/fields/V2/TextInput/TextInput.js +147 -0
  114. package/dist/es/f/fields/V2/TextInput/index.js +2 -0
  115. package/dist/es/f/fields/V2/TextInput/styles.scss +78 -0
  116. package/dist/es/f/fields/V2/TextareaInput/TextareaInput.js +146 -0
  117. package/dist/es/f/fields/V2/TextareaInput/index.js +2 -0
  118. package/dist/es/f/fields/V2/TextareaInput/styles.scss +53 -0
  119. package/dist/es/f/fields/V2/index.js +11 -0
  120. package/dist/es/f/fields/index.js +2 -1
  121. package/package.json +3 -3
  122. package/src/stories/f/v2/Checkbox.stories.jsx +102 -0
  123. package/src/stories/f/v2/ChoicesInput.stories.jsx +139 -0
  124. package/src/stories/f/v2/EditorInput.stories.jsx +81 -0
  125. package/src/stories/f/v2/LinkInput.stories.jsx +93 -0
  126. package/src/stories/f/v2/QueryChoices.stories.jsx +144 -0
  127. package/src/stories/f/v2/QueryCombobox.stories.jsx +301 -0
  128. package/src/stories/f/v2/QuerySelect.stories.jsx +150 -0
  129. package/src/stories/f/v2/RatingsInput.stories.jsx +77 -0
  130. package/src/stories/f/v2/SelectInput.stories.jsx +95 -0
  131. package/src/stories/f/v2/TextInput.stories.jsx +120 -0
  132. package/src/stories/f/v2/TextareaInput.stories.jsx +107 -0
  133. package/src/stories/f/v2/__generated__/FormInputAllTaskStatusesQuery.graphql.js +122 -0
  134. package/src/stories/f/v2/__generated__/FormInputAllTeamsQuery.graphql.js +139 -0
  135. package/src/stories/f/v2/__generated__/QueryChoicesAllTaskStatusesQuery.graphql.js +122 -0
  136. package/src/stories/f/v2/__generated__/QueryComboboxAllTeamsQuery.graphql.js +139 -0
  137. package/src/stories/f/v2/__generated__/QuerySelectAllTaskStatusesQuery.graphql.js +122 -0
  138. package/src/ui/a/TextSteps/TextSteps.jsx +4 -4
  139. package/src/ui/a/TextSteps/styles.scss +1 -1
  140. package/src/ui/f/FormInput/FormInput.jsx +57 -12
  141. package/src/ui/f/common/V2/Description/Description.jsx +94 -0
  142. package/src/ui/f/common/V2/Description/index.js +2 -0
  143. package/src/ui/f/common/V2/Description/styles.scss +10 -0
  144. package/src/ui/f/common/V2/Label/Label.jsx +102 -0
  145. package/src/ui/f/common/V2/Label/index.js +2 -0
  146. package/src/ui/f/common/V2/Label/styles.scss +9 -0
  147. package/src/ui/f/common/V2/index.js +2 -0
  148. package/src/ui/f/common/index.js +1 -0
  149. package/src/ui/f/fields/V2/Checkbox/Checkbox.jsx +146 -0
  150. package/src/ui/f/fields/V2/Checkbox/index.js +2 -0
  151. package/src/ui/f/fields/V2/Checkbox/styles.scss +16 -0
  152. package/src/ui/f/fields/V2/ChoicesInput/ChoicesInput.jsx +183 -0
  153. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/Choice.jsx +125 -0
  154. package/src/ui/f/fields/V2/ChoicesInput/common/Choice/index.js +2 -0
  155. package/src/ui/f/fields/V2/ChoicesInput/common/index.js +1 -0
  156. package/src/ui/f/fields/V2/ChoicesInput/index.js +2 -0
  157. package/src/ui/f/fields/V2/ChoicesInput/styles.scss +79 -0
  158. package/src/ui/f/fields/V2/EditorInput/EditorInput.jsx +244 -0
  159. package/src/ui/f/fields/V2/EditorInput/common/Toolbar.jsx +356 -0
  160. package/src/ui/f/fields/V2/EditorInput/common/TreeViewPlugin.jsx +16 -0
  161. package/src/ui/f/fields/V2/EditorInput/common/index.jsx +2 -0
  162. package/src/ui/f/fields/V2/EditorInput/index.js +2 -0
  163. package/src/ui/f/fields/V2/EditorInput/styles.scss +149 -0
  164. package/src/ui/f/fields/V2/LinkInput/LinkInput.jsx +187 -0
  165. package/src/ui/f/fields/V2/LinkInput/index.js +2 -0
  166. package/src/ui/f/fields/V2/LinkInput/styles.scss +90 -0
  167. package/src/ui/f/fields/V2/QueryChoices/QueryChoices.jsx +153 -0
  168. package/src/ui/f/fields/V2/QueryChoices/index.js +2 -0
  169. package/src/ui/f/fields/V2/QueryCombobox/QueryCombobox.jsx +254 -0
  170. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/Combobox.jsx +276 -0
  171. package/src/ui/f/fields/V2/QueryCombobox/common/Combobox/index.js +2 -0
  172. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/Menu.jsx +103 -0
  173. package/src/ui/f/fields/V2/QueryCombobox/common/Menu/index.js +2 -0
  174. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/MultipleCombobox.jsx +362 -0
  175. package/src/ui/f/fields/V2/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  176. package/src/ui/f/fields/V2/QueryCombobox/common/index.js +3 -0
  177. package/src/ui/f/fields/V2/QueryCombobox/index.js +2 -0
  178. package/src/ui/f/fields/V2/QueryCombobox/styles.scss +127 -0
  179. package/src/ui/f/fields/V2/QuerySelect/QuerySelect.jsx +220 -0
  180. package/src/ui/f/fields/V2/QuerySelect/index.js +2 -0
  181. package/src/ui/f/fields/V2/RatingsInput/RatingsInput.jsx +152 -0
  182. package/src/ui/f/fields/V2/RatingsInput/common/Rating/Rating.jsx +142 -0
  183. package/src/ui/f/fields/V2/RatingsInput/common/Rating/index.js +2 -0
  184. package/src/ui/f/fields/V2/RatingsInput/common/index.js +1 -0
  185. package/src/ui/f/fields/V2/RatingsInput/index.js +2 -0
  186. package/src/ui/f/fields/V2/RatingsInput/styles.scss +48 -0
  187. package/src/ui/f/fields/V2/SelectInput/SelectInput.jsx +187 -0
  188. package/src/ui/f/fields/V2/SelectInput/index.js +2 -0
  189. package/src/ui/f/fields/V2/SelectInput/styles.scss +87 -0
  190. package/src/ui/f/fields/V2/TextInput/TextInput.jsx +192 -0
  191. package/src/ui/f/fields/V2/TextInput/index.js +2 -0
  192. package/src/ui/f/fields/V2/TextInput/styles.scss +78 -0
  193. package/src/ui/f/fields/V2/TextareaInput/TextareaInput.jsx +180 -0
  194. package/src/ui/f/fields/V2/TextareaInput/index.js +2 -0
  195. package/src/ui/f/fields/V2/TextareaInput/styles.scss +53 -0
  196. package/src/ui/f/fields/V2/index.js +11 -0
  197. package/src/ui/f/fields/index.js +1 -0
  198. package/tests/__snapshots__/Storyshots.test.js.snap +5910 -1
@@ -0,0 +1,152 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useState, 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 { Rating } from './common'
13
+ import { FormLabelV2 } from '../../../common'
14
+
15
+ const baseClassName = styleNames.base
16
+
17
+ const componentClassName = 'ratings-input'
18
+
19
+ /**
20
+ * This is the component description.
21
+ */
22
+ const RatingsInput = ({
23
+ id,
24
+ className:userClassName,
25
+ style,
26
+ name,
27
+ ratingCount,
28
+ showRatingValue,
29
+ color,
30
+ label,
31
+ labelColor,
32
+ labelMax,
33
+ labelMin,
34
+ displayRatingsLabel,
35
+ optional,
36
+ // ...otherProps
37
+ }) => {
38
+ useInsertionEffect(() => {
39
+ import('./styles.scss')
40
+ }, [])
41
+
42
+ const [hover, setHover] = useState(null)
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
+ <FormLabelV2
57
+ name={name}
58
+ color={labelColor}
59
+ optional={optional}
60
+ // {...otherProps}
61
+ >
62
+ {label}
63
+ </FormLabelV2>
64
+ <div className="stars">
65
+ {displayRatingsLabel && <p className="label-text s-2 x-metadata c-x">{labelMin}</p>}
66
+ {[...Array(ratingCount)].map((_, index) => {
67
+ const ratingValue = index + 1
68
+ return (
69
+ <Rating
70
+ key={ratingValue}
71
+ ratingId={`${name}-${ratingValue}`}
72
+ value={ratingValue}
73
+ name={name}
74
+ hover={hover}
75
+ setHover={setHover}
76
+ showRatingValue={showRatingValue}
77
+ activeBackgroundColor={color}
78
+ />
79
+ )
80
+ })}
81
+ {displayRatingsLabel && <p className="label-text s-2 x-metadata c-x">{labelMax}</p>}
82
+ </div>
83
+ </div>
84
+ )
85
+ }
86
+
87
+ RatingsInput.propTypes = {
88
+ /**
89
+ * The HTML id for this element
90
+ */
91
+ id:PropTypes.string,
92
+
93
+ /**
94
+ * The HTML class names for this element
95
+ */
96
+ className:PropTypes.string,
97
+
98
+ /**
99
+ * The React-written, css properties for this element.
100
+ */
101
+ style:PropTypes.objectOf(PropTypes.string),
102
+
103
+ /**
104
+ * The number of ratings input stars to be displayed
105
+ */
106
+ ratingCount :PropTypes.number.isRequired,
107
+ /**
108
+ * Name of the rating input
109
+ */
110
+ name :PropTypes.string.isRequired,
111
+ /**
112
+ * Determines if the rating start value should be shown
113
+ */
114
+ showRatingValue :PropTypes.bool,
115
+ /**
116
+ * The label of the ratings input
117
+ */
118
+ label :PropTypes.string.isRequired,
119
+ /**
120
+ * description for the highest rating value
121
+ */
122
+ labelMax :PropTypes.string,
123
+ /**
124
+ * description for the lowest rating value
125
+ */
126
+ labelMin :PropTypes.string,
127
+ /**
128
+ * If the rating lables should be shown
129
+ */
130
+ displayRatingsLabel:PropTypes.bool,
131
+ /**
132
+ * Whether the input is optional or not
133
+ */
134
+ optional :PropTypes.bool,
135
+
136
+ /**
137
+ * The color of the stars
138
+ */
139
+ color:PropTypes.string,
140
+
141
+ /**
142
+ * String that will represent color for the label
143
+ */
144
+ labelColor:PropTypes.string,
145
+ }
146
+
147
+ RatingsInput.defaultProps = {
148
+ labelMin:'not satisfied.',
149
+ labelMax:'very satisfied.',
150
+ }
151
+
152
+ export default memo(RatingsInput)
@@ -0,0 +1,142 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import PropTypes from 'prop-types'
5
+
6
+ import { useField } from 'formik'
7
+
8
+ import styleNames from '@pareto-engineering/bem/exports'
9
+
10
+ // Local Definitions
11
+
12
+ const baseClassName = styleNames.base
13
+
14
+ const componentClassName = 'rating'
15
+
16
+ /**
17
+ * This is the component description.
18
+ */
19
+ const Rating = ({
20
+ id,
21
+ className:userClassName,
22
+ style,
23
+ value,
24
+ name,
25
+ ratingId,
26
+ hover,
27
+ setHover,
28
+ validate,
29
+ activeBackgroundColor,
30
+ inactiveBackgroundColor,
31
+ showRatingValue,
32
+ // ...otherProps
33
+ }) => {
34
+ const [field] = useField({ name, validate })
35
+
36
+ return (
37
+ <div
38
+ id={id}
39
+ className={[
40
+ baseClassName,
41
+ componentClassName,
42
+ userClassName,
43
+ `x-${activeBackgroundColor}`,
44
+ `y-${inactiveBackgroundColor}`,
45
+ ]
46
+ .filter((e) => e)
47
+ .join(' ')}
48
+ style={style}
49
+ >
50
+ <label
51
+ htmlFor={ratingId}
52
+ onMouseEnter={() => setHover(value)}
53
+ onMouseLeave={() => setHover(null)}
54
+ >
55
+ {showRatingValue && (
56
+ <span className="s-2 x-metadata c-x">
57
+ {value}
58
+ </span>
59
+ )}
60
+ <span
61
+ className={[
62
+ 'icon',
63
+ value <= (hover || Number(field.value)) ? 'c-x' : 'c-hard-y',
64
+ ]
65
+ .filter((e) => e)
66
+ .join(' ')}
67
+ >
68
+ [
69
+ </span>
70
+ </label>
71
+
72
+ <input
73
+ {...field}
74
+ type="radio"
75
+ id={ratingId}
76
+ name={name}
77
+ value={value}
78
+ />
79
+ </div>
80
+ )
81
+ }
82
+ Rating.propTypes = {
83
+ /**
84
+ * The HTML id for this element
85
+ */
86
+ id:PropTypes.string,
87
+
88
+ /**
89
+ * The HTML class names for this element
90
+ */
91
+ className:PropTypes.string,
92
+
93
+ /**
94
+ * The React-written, css properties for this element.
95
+ */
96
+ style :PropTypes.objectOf(PropTypes.string),
97
+ /**
98
+ * The value of each an every rating star
99
+ */
100
+ value :PropTypes.number,
101
+ /**
102
+ * The current hover value
103
+ */
104
+ hover :PropTypes.number,
105
+ /**
106
+ * Function to update the hover value
107
+ */
108
+ setHover :PropTypes.func,
109
+ /**
110
+ * Unique Id for each rating star
111
+ */
112
+ ratingId :PropTypes.string,
113
+ /**
114
+ * Name of the rating input
115
+ */
116
+ name :PropTypes.string,
117
+ /**
118
+ * The start rating backgriund color when hovered or clicked
119
+ */
120
+ activeBackgroundColor :PropTypes.string,
121
+ /**
122
+ * The start rating backgriund color when not hovered and not clicked
123
+ */
124
+ inactiveBackgroundColor:PropTypes.string,
125
+ /**
126
+ * Determines if the rating start value should be shown
127
+ */
128
+ showRatingValue :PropTypes.bool,
129
+
130
+ /**
131
+ * The rating field validator function
132
+ */
133
+ validate:PropTypes.func,
134
+ }
135
+
136
+ Rating.defaultProps = {
137
+ activeBackgroundColor :'interactive',
138
+ inactiveBackgroundColor:'background-inputs',
139
+ showRatingValue :false,
140
+ }
141
+
142
+ export default Rating
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as Rating } from './Rating'
@@ -0,0 +1 @@
1
+ export { Rating } from './Rating'
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as RatingsInput } from './RatingsInput'
@@ -0,0 +1,48 @@
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
+ $default-rating-icon-margin: .5em;
8
+ $default-padding: .2em;
9
+ $default-transition: all .2s;
10
+
11
+ .#{bem.$base}.ratings-input {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--gap);
15
+
16
+ >.stars {
17
+ display: flex;
18
+
19
+ >:not(:last-child) {
20
+ margin-right: $default-rating-icon-margin;
21
+ }
22
+
23
+ > .#{bem.$base}.rating {
24
+ display: flex;
25
+
26
+ > input {
27
+ opacity: 0;
28
+ position: absolute;
29
+ visibility: none;
30
+ z-index: -1;
31
+ }
32
+
33
+ > label {
34
+ align-items: center;
35
+ cursor: pointer;
36
+ display: flex;
37
+ flex-direction: column;
38
+ padding: $default-padding;
39
+ transition: $default-transition;
40
+ }
41
+ }
42
+
43
+ .label-text {
44
+ align-self: flex-end;
45
+ margin-bottom: 0;
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,187 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react'
3
+
4
+ import { useInsertionEffect, memo } from 'react'
5
+
6
+ import { useField } from 'formik'
7
+
8
+ import PropTypes from 'prop-types'
9
+
10
+ import styleNames from '@pareto-engineering/bem/exports'
11
+
12
+ import { LoadingCircle } from 'ui/a'
13
+
14
+ import { FormLabelV2, FormDescriptionV2 } from '../../../common'
15
+
16
+ // Local Definitions
17
+
18
+ const baseClassName = styleNames.base
19
+
20
+ const componentClassName = 'select-input'
21
+
22
+ /**
23
+ * This is the component description.
24
+ */
25
+ const SelectInput = ({
26
+ id,
27
+ className:userClassName,
28
+ style,
29
+ name,
30
+ label,
31
+ labelColor,
32
+ color,
33
+ options,
34
+ validate,
35
+ optional,
36
+ description,
37
+ disabled,
38
+ isLoading,
39
+ autoComplete,
40
+ // ...otherProps
41
+ }) => {
42
+ useInsertionEffect(() => {
43
+ import('./styles.scss')
44
+ }, [])
45
+
46
+ const [field] = useField({ name, validate })
47
+
48
+ return (
49
+ <div
50
+ id={id}
51
+ className={[
52
+ baseClassName,
53
+ componentClassName,
54
+ userClassName,
55
+ ]
56
+ .filter((e) => e)
57
+ .join(' ')}
58
+ style={style}
59
+ >
60
+ <FormLabelV2
61
+ name={name}
62
+ color={labelColor}
63
+ optional={optional}
64
+ // {...otherProps}
65
+ >
66
+ {label}
67
+ </FormLabelV2>
68
+ <div className={`select-wrapper${disabled ? ' disabled' : ''}`}>
69
+ <select
70
+ className={`input y-${color}`}
71
+ {...field}
72
+ value={field.value || ''}
73
+ id={name}
74
+ disabled={disabled}
75
+ autoComplete={autoComplete}
76
+ >
77
+ {
78
+ options.map((option) => {
79
+ // i.e if option is a string like "blah", return { value: "blah", label: "blah" }
80
+ const newOption = typeof option === 'string' ? { value: option, label: option } : option
81
+
82
+ return (
83
+ <option
84
+ key={newOption.value}
85
+ value={newOption.value}
86
+ disabled={newOption?.disabled || false}
87
+ >
88
+ {newOption.label}
89
+ </option>
90
+ )
91
+ })
92
+ }
93
+ </select>
94
+ {isLoading && (
95
+ <LoadingCircle className="x-main" />
96
+ )}
97
+ </div>
98
+ <FormDescriptionV2 className="s-1" description={description} name={name} />
99
+ </div>
100
+ )
101
+ }
102
+
103
+ SelectInput.propTypes = {
104
+ /**
105
+ * The HTML id for this element
106
+ */
107
+ id:PropTypes.string,
108
+
109
+ /**
110
+ * The HTML class names for this element
111
+ */
112
+ className:PropTypes.string,
113
+
114
+ /**
115
+ * The React-written, css properties for this element.
116
+ */
117
+ style:PropTypes.objectOf(PropTypes.string),
118
+ /**
119
+ * The name of the select input
120
+ */
121
+ name :PropTypes.string,
122
+
123
+ /**
124
+ * The label of the select input
125
+ */
126
+ label:PropTypes.string,
127
+
128
+ /**
129
+ * The input field validator function
130
+ */
131
+ validate:PropTypes.func,
132
+
133
+ /**
134
+ * The select input description
135
+ */
136
+ description:PropTypes.string,
137
+
138
+ /**
139
+ * The options of the select input
140
+ */
141
+ options:PropTypes.arrayOf(
142
+ PropTypes.oneOfType(
143
+ [
144
+ PropTypes.string,
145
+ PropTypes.shape({
146
+ value :PropTypes.string,
147
+ label :PropTypes.string,
148
+ disabled:PropTypes.bool,
149
+ })],
150
+ ),
151
+ ),
152
+ /**
153
+ * Whether the select input should be disabled
154
+ */
155
+ disabled:PropTypes.bool,
156
+
157
+ /**
158
+ * The color of the select input
159
+ */
160
+ color:PropTypes.string,
161
+
162
+ /**
163
+ * The color of the select input label
164
+ */
165
+ labelColor:PropTypes.string,
166
+
167
+ /*
168
+ * Whether the query that is fetching the select options is still in flight
169
+ */
170
+ isLoading :PropTypes.bool,
171
+ /**
172
+ * The autoComplete value that the browser should watch for the input
173
+ */
174
+ autoComplete:PropTypes.string,
175
+
176
+ /**
177
+ * Whether the input is optional or not
178
+ */
179
+ optional:PropTypes.bool,
180
+ }
181
+
182
+ SelectInput.defaultProps = {
183
+ disabled:false,
184
+ color :'paragraph',
185
+ }
186
+
187
+ export default memo(SelectInput)
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as SelectInput } from './SelectInput'
@@ -0,0 +1,87 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+
4
+ @use "@pareto-engineering/bem";
5
+ @use "@pareto-engineering/styles/src/mixins";
6
+ @use "@pareto-engineering/styles/src/globals" as *;
7
+
8
+ $default-spacing-size: 1em;
9
+ $default-padding: .55em .75em;
10
+ $default-bg-gradient: var(--background-far);
11
+ $default-input-border-radius: var(--theme-default-input-border-radius);
12
+ $default-border: var(--theme-default-input-border);
13
+ $hover-border: var(--theme-hover-input-border);
14
+ $focus-border: var(--theme-focus-input-border);
15
+ $default-background: var(--background-inputs);
16
+ $disabled-background: var(--background-inputs-30);
17
+
18
+ .#{bem.$base}.select-input {
19
+ display: flex;
20
+ flex-direction: column;
21
+
22
+ > .#{bem.$base}.form-label {
23
+ margin-bottom: var(--gap);
24
+ }
25
+
26
+ .select-wrapper {
27
+ background-color: $default-background;
28
+ border: $default-border;
29
+ border-radius: $default-input-border-radius;
30
+ display: flex;
31
+ flex-direction: column;
32
+ padding: $default-padding;
33
+ padding-right: 0;
34
+ position: relative;
35
+
36
+ &:not(.disabled) {
37
+ &:hover,
38
+ &:active {
39
+ border: $hover-border;
40
+ }
41
+
42
+ &:focus {
43
+ border: $focus-border;
44
+ }
45
+ }
46
+
47
+ &.disabled {
48
+ background: $disabled-background;
49
+ }
50
+
51
+ &::placeholder {
52
+ color: var(--metadata);
53
+ }
54
+
55
+ &::after {
56
+ border-radius: $default-input-border-radius;
57
+ }
58
+
59
+ >.#{bem.$base}.loading-circle {
60
+ position: absolute;
61
+ right: $default-spacing-size;
62
+ top: 50%;
63
+ transform: translateY(-50%);
64
+ }
65
+
66
+ select {
67
+ appearance: none;
68
+ background-color: $default-background;
69
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyMCAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEuNUwxMCAxMC41TDEgMS41IiBzdHJva2U9IiM0QzRENTMiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
70
+ background-position: calc(100% - $default-spacing-size);
71
+ background-repeat: no-repeat;
72
+ background-size: $default-spacing-size;
73
+ padding-right: $default-spacing-size;
74
+
75
+ &.input {
76
+ border: none;
77
+ color: var(--y);
78
+ outline: none;
79
+ width: 100%;
80
+
81
+ &:disabled {
82
+ opacity: 0%;
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }