@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,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,137 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _reactRelay = require("react-relay");
10
+ var _formik = require("formik");
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _ChoicesInput = require("../ChoicesInput");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ 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); } /* @pareto-engineering/generator-front 1.0.12 */
17
+ /**
18
+ * This is the component description.
19
+ */
20
+ const QueryChoices = _ref => {
21
+ let {
22
+ name,
23
+ optionsKeyMap,
24
+ query,
25
+ variables,
26
+ validate,
27
+ loadingOption,
28
+ extraVariables,
29
+ ...otherProps
30
+ } = _ref;
31
+ const [,, helpers] = (0, _formik.useField)({
32
+ name,
33
+ validate
34
+ });
35
+ const {
36
+ setError
37
+ } = helpers;
38
+ const environment = (0, _reactRelay.useRelayEnvironment)();
39
+ const [isFetching, setIsFetching] = (0, _react.useState)(false);
40
+ const [options, setOptions] = (0, _react.useState)([loadingOption]);
41
+ const {
42
+ graphql,
43
+ accessor
44
+ } = query;
45
+ const getOptions = () => {
46
+ if (isFetching) return;
47
+ let searchVariables = variables;
48
+ if (extraVariables) {
49
+ searchVariables = {
50
+ ...variables,
51
+ ...extraVariables
52
+ };
53
+ }
54
+ (0, _reactRelay.fetchQuery)(environment, graphql, searchVariables).subscribe({
55
+ start: () => {
56
+ setIsFetching(true);
57
+ },
58
+ complete: () => {
59
+ setIsFetching(false);
60
+ },
61
+ error: fetchError => {
62
+ setIsFetching(false);
63
+ if (setError) setError(fetchError.message);
64
+ },
65
+ next: data => {
66
+ setOptions([...data[accessor].edges.map(_ref2 => {
67
+ let {
68
+ node
69
+ } = _ref2;
70
+ return {
71
+ value: node[optionsKeyMap.value],
72
+ label: optionsKeyMap.getLabel(node)
73
+ };
74
+ })]);
75
+ }
76
+ });
77
+ };
78
+ (0, _react.useEffect)(() => {
79
+ getOptions();
80
+ }, [variables]);
81
+ return /*#__PURE__*/React.createElement(_ChoicesInput.ChoicesInput, _extends({
82
+ name: name,
83
+ validate: validate,
84
+ options: options
85
+ }, otherProps));
86
+ };
87
+ QueryChoices.propTypes = {
88
+ /**
89
+ * The choices name
90
+ */
91
+ name: _propTypes.default.string.isRequired,
92
+ /**
93
+ * The select option keys to be used to map the data to the select options.
94
+ * i.e `{ value: 'id', label: 'name' }`
95
+ */
96
+ optionsKeyMap: _propTypes.default.shape({
97
+ value: _propTypes.default.string.isRequired,
98
+ getLabel: _propTypes.default.func.isRequired
99
+ }).isRequired,
100
+ /**
101
+ * The graphql query to fetch the options and the accessor to destructure the results from
102
+ */
103
+ query: _propTypes.default.shape({
104
+ accessor: _propTypes.default.string,
105
+ graphql: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired
106
+ }),
107
+ /**
108
+ * The variables that might be required to be used in the query to fetch
109
+ * select options.
110
+ */
111
+ variables: _propTypes.default.objectOf(_propTypes.default.string),
112
+ /**
113
+ * The option to displayed when the select options are being fetched
114
+ */
115
+ loadingOption: _propTypes.default.shape({
116
+ value: _propTypes.default.string.isRequired,
117
+ label: _propTypes.default.string.isRequired,
118
+ disabled: _propTypes.default.bool.isRequired
119
+ }),
120
+ /**
121
+ * The input field validator function
122
+ */
123
+ validate: _propTypes.default.string,
124
+ /**
125
+ * The extra variables that might be required to be used in the query to fetch
126
+ * select options.
127
+ */
128
+ extraVariables: _propTypes.default.objectOf(_propTypes.default.string)
129
+ };
130
+ QueryChoices.defaultProps = {
131
+ loadingOption: {
132
+ value: '',
133
+ label: 'Fetching Options',
134
+ disabled: true
135
+ }
136
+ };
137
+ var _default = exports.default = QueryChoices;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "QueryChoices", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _QueryChoices.default;
10
+ }
11
+ });
12
+ var _QueryChoices = _interopRequireDefault(require("./QueryChoices"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _formik = require("formik");
10
+ var _reactRelay = require("react-relay");
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _common = require("./common");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* @pareto-engineering/generator-front 1.0.12 */ // Local Definitions
16
+ /**
17
+ * This is the component description.
18
+ */
19
+ const QueryCombobox = _ref => {
20
+ let {
21
+ id,
22
+ style,
23
+ className,
24
+ query,
25
+ multiple,
26
+ name,
27
+ label,
28
+ labelColor,
29
+ color,
30
+ optional,
31
+ description,
32
+ disabled,
33
+ debounceMs,
34
+ searchVariable,
35
+ extraVariables,
36
+ optionsKeyMap,
37
+ minLength,
38
+ transformSearch,
39
+ validate,
40
+ placeholder,
41
+ promptCreateNewOption
42
+ // ...otherProps
43
+ } = _ref;
44
+ (0, _react.useInsertionEffect)(() => {
45
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
46
+ }, []);
47
+ const [, meta, helpers] = (0, _formik.useField)({
48
+ name,
49
+ validate
50
+ });
51
+ const {
52
+ setValue,
53
+ setError
54
+ } = helpers;
55
+ const {
56
+ value
57
+ } = meta;
58
+ const environment = (0, _reactRelay.useRelayEnvironment)();
59
+ const [isFetching, setIsFetching] = (0, _react.useState)(false);
60
+ const [options, setOptions] = (0, _react.useState)([]);
61
+ const {
62
+ graphql,
63
+ accessor
64
+ } = query;
65
+ const getOptions = inputValue => {
66
+ if (isFetching) return;
67
+ let variables = {
68
+ [searchVariable]: inputValue
69
+ };
70
+ if (extraVariables) {
71
+ variables = {
72
+ ...variables,
73
+ ...extraVariables
74
+ };
75
+ }
76
+ (0, _reactRelay.fetchQuery)(environment, graphql, variables).subscribe({
77
+ start: () => {
78
+ setIsFetching(true);
79
+ },
80
+ complete: () => {
81
+ setIsFetching(false);
82
+ },
83
+ error: fetchError => {
84
+ setIsFetching(false);
85
+ if (setError) setError(fetchError.message);
86
+ },
87
+ next: data => {
88
+ setOptions(data[accessor].edges.map(_ref2 => {
89
+ let {
90
+ node
91
+ } = _ref2;
92
+ return {
93
+ value: node[optionsKeyMap.value],
94
+ label: optionsKeyMap.getLabel(node)
95
+ };
96
+ }));
97
+ }
98
+ });
99
+ };
100
+ const comboboxProps = {
101
+ id,
102
+ style,
103
+ options,
104
+ getOptions,
105
+ setOptions,
106
+ debounceMs,
107
+ disabled,
108
+ name,
109
+ label,
110
+ labelColor,
111
+ optional,
112
+ description,
113
+ setValue,
114
+ value,
115
+ color,
116
+ isFetching,
117
+ className,
118
+ minLength,
119
+ transformSearch,
120
+ placeholder,
121
+ promptCreateNewOption
122
+ };
123
+ const Input = multiple ? _common.MultipleCombobox : _common.Combobox;
124
+ return /*#__PURE__*/React.createElement(Input, comboboxProps);
125
+ };
126
+ QueryCombobox.propTypes = {
127
+ /**
128
+ * The HTML id for this element
129
+ */
130
+ id: _propTypes.default.string,
131
+ /**
132
+ * The HTML class names for this element
133
+ */
134
+ className: _propTypes.default.string,
135
+ /**
136
+ * The React-written, css properties for this element.
137
+ */
138
+ style: _propTypes.default.objectOf(_propTypes.default.string),
139
+ /**
140
+ * The name of the custom select input
141
+ */
142
+ name: _propTypes.default.string,
143
+ /**
144
+ * The label of the custom select input
145
+ */
146
+ label: _propTypes.default.string,
147
+ /**
148
+ * The label color of the custom select input
149
+ */
150
+ labelColor: _propTypes.default.string,
151
+ /**
152
+ * The custom select input description
153
+ */
154
+ description: _propTypes.default.string,
155
+ /**
156
+ * Whether the input should be disabled
157
+ */
158
+ disabled: _propTypes.default.bool,
159
+ /**
160
+ * The base color of the tiles
161
+ */
162
+ color: _propTypes.default.string,
163
+ /**
164
+ * The debounce time in milliseconds
165
+ */
166
+ debounceMs: _propTypes.default.number,
167
+ /**
168
+ * The graphql query to fetch the options and the accessor to destructure the results from
169
+ */
170
+ query: _propTypes.default.shape({
171
+ accessor: _propTypes.default.string,
172
+ graphql: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired
173
+ }),
174
+ /**
175
+ * The extra variables required to be used in the query.
176
+ */
177
+ extraVariables: _propTypes.default.objectOf(_propTypes.default.string),
178
+ /**
179
+ * The select option keys to be used to map the data to the select options.
180
+ * i.e `{ value: 'id', label: 'name' }`
181
+ */
182
+ optionsKeyMap: _propTypes.default.shape({
183
+ value: _propTypes.default.string.isRequired,
184
+ getLabel: _propTypes.default.func.isRequired
185
+ }),
186
+ /**
187
+ * Whether to allow multiple items selection
188
+ */
189
+ multiple: _propTypes.default.bool,
190
+ /**
191
+ * The variable to be used to search the data
192
+ */
193
+ searchVariable: _propTypes.default.string,
194
+ /**
195
+ * The minimum length of the search input to start fetching the options
196
+ */
197
+ minLength: _propTypes.default.number,
198
+ /**
199
+ * The function to transform the search input
200
+ */
201
+ transformSearch: _propTypes.default.func,
202
+ /**
203
+ * The query combobox field validator function
204
+ */
205
+ validate: _propTypes.default.func,
206
+ /*
207
+ * Whether the input is optional or not
208
+ */
209
+ optional: _propTypes.default.bool,
210
+ /**
211
+ * Whether to prompt the user to create a new option if the search input
212
+ * does not match any of the options
213
+ */
214
+ promptCreateNewOption: _propTypes.default.bool
215
+ };
216
+ QueryCombobox.defaultProps = {
217
+ optionsKeyMap: {
218
+ value: 'id',
219
+ getLabel: node => node.name
220
+ },
221
+ multiple: false,
222
+ color: 'interactive',
223
+ searchVariable: 'search',
224
+ transformSearch: search => search,
225
+ minLength: 2,
226
+ disabled: false,
227
+ promptCreateNewOption: false
228
+ };
229
+ var _default = exports.default = QueryCombobox;
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _downshift = require("downshift");
11
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
12
+ var _ = require("../../../../..");
13
+ var _a = require("../../../../../../a");
14
+ var _b = require("../../../../../../b");
15
+ var _common = require("../../../../../common");
16
+ var _Menu = require("../Menu");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ 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); } /* @pareto-engineering/generator-front 1.0.12 */ // Local Definitions
21
+ const baseClassName = _exports.default.base;
22
+ const componentClassName = 'combobox';
23
+
24
+ /**
25
+ * This is the component description.
26
+ */
27
+ const Combobox = _ref => {
28
+ let {
29
+ id,
30
+ className: userClassName,
31
+ style,
32
+ label,
33
+ labelColor,
34
+ name,
35
+ options: items,
36
+ getOptions,
37
+ setOptions,
38
+ setValue,
39
+ description,
40
+ value,
41
+ color,
42
+ minLength,
43
+ isFetching,
44
+ transformSearch,
45
+ disabled,
46
+ optional,
47
+ placeholder,
48
+ promptCreateNewOption
49
+ // ...otherProps
50
+ } = _ref;
51
+ const {
52
+ isOpen,
53
+ selectItem,
54
+ selectedItem,
55
+ inputValue,
56
+ setInputValue,
57
+ getLabelProps,
58
+ getMenuProps,
59
+ getInputProps,
60
+ highlightedIndex,
61
+ getComboboxProps,
62
+ getItemProps
63
+ } = (0, _downshift.useCombobox)({
64
+ items,
65
+ initialSelectedItem: value,
66
+ itemToString: item => item ? item.label : '',
67
+ onInputValueChange: _ref2 => {
68
+ let {
69
+ inputValue: searchInputValue
70
+ } = _ref2;
71
+ const transformedInput = transformSearch(searchInputValue);
72
+ if (transformedInput.length > minLength) {
73
+ getOptions(transformedInput);
74
+ }
75
+ }
76
+ });
77
+ (0, _react.useEffect)(() => {
78
+ if (promptCreateNewOption) {
79
+ (0, _common.lookUpInputValueFromFetchedOptions)({
80
+ items,
81
+ inputValue,
82
+ setOptions,
83
+ minLength
84
+ });
85
+ }
86
+ }, [inputValue, items, promptCreateNewOption]);
87
+
88
+ // If the user has selected an item, we'll set the value of the field
89
+ // or if the combobox state has a selected item, we'll set the value to the formik state
90
+ (0, _react.useEffect)(() => {
91
+ if (selectedItem) {
92
+ setValue(selectedItem);
93
+ }
94
+ }, [selectedItem]);
95
+
96
+ // If the formik state has a value, we'll set the selected item to the combobox state
97
+ (0, _react.useEffect)(() => {
98
+ if (value?.value !== selectedItem?.value) {
99
+ selectItem(value);
100
+ }
101
+ }, [value]);
102
+ const parentRef = (0, _react.useRef)(null);
103
+ const resetInputValue = () => setInputValue('');
104
+ return /*#__PURE__*/React.createElement("div", _extends({
105
+ id: id,
106
+ className: [baseClassName, componentClassName, userClassName, `y-${color}`].filter(e => e).join(' '),
107
+ style: style,
108
+ ref: parentRef
109
+ }, getComboboxProps()), /*#__PURE__*/React.createElement(_.FormLabelV2, _extends({}, getLabelProps(), {
110
+ name: name,
111
+ optional: optional,
112
+ color: labelColor
113
+ }), label), /*#__PURE__*/React.createElement("input", _extends({}, getInputProps(), {
114
+ className: "input",
115
+ disabled: disabled,
116
+ placeholder: placeholder
117
+ })), isFetching && /*#__PURE__*/React.createElement(_a.LoadingCircle, {
118
+ className: "x-main"
119
+ }), inputValue.length > minLength && !isFetching && /*#__PURE__*/React.createElement(_b.Button, {
120
+ isSimple: true,
121
+ isCompact: true,
122
+ color: "heading",
123
+ onClick: resetInputValue
124
+ }, /*#__PURE__*/React.createElement("span", {
125
+ className: "icon"
126
+ }, "Y")), /*#__PURE__*/React.createElement(_.FormDescriptionV2, {
127
+ className: "s-1",
128
+ description: description,
129
+ name: name
130
+ }), /*#__PURE__*/React.createElement(_a.Popover, {
131
+ isOpen: isOpen,
132
+ parentRef: parentRef
133
+ }, /*#__PURE__*/React.createElement(_Menu.Menu, _extends({
134
+ className: `y-${color}`,
135
+ isOpen: isOpen,
136
+ getItemProps: getItemProps,
137
+ highlightedIndex: highlightedIndex,
138
+ items: items
139
+ }, getMenuProps()))));
140
+ };
141
+ Combobox.propTypes = {
142
+ /**
143
+ * The HTML id for this element
144
+ */
145
+ id: _propTypes.default.string,
146
+ /**
147
+ * The HTML class names for this element
148
+ */
149
+ className: _propTypes.default.string,
150
+ /**
151
+ * The React-written, css properties for this element.
152
+ */
153
+ style: _propTypes.default.objectOf(_propTypes.default.string),
154
+ /**
155
+ * The label of the custom select input
156
+ */
157
+ label: _propTypes.default.string,
158
+ /**
159
+ * The custom select input options from the backend
160
+ */
161
+ options: _propTypes.default.arrayOf(_propTypes.default.shape({
162
+ value: _propTypes.default.string,
163
+ label: _propTypes.default.string
164
+ })),
165
+ /**
166
+ * The name of the custom select input
167
+ */
168
+ name: _propTypes.default.string,
169
+ /**
170
+ * The function to fetch the options from the backend
171
+ */
172
+ getOptions: _propTypes.default.func,
173
+ /**
174
+ * The function to set the value of the custom select input
175
+ */
176
+ setValue: _propTypes.default.func.isRequired,
177
+ /**
178
+ * The custom select input description
179
+ */
180
+ description: _propTypes.default.string,
181
+ /**
182
+ * The value of the custom select input
183
+ */
184
+ value: _propTypes.default.shape({
185
+ value: _propTypes.default.string,
186
+ label: _propTypes.default.string
187
+ }),
188
+ /**
189
+ * The base color of the combobox custom select input
190
+ */
191
+ color: _propTypes.default.string,
192
+ /**
193
+ * Whether the query getting the combobox options is inFlight
194
+ */
195
+ isFetching: _propTypes.default.bool.isRequired,
196
+ /**
197
+ * The minimum length of the search input to start fetching the options
198
+ */
199
+ minLength: _propTypes.default.number,
200
+ /**
201
+ * The function to transform the search input
202
+ */
203
+ transformSearch: _propTypes.default.func,
204
+ /**
205
+ * Whether the input filed shpuld be disabled
206
+ */
207
+ disabled: _propTypes.default.bool,
208
+ /**
209
+ * The number of columns the label should span
210
+ */
211
+ labelSpan: _propTypes.default.number,
212
+ /**
213
+ * The number of columns the input should span
214
+ */
215
+ inputSpan: _propTypes.default.number,
216
+ /**
217
+ * The number of columns the label should span on desktop
218
+ */
219
+ desktopLabelSpan: _propTypes.default.number,
220
+ /**
221
+ * The number of columns the input should span on desktop
222
+ */
223
+ desktopInputSpan: _propTypes.default.number,
224
+ /**
225
+ * Whether the input is optional or not
226
+ */
227
+ optional: _propTypes.default.bool,
228
+ /**
229
+ * The placeholder text for the input
230
+ */
231
+ placeholder: _propTypes.default.string
232
+ };
233
+ Combobox.defaultProps = {
234
+ // someProp: false
235
+ };
236
+ var _default = exports.default = Combobox;