@sima-land/ui-nucleons 40.1.0 → 40.3.0

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.
Files changed (79) hide show
  1. package/_internal/custom-scrollbar/index.js +3 -3
  2. package/alert/index.d.ts +2 -0
  3. package/alert/index.js +3 -3
  4. package/autocomplete/index.js +12 -17
  5. package/avatar/index.d.ts +1 -1
  6. package/avatar/index.js +2 -4
  7. package/avatar/user.d.ts +1 -1
  8. package/avatar/user.js +2 -2
  9. package/avatar/utils.js +7 -1
  10. package/base-input/index.d.ts +1 -1
  11. package/base-input/index.js +1 -1
  12. package/bordered-layout/index.d.ts +1 -1
  13. package/bordered-layout/index.js +1 -1
  14. package/box/index.js +17 -36
  15. package/button/index.d.ts +3 -3
  16. package/button/index.js +4 -4
  17. package/card/slots.js +1 -1
  18. package/carousel/draggable.js +14 -16
  19. package/carousel/index.d.ts +1 -1
  20. package/carousel/index.js +17 -37
  21. package/chips/index.js +1 -1
  22. package/clean-buttons/index.js +1 -3
  23. package/dot-nav/dot-nav.module.scss +2 -2
  24. package/dropdown/dropdown.module.scss +1 -3
  25. package/field-grid/index.d.ts +2 -2
  26. package/field-grid/index.js +3 -3
  27. package/file-icon/index.js +5 -6
  28. package/helpers/bounds-of.js +1 -3
  29. package/helpers/find-child-element.js +1 -3
  30. package/helpers/find-offset-parent.js +4 -3
  31. package/helpers/fit-element-height.js +1 -1
  32. package/helpers/format-date.js +3 -1
  33. package/helpers/get-fraction-depth.js +1 -3
  34. package/hooks/identity.d.ts +1 -0
  35. package/hooks/identity.js +1 -0
  36. package/layout/index.js +1 -1
  37. package/link/index.js +1 -3
  38. package/loading-overlay/index.d.ts +1 -1
  39. package/loading-overlay/index.js +1 -1
  40. package/nav-bar/index.d.ts +1 -0
  41. package/nav-bar/index.js +1 -1
  42. package/package.json +17 -14
  43. package/pagination/base-pagination.js +18 -20
  44. package/pagination/index.js +1 -3
  45. package/pagination/utils.d.ts +2 -2
  46. package/pagination/utils.js +7 -6
  47. package/panel/index.js +1 -3
  48. package/phone-input/index.js +19 -20
  49. package/price/utils.js +1 -3
  50. package/range/index.js +11 -14
  51. package/rating/index.js +2 -2
  52. package/readme.md +1 -1
  53. package/screen/index.js +14 -16
  54. package/screen/screen-layout.js +10 -4
  55. package/select/index.js +5 -7
  56. package/side-page/index.d.ts +3 -2
  57. package/side-page/index.js +48 -6
  58. package/spinner/index.d.ts +1 -1
  59. package/spinner/index.js +1 -1
  60. package/spinner/spinner.module.scss +1 -4
  61. package/styling/fonts.js +1 -3
  62. package/styling/utils.js +1 -3
  63. package/text-field/index.js +3 -10
  64. package/timer/index.d.ts +3 -3
  65. package/timer/index.js +4 -4
  66. package/timer/utils.js +1 -4
  67. package/top-bar/index.js +1 -1
  68. package/unknown-content/index.d.ts +4 -2
  69. package/unknown-content/index.js +28 -2
  70. package/unknown-content/unknown-content.module.scss +214 -120
  71. package/unknown-content/utils.d.ts +6 -0
  72. package/unknown-content/utils.js +18 -0
  73. package/upload/area.js +3 -1
  74. package/upload/utils.d.ts +2 -2
  75. package/upload/utils.js +2 -2
  76. package/with-hint/positioning-hint.d.ts +1 -1
  77. package/with-hint/positioning-hint.js +1 -1
  78. package/with-hint/utils.js +5 -7
  79. package/with-in-viewport-observer/index.js +1 -1
package/screen/index.js CHANGED
@@ -43,28 +43,26 @@ const Screen = ({ children, contentRef, footer, fullScrollThreshold = 320, loadi
43
43
  innerContentRef.current && (0, body_scroll_lock_1.enableBodyScroll)(innerContentRef.current);
44
44
  }, []);
45
45
  return (react_1.default.createElement(Wrapper, null,
46
- react_1.default.createElement("div", { ref: rootRef, className: (0, utils_1.cx)('screen', 'full-width'), style: { zIndex: layer } }, loading && loadingArea === 'full'
47
- ? react_1.default.createElement(loading_overlay_1.LoadingOverlay, Object.assign({}, loadingOverlayProps))
48
- : (react_1.default.createElement(layer_1.LayerProvider, { value: layer },
49
- react_1.default.createElement(screen_layout_1.ScreenLayout, { title: title, subtitle: subtitle, withHeader: withHeader, withDivideHeader: withDivideHeader, withBackButton: withBackButton, withCloseButton: withCloseButton, children: loading && loadingArea === 'content'
50
- ? (react_1.default.createElement(loading_overlay_1.LoadingOverlay, Object.assign({}, loadingOverlayProps, loadingArea === 'content' && {
51
- fill: false,
52
- style: { height: '100%' },
53
- })))
54
- : children, childrenRef: element => {
55
- (0, exports.setRefValue)(contentRef, element);
56
- (0, exports.takeScrollableElement)(innerContentRef, element);
57
- }, footer: footer, onBack: ({ contentElement }) => {
58
- onBack && onBack({
46
+ react_1.default.createElement("div", { ref: rootRef, className: (0, utils_1.cx)('screen', 'full-width'), style: { zIndex: layer } }, loading && loadingArea === 'full' ? (react_1.default.createElement(loading_overlay_1.LoadingOverlay, Object.assign({}, loadingOverlayProps))) : (react_1.default.createElement(layer_1.LayerProvider, { value: layer },
47
+ react_1.default.createElement(screen_layout_1.ScreenLayout, { title: title, subtitle: subtitle, withHeader: withHeader, withDivideHeader: withDivideHeader, withBackButton: withBackButton, withCloseButton: withCloseButton, children: loading && loadingArea === 'content' ? (react_1.default.createElement(loading_overlay_1.LoadingOverlay, Object.assign({}, loadingOverlayProps, (loadingArea === 'content' && {
48
+ fill: false,
49
+ style: { height: '100%' },
50
+ })))) : (children), childrenRef: element => {
51
+ (0, exports.setRefValue)(contentRef, element);
52
+ (0, exports.takeScrollableElement)(innerContentRef, element);
53
+ }, footer: footer, onBack: ({ contentElement }) => {
54
+ onBack &&
55
+ onBack({
59
56
  rootElement: rootRef.current,
60
57
  contentElement,
61
58
  });
62
- }, onClose: ({ contentElement }) => {
63
- onClose && onClose({
59
+ }, onClose: ({ contentElement }) => {
60
+ onClose &&
61
+ onClose({
64
62
  rootElement: rootRef.current,
65
63
  contentElement,
66
64
  });
67
- }, onFullScroll: onFullScroll, fullScrollThreshold: fullScrollThreshold, navBarProps: navBarProps }))))));
65
+ }, onFullScroll: onFullScroll, fullScrollThreshold: fullScrollThreshold, navBarProps: navBarProps }))))));
68
66
  };
69
67
  exports.Screen = Screen;
70
68
  /**
@@ -57,15 +57,21 @@ const ScreenLayout = ({ children, childrenRef, footer, fullScrollThreshold, navB
57
57
  return (react_1.default.createElement(react_1.default.Fragment, null,
58
58
  Boolean(withHeader) && (react_1.default.createElement(nav_bar_1.NavBar, Object.assign({}, navBarProps, { title: title, subtitle: subtitle, bottomBordered: withDivideHeader, buttons: Object.assign(Object.assign({}, navBarProps.buttons), { start: withBackButton
59
59
  ? {
60
+ // ВАЖНО: не подмешиваем свойства из navBarProps.buttons.start
61
+ // чтобы не распылять конфигурацию одной и той же кнопки по нескольким местам
60
62
  icon: arrow_left_1.default,
61
63
  onClick: () => onBack && onBack({ contentElement: contentRef.current }),
62
64
  'aria-label': 'Вернуться назад',
65
+ 'data-testid': 'screen:back',
63
66
  }
64
67
  : (0, lodash_1.get)(navBarProps.buttons, 'start'), end: withCloseButton
65
68
  ? {
69
+ // ВАЖНО: не подмешиваем свойства из navBarProps.buttons.end
70
+ // чтобы не распылять конфигурацию одной и той же кнопки по нескольким местам
66
71
  icon: cross_1.default,
67
72
  onClick: () => onClose && onClose({ contentElement: contentRef.current }),
68
73
  'aria-label': `Закрыть ${title || ''}`.trim(),
74
+ 'data-testid': 'screen:close',
69
75
  }
70
76
  : (0, lodash_1.get)(navBarProps.buttons, 'end') }) }))),
71
77
  react_1.default.createElement("div", { className: (0, utils_1.cx)('content', 'full-width'), children: children, ref: (0, exports.createTakeContentRef)({
@@ -74,7 +80,7 @@ const ScreenLayout = ({ children, childrenRef, footer, fullScrollThreshold, navB
74
80
  onFullScroll,
75
81
  fullScrollThreshold,
76
82
  }) }),
77
- Boolean(footer) && (react_1.default.createElement("div", { className: (0, utils_1.cx)('footer', 'full-width') }, footer))));
83
+ Boolean(footer) && react_1.default.createElement("div", { className: (0, utils_1.cx)('footer', 'full-width') }, footer)));
78
84
  };
79
85
  exports.ScreenLayout = ScreenLayout;
80
86
  /**
@@ -101,9 +107,9 @@ const createTakeContentRef = ({ elementRef, unsubscribeRef, onFullScroll, fullSc
101
107
  unsubscribeRef.current && unsubscribeRef.current();
102
108
  // выполняем подписку, сохраняем функцию отписки
103
109
  unsubscribeRef.current = (0, on_1.default)(element, 'scroll', () => {
104
- (0, is_fully_scrolled_1.isFullyScrolled)(element, { threshold })
105
- && onFullScroll
106
- && onFullScroll({ contentElement: element });
110
+ (0, is_fully_scrolled_1.isFullyScrolled)(element, { threshold }) &&
111
+ onFullScroll &&
112
+ onFullScroll({ contentElement: element });
107
113
  });
108
114
  }
109
115
  };
package/select/index.js CHANGED
@@ -69,7 +69,7 @@ const Select = (_a) => {
69
69
  relatedTarget !== menuRef.current && toggleMenu(false);
70
70
  }, onKeyDown: (e) => {
71
71
  e.key === 'Enter' && toggleMenu(true);
72
- }, className: cx('field'), endAdornment: (react_1.default.createElement(ArrowSVG, { fill: colors_1.COLORS.get('gray38') })) })),
72
+ }, className: cx('field'), endAdornment: react_1.default.createElement(ArrowSVG, { fill: colors_1.COLORS.get('gray38') }) })),
73
73
  opened && (loading || options.length > 0) && (react_1.default.createElement(dropdown_1.Dropdown, Object.assign({}, (0, dropdown_2.placeDropdown)(restProps.size), { ref: menuRef, "data-testid": 'select:menu', tabIndex: -1, className: cx('menu'), onBlur: () => {
74
74
  toggleMenu(false);
75
75
  }, role: 'menu', onKeyDown: (event) => {
@@ -77,11 +77,9 @@ const Select = (_a) => {
77
77
  toggleMenu(false);
78
78
  fieldRef.current && fieldRef.current.focus();
79
79
  }
80
- } }), loading
81
- ? (react_1.default.createElement(dropdown_loading_1.DropdownLoading, { "data-testid": 'select:loading-area' }))
82
- : options.map((option, index) => (react_1.default.createElement(dropdown_item_1.DropdownItem, { size: optionSize, key: index, role: 'menuitem', onClick: () => {
83
- toggleMenu(false);
84
- onSelect && onSelect(option);
85
- } }, renderOption(option))))))));
80
+ } }), loading ? (react_1.default.createElement(dropdown_loading_1.DropdownLoading, { "data-testid": 'select:loading-area' })) : (options.map((option, index) => (react_1.default.createElement(dropdown_item_1.DropdownItem, { size: optionSize, key: index, role: 'menuitem', onClick: () => {
81
+ toggleMenu(false);
82
+ onSelect && onSelect(option);
83
+ } }, renderOption(option)))))))));
86
84
  };
87
85
  exports.Select = Select;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- export interface SidePageProps {
2
+ import { WithBodyScrollLock } from '../_internal/body-scroll';
3
+ export interface SidePageProps extends WithBodyScrollLock {
3
4
  /** Нужно ли показать компонент. */
4
5
  shown?: boolean;
5
6
  /** Нужно ли использовать анимации при открытии/закрытии. */
@@ -17,7 +18,7 @@ export interface SidePageProps {
17
18
  * @return Элемент.
18
19
  */
19
20
  export declare const SidePage: {
20
- ({ shown, withTransitions, size, children, onClose, }: SidePageProps): JSX.Element;
21
+ ({ shown, withTransitions, ...restProps }: SidePageProps): JSX.Element;
21
22
  Header: {
22
23
  ({ onBack, onClose, ...topBarProps }: import("../top-bar").TopBarProps & {
23
24
  onBack?: (() => void) | undefined;
@@ -1,13 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __rest = (this && this.__rest) || function (s, e) {
22
+ var t = {};
23
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
24
+ t[p] = s[p];
25
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
26
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
27
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
28
+ t[p[i]] = s[p[i]];
29
+ }
30
+ return t;
31
+ };
2
32
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
33
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
34
  };
5
35
  Object.defineProperty(exports, "__esModule", { value: true });
6
36
  exports.SidePage = void 0;
7
- const react_1 = __importDefault(require("react"));
37
+ const react_1 = __importStar(require("react"));
8
38
  const define_slots_1 = require("../helpers/define-slots");
9
39
  const utils_1 = require("../modal/utils");
10
40
  const layer_1 = require("../helpers/layer");
41
+ const body_scroll_1 = require("../_internal/body-scroll");
11
42
  const slots_1 = require("./slots");
12
43
  const CSSTransition_1 = __importDefault(require("react-transition-group/CSSTransition"));
13
44
  const bind_1 = __importDefault(require("classnames/bind"));
@@ -24,10 +55,21 @@ const transitionClasses = {
24
55
  * @param props Свойства.
25
56
  * @return Элемент.
26
57
  */
27
- const SidePage = ({ shown, withTransitions, size = 'm', children, onClose, }) => {
58
+ const SidePage = (_a) => {
59
+ var { shown, withTransitions } = _a, restProps = __rest(_a, ["shown", "withTransitions"]);
60
+ const transitionDuration = withTransitions ? 300 : 0;
61
+ return (react_1.default.createElement(CSSTransition_1.default, { in: shown, timeout: transitionDuration, classNames: transitionClasses, unmountOnExit: true }, transitionStatus => (react_1.default.createElement(SidePageInner, Object.assign({}, restProps, { transitionStatus, transitionDuration })))));
62
+ };
63
+ exports.SidePage = SidePage;
64
+ /**
65
+ * Фиктивный компонент, необходимый для того чтобы задействовать хук блокировки прокрутки внутри CSSTransition.
66
+ * @param props Свойства.
67
+ * @return Элемент.
68
+ */
69
+ const SidePageInner = ({ size = 'm', children, onClose, withScrollDisable, scrollDisableOptions, transitionStatus, transitionDuration, }) => {
28
70
  const layer = (0, layer_1.useLayer)() + 100;
29
71
  const overlayBind = (0, utils_1.useCloseHandler)(onClose);
30
- const transitionDuration = withTransitions ? 300 : 0;
72
+ const ref = (0, react_1.useRef)(null);
31
73
  const overlayStyles = {
32
74
  zIndex: layer,
33
75
  '--transition-duration': `${transitionDuration}ms`,
@@ -37,13 +79,13 @@ const SidePage = ({ shown, withTransitions, size = 'm', children, onClose, }) =>
37
79
  body: exports.SidePage.Body,
38
80
  footer: exports.SidePage.Footer,
39
81
  });
40
- return (react_1.default.createElement(CSSTransition_1.default, { in: shown, timeout: transitionDuration, classNames: transitionClasses, unmountOnExit: true }, status => (react_1.default.createElement("div", Object.assign({ className: cx('overlay'), style: overlayStyles }, (status !== 'entering' && overlayBind)),
82
+ (0, body_scroll_1.useBodyScrollLock)(ref, withScrollDisable, scrollDisableOptions);
83
+ return (react_1.default.createElement("div", Object.assign({ ref: ref, className: cx('overlay'), style: overlayStyles }, (transitionStatus !== 'entering' && overlayBind)),
41
84
  react_1.default.createElement("div", { className: cx('main', `size-${size}`) },
42
85
  header,
43
86
  react_1.default.createElement("div", { className: cx('body') }, body),
44
- footer)))));
87
+ footer)));
45
88
  };
46
- exports.SidePage = SidePage;
47
89
  exports.SidePage.Header = slots_1.SidePageHeader;
48
90
  exports.SidePage.Body = slots_1.SidePageBody;
49
91
  exports.SidePage.Footer = slots_1.SidePageFooter;
@@ -15,7 +15,7 @@ export declare const DIAMETERS: Record<Size, number>;
15
15
  /**
16
16
  * Компонент спиннера.
17
17
  * @param props Свойства.
18
- * @return Компонент.
18
+ * @return Элемент.
19
19
  */
20
20
  export declare const Spinner: ({ size, color, className, style, }: SpinnerProps) => JSX.Element;
21
21
  export {};
package/spinner/index.js CHANGED
@@ -20,7 +20,7 @@ const AVAILABLE_COLORS = ['brand-blue', 'white'];
20
20
  /**
21
21
  * Компонент спиннера.
22
22
  * @param props Свойства.
23
- * @return Компонент.
23
+ * @return Элемент.
24
24
  */
25
25
  const Spinner = ({ size = 'medium', color = DEFAULT_COLOR, className, style, }) => {
26
26
  const readySize = (0, lodash_1.has)(exports.DIAMETERS, size) ? size : 'medium';
@@ -23,10 +23,7 @@ $durations: (
23
23
  width: #{$diameter}px;
24
24
  height: #{$diameter}px;
25
25
  .circle {
26
- animation: dash-#{$sizeKey}
27
- map-get($durations, $sizeKey)
28
- linear
29
- infinite;
26
+ animation: dash-#{$sizeKey} map-get($durations, $sizeKey) linear infinite;
30
27
  }
31
28
  @keyframes dash-#{$sizeKey} {
32
29
  0% {
package/styling/fonts.js CHANGED
@@ -7,9 +7,7 @@ exports.weight = exports.lineHeight = exports.size = exports.WEIGHTS = exports.L
7
7
  const utils_1 = require("./utils");
8
8
  const fonts_module_scss_1 = __importDefault(require("./fonts.module.scss"));
9
9
  exports.SIZES = new Set([12, 14, 16, 20, 24, 32, 48, 64]);
10
- exports.LINE_HEIGHTS = new Set([
11
- 16, 20, 24, 28, 32, 40, 60, 80,
12
- ]);
10
+ exports.LINE_HEIGHTS = new Set([16, 20, 24, 28, 32, 40, 60, 80]);
13
11
  exports.WEIGHTS = new Set([400, 600, 700]);
14
12
  exports.size = (0, utils_1.ClassGetter)(fonts_module_scss_1.default, exports.SIZES.has.bind(exports.SIZES), 'size-');
15
13
  exports.lineHeight = (0, utils_1.ClassGetter)(fonts_module_scss_1.default, exports.LINE_HEIGHTS.has.bind(exports.LINE_HEIGHTS), 'line-height-');
package/styling/utils.js CHANGED
@@ -14,8 +14,6 @@ const bind_1 = __importDefault(require("classnames/bind"));
14
14
  */
15
15
  const ClassGetter = (classes, isValidKey, prefix = '') => {
16
16
  const cx = bind_1.default.bind(classes);
17
- return (value) => isValidKey(value)
18
- ? cx(`${prefix}${value}`)
19
- : undefined;
17
+ return (value) => (isValidKey(value) ? cx(`${prefix}${value}`) : undefined);
20
18
  };
21
19
  exports.ClassGetter = ClassGetter;
@@ -45,7 +45,7 @@ const isVisible = (value) => !(0, lodash_1.isNil)(value) && `${value}` !== '';
45
45
  * @param modifiers Данные визуальных модификаторов.
46
46
  * @return Строка с css-классами.
47
47
  */
48
- const modifiersToClasses = ({ disabled, failed, focused, variant }) => cx(disabled && 'disabled', failed && 'failed', focused && 'focused', variant && `variant-${variant}`);
48
+ const modifiersToClasses = ({ disabled, failed, focused, variant, }) => cx(disabled && 'disabled', failed && 'failed', focused && 'focused', variant && `variant-${variant}`);
49
49
  /**
50
50
  * Компонент текстового поля.
51
51
  * @param props Свойства.
@@ -73,20 +73,13 @@ exports.TextField = (0, react_1.forwardRef)(function TextField({ autoFocus, capt
73
73
  react_1.default.createElement("div", { "data-testid": 'text-field:block', className: cx('reset', 'input-block', commonModifyClasses, size && `size-${size}`, focused && classes.blockFocused, multiline && 'multiline', withLabel && 'with-label', variant === 'desktop' && rounds !== 'none' && shapes_1.SmallRounds[rounds]), onClick: event => {
74
74
  const input = baseInputRef.current;
75
75
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
76
- input
77
- && !disabled
78
- && input !== document.activeElement
79
- && input.focus();
76
+ input && !disabled && input !== document.activeElement && input.focus();
80
77
  } },
81
78
  !multiline && Boolean(startAdornment) && (react_1.default.createElement(box_1.Box, { display: 'flex', alignItems: 'center', marginRight: 4 }, startAdornment)),
82
79
  react_1.default.createElement("div", { className: cx('main-column') },
83
80
  withLabel && (react_1.default.createElement("label", { className: cx('label', commonModifyClasses, hasValue && 'filled', labelAsPlaceholder && 'as-placeholder'), children: label })),
84
81
  react_1.default.createElement("div", { className: cx('input-wrapper') },
85
- react_1.default.createElement(base_input_1.BaseInput, Object.assign({}, baseInputProps, { "data-testid": 'text-field:field', multiline: multiline, ref: baseInputRef, placeholder: withLabel && labelAsPlaceholder
86
- ? undefined
87
- : placeholder, restPlaceholder: withLabel && labelAsPlaceholder
88
- ? undefined
89
- : restPlaceholder, autoFocus: autoFocus, className: cx('base-input', commonModifyClasses, classes.baseInput, size && `size-${size}`), defaultValue: defaultValue, value: value, readOnly: readOnly, disabled: disabled, onFocus: (event) => {
82
+ react_1.default.createElement(base_input_1.BaseInput, Object.assign({}, baseInputProps, { "data-testid": 'text-field:field', multiline: multiline, ref: baseInputRef, placeholder: withLabel && labelAsPlaceholder ? undefined : placeholder, restPlaceholder: withLabel && labelAsPlaceholder ? undefined : restPlaceholder, autoFocus: autoFocus, className: cx('base-input', commonModifyClasses, classes.baseInput, size && `size-${size}`), defaultValue: defaultValue, value: value, readOnly: readOnly, disabled: disabled, onFocus: (event) => {
90
83
  (0, lodash_1.isFunction)(onFocus) && onFocus(event);
91
84
  toggleHasValue(Boolean(event.target.value));
92
85
  toggleFocused(true);
package/timer/index.d.ts CHANGED
@@ -9,8 +9,8 @@ export interface TimerProps {
9
9
  timeout?: number;
10
10
  }
11
11
  /**
12
- * Возвращает таймер с временем между событием и текущим временем.
13
- * @param props Свойства компонента.
12
+ * Компонент для вывода оставшегося времени до целевой временной отметки.
13
+ * @param props Свойства.
14
14
  * @return Элемент.
15
15
  */
16
- export declare const Timer: ({ date, format, timeout, }: TimerProps) => JSX.Element;
16
+ export declare const Timer: ({ date, format, timeout }: TimerProps) => JSX.Element;
package/timer/index.js CHANGED
@@ -23,11 +23,11 @@ exports.Timer = void 0;
23
23
  const react_1 = __importStar(require("react"));
24
24
  const utils_1 = require("./utils");
25
25
  /**
26
- * Возвращает таймер с временем между событием и текущим временем.
27
- * @param props Свойства компонента.
26
+ * Компонент для вывода оставшегося времени до целевой временной отметки.
27
+ * @param props Свойства.
28
28
  * @return Элемент.
29
29
  */
30
- const Timer = ({ date, format = utils_1.formatDistance, timeout = 1000, }) => {
30
+ const Timer = ({ date, format = utils_1.formatDistance, timeout = 1000 }) => {
31
31
  const [distance, setDistance] = (0, react_1.useState)((0, utils_1.getDistanceToNow)(date));
32
32
  (0, react_1.useEffect)(() => {
33
33
  const timerId = setInterval(() => {
@@ -36,6 +36,6 @@ const Timer = ({ date, format = utils_1.formatDistance, timeout = 1000, }) => {
36
36
  setDistance((0, utils_1.getDistanceToNow)(date));
37
37
  return () => clearInterval(timerId);
38
38
  }, [timeout]);
39
- return (react_1.default.createElement(react_1.default.Fragment, null, format(distance)));
39
+ return react_1.default.createElement(react_1.default.Fragment, null, format(distance));
40
40
  };
41
41
  exports.Timer = Timer;
package/timer/utils.js CHANGED
@@ -14,10 +14,7 @@ const UNITS = ['day', 'hour', 'minute', 'second'];
14
14
  * @param distance Оставшееся время.
15
15
  * @return Отформатированное время.
16
16
  */
17
- const formatDistance = ({ days, hours, minutes, seconds }) => [
18
- days,
19
- ...[hours % 24, minutes % 60, seconds % 60].map(s => `${s}`.padStart(2, '0')),
20
- ].join(':');
17
+ const formatDistance = ({ days, hours, minutes, seconds }) => [days, ...[hours % 24, minutes % 60, seconds % 60].map(s => `${s}`.padStart(2, '0'))].join(':');
21
18
  exports.formatDistance = formatDistance;
22
19
  /**
23
20
  * Возвращает объект с данными об оставшемся времени от текущего момента.
package/top-bar/index.js CHANGED
@@ -43,7 +43,7 @@ const TopBar = ({ divided, size = 'm', title, subtitle, buttonsProps: { start, s
43
43
  hasStartSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, startSecondary)) : secondaryStub,
44
44
  react_1.default.createElement("div", { className: cx('main-section') },
45
45
  react_1.default.createElement("div", { className: cx('title', 'ellipsis') }, title),
46
- Boolean(subtitle) && (react_1.default.createElement("div", { className: cx('subtitle', 'ellipsis') }, subtitle))),
46
+ Boolean(subtitle) && react_1.default.createElement("div", { className: cx('subtitle', 'ellipsis') }, subtitle)),
47
47
  hasEndSecondary ? react_1.default.createElement(exports.IconButton, Object.assign({}, endSecondary)) : secondaryStub,
48
48
  hasEnd ? react_1.default.createElement(exports.IconButton, Object.assign({}, end)) : stub));
49
49
  };
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
2
  export interface UnknownContentProps extends React.HTMLAttributes<HTMLDivElement> {
3
3
  /** Строка с html-версткой. */
4
- markup: string;
4
+ markup?: string;
5
+ /** Содержимое. */
6
+ children?: React.ReactNode;
5
7
  }
6
8
  /**
7
9
  * Компонент, стилизующий верстку по гайдам.
8
10
  * @param props Свойства.
9
11
  * @return Элемент.
10
12
  */
11
- export declare const UnknownContent: ({ markup, className }: UnknownContentProps) => JSX.Element;
13
+ export declare const UnknownContent: ({ markup, children, className }: UnknownContentProps) => JSX.Element;
@@ -1,16 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
6
25
  exports.UnknownContent = void 0;
7
- const react_1 = __importDefault(require("react"));
26
+ const react_1 = __importStar(require("react"));
8
27
  const classnames_1 = __importDefault(require("classnames"));
9
28
  const unknown_content_module_scss_1 = __importDefault(require("./unknown-content.module.scss"));
29
+ const utils_1 = require("./utils");
10
30
  /**
11
31
  * Компонент, стилизующий верстку по гайдам.
12
32
  * @param props Свойства.
13
33
  * @return Элемент.
14
34
  */
15
- const UnknownContent = ({ markup, className }) => (react_1.default.createElement("div", { className: (0, classnames_1.default)(unknown_content_module_scss_1.default.root, className), dangerouslySetInnerHTML: { __html: markup } }));
35
+ const UnknownContent = ({ markup, children, className }) => {
36
+ const ref = (0, react_1.useRef)(null);
37
+ (0, react_1.useEffect)(() => {
38
+ ref.current && (0, utils_1.setTableRowLabels)(ref.current);
39
+ });
40
+ return (react_1.default.createElement("div", Object.assign({ ref: ref, className: (0, classnames_1.default)(unknown_content_module_scss_1.default.root, className) }, (children ? { children } : { dangerouslySetInnerHTML: { __html: markup || '' } }))));
41
+ };
16
42
  exports.UnknownContent = UnknownContent;