@payloadcms/ui 3.0.0-beta.43 → 3.0.0-beta.44
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/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +90 -69
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +1 -2
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +1 -2
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +1 -2
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/index.js +1 -2
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +1 -3
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +1 -2
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +1 -2
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/elements/EditUpload/index.js +1 -5
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js +1 -2
- package/dist/elements/GenerateConfirmation/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +1 -2
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -2
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +1 -2
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/Modal/index.d.ts +1 -7
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -7
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Nav/NavToggler/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavToggler/index.js +1 -2
- package/dist/elements/Nav/NavToggler/index.js.map +1 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +1 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +1 -2
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +1 -2
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +1 -2
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +1 -2
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +2 -1
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +1 -2
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/WindowInfo/index.d.ts +1 -3
- package/dist/elements/WindowInfo/index.d.ts.map +1 -1
- package/dist/elements/WindowInfo/index.js +1 -7
- package/dist/elements/WindowInfo/index.js.map +1 -1
- package/dist/exports/elements.d.ts +1 -6
- package/dist/exports/elements.d.ts.map +1 -1
- package/dist/exports/elements.js +1 -4
- package/dist/exports/elements.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js +1 -2
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +1 -2
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +1 -0
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +10 -1
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/hooks/useHotkey.d.ts.map +1 -1
- package/dist/hooks/useHotkey.js +1 -2
- package/dist/hooks/useHotkey.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +1 -2
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +3 -13
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts +15 -0
- package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -0
- package/dist/utilities/reduceFieldsToValuesWithValidation.js +29 -0
- package/dist/utilities/reduceFieldsToValuesWithValidation.js.map +1 -0
- package/package.json +8 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { Modal, useModal } from '@faceless-ui/modal';
|
|
4
4
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
5
5
|
import { X } from '../../icons/X/index.js';
|
|
6
6
|
import { EditDepthContext, useEditDepth } from '../../providers/EditDepth/index.js';
|
|
@@ -11,7 +11,6 @@ const zBase = 100;
|
|
|
11
11
|
export const formatDrawerSlug = ({ slug, depth })=>`drawer_${depth}_${slug}`;
|
|
12
12
|
export { useDrawerSlug } from './useDrawerSlug.js';
|
|
13
13
|
export const DrawerToggler = ({ slug, children, className, disabled, onClick, ...rest })=>{
|
|
14
|
-
const { Modal, useModal } = facelessUIImport;
|
|
15
14
|
const { openModal } = useModal();
|
|
16
15
|
const handleClick = useCallback((e)=>{
|
|
17
16
|
openModal(slug);
|
|
@@ -31,7 +30,6 @@ export const DrawerToggler = ({ slug, children, className, disabled, onClick, ..
|
|
|
31
30
|
});
|
|
32
31
|
};
|
|
33
32
|
export const Drawer = ({ slug, Header, children, className, gutter = true, hoverTitle, title })=>{
|
|
34
|
-
const { Modal, useModal } = facelessUIImport;
|
|
35
33
|
const { t } = useTranslation();
|
|
36
34
|
const { closeModal, modalState } = useModal();
|
|
37
35
|
const drawerDepth = useEditDepth();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Drawer/index.tsx"],"sourcesContent":["'use client'\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Drawer/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props, TogglerProps } from './types.js'\n\nimport { X } from '../../icons/X/index.js'\nimport { EditDepthContext, useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer'\nconst zBase = 100\n\nexport const formatDrawerSlug = ({ slug, depth }: { depth: number; slug: string }): string =>\n `drawer_${depth}_${slug}`\n\nexport { useDrawerSlug } from './useDrawerSlug.js'\n\nexport const DrawerToggler: React.FC<TogglerProps> = ({\n slug,\n children,\n className,\n disabled,\n onClick,\n ...rest\n}) => {\n const { openModal } = useModal()\n\n const handleClick = useCallback(\n (e) => {\n openModal(slug)\n if (typeof onClick === 'function') onClick(e)\n },\n [openModal, slug, onClick],\n )\n\n return (\n <button className={className} disabled={disabled} onClick={handleClick} type=\"button\" {...rest}>\n {children}\n </button>\n )\n}\n\nexport const Drawer: React.FC<Props> = ({\n slug,\n Header,\n children,\n className,\n gutter = true,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useEditDepth()\n const [isOpen, setIsOpen] = useState(false)\n const [animateIn, setAnimateIn] = useState(false)\n\n useEffect(() => {\n setIsOpen(modalState[slug]?.isOpen)\n }, [slug, modalState])\n\n useEffect(() => {\n setAnimateIn(isOpen)\n }, [isOpen])\n\n if (isOpen) {\n // IMPORTANT: do not render the drawer until it is explicitly open, this is to avoid large html trees especially when nesting drawers\n return (\n <Modal\n className={[\n className,\n baseClass,\n animateIn && `${baseClass}--is-open`,\n drawerDepth > 1 && `${baseClass}--nested`,\n ]\n .filter(Boolean)\n .join(' ')}\n slug={slug}\n style={{\n zIndex: zBase + drawerDepth,\n }}\n >\n {(!drawerDepth || drawerDepth === 1) && <div className={`${baseClass}__blur-bg`} />}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n />\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__blur-bg-content`} />\n <Gutter className={`${baseClass}__content-children`} left={gutter} right={gutter}>\n <EditDepthContext.Provider value={drawerDepth + 1}>\n {Header}\n {Header === undefined && (\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`} title={hoverTitle ? title : null}>\n {title}\n </h2>\n {/* TODO: the `button` HTML element breaks CSS transitions on the drawer for some reason...\n i.e. changing to a `div` element will fix the animation issue but will break accessibility\n */}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n )}\n {children}\n </EditDepthContext.Provider>\n </Gutter>\n </div>\n </Modal>\n )\n }\n\n return null\n}\n"],"names":["Modal","useModal","React","useCallback","useEffect","useState","X","EditDepthContext","useEditDepth","useTranslation","Gutter","baseClass","zBase","formatDrawerSlug","slug","depth","useDrawerSlug","DrawerToggler","children","className","disabled","onClick","rest","openModal","handleClick","e","button","type","Drawer","Header","gutter","hoverTitle","title","t","closeModal","modalState","drawerDepth","isOpen","setIsOpen","animateIn","setAnimateIn","filter","Boolean","join","style","zIndex","div","aria-label","id","left","right","Provider","value","undefined","h2"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,SAASA,KAAK,EAAEC,QAAQ,QAAQ,qBAAoB;AACpD,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAI/D,SAASC,CAAC,QAAQ,yBAAwB;AAC1C,SAASC,gBAAgB,EAAEC,YAAY,QAAQ,qCAAoC;AACnF,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,MAAM,QAAQ,qBAAoB;AAG3C,MAAMC,YAAY;AAClB,MAAMC,QAAQ;AAEd,OAAO,MAAMC,mBAAmB,CAAC,EAAEC,IAAI,EAAEC,KAAK,EAAmC,GAC/E,CAAC,OAAO,EAAEA,MAAM,CAAC,EAAED,KAAK,CAAC,CAAA;AAE3B,SAASE,aAAa,QAAQ,qBAAoB;AAElD,OAAO,MAAMC,gBAAwC,CAAC,EACpDH,IAAI,EACJI,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACP,GAAGC,MACJ;IACC,MAAM,EAAEC,SAAS,EAAE,GAAGtB;IAEtB,MAAMuB,cAAcrB,YAClB,CAACsB;QACCF,UAAUT;QACV,IAAI,OAAOO,YAAY,YAAYA,QAAQI;IAC7C,GACA;QAACF;QAAWT;QAAMO;KAAQ;IAG5B,qBACE,KAACK;QAAOP,WAAWA;QAAWC,UAAUA;QAAUC,SAASG;QAAaG,MAAK;QAAU,GAAGL,IAAI;kBAC3FJ;;AAGP,EAAC;AAED,OAAO,MAAMU,SAA0B,CAAC,EACtCd,IAAI,EACJe,MAAM,EACNX,QAAQ,EACRC,SAAS,EACTW,SAAS,IAAI,EACbC,UAAU,EACVC,KAAK,EACN;IACC,MAAM,EAAEC,CAAC,EAAE,GAAGxB;IACd,MAAM,EAAEyB,UAAU,EAAEC,UAAU,EAAE,GAAGlC;IACnC,MAAMmC,cAAc5B;IACpB,MAAM,CAAC6B,QAAQC,UAAU,GAAGjC,SAAS;IACrC,MAAM,CAACkC,WAAWC,aAAa,GAAGnC,SAAS;IAE3CD,UAAU;QACRkC,UAAUH,UAAU,CAACrB,KAAK,EAAEuB;IAC9B,GAAG;QAACvB;QAAMqB;KAAW;IAErB/B,UAAU;QACRoC,aAAaH;IACf,GAAG;QAACA;KAAO;IAEX,IAAIA,QAAQ;QACV,qIAAqI;QACrI,qBACE,MAACrC;YACCmB,WAAW;gBACTA;gBACAR;gBACA4B,aAAa,CAAC,EAAE5B,UAAU,SAAS,CAAC;gBACpCyB,cAAc,KAAK,CAAC,EAAEzB,UAAU,QAAQ,CAAC;aAC1C,CACE8B,MAAM,CAACC,SACPC,IAAI,CAAC;YACR7B,MAAMA;YACN8B,OAAO;gBACLC,QAAQjC,QAAQwB;YAClB;;gBAEE,CAAA,CAACA,eAAeA,gBAAgB,CAAA,mBAAM,KAACU;oBAAI3B,WAAW,CAAC,EAAER,UAAU,SAAS,CAAC;;8BAC/E,KAACe;oBACCqB,cAAYd,EAAE;oBACdd,WAAW,CAAC,EAAER,UAAU,OAAO,CAAC;oBAChCqC,IAAI,CAAC,cAAc,EAAElC,KAAK,CAAC;oBAC3BO,SAAS,IAAMa,WAAWpB;oBAC1Ba,MAAK;;8BAEP,MAACmB;oBAAI3B,WAAW,CAAC,EAAER,UAAU,SAAS,CAAC;;sCACrC,KAACmC;4BAAI3B,WAAW,CAAC,EAAER,UAAU,iBAAiB,CAAC;;sCAC/C,KAACD;4BAAOS,WAAW,CAAC,EAAER,UAAU,kBAAkB,CAAC;4BAAEsC,MAAMnB;4BAAQoB,OAAOpB;sCACxE,cAAA,MAACvB,iBAAiB4C,QAAQ;gCAACC,OAAOhB,cAAc;;oCAC7CP;oCACAA,WAAWwB,2BACV,MAACP;wCAAI3B,WAAW,CAAC,EAAER,UAAU,QAAQ,CAAC;;0DACpC,KAAC2C;gDAAGnC,WAAW,CAAC,EAAER,UAAU,eAAe,CAAC;gDAAEqB,OAAOD,aAAaC,QAAQ;0DACvEA;;0DAKH,KAACN;gDACCqB,cAAYd,EAAE;gDACdd,WAAW,CAAC,EAAER,UAAU,eAAe,CAAC;gDACxCqC,IAAI,CAAC,cAAc,EAAElC,KAAK,CAAC;gDAC3BO,SAAS,IAAMa,WAAWpB;gDAC1Ba,MAAK;0DAEL,cAAA,KAACrB;;;;oCAINY;;;;;;;;IAMb;IAEA,OAAO;AACT,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,eAAe,CAAA;AAK9D,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAK9D,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,CA0G7C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { Modal, useModal } from '@faceless-ui/modal';
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
5
|
import { useRouter } from 'next/navigation.js';
|
|
6
6
|
import React, { useCallback, useState } from 'react';
|
|
@@ -15,7 +15,6 @@ import { Button } from '../Button/index.js';
|
|
|
15
15
|
import { PopupList } from '../Popup/index.js';
|
|
16
16
|
const baseClass = 'duplicate';
|
|
17
17
|
export const DuplicateDocument = ({ id, slug, singularLabel })=>{
|
|
18
|
-
const { Modal, useModal } = facelessUIImport;
|
|
19
18
|
const router = useRouter();
|
|
20
19
|
const modified = useFormModified();
|
|
21
20
|
const { toggleModal } = useModal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\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 'react-toastify'\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 { MinimalTemplate } from '../../templates/Minimal/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(`${serverURL}${api}/${slug}/${id}/duplicate?locale=${locale.code}`, {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\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 autoClose: 3000,\n },\n )\n setModified(false)\n router.push(`${admin}/collections/${slug}/${doc.id}?locale=${locale.code}`)\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n { autoClose: 5000 },\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n api,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n setModified,\n router,\n admin,\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 <MinimalTemplate 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 </MinimalTemplate>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useLocale","useTranslation","MinimalTemplate","requests","Button","PopupList","baseClass","DuplicateDocument","id","slug","singularLabel","router","modified","toggleModal","locale","setModified","routes","api","serverURL","admin","hasClicked","setHasClicked","i18n","t","modalSlug","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","autoClose","push","error","confirm","Fragment","onClick","className","h1","p","buttonStyle","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAoBpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAEpE,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,sBAAsB,CAAA;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AAgED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAoBpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAEpE,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,sBAAsB,CAAA;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AAgED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkJ5C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { useModal } from '@faceless-ui/modal';
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
5
|
import { useRouter } from 'next/navigation.js';
|
|
6
6
|
import React, { useCallback, useState } from 'react';
|
|
@@ -88,7 +88,6 @@ const SaveDraftButton = ({ action, disabled })=>{
|
|
|
88
88
|
});
|
|
89
89
|
};
|
|
90
90
|
export const EditMany = (props)=>{
|
|
91
|
-
const { useModal } = facelessUIImport;
|
|
92
91
|
const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props;
|
|
93
92
|
const { permissions } = useAuth();
|
|
94
93
|
const { closeModal } = useModal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { useModal } = facelessUIImport\n\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","X","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","PublishButton","overrides","_status","SaveDraftButton","EditMany","props","useModal","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AAGA,YAAYA,sBAAsB,qBAAoB;AACtD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,OAAOC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAO;AAIpD,SAASC,OAAO,QAAQ,8BAA6B;AACrD,SAASC,IAAI,QAAQ,4BAA2B;AAChD,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,CAAC,QAAQ,yBAAwB;AAC1C,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,oBAAoB,QAAQ,wCAAuC;AAC5E,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,aAAa,QAAQ,sCAAqC;AACnE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,eAAe,EAAEC,YAAY,QAAQ,qCAAoC;AAClF,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,YAAY,QAAQ,kCAAiC;AAC9D,SAASC,MAAM,EAAEC,aAAa,QAAQ,qBAAoB;AAC1D,SAASC,WAAW,QAAQ,0BAAyB;AAGrD,MAAMC,YAAY;AAWlB,MAAMC,SAA0D,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAE;IACnF,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRC,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,KAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;kBACvED,EAAE;;AAGT;AAEA,MAAMM,gBAAiE,CAAC,EAAET,MAAM,EAAEC,QAAQ,EAAE;IAC1F,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRK,WAAW;gBACTC,SAAS;YACX;YACAL,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,KAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,SAAS,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;kBAC1ED,EAAE;;AAGT;AAEA,MAAMS,kBAAmE,CAAC,EAAEZ,MAAM,EAAEC,QAAQ,EAAE;IAC5F,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRK,WAAW;gBACTC,SAAS;YACX;YACAL,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,KAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,OAAO,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;kBACxED,EAAE;;AAGT;AACA,OAAO,MAAMU,WAAoC,CAACC;IAChD,MAAM,EAAEC,QAAQ,EAAE,GAAGzC;IAErB,MAAM,EAAE0C,YAAY,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,EAAEH,UAAU,EAAEI,QAAQ,EAAE,GAAGN;IAEhF,MAAM,EAAEO,WAAW,EAAE,GAAGpC;IACxB,MAAM,EAAEqC,UAAU,EAAE,GAAGP;IACvB,MAAM,EACJQ,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,GAAGxC;IACJ,MAAM,EAAEyC,KAAK,EAAEC,cAAc,EAAEC,SAAS,EAAE,GAAGrC;IAC7C,MAAM,EAAEsC,IAAI,EAAE3B,CAAC,EAAE,GAAGV;IACpB,MAAM,CAACsC,UAAUC,YAAY,GAAGrD,SAAS,EAAE;IAC3C,MAAM,EAAEsD,eAAe,EAAE,GAAG3C;IAC5B,MAAM4C,SAAS1D;IACf,MAAM,CAAC2D,cAAcC,gBAAgB,GAAGzD;IACxC,MAAM0D,sBAAsB5D,MAAM6D,MAAM,CAAC;IACzC,MAAM,EAAEC,eAAe,EAAE,GAAGlD;IAE5B,MAAMmD,wBAAwBnB,aAAaoB,aAAa,CAACxB,KAAK;IAC9D,MAAMyB,sBAAsBF,uBAAuBG,QAAQC;IAE3D,MAAMC,aAAa,CAAC,KAAK,EAAE5B,KAAK,CAAC;IAEjCxC,MAAMqE,SAAS,CAAC;QACd,IAAI,CAACT,oBAAoBU,OAAO,EAAE;YAChC,MAAMC,kBAAkB;gBACtB,MAAMC,SAAS,MAAMvD,aAAa;oBAChC+B;oBACAyB,MAAM;wBACJC,gBAAgBlC;wBAChBmC,MAAM,CAAC;wBACPC,WAAW;wBACXC,YAAYrC;oBACd;oBACAS;gBACF;gBAEAU,gBAAgBa;gBAChBZ,oBAAoBU,OAAO,GAAG;YAChC;YAEA,KAAKC;QACP;IACF,GAAG;QAACvB;QAAUY;QAAqBX;QAAWT;KAAK;IAEnD,MAAMsC,WAAqC7E,YACzC,CAAC,EAAE8E,WAAWC,aAAa,EAAE,GAC3B/D,aAAa;YACX+B;YACAyB,MAAM;gBACJC,gBAAgBlC;gBAChBuC,WAAWC;gBACXJ,WAAW;gBACXC,YAAYrC;YACd;YACAS;QACF,IACF;QAACA;QAAWD;QAAUR;KAAK;IAG7B,IAAIY,cAActC,gBAAgBmE,IAAI,IAAI,CAAChB,qBAAqB;QAC9D,OAAO;IACT;IAEA,MAAMiB,YAAY;QAChBzB,OAAO0B,OAAO,CACZ3B,gBAAgB;YACd4B,QAAQ;gBAAEC,MAAMjC,cAActC,gBAAgBwE,YAAY,GAAG,MAAMC;YAAU;QAC/E;QAEFzB;QACAjB,WAAWuB;IACb;IAEA,qBACE,MAACoB;QAAI1D,WAAWT;;0BACd,KAACF;gBACCsE,cAAY/D,EAAE;gBACdI,WAAW,CAAC,EAAET,UAAU,QAAQ,CAAC;gBACjCU,SAAS;oBACPwB,YAAY,EAAE;gBAChB;gBACAf,MAAM4B;0BAEL1C,EAAE;;0BAEL,KAACR;gBAAOwE,QAAQ;gBAAMlD,MAAM4B;0BAC1B,cAAA,KAAC1D;oBAAqBgE,gBAAgBlC;oBAAMmD,IAAI;8BAC9C,cAAA,KAAChF,iBAAiBiF,QAAQ;wBAACC,OAAM;kCAC/B,cAAA,MAACL;4BAAI1D,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;;8CAClC,MAACmE;oCAAI1D,WAAW,CAAC,EAAET,UAAU,QAAQ,CAAC;;sDACpC,KAACyE;4CAAGhE,WAAW,CAAC,EAAET,UAAU,eAAe,CAAC;sDACzCK,EAAE,wBAAwB;gDAAEwB;gDAAO6C,OAAOjG,eAAe4C,QAAQW;4CAAM;;sDAE1E,KAAC2C;4CACCP,cAAY/D,EAAE;4CACdI,WAAW,CAAC,EAAET,UAAU,eAAe,CAAC;4CACxCsE,IAAI,CAAC,cAAc,EAAEvB,WAAW,CAAC;4CACjCrC,SAAS,IAAMc,WAAWuB;4CAC1B6B,MAAK;sDAEL,cAAA,KAAC1F;;;;8CAGL,MAACH;oCACC0B,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;oCAC/BqC,cAAcA;oCACdoB,UAAU;wCAACA;qCAAS;oCACpBI,WAAWA;;sDAEX,KAAC9D;4CAAYuB,UAAUA;4CAAUY,aAAaA;;wCAC7CD,SAAS4C,MAAM,KAAK,IAAI,qBACvB,KAAC7F;4CAAasC,UAAUW;4CAAU6C,MAAK;4CAAGC,UAAU;4CAAOvB,YAAYrC;;sDAEzE,KAACgD;4CAAI1D,WAAW,CAAC,EAAET,UAAU,cAAc,CAAC;sDAC1C,cAAA,KAACmE;gDAAI1D,WAAW,CAAC,EAAET,UAAU,SAAS,CAAC;0DACrC,cAAA,KAACmE;oDAAI1D,WAAW,CAAC,EAAET,UAAU,qBAAqB,CAAC;8DACjD,cAAA,KAACmE;wDAAI1D,WAAW,CAAC,EAAET,UAAU,kBAAkB,CAAC;kEAC7CkB,YAAY8D,UAAUC,uBACrB,MAACtG,MAAMuG,QAAQ;;8EACb,KAACvE;oEACCT,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,WAAW,CAAC;oEACvE3B,UAAU8B,SAAS4C,MAAM,KAAK;;8EAEhC,KAAC/D;oEACCZ,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,WAAW,CAAC;oEACvE3B,UAAU8B,SAAS4C,MAAM,KAAK;;;2EAIlC,KAAC5E;4DACCC,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,CAAC;4DAC5D3B,UAAU8B,SAAS4C,MAAM,KAAK;;;;;;;;;;;;;;;AAc1D,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["useModal","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","X","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","PublishButton","overrides","_status","SaveDraftButton","EditMany","props","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditUpload/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditUpload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAA;AAG5C,OAAO,KAA2B,MAAM,OAAO,CAAA;AAE/C,OAAO,qCAAqC,CAAA;AAM5C,OAAO,cAAc,CAAA;AAerB,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,iBAAiB,CAAC,EAAE,aAAa,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAUD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyPhD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { useModal } from '@faceless-ui/modal';
|
|
4
4
|
import React, { useRef, useState } from 'react';
|
|
5
5
|
import ReactCrop from 'react-image-crop';
|
|
6
6
|
import { editDrawerSlug } from '../../elements/Upload/index.js';
|
|
@@ -28,7 +28,6 @@ const defaultCrop = {
|
|
|
28
28
|
y: 0
|
|
29
29
|
};
|
|
30
30
|
export const EditUpload = ({ fileName, fileSrc, imageCacheTag, initialCrop, initialFocalPoint, onSave, showCrop, showFocalPoint })=>{
|
|
31
|
-
const { useModal } = facelessUIImport;
|
|
32
31
|
const { closeModal } = useModal();
|
|
33
32
|
const { t } = useTranslation();
|
|
34
33
|
const [crop, setCrop] = useState(()=>({
|
|
@@ -39,9 +38,6 @@ export const EditUpload = ({ fileName, fileSrc, imageCacheTag, initialCrop, init
|
|
|
39
38
|
x: 50,
|
|
40
39
|
y: 50
|
|
41
40
|
};
|
|
42
|
-
console.log({
|
|
43
|
-
initialFocalPoint
|
|
44
|
-
});
|
|
45
41
|
const [focalPosition, setFocalPosition] = useState(()=>({
|
|
46
42
|
...defaultFocalPosition,
|
|
47
43
|
...initialFocalPoint
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/EditUpload/index.tsx"],"sourcesContent":["'use client'\nimport type { Data } from 'payload/types'\nimport type CropType from 'react-image-crop'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React, { useRef, useState } from 'react'\nimport ReactCrop from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\n\nimport { editDrawerSlug } from '../../elements/Upload/index.js'\nimport { Plus } from '../../icons/Plus/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-upload'\n\nconst Input: React.FC<{ name: string; onChange: (value: string) => void; value: string }> = ({\n name,\n onChange,\n value,\n}) => (\n <div className={`${baseClass}__input`}>\n {name}\n <input name={name} onChange={(e) => onChange(e.target.value)} type=\"number\" value={value} />\n </div>\n)\n\ntype FocalPosition = {\n x: number\n y: number\n}\n\nexport type EditUploadProps = {\n fileName: string\n fileSrc: string\n imageCacheTag?: string\n initialCrop?: CropType\n initialFocalPoint?: FocalPosition\n onSave?: ({ crop, focalPosition }: { crop: CropType; focalPosition: FocalPosition }) => void\n showCrop?: boolean\n showFocalPoint?: boolean\n}\n\nconst defaultCrop: CropType = {\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n}\n\nexport const EditUpload: React.FC<EditUploadProps> = ({\n fileName,\n fileSrc,\n imageCacheTag,\n initialCrop,\n initialFocalPoint,\n onSave,\n showCrop,\n showFocalPoint,\n}) => {\n const { useModal } = facelessUIImport\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const [crop, setCrop] = useState<CropType>(() => ({\n ...defaultCrop,\n ...initialCrop,\n }))\n\n const defaultFocalPosition: FocalPosition = {\n x: 50,\n y: 50,\n }\n\n console.log({ initialFocalPoint })\n\n const [focalPosition, setFocalPosition] = useState<FocalPosition>(() => ({\n ...defaultFocalPosition,\n ...initialFocalPoint,\n }))\n const [checkBounds, setCheckBounds] = useState<boolean>(false)\n const [originalHeight, setOriginalHeight] = useState<number>(0)\n const [originalWidth, setOriginalWidth] = useState<number>(0)\n\n const focalWrapRef = useRef<HTMLDivElement | undefined>(undefined)\n const imageRef = useRef<HTMLImageElement | undefined>(undefined)\n const cropRef = useRef<HTMLDivElement | undefined>(undefined)\n\n const fineTuneCrop = ({ dimension, value }: { dimension: 'height' | 'width'; value: string }) => {\n const intValue = parseInt(value)\n if (dimension === 'width' && intValue >= originalWidth) return null\n if (dimension === 'height' && intValue >= originalHeight) return null\n\n const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight))\n\n if (percentage === 100 || percentage === 0) return null\n\n setCrop({\n ...crop,\n [dimension]: percentage,\n })\n }\n\n const fineTuneFocalPosition = ({\n coordinate,\n value,\n }: {\n coordinate: 'x' | 'y'\n value: string\n }) => {\n const intValue = parseInt(value)\n if (intValue >= 0 && intValue <= 100) {\n setFocalPosition((prevPosition) => ({ ...prevPosition, [coordinate]: intValue }))\n }\n }\n\n const saveEdits = () => {\n if (typeof onSave === 'function')\n onSave({\n crop,\n focalPosition,\n })\n closeModal(editDrawerSlug)\n }\n\n const onDragEnd = React.useCallback(({ x, y }) => {\n setFocalPosition({ x, y })\n setCheckBounds(false)\n }, [])\n\n const centerFocalPoint = () => {\n const containerRect = focalWrapRef.current.getBoundingClientRect()\n const boundsRect = showCrop\n ? cropRef.current.getBoundingClientRect()\n : imageRef.current.getBoundingClientRect()\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n setFocalPosition({ x: xCenter, y: yCenter })\n }\n\n const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h2 title={`${t('general:editing')} ${fileName}`}>\n {t('general:editing')} {fileName}\n </h2>\n <div className={`${baseClass}__actions`}>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__cancel`}\n onClick={() => closeModal(editDrawerSlug)}\n >\n {t('general:cancel')}\n </Button>\n <Button\n aria-label={t('general:applyChanges')}\n buttonStyle=\"primary\"\n className={`${baseClass}__save`}\n onClick={saveEdits}\n >\n {t('general:applyChanges')}\n </Button>\n </div>\n </div>\n <div className={`${baseClass}__toolWrap`}>\n <div className={`${baseClass}__crop`}>\n <div\n className={`${baseClass}__focal-wrapper`}\n ref={focalWrapRef}\n style={{\n aspectRatio: `${originalWidth / originalHeight}`,\n }}\n >\n {showCrop ? (\n <ReactCrop\n className={`${baseClass}__reactCrop`}\n crop={crop}\n onChange={(_, c) => setCrop(c)}\n onComplete={() => setCheckBounds(true)}\n renderSelectionAddon={() => {\n return <div className={`${baseClass}__crop-window`} ref={cropRef} />\n }}\n >\n <img\n alt={t('upload:setCropArea')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n </ReactCrop>\n ) : (\n <img\n alt={t('upload:setFocalPoint')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n )}\n {showFocalPoint && (\n <DraggableElement\n boundsRef={showCrop ? cropRef : imageRef}\n checkBounds={showCrop ? checkBounds : false}\n className={`${baseClass}__focalPoint`}\n containerRef={focalWrapRef}\n initialPosition={focalPosition}\n onDragEnd={onDragEnd}\n setCheckBounds={showCrop ? setCheckBounds : false}\n >\n <Plus />\n </DraggableElement>\n )}\n </div>\n </div>\n {(showCrop || showFocalPoint) && (\n <div className={`${baseClass}__sidebar`}>\n {showCrop && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:crop')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={() =>\n setCrop({\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n })\n }\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:cropToolDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name={`${t('upload:width')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'width', value })}\n value={((crop.width / 100) * originalWidth).toFixed(0)}\n />\n <Input\n name={`${t('upload:height')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'height', value })}\n value={((crop.height / 100) * originalHeight).toFixed(0)}\n />\n </div>\n </div>\n )}\n\n {showFocalPoint && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:focalPoint')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={centerFocalPoint}\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:focalPointDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name=\"X %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'x', value })}\n value={focalPosition.x.toFixed(0)}\n />\n <Input\n name=\"Y %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'y', value })}\n value={focalPosition.y.toFixed(0)}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst DraggableElement = ({\n boundsRef,\n checkBounds,\n children,\n className,\n containerRef,\n initialPosition = { x: 50, y: 50 },\n onDragEnd,\n setCheckBounds,\n}) => {\n const [position, setPosition] = useState({ x: initialPosition.x, y: initialPosition.y })\n const [isDragging, setIsDragging] = useState(false)\n const dragRef = useRef<HTMLButtonElement | undefined>(undefined)\n\n const getCoordinates = React.useCallback(\n (mouseXArg?: number, mouseYArg?: number, recenter?: boolean) => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const boundsRect = boundsRef.current.getBoundingClientRect()\n const mouseX = mouseXArg ?? boundsRect.left\n const mouseY = mouseYArg ?? boundsRect.top\n\n const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right\n const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom\n\n let x = ((mouseX - containerRect.left) / containerRect.width) * 100\n let y = ((mouseY - containerRect.top) / containerRect.height) * 100\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n if (xOutOfBounds || yOutOfBounds) {\n setIsDragging(false)\n if (mouseX < boundsRect.left) {\n x = ((boundsRect.left - containerRect.left) / containerRect.width) * 100\n } else if (mouseX > boundsRect.right) {\n x =\n ((containerRect.width - (containerRect.right - boundsRect.right)) /\n containerRect.width) *\n 100\n }\n\n if (mouseY < boundsRect.top) {\n y = ((boundsRect.top - containerRect.top) / containerRect.height) * 100\n } else if (mouseY > boundsRect.bottom) {\n y =\n ((containerRect.height - (containerRect.bottom - boundsRect.bottom)) /\n containerRect.height) *\n 100\n }\n\n if (recenter) {\n x = xOutOfBounds ? xCenter : x\n y = yOutOfBounds ? yCenter : y\n }\n }\n\n return { x, y }\n },\n [boundsRef, containerRef],\n )\n\n const handleMouseDown = (event) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleMouseMove = (event) => {\n if (!isDragging) return null\n const { x, y } = getCoordinates(event.clientX, event.clientY)\n\n setPosition({ x, y })\n }\n\n const onDrop = () => {\n setIsDragging(false)\n onDragEnd(position)\n }\n\n React.useEffect(() => {\n if (isDragging || !dragRef.current) return\n if (checkBounds) {\n const { height, left, top, width } = dragRef.current.getBoundingClientRect()\n const { x, y } = getCoordinates(left + width / 2, top + height / 2, true)\n onDragEnd({ x, y })\n setPosition({ x, y })\n setCheckBounds(false)\n return\n }\n }, [getCoordinates, isDragging, checkBounds, setCheckBounds, position.x, position.y, onDragEnd])\n\n React.useEffect(() => {\n setPosition({ x: initialPosition.x, y: initialPosition.y })\n }, [initialPosition.x, initialPosition.y])\n\n return (\n <div\n className={[\n `${baseClass}__draggable-container`,\n isDragging && `${baseClass}__draggable-container--dragging`,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseMove={handleMouseMove}\n >\n <button\n className={[`${baseClass}__draggable`, className].filter(Boolean).join(' ')}\n onMouseDown={handleMouseDown}\n onMouseUp={onDrop}\n ref={dragRef}\n style={{ left: `${position.x}%`, top: `${position.y}%` }}\n type=\"button\"\n >\n {children}\n </button>\n <div />\n </div>\n )\n}\n"],"names":["facelessUIImport","React","useRef","useState","ReactCrop","editDrawerSlug","Plus","useTranslation","Button","baseClass","Input","name","onChange","value","div","className","input","e","target","type","defaultCrop","height","unit","width","x","y","EditUpload","fileName","fileSrc","imageCacheTag","initialCrop","initialFocalPoint","onSave","showCrop","showFocalPoint","useModal","closeModal","t","crop","setCrop","defaultFocalPosition","console","log","focalPosition","setFocalPosition","checkBounds","setCheckBounds","originalHeight","setOriginalHeight","originalWidth","setOriginalWidth","focalWrapRef","undefined","imageRef","cropRef","fineTuneCrop","dimension","intValue","parseInt","percentage","fineTuneFocalPosition","coordinate","prevPosition","saveEdits","onDragEnd","useCallback","centerFocalPoint","containerRect","current","getBoundingClientRect","boundsRect","xCenter","left","yCenter","top","fileSrcToUse","h2","title","aria-label","buttonStyle","onClick","ref","style","aspectRatio","_","c","onComplete","renderSelectionAddon","img","alt","onLoad","currentTarget","naturalHeight","naturalWidth","src","DraggableElement","boundsRef","containerRef","initialPosition","h3","span","toFixed","children","position","setPosition","isDragging","setIsDragging","dragRef","getCoordinates","mouseXArg","mouseYArg","recenter","mouseX","mouseY","xOutOfBounds","right","yOutOfBounds","bottom","handleMouseDown","event","preventDefault","handleMouseMove","clientX","clientY","onDrop","useEffect","filter","Boolean","join","onMouseMove","button","onMouseDown","onMouseUp"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/EditUpload/index.tsx"],"sourcesContent":["'use client'\nimport type CropType from 'react-image-crop'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useRef, useState } from 'react'\nimport ReactCrop from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\n\nimport { editDrawerSlug } from '../../elements/Upload/index.js'\nimport { Plus } from '../../icons/Plus/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-upload'\n\nconst Input: React.FC<{ name: string; onChange: (value: string) => void; value: string }> = ({\n name,\n onChange,\n value,\n}) => (\n <div className={`${baseClass}__input`}>\n {name}\n <input name={name} onChange={(e) => onChange(e.target.value)} type=\"number\" value={value} />\n </div>\n)\n\ntype FocalPosition = {\n x: number\n y: number\n}\n\nexport type EditUploadProps = {\n fileName: string\n fileSrc: string\n imageCacheTag?: string\n initialCrop?: CropType\n initialFocalPoint?: FocalPosition\n onSave?: ({ crop, focalPosition }: { crop: CropType; focalPosition: FocalPosition }) => void\n showCrop?: boolean\n showFocalPoint?: boolean\n}\n\nconst defaultCrop: CropType = {\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n}\n\nexport const EditUpload: React.FC<EditUploadProps> = ({\n fileName,\n fileSrc,\n imageCacheTag,\n initialCrop,\n initialFocalPoint,\n onSave,\n showCrop,\n showFocalPoint,\n}) => {\n const { closeModal } = useModal()\n const { t } = useTranslation()\n\n const [crop, setCrop] = useState<CropType>(() => ({\n ...defaultCrop,\n ...initialCrop,\n }))\n\n const defaultFocalPosition: FocalPosition = {\n x: 50,\n y: 50,\n }\n\n const [focalPosition, setFocalPosition] = useState<FocalPosition>(() => ({\n ...defaultFocalPosition,\n ...initialFocalPoint,\n }))\n const [checkBounds, setCheckBounds] = useState<boolean>(false)\n const [originalHeight, setOriginalHeight] = useState<number>(0)\n const [originalWidth, setOriginalWidth] = useState<number>(0)\n\n const focalWrapRef = useRef<HTMLDivElement | undefined>(undefined)\n const imageRef = useRef<HTMLImageElement | undefined>(undefined)\n const cropRef = useRef<HTMLDivElement | undefined>(undefined)\n\n const fineTuneCrop = ({ dimension, value }: { dimension: 'height' | 'width'; value: string }) => {\n const intValue = parseInt(value)\n if (dimension === 'width' && intValue >= originalWidth) return null\n if (dimension === 'height' && intValue >= originalHeight) return null\n\n const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight))\n\n if (percentage === 100 || percentage === 0) return null\n\n setCrop({\n ...crop,\n [dimension]: percentage,\n })\n }\n\n const fineTuneFocalPosition = ({\n coordinate,\n value,\n }: {\n coordinate: 'x' | 'y'\n value: string\n }) => {\n const intValue = parseInt(value)\n if (intValue >= 0 && intValue <= 100) {\n setFocalPosition((prevPosition) => ({ ...prevPosition, [coordinate]: intValue }))\n }\n }\n\n const saveEdits = () => {\n if (typeof onSave === 'function')\n onSave({\n crop,\n focalPosition,\n })\n closeModal(editDrawerSlug)\n }\n\n const onDragEnd = React.useCallback(({ x, y }) => {\n setFocalPosition({ x, y })\n setCheckBounds(false)\n }, [])\n\n const centerFocalPoint = () => {\n const containerRect = focalWrapRef.current.getBoundingClientRect()\n const boundsRect = showCrop\n ? cropRef.current.getBoundingClientRect()\n : imageRef.current.getBoundingClientRect()\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n setFocalPosition({ x: xCenter, y: yCenter })\n }\n\n const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h2 title={`${t('general:editing')} ${fileName}`}>\n {t('general:editing')} {fileName}\n </h2>\n <div className={`${baseClass}__actions`}>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__cancel`}\n onClick={() => closeModal(editDrawerSlug)}\n >\n {t('general:cancel')}\n </Button>\n <Button\n aria-label={t('general:applyChanges')}\n buttonStyle=\"primary\"\n className={`${baseClass}__save`}\n onClick={saveEdits}\n >\n {t('general:applyChanges')}\n </Button>\n </div>\n </div>\n <div className={`${baseClass}__toolWrap`}>\n <div className={`${baseClass}__crop`}>\n <div\n className={`${baseClass}__focal-wrapper`}\n ref={focalWrapRef}\n style={{\n aspectRatio: `${originalWidth / originalHeight}`,\n }}\n >\n {showCrop ? (\n <ReactCrop\n className={`${baseClass}__reactCrop`}\n crop={crop}\n onChange={(_, c) => setCrop(c)}\n onComplete={() => setCheckBounds(true)}\n renderSelectionAddon={() => {\n return <div className={`${baseClass}__crop-window`} ref={cropRef} />\n }}\n >\n <img\n alt={t('upload:setCropArea')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n </ReactCrop>\n ) : (\n <img\n alt={t('upload:setFocalPoint')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n )}\n {showFocalPoint && (\n <DraggableElement\n boundsRef={showCrop ? cropRef : imageRef}\n checkBounds={showCrop ? checkBounds : false}\n className={`${baseClass}__focalPoint`}\n containerRef={focalWrapRef}\n initialPosition={focalPosition}\n onDragEnd={onDragEnd}\n setCheckBounds={showCrop ? setCheckBounds : false}\n >\n <Plus />\n </DraggableElement>\n )}\n </div>\n </div>\n {(showCrop || showFocalPoint) && (\n <div className={`${baseClass}__sidebar`}>\n {showCrop && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:crop')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={() =>\n setCrop({\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n })\n }\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:cropToolDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name={`${t('upload:width')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'width', value })}\n value={((crop.width / 100) * originalWidth).toFixed(0)}\n />\n <Input\n name={`${t('upload:height')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'height', value })}\n value={((crop.height / 100) * originalHeight).toFixed(0)}\n />\n </div>\n </div>\n )}\n\n {showFocalPoint && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:focalPoint')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={centerFocalPoint}\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:focalPointDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name=\"X %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'x', value })}\n value={focalPosition.x.toFixed(0)}\n />\n <Input\n name=\"Y %\"\n onChange={(value) => fineTuneFocalPosition({ coordinate: 'y', value })}\n value={focalPosition.y.toFixed(0)}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst DraggableElement = ({\n boundsRef,\n checkBounds,\n children,\n className,\n containerRef,\n initialPosition = { x: 50, y: 50 },\n onDragEnd,\n setCheckBounds,\n}) => {\n const [position, setPosition] = useState({ x: initialPosition.x, y: initialPosition.y })\n const [isDragging, setIsDragging] = useState(false)\n const dragRef = useRef<HTMLButtonElement | undefined>(undefined)\n\n const getCoordinates = React.useCallback(\n (mouseXArg?: number, mouseYArg?: number, recenter?: boolean) => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const boundsRect = boundsRef.current.getBoundingClientRect()\n const mouseX = mouseXArg ?? boundsRect.left\n const mouseY = mouseYArg ?? boundsRect.top\n\n const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right\n const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom\n\n let x = ((mouseX - containerRect.left) / containerRect.width) * 100\n let y = ((mouseY - containerRect.top) / containerRect.height) * 100\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n if (xOutOfBounds || yOutOfBounds) {\n setIsDragging(false)\n if (mouseX < boundsRect.left) {\n x = ((boundsRect.left - containerRect.left) / containerRect.width) * 100\n } else if (mouseX > boundsRect.right) {\n x =\n ((containerRect.width - (containerRect.right - boundsRect.right)) /\n containerRect.width) *\n 100\n }\n\n if (mouseY < boundsRect.top) {\n y = ((boundsRect.top - containerRect.top) / containerRect.height) * 100\n } else if (mouseY > boundsRect.bottom) {\n y =\n ((containerRect.height - (containerRect.bottom - boundsRect.bottom)) /\n containerRect.height) *\n 100\n }\n\n if (recenter) {\n x = xOutOfBounds ? xCenter : x\n y = yOutOfBounds ? yCenter : y\n }\n }\n\n return { x, y }\n },\n [boundsRef, containerRef],\n )\n\n const handleMouseDown = (event) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleMouseMove = (event) => {\n if (!isDragging) return null\n const { x, y } = getCoordinates(event.clientX, event.clientY)\n\n setPosition({ x, y })\n }\n\n const onDrop = () => {\n setIsDragging(false)\n onDragEnd(position)\n }\n\n React.useEffect(() => {\n if (isDragging || !dragRef.current) return\n if (checkBounds) {\n const { height, left, top, width } = dragRef.current.getBoundingClientRect()\n const { x, y } = getCoordinates(left + width / 2, top + height / 2, true)\n onDragEnd({ x, y })\n setPosition({ x, y })\n setCheckBounds(false)\n return\n }\n }, [getCoordinates, isDragging, checkBounds, setCheckBounds, position.x, position.y, onDragEnd])\n\n React.useEffect(() => {\n setPosition({ x: initialPosition.x, y: initialPosition.y })\n }, [initialPosition.x, initialPosition.y])\n\n return (\n <div\n className={[\n `${baseClass}__draggable-container`,\n isDragging && `${baseClass}__draggable-container--dragging`,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseMove={handleMouseMove}\n >\n <button\n className={[`${baseClass}__draggable`, className].filter(Boolean).join(' ')}\n onMouseDown={handleMouseDown}\n onMouseUp={onDrop}\n ref={dragRef}\n style={{ left: `${position.x}%`, top: `${position.y}%` }}\n type=\"button\"\n >\n {children}\n </button>\n <div />\n </div>\n )\n}\n"],"names":["useModal","React","useRef","useState","ReactCrop","editDrawerSlug","Plus","useTranslation","Button","baseClass","Input","name","onChange","value","div","className","input","e","target","type","defaultCrop","height","unit","width","x","y","EditUpload","fileName","fileSrc","imageCacheTag","initialCrop","initialFocalPoint","onSave","showCrop","showFocalPoint","closeModal","t","crop","setCrop","defaultFocalPosition","focalPosition","setFocalPosition","checkBounds","setCheckBounds","originalHeight","setOriginalHeight","originalWidth","setOriginalWidth","focalWrapRef","undefined","imageRef","cropRef","fineTuneCrop","dimension","intValue","parseInt","percentage","fineTuneFocalPosition","coordinate","prevPosition","saveEdits","onDragEnd","useCallback","centerFocalPoint","containerRect","current","getBoundingClientRect","boundsRect","xCenter","left","yCenter","top","fileSrcToUse","h2","title","aria-label","buttonStyle","onClick","ref","style","aspectRatio","_","c","onComplete","renderSelectionAddon","img","alt","onLoad","currentTarget","naturalHeight","naturalWidth","src","DraggableElement","boundsRef","containerRef","initialPosition","h3","span","toFixed","children","position","setPosition","isDragging","setIsDragging","dragRef","getCoordinates","mouseXArg","mouseYArg","recenter","mouseX","mouseY","xOutOfBounds","right","yOutOfBounds","bottom","handleMouseDown","event","preventDefault","handleMouseMove","clientX","clientY","onDrop","useEffect","filter","Boolean","join","onMouseMove","button","onMouseDown","onMouseUp"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAsDpE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { Modal, useModal } from '@faceless-ui/modal';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { toast } from 'react-toastify';
|
|
6
6
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
@@ -10,7 +10,6 @@ import { Button } from '../Button/index.js';
|
|
|
10
10
|
import { Translation } from '../Translation/index.js';
|
|
11
11
|
const baseClass = 'generate-confirmation';
|
|
12
12
|
export const GenerateConfirmation = (props)=>{
|
|
13
|
-
const { Modal, useModal } = facelessUIImport;
|
|
14
13
|
const { highlightField, setKey } = props;
|
|
15
14
|
const { id } = useDocumentInfo();
|
|
16
15
|
const { toggleModal } = useModal();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { Button } from '../Button/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'generate-confirmation'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport const GenerateConfirmation: React.FC<GenerateConfirmationProps> = (props) => {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = () => {\n setKey()\n toggleModal(modalSlug)\n toast.success(t('authentication:newAPIKeyGenerated'), { autoClose: 3000 })\n highlightField(true)\n }\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('authentication:confirmGeneration')}</h1>\n <p>\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n </p>\n\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={handleGenerate}>{t('authentication:generate')}</Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["Modal","useModal","React","toast","useDocumentInfo","useTranslation","MinimalTemplate","Button","Translation","baseClass","GenerateConfirmation","props","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","autoClose","Fragment","buttonStyle","onClick","size","className","slug","h1","p","elements","children","strong","i18nKey","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,SAASA,KAAK,EAAEC,QAAQ,QAAQ,qBAAoB;AACpD,OAAOC,WAAW,QAAO;AACzB,SAASC,KAAK,QAAQ,iBAAgB;AAEtC,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,WAAW,QAAQ,0BAAyB;AAGrD,MAAMC,YAAY;AAOlB,OAAO,MAAMC,uBAA4D,CAACC;IACxE,MAAM,EAAEC,cAAc,EAAEC,MAAM,EAAE,GAAGF;IAEnC,MAAM,EAAEG,EAAE,EAAE,GAAGV;IACf,MAAM,EAAEW,WAAW,EAAE,GAAGd;IACxB,MAAM,EAAEe,CAAC,EAAE,GAAGX;IAEd,MAAMY,YAAY,CAAC,sBAAsB,EAAEH,GAAG,CAAC;IAE/C,MAAMI,iBAAiB;QACrBL;QACAE,YAAYE;QACZd,MAAMgB,OAAO,CAACH,EAAE,sCAAsC;YAAEI,WAAW;QAAK;QACxER,eAAe;IACjB;IAEA,qBACE,MAACV,MAAMmB,QAAQ;;0BACb,KAACd;gBACCe,aAAY;gBACZC,SAAS;oBACPR,YAAYE;gBACd;gBACAO,MAAK;0BAEJR,EAAE;;0BAEL,KAAChB;gBAAMyB,WAAWhB;gBAAWiB,MAAMT;0BACjC,cAAA,MAACX;oBAAgBmB,WAAW,CAAC,EAAEhB,UAAU,UAAU,CAAC;;sCAClD,KAACkB;sCAAIX,EAAE;;sCACP,KAACY;sCACC,cAAA,KAACpB;gCACCqB,UAAU;oCACR,GAAG,CAAC,EAAEC,QAAQ,EAAE,iBAAK,KAACC;sDAAQD;;gCAChC;gCACAE,SAAQ;gCACRhB,GAAGA;;;sCAIP,KAACT;4BACCe,aAAY;4BACZC,SAAS;gCACPR,YAAYE;4BACd;4BACAgB,MAAK;sCAEJjB,EAAE;;sCAEL,KAACT;4BAAOgB,SAASL;sCAAiBF,EAAE;;;;;;;AAK9C,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAIlE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAM1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAiBpE,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAIlE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAM1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAiBpE,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA0IpD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { useWindowInfo } from '@faceless-ui/window-info';
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
5
|
import React, { useEffect, useRef, useState } from 'react';
|
|
6
6
|
import AnimateHeightImport from 'react-animate-height';
|
|
@@ -27,7 +27,6 @@ const baseClass = 'list-controls';
|
|
|
27
27
|
* the collection's documents.
|
|
28
28
|
*/ export const ListControls = (props)=>{
|
|
29
29
|
const { collectionConfig, enableColumns = true, enableSort = false, fieldMap } = props;
|
|
30
|
-
const { useWindowInfo } = facelessUIImport;
|
|
31
30
|
const { handleSearchChange } = useListQuery();
|
|
32
31
|
const { searchParams } = useSearchParams();
|
|
33
32
|
const titleField = useUseTitleField(collectionConfig, fieldMap);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useRef, useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { Chevron } from '../../icons/Chevron/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { DeleteMany } from '../DeleteMany/index.js'\nimport { EditMany } from '../EditMany/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { PublishMany } from '../PublishMany/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { UnpublishMany } from '../UnpublishMany/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n collectionConfig: ClientCollectionConfig\n enableColumns?: boolean\n enableSort?: boolean\n fieldMap: FieldMap\n handleSearchChange?: (search: string) => void\n handleSortChange?: (sort: string) => void\n handleWhereChange?: (where: Where) => void\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const { collectionConfig, enableColumns = true, enableSort = false, fieldMap } = props\n\n const { useWindowInfo } = facelessUIImport\n\n const { handleSearchChange } = useListQuery()\n const { searchParams } = useSearchParams()\n const titleField = useUseTitleField(collectionConfig, fieldMap)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const hasWhereParam = useRef(Boolean(searchParams?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(searchParams?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !searchParams?.where) {\n setVisibleDrawer(undefined)\n hasWhereParam.current = false\n } else if (searchParams?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, searchParams?.where])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchFilter\n fieldLabel={\n (titleField &&\n getTranslation(\n 'label' in titleField.fieldComponentProps &&\n typeof titleField.fieldComponentProps.label === 'string'\n ? titleField.fieldComponentProps.label\n : titleField.name,\n i18n,\n )) ??\n undefined\n }\n fieldName={titleField?.name}\n handleChange={handleSearchChange}\n listSearchableFields={getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n fieldMap,\n )}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && (\n <React.Fragment>\n <EditMany collection={collectionConfig} fieldMap={fieldMap} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n <DeleteMany collection={collectionConfig} />\n </React.Fragment>\n )}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns ${\n visibleDrawer === 'columns' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<Chevron />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where ${\n visibleDrawer === 'where' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<Chevron />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<Chevron />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n key={String(hasWhereParam.current && !searchParams?.where)}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"names":["facelessUIImport","getTranslation","React","useEffect","useRef","useState","AnimateHeightImport","AnimateHeight","default","useUseTitleField","Chevron","useListQuery","useSearchParams","useTranslation","ColumnSelector","DeleteMany","EditMany","Pill","PublishMany","SearchFilter","UnpublishMany","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","collectionConfig","enableColumns","enableSort","fieldMap","useWindowInfo","handleSearchChange","searchParams","titleField","i18n","t","breakpoints","s","smallBreak","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","div","className","fieldLabel","fieldComponentProps","label","name","fieldName","handleChange","listSearchableFields","admin","Fragment","collection","aria-controls","aria-expanded","icon","onClick","pillStyle","height","id","collectionSlug","slug","collectionPluralLabel","labels","plural","String","p"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload/types'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useRef, useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { Chevron } from '../../icons/Chevron/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { DeleteMany } from '../DeleteMany/index.js'\nimport { EditMany } from '../EditMany/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { PublishMany } from '../PublishMany/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { UnpublishMany } from '../UnpublishMany/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n collectionConfig: ClientCollectionConfig\n enableColumns?: boolean\n enableSort?: boolean\n fieldMap: FieldMap\n handleSearchChange?: (search: string) => void\n handleSortChange?: (sort: string) => void\n handleWhereChange?: (where: Where) => void\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const { collectionConfig, enableColumns = true, enableSort = false, fieldMap } = props\n\n const { handleSearchChange } = useListQuery()\n const { searchParams } = useSearchParams()\n const titleField = useUseTitleField(collectionConfig, fieldMap)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const hasWhereParam = useRef(Boolean(searchParams?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(searchParams?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !searchParams?.where) {\n setVisibleDrawer(undefined)\n hasWhereParam.current = false\n } else if (searchParams?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, searchParams?.where])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchFilter\n fieldLabel={\n (titleField &&\n getTranslation(\n 'label' in titleField.fieldComponentProps &&\n typeof titleField.fieldComponentProps.label === 'string'\n ? titleField.fieldComponentProps.label\n : titleField.name,\n i18n,\n )) ??\n undefined\n }\n fieldName={titleField?.name}\n handleChange={handleSearchChange}\n listSearchableFields={getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n fieldMap,\n )}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && (\n <React.Fragment>\n <EditMany collection={collectionConfig} fieldMap={fieldMap} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n <DeleteMany collection={collectionConfig} />\n </React.Fragment>\n )}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns ${\n visibleDrawer === 'columns' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<Chevron />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where ${\n visibleDrawer === 'where' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<Chevron />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<Chevron />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n key={String(hasWhereParam.current && !searchParams?.where)}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"names":["useWindowInfo","getTranslation","React","useEffect","useRef","useState","AnimateHeightImport","AnimateHeight","default","useUseTitleField","Chevron","useListQuery","useSearchParams","useTranslation","ColumnSelector","DeleteMany","EditMany","Pill","PublishMany","SearchFilter","UnpublishMany","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","collectionConfig","enableColumns","enableSort","fieldMap","handleSearchChange","searchParams","titleField","i18n","t","breakpoints","s","smallBreak","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","div","className","fieldLabel","fieldComponentProps","label","name","fieldName","handleChange","listSearchableFields","admin","Fragment","collection","aria-controls","aria-expanded","icon","onClick","pillStyle","height","id","collectionSlug","slug","collectionPluralLabel","labels","plural","String","p"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAoCjD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAoCjD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyQvD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import { useModal } from '@faceless-ui/modal';
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
5
|
import React, { useCallback, useEffect, useReducer, useState } from 'react';
|
|
6
6
|
import { FieldLabel } from '../../forms/FieldLabel/index.js';
|
|
@@ -41,7 +41,6 @@ const hoistQueryParamsToAnd = (where, queryParams)=>{
|
|
|
41
41
|
return where;
|
|
42
42
|
};
|
|
43
43
|
export const ListDrawerContent = ({ collectionSlugs, customHeader, drawerSlug, filterOptions, onSelect, selectedCollection })=>{
|
|
44
|
-
const { useModal } = facelessUIImport;
|
|
45
44
|
const { i18n, t } = useTranslation();
|
|
46
45
|
const { permissions } = useAuth();
|
|
47
46
|
const { setPreference } = usePreferences();
|