Files
klz-cables.com/.pnpm-store/v10/files/3e/efaee62704bc9bbcc454153969bbfbcca191c234988f9abcaa59d5b064425dd3ad090e24eeb2a79a2bc2393e27eeb5346dd36f6b3c51c5f1e6bc0cf3353fa8
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

253 lines
9.1 KiB
Plaintext

'use client';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { CheckboxInput, ChevronIcon, formatTimeToNow, Gutter, Pill, useConfig, useDocumentInfo, useLocale, useRouteTransition, useTranslation } from '@payloadcms/ui';
import { usePathname, useRouter, useSearchParams } from 'next/navigation.js';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { Restore } from '../Restore/index.js';
import { SelectComparison } from '../SelectComparison/index.js';
import { SelectLocales } from '../SelectLocales/index.js';
import { SelectedLocalesContext } from './SelectedLocalesContext.js';
import { SetStepNav } from './SetStepNav.js';
const baseClass = 'view-version';
export const DefaultVersionView = ({
canUpdate,
modifiedOnly: modifiedOnlyProp,
RenderedDiff,
selectedLocales: selectedLocalesFromProps,
versionFromCreatedAt,
versionFromID,
versionFromOptions,
versionToCreatedAt,
versionToCreatedAtFormatted,
VersionToCreatedAtLabel,
versionToID,
versionToStatus
}) => {
const {
config,
getEntityConfig
} = useConfig();
const {
code
} = useLocale();
const {
i18n,
t
} = useTranslation();
const [locales, setLocales] = useState([]);
const [localeSelectorOpen, setLocaleSelectorOpen] = React.useState(false);
useEffect(() => {
if (config.localization) {
const updatedLocales = config.localization.locales.map(locale => {
let label = locale.label;
if (typeof locale.label !== 'string' && locale.label[code]) {
label = locale.label[code];
}
return {
name: locale.code,
Label: label,
selected: selectedLocalesFromProps.includes(locale.code)
};
});
setLocales(updatedLocales);
}
}, [code, config.localization, selectedLocalesFromProps]);
const {
id: originalDocID,
collectionSlug,
globalSlug,
isTrashed
} = useDocumentInfo();
const {
startRouteTransition
} = useRouteTransition();
const {
collectionConfig,
globalConfig
} = useMemo(() => {
return {
collectionConfig: getEntityConfig({
collectionSlug
}),
globalConfig: getEntityConfig({
globalSlug
})
};
}, [collectionSlug, globalSlug, getEntityConfig]);
const router = useRouter();
const pathname = usePathname();
const searchParams = useSearchParams();
const [modifiedOnly, setModifiedOnly] = useState(modifiedOnlyProp);
const updateSearchParams = useCallback(args => {
// If the selected comparison doc or locales change, update URL params so that version page
// This is so that RSC can update the version comparison state
const current = new URLSearchParams(Array.from(searchParams.entries()));
if (args?.versionFromID) {
current.set('versionFrom', args?.versionFromID);
}
if (args?.selectedLocales) {
if (!args.selectedLocales.length) {
current.delete('localeCodes');
} else {
const selectedLocaleCodes = [];
for (const locale_0 of args.selectedLocales) {
if (locale_0.selected) {
selectedLocaleCodes.push(locale_0.name);
}
}
current.set('localeCodes', JSON.stringify(selectedLocaleCodes));
}
}
if (args?.modifiedOnly === false) {
current.set('modifiedOnly', 'false');
} else if (args?.modifiedOnly === true) {
current.delete('modifiedOnly');
}
const search = current.toString();
const query = search ? `?${search}` : '';
startRouteTransition(() => router.push(`${pathname}${query}`));
}, [pathname, router, searchParams, startRouteTransition]);
const onToggleModifiedOnly = useCallback(event => {
const newModified = event.target.checked;
setModifiedOnly(newModified);
updateSearchParams({
modifiedOnly: newModified
});
}, [updateSearchParams]);
const onChangeSelectedLocales = useCallback(({
locales: locales_0
}) => {
setLocales(locales_0);
updateSearchParams({
selectedLocales: locales_0
});
}, [updateSearchParams]);
const onChangeVersionFrom = useCallback(val => {
updateSearchParams({
versionFromID: val.value
});
}, [updateSearchParams]);
const {
localization
} = config;
const versionToTimeAgo = useMemo(() => t('version:versionAgo', {
distance: formatTimeToNow({
date: versionToCreatedAt,
i18n
})
}), [versionToCreatedAt, i18n, t]);
const versionFromTimeAgo = useMemo(() => versionFromCreatedAt ? t('version:versionAgo', {
distance: formatTimeToNow({
date: versionFromCreatedAt,
i18n
})
}) : undefined, [versionFromCreatedAt, i18n, t]);
return /*#__PURE__*/_jsxs("main", {
className: baseClass,
children: [/*#__PURE__*/_jsxs(Gutter, {
className: `${baseClass}-controls-top`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}-controls-top__wrapper`,
children: [/*#__PURE__*/_jsx("h2", {
children: i18n.t('version:compareVersions')
}), /*#__PURE__*/_jsxs("div", {
className: `${baseClass}-controls-top__wrapper-actions`,
children: [/*#__PURE__*/_jsx("span", {
className: `${baseClass}__modifiedCheckBox`,
children: /*#__PURE__*/_jsx(CheckboxInput, {
checked: modifiedOnly,
id: 'modifiedOnly',
label: i18n.t('version:modifiedOnly'),
onToggle: onToggleModifiedOnly
})
}), localization && /*#__PURE__*/_jsxs(Pill, {
"aria-controls": `${baseClass}-locales`,
"aria-expanded": localeSelectorOpen,
className: `${baseClass}__toggle-locales`,
icon: /*#__PURE__*/_jsx(ChevronIcon, {
direction: localeSelectorOpen ? 'up' : 'down'
}),
onClick: () => setLocaleSelectorOpen(localeSelectorOpen_0 => !localeSelectorOpen_0),
pillStyle: "light",
size: "small",
children: [/*#__PURE__*/_jsxs("span", {
className: `${baseClass}__toggle-locales-label`,
children: [t('general:locales'), ":", ' ']
}), /*#__PURE__*/_jsx("span", {
className: `${baseClass}__toggle-locales-list`,
children: locales.filter(locale_1 => locale_1.selected).map(locale_2 => locale_2.name).join(', ')
})]
})]
})]
}), localization && /*#__PURE__*/_jsx(SelectLocales, {
locales: locales,
localeSelectorOpen: localeSelectorOpen,
onChange: onChangeSelectedLocales
})]
}), /*#__PURE__*/_jsx(Gutter, {
className: `${baseClass}-controls-bottom`,
children: /*#__PURE__*/_jsxs("div", {
className: `${baseClass}-controls-bottom__wrapper`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__version-from`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__version-from-labels`,
children: [/*#__PURE__*/_jsx("span", {
children: t('version:comparingAgainst')
}), versionFromTimeAgo && /*#__PURE__*/_jsx("span", {
className: `${baseClass}__time-elapsed`,
children: versionFromTimeAgo
})]
}), /*#__PURE__*/_jsx(SelectComparison, {
collectionSlug: collectionSlug,
docID: originalDocID,
globalSlug: globalSlug,
onChange: onChangeVersionFrom,
versionFromID: versionFromID,
versionFromOptions: versionFromOptions
})]
}), /*#__PURE__*/_jsxs("div", {
className: `${baseClass}__version-to`,
children: [/*#__PURE__*/_jsxs("div", {
className: `${baseClass}__version-to-labels`,
children: [/*#__PURE__*/_jsx("span", {
children: t('version:currentlyViewing')
}), /*#__PURE__*/_jsx("span", {
className: `${baseClass}__time-elapsed`,
children: versionToTimeAgo
})]
}), /*#__PURE__*/_jsxs("div", {
className: `${baseClass}__version-to-version`,
children: [VersionToCreatedAtLabel, canUpdate && !isTrashed && /*#__PURE__*/_jsx(Restore, {
className: `${baseClass}__restore`,
collectionConfig: collectionConfig,
globalConfig: globalConfig,
label: collectionConfig?.labels.singular || globalConfig?.label,
originalDocID: originalDocID,
status: versionToStatus,
versionDateFormatted: versionToCreatedAtFormatted,
versionID: versionToID
})]
})]
})]
})
}), /*#__PURE__*/_jsx(SetStepNav, {
collectionConfig: collectionConfig,
globalConfig: globalConfig,
id: originalDocID,
isTrashed: isTrashed,
versionToCreatedAtFormatted: versionToCreatedAtFormatted,
versionToID: versionToID
}), /*#__PURE__*/_jsx(Gutter, {
className: `${baseClass}__diff-wrap`,
children: /*#__PURE__*/_jsx(SelectedLocalesContext, {
value: {
selectedLocales: locales.map(locale_3 => locale_3.name)
},
children: versionToCreatedAt && RenderedDiff
})
})]
});
};
//# sourceMappingURL=index.js.map