Files
klz-cables.com/.pnpm-store/v10/files/35/68958615280da945fc29543503d3861cdea96ed7483d5251f2e191de1378f6cc7375ab52268169d33b92ce7eb963bfff13aa97a7cbe9c703c3eacb03711f91
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

173 lines
5.5 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 { RelationshipInput } from './Input.js';
import './index.scss';
export { RelationshipInput };
const RelationshipFieldComponent = props => {
const {
field,
field: {
admin: {
allowCreate = true,
allowEdit = true,
appearance = 'select',
className,
description,
isSortable = true,
placeholder,
sortOptions
} = {},
hasMany,
label,
localized,
relationTo: relationToProp,
required
},
path: pathFromProps,
readOnly,
validate
} = props;
const memoizedValidate = useCallback((value, validationOptions) => {
if (typeof validate === 'function') {
return validate(value, {
...validationOptions,
required
});
}
}, [validate, required]);
const {
customComponents: {
AfterInput,
BeforeInput,
Description,
Error,
Label
} = {},
disabled,
filterOptions,
initialValue,
path,
setValue,
showError,
value: value_0
} = useField({
potentiallyStalePath: pathFromProps,
validate: memoizedValidate
});
const styles = useMemo(() => mergeFieldStyles(field), [field]);
const isPolymorphic = Array.isArray(relationToProp);
const [relationTo] = React.useState(() => Array.isArray(relationToProp) ? relationToProp : [relationToProp]);
const handleChangeHasMulti = useCallback(newValue => {
if (!newValue) {
setValue(null, newValue === value_0);
return;
}
let disableFormModification = false;
if (isPolymorphic) {
disableFormModification = Array.isArray(value_0) && Array.isArray(newValue) && value_0.length === newValue.length && value_0.every((val, idx) => {
const newVal = newValue[idx];
return val.value === newVal.value && val.relationTo === newVal.relationTo;
});
} else {
disableFormModification = Array.isArray(value_0) && Array.isArray(newValue) && value_0.length === newValue.length && value_0.every((val_0, idx_0) => val_0 === newValue[idx_0].value);
}
const dataToSet = newValue.map(val_1 => {
if (isPolymorphic) {
return val_1;
} else {
return val_1.value;
}
});
setValue(dataToSet, disableFormModification);
}, [isPolymorphic, setValue, value_0]);
const handleChangeSingle = useCallback(newValue_0 => {
if (!newValue_0) {
setValue(null, newValue_0 === value_0);
return;
}
let disableFormModification_0 = false;
if (isPolymorphic) {
disableFormModification_0 = value_0 && newValue_0 && value_0.value === newValue_0.value && value_0.relationTo === newValue_0.relationTo;
} else {
disableFormModification_0 = value_0 && newValue_0 && value_0 === newValue_0.value;
}
const dataToSet_0 = isPolymorphic ? newValue_0 : newValue_0.value;
setValue(dataToSet_0, disableFormModification_0);
}, [isPolymorphic, setValue, value_0]);
const memoizedValue = React.useMemo(() => {
if (hasMany === true) {
return Array.isArray(value_0) ? value_0.map(val_2 => {
return isPolymorphic ? val_2 : {
relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,
value: val_2
};
}) : value_0;
} else {
return value_0 ? isPolymorphic ? value_0 : {
relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,
value: value_0
} : value_0;
}
}, [hasMany, value_0, isPolymorphic, relationTo]);
const memoizedInitialValue = React.useMemo(() => {
if (hasMany === true) {
return Array.isArray(initialValue) ? initialValue.map(val_3 => {
return isPolymorphic ? val_3 : {
relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,
value: val_3
};
}) : initialValue;
} else {
return initialValue ? isPolymorphic ? initialValue : {
relationTo: Array.isArray(relationTo) ? relationTo[0] : relationTo,
value: initialValue
} : initialValue;
}
}, [initialValue, isPolymorphic, relationTo, hasMany]);
return /*#__PURE__*/_jsx(RelationshipInput, {
AfterInput: AfterInput,
allowCreate: allowCreate,
allowEdit: allowEdit,
appearance: appearance,
BeforeInput: BeforeInput,
className: className,
Description: Description,
description: description,
Error: Error,
filterOptions: filterOptions,
formatDisplayedOptions: isPolymorphic ? undefined : options => options.map(opt => opt.options).flat(),
isSortable: isSortable,
Label: Label,
label: label,
localized: localized,
maxResultsPerRequest: 10,
maxRows: field?.maxRows,
minRows: field?.minRows,
path: path,
placeholder: placeholder,
readOnly: readOnly || disabled,
relationTo: relationTo,
required: required,
showError: showError,
sortOptions: sortOptions,
style: styles,
...(hasMany === true ? {
hasMany: true,
initialValue: memoizedInitialValue,
onChange: handleChangeHasMulti,
value: memoizedValue
} : {
hasMany: false,
initialValue: memoizedInitialValue,
onChange: handleChangeSingle,
value: memoizedValue
})
});
};
export const RelationshipField = withCondition(RelationshipFieldComponent);
//# sourceMappingURL=index.js.map