@sima-land/ui-nucleons 44.2.10 → 45.0.0-alpha.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/_internal/custom-scrollbar/index.d.ts +13 -7
- package/_internal/custom-scrollbar/index.js +29 -15
- package/_internal/dropdown-loading/index.d.ts +3 -3
- package/_internal/dropdown-loading/index.js +4 -2
- package/_internal/page-scroll-lock/adapters/body-scroll-lock.d.ts +39 -0
- package/_internal/page-scroll-lock/adapters/body-scroll-lock.js +62 -0
- package/_internal/page-scroll-lock/adapters/ui-nucleons.d.ts +25 -0
- package/_internal/page-scroll-lock/adapters/ui-nucleons.js +103 -0
- package/_internal/page-scroll-lock/context.d.ts +13 -0
- package/_internal/page-scroll-lock/context.js +54 -0
- package/_internal/page-scroll-lock/hook.d.ts +12 -0
- package/_internal/page-scroll-lock/hook.js +26 -0
- package/_internal/page-scroll-lock/index.d.ts +4 -0
- package/_internal/page-scroll-lock/index.js +9 -0
- package/_internal/page-scroll-lock/types.d.ts +22 -0
- package/_internal/readme.md +2 -0
- package/_internal/utils/dropdown.d.ts +1 -0
- package/_internal/utils/dropdown.js +1 -0
- package/alert/alert.module.scss +1 -24
- package/alert/index.d.ts +11 -17
- package/alert/index.js +33 -16
- package/arrow-button/arrow-button.module.scss +2 -0
- package/arrow-button/index.d.ts +2 -2
- package/autocomplete/autocomplete.d.ts +8 -0
- package/autocomplete/autocomplete.js +190 -0
- package/autocomplete/autocomplete.module.scss +2 -15
- package/autocomplete/index.d.ts +2 -27
- package/autocomplete/index.js +2 -126
- package/autocomplete/types.d.ts +19 -0
- package/autocomplete/types.js +2 -0
- package/autocomplete-deprecated/autocomplete.module.scss +20 -0
- package/autocomplete-deprecated/index.d.ts +28 -0
- package/autocomplete-deprecated/index.js +130 -0
- package/avatar/index.d.ts +2 -2
- package/avatar/user.d.ts +1 -1
- package/base-input/base-input.d.ts +11 -0
- package/base-input/base-input.js +96 -0
- package/base-input/base-input.module.scss +3 -3
- package/base-input/index.d.ts +2 -23
- package/base-input/index.js +2 -76
- package/base-input/types.d.ts +31 -0
- package/base-input/types.js +2 -0
- package/base-input/utils.d.ts +6 -0
- package/base-input/utils.js +14 -0
- package/base-input-deprecated/base-input.module.scss +66 -0
- package/base-input-deprecated/index.d.ts +24 -0
- package/base-input-deprecated/index.js +80 -0
- package/bordered-layout/index.d.ts +1 -0
- package/bordered-layout/index.js +1 -0
- package/bottom-bar/bottom-bar-util.scss +20 -0
- package/bottom-bar/bottom-bar.d.ts +12 -0
- package/bottom-bar/bottom-bar.js +47 -0
- package/bottom-bar/bottom-bar.module.scss +14 -0
- package/bottom-bar/index.d.ts +2 -21
- package/bottom-bar/index.js +5 -44
- package/bottom-bar/types.d.ts +10 -0
- package/bottom-bar/types.js +2 -0
- package/box/index.d.ts +1 -1
- package/breakpoints.scss +34 -3
- package/button/button.module.scss +70 -53
- package/button/index.d.ts +26 -41
- package/button/index.js +22 -46
- package/card/index.d.ts +2 -1
- package/card/index.js +23 -6
- package/card/slots.d.ts +17 -3
- package/card/slots.js +15 -13
- package/carousel/draggable.d.ts +7 -3
- package/carousel/draggable.js +10 -3
- package/carousel/helpers/draggable-event.d.ts +5 -2
- package/carousel/helpers/draggable-event.js +5 -0
- package/carousel/index.d.ts +1 -1
- package/carousel/index.js +24 -24
- package/checkbox/checkbox.module.scss +1 -0
- package/checkbox/index.d.ts +3 -3
- package/checkbox-field/index.d.ts +3 -0
- package/checkbox-field/index.js +3 -0
- package/clean-buttons/clean-buttons-util.scss +15 -0
- package/clean-buttons/clean-buttons.module.scss +5 -3
- package/clean-buttons/index.d.ts +16 -7
- package/clean-buttons/index.js +17 -14
- package/clean-buttons/types.d.ts +1 -1
- package/clean-buttons/utils.d.ts +5 -1
- package/clean-buttons/utils.js +4 -0
- package/{colors.d.ts → colors/index.d.ts} +2 -2
- package/{colors.js → colors/index.js} +2 -1
- package/colors.scss +2 -0
- package/dot-nav/index.d.ts +1 -1
- package/dropdown/index.d.ts +1 -0
- package/dropdown/utils.d.ts +19 -0
- package/dropdown/utils.js +47 -0
- package/dropdown-item/dropdown-item.module.scss +80 -15
- package/dropdown-item/index.d.ts +20 -9
- package/dropdown-item/index.js +12 -9
- package/dropdown-item/types.d.ts +3 -0
- package/dropdown-item/types.js +2 -0
- package/dropdown-item/utils.d.ts +45 -0
- package/dropdown-item/utils.js +89 -0
- package/expandable/utils.js +3 -3
- package/field-block/field-block.module.scss +155 -0
- package/field-block/index.d.ts +63 -0
- package/field-block/index.js +43 -0
- package/field-grid/index.d.ts +5 -4
- package/field-grid/index.js +1 -0
- package/helpers/bounds-of.d.ts +5 -1
- package/helpers/bounds-of.js +5 -0
- package/helpers/center-of.d.ts +4 -1
- package/helpers/center-of.js +8 -1
- package/helpers/create-container.d.ts +5 -2
- package/helpers/create-container.js +7 -2
- package/helpers/define-slots.d.ts +3 -3
- package/helpers/define-slots.js +5 -3
- package/helpers/events.d.ts +16 -8
- package/helpers/events.js +41 -15
- package/helpers/find-child-element.d.ts +12 -9
- package/helpers/find-child-element.js +9 -5
- package/helpers/find-offset-parent.d.ts +1 -2
- package/helpers/find-offset-parent.js +2 -2
- package/helpers/find-sibling-index.d.ts +11 -8
- package/helpers/find-sibling-index.js +8 -3
- package/helpers/fit-element-height.d.ts +5 -5
- package/helpers/fit-element-height.js +9 -7
- package/helpers/format-date.d.ts +11 -11
- package/helpers/format-date.js +15 -13
- package/helpers/format-number.d.ts +1 -1
- package/helpers/format-number.js +2 -2
- package/helpers/get-date-interval-data.d.ts +4 -1
- package/helpers/get-date-interval-data.js +7 -2
- package/helpers/get-declination.d.ts +5 -1
- package/helpers/get-declination.js +5 -0
- package/helpers/get-fraction-depth.d.ts +1 -1
- package/helpers/get-fraction-depth.js +2 -2
- package/helpers/get-no-index.d.ts +2 -2
- package/helpers/get-no-index.js +4 -3
- package/helpers/get-relative-pos.d.ts +4 -1
- package/helpers/get-relative-pos.js +7 -2
- package/helpers/get-scroll-parent.d.ts +1 -2
- package/helpers/get-scroll-parent.js +5 -5
- package/helpers/is-browser.d.ts +4 -1
- package/helpers/is-browser.js +8 -1
- package/helpers/is-fully-scrolled.d.ts +3 -3
- package/helpers/is-fully-scrolled.js +2 -2
- package/helpers/is-touch-device.d.ts +1 -1
- package/helpers/is-touch-device.js +4 -5
- package/helpers/layer.d.ts +1 -1
- package/helpers/layer.js +2 -2
- package/helpers/max-index-of.d.ts +4 -1
- package/helpers/max-index-of.js +7 -2
- package/helpers/media-query-list.d.ts +1 -1
- package/helpers/media-query-list.js +2 -2
- package/helpers/on.d.ts +4 -1
- package/helpers/on.js +7 -2
- package/helpers/point.d.ts +4 -1
- package/helpers/point.js +8 -1
- package/helpers/rename.d.ts +3 -1
- package/helpers/rename.js +1 -0
- package/helpers/scroll-to-child.d.ts +1 -1
- package/helpers/scroll-to-child.js +3 -2
- package/helpers/styles.d.ts +8 -2
- package/helpers/styles.js +18 -4
- package/helpers/with-prevent.d.ts +9 -6
- package/helpers/with-prevent.js +16 -9
- package/hint/hint-view.d.ts +26 -0
- package/hint/hint-view.js +43 -0
- package/hint/hint-view.module.scss +32 -0
- package/hint/hint.d.ts +14 -0
- package/hint/hint.js +41 -0
- package/hint/index.d.ts +5 -8
- package/hint/index.js +13 -48
- package/hint/utils.d.ts +61 -0
- package/hint/utils.js +161 -0
- package/hint-deprecated/index.d.ts +11 -0
- package/hint-deprecated/index.js +53 -0
- package/hooks/breakpoint/index.d.ts +7 -4
- package/hooks/breakpoint/index.js +21 -13
- package/hooks/breakpoint/types.d.ts +3 -4
- package/hooks/breakpoint/utils.d.ts +2 -1
- package/hooks/breakpoint/utils.js +2 -1
- package/hooks/index.d.ts +8 -8
- package/hooks/index.js +27 -19
- package/hooks/intersection/test-utils.d.ts +1 -1
- package/hooks/intersection/test-utils.js +2 -1
- package/hooks/styles.d.ts +6 -0
- package/hooks/styles.js +26 -0
- package/info-text/index.d.ts +23 -0
- package/info-text/index.js +60 -0
- package/info-text/info-text.module.scss +28 -0
- package/input/index.d.ts +32 -0
- package/input/index.js +96 -0
- package/input/input.module.scss +20 -0
- package/input/utils.d.ts +36 -0
- package/input/utils.js +71 -0
- package/layout/index.d.ts +6 -11
- package/layout/index.js +6 -60
- package/layout/layout.d.ts +10 -0
- package/layout/layout.js +32 -0
- package/layout/layout.module.scss +33 -26
- package/layout/legacy.d.ts +15 -0
- package/layout/legacy.js +68 -0
- package/layout/legacy.module.scss +49 -0
- package/layout/types.d.ts +6 -0
- package/layout/types.js +2 -0
- package/link/index.d.ts +4 -1
- package/link/index.js +2 -2
- package/link/link-util.scss +37 -0
- package/link/link.module.scss +19 -12
- package/loading-overlay/index.d.ts +1 -0
- package/loading-overlay/index.js +1 -0
- package/masked-field/index.d.ts +1 -0
- package/masked-field/index.js +1 -0
- package/masked-input/hook.d.ts +8 -0
- package/masked-input/hook.js +72 -0
- package/masked-input/index.d.ts +5 -0
- package/masked-input/index.js +7 -0
- package/masked-input/masked-input.d.ts +8 -0
- package/masked-input/masked-input.js +73 -0
- package/masked-input/types.d.ts +51 -0
- package/masked-input/types.js +2 -0
- package/masked-input/utils.d.ts +15 -0
- package/masked-input/utils.js +49 -0
- package/modal/index.d.ts +10 -12
- package/modal/index.js +27 -64
- package/modal/modal.module.scss +98 -55
- package/modal/slots.d.ts +13 -10
- package/modal/slots.js +30 -28
- package/modal/utils.d.ts +8 -10
- package/modal/utils.js +2 -26
- package/modal-overlay/index.d.ts +13 -0
- package/modal-overlay/index.js +60 -0
- package/modal-overlay/modal-overlay-util.scss +1 -0
- package/modal-overlay/modal-overlay.module.scss +14 -0
- package/modal-overlay/utils.d.ts +14 -0
- package/modal-overlay/utils.js +32 -0
- package/package.json +49 -41
- package/pagination/utils.d.ts +2 -2
- package/panel/index.d.ts +27 -13
- package/panel/index.js +43 -9
- package/panel/panel.module.scss +49 -8
- package/phone-input/index.d.ts +4 -28
- package/phone-input/index.js +2 -121
- package/phone-input/phone-input.d.ts +8 -0
- package/phone-input/phone-input.js +133 -0
- package/phone-input/phone-input.module.scss +8 -32
- package/phone-input/presets.d.ts +21 -22
- package/phone-input/presets.js +1 -2
- package/phone-input/types.d.ts +6 -0
- package/phone-input/types.js +2 -0
- package/phone-input/utils.d.ts +30 -1
- package/phone-input/utils.js +52 -3
- package/phone-input-deprecated/index.d.ts +29 -0
- package/phone-input-deprecated/index.js +124 -0
- package/phone-input-deprecated/phone-input.module.scss +41 -0
- package/plate/index.d.ts +3 -3
- package/plate/index.js +2 -2
- package/plate/plate.module.scss +3 -0
- package/popup/index.d.ts +5 -0
- package/popup/index.js +12 -0
- package/popup/popup-view.d.ts +14 -0
- package/popup/popup-view.js +35 -0
- package/popup/popup-view.module.scss +40 -0
- package/popup/popup.d.ts +17 -0
- package/popup/popup.js +73 -0
- package/popup/utils.d.ts +38 -0
- package/popup/utils.js +83 -0
- package/price/index.d.ts +1 -1
- package/price/index.js +3 -3
- package/price/utils.d.ts +5 -5
- package/price/utils.js +33 -23
- package/radio-button/index.d.ts +10 -0
- package/radio-button/index.js +33 -0
- package/radio-button/radio-button.module.scss +46 -0
- package/rating/index.d.ts +2 -1
- package/rating/types.d.ts +1 -1
- package/readme.md +56 -65
- package/screen/index.d.ts +4 -2
- package/screen/index.js +34 -3
- package/screen/screen.module.scss +0 -2
- package/screen/slots.d.ts +2 -8
- package/screen/slots.js +8 -9
- package/screen/utils.d.ts +2 -1
- package/select/index.d.ts +2 -33
- package/select/index.js +3 -109
- package/select/parts/block.d.ts +8 -0
- package/select/parts/block.js +70 -0
- package/select/parts/block.module.scss +7 -0
- package/select/parts/button.d.ts +8 -0
- package/select/parts/button.js +69 -0
- package/select/parts/menu.d.ts +8 -0
- package/select/parts/menu.js +105 -0
- package/select/parts/menu.module.scss +4 -0
- package/select/select.d.ts +14 -0
- package/select/select.js +145 -0
- package/select/types.d.ts +55 -0
- package/select/types.js +2 -0
- package/select/utils.d.ts +3 -0
- package/select/utils.js +13 -0
- package/select-deprecated/index.d.ts +34 -0
- package/select-deprecated/index.js +112 -0
- package/shadows.scss +18 -0
- package/side-page/index.d.ts +11 -26
- package/side-page/index.js +21 -26
- package/side-page/side-page.module.scss +35 -29
- package/side-page/slots.d.ts +12 -20
- package/side-page/slots.js +16 -28
- package/spinner/index.d.ts +18 -6
- package/spinner/index.js +25 -12
- package/spinner/spinner.module.scss +8 -0
- package/stepper/index.d.ts +18 -10
- package/stepper/index.js +17 -8
- package/stepper/stepper.module.scss +14 -15
- package/styling/fonts.d.ts +3 -3
- package/switcher-row/index.d.ts +42 -0
- package/switcher-row/index.js +59 -0
- package/switcher-row/switcher-row.module.scss +59 -0
- package/text/index.d.ts +1 -1
- package/text-button/index.d.ts +42 -0
- package/text-button/index.js +46 -0
- package/text-button/text-button.module.scss +96 -0
- package/text-field/index.d.ts +7 -6
- package/text-field/index.js +3 -2
- package/textarea/index.d.ts +21 -0
- package/textarea/index.js +85 -0
- package/textarea/textarea.module.scss +15 -0
- package/toggle/index.d.ts +3 -3
- package/toggle/toggle.module.scss +17 -8
- package/tooltip/index.d.ts +1 -0
- package/tooltip/index.js +1 -0
- package/top-bar/index.d.ts +3 -40
- package/top-bar/index.js +4 -60
- package/top-bar/top-bar-util.scss +29 -0
- package/top-bar/top-bar.d.ts +9 -0
- package/top-bar/top-bar.js +101 -0
- package/top-bar/top-bar.module.scss +129 -67
- package/top-bar/types.d.ts +31 -0
- package/top-bar/types.js +2 -0
- package/top-bar/utils.d.ts +14 -0
- package/top-bar/utils.js +56 -0
- package/touch-slider/index.d.ts +1 -0
- package/touch-slider/index.js +3 -2
- package/types.d.ts +18 -0
- package/types.js +2 -0
- package/unknown-content/index.d.ts +3 -3
- package/unknown-content/index.js +3 -3
- package/unknown-content/unknown-content.module.scss +16 -12
- package/upload-area/index.d.ts +2 -0
- package/upload-area/index.js +5 -0
- package/upload-area/types.d.ts +32 -0
- package/upload-area/types.js +2 -0
- package/upload-area/upload-area-util.scss +17 -0
- package/upload-area/upload-area.d.ts +8 -0
- package/upload-area/upload-area.js +105 -0
- package/upload-area/upload-area.module.scss +78 -0
- package/upload-area/utils.d.ts +17 -0
- package/upload-area/utils.js +48 -0
- package/utils.scss +74 -1
- package/with-hint/index.d.ts +3 -2
- package/with-hint/index.js +1 -0
- package/with-hint/positioning-hint.d.ts +1 -1
- package/with-hint/positioning-hint.js +2 -2
- package/with-tooltip/index.d.ts +2 -1
- package/with-tooltip/index.js +1 -0
- package/with-tooltip/utils.d.ts +2 -2
- package/_internal/body-scroll.d.ts +0 -23
- package/_internal/body-scroll.js +0 -41
- package/_internal/checkbox/index.d.ts +0 -5
- package/constants.d.ts +0 -6
- package/constants.js +0 -9
- package/nav-bar/index.d.ts +0 -46
- package/nav-bar/index.js +0 -76
- package/nav-bar/nav-bar.module.scss +0 -95
- package/upload/area.d.ts +0 -25
- package/upload/area.js +0 -65
- package/upload/area.module.scss +0 -44
- package/upload/utils.d.ts +0 -29
- package/upload/utils.js +0 -45
- /package/_internal/{checkbox/index.js → page-scroll-lock/types.js} +0 -0
- /package/{hint → hint-deprecated}/hint.module.scss +0 -0
- /package/{select → select-deprecated}/select.module.scss +0 -0
- /package/{upload → upload-area}/upload.svg +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.Textarea = void 0;
|
|
41
|
+
const react_1 = __importStar(require("react"));
|
|
42
|
+
const base_input_1 = require("../base-input");
|
|
43
|
+
const field_block_1 = require("../field-block");
|
|
44
|
+
const utils_1 = require("../input/utils");
|
|
45
|
+
const bind_1 = __importDefault(require("classnames/bind"));
|
|
46
|
+
const textarea_module_scss_1 = __importDefault(require("./textarea.module.scss"));
|
|
47
|
+
const cx = bind_1.default.bind(textarea_module_scss_1.default);
|
|
48
|
+
/**
|
|
49
|
+
* Текстовая область.
|
|
50
|
+
* @param props Свойства.
|
|
51
|
+
* @return Элемент.
|
|
52
|
+
*/
|
|
53
|
+
function Textarea(_a) {
|
|
54
|
+
var {
|
|
55
|
+
// specific Textarea props
|
|
56
|
+
textareaRef, baseInputProps,
|
|
57
|
+
// root props
|
|
58
|
+
style, className,
|
|
59
|
+
// textarea element props (popular)
|
|
60
|
+
autoComplete, autoFocus, defaultValue, disabled, id, name, onBlur, onChange, onFocus, onInput, placeholder, readOnly, required, rows = 4, value,
|
|
61
|
+
// FieldBlock props
|
|
62
|
+
label, failed, caption, blockProps, 'data-testid': testId = 'textarea' } = _a, restProps = __rest(_a, ["textareaRef", "baseInputProps", "style", "className", "autoComplete", "autoFocus", "defaultValue", "disabled", "id", "name", "onBlur", "onChange", "onFocus", "onInput", "placeholder", "readOnly", "required", "rows", "value", "label", "failed", "caption", "blockProps", 'data-testid']);
|
|
63
|
+
const ref = (0, react_1.useRef)(null);
|
|
64
|
+
const [filled, updateFilled] = (0, utils_1.useFilledState)(ref, { value, defaultValue });
|
|
65
|
+
const [focused, setFocused] = (0, react_1.useState)(false);
|
|
66
|
+
const handleMouseDown = (0, utils_1.useFieldMouseDown)(ref, blockProps === null || blockProps === void 0 ? void 0 : blockProps.onMouseDown);
|
|
67
|
+
(0, react_1.useImperativeHandle)(textareaRef, () => ref.current);
|
|
68
|
+
return (react_1.default.createElement(field_block_1.FieldBlock, Object.assign({}, restProps, { rootProps: Object.assign(Object.assign({}, restProps.rootProps), { style,
|
|
69
|
+
className }), "data-testid": testId, caption: caption, disabled: disabled, failed: failed, fixedHeight: false, focused: focused, label: label, labelAsPlaceholder: !focused && !filled, labelProps: { htmlFor: id }, size: 'l', blockProps: Object.assign(Object.assign({}, blockProps), { onMouseDown: handleMouseDown }), main: react_1.default.createElement(base_input_1.BaseInput, Object.assign({}, baseInputProps, { textareaRef: ref, multiline: true, className: cx('textarea', baseInputProps === null || baseInputProps === void 0 ? void 0 : baseInputProps.className), style: Object.assign(Object.assign({}, baseInputProps === null || baseInputProps === void 0 ? void 0 : baseInputProps.style), { '--placeholder-color': (0, utils_1.definePlaceholderColor)({ failed, disabled }) }), autoComplete: autoComplete, autoFocus: autoFocus, defaultValue: defaultValue, disabled: disabled, id: id, name: name, placeholder: placeholder, readOnly: readOnly, required: required, rows: rows, value: value, onFocus: (event) => {
|
|
70
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
71
|
+
updateFilled(event);
|
|
72
|
+
setFocused(true);
|
|
73
|
+
}, onBlur: (event) => {
|
|
74
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
75
|
+
updateFilled(event);
|
|
76
|
+
setFocused(false);
|
|
77
|
+
}, onInput: (event) => {
|
|
78
|
+
onInput === null || onInput === void 0 ? void 0 : onInput(event);
|
|
79
|
+
updateFilled(event);
|
|
80
|
+
}, onChange: (event) => {
|
|
81
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event);
|
|
82
|
+
updateFilled(event);
|
|
83
|
+
} })), mainProps: { className: cx('main') } })));
|
|
84
|
+
}
|
|
85
|
+
exports.Textarea = Textarea;
|
package/toggle/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
2
|
+
import { CheckboxInputProps } from '../types';
|
|
3
|
+
export type ToggleProps = CheckboxInputProps;
|
|
4
4
|
/**
|
|
5
5
|
* Компонент стилизованного переключателя (input[type=checkbox]).
|
|
6
6
|
*/
|
|
7
|
-
export declare const Toggle: React.ForwardRefExoticComponent<
|
|
7
|
+
export declare const Toggle: React.ForwardRefExoticComponent<CheckboxInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -11,14 +11,23 @@
|
|
|
11
11
|
|
|
12
12
|
.input {
|
|
13
13
|
display: none;
|
|
14
|
+
&:not(:checked) + .switch {
|
|
15
|
+
--toggle-slider-position: 2px;
|
|
16
|
+
}
|
|
14
17
|
&:checked + .switch {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
18
|
+
--toggle-slider-position: calc(100% - 22px);
|
|
19
|
+
}
|
|
20
|
+
&:not(:checked):not(:disabled) + .switch {
|
|
21
|
+
--toggle-primary-color: #{colors.$basic-gray12};
|
|
22
|
+
}
|
|
23
|
+
&:checked:not(:disabled) + .switch {
|
|
24
|
+
--toggle-primary-color: #{colors.$basic-blue};
|
|
25
|
+
}
|
|
26
|
+
&:not(:checked):disabled + .switch {
|
|
27
|
+
--toggle-primary-color: #{colors.$basic-gray4};
|
|
19
28
|
}
|
|
20
|
-
&:disabled + .switch {
|
|
21
|
-
|
|
29
|
+
&:checked:disabled + .switch {
|
|
30
|
+
--toggle-primary-color: #{colors.$basic-gray24};
|
|
22
31
|
}
|
|
23
32
|
}
|
|
24
33
|
|
|
@@ -28,13 +37,13 @@
|
|
|
28
37
|
width: 44px;
|
|
29
38
|
height: 24px;
|
|
30
39
|
border-radius: 12px;
|
|
31
|
-
background:
|
|
40
|
+
background: var(--toggle-primary-color);
|
|
32
41
|
transition: background 0.16s ease-in-out;
|
|
33
42
|
&::after {
|
|
34
43
|
content: '';
|
|
35
44
|
position: absolute;
|
|
36
45
|
top: 2px;
|
|
37
|
-
left:
|
|
46
|
+
left: var(--toggle-slider-position);
|
|
38
47
|
display: block;
|
|
39
48
|
width: 20px;
|
|
40
49
|
height: 20px;
|
package/tooltip/index.d.ts
CHANGED
package/tooltip/index.js
CHANGED
|
@@ -34,6 +34,7 @@ const tooltip_module_scss_1 = __importDefault(require("./tooltip.module.scss"));
|
|
|
34
34
|
const cx = bind_1.default.bind(tooltip_module_scss_1.default);
|
|
35
35
|
/**
|
|
36
36
|
* Компонент подсказки.
|
|
37
|
+
* @deprecated Можно использовать `popup`.
|
|
37
38
|
* @param props Свойства.
|
|
38
39
|
* @return Элемент.
|
|
39
40
|
*/
|
package/top-bar/index.d.ts
CHANGED
|
@@ -1,40 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
icon?: React.ReactNode;
|
|
5
|
-
'data-testid'?: string;
|
|
6
|
-
}
|
|
7
|
-
export interface TopBarProps {
|
|
8
|
-
/** Свойства кнопок. */
|
|
9
|
-
buttonsProps?: {
|
|
10
|
-
start?: ButtonProps;
|
|
11
|
-
startSecondary?: ButtonProps;
|
|
12
|
-
end?: ButtonProps;
|
|
13
|
-
endSecondary?: ButtonProps;
|
|
14
|
-
};
|
|
15
|
-
/** CSS-класс корневого элемента. */
|
|
16
|
-
className?: string;
|
|
17
|
-
/** Размер. */
|
|
18
|
-
size?: TopBarSize;
|
|
19
|
-
/** Подзаголовок. */
|
|
20
|
-
subtitle?: string;
|
|
21
|
-
/** Заголовок. */
|
|
22
|
-
title?: string;
|
|
23
|
-
/** Нужна ли разделительная черта снизу. */
|
|
24
|
-
divided?: boolean;
|
|
25
|
-
}
|
|
26
|
-
export declare const TOP_BAR_HEIGHT: Readonly<Record<TopBarSize, number>>;
|
|
27
|
-
/**
|
|
28
|
-
* Компонент шапки модальных окон/экранов.
|
|
29
|
-
* @param props Свойства.
|
|
30
|
-
* @return Элемент.
|
|
31
|
-
*/
|
|
32
|
-
export declare const TopBar: ({ divided, size, title, subtitle, buttonsProps: { start, startSecondary, end, endSecondary }, className, }: TopBarProps) => JSX.Element;
|
|
33
|
-
/**
|
|
34
|
-
* Компонент кнопки-иконки.
|
|
35
|
-
* @param props Свойства. Поддерживаются свойства button.
|
|
36
|
-
* @param props.icon Иконка.
|
|
37
|
-
* @return Элемент.
|
|
38
|
-
*/
|
|
39
|
-
export declare const IconButton: ({ icon, ...buttonProps }: ButtonProps) => JSX.Element;
|
|
40
|
-
export {};
|
|
1
|
+
export type { TopBarProps, TopBarSize } from './types';
|
|
2
|
+
export type { navigationButtons } from './utils';
|
|
3
|
+
export { TopBar, TOP_BAR_HEIGHT } from './top-bar';
|
package/top-bar/index.js
CHANGED
|
@@ -1,62 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
-
var t = {};
|
|
4
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const top_bar_module_scss_1 = __importDefault(require("./top-bar.module.scss"));
|
|
22
|
-
const borders_1 = require("../styling/borders");
|
|
23
|
-
// некоторым компонентам нужно знать конкретную высоту, делаем единый источник
|
|
24
|
-
exports.TOP_BAR_HEIGHT = {
|
|
25
|
-
s: 64,
|
|
26
|
-
m: 80,
|
|
27
|
-
};
|
|
28
|
-
const cx = bind_1.default.bind(top_bar_module_scss_1.default);
|
|
29
|
-
/**
|
|
30
|
-
* Компонент шапки модальных окон/экранов.
|
|
31
|
-
* @param props Свойства.
|
|
32
|
-
* @return Элемент.
|
|
33
|
-
*/
|
|
34
|
-
const TopBar = ({ divided, size = 'm', title, subtitle, buttonsProps: { start, startSecondary, end, endSecondary } = {}, className, }) => {
|
|
35
|
-
const hasStart = (0, lodash_1.has)(start, 'icon');
|
|
36
|
-
const hasStartSecondary = (0, lodash_1.has)(startSecondary, 'icon');
|
|
37
|
-
const hasEnd = (0, lodash_1.has)(end, 'icon');
|
|
38
|
-
const hasEndSecondary = (0, lodash_1.has)(endSecondary, 'icon');
|
|
39
|
-
const stub = hasStart || hasEnd ? iconStub : null;
|
|
40
|
-
const secondaryStub = hasStartSecondary || hasEndSecondary ? iconStub : null;
|
|
41
|
-
return (react_1.default.createElement("div", { className: cx('root', `size-${size}`, className, divided && borders_1.InnerBorder.bottom), style: { height: `${exports.TOP_BAR_HEIGHT[size]}px` } },
|
|
42
|
-
hasStart ? react_1.default.createElement(exports.IconButton, Object.assign({}, start)) : stub,
|
|
43
|
-
hasStartSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, startSecondary)) : secondaryStub,
|
|
44
|
-
react_1.default.createElement("div", { className: cx('main-section') },
|
|
45
|
-
react_1.default.createElement("div", { className: cx('title', 'ellipsis') }, title),
|
|
46
|
-
Boolean(subtitle) && react_1.default.createElement("div", { className: cx('subtitle', 'ellipsis') }, subtitle)),
|
|
47
|
-
hasEndSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, endSecondary)) : secondaryStub,
|
|
48
|
-
hasEnd ? react_1.default.createElement(exports.IconButton, Object.assign({}, end)) : stub));
|
|
49
|
-
};
|
|
50
|
-
exports.TopBar = TopBar;
|
|
51
|
-
/**
|
|
52
|
-
* Компонент кнопки-иконки.
|
|
53
|
-
* @param props Свойства. Поддерживаются свойства button.
|
|
54
|
-
* @param props.icon Иконка.
|
|
55
|
-
* @return Элемент.
|
|
56
|
-
*/
|
|
57
|
-
const IconButton = (_a) => {
|
|
58
|
-
var { icon } = _a, buttonProps = __rest(_a, ["icon"]);
|
|
59
|
-
return (react_1.default.createElement("button", Object.assign({}, buttonProps, { type: 'button', className: cx('icon-button') }), icon));
|
|
60
|
-
};
|
|
61
|
-
exports.IconButton = IconButton;
|
|
62
|
-
const iconStub = react_1.default.createElement("div", { className: cx('icon-button', 'stub') });
|
|
3
|
+
exports.TOP_BAR_HEIGHT = exports.TopBar = void 0;
|
|
4
|
+
var top_bar_1 = require("./top-bar");
|
|
5
|
+
Object.defineProperty(exports, "TopBar", { enumerable: true, get: function () { return top_bar_1.TopBar; } });
|
|
6
|
+
Object.defineProperty(exports, "TOP_BAR_HEIGHT", { enumerable: true, get: function () { return top_bar_1.TOP_BAR_HEIGHT; } });
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
$size-s-height: 56px;
|
|
2
|
+
$size-m-height: 64px;
|
|
3
|
+
$size-xl-height: 80px;
|
|
4
|
+
|
|
5
|
+
@mixin size-s {
|
|
6
|
+
--top-bar-height: #{$size-s-height};
|
|
7
|
+
--top-bar-title-size: 16px;
|
|
8
|
+
--top-bar-title-height: 24px;
|
|
9
|
+
--top-bar-gutter: 16px;
|
|
10
|
+
--top-bar-icon-button-width: 52px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@mixin size-m {
|
|
14
|
+
--top-bar-height: #{$size-m-height};
|
|
15
|
+
--top-bar-title-size: 16px;
|
|
16
|
+
--top-bar-title-height: 24px;
|
|
17
|
+
--top-bar-gutter: 24px;
|
|
18
|
+
--top-bar-icon-button-width: 60px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@mixin size-xl {
|
|
22
|
+
--top-bar-height: #{$size-xl-height};
|
|
23
|
+
--top-bar-title-size: 16px;
|
|
24
|
+
--top-bar-title-height: 24px;
|
|
25
|
+
--top-bar-gutter: 40px;
|
|
26
|
+
--top-bar-icon-button-width: 76px;
|
|
27
|
+
--top-bar-title-only-size: 20px;
|
|
28
|
+
--top-bar-title-only-height: 28px;
|
|
29
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TopBarProps, TopBarSize } from './types';
|
|
3
|
+
export declare const TOP_BAR_HEIGHT: Readonly<Record<TopBarSize, number>>;
|
|
4
|
+
/**
|
|
5
|
+
* Компонент шапки модальных окон/экранов.
|
|
6
|
+
* @param props Свойства.
|
|
7
|
+
* @return Элемент.
|
|
8
|
+
*/
|
|
9
|
+
export declare function TopBar({ divided, size, title, subtitle, buttons: { start, startSecondary, end, endSecondary }, className, 'data-testid': testId, }: TopBarProps): JSX.Element;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.TopBar = exports.TOP_BAR_HEIGHT = void 0;
|
|
41
|
+
const react_1 = __importStar(require("react"));
|
|
42
|
+
const utils_1 = require("./utils");
|
|
43
|
+
const borders_1 = require("../styling/borders");
|
|
44
|
+
const bind_1 = __importDefault(require("classnames/bind"));
|
|
45
|
+
const top_bar_module_scss_1 = __importDefault(require("./top-bar.module.scss"));
|
|
46
|
+
// некоторым компонентам нужно знать конкретную высоту
|
|
47
|
+
exports.TOP_BAR_HEIGHT = {
|
|
48
|
+
s: 56,
|
|
49
|
+
m: 64,
|
|
50
|
+
xl: 80,
|
|
51
|
+
};
|
|
52
|
+
const cx = bind_1.default.bind(top_bar_module_scss_1.default);
|
|
53
|
+
/**
|
|
54
|
+
* Компонент шапки модальных окон/экранов.
|
|
55
|
+
* @param props Свойства.
|
|
56
|
+
* @return Элемент.
|
|
57
|
+
*/
|
|
58
|
+
function TopBar({ divided, size = 'm', title, subtitle, buttons: { start, startSecondary, end, endSecondary } = {}, className, 'data-testid': testId = 'top-bar', }) {
|
|
59
|
+
const hasStartButtons = start || startSecondary;
|
|
60
|
+
const hasEndButtons = end || endSecondary;
|
|
61
|
+
const hasButtons = hasStartButtons || hasEndButtons;
|
|
62
|
+
const rootClasses = cx('root', `size-${size}`, className, divided && borders_1.InnerBorder.bottom, !subtitle && 'no-subtitle');
|
|
63
|
+
return (react_1.default.createElement("div", { className: rootClasses, "data-testid": testId },
|
|
64
|
+
hasButtons && (react_1.default.createElement("div", { className: cx('side') },
|
|
65
|
+
hasStartButtons && (react_1.default.createElement(TopBarButtonGroup, null,
|
|
66
|
+
start && react_1.default.createElement(TopBarButton, Object.assign({}, start)),
|
|
67
|
+
startSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, startSecondary)))),
|
|
68
|
+
hasEndButtons && (react_1.default.createElement(TopBarButtonGroup, { stub: true, end: true },
|
|
69
|
+
endSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, endSecondary)),
|
|
70
|
+
end && react_1.default.createElement(TopBarButton, Object.assign({}, end)))))),
|
|
71
|
+
react_1.default.createElement("div", { className: cx('main') },
|
|
72
|
+
title && react_1.default.createElement("div", { className: cx('title') }, title),
|
|
73
|
+
subtitle && react_1.default.createElement("div", { className: cx('subtitle') }, subtitle)),
|
|
74
|
+
hasButtons && (react_1.default.createElement("div", { className: cx('side') },
|
|
75
|
+
hasEndButtons && (react_1.default.createElement(TopBarButtonGroup, { end: true },
|
|
76
|
+
endSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, endSecondary)),
|
|
77
|
+
end && react_1.default.createElement(TopBarButton, Object.assign({}, end)))),
|
|
78
|
+
hasStartButtons && (react_1.default.createElement(TopBarButtonGroup, { stub: true },
|
|
79
|
+
start && react_1.default.createElement(TopBarButton, Object.assign({}, start)),
|
|
80
|
+
startSecondary && react_1.default.createElement(TopBarButton, Object.assign({}, startSecondary))))))));
|
|
81
|
+
}
|
|
82
|
+
exports.TopBar = TopBar;
|
|
83
|
+
/**
|
|
84
|
+
* Компонент группы кнопок.
|
|
85
|
+
* @param props Свойства.
|
|
86
|
+
* @return Элемент.
|
|
87
|
+
*/
|
|
88
|
+
function TopBarButtonGroup({ children, stub, end, }) {
|
|
89
|
+
return (react_1.default.createElement(utils_1.TopBarButtonGroupContext.Provider, { value: { stub } },
|
|
90
|
+
react_1.default.createElement("div", { className: cx('button-group', { stub, end }) }, children)));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Компонент кнопки-иконки.
|
|
94
|
+
* @param props Свойства.
|
|
95
|
+
* @return Элемент.
|
|
96
|
+
*/
|
|
97
|
+
function TopBarButton(_a) {
|
|
98
|
+
var { text, icon, className, 'data-testid': testId = 'top-bar:button' } = _a, buttonProps = __rest(_a, ["text", "icon", "className", 'data-testid']);
|
|
99
|
+
const { stub } = (0, react_1.useContext)(utils_1.TopBarButtonGroupContext);
|
|
100
|
+
return (react_1.default.createElement("button", Object.assign({}, (!stub && Object.assign(Object.assign({}, buttonProps), { 'data-testid': testId })), { type: 'button', className: cx('button', icon && 'iconic', stub && 'stub', className), "aria-hidden": stub }), icon && !stub ? icon : text));
|
|
101
|
+
}
|
|
@@ -1,95 +1,157 @@
|
|
|
1
1
|
@use '../colors';
|
|
2
|
+
@use './top-bar-util';
|
|
2
3
|
|
|
3
4
|
.root {
|
|
5
|
+
width: 100%;
|
|
4
6
|
display: flex;
|
|
5
|
-
align-items: center;
|
|
6
7
|
justify-content: center;
|
|
7
8
|
background: #fff;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
display: flex;
|
|
12
|
-
width: 0;
|
|
13
|
-
flex-direction: column;
|
|
14
|
-
justify-content: center;
|
|
15
|
-
flex-grow: 1;
|
|
16
|
-
flex-shrink: 1;
|
|
17
|
-
text-align: center;
|
|
18
|
-
box-sizing: border-box;
|
|
9
|
+
height: var(--top-bar-height);
|
|
10
|
+
&.size-s {
|
|
11
|
+
@include top-bar-util.size-s;
|
|
19
12
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
font-size: 16px;
|
|
23
|
-
line-height: 24px;
|
|
13
|
+
&.size-m {
|
|
14
|
+
@include top-bar-util.size-m;
|
|
24
15
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
line-height: 16px;
|
|
28
|
-
color: colors.$basic-gray38;
|
|
16
|
+
&.size-xl {
|
|
17
|
+
@include top-bar-util.size-xl;
|
|
29
18
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.main {
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
text-align: center;
|
|
28
|
+
|
|
29
|
+
// когда нет кнопок
|
|
30
|
+
&:first-child:last-child {
|
|
31
|
+
margin: 0 var(--top-bar-gutter);
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.title {
|
|
36
|
+
color: colors.$basic-gray87;
|
|
37
|
+
font-size: var(--top-bar-title-size);
|
|
38
|
+
line-height: var(--top-bar-title-height);
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
|
|
41
|
+
// когда нет подзаголовка
|
|
42
|
+
&:first-child:last-child {
|
|
43
|
+
font-size: var(--top-bar-title-only-size, var(--top-bar-title-size));
|
|
44
|
+
line-height: var(--top-bar-title-only-height, var(--top-bar-title-height));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.subtitle {
|
|
49
|
+
color: colors.$basic-gray38;
|
|
50
|
+
font-size: 12px;
|
|
51
|
+
line-height: 16px;
|
|
52
|
+
font-weight: 400;
|
|
53
|
+
margin-top: -4px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.title,
|
|
57
|
+
.subtitle {
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
text-overflow: ellipsis;
|
|
60
|
+
white-space: nowrap;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.side {
|
|
64
|
+
height: 100%;
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-direction: column;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.button-group {
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
width: 100%;
|
|
73
|
+
&:not(.end) {
|
|
74
|
+
.iconic {
|
|
75
|
+
&:first-child:last-child {
|
|
76
|
+
justify-content: flex-start;
|
|
77
|
+
padding-left: var(--top-bar-gutter);
|
|
42
78
|
}
|
|
43
|
-
&:last-child {
|
|
44
|
-
|
|
79
|
+
&:not(:last-child):first-child {
|
|
80
|
+
justify-content: flex-start;
|
|
81
|
+
padding-left: var(--top-bar-gutter);
|
|
82
|
+
}
|
|
83
|
+
&:not(:first-child):last-child {
|
|
84
|
+
justify-content: flex-end;
|
|
85
|
+
padding-right: var(--top-bar-gutter);
|
|
45
86
|
}
|
|
46
87
|
}
|
|
47
88
|
}
|
|
48
|
-
&.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
line-height: 28px;
|
|
55
|
-
}
|
|
56
|
-
.icon-button {
|
|
57
|
-
&:first-child {
|
|
58
|
-
margin-left: 40px;
|
|
89
|
+
&.end {
|
|
90
|
+
justify-content: flex-end;
|
|
91
|
+
.iconic {
|
|
92
|
+
&:first-child:last-child {
|
|
93
|
+
justify-content: flex-end;
|
|
94
|
+
padding-right: var(--top-bar-gutter);
|
|
59
95
|
}
|
|
60
|
-
&:last-child {
|
|
61
|
-
|
|
96
|
+
&:not(:last-child):first-child {
|
|
97
|
+
justify-content: flex-start;
|
|
98
|
+
padding-left: var(--top-bar-gutter);
|
|
62
99
|
}
|
|
100
|
+
&:not(:first-child):last-child {
|
|
101
|
+
justify-content: flex-end;
|
|
102
|
+
padding-right: var(--top-bar-gutter);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
:not(.iconic) {
|
|
106
|
+
justify-content: flex-end;
|
|
63
107
|
}
|
|
64
108
|
}
|
|
109
|
+
&:not(.stub) {
|
|
110
|
+
height: 100%;
|
|
111
|
+
}
|
|
65
112
|
}
|
|
66
113
|
|
|
67
|
-
.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
114
|
+
.button {
|
|
115
|
+
background: transparent;
|
|
116
|
+
border: 0;
|
|
117
|
+
box-sizing: border-box;
|
|
118
|
+
font-family: inherit;
|
|
119
|
+
font-size: 14px;
|
|
120
|
+
line-height: 20px;
|
|
121
|
+
font-weight: 600;
|
|
122
|
+
margin: 0;
|
|
123
|
+
outline: 0;
|
|
124
|
+
text-align: inherit;
|
|
125
|
+
height: 100%;
|
|
74
126
|
display: flex;
|
|
75
127
|
align-items: center;
|
|
76
|
-
justify-content: center;
|
|
77
|
-
margin: 0;
|
|
78
128
|
padding: 0;
|
|
79
|
-
|
|
80
|
-
outline: 0;
|
|
81
|
-
width: 24px;
|
|
82
|
-
height: 24px;
|
|
83
|
-
flex-grow: 0;
|
|
84
|
-
flex-shrink: 0;
|
|
85
|
-
overflow: hidden;
|
|
86
|
-
background: transparent;
|
|
87
|
-
color: colors.$basic-gray87;
|
|
88
|
-
&:not(.stub):hover {
|
|
129
|
+
&:hover {
|
|
89
130
|
cursor: pointer;
|
|
90
|
-
color: colors.$basic-gray54;
|
|
91
131
|
}
|
|
92
|
-
|
|
132
|
+
&.iconic {
|
|
133
|
+
color: colors.$basic-gray87;
|
|
134
|
+
width: var(--top-bar-icon-button-width);
|
|
135
|
+
&:hover {
|
|
136
|
+
color: colors.$basic-gray54;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
&:not(.iconic) {
|
|
140
|
+
color: colors.$basic-blue;
|
|
141
|
+
width: 100%;
|
|
142
|
+
padding: 0 var(--top-bar-gutter);
|
|
143
|
+
&:hover {
|
|
144
|
+
color: colors.$additional-deep-blue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
&.stub {
|
|
148
|
+
height: 0;
|
|
149
|
+
overflow: hidden;
|
|
150
|
+
}
|
|
151
|
+
svg {
|
|
152
|
+
// чтобы выравнивались по центру по вертикали
|
|
153
|
+
display: block;
|
|
154
|
+
flex-shrink: 0;
|
|
93
155
|
fill: currentColor;
|
|
94
156
|
}
|
|
95
157
|
}
|