@pareto-engineering/design-system 0.0.1-alpha.67 → 0.0.1-alpha.70

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 (94) hide show
  1. package/config/global-setup.js +3 -0
  2. package/dist/cjs/a/Timestamp/Timestamp.js +139 -0
  3. package/dist/cjs/a/{RatingsInput/common/Rating → Timestamp}/index.js +3 -3
  4. package/dist/cjs/a/Timestamp/styles.scss +7 -0
  5. package/dist/cjs/a/index.js +9 -1
  6. package/dist/cjs/f/FormInput/FormInput.js +109 -0
  7. package/dist/cjs/{a/RatingsInput → f/FormInput}/index.js +3 -3
  8. package/dist/cjs/f/common/Label/Label.js +10 -3
  9. package/dist/cjs/f/common/Label/styles.scss +3 -3
  10. package/dist/cjs/f/fields/CheckboxInput/CheckboxInput.js +3 -1
  11. package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +32 -11
  12. package/dist/cjs/f/fields/ChoicesInput/common/Choice/Choice.js +10 -3
  13. package/dist/cjs/f/fields/ChoicesInput/styles.scss +32 -29
  14. package/dist/cjs/f/fields/RadioInput/RadioInput.js +3 -1
  15. package/dist/cjs/f/fields/RatingsInput/RatingsInput.js +3 -1
  16. package/dist/cjs/f/fields/SelectInput/SelectInput.js +15 -5
  17. package/dist/cjs/{a/RatingsInput/common/Rating/Rating.js → f/fields/TaskRecommendationInput/TaskRecommendationInput.js} +57 -46
  18. package/dist/cjs/f/fields/TaskRecommendationInput/index.js +15 -0
  19. package/{src/ui/f/fields/TaskRecommendation → dist/cjs/f/fields/TaskRecommendationInput}/styles.scss +1 -1
  20. package/dist/cjs/f/fields/TextInput/TextInput.js +15 -5
  21. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +151 -0
  22. package/dist/cjs/f/fields/TextareaInput/index.js +15 -0
  23. package/{src/ui/f/fields/TextArea → dist/cjs/f/fields/TextareaInput}/styles.scss +1 -1
  24. package/dist/cjs/f/fields/index.js +6 -6
  25. package/dist/cjs/f/index.js +14 -1
  26. package/dist/es/a/Timestamp/Timestamp.js +122 -0
  27. package/dist/es/a/Timestamp/index.js +2 -0
  28. package/dist/es/a/Timestamp/styles.scss +7 -0
  29. package/dist/es/a/index.js +2 -1
  30. package/dist/es/f/FormInput/FormInput.js +84 -0
  31. package/dist/es/f/FormInput/index.js +2 -0
  32. package/dist/es/f/common/Label/Label.js +10 -3
  33. package/dist/es/f/common/Label/styles.scss +3 -3
  34. package/dist/es/f/fields/CheckboxInput/CheckboxInput.js +2 -2
  35. package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +32 -13
  36. package/dist/es/f/fields/ChoicesInput/common/Choice/Choice.js +10 -3
  37. package/dist/es/f/fields/ChoicesInput/styles.scss +32 -29
  38. package/dist/es/f/fields/RadioInput/RadioInput.js +2 -2
  39. package/dist/es/f/fields/RatingsInput/RatingsInput.js +2 -2
  40. package/dist/es/f/fields/SelectInput/SelectInput.js +14 -6
  41. package/dist/es/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +111 -0
  42. package/dist/es/f/fields/TaskRecommendationInput/index.js +2 -0
  43. package/dist/es/f/fields/TaskRecommendationInput/styles.scss +37 -0
  44. package/dist/es/f/fields/TextInput/TextInput.js +14 -6
  45. package/dist/es/f/fields/TextareaInput/TextareaInput.js +132 -0
  46. package/dist/es/f/fields/TextareaInput/index.js +2 -0
  47. package/dist/es/f/fields/TextareaInput/styles.scss +19 -0
  48. package/dist/es/f/fields/index.js +2 -2
  49. package/dist/es/f/index.js +2 -1
  50. package/jest.config.js +2 -1
  51. package/package.json +1 -1
  52. package/src/__snapshots__/Storyshots.test.js.snap +1204 -383
  53. package/src/stories/a/Timestamp.stories.jsx +102 -0
  54. package/src/stories/f/ChoicesInput.stories.jsx +54 -6
  55. package/src/stories/f/FormInput.stories.jsx +187 -0
  56. package/src/stories/f/SelectInput.stories.jsx +14 -0
  57. package/src/stories/f/{TaskRecommendation.stories.jsx → TaskRecommendationInput.stories.jsx} +4 -4
  58. package/src/stories/f/TextInput.stories.jsx +10 -0
  59. package/src/stories/f/{TextArea.stories.jsx → TextareaInput.stories.jsx} +15 -5
  60. package/src/ui/a/Timestamp/Timestamp.jsx +168 -0
  61. package/src/ui/a/Timestamp/index.js +2 -0
  62. package/src/ui/a/Timestamp/styles.scss +7 -0
  63. package/src/ui/a/index.js +1 -0
  64. package/src/ui/f/FormInput/FormInput.jsx +121 -0
  65. package/src/ui/f/FormInput/index.js +2 -0
  66. package/src/ui/f/common/Label/Label.jsx +10 -2
  67. package/src/ui/f/common/Label/styles.scss +3 -3
  68. package/src/ui/f/fields/CheckboxInput/CheckboxInput.jsx +2 -2
  69. package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +37 -17
  70. package/src/ui/f/fields/ChoicesInput/common/Choice/Choice.jsx +6 -0
  71. package/src/ui/f/fields/ChoicesInput/styles.scss +32 -29
  72. package/src/ui/f/fields/RadioInput/RadioInput.jsx +2 -2
  73. package/src/ui/f/fields/RatingsInput/RatingsInput.jsx +2 -2
  74. package/src/ui/f/fields/SelectInput/SelectInput.jsx +9 -4
  75. package/src/ui/f/fields/{TaskRecommendation/TaskRecommendation.jsx → TaskRecommendationInput/TaskRecommendationInput.jsx} +6 -6
  76. package/src/ui/f/fields/TaskRecommendationInput/index.js +2 -0
  77. package/src/ui/f/fields/TaskRecommendationInput/styles.scss +37 -0
  78. package/src/ui/f/fields/TextInput/TextInput.jsx +10 -3
  79. package/src/ui/f/fields/{TextArea/TextArea.jsx → TextareaInput/TextareaInput.jsx} +13 -6
  80. package/src/ui/f/fields/TextareaInput/index.js +2 -0
  81. package/src/ui/f/fields/TextareaInput/styles.scss +19 -0
  82. package/src/ui/f/fields/index.js +2 -2
  83. package/src/ui/f/index.js +1 -0
  84. package/dist/cjs/a/RatingsInput/RatingsInput.js +0 -88
  85. package/dist/cjs/a/RatingsInput/common/index.js +0 -13
  86. package/dist/cjs/a/RatingsInput/styles.scss +0 -35
  87. package/dist/es/a/RatingsInput/RatingsInput.js +0 -72
  88. package/dist/es/a/RatingsInput/common/Rating/Rating.js +0 -102
  89. package/dist/es/a/RatingsInput/common/Rating/index.js +0 -2
  90. package/dist/es/a/RatingsInput/common/index.js +0 -1
  91. package/dist/es/a/RatingsInput/index.js +0 -2
  92. package/dist/es/a/RatingsInput/styles.scss +0 -35
  93. package/src/ui/f/fields/TaskRecommendation/index.js +0 -2
  94. package/src/ui/f/fields/TextArea/index.js +0 -2
@@ -0,0 +1,3 @@
1
+ module.exports = async () => {
2
+ process.env.TZ = 'UTC'
3
+ }
@@ -0,0 +1,139 @@
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 _dateFns = require("date-fns");
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
+ // Local Definitions
23
+ var baseClassName = _bem.default.base;
24
+ var componentClassName = 'timestamp';
25
+ /**
26
+ * This is the component description.
27
+ */
28
+
29
+ var Timestamp = _ref => {
30
+ var {
31
+ id,
32
+ className: userClassName,
33
+ style,
34
+ time,
35
+ prefix,
36
+ enabledFormats,
37
+ distanceMaxDays,
38
+ relativeMaxDays,
39
+ dateFormat,
40
+ locale,
41
+ // ...otherProps
42
+ as: Element
43
+ } = _ref;
44
+ (0, React.useLayoutEffect)(() => {
45
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
46
+ }, []);
47
+ var [currentDisplay, setCurrentDisplay] = (0, React.useState)(enabledFormats[0]);
48
+ var formatMap = (0, React.useMemo)(() => ({
49
+ unix: _unix => Number(_unix),
50
+ date: unix => (0, _dateFns.format)(new Date(unix), dateFormat),
51
+ distance: unix => !distanceMaxDays || (0, _dateFns.differenceInDays)(Date.now(), new Date(unix)) < distanceMaxDays ? (0, _dateFns.formatDistance)(new Date(unix), new Date(), {
52
+ addSuffix: true,
53
+ locale
54
+ }) : (0, _dateFns.format)(new Date(unix), dateFormat),
55
+ relative: unix => !relativeMaxDays || (0, _dateFns.differenceInDays)(Date.now(), new Date(unix)) < relativeMaxDays ? (0, _dateFns.formatRelative)(new Date(unix), new Date(), {
56
+ locale
57
+ }) : (0, _dateFns.format)(new Date(unix), dateFormat)
58
+ }), []);
59
+ var onClick = (0, React.useCallback)(e => {
60
+ e.persist(); // eslint-disable-next-line no-shadow
61
+
62
+ var currentIndex = enabledFormats.findIndex(e => e === currentDisplay);
63
+ var nextIndex = (currentIndex + 1) % enabledFormats.length;
64
+ setCurrentDisplay(enabledFormats[nextIndex]);
65
+ }, [currentDisplay]);
66
+ if (!Number(time)) return null;
67
+ return /*#__PURE__*/React.createElement(Element, {
68
+ id: id,
69
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
70
+ style: style // {...otherProps}
71
+ ,
72
+ onClick: enabledFormats.length > 1 ? onClick : undefined
73
+ }, prefix && prefix, prefix && ' ', formatMap[currentDisplay](Number(time)));
74
+ };
75
+
76
+ Timestamp.propTypes = {
77
+ /**
78
+ * The HTML id for this element
79
+ */
80
+ id: _propTypes.default.string,
81
+
82
+ /**
83
+ * The HTML class names for this element
84
+ */
85
+ className: _propTypes.default.string,
86
+
87
+ /**
88
+ * The React-written, css properties for this element.
89
+ */
90
+ style: _propTypes.default.objectOf(_propTypes.default.string),
91
+
92
+ /**
93
+ * The children JSX
94
+ */
95
+ prefix: _propTypes.default.node,
96
+
97
+ /**
98
+ * Which html tag to use
99
+ */
100
+ as: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),
101
+
102
+ /**
103
+ * Formats
104
+ */
105
+ enabledFormats: _propTypes.default.arrayOf(_propTypes.default.oneOf(['unix', 'date', 'distance', 'relative'])),
106
+
107
+ /**
108
+ * How many days to display distance before reverting to unix display
109
+ */
110
+ distanceMaxDays: _propTypes.default.number,
111
+
112
+ /**
113
+ * How many days to display distance before reverting to unix display
114
+ */
115
+ relativeMaxDays: _propTypes.default.number,
116
+
117
+ /**
118
+ * Unix Format Read https://date-fns.org/v2.16.1/docs/format for options
119
+ */
120
+ dateFormat: _propTypes.default.string,
121
+
122
+ /**
123
+ * The time to display
124
+ */
125
+ time: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.number]).isRequired,
126
+
127
+ /**
128
+ * A Date-DNS locale object. Will default to english.
129
+ */
130
+ locale: _propTypes.default.instanceOf(Object)
131
+ };
132
+ Timestamp.defaultProps = {
133
+ // someProp:false
134
+ as: 'p',
135
+ dateFormat: 'yyyy-MM-dd\'T\'HH:mm:ss.SSSxxx',
136
+ enabledFormats: ['unix', 'date']
137
+ };
138
+ var _default = Timestamp;
139
+ exports.default = _default;
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "Rating", {
6
+ Object.defineProperty(exports, "Timestamp", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _Rating.default;
9
+ return _Timestamp.default;
10
10
  }
11
11
  });
12
12
 
13
- var _Rating = _interopRequireDefault(require("./Rating"));
13
+ var _Timestamp = _interopRequireDefault(require("./Timestamp"));
14
14
 
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,7 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ // .#{bem.$base}.timestamp{
6
+
7
+ // }
@@ -135,6 +135,12 @@ Object.defineProperty(exports, "DotInfo", {
135
135
  return _DotInfo.DotInfo;
136
136
  }
137
137
  });
138
+ Object.defineProperty(exports, "Timestamp", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _Timestamp.Timestamp;
142
+ }
143
+ });
138
144
 
139
145
  var _SVG = require("./SVG");
140
146
 
@@ -172,4 +178,6 @@ var _Quote = require("./Quote");
172
178
 
173
179
  var _ContentCard = require("./ContentCard");
174
180
 
175
- var _DotInfo = require("./DotInfo");
181
+ var _DotInfo = require("./DotInfo");
182
+
183
+ var _Timestamp = require("./Timestamp");
@@ -0,0 +1,109 @@
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 _fields = require("../fields");
13
+
14
+ var _excluded = ["className", "type", "extraTypes", "disabled"];
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
+ // const baseClassName = styleNames.base
30
+ var componentClassName = 'form-input';
31
+ /**
32
+ * This is the component description.
33
+ */
34
+
35
+ var FormInput = _ref => {
36
+ var {
37
+ className,
38
+ type,
39
+ extraTypes,
40
+ disabled
41
+ } = _ref,
42
+ otherProps = _objectWithoutProperties(_ref, _excluded);
43
+
44
+ var newClassName = [className, componentClassName].filter(Boolean).join(' ');
45
+
46
+ if (type === 'textarea') {
47
+ return /*#__PURE__*/React.createElement(_fields.TextareaInput, _extends({
48
+ className: newClassName,
49
+ disabled: disabled
50
+ }, otherProps));
51
+ }
52
+
53
+ if (type === 'choices') {
54
+ return /*#__PURE__*/React.createElement(_fields.ChoicesInput, _extends({
55
+ className: newClassName,
56
+ disabled: disabled
57
+ }, otherProps));
58
+ }
59
+
60
+ if (type === 'select') {
61
+ return /*#__PURE__*/React.createElement(_fields.SelectInput, _extends({
62
+ className: newClassName,
63
+ disabled: disabled
64
+ }, otherProps));
65
+ }
66
+
67
+ if (extraTypes !== null && extraTypes !== void 0 && extraTypes[type]) {
68
+ var Component = extraTypes[type];
69
+ return /*#__PURE__*/React.createElement(Component, _extends({
70
+ className: newClassName,
71
+ disabled: disabled
72
+ }, otherProps));
73
+ }
74
+
75
+ return /*#__PURE__*/React.createElement(_fields.TextInput, _extends({
76
+ className: newClassName,
77
+ disabled: disabled
78
+ }, otherProps));
79
+ };
80
+
81
+ FormInput.propTypes = {
82
+ /**
83
+ * The HTML class names for this element
84
+ */
85
+ className: _propTypes.default.string,
86
+
87
+ /**
88
+ * The HTML class names for this element
89
+ */
90
+ type: _propTypes.default.oneOf(['text', 'email', 'password', 'number', 'date', 'datetime', 'month', 'tel', 'hidden', 'select', 'choices', 'textarea', // to be removed
91
+ 'extendedTypeInput']),
92
+
93
+ /**
94
+ * The object with external Input types that would make the form input extensible
95
+ */
96
+ extraTypes: _propTypes.default.objectOf(_propTypes.default.func),
97
+
98
+ /**
99
+ * Whether the Form input input should be disabled
100
+ */
101
+ disabled: _propTypes.default.bool
102
+ };
103
+ FormInput.defaultProps = {
104
+ disabled: false
105
+ };
106
+
107
+ var _default = /*#__PURE__*/(0, React.memo)(FormInput);
108
+
109
+ exports.default = _default;
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "RatingsInput", {
6
+ Object.defineProperty(exports, "FormInput", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _RatingsInput.default;
9
+ return _FormInput.default;
10
10
  }
11
11
  });
12
12
 
13
- var _RatingsInput = _interopRequireDefault(require("./RatingsInput"));
13
+ var _FormInput = _interopRequireDefault(require("./FormInput"));
14
14
 
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -31,6 +31,7 @@ var Label = _ref => {
31
31
  style,
32
32
  children,
33
33
  name,
34
+ color,
34
35
  as: Wrapper // ...otherProps
35
36
 
36
37
  } = _ref;
@@ -40,7 +41,7 @@ var Label = _ref => {
40
41
  return /*#__PURE__*/React.createElement(Wrapper, {
41
42
  htmlFor: Wrapper === 'label' ? name : undefined,
42
43
  id: id,
43
- className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
44
+ className: [baseClassName, componentClassName, userClassName, "x-".concat(color)].filter(e => e).join(' '),
44
45
  style: style // {...otherProps}
45
46
 
46
47
  }, children);
@@ -75,11 +76,17 @@ Label.propTypes = {
75
76
  /**
76
77
  * The html tag that acts as an input label
77
78
  */
78
- as: _propTypes.default.node
79
+ as: _propTypes.default.node,
80
+
81
+ /**
82
+ * The default color of the label
83
+ */
84
+ color: _propTypes.default.string
79
85
  };
80
86
  Label.defaultProps = {
81
87
  // someProp:false
82
- as: 'label'
88
+ as: 'label',
89
+ color: 'main1'
83
90
  };
84
91
  var _default = Label;
85
92
  exports.default = _default;
@@ -4,8 +4,8 @@
4
4
  @use "../../../form.scss";
5
5
 
6
6
 
7
- // .#{bem.$base}.label {
8
-
9
- // }
7
+ .#{bem.$base}.label {
8
+ color: var(--x);
9
+ }
10
10
 
11
11
 
@@ -99,5 +99,7 @@ CheckboxInput.propTypes = {
99
99
  };
100
100
  CheckboxInput.defaultProps = {// someProp:false
101
101
  };
102
- var _default = CheckboxInput;
102
+
103
+ var _default = /*#__PURE__*/(0, React.memo)(CheckboxInput);
104
+
103
105
  exports.default = _default;
@@ -13,6 +13,8 @@ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
13
 
14
14
  var _common = require("./common");
15
15
 
16
+ var _common2 = require("../../common");
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  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); }
@@ -27,7 +29,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
27
29
 
28
30
  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
31
 
30
- // Local Definitions
31
32
  var baseClassName = _bem.default.base;
32
33
  var componentClassName = 'choices-input';
33
34
  /**
@@ -41,12 +42,14 @@ var ChoicesInput = _ref => {
41
42
  style,
42
43
  name,
43
44
  validate,
44
- choices,
45
+ options,
45
46
  multiple,
46
47
  gridColumnsMobile,
47
48
  gridColumnsDesktop,
48
49
  color,
49
- colorChecked // ...otherProps
50
+ colorChecked,
51
+ label,
52
+ disabled // ...otherProps
50
53
 
51
54
  } = _ref;
52
55
  (0, React.useLayoutEffect)(() => {
@@ -60,13 +63,18 @@ var ChoicesInput = _ref => {
60
63
  '--grid-columns-mobile': gridColumnsMobile
61
64
  }, style) // {...otherProps}
62
65
 
63
- }, choices.map(choice => /*#__PURE__*/React.createElement(_common.Choice, _extends({
66
+ }, label && /*#__PURE__*/React.createElement(_common2.FormLabel, {
67
+ as: "p"
68
+ }, label), /*#__PURE__*/React.createElement("div", {
69
+ className: "choices"
70
+ }, options.map(choice => /*#__PURE__*/React.createElement(_common.Choice, _extends({
64
71
  key: choice.value,
65
72
  name: name,
66
73
  id: "".concat(id, "-").concat(choice.value),
67
74
  multiple: multiple,
68
- validate: validate
69
- }, choice))));
75
+ validate: validate,
76
+ disabled: disabled
77
+ }, choice)))));
70
78
  };
71
79
 
72
80
  ChoicesInput.propTypes = {
@@ -96,9 +104,9 @@ ChoicesInput.propTypes = {
96
104
  validate: _propTypes.default.string,
97
105
 
98
106
  /**
99
- * The choices
107
+ * The choices input options
100
108
  */
101
- choices: _propTypes.default.arrayOf(_propTypes.default.shape({
109
+ options: _propTypes.default.arrayOf(_propTypes.default.shape({
102
110
  value: _propTypes.default.string,
103
111
  label: _propTypes.default.string
104
112
  })),
@@ -126,13 +134,26 @@ ChoicesInput.propTypes = {
126
134
  /**
127
135
  * The selected choice color
128
136
  */
129
- colorChecked: _propTypes.default.string
137
+ colorChecked: _propTypes.default.string,
138
+
139
+ /**
140
+ * The label of the choices input
141
+ */
142
+ label: _propTypes.default.string,
143
+
144
+ /**
145
+ * Whether all the Choices inputs should be disabled
146
+ */
147
+ disabled: _propTypes.default.bool
130
148
  };
131
149
  ChoicesInput.defaultProps = {
132
150
  gridColumnsMobile: 2,
133
151
  gridColumnsDesktop: 3,
134
152
  color: 'background',
135
- colorChecked: 'main1'
153
+ colorChecked: 'main1',
154
+ disabled: false
136
155
  };
137
- var _default = ChoicesInput;
156
+
157
+ var _default = /*#__PURE__*/(0, React.memo)(ChoicesInput);
158
+
138
159
  exports.default = _default;
@@ -38,7 +38,8 @@ var Choice = _ref => {
38
38
  labelStyle,
39
39
  value,
40
40
  multiple,
41
- validate
41
+ validate,
42
+ disabled
42
43
  } = _ref;
43
44
  var [field] = (0, _formik.useField)({
44
45
  name,
@@ -52,7 +53,8 @@ var Choice = _ref => {
52
53
  id: id,
53
54
  name: name
54
55
  }, field, {
55
- value: value
56
+ value: value,
57
+ disabled: disabled
56
58
  })), /*#__PURE__*/React.createElement("label", {
57
59
  htmlFor: id,
58
60
  className: labelClassName,
@@ -109,7 +111,12 @@ Choice.propTypes = {
109
111
  /**
110
112
  * The input field validator function
111
113
  */
112
- validate: _propTypes.default.func
114
+ validate: _propTypes.default.func,
115
+
116
+ /**
117
+ * Whether the radio or checkbox choice should be disabled
118
+ */
119
+ disabled: _propTypes.default.bool
113
120
  };
114
121
  var _default = Choice;
115
122
  exports.default = _default;
@@ -9,39 +9,42 @@ $default-padding:var(--u, 1em);
9
9
  $default-transition:all .3s;
10
10
 
11
11
  .#{bem.$base}.choices-input {
12
- display: grid;
13
- gap: $default-grid-gap;
14
- grid-template-columns: repeat(var(--grid-columns-mobile), 1fr);
15
12
 
16
- @include mixins.media($from:$sm-md) {
17
- grid-template-columns: repeat(var(--grid-columns-desktop), 1fr);
18
- }
19
-
20
- .choice {
21
- display: flex;
22
-
23
- input {
24
- opacity: 0;
25
- position: absolute;
26
- visibility: none;
27
- z-index: -1;
28
- }
13
+ .choices {
14
+ display: grid;
15
+ gap: $default-grid-gap;
16
+ grid-template-columns: repeat(var(--grid-columns-mobile), 1fr);
29
17
 
30
- label {
31
- background: var(--x);
32
- border-radius: var(--theme-border-radius);
33
- color: var(--on-x);
34
- display: block;
35
- height: 100%;
36
- padding: $default-padding;
37
- transition: $default-transition;
38
- width: 100%;
39
- cursor: pointer;
18
+ @include mixins.media($from:$sm-md) {
19
+ grid-template-columns: repeat(var(--grid-columns-desktop), 1fr);
40
20
  }
41
21
 
42
- input:checked + label {
43
- background: var(--y);
44
- color: var(--on-y);
22
+ .choice {
23
+ display: flex;
24
+
25
+ input {
26
+ opacity: 0;
27
+ position: absolute;
28
+ visibility: none;
29
+ z-index: -1;
30
+ }
31
+
32
+ label {
33
+ background: var(--x);
34
+ border-radius: var(--theme-border-radius);
35
+ color: var(--on-x);
36
+ display: block;
37
+ height: 100%;
38
+ padding: $default-padding;
39
+ transition: $default-transition;
40
+ width: 100%;
41
+ cursor: pointer;
42
+ }
43
+
44
+ input:checked + label {
45
+ background: var(--y);
46
+ color: var(--on-y);
47
+ }
45
48
  }
46
49
  }
47
50
  }
@@ -104,5 +104,7 @@ RadioInput.propTypes = {
104
104
  };
105
105
  RadioInput.defaultProps = {// someProp:false
106
106
  };
107
- var _default = RadioInput;
107
+
108
+ var _default = /*#__PURE__*/(0, React.memo)(RadioInput);
109
+
108
110
  exports.default = _default;
@@ -115,5 +115,7 @@ RatingsInput.defaultProps = {
115
115
  labelMin: 'not satisfied.',
116
116
  labelMax: 'very satisfied.'
117
117
  };
118
- var _default = RatingsInput;
118
+
119
+ var _default = /*#__PURE__*/(0, React.memo)(RatingsInput);
120
+
119
121
  exports.default = _default;
@@ -37,7 +37,8 @@ var SelectInput = _ref => {
37
37
  style,
38
38
  name,
39
39
  label,
40
- options // ...otherProps
40
+ options,
41
+ disabled // ...otherProps
41
42
 
42
43
  } = _ref;
43
44
  (0, React.useLayoutEffect)(() => {
@@ -55,7 +56,8 @@ var SelectInput = _ref => {
55
56
  }, label), /*#__PURE__*/React.createElement("select", _extends({
56
57
  className: "input v25 pv-v"
57
58
  }, field, {
58
- id: name
59
+ id: name,
60
+ disabled: disabled
59
61
  }), options.map(option => {
60
62
  // i.e if option is a string like "blah", return { value: "blah", label: "blah" }
61
63
  var newOption = typeof option === 'string' ? {
@@ -103,9 +105,17 @@ SelectInput.propTypes = {
103
105
  options: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({
104
106
  value: _propTypes.default.string,
105
107
  label: _propTypes.default.string
106
- })]))
108
+ })])),
109
+
110
+ /**
111
+ * Whether the select input should be disabled
112
+ */
113
+ disabled: _propTypes.default.bool
107
114
  };
108
- SelectInput.defaultProps = {// someProp:false
115
+ SelectInput.defaultProps = {
116
+ disabled: false
109
117
  };
110
- var _default = SelectInput;
118
+
119
+ var _default = /*#__PURE__*/(0, React.memo)(SelectInput);
120
+
111
121
  exports.default = _default;