@pinuts/bsr-uikit-relaunch 0.3.3 → 0.3.8
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.
- package/dist/index.js +1 -1
- package/dist/items/MultiSelectField/MultiSelectField.d.ts +4 -0
- package/dist/items/MultiSelectField/MultiSelectField.d.ts.map +1 -0
- package/dist/items/MultiSelectField/MultiSelectField.js +165 -0
- package/dist/items/index.d.ts +2 -1
- package/dist/items/index.d.ts.map +1 -1
- package/dist/items/index.js +7 -0
- package/dist/styles/_ariakit_combobox.scss +146 -74
- package/dist/styles/variables/_buttons.scss +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelectField.d.ts","sourceRoot":"","sources":["../../../src/items/MultiSelectField/MultiSelectField.jsx"],"names":[],"mappings":";AAuOA,wEAMC;kBA7OqD,OAAO"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _reactI18next = require("react-i18next");
|
|
10
|
+
var _react2 = require("@ariakit/react");
|
|
11
|
+
var _formBuilder = require("@pinuts/form-builder");
|
|
12
|
+
var _useGetOptionList = _interopRequireDefault(require("../../hooks/useGetOptionList.js"));
|
|
13
|
+
var _index = require("../../utils/index.js");
|
|
14
|
+
var _FormFieldChildPropTypes = _interopRequireDefault(require("../FormFieldWrapper/FormFieldChildPropTypes.jsx"));
|
|
15
|
+
var _FormFieldWrapper = _interopRequireDefault(require("../FormFieldWrapper/FormFieldWrapper.jsx"));
|
|
16
|
+
var _withFieldGroup = _interopRequireDefault(require("../../hooks/withFieldGroup.jsx"));
|
|
17
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
19
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // form-builder
|
|
21
|
+
const {
|
|
22
|
+
useFormikContext
|
|
23
|
+
} = _formBuilder.formik;
|
|
24
|
+
const toArray = value => {
|
|
25
|
+
if (Array.isArray(value)) return value;
|
|
26
|
+
if (value === undefined || value === null || value === '') return [];
|
|
27
|
+
return [value];
|
|
28
|
+
};
|
|
29
|
+
const MultiSelectField = _ref => {
|
|
30
|
+
let {
|
|
31
|
+
className,
|
|
32
|
+
options,
|
|
33
|
+
emptyOptionLabel,
|
|
34
|
+
skipOptions,
|
|
35
|
+
inputProps = {},
|
|
36
|
+
field = {},
|
|
37
|
+
onChange = () => {},
|
|
38
|
+
value,
|
|
39
|
+
isInvalid,
|
|
40
|
+
readOnly,
|
|
41
|
+
disabled,
|
|
42
|
+
viewMode,
|
|
43
|
+
ariaAttributes = {},
|
|
44
|
+
allowCustom,
|
|
45
|
+
dark,
|
|
46
|
+
disableDropdown,
|
|
47
|
+
doSubmitOnChange,
|
|
48
|
+
placeholder
|
|
49
|
+
} = _ref;
|
|
50
|
+
const [t] = (0, _reactI18next.useTranslation)();
|
|
51
|
+
const {
|
|
52
|
+
submitForm
|
|
53
|
+
} = useFormikContext();
|
|
54
|
+
const [searchInput, setSearchInput] = (0, _react.useState)('');
|
|
55
|
+
const inputOptions = (0, _useGetOptionList.default)(options, emptyOptionLabel, skipOptions);
|
|
56
|
+
const selectedValues = (0, _react.useMemo)(() => toArray(value), [value]);
|
|
57
|
+
const translateLabel = (0, _react.useCallback)(function () {
|
|
58
|
+
let label = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
59
|
+
return !label.includes(':') && !label.includes('<') ? t(label) : label;
|
|
60
|
+
}, [t]);
|
|
61
|
+
const selectedOptions = (0, _react.useMemo)(() => selectedValues.map(val => inputOptions.find(opt => opt.value === val) || {
|
|
62
|
+
value: val,
|
|
63
|
+
label: val
|
|
64
|
+
}), [selectedValues, inputOptions]);
|
|
65
|
+
const filteredOptions = (0, _react.useMemo)(() => {
|
|
66
|
+
const search = searchInput.trim().toLowerCase();
|
|
67
|
+
if (!search) return inputOptions;
|
|
68
|
+
return inputOptions.filter(opt => translateLabel(opt.label).toString().toLowerCase().includes(search));
|
|
69
|
+
}, [inputOptions, searchInput, translateLabel]);
|
|
70
|
+
const triggerChange = (0, _react.useCallback)(next => {
|
|
71
|
+
onChange(next);
|
|
72
|
+
if (doSubmitOnChange) submitForm();
|
|
73
|
+
}, [onChange, doSubmitOnChange, submitForm]);
|
|
74
|
+
const handleSelectionChange = (0, _react.useCallback)(next => {
|
|
75
|
+
triggerChange(Array.isArray(next) ? next : toArray(next));
|
|
76
|
+
setSearchInput('');
|
|
77
|
+
}, [triggerChange]);
|
|
78
|
+
const removeValue = (0, _react.useCallback)(val => triggerChange(selectedValues.filter(v => v !== val)), [triggerChange, selectedValues]);
|
|
79
|
+
const clearAll = (0, _react.useCallback)(() => triggerChange([]), [triggerChange]);
|
|
80
|
+
const onInputKeyDown = (0, _react.useCallback)(event => {
|
|
81
|
+
const {
|
|
82
|
+
key,
|
|
83
|
+
currentTarget
|
|
84
|
+
} = event;
|
|
85
|
+
const isCaretAtStart = currentTarget.selectionStart === 0 && currentTarget.selectionEnd === 0;
|
|
86
|
+
if (key === 'Backspace' && isCaretAtStart && selectedValues.length > 0) {
|
|
87
|
+
triggerChange(selectedValues.slice(0, -1));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (allowCustom && (key === 'Enter' || key === ',')) {
|
|
91
|
+
const typed = currentTarget.value.trim();
|
|
92
|
+
if (typed && !selectedValues.includes(typed)) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
triggerChange([...selectedValues, typed]);
|
|
95
|
+
setSearchInput('');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}, [allowCustom, selectedValues, triggerChange]);
|
|
99
|
+
if (viewMode) {
|
|
100
|
+
return selectedOptions.map(opt => translateLabel(opt.label)).join(', ');
|
|
101
|
+
}
|
|
102
|
+
const wrapperClassNames = (0, _index.getFormControlClassNames)(isInvalid, readOnly, disabled, className, ['multiSelectField', dark && 'dark', field.className].filter(Boolean));
|
|
103
|
+
return /*#__PURE__*/_react.default.createElement(_react2.ComboboxProvider, {
|
|
104
|
+
value: searchInput,
|
|
105
|
+
setValue: setSearchInput,
|
|
106
|
+
selectedValue: selectedValues,
|
|
107
|
+
setSelectedValue: handleSelectionChange,
|
|
108
|
+
defaultSelectedValue: [],
|
|
109
|
+
resetValueOnSelect: true
|
|
110
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
111
|
+
className: wrapperClassNames
|
|
112
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
113
|
+
className: "multiSelectField__row"
|
|
114
|
+
}, selectedOptions.map(opt => /*#__PURE__*/_react.default.createElement("button", {
|
|
115
|
+
key: opt.value,
|
|
116
|
+
type: "button",
|
|
117
|
+
className: "multiSelectField__tag",
|
|
118
|
+
onClick: () => removeValue(opt.value),
|
|
119
|
+
disabled: readOnly || disabled,
|
|
120
|
+
"aria-label": t('aria.deleteField', {
|
|
121
|
+
label: translateLabel(opt.label)
|
|
122
|
+
})
|
|
123
|
+
}, translateLabel(opt.label), /*#__PURE__*/_react.default.createElement("span", {
|
|
124
|
+
className: "multiSelectField__tagRemove",
|
|
125
|
+
"aria-hidden": "true"
|
|
126
|
+
}, "\u2715"))), /*#__PURE__*/_react.default.createElement(_react2.Combobox, _extends({
|
|
127
|
+
autoSelect: true,
|
|
128
|
+
placeholder: placeholder,
|
|
129
|
+
onKeyDown: onInputKeyDown
|
|
130
|
+
}, ariaAttributes, inputProps))), selectedValues.length > 0 && !readOnly && !disabled && /*#__PURE__*/_react.default.createElement(_react2.ComboboxCancel, {
|
|
131
|
+
className: "multiSelectField__cancel",
|
|
132
|
+
onClick: clearAll,
|
|
133
|
+
"aria-label": t('aria.deleteAll')
|
|
134
|
+
})), !disableDropdown && filteredOptions.length > 0 && /*#__PURE__*/_react.default.createElement(_react2.ComboboxPopover, {
|
|
135
|
+
portal: true,
|
|
136
|
+
sameWidth: true,
|
|
137
|
+
gutter: 4,
|
|
138
|
+
className: "multiSelectFieldPopover"
|
|
139
|
+
}, filteredOptions.map(opt => /*#__PURE__*/_react.default.createElement(_react2.ComboboxItem, {
|
|
140
|
+
key: opt.value,
|
|
141
|
+
value: opt.value,
|
|
142
|
+
focusOnHover: true
|
|
143
|
+
}, translateLabel(opt.label)))));
|
|
144
|
+
};
|
|
145
|
+
MultiSelectField.propTypes = {
|
|
146
|
+
..._FormFieldChildPropTypes.default,
|
|
147
|
+
options: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.shape({
|
|
148
|
+
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
149
|
+
label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object])
|
|
150
|
+
}), _propTypes.default.string])).isRequired,
|
|
151
|
+
emptyOptionLabel: _propTypes.default.string,
|
|
152
|
+
skipOptions: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.string]),
|
|
153
|
+
allowCustom: _propTypes.default.bool,
|
|
154
|
+
dark: _propTypes.default.bool,
|
|
155
|
+
disableDropdown: _propTypes.default.bool,
|
|
156
|
+
doSubmitOnChange: _propTypes.default.bool,
|
|
157
|
+
placeholder: _propTypes.default.string
|
|
158
|
+
};
|
|
159
|
+
const HigherOrderMultiSelectField = (0, _withFieldGroup.default)(MultiSelectField);
|
|
160
|
+
const WrappedMultiSelectField = props => {
|
|
161
|
+
return /*#__PURE__*/_react.default.createElement(_FormFieldWrapper.default, props, /*#__PURE__*/_react.default.createElement(HigherOrderMultiSelectField, props));
|
|
162
|
+
};
|
|
163
|
+
(0, _formBuilder.registerComponent)('MultiSelectField', WrappedMultiSelectField);
|
|
164
|
+
(0, _formBuilder.registerComponent)('MultiSelectFieldBasic', HigherOrderMultiSelectField);
|
|
165
|
+
var _default = exports.default = WrappedMultiSelectField;
|
package/dist/items/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import FormFieldWrapper from './FormFieldWrapper/FormFieldWrapper.jsx';
|
|
|
9
9
|
import GroupInputField from './GroupInputField/GroupInputField.jsx';
|
|
10
10
|
import Icon from '../assets/Icon.jsx';
|
|
11
11
|
import FormBuilderIcon from './Icon/Icon.jsx';
|
|
12
|
+
import MultiSelectField from './MultiSelectField/MultiSelectField.jsx';
|
|
12
13
|
import NumberInputField from './NumberInputField/NumberInputField.jsx';
|
|
13
14
|
import SelectField from './SelectField/SelectField.jsx';
|
|
14
15
|
import StaticAlert from './StaticAlert/StaticAlert.jsx';
|
|
@@ -31,5 +32,5 @@ import EventDatePicker from './eventWizardItems/EventDatePicker/EventDatePicker.
|
|
|
31
32
|
import FormTitle from './eventWizardItems/FormTitle/FormTitle.jsx';
|
|
32
33
|
import Intro from './eventWizardItems/Intro/Intro.jsx';
|
|
33
34
|
import Required from './eventWizardItems/Required/Required.jsx';
|
|
34
|
-
export { Button, BSRAddressSelector, SubmitButton, DateInputField, DropDownButton, FieldLabel, FormFieldChildPropTypes, FormFieldWrapper, GroupInputField, Icon, FormBuilderIcon, NumberInputField, SelectField, StaticAlert, Tag, TextBox, TextAreaField, TextInputField, Toast, Title, ToggleSwitchField, SectionSpinner, ArrayFieldset, FieldsetWrapper, BootstrapInputGroupField, BSRGridRow, BSRGridColumn, BSRGridRowCols, EventPicker, EventDatePicker, FormTitle, Intro, Required };
|
|
35
|
+
export { Button, BSRAddressSelector, SubmitButton, DateInputField, DropDownButton, FieldLabel, FormFieldChildPropTypes, FormFieldWrapper, GroupInputField, Icon, FormBuilderIcon, MultiSelectField, NumberInputField, SelectField, StaticAlert, Tag, TextBox, TextAreaField, TextInputField, Toast, Title, ToggleSwitchField, SectionSpinner, ArrayFieldset, FieldsetWrapper, BootstrapInputGroupField, BSRGridRow, BSRGridColumn, BSRGridRowCols, EventPicker, EventDatePicker, FormTitle, Intro, Required };
|
|
35
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/items/index.js"],"names":[],"mappings":"mBAKmB,qBAAqB;+BAHT,6CAA6C;yBAInD,2BAA2B;2BACzB,qCAAqC;2BACrC,qCAAqC;uBACzC,6BAA6B;oCAChB,gDAAgD;6BACvD,yCAAyC;4BAC1C,uCAAuC;iBAClD,oBAAoB;4BACT,iBAAiB;6BAGhB,yCAAyC;wBAC9C,+BAA+B;wBAC/B,+BAA+B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/items/index.js"],"names":[],"mappings":"mBAKmB,qBAAqB;+BAHT,6CAA6C;yBAInD,2BAA2B;2BACzB,qCAAqC;2BACrC,qCAAqC;uBACzC,6BAA6B;oCAChB,gDAAgD;6BACvD,yCAAyC;4BAC1C,uCAAuC;iBAClD,oBAAoB;4BACT,iBAAiB;6BAGhB,yCAAyC;6BACzC,yCAAyC;wBAC9C,+BAA+B;wBAC/B,+BAA+B;gBAhBvC,eAAe;oBAmBX,uBAAuB;0BACjB,mCAAmC;2BAClC,qCAAqC;kBAG9C,mBAAmB;kBADnB,mBAAmB;8BAEP,2CAA2C;2BAP9C,qCAAqC;0BAStC,mCAAmC;4BACjC,uCAAuC;qCAN9B,yDAAyD;uBAOvE,uBAAuB;0BACpB,0BAA0B;2BACzB,2BAA2B;wBAC9B,gDAAgD;4BAC5C,wDAAwD;sBAC9D,4CAA4C;kBAChD,oCAAoC;qBACjC,0CAA0C"}
|
package/dist/items/index.js
CHANGED
|
@@ -123,6 +123,12 @@ Object.defineProperty(exports, "Intro", {
|
|
|
123
123
|
return _Intro.default;
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
|
+
Object.defineProperty(exports, "MultiSelectField", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function () {
|
|
129
|
+
return _MultiSelectField.default;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
126
132
|
Object.defineProperty(exports, "NumberInputField", {
|
|
127
133
|
enumerable: true,
|
|
128
134
|
get: function () {
|
|
@@ -213,6 +219,7 @@ var _FormFieldWrapper = _interopRequireDefault(require("./FormFieldWrapper/FormF
|
|
|
213
219
|
var _GroupInputField = _interopRequireDefault(require("./GroupInputField/GroupInputField.jsx"));
|
|
214
220
|
var _Icon = _interopRequireDefault(require("../assets/Icon.jsx"));
|
|
215
221
|
var _Icon2 = _interopRequireDefault(require("./Icon/Icon.jsx"));
|
|
222
|
+
var _MultiSelectField = _interopRequireDefault(require("./MultiSelectField/MultiSelectField.jsx"));
|
|
216
223
|
var _NumberInputField = _interopRequireDefault(require("./NumberInputField/NumberInputField.jsx"));
|
|
217
224
|
var _SelectField = _interopRequireDefault(require("./SelectField/SelectField.jsx"));
|
|
218
225
|
var _StaticAlert = _interopRequireDefault(require("./StaticAlert/StaticAlert.jsx"));
|
|
@@ -161,110 +161,182 @@
|
|
|
161
161
|
background-color: $bsr-grey-100;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
//
|
|
165
|
-
.
|
|
164
|
+
// MultiSelectField
|
|
165
|
+
.multiSelectField {
|
|
166
|
+
position: relative;
|
|
166
167
|
display: flex;
|
|
167
|
-
flex-direction: row;
|
|
168
168
|
align-items: center;
|
|
169
|
-
justify-content: flex-start;
|
|
170
169
|
width: 100%;
|
|
171
|
-
height:
|
|
172
|
-
|
|
173
|
-
|
|
170
|
+
min-height: 45px;
|
|
171
|
+
padding: ($base-gap) ($base-gap * 2);
|
|
172
|
+
gap: $base-gap;
|
|
173
|
+
background-color: $bsr-white-100;
|
|
174
|
+
border: $bsr-border-width-s solid $bsr-grey-100;
|
|
175
|
+
border-radius: $border-radius-sm;
|
|
176
|
+
font-family: "TradeGothicNext", "TradeGothicNextSR", sans-serif;
|
|
177
|
+
font-size: $inputField-font-size;
|
|
178
|
+
line-height: $inputField-line-height;
|
|
179
|
+
color: $bsr-black-90;
|
|
180
|
+
cursor: text;
|
|
174
181
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
box-shadow: $bsr-shadow-default !important;
|
|
179
|
-
background-color: $white;
|
|
182
|
+
&:focus-within {
|
|
183
|
+
border-color: $bsr-black-90;
|
|
184
|
+
outline: $bsr-border-width-m solid $bsr-black-90;
|
|
180
185
|
}
|
|
181
186
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
187
|
+
&.error {
|
|
188
|
+
border-color: transparent;
|
|
189
|
+
outline: $bsr-border-width-l solid $bsr-border-color-error;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
&.read-only,
|
|
193
|
+
&.disabled {
|
|
194
|
+
background-color: $bsr-black-10;
|
|
195
|
+
color: $bsr-black-60;
|
|
196
|
+
cursor: not-allowed;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
&.dark {
|
|
200
|
+
background-color: $bsr-light-brown-100;
|
|
201
|
+
color: $bsr-white-100;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.multiSelectField__row {
|
|
185
205
|
display: flex;
|
|
186
206
|
flex-wrap: wrap;
|
|
187
|
-
|
|
207
|
+
align-items: center;
|
|
208
|
+
flex: 1 1 auto;
|
|
209
|
+
gap: $base-gap;
|
|
210
|
+
min-width: 0;
|
|
211
|
+
}
|
|
188
212
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
213
|
+
.multiSelectField__tag {
|
|
214
|
+
display: inline-flex;
|
|
215
|
+
align-items: center;
|
|
216
|
+
gap: $base-gap;
|
|
217
|
+
margin: 0;
|
|
218
|
+
padding: 0 ($base-gap * 2);
|
|
219
|
+
min-height: calc(45px - #{$base-gap * 4});
|
|
220
|
+
background-color: $bsr-white-100;
|
|
221
|
+
color: $bsr-black-90;
|
|
222
|
+
border: $bsr-border-width-s solid $bsr-grey-100;
|
|
223
|
+
border-radius: $border-radius-lg * 2;
|
|
224
|
+
font-family: inherit;
|
|
225
|
+
font-size: inherit;
|
|
226
|
+
line-height: 1.2;
|
|
227
|
+
cursor: pointer;
|
|
228
|
+
|
|
229
|
+
&:hover,
|
|
230
|
+
&:focus-visible {
|
|
231
|
+
background-color: $bsr-black-10;
|
|
232
|
+
}
|
|
195
233
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
234
|
+
&:focus-visible {
|
|
235
|
+
outline: $bsr-border-width-m solid $bsr-black-90;
|
|
236
|
+
outline-offset: 1px;
|
|
199
237
|
}
|
|
200
238
|
|
|
201
|
-
|
|
202
|
-
|
|
239
|
+
&:disabled {
|
|
240
|
+
cursor: default;
|
|
241
|
+
color: $bsr-black-40;
|
|
242
|
+
border-color: $bsr-black-40;
|
|
243
|
+
background-color: transparent;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.multiSelectField__tagRemove {
|
|
203
247
|
font-weight: 600;
|
|
204
|
-
font-size: 0.
|
|
248
|
+
font-size: 0.8em;
|
|
249
|
+
color: $bsr-grey-100;
|
|
205
250
|
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// input rendered by ariakit Combobox – neutralize global form input styles
|
|
254
|
+
input[role="combobox"] {
|
|
255
|
+
flex: 1 1 80px;
|
|
256
|
+
min-width: 80px;
|
|
257
|
+
width: auto;
|
|
258
|
+
margin: 0;
|
|
259
|
+
padding: 0 $base-gap;
|
|
260
|
+
background: transparent;
|
|
261
|
+
border: 0;
|
|
262
|
+
outline: 0;
|
|
263
|
+
color: inherit;
|
|
264
|
+
font: inherit;
|
|
265
|
+
line-height: inherit;
|
|
266
|
+
box-shadow: none;
|
|
206
267
|
|
|
207
|
-
|
|
268
|
+
&:focus,
|
|
269
|
+
&:focus-visible,
|
|
270
|
+
&:active {
|
|
208
271
|
border: 0;
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
272
|
+
outline: 0;
|
|
273
|
+
box-shadow: none;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
212
276
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
277
|
+
.multiSelectField__cancel {
|
|
278
|
+
flex-shrink: 0;
|
|
279
|
+
display: inline-flex;
|
|
280
|
+
align-items: center;
|
|
281
|
+
justify-content: center;
|
|
282
|
+
width: 24px;
|
|
283
|
+
height: 24px;
|
|
284
|
+
min-height: 0;
|
|
285
|
+
padding: 0;
|
|
286
|
+
margin: 0;
|
|
287
|
+
background: transparent;
|
|
288
|
+
border: 0;
|
|
289
|
+
color: $bsr-grey-100;
|
|
290
|
+
cursor: pointer;
|
|
291
|
+
|
|
292
|
+
&::before {
|
|
293
|
+
content: "✕";
|
|
294
|
+
font-size: 0.9em;
|
|
295
|
+
line-height: 1;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
&:hover,
|
|
299
|
+
&:focus-visible {
|
|
300
|
+
color: $bsr-black-90;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
svg {
|
|
304
|
+
display: none;
|
|
218
305
|
}
|
|
219
306
|
}
|
|
220
307
|
}
|
|
221
308
|
|
|
222
|
-
.
|
|
223
|
-
|
|
224
|
-
top: -2px;
|
|
225
|
-
z-index: 10000;
|
|
309
|
+
.multiSelectFieldPopover {
|
|
310
|
+
z-index: 1000;
|
|
226
311
|
display: flex;
|
|
227
312
|
flex-direction: column;
|
|
228
|
-
|
|
313
|
+
max-height: min(var(--popover-available-height, 320px), 320px);
|
|
314
|
+
overflow-y: auto;
|
|
229
315
|
overscroll-behavior: contain;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
//max-height: $popover-max-height;
|
|
241
|
-
|
|
242
|
-
div[data-active-item="true"] {
|
|
243
|
-
box-shadow: $bsr-shadow-default;
|
|
244
|
-
border-color: $primary;
|
|
245
|
-
outline: 0;
|
|
246
|
-
}
|
|
316
|
+
padding: $base-gap;
|
|
317
|
+
background-color: $bsr-white-100;
|
|
318
|
+
border: $bsr-border-width-s solid $bsr-grey-100;
|
|
319
|
+
border-radius: $border-radius-sm;
|
|
320
|
+
box-shadow: $bsr-shadow-default;
|
|
321
|
+
font-family: "TradeGothicNext", "TradeGothicNextSR", sans-serif;
|
|
322
|
+
font-size: $inputField-font-size;
|
|
323
|
+
line-height: $inputField-line-height;
|
|
324
|
+
color: $bsr-black-90;
|
|
325
|
+
|
|
247
326
|
div[role="option"] {
|
|
248
|
-
|
|
249
|
-
border-radius:
|
|
250
|
-
|
|
327
|
+
padding: ($base-gap * 2) ($base-gap * 3);
|
|
328
|
+
border-radius: $border-radius-sm;
|
|
329
|
+
cursor: pointer;
|
|
330
|
+
white-space: normal;
|
|
251
331
|
|
|
252
|
-
&:
|
|
253
|
-
|
|
332
|
+
&:hover,
|
|
333
|
+
&[data-active-item] {
|
|
254
334
|
background-color: $bsr-black-10;
|
|
255
|
-
color: $bsr-black-90;
|
|
256
|
-
cursor: pointer;
|
|
257
335
|
}
|
|
258
336
|
|
|
259
337
|
&[aria-selected="true"] {
|
|
260
|
-
background-color: $
|
|
261
|
-
color: $white;
|
|
262
|
-
border-color: $primary;
|
|
263
|
-
outline: 0;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
&:not(:last-child) {
|
|
267
|
-
margin-bottom: 0.25rem;
|
|
338
|
+
background-color: $bsr-grey-100;
|
|
339
|
+
color: $bsr-white-100;
|
|
268
340
|
}
|
|
269
341
|
}
|
|
270
342
|
}
|
|
@@ -109,7 +109,7 @@ $btn-padding-y: calc($base-gap * 2 - 1px);
|
|
|
109
109
|
border-color: $bsr-brick-100 !important;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
&:focus {
|
|
112
|
+
&:focus-visible {
|
|
113
113
|
background-color: $bsr-white-100 !important;
|
|
114
114
|
color: $bsr-black-90 !important;
|
|
115
115
|
box-shadow: 0 0 0 0.25rem rgba($bsr-white-100, 0.5) !important;
|
|
@@ -143,7 +143,7 @@ $btn-padding-y: calc($base-gap * 2 - 1px);
|
|
|
143
143
|
text-decoration: none;
|
|
144
144
|
|
|
145
145
|
&:hover,
|
|
146
|
-
&:focus,
|
|
146
|
+
&:focus-visible,
|
|
147
147
|
&:active {
|
|
148
148
|
background-color: $white !important;
|
|
149
149
|
color: $text-secondary !important;
|
|
@@ -170,7 +170,7 @@ button[type="button"].btn.btn-primary, button[type="button"].btn.btn-secondary {
|
|
|
170
170
|
&:focus-visible {
|
|
171
171
|
text-decoration-color: currentColor;
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
&:focus,
|
|
175
175
|
&:focus-visible {
|
|
176
176
|
outline: none;
|
|
@@ -193,7 +193,7 @@ button[type="button"].btn.btn-secondary {
|
|
|
193
193
|
background-color: $bsr-white-100;
|
|
194
194
|
color: $bsr-brick-100;
|
|
195
195
|
border: $bsr-border-width-m solid $bsr-brick-100;
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
&:hover,
|
|
198
198
|
&:focus-visible {
|
|
199
199
|
background-color: $bsr-brick-100 !important;
|