@sima-land/moleculas 13.1.1 → 13.2.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/common/components/product-info/parts.js +5 -5
- package/common/components/product-info/product-info.module.scss +20 -12
- package/common/components/quick-view-button/quick-view-button.module.scss +3 -3
- package/common/components/wish-button/wish-button.module.scss +2 -2
- package/desktop/components/breadcrumbs/breadcrumbs.module.scss +2 -2
- package/desktop/components/breadcrumbs/index.js +2 -2
- package/desktop/components/gallery-modal/components/all-round-view.module.scss +4 -4
- package/desktop/components/gallery-modal/components/review-info.module.scss +1 -1
- package/desktop/components/gallery-modal/components/thumbnail.module.scss +3 -3
- package/desktop/components/modifiers/button/modifier-button.module.scss +5 -5
- package/desktop/components/modifiers/group/index.d.ts +17 -16
- package/desktop/components/modifiers/group/index.js +1 -13
- package/desktop/components/modifiers/group/modifiers-group.module.scss +1 -1
- package/desktop/components/person-modal/index.js +6 -6
- package/desktop/components/person-modal/person-modal.module.scss +1 -1
- package/desktop/components/promotion-card/index.module.scss +4 -4
- package/desktop/components/promotion-card/placeholder.module.scss +1 -1
- package/mobile/components/breadcrumbs/breadcrumbs.module.scss +1 -1
- package/mobile/components/breadcrumbs/index.js +1 -1
- package/mobile/components/modifiers-list/modifier-item/index.js +1 -1
- package/mobile/components/modifiers-list/modifier-item/modifier-item.module.scss +2 -2
- package/mobile/components/modifiers-list/modifiers-list.module.scss +1 -1
- package/mobile/components/person-screen/index.js +2 -2
- package/mobile/components/person-screen/person-screen.module.scss +4 -4
- package/mobile/components/product-actions-alert/index.js +1 -1
- package/mobile/components/product-actions-alert/product-actions-alert.module.scss +2 -2
- package/mobile/components/product-row/index.js +4 -4
- package/mobile/components/product-row/product-row.module.scss +1 -1
- package/mobile/components/pseudo-input/pseudo-input.module.scss +3 -3
- package/mobile/components/search-bar/index.js +3 -3
- package/mobile/components/search-bar/search-bar.module.scss +5 -5
- package/mobile/components/select-screen/index.d.ts +7 -3
- package/mobile/components/select-screen/index.js +5 -5
- package/mobile/components/select-screen/select-screen.module.scss +32 -3
- package/package.json +2 -2
|
@@ -104,13 +104,13 @@ const Prices = ({ price, oldPrice, currencyGrapheme, unavailableReason = 'Тов
|
|
|
104
104
|
*/
|
|
105
105
|
const Title = ({ children, href, onClick }) => {
|
|
106
106
|
const { restriction } = (0, react_1.useContext)(utils_1.ProductInfoContext);
|
|
107
|
-
return restriction === 'adult' ? (react_1.default.createElement("span", { className: cx('adult-info'), "data-testid": 'product-info:adult-warning' }, "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435, \u0447\u0442\u043E \u0432\u044B \u0441\u0442\u0430\u0440\u0448\u0435 18 \u043B\u0435\u0442, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0442\u043E\u0432\u0430\u0440.")) : (react_1.default.createElement(link_1.Link, { onClick: onClick, className: cx('link', 'line-clamp'), href: href, color: 'gray87', "data-testid": 'product-info:name-link' }, children));
|
|
107
|
+
return restriction === 'adult' ? (react_1.default.createElement("span", { className: cx('adult-info'), "data-testid": 'product-info:adult-warning' }, "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435, \u0447\u0442\u043E \u0432\u044B \u0441\u0442\u0430\u0440\u0448\u0435 18 \u043B\u0435\u0442, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0442\u043E\u0432\u0430\u0440.")) : (react_1.default.createElement(link_1.Link, { onClick: onClick, className: cx('link', 'line-clamp'), href: href, color: 'basic-gray87', "data-testid": 'product-info:name-link' }, children));
|
|
108
108
|
};
|
|
109
109
|
/** Слот для вывода ссылки торговой марки.
|
|
110
110
|
* @param props Свойства.
|
|
111
111
|
* @return Элемент.
|
|
112
112
|
*/
|
|
113
|
-
const TrademarkLink = ({ href, children, onClick, }) => (react_1.default.createElement(link_1.Link, { className: cx('trademark-link'), href: href, children: children, onClick: onClick, color: '
|
|
113
|
+
const TrademarkLink = ({ href, children, onClick, }) => (react_1.default.createElement(link_1.Link, { className: cx('trademark-link'), href: href, children: children, onClick: onClick, color: 'basic-blue', "data-testid": 'product-info:trademark-link' }));
|
|
114
114
|
/**
|
|
115
115
|
* Слот - футер.
|
|
116
116
|
* @param props Свойства.
|
|
@@ -133,7 +133,7 @@ const CartControl = ({ children, stepText, markupText, loading, }) => (react_1.d
|
|
|
133
133
|
*/
|
|
134
134
|
const AdultConfirmButton = (_a) => {
|
|
135
135
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
136
|
-
return (react_1.default.createElement(link_1.Link, Object.assign({}, props, { pseudo: true, color: '
|
|
136
|
+
return (react_1.default.createElement(link_1.Link, Object.assign({}, props, { pseudo: true, color: 'basic-blue', className: cx('text-button', className), "data-testid": 'product-info:adult-confirm-button' }), "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C"));
|
|
137
137
|
};
|
|
138
138
|
/**
|
|
139
139
|
* Кнопка "В лист ожидания".
|
|
@@ -142,7 +142,7 @@ const AdultConfirmButton = (_a) => {
|
|
|
142
142
|
*/
|
|
143
143
|
const WaitListAddButton = (_a) => {
|
|
144
144
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
145
|
-
return (react_1.default.createElement(link_1.Link, Object.assign({}, props, { pseudo: true, color: '
|
|
145
|
+
return (react_1.default.createElement(link_1.Link, Object.assign({}, props, { pseudo: true, color: 'basic-blue', className: cx('text-button', className), "data-testid": 'product-info:wait-list-add-button' }), "\u0412 \u043B\u0438\u0441\u0442 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F"));
|
|
146
146
|
};
|
|
147
147
|
/**
|
|
148
148
|
* Текст со ссылкой "Товар добавлен в лист ожидания".
|
|
@@ -154,7 +154,7 @@ const WaitListAddedLink = (_a) => {
|
|
|
154
154
|
return (react_1.default.createElement("span", { className: cx('wait-list-added-text') },
|
|
155
155
|
"\u0422\u043E\u0432\u0430\u0440 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u0432",
|
|
156
156
|
' ',
|
|
157
|
-
react_1.default.createElement(link_1.Link, Object.assign({}, props, { color: '
|
|
157
|
+
react_1.default.createElement(link_1.Link, Object.assign({}, props, { color: 'basic-blue', className: cx('text-button', className), "data-testid": 'product-info:wait-list-added-link' }),
|
|
158
158
|
"\u043B\u0438\u0441\u0442",
|
|
159
159
|
'\u00A0',
|
|
160
160
|
"\u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F")));
|
|
@@ -6,10 +6,20 @@
|
|
|
6
6
|
max-width: 100%;
|
|
7
7
|
margin-bottom: 8px;
|
|
8
8
|
overflow: hidden;
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
// формируем соотношение сторон 1 / 1
|
|
11
|
+
&::before {
|
|
12
|
+
content: '';
|
|
13
|
+
display: block;
|
|
14
|
+
padding-top: 100%;
|
|
15
|
+
pointer-events: none;
|
|
16
|
+
}
|
|
10
17
|
}
|
|
11
18
|
|
|
12
19
|
.image-link {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 0;
|
|
22
|
+
left: 0;
|
|
13
23
|
display: block;
|
|
14
24
|
height: 100%;
|
|
15
25
|
}
|
|
@@ -19,12 +29,10 @@
|
|
|
19
29
|
object-fit: contain;
|
|
20
30
|
width: 100%;
|
|
21
31
|
height: 100%;
|
|
22
|
-
|
|
32
|
+
&.adult {
|
|
23
33
|
position: absolute;
|
|
24
34
|
top: 0;
|
|
25
35
|
left: 0;
|
|
26
|
-
}
|
|
27
|
-
&.adult {
|
|
28
36
|
opacity: 0.2;
|
|
29
37
|
filter: blur(24px);
|
|
30
38
|
pointer-events: none;
|
|
@@ -38,7 +46,7 @@
|
|
|
38
46
|
top: 50%;
|
|
39
47
|
left: 50%;
|
|
40
48
|
transform: translate(-50%, -50%);
|
|
41
|
-
fill: colors.$gray38;
|
|
49
|
+
fill: colors.$basic-gray38;
|
|
42
50
|
}
|
|
43
51
|
|
|
44
52
|
.image-buttons {
|
|
@@ -72,7 +80,7 @@
|
|
|
72
80
|
display: none;
|
|
73
81
|
}
|
|
74
82
|
&:hover {
|
|
75
|
-
fill: colors.$gray54;
|
|
83
|
+
fill: colors.$basic-gray54;
|
|
76
84
|
}
|
|
77
85
|
@include breakpoints.down('ml') {
|
|
78
86
|
--gutter: 4px;
|
|
@@ -131,7 +139,7 @@
|
|
|
131
139
|
max-width: 100%;
|
|
132
140
|
font-size: 14px;
|
|
133
141
|
line-height: 20px;
|
|
134
|
-
color: colors.$gray87;
|
|
142
|
+
color: colors.$basic-gray87;
|
|
135
143
|
}
|
|
136
144
|
|
|
137
145
|
.trademark-link {
|
|
@@ -167,7 +175,7 @@
|
|
|
167
175
|
font-size: 16px;
|
|
168
176
|
line-height: 24px;
|
|
169
177
|
font-weight: 600;
|
|
170
|
-
color: colors.$gray24;
|
|
178
|
+
color: colors.$basic-gray24;
|
|
171
179
|
@include breakpoints.down('ml') {
|
|
172
180
|
font-size: 14px;
|
|
173
181
|
line-height: 20px;
|
|
@@ -181,13 +189,13 @@
|
|
|
181
189
|
margin-top: 16px;
|
|
182
190
|
&.loading {
|
|
183
191
|
.control {
|
|
184
|
-
background: colors.$gray4;
|
|
192
|
+
background: colors.$basic-gray4;
|
|
185
193
|
border-radius: 4px;
|
|
186
194
|
}
|
|
187
195
|
.unit-text::before {
|
|
188
196
|
content: '';
|
|
189
197
|
display: block;
|
|
190
|
-
background: colors.$gray4;
|
|
198
|
+
background: colors.$basic-gray4;
|
|
191
199
|
border-radius: 4px;
|
|
192
200
|
width: 48px;
|
|
193
201
|
height: 16px;
|
|
@@ -205,12 +213,12 @@
|
|
|
205
213
|
padding-top: 12px; // чтобы при переносе на следующую строку правильно отступил от кнопки
|
|
206
214
|
font-size: 12px;
|
|
207
215
|
line-height: 16px;
|
|
208
|
-
color: colors.$gray38;
|
|
216
|
+
color: colors.$basic-gray38;
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
.bottom-text {
|
|
212
220
|
margin-top: 12px;
|
|
213
221
|
font-size: 12px;
|
|
214
222
|
line-height: 16px;
|
|
215
|
-
color: colors.$gray38;
|
|
223
|
+
color: colors.$basic-gray38;
|
|
216
224
|
}
|
|
@@ -63,12 +63,12 @@ $line-gutter: 12px;
|
|
|
63
63
|
margin-top: 8px;
|
|
64
64
|
}
|
|
65
65
|
.active {
|
|
66
|
-
color: colors.$gray24;
|
|
66
|
+
color: colors.$basic-gray24;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.sibling-placeholder {
|
|
71
|
-
background: colors.$gray4;
|
|
71
|
+
background: colors.$basic-gray4;
|
|
72
72
|
border-radius: 4px;
|
|
73
73
|
height: 12px;
|
|
74
74
|
& + & {
|
|
@@ -55,7 +55,7 @@ const Breadcrumb = ({ data, onSiblingsPopupOpen, isSiblingActive, }) => {
|
|
|
55
55
|
return (0, on_1.default)(window, 'mousedown', togglePopup.bind(null, false));
|
|
56
56
|
}
|
|
57
57
|
}, [withPopup]);
|
|
58
|
-
const selfName = (react_1.default.createElement(link_1.Link, { color: 'gray87', href: data.url }, data.name));
|
|
58
|
+
const selfName = (react_1.default.createElement(link_1.Link, { color: 'basic-gray87', href: data.url }, data.name));
|
|
59
59
|
return (react_1.default.createElement("div", { "data-testid": 'breadcrumb', className: cx('breadcrumb') },
|
|
60
60
|
selfName,
|
|
61
61
|
data.siblings && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -75,5 +75,5 @@ const Breadcrumb = ({ data, onSiblingsPopupOpen, isSiblingActive, }) => {
|
|
|
75
75
|
react_1.default.createElement(square_arrow_down_svg_1.default, { "data-testid": 'breadcrumb:siblings-closer', className: cx('toggle-icon', 'close'), onClick: () => togglePopup(false) })),
|
|
76
76
|
react_1.default.createElement("ul", { className: cx('siblings') },
|
|
77
77
|
data.siblings.state === 'fetching' && (react_1.default.createElement(react_1.default.Fragment, null, (0, lodash_1.times)(8).map(index => (react_1.default.createElement("div", { key: index, className: cx('sibling-placeholder') }))))),
|
|
78
|
-
data.siblings.state === 'ready' && (react_1.default.createElement(react_1.default.Fragment, null, (_a = data.siblings.data) === null || _a === void 0 ? void 0 : _a.map((sibling, index) => (react_1.default.createElement("li", { key: index, className: cx('sibling'), "data-testid": 'breadcrumb-sibling' }, isSiblingActive(sibling) ? (react_1.default.createElement("span", { className: cx('active') }, sibling.name)) : (react_1.default.createElement(link_1.Link, { color: 'gray87', className: cx('link'), href: sibling.url, children: sibling.name }))))))))))))));
|
|
78
|
+
data.siblings.state === 'ready' && (react_1.default.createElement(react_1.default.Fragment, null, (_a = data.siblings.data) === null || _a === void 0 ? void 0 : _a.map((sibling, index) => (react_1.default.createElement("li", { key: index, className: cx('sibling'), "data-testid": 'breadcrumb-sibling' }, isSiblingActive(sibling) ? (react_1.default.createElement("span", { className: cx('active') }, sibling.name)) : (react_1.default.createElement(link_1.Link, { color: 'basic-gray87', className: cx('link'), href: sibling.url, children: sibling.name }))))))))))))));
|
|
79
79
|
};
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
border: 0;
|
|
38
38
|
padding: 0;
|
|
39
39
|
color: #fff;
|
|
40
|
-
background: colors.$
|
|
40
|
+
background: colors.$basic-blue;
|
|
41
41
|
}
|
|
42
42
|
.pause:not(:hover) {
|
|
43
|
-
background: rgba(colors.$
|
|
43
|
+
background: rgba(colors.$basic-blue, 0.4);
|
|
44
44
|
}
|
|
45
45
|
.turn {
|
|
46
46
|
width: 32px;
|
|
47
47
|
height: 32px;
|
|
48
|
-
border: 2px solid colors.$gray24;
|
|
49
|
-
color: colors.$gray24;
|
|
48
|
+
border: 2px solid colors.$basic-gray24;
|
|
49
|
+
color: colors.$basic-gray24;
|
|
50
50
|
background: transparent;
|
|
51
51
|
&:disabled {
|
|
52
52
|
opacity: 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@use 'node_modules/@sima-land/ui-nucleons/colors';
|
|
2
2
|
|
|
3
3
|
.root {
|
|
4
|
-
--thumbnail-color: #{colors.$gray12};
|
|
4
|
+
--thumbnail-color: #{colors.$basic-gray12};
|
|
5
5
|
background: transparent;
|
|
6
6
|
border-radius: 4px;
|
|
7
7
|
border: 0;
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
width: 100%;
|
|
28
28
|
}
|
|
29
29
|
&.iconic:not(.checked):hover {
|
|
30
|
-
--thumbnail-color: #{colors.$gray54};
|
|
30
|
+
--thumbnail-color: #{colors.$basic-gray54};
|
|
31
31
|
}
|
|
32
32
|
&.checked {
|
|
33
|
-
--thumbnail-color: #{colors.$
|
|
33
|
+
--thumbnail-color: #{colors.$basic-blue};
|
|
34
34
|
}
|
|
35
35
|
.image-overlay {
|
|
36
36
|
height: 100%;
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
width: 100%;
|
|
22
22
|
height: 100%;
|
|
23
23
|
border-radius: inherit;
|
|
24
|
-
box-shadow: inset 0 0 0 1px colors.$gray12;
|
|
24
|
+
box-shadow: inset 0 0 0 1px colors.$basic-gray12;
|
|
25
25
|
}
|
|
26
26
|
&:hover::before {
|
|
27
|
-
box-shadow: inset 0 0 0 2px colors.$gray12;
|
|
27
|
+
box-shadow: inset 0 0 0 2px colors.$basic-gray12;
|
|
28
28
|
}
|
|
29
29
|
&.selected::before {
|
|
30
|
-
box-shadow: inset 0 0 0 2px colors.$
|
|
30
|
+
box-shadow: inset 0 0 0 2px colors.$basic-blue;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
line-height: 16px;
|
|
68
68
|
border-radius: 32px;
|
|
69
69
|
background-color: #fff;
|
|
70
|
-
color: colors.$gray54;
|
|
70
|
+
color: colors.$basic-gray54;
|
|
71
71
|
font-size: 12px;
|
|
72
72
|
font-weight: 500;
|
|
73
73
|
box-sizing: border-box;
|
|
74
74
|
&.with-count {
|
|
75
|
-
background-color: colors.$
|
|
75
|
+
background-color: colors.$basic-blue;
|
|
76
76
|
color: #fff;
|
|
77
77
|
}
|
|
78
78
|
&:not(.with-count) {
|
|
@@ -2,22 +2,35 @@
|
|
|
2
2
|
import React, { Component } from 'react';
|
|
3
3
|
import { ModifierButtonProps, Modifier } from '../button';
|
|
4
4
|
declare type ModifierPredicate<T> = (item: Modifier) => T;
|
|
5
|
-
interface
|
|
5
|
+
interface ModifiersGroupState {
|
|
6
6
|
needShowAll: boolean;
|
|
7
7
|
hasHiddenNodes: boolean;
|
|
8
8
|
lastVisibleChildIndex: number | null;
|
|
9
9
|
}
|
|
10
10
|
export interface ModifiersGroupProps {
|
|
11
|
+
/** Список модификаторов. */
|
|
11
12
|
items?: Modifier[];
|
|
13
|
+
/** Флаг необходимости отображения всех модификаторов. */
|
|
14
|
+
needShowAll?: boolean;
|
|
15
|
+
/** Будет вызвана при выборе модификатора, получит сам модификатор. */
|
|
12
16
|
onSelectItem?: (item: Modifier, selected: boolean) => void;
|
|
17
|
+
/** Возвращает тип модификатора ("text" или "image", по умолчанию "text"). */
|
|
13
18
|
getItemType?: ModifierPredicate<ModifierButtonProps['type']>;
|
|
19
|
+
/** Возвращает число с количеством модификатора (по умолчанию свойство "count"). */
|
|
14
20
|
getItemCount?: ModifierPredicate<number>;
|
|
21
|
+
/** Возвращает цвет модификатора (по умолчанию свойство "color"). */
|
|
15
22
|
getItemColor?: ModifierPredicate<string>;
|
|
23
|
+
/** Возвращает содержимое модификатора (по умолчанию свойство "content"). */
|
|
16
24
|
getItemContent?: ModifierPredicate<string>;
|
|
25
|
+
/** Показывает, выбран ли модификатор (по умолчанию свойство "selected"). */
|
|
17
26
|
isSelectedItem?: ModifierPredicate<boolean>;
|
|
27
|
+
/** Возвращает URL изображения модификатора (по умолчанию свойство "image"). */
|
|
18
28
|
getItemImage?: ModifierPredicate<string>;
|
|
29
|
+
/** Имеет ли товар уценку. */
|
|
19
30
|
isMarkdown?: ModifierPredicate<boolean>;
|
|
31
|
+
/** Сработает при нажатии на кнопку отображения всех модификаторов. */
|
|
20
32
|
onClickShowAll?: () => void;
|
|
33
|
+
/** Идентификатор для систем автоматизированного тестирования. */
|
|
21
34
|
'data-testid'?: string;
|
|
22
35
|
}
|
|
23
36
|
/**
|
|
@@ -27,24 +40,12 @@ export interface ModifiersGroupProps {
|
|
|
27
40
|
*/
|
|
28
41
|
export declare const createHiddenNodeIndexFinder: (container: HTMLElement) => (childNode: HTMLElement) => boolean;
|
|
29
42
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @param {Object} props Свойства компонента.
|
|
32
|
-
* @param {Array} props.items Список модификаторов.
|
|
33
|
-
* @param {Function} [props.getItemType] Возвращает тип модификатора ("text" или "image", по умолчанию "text").
|
|
34
|
-
* @param {Function} [props.getItemCount] Возвращает число с количеством модификатора (по умолчанию свойство "count").
|
|
35
|
-
* @param {Function} [props.getItemColor] Возвращает цвет модификатора (по умолчанию свойство "color").
|
|
36
|
-
* @param {Function} [props.getItemContent] Возвращает содержимое модификатора (по умолчанию свойство "content").
|
|
37
|
-
* @param {Function} [props.isSelectedItem] Показывает, выбран ли модификатор (по умолчанию свойство "selected").
|
|
38
|
-
* @param {Function} [props.onSelectItem] Будет вызвана при выборе модификатора, получит сам модификатор.
|
|
39
|
-
* @param {Function} [props.getItemImage] Возвращает URL изображения модификатора (по умолчанию свойство "image").
|
|
40
|
-
* @param {boolean} [props.needShowAll] Флаг необходимости отображения всех модификаторов.
|
|
41
|
-
* @param {Function} [props.onClickShowAll] Сработает при нажатии на кнопку отображения всех модификаторов.
|
|
42
|
-
* @param {Function} [props.isMarkdown] Имеет ли товар уценку.
|
|
43
|
+
* Компонент списка модификаторов.
|
|
43
44
|
*/
|
|
44
|
-
export declare class ModifiersGroup extends Component<ModifiersGroupProps,
|
|
45
|
+
export declare class ModifiersGroup extends Component<ModifiersGroupProps, ModifiersGroupState> {
|
|
45
46
|
removeGlobalListener: any;
|
|
46
47
|
state: {
|
|
47
|
-
needShowAll:
|
|
48
|
+
needShowAll: boolean;
|
|
48
49
|
hasHiddenNodes: boolean;
|
|
49
50
|
lastVisibleChildIndex: null;
|
|
50
51
|
};
|
|
@@ -56,19 +56,7 @@ const defaultIsSelectedItem = (0, prop_1.default)('selected');
|
|
|
56
56
|
const defaultGetItemImage = (0, prop_1.default)('image');
|
|
57
57
|
const defaultGetIsMarkdown = (0, prop_1.default)('isMarkdown');
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
60
|
-
* @param {Object} props Свойства компонента.
|
|
61
|
-
* @param {Array} props.items Список модификаторов.
|
|
62
|
-
* @param {Function} [props.getItemType] Возвращает тип модификатора ("text" или "image", по умолчанию "text").
|
|
63
|
-
* @param {Function} [props.getItemCount] Возвращает число с количеством модификатора (по умолчанию свойство "count").
|
|
64
|
-
* @param {Function} [props.getItemColor] Возвращает цвет модификатора (по умолчанию свойство "color").
|
|
65
|
-
* @param {Function} [props.getItemContent] Возвращает содержимое модификатора (по умолчанию свойство "content").
|
|
66
|
-
* @param {Function} [props.isSelectedItem] Показывает, выбран ли модификатор (по умолчанию свойство "selected").
|
|
67
|
-
* @param {Function} [props.onSelectItem] Будет вызвана при выборе модификатора, получит сам модификатор.
|
|
68
|
-
* @param {Function} [props.getItemImage] Возвращает URL изображения модификатора (по умолчанию свойство "image").
|
|
69
|
-
* @param {boolean} [props.needShowAll] Флаг необходимости отображения всех модификаторов.
|
|
70
|
-
* @param {Function} [props.onClickShowAll] Сработает при нажатии на кнопку отображения всех модификаторов.
|
|
71
|
-
* @param {Function} [props.isMarkdown] Имеет ли товар уценку.
|
|
59
|
+
* Компонент списка модификаторов.
|
|
72
60
|
*/
|
|
73
61
|
class ModifiersGroup extends react_1.Component {
|
|
74
62
|
constructor() {
|
|
@@ -28,7 +28,7 @@ const PersonModal = ({ name, appointment, photoUrl, email, skype, social, phoneH
|
|
|
28
28
|
react_1.default.createElement(box_1.Box, { marginBottom: 6 },
|
|
29
29
|
react_1.default.createElement(user_1.UserAvatar, { title: name, imageUrl: photoUrl, size: 104 })),
|
|
30
30
|
react_1.default.createElement(box_1.Box, { marginBottom: 1 },
|
|
31
|
-
react_1.default.createElement(text_1.Text, { color: 'gray38', size: 14, weight: 400 }, appointment)),
|
|
31
|
+
react_1.default.createElement(text_1.Text, { color: 'basic-gray38', size: 14, weight: 400 }, appointment)),
|
|
32
32
|
react_1.default.createElement("div", { className: cx('name') }, name),
|
|
33
33
|
arbitraryLinkProps && (react_1.default.createElement(box_1.Box, { marginTop: 2 },
|
|
34
34
|
react_1.default.createElement(text_1.Text, { size: 12, weight: 600 },
|
|
@@ -36,18 +36,18 @@ const PersonModal = ({ name, appointment, photoUrl, email, skype, social, phoneH
|
|
|
36
36
|
react_1.default.createElement("div", { className: cx('contacts') },
|
|
37
37
|
email && (react_1.default.createElement("span", { className: cx('contacts-item') },
|
|
38
38
|
'Email: ',
|
|
39
|
-
react_1.default.createElement(link_1.Link, { color: 'gray87', href: `mailto:${email}`, children: email }))),
|
|
39
|
+
react_1.default.createElement(link_1.Link, { color: 'basic-gray87', href: `mailto:${email}`, children: email }))),
|
|
40
40
|
Array.isArray(social) && social.length > 0 && (react_1.default.createElement("span", { className: cx('contacts-item') },
|
|
41
41
|
"\u0421\u043E\u0446. \u0441\u0435\u0442\u0438:",
|
|
42
42
|
' ',
|
|
43
|
-
social.map((props, key) => (react_1.default.createElement(link_1.Link, Object.assign({ className: cx('inline'), key: key, color: 'gray87', target: '_blank', rel: 'nofollow' }, props)))))),
|
|
43
|
+
social.map((props, key) => (react_1.default.createElement(link_1.Link, Object.assign({ className: cx('inline'), key: key, color: 'basic-gray87', target: '_blank', rel: 'nofollow' }, props)))))),
|
|
44
44
|
skype && (react_1.default.createElement("span", { className: cx('contacts-item') },
|
|
45
45
|
'Skype: ',
|
|
46
|
-
react_1.default.createElement(link_1.Link, { color: 'gray87', href: `skype:${skype}`, children: skype }))),
|
|
46
|
+
react_1.default.createElement(link_1.Link, { color: 'basic-gray87', href: `skype:${skype}`, children: skype }))),
|
|
47
47
|
phoneText && (react_1.default.createElement("span", { className: cx('contacts-item') },
|
|
48
|
-
react_1.default.createElement(link_1.Link, { color: 'gray87', href: phoneHref, children: phoneText }))),
|
|
48
|
+
react_1.default.createElement(link_1.Link, { color: 'basic-gray87', href: phoneHref, children: phoneText }))),
|
|
49
49
|
secondPhoneText && (react_1.default.createElement("span", { className: cx('contacts-item') },
|
|
50
|
-
react_1.default.createElement(link_1.Link, { color: 'gray87', href: secondPhoneHref, children: secondPhoneText })))))),
|
|
50
|
+
react_1.default.createElement(link_1.Link, { color: 'basic-gray87', href: secondPhoneHref, children: secondPhoneText })))))),
|
|
51
51
|
react_1.default.createElement(modal_1.Modal.Footer, { divided: true },
|
|
52
52
|
react_1.default.createElement(clean_buttons_1.Clean.Group, null,
|
|
53
53
|
react_1.default.createElement(clean_buttons_1.Clean.Button, { onClick: onClose }, "\u0417\u0430\u043A\u0440\u044B\u0442\u044C")))));
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
position: relative;
|
|
27
27
|
width: 100%;
|
|
28
28
|
padding-top: variables.$banner-height;
|
|
29
|
-
background: colors.$gray8;
|
|
29
|
+
background: colors.$basic-gray8;
|
|
30
30
|
border-radius: 8px 8px 0 0;
|
|
31
31
|
overflow: hidden;
|
|
32
32
|
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
font-weight: bold;
|
|
53
53
|
font-size: 48px;
|
|
54
54
|
line-height: 60px;
|
|
55
|
-
color: colors.$gray76;
|
|
55
|
+
color: colors.$basic-gray76;
|
|
56
56
|
padding: 24px;
|
|
57
57
|
@include breakpoints.down('xs') {
|
|
58
58
|
padding: 16px;
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
|
|
62
62
|
.info {
|
|
63
63
|
padding: 16px;
|
|
64
|
-
color: colors.$gray87;
|
|
64
|
+
color: colors.$basic-gray87;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
.header {
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
.subtitle {
|
|
83
83
|
font-size: 14px;
|
|
84
84
|
line-height: 20px;
|
|
85
|
-
color: colors.$gray38;
|
|
85
|
+
color: colors.$basic-gray38;
|
|
86
86
|
margin-top: 4px;
|
|
87
87
|
display: -webkit-box;
|
|
88
88
|
-webkit-line-clamp: 2;
|
|
@@ -7,5 +7,5 @@ exports.Breadcrumbs = void 0;
|
|
|
7
7
|
const link_1 = require("@sima-land/ui-nucleons/link");
|
|
8
8
|
const react_1 = __importDefault(require("react"));
|
|
9
9
|
const breadcrumbs_module_scss_1 = __importDefault(require("./breadcrumbs.module.scss"));
|
|
10
|
-
const Breadcrumbs = ({ items }) => (react_1.default.createElement("nav", { className: breadcrumbs_module_scss_1.default.root }, items.map((item, index) => (react_1.default.createElement(link_1.Link, { key: index, href: item.url, color: 'gray87', className: breadcrumbs_module_scss_1.default.item }, item.name)))));
|
|
10
|
+
const Breadcrumbs = ({ items }) => (react_1.default.createElement("nav", { className: breadcrumbs_module_scss_1.default.root }, items.map((item, index) => (react_1.default.createElement(link_1.Link, { key: index, href: item.url, color: 'basic-gray87', className: breadcrumbs_module_scss_1.default.item }, item.name)))));
|
|
11
11
|
exports.Breadcrumbs = Breadcrumbs;
|
|
@@ -32,7 +32,7 @@ const ModifierItem = ({ name, selected, type = 'text', color, image, price, curr
|
|
|
32
32
|
react_1.default.createElement("div", { className: (0, exports.cx)('info') },
|
|
33
33
|
react_1.default.createElement("span", { className: (0, exports.cx)('name') }, name),
|
|
34
34
|
Boolean(price) && (react_1.default.createElement(price_1.Price, { value: price, currencyGrapheme: currencyGrapheme, className: (0, exports.cx)('price', additionalText && 'additional') })),
|
|
35
|
-
Boolean(additionalText) && (react_1.default.createElement(text_1.Text, { color: 'gray38', children: additionalText, size: 12, lineHeight: 16 }))),
|
|
35
|
+
Boolean(additionalText) && (react_1.default.createElement(text_1.Text, { color: 'basic-gray38', children: additionalText, size: 12, lineHeight: 16 }))),
|
|
36
36
|
react_1.default.createElement("div", { className: (0, exports.cx)('icon-wrapper') }, selected && (react_1.default.createElement("div", { className: (0, exports.cx)('icon') },
|
|
37
37
|
react_1.default.createElement(check_1.default, { fill: '#fff', role: 'presentation' }))))));
|
|
38
38
|
exports.ModifierItem = ModifierItem;
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
padding: 16px;
|
|
8
8
|
width: 100%;
|
|
9
9
|
&:not(:last-child) {
|
|
10
|
-
box-shadow: inset 0 -1px 0 colors.$gray12;
|
|
10
|
+
box-shadow: inset 0 -1px 0 colors.$basic-gray12;
|
|
11
11
|
}
|
|
12
12
|
&.selected {
|
|
13
|
-
background: colors.$gray4;
|
|
13
|
+
background: colors.$basic-gray4;
|
|
14
14
|
cursor: auto;
|
|
15
15
|
pointer-events: none;
|
|
16
16
|
}
|
|
@@ -73,8 +73,8 @@ exports.PersonScreen = PersonScreen;
|
|
|
73
73
|
*/
|
|
74
74
|
const CommunicateLink = ({ href, primaryText, secondaryText, icon, }) => (react_1.default.createElement("a", { href: href, className: cx('item', borders_1.InnerBorder.top) },
|
|
75
75
|
react_1.default.createElement(box_1.Box, { flex: 'grow' },
|
|
76
|
-
react_1.default.createElement(text_1.Text, { size: 16, lineHeight: 24, color: 'gray87', weight: 600 }, primaryText),
|
|
76
|
+
react_1.default.createElement(text_1.Text, { size: 16, lineHeight: 24, color: 'basic-gray87', weight: 600 }, primaryText),
|
|
77
77
|
react_1.default.createElement(box_1.Box, { marginTop: 1 },
|
|
78
|
-
react_1.default.createElement(text_1.Text, { size: 14, lineHeight: 20, color: 'gray38' }, secondaryText))),
|
|
78
|
+
react_1.default.createElement(text_1.Text, { size: 14, lineHeight: 20, color: 'basic-gray38' }, secondaryText))),
|
|
79
79
|
react_1.default.createElement("div", { className: cx('icon-circle') }, icon)));
|
|
80
80
|
exports.CommunicateLink = CommunicateLink;
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
font-size: 20px;
|
|
26
26
|
line-height: 28px;
|
|
27
27
|
font-weight: 500;
|
|
28
|
-
color: $gray87;
|
|
28
|
+
color: $basic-gray87;
|
|
29
29
|
word-wrap: break-word;
|
|
30
30
|
-webkit-line-clamp: 2;
|
|
31
31
|
-webkit-box-orient: vertical;
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
text-align: center;
|
|
45
45
|
font-size: 14px;
|
|
46
46
|
line-height: 20px;
|
|
47
|
-
color: $gray38;
|
|
47
|
+
color: $basic-gray38;
|
|
48
48
|
@media (min-width: 601px) {
|
|
49
49
|
max-width: none;
|
|
50
50
|
margin: 8px auto 0;
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
font-weight: 500;
|
|
66
66
|
font-size: 14px;
|
|
67
67
|
line-height: 20px;
|
|
68
|
-
color: $
|
|
68
|
+
color: $basic-blue;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
.icon-circle {
|
|
99
|
-
background: $gray4;
|
|
99
|
+
background: $basic-gray4;
|
|
100
100
|
border-radius: 50%;
|
|
101
101
|
width: 48px;
|
|
102
102
|
height: 48px;
|
|
@@ -19,7 +19,7 @@ const cx = bind_1.default.bind(product_actions_alert_module_scss_1.default);
|
|
|
19
19
|
const ProductActionsAlert = ({ buttons, alertProps, onClose }) => (react_1.default.createElement(alert_1.Alert, Object.assign({}, alertProps, { footer: react_1.default.createElement(clean_buttons_1.Clean.Group, null,
|
|
20
20
|
react_1.default.createElement(clean_buttons_1.Clean.Button, { onClick: onClose }, "\u0417\u0430\u043A\u0440\u044B\u0442\u044C")) }),
|
|
21
21
|
react_1.default.createElement("div", { className: cx('buttons') }, buttons &&
|
|
22
|
-
buttons.map(({ text, icon, onClick, href }, key) => (react_1.default.createElement(link_1.Link, { href: href, className: cx('button'), key: key, color: 'gray87', onClick: onClick },
|
|
22
|
+
buttons.map(({ text, icon, onClick, href }, key) => (react_1.default.createElement(link_1.Link, { href: href, className: cx('button'), key: key, color: 'basic-gray87', onClick: onClick },
|
|
23
23
|
react_1.default.createElement("div", { className: cx('icon-wrapper') }, icon),
|
|
24
24
|
text))))));
|
|
25
25
|
exports.ProductActionsAlert = ProductActionsAlert;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
display: flex;
|
|
5
5
|
justify-content: center;
|
|
6
6
|
flex-direction: column;
|
|
7
|
-
background-color:
|
|
7
|
+
background-color: #fff;
|
|
8
8
|
border-radius: 8px;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
display: flex;
|
|
28
28
|
align-items: center;
|
|
29
29
|
justify-content: center;
|
|
30
|
-
background: $gray4;
|
|
30
|
+
background: $basic-gray4;
|
|
31
31
|
width: 56px;
|
|
32
32
|
height: 56px;
|
|
33
33
|
border-radius: 50%;
|
|
@@ -41,10 +41,10 @@ const ProductRow = ({ itemUrl, imageUrl, name, sid, isWished, count, unit, initi
|
|
|
41
41
|
react_1.default.createElement("img", { src: imageUrl, className: cx('image') })),
|
|
42
42
|
onWishButtonClick && (react_1.default.createElement(wish_button_1.WishButton, { onClick: onWishButtonClick, className: cx('wish-button', { 'is-wished': isWished }), width: 20, height: 20, checked: isWished, disabled: isFetchingWishItems }))),
|
|
43
43
|
react_1.default.createElement("div", { className: cx('info-column') },
|
|
44
|
-
react_1.default.createElement(link_1.Link, { href: itemUrl, className: cx('link'), color: 'gray87' },
|
|
44
|
+
react_1.default.createElement(link_1.Link, { href: itemUrl, className: cx('link'), color: 'basic-gray87' },
|
|
45
45
|
react_1.default.createElement(text_1.Text, { weight: 600 }, name)),
|
|
46
46
|
react_1.default.createElement(box_1.Box, { marginTop: 2 },
|
|
47
|
-
react_1.default.createElement(text_1.Text, { color: 'gray38' },
|
|
47
|
+
react_1.default.createElement(text_1.Text, { color: 'basic-gray38' },
|
|
48
48
|
"\u0410\u0440\u0442.: ",
|
|
49
49
|
sid)),
|
|
50
50
|
Boolean(initialCount) && (react_1.default.createElement(box_1.Box, { marginTop: 2 },
|
|
@@ -59,12 +59,12 @@ const ProductRow = ({ itemUrl, imageUrl, name, sid, isWished, count, unit, initi
|
|
|
59
59
|
react_1.default.createElement(text_1.Text, { element: 'div', weight: 600 },
|
|
60
60
|
react_1.default.createElement(price_1.Price, { value: commonPrice, currencyGrapheme: currencyGrapheme })))),
|
|
61
61
|
Boolean(movedOrderId) && (react_1.default.createElement(box_1.Box, { marginTop: 2 },
|
|
62
|
-
react_1.default.createElement(text_1.Text, { element: 'div', color: 'gray38' }, "\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0432 \u0437\u0430\u043A\u0430\u0437"),
|
|
62
|
+
react_1.default.createElement(text_1.Text, { element: 'div', color: 'basic-gray38' }, "\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D \u0432 \u0437\u0430\u043A\u0430\u0437"),
|
|
63
63
|
react_1.default.createElement(link_1.Link, null,
|
|
64
64
|
"\u2116",
|
|
65
65
|
movedOrderId))),
|
|
66
66
|
notInStock && (react_1.default.createElement(box_1.Box, { marginTop: 2 },
|
|
67
|
-
react_1.default.createElement(text_1.Text, { element: 'div', color: 'gray38' }, "\u041D\u0435\u0442 \u043D\u0430 \u0441\u043A\u043B\u0430\u0434\u0435")))),
|
|
67
|
+
react_1.default.createElement(text_1.Text, { element: 'div', color: 'basic-gray38' }, "\u041D\u0435\u0442 \u043D\u0430 \u0441\u043A\u043B\u0430\u0434\u0435")))),
|
|
68
68
|
react_1.default.createElement("div", { className: cx('action-button') },
|
|
69
69
|
react_1.default.createElement(more_1.default, { onClick: onActionsClick }))));
|
|
70
70
|
exports.ProductRow = ProductRow;
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
height: 40px;
|
|
7
7
|
padding: 0 16px 0 12px;
|
|
8
8
|
border-radius: 8px;
|
|
9
|
-
background-color: colors.$gray4;
|
|
9
|
+
background-color: colors.$basic-gray4;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.icon {
|
|
13
13
|
display: block;
|
|
14
14
|
flex-shrink: 0;
|
|
15
|
-
fill: colors.$gray38;
|
|
15
|
+
fill: colors.$basic-gray38;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.text {
|
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
margin-left: 12px;
|
|
21
21
|
font-size: 16px;
|
|
22
22
|
line-height: 24px;
|
|
23
|
-
color: colors.$gray38;
|
|
23
|
+
color: colors.$basic-gray38;
|
|
24
24
|
}
|
|
@@ -72,7 +72,7 @@ const SearchBar = ({ inputMode, value, onChange, placeholder = 'Поиск', onC
|
|
|
72
72
|
react_1.default.createElement("div", { className: (0, exports.cx)('buttons-container') }, startButtons.map((props, index) => (react_1.default.createElement(Button, Object.assign({}, props, { key: index }))))))),
|
|
73
73
|
react_1.default.createElement("label", { className: (0, exports.cx)('input-wrapper') },
|
|
74
74
|
withSearchIcon && (react_1.default.createElement("span", { className: (0, exports.cx)('search-icon') },
|
|
75
|
-
react_1.default.createElement(search_1.default, { fill: colors_1.COLORS.get('gray38'), "aria-hidden": true }))),
|
|
75
|
+
react_1.default.createElement(search_1.default, { fill: colors_1.COLORS.get('basic-gray38'), "aria-hidden": true }))),
|
|
76
76
|
react_1.default.createElement("div", { className: (0, exports.cx)('input-container') },
|
|
77
77
|
react_1.default.createElement("input", { ref: inputRef, value: value, onChange: onChange, className: (0, exports.cx)('search-field'), placeholder: placeholder, autoFocus: autoFocus, "data-testid": 'search-bar-input', type: 'text', inputMode: inputMode, tabIndex: 0 }),
|
|
78
78
|
description && (react_1.default.createElement("div", { className: (0, exports.cx)('description-container') },
|
|
@@ -80,7 +80,7 @@ const SearchBar = ({ inputMode, value, onChange, placeholder = 'Поиск', onC
|
|
|
80
80
|
(0, lodash_1.isFunction)(onClear) && value && (react_1.default.createElement(link_1.Link, { onClick: event => {
|
|
81
81
|
onClear(event);
|
|
82
82
|
inputRef.current && inputRef.current.focus();
|
|
83
|
-
}, pseudo: true, "aria-label": '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C', "data-testid": 'search-bar:clear-icon', className: (0, exports.cx)('clear-icon'), children: react_1.default.createElement(cross_1.default, { fill: colors_1.COLORS.get('gray38'), "aria-hidden": true }) }))),
|
|
83
|
+
}, pseudo: true, "aria-label": '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C', "data-testid": 'search-bar:clear-icon', className: (0, exports.cx)('clear-icon'), children: react_1.default.createElement(cross_1.default, { fill: colors_1.COLORS.get('basic-gray38'), "aria-hidden": true }) }))),
|
|
84
84
|
Boolean(endButtons.length) && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
85
85
|
react_1.default.createElement("div", { className: (0, exports.cx)('after-field', needHideEndButtons && 'wide-screen') },
|
|
86
86
|
react_1.default.createElement("div", { className: (0, exports.cx)('buttons-container') }, endButtons.map((props, index) => (react_1.default.createElement(Button, Object.assign({}, props, { key: index })))))),
|
|
@@ -103,6 +103,6 @@ exports.SearchBar = SearchBar;
|
|
|
103
103
|
* @param props.iconColor Цвет иконки.
|
|
104
104
|
* @return Элемент.
|
|
105
105
|
*/
|
|
106
|
-
const Button = (0, react_1.forwardRef)(function Button({ text, icon: Icon, iconColor = 'gray87', onClick }, ref) {
|
|
106
|
+
const Button = (0, react_1.forwardRef)(function Button({ text, icon: Icon, iconColor = 'basic-gray87', onClick }, ref) {
|
|
107
107
|
return (react_1.default.createElement("div", { ref: ref, onClick: onClick, className: (0, exports.cx)('button'), role: 'button', "data-testid": 'search-bar-button', tabIndex: 0, "aria-label": Icon && text }, Icon ? react_1.default.createElement(Icon, { fill: colors_1.COLORS.get(iconColor), "aria-hidden": 'true' }) : text));
|
|
108
108
|
});
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
flex-grow: 1;
|
|
15
15
|
margin: 8px 0;
|
|
16
16
|
width: 100%;
|
|
17
|
-
background-color: $gray4;
|
|
17
|
+
background-color: $basic-gray4;
|
|
18
18
|
border-radius: 8px;
|
|
19
19
|
padding: 0 0 0 12px;
|
|
20
20
|
&:focus-within {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
box-sizing: border-box;
|
|
56
56
|
width: 100%;
|
|
57
57
|
height: 40px;
|
|
58
|
-
color:
|
|
58
|
+
color: #000;
|
|
59
59
|
white-space: nowrap;
|
|
60
60
|
overflow: hidden;
|
|
61
61
|
text-overflow: ellipsis;
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
display: none;
|
|
65
65
|
}
|
|
66
66
|
&::placeholder {
|
|
67
|
-
color: $gray38;
|
|
67
|
+
color: $basic-gray38;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.description-container {
|
|
72
72
|
line-height: 24px;
|
|
73
73
|
font-size: 16px;
|
|
74
|
-
color: $gray38;
|
|
74
|
+
color: $basic-gray38;
|
|
75
75
|
width: 100%;
|
|
76
76
|
max-width: 50%;
|
|
77
77
|
display: flex;
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
font-weight: 500;
|
|
126
126
|
font-size: 14px;
|
|
127
127
|
line-height: 20px;
|
|
128
|
-
color: $
|
|
128
|
+
color: $basic-blue;
|
|
129
129
|
cursor: pointer;
|
|
130
130
|
display: flex;
|
|
131
131
|
align-items: center;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LayoutProps } from '@sima-land/ui-nucleons/layout';
|
|
3
|
+
export declare type OptionSize = 's' | 'm' | 'l' | 'xl';
|
|
4
|
+
export interface SelectScreenOptionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
size?: OptionSize;
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
withSelectedIcon?: boolean;
|
|
8
|
+
}
|
|
3
9
|
export interface SelectScreenProps {
|
|
4
10
|
items?: any[];
|
|
5
11
|
getItemName?: (item: any) => string;
|
|
@@ -27,6 +33,4 @@ export interface SelectScreenProps {
|
|
|
27
33
|
*/
|
|
28
34
|
export declare const SelectScreen: ({ items, getItemName, displayItem, isItemSelected, onItemClick, title, subtitle, onBack, onClose, }: SelectScreenProps) => JSX.Element;
|
|
29
35
|
export declare const SelectScreenLayout: ({ children, ...props }: LayoutProps) => JSX.Element;
|
|
30
|
-
export declare const SelectScreenOption: ({ children, className, selected, ...props }:
|
|
31
|
-
selected?: boolean | undefined;
|
|
32
|
-
}) => JSX.Element;
|
|
36
|
+
export declare const SelectScreenOption: ({ children, className, selected, withSelectedIcon, size, ...props }: SelectScreenOptionProps) => JSX.Element;
|
|
@@ -62,7 +62,7 @@ const SelectScreen = ({ items, getItemName = (0, prop_1.default)('name'), displa
|
|
|
62
62
|
const isSelected = Boolean(isItemSelected(item));
|
|
63
63
|
return (react_1.default.createElement(exports.SelectScreenOption, { key: index, onClick: () => onItemClick && onItemClick(item) },
|
|
64
64
|
displayItem(item, { getItemName, isSelected }),
|
|
65
|
-
isSelected && react_1.default.createElement(check_1.default, { fill: colors_1.COLORS.get('gray87') })));
|
|
65
|
+
isSelected && react_1.default.createElement(check_1.default, { fill: colors_1.COLORS.get('basic-gray87') })));
|
|
66
66
|
})))));
|
|
67
67
|
exports.SelectScreen = SelectScreen;
|
|
68
68
|
const SelectScreenLayout = (_a) => {
|
|
@@ -72,10 +72,10 @@ const SelectScreenLayout = (_a) => {
|
|
|
72
72
|
};
|
|
73
73
|
exports.SelectScreenLayout = SelectScreenLayout;
|
|
74
74
|
const SelectScreenOption = (_a) => {
|
|
75
|
-
var { children, className, selected } = _a, props = __rest(_a, ["children", "className", "selected"]);
|
|
76
|
-
return (react_1.default.createElement("button", Object.assign({}, props, { type: 'button', className: (0, classnames_1.default)(select_screen_module_scss_1.default.item, className), "data-testid": 'select-screen:option' }),
|
|
75
|
+
var { children, className, selected, withSelectedIcon = selected, size = 'm' } = _a, props = __rest(_a, ["children", "className", "selected", "withSelectedIcon", "size"]);
|
|
76
|
+
return (react_1.default.createElement("button", Object.assign({}, props, { type: 'button', className: (0, classnames_1.default)(select_screen_module_scss_1.default.item, className, select_screen_module_scss_1.default[`size-${size}`]), "data-testid": 'select-screen:option' }),
|
|
77
77
|
children,
|
|
78
|
-
selected && react_1.default.createElement(check_1.default, {
|
|
78
|
+
selected && withSelectedIcon && react_1.default.createElement(check_1.default, { role: 'presentation', className: select_screen_module_scss_1.default.icon })));
|
|
79
79
|
};
|
|
80
80
|
exports.SelectScreenOption = SelectScreenOption;
|
|
81
81
|
/**
|
|
@@ -86,4 +86,4 @@ exports.SelectScreenOption = SelectScreenOption;
|
|
|
86
86
|
* @param options.getItemName Вернет имя опции.
|
|
87
87
|
* @return Опция в текстовом виде.
|
|
88
88
|
*/
|
|
89
|
-
const displayOption = (item, { getItemName }) => (react_1.default.createElement(text_1.Text, { size: 16, lineHeight: 24, color: 'gray87', children: getItemName(item) }));
|
|
89
|
+
const displayOption = (item, { getItemName }) => (react_1.default.createElement(text_1.Text, { size: 16, lineHeight: 24, color: 'basic-gray87', children: getItemName(item) }));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@use 'node_modules/@sima-land/ui-nucleons/breakpoints';
|
|
2
|
-
@
|
|
2
|
+
@use 'node_modules/@sima-land/ui-nucleons/colors';
|
|
3
3
|
|
|
4
4
|
.container {
|
|
5
5
|
--gutter: 24px;
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
align-items: center;
|
|
21
21
|
justify-content: space-between;
|
|
22
22
|
width: 100%;
|
|
23
|
-
padding: 16px;
|
|
23
|
+
padding: 8px 16px;
|
|
24
24
|
font-size: 16px;
|
|
25
25
|
line-height: 24px;
|
|
26
26
|
height: 48px;
|
|
@@ -29,7 +29,36 @@
|
|
|
29
29
|
outline: 0;
|
|
30
30
|
font: inherit;
|
|
31
31
|
background-color: transparent;
|
|
32
|
+
text-align: left;
|
|
32
33
|
&:active {
|
|
33
|
-
background-color:
|
|
34
|
+
background-color: colors.$basic-gray4;
|
|
34
35
|
}
|
|
36
|
+
&:disabled {
|
|
37
|
+
color: colors.$basic-gray24;
|
|
38
|
+
.icon {
|
|
39
|
+
fill: colors.$basic-gray24;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.size-s {
|
|
45
|
+
height: 40px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.size-m {
|
|
49
|
+
height: 48px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.size-l {
|
|
53
|
+
height: 56px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.size-xl {
|
|
57
|
+
height: 72px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.icon {
|
|
61
|
+
display: block;
|
|
62
|
+
margin-left: 8px;
|
|
63
|
+
fill: colors.$basic-gray87;
|
|
35
64
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/moleculas",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.2.1",
|
|
4
4
|
"repository": "ssh://git@github.com:sima-land/moleculas.git",
|
|
5
5
|
"author": "www.sima-land.ru team",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prettier:check": "prettier --check \"./src/**/*.{js,jsx,ts,tsx,css,scss}\" --loglevel error"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@sima-land/ui-nucleons": "^
|
|
28
|
+
"@sima-land/ui-nucleons": "^43.0.1",
|
|
29
29
|
"@sima-land/ui-quarks": "^2.2.0",
|
|
30
30
|
"classnames": "^2.3.1",
|
|
31
31
|
"date-fns": "^2.26.0",
|