Files
klz-cables.com/.pnpm-store/v10/files/bb/1c929d2d9474dd2244b20291e0f2a6effe23e980d674ace05adff294542b22199ab13c96be01e5bdc581cba013080c230302c9090f88744db8e6e49ea61d52
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

193 lines
6.3 KiB
Plaintext

'use client';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useModal } from '@faceless-ui/modal';
import { getTranslation } from '@payloadcms/translations';
import { unflatten } from 'payload/shared';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { Button } from '../../../elements/Button/index.js';
import { Form } from '../../../forms/Form/index.js';
import { FieldPathContext } from '../../../forms/RenderFields/context.js';
import { RenderField } from '../../../forms/RenderFields/RenderField.js';
import { XIcon } from '../../../icons/X/index.js';
import { useAuth } from '../../../providers/Auth/index.js';
import { useServerFunctions } from '../../../providers/ServerFunctions/index.js';
import { useTranslation } from '../../../providers/Translation/index.js';
import { abortAndIgnore, handleAbortRef } from '../../../utilities/abortAndIgnore.js';
import { FieldSelect } from '../../FieldSelect/index.js';
import { useFormsManager } from '../FormsManager/index.js';
import { baseClass } from './index.js';
import './index.scss';
import '../../../forms/RenderFields/index.scss';
export const EditManyBulkUploadsDrawerContent = props => {
const {
collection: {
fields,
labels: {
plural,
singular
}
} = {},
collection,
drawerSlug,
forms
} = props;
const [isInitializing, setIsInitializing] = useState(false);
const {
permissions
} = useAuth();
const {
i18n,
t
} = useTranslation();
const {
closeModal
} = useModal();
const {
bulkUpdateForm
} = useFormsManager();
const {
getFormState
} = useServerFunctions();
const abortFormStateRef = React.useRef(null);
const [selectedFields, setSelectedFields] = useState([]);
const collectionPermissions = permissions?.collections?.[collection.slug];
const select = useMemo(() => {
return unflatten(selectedFields.reduce((acc, option) => {
acc[option.value.path] = true;
return acc;
}, {}));
}, [selectedFields]);
const onChange = useCallback(async ({
formState: prevFormState,
submitted
}) => {
const controller = handleAbortRef(abortFormStateRef);
const {
state
} = await getFormState({
collectionSlug: collection.slug,
docPermissions: collectionPermissions,
docPreferences: null,
formState: prevFormState,
operation: 'update',
schemaPath: collection.slug,
select,
signal: controller.signal,
skipValidation: !submitted
});
abortFormStateRef.current = null;
return state;
}, [getFormState, collection, collectionPermissions, select]);
useEffect(() => {
const abortFormState = abortFormStateRef.current;
return () => {
abortAndIgnore(abortFormState);
};
}, []);
const handleSubmit = useCallback(formState => {
const pairedData = selectedFields.reduce((acc_0, option_0) => {
if (formState[option_0.value.path]) {
acc_0[option_0.value.path] = formState[option_0.value.path].value;
}
return acc_0;
}, {});
void bulkUpdateForm(pairedData, () => closeModal(drawerSlug));
}, [closeModal, drawerSlug, bulkUpdateForm, selectedFields]);
const onFieldSelect = useCallback(async ({
dispatchFields,
formState: formState_0,
selected
}) => {
setIsInitializing(true);
setSelectedFields(selected || []);
const {
state: state_0
} = await getFormState({
collectionSlug: collection.slug,
docPermissions: collectionPermissions,
docPreferences: null,
formState: formState_0,
operation: 'update',
schemaPath: collection.slug,
select: unflatten(selected.reduce((acc_1, option_1) => {
acc_1[option_1.value.path] = true;
return acc_1;
}, {})),
skipValidation: true
});
dispatchFields({
type: 'UPDATE_MANY',
formState: state_0
});
setIsInitializing(false);
}, [getFormState, collection, collectionPermissions]);
return /*#__PURE__*/_jsxs("div", {
className: `${baseClass}__main`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__header`,
children: [/*#__PURE__*/_jsx("h2", {
className: `${baseClass}__header__title`,
children: t('general:editingLabel', {
count: forms.length,
label: getTranslation(forms.length > 1 ? plural : singular, i18n)
})
}), /*#__PURE__*/_jsx("button", {
"aria-label": t('general:close'),
className: `${baseClass}__header__close`,
id: `close-drawer__${drawerSlug}`,
onClick: () => closeModal(drawerSlug),
type: "button",
children: /*#__PURE__*/_jsx(XIcon, {})
})]
}), /*#__PURE__*/_jsxs(Form, {
className: `${baseClass}__form`,
isInitializing: isInitializing,
onChange: [onChange],
onSubmit: handleSubmit,
children: [/*#__PURE__*/_jsx(FieldSelect, {
fields: fields,
onChange: onFieldSelect,
permissions: collectionPermissions.fields
}), selectedFields.length === 0 ? null : /*#__PURE__*/_jsx("div", {
className: "render-fields",
children: /*#__PURE__*/_jsx(FieldPathContext, {
value: undefined,
children: selectedFields.map((option_2, i) => {
const {
value: {
field,
fieldPermissions,
path
}
} = option_2;
return /*#__PURE__*/_jsx(RenderField, {
clientFieldConfig: field,
indexPath: "",
parentPath: "",
parentSchemaPath: "",
path: path,
permissions: fieldPermissions
}, `${path}-${i}`);
})
})
}), /*#__PURE__*/_jsx("div", {
className: `${baseClass}__sidebar-wrap`,
children: /*#__PURE__*/_jsx("div", {
className: `${baseClass}__sidebar`,
children: /*#__PURE__*/_jsx("div", {
className: `${baseClass}__sidebar-sticky-wrap`,
children: /*#__PURE__*/_jsx("div", {
className: `${baseClass}__document-actions`,
children: /*#__PURE__*/_jsx(Button, {
type: "submit",
children: t('general:applyChanges')
})
})
})
})
})]
})]
});
};
//# sourceMappingURL=DrawerContent.js.map