@steroidsjs/bootstrap 3.0.32 → 3.0.34

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.
@@ -35,7 +35,7 @@ function CheckboxListFieldView(props) {
35
35
  var prefix = (0, useUniqueId_1["default"])('checkbox');
36
36
  return (React.createElement("div", { className: bem(bem.block((_a = {},
37
37
  _a["".concat(props.orientation)] = !!props.orientation,
38
- _a)), props.className), style: props.style }, props.items.map(function (checkbox, checkboxIndex) { return props.renderCheckbox({
38
+ _a)), props.className), style: props.style }, props.items.map(function (checkbox, checkboxIndex) { return props.renderItem({
39
39
  key: checkboxIndex,
40
40
  id: "".concat(prefix, "_").concat(checkbox.id),
41
41
  label: checkbox.label,
@@ -38,55 +38,73 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  };
39
39
  exports.__esModule = true;
40
40
  var React = __importStar(require("react"));
41
- var react_1 = require("react");
42
41
  var hooks_1 = require("@steroidsjs/core/hooks");
43
42
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
43
+ var content_1 = require("@steroidsjs/core/ui/content");
44
44
  var utils_1 = require("./utils");
45
45
  function DropDownFieldView(props) {
46
46
  var _a;
47
47
  var bem = (0, hooks_1.useBem)('DropDownFieldView');
48
- // Auto focus on search
49
- (0, react_1.useEffect)(function () {
50
- var _a;
51
- if (props.isSearchAutoFocus && props.isAutoComplete && props.isOpened && ((_a = props.forwardedInputRef) === null || _a === void 0 ? void 0 : _a.current)) {
52
- props.forwardedInputRef.current.focus();
48
+ var onClose = props.onClose;
49
+ var setFocusOnAutoCompleteInput = React.useCallback(function (isComponentVisible) {
50
+ if (isComponentVisible && props.autoCompleteInputForwardedRef.current && props.isSearchAutoFocus) {
51
+ props.autoCompleteInputForwardedRef.current.focus();
53
52
  }
54
- }, [props.forwardedInputRef, props.isAutoComplete, props.isOpened, props.isSearchAutoFocus]);
53
+ }, [props.autoCompleteInputForwardedRef, props.isSearchAutoFocus]);
55
54
  var renderPlaceholder = React.useCallback(function () {
56
55
  var _a;
57
56
  return props.placeholder && !((_a = props.selectedIds) === null || _a === void 0 ? void 0 : _a.length)
58
57
  ? (React.createElement("div", { className: bem.element('placeholder') }, props.placeholder))
59
58
  : null;
60
59
  }, [bem, props.placeholder, props.selectedIds]);
61
- return (React.createElement("div", { ref: props.forwardedRef, className: bem(bem.block((_a = {
60
+ var fieldRef = React.useRef(null);
61
+ var menuWidth = React.useMemo(function () {
62
+ if (!fieldRef.current) {
63
+ return 0;
64
+ }
65
+ return fieldRef.current.getBoundingClientRect().width;
66
+ // Отключена проверка, т.к. необходимо пересчитывать ширину меню, когда меняется fieldRef.current
67
+ // eslint-disable-next-line react-hooks/exhaustive-deps
68
+ }, [fieldRef.current, props.isOpened]);
69
+ var renderList = React.useCallback(function () { return (React.createElement("div", { className: bem.element('drop-down'), style: {
70
+ '--width': menuWidth + 'px',
71
+ '--maxHeight': props.maxHeight
72
+ } },
73
+ props.isAutoComplete && (React.createElement("div", { className: bem.element('search', {
62
74
  size: props.size
63
- },
64
- _a["".concat(props.color)] = !!props.color && !props.outline,
65
- _a["outline_".concat(props.color)] = props.outline,
66
- _a.opened = props.isOpened,
67
- _a['is-invalid'] = !!props.errors,
68
- _a.disabled = props.disabled,
69
- _a)), props.className), onKeyPress: function (e) { return e.key === 'Enter' && !props.disabled && props.onOpen(); }, style: props.style, role: "button", tabIndex: 0 },
70
- React.createElement("div", { className: bem.element('selected-items', {
71
- reset: props.showReset
72
- }), onClick: props.onOpen, tabIndex: -1, role: 'button' },
73
- renderPlaceholder(),
74
- React.createElement("span", { className: bem.element('selected-items') }, props.showEllipses
75
- ? (0, utils_1.getSelectedItemsLabel)(props.selectedItems)
76
- : (0, utils_1.getSelectedItemsCount)(props.selectedItems)),
77
- React.createElement("input", { className: bem.element('input'), ref: props.inputRef })),
78
- props.showReset && props.selectedIds.length > 0 && (React.createElement(Icon_1["default"], { name: "cross_8x8", className: bem.element('icon-close'), tabIndex: -1, onClick: props.onReset, "aria-label": __('Сбросить') })),
79
- React.createElement(Icon_1["default"], { name: 'arrow_down_24x24', className: bem.element('icon-chevron'), tabIndex: -1, onClick: props.onOpen }),
80
- props.isOpened && (React.createElement("div", { className: bem.element('drop-down') },
81
- props.isAutoComplete && (React.createElement("div", { className: bem.element('search', {
82
- size: props.size
83
- }) },
84
- React.createElement(Icon_1["default"], { name: 'search', className: bem.element('search-icon') }),
85
- React.createElement("input", __assign({}, props.searchInputProps, { ref: props.autoCompleteInputForwardedRef, onChange: function (e) { return props.searchInputProps.onChange(e.target.value); }, className: bem(bem.element('search-input'), props.searchInputProps.className) })))),
86
- React.createElement("div", { className: bem.element('drop-down-list') },
87
- props.multiple
88
- && props.itemToSelectAll
89
- && props.renderItem(props.itemToSelectAll),
90
- props.items.map(function (item) { return props.renderItem(item); }))))));
75
+ }) },
76
+ React.createElement(Icon_1["default"], { name: 'search', className: bem.element('search-icon') }),
77
+ React.createElement("input", __assign({}, props.searchInputProps, { ref: props.autoCompleteInputForwardedRef, onChange: function (e) { return props.searchInputProps.onChange(e.target.value); }, className: bem(bem.element('search-input'), props.searchInputProps.className) })))),
78
+ React.createElement("div", { className: bem.element('drop-down-list') },
79
+ props.multiple
80
+ && props.itemToSelectAll
81
+ && props.renderItem(props.itemToSelectAll),
82
+ props.items.map(function (item) { return props.renderItem(item); })))); }, [bem, menuWidth, props]);
83
+ var closeIfOpened = React.useCallback(function () {
84
+ if (props.isOpened) {
85
+ onClose();
86
+ }
87
+ }, [onClose, props.isOpened]);
88
+ return (React.createElement(content_1.DropDown, __assign({ content: renderList, onVisibleChange: setFocusOnAutoCompleteInput, visible: props.isOpened, onClose: onClose, hasArrow: false, className: bem.element('wrapper') }, props.dropDownProps),
89
+ React.createElement("div", null,
90
+ React.createElement("div", { className: bem(bem.block((_a = {
91
+ size: props.size
92
+ },
93
+ _a["".concat(props.color)] = !!props.color && !props.outline,
94
+ _a["outline_".concat(props.color)] = props.outline,
95
+ _a.opened = props.isOpened,
96
+ _a['is-invalid'] = !!props.errors,
97
+ _a.disabled = props.disabled,
98
+ _a)), props.className), onKeyPress: function (e) { return e.key === 'Enter' && !props.disabled && props.onOpen(); }, style: props.style, role: "button", tabIndex: 0, onClick: closeIfOpened, ref: fieldRef },
99
+ React.createElement("div", { className: bem.element('selected-items', {
100
+ reset: props.showReset
101
+ }), onClick: props.onOpen, tabIndex: -1, role: 'button' },
102
+ renderPlaceholder(),
103
+ React.createElement("span", { className: bem.element('selected-items') }, props.showEllipses
104
+ ? (0, utils_1.getSelectedItemsLabel)(props.selectedItems)
105
+ : (0, utils_1.getSelectedItemsCount)(props.selectedItems)),
106
+ React.createElement("input", { className: bem.element('input'), ref: props.inputRef })),
107
+ props.showReset && props.selectedIds.length > 0 && (React.createElement(Icon_1["default"], { name: "cross_8x8", className: bem.element('icon-close'), tabIndex: -1, onClick: props.onReset, "aria-label": __('Сбросить') })),
108
+ React.createElement(Icon_1["default"], { name: 'arrow_down_24x24', className: bem.element('icon-chevron'), tabIndex: -1, onClick: props.onOpen })))));
91
109
  }
92
110
  exports["default"] = DropDownFieldView;
@@ -9,13 +9,13 @@
9
9
  --chevron-background-color: #ffffff;
10
10
  --chevron-background-color-outline: #f5f8fa;
11
11
  --chevron-inner-color: #323232;
12
- --drop-down-border-color: #e9e9e9;
13
- --search-color: #626262;
14
- --search-background-color: #f5f8fa;
15
- --search-hover-background-color: #eef1f2;
16
12
 
17
13
  --drop-down-item-hover-background-color: #f5f8fa;
18
14
  --drop-down-item-select-background-color: #eef1f2;
15
+ --drop-down-border-color: #e9e9e9;
16
+ --search-background-color: #f5f8fa;
17
+ --search-hover-background-color: #eef1f2;
18
+ --search-color: #626262;
19
19
  }
20
20
 
21
21
  html[data-theme="dark"] {
@@ -25,13 +25,13 @@ html[data-theme="dark"] {
25
25
  --chevron-background-color: #16171b;
26
26
  --chevron-background-color-outline: #191b1f;
27
27
  --chevron-inner-color: #ffffff;
28
- --drop-down-border-color: #595959;
29
- --search-color: #adacac;
30
- --search-background-color: #4e4f57;
31
- --search-hover-background-color: #5b5c6b;
32
28
 
33
29
  --drop-down-item-select-background-color: #5b5c6b;
34
30
  --drop-down-item-hover-background-color: #4e4f57;
31
+ --drop-down-border-color: #595959;
32
+ --search-background-color: #4e4f57;
33
+ --search-hover-background-color: #5b5c6b;
34
+ --search-color: #adacac;
35
35
  }
36
36
 
37
37
  $basic-color: var(--basic-color);
@@ -40,13 +40,13 @@ $basic-active-color: var(--basic-active-color);
40
40
  $chevron-background-color: var(--chevron-background-color);
41
41
  $chevron-background-color-outline: var(--chevron-background-color-outline);
42
42
  $chevron-inner-color: var(--chevron-inner-color);
43
- $drop-down-border-color: var(--drop-down-border-color);
44
- $search-color: var(--search-color);
45
- $search-background-color: var(--search-background-color);
46
- $search-hover-background-color: var(--search-hover-background-color);
47
43
 
48
44
  $drop-down-item-select-background-color: var(--drop-down-item-select-background-color);
49
45
  $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-color);
46
+ $drop-down-border-color: var(--drop-down-border-color);
47
+ $search-background-color: var(--search-background-color);
48
+ $search-hover-background-color: var(--search-hover-background-color);
49
+ $search-color: var(--search-color);
50
50
 
51
51
  $drop-down-color-themes: () !default;
52
52
  $drop-down-color-themes: map.merge(
@@ -291,48 +291,20 @@ $drop-down-color-themes: map.merge(
291
291
  }
292
292
  }
293
293
 
294
- &__selected-items {
295
- position: absolute;
296
- width: calc(100% - 29px);
297
- height: 100%;
298
- top: 0;
299
- left: 0;
300
- overflow: hidden;
301
- padding-left: 8px;
302
- outline: none;
303
-
304
- text-overflow: ellipsis;
305
- white-space: nowrap;
306
- overflow: hidden;
307
- }
308
-
309
294
  &__drop-down {
310
- position: absolute;
311
- z-index: 2;
312
- width: 100%;
295
+ width: var(--width);
296
+ max-height: var(--maxHeight);
313
297
  height: fit-content;
314
- top: calc(100% + 8px);
315
- left: 0;
316
-
298
+
317
299
  background-color: variables.$element-background-color;
318
-
319
- border: 1px solid $drop-down-border-color;
300
+
320
301
  overflow: hidden;
321
- border-radius: 12px;
322
-
302
+
323
303
  &-list {
324
304
  @include mixins.scrollWrapper(240px, 0, variables.$scroll-thumb-color, variables.$scroll-track-color);
325
305
  }
326
306
  }
327
307
 
328
- &_opened {
329
- #{$root}__icon-chevron {
330
- svg {
331
- transform: rotate(180deg);
332
- }
333
- }
334
- }
335
-
336
308
  &__search {
337
309
  width: 100%;
338
310
  padding: 9px;
@@ -402,6 +374,29 @@ $drop-down-color-themes: map.merge(
402
374
  }
403
375
  }
404
376
 
377
+ &__selected-items {
378
+ position: absolute;
379
+ width: calc(100% - 29px);
380
+ height: 100%;
381
+ top: 0;
382
+ left: 0;
383
+ overflow: hidden;
384
+ padding-left: 8px;
385
+ outline: none;
386
+
387
+ text-overflow: ellipsis;
388
+ white-space: nowrap;
389
+ overflow: hidden;
390
+ }
391
+
392
+ &_opened {
393
+ #{$root}__icon-chevron {
394
+ svg {
395
+ transform: rotate(180deg);
396
+ }
397
+ }
398
+ }
399
+
405
400
  &__placeholder {
406
401
  text-overflow: ellipsis;
407
402
  white-space: nowrap;
@@ -447,4 +442,9 @@ $drop-down-color-themes: map.merge(
447
442
  pointer-events: none;
448
443
  user-select: none;
449
444
  }
445
+ &__wrapper {
446
+ padding: unset;
447
+ overflow: hidden;
448
+ min-width: unset;
449
+ }
450
450
  }
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { IRadioFieldViewProps } from '@steroidsjs/core/ui/form/RadioField/RadioField';
3
- export default function RadioFieldView(props: IRadioFieldViewProps): JSX.Element;
2
+ import { ICheckboxFieldViewProps } from '@steroidsjs/core/ui/form/CheckboxField/CheckboxField';
3
+ export default function RadioFieldView(props: ICheckboxFieldViewProps): JSX.Element;
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { IRadioListFieldViewProps } from '@steroidsjs/core/ui/form/RadioListField/RadioListField';
3
- export default function RadioListFieldView(props: IRadioListFieldViewProps): JSX.Element;
2
+ import { ICheckboxListFieldViewProps } from '@steroidsjs/core/ui/form/CheckboxListField/CheckboxListField';
3
+ export default function RadioListFieldView(props: ICheckboxListFieldViewProps): JSX.Element;
@@ -35,7 +35,7 @@ function RadioListFieldView(props) {
35
35
  var prefix = (0, useUniqueId_1["default"])('radio');
36
36
  return (React.createElement("div", { className: bem(bem.block((_a = {},
37
37
  _a["".concat(props.orientation)] = !!props.orientation,
38
- _a)), props.className) }, props.items.map(function (radio, radioIndex) { return props.renderRadio({
38
+ _a)), props.className) }, props.items.map(function (radio, radioIndex) { return props.renderItem({
39
39
  key: radioIndex,
40
40
  id: "".concat(prefix, "_").concat(radio.id),
41
41
  label: radio.label,
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { ISwitcherFieldViewProps } from '@steroidsjs/core/ui/form/SwitcherField/SwitcherField';
3
- export default function SwitcherFieldView(props: ISwitcherFieldViewProps): JSX.Element;
2
+ import { ICheckboxFieldViewProps } from '@steroidsjs/core/ui/form/CheckboxField/CheckboxField';
3
+ export default function SwitcherFieldView(props: ICheckboxFieldViewProps): JSX.Element;
@@ -10,46 +10,28 @@ 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;
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
35
15
  };
36
16
  exports.__esModule = true;
37
- var React = __importStar(require("react"));
17
+ var react_1 = __importDefault(require("react"));
38
18
  var hooks_1 = require("@steroidsjs/core/hooks");
39
19
  function SwitcherFieldView(props) {
40
20
  var bem = (0, hooks_1.useBem)('SwitcherFieldView');
41
- var prefix = (0, hooks_1.useUniqueId)('switcher');
42
- var renderLabel = React.useCallback(function (item) {
43
- if (typeof item.label === 'object') {
44
- return props.selectedIds.includes(item.id) ? item.label.checked : item.label.unchecked;
21
+ var uniqueId = (0, hooks_1.useUniqueId)('switcher');
22
+ var renderLabel = react_1["default"].useCallback(function () {
23
+ if (typeof props.label === 'object') {
24
+ return props.inputProps.checked ? props.label.checked : props.label.unchecked;
45
25
  }
46
- return item.label;
47
- }, [props.selectedIds]);
48
- return (React.createElement("div", { className: bem(bem.block(), props.className), style: props.style }, props.items.map(function (switcher, switcherIndex) { return (React.createElement("label", { key: switcherIndex, className: bem.element('switcher', {
49
- size: props.size
50
- }), htmlFor: "".concat(prefix, "_").concat(switcher.id) },
51
- React.createElement("input", __assign({}, props.inputProps, { id: "".concat(prefix, "_").concat(switcher.id), onChange: function () { return props.onItemSelect(switcher.id); }, checked: props.selectedIds.includes(switcher.id), className: bem.element('input'), required: switcher.required })),
52
- React.createElement("span", { className: bem.element('slider') }),
53
- React.createElement("span", { className: bem.element('label') }, renderLabel(switcher)))); })));
26
+ return props.label;
27
+ }, [props.inputProps.checked, props.label]);
28
+ var customVariableColorStyle = { '--checkbox-custom-color': props.color };
29
+ return (react_1["default"].createElement("div", { className: bem(bem.block({
30
+ size: props.size,
31
+ hasErrors: !!props.errors
32
+ }), props.className), style: __assign(__assign({}, props.style), customVariableColorStyle), onClick: props.onChange },
33
+ react_1["default"].createElement("input", __assign({ id: props.id || uniqueId, disabled: props.disabled, required: props.required, onChange: function () { return props.onItemSelect(props.id); }, className: bem.element('input') }, props.inputProps)),
34
+ react_1["default"].createElement("span", { className: bem.element('slider') }),
35
+ react_1["default"].createElement("span", { className: bem.element('label') }, renderLabel())));
54
36
  }
55
37
  exports["default"] = SwitcherFieldView;
@@ -1,5 +1,5 @@
1
1
  @use "sass:map";
2
- @use "../../scss/variables";
2
+ @use 'style/variables';
3
3
 
4
4
  :root {
5
5
  --switcher-dot-disabled-color: #dbe2e6;
@@ -11,85 +11,79 @@ html[data-theme="dark"] {
11
11
  --switcher-slider-disabled-color: #5b5c6b;
12
12
  }
13
13
 
14
+
14
15
  $switcher-dot-disabled-color: var(--switcher-dot-disabled-color);
15
16
  $switcher-slider-disabled-color: var(--switcher-slider-disabled-color);
16
17
 
17
18
  $background-color-transition-timing: 150ms;
18
19
 
19
-
20
20
  .SwitcherFieldView {
21
21
  $root: &;
22
- display: flex;
23
- flex-flow: column nowrap;
24
- align-items: flex-start;
25
- row-gap: 10px;
26
-
27
- &__switcher {
28
- display: inline-flex;
29
- column-gap: 12px;
30
- align-items: center;
31
- position: relative;
32
- cursor: pointer;
33
22
 
34
- $sizes: () !default;
35
- $sizes: map.merge(
36
- (
37
- "lg": (
38
- "width": 40px,
39
- "height": 24px,
40
- "dotSize": 18px,
41
- "dotTranslateDefault": translateY(-50%) translateX(4px),
42
- "dotTranslateActive": translateY(-50%) translateX(16px),
43
- "font-size": variables.$font-size-lg,
44
- "line-height": variables.$line-height-lg,
45
- ),
46
- "md": (
47
- "width": 34px,
48
- "height": 20px,
49
- "dotSize": 14px,
50
- "dotTranslateDefault": translateY(-50%) translateX(3px),
51
- "dotTranslateActive": translateY(-50%) translateX(15px),
52
- "font-size": variables.$font-size-base,
53
- "line-height": variables.$line-height-base,
54
- ),
55
- "sm": (
56
- "width": 28px,
57
- "height": 16px,
58
- "dotSize": 12px,
59
- "dotTranslateDefault": translateY(-50%) translateX(2px),
60
- "dotTranslateActive": translateY(-50%) translateX(12px),
61
- "font-size": variables.$font-size-sm,
62
- "line-height": variables.$line-height-sm,
63
- ),
23
+ display: inline-flex;
24
+ column-gap: 12px;
25
+ align-items: center;
26
+ position: relative;
27
+ cursor: pointer;
28
+
29
+ $sizes: () !default;
30
+ $sizes: map.merge(
31
+ (
32
+ "lg": (
33
+ "width": 40px,
34
+ "height": 24px,
35
+ "dotSize": 18px,
36
+ "dotTranslateDefault": translateY(-50%) translateX(4px),
37
+ "dotTranslateActive": translateY(-50%) translateX(16px),
38
+ "font-size": variables.$font-size-lg,
39
+ "line-height": variables.$line-height-lg,
64
40
  ),
65
- $sizes
66
- );
67
-
68
- &_size {
69
- @each $size, $sizeMap in $sizes {
70
- &_#{$size} {
71
- #{$root}__slider {
72
- width: map.get($sizeMap, width);
73
- height: map.get($sizeMap, height);
74
-
75
- &::before {
76
- width: map.get($sizeMap, dotSize);
77
- height: map.get($sizeMap, dotSize);
78
- transform: map.get($sizeMap, dotTranslateDefault);
79
- }
80
- }
81
-
82
- #{$root}__input:checked + #{$root}__slider {
83
- &::before {
84
- transform: map.get($sizeMap, dotTranslateActive);
85
- }
41
+ "md": (
42
+ "width": 34px,
43
+ "height": 20px,
44
+ "dotSize": 14px,
45
+ "dotTranslateDefault": translateY(-50%) translateX(3px),
46
+ "dotTranslateActive": translateY(-50%) translateX(15px),
47
+ "font-size": variables.$font-size-base,
48
+ "line-height": variables.$line-height-base,
49
+ ),
50
+ "sm": (
51
+ "width": 28px,
52
+ "height": 16px,
53
+ "dotSize": 12px,
54
+ "dotTranslateDefault": translateY(-50%) translateX(2px),
55
+ "dotTranslateActive": translateY(-50%) translateX(12px),
56
+ "font-size": variables.$font-size-sm,
57
+ "line-height": variables.$line-height-sm,
58
+ ),
59
+ ),
60
+ $sizes
61
+ );
62
+
63
+ &_size {
64
+ @each $size, $sizeMap in $sizes {
65
+ &_#{$size} {
66
+ #{$root}__slider {
67
+ width: map.get($sizeMap, width);
68
+ height: map.get($sizeMap, height);
69
+
70
+ &::before {
71
+ width: map.get($sizeMap, dotSize);
72
+ height: map.get($sizeMap, dotSize);
73
+ transform: map.get($sizeMap, dotTranslateDefault);
86
74
  }
87
-
88
- #{$root}__label {
89
- font-size: map.get($sizeMap, font-size);
90
- line-height: map.get($sizeMap, line-height);
75
+ }
76
+
77
+ #{$root}__input:checked + #{$root}__slider {
78
+ &::before {
79
+ transform: map.get($sizeMap, dotTranslateActive);
91
80
  }
92
81
  }
82
+
83
+ #{$root}__label {
84
+ font-size: map.get($sizeMap, font-size);
85
+ line-height: map.get($sizeMap, line-height);
86
+ }
93
87
  }
94
88
  }
95
89
  }
@@ -190,4 +184,4 @@ $background-color-transition-timing: 150ms;
190
184
  &__label {
191
185
  color: variables.$text-color;
192
186
  }
193
- }
187
+ }
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { ICheckboxListFieldViewProps } from '@steroidsjs/core/ui/form/CheckboxListField/CheckboxListField';
3
+ export default function SwitcherListFieldView(props: ICheckboxListFieldViewProps): JSX.Element;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ exports.__esModule = true;
29
+ var React = __importStar(require("react"));
30
+ var hooks_1 = require("@steroidsjs/core/hooks");
31
+ var SwitcherFieldView_1 = __importDefault(require("../SwitcherField/SwitcherFieldView"));
32
+ function SwitcherListFieldView(props) {
33
+ var bem = (0, hooks_1.useBem)('SwitcherListFieldView');
34
+ var prefix = (0, hooks_1.useUniqueId)('switcher');
35
+ return (React.createElement("div", { className: bem(bem.block(), props.className), style: props.style }, props.items.map(function (checkbox, checkboxIndex) { return props.renderItem({
36
+ key: checkboxIndex,
37
+ id: "".concat(prefix, "_").concat(checkbox.id),
38
+ label: checkbox.label,
39
+ inputProps: {
40
+ name: "".concat(prefix, "_").concat(checkbox.id),
41
+ type: 'checkbox',
42
+ checked: props.selectedIds.includes(checkbox.id),
43
+ onChange: function () {
44
+ props.onItemSelect(checkbox.id);
45
+ },
46
+ disabled: props.disabled || checkbox.disabled
47
+ },
48
+ size: checkbox.size || props.size,
49
+ color: checkbox.color,
50
+ required: checkbox.required,
51
+ view: SwitcherFieldView_1["default"]
52
+ }); })));
53
+ }
54
+ exports["default"] = SwitcherListFieldView;
@@ -0,0 +1,9 @@
1
+ @use "sass:map";
2
+ @use "../../scss/variables";
3
+
4
+ .SwitcherListFieldView {
5
+ display: flex;
6
+ flex-flow: column nowrap;
7
+ align-items: flex-start;
8
+ row-gap: 10px;
9
+ }
package/index.d.ts CHANGED
@@ -161,6 +161,9 @@ declare const _default: {
161
161
  'form.SwitcherFieldView': {
162
162
  lazy: () => any;
163
163
  };
164
+ 'form.SwitcherListFieldView': {
165
+ lazy: () => any;
166
+ };
164
167
  'form.TextFieldView': {
165
168
  lazy: () => any;
166
169
  };
package/index.js CHANGED
@@ -164,6 +164,9 @@ exports["default"] = {
164
164
  'form.SwitcherFieldView': {
165
165
  lazy: function () { return require('./form/SwitcherField/SwitcherFieldView')["default"]; }
166
166
  },
167
+ 'form.SwitcherListFieldView': {
168
+ lazy: function () { return require('./form/SwitcherListField/SwitcherListFieldView')["default"]; }
169
+ },
167
170
  'form.TextFieldView': {
168
171
  lazy: function () { return require('./form/TextField/TextFieldView')["default"]; }
169
172
  },
package/index.scss CHANGED
@@ -65,6 +65,7 @@
65
65
  @include meta.load-css('form/ReCaptchaField/ReCaptchaFieldView');
66
66
  @include meta.load-css('form/SliderField/SliderFieldView');
67
67
  @include meta.load-css('form/SwitcherField/SwitcherFieldView');
68
+ @include meta.load-css('form/SwitcherListField/SwitcherListFieldView');
68
69
  @include meta.load-css('form/TextField/TextFieldView');
69
70
  @include meta.load-css('form/TimeField/TimeFieldView');
70
71
  @include meta.load-css('form/TimeField/TimePanelView');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/bootstrap",
3
- "version": "3.0.32",
3
+ "version": "3.0.34",
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.57",
38
+ "@steroidsjs/core": "3.0.59",
39
39
  "@steroidsjs/eslint-config": "^2.1.6",
40
40
  "@types/enzyme": "^3.10.8",
41
41
  "@types/googlemaps": "^3.43.3",