@megafon/ui-core 5.8.0 → 5.9.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/CHANGELOG.md +31 -0
- package/dist/es/components/{Chip → Chips}/Chip.css +53 -32
- package/dist/es/components/Chips/Chip.d.ts +74 -0
- package/dist/es/components/{Chip → Chips}/Chip.js +45 -6
- package/dist/es/components/Chips/Chips.css +19 -0
- package/dist/es/components/Chips/Chips.d.ts +27 -0
- package/dist/es/components/Chips/Chips.js +129 -0
- package/dist/es/components/Chips/components/ChipsDropdown.css +106 -0
- package/dist/es/components/Chips/components/ChipsDropdown.d.ts +16 -0
- package/dist/es/components/Chips/components/ChipsDropdown.js +101 -0
- package/dist/es/components/ContentView/ContentView.css +61 -0
- package/dist/es/components/ContentView/ContentView.d.ts +49 -0
- package/dist/es/components/ContentView/ContentView.js +103 -0
- package/dist/es/components/ContentView/i/alarm.png +0 -0
- package/dist/es/components/ContentView/i/empty.png +0 -0
- package/dist/es/components/ContentView/i/error.png +0 -0
- package/dist/es/components/ContentView/i/fail.png +0 -0
- package/dist/es/components/ContentView/i/searchNoResult.png +0 -0
- package/dist/es/components/ContentView/i/submit.png +0 -0
- package/dist/es/components/ContentView/i/success.png +0 -0
- package/dist/es/components/ContentView/i/update.png +0 -0
- package/dist/es/components/ContentView/i/waiting.png +0 -0
- package/dist/es/components/Sliders/Slider/Slider.css +127 -0
- package/dist/es/components/Sliders/Slider/Slider.d.ts +41 -0
- package/dist/es/components/Sliders/Slider/Slider.js +126 -0
- package/dist/es/components/Sliders/SliderRange/SliderRange.css +154 -0
- package/dist/es/components/Sliders/SliderRange/SliderRange.d.ts +49 -0
- package/dist/es/components/Sliders/SliderRange/SliderRange.js +227 -0
- package/dist/es/components/Sliders/SliderRange/helpers.d.ts +6 -0
- package/dist/es/components/Sliders/SliderRange/helpers.js +31 -0
- package/dist/es/components/Sliders/SliderRatio/SliderRatio.css +209 -0
- package/dist/es/components/Sliders/SliderRatio/SliderRatio.d.ts +42 -0
- package/dist/es/components/Sliders/SliderRatio/SliderRatio.js +206 -0
- package/dist/es/components/Sliders/SliderRatio/helpers.d.ts +15 -0
- package/dist/es/components/Sliders/SliderRatio/helpers.js +32 -0
- package/dist/es/components/Sliders/SliderRatio/i/thumb.png +0 -0
- package/dist/es/components/Sliders/SliderRatio/types.d.ts +8 -0
- package/dist/es/components/Sliders/SliderRatio/types.js +6 -0
- package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.css +83 -0
- package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.d.ts +23 -0
- package/dist/es/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.js +82 -0
- package/dist/es/components/Sliders/components/SliderScale/SliderScale.css +15 -0
- package/dist/es/components/Sliders/components/SliderScale/SliderScale.d.ts +19 -0
- package/dist/es/components/Sliders/components/SliderScale/SliderScale.js +51 -0
- package/dist/es/components/Sliders/components/SliderScale/helpers.d.ts +2 -0
- package/dist/es/components/Sliders/components/SliderScale/helpers.js +39 -0
- package/dist/es/components/Sliders/helpers.d.ts +2 -0
- package/dist/es/components/Sliders/helpers.js +33 -0
- package/dist/es/components/Switcher/Switcher.css +13 -0
- package/dist/es/components/Switcher/Switcher.d.ts +3 -1
- package/dist/es/components/Switcher/Switcher.js +5 -1
- package/dist/es/components/Tabs/Tabs.css +11 -3
- package/dist/es/components/TextField/i/textarea-resizer.svg +1 -0
- package/dist/es/index.d.ts +9 -2
- package/dist/es/index.js +9 -2
- package/dist/lib/components/{Chip → Chips}/Chip.css +53 -32
- package/dist/lib/components/Chips/Chip.d.ts +74 -0
- package/dist/lib/components/{Chip → Chips}/Chip.js +49 -7
- package/dist/lib/components/Chips/Chips.css +19 -0
- package/dist/lib/components/Chips/Chips.d.ts +27 -0
- package/dist/lib/components/Chips/Chips.js +159 -0
- package/dist/lib/components/Chips/components/ChipsDropdown.css +106 -0
- package/dist/lib/components/Chips/components/ChipsDropdown.d.ts +16 -0
- package/dist/lib/components/Chips/components/ChipsDropdown.js +131 -0
- package/dist/lib/components/ContentView/ContentView.css +61 -0
- package/dist/lib/components/ContentView/ContentView.d.ts +49 -0
- package/dist/lib/components/ContentView/ContentView.js +133 -0
- package/dist/lib/components/ContentView/i/alarm.png +0 -0
- package/dist/lib/components/ContentView/i/empty.png +0 -0
- package/dist/lib/components/ContentView/i/error.png +0 -0
- package/dist/lib/components/ContentView/i/fail.png +0 -0
- package/dist/lib/components/ContentView/i/searchNoResult.png +0 -0
- package/dist/lib/components/ContentView/i/submit.png +0 -0
- package/dist/lib/components/ContentView/i/success.png +0 -0
- package/dist/lib/components/ContentView/i/update.png +0 -0
- package/dist/lib/components/ContentView/i/waiting.png +0 -0
- package/dist/lib/components/Sliders/Slider/Slider.css +127 -0
- package/dist/lib/components/Sliders/Slider/Slider.d.ts +41 -0
- package/dist/lib/components/Sliders/Slider/Slider.js +150 -0
- package/dist/lib/components/Sliders/SliderRange/SliderRange.css +154 -0
- package/dist/lib/components/Sliders/SliderRange/SliderRange.d.ts +49 -0
- package/dist/lib/components/Sliders/SliderRange/SliderRange.js +252 -0
- package/dist/lib/components/Sliders/SliderRange/helpers.d.ts +6 -0
- package/dist/lib/components/Sliders/SliderRange/helpers.js +48 -0
- package/dist/lib/components/Sliders/SliderRatio/SliderRatio.css +209 -0
- package/dist/lib/components/Sliders/SliderRatio/SliderRatio.d.ts +42 -0
- package/dist/lib/components/Sliders/SliderRatio/SliderRatio.js +237 -0
- package/dist/lib/components/Sliders/SliderRatio/helpers.d.ts +15 -0
- package/dist/lib/components/Sliders/SliderRatio/helpers.js +58 -0
- package/dist/lib/components/Sliders/SliderRatio/i/thumb.png +0 -0
- package/dist/lib/components/Sliders/SliderRatio/types.d.ts +8 -0
- package/dist/lib/components/Sliders/SliderRatio/types.js +13 -0
- package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.css +83 -0
- package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.d.ts +23 -0
- package/dist/lib/components/Sliders/components/SliderDisplayValue/SliderDisplayValue.js +104 -0
- package/dist/lib/components/Sliders/components/SliderScale/SliderScale.css +15 -0
- package/dist/lib/components/Sliders/components/SliderScale/SliderScale.d.ts +19 -0
- package/dist/lib/components/Sliders/components/SliderScale/SliderScale.js +74 -0
- package/dist/lib/components/Sliders/components/SliderScale/helpers.d.ts +2 -0
- package/dist/lib/components/Sliders/components/SliderScale/helpers.js +60 -0
- package/dist/lib/components/Sliders/helpers.d.ts +2 -0
- package/dist/lib/components/Sliders/helpers.js +47 -0
- package/dist/lib/components/Switcher/Switcher.css +13 -0
- package/dist/lib/components/Switcher/Switcher.d.ts +3 -1
- package/dist/lib/components/Switcher/Switcher.js +5 -1
- package/dist/lib/components/Tabs/Tabs.css +11 -3
- package/dist/lib/components/TextField/i/textarea-resizer.svg +1 -0
- package/dist/lib/index.d.ts +9 -2
- package/dist/lib/index.js +65 -9
- package/package.json +5 -4
- package/dist/es/components/Chip/Chip.d.ts +0 -36
- package/dist/lib/components/Chip/Chip.d.ts +0 -36
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,37 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [5.9.1](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.9.0...@megafon/ui-core@5.9.1) (2024-04-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **chips:** fix constant import ([a16067b](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/a16067b2269179491e8f0e38a2c228a1cb2f7ffa))
|
|
12
|
+
* **contentview:** fix image imports ([2170756](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/217075677f6b57712a6fe48cdf443a31e4f86e2c))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# [5.9.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.8.0...@megafon/ui-core@5.9.0) (2024-04-08)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **tabs:** change tab color for dark theme ([5618d4b](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/5618d4b7f5a9ae862fad380691f9b3414a0fb3a0))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* **chips:** add features to Chips ([2684b97](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/2684b974fe868ea2e869fec168ed6bced2f6b75e))
|
|
29
|
+
* **contentview:** add new component ContentView ([f2419dc](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/f2419dc1a659da427a306d41edd3fb67a123d25d))
|
|
30
|
+
* **sliders:** add new components: Slider, SliderRatio, SliderRange ([4e03e12](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/4e03e12b587637e3e2abbe2638b5adaf4b88c00c))
|
|
31
|
+
* **switcher:** add new prop theme ([2959b87](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/2959b87726cafeb2ee25e5ba50317c7423b9aa6e))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
6
37
|
# [5.8.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-core@5.7.1...@megafon/ui-core@5.8.0) (2024-04-01)
|
|
7
38
|
|
|
8
39
|
|
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
align-items: center;
|
|
12
12
|
-webkit-box-sizing: border-box;
|
|
13
13
|
box-sizing: border-box;
|
|
14
|
-
min-width: -webkit-fit-content;
|
|
15
|
-
min-width: -moz-fit-content;
|
|
16
|
-
min-width: fit-content;
|
|
17
14
|
padding: 8px 20px;
|
|
18
15
|
border: none;
|
|
19
16
|
border-radius: 20px;
|
|
@@ -43,6 +40,47 @@
|
|
|
43
40
|
.mfui-chip:hover {
|
|
44
41
|
background-color: var(--spbSky1);
|
|
45
42
|
}
|
|
43
|
+
.mfui-chip__inner {
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
white-space: nowrap;
|
|
46
|
+
text-overflow: ellipsis;
|
|
47
|
+
}
|
|
48
|
+
.mfui-chip__counter {
|
|
49
|
+
display: -webkit-inline-box;
|
|
50
|
+
display: -ms-inline-flexbox;
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
-webkit-box-align: center;
|
|
53
|
+
-ms-flex-align: center;
|
|
54
|
+
align-items: center;
|
|
55
|
+
margin-left: 6px;
|
|
56
|
+
color: var(--spbSky3);
|
|
57
|
+
}
|
|
58
|
+
@media screen and (max-width: 767px) {
|
|
59
|
+
.mfui-chip__counter {
|
|
60
|
+
margin-left: 4px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
.mfui-chip__icon,
|
|
64
|
+
.mfui-chip__icon-arrow {
|
|
65
|
+
display: block;
|
|
66
|
+
width: 20px;
|
|
67
|
+
min-width: 20px;
|
|
68
|
+
max-height: 20px;
|
|
69
|
+
}
|
|
70
|
+
.mfui-chip__icon svg,
|
|
71
|
+
.mfui-chip__icon-arrow svg {
|
|
72
|
+
display: block;
|
|
73
|
+
width: 100%;
|
|
74
|
+
height: 100%;
|
|
75
|
+
}
|
|
76
|
+
.mfui-chip__icon {
|
|
77
|
+
margin-right: 6px;
|
|
78
|
+
}
|
|
79
|
+
@media screen and (max-width: 767px) {
|
|
80
|
+
.mfui-chip__icon {
|
|
81
|
+
margin-right: 4px;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
46
84
|
.mfui-chip_disabled,
|
|
47
85
|
.mfui-chip_disabled:hover {
|
|
48
86
|
color: var(--spbSky3);
|
|
@@ -54,6 +92,10 @@
|
|
|
54
92
|
.mfui-chip_disabled:hover svg {
|
|
55
93
|
fill: var(--spbSky3);
|
|
56
94
|
}
|
|
95
|
+
.mfui-chip_disabled .mfui-chip__counter,
|
|
96
|
+
.mfui-chip_disabled:hover .mfui-chip__counter {
|
|
97
|
+
color: var(--spbSky2);
|
|
98
|
+
}
|
|
57
99
|
.mfui-chip_checked,
|
|
58
100
|
.mfui-chip_checked:hover {
|
|
59
101
|
color: var(--stcWhite);
|
|
@@ -63,6 +105,10 @@
|
|
|
63
105
|
.mfui-chip_checked:hover svg {
|
|
64
106
|
fill: var(--stcWhite);
|
|
65
107
|
}
|
|
108
|
+
.mfui-chip_checked .mfui-chip__counter,
|
|
109
|
+
.mfui-chip_checked:hover .mfui-chip__counter {
|
|
110
|
+
color: var(--stcWhite);
|
|
111
|
+
}
|
|
66
112
|
.mfui-chip_checked.mfui-chip_color_black,
|
|
67
113
|
.mfui-chip_checked.mfui-chip_color_black:hover {
|
|
68
114
|
color: var(--base);
|
|
@@ -72,6 +118,10 @@
|
|
|
72
118
|
.mfui-chip_checked.mfui-chip_color_black:hover svg {
|
|
73
119
|
fill: var(--base);
|
|
74
120
|
}
|
|
121
|
+
.mfui-chip_checked.mfui-chip_color_black .mfui-chip__counter,
|
|
122
|
+
.mfui-chip_checked.mfui-chip_color_black:hover .mfui-chip__counter {
|
|
123
|
+
color: var(--base);
|
|
124
|
+
}
|
|
75
125
|
.mfui-chip_with-icon {
|
|
76
126
|
padding-left: 16px;
|
|
77
127
|
}
|
|
@@ -80,32 +130,3 @@
|
|
|
80
130
|
padding-left: 8px;
|
|
81
131
|
}
|
|
82
132
|
}
|
|
83
|
-
.mfui-chip__inner {
|
|
84
|
-
display: -webkit-inline-box;
|
|
85
|
-
display: -ms-inline-flexbox;
|
|
86
|
-
display: inline-flex;
|
|
87
|
-
-webkit-box-align: center;
|
|
88
|
-
-ms-flex-align: center;
|
|
89
|
-
align-items: center;
|
|
90
|
-
-webkit-box-pack: center;
|
|
91
|
-
-ms-flex-pack: center;
|
|
92
|
-
justify-content: center;
|
|
93
|
-
white-space: nowrap;
|
|
94
|
-
}
|
|
95
|
-
.mfui-chip__icon {
|
|
96
|
-
display: block;
|
|
97
|
-
width: 20px;
|
|
98
|
-
min-width: 20px;
|
|
99
|
-
max-height: 20px;
|
|
100
|
-
margin-right: 6px;
|
|
101
|
-
}
|
|
102
|
-
@media screen and (max-width: 767px) {
|
|
103
|
-
.mfui-chip__icon {
|
|
104
|
-
margin-right: 4px;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
.mfui-chip__icon svg {
|
|
108
|
-
display: block;
|
|
109
|
-
width: 100%;
|
|
110
|
-
height: 100%;
|
|
111
|
-
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React, { Ref } from 'react';
|
|
2
|
+
import * as PropTypes from 'prop-types';
|
|
3
|
+
import './Chip.less';
|
|
4
|
+
export declare type ChipIdType = number | string;
|
|
5
|
+
export declare const ChipColors: {
|
|
6
|
+
readonly DEFAULT: "default";
|
|
7
|
+
readonly BLACK: "black";
|
|
8
|
+
};
|
|
9
|
+
export declare type ChipColorsType = typeof ChipColors[keyof typeof ChipColors];
|
|
10
|
+
export declare const ChipArrow: {
|
|
11
|
+
readonly UP: "up";
|
|
12
|
+
readonly DOWN: "down";
|
|
13
|
+
};
|
|
14
|
+
export declare type ChipArrowType = typeof ChipArrow[keyof typeof ChipArrow];
|
|
15
|
+
export interface IChipProps {
|
|
16
|
+
/** Идентификатор */
|
|
17
|
+
id: ChipIdType;
|
|
18
|
+
/** Набор цветов для компонента */
|
|
19
|
+
color?: ChipColorsType;
|
|
20
|
+
/** Отображение в отмеченном (зажатом) состоянии */
|
|
21
|
+
checked?: boolean;
|
|
22
|
+
/** Отключенное состояние */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Иконка */
|
|
25
|
+
icon?: JSX.Element;
|
|
26
|
+
/** Значение счетчика */
|
|
27
|
+
counterValue?: number;
|
|
28
|
+
/** Стрелка вверх или вниз */
|
|
29
|
+
arrow?: ChipArrowType;
|
|
30
|
+
/** Обработчик нажатия */
|
|
31
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>, id?: ChipIdType) => void;
|
|
32
|
+
/** Дочерние элементы */
|
|
33
|
+
children?: React.ReactNode;
|
|
34
|
+
/** Дополнительный класс корневого элемента */
|
|
35
|
+
className?: string;
|
|
36
|
+
/** Дополнительные классы для внутренних элементов */
|
|
37
|
+
classes?: {
|
|
38
|
+
root?: string;
|
|
39
|
+
inner?: string;
|
|
40
|
+
icon?: string;
|
|
41
|
+
counter?: string;
|
|
42
|
+
};
|
|
43
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
|
44
|
+
dataAttrs?: {
|
|
45
|
+
root?: Record<string, string>;
|
|
46
|
+
inner?: Record<string, string>;
|
|
47
|
+
icon?: Record<string, string>;
|
|
48
|
+
counter?: Record<string, string>;
|
|
49
|
+
arrow?: Record<string, string>;
|
|
50
|
+
};
|
|
51
|
+
/** Ссылка на элемент */
|
|
52
|
+
rootRef?: Ref<HTMLButtonElement>;
|
|
53
|
+
}
|
|
54
|
+
declare const Chip: React.FC<IChipProps>;
|
|
55
|
+
export declare const ChipPropType: {
|
|
56
|
+
id: PropTypes.Validator<string | number>;
|
|
57
|
+
color: PropTypes.Requireable<"default" | "black">;
|
|
58
|
+
checked: PropTypes.Requireable<boolean>;
|
|
59
|
+
disabled: PropTypes.Requireable<boolean>;
|
|
60
|
+
icon: PropTypes.Requireable<PropTypes.ReactElementLike>;
|
|
61
|
+
counterValue: PropTypes.Requireable<number>;
|
|
62
|
+
arrow: PropTypes.Requireable<"down" | "up">;
|
|
63
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
64
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
65
|
+
className: PropTypes.Requireable<string>;
|
|
66
|
+
classes: PropTypes.Requireable<{
|
|
67
|
+
[x: string]: string | null | undefined;
|
|
68
|
+
}>;
|
|
69
|
+
dataAttrs: PropTypes.Requireable<{
|
|
70
|
+
[x: string]: object | null | undefined;
|
|
71
|
+
}>;
|
|
72
|
+
rootRef: PropTypes.Requireable<any>;
|
|
73
|
+
};
|
|
74
|
+
export default Chip;
|
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import "core-js/modules/es.object.values.js";
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
|
|
4
5
|
import * as PropTypes from 'prop-types';
|
|
5
6
|
import "./Chip.css";
|
|
7
|
+
|
|
8
|
+
var ArrowDown = function ArrowDown(props) {
|
|
9
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
10
|
+
viewBox: "0 0 20 20"
|
|
11
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
12
|
+
d: "M6 8h8l-4 5z",
|
|
13
|
+
fillRule: "evenodd",
|
|
14
|
+
clipRule: "evenodd"
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
var ArrowUp = function ArrowUp(props) {
|
|
19
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
20
|
+
viewBox: "0 0 20 20"
|
|
21
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
|
22
|
+
d: "M14 12H6l4-5z",
|
|
23
|
+
fillRule: "evenodd",
|
|
24
|
+
clipRule: "evenodd"
|
|
25
|
+
}));
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export var ChipColors = {
|
|
29
|
+
DEFAULT: 'default',
|
|
30
|
+
BLACK: 'black'
|
|
31
|
+
};
|
|
32
|
+
export var ChipArrow = {
|
|
33
|
+
UP: 'up',
|
|
34
|
+
DOWN: 'down'
|
|
35
|
+
};
|
|
6
36
|
var cn = cnCreate('mfui-chip');
|
|
7
37
|
|
|
8
38
|
var Chip = function Chip(_ref) {
|
|
@@ -14,6 +44,8 @@ var Chip = function Chip(_ref) {
|
|
|
14
44
|
_ref$disabled = _ref.disabled,
|
|
15
45
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
16
46
|
icon = _ref.icon,
|
|
47
|
+
counterValue = _ref.counterValue,
|
|
48
|
+
arrow = _ref.arrow,
|
|
17
49
|
onClick = _ref.onClick,
|
|
18
50
|
children = _ref.children,
|
|
19
51
|
className = _ref.className,
|
|
@@ -40,22 +72,29 @@ var Chip = function Chip(_ref) {
|
|
|
40
72
|
className: cn('icon', [classes.icon])
|
|
41
73
|
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.icon)), icon), /*#__PURE__*/React.createElement("span", _extends({
|
|
42
74
|
className: cn('inner', [classes.inner])
|
|
43
|
-
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), children)
|
|
75
|
+
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.inner)), children), !!counterValue && /*#__PURE__*/React.createElement("span", _extends({
|
|
76
|
+
className: cn('counter', [classes.counter])
|
|
77
|
+
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.counter)), counterValue), !!arrow && /*#__PURE__*/React.createElement("div", _extends({
|
|
78
|
+
className: cn('icon-arrow')
|
|
79
|
+
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.arrow)), arrow === 'up' ? /*#__PURE__*/React.createElement(ArrowUp, null) : /*#__PURE__*/React.createElement(ArrowDown, null)));
|
|
44
80
|
};
|
|
45
81
|
|
|
46
|
-
|
|
47
|
-
id: PropTypes.string.isRequired,
|
|
48
|
-
color: PropTypes.oneOf(
|
|
82
|
+
export var ChipPropType = {
|
|
83
|
+
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
|
84
|
+
color: PropTypes.oneOf(Object.values(ChipColors)),
|
|
49
85
|
checked: PropTypes.bool,
|
|
50
86
|
disabled: PropTypes.bool,
|
|
51
87
|
icon: PropTypes.element,
|
|
88
|
+
counterValue: PropTypes.number,
|
|
89
|
+
arrow: PropTypes.oneOf(Object.values(ChipArrow)),
|
|
90
|
+
onClick: PropTypes.func,
|
|
91
|
+
children: PropTypes.node,
|
|
52
92
|
className: PropTypes.string,
|
|
53
93
|
classes: PropTypes.objectOf(PropTypes.string),
|
|
54
94
|
dataAttrs: PropTypes.objectOf(PropTypes.object),
|
|
55
|
-
onClick: PropTypes.func,
|
|
56
|
-
children: PropTypes.node,
|
|
57
95
|
rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
|
|
58
96
|
current: PropTypes.elementType
|
|
59
97
|
}), PropTypes.any])])
|
|
60
98
|
};
|
|
99
|
+
Chip.propTypes = ChipPropType;
|
|
61
100
|
export default Chip;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.mfui-chips {
|
|
2
|
+
display: -webkit-box;
|
|
3
|
+
display: -ms-flexbox;
|
|
4
|
+
display: flex;
|
|
5
|
+
-ms-flex-wrap: wrap;
|
|
6
|
+
flex-wrap: wrap;
|
|
7
|
+
gap: 12px;
|
|
8
|
+
width: 100%;
|
|
9
|
+
}
|
|
10
|
+
@media screen and (max-width: 767px) {
|
|
11
|
+
.mfui-chips {
|
|
12
|
+
gap: 8px;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
.mfui-chips_hidden {
|
|
16
|
+
display: grid;
|
|
17
|
+
grid-template-columns: repeat(auto-fit, minMax(0, -webkit-min-content));
|
|
18
|
+
grid-template-columns: repeat(auto-fit, minMax(0, min-content));
|
|
19
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ChipColorsType, ChipIdType, IChipProps } from './Chip';
|
|
3
|
+
import './Chips.less';
|
|
4
|
+
export interface IChipsProps {
|
|
5
|
+
/** Массив элементов */
|
|
6
|
+
items: IChipProps[];
|
|
7
|
+
/** Значение */
|
|
8
|
+
value: ChipIdType;
|
|
9
|
+
/** Цвет активного элемента */
|
|
10
|
+
color?: ChipColorsType;
|
|
11
|
+
/** Количество отображаемых элементов на всех разрешениях экрана */
|
|
12
|
+
visibleItemsCountAll?: number;
|
|
13
|
+
/** Количество отображаемых элементов на разрешении 768 - 1023 */
|
|
14
|
+
visibleItemsCountTablet?: number;
|
|
15
|
+
/** Количество отображаемых элементов на разрешении 1024 - 1279 */
|
|
16
|
+
visibleItemsCountDesktop?: number;
|
|
17
|
+
/** Количество отображаемых элементов на разрешении 1280+ */
|
|
18
|
+
visibleItemsCountWide?: number;
|
|
19
|
+
/** Название дополнительной кнопки */
|
|
20
|
+
moreTitle?: string;
|
|
21
|
+
/** Обработчик изменения значения */
|
|
22
|
+
onChange?: (id: ChipIdType, e?: React.SyntheticEvent<EventTarget>) => void;
|
|
23
|
+
/** Дополнительный класс корневого элемента */
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
declare const Chips: React.FC<IChipsProps>;
|
|
27
|
+
export default Chips;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import "core-js/modules/es.array.slice.js";
|
|
4
|
+
import "core-js/modules/es.array.map.js";
|
|
5
|
+
import "core-js/modules/es.object.values.js";
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { breakpoints, cnCreate } from '@megafon/ui-helpers';
|
|
8
|
+
import throttleTime from '@megafon/ui-shared/src/constants/throttleTime';
|
|
9
|
+
import throttle from 'lodash.throttle';
|
|
10
|
+
import * as PropTypes from 'prop-types';
|
|
11
|
+
import Chip, { ChipColors, ChipPropType } from "./Chip";
|
|
12
|
+
import ChipsDropdown from "./components/ChipsDropdown";
|
|
13
|
+
import "./Chips.css";
|
|
14
|
+
var DESKTOP_SMALL_START = breakpoints.DESKTOP_SMALL_START,
|
|
15
|
+
DESKTOP_MIDDLE_START = breakpoints.DESKTOP_MIDDLE_START,
|
|
16
|
+
MOBILE_BIG_START = breakpoints.MOBILE_BIG_START;
|
|
17
|
+
var cn = cnCreate('mfui-chips');
|
|
18
|
+
|
|
19
|
+
var Chips = function Chips(_ref) {
|
|
20
|
+
var items = _ref.items,
|
|
21
|
+
value = _ref.value,
|
|
22
|
+
_ref$color = _ref.color,
|
|
23
|
+
color = _ref$color === void 0 ? 'default' : _ref$color,
|
|
24
|
+
_ref$moreTitle = _ref.moreTitle,
|
|
25
|
+
moreTitle = _ref$moreTitle === void 0 ? 'Еще' : _ref$moreTitle,
|
|
26
|
+
visibleItemsCountAll = _ref.visibleItemsCountAll,
|
|
27
|
+
visibleItemsCountTablet = _ref.visibleItemsCountTablet,
|
|
28
|
+
visibleItemsCountDesktop = _ref.visibleItemsCountDesktop,
|
|
29
|
+
visibleItemsCountWide = _ref.visibleItemsCountWide,
|
|
30
|
+
onChange = _ref.onChange,
|
|
31
|
+
className = _ref.className;
|
|
32
|
+
|
|
33
|
+
var _React$useState = React.useState(value),
|
|
34
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
35
|
+
selectedId = _React$useState2[0],
|
|
36
|
+
setSelectedId = _React$useState2[1];
|
|
37
|
+
|
|
38
|
+
var _React$useState3 = React.useState(visibleItemsCountAll),
|
|
39
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
40
|
+
visibleItemsCount = _React$useState4[0],
|
|
41
|
+
setVisibleItemsCount = _React$useState4[1];
|
|
42
|
+
|
|
43
|
+
var _React$useState5 = React.useState([]),
|
|
44
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
45
|
+
visibleItems = _React$useState6[0],
|
|
46
|
+
setVisibleItems = _React$useState6[1];
|
|
47
|
+
|
|
48
|
+
var _React$useState7 = React.useState(null),
|
|
49
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
50
|
+
hiddenItems = _React$useState8[0],
|
|
51
|
+
setHiddenItems = _React$useState8[1];
|
|
52
|
+
|
|
53
|
+
var handleClick = React.useCallback(function (e, id) {
|
|
54
|
+
e.persist();
|
|
55
|
+
setSelectedId(id);
|
|
56
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(id, e);
|
|
57
|
+
}, [onChange]);
|
|
58
|
+
React.useEffect(function () {
|
|
59
|
+
var resizeHandler = function resizeHandler() {
|
|
60
|
+
var windowWidth = window.innerWidth;
|
|
61
|
+
|
|
62
|
+
if (visibleItemsCountWide && windowWidth >= DESKTOP_MIDDLE_START) {
|
|
63
|
+
setVisibleItemsCount(visibleItemsCountWide);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (visibleItemsCountDesktop && windowWidth >= DESKTOP_SMALL_START && windowWidth < DESKTOP_MIDDLE_START) {
|
|
68
|
+
setVisibleItemsCount(visibleItemsCountDesktop);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (visibleItemsCountTablet && windowWidth >= MOBILE_BIG_START && windowWidth < DESKTOP_SMALL_START) {
|
|
73
|
+
setVisibleItemsCount(visibleItemsCountTablet);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
setVisibleItemsCount(visibleItemsCountAll);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
var resizeHandlerThrottled = throttle(resizeHandler, throttleTime.resize);
|
|
81
|
+
resizeHandler();
|
|
82
|
+
window.addEventListener('resize', resizeHandlerThrottled);
|
|
83
|
+
return function () {
|
|
84
|
+
window.removeEventListener('resize', resizeHandlerThrottled);
|
|
85
|
+
};
|
|
86
|
+
}, [visibleItemsCountAll, visibleItemsCountDesktop, visibleItemsCountTablet, visibleItemsCountWide]);
|
|
87
|
+
React.useEffect(function () {
|
|
88
|
+
if (visibleItemsCount && items.length > visibleItemsCount) {
|
|
89
|
+
setVisibleItems(items.slice(0, visibleItemsCount));
|
|
90
|
+
setHiddenItems(items.slice(visibleItemsCount));
|
|
91
|
+
} else {
|
|
92
|
+
setVisibleItems(items);
|
|
93
|
+
setHiddenItems(null);
|
|
94
|
+
}
|
|
95
|
+
}, [items, visibleItemsCount]);
|
|
96
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
97
|
+
className: cn({
|
|
98
|
+
hidden: !!hiddenItems
|
|
99
|
+
}, [className])
|
|
100
|
+
}, visibleItems.map(function (item) {
|
|
101
|
+
return /*#__PURE__*/React.createElement(Chip, _extends({
|
|
102
|
+
key: item.id
|
|
103
|
+
}, item, {
|
|
104
|
+
checked: item.id === selectedId,
|
|
105
|
+
color: color,
|
|
106
|
+
onClick: handleClick
|
|
107
|
+
}), !!(item === null || item === void 0 ? void 0 : item.children) && item.children);
|
|
108
|
+
}), !!hiddenItems && /*#__PURE__*/React.createElement(ChipsDropdown, {
|
|
109
|
+
value: selectedId,
|
|
110
|
+
items: hiddenItems,
|
|
111
|
+
moreTitle: moreTitle,
|
|
112
|
+
color: color,
|
|
113
|
+
onClick: handleClick
|
|
114
|
+
}));
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
Chips.propTypes = {
|
|
118
|
+
items: PropTypes.arrayOf(PropTypes.shape(ChipPropType).isRequired).isRequired,
|
|
119
|
+
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
|
120
|
+
color: PropTypes.oneOf(Object.values(ChipColors)),
|
|
121
|
+
visibleItemsCountAll: PropTypes.number,
|
|
122
|
+
visibleItemsCountTablet: PropTypes.number,
|
|
123
|
+
visibleItemsCountDesktop: PropTypes.number,
|
|
124
|
+
visibleItemsCountWide: PropTypes.number,
|
|
125
|
+
moreTitle: PropTypes.string,
|
|
126
|
+
onChange: PropTypes.func,
|
|
127
|
+
className: PropTypes.string
|
|
128
|
+
};
|
|
129
|
+
export default Chips;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
@-webkit-keyframes listAppear {
|
|
2
|
+
from {
|
|
3
|
+
-webkit-transform: translateY(-25px);
|
|
4
|
+
transform: translateY(-25px);
|
|
5
|
+
opacity: 0;
|
|
6
|
+
}
|
|
7
|
+
to {
|
|
8
|
+
-webkit-transform: translateY(0);
|
|
9
|
+
transform: translateY(0);
|
|
10
|
+
opacity: 1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
@keyframes listAppear {
|
|
14
|
+
from {
|
|
15
|
+
-webkit-transform: translateY(-25px);
|
|
16
|
+
transform: translateY(-25px);
|
|
17
|
+
opacity: 0;
|
|
18
|
+
}
|
|
19
|
+
to {
|
|
20
|
+
-webkit-transform: translateY(0);
|
|
21
|
+
transform: translateY(0);
|
|
22
|
+
opacity: 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
.mfui-chips-dropdown {
|
|
26
|
+
position: relative;
|
|
27
|
+
}
|
|
28
|
+
.mfui-chips-dropdown__button {
|
|
29
|
+
width: 100%;
|
|
30
|
+
}
|
|
31
|
+
.mfui-chips-dropdown__list {
|
|
32
|
+
position: absolute;
|
|
33
|
+
top: 100%;
|
|
34
|
+
left: 0;
|
|
35
|
+
z-index: 100;
|
|
36
|
+
display: block;
|
|
37
|
+
border-radius: 12px;
|
|
38
|
+
background-color: var(--base);
|
|
39
|
+
-webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
40
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
41
|
+
-webkit-animation-name: listAppear;
|
|
42
|
+
animation-name: listAppear;
|
|
43
|
+
-webkit-animation-duration: 0.3s;
|
|
44
|
+
animation-duration: 0.3s;
|
|
45
|
+
-webkit-animation-timing-function: ease-in-out;
|
|
46
|
+
animation-timing-function: ease-in-out;
|
|
47
|
+
}
|
|
48
|
+
.mfui-chips-dropdown__list-inner {
|
|
49
|
+
-webkit-box-sizing: border-box;
|
|
50
|
+
box-sizing: border-box;
|
|
51
|
+
max-height: 320px;
|
|
52
|
+
width: -webkit-max-content;
|
|
53
|
+
width: -moz-max-content;
|
|
54
|
+
width: max-content;
|
|
55
|
+
max-width: 256px;
|
|
56
|
+
padding: 16px;
|
|
57
|
+
overflow-y: auto;
|
|
58
|
+
scrollbar-width: thin;
|
|
59
|
+
scrollbar-color: var(--spbSky2) transparent;
|
|
60
|
+
overflow-wrap: normal;
|
|
61
|
+
}
|
|
62
|
+
.mfui-chips-dropdown__list-inner::-webkit-scrollbar {
|
|
63
|
+
width: 16px;
|
|
64
|
+
}
|
|
65
|
+
.mfui-chips-dropdown__list-inner::-webkit-scrollbar-thumb {
|
|
66
|
+
border: 6px solid transparent;
|
|
67
|
+
border-radius: 16px;
|
|
68
|
+
background-color: var(--spbSky2);
|
|
69
|
+
background-clip: padding-box;
|
|
70
|
+
}
|
|
71
|
+
.mfui-chips-dropdown__list-inner::-webkit-scrollbar-thumb:hover {
|
|
72
|
+
background-color: var(--spbSky3);
|
|
73
|
+
}
|
|
74
|
+
.mfui-chips-dropdown__list-item {
|
|
75
|
+
font-family: inherit;
|
|
76
|
+
font-size: 15px;
|
|
77
|
+
line-height: 24px;
|
|
78
|
+
font-weight: 500;
|
|
79
|
+
display: -webkit-box;
|
|
80
|
+
display: -ms-flexbox;
|
|
81
|
+
display: flex;
|
|
82
|
+
padding: 12px 32px;
|
|
83
|
+
border-radius: 12px;
|
|
84
|
+
background-color: transparent;
|
|
85
|
+
cursor: pointer;
|
|
86
|
+
}
|
|
87
|
+
.mfui-chips-dropdown__list-item:hover {
|
|
88
|
+
background-color: var(--spbSky0);
|
|
89
|
+
}
|
|
90
|
+
.mfui-chips-dropdown__list-item_with-icon {
|
|
91
|
+
padding-left: 16px;
|
|
92
|
+
padding-right: 16px;
|
|
93
|
+
}
|
|
94
|
+
.mfui-chips-dropdown__icon {
|
|
95
|
+
display: block;
|
|
96
|
+
width: 24px;
|
|
97
|
+
min-width: 24px;
|
|
98
|
+
max-height: 24px;
|
|
99
|
+
margin-right: 16px;
|
|
100
|
+
}
|
|
101
|
+
.mfui-chips-dropdown__icon svg {
|
|
102
|
+
display: block;
|
|
103
|
+
width: 100%;
|
|
104
|
+
height: 100%;
|
|
105
|
+
fill: var(--content);
|
|
106
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ChipColorsType, ChipIdType, IChipProps } from '../Chip';
|
|
3
|
+
import './ChipsDropdown.less';
|
|
4
|
+
export interface IChipsDropdownProps {
|
|
5
|
+
moreTitle: string;
|
|
6
|
+
value: ChipIdType;
|
|
7
|
+
items: IChipProps[];
|
|
8
|
+
color: ChipColorsType;
|
|
9
|
+
onClick: (e: React.SyntheticEvent<EventTarget>, id: ChipIdType) => void;
|
|
10
|
+
dataAttrs?: {
|
|
11
|
+
root?: Record<string, string>;
|
|
12
|
+
list?: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
declare const ChipsDropdown: React.FC<IChipsDropdownProps>;
|
|
16
|
+
export default ChipsDropdown;
|