@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.
- package/ActionableList.js +1761 -0
- package/AdvancedSearch.js +872 -0
- package/Alert.js +98 -0
- package/Avatar.js +77 -0
- package/Badge.js +76 -0
- package/Breadcrumb.js +128 -0
- package/BusyLoader.js +69 -0
- package/Button.js +130 -0
- package/CHANGELOG.md +424 -0
- package/Card.js +513 -0
- package/CardList.js +705 -0
- package/CellMeasurerCache-c11cec83.js +229 -0
- package/Charts.js +99 -0
- package/Checkbox.js +232 -0
- package/CheckboxGroup.js +206 -0
- package/CheckboxGroupWithSearch.js +279 -0
- package/Collapse.js +196 -0
- package/ColorPicker.js +210 -0
- package/ComboBox.js +99 -0
- package/Counter.js +99 -0
- package/DateFilter.js +179 -0
- package/DatePicker.js +1231 -0
- package/DatePickerInput.js +30 -0
- package/Divider.js +56 -0
- package/Drawer.js +264 -0
- package/Dropdown.js +99 -0
- package/Editor.js +22965 -0
- package/Empty.js +132 -0
- package/ExtendedInput.js +578 -0
- package/Form.js +116 -0
- package/FormContainer.js +189 -0
- package/FormableCheckbox.js +27 -0
- package/FormableDatePicker.js +39 -0
- package/FormableDropdown.js +105 -0
- package/FormableEditor.js +24 -0
- package/FormableHOC-21051057.js +83 -0
- package/FormableMultiSelectDropdown.js +105 -0
- package/FormableNumberInput.js +31 -0
- package/FormableRadio.js +23 -0
- package/FormableSwitcher.js +23 -0
- package/FormableTextInput.js +31 -0
- package/FormableUploader.js +40 -0
- package/GeneUIProvider.js +256 -0
- package/Grid.js +166 -0
- package/Holder.js +99 -0
- package/Icon.js +63 -0
- package/Image.js +130 -0
- package/ImagePreview.js +99 -0
- package/KeyValue.js +63 -0
- package/Label.js +58 -0
- package/LinkButton.js +104 -0
- package/Menu.js +277 -0
- package/MobileNavigation.js +95 -0
- package/MobilePopup.js +180 -0
- package/Modal.js +251 -0
- package/ModuleTitle.js +99 -0
- package/NavigationMenu.js +212 -0
- package/Notification.js +120 -0
- package/Option.js +186 -0
- package/Overlay.js +99 -0
- package/Overspread.js +343 -0
- package/Pagination.js +258 -0
- package/Paper.js +97 -0
- package/Popover-f4d1cac0.js +411 -0
- package/Popover.js +20 -0
- package/PopoverV2.js +19 -0
- package/Portal.js +58 -0
- package/Products.js +115 -0
- package/Profile.js +99 -0
- package/Progress.js +200 -0
- package/QRCode.js +816 -0
- package/README.md +90 -0
- package/Radio.js +152 -0
- package/RadioGroup.js +105 -0
- package/Range.js +14 -0
- package/RichEditor-b7928765.js +228 -0
- package/RichEditor.js +13 -0
- package/Scrollbar.js +1587 -0
- package/Search.js +72 -0
- package/SearchWithDropdown.js +195 -0
- package/Section.js +62 -0
- package/SkeletonLoader.js +82 -0
- package/Slider.js +256 -0
- package/Status.js +104 -0
- package/Steps.js +312 -0
- package/SuggestionList.js +15 -0
- package/Switcher.js +194 -0
- package/Table.js +102 -0
- package/TableCompositions.js +17028 -0
- package/Tabs.js +236 -0
- package/Tag.js +103 -0
- package/TextLink.js +22 -0
- package/Textarea.js +239 -0
- package/Time.js +63 -0
- package/TimePicker.js +99 -0
- package/Timeline.js +114 -0
- package/Title.js +66 -0
- package/Toaster.js +116 -0
- package/Tooltip.js +157 -0
- package/TransferList.js +502 -0
- package/Uploader.js +32 -0
- package/ValidatableCheckbox.js +126 -0
- package/ValidatableDatePicker.js +312 -0
- package/ValidatableDropdown.js +99 -0
- package/ValidatableElements.js +99 -0
- package/ValidatableMultiSelectDropdown.js +99 -0
- package/ValidatableNumberInput.js +194 -0
- package/ValidatableRadio.js +117 -0
- package/ValidatableSwitcher.js +94 -0
- package/ValidatableTextInput.js +164 -0
- package/ValidatableTimeInput.js +171 -0
- package/ValidatableUploader.js +94 -0
- package/Widget.js +99 -0
- package/_commonjsHelpers-24198af3.js +35 -0
- package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
- package/checkTimeValidation-e56771be.js +16 -0
- package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
- package/clsx.m-2bb6df4b.js +3 -0
- package/configs-91c86664.js +96 -0
- package/configs.js +131 -0
- package/dateValidation-67caec66.js +225 -0
- package/debounce-4419bc2f.js +17 -0
- package/globalStyling-9c60a159.js +4 -0
- package/guid-8ddf77b3.js +16 -0
- package/index-00fe8887.js +193 -0
- package/index-0cf65939.js +30991 -0
- package/index-122432cd.js +270 -0
- package/index-262edd7a.js +77 -0
- package/index-5cea9a7d.js +407 -0
- package/index-5e722d91.js +867 -0
- package/index-67f4d4d1.js +6568 -0
- package/index-6ff23041.js +66 -0
- package/index-702bf24a.js +1938 -0
- package/index-a4635754.js +329 -0
- package/index-a59530cd.js +4 -0
- package/index-ac59cb10.js +169 -0
- package/index-b7a33c58.js +11 -0
- package/index-d9e8a888.js +987 -0
- package/index-e0af0caf.js +1182 -0
- package/index-e8776f3d.js +807 -0
- package/index.js +128 -0
- package/localization-4ba17032.js +46 -0
- package/objectWithoutPropertiesLoose-299691d8.js +78 -0
- package/package.json +190 -0
- package/rangeAndSlider-20599da4.js +8839 -0
- package/react-beautiful-dnd.esm-38c37304.js +10117 -0
- package/style-inject.es-746bb8ed.js +28 -0
- package/useClickOutside-5183e396.js +25 -0
- package/useDeviceType-dd51db38.js +15 -0
- package/useEllipsisDetection-ef536015.js +23 -0
- package/useKeyDown-38102ae7.js +21 -0
- package/useMount-6fef51a5.js +9 -0
- package/useWidth-9f4647f8.js +15 -0
- package/useWindowSize-80369d76.js +33 -0
package/Alert.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
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 { s as screenTypes } from './configs-91c86664.js';
|
|
6
|
+
import './dateValidation-67caec66.js';
|
|
7
|
+
import 'react-dom';
|
|
8
|
+
import { u as useDeviceType } from './useDeviceType-dd51db38.js';
|
|
9
|
+
import Icon from './Icon.js';
|
|
10
|
+
import './globalStyling-9c60a159.js';
|
|
11
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
12
|
+
import './_commonjsHelpers-24198af3.js';
|
|
13
|
+
import './useWindowSize-80369d76.js';
|
|
14
|
+
|
|
15
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .alert-holder{background:var(--background);border-radius:.6rem;width:100%;word-break:break-word}[data-gene-ui-version=\"2.11.0\"] .toaster-holder.top .alert-holder.mobile-view:first-child,[data-gene-ui-version=\"2.11.0\"] .toaster-holder.top .alert-holder.mobile-view:first-child .alert-box{border-top-left-radius:0;border-top-right-radius:0}[data-gene-ui-version=\"2.11.0\"] .toaster-holder.bottom .alert-holder.mobile-view:last-child,[data-gene-ui-version=\"2.11.0\"] .toaster-holder.bottom .alert-holder.mobile-view:last-child .alert-box{border-bottom-left-radius:0;border-bottom-right-radius:0}[data-gene-ui-version=\"2.11.0\"] .alert-box{background:rgba(var(--confirm-rgb),.1);border:1px solid var(--confirm);border-radius:.6rem;display:flex;min-height:4.2rem;padding:.8rem .7rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .alert-box.type-info{--confirm:var(--hero);--confirm-hover:var(--hero-hover);--confirm-sc:var(--hero-sc);--confirm-rgb:var(--hero-rgb);--confirm-sc-rgb:var(--hero-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .alert-box.type-warning{--confirm:var(--warning);--confirm-hover:var(--warning-hover);--confirm-sc:var(--warning-sc);--confirm-rgb:var(--warning-rgb);--confirm-sc-rgb:var(--warning-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .alert-box.type-error{--confirm:var(--danger);--confirm-hover:var(--danger-hover);--confirm-sc:var(--danger-sc);--confirm-rgb:var(--danger-rgb);--confirm-sc-rgb:var(--danger-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .alert-box.type-note{--confirm:var(--note);--confirm-hover:var(--note-hover);--confirm-sc:var(--note-sc);--confirm-rgb:var(--note-rgb);--confirm-sc-rgb:var(--note-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .alert-box.type-message{--confirm:var(--message);--confirm-hover:var(--message-hover);--confirm-sc:var(--message-sc);--confirm-rgb:var(--message-rgb);--confirm-sc-rgb:var(--message-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .alert-holder.mobile-view .alert-box{border-bottom-color:rgba(var(--background-sc-rgb),.1);border-width:0 0 1px}[data-gene-ui-version=\"2.11.0\"] .toaster-holder:not(.top,.bottom,.center) .alert-holder.mobile-view .alert-box{border-radius:0}[data-gene-ui-version=\"2.11.0\"] .alert-box>li{flex-shrink:0;padding:0 .7rem}[data-gene-ui-version=\"2.11.0\"] .alert-box>li.ab-c-c{align-self:center;flex:auto;margin:.4rem 0}[data-gene-ui-version=\"2.11.0\"] .alert-box>li.ab-bc-icon-c{max-width:100%}[data-gene-ui-version=\"2.11.0\"] .alert-box>li a,[data-gene-ui-version=\"2.11.0\"] .alert-box>li.ab-bc-icon-c{color:var(--confirm)}[data-gene-ui-version=\"2.11.0\"] .alert-box .bc-icon-close{cursor:pointer}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .alert-box .bc-icon-close:hover{color:var(--confirm)}}[data-gene-ui-version=\"2.11.0\"] .alert-box a{color:var(--hero);font-weight:600}[data-gene-ui-version=\"2.11.0\"] .alert-box-title{font:600 1.4rem/1.8rem var(--font-family)}[data-gene-ui-version=\"2.11.0\"] .alert-text{font:600 1.2rem/1.42 var(--font-family);margin:.8rem 0 0}";
|
|
16
|
+
styleInject(css_248z);
|
|
17
|
+
|
|
18
|
+
const alertTypes = ['success', 'info', 'warning', 'error', 'note', 'message'];
|
|
19
|
+
function Alert(_ref) {
|
|
20
|
+
let {
|
|
21
|
+
type,
|
|
22
|
+
title,
|
|
23
|
+
onClose,
|
|
24
|
+
message,
|
|
25
|
+
screenType,
|
|
26
|
+
iconProps,
|
|
27
|
+
swapIcon,
|
|
28
|
+
className,
|
|
29
|
+
...rest
|
|
30
|
+
} = _ref;
|
|
31
|
+
const {
|
|
32
|
+
isMobile
|
|
33
|
+
} = useDeviceType(screenType);
|
|
34
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({
|
|
35
|
+
className: classnames('alert-holder', {
|
|
36
|
+
'mobile-view': isMobile
|
|
37
|
+
}, className)
|
|
38
|
+
}, rest), /*#__PURE__*/React__default.createElement("ul", {
|
|
39
|
+
className: classnames('alert-box', "type-".concat(type))
|
|
40
|
+
}, (swapIcon || iconProps) && /*#__PURE__*/React__default.createElement("li", {
|
|
41
|
+
className: "ab-bc-icon-c"
|
|
42
|
+
}, swapIcon || /*#__PURE__*/React__default.createElement(Icon, {
|
|
43
|
+
type: "bc-icon-".concat(type === 'warning' ? 'info' : type).concat(iconProps.isFilled ? '-fill' : '')
|
|
44
|
+
})), /*#__PURE__*/React__default.createElement("li", {
|
|
45
|
+
className: "ab-c-c"
|
|
46
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
47
|
+
className: "alert-box-title"
|
|
48
|
+
}, title), message && /*#__PURE__*/React__default.createElement("div", {
|
|
49
|
+
className: "alert-text"
|
|
50
|
+
}, message)), !!onClose && /*#__PURE__*/React__default.createElement("li", {
|
|
51
|
+
className: "ab-action-c",
|
|
52
|
+
onClick: onClose
|
|
53
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
|
54
|
+
type: "bc-icon-close"
|
|
55
|
+
}))));
|
|
56
|
+
}
|
|
57
|
+
Alert.propTypes = {
|
|
58
|
+
/**
|
|
59
|
+
* Alert type is for specifying information message to be delivered. Also a corresponding "Icon" atom will be displayed
|
|
60
|
+
*/
|
|
61
|
+
type: propTypesExports.oneOf(alertTypes),
|
|
62
|
+
/**
|
|
63
|
+
* Main field to describe alert information. Any valid React node
|
|
64
|
+
*/
|
|
65
|
+
title: propTypesExports.node.isRequired,
|
|
66
|
+
/**
|
|
67
|
+
* Additional classname
|
|
68
|
+
*/
|
|
69
|
+
className: propTypesExports.string,
|
|
70
|
+
/**
|
|
71
|
+
* Use this field for describing information more verbose. Any valid React node
|
|
72
|
+
*/
|
|
73
|
+
message: propTypesExports.node,
|
|
74
|
+
/**
|
|
75
|
+
* The switch between mobile and desktop version of Alert will be applied automatically, when the prop is not specified.
|
|
76
|
+
* When the prop is present it must be changed from outside.
|
|
77
|
+
*/
|
|
78
|
+
screenType: propTypesExports.oneOf(screenTypes),
|
|
79
|
+
/**
|
|
80
|
+
* When function is passed an "Icon" atom("type": "bc-icon-close") will be displayed((event: Event) => void).
|
|
81
|
+
*/
|
|
82
|
+
onClose: propTypesExports.func,
|
|
83
|
+
/**
|
|
84
|
+
* Same as "Icon" atom props
|
|
85
|
+
*/
|
|
86
|
+
iconProps: propTypesExports.shape({
|
|
87
|
+
...Icon.propTypes
|
|
88
|
+
}),
|
|
89
|
+
/**
|
|
90
|
+
* Use this prop for replace main "Icon". Note that when the prop is specified "type" prop will not work(will be overlooked).
|
|
91
|
+
*/
|
|
92
|
+
swapIcon: propTypesExports.node
|
|
93
|
+
};
|
|
94
|
+
Alert.defaultProps = {
|
|
95
|
+
type: 'info'
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export { alertTypes, Alert as default };
|
package/Avatar.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { p as propTypesExports } from './index-e0af0caf.js';
|
|
3
|
+
import { c as classnames } from './index-6ff23041.js';
|
|
4
|
+
import { g as getInitials, n as noop } from './index-ac59cb10.js';
|
|
5
|
+
import './globalStyling-9c60a159.js';
|
|
6
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
7
|
+
import './dateValidation-67caec66.js';
|
|
8
|
+
import './_commonjsHelpers-24198af3.js';
|
|
9
|
+
import 'react-dom';
|
|
10
|
+
|
|
11
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .user-avatar-c{--size:2.6rem;background:var(--background-sc) no-repeat 50% 50%/cover;border-radius:.3rem;box-shadow:0 0 0 0 rgba(var(--background-sc-rgb),.2);color:var(--background);font:600 calc(var(--size)/2.3)/var(--size) var(--font-family);height:var(--size);text-align:center;transition:box-shadow .3s;width:var(--size)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.clickable{cursor:pointer}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.clickable:hover{box-shadow:0 0 0 .3rem rgba(var(--background-sc-rgb),.2)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c:not(.color-default){background:var(--background) no-repeat 50% 50%/cover;box-shadow:0 0 0 0 rgba(var(--background-rgb),.2);color:var(--background-sc)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c:not(.color-default).clickable:hover{box-shadow:0 0 0 .3rem rgba(var(--background-rgb),.2)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.color-green{--background:var(--confirm);--background-hover:var(--confirm-hover);--background-sc:var(--confirm-sc);--background-rgb:var(--confirm-rgb);--background-sc-rgb:var(--confirm-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.color-red{--background:var(--danger);--background-hover:var(--danger-hover);--background-sc:var(--danger-sc);--background-rgb:var(--danger-rgb);--background-sc-rgb:var(--danger-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.shape-circle{border-radius:100%}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.text-small{font-size:calc(var(--size)/2.5)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c[class*=bc-icon-]{font-size:calc(var(--size)/2);line-height:var(--size)}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.size-small{--size:2.2rem}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.size-medium{--size:3.6rem}[data-gene-ui-version=\"2.11.0\"] .user-avatar-c.size-big{--size:4.6rem}";
|
|
12
|
+
styleInject(css_248z);
|
|
13
|
+
|
|
14
|
+
function Avatar(_ref) {
|
|
15
|
+
let {
|
|
16
|
+
src,
|
|
17
|
+
icon,
|
|
18
|
+
size,
|
|
19
|
+
color,
|
|
20
|
+
shape,
|
|
21
|
+
onClick,
|
|
22
|
+
children
|
|
23
|
+
} = _ref;
|
|
24
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
25
|
+
className: classnames('user-avatar-c', {
|
|
26
|
+
["size-".concat(size)]: size,
|
|
27
|
+
["color-".concat(color)]: color,
|
|
28
|
+
["shape-".concat(shape)]: shape,
|
|
29
|
+
[icon]: !src && icon,
|
|
30
|
+
'text-small': typeof children === 'string' && children.length > 1,
|
|
31
|
+
clickable: !!onClick
|
|
32
|
+
}),
|
|
33
|
+
style: {
|
|
34
|
+
backgroundImage: src ? "url(".concat(src, ")") : ''
|
|
35
|
+
},
|
|
36
|
+
onClick: onClick
|
|
37
|
+
}, !src && !icon && children && getInitials(children));
|
|
38
|
+
}
|
|
39
|
+
Avatar.propTypes = {
|
|
40
|
+
/**
|
|
41
|
+
* Background image source
|
|
42
|
+
*/
|
|
43
|
+
src: propTypesExports.string,
|
|
44
|
+
/**
|
|
45
|
+
* The property will show icon. This property will work when "src" is not specified.
|
|
46
|
+
*/
|
|
47
|
+
icon: propTypesExports.string,
|
|
48
|
+
/**
|
|
49
|
+
* The property will show first two letters in upper case. This will work when "src" or "icon" are not specified.
|
|
50
|
+
*/
|
|
51
|
+
children: propTypesExports.string,
|
|
52
|
+
/**
|
|
53
|
+
* Avatar size
|
|
54
|
+
*/
|
|
55
|
+
size: propTypesExports.oneOf(['small', 'default', 'medium', 'big']),
|
|
56
|
+
/**
|
|
57
|
+
* Avatar color
|
|
58
|
+
*/
|
|
59
|
+
color: propTypesExports.oneOf(['default', 'green', 'red']),
|
|
60
|
+
/**
|
|
61
|
+
* Avatar shape
|
|
62
|
+
*/
|
|
63
|
+
shape: propTypesExports.oneOf(['circle', 'square']),
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* Handle click event on avatar component((event: Event) => void 0).
|
|
67
|
+
*/
|
|
68
|
+
onClick: propTypesExports.func
|
|
69
|
+
};
|
|
70
|
+
Avatar.defaultProps = {
|
|
71
|
+
onClick: noop,
|
|
72
|
+
size: 'default',
|
|
73
|
+
color: 'default',
|
|
74
|
+
shape: 'circle'
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export { Avatar as default };
|
package/Badge.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
|
|
2
|
+
import React__default, { useMemo } from 'react';
|
|
3
|
+
import { p as propTypesExports } from './index-e0af0caf.js';
|
|
4
|
+
import { c as classnames } from './index-6ff23041.js';
|
|
5
|
+
import './globalStyling-9c60a159.js';
|
|
6
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
7
|
+
import { badgeConfig } from './configs.js';
|
|
8
|
+
|
|
9
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .badge{max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;position:relative}[data-gene-ui-version=\"2.11.0\"] .badge__content{background:var(--danger);border-radius:3rem;color:var(--danger-sc);display:block;font:600 1rem/1.6rem var(--font-family);min-width:1.6rem;padding:0 .5rem;text-align:center}[data-gene-ui-version=\"2.11.0\"] .badge__content-children{position:absolute;top:-.8rem}html:not([dir=rtl]) .badge__content-children{right:-.8rem}html[dir=rtl] .badge__content-children{left:-.8rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-dot{height:1rem;min-height:1rem;min-width:1rem;top:-.5rem;width:1rem}html:not([dir=rtl]) .badge__content-dot{right:-.5rem}html[dir=rtl] .badge__content-dot{left:-.5rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-medium{line-height:1.8rem;min-height:1.8rem;min-width:1.8rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-big{line-height:2.2rem;min-height:2.2rem;min-width:2.2rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-huge{font-size:1.3rem;line-height:2.6rem;min-height:2.6rem;min-width:2.6rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-big,[data-gene-ui-version=\"2.11.0\"] .badge__content-huge,[data-gene-ui-version=\"2.11.0\"] .badge__content-medium{top:-1rem}html:not([dir=rtl]) .badge__content-big,html:not([dir=rtl]) .badge__content-huge,html:not([dir=rtl]) .badge__content-medium{right:-1rem}html[dir=rtl] .badge__content-big,html[dir=rtl] .badge__content-huge,html[dir=rtl] .badge__content-medium{left:-1rem}[data-gene-ui-version=\"2.11.0\"] .badge__content-primary{background:var(--hero)}";
|
|
10
|
+
styleInject(css_248z);
|
|
11
|
+
|
|
12
|
+
const getShowValue = (count, maxCount) => {
|
|
13
|
+
if (count !== 0 && !count) return null;
|
|
14
|
+
if (!maxCount) return count;
|
|
15
|
+
return count > maxCount ? "".concat(maxCount, "+") : count;
|
|
16
|
+
};
|
|
17
|
+
function Badge(_ref) {
|
|
18
|
+
let {
|
|
19
|
+
children,
|
|
20
|
+
size,
|
|
21
|
+
color,
|
|
22
|
+
count,
|
|
23
|
+
dot,
|
|
24
|
+
maxCount,
|
|
25
|
+
className,
|
|
26
|
+
...restProps
|
|
27
|
+
} = _ref;
|
|
28
|
+
const show = useMemo(() => dot ? '' : getShowValue(count, maxCount), [dot, count, maxCount]);
|
|
29
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({
|
|
30
|
+
className: "badge"
|
|
31
|
+
}, restProps), show !== null && /*#__PURE__*/React__default.createElement("span", {
|
|
32
|
+
className: classnames('badge__content', className, {
|
|
33
|
+
["badge__content-".concat(size)]: size,
|
|
34
|
+
["badge__content-".concat(color)]: color,
|
|
35
|
+
["badge__content-dot"]: dot,
|
|
36
|
+
["badge__content-children"]: children
|
|
37
|
+
})
|
|
38
|
+
}, show), children);
|
|
39
|
+
}
|
|
40
|
+
Badge.propTypes = {
|
|
41
|
+
/**
|
|
42
|
+
* Any valid React node
|
|
43
|
+
*/
|
|
44
|
+
children: propTypesExports.node,
|
|
45
|
+
/**
|
|
46
|
+
* Any custom class name
|
|
47
|
+
*/
|
|
48
|
+
className: propTypesExports.string,
|
|
49
|
+
/**
|
|
50
|
+
* Badge size
|
|
51
|
+
*/
|
|
52
|
+
size: propTypesExports.oneOf(badgeConfig.size),
|
|
53
|
+
/**
|
|
54
|
+
* Badge color
|
|
55
|
+
*/
|
|
56
|
+
color: propTypesExports.oneOf(badgeConfig.color),
|
|
57
|
+
/**
|
|
58
|
+
* Shows the specified number on the badge
|
|
59
|
+
*/
|
|
60
|
+
count: propTypesExports.number,
|
|
61
|
+
/**
|
|
62
|
+
* Set this property to have only dot instead of number
|
|
63
|
+
*/
|
|
64
|
+
dot: propTypesExports.bool,
|
|
65
|
+
/**
|
|
66
|
+
* When the "count" is greater than "maxCount" Badge will show "maxCount" value and "+"
|
|
67
|
+
*/
|
|
68
|
+
maxCount: propTypesExports.number
|
|
69
|
+
};
|
|
70
|
+
Badge.defaultProps = {
|
|
71
|
+
dot: false,
|
|
72
|
+
size: badgeConfig.size[0],
|
|
73
|
+
color: badgeConfig.color[0]
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { Badge as default };
|
package/Breadcrumb.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
|
|
2
|
+
import React__default, { useState, useCallback, Fragment } from 'react';
|
|
3
|
+
import { p as propTypesExports } from './index-e0af0caf.js';
|
|
4
|
+
import { c as classnames } from './index-6ff23041.js';
|
|
5
|
+
import { n as noop } from './index-ac59cb10.js';
|
|
6
|
+
import Button from './Button.js';
|
|
7
|
+
import { P as Popover } from './index-a4635754.js';
|
|
8
|
+
import Icon from './Icon.js';
|
|
9
|
+
import Menu from './Menu.js';
|
|
10
|
+
import './globalStyling-9c60a159.js';
|
|
11
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
12
|
+
import './dateValidation-67caec66.js';
|
|
13
|
+
import './_commonjsHelpers-24198af3.js';
|
|
14
|
+
import 'react-dom';
|
|
15
|
+
import './Popover-f4d1cac0.js';
|
|
16
|
+
import './index-122432cd.js';
|
|
17
|
+
import './useDeviceType-dd51db38.js';
|
|
18
|
+
import './configs-91c86664.js';
|
|
19
|
+
import './useWindowSize-80369d76.js';
|
|
20
|
+
import './GeneUIProvider.js';
|
|
21
|
+
import './Portal.js';
|
|
22
|
+
import './Scrollbar.js';
|
|
23
|
+
import './guid-8ddf77b3.js';
|
|
24
|
+
import './Option.js';
|
|
25
|
+
import './useEllipsisDetection-ef536015.js';
|
|
26
|
+
import './Tooltip.js';
|
|
27
|
+
|
|
28
|
+
function BreadcrumbItem(_ref) {
|
|
29
|
+
let {
|
|
30
|
+
data,
|
|
31
|
+
active,
|
|
32
|
+
onClick
|
|
33
|
+
} = _ref;
|
|
34
|
+
return /*#__PURE__*/React__default.createElement("button", {
|
|
35
|
+
onClick: onClick,
|
|
36
|
+
className: classnames('breadcrumbs-link', {
|
|
37
|
+
active
|
|
38
|
+
})
|
|
39
|
+
}, data.title);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .bread-crumbs-holder{align-items:center;display:flex;font-weight:600;justify-content:flex-start;min-height:3.6rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .bread-crumbs-holder>*+:not(button){margin:0 0 0 1rem}html[dir=rtl] .bread-crumbs-holder>*+:not(button){margin:0 1rem 0 0}[data-gene-ui-version=\"2.11.0\"] .bread-crumbs-holder>button{margin:0 .4rem}[data-gene-ui-version=\"2.11.0\"] .bread-crumbs-holder>button+.icon,html[dir=rtl] .bread-crumbs-holder>button+.icon{margin:0}[data-gene-ui-version=\"2.11.0\"] .breadcrumbs-link{color:inherit;cursor:pointer}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .breadcrumbs-link:hover{color:var(--hero)}}[data-gene-ui-version=\"2.11.0\"] .breadcrumbs-link.active{color:var(--hero)}";
|
|
43
|
+
styleInject(css_248z);
|
|
44
|
+
|
|
45
|
+
function Breadcrumb(_ref) {
|
|
46
|
+
let {
|
|
47
|
+
data,
|
|
48
|
+
onClick,
|
|
49
|
+
collapsed,
|
|
50
|
+
className,
|
|
51
|
+
separator,
|
|
52
|
+
...restProps
|
|
53
|
+
} = _ref;
|
|
54
|
+
const [isPopoverOpen, setIsPopoverOpen] = useState(false);
|
|
55
|
+
const [firstItem, ...others] = data;
|
|
56
|
+
const handlePopoverItemClick = useCallback((_, item) => {
|
|
57
|
+
onClick(item);
|
|
58
|
+
setIsPopoverOpen(false);
|
|
59
|
+
}, [onClick]);
|
|
60
|
+
const handlePopoverToggle = useCallback(() => {
|
|
61
|
+
setIsPopoverOpen(prev => !prev);
|
|
62
|
+
}, []);
|
|
63
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({
|
|
64
|
+
className: classnames('bread-crumbs-holder', className)
|
|
65
|
+
}, restProps), collapsed && data.length > 4 ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BreadcrumbItem, {
|
|
66
|
+
onClick: () => onClick(firstItem),
|
|
67
|
+
data: firstItem
|
|
68
|
+
}), separator, /*#__PURE__*/React__default.createElement(Popover, {
|
|
69
|
+
isOpen: isPopoverOpen,
|
|
70
|
+
align: "start",
|
|
71
|
+
extendTargetWidth: false,
|
|
72
|
+
Content: /*#__PURE__*/React__default.createElement(Menu, {
|
|
73
|
+
onSelect: handlePopoverItemClick,
|
|
74
|
+
data: others.slice(0, -2)
|
|
75
|
+
})
|
|
76
|
+
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
77
|
+
onClick: handlePopoverToggle,
|
|
78
|
+
icon: "bc-icon-more-horizontal",
|
|
79
|
+
appearance: "minimal",
|
|
80
|
+
color: "default"
|
|
81
|
+
})), separator, others.slice(-2).map((item, i) => /*#__PURE__*/React__default.createElement(Fragment, {
|
|
82
|
+
key: item.slug
|
|
83
|
+
}, /*#__PURE__*/React__default.createElement(BreadcrumbItem, {
|
|
84
|
+
onClick: () => onClick(item),
|
|
85
|
+
active: i === 1,
|
|
86
|
+
key: item.slug,
|
|
87
|
+
data: item
|
|
88
|
+
}), i !== 1 && separator))) : data.map((item, i) => /*#__PURE__*/React__default.createElement(Fragment, {
|
|
89
|
+
key: item.slug
|
|
90
|
+
}, /*#__PURE__*/React__default.createElement(BreadcrumbItem, {
|
|
91
|
+
onClick: () => onClick(item),
|
|
92
|
+
active: data.length - 1 === i,
|
|
93
|
+
data: item
|
|
94
|
+
}), data.length - 1 !== i && separator)));
|
|
95
|
+
}
|
|
96
|
+
Breadcrumb.propTypes = {
|
|
97
|
+
/**
|
|
98
|
+
* Data items to display
|
|
99
|
+
*/
|
|
100
|
+
data: propTypesExports.arrayOf(propTypesExports.shape({
|
|
101
|
+
title: propTypesExports.node.isRequired
|
|
102
|
+
})).isRequired,
|
|
103
|
+
/**
|
|
104
|
+
* Additional className
|
|
105
|
+
*/
|
|
106
|
+
className: propTypesExports.string,
|
|
107
|
+
/**
|
|
108
|
+
* Breadcrumbs will render collapsed view when "data" length is greater than 4, when set to "true"
|
|
109
|
+
*/
|
|
110
|
+
collapsed: propTypesExports.bool,
|
|
111
|
+
/**
|
|
112
|
+
* Fires an event on breadcrumb item click((item: data[item] => void))
|
|
113
|
+
*/
|
|
114
|
+
onClick: propTypesExports.func,
|
|
115
|
+
/**
|
|
116
|
+
* Use this prop to define the middle component between breadcrumb items.
|
|
117
|
+
*/
|
|
118
|
+
separator: propTypesExports.node
|
|
119
|
+
};
|
|
120
|
+
Breadcrumb.defaultProps = {
|
|
121
|
+
collapsed: false,
|
|
122
|
+
onClick: noop,
|
|
123
|
+
separator: /*#__PURE__*/React__default.createElement(Icon, {
|
|
124
|
+
type: "bc-icon-arrow-right"
|
|
125
|
+
})
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export { Breadcrumb as default };
|
package/BusyLoader.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { p as propTypesExports } from './index-e0af0caf.js';
|
|
3
|
+
import { c as classnames } from './index-6ff23041.js';
|
|
4
|
+
import Icon from './Icon.js';
|
|
5
|
+
import './globalStyling-9c60a159.js';
|
|
6
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
7
|
+
import './_rollupPluginBabelHelpers-e8fb2e5c.js';
|
|
8
|
+
|
|
9
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .loader-holder{align-items:center;color:var(--hero);display:flex;flex-direction:column;margin:auto;position:relative;text-align:center}[data-gene-ui-version=\"2.11.0\"] .loader-holder.p-static{margin:6rem}[data-gene-ui-version=\"2.11.0\"] .loader-holder.p-absolute{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}[data-gene-ui-version=\"2.11.0\"] .loader-holder .s-medium{font-size:2.8rem}[data-gene-ui-version=\"2.11.0\"] .loader-holder .s-big{font-size:5.4rem}[data-gene-ui-version=\"2.11.0\"] .loader-text{font:600 1.6rem/2rem var(--font-family);margin:1rem 0 0}[data-gene-ui-version=\"2.11.0\"] .bubble-loader{animation:sk-rotate 2s linear infinite;height:6.6rem;position:relative;width:6.6rem}@keyframes sk-rotate{to{transform:rotate(1turn)}}[data-gene-ui-version=\"2.11.0\"] .bubble-loader .dot{animation:sk-bounce 2s ease-in-out infinite;background:var(--hero);border-radius:100%;height:60%;position:absolute;top:0;width:60%}@keyframes sk-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}[data-gene-ui-version=\"2.11.0\"] .bubble-loader .dot2{animation-delay:-1s;bottom:0;top:auto}[data-gene-ui-version=\"2.11.0\"] .bar-loader{height:.6rem;left:0;overflow:hidden;position:fixed;top:calc(var(--header-height, .6rem) - .6rem);width:100%}[data-gene-ui-version=\"2.11.0\"] .bar-loader:before{animation:bar-loader .8s linear infinite;background:linear-gradient(270deg,#7eb8ff 30%,#8d14e6 50%,#7eb8ff 70%) no-repeat 50% 50%/100vw .6rem;content:\"\";display:block;height:100%;left:50%;max-width:0;opacity:0;overflow:hidden;position:absolute;top:0;transform:translateX(-50%);width:100%}@keyframes bar-loader{0%,to{opacity:0}10%,90%{opacity:1}0%{max-width:0}to{max-width:100%}}";
|
|
10
|
+
styleInject(css_248z);
|
|
11
|
+
|
|
12
|
+
function BubbleLoader() {
|
|
13
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
14
|
+
className: "bubble-loader"
|
|
15
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
16
|
+
className: "dot dot1"
|
|
17
|
+
}), /*#__PURE__*/React__default.createElement("div", {
|
|
18
|
+
className: "dot dot2"
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
function BusyLoader(props) {
|
|
22
|
+
const {
|
|
23
|
+
type,
|
|
24
|
+
isBusy,
|
|
25
|
+
children,
|
|
26
|
+
className,
|
|
27
|
+
loadingText,
|
|
28
|
+
spinnerSize
|
|
29
|
+
} = props;
|
|
30
|
+
return type === 'bar' ? /*#__PURE__*/React__default.createElement("div", {
|
|
31
|
+
className: "bar-loader"
|
|
32
|
+
}) : isBusy ? /*#__PURE__*/React__default.createElement("div", {
|
|
33
|
+
className: classnames('loader-holder', className)
|
|
34
|
+
}, type === 'spinner' ? /*#__PURE__*/React__default.createElement(Icon, {
|
|
35
|
+
type: "bc-icon-loader s-".concat(spinnerSize)
|
|
36
|
+
}) : /*#__PURE__*/React__default.createElement(BubbleLoader, null), loadingText && /*#__PURE__*/React__default.createElement("div", {
|
|
37
|
+
className: "loader-text"
|
|
38
|
+
}, loadingText)) : children;
|
|
39
|
+
}
|
|
40
|
+
BusyLoader.propTypes = {
|
|
41
|
+
/**
|
|
42
|
+
* Show loader
|
|
43
|
+
*/
|
|
44
|
+
isBusy: propTypesExports.bool,
|
|
45
|
+
/**
|
|
46
|
+
* Any valid React node. Renders when "isBusy" is set to false
|
|
47
|
+
*/
|
|
48
|
+
children: propTypesExports.node,
|
|
49
|
+
/**
|
|
50
|
+
* Show some text when loading
|
|
51
|
+
*/
|
|
52
|
+
loadingText: propTypesExports.string,
|
|
53
|
+
/**
|
|
54
|
+
* Loader available type/style
|
|
55
|
+
*/
|
|
56
|
+
type: propTypesExports.oneOf(['spinner', 'bubbles', 'bar']),
|
|
57
|
+
/**
|
|
58
|
+
* Loader size
|
|
59
|
+
*/
|
|
60
|
+
spinnerSize: propTypesExports.oneOf(['small', 'medium', 'big'])
|
|
61
|
+
};
|
|
62
|
+
BusyLoader.defaultProps = {
|
|
63
|
+
isBusy: true,
|
|
64
|
+
children: null,
|
|
65
|
+
type: 'spinner',
|
|
66
|
+
spinnerSize: 'small'
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { BusyLoader as default };
|
package/Button.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
|
|
2
|
+
import React__default, { forwardRef } 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 './globalStyling-9c60a159.js';
|
|
7
|
+
import { s as styleInject } from './style-inject.es-746bb8ed.js';
|
|
8
|
+
|
|
9
|
+
var css_248z = "[data-gene-ui-version=\"2.11.0\"] .btn{--size:3.6rem;align-items:center;border:1px solid #0000;border-radius:var(--button-external-border-radius,var(--button-external-size,var(--size)));color:inherit;cursor:pointer;display:flex;font:600 1.4rem/2rem var(--font-family);justify-content:center;min-height:var(--button-external-size,var(--size));min-width:var(--button-external-size,var(--size));position:relative;transition:color .3s,background .3s,opacity .2s;-webkit-user-select:none;user-select:none}[data-gene-ui-version=\"2.11.0\"] .btn:focus-visible{border-radius:var(--button-external-border-radius,var(--button-external-size,var(--size)));outline:.2rem var(--hero) solid}[data-gene-ui-version=\"2.11.0\"] .btn:disabled{opacity:.5;pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .btn.s-medium{--size:3.2rem;font-size:1.2rem}[data-gene-ui-version=\"2.11.0\"] .btn.s-big{--size:4.2rem}[data-gene-ui-version=\"2.11.0\"] .btn.cr-smooth{border-radius:var(--button-external-border-radius,.4rem)}[data-gene-ui-version=\"2.11.0\"] .btn>*+*{margin:0 0 0 .4rem}html[dir=rtl] .btn>*+*{margin:0 .4rem 0 0}[data-gene-ui-version=\"2.11.0\"] .btn.id-end{flex-direction:row-reverse}[data-gene-ui-version=\"2.11.0\"] .btn.id-end>*+*{margin:0 .7rem 0 0}html[dir=rtl] .btn.id-end>*+*{margin:0 0 0 .7rem}[data-gene-ui-version=\"2.11.0\"] .btn:not(.c-icon){padding:0 2rem}[data-gene-ui-version=\"2.11.0\"] .btn:not(.c-icon).f-content-size{padding:0 1.3rem}[data-gene-ui-version=\"2.11.0\"] .btn:not(.c-icon).f-default{min-width:10rem}[data-gene-ui-version=\"2.11.0\"] .btn:not(.c-icon).f-full-width{width:100%}[data-gene-ui-version=\"2.11.0\"] .btn:not(.c-icon).loading-padding{padding:0 .6rem}[data-gene-ui-version=\"2.11.0\"] .btn.c-confirm{--hero:var(--confirm);--hero-sc:var(--confirm-sc);--hero-hover:var(--confirm-hover)}[data-gene-ui-version=\"2.11.0\"] .btn.c-danger{--hero:var(--danger);--hero-sc:var(--danger-sc);--hero-hover:var(--danger-hover)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-outline{border-color:var(--hero);color:var(--hero)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-outline:hover{background:var(--hero);color:var(--hero-sc)}}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-outline:active{background:var(--hero);color:var(--hero-sc)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-minimal:not(.c-default){color:var(--hero)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-minimal:hover{background:rgba(var(--background-sc-rgb),.03)}}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-minimal.active{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-grayscale:not(:disabled){background:rgba(var(--background-sc-rgb),.01)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-grayscale:not(:disabled):hover{background:rgba(var(--background-sc-rgb),.03)}}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-grayscale:not(:disabled).active{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-grayscale:not(.c-default){color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-clean:not(.c-default){color:rgba(var(--background-sc-rgb),.6)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-clean:not(:disabled){background:rgba(var(--hero-rgb),.1);color:var(--hero)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-clean:not(:disabled):hover{background:var(--hero);color:var(--hero-sc)}}[data-gene-ui-version=\"2.11.0\"] .btn:not(.active).a-clean:not(:disabled).active{background:var(--hero);color:var(--hero-sc)}[data-gene-ui-version=\"2.11.0\"] .btn:not(.a-grayscale).with-shadow{box-shadow:0 .2rem .4rem 0 #0000001a}[data-gene-ui-version=\"2.11.0\"] .btn.a-grayscale:not(:disabled){box-shadow:0 1px 0 0 #00000029}[data-gene-ui-version=\"2.11.0\"] .btn.a-default,[data-gene-ui-version=\"2.11.0\"] .btn.active{background:var(--hero);color:var(--hero-sc)}@media (hover:hover){[data-gene-ui-version=\"2.11.0\"] .btn.a-default:hover,[data-gene-ui-version=\"2.11.0\"] .btn.active:hover{background:var(--hero-hover)}}[data-gene-ui-version=\"2.11.0\"] .btn.loading-state>:not(.btn-loader-holder){color:#0000!important}[data-gene-ui-version=\"2.11.0\"] .btn .btn-loader-holder{left:50%;margin:0;position:absolute;top:50%;transform:translate(-50%,-50%)}";
|
|
10
|
+
styleInject(css_248z);
|
|
11
|
+
|
|
12
|
+
const Button = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
13
|
+
let {
|
|
14
|
+
children,
|
|
15
|
+
appearance,
|
|
16
|
+
size,
|
|
17
|
+
flexibility,
|
|
18
|
+
color,
|
|
19
|
+
itemsDirection,
|
|
20
|
+
cornerRadius,
|
|
21
|
+
icon,
|
|
22
|
+
active,
|
|
23
|
+
className,
|
|
24
|
+
withShadow,
|
|
25
|
+
loading,
|
|
26
|
+
ariaLabel,
|
|
27
|
+
...restProps
|
|
28
|
+
} = _ref;
|
|
29
|
+
const noChildren = !children && children !== 0;
|
|
30
|
+
return /*#__PURE__*/React__default.createElement("button", _extends({
|
|
31
|
+
className: classnames('btn', className, "a-".concat(appearance), "s-".concat(size), "f-".concat(flexibility), "c-".concat(color), "id-".concat(itemsDirection), "cr-".concat(cornerRadius), {
|
|
32
|
+
active,
|
|
33
|
+
'c-icon': !!icon && noChildren,
|
|
34
|
+
'with-shadow': withShadow,
|
|
35
|
+
'loading-padding': !noChildren && !icon && loading
|
|
36
|
+
}),
|
|
37
|
+
ref: ref
|
|
38
|
+
}, ariaLabel ? {
|
|
39
|
+
'aria-label': ariaLabel
|
|
40
|
+
} : {}, restProps), icon && (loading ? /*#__PURE__*/React__default.createElement(Icon, {
|
|
41
|
+
type: "bc-icon-loader"
|
|
42
|
+
}) : /*#__PURE__*/React__default.createElement(Icon, {
|
|
43
|
+
type: icon
|
|
44
|
+
})), !noChildren && (!icon && loading ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Icon, {
|
|
45
|
+
type: "bc-icon-loader"
|
|
46
|
+
}), /*#__PURE__*/React__default.createElement("span", null, children)) : /*#__PURE__*/React__default.createElement("span", {
|
|
47
|
+
className: "ellipsis-text"
|
|
48
|
+
}, children)), loading && noChildren && /*#__PURE__*/React__default.createElement("div", {
|
|
49
|
+
className: "btn-loader-holder"
|
|
50
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
|
51
|
+
type: "bc-icon-loader"
|
|
52
|
+
})));
|
|
53
|
+
});
|
|
54
|
+
const ButtonConfig = {
|
|
55
|
+
appearance: ['default', 'outline', 'minimal', 'grayscale', 'clean'],
|
|
56
|
+
size: ['default', 'medium', 'big'],
|
|
57
|
+
color: ['primary', 'confirm', 'danger', 'default'],
|
|
58
|
+
flexibility: ['default', 'content-size', 'full-width'],
|
|
59
|
+
itemsDirection: ['start', 'end'],
|
|
60
|
+
cornerRadius: ['round', 'smooth']
|
|
61
|
+
};
|
|
62
|
+
Button.propTypes = {
|
|
63
|
+
/**
|
|
64
|
+
* Any valid React node
|
|
65
|
+
*/
|
|
66
|
+
children: propTypesExports.node,
|
|
67
|
+
/**
|
|
68
|
+
* The way how the Button should be displayed
|
|
69
|
+
*/
|
|
70
|
+
appearance: propTypesExports.oneOf(ButtonConfig.appearance),
|
|
71
|
+
/**
|
|
72
|
+
* Button size
|
|
73
|
+
*/
|
|
74
|
+
size: propTypesExports.oneOf(ButtonConfig.size),
|
|
75
|
+
/**
|
|
76
|
+
* How to display inscription in relation to it's parent in Button
|
|
77
|
+
*/
|
|
78
|
+
flexibility: propTypesExports.oneOf(ButtonConfig.flexibility),
|
|
79
|
+
/**
|
|
80
|
+
* Button color
|
|
81
|
+
*/
|
|
82
|
+
color: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.oneOf(ButtonConfig.color)]),
|
|
83
|
+
/**
|
|
84
|
+
* Button children direction either from the start, or from the end
|
|
85
|
+
*/
|
|
86
|
+
itemsDirection: propTypesExports.oneOf(ButtonConfig.itemsDirection),
|
|
87
|
+
/**
|
|
88
|
+
* Button corner radius
|
|
89
|
+
*/
|
|
90
|
+
cornerRadius: propTypesExports.oneOf(ButtonConfig.cornerRadius),
|
|
91
|
+
/**
|
|
92
|
+
* The property will add an "Icon" as Button child. The valid values can be found in "Icon" atom
|
|
93
|
+
*/
|
|
94
|
+
icon: propTypesExports.string,
|
|
95
|
+
/**
|
|
96
|
+
* Button disabled state
|
|
97
|
+
*/
|
|
98
|
+
disabled: propTypesExports.bool,
|
|
99
|
+
/**
|
|
100
|
+
* Button active state
|
|
101
|
+
*/
|
|
102
|
+
active: propTypesExports.bool,
|
|
103
|
+
/**
|
|
104
|
+
* Adding shadow to button
|
|
105
|
+
*/
|
|
106
|
+
withShadow: propTypesExports.bool,
|
|
107
|
+
/**
|
|
108
|
+
* Button additianl className
|
|
109
|
+
*/
|
|
110
|
+
className: propTypesExports.string,
|
|
111
|
+
/**
|
|
112
|
+
* Button text transforms to spinner
|
|
113
|
+
*/
|
|
114
|
+
loading: propTypesExports.bool,
|
|
115
|
+
/**
|
|
116
|
+
* aria-label for button.
|
|
117
|
+
*/
|
|
118
|
+
ariaLabel: propTypesExports.string
|
|
119
|
+
};
|
|
120
|
+
Button.defaultProps = {
|
|
121
|
+
appearance: ButtonConfig.appearance[0],
|
|
122
|
+
size: ButtonConfig.size[0],
|
|
123
|
+
flexibility: ButtonConfig.flexibility[0],
|
|
124
|
+
color: ButtonConfig.color[0],
|
|
125
|
+
itemsDirection: ButtonConfig.itemsDirection[0],
|
|
126
|
+
cornerRadius: ButtonConfig.cornerRadius[0]
|
|
127
|
+
};
|
|
128
|
+
Button.displayName = 'Button';
|
|
129
|
+
|
|
130
|
+
export { Button as default };
|