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
295 lines
9.0 KiB
Plaintext
295 lines
9.0 KiB
Plaintext
'use client';
|
|
|
|
import { c as _c } from "react/compiler-runtime";
|
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
import { getTranslation } from '@payloadcms/translations';
|
|
import { hasAutosaveEnabled } from 'payload/shared';
|
|
import React, { Fragment, useCallback, useEffect, useState } from 'react';
|
|
import { useRelatedCollections } from '../../hooks/useRelatedCollections.js';
|
|
import { PlusIcon } from '../../icons/Plus/index.js';
|
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
import { Button } from '../Button/index.js';
|
|
import { useDocumentDrawer } from '../DocumentDrawer/index.js';
|
|
import { Popup } from '../Popup/index.js';
|
|
import * as PopupList from '../Popup/PopupButtonList/index.js';
|
|
import './index.scss';
|
|
import { Tooltip } from '../Tooltip/index.js';
|
|
const baseClass = 'relationship-add-new';
|
|
export const AddNewRelation = t0 => {
|
|
const $ = _c(46);
|
|
const {
|
|
Button: ButtonFromProps,
|
|
hasMany,
|
|
onChange,
|
|
path,
|
|
relationTo,
|
|
unstyled,
|
|
value
|
|
} = t0;
|
|
const relatedCollections = useRelatedCollections(relationTo);
|
|
const {
|
|
permissions
|
|
} = useAuth();
|
|
const [show, setShow] = useState(false);
|
|
const [selectedCollection, setSelectedCollection] = useState();
|
|
const relatedToMany = relatedCollections.length > 1;
|
|
let t1;
|
|
if ($[0] !== relatedCollections[0] || $[1] !== relatedToMany) {
|
|
t1 = () => !relatedToMany ? relatedCollections[0] : undefined;
|
|
$[0] = relatedCollections[0];
|
|
$[1] = relatedToMany;
|
|
$[2] = t1;
|
|
} else {
|
|
t1 = $[2];
|
|
}
|
|
const [collectionConfig, setCollectionConfig] = useState(t1);
|
|
const [popupOpen, setPopupOpen] = useState(false);
|
|
const {
|
|
i18n,
|
|
t
|
|
} = useTranslation();
|
|
const [showTooltip, setShowTooltip] = useState(false);
|
|
const t2 = collectionConfig?.slug;
|
|
let t3;
|
|
if ($[3] !== t2) {
|
|
t3 = {
|
|
collectionSlug: t2
|
|
};
|
|
$[3] = t2;
|
|
$[4] = t3;
|
|
} else {
|
|
t3 = $[4];
|
|
}
|
|
const [DocumentDrawer, DocumentDrawerToggler, t4] = useDocumentDrawer(t3);
|
|
const {
|
|
isDrawerOpen,
|
|
toggleDrawer
|
|
} = t4;
|
|
let t5;
|
|
if ($[5] !== collectionConfig || $[6] !== hasMany || $[7] !== onChange || $[8] !== value) {
|
|
t5 = t6 => {
|
|
const {
|
|
doc,
|
|
operation
|
|
} = t6;
|
|
if (operation === "create" || operation === "update" && hasAutosaveEnabled(collectionConfig)) {
|
|
let isNewValue;
|
|
if (!value) {
|
|
isNewValue = true;
|
|
} else {
|
|
isNewValue = Array.isArray(value) ? !value.some(v => v && v.value === doc.id) : value.value !== doc.id;
|
|
}
|
|
if (isNewValue) {
|
|
if (hasMany === true) {
|
|
onChange([...(Array.isArray(value) ? value : []), {
|
|
relationTo: collectionConfig?.slug,
|
|
value: doc.id
|
|
}]);
|
|
} else {
|
|
onChange({
|
|
relationTo: collectionConfig?.slug,
|
|
value: doc.id
|
|
});
|
|
}
|
|
}
|
|
setSelectedCollection(undefined);
|
|
}
|
|
};
|
|
$[5] = collectionConfig;
|
|
$[6] = hasMany;
|
|
$[7] = onChange;
|
|
$[8] = value;
|
|
$[9] = t5;
|
|
} else {
|
|
t5 = $[9];
|
|
}
|
|
const onSave = t5;
|
|
let t6;
|
|
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
t6 = state => {
|
|
setPopupOpen(state);
|
|
};
|
|
$[10] = t6;
|
|
} else {
|
|
t6 = $[10];
|
|
}
|
|
const onPopupToggle = t6;
|
|
let t7;
|
|
let t8;
|
|
if ($[11] !== permissions || $[12] !== relatedCollections) {
|
|
t7 = () => {
|
|
if (permissions) {
|
|
if (relatedCollections.length === 1) {
|
|
setShow(permissions.collections[relatedCollections[0]?.slug]?.create);
|
|
} else {
|
|
setShow(relatedCollections.some(collection => permissions.collections[collection?.slug]?.create));
|
|
}
|
|
}
|
|
};
|
|
t8 = [permissions, relatedCollections];
|
|
$[11] = permissions;
|
|
$[12] = relatedCollections;
|
|
$[13] = t7;
|
|
$[14] = t8;
|
|
} else {
|
|
t7 = $[13];
|
|
t8 = $[14];
|
|
}
|
|
useEffect(t7, t8);
|
|
let t10;
|
|
let t9;
|
|
if ($[15] !== relatedCollections || $[16] !== relatedToMany || $[17] !== selectedCollection) {
|
|
t9 = () => {
|
|
if (relatedToMany && selectedCollection) {
|
|
setCollectionConfig(relatedCollections.find(collection_0 => collection_0?.slug === selectedCollection));
|
|
}
|
|
};
|
|
t10 = [selectedCollection, relatedToMany, relatedCollections];
|
|
$[15] = relatedCollections;
|
|
$[16] = relatedToMany;
|
|
$[17] = selectedCollection;
|
|
$[18] = t10;
|
|
$[19] = t9;
|
|
} else {
|
|
t10 = $[18];
|
|
t9 = $[19];
|
|
}
|
|
useEffect(t9, t10);
|
|
let t11;
|
|
let t12;
|
|
if ($[20] !== collectionConfig || $[21] !== relatedToMany || $[22] !== toggleDrawer) {
|
|
t11 = () => {
|
|
if (relatedToMany && collectionConfig) {
|
|
toggleDrawer();
|
|
setSelectedCollection(undefined);
|
|
}
|
|
};
|
|
t12 = [toggleDrawer, relatedToMany, collectionConfig];
|
|
$[20] = collectionConfig;
|
|
$[21] = relatedToMany;
|
|
$[22] = toggleDrawer;
|
|
$[23] = t11;
|
|
$[24] = t12;
|
|
} else {
|
|
t11 = $[23];
|
|
t12 = $[24];
|
|
}
|
|
useEffect(t11, t12);
|
|
let t13;
|
|
let t14;
|
|
if ($[25] !== isDrawerOpen || $[26] !== relatedToMany) {
|
|
t13 = () => {
|
|
if (relatedToMany && !isDrawerOpen) {
|
|
setCollectionConfig(undefined);
|
|
}
|
|
};
|
|
t14 = [isDrawerOpen, relatedToMany];
|
|
$[25] = isDrawerOpen;
|
|
$[26] = relatedToMany;
|
|
$[27] = t13;
|
|
$[28] = t14;
|
|
} else {
|
|
t13 = $[27];
|
|
t14 = $[28];
|
|
}
|
|
useEffect(t13, t14);
|
|
const t15 = relatedCollections[0]?.labels.singular;
|
|
let t16;
|
|
let t17;
|
|
if ($[29] !== ButtonFromProps || $[30] !== DocumentDrawer || $[31] !== DocumentDrawerToggler || $[32] !== collectionConfig || $[33] !== i18n || $[34] !== onSave || $[35] !== path || $[36] !== permissions || $[37] !== popupOpen || $[38] !== relatedCollections || $[39] !== show || $[40] !== showTooltip || $[41] !== t || $[42] !== t15 || $[43] !== unstyled) {
|
|
t17 = Symbol.for("react.early_return_sentinel");
|
|
bb0: {
|
|
const label = t("fields:addNewLabel", {
|
|
label: getTranslation(t15, i18n)
|
|
});
|
|
if (!show) {
|
|
t17 = null;
|
|
break bb0;
|
|
}
|
|
t16 = _jsxs("div", {
|
|
className: baseClass,
|
|
id: `${path}-add-new`,
|
|
children: [relatedCollections.length === 1 && _jsxs(Fragment, {
|
|
children: [_jsx(DocumentDrawerToggler, {
|
|
className: [`${baseClass}__add-button`, unstyled && `${baseClass}__add-button--unstyled`].filter(Boolean).join(" "),
|
|
onClick: () => {
|
|
setShowTooltip(false);
|
|
},
|
|
onMouseEnter: () => setShowTooltip(true),
|
|
onMouseLeave: () => setShowTooltip(false),
|
|
children: ButtonFromProps ? ButtonFromProps : _jsxs(Fragment, {
|
|
children: [_jsx(Tooltip, {
|
|
className: `${baseClass}__tooltip`,
|
|
show: showTooltip,
|
|
children: label
|
|
}), _jsx(PlusIcon, {})]
|
|
})
|
|
}), _jsx(DocumentDrawer, {
|
|
onSave
|
|
})]
|
|
}), relatedCollections.length > 1 && _jsxs(Fragment, {
|
|
children: [_jsx(Popup, {
|
|
button: ButtonFromProps ? ButtonFromProps : _jsx(Button, {
|
|
buttonStyle: "none",
|
|
className: `${baseClass}__add-button`,
|
|
tooltip: popupOpen ? undefined : t("fields:addNew"),
|
|
children: _jsx(PlusIcon, {})
|
|
}),
|
|
buttonType: "custom",
|
|
horizontalAlign: "center",
|
|
onToggleOpen: onPopupToggle,
|
|
render: t18 => {
|
|
const {
|
|
close: closePopup
|
|
} = t18;
|
|
return _jsx(PopupList.ButtonGroup, {
|
|
children: relatedCollections.map(relatedCollection => {
|
|
if (permissions.collections[relatedCollection?.slug]?.create) {
|
|
return _jsx(PopupList.Button, {
|
|
className: `${baseClass}__relation-button--${relatedCollection?.slug}`,
|
|
onClick: () => {
|
|
closePopup();
|
|
setSelectedCollection(relatedCollection?.slug);
|
|
},
|
|
children: getTranslation(relatedCollection?.labels?.singular, i18n)
|
|
}, relatedCollection?.slug);
|
|
}
|
|
return null;
|
|
})
|
|
});
|
|
},
|
|
size: "medium"
|
|
}), collectionConfig && permissions.collections[collectionConfig?.slug]?.create && _jsx(DocumentDrawer, {
|
|
onSave
|
|
})]
|
|
})]
|
|
});
|
|
}
|
|
$[29] = ButtonFromProps;
|
|
$[30] = DocumentDrawer;
|
|
$[31] = DocumentDrawerToggler;
|
|
$[32] = collectionConfig;
|
|
$[33] = i18n;
|
|
$[34] = onSave;
|
|
$[35] = path;
|
|
$[36] = permissions;
|
|
$[37] = popupOpen;
|
|
$[38] = relatedCollections;
|
|
$[39] = show;
|
|
$[40] = showTooltip;
|
|
$[41] = t;
|
|
$[42] = t15;
|
|
$[43] = unstyled;
|
|
$[44] = t16;
|
|
$[45] = t17;
|
|
} else {
|
|
t16 = $[44];
|
|
t17 = $[45];
|
|
}
|
|
if (t17 !== Symbol.for("react.early_return_sentinel")) {
|
|
return t17;
|
|
}
|
|
return t16;
|
|
};
|
|
//# sourceMappingURL=index.js.map |