@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
@@ -25,12 +25,41 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  exports.__esModule = true;
26
26
  var React = __importStar(require("react"));
27
27
  var hooks_1 = require("@steroidsjs/core/hooks");
28
+ var content_1 = require("@steroidsjs/core/ui/content");
28
29
  function PaginationButtonView(props) {
29
30
  var bem = (0, hooks_1.useBem)('PaginationButtonView');
30
- return (React.createElement("ul", { className: bem(props.className, bem.block(), 'flex-row', 'pagination', "pagination-".concat(props.size)) }, props.pages.map(function (item, index) { return (React.createElement("li", { key: index, className: bem(bem.element('page', { hidden: !item.page }), 'page-item', item.isActive ? 'active' : '') },
31
- React.createElement("button", { className: bem(bem.element('page-link', { hidden: !item.page }), 'page-link'), onClick: function (e) {
32
- e.preventDefault();
33
- props.onSelect(item.page);
34
- } }, item.label))); })));
31
+ var renderArrowStep = React.useCallback(function (onClick, iconName, rotate, rounding, disabledStatement) {
32
+ if (rotate === void 0) { rotate = false; }
33
+ return (React.createElement("li", { className: bem.element('page', {
34
+ 'rounding-left': rounding.left,
35
+ 'rounding-right': rounding.right,
36
+ hasIcon: true,
37
+ disabled: disabledStatement
38
+ }) },
39
+ React.createElement("button", { className: bem.element('page-button', {
40
+ hasIcon: true
41
+ }), onClick: function () { return onClick(); } },
42
+ React.createElement(content_1.Icon, { tabIndex: -1, className: bem.element('page-icon', {
43
+ rotate: rotate
44
+ }), name: iconName }))));
45
+ }, [bem]);
46
+ return (React.createElement("ul", { className: bem(bem.block({
47
+ size: props.size
48
+ }), props.className) },
49
+ props.showEdgeSteps
50
+ && renderArrowStep(props.onSelectFirst, 'double-arrow-left', false, { left: true }, props.isFirstPage),
51
+ props.showSteps
52
+ && renderArrowStep(props.onSelectPrev, 'arrow-left', false, {}, props.isFirstPage),
53
+ props.pages.map(function (item, index) { return (React.createElement("li", { key: index, className: bem.element('page', {
54
+ hidden: !item.page,
55
+ active: item.isActive
56
+ }) },
57
+ React.createElement("button", { className: bem.element('page-button', {
58
+ hidden: !item.page
59
+ }), onClick: function () { return props.onSelect(item.page); } }, item.label))); }),
60
+ props.showSteps
61
+ && renderArrowStep(props.onSelectNext, 'arrow-left', true, {}, props.isLastPage),
62
+ props.showEdgeSteps
63
+ && renderArrowStep(props.onSelectFirst, 'double-arrow-left', true, { right: true }, props.isLastPage)));
35
64
  }
36
65
  exports["default"] = PaginationButtonView;
@@ -1,2 +1,259 @@
1
+ :root {
2
+ --pagination-hover-color: #e5e9eb;
3
+ --pagination-hover-background-color: #ffffff;
4
+ --pagination-arrow-color: #323232;
5
+ --pagination-focus-color: #f5f8fa;
6
+ --pagination-disabled-background-color: #eef1f2;
7
+ --pagination-disabled-color: rgba(0, 0, 0, 0.1);
8
+ }
9
+
10
+ html[data-theme="dark"] {
11
+ --pagination-hover-color: #5b5c6b;
12
+ --pagination-hover-background-color: #5b5c6b;
13
+ --pagination-arrow-color: #ffffff;
14
+ --pagination-focus-color: #adaab3;
15
+ --pagination-disabled-background-color: #5b5c6b;
16
+ --pagination-disabled-color: rgba(255, 255, 255, 0.1);
17
+ }
18
+
19
+ $pagination-hover-color: var(--pagination-hover-color);
20
+ $pagination-hover-background-color: var(--pagination-hover-background-color);
21
+ $pagination-arrow-color: var(--pagination-arrow-color);
22
+ $pagination-focus-color: var(--pagination-focus-color);
23
+ $pagination-disabled-background-color: var(--pagination-disabled-background-color);
24
+ $pagination-disabled-color: var(--pagination-disabled-color);
25
+
1
26
  .PaginationButtonView {
2
- }
27
+ $root: &;
28
+
29
+ display: flex;
30
+ flex-flow: row nowrap;
31
+ color: $text-color;
32
+
33
+ &_size {
34
+ &_lg {
35
+ #{$root}__page {
36
+ &-button {
37
+ padding: 12px 18px;
38
+ font-size: $font-size-lg;
39
+ line-height: 24px;
40
+
41
+ &_hasIcon {
42
+ padding: 12px;
43
+ }
44
+ }
45
+
46
+ &_rounding-left {
47
+ border-top-left-radius: 12px;
48
+ border-bottom-left-radius: 12px;
49
+
50
+ &::before {
51
+ border-top-left-radius: 14px;
52
+ border-bottom-left-radius: 14px;
53
+ }
54
+ }
55
+
56
+ &_rounding-right {
57
+ border-top-right-radius: 12px;
58
+ border-bottom-right-radius: 12px;
59
+
60
+ &::before {
61
+ border-top-right-radius: 14px;
62
+ border-bottom-right-radius: 14px;
63
+ }
64
+ }
65
+
66
+ &::before {
67
+ transform: translate(-4px, -4px);
68
+ }
69
+ }
70
+ }
71
+ &_md {
72
+ #{$root}__page {
73
+ &-button {
74
+ padding: 8px 14px;
75
+ font-size: $font-size-base;
76
+ line-height: 24px;
77
+
78
+ &_hasIcon {
79
+ padding: 8px 11px;
80
+ }
81
+ }
82
+
83
+ &_rounding-left {
84
+ border-top-left-radius: 12px;
85
+ border-bottom-left-radius: 12px;
86
+
87
+ &::before {
88
+ border-top-left-radius: 14px;
89
+ border-bottom-left-radius: 14px;
90
+ }
91
+ }
92
+
93
+ &_rounding-right {
94
+ border-top-right-radius: 12px;
95
+ border-bottom-right-radius: 12px;
96
+
97
+ &::before {
98
+ border-top-right-radius: 14px;
99
+ border-bottom-right-radius: 14px;
100
+ }
101
+ }
102
+
103
+ &::before {
104
+ transform: translate(-4px, -4px);
105
+ }
106
+ }
107
+ }
108
+ &_sm {
109
+ #{$root}__page {
110
+ &-button {
111
+ padding: 4px 12px;
112
+ font-size: $font-size-sm;
113
+ line-height: 25px;
114
+
115
+ &_hasIcon {
116
+ padding: 4px 7px;
117
+ }
118
+ }
119
+
120
+ &_rounding-left {
121
+ border-top-left-radius: 8px;
122
+ border-bottom-left-radius: 8px;
123
+
124
+ &::before {
125
+ border-top-left-radius: 10px;
126
+ border-bottom-left-radius: 10px;
127
+ }
128
+ }
129
+
130
+ &_rounding-right {
131
+ border-top-right-radius: 8px;
132
+ border-bottom-right-radius: 8px;
133
+
134
+ &::before {
135
+ border-top-right-radius: 10px;
136
+ border-bottom-right-radius: 10px;
137
+ }
138
+ }
139
+
140
+ &::before {
141
+ transform: translate(-4px, -4px);
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ &__page {
148
+ position: relative;
149
+ $pageRoot: &;
150
+
151
+ display: inline-block;
152
+ cursor: pointer;
153
+
154
+ background-color: $element-background-color;
155
+ border: 1px solid $border-color;
156
+ border-right: none;
157
+
158
+ &::before {
159
+ position: absolute;
160
+ z-index: 2;
161
+ content: "";
162
+ top: 0;
163
+ left: 0;
164
+ width: 100%;
165
+ height: 100%;
166
+ pointer-events: none;
167
+ border-radius: inherit;
168
+ border: 4px solid $pagination-focus-color;
169
+ opacity: 0;
170
+ }
171
+
172
+ &:last-child {
173
+ border: 1px solid $border-color;
174
+ }
175
+
176
+ &_active {
177
+ background-color: $primary;
178
+ color: $white;
179
+ }
180
+
181
+ &_hasIcon:not(#{$pageRoot}_disabled):active {
182
+ background-color: $primary;
183
+
184
+ #{$pageRoot}-icon {
185
+ path {
186
+ stroke: #ffffff;
187
+ }
188
+ }
189
+ }
190
+
191
+ &:not(#{$pageRoot}_disabled):not(:active):hover {
192
+ border-color: $pagination-hover-color;
193
+ background-color: $pagination-hover-background-color;
194
+ }
195
+
196
+ &:not(#{$pageRoot}_disabled):focus-within::before {
197
+ opacity: 1;
198
+ }
199
+
200
+ &_rounding {
201
+ &-left {
202
+ border-top-left-radius: 10px;
203
+ border-bottom-left-radius: 10px;
204
+ }
205
+
206
+ &-right {
207
+ border-top-right-radius: 10px;
208
+ border-bottom-right-radius: 10px;
209
+ }
210
+ }
211
+
212
+ &-button {
213
+ cursor: pointer;
214
+ width: 100%;
215
+ height: 100%;
216
+ border: none;
217
+ background: none;
218
+ color: inherit;
219
+ user-select: none;
220
+ outline: none;
221
+ }
222
+
223
+ &-icon {
224
+ display: inline-block;
225
+ width: 24px;
226
+ height: 24px;
227
+ pointer-events: none;
228
+
229
+ display: flex;
230
+ justify-content: center;
231
+ align-items: center;
232
+
233
+ path {
234
+ stroke: $pagination-arrow-color;
235
+ }
236
+
237
+ &_rotate {
238
+ transform: rotate(180deg);
239
+ }
240
+ }
241
+
242
+ &_disabled {
243
+ background-color: $pagination-disabled-background-color;
244
+ color: $pagination-disabled-color;
245
+ cursor: not-allowed;
246
+
247
+ button {
248
+ cursor: not-allowed;
249
+ }
250
+
251
+ #{$pageRoot}-icon {
252
+ pointer-events: none;
253
+ path {
254
+ stroke: $pagination-disabled-color;
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
@@ -42,7 +42,7 @@ var Button_1 = __importDefault(require("@steroidsjs/core/ui/form/Button"));
42
42
  var hooks_1 = require("@steroidsjs/core/hooks");
43
43
  function PaginationMoreView(props) {
44
44
  var bem = (0, hooks_1.useBem)('PaginationMoreView');
45
- return (React.createElement("div", { className: bem('text-center', bem.block(), props.className) },
45
+ return (React.createElement("div", { className: bem(bem.block(), props.className) },
46
46
  React.createElement(Button_1["default"], __assign({ color: 'secondary', outline: true, label: __('Загрузить еще...') }, props.buttonProps, { onClick: props.onSelectNext }))));
47
47
  }
48
48
  exports["default"] = PaginationMoreView;
@@ -1,2 +1,5 @@
1
1
  .PaginationMoreView {
2
- }
2
+ display: flex;
3
+ justify-content: center;
4
+ align-items: center;
5
+ }
@@ -29,14 +29,22 @@ exports.__esModule = true;
29
29
  var React = __importStar(require("react"));
30
30
  var Link_1 = __importDefault(require("@steroidsjs/core/ui/nav/Link"));
31
31
  var hooks_1 = require("@steroidsjs/core/hooks");
32
+ var content_1 = require("@steroidsjs/core/ui/content");
33
+ var renderIcon_1 = __importDefault(require("../../utils/renderIcon"));
32
34
  function BreadcrumbsView(props) {
33
35
  var bem = (0, hooks_1.useBem)('BreadcrumbsView');
34
36
  var items = props.items || [];
37
+ var renderLink = React.useCallback(function (item, children) { return (React.createElement(Link_1["default"], { toRoute: item.id, toRouteParams: props.routeParams, href: item.id }, children)); }, [props.routeParams]);
38
+ var renderHomeIcon = React.useCallback(function () { return (props.customIcon
39
+ ? (0, renderIcon_1["default"])(props.customIcon, { className: bem.element('custom-icon') })
40
+ : (React.createElement(content_1.Icon, { name: 'home', className: bem.element('icon') }))); }, [bem, props.customIcon]);
35
41
  return (React.createElement("nav", { className: bem(bem.block(), props.className), "aria-label": 'breadcrumb' },
36
42
  React.createElement("ol", { className: bem.element('list') }, items.map(function (item, index) {
37
43
  var isLastItem = items.length === index + 1;
44
+ var isFirstItem = index === 0;
38
45
  return (React.createElement("li", { key: item.id || index, className: bem.element('item') },
39
- !isLastItem && item.id && (React.createElement(Link_1["default"], { toRoute: item.id, toRouteParams: props.routeParams, href: item.id }, item.title)),
46
+ isFirstItem && item.id && renderLink(item, props.showIcon ? renderHomeIcon() : item.title),
47
+ !isFirstItem && !isLastItem && item.id && renderLink(item, item.title),
40
48
  (isLastItem || !item.id) && (React.createElement("span", null, props.pageTitle || item.title))));
41
49
  }))));
42
50
  }
@@ -1,6 +1,38 @@
1
+
2
+
3
+ :root {
4
+ --last-link-color: rgba(0, 0, 0, 0.3);;
5
+ }
6
+
7
+ html[data-theme="dark"] {
8
+ --last-link-color: rgba(255, 255, 255, 0.3);
9
+ }
10
+
11
+ $last-link-color: var(--last-link-color);
12
+
1
13
  .BreadcrumbsView {
2
14
  $breadcrumb-item-separator: '/';
3
15
 
16
+ &__custom-icon {
17
+ display: flex;
18
+ }
19
+
20
+ &__icon {
21
+ display: flex;
22
+
23
+ svg {
24
+ stroke: $link-color;
25
+ }
26
+
27
+ svg:hover {
28
+ stroke: $link-color-hover;
29
+ }
30
+
31
+ svg path {
32
+ stroke:inherit;
33
+ }
34
+ }
35
+
4
36
  &__list {
5
37
  display: flex;
6
38
  flex-wrap: wrap;
@@ -8,11 +40,30 @@
8
40
  padding: 0;
9
41
  }
10
42
 
43
+ &__list {
44
+ li:last-child span{
45
+ color: $last-link-color;
46
+ }
47
+ }
48
+
11
49
  &__item {
50
+ display: flex;
51
+ align-items: center;
52
+
12
53
  &:not(:first-child)::before {
13
54
  content: $breadcrumb-item-separator;
14
55
  display: inline-block;
15
56
  margin: 0 8px;
57
+ color: $link-color;
58
+ }
59
+
60
+ span {
61
+ line-height: 24px;
62
+ font-size: 14px;
63
+ }
64
+
65
+ span:hover {
66
+ color: $link-color-hover;
16
67
  }
17
68
  }
18
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/bootstrap",
3
- "version": "3.0.0-beta.35",
3
+ "version": "3.0.0-beta.37",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
@@ -35,7 +35,7 @@
35
35
  "react-use": "^17.4.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@steroidsjs/core": "^3.0 || >=3.0.0-beta.15",
38
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.16",
39
39
  "@steroidsjs/eslint-config": "^2.1.4",
40
40
  "@types/enzyme": "^3.10.8",
41
41
  "@types/googlemaps": "^3.43.3",
@@ -53,6 +53,6 @@
53
53
  "typescript": "^4.9.5"
54
54
  },
55
55
  "peerDependencies": {
56
- "@steroidsjs/core": "^3.0 || >=3.0.0-beta.15"
56
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.16"
57
57
  }
58
58
  }
@@ -2,17 +2,22 @@
2
2
  background-color: map-get($colorMap, color);
3
3
  color: map-get($colorMap, text-color);
4
4
 
5
- &:not(:disabled):hover {
5
+ &:hover {
6
6
  background-color: map-get($colorMap, color-dark);
7
7
  }
8
- &:not(:disabled):focus,
9
- &:not(:disabled):focus-visible {
8
+ &:focus,
9
+ &:focus-visible {
10
10
  border: 4px solid map-get($colorMap, color-light);
11
11
  }
12
- &:not(:disabled):active {
12
+ &:active {
13
13
  background-color: map-get($colorMap, color-light);
14
14
  }
15
15
 
16
+ &:disabled {
17
+ background-color: map-get($colorMap, color);
18
+ color: map-get($colorMap, text-color);
19
+ }
20
+
16
21
  #{$root}__loader {
17
22
  svg {
18
23
  path {
@@ -31,20 +36,26 @@
31
36
  color: map-get($colorMap, color);
32
37
  border: 1px solid map-get($colorMap, color);
33
38
 
34
- &:not(:disabled):hover {
39
+ &:hover {
35
40
  color: map-get($colorMap, color-dark);
36
41
  border-color: map-get($colorMap, color-dark);
37
42
  }
38
- &:not(:disabled):focus {
43
+ &:focus {
39
44
  box-shadow: 0 0 0 4px map-get($colorMap, color-light), 0 0 0 4px map-get($colorMap, color-light);
40
45
  border: none;
41
46
  }
42
- &:not(:disabled):active {
47
+ &:active {
43
48
  color: map-get($colorMap, color-light);
44
49
  border-color: map-get($colorMap, color-light);
45
50
  box-shadow: none;
46
51
  }
47
52
 
53
+ &:disabled {
54
+ background-color: transparent;
55
+ color: map-get($colorMap, color);
56
+ border: 1px solid map-get($colorMap, color);
57
+ }
58
+
48
59
  @if ($colorName == "basic") {
49
60
  color: $text-color;
50
61
  }
@@ -18,19 +18,19 @@
18
18
  --warning-dark: #ebd251;
19
19
  --warning-light: #fff6c6;
20
20
  --graphite: #323232;
21
- --gray-dark: #e1e1e1;
22
- --gray: #ededed;
23
- --light-gray: #f8f8f8;
21
+ --gray-dark: #cbd5db;
22
+ --gray: #dbe2e6;
23
+ --light-gray: #f1f5f7;
24
24
  --dark: #6f6b76;
25
25
  --light: #9088a1;
26
26
  --text-color: #312c3a;
27
27
  --background-color: #fff;
28
28
  --is-dark: "false";
29
- --border-color: #eef1f2;
29
+ --border-color: #dbe2e6;
30
30
  --border-color-hover: #e5e9eb;
31
31
  --placeholder-color: rgba(0, 0, 0, 0.3);
32
32
  --placeholder-disabled-color: rgba(0, 0, 0, 0.3);
33
- --background-disabled-color: #eef1f2;
33
+ --background-disabled-color: #f1f5f7;
34
34
  --element-background-color: #FFFFFF;
35
35
  }
36
36
 
@@ -118,8 +118,13 @@ $black-30: rgba(#000, 0.3) !default;
118
118
  $black-10: rgba(#000, 0.1) !default;
119
119
  $black-4: rgba(#000, 0.04) !default;
120
120
  $white: #fff !default;
121
+ $white-60: rgba(#ffffff, 0.6) !default;
122
+ $white-30: rgba(#ffffff, 0.3) !default;
123
+ $white-10: rgba(#ffffff, 0.1) !default;
124
+ $white-4: rgba(#ffffff, 0.04) !default;
121
125
 
122
126
  $link-color: #2ba3fb !default;
127
+ $link-color-hover: #00c2ff !default;
123
128
 
124
129
  $gradient-blue: linear-gradient(180deg, #651fff, #ba9bff) !default;
125
130
 
@@ -6,6 +6,10 @@
6
6
  box-sizing: border-box;
7
7
  }
8
8
 
9
+ ul, li {
10
+ list-style-type: none;
11
+ }
12
+
9
13
  a {
10
14
  text-decoration: none;
11
15
  color: inherit;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { IIconProps } from '@steroidsjs/core/ui/content/Icon/Icon';
3
+ /**
4
+ * Функция которая проверяет соответствует ли typeof icon === 'string', если да - то вернет компонент Icon
5
+ * с переданным в него iconProps, если нет то вернется span с классом iconProps.className со вложенным {icon}
6
+ * @example renderIcon(props.leadIcon, {className: 'leadIcon', tabIndex: -1})
7
+ */
8
+ declare const renderIcon: (icon: string | React.ReactElement, iconProps: IIconProps) => JSX.Element;
9
+ export default renderIcon;
@@ -0,0 +1,27 @@
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
+ /* eslint-disable valid-typeof */
18
+ var react_1 = __importDefault(require("react"));
19
+ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon/Icon"));
20
+ /**
21
+ * Функция которая проверяет соответствует ли typeof icon === 'string', если да - то вернет компонент Icon
22
+ * с переданным в него iconProps, если нет то вернется span с классом iconProps.className со вложенным {icon}
23
+ * @example renderIcon(props.leadIcon, {className: 'leadIcon', tabIndex: -1})
24
+ */
25
+ var renderIcon = function (icon, iconProps) { return typeof icon === 'string'
26
+ ? (react_1["default"].createElement(Icon_1["default"], __assign({ name: icon }, iconProps))) : (react_1["default"].createElement("span", { className: iconProps.className }, icon)); };
27
+ exports["default"] = renderIcon;
@@ -1,3 +0,0 @@
1
- import { IDropDownItemViewProps } from '@steroidsjs/core/ui/form/DropDownField/DropDownField';
2
- import './DropDownItemView.scss';
3
- export default function DropDownItemView(props: IDropDownItemViewProps): JSX.Element;
@@ -1,80 +0,0 @@
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 Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
20
- var form_1 = require("@steroidsjs/core/ui/form");
21
- var content_1 = require("@steroidsjs/core/ui/content");
22
- require("./DropDownItemView.scss");
23
- var GROUP_CONTENT_TYPE = 'group';
24
- function DropDownItemView(props) {
25
- var bem = (0, useBem_1["default"])('DropDownItemView');
26
- var groupProps = props;
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
- var renderTypeCases = function (type, src) {
41
- switch (type) {
42
- case 'icon':
43
- return (react_1["default"].createElement("div", __assign({}, commonProps),
44
- typeof src === 'string' ? (react_1["default"].createElement(Icon_1["default"], { name: src, className: bem.element('icon') })) : (react_1["default"].createElement("span", { className: bem.element('icon') }, src)),
45
- react_1["default"].createElement("span", null, props.item.label)));
46
- case 'checkbox':
47
- return (react_1["default"].createElement("div", __assign({}, commonProps),
48
- react_1["default"].createElement(form_1.CheckboxField, { label: props.item.label, className: bem.element('checkbox'), size: props.size, inputProps: {
49
- checked: props.selectedIds.includes(props.item[props.primaryKey])
50
- } })));
51
- case 'img':
52
- return (react_1["default"].createElement("div", __assign({}, commonProps),
53
- react_1["default"].createElement("span", { className: bem.element('img') },
54
- react_1["default"].createElement("img", { src: src, alt: "custom source for item" })),
55
- react_1["default"].createElement("span", null, props.item.label)));
56
- case 'radio':
57
- return (react_1["default"].createElement("div", __assign({}, commonProps),
58
- react_1["default"].createElement(form_1.RadioListField, { items: [props.item], selectedIds: props.selectedIds, className: bem.element('radio', {
59
- size: props.size
60
- }), size: props.size })));
61
- case 'group':
62
- return (react_1["default"].createElement(content_1.AccordionItem, { childIndex: groupProps.childIndex, isShowMore: groupProps.isShowMore, toggleAccordion: groupProps.toggleAccordion, toggleCollapse: groupProps.toggleCollapse, title: props.item.label, position: "middle", className: bem.element('group', {
63
- size: props.size
64
- }) }, props.item[props.groupAttribute].map(function (subItem, itemIndex) { return (react_1["default"].createElement(DropDownItemView, __assign({}, props, { key: itemIndex, item: subItem }))); })));
65
- default:
66
- return null;
67
- }
68
- };
69
- if (props.groupAttribute && Array.isArray(props.item[props.groupAttribute])) {
70
- return renderTypeCases(GROUP_CONTENT_TYPE, props.item[props.groupAttribute]);
71
- }
72
- if (props.item.contentType) {
73
- return renderTypeCases(props.item.contentType, props.item.contentSrc);
74
- }
75
- if (props.itemsContent) {
76
- return renderTypeCases(props.itemsContent.type, props.itemsContent.src);
77
- }
78
- return (react_1["default"].createElement("div", __assign({}, commonProps), props.item.label));
79
- }
80
- exports["default"] = DropDownItemView;