@itcase/ui 1.8.122 → 1.8.124
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/dist/Avatar_cjs_mojzcWRL.js +161 -0
- package/dist/Avatar_es_BFom0nAS.js +157 -0
- package/dist/{Button_cjs_i0Dn1pkl.js → Button_cjs_CZz8OjWi.js} +42 -30
- package/dist/{Button_es_CtH5EKJd.js → Button_es_Cn3wtv3M.js} +42 -30
- package/dist/ChipsGroup_cjs_Dgskkc1e.js +344 -0
- package/dist/{ChipsGroup_es_ayPPUwQ7.js → ChipsGroup_es_BVQ7_n0k.js} +48 -35
- package/dist/DatePicker_cjs_Lzrr9Amf.js +182 -0
- package/dist/DatePicker_es_D1LvY5RT.js +178 -0
- package/dist/Divider_cjs_DrmV2ezS.js +105 -0
- package/dist/Divider_es_BiYozVBS.js +101 -0
- package/dist/DropdownItem_cjs_rKLdFxSj.js +211 -0
- package/dist/DropdownItem_es_B-1qtEa7.js +206 -0
- package/dist/Group_cjs_DmfeUcFI.js +59 -0
- package/dist/Group_es_BU5k8f5S.js +55 -0
- package/dist/{Icon_cjs_Cz6IyOkb.js → Icon_cjs_DpFxIFv5.js} +170 -121
- package/dist/{Icon_es_BrwLifge.js → Icon_es_D5eiycFI.js} +170 -121
- package/dist/Image_cjs_CBDMUzv_.js +29 -0
- package/dist/Image_es_BHec4iVN.js +27 -0
- package/dist/{Input_cjs_Du73R-wm.js → Input_cjs_DDi5JVAV.js} +27 -19
- package/dist/{Input_es_CiDHjDqJ.js → Input_es_BnCXATnh.js} +27 -19
- package/dist/{Label_cjs_DMoaOoHi.js → Label_cjs_C-x9blCL.js} +45 -33
- package/dist/{Label_es_SULlg9bL.js → Label_es_DCqpSw_F.js} +45 -33
- package/dist/{Link_cjs_C5UsZUiF.js → Link_cjs_qKXVfU8e.js} +43 -30
- package/dist/{Link_es_XiqbdwLp.js → Link_es_P2b6ya7P.js} +43 -30
- package/dist/Loader_cjs_DIDsIq3J.js +143 -0
- package/dist/Loader_es_CmSggwbR.js +139 -0
- package/dist/Overlay_cjs_tGA2fU43.js +42 -0
- package/dist/Overlay_es_BS7OTFoy.js +38 -0
- package/dist/{Scrollbar_cjs_DcKOfcNp.js → Scrollbar_cjs_Cp-7v2Mt.js} +1 -1
- package/dist/{Scrollbar_es_CThJeCLF.js → Scrollbar_es_CcMgNvGi.js} +1 -1
- package/dist/Text_cjs_BDTjOTVB.js +69 -0
- package/dist/Text_es_CnymlElo.js +65 -0
- package/dist/cjs/components/Accordion.js +37 -34
- package/dist/cjs/components/Avatar.js +5 -6
- package/dist/cjs/components/AvatarStack/stories/__mock__.js +1 -1
- package/dist/cjs/components/AvatarStack.js +17 -16
- package/dist/cjs/components/Badge.js +3 -4
- package/dist/cjs/components/Breadcrumbs/stories/__mock__.js +1 -1
- package/dist/cjs/components/Breadcrumbs.js +27 -23
- package/dist/cjs/components/Button.js +5 -6
- package/dist/cjs/components/Cell/stories/__mock__.js +1 -1
- package/dist/cjs/components/Cell.js +28 -25
- package/dist/cjs/components/Checkbox.js +33 -26
- package/dist/cjs/components/Checkmark.js +28 -23
- package/dist/cjs/components/Chips/stories/__mock__.js +1 -1
- package/dist/cjs/components/Chips.js +4 -5
- package/dist/cjs/components/Choice/stories/__mock__.js +2 -2
- package/dist/cjs/components/Choice.js +46 -40
- package/dist/cjs/components/Code.js +34 -26
- package/dist/cjs/components/CookiesWarning.js +23 -23
- package/dist/cjs/components/Dadata.js +14 -9
- package/dist/cjs/components/DatePeriod.js +32 -30
- package/dist/cjs/components/DatePicker.js +8 -9
- package/dist/cjs/components/Divider.js +1 -2
- package/dist/cjs/components/Dot.js +5 -6
- package/dist/cjs/components/Drawer.js +23 -21
- package/dist/cjs/components/Dropdown/stories/__mock__.js +6 -6
- package/dist/cjs/components/Dropdown.js +5 -6
- package/dist/cjs/components/Flex.js +11 -12
- package/dist/cjs/components/Grid.js +15 -16
- package/dist/cjs/components/Group.js +1 -2
- package/dist/cjs/components/HTMLContent.js +5 -6
- package/dist/cjs/components/HeroTitle.js +17 -16
- package/dist/cjs/components/Icon.js +3 -4
- package/dist/cjs/components/Image.js +1 -2
- package/dist/cjs/components/Input.js +1 -2
- package/dist/cjs/components/InputPassword.js +114 -84
- package/dist/cjs/components/Label.js +4 -5
- package/dist/cjs/components/Link.js +1 -2
- package/dist/cjs/components/List.js +39 -28
- package/dist/cjs/components/Loader.js +2 -3
- package/dist/cjs/components/Logo.js +10 -11
- package/dist/cjs/components/MenuItem.js +36 -33
- package/dist/cjs/components/Modal.js +40 -38
- package/dist/cjs/components/ModalSheetBottom.js +17 -18
- package/dist/cjs/components/Notification/stories/__mock__.js +1 -1
- package/dist/cjs/components/Notification.js +31 -24
- package/dist/cjs/components/Overlay.js +1 -2
- package/dist/cjs/components/Pagination.js +43 -41
- package/dist/cjs/components/Radio.js +34 -26
- package/dist/cjs/components/RangeSlider.js +8 -9
- package/dist/cjs/components/Response/img.js +1 -1
- package/dist/cjs/components/Response.js +102 -84
- package/dist/cjs/components/SVGContent.js +6 -7
- package/dist/cjs/components/ScrollOnDrag/stories/__mock__.js +2 -2
- package/dist/cjs/components/ScrollOnDrag.js +7 -8
- package/dist/cjs/components/ScrollToView.js +8 -9
- package/dist/cjs/components/Scrollbar/stories/__mock__.js +1 -1
- package/dist/cjs/components/Scrollbar.js +1 -1
- package/dist/cjs/components/Search.js +39 -31
- package/dist/cjs/components/Segmented/stories/__mock__.js +23 -10
- package/dist/cjs/components/Segmented.js +47 -42
- package/dist/cjs/components/Select.js +118 -113
- package/dist/cjs/components/Swiper/stories/__mock__.js +3 -3
- package/dist/cjs/components/Swiper.js +27 -29
- package/dist/cjs/components/Switch.js +33 -26
- package/dist/cjs/components/Tab/stories/__mock__.js +1 -1
- package/dist/cjs/components/Tab.js +59 -69
- package/dist/cjs/components/Text.js +1 -2
- package/dist/cjs/components/Textarea.js +26 -18
- package/dist/cjs/components/Tile.js +21 -17
- package/dist/cjs/components/Title.js +3 -4
- package/dist/cjs/components/Tooltip.js +3 -4
- package/dist/cjs/components/Video/stories/__mocks__.js +1 -1
- package/dist/cjs/components/Video.js +3 -4
- package/dist/cjs/components/Warning.js +26 -20
- package/dist/cjs/context/Notifications.js +38 -42
- package/dist/cjs/context/UIContext.js +19 -17
- package/dist/cjs/context/UrlAssetPrefix.js +3 -3
- package/dist/cjs/hoc/urlWithAssetPrefix.js +13 -16
- package/dist/cjs/hooks/useActiveClasses/useActiveClasses.helpers.js +13 -40
- package/dist/cjs/hooks/useActiveClasses/useActiveClasses.interface.js +1 -1
- package/dist/cjs/hooks/useActiveClasses/useActiveClasses.js +25 -29
- package/dist/cjs/hooks/useAppearanceConfig/useAppearanceConfig.js +13 -15
- package/dist/cjs/hooks/useAppearanceConfig.js +0 -1
- package/dist/cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +21 -28
- package/dist/cjs/hooks/useDevicePropsGenerator.js +0 -1
- package/dist/cjs/hooks/useDeviceTargetClass.js +0 -1
- package/dist/cjs/hooks/useStyles/styleAttributes.js +1 -1
- package/dist/cjs/hooks/useStyles/useStyles.js +0 -1
- package/dist/cjs/hooks/useStyles.js +0 -1
- package/dist/cjs/hooks/useViewportFix.js +5 -5
- package/dist/cjs/hooks.js +1 -1
- package/dist/cjs/utils/setViewportProperty.js +3 -3
- package/dist/components/Accordion.js +37 -34
- package/dist/components/Avatar.js +5 -6
- package/dist/components/AvatarStack/stories/__mock__.js +1 -1
- package/dist/components/AvatarStack.js +17 -16
- package/dist/components/Badge.js +3 -4
- package/dist/components/Breadcrumbs/stories/__mock__.js +1 -1
- package/dist/components/Breadcrumbs.js +27 -23
- package/dist/components/Button.js +5 -6
- package/dist/components/Cell/stories/__mock__.js +1 -1
- package/dist/components/Cell.js +28 -25
- package/dist/components/Checkbox.js +33 -26
- package/dist/components/Checkmark.js +28 -23
- package/dist/components/Chips/stories/__mock__.js +1 -1
- package/dist/components/Chips.js +4 -5
- package/dist/components/Choice/stories/__mock__.js +2 -2
- package/dist/components/Choice.js +46 -40
- package/dist/components/Code.js +34 -26
- package/dist/components/CookiesWarning.js +23 -23
- package/dist/components/Dadata.js +14 -9
- package/dist/components/DatePeriod.js +32 -30
- package/dist/components/DatePicker.js +8 -9
- package/dist/components/Divider.js +1 -2
- package/dist/components/Dot.js +5 -6
- package/dist/components/Drawer.js +23 -21
- package/dist/components/Dropdown/stories/__mock__.js +6 -6
- package/dist/components/Dropdown.js +5 -6
- package/dist/components/Flex.js +11 -12
- package/dist/components/Grid.js +15 -16
- package/dist/components/Group.js +1 -2
- package/dist/components/HTMLContent.js +5 -6
- package/dist/components/HeroTitle.js +17 -16
- package/dist/components/Icon.js +3 -4
- package/dist/components/Image.js +1 -2
- package/dist/components/Input.js +1 -2
- package/dist/components/InputPassword.js +114 -84
- package/dist/components/Label.js +4 -5
- package/dist/components/Link.js +1 -2
- package/dist/components/List.js +39 -28
- package/dist/components/Loader.js +2 -3
- package/dist/components/Logo.js +10 -11
- package/dist/components/MenuItem.js +36 -33
- package/dist/components/Modal.js +40 -38
- package/dist/components/ModalSheetBottom.js +17 -18
- package/dist/components/Notification/stories/__mock__.js +1 -1
- package/dist/components/Notification.js +31 -24
- package/dist/components/Overlay.js +1 -2
- package/dist/components/Pagination.js +43 -41
- package/dist/components/Radio.js +34 -26
- package/dist/components/RangeSlider.js +8 -9
- package/dist/components/Response/img.js +1 -1
- package/dist/components/Response.js +102 -84
- package/dist/components/SVGContent.js +6 -7
- package/dist/components/ScrollOnDrag/stories/__mock__.js +2 -2
- package/dist/components/ScrollOnDrag.js +7 -8
- package/dist/components/ScrollToView.js +8 -9
- package/dist/components/Scrollbar/stories/__mock__.js +1 -1
- package/dist/components/Scrollbar.js +1 -1
- package/dist/components/Search.js +39 -31
- package/dist/components/Segmented/stories/__mock__.js +23 -10
- package/dist/components/Segmented.js +47 -42
- package/dist/components/Select.js +118 -113
- package/dist/components/Swiper/stories/__mock__.js +3 -3
- package/dist/components/Swiper.js +27 -29
- package/dist/components/Switch.js +33 -26
- package/dist/components/Tab/stories/__mock__.js +1 -1
- package/dist/components/Tab.js +59 -69
- package/dist/components/Text.js +1 -2
- package/dist/components/Textarea.js +26 -18
- package/dist/components/Tile.js +21 -17
- package/dist/components/Title.js +3 -4
- package/dist/components/Tooltip.js +3 -4
- package/dist/components/Video/stories/__mocks__.js +1 -1
- package/dist/components/Video.js +3 -4
- package/dist/components/Warning.js +26 -20
- package/dist/context/Notifications.js +38 -42
- package/dist/context/UIContext.js +19 -17
- package/dist/context/UrlAssetPrefix.js +3 -3
- package/dist/css/components/Checkmark/Checkmark.css +2 -0
- package/dist/css/components/DatePeriod/DatePeriod.css +3 -0
- package/dist/css/components/Input/Input.css +0 -8
- package/dist/css/components/InputPassword/InputPassword.css +34 -43
- package/dist/css/components/Tile/Tile.css +3 -3
- package/dist/hoc/urlWithAssetPrefix.js +13 -16
- package/dist/hooks/useActiveClasses/useActiveClasses.helpers.js +13 -40
- package/dist/hooks/useActiveClasses/useActiveClasses.interface.js +1 -1
- package/dist/hooks/useActiveClasses/useActiveClasses.js +25 -29
- package/dist/hooks/useAppearanceConfig/useAppearanceConfig.js +13 -15
- package/dist/hooks/useAppearanceConfig.js +0 -1
- package/dist/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +21 -28
- package/dist/hooks/useDevicePropsGenerator.js +0 -1
- package/dist/hooks/useDeviceTargetClass.js +0 -1
- package/dist/hooks/useStyles/styleAttributes.js +1 -1
- package/dist/hooks/useStyles/useStyles.js +0 -1
- package/dist/hooks/useStyles.js +0 -1
- package/dist/hooks/useViewportFix.js +5 -5
- package/dist/hooks.js +1 -1
- package/dist/types/components/InputPassword/InputPassword.appearance.d.ts +179 -2
- package/dist/types/components/InputPassword/appearance/inputPasswordDefault.d.ts +7 -4
- package/dist/types/components/InputPassword/appearance/inputPasswordDisabled.d.ts +6 -4
- package/dist/types/components/InputPassword/appearance/inputPasswordError.d.ts +6 -4
- package/dist/types/components/InputPassword/appearance/inputPasswordRequire.d.ts +6 -4
- package/dist/types/components/InputPassword/appearance/inputPasswordShape.d.ts +25 -0
- package/dist/types/components/InputPassword/appearance/inputPasswordSize.d.ts +14 -28
- package/dist/types/components/InputPassword/appearance/inputPasswordStyle.d.ts +5 -5
- package/dist/types/components/InputPassword/appearance/inputPasswordSuccess.d.ts +6 -4
- package/dist/types/components/Response/Response.constant.d.ts +32 -35
- package/dist/types/components/Response/appearance/responseConfirm.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseDanger.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseEmpty.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseError.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseFail.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseNothingFound.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseRefresh.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseSuccess.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseUnableLoadData.d.ts +1 -0
- package/dist/types/components/Response/appearance/responseWarning.d.ts +1 -0
- package/dist/types/components/Select/SelectContainer.d.ts +1 -1
- package/dist/types/components/Tab/appearance/tabSize.d.ts +0 -14
- package/dist/types/components/Tab/appearance/tabSurface.d.ts +7 -7
- package/dist/utils/setViewportProperty.js +3 -3
- package/package.json +14 -14
- package/dist/Avatar_cjs_kuE0Rueg.js +0 -157
- package/dist/Avatar_es_lx7s4Vla.js +0 -153
- package/dist/ChipsGroup_cjs_C8L3ZeD_.js +0 -331
- package/dist/DatePicker_cjs_DsIAoi01.js +0 -183
- package/dist/DatePicker_es_BP5BrEr-.js +0 -179
- package/dist/Divider_cjs_DUYtmwn2.js +0 -97
- package/dist/Divider_es_CCLBFIx6.js +0 -93
- package/dist/DropdownItem_cjs_Bhss6lyM.js +0 -207
- package/dist/DropdownItem_es_BXl6lPJx.js +0 -202
- package/dist/Group_cjs_CsJ6ICKK.js +0 -59
- package/dist/Group_es_DRqIIM9m.js +0 -55
- package/dist/Image_cjs_B6YlGx8G.js +0 -28
- package/dist/Image_es_BvYo_cHH.js +0 -26
- package/dist/Loader_cjs_D3lnxPlI.js +0 -132
- package/dist/Loader_es_BUSqFrCd.js +0 -128
- package/dist/Overlay_cjs_CcfJYN5o.js +0 -41
- package/dist/Overlay_es_DF3DAdxS.js +0 -37
- package/dist/Text_cjs_0EINiUq4.js +0 -68
- package/dist/Text_es_CwV9rjFD.js +0 -64
- package/dist/tslib.es6_cjs_CCZ3TN_7.js +0 -59
- package/dist/tslib.es6_es_Bwu1Cn-t.js +0 -56
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var useAppearanceConfig = require('./cjs/hooks/useAppearanceConfig/useAppearanceConfig.js');
|
|
6
|
+
var useDevicePropsGenerator = require('./cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
|
|
7
|
+
var useStyles = require('./cjs/hooks/useStyles/useStyles.js');
|
|
8
|
+
|
|
9
|
+
const dividerAppearanceAccent = {
|
|
10
|
+
accentPrimary: {
|
|
11
|
+
fill: 'accentPrimary',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const dividerAppearanceError = {
|
|
16
|
+
errorPrimary: {
|
|
17
|
+
fill: 'errorPrimary',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const dividerAppearancePrimary = {
|
|
22
|
+
primaryPrimary: {
|
|
23
|
+
fill: 'primaryPrimary',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const dividerAppearanceSecondary = {
|
|
28
|
+
secondaryPrimary: {
|
|
29
|
+
fill: 'secondaryPrimary',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const dividerAppearanceSize = {
|
|
34
|
+
sizeL: {
|
|
35
|
+
size: 'l',
|
|
36
|
+
},
|
|
37
|
+
sizeM: {
|
|
38
|
+
size: 'm',
|
|
39
|
+
},
|
|
40
|
+
sizeS: {
|
|
41
|
+
size: 's',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const dividerAppearanceSuccess = {
|
|
46
|
+
successPrimary: {
|
|
47
|
+
fill: 'successPrimary',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const dividerAppearanceSurface = {
|
|
52
|
+
surfacePrimary: {
|
|
53
|
+
fill: 'surfacePrimary',
|
|
54
|
+
},
|
|
55
|
+
surfaceSecondary: {
|
|
56
|
+
fill: 'surfaceSecondary',
|
|
57
|
+
},
|
|
58
|
+
surfaceTertiary: {
|
|
59
|
+
fill: 'surfaceTertiary',
|
|
60
|
+
},
|
|
61
|
+
surfaceQuaternary: {
|
|
62
|
+
fill: 'surfaceQuaternary',
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const dividerAppearanceWarning = {
|
|
67
|
+
warningPrimary: {
|
|
68
|
+
fill: 'warningPrimary',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const dividerAppearance = {
|
|
73
|
+
...dividerAppearanceSize,
|
|
74
|
+
...dividerAppearanceAccent,
|
|
75
|
+
...dividerAppearanceError,
|
|
76
|
+
...dividerAppearancePrimary,
|
|
77
|
+
...dividerAppearanceSecondary,
|
|
78
|
+
...dividerAppearanceSuccess,
|
|
79
|
+
...dividerAppearanceSurface,
|
|
80
|
+
...dividerAppearanceWarning,
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const dividerConfig = {
|
|
84
|
+
appearance: dividerAppearance,
|
|
85
|
+
setAppearance: (appearanceConfig) => {
|
|
86
|
+
dividerConfig.appearance = appearanceConfig;
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
function Divider(props) {
|
|
90
|
+
const { className, appearance, isDisabled, isActive, isSkeleton } = props;
|
|
91
|
+
const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, dividerConfig);
|
|
92
|
+
const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
|
|
93
|
+
const { directionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
|
|
94
|
+
// @ts-expect-error
|
|
95
|
+
const { styles: hrStyles } = useStyles.useStyles(props);
|
|
96
|
+
return (jsxRuntime.jsx("hr", { className: clsx(className, 'divider', widthClass && `width_${widthClass}`, directionClass && `divider_direction_${directionClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `divider_size_${sizeClass}`, !isActive
|
|
97
|
+
? fillClass && `fill_${fillClass}`
|
|
98
|
+
: fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
|
|
99
|
+
? fillHoverClass && `fill_hover_${fillHoverClass}`
|
|
100
|
+
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, isDisabled && fillDisabledClass && `fill_disabled_${fillDisabledClass}`, isSkeleton && `divider_skeleton`), style: hrStyles }));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
exports.Divider = Divider;
|
|
104
|
+
exports.dividerAppearance = dividerAppearance;
|
|
105
|
+
exports.dividerConfig = dividerConfig;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
|
|
4
|
+
import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
|
|
5
|
+
import { useStyles } from './hooks/useStyles/useStyles.js';
|
|
6
|
+
|
|
7
|
+
const dividerAppearanceAccent = {
|
|
8
|
+
accentPrimary: {
|
|
9
|
+
fill: 'accentPrimary',
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const dividerAppearanceError = {
|
|
14
|
+
errorPrimary: {
|
|
15
|
+
fill: 'errorPrimary',
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const dividerAppearancePrimary = {
|
|
20
|
+
primaryPrimary: {
|
|
21
|
+
fill: 'primaryPrimary',
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const dividerAppearanceSecondary = {
|
|
26
|
+
secondaryPrimary: {
|
|
27
|
+
fill: 'secondaryPrimary',
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const dividerAppearanceSize = {
|
|
32
|
+
sizeL: {
|
|
33
|
+
size: 'l',
|
|
34
|
+
},
|
|
35
|
+
sizeM: {
|
|
36
|
+
size: 'm',
|
|
37
|
+
},
|
|
38
|
+
sizeS: {
|
|
39
|
+
size: 's',
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const dividerAppearanceSuccess = {
|
|
44
|
+
successPrimary: {
|
|
45
|
+
fill: 'successPrimary',
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const dividerAppearanceSurface = {
|
|
50
|
+
surfacePrimary: {
|
|
51
|
+
fill: 'surfacePrimary',
|
|
52
|
+
},
|
|
53
|
+
surfaceSecondary: {
|
|
54
|
+
fill: 'surfaceSecondary',
|
|
55
|
+
},
|
|
56
|
+
surfaceTertiary: {
|
|
57
|
+
fill: 'surfaceTertiary',
|
|
58
|
+
},
|
|
59
|
+
surfaceQuaternary: {
|
|
60
|
+
fill: 'surfaceQuaternary',
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const dividerAppearanceWarning = {
|
|
65
|
+
warningPrimary: {
|
|
66
|
+
fill: 'warningPrimary',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const dividerAppearance = {
|
|
71
|
+
...dividerAppearanceSize,
|
|
72
|
+
...dividerAppearanceAccent,
|
|
73
|
+
...dividerAppearanceError,
|
|
74
|
+
...dividerAppearancePrimary,
|
|
75
|
+
...dividerAppearanceSecondary,
|
|
76
|
+
...dividerAppearanceSuccess,
|
|
77
|
+
...dividerAppearanceSurface,
|
|
78
|
+
...dividerAppearanceWarning,
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const dividerConfig = {
|
|
82
|
+
appearance: dividerAppearance,
|
|
83
|
+
setAppearance: (appearanceConfig) => {
|
|
84
|
+
dividerConfig.appearance = appearanceConfig;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
function Divider(props) {
|
|
88
|
+
const { className, appearance, isDisabled, isActive, isSkeleton } = props;
|
|
89
|
+
const appearanceConfig = useAppearanceConfig(appearance, dividerConfig);
|
|
90
|
+
const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
|
|
91
|
+
const { directionClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
|
|
92
|
+
// @ts-expect-error
|
|
93
|
+
const { styles: hrStyles } = useStyles(props);
|
|
94
|
+
return (jsx("hr", { className: clsx(className, 'divider', widthClass && `width_${widthClass}`, directionClass && `divider_direction_${directionClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, sizeClass && `divider_size_${sizeClass}`, !isActive
|
|
95
|
+
? fillClass && `fill_${fillClass}`
|
|
96
|
+
: fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
|
|
97
|
+
? fillHoverClass && `fill_hover_${fillHoverClass}`
|
|
98
|
+
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, isDisabled && fillDisabledClass && `fill_disabled_${fillDisabledClass}`, isSkeleton && `divider_skeleton`), style: hrStyles }));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export { Divider as D, dividerAppearance as a, dividerConfig as d };
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var useDevicePropsGenerator = require('./cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js');
|
|
7
|
+
var useStyles = require('./cjs/hooks/useStyles/useStyles.js');
|
|
8
|
+
var Icon = require('./Icon_cjs_DpFxIFv5.js');
|
|
9
|
+
var useAppearanceConfig = require('./cjs/hooks/useAppearanceConfig/useAppearanceConfig.js');
|
|
10
|
+
var Divider = require('./Divider_cjs_DrmV2ezS.js');
|
|
11
|
+
var Text = require('./Text_cjs_BDTjOTVB.js');
|
|
12
|
+
|
|
13
|
+
function Dropdown(props) {
|
|
14
|
+
const { className, appearance, animationClose = 'dropdown_animation_close', animationOpen = 'dropdown_animation_open', dropdownList, before, after, isOpen, isSkeleton, setIsOpen, onClickItem, children, } = props;
|
|
15
|
+
const dropdownRef = React.useRef(null);
|
|
16
|
+
// const [isOpen, setIsOpen] = useState(false)
|
|
17
|
+
const [animationState, setAnimationState] = React.useState({
|
|
18
|
+
className: '',
|
|
19
|
+
});
|
|
20
|
+
const onAnimationEnd = React.useCallback(() => {
|
|
21
|
+
// When component is change his visibility(display) in DOM,
|
|
22
|
+
// animation of close can run unnecessary on showing element.
|
|
23
|
+
// const dropdownElement = dropdownRef.current
|
|
24
|
+
setAnimationState((prevState) => ({
|
|
25
|
+
className: isOpen ? prevState.className : '',
|
|
26
|
+
}));
|
|
27
|
+
}, [isOpen]);
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
if (animationOpen && animationClose) {
|
|
30
|
+
setAnimationState(() => ({
|
|
31
|
+
className: isOpen ? animationOpen : animationClose,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
}, [isOpen, animationOpen, animationClose]);
|
|
35
|
+
// Close dropdown by click outside
|
|
36
|
+
React.useEffect(() => {
|
|
37
|
+
// Add a handler to keep track of the click target.
|
|
38
|
+
function onClickWindow(event) {
|
|
39
|
+
const dropdownElement = dropdownRef.current;
|
|
40
|
+
if (dropdownElement && animationOpen) {
|
|
41
|
+
// Is event target inside of dropdown element
|
|
42
|
+
const isContainsTarget = dropdownElement.contains(event.target);
|
|
43
|
+
// Is dropdown element has "open" class
|
|
44
|
+
const hasOpenClass = dropdownElement.classList.contains(animationOpen);
|
|
45
|
+
if (!isContainsTarget && hasOpenClass) {
|
|
46
|
+
// Trigger close event with animation
|
|
47
|
+
// dropdownElement.click() - trigger "onClickWindow" again
|
|
48
|
+
setIsOpen(false);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Add event listener for current dropdown on first render
|
|
53
|
+
window.addEventListener('click', onClickWindow);
|
|
54
|
+
return () => {
|
|
55
|
+
// Remove event listener for current dropdown on unmount
|
|
56
|
+
window.removeEventListener('click', onClickWindow);
|
|
57
|
+
};
|
|
58
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
59
|
+
}, []);
|
|
60
|
+
const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props);
|
|
61
|
+
const { alignmentClass, fillClass, fillHoverClass, elevationClass, shapeClass, shapeStrengthClass, } = propsGenerator;
|
|
62
|
+
const { styles } = useStyles.useStyles(props);
|
|
63
|
+
return (jsxRuntime.jsxs("div", { className: clsx(className, 'dropdown', alignmentClass && `alignment_${alignmentClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, elevationClass && `elevation_${elevationClass}`, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className), ref: dropdownRef, style: styles, children: [before, (children || dropdownList) && (jsxRuntime.jsxs("div", { className: clsx('dropdown__wrapper', fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`),
|
|
64
|
+
// Add "onAnimationEnd" only for wrapper for ignore dropdown button
|
|
65
|
+
onAnimationEnd: onAnimationEnd, children: [dropdownList?.map((item) => (jsxRuntime.jsx(DropdownItem, { appearance: appearance, label: item.label, badgeValue: item.badgeValue, emptyMessage: item.emptyMessage, iconAfter: item.iconAfter, iconBefore: item.iconBefore, iconSrc: item.icon, isActive: item.isActive, isSkeleton: isSkeleton, onClick: item.onClick || ((event) => onClickItem?.(item, event)) }, item.key))), children] })), after] }));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const dropdownAppearanceAccent = {
|
|
69
|
+
accentPrimary: {
|
|
70
|
+
fill: 'accentPrimary',
|
|
71
|
+
fillActive: 'accentPrimaryActive',
|
|
72
|
+
fillActiveHover: 'accentHoverPrimary',
|
|
73
|
+
fillHover: 'accentHoverPrimary',
|
|
74
|
+
labelTextColor: 'accentTextPrimary',
|
|
75
|
+
labelTextColorActive: 'accentTextPrimary',
|
|
76
|
+
labelTextColorActiveHover: 'accentTextPrimary',
|
|
77
|
+
labelTextColorHover: 'accentTextPrimary',
|
|
78
|
+
badgeAppearance: 'surfacePrimary',
|
|
79
|
+
dividerFill: 'surfaceTertiary',
|
|
80
|
+
emptyMessageTextColor: 'accentTextPrimary',
|
|
81
|
+
iconAfterFillIcon: 'accentItemPrimary',
|
|
82
|
+
iconBeforeFillIcon: 'accentItemPrimary',
|
|
83
|
+
},
|
|
84
|
+
accentSecondary: {
|
|
85
|
+
fill: 'accentPrimary',
|
|
86
|
+
fillHover: 'accentPrimaryHover',
|
|
87
|
+
labelTextColor: 'accentTextSecondary',
|
|
88
|
+
labelTextColorHover: 'accentTextSecondary',
|
|
89
|
+
borderColor: 'accentBorderPrimary',
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const dropdownAppearanceSize = {
|
|
94
|
+
sizeL: {
|
|
95
|
+
size: 'l',
|
|
96
|
+
labelTextSize: 'm',
|
|
97
|
+
badgeSize: 'xs',
|
|
98
|
+
badgeTextSize: 'xs',
|
|
99
|
+
dividerSize: 's',
|
|
100
|
+
emptyMessageTextSize: 'm',
|
|
101
|
+
iconAfterFillSize: '24',
|
|
102
|
+
iconAfterSize: '24',
|
|
103
|
+
iconBeforeFillSize: '24',
|
|
104
|
+
iconBeforeSize: '24',
|
|
105
|
+
},
|
|
106
|
+
sizeS: {
|
|
107
|
+
size: 's',
|
|
108
|
+
labelTextSize: 's',
|
|
109
|
+
badgeSize: 'xs',
|
|
110
|
+
badgeTextSize: 'xs',
|
|
111
|
+
dividerSize: 's',
|
|
112
|
+
emptyMessageTextSize: 'm',
|
|
113
|
+
iconAfterFillSize: '16',
|
|
114
|
+
iconAfterSize: '16',
|
|
115
|
+
iconBeforeFillSize: '16',
|
|
116
|
+
iconBeforeSize: '16',
|
|
117
|
+
},
|
|
118
|
+
sizeXS: {
|
|
119
|
+
size: 'xs',
|
|
120
|
+
labelTextSize: 'xs',
|
|
121
|
+
badgeSize: 'xs',
|
|
122
|
+
badgeTextSize: 'xs',
|
|
123
|
+
dividerSize: 's',
|
|
124
|
+
emptyMessageTextSize: 'xs',
|
|
125
|
+
iconAfterFillSize: '12',
|
|
126
|
+
iconAfterSize: '12',
|
|
127
|
+
iconBeforeFillSize: '12',
|
|
128
|
+
iconBeforeSize: '12',
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const dropdownAppearanceStyle = {
|
|
133
|
+
solid: {
|
|
134
|
+
borderColor: 'none',
|
|
135
|
+
},
|
|
136
|
+
outlined: {
|
|
137
|
+
fill: 'none',
|
|
138
|
+
},
|
|
139
|
+
full: {},
|
|
140
|
+
ghost: {
|
|
141
|
+
fill: 'none',
|
|
142
|
+
borderColor: 'none',
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const dropdownAppearanceSurface = {
|
|
147
|
+
surfacePrimary: {
|
|
148
|
+
fill: 'surfacePrimary',
|
|
149
|
+
fillActive: 'surfacePrimaryActive',
|
|
150
|
+
fillHover: 'surfaceHoverPrimary',
|
|
151
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
152
|
+
labelTextColorActive: 'surfaceTextPrimary',
|
|
153
|
+
labelTextColorActiveHover: 'surfaceTextPrimary',
|
|
154
|
+
labelTextColorHover: 'surfaceTextPrimary',
|
|
155
|
+
badgeAppearance: 'accentPrimary',
|
|
156
|
+
dividerFill: 'surfaceTertiary',
|
|
157
|
+
emptyMessageTextColor: 'surfaceTextPrimary',
|
|
158
|
+
iconAfterFillIcon: 'surfaceItemPrimary',
|
|
159
|
+
iconBeforeFillIcon: 'surfaceItemPrimary',
|
|
160
|
+
},
|
|
161
|
+
surfaceSecondary: {
|
|
162
|
+
fill: 'surfaceSecondary',
|
|
163
|
+
fillHover: 'surfaceSecondaryHover',
|
|
164
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
165
|
+
loaderFill: 'surfaceSecondary',
|
|
166
|
+
loaderItemFill: 'surfaceItemPrimary',
|
|
167
|
+
},
|
|
168
|
+
surfaceTertiary: {
|
|
169
|
+
fill: 'surfaceTertiary',
|
|
170
|
+
fillHover: 'surfaceTertiaryHover',
|
|
171
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
172
|
+
},
|
|
173
|
+
surfaceQuaternary: {
|
|
174
|
+
fill: 'surfaceQuaternary',
|
|
175
|
+
fillHover: 'surfaceQuaternaryHover',
|
|
176
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
const dropdownItemAppearance = {
|
|
181
|
+
...dropdownAppearanceSurface,
|
|
182
|
+
...dropdownAppearanceStyle,
|
|
183
|
+
...dropdownAppearanceAccent,
|
|
184
|
+
...dropdownAppearanceSize,
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
const dropdownItemConfig = {
|
|
188
|
+
appearance: dropdownItemAppearance,
|
|
189
|
+
setAppearance: (appearanceConfig) => {
|
|
190
|
+
dropdownItemConfig.appearance = appearanceConfig;
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
function DropdownItem(props) {
|
|
194
|
+
const { className, appearance, label, desc, isDisabled, badgeValue, emptyMessage, showDivider, before, after, isActive, isHover, isSkeleton, onClick, onMouseEnter, children, } = props;
|
|
195
|
+
const appearanceConfig = useAppearanceConfig.useAppearanceConfig(appearance, dropdownItemConfig);
|
|
196
|
+
const propsGenerator = useDevicePropsGenerator.useDevicePropsGenerator(props, appearanceConfig);
|
|
197
|
+
const { directionClass, justifyContentClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, labelTextAlign, labelTextColor, labelTextColorActive, labelTextColorActiveHover, labelTextColorHover, labelTextSize, labelTextStyle, labelTextWeight, labelTextWrap, descTextColor, descTextColorHover, descTextGradient, descTextSize, descTextStyle, descTextWeight, descTextWrap, badgeAppearance, badgeShape, badgeSize, badgeTextColor, badgeTextSize, dividerDirection, dividerFill, dividerSize, emptyMessageTextColor, emptyMessageTextColorHover, emptyMessageTextSize, emptyMessageTextStyle, emptyMessageTextWeight, emptyMessageTextWrap, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, sizeClass, widthClass, } = propsGenerator;
|
|
198
|
+
// @ts-expect-error
|
|
199
|
+
const { styles: dropdownItem } = useStyles.useStyles(props);
|
|
200
|
+
return (jsxRuntime.jsxs("div", { className: clsx('dropdown__item', isActive && 'dropdown__item_state_active', isHover && 'dropdown__item_state_hover', directionClass && `dropdown__item_direction_${directionClass}`, className, !isActive
|
|
201
|
+
? fillClass && `fill_${fillClass}`
|
|
202
|
+
: fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
|
|
203
|
+
? fillHoverClass && `fill_hover_${fillHoverClass}`
|
|
204
|
+
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, fillDisabledClass && `fill_disabled_${fillDisabledClass}`, sizeClass && `dropdown__item_size_${sizeClass}`, shapeClass && `dropdown__item_shape_${shapeClass}`, widthClass && `dropdown__item_width_${widthClass}`, isDisabled && `dropdown__item_state_disabled`, onClick && 'cursor_type_pointer', isSkeleton && `dropdown__item_skeleton`, justifyContentClass &&
|
|
205
|
+
`dropdown__item_justify-content_${justifyContentClass}`), style: dropdownItem, onClick: onClick, onMouseEnter: onMouseEnter, children: [jsxRuntime.jsx("div", { className: "dropdown__item-wrapper", children: jsxRuntime.jsxs(React.Fragment, { children: [before, (iconBefore || iconBeforeSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('dropdown__item_before', iconBadgeValue && 'dropdown__item_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), children || (jsxRuntime.jsxs(React.Fragment, { children: [label && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item-label", size: labelTextSize, textAlign: labelTextAlign, textColor: !isActive && labelTextColor, textColorActive: "accentTextPrimary", textColorActive: isActive && labelTextColorActive, textColorHover: !isActive && labelTextColorHover, textColorHoverActive: isActive && labelTextColorActiveHover, textStyle: labelTextStyle, textWeight: labelTextWeight, textWrap: labelTextWrap, isActive: isActive, children: label })), badgeValue && (jsxRuntime.jsx(Icon.Badge, { appearance: badgeAppearance, size: badgeSize, textColor: badgeTextColor, textSize: badgeTextSize, shape: badgeShape, value: badgeValue })), desc && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item-desc", size: descTextSize, textColor: descTextColor, textColorGradient: descTextGradient, textColorHover: descTextColorHover, textStyle: descTextStyle, textWeight: descTextWeight, textWrap: descTextWrap, isActive: isActive, children: desc })), emptyMessage && (jsxRuntime.jsx(Text.Text, { className: "dropdown__item", size: emptyMessageTextSize, textColor: emptyMessageTextColor, textColorHover: emptyMessageTextColorHover, textStyle: emptyMessageTextStyle, textWeight: emptyMessageTextWeight, textWrap: emptyMessageTextWrap, isActive: isActive, children: emptyMessage }))] })), after, (iconAfter || iconAfterSrc) && (jsxRuntime.jsx(Icon.Icon, { className: clsx('dropdown__item_after', iconBadgeValue && 'dropdown__item_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_after_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] }) }), showDivider && (jsxRuntime.jsx(Divider.Divider, { width: "fill", direction: dividerDirection, size: dividerSize, fill: dividerFill }))] }));
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
exports.Dropdown = Dropdown;
|
|
209
|
+
exports.DropdownItem = DropdownItem;
|
|
210
|
+
exports.dropdownItemAppearance = dropdownItemAppearance;
|
|
211
|
+
exports.dropdownItemConfig = dropdownItemConfig;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React, { useRef, useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import clsx from 'clsx';
|
|
4
|
+
import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
|
|
5
|
+
import { useStyles } from './hooks/useStyles/useStyles.js';
|
|
6
|
+
import { I as Icon, B as Badge } from './Icon_es_D5eiycFI.js';
|
|
7
|
+
import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
|
|
8
|
+
import { D as Divider } from './Divider_es_BiYozVBS.js';
|
|
9
|
+
import { T as Text } from './Text_es_CnymlElo.js';
|
|
10
|
+
|
|
11
|
+
function Dropdown(props) {
|
|
12
|
+
const { className, appearance, animationClose = 'dropdown_animation_close', animationOpen = 'dropdown_animation_open', dropdownList, before, after, isOpen, isSkeleton, setIsOpen, onClickItem, children, } = props;
|
|
13
|
+
const dropdownRef = useRef(null);
|
|
14
|
+
// const [isOpen, setIsOpen] = useState(false)
|
|
15
|
+
const [animationState, setAnimationState] = useState({
|
|
16
|
+
className: '',
|
|
17
|
+
});
|
|
18
|
+
const onAnimationEnd = useCallback(() => {
|
|
19
|
+
// When component is change his visibility(display) in DOM,
|
|
20
|
+
// animation of close can run unnecessary on showing element.
|
|
21
|
+
// const dropdownElement = dropdownRef.current
|
|
22
|
+
setAnimationState((prevState) => ({
|
|
23
|
+
className: isOpen ? prevState.className : '',
|
|
24
|
+
}));
|
|
25
|
+
}, [isOpen]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (animationOpen && animationClose) {
|
|
28
|
+
setAnimationState(() => ({
|
|
29
|
+
className: isOpen ? animationOpen : animationClose,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
}, [isOpen, animationOpen, animationClose]);
|
|
33
|
+
// Close dropdown by click outside
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
// Add a handler to keep track of the click target.
|
|
36
|
+
function onClickWindow(event) {
|
|
37
|
+
const dropdownElement = dropdownRef.current;
|
|
38
|
+
if (dropdownElement && animationOpen) {
|
|
39
|
+
// Is event target inside of dropdown element
|
|
40
|
+
const isContainsTarget = dropdownElement.contains(event.target);
|
|
41
|
+
// Is dropdown element has "open" class
|
|
42
|
+
const hasOpenClass = dropdownElement.classList.contains(animationOpen);
|
|
43
|
+
if (!isContainsTarget && hasOpenClass) {
|
|
44
|
+
// Trigger close event with animation
|
|
45
|
+
// dropdownElement.click() - trigger "onClickWindow" again
|
|
46
|
+
setIsOpen(false);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Add event listener for current dropdown on first render
|
|
51
|
+
window.addEventListener('click', onClickWindow);
|
|
52
|
+
return () => {
|
|
53
|
+
// Remove event listener for current dropdown on unmount
|
|
54
|
+
window.removeEventListener('click', onClickWindow);
|
|
55
|
+
};
|
|
56
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
|
+
}, []);
|
|
58
|
+
const propsGenerator = useDevicePropsGenerator(props);
|
|
59
|
+
const { alignmentClass, fillClass, fillHoverClass, elevationClass, shapeClass, shapeStrengthClass, } = propsGenerator;
|
|
60
|
+
const { styles } = useStyles(props);
|
|
61
|
+
return (jsxs("div", { className: clsx(className, 'dropdown', alignmentClass && `alignment_${alignmentClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, elevationClass && `elevation_${elevationClass}`, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className), ref: dropdownRef, style: styles, children: [before, (children || dropdownList) && (jsxs("div", { className: clsx('dropdown__wrapper', fillClass && `fill_${fillClass}`, fillHoverClass && `fill_hover_${fillHoverClass}`),
|
|
62
|
+
// Add "onAnimationEnd" only for wrapper for ignore dropdown button
|
|
63
|
+
onAnimationEnd: onAnimationEnd, children: [dropdownList?.map((item) => (jsx(DropdownItem, { appearance: appearance, label: item.label, badgeValue: item.badgeValue, emptyMessage: item.emptyMessage, iconAfter: item.iconAfter, iconBefore: item.iconBefore, iconSrc: item.icon, isActive: item.isActive, isSkeleton: isSkeleton, onClick: item.onClick || ((event) => onClickItem?.(item, event)) }, item.key))), children] })), after] }));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const dropdownAppearanceAccent = {
|
|
67
|
+
accentPrimary: {
|
|
68
|
+
fill: 'accentPrimary',
|
|
69
|
+
fillActive: 'accentPrimaryActive',
|
|
70
|
+
fillActiveHover: 'accentHoverPrimary',
|
|
71
|
+
fillHover: 'accentHoverPrimary',
|
|
72
|
+
labelTextColor: 'accentTextPrimary',
|
|
73
|
+
labelTextColorActive: 'accentTextPrimary',
|
|
74
|
+
labelTextColorActiveHover: 'accentTextPrimary',
|
|
75
|
+
labelTextColorHover: 'accentTextPrimary',
|
|
76
|
+
badgeAppearance: 'surfacePrimary',
|
|
77
|
+
dividerFill: 'surfaceTertiary',
|
|
78
|
+
emptyMessageTextColor: 'accentTextPrimary',
|
|
79
|
+
iconAfterFillIcon: 'accentItemPrimary',
|
|
80
|
+
iconBeforeFillIcon: 'accentItemPrimary',
|
|
81
|
+
},
|
|
82
|
+
accentSecondary: {
|
|
83
|
+
fill: 'accentPrimary',
|
|
84
|
+
fillHover: 'accentPrimaryHover',
|
|
85
|
+
labelTextColor: 'accentTextSecondary',
|
|
86
|
+
labelTextColorHover: 'accentTextSecondary',
|
|
87
|
+
borderColor: 'accentBorderPrimary',
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const dropdownAppearanceSize = {
|
|
92
|
+
sizeL: {
|
|
93
|
+
size: 'l',
|
|
94
|
+
labelTextSize: 'm',
|
|
95
|
+
badgeSize: 'xs',
|
|
96
|
+
badgeTextSize: 'xs',
|
|
97
|
+
dividerSize: 's',
|
|
98
|
+
emptyMessageTextSize: 'm',
|
|
99
|
+
iconAfterFillSize: '24',
|
|
100
|
+
iconAfterSize: '24',
|
|
101
|
+
iconBeforeFillSize: '24',
|
|
102
|
+
iconBeforeSize: '24',
|
|
103
|
+
},
|
|
104
|
+
sizeS: {
|
|
105
|
+
size: 's',
|
|
106
|
+
labelTextSize: 's',
|
|
107
|
+
badgeSize: 'xs',
|
|
108
|
+
badgeTextSize: 'xs',
|
|
109
|
+
dividerSize: 's',
|
|
110
|
+
emptyMessageTextSize: 'm',
|
|
111
|
+
iconAfterFillSize: '16',
|
|
112
|
+
iconAfterSize: '16',
|
|
113
|
+
iconBeforeFillSize: '16',
|
|
114
|
+
iconBeforeSize: '16',
|
|
115
|
+
},
|
|
116
|
+
sizeXS: {
|
|
117
|
+
size: 'xs',
|
|
118
|
+
labelTextSize: 'xs',
|
|
119
|
+
badgeSize: 'xs',
|
|
120
|
+
badgeTextSize: 'xs',
|
|
121
|
+
dividerSize: 's',
|
|
122
|
+
emptyMessageTextSize: 'xs',
|
|
123
|
+
iconAfterFillSize: '12',
|
|
124
|
+
iconAfterSize: '12',
|
|
125
|
+
iconBeforeFillSize: '12',
|
|
126
|
+
iconBeforeSize: '12',
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const dropdownAppearanceStyle = {
|
|
131
|
+
solid: {
|
|
132
|
+
borderColor: 'none',
|
|
133
|
+
},
|
|
134
|
+
outlined: {
|
|
135
|
+
fill: 'none',
|
|
136
|
+
},
|
|
137
|
+
full: {},
|
|
138
|
+
ghost: {
|
|
139
|
+
fill: 'none',
|
|
140
|
+
borderColor: 'none',
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const dropdownAppearanceSurface = {
|
|
145
|
+
surfacePrimary: {
|
|
146
|
+
fill: 'surfacePrimary',
|
|
147
|
+
fillActive: 'surfacePrimaryActive',
|
|
148
|
+
fillHover: 'surfaceHoverPrimary',
|
|
149
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
150
|
+
labelTextColorActive: 'surfaceTextPrimary',
|
|
151
|
+
labelTextColorActiveHover: 'surfaceTextPrimary',
|
|
152
|
+
labelTextColorHover: 'surfaceTextPrimary',
|
|
153
|
+
badgeAppearance: 'accentPrimary',
|
|
154
|
+
dividerFill: 'surfaceTertiary',
|
|
155
|
+
emptyMessageTextColor: 'surfaceTextPrimary',
|
|
156
|
+
iconAfterFillIcon: 'surfaceItemPrimary',
|
|
157
|
+
iconBeforeFillIcon: 'surfaceItemPrimary',
|
|
158
|
+
},
|
|
159
|
+
surfaceSecondary: {
|
|
160
|
+
fill: 'surfaceSecondary',
|
|
161
|
+
fillHover: 'surfaceSecondaryHover',
|
|
162
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
163
|
+
loaderFill: 'surfaceSecondary',
|
|
164
|
+
loaderItemFill: 'surfaceItemPrimary',
|
|
165
|
+
},
|
|
166
|
+
surfaceTertiary: {
|
|
167
|
+
fill: 'surfaceTertiary',
|
|
168
|
+
fillHover: 'surfaceTertiaryHover',
|
|
169
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
170
|
+
},
|
|
171
|
+
surfaceQuaternary: {
|
|
172
|
+
fill: 'surfaceQuaternary',
|
|
173
|
+
fillHover: 'surfaceQuaternaryHover',
|
|
174
|
+
labelTextColor: 'surfaceTextPrimary',
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
const dropdownItemAppearance = {
|
|
179
|
+
...dropdownAppearanceSurface,
|
|
180
|
+
...dropdownAppearanceStyle,
|
|
181
|
+
...dropdownAppearanceAccent,
|
|
182
|
+
...dropdownAppearanceSize,
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const dropdownItemConfig = {
|
|
186
|
+
appearance: dropdownItemAppearance,
|
|
187
|
+
setAppearance: (appearanceConfig) => {
|
|
188
|
+
dropdownItemConfig.appearance = appearanceConfig;
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
function DropdownItem(props) {
|
|
192
|
+
const { className, appearance, label, desc, isDisabled, badgeValue, emptyMessage, showDivider, before, after, isActive, isHover, isSkeleton, onClick, onMouseEnter, children, } = props;
|
|
193
|
+
const appearanceConfig = useAppearanceConfig(appearance, dropdownItemConfig);
|
|
194
|
+
const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
|
|
195
|
+
const { directionClass, justifyContentClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, labelTextAlign, labelTextColor, labelTextColorActive, labelTextColorActiveHover, labelTextColorHover, labelTextSize, labelTextStyle, labelTextWeight, labelTextWrap, descTextColor, descTextColorHover, descTextGradient, descTextSize, descTextStyle, descTextWeight, descTextWrap, badgeAppearance, badgeShape, badgeSize, badgeTextColor, badgeTextSize, dividerDirection, dividerFill, dividerSize, emptyMessageTextColor, emptyMessageTextColorHover, emptyMessageTextSize, emptyMessageTextStyle, emptyMessageTextWeight, emptyMessageTextWrap, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, sizeClass, widthClass, } = propsGenerator;
|
|
196
|
+
// @ts-expect-error
|
|
197
|
+
const { styles: dropdownItem } = useStyles(props);
|
|
198
|
+
return (jsxs("div", { className: clsx('dropdown__item', isActive && 'dropdown__item_state_active', isHover && 'dropdown__item_state_hover', directionClass && `dropdown__item_direction_${directionClass}`, className, !isActive
|
|
199
|
+
? fillClass && `fill_${fillClass}`
|
|
200
|
+
: fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
|
|
201
|
+
? fillHoverClass && `fill_hover_${fillHoverClass}`
|
|
202
|
+
: fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, fillDisabledClass && `fill_disabled_${fillDisabledClass}`, sizeClass && `dropdown__item_size_${sizeClass}`, shapeClass && `dropdown__item_shape_${shapeClass}`, widthClass && `dropdown__item_width_${widthClass}`, isDisabled && `dropdown__item_state_disabled`, onClick && 'cursor_type_pointer', isSkeleton && `dropdown__item_skeleton`, justifyContentClass &&
|
|
203
|
+
`dropdown__item_justify-content_${justifyContentClass}`), style: dropdownItem, onClick: onClick, onMouseEnter: onMouseEnter, children: [jsx("div", { className: "dropdown__item-wrapper", children: jsxs(React.Fragment, { children: [before, (iconBefore || iconBeforeSrc) && (jsx(Icon, { className: clsx('dropdown__item_before', iconBadgeValue && 'dropdown__item_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), children || (jsxs(React.Fragment, { children: [label && (jsx(Text, { className: "dropdown__item-label", size: labelTextSize, textAlign: labelTextAlign, textColor: !isActive && labelTextColor, textColorActive: "accentTextPrimary", textColorActive: isActive && labelTextColorActive, textColorHover: !isActive && labelTextColorHover, textColorHoverActive: isActive && labelTextColorActiveHover, textStyle: labelTextStyle, textWeight: labelTextWeight, textWrap: labelTextWrap, isActive: isActive, children: label })), badgeValue && (jsx(Badge, { appearance: badgeAppearance, size: badgeSize, textColor: badgeTextColor, textSize: badgeTextSize, shape: badgeShape, value: badgeValue })), desc && (jsx(Text, { className: "dropdown__item-desc", size: descTextSize, textColor: descTextColor, textColorGradient: descTextGradient, textColorHover: descTextColorHover, textStyle: descTextStyle, textWeight: descTextWeight, textWrap: descTextWrap, isActive: isActive, children: desc })), emptyMessage && (jsx(Text, { className: "dropdown__item", size: emptyMessageTextSize, textColor: emptyMessageTextColor, textColorHover: emptyMessageTextColorHover, textStyle: emptyMessageTextStyle, textWeight: emptyMessageTextWeight, textWrap: emptyMessageTextWrap, isActive: isActive, children: emptyMessage }))] })), after, (iconAfter || iconAfterSrc) && (jsx(Icon, { className: clsx('dropdown__item_after', iconBadgeValue && 'dropdown__item_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_after_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] }) }), showDivider && (jsx(Divider, { width: "fill", direction: dividerDirection, size: dividerSize, fill: dividerFill }))] }));
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export { Dropdown as D, DropdownItem as a, dropdownItemConfig as b, dropdownItemAppearance as d };
|