Files
klz-cables.com/.pnpm-store/v10/files/b5/7aa71f53d6de29421b8cf63750514de28a59b08ae13a1556261c5f100109bddd6d6c8ade098d7d6a56526a02477dad679f585245eeb33ded58154e37a59ade
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

120 lines
3.3 KiB
Plaintext

'use client';
import { jsx as _jsx } from "react/jsx-runtime";
import React, { useCallback, useMemo } from 'react';
import { useField } from '../../forms/useField/index.js';
import { withCondition } from '../../forms/withCondition/index.js';
import { mergeFieldStyles } from '../mergeFieldStyles.js';
import { SelectInput } from './Input.js';
export const formatOptions = options => options.map(option => {
if (typeof option === 'object' && (option.value || option.value === '')) {
return option;
}
return {
label: option,
value: option
};
});
const SelectFieldComponent = props => {
const {
field,
field: {
name,
admin: {
className,
description,
isClearable = true,
isSortable = true,
placeholder
} = {},
hasMany = false,
label,
localized,
options: optionsFromProps = [],
required
},
onChange: onChangeFromProps,
path: pathFromProps,
readOnly,
validate
} = props;
const options = React.useMemo(() => formatOptions(optionsFromProps), [optionsFromProps]);
const memoizedValidate = useCallback((value, validationOptions) => {
if (typeof validate === 'function') {
return validate(value, {
...validationOptions,
hasMany,
options,
required
});
}
}, [validate, required, hasMany, options]);
const {
customComponents: {
AfterInput,
BeforeInput,
Description,
Error,
Label
} = {},
disabled,
path,
selectFilterOptions,
setValue,
showError,
value: value_0
} = useField({
potentiallyStalePath: pathFromProps,
validate: memoizedValidate
});
const onChange = useCallback(selectedOption => {
if (!readOnly || disabled) {
let newValue = null;
if (selectedOption && hasMany) {
if (Array.isArray(selectedOption)) {
newValue = selectedOption.map(option => option.value);
} else {
newValue = [];
}
} else if (selectedOption && !Array.isArray(selectedOption)) {
newValue = selectedOption.value;
}
if (typeof onChangeFromProps === 'function') {
onChangeFromProps(newValue);
}
setValue(newValue);
}
}, [readOnly, disabled, hasMany, setValue, onChangeFromProps]);
const styles = useMemo(() => mergeFieldStyles(field), [field]);
return /*#__PURE__*/_jsx(SelectInput, {
AfterInput: AfterInput,
BeforeInput: BeforeInput,
className: className,
Description: Description,
description: description,
Error: Error,
filterOption: selectFilterOptions ? ({
label: label_0,
value: value_1
}, search) => selectFilterOptions?.some(option_0 => (typeof option_0 === 'string' ? option_0 : option_0.value) === value_1) && label_0.toLowerCase().includes(search.toLowerCase()) : undefined,
hasMany: hasMany,
isClearable: isClearable,
isSortable: isSortable,
Label: Label,
label: label,
localized: localized,
name: name,
onChange: onChange,
options: options,
path: path,
placeholder: placeholder,
readOnly: readOnly || disabled,
required: required,
showError: showError,
style: styles,
value: value_0
});
};
export const SelectField = withCondition(SelectFieldComponent);
export { SelectInput };
//# sourceMappingURL=index.js.map