@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,148 @@
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 { useInsertionEffect, memo } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import styleNames from '@pareto-engineering/bem/exports';
7
+ import { useField } from 'formik';
8
+ import { FormLabelV2, FormDescriptionV2 } from "../../../common";
9
+
10
+ // Local Definitions
11
+
12
+ const baseClassName = styleNames.base;
13
+ const componentClassName = 'link-input';
14
+
15
+ /**
16
+ * This is the component description.
17
+ */
18
+ const LinkInput = ({
19
+ id,
20
+ className: userClassName,
21
+ style,
22
+ name,
23
+ label,
24
+ color,
25
+ labelColor,
26
+ validate,
27
+ description,
28
+ disabled,
29
+ placeholder,
30
+ optional,
31
+ autoComplete
32
+ // ...otherProps
33
+ }) => {
34
+ useInsertionEffect(() => {
35
+ import("./styles.scss");
36
+ }, []);
37
+ const [field] = useField({
38
+ name,
39
+ validate
40
+ });
41
+ return /*#__PURE__*/React.createElement("div", {
42
+ id: id,
43
+ className: [baseClassName, componentClassName, userClassName, `y-${color}`].filter(e => e).join(' '),
44
+ style: style
45
+ }, /*#__PURE__*/React.createElement(FormLabelV2, {
46
+ name: name,
47
+ color: labelColor,
48
+ optional: optional
49
+ // {...otherProps}
50
+ }, label), /*#__PURE__*/React.createElement("div", {
51
+ className: "input-link-wrapper"
52
+ }, /*#__PURE__*/React.createElement("input", _extends({
53
+ id: name,
54
+ className: "input",
55
+ type: "text",
56
+ disabled: disabled,
57
+ placeholder: placeholder,
58
+ autoComplete: autoComplete
59
+ }, field)), /*#__PURE__*/React.createElement("a", {
60
+ href: field.value,
61
+ target: "_blank",
62
+ rel: "noopener noreferrer"
63
+ }, "\u2192")), /*#__PURE__*/React.createElement(FormDescriptionV2, {
64
+ className: "s-1",
65
+ description: description,
66
+ name: name
67
+ }));
68
+ };
69
+ LinkInput.propTypes = {
70
+ /**
71
+ * The HTML id for this element
72
+ */
73
+ id: PropTypes.string,
74
+ /**
75
+ * The HTML class names for this element
76
+ */
77
+ className: PropTypes.string,
78
+ /**
79
+ * The React-written, css properties for this element.
80
+ */
81
+ style: PropTypes.objectOf(PropTypes.string),
82
+ /**
83
+ * The input name (html - and Formik state)
84
+ */
85
+ name: PropTypes.string.isRequired,
86
+ /**
87
+ * The input label
88
+ */
89
+ label: PropTypes.string.isRequired,
90
+ /**
91
+ * The input label color
92
+ */
93
+ labelColor: PropTypes.string,
94
+ /**
95
+ * The input field validator function
96
+ */
97
+ validate: PropTypes.func,
98
+ /**
99
+ * If the slide will only have one input
100
+ */
101
+ oneInputLabel: PropTypes.bool,
102
+ /**
103
+ * Input description
104
+ */
105
+ description: PropTypes.string,
106
+ /**
107
+ * Whether the text input should be disabled
108
+ */
109
+ disabled: PropTypes.bool,
110
+ /**
111
+ * The placeholder text for the input
112
+ */
113
+ placeholder: PropTypes.string,
114
+ /**
115
+ * The text input color
116
+ */
117
+ color: PropTypes.string,
118
+ /**
119
+ * Whether the input is optional or not
120
+ */
121
+ optional: PropTypes.bool,
122
+ /**
123
+ * The autoComplete value that the browser should watch for the input
124
+ * `https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete`
125
+ */
126
+ autoComplete: PropTypes.string,
127
+ /**
128
+ * The number of columns the label should span
129
+ */
130
+ labelSpan: PropTypes.number,
131
+ /**
132
+ * The number of columns the input should span
133
+ */
134
+ inputSpan: PropTypes.number,
135
+ /**
136
+ * The number of columns the label should span on desktop
137
+ */
138
+ desktopLabelSpan: PropTypes.number,
139
+ /**
140
+ * The number of columns the input should span on desktop
141
+ */
142
+ desktopInputSpan: PropTypes.number
143
+ };
144
+ LinkInput.defaultProps = {
145
+ color: 'paragraph',
146
+ disabled: false
147
+ };
148
+ export default /*#__PURE__*/memo(LinkInput);
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as LinkInput } from "./LinkInput";
@@ -0,0 +1,90 @@
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-padding: .55em .75em;
8
+ $default-symbol-left: 1em;
9
+ $default-padding-with-symbol:
10
+ .55em
11
+ calc($default-symbol-left - 1em)
12
+ .55em
13
+ calc($default-symbol-left + 1em);
14
+ $default-input-border-radius: var(--theme-default-input-border-radius);
15
+ $default-border: var(--theme-default-input-border);
16
+ $hover-border: var(--theme-hover-input-border);
17
+ $focus-border: var(--theme-focus-input-border);
18
+ $default-background: var(--background-inputs);
19
+ $disabled-background: var(--background-inputs-30);
20
+
21
+ .#{bem.$base}.link-input {
22
+ display: flex;
23
+ flex-direction: column;
24
+ position: relative;
25
+
26
+ > .#{bem.$base}.form-label {
27
+ margin-bottom: var(--gap);
28
+ }
29
+
30
+ &.has-symbol {
31
+ &::before {
32
+ color: var(--y);
33
+ content: var(--symbol);
34
+ left: $default-symbol-left;
35
+ position: absolute;
36
+ top: 50%;
37
+ transform: translate(-50%, -50%);
38
+ }
39
+
40
+ input {
41
+ padding: $default-padding-with-symbol;
42
+ }
43
+ }
44
+
45
+ > .input-link-wrapper {
46
+ display: flex;
47
+ gap: calc(var(--gap) / 2);
48
+
49
+ > a {
50
+ align-self: center;
51
+ border: 1px solid var(--interactive);
52
+ border-radius: var(--theme-default-input-border-radius);
53
+ padding: .5em;
54
+
55
+ &:hover {
56
+ background-color: var(--interactive);
57
+ color: var(--on-interactive);
58
+ }
59
+ }
60
+
61
+ > input {
62
+ background-color: $default-background;
63
+ border: $default-border;
64
+ border-radius: $default-input-border-radius;
65
+ color: var(--y);
66
+ outline: none;
67
+ padding: $default-padding;
68
+ width: 100%;
69
+
70
+ &::placeholder {
71
+ color: var(--metadata);
72
+ }
73
+
74
+ &:disabled {
75
+ background-color: $disabled-background;
76
+ }
77
+
78
+ &:not(:disabled) {
79
+ &:hover,
80
+ &:active {
81
+ border: $hover-border;
82
+ }
83
+
84
+ &:focus {
85
+ border: $focus-border;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,126 @@
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 { useEffect, useState } from 'react';
5
+ import { useRelayEnvironment, fetchQuery } from 'react-relay';
6
+ import { useField } from 'formik';
7
+ import PropTypes from 'prop-types';
8
+ import { ChoicesInput } from "../ChoicesInput";
9
+
10
+ /**
11
+ * This is the component description.
12
+ */
13
+ const QueryChoices = ({
14
+ name,
15
+ optionsKeyMap,
16
+ query,
17
+ variables,
18
+ validate,
19
+ loadingOption,
20
+ extraVariables,
21
+ ...otherProps
22
+ }) => {
23
+ const [,, helpers] = useField({
24
+ name,
25
+ validate
26
+ });
27
+ const {
28
+ setError
29
+ } = helpers;
30
+ const environment = useRelayEnvironment();
31
+ const [isFetching, setIsFetching] = useState(false);
32
+ const [options, setOptions] = useState([loadingOption]);
33
+ const {
34
+ graphql,
35
+ accessor
36
+ } = query;
37
+ const getOptions = () => {
38
+ if (isFetching) return;
39
+ let searchVariables = variables;
40
+ if (extraVariables) {
41
+ searchVariables = {
42
+ ...variables,
43
+ ...extraVariables
44
+ };
45
+ }
46
+ fetchQuery(environment, graphql, searchVariables).subscribe({
47
+ start: () => {
48
+ setIsFetching(true);
49
+ },
50
+ complete: () => {
51
+ setIsFetching(false);
52
+ },
53
+ error: fetchError => {
54
+ setIsFetching(false);
55
+ if (setError) setError(fetchError.message);
56
+ },
57
+ next: data => {
58
+ setOptions([...data[accessor].edges.map(({
59
+ node
60
+ }) => ({
61
+ value: node[optionsKeyMap.value],
62
+ label: optionsKeyMap.getLabel(node)
63
+ }))]);
64
+ }
65
+ });
66
+ };
67
+ useEffect(() => {
68
+ getOptions();
69
+ }, [variables]);
70
+ return /*#__PURE__*/React.createElement(ChoicesInput, _extends({
71
+ name: name,
72
+ validate: validate,
73
+ options: options
74
+ }, otherProps));
75
+ };
76
+ QueryChoices.propTypes = {
77
+ /**
78
+ * The choices name
79
+ */
80
+ name: PropTypes.string.isRequired,
81
+ /**
82
+ * The select option keys to be used to map the data to the select options.
83
+ * i.e `{ value: 'id', label: 'name' }`
84
+ */
85
+ optionsKeyMap: PropTypes.shape({
86
+ value: PropTypes.string.isRequired,
87
+ getLabel: PropTypes.func.isRequired
88
+ }).isRequired,
89
+ /**
90
+ * The graphql query to fetch the options and the accessor to destructure the results from
91
+ */
92
+ query: PropTypes.shape({
93
+ accessor: PropTypes.string,
94
+ graphql: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
95
+ }),
96
+ /**
97
+ * The variables that might be required to be used in the query to fetch
98
+ * select options.
99
+ */
100
+ variables: PropTypes.objectOf(PropTypes.string),
101
+ /**
102
+ * The option to displayed when the select options are being fetched
103
+ */
104
+ loadingOption: PropTypes.shape({
105
+ value: PropTypes.string.isRequired,
106
+ label: PropTypes.string.isRequired,
107
+ disabled: PropTypes.bool.isRequired
108
+ }),
109
+ /**
110
+ * The input field validator function
111
+ */
112
+ validate: PropTypes.string,
113
+ /**
114
+ * The extra variables that might be required to be used in the query to fetch
115
+ * select options.
116
+ */
117
+ extraVariables: PropTypes.objectOf(PropTypes.string)
118
+ };
119
+ QueryChoices.defaultProps = {
120
+ loadingOption: {
121
+ value: '',
122
+ label: 'Fetching Options',
123
+ disabled: true
124
+ }
125
+ };
126
+ export default QueryChoices;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as QueryChoices } from "./QueryChoices";
@@ -0,0 +1,221 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ import * as React from 'react';
3
+ import { useState, useInsertionEffect } from 'react';
4
+ import { useField } from 'formik';
5
+ import { useRelayEnvironment, fetchQuery } from 'react-relay';
6
+ import PropTypes from 'prop-types';
7
+
8
+ // Local Definitions
9
+
10
+ import { Combobox, MultipleCombobox } from "./common";
11
+
12
+ /**
13
+ * This is the component description.
14
+ */
15
+ const QueryCombobox = ({
16
+ id,
17
+ style,
18
+ className,
19
+ query,
20
+ multiple,
21
+ name,
22
+ label,
23
+ labelColor,
24
+ color,
25
+ optional,
26
+ description,
27
+ disabled,
28
+ debounceMs,
29
+ searchVariable,
30
+ extraVariables,
31
+ optionsKeyMap,
32
+ minLength,
33
+ transformSearch,
34
+ validate,
35
+ placeholder,
36
+ promptCreateNewOption
37
+ // ...otherProps
38
+ }) => {
39
+ useInsertionEffect(() => {
40
+ import("./styles.scss");
41
+ }, []);
42
+ const [, meta, helpers] = useField({
43
+ name,
44
+ validate
45
+ });
46
+ const {
47
+ setValue,
48
+ setError
49
+ } = helpers;
50
+ const {
51
+ value
52
+ } = meta;
53
+ const environment = useRelayEnvironment();
54
+ const [isFetching, setIsFetching] = useState(false);
55
+ const [options, setOptions] = useState([]);
56
+ const {
57
+ graphql,
58
+ accessor
59
+ } = query;
60
+ const getOptions = inputValue => {
61
+ if (isFetching) return;
62
+ let variables = {
63
+ [searchVariable]: inputValue
64
+ };
65
+ if (extraVariables) {
66
+ variables = {
67
+ ...variables,
68
+ ...extraVariables
69
+ };
70
+ }
71
+ fetchQuery(environment, graphql, variables).subscribe({
72
+ start: () => {
73
+ setIsFetching(true);
74
+ },
75
+ complete: () => {
76
+ setIsFetching(false);
77
+ },
78
+ error: fetchError => {
79
+ setIsFetching(false);
80
+ if (setError) setError(fetchError.message);
81
+ },
82
+ next: data => {
83
+ setOptions(data[accessor].edges.map(({
84
+ node
85
+ }) => ({
86
+ value: node[optionsKeyMap.value],
87
+ label: optionsKeyMap.getLabel(node)
88
+ })));
89
+ }
90
+ });
91
+ };
92
+ const comboboxProps = {
93
+ id,
94
+ style,
95
+ options,
96
+ getOptions,
97
+ setOptions,
98
+ debounceMs,
99
+ disabled,
100
+ name,
101
+ label,
102
+ labelColor,
103
+ optional,
104
+ description,
105
+ setValue,
106
+ value,
107
+ color,
108
+ isFetching,
109
+ className,
110
+ minLength,
111
+ transformSearch,
112
+ placeholder,
113
+ promptCreateNewOption
114
+ };
115
+ const Input = multiple ? MultipleCombobox : Combobox;
116
+ return /*#__PURE__*/React.createElement(Input, comboboxProps);
117
+ };
118
+ QueryCombobox.propTypes = {
119
+ /**
120
+ * The HTML id for this element
121
+ */
122
+ id: PropTypes.string,
123
+ /**
124
+ * The HTML class names for this element
125
+ */
126
+ className: PropTypes.string,
127
+ /**
128
+ * The React-written, css properties for this element.
129
+ */
130
+ style: PropTypes.objectOf(PropTypes.string),
131
+ /**
132
+ * The name of the custom select input
133
+ */
134
+ name: PropTypes.string,
135
+ /**
136
+ * The label of the custom select input
137
+ */
138
+ label: PropTypes.string,
139
+ /**
140
+ * The label color of the custom select input
141
+ */
142
+ labelColor: PropTypes.string,
143
+ /**
144
+ * The custom select input description
145
+ */
146
+ description: PropTypes.string,
147
+ /**
148
+ * Whether the input should be disabled
149
+ */
150
+ disabled: PropTypes.bool,
151
+ /**
152
+ * The base color of the tiles
153
+ */
154
+ color: PropTypes.string,
155
+ /**
156
+ * The debounce time in milliseconds
157
+ */
158
+ debounceMs: PropTypes.number,
159
+ /**
160
+ * The graphql query to fetch the options and the accessor to destructure the results from
161
+ */
162
+ query: PropTypes.shape({
163
+ accessor: PropTypes.string,
164
+ graphql: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired
165
+ }),
166
+ /**
167
+ * The extra variables required to be used in the query.
168
+ */
169
+ extraVariables: PropTypes.objectOf(PropTypes.string),
170
+ /**
171
+ * The select option keys to be used to map the data to the select options.
172
+ * i.e `{ value: 'id', label: 'name' }`
173
+ */
174
+ optionsKeyMap: PropTypes.shape({
175
+ value: PropTypes.string.isRequired,
176
+ getLabel: PropTypes.func.isRequired
177
+ }),
178
+ /**
179
+ * Whether to allow multiple items selection
180
+ */
181
+ multiple: PropTypes.bool,
182
+ /**
183
+ * The variable to be used to search the data
184
+ */
185
+ searchVariable: PropTypes.string,
186
+ /**
187
+ * The minimum length of the search input to start fetching the options
188
+ */
189
+ minLength: PropTypes.number,
190
+ /**
191
+ * The function to transform the search input
192
+ */
193
+ transformSearch: PropTypes.func,
194
+ /**
195
+ * The query combobox field validator function
196
+ */
197
+ validate: PropTypes.func,
198
+ /*
199
+ * Whether the input is optional or not
200
+ */
201
+ optional: PropTypes.bool,
202
+ /**
203
+ * Whether to prompt the user to create a new option if the search input
204
+ * does not match any of the options
205
+ */
206
+ promptCreateNewOption: PropTypes.bool
207
+ };
208
+ QueryCombobox.defaultProps = {
209
+ optionsKeyMap: {
210
+ value: 'id',
211
+ getLabel: node => node.name
212
+ },
213
+ multiple: false,
214
+ color: 'interactive',
215
+ searchVariable: 'search',
216
+ transformSearch: search => search,
217
+ minLength: 2,
218
+ disabled: false,
219
+ promptCreateNewOption: false
220
+ };
221
+ export default QueryCombobox;