@payloadcms/ui 3.0.0-beta.68 → 3.0.0-beta.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +7 -3
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +5 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +46 -48
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +10 -6
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +6 -3
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +6 -2
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +5 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +4 -4
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +4 -2
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/exports/client/index.js +18 -18
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Upload/Input.d.ts +4 -0
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +2 -2
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +18 -3
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +39 -18
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +5 -1
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/providers/Auth/index.d.ts +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +46 -38
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +1 -0
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +1 -0
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts +8 -0
- package/dist/utilities/formatAdminURL.d.ts.map +1 -0
- package/dist/utilities/formatAdminURL.js +15 -0
- package/dist/utilities/formatAdminURL.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AppHeader/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AppHeader/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAa1D,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAoF7B,CAAA"}
|
|
@@ -6,6 +6,7 @@ import { Account } from '../../graphics/Account/index.js';
|
|
|
6
6
|
import { useActions } from '../../providers/Actions/index.js';
|
|
7
7
|
import { useConfig } from '../../providers/Config/index.js';
|
|
8
8
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
9
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
9
10
|
import { Hamburger } from '../Hamburger/index.js';
|
|
10
11
|
import { LocalizerLabel } from '../Localizer/LocalizerLabel/index.js';
|
|
11
12
|
import { Localizer } from '../Localizer/index.js';
|
|
@@ -91,7 +92,10 @@ export const AppHeader = ()=>{
|
|
|
91
92
|
/*#__PURE__*/ _jsx(LinkElement, {
|
|
92
93
|
"aria-label": t('authentication:account'),
|
|
93
94
|
className: `${baseClass}__account`,
|
|
94
|
-
href:
|
|
95
|
+
href: formatAdminURL({
|
|
96
|
+
adminRoute,
|
|
97
|
+
path: accountRoute
|
|
98
|
+
}),
|
|
95
99
|
tabIndex: 0,
|
|
96
100
|
children: /*#__PURE__*/ _jsx(Account, {})
|
|
97
101
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/AppHeader/index.tsx"],"sourcesContent":["'use client'\nimport LinkWithDefault from 'next/link.js'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { useActions } from '../../providers/Actions/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Hamburger } from '../Hamburger/index.js'\nimport { LocalizerLabel } from '../Localizer/LocalizerLabel/index.js'\nimport { Localizer } from '../Localizer/index.js'\nimport { NavToggler } from '../Nav/NavToggler/index.js'\nimport { useNav } from '../Nav/context.js'\nimport { StepNav } from '../StepNav/index.js'\nimport './index.scss'\n\nconst baseClass = 'app-header'\n\nexport const AppHeader: React.FC = () => {\n const { t } = useTranslation()\n\n const {\n admin: {\n routes: { account: accountRoute },\n },\n localization,\n routes: { admin: adminRoute },\n } = useConfig()\n\n const { actions } = useActions()\n\n const { navOpen } = useNav()\n\n const customControlsRef = useRef<HTMLDivElement>(null)\n const [isScrollable, setIsScrollable] = useState(false)\n\n useEffect(() => {\n const checkIsScrollable = () => {\n const el = customControlsRef.current\n if (el) {\n const scrollable = el.scrollWidth > el.clientWidth\n setIsScrollable(scrollable)\n }\n }\n\n checkIsScrollable()\n window.addEventListener('resize', checkIsScrollable)\n\n return () => {\n window.removeEventListener('resize', checkIsScrollable)\n }\n }, [actions])\n\n const Link = LinkWithDefault.default\n\n const LinkElement = Link || 'a'\n\n return (\n <header className={[baseClass, navOpen && `${baseClass}--nav-open`].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__bg`} />\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__wrapper`}>\n <NavToggler className={`${baseClass}__mobile-nav-toggler`} tabIndex={-1}>\n <Hamburger />\n </NavToggler>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__step-nav-wrapper`}>\n <StepNav Link={Link} className={`${baseClass}__step-nav`} />\n </div>\n <div className={`${baseClass}__actions-wrapper`}>\n <div className={`${baseClass}__actions`} ref={customControlsRef}>\n {Array.isArray(actions) &&\n actions.map((Action, i) => (\n <div\n className={\n isScrollable && i === actions.length - 1 ? `${baseClass}__last-action` : ''\n }\n key={i}\n >\n {Action}\n </div>\n ))}\n </div>\n {isScrollable && <div className={`${baseClass}__gradient-placeholder`} />}\n </div>\n {localization && (\n <LocalizerLabel ariaLabel=\"invisible\" className={`${baseClass}__localizer-spacing`} />\n )}\n <LinkElement\n aria-label={t('authentication:account')}\n className={`${baseClass}__account`}\n href={
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/AppHeader/index.tsx"],"sourcesContent":["'use client'\nimport LinkWithDefault from 'next/link.js'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { useActions } from '../../providers/Actions/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Hamburger } from '../Hamburger/index.js'\nimport { LocalizerLabel } from '../Localizer/LocalizerLabel/index.js'\nimport { Localizer } from '../Localizer/index.js'\nimport { NavToggler } from '../Nav/NavToggler/index.js'\nimport { useNav } from '../Nav/context.js'\nimport { StepNav } from '../StepNav/index.js'\nimport './index.scss'\n\nconst baseClass = 'app-header'\n\nexport const AppHeader: React.FC = () => {\n const { t } = useTranslation()\n\n const {\n admin: {\n routes: { account: accountRoute },\n },\n localization,\n routes: { admin: adminRoute },\n } = useConfig()\n\n const { actions } = useActions()\n\n const { navOpen } = useNav()\n\n const customControlsRef = useRef<HTMLDivElement>(null)\n const [isScrollable, setIsScrollable] = useState(false)\n\n useEffect(() => {\n const checkIsScrollable = () => {\n const el = customControlsRef.current\n if (el) {\n const scrollable = el.scrollWidth > el.clientWidth\n setIsScrollable(scrollable)\n }\n }\n\n checkIsScrollable()\n window.addEventListener('resize', checkIsScrollable)\n\n return () => {\n window.removeEventListener('resize', checkIsScrollable)\n }\n }, [actions])\n\n const Link = LinkWithDefault.default\n\n const LinkElement = Link || 'a'\n\n return (\n <header className={[baseClass, navOpen && `${baseClass}--nav-open`].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__bg`} />\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__wrapper`}>\n <NavToggler className={`${baseClass}__mobile-nav-toggler`} tabIndex={-1}>\n <Hamburger />\n </NavToggler>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__step-nav-wrapper`}>\n <StepNav Link={Link} className={`${baseClass}__step-nav`} />\n </div>\n <div className={`${baseClass}__actions-wrapper`}>\n <div className={`${baseClass}__actions`} ref={customControlsRef}>\n {Array.isArray(actions) &&\n actions.map((Action, i) => (\n <div\n className={\n isScrollable && i === actions.length - 1 ? `${baseClass}__last-action` : ''\n }\n key={i}\n >\n {Action}\n </div>\n ))}\n </div>\n {isScrollable && <div className={`${baseClass}__gradient-placeholder`} />}\n </div>\n {localization && (\n <LocalizerLabel ariaLabel=\"invisible\" className={`${baseClass}__localizer-spacing`} />\n )}\n <LinkElement\n aria-label={t('authentication:account')}\n className={`${baseClass}__account`}\n href={formatAdminURL({ adminRoute, path: accountRoute })}\n tabIndex={0}\n >\n <Account />\n </LinkElement>\n </div>\n </div>\n </div>\n <Localizer className={`${baseClass}__localizer`} />\n </header>\n )\n}\n"],"names":["LinkWithDefault","React","useEffect","useRef","useState","Account","useActions","useConfig","useTranslation","formatAdminURL","Hamburger","LocalizerLabel","Localizer","NavToggler","useNav","StepNav","baseClass","AppHeader","t","admin","routes","account","accountRoute","localization","adminRoute","actions","navOpen","customControlsRef","isScrollable","setIsScrollable","checkIsScrollable","el","current","scrollable","scrollWidth","clientWidth","window","addEventListener","removeEventListener","Link","default","LinkElement","header","className","filter","Boolean","join","div","tabIndex","ref","Array","isArray","map","Action","i","length","ariaLabel","aria-label","href","path"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DeleteDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAYpD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqI1C,CAAA"}
|
|
@@ -10,6 +10,7 @@ import { useConfig } from '../../providers/Config/index.js';
|
|
|
10
10
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
11
11
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
12
12
|
import { requests } from '../../utilities/api.js';
|
|
13
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
13
14
|
import { Button } from '../Button/index.js';
|
|
14
15
|
import { PopupList } from '../Popup/index.js';
|
|
15
16
|
import { Translation } from '../Translation/index.js';
|
|
@@ -17,7 +18,7 @@ import './index.scss';
|
|
|
17
18
|
const baseClass = 'delete-document';
|
|
18
19
|
export const DeleteDocument = (props)=>{
|
|
19
20
|
const { id, buttonId, collectionSlug, singularLabel, title: titleFromProps } = props;
|
|
20
|
-
const { routes: { admin, api }, serverURL } = useConfig();
|
|
21
|
+
const { routes: { admin: adminRoute, api }, serverURL } = useConfig();
|
|
21
22
|
const { setModified } = useForm();
|
|
22
23
|
const [deleting, setDeleting] = useState(false);
|
|
23
24
|
const { toggleModal } = useModal();
|
|
@@ -54,7 +55,10 @@ export const DeleteDocument = (props)=>{
|
|
|
54
55
|
label: getTranslation(singularLabel, i18n),
|
|
55
56
|
title
|
|
56
57
|
}) || json.message);
|
|
57
|
-
return router.push(
|
|
58
|
+
return router.push(formatAdminURL({
|
|
59
|
+
adminRoute,
|
|
60
|
+
path: `/collections/${collectionSlug}`
|
|
61
|
+
}));
|
|
58
62
|
}
|
|
59
63
|
toggleModal(modalSlug);
|
|
60
64
|
if (json.errors) {
|
|
@@ -83,7 +87,7 @@ export const DeleteDocument = (props)=>{
|
|
|
83
87
|
i18n,
|
|
84
88
|
title,
|
|
85
89
|
router,
|
|
86
|
-
|
|
90
|
+
adminRoute,
|
|
87
91
|
addDefaultError
|
|
88
92
|
]);
|
|
89
93
|
if (id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-document'\n\nexport type Props = {\n buttonId?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n id?: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n title?: string\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: React.FC<Props> = (props) => {\n const { id, buttonId, collectionSlug, singularLabel, title: titleFromProps } = props\n\n const {\n routes: { admin, api },\n serverURL,\n } = useConfig()\n\n const { setModified } = useForm()\n const [deleting, setDeleting] = useState(false)\n const { toggleModal } = useModal()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentInfo()\n\n const titleToRender = titleFromProps || title || id\n\n const modalSlug = `delete-${id}`\n\n const addDefaultError = useCallback(() => {\n setDeleting(false)\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n setModified(false)\n try {\n await requests\n .delete(`${serverURL}${api}/${collectionSlug}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n setDeleting(false)\n toggleModal(modalSlug)\n toast.success(\n t('general:titleDeleted', { label: getTranslation(singularLabel, i18n), title }) ||\n json.message,\n )\n\n return router.push(
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DeleteDocument/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'delete-document'\n\nexport type Props = {\n buttonId?: string\n collectionSlug: SanitizedCollectionConfig['slug']\n id?: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n title?: string\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const DeleteDocument: React.FC<Props> = (props) => {\n const { id, buttonId, collectionSlug, singularLabel, title: titleFromProps } = props\n\n const {\n routes: { admin: adminRoute, api },\n serverURL,\n } = useConfig()\n\n const { setModified } = useForm()\n const [deleting, setDeleting] = useState(false)\n const { toggleModal } = useModal()\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentInfo()\n\n const titleToRender = titleFromProps || title || id\n\n const modalSlug = `delete-${id}`\n\n const addDefaultError = useCallback(() => {\n setDeleting(false)\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n setDeleting(true)\n setModified(false)\n try {\n await requests\n .delete(`${serverURL}${api}/${collectionSlug}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n setDeleting(false)\n toggleModal(modalSlug)\n toast.success(\n t('general:titleDeleted', { label: getTranslation(singularLabel, i18n), title }) ||\n json.message,\n )\n\n return router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}`,\n }),\n )\n }\n toggleModal(modalSlug)\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n } catch (e) {\n addDefaultError()\n }\n }, [\n setModified,\n serverURL,\n api,\n collectionSlug,\n id,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n i18n,\n title,\n router,\n adminRoute,\n addDefaultError,\n ])\n\n if (id) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={buttonId}\n onClick={() => {\n setDeleting(false)\n toggleModal(modalSlug)\n }}\n >\n {t('general:delete')}\n </PopupList.Button>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__template`}>\n <h1>{t('general:confirmDeletion')}</h1>\n <p>\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleToRender,\n }}\n />\n </p>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={deleting ? undefined : () => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-delete\" onClick={deleting ? undefined : handleDelete}>\n {deleting ? t('general:deleting') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useConfig","useDocumentInfo","useTranslation","requests","formatAdminURL","Button","PopupList","Translation","baseClass","DeleteDocument","props","id","buttonId","collectionSlug","singularLabel","title","titleFromProps","routes","admin","adminRoute","api","serverURL","setModified","deleting","setDeleting","toggleModal","router","i18n","t","titleToRender","modalSlug","addDefaultError","error","handleDelete","delete","headers","language","then","res","json","status","success","label","message","push","path","errors","forEach","e","Fragment","onClick","className","slug","div","h1","p","elements","children","strong","i18nKey","variables","buttonStyle","undefined","type"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAGhG,OAAO,KAA8B,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAGhG,OAAO,KAA8B,MAAM,OAAO,CAAA;AAiBlD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,IAAI,CAAA;IAC3D,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;CACxC,CAwMA,CAAA"}
|
|
@@ -5,6 +5,7 @@ import React, { Fragment, useEffect } from 'react';
|
|
|
5
5
|
import { useComponentMap } from '../../providers/ComponentMap/index.js';
|
|
6
6
|
import { useConfig } from '../../providers/Config/index.js';
|
|
7
7
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
8
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
8
9
|
import { formatDate } from '../../utilities/formatDate.js';
|
|
9
10
|
import { Autosave } from '../Autosave/index.js';
|
|
10
11
|
import { DeleteDocument } from '../DeleteDocument/index.js';
|
|
@@ -187,7 +188,10 @@ export const DocumentControls = (props)=>{
|
|
|
187
188
|
hasCreatePermission && /*#__PURE__*/ _jsxs(React.Fragment, {
|
|
188
189
|
children: [
|
|
189
190
|
/*#__PURE__*/ _jsx(PopupList.Button, {
|
|
190
|
-
href:
|
|
191
|
+
href: formatAdminURL({
|
|
192
|
+
adminRoute,
|
|
193
|
+
path: `/collections/${collectionConfig?.slug}/create`
|
|
194
|
+
}),
|
|
191
195
|
id: "action-create",
|
|
192
196
|
children: i18n.t('general:createNew')
|
|
193
197
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPermission, GlobalPermission, SanitizedCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n apiURL: string\n data?: any\n disableActions?: boolean\n hasPublishPermission?: boolean\n hasSavePermission?: boolean\n id?: number | string\n isAccountView?: boolean\n isEditing?: boolean\n permissions: CollectionPermission | GlobalPermission | null\n slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n hasSavePermission,\n isAccountView,\n isEditing,\n permissions,\n } = props\n\n const { i18n } = useTranslation()\n\n const config = useConfig()\n const { getComponentMap } = useComponentMap()\n\n const collectionConfig = config.collections.find((coll) => coll.slug === slug)\n const globalConfig = config.globals.find((global) => global.slug === slug)\n\n const componentMap = getComponentMap({\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n })\n\n const {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n }, [data, i18n, dateFormat])\n\n const hasCreatePermission =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <Status />\n </li>\n )}\n {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:lastModified')}: </p>\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}: </p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {componentMap?.isPreviewEnabled && (\n <PreviewButton CustomComponent={componentMap.PreviewButton} />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton CustomComponent={componentMap.SaveDraftButton} />\n )}\n <PublishButton CustomComponent={componentMap.PublishButton} />\n </React.Fragment>\n ) : (\n <SaveButton CustomComponent={componentMap.SaveButton} />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n <PopupList.Button\n href={`${adminRoute}/collections/${collectionConfig?.slug}/create`}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"names":["getTranslation","React","Fragment","useEffect","useComponentMap","useConfig","useTranslation","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","id","slug","data","disableActions","hasSavePermission","isAccountView","isEditing","permissions","i18n","config","getComponentMap","collectionConfig","collections","find","coll","globalConfig","globals","global","componentMap","collectionSlug","globalSlug","admin","dateFormat","routes","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","date","pattern","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","className","div","ul","li","p","t","label","labels","singular","filter","join","autosave","collection","publishedDocUpdatedAt","timestamps","title","isPreviewEnabled","CustomComponent","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","href","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DocumentControls/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPermission, GlobalPermission, SanitizedCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect } from 'react'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { formatDate } from '../../utilities/formatDate.js'\nimport { Autosave } from '../Autosave/index.js'\nimport { DeleteDocument } from '../DeleteDocument/index.js'\nimport { DuplicateDocument } from '../DuplicateDocument/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { PreviewButton } from '../PreviewButton/index.js'\nimport { PublishButton } from '../PublishButton/index.js'\nimport { SaveButton } from '../SaveButton/index.js'\nimport { SaveDraftButton } from '../SaveDraftButton/index.js'\nimport { Status } from '../Status/index.js'\nimport './index.scss'\n\nconst baseClass = 'doc-controls'\n\nexport const DocumentControls: React.FC<{\n apiURL: string\n data?: any\n disableActions?: boolean\n hasPublishPermission?: boolean\n hasSavePermission?: boolean\n id?: number | string\n isAccountView?: boolean\n isEditing?: boolean\n permissions: CollectionPermission | GlobalPermission | null\n slug: SanitizedCollectionConfig['slug']\n}> = (props) => {\n const {\n id,\n slug,\n data,\n disableActions,\n hasSavePermission,\n isAccountView,\n isEditing,\n permissions,\n } = props\n\n const { i18n } = useTranslation()\n\n const config = useConfig()\n const { getComponentMap } = useComponentMap()\n\n const collectionConfig = config.collections.find((coll) => coll.slug === slug)\n const globalConfig = config.globals.find((global) => global.slug === slug)\n\n const componentMap = getComponentMap({\n collectionSlug: collectionConfig?.slug,\n globalSlug: globalConfig?.slug,\n })\n\n const {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n } = config\n\n // Settings these in state to avoid hydration issues if there is a mismatch between the server and client\n const [updatedAt, setUpdatedAt] = React.useState<string>('')\n const [createdAt, setCreatedAt] = React.useState<string>('')\n\n useEffect(() => {\n if (data?.updatedAt) {\n setUpdatedAt(formatDate({ date: data.updatedAt, i18n, pattern: dateFormat }))\n }\n if (data?.createdAt) {\n setCreatedAt(formatDate({ date: data.createdAt, i18n, pattern: dateFormat }))\n }\n }, [data, i18n, dateFormat])\n\n const hasCreatePermission =\n permissions && 'create' in permissions && permissions.create?.permission\n\n const hasDeletePermission =\n permissions && 'delete' in permissions && permissions.delete?.permission\n\n const showDotMenu = Boolean(\n collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission),\n )\n\n const unsavedDraftWithValidations =\n !id && collectionConfig?.versions?.drafts && collectionConfig.versions?.drafts.validate\n\n return (\n <Gutter className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <ul className={`${baseClass}__meta`}>\n {collectionConfig && !isEditing && !isAccountView && (\n <li className={`${baseClass}__list-item`}>\n <p className={`${baseClass}__value`}>\n {i18n.t('general:creatingNewLabel', {\n label: getTranslation(\n collectionConfig?.labels?.singular ?? i18n.t('general:document'),\n i18n,\n ),\n })}\n </p>\n </li>\n )}\n {(collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts) && (\n <Fragment>\n {(globalConfig || (collectionConfig && isEditing)) && (\n <li\n className={[`${baseClass}__status`, `${baseClass}__list-item`]\n .filter(Boolean)\n .join(' ')}\n >\n <Status />\n </li>\n )}\n {((collectionConfig?.versions?.drafts &&\n collectionConfig?.versions?.drafts?.autosave &&\n !unsavedDraftWithValidations) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave)) &&\n hasSavePermission && (\n <li className={`${baseClass}__list-item`}>\n <Autosave\n collection={collectionConfig}\n global={globalConfig}\n id={id}\n publishedDocUpdatedAt={data?.createdAt}\n />\n </li>\n )}\n </Fragment>\n )}\n {collectionConfig?.timestamps && (isEditing || isAccountView) && (\n <Fragment>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.updatedAt ? updatedAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:lastModified')}: </p>\n {data?.updatedAt && <p className={`${baseClass}__value`}>{updatedAt}</p>}\n </li>\n <li\n className={[`${baseClass}__list-item`, `${baseClass}__value-wrap`]\n .filter(Boolean)\n .join(' ')}\n title={data?.createdAt ? createdAt : ''}\n >\n <p className={`${baseClass}__label`}>{i18n.t('general:created')}: </p>\n {data?.createdAt && <p className={`${baseClass}__value`}>{createdAt}</p>}\n </li>\n </Fragment>\n )}\n </ul>\n </div>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__controls`}>\n {componentMap?.isPreviewEnabled && (\n <PreviewButton CustomComponent={componentMap.PreviewButton} />\n )}\n {hasSavePermission && (\n <React.Fragment>\n {collectionConfig?.versions?.drafts || globalConfig?.versions?.drafts ? (\n <React.Fragment>\n {((collectionConfig?.versions?.drafts &&\n !collectionConfig?.versions?.drafts?.autosave) ||\n unsavedDraftWithValidations ||\n (globalConfig?.versions?.drafts &&\n !globalConfig?.versions?.drafts?.autosave)) && (\n <SaveDraftButton CustomComponent={componentMap.SaveDraftButton} />\n )}\n <PublishButton CustomComponent={componentMap.PublishButton} />\n </React.Fragment>\n ) : (\n <SaveButton CustomComponent={componentMap.SaveButton} />\n )}\n </React.Fragment>\n )}\n </div>\n {showDotMenu && (\n <Popup\n button={\n <div className={`${baseClass}__dots`}>\n <div />\n <div />\n <div />\n </div>\n }\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n size=\"large\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {hasCreatePermission && (\n <React.Fragment>\n <PopupList.Button\n href={formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}/create`,\n })}\n id=\"action-create\"\n >\n {i18n.t('general:createNew')}\n </PopupList.Button>\n {!collectionConfig.disableDuplicate && isEditing && (\n <DuplicateDocument\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n slug={collectionConfig?.slug}\n />\n )}\n </React.Fragment>\n )}\n {hasDeletePermission && (\n <DeleteDocument\n buttonId=\"action-delete\"\n collectionSlug={collectionConfig?.slug}\n id={id.toString()}\n singularLabel={collectionConfig?.labels?.singular}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n <div className={`${baseClass}__divider`} />\n </Gutter>\n )\n}\n"],"names":["getTranslation","React","Fragment","useEffect","useComponentMap","useConfig","useTranslation","formatAdminURL","formatDate","Autosave","DeleteDocument","DuplicateDocument","Gutter","Popup","PopupList","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","baseClass","DocumentControls","props","id","slug","data","disableActions","hasSavePermission","isAccountView","isEditing","permissions","i18n","config","getComponentMap","collectionConfig","collections","find","coll","globalConfig","globals","global","componentMap","collectionSlug","globalSlug","admin","dateFormat","routes","adminRoute","updatedAt","setUpdatedAt","useState","createdAt","setCreatedAt","date","pattern","hasCreatePermission","create","permission","hasDeletePermission","delete","showDotMenu","Boolean","unsavedDraftWithValidations","versions","drafts","validate","className","div","ul","li","p","t","label","labels","singular","filter","join","autosave","collection","publishedDocUpdatedAt","timestamps","title","isPreviewEnabled","CustomComponent","button","horizontalAlign","size","verticalAlign","ButtonGroup","Button","href","path","disableDuplicate","toString","singularLabel","buttonId","useAsTitle"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentFields/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AAIvF,OAAO,cAAc,CAAA;AAIrB,KAAK,IAAI,GAAG;IACV,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentFields/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AAIvF,OAAO,cAAc,CAAA;AAIrB,KAAK,IAAI,GAAG;IACV,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAkEzC,CAAA"}
|
|
@@ -9,58 +9,56 @@ export const DocumentFields = ({ AfterFields, BeforeFields, description, docPerm
|
|
|
9
9
|
const mainFields = fieldMap.filter(({ isSidebar })=>!isSidebar);
|
|
10
10
|
const sidebarFields = fieldMap.filter(({ isSidebar })=>isSidebar);
|
|
11
11
|
const hasSidebarFields = sidebarFields && sidebarFields.length > 0;
|
|
12
|
-
return /*#__PURE__*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
className: `${baseClass}__sub-header`
|
|
29
|
-
})
|
|
30
|
-
}),
|
|
31
|
-
BeforeFields,
|
|
32
|
-
/*#__PURE__*/ _jsx(RenderFields, {
|
|
33
|
-
className: `${baseClass}__fields`,
|
|
34
|
-
fieldMap: mainFields,
|
|
35
|
-
forceRender: 10,
|
|
36
|
-
path: "",
|
|
37
|
-
permissions: docPermissions?.fields,
|
|
38
|
-
readOnly: readOnly,
|
|
39
|
-
schemaPath: schemaPath
|
|
40
|
-
}),
|
|
41
|
-
AfterFields
|
|
42
|
-
]
|
|
43
|
-
})
|
|
44
|
-
}),
|
|
45
|
-
hasSidebarFields && /*#__PURE__*/ _jsx("div", {
|
|
46
|
-
className: `${baseClass}__sidebar-wrap`,
|
|
47
|
-
children: /*#__PURE__*/ _jsx("div", {
|
|
48
|
-
className: `${baseClass}__sidebar`,
|
|
49
|
-
children: /*#__PURE__*/ _jsx("div", {
|
|
50
|
-
className: `${baseClass}__sidebar-fields`,
|
|
51
|
-
children: /*#__PURE__*/ _jsx(RenderFields, {
|
|
52
|
-
fieldMap: sidebarFields,
|
|
53
|
-
forceRender: 10,
|
|
54
|
-
path: "",
|
|
55
|
-
permissions: docPermissions?.fields,
|
|
56
|
-
readOnly: readOnly,
|
|
57
|
-
schemaPath: schemaPath
|
|
12
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
13
|
+
className: [
|
|
14
|
+
baseClass,
|
|
15
|
+
hasSidebarFields ? `${baseClass}--has-sidebar` : `${baseClass}--no-sidebar`,
|
|
16
|
+
forceSidebarWrap && `${baseClass}--force-sidebar-wrap`
|
|
17
|
+
].filter(Boolean).join(' '),
|
|
18
|
+
children: [
|
|
19
|
+
/*#__PURE__*/ _jsx("div", {
|
|
20
|
+
className: `${baseClass}__main`,
|
|
21
|
+
children: /*#__PURE__*/ _jsxs(Gutter, {
|
|
22
|
+
className: `${baseClass}__edit`,
|
|
23
|
+
children: [
|
|
24
|
+
/*#__PURE__*/ _jsx("header", {
|
|
25
|
+
className: `${baseClass}__header`,
|
|
26
|
+
children: description && /*#__PURE__*/ _jsx("div", {
|
|
27
|
+
className: `${baseClass}__sub-header`
|
|
58
28
|
})
|
|
29
|
+
}),
|
|
30
|
+
BeforeFields,
|
|
31
|
+
/*#__PURE__*/ _jsx(RenderFields, {
|
|
32
|
+
className: `${baseClass}__fields`,
|
|
33
|
+
fieldMap: mainFields,
|
|
34
|
+
forceRender: 10,
|
|
35
|
+
path: "",
|
|
36
|
+
permissions: docPermissions?.fields,
|
|
37
|
+
readOnly: readOnly,
|
|
38
|
+
schemaPath: schemaPath
|
|
39
|
+
}),
|
|
40
|
+
AfterFields
|
|
41
|
+
]
|
|
42
|
+
})
|
|
43
|
+
}),
|
|
44
|
+
hasSidebarFields && /*#__PURE__*/ _jsx("div", {
|
|
45
|
+
className: `${baseClass}__sidebar-wrap`,
|
|
46
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
47
|
+
className: `${baseClass}__sidebar`,
|
|
48
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
49
|
+
className: `${baseClass}__sidebar-fields`,
|
|
50
|
+
children: /*#__PURE__*/ _jsx(RenderFields, {
|
|
51
|
+
fieldMap: sidebarFields,
|
|
52
|
+
forceRender: 10,
|
|
53
|
+
path: "",
|
|
54
|
+
permissions: docPermissions?.fields,
|
|
55
|
+
readOnly: readOnly,
|
|
56
|
+
schemaPath: schemaPath
|
|
59
57
|
})
|
|
60
58
|
})
|
|
61
59
|
})
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
})
|
|
61
|
+
]
|
|
64
62
|
});
|
|
65
63
|
};
|
|
66
64
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DocumentFields/index.tsx"],"sourcesContent":["'use client'\nimport type { Description, DocumentPermissions } from 'payload'\n\nimport React from 'react'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'document-fields'\n\ntype Args = {\n AfterFields?: React.ReactNode\n BeforeFields?: React.ReactNode\n description?: Description\n docPermissions: DocumentPermissions\n fieldMap: FieldMap\n forceSidebarWrap?: boolean\n readOnly: boolean\n schemaPath: string\n}\n\nexport const DocumentFields: React.FC<Args> = ({\n AfterFields,\n BeforeFields,\n description,\n docPermissions,\n fieldMap,\n forceSidebarWrap,\n readOnly,\n schemaPath,\n}) => {\n const mainFields = fieldMap.filter(({ isSidebar }) => !isSidebar)\n\n const sidebarFields = fieldMap.filter(({ isSidebar }) => isSidebar)\n\n const hasSidebarFields = sidebarFields && sidebarFields.length > 0\n\n return (\n <
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DocumentFields/index.tsx"],"sourcesContent":["'use client'\nimport type { Description, DocumentPermissions } from 'payload'\n\nimport React from 'react'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'document-fields'\n\ntype Args = {\n AfterFields?: React.ReactNode\n BeforeFields?: React.ReactNode\n description?: Description\n docPermissions: DocumentPermissions\n fieldMap: FieldMap\n forceSidebarWrap?: boolean\n readOnly: boolean\n schemaPath: string\n}\n\nexport const DocumentFields: React.FC<Args> = ({\n AfterFields,\n BeforeFields,\n description,\n docPermissions,\n fieldMap,\n forceSidebarWrap,\n readOnly,\n schemaPath,\n}) => {\n const mainFields = fieldMap.filter(({ isSidebar }) => !isSidebar)\n\n const sidebarFields = fieldMap.filter(({ isSidebar }) => isSidebar)\n\n const hasSidebarFields = sidebarFields && sidebarFields.length > 0\n\n return (\n <div\n className={[\n baseClass,\n hasSidebarFields ? `${baseClass}--has-sidebar` : `${baseClass}--no-sidebar`,\n forceSidebarWrap && `${baseClass}--force-sidebar-wrap`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__main`}>\n <Gutter className={`${baseClass}__edit`}>\n <header className={`${baseClass}__header`}>\n {description && (\n <div className={`${baseClass}__sub-header`}>\n {/* <ViewDescription description={description} /> */}\n </div>\n )}\n </header>\n {BeforeFields}\n <RenderFields\n className={`${baseClass}__fields`}\n fieldMap={mainFields}\n forceRender={10}\n path=\"\"\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n schemaPath={schemaPath}\n />\n {AfterFields}\n </Gutter>\n </div>\n {hasSidebarFields && (\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-fields`}>\n <RenderFields\n fieldMap={sidebarFields}\n forceRender={10}\n path=\"\"\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n schemaPath={schemaPath}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["React","RenderFields","Gutter","baseClass","DocumentFields","AfterFields","BeforeFields","description","docPermissions","fieldMap","forceSidebarWrap","readOnly","schemaPath","mainFields","filter","isSidebar","sidebarFields","hasSidebarFields","length","div","className","Boolean","join","header","forceRender","path","permissions","fields"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAIzB,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,OAAO,eAAc;AAErB,MAAMC,YAAY;AAalB,OAAO,MAAMC,iBAAiC,CAAC,EAC7CC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,EACX;IACC,MAAMC,aAAaJ,SAASK,MAAM,CAAC,CAAC,EAAEC,SAAS,EAAE,GAAK,CAACA;IAEvD,MAAMC,gBAAgBP,SAASK,MAAM,CAAC,CAAC,EAAEC,SAAS,EAAE,GAAKA;IAEzD,MAAME,mBAAmBD,iBAAiBA,cAAcE,MAAM,GAAG;IAEjE,qBACE,MAACC;QACCC,WAAW;YACTjB;YACAc,mBAAmB,CAAC,EAAEd,UAAU,aAAa,CAAC,GAAG,CAAC,EAAEA,UAAU,YAAY,CAAC;YAC3EO,oBAAoB,CAAC,EAAEP,UAAU,oBAAoB,CAAC;SACvD,CACEW,MAAM,CAACO,SACPC,IAAI,CAAC;;0BAER,KAACH;gBAAIC,WAAW,CAAC,EAAEjB,UAAU,MAAM,CAAC;0BAClC,cAAA,MAACD;oBAAOkB,WAAW,CAAC,EAAEjB,UAAU,MAAM,CAAC;;sCACrC,KAACoB;4BAAOH,WAAW,CAAC,EAAEjB,UAAU,QAAQ,CAAC;sCACtCI,6BACC,KAACY;gCAAIC,WAAW,CAAC,EAAEjB,UAAU,YAAY,CAAC;;;wBAK7CG;sCACD,KAACL;4BACCmB,WAAW,CAAC,EAAEjB,UAAU,QAAQ,CAAC;4BACjCM,UAAUI;4BACVW,aAAa;4BACbC,MAAK;4BACLC,aAAalB,gBAAgBmB;4BAC7BhB,UAAUA;4BACVC,YAAYA;;wBAEbP;;;;YAGJY,kCACC,KAACE;gBAAIC,WAAW,CAAC,EAAEjB,UAAU,cAAc,CAAC;0BAC1C,cAAA,KAACgB;oBAAIC,WAAW,CAAC,EAAEjB,UAAU,SAAS,CAAC;8BACrC,cAAA,KAACgB;wBAAIC,WAAW,CAAC,EAAEjB,UAAU,gBAAgB,CAAC;kCAC5C,cAAA,KAACF;4BACCQ,UAAUO;4BACVQ,aAAa;4BACbC,MAAK;4BACLC,aAAalB,gBAAgBmB;4BAC7BhB,UAAUA;4BACVC,YAAYA;;;;;;;AAQ5B,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAWpD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9D,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiH7C,CAAA"}
|
|
@@ -10,6 +10,7 @@ import { useConfig } from '../../providers/Config/index.js';
|
|
|
10
10
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
11
11
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
12
12
|
import { requests } from '../../utilities/api.js';
|
|
13
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
13
14
|
import { Button } from '../Button/index.js';
|
|
14
15
|
import { PopupList } from '../Popup/index.js';
|
|
15
16
|
import './index.scss';
|
|
@@ -20,8 +21,8 @@ export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
|
20
21
|
const { toggleModal } = useModal();
|
|
21
22
|
const locale = useLocale();
|
|
22
23
|
const { setModified } = useForm();
|
|
23
|
-
const { routes: { api }, serverURL } = useConfig();
|
|
24
|
-
const { routes: { admin } } = useConfig();
|
|
24
|
+
const { routes: { api: apiRoute }, serverURL } = useConfig();
|
|
25
|
+
const { routes: { admin: adminRoute } } = useConfig();
|
|
25
26
|
const [hasClicked, setHasClicked] = useState(false);
|
|
26
27
|
const { i18n, t } = useTranslation();
|
|
27
28
|
const modalSlug = `duplicate-${id}`;
|
|
@@ -31,7 +32,7 @@ export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
|
31
32
|
toggleModal(modalSlug);
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
34
|
-
await requests.post(`${serverURL}${
|
|
35
|
+
await requests.post(`${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`, {
|
|
35
36
|
body: JSON.stringify({}),
|
|
36
37
|
headers: {
|
|
37
38
|
'Accept-Language': i18n.language,
|
|
@@ -45,7 +46,10 @@ export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
|
45
46
|
label: getTranslation(singularLabel, i18n)
|
|
46
47
|
}));
|
|
47
48
|
setModified(false);
|
|
48
|
-
router.push(
|
|
49
|
+
router.push(formatAdminURL({
|
|
50
|
+
adminRoute,
|
|
51
|
+
path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`
|
|
52
|
+
}));
|
|
49
53
|
} else {
|
|
50
54
|
toast.error(errors?.[0].message || message || t('error:unspecific', {
|
|
51
55
|
label: getTranslation(singularLabel, i18n)
|
|
@@ -56,7 +60,7 @@ export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
|
56
60
|
locale,
|
|
57
61
|
modified,
|
|
58
62
|
serverURL,
|
|
59
|
-
|
|
63
|
+
apiRoute,
|
|
60
64
|
slug,
|
|
61
65
|
id,
|
|
62
66
|
i18n,
|
|
@@ -66,7 +70,7 @@ export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
|
66
70
|
singularLabel,
|
|
67
71
|
setModified,
|
|
68
72
|
router,
|
|
69
|
-
|
|
73
|
+
adminRoute
|
|
70
74
|
]);
|
|
71
75
|
const confirm = useCallback(async ()=>{
|
|
72
76
|
setHasClicked(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n id: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({ id, slug, singularLabel }) => {\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const {\n routes: { admin },\n } = useConfig()\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(\n `${serverURL}${
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n id: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({ id, slug, singularLabel }) => {\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n\n const {\n routes: { admin: adminRoute },\n } = useConfig()\n\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n setModified(false)\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`,\n }),\n )\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n setModified,\n router,\n adminRoute,\n ],\n )\n\n const confirm = useCallback(async () => {\n setHasClicked(false)\n await handleClick(true)\n }, [handleClick])\n\n return (\n <React.Fragment>\n <PopupList.Button id=\"action-duplicate\" onClick={() => handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <div className={`${baseClass}__modal-template`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={confirm}>\n {t('general:duplicateWithoutSaving')}\n </Button>\n </div>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useLocale","useTranslation","requests","formatAdminURL","Button","PopupList","baseClass","DuplicateDocument","id","slug","singularLabel","router","modified","toggleModal","locale","setModified","routes","api","apiRoute","serverURL","admin","adminRoute","hasClicked","setHasClicked","i18n","t","modalSlug","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","confirm","Fragment","onClick","className","div","h1","p","buttonStyle","type"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Logout/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Logout/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAyCvC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAUA,CAAA"}
|
|
@@ -5,17 +5,20 @@ import { LogOutIcon } from '../../icons/LogOut/index.js';
|
|
|
5
5
|
import { useComponentMap } from '../../providers/ComponentMap/index.js';
|
|
6
6
|
import { useConfig } from '../../providers/Config/index.js';
|
|
7
7
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
8
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
8
9
|
const baseClass = 'nav';
|
|
9
10
|
const DefaultLogout = ({ Link, tabIndex })=>{
|
|
10
11
|
const { t } = useTranslation();
|
|
11
12
|
const config = useConfig();
|
|
12
|
-
const { admin: { routes: { logout: logoutRoute } }, routes: { admin } } = config;
|
|
13
|
-
const basePath = process.env.NEXT_BASE_PATH ?? '';
|
|
13
|
+
const { admin: { routes: { logout: logoutRoute } }, routes: { admin: adminRoute } } = config;
|
|
14
14
|
const LinkElement = Link || 'a';
|
|
15
15
|
return /*#__PURE__*/ _jsx(LinkElement, {
|
|
16
16
|
"aria-label": t('authentication:logOut'),
|
|
17
17
|
className: `${baseClass}__log-out`,
|
|
18
|
-
href:
|
|
18
|
+
href: formatAdminURL({
|
|
19
|
+
adminRoute,
|
|
20
|
+
path: logoutRoute
|
|
21
|
+
}),
|
|
19
22
|
tabIndex: tabIndex,
|
|
20
23
|
children: /*#__PURE__*/ _jsx(LogOutIcon, {})
|
|
21
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Logout/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'nav'\n\nconst DefaultLogout: React.FC<{\n Link: React.ComponentType\n tabIndex?: number\n}> = ({ Link, tabIndex }) => {\n const { t } = useTranslation()\n const config = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin },\n } = config\n\n const
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Logout/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\n\nconst baseClass = 'nav'\n\nconst DefaultLogout: React.FC<{\n Link: React.ComponentType\n tabIndex?: number\n}> = ({ Link, tabIndex }) => {\n const { t } = useTranslation()\n const config = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n const LinkElement = Link || 'a'\n\n return (\n <LinkElement\n aria-label={t('authentication:logOut')}\n className={`${baseClass}__log-out`}\n href={formatAdminURL({\n adminRoute,\n path: logoutRoute,\n })}\n tabIndex={tabIndex}\n >\n <LogOutIcon />\n </LinkElement>\n )\n}\n\nexport const Logout: React.FC<{\n Link?: React.ComponentType\n tabIndex?: number\n}> = ({ Link, tabIndex = 0 }) => {\n const {\n componentMap: { LogoutButton: CustomLogout },\n } = useComponentMap()\n\n if (CustomLogout) {\n return <Fragment>{CustomLogout}</Fragment>\n }\n\n return <DefaultLogout Link={Link} tabIndex={tabIndex} />\n}\n"],"names":["React","Fragment","LogOutIcon","useComponentMap","useConfig","useTranslation","formatAdminURL","baseClass","DefaultLogout","Link","tabIndex","t","config","admin","routes","logout","logoutRoute","adminRoute","LinkElement","aria-label","className","href","path","Logout","componentMap","LogoutButton","CustomLogout"],"mappings":"AAAA;;AACA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AAEvC,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,oCAAmC;AAElE,MAAMC,YAAY;AAElB,MAAMC,gBAGD,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAE;IACtB,MAAM,EAAEC,CAAC,EAAE,GAAGN;IACd,MAAMO,SAASR;IAEf,MAAM,EACJS,OAAO,EACLC,QAAQ,EAAEC,QAAQC,WAAW,EAAE,EAChC,EACDF,QAAQ,EAAED,OAAOI,UAAU,EAAE,EAC9B,GAAGL;IAEJ,MAAMM,cAAcT,QAAQ;IAE5B,qBACE,KAACS;QACCC,cAAYR,EAAE;QACdS,WAAW,CAAC,EAAEb,UAAU,SAAS,CAAC;QAClCc,MAAMf,eAAe;YACnBW;YACAK,MAAMN;QACR;QACAN,UAAUA;kBAEV,cAAA,KAACR;;AAGP;AAEA,OAAO,MAAMqB,SAGR,CAAC,EAAEd,IAAI,EAAEC,WAAW,CAAC,EAAE;IAC1B,MAAM,EACJc,cAAc,EAAEC,cAAcC,YAAY,EAAE,EAC7C,GAAGvB;IAEJ,IAAIuB,cAAc;QAChB,qBAAO,KAACzB;sBAAUyB;;IACpB;IAEA,qBAAO,KAAClB;QAAcC,MAAMA;QAAMC,UAAUA;;AAC9C,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StayLoggedIn/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StayLoggedIn/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAkDrC,CAAA"}
|