@steroidsjs/core 3.0.0-beta.14 → 3.0.0-beta.16

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 (144) hide show
  1. package/hoc/bem.d.ts +1 -1
  2. package/index.d.ts +3 -3
  3. package/package.json +1 -1
  4. package/reducers/router.js +2 -2
  5. package/ui/content/Accordion/Accordion.d.ts +2 -2
  6. package/ui/content/Alert/Alert.d.ts +2 -2
  7. package/ui/content/Avatar/AvatarGroup.d.ts +3 -3
  8. package/ui/content/Badge/Badge.d.ts +4 -4
  9. package/ui/content/Badge/Badge.js +1 -1
  10. package/ui/content/Card/Card.d.ts +21 -28
  11. package/ui/content/Card/Card.js +0 -5
  12. package/ui/content/CopyToClipboard/CopyToClipboard.d.ts +1 -1
  13. package/ui/content/Detail/Detail.d.ts +1 -1
  14. package/ui/content/DropDown/DropDown.d.ts +1 -1
  15. package/ui/content/Icon/Icon.d.ts +2 -2
  16. package/ui/form/Button/Button.d.ts +2 -2
  17. package/ui/form/CheckboxField/CheckboxField.d.ts +5 -0
  18. package/ui/form/CheckboxField/CheckboxField.js +31 -6
  19. package/ui/form/CheckboxListField/CheckboxListField.d.ts +7 -1
  20. package/ui/form/CheckboxListField/CheckboxListField.js +32 -7
  21. package/ui/form/DateField/DateField.d.ts +1 -1
  22. package/ui/form/DateRangeField/DateRangeField.d.ts +1 -1
  23. package/ui/form/DateTimeField/DateTimeField.d.ts +1 -1
  24. package/ui/form/DateTimeRangeField/DateTimeRangeField.d.ts +1 -1
  25. package/ui/form/DropDownField/DropDownField.d.ts +65 -17
  26. package/ui/form/DropDownField/DropDownField.js +90 -6
  27. package/ui/form/Field/fieldWrapper.d.ts +1 -1
  28. package/ui/form/FieldLayout/FieldLayout.d.ts +2 -2
  29. package/ui/form/FieldList/FieldList.d.ts +3 -3
  30. package/ui/form/FieldSet/FieldSet.d.ts +1 -1
  31. package/ui/form/Form/Form.d.ts +2 -7
  32. package/ui/form/InputField/InputField.d.ts +2 -2
  33. package/ui/form/RadioField/RadioField.d.ts +35 -0
  34. package/ui/form/RadioField/RadioField.js +61 -0
  35. package/ui/form/RadioField/index.d.ts +2 -0
  36. package/ui/{list/LayoutNames/demo/basic.js → form/RadioField/index.js} +2 -7
  37. package/ui/form/RadioListField/RadioListField.d.ts +6 -0
  38. package/ui/form/RadioListField/RadioListField.js +32 -2
  39. package/ui/form/TimeField/TimeField.d.ts +1 -1
  40. package/ui/form/index.d.ts +3 -1
  41. package/ui/form/index.js +4 -1
  42. package/ui/layout/Header/Header.d.ts +1 -1
  43. package/ui/layout/Loader/Loader.d.ts +1 -1
  44. package/ui/layout/Notifications/Notifications.d.ts +1 -1
  45. package/ui/layout/Skeleton/Skeleton.d.ts +2 -2
  46. package/ui/layout/Tooltip/calculate.js +1 -1
  47. package/ui/list/CheckboxColumn/CheckboxColumn.d.ts +1 -1
  48. package/ui/list/ControlsColumn/ControlsColumn.d.ts +1 -1
  49. package/ui/list/Grid/Grid.d.ts +1 -1
  50. package/ui/list/Grid/demo/sort.js +4 -2
  51. package/ui/list/Pagination/Pagination.d.ts +16 -6
  52. package/ui/list/Pagination/Pagination.js +15 -7
  53. package/ui/list/PaginationSize/demo/basic.js +2 -3
  54. package/ui/list/PaginationSize/demo/size.js +2 -3
  55. package/ui/list/SearchForm/demo/basic.js +5 -2
  56. package/ui/list/Steps/Steps.d.ts +3 -3
  57. package/ui/modal/TwoFactorModal/TwoFactorModal.d.ts +1 -1
  58. package/ui/nav/Breadcrumbs/Breadcrumbs.d.ts +9 -0
  59. package/ui/nav/Controls/Controls.d.ts +3 -3
  60. package/ui/nav/Nav/Nav.d.ts +2 -2
  61. package/ui/nav/Tree/Tree.d.ts +1 -1
  62. package/ui/typography/Text/Text.d.ts +2 -2
  63. package/ui/typography/Title/Title.d.ts +2 -2
  64. package/ui/content/Card/demo/basic.d.ts +0 -8
  65. package/ui/content/Card/demo/basic.js +0 -39
  66. package/ui/content/Card/demo/border color.d.ts +0 -3
  67. package/ui/content/Card/demo/border color.js +0 -52
  68. package/ui/content/Card/demo/color.d.ts +0 -3
  69. package/ui/content/Card/demo/color.js +0 -52
  70. package/ui/content/Card/demo/header.d.ts +0 -3
  71. package/ui/content/Card/demo/header.js +0 -47
  72. package/ui/content/Card/demo/hover.d.ts +0 -3
  73. package/ui/content/Card/demo/hover.js +0 -42
  74. package/ui/content/Card/demo/link.d.ts +0 -3
  75. package/ui/content/Card/demo/link.js +0 -43
  76. package/ui/content/Card/demo/orientation.d.ts +0 -3
  77. package/ui/content/Card/demo/orientation.js +0 -46
  78. package/ui/form/CheckboxListField/demo/basic.d.ts +0 -9
  79. package/ui/form/CheckboxListField/demo/basic.js +0 -43
  80. package/ui/form/CheckboxListField/demo/disabled.d.ts +0 -8
  81. package/ui/form/CheckboxListField/demo/disabled.js +0 -38
  82. package/ui/form/CheckboxListField/demo/errors.d.ts +0 -8
  83. package/ui/form/CheckboxListField/demo/errors.js +0 -38
  84. package/ui/form/CheckboxListField/demo/required.d.ts +0 -8
  85. package/ui/form/CheckboxListField/demo/required.js +0 -38
  86. package/ui/form/DropDownField/demo/auto-complete.d.ts +0 -8
  87. package/ui/form/DropDownField/demo/auto-complete.js +0 -38
  88. package/ui/form/DropDownField/demo/basic.d.ts +0 -12
  89. package/ui/form/DropDownField/demo/basic.js +0 -56
  90. package/ui/form/DropDownField/demo/disabled.d.ts +0 -8
  91. package/ui/form/DropDownField/demo/disabled.js +0 -38
  92. package/ui/form/DropDownField/demo/errors.d.ts +0 -8
  93. package/ui/form/DropDownField/demo/errors.js +0 -38
  94. package/ui/form/DropDownField/demo/multiple.d.ts +0 -8
  95. package/ui/form/DropDownField/demo/multiple.js +0 -38
  96. package/ui/form/DropDownField/demo/no-border.d.ts +0 -8
  97. package/ui/form/DropDownField/demo/no-border.js +0 -38
  98. package/ui/form/DropDownField/demo/placeholder.d.ts +0 -8
  99. package/ui/form/DropDownField/demo/placeholder.js +0 -38
  100. package/ui/form/DropDownField/demo/required.d.ts +0 -8
  101. package/ui/form/DropDownField/demo/required.js +0 -38
  102. package/ui/form/DropDownField/demo/show-reset.d.ts +0 -8
  103. package/ui/form/DropDownField/demo/show-reset.js +0 -38
  104. package/ui/form/DropDownField/demo/size.d.ts +0 -8
  105. package/ui/form/DropDownField/demo/size.js +0 -45
  106. package/ui/form/Form/demo/basic.d.ts +0 -8
  107. package/ui/form/Form/demo/basic.js +0 -62
  108. package/ui/form/Form/demo/border.d.ts +0 -8
  109. package/ui/form/Form/demo/border.js +0 -62
  110. package/ui/form/Form/demo/horizontal.d.ts +0 -8
  111. package/ui/form/Form/demo/horizontal.js +0 -55
  112. package/ui/form/Form/demo/inline.d.ts +0 -8
  113. package/ui/form/Form/demo/inline.js +0 -53
  114. package/ui/layout/Tooltip/demo/basic.d.ts +0 -8
  115. package/ui/layout/Tooltip/demo/basic.js +0 -56
  116. package/ui/list/LayoutNames/demo/basic.d.ts +0 -7
  117. package/ui/list/List/demo/basic.d.ts +0 -12
  118. package/ui/list/List/demo/basic.js +0 -61
  119. package/ui/list/List/demo/condition.d.ts +0 -8
  120. package/ui/list/List/demo/condition.js +0 -90
  121. package/ui/list/List/demo/empty.d.ts +0 -8
  122. package/ui/list/List/demo/empty.js +0 -36
  123. package/ui/list/List/demo/layout.d.ts +0 -8
  124. package/ui/list/List/demo/layout.js +0 -49
  125. package/ui/list/List/demo/load-more.d.ts +0 -8
  126. package/ui/list/List/demo/load-more.js +0 -45
  127. package/ui/list/List/demo/pagination.d.ts +0 -8
  128. package/ui/list/List/demo/pagination.js +0 -45
  129. package/ui/list/List/demo/search-form.d.ts +0 -30
  130. package/ui/list/List/demo/search-form.js +0 -107
  131. package/ui/list/List/demo/sort.d.ts +0 -17
  132. package/ui/list/List/demo/sort.js +0 -92
  133. package/ui/list/Pagination/demo/basic.d.ts +0 -8
  134. package/ui/list/Pagination/demo/basic.js +0 -45
  135. package/ui/list/Pagination/demo/load-more.d.ts +0 -8
  136. package/ui/list/Pagination/demo/load-more.js +0 -41
  137. package/ui/list/Pagination/demo/sizes.d.ts +0 -8
  138. package/ui/list/Pagination/demo/sizes.js +0 -48
  139. package/ui/nav/Breadcrumbs/demo/basic.d.ts +0 -8
  140. package/ui/nav/Breadcrumbs/demo/basic.js +0 -37
  141. package/ui/nav/Breadcrumbs/demo/items.d.ts +0 -8
  142. package/ui/nav/Breadcrumbs/demo/items.js +0 -42
  143. package/ui/nav/Breadcrumbs/demo/page-title.d.ts +0 -8
  144. package/ui/nav/Breadcrumbs/demo/page-title.js +0 -37
package/hoc/bem.d.ts CHANGED
@@ -5,7 +5,7 @@ import { IBem } from '../hooks/useBem';
5
5
  * Прокидывает утилиту `bem` для правильной генерации CSS классов по методологии БЭМ (блок, элемент, модификатор)
6
6
  */
7
7
  export interface IBemHocInput {
8
- style?: any;
8
+ style?: CustomStyle;
9
9
  }
10
10
  export interface IBemHocOutput extends IComponentsHocOutput {
11
11
  bem?: IBem;
package/index.d.ts CHANGED
@@ -50,15 +50,15 @@ declare type Size = 'small' | 'middle' | 'large' | string;
50
50
  /**
51
51
  * Макет формы или ее части, влияющий на расположение полей
52
52
  */
53
- declare type FormLayoutName = 'default' | 'horizontal' | 'inline' | string;
53
+ declare type FormLayoutName = 'default' | 'vertical' | 'inline' | string;
54
54
 
55
55
  /**
56
56
  * Свойства для настройки макета формы
57
57
  */
58
58
  declare type FormLayout = FormLayoutName | boolean | {
59
59
  layout?: FormLayoutName | boolean,
60
- className?: string,
61
- style?: any,
60
+ className?: CssClassName,
61
+ style?: CustomStyle,
62
62
  label?: boolean,
63
63
  cols?: number[],
64
64
  [key: string]: any,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.0-beta.14",
3
+ "version": "3.0.0-beta.16",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -135,13 +135,13 @@ exports.normalizeRoutes = normalizeRoutes;
135
135
  */
136
136
  var findRecursive = function (item, predicate, pathItems) {
137
137
  if (pathItems === void 0) { pathItems = null; }
138
- if (((0, isFunction_1["default"])(predicate) && predicate(item)) || predicate === item.id) {
138
+ if (((0, isFunction_1["default"])(predicate) && predicate(item)) || predicate === (item === null || item === void 0 ? void 0 : item.id)) {
139
139
  if (pathItems) {
140
140
  pathItems.push(item);
141
141
  }
142
142
  return item;
143
143
  }
144
- if (Array.isArray((item.items))) {
144
+ if (Array.isArray((item === null || item === void 0 ? void 0 : item.items))) {
145
145
  var foundedItem = item.items.find(function (subItem) { return (0, exports.findRecursive)(subItem, predicate, pathItems); }) || null;
146
146
  if (foundedItem && pathItems) {
147
147
  pathItems.push(item);
@@ -4,8 +4,8 @@ export interface IAccordionIcon {
4
4
  close: React.ReactElement | string;
5
5
  }
6
6
  export interface IAccordionCommonProps {
7
- view?: any;
8
- style?: React.CSSProperties;
7
+ view?: CustomView;
8
+ style?: CustomStyle;
9
9
  children?: any;
10
10
  /**
11
11
  * Дополнительный CSS-класс
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  export interface IAlertProps {
3
- view?: any;
3
+ view?: CustomView;
4
4
  className?: CssClassName;
5
5
  /**
6
6
  * Дочерние элементы
@@ -19,7 +19,7 @@ export interface IAlertProps {
19
19
  * @example {'Please, check your email.'}
20
20
  */
21
21
  description?: string;
22
- style?: React.CSSProperties;
22
+ style?: CustomStyle;
23
23
  /**
24
24
  * Нужно ли отображать кнопку, чтобы закрыть Оповещение
25
25
  */
@@ -1,8 +1,8 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  export interface AvatarGroupProps {
3
- view?: any;
3
+ view?: CustomView;
4
4
  children?: CustomView[];
5
- style?: React.CSSProperties;
5
+ style?: CustomStyle;
6
6
  maxCount?: number;
7
7
  }
8
8
  export type IAvatarGroupViewProps = AvatarGroupProps;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  interface ICounter {
3
3
  isEnable: boolean;
4
4
  content: string | number;
@@ -11,7 +11,7 @@ export interface IBadgeProps {
11
11
  /**
12
12
  * Тип badge
13
13
  */
14
- type: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';
14
+ type: ColorName;
15
15
  /**
16
16
  * Стиль скругления
17
17
  */
@@ -37,11 +37,11 @@ export interface IBadgeProps {
37
37
  * Нужно ли отображать счетчик
38
38
  */
39
39
  counter: boolean | ICounter;
40
- style?: React.CSSProperties;
40
+ style?: CustomStyle;
41
41
  /**
42
42
  * Размер для badge
43
43
  */
44
- size: 'small' | 'medium' | 'large';
44
+ size: Size;
45
45
  }
46
46
  export interface IBadgeViewProps extends IBadgeProps {
47
47
  isExist: boolean;
@@ -27,7 +27,7 @@ function Badge(props) {
27
27
  Badge.defaultProps = {
28
28
  type: 'primary',
29
29
  roundingStyle: 'squarer',
30
- size: 'medium',
30
+ size: 'md',
31
31
  counter: false,
32
32
  showClose: false
33
33
  };
@@ -1,9 +1,7 @@
1
+ import { IButtonProps } from 'src/ui/form/Button/Button';
2
+ import { ILinkProps } from 'src/ui/nav/Link/Link';
3
+ import { IAvatarProps } from '../Avatar/Avatar';
1
4
  export interface ICardProps {
2
- /**
3
- * Цвет границы (если передать false, то граница будет скрыта)
4
- * @example success
5
- */
6
- borderColor?: ColorName | 'default' | boolean;
7
5
  /**
8
6
  * Дополнительный CSS-класс
9
7
  */
@@ -12,11 +10,6 @@ export interface ICardProps {
12
10
  * Дочерние элементы
13
11
  */
14
12
  children?: CustomView;
15
- /**
16
- * Цвет состояния
17
- * @example success
18
- */
19
- color?: ColorName;
20
13
  /**
21
14
  * Обложка для карточки, нужно передать ссылку на изображение
22
15
  * @example 'https://cat/cat.png'
@@ -28,23 +21,30 @@ export interface ICardProps {
28
21
  */
29
22
  description?: string;
30
23
  /**
31
- * Текст для header
24
+ * Контент хедера
32
25
  */
33
- header?: string;
26
+ header?: {
27
+ avatar?: IAvatarProps;
28
+ menu?: boolean;
29
+ head?: string;
30
+ subhead?: string;
31
+ };
34
32
  /**
35
- * Текст для footer
33
+ * Контент футера
36
34
  */
37
- footer?: string;
35
+ footer?: {
36
+ head: string;
37
+ subhead: string;
38
+ };
38
39
  /**
39
- * Ориентация карточки, горизонтальная и вертикальная
40
- * @example {'vertical-reverse'}
41
- */
42
- orientation?: 'vertical' | 'vertical-reverse' | 'horizontal' | string;
40
+ * Коллекция ссылок
41
+ * @example {}
42
+ */
43
+ links?: ILinkProps[];
43
44
  /**
44
- * Ориентация карточки, горизонтальная и вертикальная
45
- * @example {'vertical-reverse'}
45
+ * Коллекция кнопок
46
46
  */
47
- shape?: 'square' | 'circle';
47
+ buttons?: IButtonProps[];
48
48
  /**
49
49
  * Объект CSS стилей
50
50
  * @example {width: '30px'}
@@ -63,11 +63,4 @@ export interface ICardProps {
63
63
  }
64
64
  export type ICardViewProps = ICardProps;
65
65
  declare function Card(props: ICardProps): any;
66
- declare namespace Card {
67
- var defaultProps: {
68
- borderColor: string;
69
- orientation: string;
70
- shape: string;
71
- };
72
- }
73
66
  export default Card;
@@ -16,9 +16,4 @@ function Card(props) {
16
16
  var components = (0, hooks_1.useComponents)();
17
17
  return components.ui.renderView(props.view || 'content.CardView', __assign({}, props));
18
18
  }
19
- Card.defaultProps = {
20
- borderColor: 'default',
21
- orientation: 'vertical',
22
- shape: 'circle'
23
- };
24
19
  exports["default"] = Card;
@@ -8,7 +8,7 @@ interface ICopyToClipboardProps extends IBemHocOutput, IConnectHocOutput {
8
8
  level?: string;
9
9
  timeOut?: string;
10
10
  };
11
- className?: string;
11
+ className?: CssClassName;
12
12
  children?: any;
13
13
  }
14
14
  export default function CopyToClipboard(props: ICopyToClipboardProps): any;
@@ -70,7 +70,7 @@ export interface IDetailProps {
70
70
  /**
71
71
  * Дополнительный CSS-класс для таблицы
72
72
  */
73
- className?: string;
73
+ className?: CssClassName;
74
74
  /**
75
75
  * Дочерние компоненты
76
76
  */
@@ -14,7 +14,7 @@ export interface IDropDownProps extends IAbsolutePositioningInputProps {
14
14
  * Переопределение view React компонента для кастомизациии отображения
15
15
  * @example MyCustomView
16
16
  */
17
- view?: any;
17
+ view?: CustomView;
18
18
  /**
19
19
  * В каком случае закрывать DropDown. По-умолчанию - `click-away`
20
20
  * @example click-any
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ /// <reference types="react" />
2
2
  /**
3
3
  * Install the latest free version of Font Awesome via yarn:
4
4
  * ```
@@ -33,7 +33,7 @@ export interface IIconProps {
33
33
  * Переопределение view React компонента для кастомизации отображения
34
34
  * @example MyCustomView
35
35
  */
36
- view?: React.ComponentType;
36
+ view?: CustomView;
37
37
  /**
38
38
  * Должен ли данный элемент участвовать в последовательной навигации
39
39
  */
@@ -100,7 +100,7 @@ export interface IButtonProps {
100
100
  * Объект CSS стилей
101
101
  * @example {width: '45%'}
102
102
  */
103
- style?: any;
103
+ style?: CustomStyle;
104
104
  /**
105
105
  * Дополнительный CSS-класс для кнопки или ссылки
106
106
  */
@@ -109,7 +109,7 @@ export interface IButtonProps {
109
109
  * Переопределение view React компонента для кастомизации отображения
110
110
  * @example MyCustomView
111
111
  */
112
- view?: React.ComponentType;
112
+ view?: CustomView;
113
113
  /**
114
114
  * Вложенные элементы
115
115
  */
@@ -19,6 +19,11 @@ export interface ICheckboxFieldProps extends IFieldWrapperInputProps {
19
19
  * @example MyCustomView
20
20
  */
21
21
  view?: CustomView;
22
+ /**
23
+ * Флаг определяющий включен ли элемент
24
+ * @example {'true'}
25
+ */
26
+ checked?: boolean;
22
27
  [key: string]: any;
23
28
  }
24
29
  export interface ICheckboxFieldViewProps extends ICheckboxFieldProps, IFieldWrapperOutputProps {
@@ -10,28 +10,53 @@ 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
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
13
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
38
  };
16
39
  exports.__esModule = true;
17
- var react_use_1 = require("react-use");
40
+ var React = __importStar(require("react"));
18
41
  var react_1 = require("react");
19
42
  var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
20
43
  var hooks_1 = require("../../../hooks");
21
44
  function CheckboxField(props) {
22
45
  var components = (0, hooks_1.useComponents)();
23
- (0, react_use_1.useMount)(function () {
24
- if (props.input.value === undefined) {
25
- props.input.onChange(false);
46
+ var onChangeHandler = React.useCallback(function () {
47
+ props.input.onChange(!props.input.value);
48
+ if (props.onChange) {
49
+ props.onChange();
26
50
  }
27
- });
28
- var inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, type: 'checkbox', checked: !!props.input.value, onChange: function () { return props.input.onChange(!props.input.value); }, disabled: props.disabled }, props.inputProps)); }, [props.disabled, props.input, props.inputProps]);
51
+ }, [props]);
52
+ var inputProps = (0, react_1.useMemo)(function () { return (__assign({ name: props.input.name, type: 'checkbox', checked: !!props.input.value, onChange: onChangeHandler, disabled: props.disabled }, props.inputProps)); }, [onChangeHandler, props.disabled, props.input.name, props.input.value, props.inputProps]);
29
53
  return components.ui.renderView(props.view || 'form.CheckboxFieldView', __assign(__assign({}, props), { inputProps: inputProps }));
30
54
  }
31
55
  CheckboxField.defaultProps = {
32
56
  disabled: false,
33
57
  required: false,
34
58
  className: '',
59
+ size: 'md',
35
60
  inputProps: {}
36
61
  };
37
62
  exports["default"] = (0, fieldWrapper_1["default"])('CheckboxField', CheckboxField, { label: false });
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { IFieldWrapperInputProps, IFieldWrapperOutputProps } from '../../../ui/form/Field/fieldWrapper';
3
3
  import { IDataProviderConfig } from '../../../hooks/useDataProvider';
4
4
  import { IDataSelectConfig } from '../../../hooks/useDataSelect';
5
+ import { ICheckboxFieldViewProps } from '../CheckboxField/CheckboxField';
5
6
  /**
6
7
  * CheckboxListField
7
8
  * Список с чекбоксами. Используется в формах для выбора нескольких значений.
@@ -21,6 +22,10 @@ export interface ICheckboxListFieldProps extends IFieldWrapperInputProps, IDataP
21
22
  * @example MyCustomView
22
23
  */
23
24
  view?: CustomView;
25
+ /**
26
+ * Ориентация списка
27
+ */
28
+ orientation?: 'horizontal' | 'vertical';
24
29
  [key: string]: any;
25
30
  }
26
31
  export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
@@ -38,7 +43,8 @@ export interface ICheckboxListFieldViewProps extends IFieldWrapperOutputProps {
38
43
  }[];
39
44
  selectedIds: (PrimaryKey | any)[];
40
45
  onItemSelect: (id: PrimaryKey | any) => void;
41
- onItemHover: (id: PrimaryKey | any) => void;
46
+ orientation?: 'horizontal' | 'vertical';
47
+ renderCheckbox: (checkboxProps: ICheckboxFieldViewProps) => JSX.Element;
42
48
  }
43
49
  declare const _default: import("../../../ui/form/Field/fieldWrapper").FieldWrapperComponent<ICheckboxListFieldProps>;
44
50
  export default _default;
@@ -10,34 +10,56 @@ 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
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
13
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
38
  };
16
39
  exports.__esModule = true;
40
+ var React = __importStar(require("react"));
17
41
  var react_1 = require("react");
18
42
  var react_use_1 = require("react-use");
19
43
  var hooks_1 = require("../../../hooks");
20
44
  var fieldWrapper_1 = __importDefault(require("../../../ui/form/Field/fieldWrapper"));
21
45
  function CheckboxListField(props) {
22
46
  var components = (0, hooks_1.useComponents)();
47
+ var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
23
48
  // Data Provider
24
49
  var items = (0, hooks_1.useDataProvider)({
25
50
  items: props.items
26
51
  }).items;
27
52
  // Data select
28
53
  var _a = (0, hooks_1.useDataSelect)({
54
+ selectedIds: inputSelectedIds,
29
55
  multiple: props.multiple,
30
- selectedIds: props.selectedIds,
31
56
  primaryKey: props.primaryKey,
32
57
  items: items,
33
58
  inputValue: props.input.value
34
- }), hoveredId = _a.hoveredId, setHoveredId = _a.setHoveredId, selectedIds = _a.selectedIds, setSelectedIds = _a.setSelectedIds;
59
+ }), selectedIds = _a.selectedIds, setSelectedIds = _a.setSelectedIds;
35
60
  var onItemSelect = (0, react_1.useCallback)(function (id) {
36
61
  setSelectedIds(id);
37
62
  }, [setSelectedIds]);
38
- var onItemHover = (0, react_1.useCallback)(function (id) {
39
- setHoveredId(id);
40
- }, [setHoveredId]);
41
63
  var inputProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.inputProps), { type: 'checkbox', name: props.input.name, disabled: props.disabled })); }, [props.disabled, props.input, props.inputProps]);
42
64
  // Sync with form
43
65
  (0, react_1.useEffect)(function () {
@@ -54,12 +76,15 @@ function CheckboxListField(props) {
54
76
  onReset();
55
77
  }
56
78
  }, [onReset, prevInputValue, props.input.value, selectedIds.length]);
57
- return components.ui.renderView(props.view || 'form.CheckboxListFieldView', __assign(__assign({}, props), { items: items, inputProps: inputProps, onItemSelect: onItemSelect, selectedIds: selectedIds, onItemHover: onItemHover, hoveredId: hoveredId }));
79
+ var CheckboxFieldView = components.ui.getView('form.CheckboxFieldView');
80
+ var renderCheckbox = function (checkboxProps) { return React.createElement(CheckboxFieldView, __assign({}, checkboxProps)); };
81
+ return components.ui.renderView(props.view || 'form.CheckboxListFieldView', __assign(__assign({}, props), { items: items, inputProps: inputProps, onItemSelect: onItemSelect, selectedIds: selectedIds, renderCheckbox: renderCheckbox }));
58
82
  }
59
83
  CheckboxListField.defaultProps = {
60
84
  disabled: false,
61
85
  required: false,
62
86
  className: '',
63
- multiple: true
87
+ multiple: false,
88
+ orientation: 'vertical'
64
89
  };
65
90
  exports["default"] = (0, fieldWrapper_1["default"])('CheckboxListField', CheckboxListField);
@@ -9,7 +9,7 @@ export interface IDateFieldProps extends IDateInputStateInput {
9
9
  * Объект CSS стилей
10
10
  * @example {width: '45%'}
11
11
  */
12
- style?: any;
12
+ style?: CustomStyle;
13
13
  /**
14
14
  * Переопределение view React компонента для кастомизации отображения
15
15
  * @example MyCustomView
@@ -49,7 +49,7 @@ export interface IDateRangeFieldProps extends IDateInputStateInput, Omit<IFieldW
49
49
  * Объект CSS стилей
50
50
  * @example {width: '45%'}
51
51
  */
52
- style?: any;
52
+ style?: CustomStyle;
53
53
  /**
54
54
  * Иконка
55
55
  * @example calendar-day
@@ -5,7 +5,7 @@ export interface IDateTimeFieldProps extends IDateInputStateInput {
5
5
  * Объект CSS стилей
6
6
  * @example {width: '45%'}
7
7
  */
8
- style?: any;
8
+ style?: CustomStyle;
9
9
  /**
10
10
  * Дополнительный CSS-класс
11
11
  */
@@ -35,7 +35,7 @@ export interface IDateTimeRangeFieldProps extends Omit<IDateInputStateInput, 'in
35
35
  * Объект CSS стилей
36
36
  * @example {width: '45%'}
37
37
  */
38
- style?: any;
38
+ style?: CustomStyle;
39
39
  /**
40
40
  * Свойства для поля 'from'
41
41
  */
@@ -1,16 +1,53 @@
1
+ import React from 'react';
2
+ import { IAccordionCommonViewProps } from 'src/ui/content/Accordion/Accordion';
1
3
  import { IDataProviderConfig } from '../../../hooks/useDataProvider';
2
4
  import { IDataSelectConfig } from '../../../hooks/useDataSelect';
3
5
  import { IFieldWrapperInputProps } from '../../form/Field/fieldWrapper';
6
+ export declare const GROUP_CONTENT_TYPE = "group";
7
+ export declare const CHECKBOX_CONTENT_TYPE = "checkbox";
8
+ export declare const RADIO_CONTENT_TYPE = "radio";
9
+ export declare const ICON_CONTENT_TYPE = "icon";
10
+ export declare const IMG_CONTENT_TYPE = "img";
11
+ export type ContentType = 'checkbox' | 'radio' | 'icon' | 'img';
12
+ export type ItemSwitchType = ContentType | 'group' | string;
13
+ export interface IDropDownFieldItem {
14
+ id: number | string;
15
+ label: string;
16
+ contentType?: ContentType;
17
+ contentSrc?: 'string' | React.ReactElement;
18
+ }
19
+ export interface IDropDownFieldItemViewProps extends IAccordionCommonViewProps, Pick<IDropDownFieldProps, 'itemsContent'> {
20
+ item: IDropDownFieldItem;
21
+ size: Size;
22
+ type: ItemSwitchType;
23
+ selectedIds: (PrimaryKey | any)[];
24
+ groupAttribute: 'string';
25
+ primaryKey: PrimaryKey;
26
+ hoveredId: string;
27
+ onItemSelect: (id: PrimaryKey | any) => void;
28
+ onItemHover: (id: PrimaryKey | any) => void;
29
+ [key: string]: any;
30
+ }
4
31
  /**
5
32
  * DropDownField
6
33
  * Выпадающий список для выбора одного или нескольких значений
7
34
  */
8
- export interface IDropDownFieldProps extends IFieldWrapperInputProps, IDataProviderConfig, Omit<IDataSelectConfig, 'items'> {
35
+ export interface IDropDownFieldProps extends IFieldWrapperInputProps, Omit<IDataProviderConfig, 'items'>, Omit<IDataSelectConfig, 'items'> {
9
36
  /**
10
37
  * Placeholder подсказка
11
38
  * @example Your text...
12
39
  */
13
40
  searchPlaceholder?: string;
41
+ /**
42
+ * Цвет состояния
43
+ * @example success
44
+ */
45
+ color?: ColorName;
46
+ /**
47
+ * Включает стиль `outline`, когда у DropDownField остается только `border`, а задний фон становится прозрачным
48
+ * @example true
49
+ */
50
+ outline?: boolean;
14
51
  inputProps?: any;
15
52
  /**
16
53
  * Дополнительный CSS-класс
@@ -20,17 +57,17 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, IDataProvi
20
57
  * Объект CSS стилей
21
58
  * @example {width: '45%'}
22
59
  */
23
- style?: any;
24
- /**
25
- * Переопределение view React компонента для кастомизации отображения
26
- * @example MyCustomView
27
- */
28
- view?: any;
60
+ style?: CustomStyle;
29
61
  /**
30
- * Показать кнопку для сброса выбранного значения
62
+ * Показать иконку сброса для выбранных значений
31
63
  * @example true
32
64
  */
33
65
  showReset?: boolean;
66
+ /**
67
+ * Переопределение view React компонента для кастомизации отображения
68
+ * @example MyCustomView
69
+ */
70
+ view?: CustomView;
34
71
  /**
35
72
  * Атрибут, в котором должны лежать дочерние элементы списка (для группировки)
36
73
  * Если аттрибут не задан - группировка не производится
@@ -38,15 +75,27 @@ export interface IDropDownFieldProps extends IFieldWrapperInputProps, IDataProvi
38
75
  */
39
76
  groupAttribute?: string;
40
77
  /**
41
- * Включает стиль без 'border'
42
- * @example true
78
+ * Свойство, которое устанавливает один type и src контента для всех пунктов
79
+ * @example {type: 'icon', src: 'user'}
80
+ */
81
+ itemsContent?: {
82
+ type: ContentType;
83
+ src?: 'string' | React.ReactElement;
84
+ };
85
+ /**
86
+ * Элементы вложенные внутрь DropDownField
87
+ * @example [{id: 1, label: 'Ivan Ivanov', type: 'icon', typeSrc: 'user'}]
88
+ */
89
+ items: IDropDownFieldItem[];
90
+ /**
91
+ * Нужно ли использовать троеточие при переполнении DropDownField
92
+ * @example {'true'}
43
93
  */
44
- noBorder?: boolean;
94
+ showEllipses?: boolean;
45
95
  [key: string]: any;
46
96
  }
47
- export interface IDropDownFieldViewProps extends Omit<IDropDownFieldProps, 'items'> {
97
+ export interface IDropDownFieldViewProps extends IDropDownFieldProps {
48
98
  errors?: string[];
49
- items: Record<string, unknown>[];
50
99
  selectedItems: Record<string, unknown>[];
51
100
  hoveredId: PrimaryKey | any;
52
101
  selectedIds: (PrimaryKey | any)[];
@@ -63,13 +112,12 @@ export interface IDropDownFieldViewProps extends Omit<IDropDownFieldProps, 'item
63
112
  isOpened?: boolean;
64
113
  isLoading?: boolean;
65
114
  onReset: () => void;
66
- onItemSelect: (id: PrimaryKey | any) => void;
67
- onItemHover: (id: PrimaryKey | any) => void;
115
+ onOpen: () => void;
116
+ renderItem: (item: IDropDownFieldItem) => JSX.Element;
68
117
  onItemRemove: (id: PrimaryKey | any) => void;
69
- onClose: () => void;
70
- placeholder: string;
71
118
  isAutoComplete?: boolean;
72
119
  isSearchAutoFocus?: boolean;
120
+ primaryKey: string;
73
121
  }
74
122
  declare const _default: import("../../form/Field/fieldWrapper").FieldWrapperComponent<IDropDownFieldProps>;
75
123
  export default _default;