@payloadcms/ui 3.0.0-beta.103 → 3.0.0-beta.105

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.
Files changed (133) hide show
  1. package/dist/elements/DeleteDocument/index.d.ts +9 -6
  2. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  3. package/dist/elements/DeleteDocument/index.js +40 -8
  4. package/dist/elements/DeleteDocument/index.js.map +1 -1
  5. package/dist/elements/DocumentControls/index.d.ts +8 -0
  6. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  7. package/dist/elements/DocumentControls/index.js +26 -8
  8. package/dist/elements/DocumentControls/index.js.map +1 -1
  9. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  10. package/dist/elements/DocumentDrawer/DrawerContent.js +97 -35
  11. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  12. package/dist/elements/DocumentDrawer/types.d.ts +5 -0
  13. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  14. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  15. package/dist/elements/Drawer/index.d.ts +1 -0
  16. package/dist/elements/Drawer/index.d.ts.map +1 -1
  17. package/dist/elements/Drawer/index.js +2 -2
  18. package/dist/elements/Drawer/index.js.map +1 -1
  19. package/dist/elements/DuplicateDocument/index.d.ts +6 -3
  20. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  21. package/dist/elements/DuplicateDocument/index.js +101 -151
  22. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  23. package/dist/elements/ReactSelect/types.d.ts +4 -2
  24. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  25. package/dist/elements/ReactSelect/types.js.map +1 -1
  26. package/dist/elements/SelectRow/index.js +29 -20
  27. package/dist/elements/SelectRow/index.js.map +1 -1
  28. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts +2 -2
  29. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  30. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  31. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  32. package/dist/elements/TableColumns/buildColumnState.js +0 -1
  33. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  34. package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +1 -1
  35. package/dist/elements/WhereBuilder/reduceClientFields.js +3 -1
  36. package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -1
  37. package/dist/exports/client/index.js +19 -19
  38. package/dist/exports/client/index.js.map +3 -3
  39. package/dist/fields/Array/index.d.ts.map +1 -1
  40. package/dist/fields/Array/index.js +6 -3
  41. package/dist/fields/Array/index.js.map +1 -1
  42. package/dist/fields/Blocks/BlockRow.d.ts +2 -2
  43. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  44. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  45. package/dist/fields/Blocks/index.d.ts +5 -5
  46. package/dist/fields/Blocks/index.d.ts.map +1 -1
  47. package/dist/fields/Blocks/index.js +0 -3
  48. package/dist/fields/Blocks/index.js.map +1 -1
  49. package/dist/fields/Checkbox/Input.js +1 -1
  50. package/dist/fields/Checkbox/Input.js.map +1 -1
  51. package/dist/fields/Checkbox/index.scss +13 -0
  52. package/dist/fields/Code/index.d.ts.map +1 -1
  53. package/dist/fields/Code/index.js +31 -36
  54. package/dist/fields/Code/index.js.map +1 -1
  55. package/dist/fields/Collapsible/index.d.ts +141 -4
  56. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  57. package/dist/fields/Collapsible/index.js +48 -41
  58. package/dist/fields/Collapsible/index.js.map +1 -1
  59. package/dist/fields/DateTime/index.d.ts.map +1 -1
  60. package/dist/fields/DateTime/index.js +32 -37
  61. package/dist/fields/DateTime/index.js.map +1 -1
  62. package/dist/fields/Email/index.d.ts.map +1 -1
  63. package/dist/fields/Email/index.js +28 -32
  64. package/dist/fields/Email/index.js.map +1 -1
  65. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  66. package/dist/fields/FieldLabel/index.js +7 -1
  67. package/dist/fields/FieldLabel/index.js.map +1 -1
  68. package/dist/fields/JSON/index.d.ts.map +1 -1
  69. package/dist/fields/JSON/index.js +0 -2
  70. package/dist/fields/JSON/index.js.map +1 -1
  71. package/dist/fields/Number/index.d.ts.map +1 -1
  72. package/dist/fields/Number/index.js +35 -40
  73. package/dist/fields/Number/index.js.map +1 -1
  74. package/dist/fields/Password/types.d.ts +2 -2
  75. package/dist/fields/Password/types.d.ts.map +1 -1
  76. package/dist/fields/Password/types.js.map +1 -1
  77. package/dist/fields/Point/index.d.ts.map +1 -1
  78. package/dist/fields/Point/index.js +1 -0
  79. package/dist/fields/Point/index.js.map +1 -1
  80. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  81. package/dist/fields/RadioGroup/index.js +34 -39
  82. package/dist/fields/RadioGroup/index.js.map +1 -1
  83. package/dist/fields/Relationship/index.d.ts +4 -4
  84. package/dist/fields/Relationship/index.d.ts.map +1 -1
  85. package/dist/fields/Relationship/index.js +64 -19
  86. package/dist/fields/Relationship/index.js.map +1 -1
  87. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  88. package/dist/fields/Relationship/optionsReducer.js +17 -0
  89. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  90. package/dist/fields/Relationship/types.d.ts +11 -4
  91. package/dist/fields/Relationship/types.d.ts.map +1 -1
  92. package/dist/fields/Relationship/types.js.map +1 -1
  93. package/dist/fields/Row/index.scss +12 -2
  94. package/dist/fields/Select/Input.d.ts +2 -2
  95. package/dist/fields/Select/Input.d.ts.map +1 -1
  96. package/dist/fields/Select/Input.js.map +1 -1
  97. package/dist/fields/Select/index.d.ts.map +1 -1
  98. package/dist/fields/Select/index.js +0 -2
  99. package/dist/fields/Select/index.js.map +1 -1
  100. package/dist/fields/Text/index.d.ts.map +1 -1
  101. package/dist/fields/Text/index.js +0 -2
  102. package/dist/fields/Text/index.js.map +1 -1
  103. package/dist/fields/Text/types.d.ts +2 -2
  104. package/dist/fields/Text/types.d.ts.map +1 -1
  105. package/dist/fields/Text/types.js.map +1 -1
  106. package/dist/fields/Textarea/index.d.ts.map +1 -1
  107. package/dist/fields/Textarea/index.js +0 -2
  108. package/dist/fields/Textarea/index.js.map +1 -1
  109. package/dist/fields/Textarea/types.d.ts +2 -2
  110. package/dist/fields/Textarea/types.d.ts.map +1 -1
  111. package/dist/fields/Textarea/types.js.map +1 -1
  112. package/dist/fields/Upload/Input.d.ts +2 -2
  113. package/dist/fields/Upload/Input.d.ts.map +1 -1
  114. package/dist/fields/Upload/Input.js +11 -12
  115. package/dist/fields/Upload/Input.js.map +1 -1
  116. package/dist/fields/Upload/index.d.ts.map +1 -1
  117. package/dist/fields/Upload/index.js +14 -17
  118. package/dist/fields/Upload/index.js.map +1 -1
  119. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  120. package/dist/providers/Config/createClientConfig/fields.js +31 -11
  121. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  122. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  123. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  124. package/dist/providers/DocumentInfo/index.js.map +1 -1
  125. package/dist/providers/DocumentInfo/types.d.ts +18 -1
  126. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  127. package/dist/providers/DocumentInfo/types.js.map +1 -1
  128. package/dist/providers/Selection/index.d.ts +1 -1
  129. package/dist/providers/Selection/index.d.ts.map +1 -1
  130. package/dist/providers/Selection/index.js +43 -29
  131. package/dist/providers/Selection/index.js.map +1 -1
  132. package/dist/styles.css +1 -1
  133. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","React","useCallback","useEffect","useState","toast","XIcon","useConfig","RenderComponent","DocumentInfoProvider","useDocumentInfo","useLocale","useTranslation","useRelatedCollections","Gutter","IDLabel","RenderTitle","baseClass","DocumentDrawerContent","t0","$","id","existingDocID","AfterFields","collectionSlug","drawerSlug","Header","onSave","onSaveFromProps","config","routes","t1","serverURL","api","apiRoute","closeModal","modalState","toggleModal","locale","t","docID","setDocID","isOpen","setIsOpen","collectionConfig","Edit","admin","components","views","edit","default","Component","isEditing","Boolean","apiURL","code","t2","t3","t4","data","error","errors","message","onLoadError","t5","args","doc","t6","_jsx","element","t8","t7","BeforeDocument","_jsxs","className","children","onClick","type","DocumentTitle","slug","disableActions","disableLeaveWithoutSaving","mappedComponent","title","toString"],"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { RenderComponent } from '../../providers/Config/RenderComponent.js'\nimport { DocumentInfoProvider, useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useRelatedCollections } from '../AddNewRelation/useRelatedCollections.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { IDLabel } from '../IDLabel/index.js'\nimport { RenderTitle } from '../RenderTitle/index.js'\nimport { baseClass } from './index.js'\n\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = ({\n id: existingDocID,\n AfterFields,\n collectionSlug,\n drawerSlug,\n Header,\n onSave: onSaveFromProps,\n}) => {\n const { config } = useConfig()\n\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const { closeModal, modalState, toggleModal } = useModal()\n const locale = useLocale()\n const { t } = useTranslation()\n const [docID, setDocID] = useState(existingDocID)\n const [isOpen, setIsOpen] = useState(false)\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n const Edit = collectionConfig.admin.components.views.edit.default.Component\n\n const isEditing = Boolean(docID)\n const apiURL = docID\n ? `${serverURL}${apiRoute}/${collectionSlug}/${docID}${locale?.code ? `?locale=${locale.code}` : ''}`\n : null\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const onLoadError = React.useCallback(\n (data) => {\n if (isOpen) {\n closeModal(drawerSlug)\n toast.error(data.errors?.[0].message || t('error:unspecific'))\n }\n },\n [closeModal, drawerSlug, isOpen, t],\n )\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setDocID(args.doc.id)\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig],\n )\n\n return (\n <DocumentInfoProvider\n AfterFields={AfterFields}\n apiURL={apiURL}\n BeforeDocument={\n <Gutter className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {Header || <RenderTitle element=\"span\" />}\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 onClick={() => toggleModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <DocumentTitle />\n </Gutter>\n }\n collectionSlug={collectionConfig.slug}\n disableActions\n disableLeaveWithoutSaving\n id={docID}\n isEditing={isEditing}\n onLoadError={onLoadError}\n onSave={onSave}\n >\n <RenderComponent mappedComponent={Edit} />\n </DocumentInfoProvider>\n )\n}\n\nconst DocumentTitle: React.FC = () => {\n const { id, title } = useDocumentInfo()\n return id && id !== title ? <IDLabel id={id.toString()} /> : null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","React","useCallback","useEffect","useState","toast","XIcon","useConfig","RenderComponent","DocumentInfoProvider","useDocumentInfo","useLocale","useTranslation","useRelatedCollections","Gutter","IDLabel","RenderTitle","baseClass","DocumentDrawerContent","t0","$","id","existingDocID","AfterFields","collectionSlug","disableActions","drawerSlug","Header","onDelete","onDeleteFromProps","onDuplicate","onDuplicateFromProps","onSave","onSaveFromProps","redirectAfterDelete","redirectAfterDuplicate","config","routes","t1","serverURL","api","apiRoute","closeModal","modalState","toggleModal","locale","t","docID","setDocID","isOpen","setIsOpen","collectionConfig","Edit","admin","components","views","edit","default","Component","isEditing","Boolean","apiURL","code","t2","t3","t4","data","error","errors","message","onLoadError","t5","args","doc","t6","args_0","t7","args_1","t8","_jsx","element","t10","t11","Symbol","for","t9","BeforeDocument","_jsxs","className","children","onClick","type","DocumentTitle","slug","disableLeaveWithoutSaving","onDrawerCreate","undefined","mappedComponent","title","toString"],"sources":["../../../src/elements/DocumentDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerProps } from './types.js'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { RenderComponent } from '../../providers/Config/RenderComponent.js'\nimport { DocumentInfoProvider, useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useRelatedCollections } from '../AddNewRelation/useRelatedCollections.js'\nimport { Gutter } from '../Gutter/index.js'\nimport { IDLabel } from '../IDLabel/index.js'\nimport { RenderTitle } from '../RenderTitle/index.js'\nimport { baseClass } from './index.js'\n\nexport const DocumentDrawerContent: React.FC<DocumentDrawerProps> = ({\n id: existingDocID,\n AfterFields,\n collectionSlug,\n disableActions,\n drawerSlug,\n Header,\n onDelete: onDeleteFromProps,\n onDuplicate: onDuplicateFromProps,\n onSave: onSaveFromProps,\n redirectAfterDelete,\n redirectAfterDuplicate,\n}) => {\n const { config } = useConfig()\n\n const {\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const { closeModal, modalState, toggleModal } = useModal()\n const locale = useLocale()\n const { t } = useTranslation()\n const [docID, setDocID] = useState(existingDocID)\n const [isOpen, setIsOpen] = useState(false)\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n const Edit = collectionConfig.admin.components.views.edit.default.Component\n\n const isEditing = Boolean(docID)\n const apiURL = docID\n ? `${serverURL}${apiRoute}/${collectionSlug}/${docID}${locale?.code ? `?locale=${locale.code}` : ''}`\n : null\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const onLoadError = React.useCallback(\n (data) => {\n if (isOpen) {\n closeModal(drawerSlug)\n toast.error(data.errors?.[0].message || t('error:unspecific'))\n }\n },\n [closeModal, drawerSlug, isOpen, t],\n )\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setDocID(args.doc.id)\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onSaveFromProps, collectionConfig],\n )\n\n const onDuplicate = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n setDocID(args.doc.id)\n\n if (typeof onDuplicateFromProps === 'function') {\n void onDuplicateFromProps({\n ...args,\n collectionConfig,\n })\n }\n },\n [onDuplicateFromProps, collectionConfig],\n )\n\n const onDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n if (typeof onDeleteFromProps === 'function') {\n void onDeleteFromProps({\n ...args,\n collectionConfig,\n })\n }\n\n closeModal(drawerSlug)\n },\n [onDeleteFromProps, collectionConfig, closeModal, drawerSlug],\n )\n\n return (\n <DocumentInfoProvider\n AfterFields={AfterFields}\n apiURL={apiURL}\n BeforeDocument={\n <Gutter className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {Header || <RenderTitle element=\"span\" />}\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 onClick={() => toggleModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <DocumentTitle />\n </Gutter>\n }\n collectionSlug={collectionConfig.slug}\n disableActions={disableActions}\n disableLeaveWithoutSaving\n id={docID}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreate={() => {\n setDocID(null)\n }}\n onDuplicate={onDuplicate}\n onLoadError={onLoadError}\n onSave={onSave}\n redirectAfterDelete={redirectAfterDelete !== undefined ? redirectAfterDelete : false}\n redirectAfterDuplicate={redirectAfterDuplicate !== undefined ? redirectAfterDuplicate : false}\n >\n <RenderComponent mappedComponent={Edit} />\n </DocumentInfoProvider>\n )\n}\n\nconst DocumentTitle: React.FC = () => {\n const { id, title } = useDocumentInfo()\n return id && id !== title ? <IDLabel id={id.toString()} /> : null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,9 +5,14 @@ import type { Props as DrawerProps } from '../Drawer/types.js';
5
5
  export type DocumentDrawerProps = {
6
6
  readonly AfterFields?: React.ReactNode;
7
7
  readonly collectionSlug: string;
8
+ readonly disableActions?: boolean;
8
9
  readonly drawerSlug?: string;
9
10
  readonly id?: null | number | string;
11
+ readonly onDelete?: DocumentInfoContext['onDelete'];
12
+ readonly onDuplicate?: DocumentInfoContext['onDuplicate'];
10
13
  readonly onSave?: DocumentInfoContext['onSave'];
14
+ readonly redirectAfterDelete?: boolean;
15
+ readonly redirectAfterDuplicate?: boolean;
11
16
  } & Pick<DrawerProps, 'Header'>;
12
17
  export type DocumentTogglerProps = {
13
18
  readonly children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CAChD,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAErC,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAAK;IAC1F,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7D;QACE,WAAW,EAAE,MAAM,IAAI,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,UAAU,EAAE,MAAM,IAAI,CAAA;QACtB,YAAY,EAAE,MAAM,IAAI,CAAA;KACzB;CACF,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAC1C,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAErC,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAAK;IAC1F,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7D;QACE,WAAW,EAAE,MAAM,IAAI,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,OAAO,CAAA;QACrB,UAAU,EAAE,MAAM,IAAI,CAAA;QACtB,YAAY,EAAE,MAAM,IAAI,CAAA;KACzB;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\nimport type { Props as DrawerProps } from '../Drawer/types.js'\n\nexport type DocumentDrawerProps = {\n readonly AfterFields?: React.ReactNode\n readonly collectionSlug: string\n readonly drawerSlug?: string\n readonly id?: null | number | string\n readonly onSave?: DocumentInfoContext['onSave']\n} & Pick<DrawerProps, 'Header'>\n\nexport type DocumentTogglerProps = {\n readonly children?: React.ReactNode\n readonly className?: string\n readonly collectionSlug: string\n readonly disabled?: boolean\n readonly drawerSlug?: string\n readonly id?: string\n} & HTMLAttributes<HTMLButtonElement>\n\nexport type UseDocumentDrawer = (args: { collectionSlug: string; id?: number | string }) => [\n React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer\n React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler\n {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n },\n]\n"],"mappings":"AAuBA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\nimport type { Props as DrawerProps } from '../Drawer/types.js'\n\nexport type DocumentDrawerProps = {\n readonly AfterFields?: React.ReactNode\n readonly collectionSlug: string\n readonly disableActions?: boolean\n readonly drawerSlug?: string\n readonly id?: null | number | string\n readonly onDelete?: DocumentInfoContext['onDelete']\n readonly onDuplicate?: DocumentInfoContext['onDuplicate']\n readonly onSave?: DocumentInfoContext['onSave']\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n} & Pick<DrawerProps, 'Header'>\n\nexport type DocumentTogglerProps = {\n readonly children?: React.ReactNode\n readonly className?: string\n readonly collectionSlug: string\n readonly disabled?: boolean\n readonly drawerSlug?: string\n readonly id?: string\n} & HTMLAttributes<HTMLButtonElement>\n\nexport type UseDocumentDrawer = (args: { collectionSlug: string; id?: number | string }) => [\n React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>, // drawer\n React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>, // toggler\n {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n },\n]\n"],"mappings":"AA4BA","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { Props, TogglerProps } from './types.js';
3
3
  import './index.scss';
4
+ export declare const drawerZBase = 100;
4
5
  export declare const formatDrawerSlug: ({ slug, depth }: {
5
6
  depth: number;
6
7
  slug: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Drawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAMrD,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,gBAAgB,oBAAqB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MACzD,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyBhD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuFlC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Drawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAMrD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,WAAW,MAAM,CAAA;AAE9B,eAAO,MAAM,gBAAgB,oBAAqB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MACzD,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyBhD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuFlC,CAAA"}
@@ -10,7 +10,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
10
10
  import { Gutter } from '../Gutter/index.js';
11
11
  import './index.scss';
12
12
  const baseClass = 'drawer';
13
- const zBase = 100;
13
+ export const drawerZBase = 100;
14
14
  export const formatDrawerSlug = ({
15
15
  slug,
16
16
  depth
@@ -155,7 +155,7 @@ export const Drawer = t0 => {
155
155
  t8 = $[10];
156
156
  }
157
157
  const t9 = t8.join(" ");
158
- const t10 = zBase + drawerDepth;
158
+ const t10 = drawerZBase + drawerDepth;
159
159
  let t11;
160
160
  if ($[11] !== t10 || $[12] !== drawerDepth || $[13] !== t || $[14] !== slug || $[15] !== closeModal || $[16] !== Header || $[17] !== hoverTitle || $[18] !== title || $[19] !== children || $[20] !== gutter || $[21] !== t9) {
161
161
  let t12;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","Modal","useModal","React","useCallback","useEffect","useState","XIcon","EditDepthContext","useEditDepth","useTranslation","Gutter","baseClass","zBase","formatDrawerSlug","slug","depth","useDrawerSlug","DrawerToggler","t0","$","onClick","className","disabled","rest","children","openModal","t1","e","handleClick","t2","_jsx","type","Drawer","gutter","Header","hoverTitle","title","undefined","t","closeModal","modalState","drawerDepth","isOpen","setIsOpen","animateIn","setAnimateIn","t3","t4","t5","t6","t7","t8","filter","Boolean","t9","join","t10","t11","t12","_jsxs","style","zIndex","id","width","left","right","Provider","value"],"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 { XIcon } 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') {\n onClick(e)\n }\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 children,\n className,\n gutter = true,\n Header,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useEditDepth()\n\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\n className={`${baseClass}__content`}\n style={{\n width: `calc(100% - (${drawerDepth} * var(--gutter-h))`,\n }}\n >\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 <XIcon />\n </button>\n </div>\n )}\n {children}\n </EditDepthContext.Provider>\n </Gutter>\n </div>\n </Modal>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,KAAK,EAAEC,QAAQ,QAAQ;AAChC,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAIxD,SAASC,KAAK,QAAQ;AACtB,SAASC,gBAAgB,EAAEC,YAAY,QAAQ;AAC/C,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAClB,MAAMC,KAAA,GAAQ;AAEd,OAAO,MAAMC,gBAAA,GAAmBA,CAAC;EAAEC,IAAI;EAAEC;AAAK,CAAmC,KAC/E,UAAUA,KAAA,IAASD,IAAA,EAAM;AAE3B,SAASE,aAAa,QAAQ;AAE9B,OAAO,MAAMC,aAAA,GAAwCC,EAAA;EAAA,MAAAC,CAAA,GAAApB,EAAA;EAAA,IAAAe,IAAA;EAAA,IAAAM,OAAA;EAAA,IAAAC,SAAA;EAAA,IAAAC,QAAA;EAAA,IAAAC,IAAA;EAAA,IAAAC,QAAA;EAAA,IAAAL,CAAA,QAAAD,EAAA;IAAC;MAAAJ,IAAA;MAAAU,QAAA;MAAAH,SAAA;MAAAC,QAAA;MAAAF,OAAA;MAAA,GAAAG;IAAA,IAAAL,EAOrD;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAL,IAAA;IAAAK,CAAA,MAAAC,OAAA;IAAAD,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAG,QAAA;IAAAH,CAAA,MAAAI,IAAA;IAAAJ,CAAA,MAAAK,QAAA;EAAA;IAAAV,IAAA,GAAAK,CAAA;IAAAC,OAAA,GAAAD,CAAA;IAAAE,SAAA,GAAAF,CAAA;IAAAG,QAAA,GAAAH,CAAA;IAAAI,IAAA,GAAAJ,CAAA;IAAAK,QAAA,GAAAL,CAAA;EAAA;EACC;IAAAM;EAAA,IAAsBxB,QAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAP,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAL,IAAA,IAAAK,CAAA,QAAAC,OAAA;IAGpBM,EAAA,GAAAC,CAAA;MACEF,SAAA,CAAUX,IAAA;MAAA,IACN,OAAOM,OAAA,KAAY;QACrBA,OAAA,CAAQO,CAAA;MAAA;IAAA;IAEZR,CAAA,MAAAM,SAAA;IAAAN,CAAA,MAAAL,IAAA;IAAAK,CAAA,MAAAC,OAAA;IAAAD,CAAA,OAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EANF,MAAAS,WAAA,GAAoBF,EAOQ;EAAA,IAAAG,EAAA;EAAA,IAAAV,CAAA,SAAAE,SAAA,IAAAF,CAAA,SAAAG,QAAA,IAAAH,CAAA,SAAAS,WAAA,IAAAT,CAAA,SAAAI,IAAA,IAAAJ,CAAA,SAAAK,QAAA;IAI1BK,EAAA,GAAAC,IAAA,CAAC;MAAAT,SAAA;MAAAC,QAAA;MAAAF,OAAA,EAA0DQ,WAAA;MAAAG,IAAA,EAAkB;MAAA,GAAaR,IAAI;MAAAC;IAAA,C;;;;;;;;;;SAA9FK,E;CAIJ;AAEA,OAAO,MAAMG,MAAA,GAA0Bd,EAAA;EAAA,MAAAC,CAAA,GAAApB,EAAA;EAAC;IAAAe,IAAA;IAAAU,QAAA;IAAAH,SAAA;IAAAY,MAAA,EAAAP,EAAA;IAAAQ,MAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAlB,EAQvC;EAJC,MAAAe,MAAA,GAAAP,EAAa,KAAAW,SAAA,UAAbX,EAAa;EAKb;IAAAY;EAAA,IAAc7B,cAAA;EACd;IAAA8B,UAAA;IAAAC;EAAA,IAAmCvC,QAAA;EACnC,MAAAwC,WAAA,GAAoBjC,YAAA;EAEpB,OAAAkC,MAAA,EAAAC,SAAA,IAA4BtC,QAAA,MAAS;EACrC,OAAAuC,SAAA,EAAAC,YAAA,IAAkCxC,QAAA,MAAS;EAAA,IAAAwB,EAAA;EAAA,IAAAiB,EAAA;EAAA,IAAA3B,CAAA,QAAAqB,UAAA,IAAArB,CAAA,QAAAL,IAAA;IAEjCe,EAAA,GAAAA,CAAA;MACRc,SAAA,CAAUH,UAAU,CAAC1B,IAAA,GAAA4B,MAAO;IAAA;IAC3BI,EAAA,IAAChC,IAAA,EAAM0B,UAAA;IAAWrB,CAAA,MAAAqB,UAAA;IAAArB,CAAA,MAAAL,IAAA;IAAAK,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAA2B,EAAA;EAAA;IAAAjB,EAAA,GAAAV,CAAA;IAAA2B,EAAA,GAAA3B,CAAA;EAAA;EAFrBf,SAAA,CAAUyB,EAEV,EAAGiB,EAAkB;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAA7B,CAAA,QAAAuB,MAAA;IAEXK,EAAA,GAAAA,CAAA;MACRF,YAAA,CAAaH,MAAA;IAAA;IACZM,EAAA,IAACN,MAAA;IAAOvB,CAAA,MAAAuB,MAAA;IAAAvB,CAAA,MAAA4B,EAAA;IAAA5B,CAAA,MAAA6B,EAAA;EAAA;IAAAD,EAAA,GAAA5B,CAAA;IAAA6B,EAAA,GAAA7B,CAAA;EAAA;EAFXf,SAAA,CAAU2C,EAEV,EAAGC,EAAQ;EAAA,IAEPN,MAAA;IAOI,MAAAO,EAAA,GAAAL,SAAA,IAAa,GAAAjC,SAAA,WAAuB;IACpC,MAAAuC,EAAA,GAAAT,WAAA,IAAc,IAAK,GAAA9B,SAAA,UAAsB;IAAA,IAAAwC,EAAA;IAAA,IAAAhC,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAA8B,EAAA,IAAA9B,CAAA,QAAA+B,EAAA;MAJhCC,EAAA,IACT9B,SAAA,EAAAV,SAAA,EAEAsC,EAAoC,EACpCC,EAAyC,EAAAE,MAAA,CAAAC,OAEjC;MAAAlC,CAAA,MAAAE,SAAA;MAAAF,CAAA,MAAA8B,EAAA;MAAA9B,CAAA,MAAA+B,EAAA;MAAA/B,CAAA,OAAAgC,EAAA;IAAA;MAAAA,EAAA,GAAAhC,CAAA;IAAA;IANC,MAAAmC,EAAA,GAAAH,EAMD,CAAAI,IAAA,CACF;IAGE,MAAAC,GAAA,GAAA5C,KAAA,GAAQ6B,WAAA;IAAA,IAAAgB,GAAA;IAAA,IAAAtC,CAAA,SAAAqC,GAAA,IAAArC,CAAA,SAAAsB,WAAA,IAAAtB,CAAA,SAAAmB,CAAA,IAAAnB,CAAA,SAAAL,IAAA,IAAAK,CAAA,SAAAoB,UAAA,IAAApB,CAAA,SAAAe,MAAA,IAAAf,CAAA,SAAAgB,UAAA,IAAAhB,CAAA,SAAAiB,KAAA,IAAAjB,CAAA,SAAAK,QAAA,IAAAL,CAAA,SAAAc,MAAA,IAAAd,CAAA,SAAAmC,EAAA;MAAA,IAAAI,GAAA;MAAA,IAAAvC,CAAA,SAAAoB,UAAA,IAAApB,CAAA,SAAAL,IAAA;QAQP4C,GAAA,GAAAA,CAAA,KAAMnB,UAAA,CAAWzB,IAAA;QAAAK,CAAA,OAAAoB,UAAA;QAAApB,CAAA,OAAAL,IAAA;QAAAK,CAAA,OAAAuC,GAAA;MAAA;QAAAA,GAAA,GAAAvC,CAAA;MAAA;MAnB9BsC,GAAA,GAAAE,KAAA,CAAA3D,KAAA;QAAAqB,SAAA,EACaiC,EAOH;QAAAxC,IAAA;QAAA8C,KAAA;UAAAC,MAAA,EAGEL;QAAQ;QAAAhC,QAAA,GAGhB,EAACiB,WAAA,IAAeA,WAAA,MAAgB,KAAMX,IAAA,CAAC;UAAAT,SAAA,EAAe,GAAAV,SAAA;QAAuB,C,GAC/EmB,IAAA,CAAC;UAAA,cACaQ,CAAA,CAAE;UAAAjB,SAAA,EACH,GAAAV,SAAA,SAAqB;UAAAmD,EAAA,EAC5B,iBAAiBhD,IAAA,EAAM;UAAAM,OAAA,EAClBsC,GAAiB;UAAA3B,IAAA,EACrB;QAAA,C,GAEP4B,KAAA,CAAC;UAAAtC,SAAA,EACY,GAAAV,SAAA,WAAuB;UAAAiD,KAAA;YAAAG,KAAA,EAEzB,gBAAgBtB,WAAA;UAAgC;UAAAjB,QAAA,GAGzDM,IAAA,CAAC;YAAAT,SAAA,EAAe,GAAAV,SAAA;UAA+B,C,GAC/CmB,IAAA,CAAApB,MAAA;YAAAW,SAAA,EAAmB,GAAAV,SAAA,oBAAgC;YAAAqD,IAAA,EAAQ/B,MAAA;YAAAgC,KAAA,EAAehC,MAAA;YAAAT,QAAA,EACxEmC,KAAA,CAAApD,gBAAA,CAAA2D,QAAA;cAAAC,KAAA,EAAkC1B,WAAA,IAAc;cAAAjB,QAAA,GAC7CU,MAAA,EACAA,MAAA,KAAAG,SAAW,IACVsB,KAAA,CAAC;gBAAAtC,SAAA,EAAe,GAAAV,SAAA,UAAsB;gBAAAa,QAAA,GACpCM,IAAA,CAAC;kBAAAT,SAAA,EAAc,GAAAV,SAAA,iBAA6B;kBAAAyB,KAAA,EAASD,UAAA,GAAaC,KAAA,OAAQ;kBAAAZ,QAAA,EACvEY;gBAAA,C,GAKHN,IAAA,CAAC;kBAAA,cACaQ,CAAA,CAAE;kBAAAjB,SAAA,EACH,GAAAV,SAAA,iBAA6B;kBAAAmD,EAAA,EACpC,iBAAiBhD,IAAA,EAAM;kBAAAM,OAAA,EAAAA,CAAA,KACZmB,UAAA,CAAWzB,IAAA;kBAAAiB,IAAA,EACrB;kBAAAP,QAAA,EAELM,IAAA,CAAAxB,KAAA,IAAC;gBAAA,C;kBAINkB,QAAA;YAAA,C;;;;;;;;;;;;;;;;;;;WAnDTiC,G;;;CA4DN","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","Modal","useModal","React","useCallback","useEffect","useState","XIcon","EditDepthContext","useEditDepth","useTranslation","Gutter","baseClass","drawerZBase","formatDrawerSlug","slug","depth","useDrawerSlug","DrawerToggler","t0","$","onClick","className","disabled","rest","children","openModal","t1","e","handleClick","t2","_jsx","type","Drawer","gutter","Header","hoverTitle","title","undefined","t","closeModal","modalState","drawerDepth","isOpen","setIsOpen","animateIn","setAnimateIn","t3","t4","t5","t6","t7","t8","filter","Boolean","t9","join","t10","t11","t12","_jsxs","style","zIndex","id","width","left","right","Provider","value"],"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 { XIcon } 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'\n\nexport const drawerZBase = 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') {\n onClick(e)\n }\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 children,\n className,\n gutter = true,\n Header,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useEditDepth()\n\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: drawerZBase + 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\n className={`${baseClass}__content`}\n style={{\n width: `calc(100% - (${drawerDepth} * var(--gutter-h))`,\n }}\n >\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 <XIcon />\n </button>\n </div>\n )}\n {children}\n </EditDepthContext.Provider>\n </Gutter>\n </div>\n </Modal>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,13 @@
1
1
  import type { SanitizedCollectionConfig } from 'payload';
2
2
  import React from 'react';
3
+ import type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js';
3
4
  import './index.scss';
4
5
  export type Props = {
5
- id: string;
6
- singularLabel: SanitizedCollectionConfig['labels']['singular'];
7
- slug: string;
6
+ readonly id: string;
7
+ readonly onDuplicate?: DocumentInfoContext['onDuplicate'];
8
+ readonly redirectAfterDuplicate?: boolean;
9
+ readonly singularLabel: SanitizedCollectionConfig['labels']['singular'];
10
+ readonly slug: string;
8
11
  };
9
12
  export declare const DuplicateDocument: React.FC<Props>;
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKxD,OAAO,KAAgC,MAAM,OAAO,CAAA;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,CAoH7C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAKhF,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAYhF,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACzD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAgJ7C,CAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import { Modal, useModal } from '@faceless-ui/modal';
6
5
  import { getTranslation } from '@payloadcms/translations';
@@ -9,21 +8,23 @@ import React, { useCallback, useState } from 'react';
9
8
  import { toast } from 'sonner';
10
9
  import { useForm, useFormModified } from '../../forms/Form/context.js';
11
10
  import { useConfig } from '../../providers/Config/index.js';
11
+ import { useEditDepth } from '../../providers/EditDepth/index.js';
12
12
  import { useLocale } from '../../providers/Locale/index.js';
13
13
  import { useTranslation } from '../../providers/Translation/index.js';
14
14
  import { requests } from '../../utilities/api.js';
15
15
  import { formatAdminURL } from '../../utilities/formatAdminURL.js';
16
16
  import { Button } from '../Button/index.js';
17
+ import { drawerZBase } from '../Drawer/index.js';
17
18
  import { PopupList } from '../Popup/index.js';
18
19
  import './index.scss';
19
20
  const baseClass = 'duplicate';
20
- export const DuplicateDocument = t0 => {
21
- const $ = _c(34);
22
- const {
23
- id,
24
- slug,
25
- singularLabel
26
- } = t0;
21
+ export const DuplicateDocument = ({
22
+ id,
23
+ slug,
24
+ onDuplicate,
25
+ redirectAfterDuplicate = true,
26
+ singularLabel
27
+ }) => {
27
28
  const router = useRouter();
28
29
  const modified = useFormModified();
29
30
  const {
@@ -34,161 +35,110 @@ export const DuplicateDocument = t0 => {
34
35
  setModified
35
36
  } = useForm();
36
37
  const {
37
- config: t1
38
+ config: {
39
+ routes: {
40
+ admin: adminRoute,
41
+ api: apiRoute
42
+ },
43
+ serverURL
44
+ },
45
+ getEntityConfig
38
46
  } = useConfig();
39
- const {
40
- routes: t2,
41
- serverURL
42
- } = t1;
43
- const {
44
- admin: adminRoute,
45
- api: apiRoute
46
- } = t2;
47
+ const collectionConfig = getEntityConfig({
48
+ collectionSlug: slug
49
+ });
47
50
  const [hasClicked, setHasClicked] = useState(false);
48
51
  const {
49
52
  i18n,
50
53
  t
51
54
  } = useTranslation();
52
55
  const modalSlug = `duplicate-${id}`;
53
- let t3;
54
- if ($[0] !== modified || $[1] !== toggleModal || $[2] !== modalSlug || $[3] !== serverURL || $[4] !== apiRoute || $[5] !== slug || $[6] !== id || $[7] !== locale || $[8] !== i18n || $[9] !== t || $[10] !== singularLabel || $[11] !== setModified || $[12] !== router || $[13] !== adminRoute) {
55
- t3 = async t4 => {
56
- const override = t4 === undefined ? false : t4;
57
- setHasClicked(true);
58
- if (modified && !override) {
59
- toggleModal(modalSlug);
60
- return;
56
+ const editDepth = useEditDepth();
57
+ const handleClick = useCallback(async (override = false) => {
58
+ setHasClicked(true);
59
+ if (modified && !override) {
60
+ toggleModal(modalSlug);
61
+ return;
62
+ }
63
+ await requests.post(`${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`, {
64
+ body: JSON.stringify({}),
65
+ headers: {
66
+ 'Accept-Language': i18n.language,
67
+ 'Content-Type': 'application/json',
68
+ credentials: 'include'
61
69
  }
62
- await requests.post(`${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ""}`, {
63
- body: JSON.stringify({}),
64
- headers: {
65
- "Accept-Language": i18n.language,
66
- "Content-Type": "application/json",
67
- credentials: "include"
68
- }
69
- }).then(async res => {
70
- const {
71
- doc,
72
- errors,
73
- message
74
- } = await res.json();
75
- if (res.status < 400) {
76
- toast.success(message || t("general:successfullyDuplicated", {
77
- label: getTranslation(singularLabel, i18n)
78
- }));
79
- setModified(false);
70
+ }).then(async res => {
71
+ const {
72
+ doc,
73
+ errors,
74
+ message
75
+ } = await res.json();
76
+ if (res.status < 400) {
77
+ toast.success(message || t('general:successfullyDuplicated', {
78
+ label: getTranslation(singularLabel, i18n)
79
+ }));
80
+ setModified(false);
81
+ if (redirectAfterDuplicate) {
80
82
  router.push(formatAdminURL({
81
83
  adminRoute,
82
- path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ""}`
83
- }));
84
- } else {
85
- toast.error(errors?.[0].message || message || t("error:unspecific", {
86
- label: getTranslation(singularLabel, i18n)
84
+ path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`
87
85
  }));
88
86
  }
89
- });
90
- };
91
- $[0] = modified;
92
- $[1] = toggleModal;
93
- $[2] = modalSlug;
94
- $[3] = serverURL;
95
- $[4] = apiRoute;
96
- $[5] = slug;
97
- $[6] = id;
98
- $[7] = locale;
99
- $[8] = i18n;
100
- $[9] = t;
101
- $[10] = singularLabel;
102
- $[11] = setModified;
103
- $[12] = router;
104
- $[13] = adminRoute;
105
- $[14] = t3;
106
- } else {
107
- t3 = $[14];
108
- }
109
- const handleClick = t3;
110
- let t4;
111
- if ($[15] !== handleClick) {
112
- t4 = async () => {
113
- setHasClicked(false);
114
- await handleClick(true);
115
- };
116
- $[15] = handleClick;
117
- $[16] = t4;
118
- } else {
119
- t4 = $[16];
120
- }
121
- const confirm = t4;
122
- let t5;
123
- if ($[17] !== handleClick) {
124
- t5 = () => void handleClick(false);
125
- $[17] = handleClick;
126
- $[18] = t5;
127
- } else {
128
- t5 = $[18];
129
- }
130
- let t6;
131
- if ($[19] !== t || $[20] !== t5 || $[21] !== modified || $[22] !== hasClicked || $[23] !== toggleModal || $[24] !== modalSlug || $[25] !== confirm) {
132
- let t7;
133
- if ($[27] !== modified || $[28] !== hasClicked || $[29] !== t || $[30] !== toggleModal || $[31] !== modalSlug || $[32] !== confirm) {
134
- t7 = modified && hasClicked && _jsx(Modal, {
135
- className: `${baseClass}__modal`,
136
- slug: modalSlug,
137
- children: _jsxs("div", {
138
- className: `${baseClass}__wrapper`,
139
- children: [_jsxs("div", {
140
- className: `${baseClass}__content`,
141
- children: [_jsx("h1", {
142
- children: t("general:confirmDuplication")
143
- }), _jsx("p", {
144
- children: t("general:unsavedChangesDuplicate")
145
- })]
146
- }), _jsxs("div", {
147
- className: `${baseClass}__controls`,
148
- children: [_jsx(Button, {
149
- buttonStyle: "secondary",
150
- id: "confirm-cancel",
151
- onClick: () => toggleModal(modalSlug),
152
- size: "large",
153
- type: "button",
154
- children: t("general:cancel")
155
- }), _jsx(Button, {
156
- id: "confirm-duplicate",
157
- onClick: () => void confirm(),
158
- size: "large",
159
- children: t("general:duplicateWithoutSaving")
160
- })]
161
- })]
162
- })
163
- });
164
- $[27] = modified;
165
- $[28] = hasClicked;
166
- $[29] = t;
167
- $[30] = toggleModal;
168
- $[31] = modalSlug;
169
- $[32] = confirm;
170
- $[33] = t7;
171
- } else {
172
- t7 = $[33];
173
- }
174
- t6 = _jsxs(React.Fragment, {
175
- children: [_jsx(PopupList.Button, {
176
- id: "action-duplicate",
177
- onClick: t5,
178
- children: t("general:duplicate")
179
- }), t7]
87
+ if (typeof onDuplicate === 'function') {
88
+ void onDuplicate({
89
+ collectionConfig,
90
+ doc
91
+ });
92
+ }
93
+ } else {
94
+ toast.error(errors?.[0].message || message || t('error:unspecific', {
95
+ label: getTranslation(singularLabel, i18n)
96
+ }));
97
+ }
180
98
  });
181
- $[19] = t;
182
- $[20] = t5;
183
- $[21] = modified;
184
- $[22] = hasClicked;
185
- $[23] = toggleModal;
186
- $[24] = modalSlug;
187
- $[25] = confirm;
188
- $[26] = t6;
189
- } else {
190
- t6 = $[26];
191
- }
192
- return t6;
99
+ }, [locale, modified, serverURL, apiRoute, slug, id, i18n, toggleModal, modalSlug, t, singularLabel, onDuplicate, redirectAfterDuplicate, setModified, router, adminRoute, collectionConfig]);
100
+ const confirm = useCallback(async () => {
101
+ setHasClicked(false);
102
+ await handleClick(true);
103
+ }, [handleClick]);
104
+ return /*#__PURE__*/_jsxs(React.Fragment, {
105
+ children: [/*#__PURE__*/_jsx(PopupList.Button, {
106
+ id: "action-duplicate",
107
+ onClick: () => void handleClick(false),
108
+ children: t('general:duplicate')
109
+ }), modified && hasClicked && /*#__PURE__*/_jsx(Modal, {
110
+ className: `${baseClass}__modal`,
111
+ slug: modalSlug,
112
+ style: {
113
+ zIndex: drawerZBase + editDepth
114
+ },
115
+ children: /*#__PURE__*/_jsxs("div", {
116
+ className: `${baseClass}__wrapper`,
117
+ children: [/*#__PURE__*/_jsxs("div", {
118
+ className: `${baseClass}__content`,
119
+ children: [/*#__PURE__*/_jsx("h1", {
120
+ children: t('general:confirmDuplication')
121
+ }), /*#__PURE__*/_jsx("p", {
122
+ children: t('general:unsavedChangesDuplicate')
123
+ })]
124
+ }), /*#__PURE__*/_jsxs("div", {
125
+ className: `${baseClass}__controls`,
126
+ children: [/*#__PURE__*/_jsx(Button, {
127
+ buttonStyle: "secondary",
128
+ id: "confirm-cancel",
129
+ onClick: () => toggleModal(modalSlug),
130
+ size: "large",
131
+ type: "button",
132
+ children: t('general:cancel')
133
+ }), /*#__PURE__*/_jsx(Button, {
134
+ id: "confirm-duplicate",
135
+ onClick: () => void confirm(),
136
+ size: "large",
137
+ children: t('general:duplicateWithoutSaving')
138
+ })]
139
+ })]
140
+ })
141
+ })]
142
+ });
193
143
  };
194
144
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useLocale","useTranslation","requests","formatAdminURL","Button","PopupList","baseClass","DuplicateDocument","t0","$","id","slug","singularLabel","router","modified","toggleModal","locale","setModified","config","t1","routes","t2","serverURL","admin","adminRoute","api","apiRoute","hasClicked","setHasClicked","i18n","t","modalSlug","t3","t4","override","undefined","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","handleClick","confirm","t5","t6","t7","_jsx","className","children","_jsxs","buttonStyle","onClick","size","type","Fragment"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n id: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({ id, slug, singularLabel }) => {\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n setModified(false)\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`,\n }),\n )\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n setModified,\n router,\n adminRoute,\n ],\n )\n\n const confirm = useCallback(async () => {\n setHasClicked(false)\n await handleClick(true)\n }, [handleClick])\n\n return (\n <React.Fragment>\n <PopupList.Button id=\"action-duplicate\" onClick={() => void handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={() => void confirm()} size=\"large\">\n {t('general:duplicateWithoutSaving')}\n </Button>\n </div>\n </div>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useEditDepth","useLocale","useTranslation","requests","formatAdminURL","Button","drawerZBase","PopupList","baseClass","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","singularLabel","router","modified","toggleModal","locale","setModified","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","hasClicked","setHasClicked","i18n","t","modalSlug","editDepth","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","confirm","_jsxs","Fragment","_jsx","onClick","className","style","zIndex","buttonStyle","size","type"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, SanitizedCollectionConfig } from 'payload'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentInfoContext } from '../../providers/DocumentInfo/types.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { Button } from '../Button/index.js'\nimport { drawerZBase } from '../Drawer/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n readonly id: string\n readonly onDuplicate?: DocumentInfoContext['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug }) as ClientCollectionConfig\n\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const editDepth = useEditDepth()\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`,\n }),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n onDuplicate,\n redirectAfterDuplicate,\n setModified,\n router,\n adminRoute,\n collectionConfig,\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={() => void handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal\n className={`${baseClass}__modal`}\n slug={modalSlug}\n style={{\n zIndex: drawerZBase + editDepth,\n }}\n >\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={() => void confirm()} size=\"large\">\n {t('general:duplicateWithoutSaving')}\n </Button>\n </div>\n </div>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,17 +1,19 @@
1
1
  import type { CommonProps, GroupBase, Props as ReactSelectStateManagerProps } from 'react-select';
2
- import type { DocumentDrawerProps } from '../DocumentDrawer/types.js';
2
+ import type { DocumentDrawerProps, UseDocumentDrawer } from '../DocumentDrawer/types.js';
3
3
  type CustomSelectProps = {
4
4
  disableKeyDown?: boolean;
5
5
  disableMouseDown?: boolean;
6
+ DocumentDrawerToggler?: ReturnType<UseDocumentDrawer>[1];
6
7
  draggableProps?: any;
7
8
  droppableRef?: React.RefObject<HTMLDivElement | null>;
9
+ onDelete?: DocumentDrawerProps['onDelete'];
8
10
  onDocumentDrawerOpen: (args: {
9
11
  collectionSlug: string;
10
12
  hasReadPermission: boolean;
11
13
  id: number | string;
12
14
  }) => void;
15
+ onDuplicate?: DocumentDrawerProps['onSave'];
13
16
  onSave?: DocumentDrawerProps['onSave'];
14
- setDrawerIsOpen?: (isOpen: boolean) => void;
15
17
  };
16
18
  declare module 'react-select/dist/declarations/src/Select' {
17
19
  interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":"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"}