@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,300 @@
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 _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
11
+ var _downshift = require("downshift");
12
+ var _b = require("../../../../../../b");
13
+ var _a = require("../../../../../../a");
14
+ var _ = require("../../../../..");
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 = 'multiple-combobox';
23
+
24
+ /**
25
+ * @param {Array[Object]} first - first array to check if it has an item not in the second array.
26
+ * @param {Array[Object]} second - second array to check against the first array.
27
+ *
28
+ * @returns {Boolean} - true if the first array has an item not in the second array.
29
+ */
30
+ const testIfArraysAreUnique = (first, second) => first.filter(objInFirstArray => !second.some(objInSecondArray => objInFirstArray.value === objInSecondArray.value)).length > 0;
31
+
32
+ /**
33
+ * This is the component description.
34
+ */
35
+ const MultipleCombobox = _ref => {
36
+ let {
37
+ id,
38
+ className: userClassName,
39
+ style,
40
+ label,
41
+ labelColor,
42
+ name,
43
+ optional,
44
+ options: items,
45
+ getOptions,
46
+ setValue,
47
+ description,
48
+ value,
49
+ color,
50
+ isFetching,
51
+ minLength,
52
+ transformSearch,
53
+ disabled,
54
+ placeholder,
55
+ setOptions,
56
+ promptCreateNewOption
57
+ // ...otherProps
58
+ } = _ref;
59
+ const [searchInputValue, setSearchInputValue] = (0, _react.useState)('');
60
+ const {
61
+ getSelectedItemProps,
62
+ getDropdownProps,
63
+ addSelectedItem,
64
+ removeSelectedItem,
65
+ setSelectedItems,
66
+ selectedItems
67
+ } = (0, _downshift.useMultipleSelection)({
68
+ initialSelectedItems: value || []
69
+ });
70
+
71
+ /**
72
+ * @returns {Boolean} - Unique items from the options array so that the combobox
73
+ * shows only the options that are not yet selected.
74
+ */
75
+ const getFilteredItems = () => items.filter(item => selectedItems.findIndex(e => e.label === item.label) < 0);
76
+ const {
77
+ isOpen,
78
+ getLabelProps,
79
+ getMenuProps,
80
+ getInputProps,
81
+ getComboboxProps,
82
+ highlightedIndex,
83
+ getItemProps,
84
+ inputValue,
85
+ setInputValue
86
+ } = (0, _downshift.useCombobox)({
87
+ searchInputValue,
88
+ defaultHighlightedIndex: 0,
89
+ // after selection, highlight the first item.
90
+ selectedItem: null,
91
+ items: getFilteredItems(),
92
+ circularNavigation: true,
93
+ stateReducer: (state, actionAndChanges) => {
94
+ const {
95
+ changes,
96
+ type
97
+ } = actionAndChanges;
98
+ switch (type) {
99
+ case _downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
100
+ case _downshift.useCombobox.stateChangeTypes.ItemClick:
101
+ return {
102
+ ...changes,
103
+ isOpen: true // keep the menu open after selection.
104
+ };
105
+
106
+ default:
107
+ break;
108
+ }
109
+ return changes;
110
+ },
111
+ onStateChange: _ref2 => {
112
+ let {
113
+ inputValue: newSearchInputValue,
114
+ type,
115
+ selectedItem
116
+ } = _ref2;
117
+ switch (type) {
118
+ case _downshift.useCombobox.stateChangeTypes.InputChange:
119
+ {
120
+ const transformedInput = transformSearch(newSearchInputValue);
121
+ if (transformedInput.length > minLength) {
122
+ getOptions(transformedInput);
123
+ }
124
+ setSearchInputValue(newSearchInputValue);
125
+ break;
126
+ }
127
+ case _downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
128
+ case _downshift.useCombobox.stateChangeTypes.ItemClick:
129
+ case _downshift.useCombobox.stateChangeTypes.InputBlur:
130
+ if (selectedItem) {
131
+ setSearchInputValue('');
132
+ addSelectedItem(selectedItem);
133
+ }
134
+ break;
135
+ default:
136
+ break;
137
+ }
138
+ }
139
+ });
140
+ (0, _react.useEffect)(() => {
141
+ if (selectedItems?.length > 0) {
142
+ setValue(selectedItems);
143
+ }
144
+ }, [selectedItems]);
145
+ (0, _react.useEffect)(() => {
146
+ if (promptCreateNewOption) {
147
+ (0, _common.lookUpInputValueFromFetchedOptions)({
148
+ items,
149
+ inputValue,
150
+ setOptions,
151
+ minLength
152
+ });
153
+ }
154
+ }, [inputValue, items, promptCreateNewOption]);
155
+ (0, _react.useEffect)(() => {
156
+ if (value?.length > 0 && (testIfArraysAreUnique(value, selectedItems) || testIfArraysAreUnique(selectedItems, value))) {
157
+ setSelectedItems(value);
158
+ }
159
+ }, [value]);
160
+ const parentRef = (0, _react.useRef)(null);
161
+ const resetInputValue = () => setInputValue('');
162
+ return /*#__PURE__*/React.createElement("div", _extends({
163
+ id: id,
164
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
165
+ style: style,
166
+ ref: parentRef
167
+ }, getComboboxProps()), /*#__PURE__*/React.createElement(_.FormLabelV2, _extends({
168
+ className: [baseClassName, componentClassName].filter(e => e).join(' ')
169
+ }, getLabelProps(), {
170
+ name: name,
171
+ optional: optional,
172
+ color: labelColor
173
+ }), label), selectedItems?.length > 0 && /*#__PURE__*/React.createElement("div", {
174
+ className: "selected-items"
175
+ }, selectedItems.map((selectedItem, index) => /*#__PURE__*/React.createElement("div", _extends({
176
+ key: selectedItem.label
177
+ }, getSelectedItemProps({
178
+ selectedItem,
179
+ index
180
+ }), {
181
+ className: "item"
182
+ }), /*#__PURE__*/React.createElement(_b.Button, {
183
+ onClick: e => {
184
+ e.stopPropagation();
185
+ removeSelectedItem(selectedItem);
186
+ },
187
+ isCompact: true,
188
+ color: color
189
+ }, /*#__PURE__*/React.createElement("span", null, selectedItem.label), /*#__PURE__*/React.createElement("span", {
190
+ className: "icon close"
191
+ }, "Y"))))), /*#__PURE__*/React.createElement("input", _extends({}, getInputProps(getDropdownProps({
192
+ preventKeyAction: isOpen
193
+ })), {
194
+ className: "input",
195
+ disabled: disabled,
196
+ placeholder: placeholder
197
+ })), isFetching && /*#__PURE__*/React.createElement(_a.LoadingCircle, {
198
+ className: "x-main"
199
+ }), inputValue.length > minLength && !isFetching && /*#__PURE__*/React.createElement(_b.Button, {
200
+ isSimple: true,
201
+ isCompact: true,
202
+ color: "interactive",
203
+ onClick: resetInputValue
204
+ }, /*#__PURE__*/React.createElement("span", {
205
+ className: "icon"
206
+ }, "Y")), /*#__PURE__*/React.createElement(_.FormDescriptionV2, {
207
+ className: "s-1",
208
+ description: description,
209
+ name: name
210
+ }), /*#__PURE__*/React.createElement(_a.Popover, {
211
+ isOpen: isOpen,
212
+ parentRef: parentRef
213
+ }, /*#__PURE__*/React.createElement(_Menu.Menu, _extends({
214
+ className: `y-${color}`,
215
+ isOpen: isOpen,
216
+ getItemProps: getItemProps,
217
+ highlightedIndex: highlightedIndex,
218
+ items: getFilteredItems()
219
+ }, getMenuProps()))));
220
+ };
221
+ MultipleCombobox.propTypes = {
222
+ /**
223
+ * The HTML id for this element
224
+ */
225
+ id: _propTypes.default.string,
226
+ /**
227
+ * The HTML class names for this element
228
+ */
229
+ className: _propTypes.default.string,
230
+ /**
231
+ * The React-written, css properties for this element.
232
+ */
233
+ style: _propTypes.default.objectOf(_propTypes.default.string),
234
+ /**
235
+ * The label of the custom select input
236
+ */
237
+ label: _propTypes.default.string,
238
+ /**
239
+ * The custom select input options from the backend
240
+ */
241
+ options: _propTypes.default.arrayOf(_propTypes.default.shape({
242
+ value: _propTypes.default.string,
243
+ label: _propTypes.default.string
244
+ })),
245
+ /**
246
+ * The name of the custom select input
247
+ */
248
+ name: _propTypes.default.string,
249
+ /**
250
+ * The function to fetch the options from the backend
251
+ */
252
+ getOptions: _propTypes.default.func,
253
+ /**
254
+ * The function to set the value of the custom select input
255
+ */
256
+ setValue: _propTypes.default.func.isRequired,
257
+ /**
258
+ * The custom select input description
259
+ */
260
+ description: _propTypes.default.string,
261
+ /**
262
+ * The value of the custom select input
263
+ */
264
+ value: _propTypes.default.arrayOf(_propTypes.default.shape({
265
+ value: _propTypes.default.string,
266
+ label: _propTypes.default.string
267
+ })),
268
+ /**
269
+ * The base color of the custom select input
270
+ */
271
+ color: _propTypes.default.string,
272
+ /**
273
+ * Whether the query getting the combobox options is inFlight
274
+ */
275
+ isFetching: _propTypes.default.bool.isRequired,
276
+ /**
277
+ * The minimum length of the search input to start fetching the options
278
+ */
279
+ minLength: _propTypes.default.number,
280
+ /**
281
+ * The function to transform the search input
282
+ */
283
+ transformSearch: _propTypes.default.func,
284
+ /**
285
+ * Whether the input filed shpuld be disabled
286
+ */
287
+ disabled: _propTypes.default.bool,
288
+ /**
289
+ * Whether the input is optional or not
290
+ */
291
+ optional: _propTypes.default.bool,
292
+ /**
293
+ * The placeholder text for the input
294
+ */
295
+ placeholder: _propTypes.default.string
296
+ };
297
+ MultipleCombobox.defaultProps = {
298
+ // someProp: false
299
+ };
300
+ var _default = exports.default = MultipleCombobox;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "MultipleCombobox", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _MultipleCombobox.default;
10
+ }
11
+ });
12
+ var _MultipleCombobox = _interopRequireDefault(require("./MultipleCombobox"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Combobox", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Combobox.Combobox;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Menu", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _Menu.Menu;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "MultipleCombobox", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _MultipleCombobox.MultipleCombobox;
22
+ }
23
+ });
24
+ var _Menu = require("./Menu");
25
+ var _Combobox = require("./Combobox");
26
+ var _MultipleCombobox = require("./MultipleCombobox");
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "QueryCombobox", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _QueryCombobox.default;
10
+ }
11
+ });
12
+ var _QueryCombobox = _interopRequireDefault(require("./QueryCombobox"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -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,198 @@
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 _ = require("../../..");
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
+ /* @pareto-engineering/generator-front 1.0.12 */
17
+
18
+ // Local Definitions
19
+
20
+ /**
21
+ * This is the component description.
22
+ */
23
+ const QuerySelect = _ref => {
24
+ let {
25
+ id,
26
+ className: userClassName,
27
+ style,
28
+ name,
29
+ label,
30
+ labelColor,
31
+ optional,
32
+ query,
33
+ variables,
34
+ optionsKeyMap,
35
+ description,
36
+ disabled,
37
+ color,
38
+ loadingOption,
39
+ defaultOption,
40
+ validate
41
+ // ...otherProps
42
+ } = _ref;
43
+ const [,, helpers] = (0, _formik.useField)({
44
+ name,
45
+ validate
46
+ });
47
+ const {
48
+ setError
49
+ } = helpers;
50
+ const environment = (0, _reactRelay.useRelayEnvironment)();
51
+ const [isFetching, setIsFetching] = (0, _react.useState)(false);
52
+ const [options, setOptions] = (0, _react.useState)([]);
53
+ const {
54
+ graphql,
55
+ accessor
56
+ } = query;
57
+ const getOptions = () => {
58
+ if (isFetching) return;
59
+ (0, _reactRelay.fetchQuery)(environment, graphql, variables).subscribe({
60
+ start: () => {
61
+ setIsFetching(true);
62
+ setOptions([loadingOption]);
63
+ },
64
+ complete: () => {
65
+ setIsFetching(false);
66
+ },
67
+ error: fetchError => {
68
+ setIsFetching(false);
69
+ if (setError) setError(fetchError.message);
70
+ },
71
+ next: data => {
72
+ setOptions([defaultOption, ...data[accessor].edges.map(_ref2 => {
73
+ let {
74
+ node
75
+ } = _ref2;
76
+ return {
77
+ value: node[optionsKeyMap.value],
78
+ label: optionsKeyMap.getLabel(node)
79
+ };
80
+ })]);
81
+ }
82
+ });
83
+ };
84
+ (0, _react.useEffect)(() => {
85
+ getOptions();
86
+ }, [variables]);
87
+ return /*#__PURE__*/React.createElement(_.SelectInput, {
88
+ id: id,
89
+ className: userClassName,
90
+ style: style,
91
+ name: name,
92
+ label: label,
93
+ optional: optional,
94
+ color: color,
95
+ labelColor: labelColor,
96
+ description: description,
97
+ disabled: isFetching || disabled,
98
+ options: options,
99
+ isLoading: isFetching
100
+ });
101
+ };
102
+ QuerySelect.propTypes = {
103
+ /**
104
+ * The HTML id for this element
105
+ */
106
+ id: _propTypes.default.string,
107
+ /**
108
+ * The HTML class names for this element
109
+ */
110
+ className: _propTypes.default.string,
111
+ /**
112
+ * The React-written, css properties for this element.
113
+ */
114
+ style: _propTypes.default.objectOf(_propTypes.default.string),
115
+ /**
116
+ * The name of the custom select input
117
+ */
118
+ name: _propTypes.default.string,
119
+ /**
120
+ * The label of the custom select input
121
+ */
122
+ label: _propTypes.default.string,
123
+ /**
124
+ * The custom select input description
125
+ */
126
+ description: _propTypes.default.string,
127
+ /**
128
+ * Whether the input should be disabled
129
+ */
130
+ disabled: _propTypes.default.bool,
131
+ /**
132
+ * The base color of the custom select input
133
+ */
134
+ color: _propTypes.default.string,
135
+ /**
136
+ * The label color of the custom select input
137
+ */
138
+ labelColor: _propTypes.default.string,
139
+ /**
140
+ * The graphql query to fetch the options and the accessor to destructure the results from
141
+ */
142
+ query: _propTypes.default.shape({
143
+ accessor: _propTypes.default.string,
144
+ graphql: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired
145
+ }),
146
+ /**
147
+ * The variables that might be required to be used in the query to fetch
148
+ * select options.
149
+ */
150
+ variables: _propTypes.default.objectOf(_propTypes.default.string),
151
+ /**
152
+ * The select option keys to be used to map the data to the select options.
153
+ * i.e `{ value: 'id', label: 'name' }`
154
+ */
155
+ optionsKeyMap: _propTypes.default.shape({
156
+ value: _propTypes.default.string.isRequired,
157
+ getLabel: _propTypes.default.func.isRequired
158
+ }).isRequired,
159
+ /**
160
+ * The default select option for the query select
161
+ */
162
+ defaultOption: _propTypes.default.shape({
163
+ value: _propTypes.default.string.isRequired,
164
+ label: _propTypes.default.string.isRequired,
165
+ disabled: _propTypes.default.bool.isRequired
166
+ }),
167
+ /**
168
+ * The option to dipslayed when the select options are being fetched
169
+ */
170
+ loadingOption: _propTypes.default.shape({
171
+ value: _propTypes.default.string.isRequired,
172
+ label: _propTypes.default.string.isRequired,
173
+ disabled: _propTypes.default.bool.isRequired
174
+ }),
175
+ /**
176
+ * The query select field validator function
177
+ */
178
+ validate: _propTypes.default.func,
179
+ /*
180
+ * Whether the input is optional or not
181
+ */
182
+ optional: _propTypes.default.bool
183
+ };
184
+ QuerySelect.defaultProps = {
185
+ disabled: false,
186
+ color: 'paragraph',
187
+ defaultOption: {
188
+ value: '',
189
+ label: 'Select an option',
190
+ disabled: true
191
+ },
192
+ loadingOption: {
193
+ value: '',
194
+ label: 'Fetching Options',
195
+ disabled: true
196
+ }
197
+ };
198
+ var _default = exports.default = QuerySelect;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "QuerySelect", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _QuerySelect.default;
10
+ }
11
+ });
12
+ var _QuerySelect = _interopRequireDefault(require("./QuerySelect"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }