@ntbjs/react-components 1.0.0 → 1.1.0-beta.10

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 (57) hide show
  1. package/{AssetGallery-2d26f3cf.js → AssetGallery-1a3e0374.js} +12 -5
  2. package/AssetPreviewTopBar-020a6f96.js +92 -0
  3. package/AutocompleteSelect-e82bd937.js +358 -0
  4. package/Badge-34ad2850.js +146 -0
  5. package/Button-e6a6139c.js +264 -0
  6. package/CompactStarRating-f7a58649.js +246 -0
  7. package/CompactTextInput-faf4ea96.js +265 -0
  8. package/ContextMenu-a68d4f28.js +32 -0
  9. package/InputGroup-66dd343c.js +28 -0
  10. package/MultiSelect-3eca3c3e.js +361 -0
  11. package/Popover-63d38274.js +127 -0
  12. package/SectionSeparator-12aff748.js +37 -0
  13. package/Tab-51124003.js +30 -0
  14. package/Tabs-452079b5.js +99 -0
  15. package/{TextArea-52cf4c0a.js → TextArea-efe4fa88.js} +64 -24
  16. package/{TextInput-a7c32f5f.js → TextInput-e4c6d536.js} +42 -22
  17. package/{Tooltip-f95a39f4.js → Tooltip-7c57004f.js} +12 -10
  18. package/close-ebf2f3cf.js +41 -0
  19. package/data/Badge/index.js +10 -0
  20. package/data/Popover/index.js +1 -1
  21. package/data/Tab/index.js +10 -0
  22. package/data/Tabs/index.js +12 -0
  23. package/data/index.js +8 -2
  24. package/edit-note-c47d292e.js +41 -0
  25. package/expand-more-94585605.js +41 -0
  26. package/icons/arrow-back.svg +4 -0
  27. package/icons/arrow-drop-down.svg +4 -0
  28. package/icons/close.svg +4 -0
  29. package/icons/delete-context-menu.svg +4 -0
  30. package/icons/design-services.svg +4 -0
  31. package/icons/edit-note.svg +4 -0
  32. package/icons/expand-more.svg +4 -0
  33. package/icons/link.svg +4 -0
  34. package/icons/star-filled.svg +3 -0
  35. package/icons/star.svg +3 -0
  36. package/icons/triangle-right.svg +4 -0
  37. package/inputs/AutocompleteSelect/index.js +18 -0
  38. package/inputs/Button/index.js +7 -1
  39. package/inputs/CompactStarRating/index.js +11 -0
  40. package/inputs/CompactTextInput/index.js +20 -0
  41. package/inputs/MultiSelect/index.js +15 -0
  42. package/inputs/TextArea/index.js +2 -1
  43. package/inputs/TextInput/index.js +2 -1
  44. package/inputs/index.js +25 -3
  45. package/layout/InputGroup/index.js +10 -0
  46. package/layout/SectionSeparator/index.js +10 -0
  47. package/layout/index.js +14 -0
  48. package/package.json +4 -2
  49. package/react-select-creatable.esm-eb462367.js +7622 -0
  50. package/widgets/AssetGallery/index.js +23 -8
  51. package/widgets/AssetPreview/AssetPreviewTopBar/index.js +11 -0
  52. package/widgets/ContextMenu/ContextMenuItem/index.js +112 -0
  53. package/widgets/ContextMenu/ContextMenuItemsGroup/index.js +32 -0
  54. package/widgets/ContextMenu/index.js +10 -0
  55. package/widgets/index.js +26 -8
  56. package/Button-0d728b52.js +0 -156
  57. package/Popover-d3e2f6c0.js +0 -97
@@ -0,0 +1,264 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-870f7df1.js');
4
+ var React = require('react');
5
+ var styled = require('styled-components');
6
+ var Popover = require('./Popover-63d38274.js');
7
+ var ContextMenu = require('./ContextMenu-a68d4f28.js');
8
+ var expandMore = require('./expand-more-94585605.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
+
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28;
16
+ var Button$1 = styled__default['default'].button.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n border-radius: 3px;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 400;\n padding: 12px 16px;\n cursor: pointer;\n background: ", ";\n border: 2px solid ", ";\n transition: all 250ms, opacity 200ms;\n\n &:hover,\n &.dropdown-is-active {\n background: #296c58;\n border-color: #296c58;\n }\n\n ", "\n\n && {\n ", ";\n }\n\n && {\n ", ";\n }\n\n && {\n ", ";\n }\n\n && {\n ", ";\n }\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", ";\n"])), function (props) {
17
+ return props.theme.getColor('emerald-500');
18
+ }, function (props) {
19
+ return props.theme.getColor('emerald-500');
20
+ }, function (props) {
21
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('white'));
22
+ }, function (props) {
23
+ return props.secondary && styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n background: ", ";\n border-color: ", ";\n\n ", "\n\n &:hover,\n &.dropdown-is-active {\n background: ", ";\n border-color: ", ";\n }\n "])), function (props) {
24
+ return props.theme.getColor('gray-200');
25
+ }, function (props) {
26
+ return props.theme.getColor('gray-200');
27
+ }, props.theme.themeProp('color', props.theme.getColor('gray-700'), props.theme.getColor('gray-700')), function (props) {
28
+ return props.theme.getColor('gray-300');
29
+ }, function (props) {
30
+ return props.theme.getColor('gray-300');
31
+ });
32
+ }, function (props) {
33
+ return props.outlined && styled.css(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n background: transparent;\n transition: none;\n\n ", "\n\n ", "\n\n &:hover,\n &.dropdown-is-active {\n background-color: #296c58;\n\n ", "\n\n ", "\n }\n "])), props.theme.themeProp('border-color', props.theme.getColor('emerald-400'), props.theme.getColor('emerald-500')), props.theme.themeProp('color', props.theme.getColor('emerald-400'), props.theme.getColor('emerald-500')), props.theme.themeProp('border-color', props.theme.getColor('emerald-400'), '#296c58'), props.theme.themeProp('color', props.theme.getColor('gray-200'), props.theme.getColor('gray-200')));
34
+ }, function (props) {
35
+ return props.outlined && props.secondary && styled.css(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n ", "\n\n ", "\n\n &:hover,\n &.dropdown-is-active {\n background: ", ";\n\n ", "\n\n ", "\n }\n "])), props.theme.themeProp('border-color', props.theme.getColor('gray-200'), props.theme.getColor('gray-700')), props.theme.themeProp('color', props.theme.getColor('gray-200'), props.theme.getColor('gray-700')), props.theme.getColor('gray-300'), props.theme.themeProp('border-color', props.theme.getColor('gray-300'), props.theme.getColor('gray-300')), props.theme.themeProp('color', props.theme.getColor('gray-700'), props.theme.getColor('gray-700')));
36
+ }, function (props) {
37
+ return props.outlined && props.secondary && props.dropdownItems && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n &:hover,\n &.dropdown-is-active {\n ", "\n }\n "])), props.theme.themeProp('border-color', props.theme.getColor('gray-300'), props.theme.getColor('gray-700')));
38
+ }, function (props) {
39
+ return props.block && styled.css(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n width: 100%;\n "])));
40
+ }, function (props) {
41
+ return props.disabled && styled.css(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n "])));
42
+ }, function (props) {
43
+ return props.size === 'x-small' && styled.css(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n padding: 1px 16px;\n height: 24px;\n "])));
44
+ }, function (props) {
45
+ return props.size === 'small' && styled.css(_templateObject9 || (_templateObject9 = defaultTheme._taggedTemplateLiteral(["\n padding: 6px 16px;\n "])));
46
+ }, function (props) {
47
+ return props.size === 'large' && styled.css(_templateObject10 || (_templateObject10 = defaultTheme._taggedTemplateLiteral(["\n padding: 16px 16px;\n "])));
48
+ }, function (props) {
49
+ return props.singleAction && styled.css(_templateObject11 || (_templateObject11 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 34px;\n border-radius: 3px !important;\n transition: all 250ms, opacity 200ms;\n "])));
50
+ });
51
+ var ButtonContent = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject12 || (_templateObject12 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n transform: scale(1);\n opacity: 1;\n transition: all 200ms;\n\n > svg {\n width: 100%;\n max-width: 16px;\n max-height: 16px;\n margin-right: 8px;\n\n ", ";\n\n ", ";\n }\n\n ", "\n\n ", ";\n"])), function (props) {
52
+ return props.size === 'small' && styled.css(_templateObject13 || (_templateObject13 = defaultTheme._taggedTemplateLiteral(["\n max-width: 13px;\n max-height: 13px;\n "])));
53
+ }, function (props) {
54
+ return props.size === 'x-small' && styled.css(_templateObject14 || (_templateObject14 = defaultTheme._taggedTemplateLiteral(["\n max-width: 11px;\n max-height: 11px;\n "])));
55
+ }, function (props) {
56
+ return props.$loading && styled.css(_templateObject15 || (_templateObject15 = defaultTheme._taggedTemplateLiteral(["\n transform: scale(0.95);\n opacity: 0;\n "])));
57
+ }, function (props) {
58
+ return props.singleAction && styled.css(_templateObject16 || (_templateObject16 = defaultTheme._taggedTemplateLiteral(["\n svg {\n width: 100% !important;\n height: 100% !important;\n margin-right: 24px;\n }\n "])));
59
+ });
60
+ var LoadingIndicator = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject17 || (_templateObject17 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n padding: 4px;\n background: inherit;\n opacity: 0;\n transition: opacity 200ms;\n box-sizing: border-box;\n\n ", "\n"])), function (props) {
61
+ return props.$loading && styled.css(_templateObject18 || (_templateObject18 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n "])));
62
+ });
63
+ var LoadingIndicatorSvg = styled__default['default'].svg.attrs(defaultTheme.applyDefaultTheme)(_templateObject19 || (_templateObject19 = defaultTheme._taggedTemplateLiteral(["\n height: 100%;\n color: inherit;\n transform: rotate(-88deg);\n"])));
64
+ var LoadingIndicatorSvgCircle = styled__default['default'].circle.attrs(defaultTheme.applyDefaultTheme)(_templateObject20 || (_templateObject20 = defaultTheme._taggedTemplateLiteral(["\n transition: stroke-dashoffset 300ms linear;\n stroke-dasharray: 113;\n"])));
65
+ var ButtonWrapper = styled__default['default'].span.attrs(defaultTheme.applyDefaultTheme)(_templateObject21 || (_templateObject21 = defaultTheme._taggedTemplateLiteral(["\n white-space: nowrap;\n"])));
66
+ var MainButtonContainer = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject22 || (_templateObject22 = defaultTheme._taggedTemplateLiteral(["\n display: inline-block;\n button {\n ", ";\n\n ", ";\n }\n"])), function (props) {
67
+ return props.dropdownItems && styled.css(_templateObject23 || (_templateObject23 = defaultTheme._taggedTemplateLiteral(["\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n "])));
68
+ }, function (props) {
69
+ return props.dropdownItems && props.outlined && styled.css(_templateObject24 || (_templateObject24 = defaultTheme._taggedTemplateLiteral(["\n border-right: none;\n "])));
70
+ });
71
+ var MainButtonContainerSingle = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject25 || (_templateObject25 = defaultTheme._taggedTemplateLiteral(["\n display: inline-block;\n ", ";\n\n button {\n ", ";\n }\n"])), function (props) {
72
+ return props.singleAction && styled.css(_templateObject26 || (_templateObject26 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n border-radius: 3px !important;\n transition: all 250ms, opacity 200ms;\n "])));
73
+ }, function (props) {
74
+ return props.dropdownItems && styled.css(_templateObject27 || (_templateObject27 = defaultTheme._taggedTemplateLiteral(["\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n "])));
75
+ });
76
+ var DropdownButtonContainer = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject28 || (_templateObject28 = defaultTheme._taggedTemplateLiteral(["\n display: inline-block;\n\n button {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n\n ", ";\n }\n\n svg {\n color: inherit;\n height: 7px;\n width: 12px;\n\n ", ";\n }\n"])), function (props) {
77
+ return !props.singleAction && 'border-left: none';
78
+ }, function (props) {
79
+ return !props.singleAction && 'margin-bottom: 1px';
80
+ });
81
+
82
+ var Button = React__default['default'].forwardRef(function Button(_ref, forwardedRef) {
83
+ var onClickEffect = _ref.onClickEffect,
84
+ singleAction = _ref.singleAction,
85
+ dropdownItems = _ref.dropdownItems,
86
+ secondary = _ref.secondary,
87
+ outlined = _ref.outlined,
88
+ block = _ref.block,
89
+ icon = _ref.icon,
90
+ size = _ref.size,
91
+ disabled = _ref.disabled,
92
+ loading = _ref.loading,
93
+ className = _ref.className,
94
+ children = _ref.children,
95
+ props = defaultTheme._objectWithoutProperties(_ref, ["onClickEffect", "singleAction", "dropdownItems", "secondary", "outlined", "block", "icon", "size", "disabled", "loading", "className", "children"]);
96
+
97
+ var _useState = React.useState(loading || false),
98
+ _useState2 = defaultTheme._slicedToArray(_useState, 2),
99
+ loadingState = _useState2[0],
100
+ setLoadingState = _useState2[1];
101
+
102
+ var _useState3 = React.useState(113),
103
+ _useState4 = defaultTheme._slicedToArray(_useState3, 2),
104
+ loadingStep = _useState4[0],
105
+ setLoadingStep = _useState4[1];
106
+
107
+ var loadingInterval = React.useRef(0);
108
+
109
+ var _useState5 = React.useState(false),
110
+ _useState6 = defaultTheme._slicedToArray(_useState5, 2),
111
+ dropdownIsActive = _useState6[0],
112
+ setDropdownIsActive = _useState6[1];
113
+
114
+ var enableLoading = function enableLoading() {
115
+ loadingInterval.current = setInterval(function () {
116
+ setLoadingStep(function (currentLoadingStep) {
117
+ var newLoadingStep = Math.round(currentLoadingStep - 15 * currentLoadingStep / 100);
118
+
119
+ if (newLoadingStep === currentLoadingStep) {
120
+ clearInterval(loadingInterval.current);
121
+ }
122
+
123
+ return newLoadingStep;
124
+ });
125
+ }, 300);
126
+ setLoadingState(true);
127
+ };
128
+
129
+ var disableLoading = function disableLoading() {
130
+ clearInterval(loadingInterval.current);
131
+ setLoadingStep(0);
132
+ setTimeout(function () {
133
+ setLoadingState(false);
134
+ setLoadingStep(113);
135
+ }, 500);
136
+ };
137
+
138
+ React.useEffect(function () {
139
+ if (loading) {
140
+ enableLoading();
141
+ } else {
142
+ disableLoading();
143
+ }
144
+
145
+ return function () {
146
+ return clearInterval(loadingInterval.current);
147
+ };
148
+ }, [loading]);
149
+
150
+ var handleDropdownButtonClick = function handleDropdownButtonClick() {
151
+ setDropdownIsActive(true);
152
+ };
153
+
154
+ var handleDropdownClose = function handleDropdownClose() {
155
+ setDropdownIsActive(false);
156
+ };
157
+
158
+ return React__default['default'].createElement(ButtonWrapper, null, !singleAction ? React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(MainButtonContainer, {
159
+ dropdownItems: dropdownItems,
160
+ secondary: secondary,
161
+ outlined: outlined
162
+ }, React__default['default'].createElement(Button$1, defaultTheme._extends({
163
+ ref: forwardedRef,
164
+ onClick: onClickEffect,
165
+ singleAction: singleAction,
166
+ dropdownItems: dropdownItems,
167
+ secondary: secondary,
168
+ outlined: outlined,
169
+ block: block,
170
+ size: size,
171
+ disabled: disabled,
172
+ className: className,
173
+ "aria-busy": disabled
174
+ }, props), React__default['default'].createElement(ButtonContent, {
175
+ $loading: loadingState,
176
+ size: size
177
+ }, icon, children), React__default['default'].createElement(LoadingIndicator, {
178
+ $loading: loadingState,
179
+ style: {
180
+ opacity: loadingState ? 1 : 0
181
+ }
182
+ }, React__default['default'].createElement(LoadingIndicatorSvg, {
183
+ viewBox: "22 22 44 44"
184
+ }, React__default['default'].createElement(LoadingIndicatorSvgCircle, {
185
+ cx: "44",
186
+ cy: "44",
187
+ r: "18",
188
+ fill: "none",
189
+ strokeWidth: "4",
190
+ stroke: "currentColor",
191
+ style: {
192
+ strokeDashoffset: "".concat(loadingStep, "px")
193
+ }
194
+ }))))), dropdownItems && React__default['default'].createElement(DropdownButtonContainer, {
195
+ dropdownItems: dropdownItems,
196
+ secondary: secondary,
197
+ outlined: outlined
198
+ }, React__default['default'].createElement(Popover.Popover, {
199
+ content: React__default['default'].createElement(ContextMenu.ContextMenu, null, dropdownItems),
200
+ placement: 'bottom-end',
201
+ arrow: false,
202
+ contextMenu: true,
203
+ onHide: handleDropdownClose
204
+ }, React__default['default'].createElement(Button$1, {
205
+ ref: forwardedRef,
206
+ singleAction: singleAction,
207
+ dropdownItems: dropdownItems,
208
+ secondary: secondary,
209
+ outlined: outlined,
210
+ block: block,
211
+ size: size,
212
+ disabled: disabled,
213
+ onClick: handleDropdownButtonClick,
214
+ className: dropdownIsActive ? 'dropdown-is-active' : ''
215
+ }, React__default['default'].createElement(expandMore.SvgExpandMore, null))))) : React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(MainButtonContainerSingle, {
216
+ dropdownItems: dropdownItems,
217
+ secondary: secondary,
218
+ outlined: outlined,
219
+ className: className
220
+ }, React__default['default'].createElement(DropdownButtonContainer, {
221
+ singleAction: singleAction
222
+ }, React__default['default'].createElement(Popover.Popover, {
223
+ content: React__default['default'].createElement(ContextMenu.ContextMenu, null, dropdownItems),
224
+ placement: 'bottom-end',
225
+ arrow: false,
226
+ contextMenu: true,
227
+ onHide: handleDropdownClose
228
+ }, React__default['default'].createElement(Button$1, {
229
+ ref: forwardedRef,
230
+ singleAction: singleAction,
231
+ dropdownItems: dropdownItems,
232
+ secondary: secondary,
233
+ outlined: outlined,
234
+ block: block,
235
+ size: size,
236
+ disabled: disabled,
237
+ onClick: handleDropdownButtonClick,
238
+ className: dropdownIsActive ? 'dropdown-is-active' : ''
239
+ }, React__default['default'].createElement(ButtonContent, {
240
+ $loading: loadingState,
241
+ size: size,
242
+ singleAction: singleAction
243
+ }, icon, children), React__default['default'].createElement(expandMore.SvgExpandMore, null)))))));
244
+ });
245
+ Button.propTypes = process.env.NODE_ENV !== "production" ? {
246
+ onClickEffect: defaultTheme.PropTypes.func,
247
+ singleAction: defaultTheme.PropTypes.bool,
248
+ dropdownItems: defaultTheme.PropTypes.node,
249
+ secondary: defaultTheme.PropTypes.bool,
250
+ outlined: defaultTheme.PropTypes.bool,
251
+ block: defaultTheme.PropTypes.bool,
252
+ icon: defaultTheme.PropTypes.element,
253
+ size: defaultTheme.PropTypes.oneOf(['x-small', 'small', 'normal', 'large']),
254
+ disabled: defaultTheme.PropTypes.bool,
255
+ loading: defaultTheme.PropTypes.bool,
256
+ className: defaultTheme.PropTypes.string,
257
+ children: defaultTheme.PropTypes.any.isRequired
258
+ } : {};
259
+ Button.defaultProps = {
260
+ size: 'normal',
261
+ singleHover: false
262
+ };
263
+
264
+ exports.Button = Button;
@@ -0,0 +1,246 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-870f7df1.js');
4
+ var React = require('react');
5
+ var styled = require('styled-components');
6
+ var lodash = require('lodash');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () {
20
+ return e[k];
21
+ }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n['default'] = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
32
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
33
+
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
35
+ var CompactStarRating$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n font-family: ", ";\n font-size: 1rem;\n font-weight: 500;\n height: 24px;\n width: 100%;\n display: flex;\n align-items: center;\n\n ", "\n\n & .hiddenInput {\n display: none;\n }\n"])), function (props) {
36
+ return props.theme.primaryFontFamily;
37
+ }, function (props) {
38
+ return props.disabled && styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n button {\n cursor: not-allowed;\n }\n > * {\n cursor: not-allowed;\n }\n "])));
39
+ });
40
+ var labelWidth = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n width: 33.3%;\n display: flex;\n align-items: center;\n text-align: left;\n font: normal normal normal 14px/16px Roboto;\n letter-spacing: 0px;\n padding: 0;\n height: 19px;\n\n ", "\n"])), function (props) {
41
+ return props.theme.themeProp('color', props.theme.getColor('gray-400'), props.theme.getColor('gray-500'));
42
+ });
43
+ var starsWidth = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n width: 66.6%;\n border-radius: 3px;\n height: 24px;\n\n ", "\n\n ", "\n"])), function (props) {
44
+ return props.error && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n ", ";\n "])), props.theme.themeProp('background', '#7F1B1B', '#FBEAE6'));
45
+ }, function (props) {
46
+ return props.warning && styled.css(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n ", ";\n "])), props.theme.themeProp('background', '#634E01', '#FFFDE8'));
47
+ });
48
+ var Star = styled__default['default'].button.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n svg {\n height: 12px;\n padding-left: 4px;\n transition: color 250ms;\n }\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", ";\n"])), function (props) {
49
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
50
+ }, function (props) {
51
+ return props.error && props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
52
+ }, function (props) {
53
+ return props.warning && props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
54
+ }, function (props) {
55
+ return props.hover && props.theme.themeProp('color', props.theme.getColor('orange-500'), props.theme.getColor('orange-500'));
56
+ });
57
+ var StarFill = styled__default['default'].button.attrs(defaultTheme.applyDefaultTheme)(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n\n svg {\n height: 12px;\n padding-left: 4px;\n transition: color 250ms;\n }\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", ";\n"])), function (props) {
58
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
59
+ }, function (props) {
60
+ return props.error && props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
61
+ }, function (props) {
62
+ return props.warning && props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('black'));
63
+ }, function (props) {
64
+ return props.hover && props.theme.themeProp('color', props.theme.getColor('orange-500'), props.theme.getColor('orange-500'));
65
+ });
66
+
67
+ function _extends$1() { _extends$1 = 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$1.apply(this, arguments); }
68
+
69
+ var _ref$1 = /*#__PURE__*/React__namespace.createElement("path", {
70
+ fill: "currentColor",
71
+ d: "M12.2 31.8l7.8-4.7 7.9 4.8-2.1-8.9 6.9-6-9.1-.8L20 7.7l-3.5 8.4-9.1.8 6.9 6-2.1 8.9zM7.7 38L11 24 0 14.5l14.4-1.2L20 0l5.6 13.2L40 14.5 29.1 24l3.3 14L20 30.6 7.7 38z"
72
+ });
73
+
74
+ function SvgStar(props) {
75
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$1({
76
+ xmlns: "http://www.w3.org/2000/svg",
77
+ viewBox: "0 0 40 38"
78
+ }, props), _ref$1);
79
+ }
80
+
81
+ 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); }
82
+
83
+ var _ref = /*#__PURE__*/React__namespace.createElement("path", {
84
+ fill: "currentColor",
85
+ d: "M7.65 38l3.25-14.05L0 14.5l14.4-1.25L20 0l5.6 13.25L40 14.5l-10.9 9.45L32.35 38 20 30.55 7.65 38z"
86
+ });
87
+
88
+ function SvgStarFilled(props) {
89
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends({
90
+ xmlns: "http://www.w3.org/2000/svg",
91
+ viewBox: "0 0 40 38"
92
+ }, props), _ref);
93
+ }
94
+
95
+ var CompactStarRating = React__default['default'].forwardRef(function CompactStarRating(_ref, forwardedRef) {
96
+ var label = _ref.label,
97
+ icon = _ref.icon,
98
+ iconFill = _ref.iconFill,
99
+ max = _ref.max,
100
+ defaultValue = _ref.defaultValue,
101
+ value = _ref.value,
102
+ viewEmpty = _ref.viewEmpty,
103
+ onChange = _ref.onChange,
104
+ onBlur = _ref.onBlur,
105
+ error = _ref.error,
106
+ warning = _ref.warning,
107
+ readOnly = _ref.readOnly,
108
+ props = defaultTheme._objectWithoutProperties(_ref, ["label", "icon", "iconFill", "max", "defaultValue", "value", "viewEmpty", "onChange", "onBlur", "error", "warning", "readOnly"]);
109
+
110
+ var stars = Array.from(Array(max).keys());
111
+
112
+ var _useState = React.useState(defaultValue),
113
+ _useState2 = defaultTheme._slicedToArray(_useState, 2),
114
+ rating = _useState2[0],
115
+ setRating = _useState2[1];
116
+
117
+ var _useState3 = React.useState(false),
118
+ _useState4 = defaultTheme._slicedToArray(_useState3, 2),
119
+ hover = _useState4[0],
120
+ setHover = _useState4[1];
121
+
122
+ var _useState5 = React.useState(0),
123
+ _useState6 = defaultTheme._slicedToArray(_useState5, 2),
124
+ tempRating = _useState6[0],
125
+ setTempRating = _useState6[1];
126
+
127
+ var inputRef = React.useRef();
128
+ React.useEffect(function () {
129
+ setRating(value);
130
+ }, [value]);
131
+ React.useEffect(function () {
132
+ setRating(defaultValue);
133
+ }, [defaultValue]);
134
+ var hasError = React.useMemo(function () {
135
+ if (lodash.isBoolean(error)) {
136
+ return error;
137
+ }
138
+
139
+ return !lodash.isEmpty(error);
140
+ }, [error]);
141
+ var hasWarning = React.useMemo(function () {
142
+ if (lodash.isBoolean(warning)) {
143
+ return warning;
144
+ }
145
+
146
+ return !lodash.isEmpty(warning);
147
+ }, [warning]);
148
+ React.useEffect(function () {
149
+ var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
150
+ nativeInputValueSetter.call(inputRef.current, String(rating));
151
+ var ev2 = new Event('input', {
152
+ bubbles: true
153
+ });
154
+ ev2.simulated = true;
155
+ inputRef.current.dispatchEvent(ev2);
156
+ }, [rating]);
157
+
158
+ var starIconRender = function starIconRender(key) {
159
+ if (rating > 0 && rating >= key + 1) {
160
+ return React__default['default'].createElement(StarFill, {
161
+ disabled: readOnly,
162
+ onClick: function onClick() {
163
+ if (key + 1 > 1) {
164
+ return setRating(key + 1);
165
+ } else if (key + 1 == 1) {
166
+ setRating(function (current) {
167
+ return current === 1 ? 0 : key + 1;
168
+ });
169
+ }
170
+ },
171
+ onMouseEnter: function onMouseEnter() {
172
+ setTempRating(key + 1);
173
+ setHover(true);
174
+ },
175
+ onMouseLeave: function onMouseLeave() {
176
+ setTempRating(0);
177
+ setHover(false);
178
+ },
179
+ hover: hover && key + 1 <= tempRating,
180
+ warning: warning,
181
+ error: error,
182
+ key: key
183
+ }, iconFill);
184
+ } else if (viewEmpty) {
185
+ return React__default['default'].createElement(Star, {
186
+ disabled: readOnly,
187
+ onClick: function onClick() {
188
+ setRating(key + 1);
189
+ },
190
+ onMouseEnter: function onMouseEnter() {
191
+ setTempRating(key + 1);
192
+ setHover(true);
193
+ },
194
+ onMouseLeave: function onMouseLeave() {
195
+ setTempRating(0);
196
+ setHover(false);
197
+ },
198
+ hover: hover && key + 1 <= tempRating,
199
+ warning: warning,
200
+ error: error,
201
+ key: key
202
+ }, icon);
203
+ }
204
+ };
205
+
206
+ return React__default['default'].createElement(CompactStarRating$1, defaultTheme._extends({
207
+ disabled: readOnly,
208
+ ref: forwardedRef
209
+ }, props), React__default['default'].createElement(labelWidth, null, label), React__default['default'].createElement("input", {
210
+ className: "hiddenInput",
211
+ type: "number",
212
+ ref: inputRef,
213
+ onChange: onChange,
214
+ onBlur: onBlur
215
+ }), React__default['default'].createElement(starsWidth, {
216
+ error: hasError,
217
+ warning: hasWarning
218
+ }, stars.map(function (key) {
219
+ return starIconRender(key);
220
+ })));
221
+ });
222
+ CompactStarRating.defaultProps = {
223
+ label: 'Rating',
224
+ max: 5,
225
+ value: 0,
226
+ defaultValue: 0,
227
+ viewEmpty: true,
228
+ icon: React__default['default'].createElement(SvgStar, null),
229
+ iconFill: React__default['default'].createElement(SvgStarFilled, null)
230
+ };
231
+ CompactStarRating.propTypes = process.env.NODE_ENV !== "production" ? {
232
+ value: defaultTheme.PropTypes.number,
233
+ defaultValue: defaultTheme.PropTypes.number,
234
+ label: defaultTheme.PropTypes.string,
235
+ icon: defaultTheme.PropTypes.element,
236
+ iconFill: defaultTheme.PropTypes.element,
237
+ max: defaultTheme.PropTypes.number,
238
+ viewEmpty: defaultTheme.PropTypes.bool,
239
+ onChange: defaultTheme.PropTypes.func,
240
+ onBlur: defaultTheme.PropTypes.func,
241
+ error: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.bool, defaultTheme.PropTypes.string]),
242
+ warning: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.bool, defaultTheme.PropTypes.string]),
243
+ readOnly: defaultTheme.PropTypes.bool
244
+ } : {};
245
+
246
+ exports.CompactStarRating = CompactStarRating;