@geneui/components 2.11.1

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 (154) hide show
  1. package/ActionableList.js +1761 -0
  2. package/AdvancedSearch.js +872 -0
  3. package/Alert.js +98 -0
  4. package/Avatar.js +77 -0
  5. package/Badge.js +76 -0
  6. package/Breadcrumb.js +128 -0
  7. package/BusyLoader.js +69 -0
  8. package/Button.js +130 -0
  9. package/CHANGELOG.md +424 -0
  10. package/Card.js +513 -0
  11. package/CardList.js +705 -0
  12. package/CellMeasurerCache-c11cec83.js +229 -0
  13. package/Charts.js +99 -0
  14. package/Checkbox.js +232 -0
  15. package/CheckboxGroup.js +206 -0
  16. package/CheckboxGroupWithSearch.js +279 -0
  17. package/Collapse.js +196 -0
  18. package/ColorPicker.js +210 -0
  19. package/ComboBox.js +99 -0
  20. package/Counter.js +99 -0
  21. package/DateFilter.js +179 -0
  22. package/DatePicker.js +1231 -0
  23. package/DatePickerInput.js +30 -0
  24. package/Divider.js +56 -0
  25. package/Drawer.js +264 -0
  26. package/Dropdown.js +99 -0
  27. package/Editor.js +22965 -0
  28. package/Empty.js +132 -0
  29. package/ExtendedInput.js +578 -0
  30. package/Form.js +116 -0
  31. package/FormContainer.js +189 -0
  32. package/FormableCheckbox.js +27 -0
  33. package/FormableDatePicker.js +39 -0
  34. package/FormableDropdown.js +105 -0
  35. package/FormableEditor.js +24 -0
  36. package/FormableHOC-21051057.js +83 -0
  37. package/FormableMultiSelectDropdown.js +105 -0
  38. package/FormableNumberInput.js +31 -0
  39. package/FormableRadio.js +23 -0
  40. package/FormableSwitcher.js +23 -0
  41. package/FormableTextInput.js +31 -0
  42. package/FormableUploader.js +40 -0
  43. package/GeneUIProvider.js +256 -0
  44. package/Grid.js +166 -0
  45. package/Holder.js +99 -0
  46. package/Icon.js +63 -0
  47. package/Image.js +130 -0
  48. package/ImagePreview.js +99 -0
  49. package/KeyValue.js +63 -0
  50. package/Label.js +58 -0
  51. package/LinkButton.js +104 -0
  52. package/Menu.js +277 -0
  53. package/MobileNavigation.js +95 -0
  54. package/MobilePopup.js +180 -0
  55. package/Modal.js +251 -0
  56. package/ModuleTitle.js +99 -0
  57. package/NavigationMenu.js +212 -0
  58. package/Notification.js +120 -0
  59. package/Option.js +186 -0
  60. package/Overlay.js +99 -0
  61. package/Overspread.js +343 -0
  62. package/Pagination.js +258 -0
  63. package/Paper.js +97 -0
  64. package/Popover-f4d1cac0.js +411 -0
  65. package/Popover.js +20 -0
  66. package/PopoverV2.js +19 -0
  67. package/Portal.js +58 -0
  68. package/Products.js +115 -0
  69. package/Profile.js +99 -0
  70. package/Progress.js +200 -0
  71. package/QRCode.js +816 -0
  72. package/README.md +90 -0
  73. package/Radio.js +152 -0
  74. package/RadioGroup.js +105 -0
  75. package/Range.js +14 -0
  76. package/RichEditor-b7928765.js +228 -0
  77. package/RichEditor.js +13 -0
  78. package/Scrollbar.js +1587 -0
  79. package/Search.js +72 -0
  80. package/SearchWithDropdown.js +195 -0
  81. package/Section.js +62 -0
  82. package/SkeletonLoader.js +82 -0
  83. package/Slider.js +256 -0
  84. package/Status.js +104 -0
  85. package/Steps.js +312 -0
  86. package/SuggestionList.js +15 -0
  87. package/Switcher.js +194 -0
  88. package/Table.js +102 -0
  89. package/TableCompositions.js +17028 -0
  90. package/Tabs.js +236 -0
  91. package/Tag.js +103 -0
  92. package/TextLink.js +22 -0
  93. package/Textarea.js +239 -0
  94. package/Time.js +63 -0
  95. package/TimePicker.js +99 -0
  96. package/Timeline.js +114 -0
  97. package/Title.js +66 -0
  98. package/Toaster.js +116 -0
  99. package/Tooltip.js +157 -0
  100. package/TransferList.js +502 -0
  101. package/Uploader.js +32 -0
  102. package/ValidatableCheckbox.js +126 -0
  103. package/ValidatableDatePicker.js +312 -0
  104. package/ValidatableDropdown.js +99 -0
  105. package/ValidatableElements.js +99 -0
  106. package/ValidatableMultiSelectDropdown.js +99 -0
  107. package/ValidatableNumberInput.js +194 -0
  108. package/ValidatableRadio.js +117 -0
  109. package/ValidatableSwitcher.js +94 -0
  110. package/ValidatableTextInput.js +164 -0
  111. package/ValidatableTimeInput.js +171 -0
  112. package/ValidatableUploader.js +94 -0
  113. package/Widget.js +99 -0
  114. package/_commonjsHelpers-24198af3.js +35 -0
  115. package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
  116. package/checkTimeValidation-e56771be.js +16 -0
  117. package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
  118. package/clsx.m-2bb6df4b.js +3 -0
  119. package/configs-91c86664.js +96 -0
  120. package/configs.js +131 -0
  121. package/dateValidation-67caec66.js +225 -0
  122. package/debounce-4419bc2f.js +17 -0
  123. package/globalStyling-9c60a159.js +4 -0
  124. package/guid-8ddf77b3.js +16 -0
  125. package/index-00fe8887.js +193 -0
  126. package/index-0cf65939.js +30991 -0
  127. package/index-122432cd.js +270 -0
  128. package/index-262edd7a.js +77 -0
  129. package/index-5cea9a7d.js +407 -0
  130. package/index-5e722d91.js +867 -0
  131. package/index-67f4d4d1.js +6568 -0
  132. package/index-6ff23041.js +66 -0
  133. package/index-702bf24a.js +1938 -0
  134. package/index-a4635754.js +329 -0
  135. package/index-a59530cd.js +4 -0
  136. package/index-ac59cb10.js +169 -0
  137. package/index-b7a33c58.js +11 -0
  138. package/index-d9e8a888.js +987 -0
  139. package/index-e0af0caf.js +1182 -0
  140. package/index-e8776f3d.js +807 -0
  141. package/index.js +128 -0
  142. package/localization-4ba17032.js +46 -0
  143. package/objectWithoutPropertiesLoose-299691d8.js +78 -0
  144. package/package.json +190 -0
  145. package/rangeAndSlider-20599da4.js +8839 -0
  146. package/react-beautiful-dnd.esm-38c37304.js +10117 -0
  147. package/style-inject.es-746bb8ed.js +28 -0
  148. package/useClickOutside-5183e396.js +25 -0
  149. package/useDeviceType-dd51db38.js +15 -0
  150. package/useEllipsisDetection-ef536015.js +23 -0
  151. package/useKeyDown-38102ae7.js +21 -0
  152. package/useMount-6fef51a5.js +9 -0
  153. package/useWidth-9f4647f8.js +15 -0
  154. package/useWindowSize-80369d76.js +33 -0
package/Slider.js ADDED
@@ -0,0 +1,256 @@
1
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
2
+ import React__default, { useState, useRef, useCallback, useEffect } from 'react';
3
+ import { p as propTypesExports } from './index-e0af0caf.js';
4
+ import { c as classnames } from './index-6ff23041.js';
5
+ import { c as createSliderWithTooltip, S as Slider } from './rangeAndSlider-20599da4.js';
6
+ import { u as useWidth } from './useWidth-9f4647f8.js';
7
+ import './dateValidation-67caec66.js';
8
+ import 'react-dom';
9
+ import './configs-91c86664.js';
10
+ import Icon from './Icon.js';
11
+ import NumberInput from './ValidatableNumberInput.js';
12
+ import './globalStyling-9c60a159.js';
13
+ import './_commonjsHelpers-24198af3.js';
14
+ import './style-inject.es-746bb8ed.js';
15
+ import './useWindowSize-80369d76.js';
16
+ import './index-ac59cb10.js';
17
+ import './useMount-6fef51a5.js';
18
+ import './ExtendedInput.js';
19
+ import './useDeviceType-dd51db38.js';
20
+ import './index-5cea9a7d.js';
21
+ import './useKeyDown-38102ae7.js';
22
+ import './useClickOutside-5183e396.js';
23
+ import './Scrollbar.js';
24
+ import './Tooltip.js';
25
+ import './Popover-f4d1cac0.js';
26
+ import './GeneUIProvider.js';
27
+
28
+ const SliderWithTooltip = createSliderWithTooltip(Slider);
29
+ function tipFormatter(value, tooltipType) {
30
+ switch (tooltipType) {
31
+ case 'percentage':
32
+ return "".concat(value, "%");
33
+ case 'currency':
34
+ return "$".concat(value);
35
+ case 'pixel':
36
+ return "".concat(value, "px");
37
+ default:
38
+ return value;
39
+ }
40
+ }
41
+ function SliderMolecule(props) {
42
+ const {
43
+ max,
44
+ min,
45
+ step,
46
+ value,
47
+ coloring,
48
+ disabled,
49
+ onChange,
50
+ withInput,
51
+ circleType,
52
+ withTooltip,
53
+ tooltipType,
54
+ className,
55
+ isSmallHandler,
56
+ plusMinusIcons,
57
+ likeDislikeIcons,
58
+ withActionButtons,
59
+ showCircleOnDrag,
60
+ defaultValue = min,
61
+ circleSizeBasedOnRange,
62
+ ...restProps
63
+ } = props;
64
+ const isControlled = ('value' in props);
65
+ const [sliderValue, setSliderValue] = useState(defaultValue);
66
+ const localValue = isControlled ? value : sliderValue;
67
+ const [withLikeDisLikeActions, setWithLikeDisLikeActions] = useState(withActionButtons);
68
+ const isMin = localValue < max / 3;
69
+ const isMiddle = localValue > max / 3;
70
+ const isMax = localValue >= max * 2 / 3;
71
+ const divRef = useRef();
72
+ const sliderWidth = useWidth(divRef);
73
+ const isGradient = coloring === 'gradient-value';
74
+ const SliderElement = withTooltip ? SliderWithTooltip : Slider;
75
+ const handleSliderChange = useCallback(val => {
76
+ !isControlled && setSliderValue(Number(val));
77
+ onChange && onChange(val);
78
+ }, [onChange, isControlled]);
79
+ const handleAfterChange = val => {
80
+ val > max / 2 ? handleSliderChange(max) : handleSliderChange(min);
81
+ };
82
+ // Like and dislike buttons can change value only min or max
83
+ const handleLikeDislikeClick = useCallback(val => {
84
+ withLikeDisLikeActions && handleSliderChange(val);
85
+ }, [handleSliderChange, withLikeDisLikeActions]);
86
+ useEffect(() => {
87
+ !likeDislikeIcons && setWithLikeDisLikeActions(withLikeDisLikeActions => !withLikeDisLikeActions);
88
+ }, [likeDislikeIcons]);
89
+ useEffect(() => {
90
+ setWithLikeDisLikeActions(withActionButtons);
91
+ }, [withActionButtons]);
92
+ return /*#__PURE__*/React__default.createElement("div", _extends({
93
+ className: classnames('slider-holder', className, coloring, {
94
+ disabled,
95
+ 'show-on-drag': showCircleOnDrag
96
+ })
97
+ }, restProps), likeDislikeIcons && /*#__PURE__*/React__default.createElement(Icon, {
98
+ className: classnames('bc-icon-dislike', {
99
+ active: localValue === min,
100
+ 'negative-value': !withLikeDisLikeActions
101
+ }),
102
+ onClick: () => handleLikeDislikeClick(min)
103
+ }), /*#__PURE__*/React__default.createElement("div", {
104
+ className: classnames('slider-comp', {
105
+ 'size-small': isSmallHandler
106
+ }),
107
+ style: {
108
+ '--sliderWidth': "".concat(sliderWidth / 10, "rem")
109
+ }
110
+ }, /*#__PURE__*/React__default.createElement("div", {
111
+ ref: divRef
112
+ }, /*#__PURE__*/React__default.createElement(SliderElement, _extends({}, restProps, {
113
+ max: max,
114
+ min: min,
115
+ step: step,
116
+ onAfterChange: withLikeDisLikeActions ? handleAfterChange : () => void 0,
117
+ value: Math.min(localValue, max),
118
+ onChange: handleSliderChange,
119
+ tipProps: {
120
+ prefixCls: 'tooltip-el',
121
+ overlay: tipFormatter(localValue, tooltipType)
122
+ },
123
+ handleStyle: {
124
+ content: "'".concat(classnames(circleType, {
125
+ 'min-coloring': isMin && isGradient,
126
+ 'max-coloring': isGradient && isMax,
127
+ 'max-size': circleSizeBasedOnRange && isMax,
128
+ 'middle-coloring': isGradient && isMiddle && !isMax,
129
+ 'middle-size': circleSizeBasedOnRange && !isMax && isMiddle
130
+ }), "'")
131
+ }
132
+ })))), plusMinusIcons && /*#__PURE__*/React__default.createElement("div", {
133
+ className: "slider-actions"
134
+ }, /*#__PURE__*/React__default.createElement(Icon, {
135
+ className: classnames('bc-icon-plus', {
136
+ disabled: localValue === max
137
+ }),
138
+ onClick: () => handleSliderChange(localValue + step)
139
+ }), /*#__PURE__*/React__default.createElement(Icon, {
140
+ className: classnames('bc-icon-minus', {
141
+ disabled: localValue === min
142
+ }),
143
+ onClick: () => handleSliderChange(localValue - step)
144
+ })), likeDislikeIcons && /*#__PURE__*/React__default.createElement(Icon, {
145
+ className: classnames('bc-icon-like', {
146
+ active: localValue === max,
147
+ 'positive-value': !withLikeDisLikeActions
148
+ }),
149
+ onClick: () => handleLikeDislikeClick(max)
150
+ }), withInput && /*#__PURE__*/React__default.createElement(NumberInput, {
151
+ step: step,
152
+ min: min,
153
+ max: max,
154
+ type: "number",
155
+ colorOnValid: false,
156
+ showIconOnValid: false,
157
+ colorBorderOnError: true,
158
+ showErrorIcon: false,
159
+ value: String(localValue),
160
+ flexibility: "content-size",
161
+ onChange: e => handleSliderChange(e.target.value)
162
+ }));
163
+ }
164
+ SliderMolecule.propTypes = {
165
+ /**
166
+ * Controlled value.
167
+ */
168
+ value: propTypesExports.number,
169
+ /**
170
+ * Disabled state.
171
+ */
172
+ disabled: propTypesExports.bool,
173
+ /**
174
+ * Fires an event when 'Slider' changes checked state((event: Event) => void).
175
+ */
176
+ onChange: propTypesExports.func,
177
+ /**
178
+ * Additional view to choose step.
179
+ */
180
+ withInput: propTypesExports.bool,
181
+ /**
182
+ * Show/hide 'Slider' tooltip.
183
+ */
184
+ withTooltip: propTypesExports.bool,
185
+ /**
186
+ * Switch on/off small size.
187
+ */
188
+ isSmallHandler: propTypesExports.bool,
189
+ /**
190
+ * External/Additional className that can be added to 'Range' component.
191
+ */
192
+ className: propTypesExports.string,
193
+ /**
194
+ * Initial value.
195
+ */
196
+ defaultValue: propTypesExports.number,
197
+ /**
198
+ * Show/hide actions with (+/-) icons
199
+ */
200
+ plusMinusIcons: propTypesExports.bool,
201
+ /**
202
+ * Show/hide actions with (like/dislike) icons
203
+ */
204
+ likeDislikeIcons: propTypesExports.bool,
205
+ /**
206
+ * Show/hide circles.
207
+ */
208
+ showCircleOnDrag: propTypesExports.bool,
209
+ /**
210
+ * Max value.
211
+ */
212
+ max: propTypesExports.number.isRequired,
213
+ /**
214
+ * Min value.
215
+ */
216
+ min: propTypesExports.number.isRequired,
217
+ /**
218
+ * Skip steps count.
219
+ */
220
+ step: propTypesExports.number.isRequired,
221
+ /**
222
+ * Change circle size based on range
223
+ */
224
+ circleSizeBasedOnRange: propTypesExports.bool,
225
+ /**
226
+ * Show/hide action button.
227
+ */
228
+ withActionButtons: propTypesExports.bool,
229
+ /**
230
+ * Various circle type.
231
+ */
232
+ circleType: propTypesExports.oneOf(['c-type-1', 'c-type-2', 'c-type-3']),
233
+ /**
234
+ * Various tooltip type.
235
+ */
236
+ tooltipType: propTypesExports.oneOf(['default', 'percentage', 'currency', 'pixel']),
237
+ /**
238
+ * Various themes/colors for component.
239
+ */
240
+ coloring: propTypesExports.oneOf(['primary', 'positive-value', 'negative-value', 'gradient-value'])
241
+ };
242
+ SliderMolecule.defaultProps = {
243
+ disabled: false,
244
+ withInput: false,
245
+ isSmallHandler: true,
246
+ withActionButtons: false,
247
+ withTooltip: false,
248
+ coloring: 'primary',
249
+ plusMinusIcons: false,
250
+ tooltipType: 'default',
251
+ likeDislikeIcons: false,
252
+ showCircleOnDrag: false,
253
+ circleSizeBasedOnRange: true
254
+ };
255
+
256
+ export { SliderMolecule as default };
package/Status.js ADDED
@@ -0,0 +1,104 @@
1
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
2
+ import React__default from 'react';
3
+ import { p as propTypesExports } from './index-e0af0caf.js';
4
+ import { c as classnames } from './index-6ff23041.js';
5
+ import Icon from './Icon.js';
6
+ import Tooltip from './Tooltip.js';
7
+ import './globalStyling-9c60a159.js';
8
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
9
+ import './Popover-f4d1cac0.js';
10
+ import './_commonjsHelpers-24198af3.js';
11
+ import 'react-dom';
12
+ import './configs-91c86664.js';
13
+ import './index-ac59cb10.js';
14
+ import './dateValidation-67caec66.js';
15
+ import './useDeviceType-dd51db38.js';
16
+ import './useWindowSize-80369d76.js';
17
+ import './GeneUIProvider.js';
18
+
19
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .static-title-holder{align-items:flex-start;display:inline-flex;flex-direction:column;max-width:100%;vertical-align:top}[data-gene-ui-version=\"2.11.0\"] .static-title-holder .st-t{font:600 1.4rem/1.8rem var(--font-family);margin:0 0 .4rem;opacity:.5;padding:0 var(--static-title-padding,0)}[data-gene-ui-version=\"2.11.0\"] .static-title-holder .st-c{max-width:100%}[data-gene-ui-version=\"2.11.0\"] .static-title-holder .st-c:nth-child(2){align-items:center;display:flex;min-height:3.2rem}[data-gene-ui-version=\"2.11.0\"] .static-title-holder.f-full-width,[data-gene-ui-version=\"2.11.0\"] .static-title-holder.f-full-width .st-c{width:100%}[data-gene-ui-version=\"2.11.0\"] .status-holder{align-items:center;display:flex;font:600 1.4rem/2.4rem var(--font-family)}[data-gene-ui-version=\"2.11.0\"] .status-holder p{height:2.4rem;overflow:hidden}[data-gene-ui-version=\"2.11.0\"] .status-holder span{display:block;overflow:hidden}[data-gene-ui-version=\"2.11.0\"] .status-holder>*+*{margin:0 0 0 .7rem}html[dir=rtl] .status-holder>*+*{margin:0 .7rem 0 0}[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon{align-items:center;color:var(--hero);display:flex;height:3rem;justify-content:center;position:relative;transition:color .3s,opacity .3s;width:3rem}[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon:after,[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon:before{border-radius:100%;content:\"\";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .3s,background .3s,border-color .3s;width:100%}[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon:before{background:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon:after{border:1px solid var(--hero)}[data-gene-ui-version=\"2.11.0\"] .status-holder .status-icon .icon{position:relative;z-index:2}[data-gene-ui-version=\"2.11.0\"] .status-holder:hover .hover-text+span,[data-gene-ui-version=\"2.11.0\"] .status-holder:not(:hover) .hover-text{height:0}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .status-holder.clickable:hover .status-icon:before{opacity:.05}[data-gene-ui-version=\"2.11.0\"] .status-holder.clickable:hover .status-icon:after{opacity:.66}}";
20
+ styleInject(css_248z);
21
+
22
+ const statusIconTypes = ['dot', 'play', 'stop', 'circle', 'circle-outline'];
23
+ const statusEnums = {
24
+ dot: 'bc-icon-dot',
25
+ play: 'bc-icon-status-play',
26
+ stop: 'bc-icon-status-stop',
27
+ circle: 'bc-icon-status-circle',
28
+ 'circle-outline': 'bc-icon-status-circle-outline'
29
+ };
30
+ function Status(_ref) {
31
+ let {
32
+ label,
33
+ color,
34
+ title,
35
+ onClick,
36
+ iconType,
37
+ hoverTitle,
38
+ className,
39
+ tooltipText,
40
+ ...restProps
41
+ } = _ref;
42
+ const Content = /*#__PURE__*/React__default.createElement("ul", _extends({
43
+ className: "static-title-holder"
44
+ }, restProps), label && /*#__PURE__*/React__default.createElement("li", {
45
+ className: "st-t"
46
+ }, label), /*#__PURE__*/React__default.createElement("li", {
47
+ className: "st-c"
48
+ }, /*#__PURE__*/React__default.createElement("div", {
49
+ className: classnames('status-holder', "c-".concat(color), className, {
50
+ clickable: !!hoverTitle,
51
+ 'cursor-pointer': !!onClick
52
+ }),
53
+ onClick: onClick,
54
+ style: {
55
+ '--hero': color
56
+ }
57
+ }, /*#__PURE__*/React__default.createElement("div", {
58
+ className: "status-icon"
59
+ }, /*#__PURE__*/React__default.createElement(Icon, {
60
+ type: statusEnums[iconType]
61
+ })), title && /*#__PURE__*/React__default.createElement("p", null, hoverTitle && /*#__PURE__*/React__default.createElement("span", {
62
+ className: "hover-text"
63
+ }, hoverTitle), /*#__PURE__*/React__default.createElement("span", null, title)))));
64
+ return tooltipText ? /*#__PURE__*/React__default.createElement(Tooltip, {
65
+ position: "auto",
66
+ title: tooltipText
67
+ }, Content) : Content;
68
+ }
69
+ Status.propTypes = {
70
+ /**
71
+ * Label for 'Status'.
72
+ */
73
+ label: propTypesExports.string,
74
+ /**
75
+ * Title for 'Status'.
76
+ */
77
+ title: propTypesExports.string,
78
+ /**
79
+ * Fires an event on 'Status' change((event: Event) => void).
80
+ */
81
+ onClick: propTypesExports.func,
82
+ /**
83
+ * External/Additional className that can be added to 'Status' component.
84
+ */
85
+ className: propTypesExports.string,
86
+ /**
87
+ * Title for hovered state 'Status'.
88
+ */
89
+ hoverTitle: propTypesExports.string,
90
+ /**
91
+ * Text for tooltip.
92
+ */
93
+ tooltipText: propTypesExports.string,
94
+ /**
95
+ * External color className
96
+ */
97
+ color: propTypesExports.string,
98
+ /**
99
+ * Various types for icon
100
+ */
101
+ iconType: propTypesExports.oneOf(statusIconTypes)
102
+ };
103
+
104
+ export { Status as default, statusIconTypes };
package/Steps.js ADDED
@@ -0,0 +1,312 @@
1
+ import React__default, { useRef, useState } from 'react';
2
+ import { p as propTypesExports } from './index-e0af0caf.js';
3
+ import { c as classnames } from './index-6ff23041.js';
4
+ import { h as stepsConfig } from './configs-91c86664.js';
5
+ import Icon from './Icon.js';
6
+ import Tooltip from './Tooltip.js';
7
+ import './dateValidation-67caec66.js';
8
+ import { d as debounce } from './debounce-4419bc2f.js';
9
+ import 'react-dom';
10
+ import { P as Popover } from './index-a4635754.js';
11
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
12
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
13
+ import { c as childrenOf } from './index-ac59cb10.js';
14
+ import './globalStyling-9c60a159.js';
15
+ import './Popover-f4d1cac0.js';
16
+ import './_commonjsHelpers-24198af3.js';
17
+ import './useDeviceType-dd51db38.js';
18
+ import './useWindowSize-80369d76.js';
19
+ import './GeneUIProvider.js';
20
+ import './index-122432cd.js';
21
+ import './Portal.js';
22
+ import './Scrollbar.js';
23
+ import './guid-8ddf77b3.js';
24
+
25
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .steps-holder{--circle-font-size:1.2rem;--font-size:1.2rem;--circle-size:2.6rem;--min-height:8.8rem;display:flex;-webkit-user-select:none;user-select:none}[data-gene-ui-version=\"2.11.0\"] .steps-holder.s-big{--circle-font-size:1.6rem;--font-size:1.4rem;--circle-size:3.6rem;--min-height:9.8rem}[data-gene-ui-version=\"2.11.0\"] .steps-holder.s-big .bc-icon-selected{font-size:var(--circle-size)}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-horizontal{align-items:center;min-height:var(--min-height);text-align:center;width:100%}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-horizontal>li:not(:first-child){margin:0 0 0 1rem}html[dir=rtl] .steps-holder.d-horizontal>li:not(:first-child){margin:0 1rem 0 0}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-horizontal .line{height:1px;width:100%}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-horizontal .line:before{height:inherit;width:0}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-horizontal .line.active:before{width:100%}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical{align-items:flex-start;flex-direction:column;height:100%}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical>li:not(:first-child){margin:.8rem 0 0}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical .line-box{display:flex;justify-content:center;width:var(--circle-size)}[data-gene-ui-version=\"2.11.0\"] .a-dots.steps-holder.d-vertical .line-box{width:1.9rem}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical .line{height:100%;min-height:3.4rem;width:1px}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical .line:before{height:0;width:inherit}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical .line.active:before{height:100%}[data-gene-ui-version=\"2.11.0\"] .steps-holder.d-vertical .step-texts{margin:0 0 0 1.5rem}html[dir=rtl] .steps-holder.d-vertical .step-texts{margin:0 1.5rem 0 0}[data-gene-ui-version=\"2.11.0\"] .steps-holder .line{background:rgba(var(--background-sc-rgb),.04)}[data-gene-ui-version=\"2.11.0\"] .steps-holder .line:before{background:var(--hero);content:\"\";display:block;transition:width .4s,height .4s}[data-gene-ui-version=\"2.11.0\"] .steps-holder.a-dots .line{background:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .steps-holder .s-success{--hero:var(--confirm);--hero-hover:var(--confirm-hover);--hero-sc:var(--confirm-sc);--hero-rgb:var(--confirm-rgb);--hero-sc-rgb:var(--confirm-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .steps-holder .s-fail{--hero:var(--danger);--hero-hover:var(--danger-hover);--hero-sc:var(--danger-sc);--hero-rgb:var(--danger-rgb);--hero-sc-rgb:var(--danger-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .step{align-items:center;display:flex;flex-shrink:0;font:600 var(--font-size)/1.8rem var(--font-family);position:relative}[data-gene-ui-version=\"2.11.0\"] .step.clickable{cursor:pointer}[data-gene-ui-version=\"2.11.0\"] .step.clickable .step-circle:before{border:1px solid var(--hero);border-radius:100%;bottom:-.4rem;content:\"\";display:block;left:-.4rem;position:absolute;right:-.4rem;top:-.4rem;transform:scale(0);transition:transform .4s,border-color .4s}[data-gene-ui-version=\"2.11.0\"] .s-initial.step.clickable .step-circle:before,[data-gene-ui-version=\"2.11.0\"] .steps-holder:not(.highlight-current) .s-current.step.clickable .step-circle:before{border-color:rgba(var(--background-sc-rgb),.06)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .step.clickable:hover .step-circle:before{transform:scale(1)}}[data-gene-ui-version=\"2.11.0\"] .step.clickable.s-activated .step-circle:before{transform:scale(1)}[data-gene-ui-version=\"2.11.0\"] .line-box{flex:auto}[data-gene-ui-version=\"2.11.0\"] .d-horizontal .step-label,[data-gene-ui-version=\"2.11.0\"] .d-horizontal .step-title{bottom:100%;left:50%;position:absolute;transform:translateX(-50%);white-space:nowrap;width:auto}[data-gene-ui-version=\"2.11.0\"] .d-horizontal .step-title{margin:0 0 1rem}[data-gene-ui-version=\"2.11.0\"] .d-horizontal .step-title:nth-last-child(2){bottom:auto;margin:1rem 0 0;top:100%}[data-gene-ui-version=\"2.11.0\"] .step-label{opacity:.5}[data-gene-ui-version=\"2.11.0\"] .d-horizontal .step-label{margin:0 0 1.6rem}[data-gene-ui-version=\"2.11.0\"] .step-texts{align-items:flex-start;display:flex;flex-direction:column;pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .step-texts.both{font-size:1.4rem}[data-gene-ui-version=\"2.11.0\"] .step-circle{align-items:center;background:rgba(var(--background-sc-rgb),.04);border-radius:100%;display:flex;font-size:var(--circle-font-size);height:var(--circle-size);justify-content:center;position:relative;transition:color .3s,background .3s;width:var(--circle-size)}[data-gene-ui-version=\"2.11.0\"] .highlight-current .s-current .step-circle,[data-gene-ui-version=\"2.11.0\"] .passed .step-circle,[data-gene-ui-version=\"2.11.0\"] .s-activated .step-circle{background:var(--hero);color:var(--hero-sc)}[data-gene-ui-version=\"2.11.0\"] .step-layer{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;transition:transform .4s;width:100%}[data-gene-ui-version=\"2.11.0\"] .passed .step-layer.layer-1,[data-gene-ui-version=\"2.11.0\"] .step-layer.layer-2{transform:scale(0)}[data-gene-ui-version=\"2.11.0\"] .passed .step-layer.layer-2{transform:scale(1)}[data-gene-ui-version=\"2.11.0\"] .step-dot{--size:1.9rem;--inner-size:0.9rem;align-items:center;display:flex;height:var(--size);justify-content:center;position:relative;width:var(--size)}[data-gene-ui-version=\"2.11.0\"] .view-normal .step-dot{--size:15px;--inner-size:7px}[data-gene-ui-version=\"2.11.0\"] .view-small .step-dot{--size:11px;--inner-size:5px}[data-gene-ui-version=\"2.11.0\"] .step-dot:after,[data-gene-ui-version=\"2.11.0\"] .step-dot:before{border-radius:100%;box-shadow:inset 0 0 0 .2rem var(--hero);content:\"\";display:block}[data-gene-ui-version=\"2.11.0\"] .step-dot:before{content:\"\";height:var(--inner-size);transition:box-shadow .3s;width:var(--inner-size)}[data-gene-ui-version=\"2.11.0\"] .passed .step-dot:before,[data-gene-ui-version=\"2.11.0\"] .s-activated .step-dot:before,[data-gene-ui-version=\"2.11.0\"] .s-current .step-dot:before{box-shadow:inset 0 0 0 .9rem var(--hero)}[data-gene-ui-version=\"2.11.0\"] .step-dot:after{height:100%;left:0;position:absolute;top:0;transform:scale(0);transition:transform .3s;width:100%}[data-gene-ui-version=\"2.11.0\"] .s-activated .step-dot:after,[data-gene-ui-version=\"2.11.0\"] .s-current .step-dot:after{transform:scale(1)}[data-gene-ui-version=\"2.11.0\"] .detailed-value-popover-container{padding:16px}";
26
+ styleInject(css_248z);
27
+
28
+ const positionMap = {
29
+ vertical: 'left',
30
+ horizontal: 'bottom'
31
+ };
32
+ function DetailedView(_ref) {
33
+ let {
34
+ content,
35
+ children,
36
+ direction
37
+ } = _ref;
38
+ const isHoveredOnContent = useRef(false);
39
+ const isHoveredOnStep = useRef(false);
40
+ const [isPopoverOpen, setIsPopoverOpen] = useState(false);
41
+ const closePopover = () => {
42
+ debounce(() => {
43
+ if (!isHoveredOnContent.current && !isHoveredOnStep.current) {
44
+ setIsPopoverOpen(false);
45
+ }
46
+ }, 250)();
47
+ };
48
+ const stepOnMouseEnterHandler = () => {
49
+ isHoveredOnStep.current = true;
50
+ setIsPopoverOpen(true);
51
+ };
52
+ const stepOnMouseLeaveHandler = () => {
53
+ isHoveredOnStep.current = false;
54
+ closePopover();
55
+ };
56
+ const contentOnMouseEnterHandler = () => isHoveredOnContent.current = true;
57
+ const contentOnMouseLeaveHandler = () => {
58
+ isHoveredOnContent.current = false;
59
+ closePopover();
60
+ };
61
+ return /*#__PURE__*/React__default.createElement(Popover, {
62
+ swipeable: true,
63
+ align: "center",
64
+ position: positionMap[direction],
65
+ isOpen: isPopoverOpen,
66
+ onClickOutside: () => setIsPopoverOpen(false),
67
+ extendTargetWidth: false,
68
+ onSwipedDown: () => setIsPopoverOpen(false),
69
+ Content: /*#__PURE__*/React__default.createElement("div", {
70
+ onMouseEnter: contentOnMouseEnterHandler,
71
+ onMouseLeave: contentOnMouseLeaveHandler,
72
+ className: "detailed-value-popover-container"
73
+ }, content)
74
+ }, /*#__PURE__*/React__default.createElement("div", {
75
+ onMouseEnter: stepOnMouseEnterHandler,
76
+ onMouseLeave: stepOnMouseLeaveHandler
77
+ }, children));
78
+ }
79
+
80
+ function WithTooltip(_ref) {
81
+ let {
82
+ tooltip,
83
+ children
84
+ } = _ref;
85
+ if (!tooltip) return children;
86
+ return /*#__PURE__*/React__default.createElement(Tooltip, {
87
+ title: tooltip
88
+ }, children);
89
+ }
90
+ function Step(_ref2) {
91
+ let {
92
+ title,
93
+ label,
94
+ onClick,
95
+ icon,
96
+ status,
97
+ appearance,
98
+ failColor,
99
+ successColor,
100
+ heroColor,
101
+ style,
102
+ extraLines,
103
+ stepsCount,
104
+ current,
105
+ tooltip,
106
+ direction,
107
+ detailedView,
108
+ __index
109
+ } = _ref2;
110
+ const stepBody = /*#__PURE__*/React__default.createElement("li", {
111
+ className: classnames('step', "s-".concat(status), {
112
+ clickable: !!onClick,
113
+ passed: status === 'fail' || status === 'success'
114
+ }),
115
+ onClick: onClick,
116
+ style: {
117
+ '--danger': failColor,
118
+ '--confirm': successColor,
119
+ '--hero': heroColor,
120
+ ...style
121
+ }
122
+ }, appearance === stepsConfig.appearance[1] ? /*#__PURE__*/React__default.createElement("div", {
123
+ className: "step-dot"
124
+ }) : /*#__PURE__*/React__default.createElement("div", {
125
+ className: "step-circle"
126
+ }, icon ? /*#__PURE__*/React__default.createElement(Icon, {
127
+ type: icon
128
+ }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
129
+ className: "step-layer layer-1"
130
+ }, __index), /*#__PURE__*/React__default.createElement("div", {
131
+ className: "step-layer layer-2"
132
+ }, /*#__PURE__*/React__default.createElement(Icon, {
133
+ type: status === 'fail' ? 'bc-icon-clear' : 'bc-icon-selected'
134
+ })))), /*#__PURE__*/React__default.createElement("div", {
135
+ className: classnames('step-texts', {
136
+ both: !!title && !!label
137
+ })
138
+ }, title && /*#__PURE__*/React__default.createElement("div", {
139
+ className: "step-title"
140
+ }, title), label && /*#__PURE__*/React__default.createElement("div", {
141
+ className: "step-label"
142
+ }, label)));
143
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, (__index !== 1 || extraLines) && /*#__PURE__*/React__default.createElement("li", {
144
+ className: "line-box"
145
+ }, /*#__PURE__*/React__default.createElement("div", {
146
+ className: classnames('line', "s-".concat(status), {
147
+ active: current >= __index
148
+ }),
149
+ style: {
150
+ '--danger': failColor,
151
+ '--confirm': successColor,
152
+ '--hero': heroColor
153
+ }
154
+ })), detailedView ? /*#__PURE__*/React__default.createElement(DetailedView, {
155
+ direction: direction,
156
+ content: detailedView
157
+ }, stepBody) : /*#__PURE__*/React__default.createElement(WithTooltip, {
158
+ tooltip: tooltip
159
+ }, stepBody), __index === stepsCount && extraLines && /*#__PURE__*/React__default.createElement("li", {
160
+ className: "line-box"
161
+ }, /*#__PURE__*/React__default.createElement("div", {
162
+ className: classnames('line', "s-".concat(status), {
163
+ active: current === stepsCount
164
+ }),
165
+ style: {
166
+ '--danger': failColor,
167
+ '--confirm': successColor,
168
+ '--hero': heroColor
169
+ }
170
+ })));
171
+ }
172
+ Step.propTypes = {
173
+ /**
174
+ * Title of Step
175
+ */
176
+ title: propTypesExports.string,
177
+ /**
178
+ * Label of Step
179
+ */
180
+ label: propTypesExports.string,
181
+ /**
182
+ * Tooltip of Step
183
+ */
184
+ tooltip: propTypesExports.string,
185
+ /**
186
+ * Fires an event on ExtendedInput change((event: Event) => void).
187
+ */
188
+ onClick: propTypesExports.func,
189
+ /**
190
+ * Icon for current step
191
+ */
192
+ icon: propTypesExports.string,
193
+ /**
194
+ * Current step status
195
+ */
196
+ status: propTypesExports.oneOf(stepsConfig.status),
197
+ /**
198
+ * View/style for step
199
+ */
200
+ appearance: propTypesExports.oneOf(stepsConfig.appearance),
201
+ /**
202
+ * style for step
203
+ */
204
+ style: propTypesExports.object,
205
+ /**
206
+ * Color for failed step
207
+ */
208
+ failColor: propTypesExports.string,
209
+ /**
210
+ * Color for success step
211
+ */
212
+ successColor: propTypesExports.string,
213
+ /**
214
+ * Default color for step
215
+ */
216
+ heroColor: propTypesExports.string
217
+ };
218
+ Step.defaultProps = {
219
+ appearance: stepsConfig.appearance[0]
220
+ };
221
+
222
+ function getStepStatus(current, index, statusProp) {
223
+ if (current > index) return 'success';
224
+ if (current < index) return 'initial';
225
+ return statusProp || 'current';
226
+ }
227
+ function Steps(_ref) {
228
+ let {
229
+ direction,
230
+ size,
231
+ appearance,
232
+ highlightCurrent,
233
+ extraLines,
234
+ children,
235
+ current,
236
+ status,
237
+ failColor,
238
+ successColor,
239
+ heroColor,
240
+ className,
241
+ ...rest
242
+ } = _ref;
243
+ return /*#__PURE__*/React__default.createElement("ul", _extends({
244
+ className: classnames('steps-holder', "s-".concat(size), "d-".concat(direction), "a-".concat(appearance), {
245
+ 'highlight-current': highlightCurrent
246
+ }, className),
247
+ style: {
248
+ '--danger': failColor,
249
+ '--confirm': successColor,
250
+ '--hero': heroColor
251
+ }
252
+ }, rest), React__default.Children.map(children, (child, i) => {
253
+ const stepStatus = child.props.status || getStepStatus(current, i, status);
254
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.cloneElement(child, {
255
+ __index: i + 1,
256
+ status: stepStatus,
257
+ appearance,
258
+ extraLines,
259
+ stepsCount: children.length,
260
+ current,
261
+ direction
262
+ }));
263
+ }));
264
+ }
265
+ Steps.propTypes = {
266
+ /**
267
+ * View of 'Steps'.
268
+ */
269
+ direction: propTypesExports.oneOf(stepsConfig.direction),
270
+ /**
271
+ * Size of 'Steps'.
272
+ */
273
+ size: propTypesExports.oneOf(stepsConfig.size),
274
+ /**
275
+ * View type of 'Steps'.
276
+ */
277
+ appearance: propTypesExports.oneOf(stepsConfig.appearance),
278
+ /**
279
+ * Turn on/off highlighted view of current step.
280
+ */
281
+ highlightCurrent: propTypesExports.bool,
282
+ /**
283
+ * Show/hide extra lines in 'Steps'.
284
+ */
285
+ extraLines: propTypesExports.bool,
286
+ /**
287
+ * The child or children of 'Steps' molecule
288
+ */
289
+ children: childrenOf([Step]),
290
+ /**
291
+ * Initial/current step
292
+ */
293
+ current: propTypesExports.number,
294
+ /**
295
+ * Status of current step
296
+ */
297
+ status: propTypesExports.oneOf(stepsConfig.status),
298
+ /**
299
+ * Additional classname
300
+ */
301
+ className: propTypesExports.string
302
+ };
303
+ Steps.defaultProps = {
304
+ direction: stepsConfig.direction[0],
305
+ size: stepsConfig.size[0],
306
+ appearance: stepsConfig.appearance[0],
307
+ highlightCurrent: false,
308
+ extraLines: false,
309
+ current: 0
310
+ };
311
+
312
+ export { Step, Steps };