@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,127 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ /* stylelint-disable max-nesting-depth -- needed here */
3
+ /* stylelint-disable selector-max-compound-selectors -- needed here */
4
+
5
+ @use "@pareto-engineering/bem";
6
+ @use "@pareto-engineering/styles/src/mixins";
7
+ @use "@pareto-engineering/styles/src/globals" as *;
8
+
9
+ $default-input-padding: .55em .75em;
10
+ $default-gap: var(--gap);
11
+ $default-loading-circle-displacement: .5em;
12
+ $default-input-border-radius: var(--theme-default-input-border-radius);
13
+ $default-border: var(--theme-default-input-border);
14
+ $hover-border: var(--theme-hover-input-border);
15
+ $focus-border: var(--theme-focus-input-border);
16
+ $default-background: var(--background-inputs);
17
+ $on-default-background: var(--paragraph);
18
+ $disabled-background: var(--background-inputs-30);
19
+ $on-disabled-background: var(--on-background-inputs-30);
20
+
21
+ .#{bem.$base}.combobox,
22
+ .#{bem.$base}.multiple-combobox {
23
+ display: flex;
24
+ flex-direction: column;
25
+ outline: none;
26
+ position: relative;
27
+
28
+ > .#{bem.$base}.form-label {
29
+ margin-bottom: var(--gap);
30
+ }
31
+
32
+
33
+ .#{bem.$base}.popover {
34
+ border: $default-border;
35
+ border-radius: $default-input-border-radius;
36
+ width: 100%;
37
+
38
+ >.menu {
39
+ list-style: none;
40
+ margin: 0;
41
+ outline: 0;
42
+ padding: 0;
43
+
44
+ >.item {
45
+ border-radius: $default-input-border-radius;
46
+ padding: $default-input-padding;
47
+
48
+ > p {
49
+ margin: 0;
50
+ }
51
+
52
+ &.#{bem.$modifier-active} {
53
+ background-color: var(--y);
54
+
55
+ > p {
56
+ color: var(--on-y);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ >.#{bem.$base}.loading-circle,
64
+ >.#{bem.$base}.button {
65
+ position: absolute;
66
+ right: $default-loading-circle-displacement;
67
+ }
68
+
69
+ >.#{bem.$base}.loading-circle {
70
+ top: calc($default-loading-circle-displacement * 1.5);
71
+ }
72
+
73
+ >.#{bem.$base}.button {
74
+ top: $default-loading-circle-displacement;
75
+ }
76
+
77
+ > .input {
78
+ background: $default-background;
79
+ border: $default-border;
80
+ border-radius: calc(var(--theme-default-border-radius) / 2);
81
+ color: $on-default-background;
82
+ outline: none;
83
+ padding: $default-input-padding;
84
+
85
+ &::placeholder {
86
+ color: var(--metadata);
87
+ }
88
+
89
+ &:disabled {
90
+ background-color: $disabled-background;
91
+ color: $on-disabled-background;
92
+ }
93
+
94
+ &:not(:disabled) {
95
+ &:hover,
96
+ &:active {
97
+ border: $hover-border;
98
+ }
99
+
100
+ &:focus {
101
+ border: $focus-border;
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+
108
+ .#{bem.$base}.multiple-combobox {
109
+ >.selected-items {
110
+ display: flex;
111
+ flex-wrap: wrap;
112
+ gap: calc($default-gap / 2);
113
+ margin-bottom: calc($default-gap / 2);
114
+
115
+ >.item {
116
+ >.#{bem.$base}.button {
117
+ align-items: center;
118
+ display: flex;
119
+ gap: calc($default-gap / 2);
120
+ }
121
+
122
+ .close {
123
+ font-size: calc(var(--s-3) * 1em);
124
+ }
125
+ }
126
+ }
127
+ }
@@ -0,0 +1,186 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useState, useEffect } from 'react';
4
+ import { useRelayEnvironment, fetchQuery } from 'react-relay';
5
+ import { useField } from 'formik';
6
+ import PropTypes from 'prop-types';
7
+
8
+ // Local Definitions
9
+
10
+ import { SelectInput } from "../../..";
11
+
12
+ /**
13
+ * This is the component description.
14
+ */
15
+ const QuerySelect = ({
16
+ id,
17
+ className: userClassName,
18
+ style,
19
+ name,
20
+ label,
21
+ labelColor,
22
+ optional,
23
+ query,
24
+ variables,
25
+ optionsKeyMap,
26
+ description,
27
+ disabled,
28
+ color,
29
+ loadingOption,
30
+ defaultOption,
31
+ validate
32
+ // ...otherProps
33
+ }) => {
34
+ const [,, helpers] = useField({
35
+ name,
36
+ validate
37
+ });
38
+ const {
39
+ setError
40
+ } = helpers;
41
+ const environment = useRelayEnvironment();
42
+ const [isFetching, setIsFetching] = useState(false);
43
+ const [options, setOptions] = useState([]);
44
+ const {
45
+ graphql,
46
+ accessor
47
+ } = query;
48
+ const getOptions = () => {
49
+ if (isFetching) return;
50
+ fetchQuery(environment, graphql, variables).subscribe({
51
+ start: () => {
52
+ setIsFetching(true);
53
+ setOptions([loadingOption]);
54
+ },
55
+ complete: () => {
56
+ setIsFetching(false);
57
+ },
58
+ error: fetchError => {
59
+ setIsFetching(false);
60
+ if (setError) setError(fetchError.message);
61
+ },
62
+ next: data => {
63
+ setOptions([defaultOption, ...data[accessor].edges.map(({
64
+ node
65
+ }) => ({
66
+ value: node[optionsKeyMap.value],
67
+ label: optionsKeyMap.getLabel(node)
68
+ }))]);
69
+ }
70
+ });
71
+ };
72
+ useEffect(() => {
73
+ getOptions();
74
+ }, [variables]);
75
+ return /*#__PURE__*/React.createElement(SelectInput, {
76
+ id: id,
77
+ className: userClassName,
78
+ style: style,
79
+ name: name,
80
+ label: label,
81
+ optional: optional,
82
+ color: color,
83
+ labelColor: labelColor,
84
+ description: description,
85
+ disabled: isFetching || disabled,
86
+ options: options,
87
+ isLoading: isFetching
88
+ });
89
+ };
90
+ QuerySelect.propTypes = {
91
+ /**
92
+ * The HTML id for this element
93
+ */
94
+ id: PropTypes.string,
95
+ /**
96
+ * The HTML class names for this element
97
+ */
98
+ className: PropTypes.string,
99
+ /**
100
+ * The React-written, css properties for this element.
101
+ */
102
+ style: PropTypes.objectOf(PropTypes.string),
103
+ /**
104
+ * The name of the custom select input
105
+ */
106
+ name: PropTypes.string,
107
+ /**
108
+ * The label of the custom select input
109
+ */
110
+ label: PropTypes.string,
111
+ /**
112
+ * The custom select input description
113
+ */
114
+ description: PropTypes.string,
115
+ /**
116
+ * Whether the input should be disabled
117
+ */
118
+ disabled: PropTypes.bool,
119
+ /**
120
+ * The base color of the custom select input
121
+ */
122
+ color: PropTypes.string,
123
+ /**
124
+ * The label color of the custom select input
125
+ */
126
+ labelColor: PropTypes.string,
127
+ /**
128
+ * The graphql query to fetch the options and the accessor to destructure the results from
129
+ */
130
+ query: PropTypes.shape({
131
+ accessor: PropTypes.string,
132
+ graphql: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
133
+ }),
134
+ /**
135
+ * The variables that might be required to be used in the query to fetch
136
+ * select options.
137
+ */
138
+ variables: PropTypes.objectOf(PropTypes.string),
139
+ /**
140
+ * The select option keys to be used to map the data to the select options.
141
+ * i.e `{ value: 'id', label: 'name' }`
142
+ */
143
+ optionsKeyMap: PropTypes.shape({
144
+ value: PropTypes.string.isRequired,
145
+ getLabel: PropTypes.func.isRequired
146
+ }).isRequired,
147
+ /**
148
+ * The default select option for the query select
149
+ */
150
+ defaultOption: PropTypes.shape({
151
+ value: PropTypes.string.isRequired,
152
+ label: PropTypes.string.isRequired,
153
+ disabled: PropTypes.bool.isRequired
154
+ }),
155
+ /**
156
+ * The option to dipslayed when the select options are being fetched
157
+ */
158
+ loadingOption: PropTypes.shape({
159
+ value: PropTypes.string.isRequired,
160
+ label: PropTypes.string.isRequired,
161
+ disabled: PropTypes.bool.isRequired
162
+ }),
163
+ /**
164
+ * The query select field validator function
165
+ */
166
+ validate: PropTypes.func,
167
+ /*
168
+ * Whether the input is optional or not
169
+ */
170
+ optional: PropTypes.bool
171
+ };
172
+ QuerySelect.defaultProps = {
173
+ disabled: false,
174
+ color: 'paragraph',
175
+ defaultOption: {
176
+ value: '',
177
+ label: 'Select an option',
178
+ disabled: true
179
+ },
180
+ loadingOption: {
181
+ value: '',
182
+ label: 'Fetching Options',
183
+ disabled: true
184
+ }
185
+ };
186
+ export default QuerySelect;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as QuerySelect } from "./QuerySelect";
@@ -0,0 +1,124 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useState, useInsertionEffect, memo } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import styleNames from '@pareto-engineering/bem/exports';
6
+
7
+ // Local Definitions
8
+
9
+ import { Rating } from "./common";
10
+ import { FormLabelV2 } from "../../../common";
11
+ const baseClassName = styleNames.base;
12
+ const componentClassName = 'ratings-input';
13
+
14
+ /**
15
+ * This is the component description.
16
+ */
17
+ const RatingsInput = ({
18
+ id,
19
+ className: userClassName,
20
+ style,
21
+ name,
22
+ ratingCount,
23
+ showRatingValue,
24
+ color,
25
+ label,
26
+ labelColor,
27
+ labelMax,
28
+ labelMin,
29
+ displayRatingsLabel,
30
+ optional
31
+ // ...otherProps
32
+ }) => {
33
+ useInsertionEffect(() => {
34
+ import("./styles.scss");
35
+ }, []);
36
+ const [hover, setHover] = useState(null);
37
+ return /*#__PURE__*/React.createElement("div", {
38
+ id: id,
39
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
40
+ style: style
41
+ }, /*#__PURE__*/React.createElement(FormLabelV2, {
42
+ name: name,
43
+ color: labelColor,
44
+ optional: optional
45
+ // {...otherProps}
46
+ }, label), /*#__PURE__*/React.createElement("div", {
47
+ className: "stars"
48
+ }, displayRatingsLabel && /*#__PURE__*/React.createElement("p", {
49
+ className: "label-text s-2 x-metadata c-x"
50
+ }, labelMin), [...Array(ratingCount)].map((_, index) => {
51
+ const ratingValue = index + 1;
52
+ return /*#__PURE__*/React.createElement(Rating, {
53
+ key: ratingValue,
54
+ ratingId: `${name}-${ratingValue}`,
55
+ value: ratingValue,
56
+ name: name,
57
+ hover: hover,
58
+ setHover: setHover,
59
+ showRatingValue: showRatingValue,
60
+ activeBackgroundColor: color
61
+ });
62
+ }), displayRatingsLabel && /*#__PURE__*/React.createElement("p", {
63
+ className: "label-text s-2 x-metadata c-x"
64
+ }, labelMax)));
65
+ };
66
+ RatingsInput.propTypes = {
67
+ /**
68
+ * The HTML id for this element
69
+ */
70
+ id: PropTypes.string,
71
+ /**
72
+ * The HTML class names for this element
73
+ */
74
+ className: PropTypes.string,
75
+ /**
76
+ * The React-written, css properties for this element.
77
+ */
78
+ style: PropTypes.objectOf(PropTypes.string),
79
+ /**
80
+ * The number of ratings input stars to be displayed
81
+ */
82
+ ratingCount: PropTypes.number.isRequired,
83
+ /**
84
+ * Name of the rating input
85
+ */
86
+ name: PropTypes.string.isRequired,
87
+ /**
88
+ * Determines if the rating start value should be shown
89
+ */
90
+ showRatingValue: PropTypes.bool,
91
+ /**
92
+ * The label of the ratings input
93
+ */
94
+ label: PropTypes.string.isRequired,
95
+ /**
96
+ * description for the highest rating value
97
+ */
98
+ labelMax: PropTypes.string,
99
+ /**
100
+ * description for the lowest rating value
101
+ */
102
+ labelMin: PropTypes.string,
103
+ /**
104
+ * If the rating lables should be shown
105
+ */
106
+ displayRatingsLabel: PropTypes.bool,
107
+ /**
108
+ * Whether the input is optional or not
109
+ */
110
+ optional: PropTypes.bool,
111
+ /**
112
+ * The color of the stars
113
+ */
114
+ color: PropTypes.string,
115
+ /**
116
+ * String that will represent color for the label
117
+ */
118
+ labelColor: PropTypes.string
119
+ };
120
+ RatingsInput.defaultProps = {
121
+ labelMin: 'not satisfied.',
122
+ labelMax: 'very satisfied.'
123
+ };
124
+ export default /*#__PURE__*/memo(RatingsInput);
@@ -0,0 +1,109 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ /* @pareto-engineering/generator-front 1.0.12 */
3
+ import * as React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { useField } from 'formik';
6
+ import styleNames from '@pareto-engineering/bem/exports';
7
+
8
+ // Local Definitions
9
+
10
+ const baseClassName = styleNames.base;
11
+ const componentClassName = 'rating';
12
+
13
+ /**
14
+ * This is the component description.
15
+ */
16
+ const Rating = ({
17
+ id,
18
+ className: userClassName,
19
+ style,
20
+ value,
21
+ name,
22
+ ratingId,
23
+ hover,
24
+ setHover,
25
+ validate,
26
+ activeBackgroundColor,
27
+ inactiveBackgroundColor,
28
+ showRatingValue
29
+ // ...otherProps
30
+ }) => {
31
+ const [field] = useField({
32
+ name,
33
+ validate
34
+ });
35
+ return /*#__PURE__*/React.createElement("div", {
36
+ id: id,
37
+ className: [baseClassName, componentClassName, userClassName, `x-${activeBackgroundColor}`, `y-${inactiveBackgroundColor}`].filter(e => e).join(' '),
38
+ style: style
39
+ }, /*#__PURE__*/React.createElement("label", {
40
+ htmlFor: ratingId,
41
+ onMouseEnter: () => setHover(value),
42
+ onMouseLeave: () => setHover(null)
43
+ }, showRatingValue && /*#__PURE__*/React.createElement("span", {
44
+ className: "s-2 x-metadata c-x"
45
+ }, value), /*#__PURE__*/React.createElement("span", {
46
+ className: ['icon', value <= (hover || Number(field.value)) ? 'c-x' : 'c-hard-y'].filter(e => e).join(' ')
47
+ }, "[")), /*#__PURE__*/React.createElement("input", _extends({}, field, {
48
+ type: "radio",
49
+ id: ratingId,
50
+ name: name,
51
+ value: value
52
+ })));
53
+ };
54
+ Rating.propTypes = {
55
+ /**
56
+ * The HTML id for this element
57
+ */
58
+ id: PropTypes.string,
59
+ /**
60
+ * The HTML class names for this element
61
+ */
62
+ className: PropTypes.string,
63
+ /**
64
+ * The React-written, css properties for this element.
65
+ */
66
+ style: PropTypes.objectOf(PropTypes.string),
67
+ /**
68
+ * The value of each an every rating star
69
+ */
70
+ value: PropTypes.number,
71
+ /**
72
+ * The current hover value
73
+ */
74
+ hover: PropTypes.number,
75
+ /**
76
+ * Function to update the hover value
77
+ */
78
+ setHover: PropTypes.func,
79
+ /**
80
+ * Unique Id for each rating star
81
+ */
82
+ ratingId: PropTypes.string,
83
+ /**
84
+ * Name of the rating input
85
+ */
86
+ name: PropTypes.string,
87
+ /**
88
+ * The start rating backgriund color when hovered or clicked
89
+ */
90
+ activeBackgroundColor: PropTypes.string,
91
+ /**
92
+ * The start rating backgriund color when not hovered and not clicked
93
+ */
94
+ inactiveBackgroundColor: PropTypes.string,
95
+ /**
96
+ * Determines if the rating start value should be shown
97
+ */
98
+ showRatingValue: PropTypes.bool,
99
+ /**
100
+ * The rating field validator function
101
+ */
102
+ validate: PropTypes.func
103
+ };
104
+ Rating.defaultProps = {
105
+ activeBackgroundColor: 'interactive',
106
+ inactiveBackgroundColor: 'background-inputs',
107
+ showRatingValue: false
108
+ };
109
+ 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
+ }