@steroidsjs/core 3.0.0-beta.42 → 3.0.0-beta.44

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 (88) hide show
  1. package/docs-autogen-result.json +966 -995
  2. package/hooks/useApplication.d.ts +2 -1
  3. package/hooks/useApplication.js +1 -1
  4. package/hooks/useDataSelect.d.ts +3 -1
  5. package/hooks/useDataSelect.js +37 -23
  6. package/hooks/useFile.d.ts +28 -0
  7. package/hooks/useList.d.ts +6 -0
  8. package/package.json +2 -2
  9. package/ui/content/Accordion/Accordion.d.ts +11 -13
  10. package/ui/content/Alert/Alert.d.ts +13 -10
  11. package/ui/content/Avatar/Avatar.d.ts +13 -23
  12. package/ui/content/Badge/Badge.d.ts +14 -12
  13. package/ui/content/Calendar/Calendar.d.ts +1 -10
  14. package/ui/content/Card/Card.d.ts +31 -18
  15. package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +19 -6
  16. package/ui/content/Detail/Detail.d.ts +1 -10
  17. package/ui/content/DropDown/DropDown.d.ts +9 -9
  18. package/ui/content/Icon/Icon.d.ts +4 -7
  19. package/ui/content/Menu/Menu.d.ts +2 -10
  20. package/ui/crud/Crud/Crud.d.ts +62 -0
  21. package/ui/form/BlankField/BlankField.d.ts +8 -1
  22. package/ui/form/Button/Button.d.ts +2 -16
  23. package/ui/form/CheckboxField/CheckboxField.d.ts +3 -12
  24. package/ui/form/CheckboxListField/CheckboxListField.d.ts +2 -11
  25. package/ui/form/DateRangeField/DateRangeField.d.ts +6 -0
  26. package/ui/form/DropDownField/DropDownField.d.ts +19 -16
  27. package/ui/form/DropDownField/DropDownField.js +26 -5
  28. package/ui/form/Field/fieldWrapper.d.ts +18 -4
  29. package/ui/form/FieldLayout/FieldLayout.d.ts +2 -11
  30. package/ui/form/FieldList/FieldList.d.ts +2 -20
  31. package/ui/form/FileField/FileField.d.ts +1 -11
  32. package/ui/form/Form/Form.d.ts +27 -15
  33. package/ui/form/HtmlField/HtmlField.d.ts +1 -10
  34. package/ui/form/ImageField/ImageField.d.ts +1 -10
  35. package/ui/form/InputField/InputField.d.ts +2 -2
  36. package/ui/form/NavField/NavField.d.ts +1 -1
  37. package/ui/form/RadioField/RadioField.d.ts +2 -11
  38. package/ui/form/RadioListField/RadioListField.d.ts +2 -11
  39. package/ui/form/RateField/RateField.d.ts +1 -10
  40. package/ui/form/ReCaptchaField/ReCaptchaField.d.ts +1 -6
  41. package/ui/form/SliderField/SliderField.d.ts +3 -12
  42. package/ui/form/SliderField/SliderField.js +1 -1
  43. package/ui/form/SwitcherField/SwitcherField.d.ts +1 -1
  44. package/ui/form/TimeField/TimeField.d.ts +1 -15
  45. package/ui/format/BooleanFormatter/BooleanFormatter.d.ts +7 -0
  46. package/ui/format/DateFormatter/DateFormatter.d.ts +5 -1
  47. package/ui/format/DateTimeFormatter/DateTimeFormatter.d.ts +5 -1
  48. package/ui/format/EnumFormatter/EnumFormatter.d.ts +4 -0
  49. package/ui/format/FileSize/FileSize.d.ts +1 -2
  50. package/ui/format/MoneyFormatter/MoneyFormatter.d.ts +3 -1
  51. package/ui/layout/Header/Header.d.ts +7 -3
  52. package/ui/layout/Loader/Loader.d.ts +6 -1
  53. package/ui/layout/Skeleton/Skeleton.d.ts +19 -0
  54. package/ui/list/FlexGrid/FlexGrid.d.ts +85 -0
  55. package/ui/list/FlexGrid/FlexGrid.js +51 -0
  56. package/ui/list/FlexGrid/index.d.ts +2 -0
  57. package/ui/list/FlexGrid/index.js +7 -0
  58. package/ui/list/Pagination/Pagination.d.ts +3 -0
  59. package/ui/list/SearchForm/SearchForm.d.ts +3 -0
  60. package/ui/modal/TwoFactorModal/TwoFactorModal.d.ts +7 -2
  61. package/ui/typography/Text/Text.d.ts +5 -8
  62. package/ui/typography/Title/Title.d.ts +5 -8
  63. package/ui/form/SliderField/demo/basic.d.ts +0 -8
  64. package/ui/form/SliderField/demo/basic.js +0 -37
  65. package/ui/form/SliderField/demo/disabled.d.ts +0 -8
  66. package/ui/form/SliderField/demo/disabled.js +0 -37
  67. package/ui/form/SliderField/demo/errors.d.ts +0 -8
  68. package/ui/form/SliderField/demo/errors.js +0 -37
  69. package/ui/form/SliderField/demo/marks.d.ts +0 -3
  70. package/ui/form/SliderField/demo/marks.js +0 -49
  71. package/ui/form/SliderField/demo/min-max.d.ts +0 -8
  72. package/ui/form/SliderField/demo/min-max.js +0 -37
  73. package/ui/form/SliderField/demo/onAfterChange.d.ts +0 -8
  74. package/ui/form/SliderField/demo/onAfterChange.js +0 -43
  75. package/ui/form/SliderField/demo/onChange.d.ts +0 -8
  76. package/ui/form/SliderField/demo/onChange.js +0 -43
  77. package/ui/form/SliderField/demo/range.d.ts +0 -8
  78. package/ui/form/SliderField/demo/range.js +0 -37
  79. package/ui/nav/Tree/demo/auto-open-levels.d.ts +0 -8
  80. package/ui/nav/Tree/demo/auto-open-levels.js +0 -38
  81. package/ui/nav/Tree/demo/basic.d.ts +0 -32
  82. package/ui/nav/Tree/demo/basic.js +0 -72
  83. package/ui/nav/Tree/demo/level.d.ts +0 -8
  84. package/ui/nav/Tree/demo/level.js +0 -38
  85. package/ui/nav/Tree/demo/routes.d.ts +0 -8
  86. package/ui/nav/Tree/demo/routes.js +0 -37
  87. package/ui/nav/Tree/demo/selected-item.d.ts +0 -8
  88. package/ui/nav/Tree/demo/selected-item.js +0 -38
@@ -5,7 +5,7 @@ import StoreComponent from '../components/StoreComponent';
5
5
  import UiComponent from '../components/UiComponent';
6
6
  import MetaComponent from '../components/MetaComponent';
7
7
  import { IComponents } from '../providers/ComponentsProvider';
8
- import { IRouteItem } from '../ui/nav/Router/Router';
8
+ import { IRouteItem, IRouterProps } from '../ui/nav/Router/Router';
9
9
  import MetricsComponent from '../components/MetricsComponent';
10
10
  import { IScreenProviderProps } from '../providers/ScreenProvider';
11
11
  import { IFetchConfig } from '../hooks/useFetch';
@@ -28,6 +28,7 @@ export interface IApplicationHookConfig {
28
28
  layoutView?: () => CustomView;
29
29
  layoutProps?: Record<string, unknown>;
30
30
  screen?: Omit<IScreenProviderProps, 'children'>;
31
+ routerProps?: IRouterProps;
31
32
  /**
32
33
  * These fetch configurations will be used to preload and store for no matter what route matched in case of SSR
33
34
  */
@@ -126,7 +126,7 @@ function useApplication(config) {
126
126
  var content = children;
127
127
  // Wrap in routes
128
128
  if (config.routes) {
129
- content = (React.createElement(Router_1["default"], { routes: config.routes(), wrapperView: config.layoutView(), wrapperProps: config.layoutProps }));
129
+ content = (React.createElement(Router_1["default"], __assign({ routes: config.routes(), wrapperView: config.layoutView(), wrapperProps: config.layoutProps }, config.routerProps)));
130
130
  }
131
131
  if (config.screen) {
132
132
  content = (React.createElement(ScreenProvider_1["default"], __assign({}, config.screen), content));
@@ -54,6 +54,8 @@ export interface IDataSelectResult {
54
54
  selectedIds: PrimaryKey[];
55
55
  setSelectedIds: (ids: PrimaryKey | PrimaryKey[], skipToggle?: boolean) => void;
56
56
  selectedItems: IDataSelectItem[];
57
+ setSelectedAll: VoidFunction;
58
+ isSelectedAll: boolean;
57
59
  }
58
- export declare const getLinearItems: (items: any, groupAttribute: any) => any[];
60
+ export declare const getFlattenedItems: (items: any, groupAttribute: any) => any[];
59
61
  export default function useDataSelect(config: IDataSelectConfig): IDataSelectResult;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  exports.__esModule = true;
15
- exports.getLinearItems = void 0;
15
+ exports.getFlattenedItems = void 0;
16
16
  var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
17
17
  var isArray_1 = __importDefault(require("lodash-es/isArray"));
18
18
  var isNil_1 = __importDefault(require("lodash-es/isNil"));
@@ -21,11 +21,11 @@ var react_use_1 = require("react-use");
21
21
  var defaultProps = {
22
22
  primaryKey: 'id'
23
23
  };
24
- var getLinearItems = function (items, groupAttribute) {
24
+ var getFlattenedItems = function (items, groupAttribute) {
25
25
  var result = [];
26
26
  items.forEach(function (item) {
27
27
  if (groupAttribute && Array.isArray(item[groupAttribute])) {
28
- result = result.concat((0, exports.getLinearItems)(item[groupAttribute], groupAttribute));
28
+ result = result.concat((0, exports.getFlattenedItems)(item[groupAttribute], groupAttribute));
29
29
  }
30
30
  else {
31
31
  result.push(item);
@@ -33,7 +33,7 @@ var getLinearItems = function (items, groupAttribute) {
33
33
  });
34
34
  return result;
35
35
  };
36
- exports.getLinearItems = getLinearItems;
36
+ exports.getFlattenedItems = getFlattenedItems;
37
37
  var isIdExists = function (id) {
38
38
  if (typeof id === 'boolean') {
39
39
  return true;
@@ -43,7 +43,7 @@ var isIdExists = function (id) {
43
43
  function useDataSelect(config) {
44
44
  // Get primary key
45
45
  var primaryKey = config.primaryKey || defaultProps.primaryKey;
46
- var linearItems = (0, react_1.useMemo)(function () { return (0, exports.getLinearItems)(config.items, config.groupAttribute); }, [config.groupAttribute, config.items]);
46
+ var flattenedItems = (0, react_1.useMemo)(function () { return (0, exports.getFlattenedItems)(config.items, config.groupAttribute); }, [config.groupAttribute, config.items]);
47
47
  // Initial select
48
48
  var initialSelectedIds = (0, react_1.useMemo)(function () {
49
49
  var _a;
@@ -53,22 +53,23 @@ function useDataSelect(config) {
53
53
  if (!(0, isNil_1["default"])(config.inputValue)) {
54
54
  return [].concat((0, isArray_1["default"])(config.inputValue) ? config.inputValue : [config.inputValue]);
55
55
  }
56
- return config.selectFirst && linearItems.length > 0
57
- ? [linearItems[0][primaryKey]]
56
+ return config.selectFirst && flattenedItems.length > 0
57
+ ? [flattenedItems[0][primaryKey]]
58
58
  : [];
59
- }, [config.selectedIds, config.inputValue, config.selectFirst, linearItems, primaryKey]);
60
- var initialSelectedItems = (0, react_1.useMemo)(function () { return linearItems.length > 0
59
+ }, [config.selectedIds, config.inputValue, config.selectFirst, flattenedItems, primaryKey]);
60
+ var initialSelectedItems = (0, react_1.useMemo)(function () { return flattenedItems.length > 0
61
61
  && initialSelectedIds.length > 0
62
62
  ? initialSelectedIds
63
- .map(function (selectedId) { return linearItems.find(function (item) { return item.id === selectedId; }); })
63
+ .map(function (selectedId) { return flattenedItems.find(function (item) { return item.id === selectedId; }); })
64
64
  .filter(isIdExists)
65
- : []; }, [initialSelectedIds, linearItems]);
65
+ : []; }, [initialSelectedIds, flattenedItems]);
66
66
  // State
67
67
  var _a = (0, react_1.useState)(false), isOpened = _a[0], setIsOpened = _a[1];
68
68
  var _b = (0, react_1.useState)(false), isFocused = _b[0], setIsFocused = _b[1];
69
69
  var _c = (0, react_1.useState)(null), hoveredId = _c[0], setHoveredId = _c[1];
70
70
  var _d = (0, react_1.useState)(initialSelectedIds), selectedIds = _d[0], setSelectedIdsInternal = _d[1];
71
71
  var _e = (0, react_1.useState)(initialSelectedItems), selectedItems = _e[0], setSelectedItemsInternal = _e[1];
72
+ var _f = (0, react_1.useState)(config.items.length === selectedIds.length), isSelectedAll = _f[0], setIsSelectedAll = _f[1];
72
73
  // Handler for select/toggle item by id
73
74
  var setSelectedIds = (0, react_1.useCallback)(function (ids, skipToggle) {
74
75
  if (skipToggle === void 0) { skipToggle = false; }
@@ -76,6 +77,10 @@ function useDataSelect(config) {
76
77
  if (!config.multiple && ids.length > 1) {
77
78
  ids = [ids[0]];
78
79
  }
80
+ if (selectedItems.length === ids.length) {
81
+ setSelectedIds([]);
82
+ return;
83
+ }
79
84
  setSelectedIdsInternal(ids.sort());
80
85
  }
81
86
  else {
@@ -100,14 +105,18 @@ function useDataSelect(config) {
100
105
  setIsOpened(false);
101
106
  }
102
107
  }
103
- }, [config.multiple, selectedIds]);
108
+ }, [config.multiple, selectedIds, selectedItems.length]);
109
+ var setSelectedAll = (0, react_1.useCallback)(function () {
110
+ var itemsIds = flattenedItems.map(function (item) { return item.id; });
111
+ setSelectedIds(itemsIds);
112
+ }, [flattenedItems, setSelectedIds]);
104
113
  // Update selected items on change selectedIds or items or source items
105
114
  var prevSelectedIdsLength = (0, react_use_1.usePrevious)(selectedIds.length);
106
115
  (0, react_use_1.useUpdateEffect)(function () {
107
116
  var newSelectedItems = [];
108
117
  var hasChanges = false;
109
118
  selectedIds.forEach(function (selectedId) {
110
- var finedItem = linearItems.find(function (item) { return item[primaryKey] === selectedId; });
119
+ var finedItem = flattenedItems.find(function (item) { return item[primaryKey] === selectedId; });
111
120
  if (!finedItem && config.sourceItems) {
112
121
  finedItem = config.sourceItems.find(function (item) { return item[primaryKey] === selectedId; });
113
122
  }
@@ -123,14 +132,14 @@ function useDataSelect(config) {
123
132
  if (hasChanges || prevSelectedIdsLength !== selectedIds.length) {
124
133
  setSelectedItemsInternal(newSelectedItems);
125
134
  }
126
- }, [linearItems, config.sourceItems, primaryKey, selectedIds, selectedItems, prevSelectedIdsLength]);
135
+ }, [flattenedItems, config.sourceItems, primaryKey, selectedIds, selectedItems, prevSelectedIdsLength]);
127
136
  // Select first after fetch data
128
- var prevItemsLength = (0, react_use_1.usePrevious)(linearItems.length);
137
+ var prevItemsLength = (0, react_use_1.usePrevious)(flattenedItems.length);
129
138
  (0, react_use_1.useUpdateEffect)(function () {
130
- if (config.selectFirst && prevItemsLength === 0 && linearItems.length > 0) {
131
- setSelectedIdsInternal([linearItems[0][primaryKey]]);
139
+ if (config.selectFirst && prevItemsLength === 0 && flattenedItems.length > 0) {
140
+ setSelectedIdsInternal([flattenedItems[0][primaryKey]]);
132
141
  }
133
- }, [linearItems, config.selectFirst, prevItemsLength, primaryKey]);
142
+ }, [flattenedItems, config.selectFirst, prevItemsLength, primaryKey]);
134
143
  // Update selected items on change value
135
144
  var prevConfigSelectedIds = (0, react_use_1.usePrevious)(config.selectedIds || []);
136
145
  (0, react_use_1.useUpdateEffect)(function () {
@@ -146,6 +155,9 @@ function useDataSelect(config) {
146
155
  setSelectedIdsInternal(newSelectedIds);
147
156
  }
148
157
  }, [config.selectedIds, prevConfigSelectedIds, selectedIds, selectedItems]);
158
+ (0, react_use_1.useUpdateEffect)(function () {
159
+ setIsSelectedAll(config.items.length === selectedIds.length);
160
+ }, [config.items.length, selectedIds]);
149
161
  // Global key down handler for navigate on items
150
162
  // Support keys:
151
163
  // - tab
@@ -175,9 +187,9 @@ function useDataSelect(config) {
175
187
  // Select first selected
176
188
  setSelectedIds(selectedIds[0], true);
177
189
  }
178
- else if (linearItems.length > 0) {
190
+ else if (flattenedItems.length > 0) {
179
191
  // Select first result
180
- setSelectedIds(linearItems[0], true);
192
+ setSelectedIds(flattenedItems[0], true);
181
193
  }
182
194
  setIsOpened(false);
183
195
  }
@@ -202,7 +214,7 @@ function useDataSelect(config) {
202
214
  else {
203
215
  // Navigate on items by keys
204
216
  var direction = isDown ? 1 : -1;
205
- var keys = linearItems.map(function (item) { return item.id; });
217
+ var keys = flattenedItems.map(function (item) { return item.id; });
206
218
  // Get current index
207
219
  var index = hoveredId ? keys.indexOf(hoveredId) : -1;
208
220
  if (index === -1 && selectedIds.length === 1) {
@@ -216,7 +228,7 @@ function useDataSelect(config) {
216
228
  setHoveredId(keys[newIndex]);
217
229
  }
218
230
  }
219
- }, [isFocused, isOpened, hoveredId, selectedIds, linearItems, setSelectedIds]);
231
+ }, [isFocused, isOpened, hoveredId, selectedIds, flattenedItems, setSelectedIds]);
220
232
  (0, react_use_1.useEvent)('keydown', onKeyDown);
221
233
  return {
222
234
  isOpened: isOpened,
@@ -227,7 +239,9 @@ function useDataSelect(config) {
227
239
  setHoveredId: setHoveredId,
228
240
  selectedIds: selectedIds,
229
241
  setSelectedIds: setSelectedIds,
230
- selectedItems: selectedItems
242
+ selectedItems: selectedItems,
243
+ setSelectedAll: setSelectedAll,
244
+ isSelectedAll: isSelectedAll
231
245
  };
232
246
  }
233
247
  exports["default"] = useDataSelect;
@@ -1,13 +1,41 @@
1
1
  export interface IFileInput {
2
+ /**
3
+ * Параметры для input элемента
4
+ */
2
5
  input?: FormInputType;
6
+ /**
7
+ * Множественный выбор файлов
8
+ */
3
9
  multiple?: boolean;
10
+ /**
11
+ * Позволяет указать uploader
12
+ */
4
13
  uploader?: any;
14
+ /**
15
+ * Экшен для отправки на бэкенд
16
+ * @example '/api/v1/user/avatar/crop'
17
+ */
5
18
  backendUrl?: any;
19
+ /**
20
+ * Список mime-типов
21
+ */
6
22
  mimeTypes?: any;
23
+ /**
24
+ * Использовать только изображения
25
+ */
7
26
  imagesOnly?: any;
8
27
  imagesProcessor?: any;
28
+ /**
29
+ * Точные размеры изображений
30
+ */
9
31
  imagesExactSize?: any;
32
+ /**
33
+ * Начальные файлы
34
+ */
10
35
  initialFiles?: any;
36
+ /**
37
+ * Параметры для uploader
38
+ */
11
39
  uploaderConfig?: {
12
40
  useFormData?: boolean;
13
41
  fileFieldName?: string;
@@ -113,12 +113,18 @@ export interface IListConfig {
113
113
  * @example true
114
114
  */
115
115
  addressBar?: boolean | IAddressBarConfig;
116
+ /**
117
+ * Параметр для загрузки данных списка с сервера
118
+ */
116
119
  scope?: string[];
117
120
  /**
118
121
  * Дополнительные параметры, значения которых нужно передавать в запросе для получения данных
119
122
  * @example {tagName: 'MarketReviews'}
120
123
  */
121
124
  query?: Record<string, unknown>;
125
+ /**
126
+ * Модель
127
+ */
122
128
  model?: string;
123
129
  /**
124
130
  * Модель для синхронизации значений формы с адресной строкой
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.0-beta.42",
3
+ "version": "3.0.0-beta.44",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -85,8 +85,8 @@
85
85
  "jest": "^26.6.3",
86
86
  "jest-environment-jsdom-fifteen": "^1.0.2",
87
87
  "jest-enzyme": "^7.1.2",
88
+ "rc-slider": "9.7.4",
88
89
  "ts-jest": "^26.5.1",
89
- "typedoc": "^0.24.7",
90
90
  "typescript": "^4.9.5"
91
91
  }
92
92
  }
@@ -3,31 +3,29 @@ export interface IAccordionIcon {
3
3
  open: React.ReactElement | string;
4
4
  close: React.ReactElement | string;
5
5
  }
6
- export interface IAccordionProps {
7
- view?: CustomView;
8
- style?: CustomStyle;
9
- children?: any;
6
+ export interface IAccordionProps extends IUiComponent {
10
7
  /**
11
- * Дополнительный CSS-класс
12
- */
13
- className?: CssClassName;
8
+ * Дочерние элементы
9
+ */
10
+ children?: React.ReactNode;
14
11
  /**
15
- * @example {true}
12
+ * Переводит Accordion в выключенное состояние
13
+ * @example true
16
14
  */
17
15
  disabled?: boolean;
18
16
  /**
19
17
  * Пользовательская иконка svg или название иконки или объект с иконками open и close
20
- * @example {'circle'}
18
+ * @example 'circle'
21
19
  */
22
20
  icon?: IAccordionIcon | React.ReactElement | string;
23
21
  /**
24
22
  * Включает режим в котором можно открыть только один AccordionItem
25
- * @example {true}
23
+ * @example true
26
24
  */
27
25
  hasOneOpenItem?: boolean;
28
26
  /**
29
27
  * Название AccordionItem
30
- * @example {'Подробнее'}
28
+ * @example 'Подробнее'
31
29
  */
32
30
  title?: string;
33
31
  /**
@@ -36,7 +34,7 @@ export interface IAccordionProps {
36
34
  theme?: 'light' | 'dark' | 'intermediate';
37
35
  /**
38
36
  * Номер активного AccordionItem, который может меняться динамический или быть статичным
39
- * @example
37
+ * @example 1
40
38
  */
41
39
  activeKey?: number;
42
40
  /**
@@ -47,7 +45,7 @@ export interface IAccordionProps {
47
45
  /**
48
46
  * Стилизация позиционирования.
49
47
  * При значении "top" верхняя часть шапки будет закруглена.
50
- * @example {'top'}
48
+ * @example 'top'
51
49
  */
52
50
  position?: 'bottom' | 'middle' | 'top';
53
51
  /**
@@ -1,32 +1,30 @@
1
1
  import React from 'react';
2
- export interface IAlertProps {
3
- view?: CustomView;
4
- className?: CssClassName;
2
+ export interface IAlertProps extends IUiComponent {
5
3
  /**
6
4
  * Дочерние элементы
5
+ * @example {<span>children</span>}
7
6
  */
8
7
  children?: React.ReactNode;
9
8
  /**
10
9
  * Типы Оповещений
11
- * @example {'info'}
10
+ * @example 'info'
12
11
  */
13
- type: 'success' | 'info' | 'warning' | 'error' | 'default' | string;
12
+ type?: 'success' | 'info' | 'warning' | 'error' | 'default' | string;
14
13
  /** Основное сообщения Оповещения
15
- * @example {'Sending is confirmed!'}
14
+ * @example 'Sending is confirmed!'
16
15
  */
17
16
  message?: string;
18
17
  /** Дополнительное содрежание сообщения.
19
- * @example {'Please, check your email.'}
18
+ * @example 'Please, check your email.'
20
19
  */
21
20
  description?: string;
22
- style?: CustomStyle;
23
21
  /**
24
22
  * Нужно ли отображать кнопку, чтобы закрыть Оповещение
25
23
  */
26
24
  showClose?: boolean;
27
25
  /**
28
26
  * Нужно ли отображать иконку, соответствующую типа Оповещения
29
- * @example {true}
27
+ * @example true
30
28
  */
31
29
  showIcon?: boolean;
32
30
  /**
@@ -34,12 +32,17 @@ export interface IAlertProps {
34
32
  * @example {() => console.log('this is callback')}
35
33
  */
36
34
  onClose?: () => void;
35
+ /**
36
+ * Флаг, который включает анимацию
37
+ * @example true
38
+ */
37
39
  animation?: boolean;
38
40
  /**
39
41
  * Время анимации в миллисекундах
40
- * @example {1000}
42
+ * @example 1000
41
43
  */
42
44
  animationDuration?: number;
45
+ [key: string]: any;
43
46
  }
44
47
  export interface IAlertViewProps extends IAlertProps {
45
48
  isExist: boolean;
@@ -1,56 +1,46 @@
1
- export interface IAvatarProps {
1
+ /// <reference types="react" />
2
+ export interface IAvatarProps extends IUiComponent {
2
3
  /**
3
4
  * Альтернативный текст для изображения
4
- * @example {'default image'}
5
+ * @example 'default image'
5
6
  */
6
7
  alt?: string;
7
- /**
8
- * Дополнительный CSS-класс
9
- */
10
- className?: CssClassName;
11
8
  /**
12
9
  * Дочерние элементы
13
10
  */
14
- children?: CustomView;
11
+ children?: React.ReactNode;
15
12
  /**
16
13
  * Размер аватара
17
- * @example {'md'}
14
+ * @example 'md'
18
15
  */
19
16
  size?: Size | number;
20
17
  /**
21
18
  * Форма аватара
22
- * @example {'circle'}
19
+ * @example 'circle'
23
20
  */
24
21
  shape?: 'circle' | 'square' | string;
25
22
  /**
26
23
  * Ссылка на изображение для аватара
27
- * @example {'https://user/avatar.png'}
24
+ * @example 'https://user/avatar.png'
28
25
  */
29
26
  src?: string;
27
+ /**
28
+ * Набор адаптивных изображений
29
+ */
30
30
  srcSet?: string;
31
31
  /**
32
32
  * Статус онлайна
33
- * @example {true}
33
+ * @example true
34
34
  */
35
35
  status?: boolean;
36
- /**
37
- * Объект CSS стилей
38
- * @example {width: '30px'}
39
- */
40
- style?: CustomStyle;
41
36
  /**
42
37
  * Заголовок аватарки
43
- * @example {'Avatar'}
38
+ * @example 'Avatar'
44
39
  */
45
40
  title?: string;
46
- /**
47
- * Переопределение view React компонента для кастомизации отображения
48
- * @example MyCustomView
49
- */
50
- view?: CustomView;
51
41
  /**
52
42
  * Наличие обводки вокруг аватара
53
- * @example {true}
43
+ * @example true
54
44
  */
55
45
  hasBorder?: boolean;
56
46
  }
@@ -1,45 +1,47 @@
1
1
  /// <reference types="react" />
2
2
  export interface ICounter {
3
+ /**
4
+ * Состояние счетчика
5
+ * @example true
6
+ */
3
7
  isEnable: boolean;
4
- content: string | number;
5
- }
6
- export interface IBadgeProps {
7
8
  /**
8
- * Дополнительный CSS-класс
9
+ * Содержимое счетчика
10
+ * @example 'Counter'
9
11
  */
10
- className?: CssClassName;
12
+ content: string | number;
13
+ }
14
+ export interface IBadgeProps extends IUiComponent {
11
15
  /**
12
16
  * Тип badge
17
+ * @example 'primary'
13
18
  */
14
19
  type: ColorName;
15
20
  /**
16
21
  * Стиль скругления
17
22
  */
18
23
  roundingStyle: 'rounder' | 'squarer';
19
- /**
20
- * Переопределение view React компонента для кастомизации отображения
21
- */
22
- view?: CustomView;
23
24
  /**
24
25
  * Нужно ли отображать кнопку, чтобы закрыть badge
25
26
  */
26
27
  showClose?: boolean;
27
28
  /**
28
29
  * Callback функция вызываемая при нажатии на кнопку закрытия
29
- * @example {() => console.log('this is callback')}
30
+ * @example () => console.log('Hello from onClose!')
30
31
  */
31
32
  onClose?: () => void;
32
33
  /** Текст для badge
33
- * @example {'Sending is confirmed!'}
34
+ * @example 'Sending is confirmed!'
34
35
  */
35
36
  message?: string;
36
37
  /**
37
38
  * Нужно ли отображать счетчик
39
+ * @example {isEnable: true, content: 'Hello from counter!'}
38
40
  */
39
41
  counter: boolean | ICounter;
40
- style?: CustomStyle;
41
42
  /**
42
43
  * Размер для badge
44
+ * @example 'md'
43
45
  */
44
46
  size: Size;
45
47
  }
@@ -1,5 +1,5 @@
1
1
  import { DayPickerProps } from 'react-day-picker';
2
- export interface ICalendarProps {
2
+ export interface ICalendarProps extends IUiComponent {
3
3
  /**
4
4
  * Значение задает выбранные в календаре дату или диапазон дат.
5
5
  * Необходимо передать валидную дату в виде строки (массива строк)
@@ -19,11 +19,6 @@ export interface ICalendarProps {
19
19
  * @example {dayPickerProps: {showWeekNumbers: true}}
20
20
  */
21
21
  pickerProps?: DayPickerProps | any;
22
- /**
23
- * Переопределение view React компонента для кастомизации отображения
24
- * @example MyCustomView
25
- */
26
- view?: CustomView;
27
22
  /**
28
23
  * Пропсы для компонента отображения
29
24
  */
@@ -37,10 +32,6 @@ export interface ICalendarProps {
37
32
  * @example 1
38
33
  */
39
34
  numberOfMonths?: number;
40
- /**
41
- * Дополнительный CSS-класс
42
- */
43
- className?: CssClassName;
44
35
  }
45
36
  export interface ICalendarViewProps extends ICalendarProps {
46
37
  /**
@@ -3,16 +3,32 @@ import { IButtonProps } from 'src/ui/form/Button/Button';
3
3
  import { ILinkProps } from 'src/ui/nav/Link/Link';
4
4
  import { IAvatarProps } from '../Avatar/Avatar';
5
5
  export interface ICardHeader {
6
+ /**
7
+ * Параметры для аватара
8
+ * @example
9
+ * {
10
+ * src: 'Kate.png',
11
+ * status: true,
12
+ * }
13
+ */
6
14
  avatar?: IAvatarProps;
15
+ /**
16
+ * Отображается ли меню
17
+ * @example true
18
+ */
7
19
  menu?: boolean;
20
+ /**
21
+ * Текст шапки (заголовок)
22
+ * @example 'Steroids.js head'
23
+ */
8
24
  head?: string;
25
+ /**
26
+ * Текст шапки (заголовок)
27
+ * @example 'Steroids.js subhead'
28
+ */
9
29
  subhead?: string;
10
30
  }
11
- export interface ICardProps {
12
- /**
13
- * Дополнительный CSS-класс
14
- */
15
- className?: CssClassName;
31
+ export interface ICardProps extends IUiComponent {
16
32
  /**
17
33
  * Дочерние элементы
18
34
  */
@@ -24,11 +40,19 @@ export interface ICardProps {
24
40
  cover?: string;
25
41
  /**
26
42
  * Описание карточки
27
- * @example {'Scroll to see more...'}
43
+ * @example 'Scroll to see more...'
28
44
  */
29
45
  description?: string;
30
46
  /**
31
47
  * Контент хедера
48
+ * @example
49
+ * avatar: {
50
+ * src: 'Kate.png',
51
+ * status: true,
52
+ * },
53
+ * head: 'Header',
54
+ * subhead: 'Subhead',
55
+ * menu: true,
32
56
  */
33
57
  header?: ICardHeader;
34
58
  /**
@@ -40,28 +64,17 @@ export interface ICardProps {
40
64
  };
41
65
  /**
42
66
  * Коллекция ссылок
43
- * @example {}
44
67
  */
45
68
  links?: ILinkProps[];
46
69
  /**
47
70
  * Коллекция кнопок
48
71
  */
49
72
  buttons?: IButtonProps[];
50
- /**
51
- * Объект CSS стилей
52
- * @example {width: '30px'}
53
- */
54
- style?: CustomStyle;
55
73
  /**
56
74
  * Заголовок карточки
57
- * @example {'Main card'}
75
+ * @example 'Main card'
58
76
  */
59
77
  title?: string;
60
- /**
61
- * Переопределение view React компонента для кастомизации отображения
62
- * @example MyCustomView
63
- */
64
- view?: CustomView;
65
78
  }
66
79
  export type ICardViewProps = ICardProps;
67
80
  declare function Card(props: ICardProps): any;