@steroidsjs/bootstrap 2.1.3 → 2.1.6

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.
@@ -29,10 +29,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
29
  __setModuleDefault(result, mod);
30
30
  return result;
31
31
  };
32
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
33
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
34
+ to[j] = from[i];
35
+ return to;
36
+ };
32
37
  exports.__esModule = true;
33
38
  var React = __importStar(require("react"));
34
39
  var react_1 = require("react");
35
40
  var hooks_1 = require("@steroidsjs/core/hooks");
41
+ var useDataSelect_1 = require("@steroidsjs/core/hooks/useDataSelect");
36
42
  function DropDownFieldView(props) {
37
43
  var inputRef = react_1.useRef(null);
38
44
  // Auto focus on search
@@ -41,6 +47,22 @@ function DropDownFieldView(props) {
41
47
  inputRef.current.focus();
42
48
  }
43
49
  }, [props.isAutoComplete, props.isOpened, props.isSearchAutoFocus]);
50
+ var renderItem = function (item, level) {
51
+ if (level === void 0) { level = 0; }
52
+ if (props.groupAttribute && Array.isArray(item[props.groupAttribute])) {
53
+ return __spreadArray([
54
+ (React.createElement("div", { key: String(item[props.primaryKey]), className: bem.element('drop-down-item', 'group') }, item.label))
55
+ ], item[props.groupAttribute].map(function (subItem) { return renderItem(subItem, level + 1); }));
56
+ }
57
+ return (React.createElement("div", { key: String(item[props.primaryKey]), className: bem.element('drop-down-item', {
58
+ hover: props.hoveredId === item[props.primaryKey],
59
+ select: props.selectedIds.includes(item[props.primaryKey]),
60
+ level: level
61
+ }), onClick: function (e) {
62
+ e.preventDefault();
63
+ props.onItemSelect(item[props.primaryKey]);
64
+ }, onFocus: function () { return props.onItemHover(item[props.primaryKey]); }, onMouseOver: function () { return props.onItemHover(item[props.primaryKey]); } }, item.label));
65
+ };
44
66
  var bem = hooks_1.useBem('DropDownFieldView');
45
67
  return (React.createElement("div", { ref: props.forwardedRef, className: bem(bem.block({ size: props.size }), props.className), style: props.style },
46
68
  React.createElement("div", { className: bem.element('selected-items', {
@@ -48,11 +70,11 @@ function DropDownFieldView(props) {
48
70
  'no-border': props.noBorder,
49
71
  'is-invalid': !!props.errors,
50
72
  disabled: props.disabled
51
- }), onClick: props.onOpen, onKeyPress: props.onOpen, tabIndex: 0, role: 'button' }, props.multiple
52
- ? props.selectedIds
53
- .map(function (id) { return props.items.find(function (item) { return item[props.primaryKey] === id; }); })
54
- .filter(Boolean)
55
- .map(function (item) { return (React.createElement("span", { key: String(item.id), className: bem.element('selected-item-multiple') },
73
+ }), onClick: props.onOpen, onKeyPress: props.onOpen, tabIndex: 0, role: 'button' }, props.selectedIds
74
+ .map(function (id) { return useDataSelect_1.getLinearItems(props.items, props.groupAttribute).find(function (item) { return item[props.primaryKey] === id; }); })
75
+ .filter(Boolean)
76
+ .map(function (item) { return (props.multiple
77
+ ? (React.createElement("span", { key: String(item.id), className: bem.element('selected-item-multiple') },
56
78
  item.label,
57
79
  React.createElement("span", { className: bem.element('selected-item-multiple-remove'), onClick: function (e) {
58
80
  e.preventDefault();
@@ -64,21 +86,12 @@ function DropDownFieldView(props) {
64
86
  props.onItemRemove(item[props.primaryKey]);
65
87
  }, tabIndex: 0, role: 'button' },
66
88
  React.createElement("svg", { viewBox: "64 64 896 896", className: "", width: "1em", height: "1em" },
67
- React.createElement("path", { d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3\n 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4\n 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3\n 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }))))); })
68
- : props.selectedIds
69
- .map(function (id) { return props.items.find(function (item) { return item[props.primaryKey] === id; }); })
70
- .filter(Boolean)
71
- .map(function (item) { return (React.createElement("span", { key: item.id, className: bem.element('selected-item') }, item.label)); })),
89
+ React.createElement("path", { d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3\n 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4\n 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3\n 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" })))))
90
+ : (React.createElement("span", { key: item.id, className: bem.element('selected-item') }, item.label))); })),
72
91
  props.showReset && props.selectedIds.length > 0 && (React.createElement("button", { className: bem.element('reset'), onClick: props.onReset, "aria-label": __('Сбросить') })),
73
92
  props.isOpened && (React.createElement("div", { className: bem.element('drop-down') },
74
93
  props.isAutoComplete && (React.createElement("div", { className: bem.element('search') },
75
94
  React.createElement("input", __assign({}, props.searchInputProps, { ref: inputRef, onChange: function (e) { return props.searchInputProps.onChange(e.target.value); }, className: bem('form-control', 'form-control-' + props.size, bem.element('search-input'), props.searchInputProps.className) })))),
76
- React.createElement("div", { className: bem.element('drop-down-list') }, props.items.map(function (item) { return (React.createElement("button", { key: String(item[props.primaryKey]), type: 'button', className: bem.element('drop-down-item', {
77
- hover: props.hoveredId === item[props.primaryKey],
78
- select: props.selectedIds.includes(item[props.primaryKey])
79
- }), onClick: function (e) {
80
- e.preventDefault();
81
- props.onItemSelect(item[props.primaryKey]);
82
- }, onFocus: function () { return props.onItemHover(item[props.primaryKey]); }, onMouseOver: function () { return props.onItemHover(item[props.primaryKey]); } }, item.label)); }))))));
95
+ React.createElement("div", { className: bem.element('drop-down-list') }, props.items.map(function (item) { return renderItem(item); }))))));
83
96
  }
84
97
  exports["default"] = DropDownFieldView;
@@ -7,6 +7,7 @@
7
7
  &_size_sm {
8
8
  font-size: 0.7875rem;
9
9
  }
10
+
10
11
  &_size_lg {
11
12
  font-size: 1.25rem;
12
13
  }
@@ -73,12 +74,14 @@
73
74
  opacity: .5;
74
75
  }
75
76
  }
77
+
76
78
  &_size_sm &__selected-items {
77
79
  padding: 0.25rem 0.5rem;
78
80
  line-height: 1.5;
79
81
  border-radius: 0.2rem;
80
82
  height: 31px;
81
83
  }
84
+
82
85
  &_size_lg &__selected-items {
83
86
  padding: 0.5rem 1rem;
84
87
  line-height: 1.5;
@@ -86,7 +89,7 @@
86
89
  height: 48px;
87
90
  }
88
91
 
89
- &__selected-item-multiple{
92
+ &__selected-item-multiple {
90
93
  cursor: default;
91
94
  margin-right: 5px;
92
95
  padding: 0 4px 0 8px;
@@ -96,21 +99,22 @@
96
99
  border-radius: 2px;
97
100
  background: #f5f5f5;
98
101
  }
99
- &__selected-item-multiple-remove{
102
+
103
+ &__selected-item-multiple-remove {
100
104
  cursor: pointer;
101
105
  margin-left: 6px;
102
106
 
103
107
  display: flex;
104
108
  align-items: center;
105
109
 
106
- svg{
110
+ svg {
107
111
  width: 10px;
108
112
  opacity: .5;
109
113
  transition: opacity .1s ease-in;
110
114
  }
111
115
 
112
- &:hover{
113
- svg{
116
+ &:hover {
117
+ svg {
114
118
  opacity: 1;
115
119
  }
116
120
  }
@@ -126,8 +130,7 @@
126
130
  cursor: pointer;
127
131
 
128
132
  &::before,
129
- &::after
130
- {
133
+ &::after {
131
134
  display: block;
132
135
  position: absolute;
133
136
  top: 50%;
@@ -176,6 +179,7 @@
176
179
  width: 100%;
177
180
  }
178
181
  }
182
+
179
183
  &_size_sm &__search {
180
184
  padding: 0.1rem 0.2rem;
181
185
  }
@@ -189,6 +193,14 @@
189
193
  background-color: transparent;
190
194
  border: unset;
191
195
 
196
+ &_group {
197
+ font-weight: bold;
198
+ }
199
+
200
+ &_level_1 {
201
+ padding-left: 1.25rem
202
+ }
203
+
192
204
  &_hover {
193
205
  background-color: $dropdown-divider-bg;
194
206
  }
@@ -198,12 +210,15 @@
198
210
  color: #152536;
199
211
  }
200
212
  }
213
+
201
214
  &_size_sm &__drop-down-item {
202
215
  padding: 0.25rem 0.5rem;
203
216
  }
217
+
204
218
  &_size_lg &__drop-down-item {
205
219
  padding: 0.5rem 1rem;
206
220
  }
221
+
207
222
  &__placeholder {
208
223
  color: #fff;
209
224
  }
@@ -50,7 +50,7 @@ function NumberFieldView(props) {
50
50
  }), 'form-control', 'form-control-' + props.size, !!props.errors && 'is-invalid', props.className) },
51
51
  React.createElement("input", __assign({ ref: inputRef, className: bem(bem.element('input', {
52
52
  size: props.size
53
- }), !!props.errors && 'is-invalid') }, props.inputProps)),
53
+ }), !!props.errors && 'is-invalid') }, props.inputProps, { onChange: function (e) { return props.onChange(e.target.value); } })),
54
54
  !props.disabled && !props.errors && (React.createElement("div", { className: bem.element('arrows-container') },
55
55
  React.createElement("button", { className: bem.element('arrow', {
56
56
  disabled: props.inputProps.max && props.inputProps.value >= props.inputProps.max
@@ -3,6 +3,7 @@
3
3
 
4
4
  &__list {
5
5
  display: flex;
6
+ flex-wrap: wrap;
6
7
  list-style: none;
7
8
  padding: 0;
8
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/bootstrap",
3
- "version": "2.1.3",
3
+ "version": "2.1.6",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
@@ -19,7 +19,7 @@
19
19
  "dependencies": {
20
20
  "@ckeditor/ckeditor5-react": "^3.0.2",
21
21
  "@steroidsjs/ckeditor5": "^27.0.2-rc.2",
22
- "@steroidsjs/core": "^2.2.9",
22
+ "@steroidsjs/core": "^2.2.19",
23
23
  "bootstrap": "^4.5.2",
24
24
  "lodash": "^4.17.20",
25
25
  "lodash-es": "^4.17.20",