@steroidsjs/core 2.1.0-beta.2 → 2.1.0-beta.20

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 (136) hide show
  1. package/actions/form.d.ts +9 -0
  2. package/actions/form.js +11 -1
  3. package/actions/list.d.ts +1 -0
  4. package/actions/list.js +1 -0
  5. package/components/ClientStorageComponent.d.ts +3 -3
  6. package/components/ClientStorageComponent.js +28 -22
  7. package/components/HttpComponent.js +32 -15
  8. package/components/LocaleComponent.js +9 -9
  9. package/components/MetricsComponent.js +3 -1
  10. package/components/StoreComponent.d.ts +6 -0
  11. package/components/StoreComponent.js +6 -7
  12. package/components/UiComponent.d.ts +1 -1
  13. package/components/WebSocketComponent.d.ts +1 -1
  14. package/hoc/components.d.ts +1 -1
  15. package/hoc/components.js +1 -1
  16. package/hoc/file.d.ts +1 -0
  17. package/hooks/index.d.ts +2 -1
  18. package/hooks/index.js +3 -1
  19. package/hooks/useAbsolutePositioning.d.ts +5 -0
  20. package/hooks/useAbsolutePositioning.js +6 -6
  21. package/hooks/useApplication.d.ts +29 -26
  22. package/hooks/useApplication.js +17 -82
  23. package/hooks/useComponents.d.ts +1 -14
  24. package/hooks/useComponents.js +5 -5
  25. package/hooks/useDataProvider.js +4 -2
  26. package/hooks/useDataSelect.d.ts +12 -6
  27. package/hooks/useDataSelect.js +5 -3
  28. package/hooks/useFetch.d.ts +11 -3
  29. package/hooks/useFetch.js +34 -31
  30. package/hooks/useFile.js +14 -2
  31. package/hooks/useLayout.d.ts +9 -0
  32. package/hooks/useLayout.js +64 -44
  33. package/hooks/useList.d.ts +45 -0
  34. package/hooks/useList.js +83 -53
  35. package/hooks/useModel.js +1 -1
  36. package/hooks/useScreen.d.ts +1 -1
  37. package/hooks/useScreen.js +2 -2
  38. package/hooks/useSsr.d.ts +2 -0
  39. package/hooks/useSsr.js +8 -0
  40. package/index.d.ts +8 -2
  41. package/package.json +6 -3
  42. package/providers/ComponentsProvider.d.ts +26 -0
  43. package/providers/ComponentsProvider.js +28 -0
  44. package/providers/ScreenProvider.d.ts +20 -0
  45. package/providers/ScreenProvider.js +87 -0
  46. package/providers/SsrProvider.d.ts +17 -0
  47. package/providers/SsrProvider.js +32 -0
  48. package/providers/index.d.ts +4 -0
  49. package/providers/index.js +12 -0
  50. package/reducers/form.d.ts +1 -1
  51. package/reducers/form.js +3 -1
  52. package/reducers/index.js +1 -1
  53. package/reducers/list.js +1 -3
  54. package/reducers/router.js +1 -1
  55. package/ui/content/Alert/Alert.d.ts +50 -0
  56. package/ui/content/Alert/Alert.js +39 -0
  57. package/ui/content/Alert/index.d.ts +2 -0
  58. package/ui/content/Alert/index.js +7 -0
  59. package/ui/content/Avatar/Avatar.d.ts +53 -12
  60. package/ui/content/Avatar/Avatar.js +25 -4
  61. package/ui/content/Avatar/index.d.ts +6 -1
  62. package/ui/content/Avatar/index.js +4 -0
  63. package/ui/content/Card/Card.d.ts +61 -13
  64. package/ui/content/Card/Card.js +3 -2
  65. package/ui/content/Collapse/Collapse.d.ts +63 -0
  66. package/ui/content/Collapse/Collapse.js +75 -0
  67. package/ui/content/Collapse/CollapseItem.d.ts +67 -0
  68. package/ui/content/Collapse/CollapseItem.js +22 -0
  69. package/ui/content/Collapse/index.d.ts +7 -0
  70. package/ui/content/Collapse/index.js +8 -0
  71. package/ui/content/Detail/Detail.d.ts +102 -0
  72. package/ui/content/Detail/Detail.js +155 -0
  73. package/ui/content/Detail/DetailItem.d.ts +43 -0
  74. package/ui/content/Detail/DetailItem.js +10 -0
  75. package/ui/content/Detail/demo/basic.d.ts +8 -0
  76. package/ui/content/Detail/demo/basic.js +56 -0
  77. package/ui/content/Detail/demo/controls.d.ts +8 -0
  78. package/ui/content/Detail/demo/controls.js +56 -0
  79. package/ui/content/Detail/demo/layout.d.ts +8 -0
  80. package/ui/content/Detail/demo/layout.js +56 -0
  81. package/ui/content/Detail/demo/responsive.d.ts +8 -0
  82. package/ui/content/Detail/demo/responsive.js +71 -0
  83. package/ui/content/Detail/demo/sizes.d.ts +8 -0
  84. package/ui/content/Detail/demo/sizes.js +61 -0
  85. package/ui/content/Detail/index.d.ts +3 -0
  86. package/ui/content/Detail/index.js +10 -0
  87. package/ui/content/DropDown/DropDown.d.ts +1 -0
  88. package/ui/content/DropDown/DropDown.js +1 -0
  89. package/ui/content/index.d.ts +13 -0
  90. package/ui/content/index.js +22 -0
  91. package/ui/crud/Crud/Crud.d.ts +1 -1
  92. package/ui/crud/Crud/Crud.js +1 -1
  93. package/ui/crud/index.d.ts +1 -0
  94. package/ui/form/Button/Button.d.ts +1 -0
  95. package/ui/form/Button/Button.js +1 -0
  96. package/ui/form/DateField/useDateInputState.d.ts +4 -0
  97. package/ui/form/DateField/useDateInputState.js +3 -3
  98. package/ui/form/DateField/useDateTime.js +9 -7
  99. package/ui/form/DateTimeField/DateTimeField.js +2 -1
  100. package/ui/form/DropDownField/DropDownField.js +10 -3
  101. package/ui/form/Form/Form.js +118 -106
  102. package/ui/form/ImageField/ImageField.d.ts +87 -0
  103. package/ui/form/ImageField/ImageField.js +145 -0
  104. package/ui/form/ImageField/index.d.ts +2 -0
  105. package/ui/form/ImageField/index.js +7 -0
  106. package/ui/form/InputField/InputField.d.ts +7 -0
  107. package/ui/form/InputField/InputField.js +26 -22
  108. package/ui/form/TextField/TextField.d.ts +2 -1
  109. package/ui/form/TextField/TextField.js +1 -1
  110. package/ui/icon/Icon/Icon.js +3 -0
  111. package/ui/layout/Meta/Meta.d.ts +56 -0
  112. package/ui/layout/Meta/Meta.js +38 -0
  113. package/ui/layout/Meta/index.d.ts +2 -0
  114. package/ui/layout/Meta/index.js +7 -0
  115. package/ui/layout/Notifications/Notifications.js +1 -1
  116. package/ui/layout/Portal.js +3 -0
  117. package/ui/layout/ProgressBar/ProgressBar.d.ts +55 -0
  118. package/ui/layout/ProgressBar/ProgressBar.js +52 -0
  119. package/ui/layout/ProgressBar/index.d.ts +2 -0
  120. package/ui/layout/ProgressBar/index.js +7 -0
  121. package/ui/layout/Skeleton/Skeleton.d.ts +25 -0
  122. package/ui/layout/Skeleton/Skeleton.js +11 -0
  123. package/ui/layout/Skeleton/index.d.ts +2 -0
  124. package/ui/layout/Skeleton/index.js +7 -0
  125. package/ui/list/Steps/Steps.d.ts +32 -0
  126. package/ui/list/Steps/Steps.js +23 -0
  127. package/ui/list/Steps/index.d.ts +2 -0
  128. package/ui/list/Steps/index.js +7 -0
  129. package/ui/nav/Router/Router.d.ts +13 -0
  130. package/ui/nav/Router/Router.js +1 -1
  131. package/utils/calendar.d.ts +1 -1
  132. package/utils/calendar.js +8 -1
  133. package/ui/content/Avatar/SizeContext.d.ts +0 -1
  134. package/ui/content/Avatar/SizeContext.js +0 -14
  135. package/ui/nav/Router/SsrProvider.d.ts +0 -15
  136. package/ui/nav/Router/SsrProvider.js +0 -55
@@ -0,0 +1,145 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ exports.__esModule = true;
36
+ var React = __importStar(require("react"));
37
+ var File_1 = __importDefault(require("fileup-core/lib/models/File"));
38
+ var first_1 = __importDefault(require("lodash-es/first"));
39
+ var values_1 = __importDefault(require("lodash-es/values"));
40
+ var react_1 = require("react");
41
+ var uniqueId_1 = __importDefault(require("lodash-es/uniqueId"));
42
+ var hooks_1 = require("../../../hooks");
43
+ var useDispatch_1 = __importDefault(require("../../../hooks/useDispatch"));
44
+ var useFile_1 = __importDefault(require("../../../hooks/useFile"));
45
+ var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
46
+ var modal_1 = require("../../../actions/modal");
47
+ function ImageField(props) {
48
+ var components = hooks_1.useComponents();
49
+ var dispatch = useDispatch_1["default"]();
50
+ // Add cropping option
51
+ var _a = react_1.useState(null), croppedImage = _a[0], setCroppedImage = _a[1];
52
+ var modalId = react_1.useMemo(function () { var _a; return ((_a = props.modalProps) === null || _a === void 0 ? void 0 : _a.modalId) || uniqueId_1["default"]('cropModal'); }, [props.modalProps.modalId]);
53
+ var ImageFieldModalVIew = props.modalView || components.ui.getView('form.ImageFieldModalView');
54
+ var responseParser = react_1.useCallback(function (text) {
55
+ var data = null;
56
+ try {
57
+ data = JSON.parse(text);
58
+ dispatch(modal_1.openModal(ImageFieldModalVIew, __assign(__assign({ modalId: modalId }, props.modalProps), { crop: __assign(__assign({}, props.crop), { onSubmit: function (crop, imageId) { return setCroppedImage(__assign(__assign({}, crop), { id: imageId })); } }), image: first_1["default"](data) })));
59
+ // eslint-disable-next-line no-empty
60
+ }
61
+ catch (e) { }
62
+ return data;
63
+ }, [ImageFieldModalVIew, modalId, dispatch, props.crop, props.modalProps]);
64
+ var _b = useFile_1["default"](__assign(__assign({}, props), { multiple: false, imagesOnly: true, uploader: __assign({ uploaderConfigs: {
65
+ xhr: {
66
+ responseParser: responseParser
67
+ }
68
+ } }, props.uploader) })), files = _b.files, onBrowse = _b.onBrowse, onRemove = _b.onRemove, onAdd = _b.onAdd;
69
+ // Fetch cropped image
70
+ react_1.useEffect(function () {
71
+ if (croppedImage) {
72
+ components.http.post(props.crop.backendUrl, croppedImage).then(function (res) {
73
+ setCroppedImage(null);
74
+ onAdd(new File_1["default"]({
75
+ path: res.title || res.label || res.uid || res.id,
76
+ status: File_1["default"].STATUS_END,
77
+ result: File_1["default"].RESULT_SUCCESS,
78
+ resultHttpStatus: 200,
79
+ resultHttpMessage: res,
80
+ uid: res.uid
81
+ }));
82
+ });
83
+ }
84
+ }, [components.http, croppedImage, onAdd, onRemove, props.crop.backendUrl]);
85
+ var ImageFieldView = props.view || components.ui.getView('form.ImageFieldView');
86
+ var item = react_1.useMemo(function () {
87
+ var result = null;
88
+ var _file = first_1["default"](files);
89
+ if (_file) {
90
+ var data = _file.getResultHttpMessage() || {};
91
+ result = {
92
+ uid: _file.getUid(),
93
+ fileId: data.id || null,
94
+ title: _file.getName(),
95
+ size: props.size,
96
+ disabled: props.disabled,
97
+ onRemove: function () { return onRemove(_file); },
98
+ error: null,
99
+ image: null,
100
+ progress: null
101
+ };
102
+ // Add error
103
+ if (_file.getResult() === File_1["default"].RESULT_ERROR) {
104
+ if (typeof _file.getResultHttpMessage() === 'string'
105
+ && _file.getResultHttpMessage().substr(0, 1) === '{') {
106
+ var errorResponse = JSON.parse(_file.getResultHttpMessage());
107
+ result.error = errorResponse.error || errorResponse.message || __('Ошибка');
108
+ }
109
+ else {
110
+ result.error = _file.getResultHttpMessage()
111
+ ? JSON.stringify(_file.getResultHttpMessage())
112
+ : __('Ошибка');
113
+ }
114
+ }
115
+ // Add thumbnail image
116
+ if (data.images) {
117
+ // Image object has properties: url, width, height
118
+ result.image = data.images[props.imagesProcessor]
119
+ || first_1["default"](values_1["default"](data.images));
120
+ }
121
+ // Add progress
122
+ if (_file.getStatus() === File_1["default"].STATUS_PROCESS) {
123
+ result.progress = {
124
+ bytesUploaded: _file.getBytesUploaded(),
125
+ percent: _file.progress.getPercent()
126
+ };
127
+ }
128
+ }
129
+ return result;
130
+ }, [files, onRemove, props.disabled, props.imagesProcessor, props.size]);
131
+ return (React.createElement(ImageFieldView, __assign({}, props, { item: item, onClick: onBrowse })));
132
+ }
133
+ ImageField.defaultProps = {
134
+ disabled: false,
135
+ required: false,
136
+ className: '',
137
+ modalProps: {},
138
+ label: 'Upload',
139
+ crop: {
140
+ initialValues: {
141
+ aspect: 1
142
+ }
143
+ }
144
+ };
145
+ exports["default"] = fieldWrapper_1["default"]('ImageField', ImageField);
@@ -0,0 +1,2 @@
1
+ import ImageField from './ImageField';
2
+ export default ImageField;
@@ -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 ImageField_1 = __importDefault(require("./ImageField"));
7
+ exports["default"] = ImageField_1["default"];
@@ -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 {
@@ -10,13 +10,34 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
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
+ };
13
32
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
33
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
34
  };
16
35
  exports.__esModule = true;
36
+ var React = __importStar(require("react"));
17
37
  var react_1 = require("react");
18
38
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
19
39
  var hooks_1 = require("../../../hooks");
40
+ var react_input_mask_1 = __importDefault(require("react-input-mask"));
20
41
  function InputField(props) {
21
42
  var components = hooks_1.useComponents();
22
43
  var inputProps = react_1.useMemo(function () { return (__assign({ type: props.type, name: props.input.name, value: props.input.value || '', onChange: function (value) { return props.input.onChange(value); }, placeholder: props.placeholder, disabled: props.disabled }, props.inputProps)); }, [props.disabled, props.input, props.inputProps, props.placeholder, props.type]);
@@ -25,32 +46,15 @@ function InputField(props) {
25
46
  return null;
26
47
  }
27
48
  // react-input-mask HOC for mask
28
- // TODO
29
- /*if (props.maskProps) {
30
- return (
31
- <InputMask
32
- {...props}
33
- {...props.maskProps}
34
- value={props.input.value || ''}
35
- onChange={e => props.input.onChange(e.target.value)}
36
- >
37
- <InputFieldView
38
- {...this.props}
39
- inputProps={{
40
- type: this.props.type,
41
- name: this.props.input.name,
42
- placeholder: this.props.placeholder,
43
- disabled: this.props.disabled,
44
- ...this.props.inputProps
45
- }}
46
- />
47
- </InputMask>
48
- );
49
- }*/
49
+ if (props.maskProps) {
50
+ var maskOnChange = function (e) { return props.input.onChange(e.target.value); };
51
+ return (React.createElement(react_input_mask_1["default"], __assign({}, inputProps, props.maskProps, { onChange: maskOnChange }), components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps, onChange: maskOnChange }))));
52
+ }
50
53
  return components.ui.renderView(props.view || 'form.InputFieldView', __assign(__assign(__assign({}, props), props.viewProps), { inputProps: inputProps }));
51
54
  }
52
55
  InputField.defaultProps = {
53
56
  type: 'text',
57
+ size: 'medium',
54
58
  disabled: false,
55
59
  required: false,
56
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;
@@ -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 ProgressBar_1 = __importDefault(require("./ProgressBar"));
7
+ exports["default"] = ProgressBar_1["default"];
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ export interface ISkeletonViewProps {
3
+ className?: string;
4
+ children?: React.ReactNode;
5
+ animation?: 'pulse' | 'wave';
6
+ type?: 'text' | 'rect' | 'circle';
7
+ height?: string | number;
8
+ width?: string | number;
9
+ }
10
+ interface ISkeletonProps {
11
+ className?: string;
12
+ children?: React.ReactNode;
13
+ animation?: 'pulse' | 'wave';
14
+ type?: 'text' | 'rect' | 'circle';
15
+ height?: string | number;
16
+ width?: string | number;
17
+ }
18
+ declare function Skeleton(props: ISkeletonProps): JSX.Element;
19
+ declare namespace Skeleton {
20
+ var defaultProps: {
21
+ animation: string;
22
+ type: string;
23
+ };
24
+ }
25
+ export default Skeleton;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ var hooks_1 = require("../../../hooks");
4
+ function Skeleton(props) {
5
+ return hooks_1.useComponents().ui.renderView('layout.SkeletonView', props);
6
+ }
7
+ Skeleton.defaultProps = {
8
+ animation: 'pulse',
9
+ type: 'text'
10
+ };
11
+ exports["default"] = Skeleton;
@@ -0,0 +1,2 @@
1
+ import Skeleton from "./Skeleton";
2
+ export default Skeleton;
@@ -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 Skeleton_1 = __importDefault(require("./Skeleton"));
7
+ exports["default"] = Skeleton_1["default"];
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ interface IStepsProps {
3
+ stepItems: IStepItem[];
4
+ currentStep: number;
5
+ isChangeable?: boolean;
6
+ className?: string;
7
+ onChange?: (index: number) => void;
8
+ }
9
+ export interface IStepsViewProps {
10
+ className?: string;
11
+ children?: React.ReactNode;
12
+ }
13
+ export interface IStepItemViewProps {
14
+ stepItem: IStepItem;
15
+ className?: string;
16
+ index: number;
17
+ status: string;
18
+ disabled: boolean;
19
+ onChange: () => void;
20
+ }
21
+ export interface IStepItem {
22
+ title?: string;
23
+ subtitle?: string;
24
+ description?: string;
25
+ icon?: string | React.ReactNode;
26
+ isError?: boolean;
27
+ }
28
+ declare function Steps(props: IStepsProps): JSX.Element;
29
+ declare namespace Steps {
30
+ var defaultProps: {};
31
+ }
32
+ export default Steps;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ var hooks_1 = require("../../../hooks");
4
+ var react_1 = require("react");
5
+ function Steps(props) {
6
+ var _a = react_1.useState(false), isChangeable = _a[0], setIsChangeable = _a[1];
7
+ react_1.useEffect(function () { return setIsChangeable(props.isChangeable); }, [props.isChangeable]);
8
+ function getStepStatus(index, stepItem) {
9
+ if (stepItem.isError)
10
+ return 'error';
11
+ if (props.currentStep < index)
12
+ return 'wait';
13
+ if (props.currentStep === index)
14
+ return 'active';
15
+ return 'finish';
16
+ }
17
+ return hooks_1.useComponents().ui.renderView("list.StepsView", { className: props.className, children: props.stepItems.map(function (stepItem, index) {
18
+ return hooks_1.useComponents().ui.renderView("list.StepItemView", { stepItem: stepItem, index: index + 1, status: getStepStatus(index, stepItem), disabled: !isChangeable, onChange: function () { if (isChangeable)
19
+ props.onChange(index); } });
20
+ }) });
21
+ }
22
+ Steps.defaultProps = {};
23
+ exports["default"] = Steps;
@@ -0,0 +1,2 @@
1
+ import Steps from "./Steps";
2
+ export default Steps;
@@ -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 Steps_1 = __importDefault(require("./Steps"));
7
+ exports["default"] = Steps_1["default"];