@pareto-engineering/design-system 2.0.0-alpha.42 → 2.0.0-alpha.45

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 (90) hide show
  1. package/.env.scripts.example +4 -0
  2. package/.eslintrc.js +25 -1
  3. package/babel.config.js +1 -0
  4. package/dist/cjs/a/Popover/styles.scss +9 -19
  5. package/dist/cjs/f/FormInput/FormInput.js +5 -2
  6. package/dist/cjs/f/FormInput/styles.scss +11 -0
  7. package/dist/cjs/f/fields/QueryCombobox/QueryCombobox.js +207 -0
  8. package/dist/cjs/f/fields/QueryCombobox/common/Combobox/Combobox.js +181 -0
  9. package/dist/cjs/f/fields/QueryCombobox/common/Combobox/index.js +15 -0
  10. package/dist/cjs/f/fields/QueryCombobox/common/Menu/Menu.js +103 -0
  11. package/dist/cjs/f/fields/QueryCombobox/common/Menu/index.js +15 -0
  12. package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +229 -0
  13. package/dist/cjs/f/fields/QueryCombobox/common/MultipleCombobox/index.js +15 -0
  14. package/dist/cjs/f/fields/QueryCombobox/common/index.js +21 -0
  15. package/dist/cjs/f/fields/QueryCombobox/index.js +15 -0
  16. package/dist/cjs/f/fields/QueryCombobox/styles.scss +71 -0
  17. package/dist/cjs/f/fields/SelectInput/SelectInput.js +0 -1
  18. package/dist/cjs/f/fields/SelectInput/styles.scss +8 -6
  19. package/dist/cjs/f/fields/index.js +9 -1
  20. package/dist/cjs/index.js +13 -0
  21. package/dist/cjs/test/QueryLoader/QueryLoader.js +41 -0
  22. package/dist/cjs/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +71 -0
  23. package/dist/cjs/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.js +49 -0
  24. package/dist/cjs/test/QueryLoader/common/PreloadedTestData/index.js +15 -0
  25. package/dist/cjs/test/QueryLoader/common/index.js +13 -0
  26. package/dist/cjs/test/QueryLoader/index.js +15 -0
  27. package/dist/cjs/test/QueryLoader/styles.scss +9 -0
  28. package/dist/cjs/test/index.js +13 -0
  29. package/dist/es/a/Popover/styles.scss +9 -19
  30. package/dist/es/f/FormInput/FormInput.js +4 -1
  31. package/dist/es/f/FormInput/styles.scss +11 -0
  32. package/dist/es/f/fields/QueryCombobox/QueryCombobox.js +184 -0
  33. package/dist/es/f/fields/QueryCombobox/common/Combobox/Combobox.js +161 -0
  34. package/dist/es/f/fields/QueryCombobox/common/Combobox/index.js +2 -0
  35. package/dist/es/f/fields/QueryCombobox/common/Menu/Menu.js +77 -0
  36. package/dist/es/f/fields/QueryCombobox/common/Menu/index.js +2 -0
  37. package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/MultipleCombobox.js +202 -0
  38. package/dist/es/f/fields/QueryCombobox/common/MultipleCombobox/index.js +2 -0
  39. package/dist/es/f/fields/QueryCombobox/common/index.js +2 -0
  40. package/dist/es/f/fields/QueryCombobox/index.js +2 -0
  41. package/dist/es/f/fields/QueryCombobox/styles.scss +71 -0
  42. package/dist/es/f/fields/SelectInput/SelectInput.js +0 -1
  43. package/dist/es/f/fields/SelectInput/styles.scss +8 -6
  44. package/dist/es/f/fields/index.js +2 -1
  45. package/dist/es/index.js +2 -1
  46. package/dist/es/test/QueryLoader/QueryLoader.js +29 -0
  47. package/dist/es/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +71 -0
  48. package/dist/es/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.js +31 -0
  49. package/dist/es/test/QueryLoader/common/PreloadedTestData/index.js +2 -0
  50. package/dist/es/test/QueryLoader/common/index.js +1 -0
  51. package/dist/es/test/QueryLoader/index.js +2 -0
  52. package/dist/es/test/QueryLoader/styles.scss +9 -0
  53. package/dist/es/test/index.js +1 -0
  54. package/package.json +16 -3
  55. package/relay.config.js +12 -0
  56. package/schema.graphql +4075 -0
  57. package/scripts/fetchSchema.js +74 -0
  58. package/src/__snapshots__/Storyshots.test.js.snap +168 -8
  59. package/src/stories/f/QueryCombobox.stories.jsx +220 -0
  60. package/src/stories/f/__generated__/QueryComboboxAllTeamsQuery.graphql.js +139 -0
  61. package/src/stories/test/QueryLoader.stories.jsx +36 -0
  62. package/src/stories/utils/generateNodeId.js +12 -0
  63. package/src/stories/utils/relay/EnvironmentProvider.jsx +14 -0
  64. package/src/stories/utils/relay/environment.js +5 -0
  65. package/src/stories/utils/relay/index.js +4 -0
  66. package/src/stories/utils/relay/mockRelayOperation.js +14 -0
  67. package/src/stories/utils/relay/mockResolvers.js +299 -0
  68. package/src/stories/utils/testData.js +63 -0
  69. package/src/ui/a/Popover/styles.scss +9 -19
  70. package/src/ui/f/FormInput/FormInput.jsx +5 -1
  71. package/src/ui/f/FormInput/styles.scss +11 -0
  72. package/src/ui/f/fields/QueryCombobox/QueryCombobox.jsx +200 -0
  73. package/src/ui/f/fields/QueryCombobox/common/Combobox/Combobox.jsx +198 -0
  74. package/src/ui/f/fields/QueryCombobox/common/Combobox/index.js +2 -0
  75. package/src/ui/f/fields/QueryCombobox/common/Menu/Menu.jsx +103 -0
  76. package/src/ui/f/fields/QueryCombobox/common/Menu/index.js +2 -0
  77. package/src/ui/f/fields/QueryCombobox/common/index.js +2 -0
  78. package/src/ui/f/fields/QueryCombobox/index.js +2 -0
  79. package/src/ui/f/fields/QueryCombobox/styles.scss +71 -0
  80. package/src/ui/f/fields/SelectInput/SelectInput.jsx +1 -1
  81. package/src/ui/f/fields/SelectInput/styles.scss +8 -6
  82. package/src/ui/f/fields/index.js +1 -0
  83. package/src/ui/index.js +1 -0
  84. package/src/ui/test/QueryLoader/QueryLoader.jsx +41 -0
  85. package/src/ui/test/QueryLoader/__generated__/QueryLoaderHelloQuery.graphql.js +68 -0
  86. package/src/ui/test/QueryLoader/common/PreloadedTestData/PreloadedTestData.jsx +51 -0
  87. package/src/ui/test/QueryLoader/common/PreloadedTestData/index.js +2 -0
  88. package/src/ui/test/QueryLoader/common/index.js +1 -0
  89. package/src/ui/test/QueryLoader/index.js +2 -0
  90. package/src/ui/test/index.js +1 -0
@@ -0,0 +1,4 @@
1
+ DEBUG=False
2
+ GITHUB_BACKEND_ORG=
3
+ GITHUB_BACKEND_REPO=
4
+ GITHUB_READONLY_PAT=
package/.eslintrc.js CHANGED
@@ -1,3 +1,5 @@
1
+ const fs = require('fs')
2
+
1
3
  module.exports = {
2
4
  settings:{
3
5
  'import/resolver':{
@@ -8,9 +10,15 @@ module.exports = {
8
10
  browser:true,
9
11
  node :true,
10
12
  },
13
+ globals:{
14
+ graphql:'readonly',
15
+ },
11
16
  parser :'@babel/eslint-parser',
12
17
  extends:['airbnb'],
13
- rules :{
18
+ plugins:[
19
+ 'graphql',
20
+ ],
21
+ rules:{
14
22
  semi:[
15
23
  2,
16
24
  'never',
@@ -37,5 +45,21 @@ module.exports = {
37
45
  'import/prefer-default-export':[
38
46
  0,
39
47
  ],
48
+ 'graphql/template-strings':[2, {
49
+ // Import default settings for your GraphQL client. Supported values:
50
+ // 'apollo', 'relay', 'lokka', 'fraql', 'literal'
51
+ env:'relay',
52
+ // Import your schema JSON here
53
+ // schemaJson: require('./schema.graphql'),
54
+
55
+ // OR provide absolute path to your schema JSON (but not if using `eslint --cache`!)
56
+ // schemaJsonFilepath: path.resolve(__dirname, './schema.json'),
57
+
58
+ // OR provide the schema in the Schema Language format
59
+ schemaString:fs.readFileSync('./schema.graphql', { encoding: 'utf8', flag: 'r' }),
60
+
61
+ tagName:'graphql',
62
+ // tagName is set for you to Relay.QL
63
+ }],
40
64
  },
41
65
  }
package/babel.config.js CHANGED
@@ -29,6 +29,7 @@ module.exports = function (api) {
29
29
  '@babel/preset-react',
30
30
  ]
31
31
  const plugins = [
32
+ 'relay',
32
33
  ['module-resolver', {
33
34
  root:['./src'],
34
35
  }],
@@ -1,24 +1,17 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
2
  @use "@pareto-engineering/bem";
3
3
 
4
- $default-padding: 1em;
5
- $default-margin: 1em;
6
4
  $default-border: var(--theme-border-style) var(--metadata);
7
5
 
8
- .#{bem.$base}.popover{
9
- position: absolute;
10
- z-index: 1;
11
- background-color: var(--x);
12
- padding: $default-padding;
13
- border: $default-border;
6
+ .#{bem.$base}.popover {
7
+ position: absolute;
8
+ z-index: 1;
9
+ background-color: var(--x);
10
+ border: $default-border;
14
11
 
15
- &:not(.open) {
16
- display: none;
17
- }
18
-
19
- > *:not(:last-child) {
20
- margin-bottom: $default-margin / 2;
21
- }
12
+ &:not(.open) {
13
+ display: none;
14
+ }
22
15
 
23
16
  &.bottom {
24
17
  top: 100%;
@@ -37,7 +30,4 @@ $default-border: var(--theme-border-style) var(--metadata);
37
30
  bottom: 100%;
38
31
  top: auto;
39
32
  }
40
- }
41
-
42
-
43
-
33
+ }
@@ -15,12 +15,12 @@ var _excluded = ["className", "type", "extraTypes", "disabled"];
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
+ function _extends() { _extends = Object.assign || 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); }
19
+
18
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
21
 
20
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
23
 
22
- function _extends() { _extends = Object.assign || 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); }
23
-
24
24
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
25
 
26
26
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -41,6 +41,9 @@ var FormInput = _ref => {
41
41
  } = _ref,
42
42
  otherProps = _objectWithoutProperties(_ref, _excluded);
43
43
 
44
+ (0, React.useLayoutEffect)(() => {
45
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
46
+ }, []);
44
47
  var newClassName = [className, componentClassName].filter(Boolean).join(' ');
45
48
 
46
49
  if (type === 'textarea') {
@@ -0,0 +1,11 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ $default-margin: 1em;
6
+
7
+ .#{bem.$base}.form-input {
8
+ &+& {
9
+ margin-top: $default-margin;
10
+ }
11
+ }
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _formik = require("formik");
11
+
12
+ var _reactRelay = require("react-relay");
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _common = require("./common");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ /**
31
+ * This is the component description.
32
+ */
33
+ var QueryCombobox = _ref => {
34
+ var {
35
+ query,
36
+ // multiple,
37
+ name,
38
+ label,
39
+ color,
40
+ description,
41
+ disabled,
42
+ debounceMs,
43
+ graphQlNode,
44
+ searchVariable,
45
+ extraVariables,
46
+ optionsKeyMap // ...otherProps
47
+
48
+ } = _ref;
49
+ (0, React.useLayoutEffect)(() => {
50
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
51
+ }, []);
52
+ var [, meta, helpers] = (0, _formik.useField)(name);
53
+ var {
54
+ setValue,
55
+ setError
56
+ } = helpers;
57
+ var {
58
+ error,
59
+ value
60
+ } = meta;
61
+ var environment = (0, _reactRelay.useRelayEnvironment)();
62
+ var [isFetching, setIsFetching] = (0, React.useState)(false);
63
+ var [options, setOptions] = (0, React.useState)([]);
64
+
65
+ var getOptions = inputValue => {
66
+ if (isFetching) return;
67
+ var variables = {
68
+ [searchVariable]: inputValue
69
+ };
70
+
71
+ if (extraVariables) {
72
+ variables = _objectSpread(_objectSpread({}, variables), extraVariables);
73
+ }
74
+
75
+ (0, _reactRelay.fetchQuery)(environment, query, variables).subscribe({
76
+ start: () => {
77
+ setIsFetching(true);
78
+ },
79
+ complete: () => {
80
+ setIsFetching(false);
81
+ },
82
+ error: fetchError => {
83
+ setIsFetching(false);
84
+ if (setError) setError(fetchError.message);
85
+ },
86
+ next: data => {
87
+ setOptions(data[graphQlNode].edges.map(_ref2 => {
88
+ var {
89
+ node
90
+ } = _ref2;
91
+ return {
92
+ value: node[optionsKeyMap.value],
93
+ label: node[optionsKeyMap.label]
94
+ };
95
+ }));
96
+ }
97
+ });
98
+ };
99
+
100
+ var comboboxProps = {
101
+ options,
102
+ getOptions,
103
+ debounceMs,
104
+ disabled,
105
+ name,
106
+ label,
107
+ description,
108
+ setValue,
109
+ error,
110
+ value,
111
+ color
112
+ };
113
+ var Input = _common.Combobox;
114
+ return /*#__PURE__*/React.createElement(Input, comboboxProps);
115
+ };
116
+
117
+ QueryCombobox.propTypes = {
118
+ /**
119
+ * The HTML id for this element
120
+ */
121
+ id: _propTypes.default.string,
122
+
123
+ /**
124
+ * The HTML class names for this element
125
+ */
126
+ className: _propTypes.default.string,
127
+
128
+ /**
129
+ * The React-written, css properties for this element.
130
+ */
131
+ style: _propTypes.default.objectOf(_propTypes.default.string),
132
+
133
+ /**
134
+ * The name of the custom select input
135
+ */
136
+ name: _propTypes.default.string,
137
+
138
+ /**
139
+ * The label of the custom select input
140
+ */
141
+ label: _propTypes.default.string,
142
+
143
+ /**
144
+ * The custom select input description
145
+ */
146
+ description: _propTypes.default.string,
147
+
148
+ /**
149
+ * Whether the input should be disabled
150
+ */
151
+ disabled: _propTypes.default.bool,
152
+
153
+ /**
154
+ * The base color of the custom select input
155
+ */
156
+ color: _propTypes.default.string,
157
+
158
+ /**
159
+ * The debounce time in milliseconds
160
+ */
161
+ debounceMs: _propTypes.default.number,
162
+
163
+ /**
164
+ * The query to fetch the options
165
+ */
166
+ query: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired,
167
+
168
+ /**
169
+ * The extra variables required to be used in the query.
170
+ */
171
+ extraVariables: _propTypes.default.objectOf(_propTypes.default.string),
172
+
173
+ /**
174
+ * The select option keys to be used to map the data to the select options.
175
+ * i.e `{ value: 'id', label: 'name' }`
176
+ */
177
+ optionsKeyMap: _propTypes.default.shape({
178
+ value: _propTypes.default.string.isRequired,
179
+ label: _propTypes.default.string.isRequired
180
+ }),
181
+
182
+ /**
183
+ * Whether to allow multiple items selection
184
+ */
185
+ multiple: _propTypes.default.bool,
186
+
187
+ /**
188
+ * The graphql node to be used to destructure the fetched data
189
+ */
190
+ graphQlNode: _propTypes.default.string.isRequired,
191
+
192
+ /**
193
+ * The variable to be used to search the data
194
+ */
195
+ searchVariable: _propTypes.default.string
196
+ };
197
+ QueryCombobox.defaultProps = {
198
+ optionsKeyMap: {
199
+ value: 'id',
200
+ label: 'name'
201
+ },
202
+ multiple: false,
203
+ color: 'background2',
204
+ searchVariable: 'search'
205
+ };
206
+ var _default = QueryCombobox;
207
+ exports.default = _default;
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _downshift = require("downshift");
13
+
14
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
15
+
16
+ var _ = require("../../../..");
17
+
18
+ var _a = require("../../../../../a");
19
+
20
+ var _Menu = require("../Menu");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ function _extends() { _extends = Object.assign || 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); }
29
+
30
+ var baseClassName = _bem.default.base;
31
+ var componentClassName = 'combobox';
32
+ /**
33
+ * This is the component description.
34
+ */
35
+
36
+ var Combobox = _ref => {
37
+ var {
38
+ id,
39
+ className: userClassName,
40
+ style,
41
+ label,
42
+ name,
43
+ options: items,
44
+ getOptions,
45
+ setValue,
46
+ error,
47
+ description,
48
+ value,
49
+ color // ...otherProps
50
+
51
+ } = _ref;
52
+ var {
53
+ isOpen,
54
+ selectItem,
55
+ selectedItem,
56
+ getLabelProps,
57
+ getMenuProps,
58
+ getInputProps,
59
+ highlightedIndex,
60
+ getComboboxProps,
61
+ getItemProps
62
+ } = (0, _downshift.useCombobox)({
63
+ items,
64
+ initialSelectedItem: value,
65
+ itemToString: item => item ? item.label : '',
66
+ onInputValueChange: _ref2 => {
67
+ var {
68
+ inputValue
69
+ } = _ref2;
70
+ getOptions(inputValue);
71
+ }
72
+ }); // If the user has selected an item, we'll set the value of the field
73
+ // or if the combobox state has a selected item, we'll set the value to the formik state
74
+
75
+ (0, React.useEffect)(() => {
76
+ if (selectedItem) {
77
+ setValue(selectedItem);
78
+ }
79
+ }, [selectedItem]); // If the formik state has a value, we'll set the selected item to the combobox state
80
+
81
+ (0, React.useEffect)(() => {
82
+ if ((value === null || value === void 0 ? void 0 : value.value) !== (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value)) {
83
+ selectItem(value);
84
+ }
85
+ }, [value]);
86
+ var parentRef = (0, React.useRef)(null);
87
+ return /*#__PURE__*/React.createElement("div", {
88
+ id: id,
89
+ className: [baseClassName, componentClassName, userClassName, "y-".concat(color)].filter(e => e).join(' '),
90
+ style: style,
91
+ ref: parentRef
92
+ }, /*#__PURE__*/React.createElement(_.FormLabel, _extends({}, getLabelProps(), {
93
+ name: name
94
+ }), label), /*#__PURE__*/React.createElement("div", _extends({}, getComboboxProps(), {
95
+ className: "input-wrapper"
96
+ }), /*#__PURE__*/React.createElement("input", _extends({}, getInputProps(), {
97
+ className: "input"
98
+ }))), /*#__PURE__*/React.createElement(_a.Popover, {
99
+ isOpen: isOpen,
100
+ parentRef: parentRef
101
+ }, /*#__PURE__*/React.createElement(_Menu.Menu, _extends({
102
+ isOpen: isOpen,
103
+ getItemProps: getItemProps,
104
+ highlightedIndex: highlightedIndex,
105
+ items: items
106
+ }, getMenuProps()))), (description || error) && /*#__PURE__*/React.createElement(_.FormDescription, {
107
+ isError: !!error
108
+ }, error || description));
109
+ };
110
+
111
+ Combobox.propTypes = {
112
+ /**
113
+ * The HTML id for this element
114
+ */
115
+ id: _propTypes.default.string,
116
+
117
+ /**
118
+ * The HTML class names for this element
119
+ */
120
+ className: _propTypes.default.string,
121
+
122
+ /**
123
+ * The React-written, css properties for this element.
124
+ */
125
+ style: _propTypes.default.objectOf(_propTypes.default.string),
126
+
127
+ /**
128
+ * The label of the custom select input
129
+ */
130
+ label: _propTypes.default.string,
131
+
132
+ /**
133
+ * The custom select input options from the backend
134
+ */
135
+ options: _propTypes.default.arrayOf(_propTypes.default.shape({
136
+ value: _propTypes.default.string,
137
+ label: _propTypes.default.string
138
+ })),
139
+
140
+ /**
141
+ * The name of the custom select input
142
+ */
143
+ name: _propTypes.default.string,
144
+
145
+ /**
146
+ * The function to fetch the options from the backend
147
+ */
148
+ getOptions: _propTypes.default.func,
149
+
150
+ /**
151
+ * The function to set the value of the custom select input
152
+ */
153
+ setValue: _propTypes.default.func.isRequired,
154
+
155
+ /**
156
+ * The custom select input description
157
+ */
158
+ description: _propTypes.default.string,
159
+
160
+ /**
161
+ * The error object
162
+ */
163
+ error: _propTypes.default.objectOf(_propTypes.default.string),
164
+
165
+ /**
166
+ * The value of the custom select input
167
+ */
168
+ value: _propTypes.default.shape({
169
+ value: _propTypes.default.string,
170
+ label: _propTypes.default.string
171
+ }),
172
+
173
+ /**
174
+ * The base color of the combobox custom select input
175
+ */
176
+ color: _propTypes.default.string
177
+ };
178
+ Combobox.defaultProps = {// someProp:false
179
+ };
180
+ var _default = Combobox;
181
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Combobox", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Combobox.default;
10
+ }
11
+ });
12
+
13
+ var _Combobox = _interopRequireDefault(require("./Combobox"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
+
14
+ var _excluded = ["id", "className", "style", "items", "isOpen", "highlightedIndex", "getItemProps"];
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ function _extends() { _extends = Object.assign || 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); }
23
+
24
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
+
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+
28
+ // Local Definitions
29
+ var baseClassName = _bem.default.base;
30
+ var componentClassName = 'menu';
31
+ /**
32
+ * This is the component description.
33
+ */
34
+
35
+ var Menu = /*#__PURE__*/React.forwardRef((_ref, ref) => {
36
+ var {
37
+ id,
38
+ className: userClassName,
39
+ style,
40
+ items,
41
+ isOpen,
42
+ highlightedIndex,
43
+ getItemProps
44
+ } = _ref,
45
+ otherProps = _objectWithoutProperties(_ref, _excluded);
46
+
47
+ return /*#__PURE__*/React.createElement("ul", _extends({
48
+ id: id,
49
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
50
+ style: style,
51
+ ref: ref
52
+ }, otherProps), isOpen && items.map((item, index) => /*#__PURE__*/React.createElement("li", _extends({
53
+ key: item.label
54
+ }, getItemProps({
55
+ item,
56
+ index
57
+ }), {
58
+ className: ['item', highlightedIndex === index && _bem.default.modifierActive].filter(Boolean).join(' ')
59
+ }), /*#__PURE__*/React.createElement("p", null, item.label))));
60
+ });
61
+ Menu.propTypes = {
62
+ /**
63
+ * The HTML id for this element
64
+ */
65
+ id: _propTypes.default.string,
66
+
67
+ /**
68
+ * The HTML class names for this element
69
+ */
70
+ className: _propTypes.default.string,
71
+
72
+ /**
73
+ * The React-written, css properties for this element.
74
+ */
75
+ style: _propTypes.default.objectOf(_propTypes.default.string),
76
+
77
+ /**
78
+ * The items to be displayed in the menu
79
+ */
80
+ items: _propTypes.default.arrayOf(_propTypes.default.shape({
81
+ value: _propTypes.default.string,
82
+ label: _propTypes.default.string
83
+ })),
84
+
85
+ /**
86
+ * Whether or not the menu is open
87
+ */
88
+ isOpen: _propTypes.default.bool,
89
+
90
+ /**
91
+ * The index of the highlighted item
92
+ */
93
+ highlightedIndex: _propTypes.default.number,
94
+
95
+ /**
96
+ * The function to get the item props
97
+ */
98
+ getItemProps: _propTypes.default.func
99
+ };
100
+ Menu.defaultProps = {// someProp:false
101
+ };
102
+ var _default = Menu;
103
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Menu", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Menu.default;
10
+ }
11
+ });
12
+
13
+ var _Menu = _interopRequireDefault(require("./Menu"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }