@payloadcms/ui 3.50.0-internal.f87db1c → 3.50.0

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 (64) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  2. package/dist/elements/AddNewRelation/index.js +1 -1
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/DocumentControls/index.scss +9 -1
  5. package/dist/elements/DocumentDrawer/Provider.d.ts +1 -1
  6. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  7. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  8. package/dist/elements/DocumentDrawer/index.d.ts +19 -0
  9. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  10. package/dist/elements/DocumentDrawer/index.js +28 -9
  11. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  12. package/dist/elements/DocumentDrawer/types.d.ts +25 -12
  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/DocumentFields/index.scss +64 -27
  16. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts +3 -3
  17. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts.map +1 -1
  18. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +19 -70
  19. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  20. package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +10 -0
  21. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  22. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  23. package/dist/elements/RelationshipTable/index.js +61 -40
  24. package/dist/elements/RelationshipTable/index.js.map +1 -1
  25. package/dist/exports/client/index.js +12 -12
  26. package/dist/exports/client/index.js.map +4 -4
  27. package/dist/fields/Array/index.d.ts.map +1 -1
  28. package/dist/fields/Array/index.js +2 -1
  29. package/dist/fields/Array/index.js.map +1 -1
  30. package/dist/fields/Blocks/index.d.ts.map +1 -1
  31. package/dist/fields/Blocks/index.js +2 -1
  32. package/dist/fields/Blocks/index.js.map +1 -1
  33. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  34. package/dist/fields/Relationship/Input.js +7 -3
  35. package/dist/fields/Relationship/Input.js.map +1 -1
  36. package/dist/fields/Relationship/index.d.ts.map +1 -1
  37. package/dist/fields/Relationship/index.js +8 -8
  38. package/dist/fields/Relationship/index.js.map +1 -1
  39. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  40. package/dist/forms/Form/mergeServerFormState.js +3 -0
  41. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  42. package/dist/forms/NullifyField/index.d.ts +2 -0
  43. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  44. package/dist/forms/NullifyField/index.js +50 -14
  45. package/dist/forms/NullifyField/index.js.map +1 -1
  46. package/dist/forms/NullifyField/index.scss +14 -0
  47. package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.d.ts +3 -0
  48. package/dist/hooks/useRelatedCollections.d.ts.map +1 -0
  49. package/dist/{elements/AddNewRelation → hooks}/useRelatedCollections.js +4 -1
  50. package/dist/hooks/useRelatedCollections.js.map +1 -0
  51. package/dist/styles.css +1 -1
  52. package/dist/utilities/renderTable.d.ts +1 -1
  53. package/dist/utilities/renderTable.d.ts.map +1 -1
  54. package/dist/utilities/renderTable.js +11 -11
  55. package/dist/utilities/renderTable.js.map +1 -1
  56. package/dist/views/List/GroupByHeader/index.d.ts.map +1 -1
  57. package/dist/views/List/GroupByHeader/index.js +1 -0
  58. package/dist/views/List/GroupByHeader/index.js.map +1 -1
  59. package/dist/views/List/index.d.ts.map +1 -1
  60. package/dist/views/List/index.js +0 -4
  61. package/dist/views/List/index.js.map +1 -1
  62. package/package.json +5 -5
  63. package/dist/elements/AddNewRelation/useRelatedCollections.d.ts.map +0 -1
  64. package/dist/elements/AddNewRelation/useRelatedCollections.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AddNewRelation/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAGzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkN1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AddNewRelation/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAGzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkN1C,CAAA"}
@@ -4,6 +4,7 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import React, { Fragment, useCallback, useEffect, useState } from 'react';
7
+ import { useRelatedCollections } from '../../hooks/useRelatedCollections.js';
7
8
  import { PlusIcon } from '../../icons/Plus/index.js';
8
9
  import { useAuth } from '../../providers/Auth/index.js';
9
10
  import { useTranslation } from '../../providers/Translation/index.js';
@@ -13,7 +14,6 @@ import { Popup } from '../Popup/index.js';
13
14
  import * as PopupList from '../Popup/PopupButtonList/index.js';
14
15
  import { Tooltip } from '../Tooltip/index.js';
15
16
  import './index.scss';
16
- import { useRelatedCollections } from './useRelatedCollections.js';
17
17
  const baseClass = 'relationship-add-new';
18
18
  export const AddNewRelation = t0 => {
19
19
  const $ = _c(46);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","useEffect","useState","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","useRelatedCollections","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isAutosaveEnabled","versions","drafts","autosave","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t17","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n const isAutosaveEnabled =\n typeof collectionConfig?.versions?.drafts === 'object'\n ? collectionConfig.versions.drafts.autosave\n : false\n\n if (operation === 'create' || (operation === 'update' && isAutosaveEnabled)) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: relatedCollections[0].slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value, relatedCollections],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","useEffect","useState","useRelatedCollections","PlusIcon","useAuth","useTranslation","Button","useDocumentDrawer","Popup","PopupList","Tooltip","baseClass","AddNewRelation","t0","$","ButtonFromProps","hasMany","onChange","path","relationTo","unstyled","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","t1","undefined","collectionConfig","setCollectionConfig","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","t2","slug","t3","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t4","isDrawerOpen","toggleDrawer","t5","t6","doc","operation","isAutosaveEnabled","versions","drafts","autosave","isNewValue","some","v","id","Array","isArray","onSave","Symbol","for","state","onPopupToggle","t7","t8","collections","create","collection","t10","t9","find","collection_0","t11","t12","t13","t14","t15","labels","singular","t16","label","_jsxs","className","children","_jsx","filter","Boolean","join","onClick","onMouseEnter","onMouseLeave","button","buttonStyle","tooltip","horizontalAlign","onToggleOpen","render","t17","close","closePopup","ButtonGroup","map","relatedCollection"],"sources":["../../../src/elements/AddNewRelation/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\nimport type { Props } from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { Popup } from '../Popup/index.js'\nimport * as PopupList from '../Popup/PopupButtonList/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n Button: ButtonFromProps,\n hasMany,\n onChange,\n path,\n relationTo,\n unstyled,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n\n const relatedToMany = relatedCollections.length > 1\n\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentDrawerContextType['onSave'] = useCallback(\n ({ doc, operation }) => {\n // if autosave is enabled, the operation will be 'update'\n const isAutosaveEnabled =\n typeof collectionConfig?.versions?.drafts === 'object'\n ? collectionConfig.versions.drafts.autosave\n : false\n\n if (operation === 'create' || (operation === 'update' && isAutosaveEnabled)) {\n // ensure the value is not already in the array\n let isNewValue = false\n if (!value) {\n isNewValue = true\n } else {\n isNewValue = Array.isArray(value)\n ? !value.some((v) => v && v.value === doc.id)\n : value.value !== doc.id\n }\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany === true) {\n onChange([\n ...(Array.isArray(value) ? value : []),\n {\n relationTo: collectionConfig?.slug,\n value: doc.id,\n },\n ])\n } else {\n onChange({\n relationTo: relatedCollections[0].slug,\n value: doc.id,\n })\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [collectionConfig, hasMany, onChange, value, relatedCollections],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0]?.slug]?.create)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection?.slug]?.create,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection?.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n const label = t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0]?.labels.singular, i18n),\n })\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={[\n `${baseClass}__add-button`,\n unstyled && `${baseClass}__add-button--unstyled`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Fragment>\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {label}\n </Tooltip>\n <PlusIcon />\n </Fragment>\n )}\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n ButtonFromProps ? (\n ButtonFromProps\n ) : (\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <PlusIcon />\n </Button>\n )\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection?.slug].create) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection?.slug}`}\n key={relatedCollection?.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection?.slug)\n }}\n >\n {getTranslation(relatedCollection?.labels?.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig && permissions.collections[collectionConfig?.slug]?.create && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -187,6 +187,12 @@
187
187
  }
188
188
  }
189
189
 
190
+ &__popup {
191
+ [dir='rtl'] & {
192
+ padding-left: var(--gutter-h);
193
+ }
194
+ }
195
+
190
196
  &__meta {
191
197
  width: auto;
192
198
  gap: calc(var(--base) / 2);
@@ -216,7 +222,9 @@
216
222
  }
217
223
 
218
224
  &__controls {
219
- padding-left: var(--gutter-h);
225
+ [dir='ltr'] & {
226
+ padding-left: var(--gutter-h);
227
+ }
220
228
  overflow: auto;
221
229
 
222
230
  // do not show scrollbar because the parent container has a static height
@@ -21,7 +21,7 @@ export type DocumentDrawerContextProps = {
21
21
  result: Data;
22
22
  }) => Promise<FormState | void> | void;
23
23
  };
24
- export type DocumentDrawerContextType = DocumentDrawerContextProps;
24
+ export type DocumentDrawerContextType = {} & DocumentDrawerContextProps;
25
25
  export declare const DocumentDrawerCallbacksContext: import("react").Context<DocumentDrawerContextProps>;
26
26
  export declare const DocumentDrawerContextProvider: React.FC<{
27
27
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,CAAA;AAElE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,0BAA0B,CAAA;AAEvE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AA4BnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AA4BnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
@@ -4,5 +4,24 @@ import './index.scss';
4
4
  export declare const documentDrawerBaseClass = "doc-drawer";
5
5
  export declare const DocumentDrawerToggler: React.FC<DocumentTogglerProps>;
6
6
  export declare const DocumentDrawer: React.FC<DocumentDrawerProps>;
7
+ /**
8
+ * A hook to manage documents from a drawer modal.
9
+ * It provides the components and methods needed to open, close, and interact with the drawer.
10
+ * @example
11
+ * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({
12
+ * collectionSlug: 'posts',
13
+ * id: postId, // optional, if not provided, it will render the "create new" view
14
+ * })
15
+ *
16
+ * // ...
17
+ *
18
+ * return (
19
+ * <div>
20
+ * <DocumentDrawerToggler collectionSlug="posts" id={postId}>
21
+ * Edit Post
22
+ * </DocumentDrawerToggler>
23
+ * <DocumentDrawer collectionSlug="posts" id={postId} />
24
+ * </div>
25
+ */
7
26
  export declare const useDocumentDrawer: UseDocumentDrawer;
8
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAO9F,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAcnD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2BhE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAQxD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAsE/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAElB,MAAM,YAAY,CAAA;AAOnB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAcnD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2BhE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAQxD,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAsE/B,CAAA"}
@@ -5,9 +5,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { createElement as _createElement } from "react";
6
6
  import { useModal } from '@faceless-ui/modal';
7
7
  import React, { useCallback, useEffect, useId, useMemo, useState } from 'react';
8
+ import { useRelatedCollections } from '../../hooks/useRelatedCollections.js';
8
9
  import { useEditDepth } from '../../providers/EditDepth/index.js';
9
10
  import { useTranslation } from '../../providers/Translation/index.js';
10
- import { useRelatedCollections } from '../AddNewRelation/useRelatedCollections.js';
11
11
  import { Drawer, DrawerToggler } from '../Drawer/index.js';
12
12
  import { DocumentDrawerContent } from './DrawerContent.js';
13
13
  import './index.scss';
@@ -25,18 +25,18 @@ export const DocumentDrawerToggler = t0 => {
25
25
  let collectionSlug;
26
26
  let disabled;
27
27
  let drawerSlug;
28
- let id;
29
28
  let onClick;
29
+ let operation;
30
30
  let rest;
31
31
  if ($[0] !== t0) {
32
32
  ({
33
- id,
34
33
  children,
35
34
  className,
36
35
  collectionSlug,
37
36
  disabled,
38
37
  drawerSlug,
39
38
  onClick,
39
+ operation,
40
40
  ...rest
41
41
  } = t0);
42
42
  $[0] = t0;
@@ -45,8 +45,8 @@ export const DocumentDrawerToggler = t0 => {
45
45
  $[3] = collectionSlug;
46
46
  $[4] = disabled;
47
47
  $[5] = drawerSlug;
48
- $[6] = id;
49
- $[7] = onClick;
48
+ $[6] = onClick;
49
+ $[7] = operation;
50
50
  $[8] = rest;
51
51
  } else {
52
52
  children = $[1];
@@ -54,15 +54,15 @@ export const DocumentDrawerToggler = t0 => {
54
54
  collectionSlug = $[3];
55
55
  disabled = $[4];
56
56
  drawerSlug = $[5];
57
- id = $[6];
58
- onClick = $[7];
57
+ onClick = $[6];
58
+ operation = $[7];
59
59
  rest = $[8];
60
60
  }
61
61
  const {
62
62
  t
63
63
  } = useTranslation();
64
64
  const [collectionConfig] = useRelatedCollections(collectionSlug);
65
- const t1 = !id ? "fields:addNewLabel" : "general:editLabel";
65
+ const t1 = operation === "create" ? "fields:addNewLabel" : "general:editLabel";
66
66
  const t2 = collectionConfig?.labels.singular;
67
67
  let t3;
68
68
  if ($[9] !== children || $[10] !== className || $[11] !== disabled || $[12] !== drawerSlug || $[13] !== onClick || $[14] !== rest || $[15] !== t || $[16] !== t1 || $[17] !== t2) {
@@ -115,6 +115,25 @@ export const DocumentDrawer = props => {
115
115
  })
116
116
  });
117
117
  };
118
+ /**
119
+ * A hook to manage documents from a drawer modal.
120
+ * It provides the components and methods needed to open, close, and interact with the drawer.
121
+ * @example
122
+ * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({
123
+ * collectionSlug: 'posts',
124
+ * id: postId, // optional, if not provided, it will render the "create new" view
125
+ * })
126
+ *
127
+ * // ...
128
+ *
129
+ * return (
130
+ * <div>
131
+ * <DocumentDrawerToggler collectionSlug="posts" id={postId}>
132
+ * Edit Post
133
+ * </DocumentDrawerToggler>
134
+ * <DocumentDrawer collectionSlug="posts" id={postId} />
135
+ * </div>
136
+ */
118
137
  export const useDocumentDrawer = t0 => {
119
138
  const $ = _c(38);
120
139
  const {
@@ -228,7 +247,7 @@ export const useDocumentDrawer = t0 => {
228
247
  ...props_0,
229
248
  collectionSlug,
230
249
  drawerSlug,
231
- id
250
+ operation: !id ? "create" : "update"
232
251
  });
233
252
  $[23] = collectionSlug;
234
253
  $[24] = drawerSlug;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useEffect","useId","useMemo","useState","useEditDepth","useTranslation","useRelatedCollections","Drawer","DrawerToggler","DocumentDrawerContent","documentDrawerBaseClass","formatDocumentDrawerSlug","id","collectionSlug","depth","uuid","DocumentDrawerToggler","t0","$","children","className","disabled","drawerSlug","onClick","rest","t","collectionConfig","t1","t2","labels","singular","t3","t4","label","t5","filter","Boolean","_jsx","join","slug","DocumentDrawer","props","gutter","Header","useDocumentDrawer","overrideEntityVisibility","editDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","toggleDrawer","closeDrawer","t6","openDrawer","t7","t8","_createElement","key","MemoizedDrawer","t9","t10","props_0","MemoizedDrawerToggler","t11","t12","drawerDepth","isDrawerOpen","MemoizedDrawerState","t13"],"sources":["../../../src/elements/DocumentDrawer/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type { DocumentDrawerProps, DocumentTogglerProps, UseDocumentDrawer } from './types.js'\n\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useRelatedCollections } from '../AddNewRelation/useRelatedCollections.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { DocumentDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const documentDrawerBaseClass = 'doc-drawer'\n\nconst formatDocumentDrawerSlug = ({\n id,\n collectionSlug,\n depth,\n uuid,\n}: {\n collectionSlug: string\n depth: number\n id: number | string\n uuid: string // supply when creating a new document and no id is available\n}) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`\n\nexport const DocumentDrawerToggler: React.FC<DocumentTogglerProps> = ({\n id,\n children,\n className,\n collectionSlug,\n disabled,\n drawerSlug,\n onClick,\n ...rest\n}) => {\n const { t } = useTranslation()\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n return (\n <DrawerToggler\n aria-label={t(!id ? 'fields:addNewLabel' : 'general:editLabel', {\n label: collectionConfig?.labels.singular,\n })}\n className={[className, `${documentDrawerBaseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const DocumentDrawer: React.FC<DocumentDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={documentDrawerBaseClass} gutter={false} Header={null} slug={drawerSlug}>\n <DocumentDrawerContent {...props} />\n </Drawer>\n )\n}\n\nexport const useDocumentDrawer: UseDocumentDrawer = ({\n id,\n collectionSlug,\n overrideEntityVisibility,\n}) => {\n const editDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n\n const drawerSlug = formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: editDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [closeModal, drawerSlug])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [openModal, drawerSlug])\n\n const MemoizedDrawer = useMemo(() => {\n return (props) => (\n <DocumentDrawer\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n key={drawerSlug}\n overrideEntityVisibility={overrideEntityVisibility}\n />\n )\n }, [id, drawerSlug, collectionSlug, overrideEntityVisibility])\n\n const MemoizedDrawerToggler = useMemo(() => {\n return (props) => (\n <DocumentDrawerToggler\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n />\n )\n }, [id, drawerSlug, collectionSlug])\n\n const MemoizedDrawerState = useMemo(\n () => ({\n closeDrawer,\n drawerDepth: editDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [editDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useEffect","useId","useMemo","useState","useRelatedCollections","useEditDepth","useTranslation","Drawer","DrawerToggler","DocumentDrawerContent","documentDrawerBaseClass","formatDocumentDrawerSlug","id","collectionSlug","depth","uuid","DocumentDrawerToggler","t0","$","children","className","disabled","drawerSlug","onClick","operation","rest","t","collectionConfig","t1","t2","labels","singular","t3","t4","label","t5","filter","Boolean","_jsx","join","slug","DocumentDrawer","props","gutter","Header","useDocumentDrawer","overrideEntityVisibility","editDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","toggleDrawer","closeDrawer","t6","openDrawer","t7","t8","_createElement","key","MemoizedDrawer","t9","t10","props_0","MemoizedDrawerToggler","t11","t12","drawerDepth","isDrawerOpen","MemoizedDrawerState","t13"],"sources":["../../../src/elements/DocumentDrawer/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type {\n DocumentDrawerProps,\n DocumentTogglerProps,\n UseDocumentDrawer,\n UseDocumentDrawerContext,\n} from './types.js'\n\nimport { useRelatedCollections } from '../../hooks/useRelatedCollections.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { DocumentDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const documentDrawerBaseClass = 'doc-drawer'\n\nconst formatDocumentDrawerSlug = ({\n id,\n collectionSlug,\n depth,\n uuid,\n}: {\n collectionSlug: string\n depth: number\n id: number | string\n uuid: string // supply when creating a new document and no id is available\n}) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`\n\nexport const DocumentDrawerToggler: React.FC<DocumentTogglerProps> = ({\n children,\n className,\n collectionSlug,\n disabled,\n drawerSlug,\n onClick,\n operation,\n ...rest\n}) => {\n const { t } = useTranslation()\n const [collectionConfig] = useRelatedCollections(collectionSlug)\n\n return (\n <DrawerToggler\n aria-label={t(operation === 'create' ? 'fields:addNewLabel' : 'general:editLabel', {\n label: collectionConfig?.labels.singular,\n })}\n className={[className, `${documentDrawerBaseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n onClick={onClick}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const DocumentDrawer: React.FC<DocumentDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer className={documentDrawerBaseClass} gutter={false} Header={null} slug={drawerSlug}>\n <DocumentDrawerContent {...props} />\n </Drawer>\n )\n}\n\n/**\n * A hook to manage documents from a drawer modal.\n * It provides the components and methods needed to open, close, and interact with the drawer.\n * @example\n * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({\n * collectionSlug: 'posts',\n * id: postId, // optional, if not provided, it will render the \"create new\" view\n * })\n *\n * // ...\n *\n * return (\n * <div>\n * <DocumentDrawerToggler collectionSlug=\"posts\" id={postId}>\n * Edit Post\n * </DocumentDrawerToggler>\n * <DocumentDrawer collectionSlug=\"posts\" id={postId} />\n * </div>\n */\nexport const useDocumentDrawer: UseDocumentDrawer = ({\n id,\n collectionSlug,\n overrideEntityVisibility,\n}) => {\n const editDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n\n const drawerSlug = formatDocumentDrawerSlug({\n id,\n collectionSlug,\n depth: editDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [closeModal, drawerSlug])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [openModal, drawerSlug])\n\n const MemoizedDrawer = useMemo<React.FC<DocumentDrawerProps>>(() => {\n return (props) => (\n <DocumentDrawer\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n id={id}\n key={drawerSlug}\n overrideEntityVisibility={overrideEntityVisibility}\n />\n )\n }, [id, drawerSlug, collectionSlug, overrideEntityVisibility])\n\n const MemoizedDrawerToggler = useMemo<React.FC<DocumentTogglerProps>>(() => {\n return (props) => (\n <DocumentDrawerToggler\n {...props}\n collectionSlug={collectionSlug}\n drawerSlug={drawerSlug}\n operation={!id ? 'create' : 'update'}\n />\n )\n }, [id, drawerSlug, collectionSlug])\n\n const MemoizedDrawerState = useMemo<UseDocumentDrawerContext>(\n () => ({\n closeDrawer,\n drawerDepth: editDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [editDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Data, FormState } from 'payload';
1
+ import type { Data, FormState, Operation } from 'payload';
2
2
  import type React from 'react';
3
3
  import type { HTMLAttributes } from 'react';
4
4
  import type { Props as DrawerProps } from '../Drawer/types.js';
@@ -26,23 +26,36 @@ export type DocumentTogglerProps = {
26
26
  readonly collectionSlug: string;
27
27
  readonly disabled?: boolean;
28
28
  readonly drawerSlug?: string;
29
- readonly id?: string;
30
29
  readonly onClick?: () => void;
30
+ readonly operation: Operation;
31
31
  } & Readonly<HTMLAttributes<HTMLButtonElement>>;
32
+ export type UseDocumentDrawerContext = {
33
+ closeDrawer: () => void;
34
+ drawerDepth: number;
35
+ drawerSlug: string;
36
+ isDrawerOpen: boolean;
37
+ openDrawer: () => void;
38
+ toggleDrawer: () => void;
39
+ };
32
40
  export type UseDocumentDrawer = (args: {
41
+ /**
42
+ * The slug of the collection to which the document belongs.
43
+ */
33
44
  collectionSlug: string;
45
+ /**
46
+ * The ID of the document to be edited.
47
+ * When provided, will be fetched and displayed in the drawer.
48
+ * If omitted, will render the "create new" view for the given collection.
49
+ */
34
50
  id?: number | string;
35
51
  overrideEntityVisibility?: boolean;
36
52
  }) => [
37
- React.FC<Omit<DocumentDrawerProps, 'collectionSlug' | 'id'>>,
38
- React.FC<Omit<DocumentTogglerProps, 'collectionSlug' | 'id'>>,
39
- {
40
- closeDrawer: () => void;
41
- drawerDepth: number;
42
- drawerSlug: string;
43
- isDrawerOpen: boolean;
44
- openDrawer: () => void;
45
- toggleDrawer: () => void;
46
- }
53
+ React.FC<{
54
+ children?: React.ReactNode;
55
+ } & Omit<DocumentDrawerProps, 'collectionSlug' | 'operation'>>,
56
+ React.FC<{
57
+ children?: React.ReactNode;
58
+ } & Omit<DocumentTogglerProps, 'collectionSlug' | 'operation'>>,
59
+ UseDocumentDrawerContext
47
60
  ];
48
61
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAE/D,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,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACxC,GAAG,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC,GACzE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE7B,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;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE/C,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,KAAK;IACJ,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,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAE/D,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,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACxC,GAAG,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC,GACzE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE7B,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,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAC9B,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE/C,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IACrC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,KAAK;IAEJ,KAAK,CAAC,EAAE,CACN;QACE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAC3B,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,GAAG,WAAW,CAAC,CAC9D;IAED,KAAK,CAAC,EAAE,CACN;QACE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAC3B,GAAG,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,GAAG,WAAW,CAAC,CAC/D;IAED,wBAAwB;CACzB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type { Data, FormState } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { Props as DrawerProps } from '../Drawer/types.js'\nimport type { DocumentDrawerContextProps } from './Provider.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 initialData?: Data\n /**\n * @deprecated\n */\n readonly initialState?: FormState\n readonly overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n} & Pick<DocumentDrawerContextProps, 'onDelete' | 'onDuplicate' | '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 readonly onClick?: () => void\n} & Readonly<HTMLAttributes<HTMLButtonElement>>\n\nexport type UseDocumentDrawer = (args: {\n collectionSlug: string\n id?: number | string\n overrideEntityVisibility?: boolean\n}) => [\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":"AAoCA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type { Data, FormState, Operation } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { Props as DrawerProps } from '../Drawer/types.js'\nimport type { DocumentDrawerContextProps } from './Provider.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 initialData?: Data\n /**\n * @deprecated\n */\n readonly initialState?: FormState\n readonly overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n} & Pick<DocumentDrawerContextProps, 'onDelete' | 'onDuplicate' | '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 onClick?: () => void\n readonly operation: Operation\n} & Readonly<HTMLAttributes<HTMLButtonElement>>\n\nexport type UseDocumentDrawerContext = {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n}\n\nexport type UseDocumentDrawer = (args: {\n /**\n * The slug of the collection to which the document belongs.\n */\n collectionSlug: string\n /**\n * The ID of the document to be edited.\n * When provided, will be fetched and displayed in the drawer.\n * If omitted, will render the \"create new\" view for the given collection.\n */\n id?: number | string\n overrideEntityVisibility?: boolean\n}) => [\n // drawer\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentDrawerProps, 'collectionSlug' | 'operation'>\n >,\n // toggler\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentTogglerProps, 'collectionSlug' | 'operation'>\n >,\n // context\n UseDocumentDrawerContext,\n]\n"],"mappings":"AA6CA","ignoreList":[]}
@@ -5,33 +5,64 @@
5
5
  width: 100%;
6
6
  display: flex;
7
7
  --doc-sidebar-width: 325px;
8
+ --sidebar-gutter-h-right: var(--gutter-h);
9
+ --sidebar-gutter-h-left: calc(var(--base) * 2);
10
+ --main-gutter-h-left: var(--gutter-h);
11
+ --main-gutter-h-right: calc(var(--base) * 2);
12
+
13
+ [dir='rtl'] &:not(&--force-sidebar-wrap) {
14
+ --sidebar-gutter-h-left: var(--gutter-h);
15
+ --sidebar-gutter-h-right: calc(var(--base) * 2);
16
+ --main-gutter-h-left: calc(var(--base) * 2);
17
+ --main-gutter-h-right: var(--gutter-h);
18
+ }
19
+
20
+ &--force-sidebar-wrap,
21
+ &:has(.document-fields__sidebar-wrap .document-fields__sidebar-fields > .render-fields:empty) {
22
+ --sidebar-gutter-h-left: var(--gutter-h);
23
+ --sidebar-gutter-h-right: var(--gutter-h);
24
+ --main-gutter-h-left: var(--gutter-h);
25
+ --main-gutter-h-right: var(--gutter-h);
26
+ }
8
27
 
9
28
  &--has-sidebar {
29
+ --main-width: 66.66%;
30
+ --main-border: 1px solid var(--theme-elevation-100);
31
+ --main-field-margin: calc(var(--base) * -2);
32
+
33
+ &:has(
34
+ .document-fields__sidebar-wrap .document-fields__sidebar-fields > .render-fields:empty
35
+ ) {
36
+ --main-width: 100%;
37
+ --main-border: none;
38
+ --main-field-margin: initial;
39
+ }
40
+
10
41
  .document-fields {
11
42
  &__main {
12
- width: 66.66%;
43
+ width: var(--main-width);
13
44
  }
14
45
 
15
46
  &__edit {
47
+ padding-left: var(--main-gutter-h-left);
48
+ padding-right: var(--main-gutter-h-right);
16
49
  [dir='ltr'] & {
17
50
  top: 0;
18
51
  right: 0;
19
- border-right: 1px solid var(--theme-elevation-100);
20
- padding-right: calc(var(--base) * 2);
52
+ border-right: var(--main-border);
21
53
  }
22
54
 
23
55
  [dir='rtl'] & {
24
56
  top: 0;
25
57
  left: 0;
26
- border-left: 1px solid var(--theme-elevation-100);
27
- padding-left: calc(var(--base) * 2);
58
+ border-left: var(--main-border);
28
59
  }
29
60
  }
30
61
 
31
62
  &__fields {
32
63
  & > .tabs-field,
33
64
  & > .group-field {
34
- margin-right: calc(var(--base) * -2);
65
+ margin-right: var(--main-field-margin);
35
66
  }
36
67
  }
37
68
  }
@@ -52,12 +83,21 @@
52
83
  }
53
84
 
54
85
  &__sidebar-wrap {
55
- position: sticky;
56
- top: var(--doc-controls-height);
57
- width: 33.33%;
58
- height: calc(100vh - var(--doc-controls-height));
59
- min-width: var(--doc-sidebar-width);
60
- flex-shrink: 0;
86
+ &:has(.document-fields__sidebar-fields > .render-fields:empty) {
87
+ --sidebar-wrap-width: 0;
88
+ --sidebar-wrap-min-width: 0;
89
+ --sidebar-wrap-position: initial;
90
+ --sidebar-wrap-top: initial;
91
+ --sidebar-wrap-height: initial;
92
+ --sidebar-wrap-flex-shrink: initial;
93
+ }
94
+
95
+ position: var(--sidebar-wrap-position, sticky);
96
+ top: var(--sidebar-wrap-top, 0);
97
+ width: var(--sidebar-wrap-width, 33.33%);
98
+ height: var(--sidebar-wrap-height, calc(100vh - var(--doc-controls-height)));
99
+ min-width: var(--sidebar-wrap-min-width, var(--doc-sidebar-width));
100
+ flex-shrink: var(--sidebar-wrap-flex-shrink, 0);
61
101
  }
62
102
 
63
103
  &__sidebar {
@@ -74,8 +114,8 @@
74
114
  flex-direction: column;
75
115
  gap: var(--base);
76
116
  padding-top: calc(var(--base) * 1.5);
77
- padding-left: calc(var(--base) * 2);
78
- padding-right: var(--gutter-h);
117
+ padding-left: var(--sidebar-gutter-h-left);
118
+ padding-right: var(--sidebar-gutter-h-right);
79
119
  padding-bottom: var(--spacing-view-bottom);
80
120
  }
81
121
 
@@ -106,7 +146,6 @@
106
146
 
107
147
  &__sidebar-fields {
108
148
  padding-top: 0;
109
- padding-left: var(--gutter-h);
110
149
  padding-bottom: 0;
111
150
  }
112
151
  }
@@ -114,6 +153,16 @@
114
153
 
115
154
  @include mid-break {
116
155
  display: block;
156
+ [dir='rtl'] &:not(&--force-sidebar-wrap) {
157
+ --sidebar-gutter-h-left: var(--gutter-h);
158
+ --sidebar-gutter-h-right: var(--gutter-h);
159
+ --main-gutter-h-left: var(--gutter-h);
160
+ --main-gutter-h-right: var(--gutter-h);
161
+ }
162
+ --main-gutter-h-left: var(--gutter-h);
163
+ --main-gutter-h-right: var(--gutter-h);
164
+ --sidebar-gutter-h-left: var(--gutter-h);
165
+ --sidebar-gutter-h-right: var(--gutter-h);
117
166
 
118
167
  &--has-sidebar {
119
168
  .document-fields {
@@ -124,12 +173,10 @@
124
173
  &__edit {
125
174
  [dir='ltr'] & {
126
175
  border-right: 0;
127
- padding-right: var(--gutter-h);
128
176
  }
129
177
 
130
178
  [dir='rtl'] & {
131
179
  border-left: 0;
132
- padding-left: var(--gutter-h);
133
180
  }
134
181
  }
135
182
 
@@ -160,18 +207,8 @@
160
207
 
161
208
  &__sidebar-fields {
162
209
  padding-top: 0;
163
- padding-left: var(--gutter-h);
164
- padding-right: var(--gutter-h);
165
210
  padding-bottom: 0;
166
211
  gap: base(0.5);
167
-
168
- [dir='ltr'] & {
169
- padding-right: var(--gutter-h);
170
- }
171
-
172
- [dir='rtl'] & {
173
- padding-left: var(--gutter-h);
174
- }
175
212
  }
176
213
 
177
214
  &__sidebar {
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import type { DocumentDrawerProps } from '../../../DocumentDrawer/types.js';
2
+ import type { OnDrawerOpen } from '../../index.js';
3
3
  import './index.scss';
4
4
  export declare const DrawerLink: React.FC<{
5
- readonly onDrawerDelete?: DocumentDrawerProps['onDelete'];
6
- readonly onDrawerSave?: DocumentDrawerProps['onSave'];
5
+ currentDrawerID?: string;
6
+ onDrawerOpen: OnDrawerOpen;
7
7
  }>;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAM3E,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;CACtD,CAyCA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/RelationshipTable/cells/DrawerLink/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKlD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;CAC3B,CAiBA,CAAA"}