@dbcdk/react-components 0.0.56 → 0.0.57
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/components/forms/input/Input.js +5 -2
- package/dist/components/forms/input/Input.module.css +6 -2
- package/dist/components/forms/multi-select/MultiSelect.js +1 -1
- package/dist/components/forms/select/Select.js +1 -1
- package/dist/components/forms/typeahead/Typeahead.js +3 -3
- package/package.json +1 -1
|
@@ -28,6 +28,8 @@ export const Input = forwardRef(function Input({ label, error, helpText, orienta
|
|
|
28
28
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
29
29
|
}, [autoFocus]);
|
|
30
30
|
const hasButton = Boolean(onButtonClick || buttonLabel || buttonIcon);
|
|
31
|
+
const hasVisibleClear = Boolean(onClear && inputProps.value);
|
|
32
|
+
const hasInlineClear = Boolean(hasVisibleClear && endAdornment);
|
|
31
33
|
const rootStyle = {
|
|
32
34
|
...(style !== null && style !== void 0 ? style : {}),
|
|
33
35
|
...(minWidth ? { ['--input-min-width']: minWidth } : null),
|
|
@@ -43,7 +45,8 @@ export const Input = forwardRef(function Input({ label, error, helpText, orienta
|
|
|
43
45
|
return (_jsx(InputContainer, { label: label, htmlFor: inputId, fullWidth: fullWidth, error: error, helpText: helpText, orientation: orientation, labelWidth: labelWidth, required: required, modified: modified, children: _jsxs("div", { style: rootStyle, className: [
|
|
44
46
|
styles.container,
|
|
45
47
|
fullWidth ? styles.fullWidth : '',
|
|
46
|
-
|
|
48
|
+
hasVisibleClear ? styles.withClear : '',
|
|
49
|
+
hasInlineClear ? styles.withInlineClear : '',
|
|
47
50
|
hasButton ? styles.withButton : '',
|
|
48
51
|
className !== null && className !== void 0 ? className : '',
|
|
49
52
|
]
|
|
@@ -59,6 +62,6 @@ export const Input = forwardRef(function Input({ label, error, helpText, orienta
|
|
|
59
62
|
.filter(Boolean)
|
|
60
63
|
.join(' '), "data-forminput": "field", "data-modified": modified ? 'true' : undefined, "aria-disabled": inputProps.disabled ? 'true' : undefined, ...(tooltip ? triggerProps : {}), children: [icon && _jsx("span", { className: styles.icon, children: icon }), startAdornment && _jsx("span", { className: styles.startAdornment, children: startAdornment }), _jsx("input", { ...inputProps, id: inputId, ref: mergeRefs(inputRef, ref), className: [styles.input, inputSize ? styles[inputSize] : '', inputClassName !== null && inputClassName !== void 0 ? inputClassName : '']
|
|
61
64
|
.filter(Boolean)
|
|
62
|
-
.join(' ') }), endAdornment &&
|
|
65
|
+
.join(' ') }), (hasInlineClear || endAdornment) && (_jsxs("span", { className: styles.endAdornment, children: [hasInlineClear && onClear ? _jsx(ClearButton, { onClick: onClear }) : null, endAdornment] })), hasVisibleClear && !hasInlineClear && onClear ? (_jsx(ClearButton, { onClick: onClear, absolute: true })) : null] }), hasButton && (_jsxs(Button, { onClick: onButtonClick, className: styles.trailingButton, type: "button", variant: trailingButtonVariant, size: inputSize, children: [buttonIcon !== null && buttonIcon !== void 0 ? buttonIcon : null, buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : null] }))] }) }));
|
|
63
66
|
});
|
|
64
67
|
Input.displayName = 'Input';
|
|
@@ -77,6 +77,10 @@
|
|
|
77
77
|
padding-inline-end: calc(var(--spacing-xxs) + 16px + var(--spacing-xxs));
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
.withInlineClear .input {
|
|
81
|
+
padding-inline-end: var(--spacing-xs);
|
|
82
|
+
}
|
|
83
|
+
|
|
80
84
|
/* Global focus reset - variants own visible focus treatment */
|
|
81
85
|
.input:focus-visible {
|
|
82
86
|
outline: none;
|
|
@@ -395,6 +399,6 @@
|
|
|
395
399
|
.endAdornment {
|
|
396
400
|
display: flex;
|
|
397
401
|
align-items: center;
|
|
398
|
-
|
|
399
|
-
|
|
402
|
+
margin-right: var(--spacing-xxs);
|
|
403
|
+
color: var(--color-fg-subtle);
|
|
400
404
|
}
|
|
@@ -101,7 +101,7 @@ export function MultiSelect({ options, selectedValues = [], onChange, placeholde
|
|
|
101
101
|
else {
|
|
102
102
|
setSearchQuery('');
|
|
103
103
|
}
|
|
104
|
-
}, dataCy: dataCy, fullWidth: fullWidth, autoFocusContent: false, returnFocus: true, trigger: (onClick, icon, isOpen) => (_jsx(Button, { variant: variant, onClick: onClick, onKeyDown: handleCombinedKeyDown, size: size, fullWidth: fullWidth, disabled: disabled, "aria-haspopup": "menu", "aria-expanded": !!isOpen, children: _jsxs("span", { className: "dbc-flex dbc-justify-between dbc-items-center dbc-gap-xxs", style: { width: '100%' }, children: [_jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [_jsx("span", { children: children !== null && children !== void 0 ? children : placeholder }), selectedValues.length > 0 ? _jsx(Chip, { size: "sm", children: selectedValues.length }) : null] }), _jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [onClear && selectedValues.length > 0 ? _jsx(ClearButton, { onClick: onClear }) : null, icon] })] }) })), children: _jsxs(Menu, { onKeyDown: handleCombinedKeyDown, children: [searchable ? (_jsx(Menu.Item, { children: _jsx(Input, { ref: searchInputRef, value: searchQuery, onChange: e => setSearchQuery(e.target.value), onKeyDown: handleCombinedKeyDown, placeholder: searchPlaceholder, icon: _jsx(Search, { size: 16 }), fullWidth: true }) })) : null, filteredOptions.map((option, index) => {
|
|
104
|
+
}, dataCy: dataCy, fullWidth: fullWidth, autoFocusContent: false, returnFocus: true, trigger: (onClick, icon, isOpen) => (_jsx(Button, { variant: variant, onClick: onClick, onKeyDown: handleCombinedKeyDown, size: size, fullWidth: fullWidth, disabled: disabled, "aria-haspopup": "menu", "aria-expanded": !!isOpen, children: _jsxs("span", { className: "dbc-flex dbc-justify-between dbc-items-center dbc-gap-xxs", style: { width: '100%' }, children: [_jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [_jsx("span", { children: children !== null && children !== void 0 ? children : placeholder }), selectedValues.length > 0 ? _jsx(Chip, { size: "sm", children: selectedValues.length }) : null] }), _jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [onClear && selectedValues.length > 0 ? _jsx(ClearButton, { onClick: onClear }) : null, _jsx("span", { style: { color: 'var(--color-fg-subtle)', display: 'inline-flex' }, children: icon })] })] }) })), children: _jsxs(Menu, { onKeyDown: handleCombinedKeyDown, children: [searchable ? (_jsx(Menu.Item, { children: _jsx(Input, { ref: searchInputRef, value: searchQuery, onChange: e => setSearchQuery(e.target.value), onKeyDown: handleCombinedKeyDown, placeholder: searchPlaceholder, icon: _jsx(Search, { size: 16 }), fullWidth: true }) })) : null, filteredOptions.map((option, index) => {
|
|
105
105
|
const isSelected = selectedSet.has(option.value);
|
|
106
106
|
const isActive = index === activeIndex;
|
|
107
107
|
return (_jsx(Menu.Item, { active: isActive, children: _jsxs("button", { ref: el => {
|
|
@@ -168,7 +168,7 @@ export function Select({ label, error, helpText, orientation = 'vertical', label
|
|
|
168
168
|
returnFocus: true, trigger: (toggle, icon, isOpen) => (_jsx(Button, { disabled: disabled, ...(tooltipEnabled ? triggerProps : {}), id: controlId, "data-cy": dataCy !== null && dataCy !== void 0 ? dataCy : 'select-button', onKeyDown: handleKeyDown, fullWidth: fullWidth, variant: variant, onClick: e => {
|
|
169
169
|
resetActiveToSelected();
|
|
170
170
|
toggle(e);
|
|
171
|
-
}, size: size, type: "button", "data-forminput": true, "aria-haspopup": "listbox", "aria-expanded": !!isOpen, "aria-controls": listboxId, "aria-invalid": Boolean(error) || undefined, "aria-describedby": describedBy, children: _jsxs("span", { className: "dbc-flex dbc-justify-between dbc-items-center dbc-gap-xxs", style: { width: '100%' }, children: [_jsx("span", { children: selected ? selected.label : _jsx("span", { className: "dbc-muted-text", children: placeholder }) }), _jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [onClear && selected && _jsx(ClearButton, { onClick: onClear }), icon] })] }) })), children: _jsx(Menu, { onKeyDown: handleKeyDown, role: "listbox", children: options.map((opt, index) => {
|
|
171
|
+
}, size: size, type: "button", "data-forminput": true, "aria-haspopup": "listbox", "aria-expanded": !!isOpen, "aria-controls": listboxId, "aria-invalid": Boolean(error) || undefined, "aria-describedby": describedBy, children: _jsxs("span", { className: "dbc-flex dbc-justify-between dbc-items-center dbc-gap-xxs", style: { width: '100%' }, children: [_jsx("span", { children: selected ? selected.label : _jsx("span", { className: "dbc-muted-text", children: placeholder }) }), _jsxs("span", { className: "dbc-flex dbc-items-center dbc-gap-xxs", children: [onClear && selected && _jsx(ClearButton, { onClick: onClear }), _jsx("span", { style: { color: 'var(--color-fg-subtle)', display: 'inline-flex' }, children: icon })] })] }) })), children: _jsx(Menu, { onKeyDown: handleKeyDown, role: "listbox", children: options.map((opt, index) => {
|
|
172
172
|
const isSelected = typeof opt.value === 'object' && typeof selectedValue === 'object' && datakey
|
|
173
173
|
? (selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue[datakey]) === opt.value[datakey]
|
|
174
174
|
: opt.value === selectedValue;
|
|
@@ -14,7 +14,7 @@ export function Typeahead({ options, mode = 'single', multiValueDisplayMode = 'c
|
|
|
14
14
|
const optionRefs = useRef([]);
|
|
15
15
|
const interactingWithOptionsRef = useRef(false);
|
|
16
16
|
const listboxId = useId();
|
|
17
|
-
const { onFocus: inputPropsOnFocus, onBlur: inputPropsOnBlur, onKeyDown: inputPropsOnKeyDown, onMouseDown: inputPropsOnMouseDown, onClear: inputPropsOnClear, startAdornment: inputPropsStartAdornment, ...passthroughInputProps } = inputProps !== null && inputProps !== void 0 ? inputProps : {};
|
|
17
|
+
const { onFocus: inputPropsOnFocus, onBlur: inputPropsOnBlur, onKeyDown: inputPropsOnKeyDown, onMouseDown: inputPropsOnMouseDown, onClear: inputPropsOnClear, startAdornment: inputPropsStartAdornment, endAdornment: inputPropsEndAdornment, ...passthroughInputProps } = inputProps !== null && inputProps !== void 0 ? inputProps : {};
|
|
18
18
|
const selectedOption = useMemo(() => {
|
|
19
19
|
var _a;
|
|
20
20
|
if (mode === 'multi')
|
|
@@ -284,9 +284,9 @@ export function Typeahead({ options, mode = 'single', multiValueDisplayMode = 'c
|
|
|
284
284
|
else {
|
|
285
285
|
setActiveIndex(-1);
|
|
286
286
|
}
|
|
287
|
-
}, fullWidth: fullWidth, autoFocusContent: false, returnFocus: false, trigger: openPopover => {
|
|
287
|
+
}, fullWidth: fullWidth, autoFocusContent: false, returnFocus: false, trigger: (openPopover, icon) => {
|
|
288
288
|
var _a, _b, _c, _d, _e;
|
|
289
|
-
return (_jsx(Input, { ...passthroughInputProps, ref: inputRef, value: inputValue, startAdornment: multiSelectionAdornment || inputPropsStartAdornment ? (_jsxs(_Fragment, { children: [multiSelectionAdornment, inputPropsStartAdornment] })) : undefined, onFocus: e => {
|
|
289
|
+
return (_jsx(Input, { ...passthroughInputProps, ref: inputRef, value: inputValue, startAdornment: multiSelectionAdornment || inputPropsStartAdornment ? (_jsxs(_Fragment, { children: [multiSelectionAdornment, inputPropsStartAdornment] })) : undefined, endAdornment: inputPropsEndAdornment || icon ? (_jsxs(_Fragment, { children: [inputPropsEndAdornment, icon] })) : undefined, onFocus: e => {
|
|
290
290
|
inputPropsOnFocus === null || inputPropsOnFocus === void 0 ? void 0 : inputPropsOnFocus(e);
|
|
291
291
|
if (e.defaultPrevented)
|
|
292
292
|
return;
|