@steroidsjs/bootstrap 3.0.0-beta.35 → 3.0.0-beta.37

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 (47) hide show
  1. package/content/Accordion/AccordionItemView.js +4 -11
  2. package/content/Avatar/AvatarView.scss +4 -4
  3. package/content/Card/CardView.js +5 -3
  4. package/content/Card/CardView.scss +21 -5
  5. package/form/Button/ButtonView.scss +10 -0
  6. package/form/CheckboxField/CheckboxFieldView.js +2 -2
  7. package/form/CheckboxField/CheckboxFieldView.scss +3 -5
  8. package/form/CheckboxListField/CheckboxListFieldView.js +19 -15
  9. package/form/CheckboxListField/CheckboxListFieldView.scss +7 -41
  10. package/form/DropDownField/DropDownFieldView.js +4 -19
  11. package/form/DropDownField/DropDownFieldView.scss +14 -16
  12. package/form/DropDownField/utils.d.ts +2 -0
  13. package/form/DropDownField/utils.js +15 -0
  14. package/form/DropDownFieldItem/DropDownFieldItemView.d.ts +2 -0
  15. package/form/DropDownFieldItem/DropDownFieldItemView.js +78 -0
  16. package/form/{DropDownField/views/DropDownItem/DropDownItemView.scss → DropDownFieldItem/DropDownFieldItemView.scss} +4 -5
  17. package/form/InputField/InputFieldView.js +5 -7
  18. package/form/RadioField/RadioFieldView.d.ts +3 -0
  19. package/form/RadioField/RadioFieldView.js +57 -0
  20. package/form/RadioField/RadioFieldView.scss +226 -0
  21. package/form/RadioListField/RadioListFieldView.js +20 -23
  22. package/form/RadioListField/RadioListFieldView.scss +7 -225
  23. package/icons/index.js +3 -0
  24. package/icons/svgs/arrow-left.svg +3 -0
  25. package/icons/svgs/double-arrow-left.svg +4 -0
  26. package/icons/svgs/home.svg +4 -0
  27. package/index.scss +2 -0
  28. package/list/List/ListView.d.ts +1 -0
  29. package/list/List/ListView.js +5 -5
  30. package/list/List/ListView.scss +9 -0
  31. package/list/Pagination/PaginationButtonView.js +34 -5
  32. package/list/Pagination/PaginationButtonView.scss +258 -1
  33. package/list/Pagination/PaginationMoreView.js +1 -1
  34. package/list/Pagination/PaginationMoreView.scss +4 -1
  35. package/nav/Breadcrubms/BreadcrumbsView.js +9 -1
  36. package/nav/Breadcrubms/BreadcrumbsView.scss +51 -0
  37. package/package.json +3 -3
  38. package/scss/mixins/button.scss +18 -7
  39. package/scss/variables/common/colors.scss +10 -5
  40. package/scss/variables/normalize.scss +4 -0
  41. package/utils/renderIcon.d.ts +9 -0
  42. package/utils/renderIcon.js +27 -0
  43. package/form/DropDownField/views/DropDownItem/DropDownItemView.d.ts +0 -3
  44. package/form/DropDownField/views/DropDownItem/DropDownItemView.js +0 -80
  45. package/form/DropDownField/views/DropDownItem/index.d.ts +0 -2
  46. package/form/DropDownField/views/DropDownItem/index.js +0 -7
  47. package/list/List/ListItemView.scss +0 -3
@@ -29,6 +29,7 @@ exports.__esModule = true;
29
29
  var React = __importStar(require("react"));
30
30
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
31
31
  var hooks_1 = require("@steroidsjs/core/hooks");
32
+ var renderIcon_1 = __importDefault(require("../../utils/renderIcon"));
32
33
  function AccordionItemView(props) {
33
34
  var _a;
34
35
  var bem = (0, hooks_1.useBem)('AccordionItemView');
@@ -48,21 +49,13 @@ function AccordionItemView(props) {
48
49
  if (!props.icon) {
49
50
  return null;
50
51
  }
51
- var openIconClassName = bem.element('open-icon');
52
- var closeIconClassName = bem.element('close-icon');
53
52
  if (typeof props.icon === 'object') {
54
53
  var icons = props.icon;
55
54
  return (React.createElement(React.Fragment, null,
56
- typeof icons.open === 'string'
57
- ? (React.createElement(Icon_1["default"], { name: icons.open, className: openIconClassName }))
58
- : (React.createElement("span", { className: openIconClassName }, icons.open)),
59
- typeof icons.close === 'string'
60
- ? (React.createElement(Icon_1["default"], { name: icons.close, className: closeIconClassName }))
61
- : (React.createElement("span", { className: closeIconClassName }, icons.close))));
55
+ (0, renderIcon_1["default"])(icons.open, { className: bem.element('open-icon') }),
56
+ (0, renderIcon_1["default"])(icons.close, { className: bem.element('close-icon') })));
62
57
  }
63
- return typeof props.icon === 'string'
64
- ? React.createElement(Icon_1["default"], { name: props.icon })
65
- : (React.createElement("span", { className: bem.element('custom-icon') }, props.icon));
58
+ return (0, renderIcon_1["default"])(props.icon, { className: bem.element('custom-icon') });
66
59
  }, [bem, props.icon]);
67
60
  var handleHeaderClick = React.useCallback(function () {
68
61
  if (props.disabled || !props.toggleAccordion || !props.toggleCollapse) {
@@ -69,8 +69,8 @@ $status-border-color: var(--status-border-color);
69
69
 
70
70
  &_middle {
71
71
  #{$root}__body {
72
- height: 46px;
73
- width: 46px;
72
+ height: 50px;
73
+ width: 50px;
74
74
  line-height: 46px;
75
75
  font-size: $font-size-sm;
76
76
  }
@@ -81,8 +81,8 @@ $status-border-color: var(--status-border-color);
81
81
 
82
82
  &_small {
83
83
  #{$root}__body {
84
- height: 28px;
85
- width: 28px;
84
+ height: 32px;
85
+ width: 32px;
86
86
  line-height: 28px;
87
87
  font-size: $font-size-xs;
88
88
  }
@@ -22,11 +22,13 @@ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
22
22
  var nav_1 = require("@steroidsjs/core/ui/nav");
23
23
  function CardView(props) {
24
24
  var bem = (0, hooks_1.useBem)('CardView');
25
- var hasContent = props.title || props.buttons || props.links || props.description;
25
+ var hasContent = !!(props.title || props.buttons || props.links || props.description);
26
26
  return (react_1["default"].createElement("div", { className: bem(bem.block(), props.className), style: props.style },
27
- props.header && (react_1["default"].createElement("div", { className: bem.element('header') },
27
+ props.header && (react_1["default"].createElement("div", { className: bem.element('header', {
28
+ withoutCover: !props.cover && hasContent
29
+ }) },
28
30
  react_1["default"].createElement("div", { className: bem.element('header-data') },
29
- props.header.avatar && react_1["default"].createElement(Avatar_1["default"], __assign({}, props.header.avatar)),
31
+ props.header.avatar && (react_1["default"].createElement(Avatar_1["default"], __assign({}, props.header.avatar, { className: bem(props.header.avatar.className, bem.element('header-avatar')) }))),
30
32
  react_1["default"].createElement("div", { className: bem.element('header-text-content') },
31
33
  react_1["default"].createElement("h3", { className: bem.element('header-head') }, props.header.head),
32
34
  react_1["default"].createElement("p", { className: bem.element('header-subhead') }, props.header.subhead))),
@@ -52,7 +52,12 @@ $card-dots-color: var(--card-dots-color);
52
52
  flex-flow: row nowrap;
53
53
  justify-content: space-between;
54
54
 
55
- padding: 16px;
55
+ padding: 18px;
56
+ padding-bottom: 20px;
57
+
58
+ &_withoutCover {
59
+ padding-bottom: 3px;
60
+ }
56
61
 
57
62
  &-data {
58
63
  display: flex;
@@ -61,6 +66,10 @@ $card-dots-color: var(--card-dots-color);
61
66
  column-gap: 8px;
62
67
  }
63
68
 
69
+ &-avatar {
70
+ margin-right: 2px;
71
+ }
72
+
64
73
  &-text-content {
65
74
  display: flex;
66
75
  flex-flow: column nowrap;
@@ -92,6 +101,10 @@ $card-dots-color: var(--card-dots-color);
92
101
  rect {
93
102
  fill: $card-dots-color;
94
103
  }
104
+
105
+ svg {
106
+ transform: translateX(5px);
107
+ }
95
108
  }
96
109
  }
97
110
 
@@ -110,8 +123,7 @@ $card-dots-color: var(--card-dots-color);
110
123
  }
111
124
 
112
125
  &__content {
113
- padding: 8px 16px;
114
- padding-bottom: 16px;
126
+ padding: 16px;
115
127
  }
116
128
 
117
129
  &__content-inner {
@@ -133,7 +145,7 @@ $card-dots-color: var(--card-dots-color);
133
145
  &__buttons {
134
146
  display: flex;
135
147
  flex-flow: row wrap;
136
- $columnGap: 6px;
148
+ $columnGap: 8px;
137
149
  row-gap: 8px;
138
150
  column-gap: $columnGap;
139
151
 
@@ -142,7 +154,7 @@ $card-dots-color: var(--card-dots-color);
142
154
  }
143
155
 
144
156
  button:not(:only-of-type) {
145
- width: calc(50% - $columnGap);
157
+ width: calc(50% - $columnGap / 2);
146
158
  }
147
159
  }
148
160
 
@@ -150,6 +162,10 @@ $card-dots-color: var(--card-dots-color);
150
162
  display: flex;
151
163
  flex-flow: row wrap;
152
164
  column-gap: 16px;
165
+
166
+ a {
167
+ line-height: 18px;
168
+ }
153
169
  }
154
170
 
155
171
  &__footer {
@@ -14,6 +14,8 @@ $btn-letter-spacing: 0.1em;
14
14
  justify-content: center;
15
15
  align-items: center;
16
16
 
17
+ cursor: pointer;
18
+
17
19
  &_button {
18
20
  position: relative;
19
21
  border-radius: $radius-small;
@@ -105,6 +107,10 @@ $btn-letter-spacing: 0.1em;
105
107
  display: inline;
106
108
  color: $link-color;
107
109
  }
110
+
111
+ &:hover {
112
+ background-color: transparent;
113
+ }
108
114
  }
109
115
 
110
116
  &__label {
@@ -129,6 +135,10 @@ $btn-letter-spacing: 0.1em;
129
135
  }
130
136
  }
131
137
 
138
+ &_loading {
139
+ cursor: default;
140
+ }
141
+
132
142
  &__preloader {
133
143
  position: absolute;
134
144
  top: 50%;
@@ -47,8 +47,8 @@ function CheckboxFieldView(props) {
47
47
  size: props.size,
48
48
  hasErrors: !!props.errors
49
49
  }), props.className), style: props.style, onClick: props.onChange },
50
- React.createElement("input", __assign({ className: bem.element('input'), id: id }, props.inputProps, { disabled: props.disabled, required: props.required })),
51
- React.createElement("label", { className: bem.element('label'), htmlFor: id },
50
+ React.createElement("input", __assign({ className: bem.element('input'), id: props.id || id }, props.inputProps, { checked: props.checked, disabled: props.disabled, required: props.required })),
51
+ React.createElement("label", { className: bem.element('label'), htmlFor: props.id || id },
52
52
  React.createElement("span", { className: bem.element('label-text', { required: props.required }) }, props.label))));
53
53
  }
54
54
  exports["default"] = CheckboxFieldView;
@@ -98,20 +98,18 @@
98
98
  //DISABLED
99
99
  &:disabled + #{$root}__label {
100
100
  cursor: not-allowed;
101
- color: $gray;
102
-
103
101
  span {
104
- color: currentColor;
102
+ color: $black-30;
105
103
  }
106
104
 
107
105
  &::before {
108
- background: currentColor;
106
+ background: $background-disabled-color;
109
107
  border: none;
110
108
  }
111
109
  }
112
110
 
113
111
  &:disabled:checked #{$root}__label::before {
114
- background-color: $gray;
112
+ background-color: $background-disabled-color;
115
113
  border-color: none;
116
114
  background-image: url("data:image/svg+xml,%3Csvg width='11' height='9' viewBox='0 0 11 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.8584 1.48401L4.3584 7.48401L1.8584 4.75674' stroke='black' stroke-opacity='0.1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A");
117
115
  }
@@ -1,15 +1,4 @@
1
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
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -41,11 +30,26 @@ var React = __importStar(require("react"));
41
30
  var hooks_1 = require("@steroidsjs/core/hooks");
42
31
  var useUniqueId_1 = __importDefault(require("@steroidsjs/core/hooks/useUniqueId"));
43
32
  function CheckboxListFieldView(props) {
33
+ var _a;
44
34
  var bem = (0, hooks_1.useBem)('CheckboxListFieldView');
45
35
  var prefix = (0, useUniqueId_1["default"])('checkbox');
46
- return (React.createElement("div", { className: bem(bem.block({ 'is-invalid': !!props.errors }), props.className) }, props.items.map(function (item) { return (React.createElement("div", { key: item.id, className: "custom-control custom-checkbox" },
47
- React.createElement("input", __assign({}, props.inputProps, { disabled: props.disabled, required: props.required, id: "".concat(prefix, "_").concat(item.id), className: bem(bem.element('input'), 'custom-control-input', !!props.errors && 'is-invalid'), checked: props.selectedIds.includes(item.id), onChange: function () { return props.onItemSelect(item.id); }, onMouseOver: function () { return props.onItemHover(item.id); } })),
48
- React.createElement("label", { className: bem(bem.element('label'), 'custom-control-label'), htmlFor: "".concat(prefix, "_").concat(item.id) },
49
- React.createElement("span", { className: bem.element('label-text', { required: props.required }) }, item.label)))); })));
36
+ return (React.createElement("div", { className: bem(bem.block((_a = {},
37
+ _a["".concat(props.orientation)] = !!props.orientation,
38
+ _a))) }, props.items.map(function (checkbox, checkboxIndex) { return props.renderCheckbox({
39
+ inputProps: {
40
+ name: "".concat(prefix, "_").concat(checkbox.id),
41
+ checked: null,
42
+ type: 'checkbox',
43
+ disabled: false,
44
+ onChange: function () {
45
+ props.onItemSelect(checkbox.id);
46
+ }
47
+ },
48
+ disabled: props.disabled,
49
+ checked: props.selectedIds.includes(checkbox.id),
50
+ label: checkbox.label,
51
+ id: "".concat(prefix, "_").concat(checkbox.id),
52
+ key: checkboxIndex
53
+ }); })));
50
54
  }
51
55
  exports["default"] = CheckboxListFieldView;
@@ -1,47 +1,13 @@
1
1
  .CheckboxListFieldView {
2
- &__label {
3
- &-text {
4
- &_required:after {
5
- display: inline-block;
6
- content: '*';
7
- color: $danger;
8
- margin: 0 0 0 3px;
9
- }
10
- }
11
- }
12
-
13
- .custom-control-label {
14
- &::before, &::after {
15
- border-color: $border-default;
16
- top: 0;
17
- }
18
- }
2
+ display: flex;
19
3
 
20
- .custom-control-input {
21
- &:checked ~ .custom-control-label {
22
- &::before {
23
- border-color: $primary;
24
- background: $primary;
25
- }
26
- &:hover {
27
- &::before {
28
- background: $primary-dark;
29
- }
30
- }
31
- &:active {
32
- &::before {
33
- background: $primary-light;
34
- }
35
- }
4
+ &_vertical {
5
+ flex-flow: column wrap;
6
+ row-gap: 8px;
36
7
  }
37
- &:disabled ~ .custom-control-label {
38
- color: $border-default;
39
8
 
40
- &::before {
41
- border: unset;
42
- background-color: $back-disabled;
43
- }
9
+ &_horizontal {
10
+ flex-flow: row nowrap;
11
+ column-gap: 8px;
44
12
  }
45
- }
46
-
47
13
  }
@@ -41,19 +41,7 @@ var React = __importStar(require("react"));
41
41
  var react_1 = require("react");
42
42
  var hooks_1 = require("@steroidsjs/core/hooks");
43
43
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
44
- var content_1 = require("@steroidsjs/core/ui/content");
45
- var DropDownItem_1 = __importDefault(require("./views/DropDownItem"));
46
- var getSelectedItemsLabel = function (selectedItems) { return (selectedItems
47
- .map(function (selectedItem) { return selectedItem.label; })
48
- .join(', ')); };
49
- var getSelectedItemsCount = function (selectedItems) {
50
- var _a;
51
- if (selectedItems.length <= 1) {
52
- return (_a = selectedItems[0]) === null || _a === void 0 ? void 0 : _a.label;
53
- }
54
- return "".concat(__('Выбрано'), " (").concat(selectedItems.length, ")");
55
- };
56
- var toDropDownItem = function (props) { return function (item, itemIndex) { return (React.createElement(DropDownItem_1["default"], __assign({}, props, { key: itemIndex, item: item }))); }; };
44
+ var utils_1 = require("./utils");
57
45
  function DropDownFieldView(props) {
58
46
  var _a;
59
47
  var bem = (0, hooks_1.useBem)('DropDownFieldView');
@@ -70,9 +58,6 @@ function DropDownFieldView(props) {
70
58
  ? (React.createElement("div", { className: bem.element('placeholder') }, props.placeholder))
71
59
  : null;
72
60
  }, [bem, props.placeholder, props.selectedIds]);
73
- var renderItems = React.useCallback(function () { return props.groupAttribute
74
- ? (React.createElement(content_1.Accordion, null, props.items.map(toDropDownItem(props))))
75
- : (React.createElement(React.Fragment, null, props.items.map(toDropDownItem(props)))); }, [props]);
76
61
  return (React.createElement("div", { ref: props.forwardedRef, className: bem(bem.block((_a = {
77
62
  size: props.size
78
63
  },
@@ -86,8 +71,8 @@ function DropDownFieldView(props) {
86
71
  }), onClick: props.onOpen, tabIndex: -1, role: 'button' },
87
72
  renderPlaceholder(),
88
73
  React.createElement("span", { className: bem.element('selected-items') }, props.showEllipses
89
- ? getSelectedItemsLabel(props.selectedItems)
90
- : getSelectedItemsCount(props.selectedItems))),
74
+ ? (0, utils_1.getSelectedItemsLabel)(props.selectedItems)
75
+ : (0, utils_1.getSelectedItemsCount)(props.selectedItems))),
91
76
  props.showReset && props.selectedIds.length > 0 && (React.createElement(Icon_1["default"], { name: "field-close", className: bem.element('icon-close'), tabIndex: -1, onClick: props.onReset, "aria-label": __('Сбросить') })),
92
77
  React.createElement(Icon_1["default"], { name: 'accordion-chevron', className: bem.element('icon-chevron'), tabIndex: -1, onClick: props.onOpen }),
93
78
  props.isOpened && (React.createElement("div", { className: bem.element('drop-down') },
@@ -96,6 +81,6 @@ function DropDownFieldView(props) {
96
81
  }) },
97
82
  React.createElement(Icon_1["default"], { name: 'search', className: bem.element('search-icon') }),
98
83
  React.createElement("input", __assign({}, props.searchInputProps, { ref: inputRef, onChange: function (e) { return props.searchInputProps.onChange(e.target.value); }, className: bem(bem.element('search-input'), props.searchInputProps.className) })))),
99
- React.createElement("div", { className: bem.element('drop-down-list') }, renderItems())))));
84
+ React.createElement("div", { className: bem.element('drop-down-list') }, props.items.map(function (item) { return props.renderItem(item); }))))));
100
85
  }
101
86
  exports["default"] = DropDownFieldView;
@@ -12,6 +12,9 @@
12
12
  --search-color: #626262;
13
13
  --search-background-color: #f5f8fa;
14
14
  --search-hover-background-color: #eef1f2;
15
+
16
+ --drop-down-item-hover-background-color: #f5f8fa;
17
+ --drop-down-item-select-background-color: #eef1f2;
15
18
  }
16
19
 
17
20
  html[data-theme="dark"] {
@@ -28,6 +31,9 @@ html[data-theme="dark"] {
28
31
  --search-color: #adacac;
29
32
  --search-background-color: #4e4f57;
30
33
  --search-hover-background-color: #5b5c6b;
34
+
35
+ --drop-down-item-select-background-color: #5b5c6b;
36
+ --drop-down-item-hover-background-color: #4e4f57;
31
37
  }
32
38
 
33
39
  $basic-color: var(--basic-color);
@@ -44,6 +50,9 @@ $search-color: var(--search-color);
44
50
  $search-background-color: var(--search-background-color);
45
51
  $search-hover-background-color: var(--search-hover-background-color);
46
52
 
53
+ $drop-down-item-select-background-color: var(--drop-down-item-select-background-color);
54
+ $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-color);
55
+
47
56
  $drop-down-color-themes: () !default;
48
57
  $drop-down-color-themes: map-merge(
49
58
  (
@@ -183,7 +192,7 @@ $drop-down-color-themes: map-merge(
183
192
  $root: &;
184
193
 
185
194
  position: relative;
186
- width: 240px;
195
+ min-width: 240px;
187
196
  outline: none;
188
197
  cursor: pointer;
189
198
 
@@ -207,10 +216,8 @@ $drop-down-color-themes: map-merge(
207
216
  "lg": (
208
217
  "border-radius": $radius-large,
209
218
  "height": $input-height-lg,
210
- "beforeTransform": translateX(-1.6%) translateY(-6.5%),
219
+ "beforeTransform": translateX(-4px) translateY(-4px),
211
220
  "beforeRadius": 16px,
212
- "afterTransform": translateX(-0.75%) translateY(-1.75%),
213
- "afterRadius": 14px,
214
221
  "selectedItemsPadding": 16px,
215
222
  "font-size": $font-size-lg,
216
223
  "line-height": 24px,
@@ -218,10 +225,8 @@ $drop-down-color-themes: map-merge(
218
225
  "md": (
219
226
  "border-radius": $radius-large,
220
227
  "height": $input-height-md,
221
- "beforeTransform": translateX(-1.6%) translateY(-7.5%),
228
+ "beforeTransform": translateX(-4px) translateY(-4px),
222
229
  "beforeRadius": 16px,
223
- "afterTransform": translateX(-0.75%) translateY(-2%),
224
- "afterRadius": 14px,
225
230
  "selectedItemsPadding": 12px,
226
231
  "font-size": $font-size-base,
227
232
  "line-height": 22px,
@@ -229,10 +234,8 @@ $drop-down-color-themes: map-merge(
229
234
  "sm": (
230
235
  "border-radius": $radius-small,
231
236
  "height": $input-height-sm,
232
- "beforeTransform": translateX(-1.6%) translateY(-9.5%),
237
+ "beforeTransform": translateX(-4px) translateY(-4px),
233
238
  "beforeRadius": 12px,
234
- "afterTransform": translateX(-0.6%) translateY(-2.5%),
235
- "afterRadius": 10px,
236
239
  "selectedItemsPadding": 8px,
237
240
  "font-size": $font-size-sm,
238
241
  "line-height": 18px,
@@ -252,11 +255,6 @@ $drop-down-color-themes: map-merge(
252
255
  border-radius: map-get($sizeMap, beforeRadius);
253
256
  }
254
257
 
255
- &::after {
256
- transform: map-get($sizeMap, afterTransform);
257
- border-radius: map-get($sizeMap, afterRadius);
258
- }
259
-
260
258
  #{$root}__selected-items {
261
259
  padding-top: map-get($sizeMap, selectedItemsPadding);
262
260
  padding-bottom: map-get($sizeMap, selectedItemsPadding);
@@ -432,4 +430,4 @@ $drop-down-color-themes: map-merge(
432
430
  right: 36px;
433
431
  transform: translateY(-50%);
434
432
  }
435
- }
433
+ }
@@ -0,0 +1,2 @@
1
+ export declare const getSelectedItemsLabel: (selectedItems: Record<string, any>[]) => string;
2
+ export declare const getSelectedItemsCount: (selectedItems: Record<string, any>) => any;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.getSelectedItemsCount = exports.getSelectedItemsLabel = void 0;
4
+ var getSelectedItemsLabel = function (selectedItems) { return (selectedItems
5
+ .map(function (selectedItem) { return selectedItem.label; })
6
+ .join(', ')); };
7
+ exports.getSelectedItemsLabel = getSelectedItemsLabel;
8
+ var getSelectedItemsCount = function (selectedItems) {
9
+ var _a;
10
+ if (selectedItems.length <= 1) {
11
+ return (_a = selectedItems[0]) === null || _a === void 0 ? void 0 : _a.label;
12
+ }
13
+ return "".concat(__('Выбрано'), " (").concat(selectedItems.length, ")");
14
+ };
15
+ exports.getSelectedItemsCount = getSelectedItemsCount;
@@ -0,0 +1,2 @@
1
+ import { IDropDownFieldItemViewProps } from '@steroidsjs/core/ui/form/DropDownField/DropDownField';
2
+ export default function DropDownItemView(props: IDropDownFieldItemViewProps): JSX.Element;
@@ -0,0 +1,78 @@
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 useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
19
+ var DropDownField_1 = require("@steroidsjs/core/ui/form/DropDownField/DropDownField");
20
+ var renderIcon_1 = __importDefault(require("../../utils/renderIcon"));
21
+ var AccordionItemView_1 = __importDefault(require("../../content/Accordion/AccordionItemView"));
22
+ var CheckboxFieldView_1 = __importDefault(require("../CheckboxField/CheckboxFieldView"));
23
+ var RadioFieldView_1 = __importDefault(require("../RadioField/RadioFieldView"));
24
+ function DropDownItemView(props) {
25
+ var _a;
26
+ var bem = (0, useBem_1["default"])('DropDownItemView');
27
+ var commonProps = {
28
+ className: bem.element('option', {
29
+ hover: props.hoveredId === props.item[props.primaryKey],
30
+ select: props.selectedIds.includes(props.item[props.primaryKey]),
31
+ size: props.size
32
+ }),
33
+ onFocus: function () { return props.onItemHover(props.item[props.primaryKey]); },
34
+ onMouseOver: function () { return props.onItemHover(props.item[props.primaryKey]); },
35
+ onClick: function (e) {
36
+ e.preventDefault();
37
+ props.onItemSelect(props.item[props.primaryKey]);
38
+ }
39
+ };
40
+ switch (props.type) {
41
+ case DropDownField_1.GROUP_CONTENT_TYPE:
42
+ return (react_1["default"].createElement(AccordionItemView_1["default"], { isShowMore: props.isShowMore, childIndex: props.childIndex, toggleCollapse: props.toggleCollapse, toggleAccordion: function () { }, showIcon: true, title: props.item.label, position: "middle", key: props.item[props.primaryKey], className: bem.element('group', {
43
+ size: props.size
44
+ }) }, (_a = props.item[props.groupAttribute]) === null || _a === void 0 ? void 0 : _a.map(function (subItem, itemIndex) { return (react_1["default"].createElement(DropDownItemView, __assign({}, props, { type: subItem.type ? subItem.type : props.itemsContent.type, key: itemIndex, item: subItem }))); })));
45
+ case DropDownField_1.ICON_CONTENT_TYPE:
46
+ return (react_1["default"].createElement("div", __assign({}, commonProps, { key: props.item[props.primaryKey] }),
47
+ (0, renderIcon_1["default"])(props.item.contentSrc, { className: bem.element('icon') }),
48
+ react_1["default"].createElement("span", null, props.item.label)));
49
+ case DropDownField_1.CHECKBOX_CONTENT_TYPE:
50
+ return (react_1["default"].createElement("div", __assign({}, commonProps, { key: props.item[props.primaryKey] }),
51
+ react_1["default"].createElement(CheckboxFieldView_1["default"], { label: props.item.label, className: bem.element('checkbox'), size: props.size, inputProps: {
52
+ disabled: false,
53
+ name: props.item.label,
54
+ checked: false,
55
+ onChange: function () { },
56
+ type: 'checkbox'
57
+ }, checked: props.selectedIds.includes(props.item[props.primaryKey]) })));
58
+ case DropDownField_1.RADIO_CONTENT_TYPE:
59
+ return (react_1["default"].createElement("div", __assign({}, commonProps, { key: props.item[props.primaryKey] }),
60
+ react_1["default"].createElement(RadioFieldView_1["default"], { label: props.item.label, className: bem.element('radio', {
61
+ size: props.size
62
+ }), size: props.size, inputProps: {
63
+ disabled: false,
64
+ name: props.item.label,
65
+ checked: null,
66
+ onChange: function () { },
67
+ type: 'radio'
68
+ }, checked: props.selectedIds.includes(props.item[props.primaryKey]) })));
69
+ case DropDownField_1.IMG_CONTENT_TYPE:
70
+ return (react_1["default"].createElement("div", __assign({}, commonProps, { key: props.item[props.primaryKey] }),
71
+ react_1["default"].createElement("span", { className: bem.element('img') },
72
+ react_1["default"].createElement("img", { src: props.item.contentSrc, alt: "custom source for item" })),
73
+ react_1["default"].createElement("span", null, props.item.label)));
74
+ default:
75
+ return (react_1["default"].createElement("div", __assign({}, commonProps, { key: props.item[props.primaryKey] }), props.item.label));
76
+ }
77
+ }
78
+ exports["default"] = DropDownItemView;
@@ -1,4 +1,3 @@
1
- @import "style/variables";
2
1
 
3
2
  :root {
4
3
  --drop-down-item-hover-background-color: #f5f8fa;
@@ -108,26 +107,26 @@ $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-co
108
107
  right: 0;
109
108
  }
110
109
 
111
- .RadioListFieldView__ellipse {
110
+ .RadioFieldView__label .RadioFieldView__ellipse {
112
111
  left: auto;
113
112
  }
114
113
 
115
114
  &_size {
116
115
  &_lg {
117
116
  span {
118
- right: 6px;
117
+ right: 13.5px;
119
118
  }
120
119
  }
121
120
 
122
121
  &_md {
123
122
  span {
124
- right: 5px;
123
+ right: 12.5px;
125
124
  }
126
125
  }
127
126
 
128
127
  &_sm {
129
128
  span {
130
- right: 4px;
129
+ right: 11.5px;
131
130
  }
132
131
  }
133
132
  }
@@ -40,14 +40,9 @@ exports.__esModule = true;
40
40
  var React = __importStar(require("react"));
41
41
  var hooks_1 = require("@steroidsjs/core/hooks");
42
42
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
43
+ var renderIcon_1 = __importDefault(require("../../utils/renderIcon"));
43
44
  function InputFieldView(props) {
44
45
  var bem = (0, hooks_1.useBem)('InputFieldView');
45
- var renderLeadIcon = React.useCallback(function () {
46
- var className = bem.element('lead-icon');
47
- return typeof props.leadIcon === 'string'
48
- ? (React.createElement(Icon_1["default"], { name: props.leadIcon, className: className, tabIndex: -1 }))
49
- : React.createElement("span", { className: className }, props.leadIcon);
50
- }, [bem, props.leadIcon]);
51
46
  return (React.createElement("div", { className: bem(bem.block({
52
47
  disabled: props.inputProps.disabled,
53
48
  size: props.size,
@@ -65,7 +60,10 @@ function InputFieldView(props) {
65
60
  props.addonBefore && (React.createElement("span", { className: bem.element('addon-before') }, props.addonBefore)),
66
61
  props.textBefore && (React.createElement("span", { className: bem.element('text-before') }, props.textBefore)),
67
62
  React.createElement("div", { className: bem.element('input-wrapper') },
68
- props.leadIcon && renderLeadIcon(),
63
+ props.leadIcon && (0, renderIcon_1["default"])(props.leadIcon, {
64
+ className: bem.element('lead-icon'),
65
+ tabIndex: -1
66
+ }),
69
67
  props.maskProps
70
68
  ? (React.createElement("input", __assign({ onBlur: props.onBlur, onFocus: props.onFocus, onMouseDown: props.onMouseDown, className: bem(bem.element('input', {
71
69
  size: props.size
@@ -0,0 +1,3 @@
1
+ import { IBemHocOutput } from '@steroidsjs/core/hoc/bem';
2
+ import { IRadioFieldViewProps } from '@steroidsjs/core/ui/form/RadioField/RadioField';
3
+ export default function RadioFieldView(props: IRadioFieldViewProps & IBemHocOutput): JSX.Element;