@steroidsjs/core 2.1.0-beta.15 → 2.1.0-beta.19

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 (97) hide show
  1. package/actions/list.d.ts +1 -0
  2. package/actions/list.js +1 -0
  3. package/components/ClientStorageComponent.d.ts +3 -3
  4. package/components/ClientStorageComponent.js +28 -22
  5. package/components/HttpComponent.js +32 -15
  6. package/components/LocaleComponent.js +9 -9
  7. package/components/MetricsComponent.js +3 -1
  8. package/components/StoreComponent.d.ts +6 -0
  9. package/components/StoreComponent.js +5 -6
  10. package/components/UiComponent.d.ts +1 -1
  11. package/components/WebSocketComponent.d.ts +1 -1
  12. package/hoc/components.d.ts +1 -1
  13. package/hoc/components.js +1 -1
  14. package/hooks/index.d.ts +2 -1
  15. package/hooks/index.js +3 -1
  16. package/hooks/useApplication.d.ts +29 -26
  17. package/hooks/useApplication.js +17 -82
  18. package/hooks/useComponents.d.ts +1 -14
  19. package/hooks/useComponents.js +5 -5
  20. package/hooks/useFetch.d.ts +11 -3
  21. package/hooks/useFetch.js +34 -31
  22. package/hooks/useLayout.d.ts +9 -0
  23. package/hooks/useLayout.js +64 -44
  24. package/hooks/useList.d.ts +45 -0
  25. package/hooks/useList.js +83 -53
  26. package/hooks/useModel.js +1 -1
  27. package/hooks/useScreen.d.ts +1 -1
  28. package/hooks/useScreen.js +2 -2
  29. package/hooks/useSsr.d.ts +2 -0
  30. package/hooks/useSsr.js +8 -0
  31. package/index.d.ts +8 -2
  32. package/package.json +4 -2
  33. package/providers/ComponentsProvider.d.ts +26 -0
  34. package/providers/ComponentsProvider.js +28 -0
  35. package/providers/ScreenProvider.d.ts +20 -0
  36. package/providers/ScreenProvider.js +87 -0
  37. package/providers/SsrProvider.d.ts +17 -0
  38. package/providers/SsrProvider.js +32 -0
  39. package/providers/index.d.ts +4 -0
  40. package/providers/index.js +12 -0
  41. package/reducers/form.d.ts +1 -1
  42. package/reducers/form.js +1 -1
  43. package/reducers/list.js +1 -3
  44. package/reducers/router.js +1 -1
  45. package/ui/content/Alert/Alert.d.ts +50 -0
  46. package/ui/content/Alert/Alert.js +39 -0
  47. package/ui/content/Alert/index.d.ts +2 -0
  48. package/ui/content/Alert/index.js +7 -0
  49. package/ui/content/Avatar/Avatar.d.ts +53 -12
  50. package/ui/content/Avatar/Avatar.js +25 -4
  51. package/ui/content/Avatar/index.d.ts +6 -1
  52. package/ui/content/Avatar/index.js +4 -0
  53. package/ui/content/Card/Card.d.ts +61 -13
  54. package/ui/content/Card/Card.js +3 -2
  55. package/ui/content/Collapse/Collapse.d.ts +63 -0
  56. package/ui/content/Collapse/Collapse.js +75 -0
  57. package/ui/content/Collapse/CollapseItem.d.ts +67 -0
  58. package/ui/content/Collapse/CollapseItem.js +22 -0
  59. package/ui/content/Collapse/index.d.ts +7 -0
  60. package/ui/content/Collapse/index.js +8 -0
  61. package/ui/content/index.d.ts +13 -0
  62. package/ui/content/index.js +22 -0
  63. package/ui/crud/Crud/Crud.d.ts +1 -1
  64. package/ui/crud/index.d.ts +1 -0
  65. package/ui/form/Button/Button.d.ts +1 -0
  66. package/ui/form/Button/Button.js +1 -0
  67. package/ui/form/DropDownField/DropDownField.js +4 -2
  68. package/ui/form/Form/Form.js +1 -1
  69. package/ui/form/InputField/InputField.d.ts +7 -0
  70. package/ui/form/InputField/InputField.js +1 -0
  71. package/ui/form/TextField/TextField.d.ts +2 -1
  72. package/ui/form/TextField/TextField.js +1 -1
  73. package/ui/icon/Icon/Icon.js +3 -0
  74. package/ui/layout/Meta/Meta.d.ts +56 -0
  75. package/ui/layout/Meta/Meta.js +38 -0
  76. package/ui/layout/Meta/index.d.ts +2 -0
  77. package/ui/layout/Meta/index.js +7 -0
  78. package/ui/layout/Notifications/Notifications.js +1 -1
  79. package/ui/layout/Portal.js +3 -0
  80. package/ui/layout/ProgressBar/ProgressBar.d.ts +55 -0
  81. package/ui/layout/ProgressBar/ProgressBar.js +52 -0
  82. package/ui/layout/ProgressBar/index.d.ts +2 -0
  83. package/ui/layout/ProgressBar/index.js +7 -0
  84. package/ui/layout/Skeleton/Skeleton.d.ts +25 -0
  85. package/ui/layout/Skeleton/Skeleton.js +11 -0
  86. package/ui/layout/Skeleton/index.d.ts +2 -0
  87. package/ui/layout/Skeleton/index.js +7 -0
  88. package/ui/list/Steps/Steps.d.ts +32 -0
  89. package/ui/list/Steps/Steps.js +23 -0
  90. package/ui/list/Steps/index.d.ts +2 -0
  91. package/ui/list/Steps/index.js +7 -0
  92. package/ui/nav/Router/Router.d.ts +13 -0
  93. package/ui/nav/Router/Router.js +1 -1
  94. package/ui/content/Avatar/SizeContext.d.ts +0 -1
  95. package/ui/content/Avatar/SizeContext.js +0 -14
  96. package/ui/nav/Router/SsrProvider.d.ts +0 -15
  97. package/ui/nav/Router/SsrProvider.js +0 -55
@@ -0,0 +1,63 @@
1
+ import * as React from 'react';
2
+ interface ICollapseProps {
3
+ view?: any;
4
+ style?: React.CSSProperties;
5
+ children?: any;
6
+ /**
7
+ * Дополнительный CSS-класс
8
+ */
9
+ className?: CssClassName;
10
+ /**
11
+ * @example {true}
12
+ */
13
+ disabled?: boolean;
14
+ /**
15
+ * Кастомная иконка svg или название иконки
16
+ * @example {'circle'}
17
+ */
18
+ icon?: React.ReactNode | string;
19
+ /**
20
+ * Показ иконки, которая показывает состояние CollapseItem. Поумолчанию включены.
21
+ * @example {false}
22
+ */
23
+ showIcon?: boolean;
24
+ /**
25
+ * Позиция иконки-индикатора
26
+ * @example {'left'}
27
+ */
28
+ iconPosition?: 'left' | 'right';
29
+ /**
30
+ * Включает режим Аккордиона (только один CollapseItem может быть открыт)
31
+ * @example {true}
32
+ */
33
+ isAccordion?: boolean;
34
+ /**
35
+ * Номер активного CollapseItem, который может меняться динамический или быть статичным
36
+ * @example
37
+ */
38
+ activeKey?: number;
39
+ /**
40
+ * Вызываемая функция при каждом изменении состояния
41
+ * @example {() => {console.log('success')}}
42
+ */
43
+ onChange?: () => void;
44
+ /**
45
+ * Отключение внешних рамок
46
+ * @example {true}
47
+ */
48
+ borderless?: boolean;
49
+ }
50
+ export interface ICollapseViewProps extends ICollapseProps {
51
+ toggleCollapse: (number: any) => void;
52
+ toggleAccordion: (number: any) => void;
53
+ childIndex: number;
54
+ isShowMore?: boolean;
55
+ }
56
+ declare function Collapse(props: ICollapseProps): JSX.Element;
57
+ declare namespace Collapse {
58
+ var defaultProps: {
59
+ iconPosition: string;
60
+ showIcon: boolean;
61
+ };
62
+ }
63
+ export default Collapse;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
33
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
34
+ to[j] = from[i];
35
+ return to;
36
+ };
37
+ exports.__esModule = true;
38
+ var React = __importStar(require("react"));
39
+ var hooks_1 = require("@steroidsjs/core/hooks");
40
+ function Collapse(props) {
41
+ var _a = React.useState([]), state = _a[0], setState = _a[1];
42
+ React.useEffect(props.onChange, [state]);
43
+ var toggleCollapse = function (indexSelected) {
44
+ if (state.includes(indexSelected)) {
45
+ var newState = __spreadArray([], state);
46
+ var indexInArray = state.indexOf(indexSelected);
47
+ newState.splice(indexInArray, 1);
48
+ setState(newState);
49
+ }
50
+ else {
51
+ var newState = __spreadArray([], state);
52
+ newState.push(indexSelected);
53
+ setState(newState);
54
+ }
55
+ };
56
+ var toggleAccordion = function (indexSelected) {
57
+ if (state.includes(indexSelected)) {
58
+ setState([]);
59
+ }
60
+ else {
61
+ var newState = [];
62
+ newState.push(indexSelected);
63
+ setState(newState);
64
+ }
65
+ };
66
+ var components = hooks_1.useComponents();
67
+ var CollapseView = components.ui.getView(props.view || 'content.CollapseView');
68
+ return (React.createElement(CollapseView, __assign({}, props), React.Children.map(props.children, function (child, index) { return React.cloneElement(child, __assign({ activeKey: props.activeKey, isAccordion: props.isAccordion, childIndex: index, toggleAccordion: toggleAccordion,
69
+ toggleCollapse: toggleCollapse, isShowMore: (state || []).includes(index), showIcon: props.showIcon, iconPosition: props.iconPosition, borderless: props.borderless }, child.props)); })));
70
+ }
71
+ Collapse.defaultProps = {
72
+ iconPosition: 'right',
73
+ showIcon: true
74
+ };
75
+ exports["default"] = Collapse;
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ interface ICollapseItemProps {
3
+ view?: any;
4
+ style?: React.CSSProperties;
5
+ children?: any;
6
+ /**
7
+ * Дополнительный CSS-класс
8
+ */
9
+ className?: CssClassName;
10
+ /**
11
+ * Название CollapseItem
12
+ * @example {'Подробнее'}
13
+ */
14
+ title?: string;
15
+ /**
16
+ * @example {true}
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Кастомная иконка svg или название иконки
21
+ * @example {'circle'}
22
+ */
23
+ icon?: React.ReactNode | string;
24
+ /**
25
+ * Показ иконки, которая показывает состояние CollapseItem. Поумолчанию включены.
26
+ * @example {false}
27
+ */
28
+ showIcon?: boolean;
29
+ /**
30
+ * Позиция иконки-индикатора
31
+ * @example {'left'}
32
+ */
33
+ iconPosition?: 'left' | 'right';
34
+ /**
35
+ * Включает режим Аккордиона (только один CollapseItem может быть открыт)
36
+ * @example {true}
37
+ */
38
+ isAccordion?: boolean;
39
+ /**
40
+ * Номер активного CollapseItem, который может меняться динамический или быть статичным
41
+ * @example
42
+ */
43
+ activeKey?: number;
44
+ /**
45
+ * Вызываемая функция при каждом изменении состояния
46
+ * @example {() => {console.log('success')}}
47
+ */
48
+ onChange?: () => void;
49
+ /**
50
+ * Отключение внешних рамок
51
+ * @example {true}
52
+ */
53
+ borderless?: boolean;
54
+ }
55
+ export interface ICollapseItemViewProps extends ICollapseItemProps {
56
+ toggleCollapse?: (number: any) => void;
57
+ toggleAccordion?: (number: any) => void;
58
+ childIndex?: number;
59
+ isShowMore?: boolean;
60
+ }
61
+ declare function CollapseItem(props: ICollapseItemProps): any;
62
+ declare namespace CollapseItem {
63
+ var defaultProps: {
64
+ title: string;
65
+ };
66
+ }
67
+ export default CollapseItem;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ exports.__esModule = true;
14
+ var hooks_1 = require("@steroidsjs/core/hooks");
15
+ function CollapseItem(props) {
16
+ var components = hooks_1.useComponents();
17
+ return components.ui.renderView(props.view || 'content.CollapseItemView', __assign({}, props));
18
+ }
19
+ CollapseItem.defaultProps = {
20
+ title: 'Collapse'
21
+ };
22
+ exports["default"] = CollapseItem;
@@ -0,0 +1,7 @@
1
+ import CollapseItem from './CollapseItem';
2
+ import Collapse from './Collapse';
3
+ declare const _default: {
4
+ CollapseItem: typeof CollapseItem;
5
+ Collapse: typeof Collapse;
6
+ };
7
+ export default _default;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var CollapseItem_1 = __importDefault(require("./CollapseItem"));
7
+ var Collapse_1 = __importDefault(require("./Collapse"));
8
+ exports["default"] = { CollapseItem: CollapseItem_1["default"], Collapse: Collapse_1["default"] };
@@ -0,0 +1,13 @@
1
+ import { Avatar, AvatarGroup } from './Avatar';
2
+ import Card from './Card';
3
+ import DropDown from './DropDown';
4
+ import Alert from './Alert';
5
+ export { Avatar, AvatarGroup, Alert, Card, DropDown, };
6
+ declare const _default: {
7
+ Avatar: typeof Avatar;
8
+ AvatarGroup: typeof AvatarGroup;
9
+ Alert: typeof Alert;
10
+ Card: typeof Card;
11
+ DropDown: typeof DropDown;
12
+ };
13
+ export default _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.DropDown = exports.Card = exports.Alert = exports.AvatarGroup = exports.Avatar = void 0;
7
+ var Avatar_1 = require("./Avatar");
8
+ exports.Avatar = Avatar_1.Avatar;
9
+ exports.AvatarGroup = Avatar_1.AvatarGroup;
10
+ var Card_1 = __importDefault(require("./Card"));
11
+ exports.Card = Card_1["default"];
12
+ var DropDown_1 = __importDefault(require("./DropDown"));
13
+ exports.DropDown = DropDown_1["default"];
14
+ var Alert_1 = __importDefault(require("./Alert"));
15
+ exports.Alert = Alert_1["default"];
16
+ exports["default"] = {
17
+ Avatar: Avatar_1.Avatar,
18
+ AvatarGroup: Avatar_1.AvatarGroup,
19
+ Alert: Alert_1["default"],
20
+ Card: Card_1["default"],
21
+ DropDown: DropDown_1["default"]
22
+ };
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { IApiRest } from '../../../components/ApiComponent';
4
- import { IComponents } from '../../../hooks/useComponents';
4
+ import { IComponents } from '../../../providers/ComponentsProvider';
5
5
  import { IComponentsHocOutput } from '../../../hoc/components';
6
6
  import { IConnectHocOutput } from '../../../hoc/connect';
7
7
  import { IFormProps } from '../../form/Form/Form';
@@ -31,4 +31,5 @@ export declare const generateCrud: (routeId: string, props: ICrudGeneratorProps)
31
31
  items?: IRouteItem[] | {
32
32
  [key: string]: IRouteItem;
33
33
  };
34
+ preloadData?: (match: Record<string, any>) => (import("../../hooks/useFetch").IFetchConfig | import("../list/List/List").IListProps)[];
34
35
  };
@@ -177,6 +177,7 @@ declare namespace Button {
177
177
  disabled: boolean;
178
178
  submitting: boolean;
179
179
  block: boolean;
180
+ size: string;
180
181
  className: string;
181
182
  resetFailedMs: number;
182
183
  showLabelOnLoading: boolean;
@@ -136,6 +136,7 @@ Button.defaultProps = {
136
136
  disabled: false,
137
137
  submitting: false,
138
138
  block: false,
139
+ size: 'md',
139
140
  className: '',
140
141
  resetFailedMs: 2000,
141
142
  showLabelOnLoading: true,
@@ -66,7 +66,9 @@ function DropDownField(props) {
66
66
  }, [setIsFocused, setIsOpened]);
67
67
  // Outside click -> close
68
68
  var forwardedRef = react_1.useRef(null);
69
- react_use_1.useClickAway(forwardedRef, onClose);
69
+ if (process.env.PLATFORM !== 'mobile') {
70
+ react_use_1.useClickAway(forwardedRef, onClose);
71
+ }
70
72
  // Search input props
71
73
  var searchInputProps = react_1.useMemo(function () { return ({
72
74
  type: 'search',
@@ -89,7 +91,7 @@ function DropDownField(props) {
89
91
  if (props.input.value === undefined && selectedIds.length > 0) {
90
92
  onReset();
91
93
  }
92
- }, [selectedIds, props.input.onChange, props.multiple, prevSelectedIds, props.attribute, props]);
94
+ }, [selectedIds, props.input.onChange, props.multiple, prevSelectedIds, props.attribute, props, onReset]);
93
95
  return components.ui.renderView(props.view || 'form.DropDownFieldView', __assign(__assign({}, props), { isAutoComplete: isAutoComplete,
94
96
  items: items,
95
97
  hoveredId: hoveredId,
@@ -284,7 +284,7 @@ function Form(props) {
284
284
  // Manual submit form by reducer action
285
285
  var prevSubmitCounter = react_use_1.usePrevious(submitCounter);
286
286
  react_use_1.useUpdateEffect(function () {
287
- if (submitCounter > prevSubmitCounter) {
287
+ if (submitCounter !== prevSubmitCounter) {
288
288
  onSubmit.call(null);
289
289
  }
290
290
  }, [prevSubmitCounter, submitCounter, onSubmit]);
@@ -34,6 +34,11 @@ export interface IInputFieldProps extends IFieldWrapperInputProps {
34
34
  /**
35
35
  */
36
36
  viewProps?: any;
37
+ /**
38
+ * Размер Innput
39
+ * @example 'large'
40
+ */
41
+ size?: Size;
37
42
  /**
38
43
  * Объект CSS стилей
39
44
  * @example {width: '45%'}
@@ -64,6 +69,8 @@ export interface IInputFieldProps extends IFieldWrapperInputProps {
64
69
  * @example { mask: '+7 (999) 999-99-99' }
65
70
  */
66
71
  maskProps?: any;
72
+ success?: boolean;
73
+ failed?: boolean;
67
74
  [key: string]: any;
68
75
  }
69
76
  export interface IInputFieldViewProps extends IInputFieldProps, IFieldWrapperOutputProps {
@@ -54,6 +54,7 @@ function InputField(props) {
54
54
  }
55
55
  InputField.defaultProps = {
56
56
  type: 'text',
57
+ size: 'medium',
57
58
  disabled: false,
58
59
  required: false,
59
60
  className: '',
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { KeyboardEventHandler } from 'react';
2
3
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../Field/fieldWrapper';
3
4
  /**
4
5
  * TextField
@@ -35,7 +36,7 @@ export interface ITextFieldViewProps extends ITextFieldProps, IFieldWrapperOutpu
35
36
  inputProps: {
36
37
  name: string;
37
38
  onChange: (value: string | React.ChangeEvent) => void;
38
- onKeyUp: (e: Event | React.KeyboardEvent) => void;
39
+ onKeyUp: KeyboardEventHandler<HTMLTextAreaElement>;
39
40
  value: string | number;
40
41
  placeholder: string;
41
42
  disabled: boolean;
@@ -30,7 +30,7 @@ function TextField(props) {
30
30
  // TODO This is not worked in redux... =(
31
31
  // dispatch(submit(props.formId));
32
32
  }
33
- }, [dispatch, props.formId, props.submitOnEnter]);
33
+ }, [props.formId, props.submitOnEnter]);
34
34
  var onChange = react_1.useCallback(function (e) { return props.input.onChange.call(null, e.target ? e.target.value : e.nativeEvent.text); }, [props.input.onChange]);
35
35
  var inputProps = react_1.useMemo(function () { return (__assign({ name: props.input.name, value: props.input.value || '', onChange: onChange,
36
36
  onKeyUp: onKeyUp, placeholder: props.placeholder, disabled: props.disabled }, props.inputProps)); }, [onKeyUp, onChange, props.disabled, props.input.name, props.input.value, props.inputProps, props.placeholder]);
@@ -20,6 +20,9 @@ var hooks_1 = require("../../../hooks");
20
20
  function Icon(props) {
21
21
  var components = hooks_1.useComponents();
22
22
  var name = props.name;
23
+ if (!isString_1["default"](name)) {
24
+ return null;
25
+ }
23
26
  var icon;
24
27
  if (process.env.PLATFORM === 'mobile') {
25
28
  icon = components.ui.getIcon(name) || name;
@@ -0,0 +1,56 @@
1
+ import { BaseHTMLAttributes, LinkHTMLAttributes, MetaHTMLAttributes, PropsWithChildren, ScriptHTMLAttributes, StyleHTMLAttributes } from 'react';
2
+ interface IInnerHTML {
3
+ /**
4
+ * Содержимое тега
5
+ */
6
+ innerHtml?: string;
7
+ }
8
+ interface IScript extends ScriptHTMLAttributes<any>, IInnerHTML {
9
+ }
10
+ interface IStyle extends StyleHTMLAttributes<any>, IInnerHTML {
11
+ }
12
+ /**
13
+ * Meta
14
+ * Компонент используется для ssr и нужен для конфигурации html-тегов в документе.
15
+ */
16
+ interface IMetaProps extends PropsWithChildren<any> {
17
+ /**
18
+ * Заголовок документа
19
+ * @example Home page
20
+ */
21
+ title?: string;
22
+ /**
23
+ * Описание документа
24
+ * @example The main page of the site
25
+ */
26
+ description?: string;
27
+ /**
28
+ * Скрипты, которые необходимо разместить на сайте
29
+ * @example [{src: '/lib/SomeLibrary.min.js'}]
30
+ */
31
+ scripts?: IScript[];
32
+ /**
33
+ * Мета-теги
34
+ * @example [{name: 'yandex-verification', content: 'ce...9e6'}]
35
+ */
36
+ meta?: MetaHTMLAttributes<any>[];
37
+ /**
38
+ * Ссылки на ресурсы
39
+ * @example [{href: '/lib/SomeLibrary.css', rel: 'stylesheet', type: 'text/css'}]
40
+ */
41
+ links?: LinkHTMLAttributes<any>[];
42
+ /**
43
+ * Контент для тегов \<style\>
44
+ */
45
+ styles?: IStyle[];
46
+ /**
47
+ * Контент для тегов \<noscript\>
48
+ */
49
+ noScripts?: IInnerHTML[];
50
+ /**
51
+ * Конфигурация тега \<base\>
52
+ */
53
+ base?: BaseHTMLAttributes<any>;
54
+ }
55
+ declare function Meta(props: IMetaProps): JSX.Element;
56
+ export default Meta;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ exports.__esModule = true;
17
+ var react_1 = __importDefault(require("react"));
18
+ var react_helmet_1 = __importDefault(require("react-helmet"));
19
+ function Meta(props) {
20
+ var _a, _b, _c, _d, _e;
21
+ return (react_1["default"].createElement(react_helmet_1["default"], null,
22
+ react_1["default"].createElement("title", null, props.title),
23
+ props.base && react_1["default"].createElement("base", __assign({}, props.base)),
24
+ props.description && react_1["default"].createElement("meta", { name: 'description', content: props.description }), (_a = props.meta) === null || _a === void 0 ? void 0 :
25
+ _a.map(function (attrs, index) { return react_1["default"].createElement("meta", __assign({ key: index }, attrs)); }), (_b = props.links) === null || _b === void 0 ? void 0 :
26
+ _b.map(function (attrs, index) { return react_1["default"].createElement("link", __assign({ key: index }, attrs)); }), (_c = props.styles) === null || _c === void 0 ? void 0 :
27
+ _c.map(function (attrs, index) { return (react_1["default"].createElement("style", __assign({ key: index }, attrs, { dangerouslySetInnerHTML: {
28
+ __html: attrs.innerHtml
29
+ } }))); }), (_d = props.scripts) === null || _d === void 0 ? void 0 :
30
+ _d.map(function (attrs, index) { return (react_1["default"].createElement("script", __assign({ key: index }, attrs, { dangerouslySetInnerHTML: {
31
+ __html: attrs.innerHtml
32
+ } }))); }), (_e = props.noScripts) === null || _e === void 0 ? void 0 :
33
+ _e.map(function (attrs, index) { return (react_1["default"].createElement("noscript", { key: index, dangerouslySetInnerHTML: {
34
+ __html: attrs.innerHtml
35
+ } })); }),
36
+ props.children));
37
+ }
38
+ exports["default"] = Meta;
@@ -0,0 +1,2 @@
1
+ import Meta from './Meta';
2
+ export default Meta;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var Meta_1 = __importDefault(require("./Meta"));
7
+ exports["default"] = Meta_1["default"];
@@ -54,7 +54,7 @@ function Notifications(props) {
54
54
  if (props.initialFlashes) {
55
55
  dispatch(notifications_1.setFlashes(props.initialFlashes));
56
56
  // Disable scroll or scroll to top on show notifications
57
- if (typeof window !== 'undefined') {
57
+ if (!process.env.IS_SSR) {
58
58
  if ('scrollRestoration' in window.history) {
59
59
  window.history.scrollRestoration = 'manual';
60
60
  }
@@ -21,6 +21,9 @@ function Portal(props) {
21
21
  document.body.removeChild(elementRef.current);
22
22
  }
23
23
  });
24
+ if (process.env.IS_SSR) {
25
+ return null;
26
+ }
24
27
  return react_dom_1.createPortal(props.children, elementRef.current);
25
28
  }
26
29
  exports["default"] = Portal;
@@ -0,0 +1,55 @@
1
+ import * as React from "react";
2
+ export interface IProgressBarViewProps {
3
+ percent: number;
4
+ status?: 'normal' | 'success' | 'exception';
5
+ size?: 'small' | 'medium' | 'large';
6
+ label?: string | React.ReactNode;
7
+ }
8
+ /**
9
+ * ProgressBar
10
+ * Progress bar. Отображает текущий прогресс какой-либо операции
11
+ */
12
+ interface IProgressBarProps {
13
+ /**
14
+ * Прогресс в процентах
15
+ */
16
+ percent: number;
17
+ /**
18
+ * Статус компонента
19
+ */
20
+ status?: 'normal' | 'success' | 'exception';
21
+ /**
22
+ * Размер компонента
23
+ */
24
+ size?: 'small' | 'medium' | 'large';
25
+ /**
26
+ * Тип компонента - круг или линия
27
+ */
28
+ type?: 'line' | 'circle';
29
+ /**
30
+ * Флаг, определяющий показывать ли лейбл
31
+ */
32
+ showLabel?: boolean;
33
+ /**
34
+ * Функция, позволяющая изменить генерация лейбла
35
+ * @param percent Прогресс в процентах
36
+ */
37
+ label?: (percent: number) => string;
38
+ /**
39
+ * Функция, позволяющая задавать собственные иконки в зависимости от прогресса и статуса
40
+ * @param status Статус компонента
41
+ * @param percent Прогресс в процентах
42
+ */
43
+ icon?: (status: string, percent: number) => React.ReactNode;
44
+ }
45
+ declare function ProgressBar(props: IProgressBarProps): JSX.Element;
46
+ declare namespace ProgressBar {
47
+ var defaultProps: {
48
+ status: string;
49
+ size: string;
50
+ type: string;
51
+ showLabel: boolean;
52
+ label: (percent: any) => string;
53
+ };
54
+ }
55
+ export default ProgressBar;
@@ -0,0 +1,52 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ exports.__esModule = true;
25
+ var hooks_1 = require("../../../hooks");
26
+ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/icon/Icon/Icon"));
27
+ var React = __importStar(require("react"));
28
+ function ProgressBar(props) {
29
+ var getLabel = (function () {
30
+ if (!props.showLabel)
31
+ return null;
32
+ if (props.icon)
33
+ return props.icon(props.status, props.percent);
34
+ if (props.status === 'success')
35
+ return React.createElement(Icon_1["default"], { name: 'check' });
36
+ if (props.status === 'exception')
37
+ return React.createElement(Icon_1["default"], { name: 'times' });
38
+ return props.label(props.percent);
39
+ });
40
+ if (props.type === 'line')
41
+ return hooks_1.useComponents().ui.renderView('layout.LineProgressBarView', { percent: props.percent, status: props.status, size: props.size, label: getLabel() });
42
+ else
43
+ return hooks_1.useComponents().ui.renderView('layout.CircleProgressBarView', { percent: props.percent, status: props.status, size: props.size, label: getLabel() });
44
+ }
45
+ ProgressBar.defaultProps = {
46
+ status: 'normal',
47
+ size: 'medium',
48
+ type: 'line',
49
+ showLabel: true,
50
+ label: function (percent) { return percent + "%"; }
51
+ };
52
+ exports["default"] = ProgressBar;
@@ -0,0 +1,2 @@
1
+ import ProgressBar from "./ProgressBar";
2
+ export default ProgressBar;