@payloadcms/ui 3.0.0-alpha.44 → 3.0.0-alpha.46

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 (38) hide show
  1. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/DocumentDrawer/DrawerContent.js +6 -3
  3. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  4. package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
  5. package/dist/elements/TableColumns/buildColumns.js +7 -6
  6. package/dist/elements/TableColumns/buildColumns.js.map +1 -1
  7. package/dist/elements/TableColumns/columnReducer.d.ts.map +1 -1
  8. package/dist/elements/TableColumns/columnReducer.js +26 -4
  9. package/dist/elements/TableColumns/columnReducer.js.map +1 -1
  10. package/dist/elements/TableColumns/index.js +1 -1
  11. package/dist/elements/TableColumns/index.js.map +1 -1
  12. package/dist/forms/Form/index.d.ts.map +1 -1
  13. package/dist/forms/Form/index.js +15 -15
  14. package/dist/forms/Form/index.js.map +1 -1
  15. package/dist/forms/Form/types.d.ts +4 -2
  16. package/dist/forms/Form/types.d.ts.map +1 -1
  17. package/dist/forms/Form/types.js.map +1 -1
  18. package/dist/forms/fields/Array/index.d.ts.map +1 -1
  19. package/dist/forms/fields/Array/index.js +13 -11
  20. package/dist/forms/fields/Array/index.js.map +1 -1
  21. package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
  22. package/dist/forms/fields/Blocks/BlockRow.js +1 -1
  23. package/dist/forms/fields/Blocks/BlockRow.js.map +1 -1
  24. package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
  25. package/dist/forms/fields/Blocks/index.js +15 -11
  26. package/dist/forms/fields/Blocks/index.js.map +1 -1
  27. package/dist/forms/fields/Relationship/AddNew/index.d.ts.map +1 -1
  28. package/dist/forms/fields/Relationship/AddNew/index.js +4 -8
  29. package/dist/forms/fields/Relationship/AddNew/index.js.map +1 -1
  30. package/dist/prod/styles.css +1 -1
  31. package/dist/providers/Auth/index.d.ts.map +1 -1
  32. package/dist/providers/Auth/index.js +1 -1
  33. package/dist/providers/Auth/index.js.map +1 -1
  34. package/dist/templates/Default/index.scss +4 -2
  35. package/dist/templates/Minimal/index.scss +2 -0
  36. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +7 -1
  37. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  38. package/package.json +4 -4
@@ -127,10 +127,11 @@ export type SET_ALL_ROWS_COLLAPSED = {
127
127
  export type FieldAction = ADD_ROW | DUPLICATE_ROW | MODIFY_CONDITION | MOVE_ROW | REMOVE | REMOVE_ROW | REPLACE_ROW | REPLACE_STATE | SET_ALL_ROWS_COLLAPSED | SET_ROW_COLLAPSED | UPDATE;
128
128
  export type FormFieldsContext = [FormState, Dispatch<FieldAction>];
129
129
  export type Context = {
130
- addFieldRow: ({ data, path, rowIndex, }: {
130
+ addFieldRow: ({ data, path, rowIndex, schemaPath, }: {
131
131
  data?: Data;
132
132
  path: string;
133
133
  rowIndex?: number;
134
+ schemaPath: string;
134
135
  }) => Promise<void>;
135
136
  buildRowErrors: () => void;
136
137
  createFormData: CreateFormData;
@@ -150,10 +151,11 @@ export type Context = {
150
151
  path: string;
151
152
  rowIndex: number;
152
153
  }) => void;
153
- replaceFieldRow: ({ data, path, rowIndex, }: {
154
+ replaceFieldRow: ({ data, path, rowIndex, schemaPath, }: {
154
155
  data?: Data;
155
156
  path: string;
156
157
  rowIndex: number;
158
+ schemaPath: string;
157
159
  }) => Promise<void>;
158
160
  replaceState: (state: FormState) => void;
159
161
  reset: Reset;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type { Field, FormField, FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type Props = (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n) & {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disableSuccessStatus?: boolean\n disabled?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: Field[]\n handleResponse?: (res: Response) => void\n initialState?: FormState\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n}\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?: any) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type SET_ROW_COLLAPSED = {\n collapsed: boolean\n path: string\n rowID: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ROW_COLLAPSED'\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n collapsed: boolean\n path: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ALL_ROWS_COLLAPSED'\n}\n\nexport type FieldAction =\n | ADD_ROW\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n data,\n path,\n rowIndex,\n }: {\n data?: Data\n path: string\n /*\n * by default the new row will be added to the end of the list\n */\n rowIndex?: number\n }) => Promise<void>\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * @deprecated Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.MutableRefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n data,\n path,\n rowIndex,\n }: {\n data?: Data\n path: string\n rowIndex: number\n }) => Promise<void>\n replaceState: (state: FormState) => void\n reset: Reset\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"names":[],"mappings":"AA4JA,WA6CC"}
1
+ {"version":3,"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type { User } from 'payload/auth'\nimport type { Field, FormField, FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type Props = (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n) & {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disableSuccessStatus?: boolean\n disabled?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: Field[]\n handleResponse?: (res: Response) => void\n initialState?: FormState\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n}\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?: any) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type SET_ROW_COLLAPSED = {\n collapsed: boolean\n path: string\n rowID: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ROW_COLLAPSED'\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n collapsed: boolean\n path: string\n setDocFieldPreferences: (field: string, fieldPreferences: { [key: string]: unknown }) => void\n type: 'SET_ALL_ROWS_COLLAPSED'\n}\n\nexport type FieldAction =\n | ADD_ROW\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n /*\n * by default the new row will be added to the end of the list\n */\n rowIndex?: number\n schemaPath: string\n }) => Promise<void>\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * @deprecated Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.MutableRefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n data,\n path,\n rowIndex,\n schemaPath,\n }: {\n data?: Data\n path: string\n rowIndex: number\n schemaPath: string\n }) => Promise<void>\n replaceState: (state: FormState) => void\n reset: Reset\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"names":[],"mappings":"AA4JA,WAiDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Array/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAkBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiQnC,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Array/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAkBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6PnC,CAAA;AAGD,eAAe,cAAc,CAAA"}
@@ -3,8 +3,8 @@ import { getTranslation } from '@payloadcms/translations';
3
3
  import React, { useCallback } from 'react';
4
4
  import Banner from '../../../elements/Banner/index.js';
5
5
  import { Button } from '../../../elements/Button/index.js';
6
- import DraggableSortable from '../../../elements/DraggableSortable/index.js';
7
6
  import DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js';
7
+ import DraggableSortable from '../../../elements/DraggableSortable/index.js';
8
8
  import { ErrorPill } from '../../../elements/ErrorPill/index.js';
9
9
  import { useConfig } from '../../../providers/Config/index.js';
10
10
  import { useDocumentInfo } from '../../../providers/DocumentInfo/index.js';
@@ -24,10 +24,10 @@ const ArrayFieldType = (props)=>{
24
24
  label: label,
25
25
  required: required
26
26
  });
27
- const minRows = 'minRows' in props ? props.minRows : 0;
28
- const maxRows = 'maxRows' in props ? props.maxRows : undefined;
27
+ const minRows = 'minRows' in props ? props?.minRows : 0;
28
+ const maxRows = 'maxRows' in props ? props?.maxRows : undefined;
29
29
  const { setDocFieldPreferences } = useDocumentInfo();
30
- const { dispatchFields, setModified } = useForm();
30
+ const { addFieldRow, dispatchFields, setModified } = useForm();
31
31
  const submitted = useFormSubmitted();
32
32
  const { code: locale } = useLocale();
33
33
  const { i18n, t } = useTranslation();
@@ -72,25 +72,26 @@ const ArrayFieldType = (props)=>{
72
72
  validate,
73
73
  editingDefaultLocale
74
74
  ]);
75
- const { path, rows = [], showError, valid, value } = useField({
75
+ const { path, rows = [], schemaPath, showError, valid, value } = useField({
76
76
  hasRows: true,
77
77
  path: pathFromProps || name,
78
78
  validate: memoizedValidate
79
79
  });
80
- const addRow = useCallback((rowIndex)=>{
81
- dispatchFields({
82
- type: 'ADD_ROW',
80
+ const addRow = useCallback(async (rowIndex)=>{
81
+ await addFieldRow({
83
82
  path,
84
- rowIndex
83
+ rowIndex,
84
+ schemaPath
85
85
  });
86
86
  setModified(true);
87
87
  setTimeout(()=>{
88
88
  scrollToID(`${path}-row-${rowIndex + 1}`);
89
89
  }, 0);
90
90
  }, [
91
- dispatchFields,
91
+ addFieldRow,
92
92
  path,
93
- setModified
93
+ setModified,
94
+ schemaPath
94
95
  ]);
95
96
  const duplicateRow = useCallback((rowIndex)=>{
96
97
  dispatchFields({
@@ -243,6 +244,7 @@ const ArrayFieldType = (props)=>{
243
244
  label: getTranslation(labels.singular, i18n)
244
245
  })));
245
246
  };
247
+ // eslint-disable-next-line no-restricted-exports
246
248
  export default ArrayFieldType;
247
249
 
248
250
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/forms/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport Banner from '../../../elements/Banner/index.js'\nimport { Button } from '../../../elements/Button/index.js'\nimport DraggableSortable from '../../../elements/DraggableSortable/index.js'\nimport DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { scrollToID } from '../../../utilities/scrollToID.js'\nimport { useForm, useFormSubmitted } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport { NullifyLocaleField } from '../../NullifyField/index.js'\nimport useField from '../../useField/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nconst ArrayFieldType: React.FC<Props> = (props) => {\n const {\n name,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n fieldMap,\n forceRender = false,\n indexPath,\n label,\n localized,\n path: pathFromProps,\n permissions,\n readOnly,\n required,\n validate,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const minRows = 'minRows' in props ? props.minRows : 0\n const maxRows = 'maxRows' in props ? props.maxRows : undefined\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { dispatchFields, setModified } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { localization } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: Props) => {\n if ('labels' in p && p?.labels) return p.labels\n if ('label' in p && p?.label) return { plural: undefined, singular: p.label }\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'ADD_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', collapsed, path, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n dispatchFields({ type: 'SET_ROW_COLLAPSED', collapsed, path, rowID, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount =\n rows.reduce((total, row) => total + (row?.errorPaths?.size || 0), 0) + (valid ? 0 : 1)\n\n const fieldHasErrors = submitted && fieldErrorCount > 0\n\n const showRequired = readOnly && rows.length === 0\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && <div className={`${baseClass}__error-wrap`}>{Error}</div>}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>{Label}</h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n {Description}\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => (\n <DraggableSortableItem disabled={readOnly} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n duplicateRow={duplicateRow}\n // CustomRowLabel={CustomRowLabel}\n fieldMap={fieldMap}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n ))}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!readOnly && !hasMaxRows && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => addRow(value || 0)}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n </div>\n )\n}\n\nexport default ArrayFieldType\n"],"names":["getTranslation","React","useCallback","Banner","Button","DraggableSortable","DraggableSortableItem","ErrorPill","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","useForm","useFormSubmitted","LabelComp","NullifyLocaleField","useField","fieldBaseClass","ArrayRow","baseClass","ArrayFieldType","props","name","Description","Error","Label","LabelFromProps","className","fieldMap","forceRender","indexPath","label","localized","path","pathFromProps","permissions","readOnly","required","validate","minRows","maxRows","undefined","setDocFieldPreferences","dispatchFields","setModified","submitted","code","locale","i18n","t","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","memoizedValidate","value","options","rows","showError","valid","hasRows","addRow","rowIndex","type","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","reduce","total","row","errorPaths","size","fieldHasErrors","showRequired","showMinRows","div","filter","Boolean","join","id","replace","header","h3","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","onDragEnd","i","disabled","key","draggableSortableItemProps","rowCount","Fragment","buttonStyle","icon","iconPosition","iconStyle"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/forms/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport Banner from '../../../elements/Banner/index.js'\nimport { Button } from '../../../elements/Button/index.js'\nimport DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport DraggableSortable from '../../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { scrollToID } from '../../../utilities/scrollToID.js'\nimport { useForm, useFormSubmitted } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport { NullifyLocaleField } from '../../NullifyField/index.js'\nimport useField from '../../useField/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nconst ArrayFieldType: React.FC<Props> = (props) => {\n const {\n name,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n fieldMap,\n forceRender = false,\n indexPath,\n label,\n localized,\n path: pathFromProps,\n permissions,\n readOnly,\n required,\n validate,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const minRows = 'minRows' in props ? props?.minRows : 0\n const maxRows = 'maxRows' in props ? props?.maxRows : undefined\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const { localization } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: Props) => {\n if ('labels' in p && p?.labels) return p.labels\n if ('label' in p && p?.label) return { plural: undefined, singular: p.label }\n return { plural: t('general:rows'), singular: t('general:row') }\n }\n\n const labels = getLabels(props)\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n path,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n async (rowIndex: number) => {\n await addFieldRow({ path, rowIndex, schemaPath })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, setModified, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'REMOVE_ROW', path, rowIndex })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', collapsed, path, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n dispatchFields({ type: 'SET_ROW_COLLAPSED', collapsed, path, rowID, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount =\n rows.reduce((total, row) => total + (row?.errorPaths?.size || 0), 0) + (valid ? 0 : 1)\n\n const fieldHasErrors = submitted && fieldErrorCount > 0\n\n const showRequired = readOnly && rows.length === 0\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && <div className={`${baseClass}__error-wrap`}>{Error}</div>}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>{Label}</h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n {Description}\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => (\n <DraggableSortableItem disabled={readOnly} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n duplicateRow={duplicateRow}\n // CustomRowLabel={CustomRowLabel}\n fieldMap={fieldMap}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n ))}\n {!valid && (\n <React.Fragment>\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!readOnly && !hasMaxRows && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => addRow(value || 0)}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default ArrayFieldType\n"],"names":["getTranslation","React","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","ErrorPill","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","useForm","useFormSubmitted","LabelComp","NullifyLocaleField","useField","fieldBaseClass","ArrayRow","baseClass","ArrayFieldType","props","name","Description","Error","Label","LabelFromProps","className","fieldMap","forceRender","indexPath","label","localized","path","pathFromProps","permissions","readOnly","required","validate","minRows","maxRows","undefined","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","submitted","code","locale","i18n","t","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","memoizedValidate","value","options","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","reduce","total","row","errorPaths","size","fieldHasErrors","showRequired","showMinRows","div","filter","Boolean","join","id","replace","header","h3","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","onDragEnd","i","disabled","key","draggableSortableItemProps","rowCount","Fragment","buttonStyle","icon","iconPosition","iconStyle"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockRow.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Blocks/BlockRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mEAAmE,CAAA;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAA;AAejF,KAAK,eAAe,GAAG,0BAA0B,GAAG;IAClD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,gBAAgB,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0G9C,CAAA"}
1
+ {"version":3,"file":"BlockRow.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Blocks/BlockRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mEAAmE,CAAA;AACnH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAA;AAejF,KAAK,eAAe,GAAG,0BAA0B,GAAG;IAClD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,gBAAgB,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwG9C,CAAA"}
@@ -12,7 +12,7 @@ import HiddenInput from '../HiddenInput/index.js';
12
12
  import { RowActions } from './RowActions.js';
13
13
  import SectionTitle from './SectionTitle/index.js';
14
14
  const baseClass = 'blocks-field';
15
- export const BlockRow = ({ addRow, attributes, block, blocks, duplicateRow, forceRender, hasMaxRows, indexPath, labels, listeners, moveRow, path: parentPath, permissions, readOnly, removeRow, row, rowCount, rowIndex, schemaPath, setCollapse, setNodeRef, transform })=>{
15
+ export const BlockRow = ({ addRow, attributes, block, blocks, duplicateRow, forceRender, hasMaxRows, labels, listeners, moveRow, path: parentPath, readOnly, removeRow, row, rowCount, rowIndex, schemaPath, setCollapse, setNodeRef, transform })=>{
16
16
  const path = `${parentPath}.${rowIndex}`;
17
17
  const { i18n } = useTranslation();
18
18
  const hasSubmitted = useFormSubmitted();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/forms/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\nimport type { Labels, Row } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { ReducedBlock } from '../../../utilities/buildComponentMap/types.js'\n\nimport { Collapsible } from '../../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport Pill from '../../../elements/Pill/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { FieldPathProvider } from '../../FieldPathProvider/index.js'\nimport { useFormSubmitted } from '../../Form/context.js'\nimport RenderFields from '../../RenderFields/index.js'\nimport HiddenInput from '../HiddenInput/index.js'\nimport { RowActions } from './RowActions.js'\nimport SectionTitle from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlockFieldProps = UseDraggableSortableReturn & {\n addRow: (rowIndex: number, blockType: string) => void\n block: ReducedBlock\n blocks: ReducedBlock[]\n duplicateRow: (rowIndex: number) => void\n forceRender?: boolean\n hasMaxRows?: boolean\n indexPath: string\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n path: string\n permissions: FieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n}\n\nexport const BlockRow: React.FC<BlockFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n duplicateRow,\n forceRender,\n hasMaxRows,\n indexPath,\n labels,\n listeners,\n moveRow,\n path: parentPath,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n}) => {\n const path = `${parentPath}.${rowIndex}`\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const errorCount = row.errorPaths?.size\n const fieldHasErrors = errorCount > 0 && hasSubmitted\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n id={`${parentPath.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${rowIndex}`}\n ref={setNodeRef}\n style={{\n transform,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blockType={row.blockType}\n blocks={blocks}\n duplicateRow={duplicateRow}\n fieldMap={block.subfields}\n hasMaxRows={hasMaxRows}\n labels={labels}\n moveRow={moveRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsed={row.collapsed}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={{\n id: row.id,\n attributes,\n listeners,\n }}\n header={\n <div className={`${baseClass}__block-header`}>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n <HiddenInput name={`${path}.id`} value={row.id} />\n <FieldPathProvider path={path} schemaPath={`${schemaPath}.${block.slug}`}>\n <RenderFields\n className={`${baseClass}__fields`}\n fieldMap={block.subfields}\n forceRender={forceRender}\n // indexPath={indexPath}\n margins=\"small\"\n // permissions={permissions?.blocks?.[row.blockType]?.fields}\n // readOnly={readOnly}\n />\n </FieldPathProvider>\n </Collapsible>\n </div>\n )\n}\n"],"names":["getTranslation","React","Collapsible","ErrorPill","Pill","useTranslation","FieldPathProvider","useFormSubmitted","RenderFields","HiddenInput","RowActions","SectionTitle","baseClass","BlockRow","addRow","attributes","block","blocks","duplicateRow","forceRender","hasMaxRows","indexPath","labels","listeners","moveRow","path","parentPath","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","i18n","hasSubmitted","errorCount","errorPaths","size","fieldHasErrors","classNames","filter","Boolean","join","div","id","split","key","ref","style","actions","blockType","fieldMap","subfields","undefined","className","collapsed","collapsibleStyle","dragHandleProps","header","span","String","padStart","pillStyle","singular","count","withMessage","onToggle","name","value","slug","margins"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/forms/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\nimport type { Labels, Row } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { ReducedBlock } from '../../../utilities/buildComponentMap/types.js'\n\nimport { Collapsible } from '../../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport Pill from '../../../elements/Pill/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { FieldPathProvider } from '../../FieldPathProvider/index.js'\nimport { useFormSubmitted } from '../../Form/context.js'\nimport RenderFields from '../../RenderFields/index.js'\nimport HiddenInput from '../HiddenInput/index.js'\nimport { RowActions } from './RowActions.js'\nimport SectionTitle from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlockFieldProps = UseDraggableSortableReturn & {\n addRow: (rowIndex: number, blockType: string) => void\n block: ReducedBlock\n blocks: ReducedBlock[]\n duplicateRow: (rowIndex: number) => void\n forceRender?: boolean\n hasMaxRows?: boolean\n indexPath: string\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n path: string\n permissions: FieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n}\n\nexport const BlockRow: React.FC<BlockFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n duplicateRow,\n forceRender,\n hasMaxRows,\n labels,\n listeners,\n moveRow,\n path: parentPath,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n}) => {\n const path = `${parentPath}.${rowIndex}`\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const errorCount = row.errorPaths?.size\n const fieldHasErrors = errorCount > 0 && hasSubmitted\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n id={`${parentPath.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${rowIndex}`}\n ref={setNodeRef}\n style={{\n transform,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blockType={row.blockType}\n blocks={blocks}\n duplicateRow={duplicateRow}\n fieldMap={block.subfields}\n hasMaxRows={hasMaxRows}\n labels={labels}\n moveRow={moveRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsed={row.collapsed}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={{\n id: row.id,\n attributes,\n listeners,\n }}\n header={\n <div className={`${baseClass}__block-header`}>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n }\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n <HiddenInput name={`${path}.id`} value={row.id} />\n <FieldPathProvider path={path} schemaPath={`${schemaPath}.${block.slug}`}>\n <RenderFields\n className={`${baseClass}__fields`}\n fieldMap={block.subfields}\n forceRender={forceRender}\n // indexPath={indexPath}\n margins=\"small\"\n // permissions={permissions?.blocks?.[row.blockType]?.fields}\n // readOnly={readOnly}\n />\n </FieldPathProvider>\n </Collapsible>\n </div>\n )\n}\n"],"names":["getTranslation","React","Collapsible","ErrorPill","Pill","useTranslation","FieldPathProvider","useFormSubmitted","RenderFields","HiddenInput","RowActions","SectionTitle","baseClass","BlockRow","addRow","attributes","block","blocks","duplicateRow","forceRender","hasMaxRows","labels","listeners","moveRow","path","parentPath","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","i18n","hasSubmitted","errorCount","errorPaths","size","fieldHasErrors","classNames","filter","Boolean","join","div","id","split","key","ref","style","actions","blockType","fieldMap","subfields","undefined","className","collapsed","collapsibleStyle","dragHandleProps","header","span","String","padStart","pillStyle","singular","count","withMessage","onToggle","name","value","slug","margins"],"mappings":"AAAA;AAIA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAKzB,SAASC,WAAW,QAAQ,yCAAwC;AACpE,SAASC,SAAS,QAAQ,uCAAsC;AAChE,OAAOC,UAAU,kCAAiC;AAClD,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,OAAOC,kBAAkB,8BAA6B;AACtD,OAAOC,iBAAiB,0BAAyB;AACjD,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,OAAOC,kBAAkB,0BAAyB;AAElD,MAAMC,YAAY;AAuBlB,OAAO,MAAMC,WAAsC,CAAC,EAClDC,MAAM,EACNC,UAAU,EACVC,KAAK,EACLC,MAAM,EACNC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,OAAO,EACPC,MAAMC,UAAU,EAChBC,QAAQ,EACRC,SAAS,EACTC,GAAG,EACHC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXC,UAAU,EACVC,SAAS,EACV;IACC,MAAMV,OAAO,CAAC,EAAEC,WAAW,CAAC,EAAEK,SAAS,CAAC;IACxC,MAAM,EAAEK,IAAI,EAAE,GAAG9B;IACjB,MAAM+B,eAAe7B;IAErB,MAAM8B,aAAaT,IAAIU,UAAU,EAAEC;IACnC,MAAMC,iBAAiBH,aAAa,KAAKD;IAEzC,MAAMK,aAAa;QACjB,CAAC,EAAE7B,UAAU,KAAK,CAAC;QACnB4B,iBAAiB,CAAC,EAAE5B,UAAU,iBAAiB,CAAC,GAAG,CAAC,EAAEA,UAAU,gBAAgB,CAAC;KAClF,CACE8B,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,qBACE,oBAACC;QACCC,IAAI,CAAC,EAAErB,WAAWsB,KAAK,CAAC,KAAKH,IAAI,CAAC,KAAK,KAAK,EAAEd,SAAS,CAAC;QACxDkB,KAAK,CAAC,EAAEvB,WAAW,KAAK,EAAEK,SAAS,CAAC;QACpCmB,KAAKhB;QACLiB,OAAO;YACLhB;QACF;qBAEA,oBAAChC;QACCiD,SACE,CAACzB,yBACC,oBAAChB;YACCI,QAAQA;YACRsC,WAAWxB,IAAIwB,SAAS;YACxBnC,QAAQA;YACRC,cAAcA;YACdmC,UAAUrC,MAAMsC,SAAS;YACzBlC,YAAYA;YACZC,QAAQA;YACRE,SAASA;YACTI,WAAWA;YACXE,UAAUA;YACVC,UAAUA;aAEVyB;QAENC,WAAWf;QACXgB,WAAW7B,IAAI6B,SAAS;QACxBC,kBAAkBlB,iBAAiB,UAAU;QAC7CmB,iBAAiB;YACfb,IAAIlB,IAAIkB,EAAE;YACV/B;YACAO;QACF;QACAsC,sBACE,oBAACf;YAAIW,WAAW,CAAC,EAAE5C,UAAU,cAAc,CAAC;yBAC1C,oBAACiD;YAAKL,WAAW,CAAC,EAAE5C,UAAU,cAAc,CAAC;WAC1CkD,OAAOhC,WAAW,GAAGiC,QAAQ,CAAC,GAAG,qBAEpC,oBAAC3D;YACCoD,WAAW,CAAC,EAAE5C,UAAU,aAAa,EAAEA,UAAU,aAAa,EAAEgB,IAAIwB,SAAS,CAAC,CAAC;YAC/EY,WAAU;WAEThE,eAAegB,MAAMK,MAAM,CAAC4C,QAAQ,EAAE9B,sBAEzC,oBAACxB;YAAaa,MAAM,CAAC,EAAEA,KAAK,UAAU,CAAC;YAAEE,UAAUA;YAClDc,gCAAkB,oBAACrC;YAAU+D,OAAO7B;YAAYF,MAAMA;YAAMgC,aAAAA;;QAGjEnB,KAAKpB,IAAIkB,EAAE;QACXsB,UAAU,CAACX,YAAczB,YAAYJ,IAAIkB,EAAE,EAAEW;qBAE7C,oBAAChD;QAAY4D,MAAM,CAAC,EAAE7C,KAAK,GAAG,CAAC;QAAE8C,OAAO1C,IAAIkB,EAAE;sBAC9C,oBAACxC;QAAkBkB,MAAMA;QAAMO,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEf,MAAMuD,IAAI,CAAC,CAAC;qBACtE,oBAAC/D;QACCgD,WAAW,CAAC,EAAE5C,UAAU,QAAQ,CAAC;QACjCyC,UAAUrC,MAAMsC,SAAS;QACzBnC,aAAaA;QACb,wBAAwB;QACxBqD,SAAQ;;AAQpB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Blocks/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAqBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6RhC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Blocks/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAqBvC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4RhC,CAAA;AAGD,eAAe,WAAW,CAAA"}
@@ -3,8 +3,8 @@ import { getTranslation } from '@payloadcms/translations';
3
3
  import React, { Fragment, useCallback } from 'react';
4
4
  import Banner from '../../../elements/Banner/index.js';
5
5
  import { Button } from '../../../elements/Button/index.js';
6
- import DraggableSortable from '../../../elements/DraggableSortable/index.js';
7
6
  import DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js';
7
+ import DraggableSortable from '../../../elements/DraggableSortable/index.js';
8
8
  import { DrawerToggler } from '../../../elements/Drawer/index.js';
9
9
  import { useDrawerSlug } from '../../../elements/Drawer/useDrawerSlug.js';
10
10
  import { ErrorPill } from '../../../elements/ErrorPill/index.js';
@@ -28,12 +28,12 @@ const BlocksField = (props)=>{
28
28
  label: label,
29
29
  required: required
30
30
  });
31
- const minRows = 'minRows' in props ? props.minRows : 0;
32
- const maxRows = 'maxRows' in props ? props.maxRows : undefined;
33
- const blocks = 'blocks' in props ? props.blocks : undefined;
34
- const labelsFromProps = 'labels' in props ? props.labels : undefined;
31
+ const minRows = 'minRows' in props ? props?.minRows : 0;
32
+ const maxRows = 'maxRows' in props ? props?.maxRows : undefined;
33
+ const blocks = 'blocks' in props ? props?.blocks : undefined;
34
+ const labelsFromProps = 'labels' in props ? props?.labels : undefined;
35
35
  const { setDocFieldPreferences } = useDocumentInfo();
36
- const { dispatchFields, setModified } = useForm();
36
+ const { addFieldRow, dispatchFields, setModified } = useForm();
37
37
  const { code: locale } = useLocale();
38
38
  const { localization } = useConfig();
39
39
  const drawerSlug = useDrawerSlug('blocks-drawer');
@@ -76,20 +76,23 @@ const BlocksField = (props)=>{
76
76
  validate: memoizedValidate
77
77
  });
78
78
  const addRow = useCallback(async (rowIndex, blockType)=>{
79
- dispatchFields({
80
- type: 'ADD_ROW',
81
- blockType,
79
+ await addFieldRow({
80
+ data: {
81
+ blockType
82
+ },
82
83
  path,
83
- rowIndex
84
+ rowIndex,
85
+ schemaPath: `${schemaPath}.${blockType}`
84
86
  });
85
87
  setModified(true);
86
88
  setTimeout(()=>{
87
89
  scrollToID(`${path}-row-${rowIndex + 1}`);
88
90
  }, 0);
89
91
  }, [
92
+ addFieldRow,
90
93
  path,
91
94
  setModified,
92
- dispatchFields
95
+ schemaPath
93
96
  ]);
94
97
  const duplicateRow = useCallback((rowIndex)=>{
95
98
  dispatchFields({
@@ -256,6 +259,7 @@ const BlocksField = (props)=>{
256
259
  labels: labels
257
260
  })));
258
261
  };
262
+ // eslint-disable-next-line no-restricted-exports
259
263
  export default BlocksField;
260
264
 
261
265
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/forms/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport Banner from '../../../elements/Banner/index.js'\nimport { Button } from '../../../elements/Button/index.js'\nimport DraggableSortable from '../../../elements/DraggableSortable/index.js'\nimport DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DrawerToggler } from '../../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { scrollToID } from '../../../utilities/scrollToID.js'\nimport { useForm, useFormSubmitted } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport { NullifyLocaleField } from '../../NullifyField/index.js'\nimport useField from '../../useField/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksField: React.FC<Props> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n name,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n forceRender = false,\n indexPath,\n label,\n localized,\n path: pathFromProps,\n permissions,\n readOnly,\n required,\n validate,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const minRows = 'minRows' in props ? props.minRows : 0\n const maxRows = 'maxRows' in props ? props.maxRows : undefined\n const blocks = 'blocks' in props ? props.blocks : undefined\n const labelsFromProps = 'labels' in props ? props.labels : undefined\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const { localization } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n path,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n async (rowIndex: number, blockType: string) => {\n dispatchFields({\n type: 'ADD_ROW',\n blockType,\n path,\n rowIndex,\n })\n\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [path, setModified, dispatchFields],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', collapsed, path, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n dispatchFields({ type: 'SET_ROW_COLLAPSED', collapsed, path, rowID, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = rows.reduce((total, row) => total + (row?.errorPaths?.size || 0), 0)\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && <div className={`${baseClass}__error-wrap`}>{Error}</div>}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>{Label}</h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n {Description}\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType } = row\n const blockToRender = blocks.find((block) => block.slug === blockType)\n\n if (blockToRender) {\n return (\n <DraggableSortableItem disabled={readOnly} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockToRender}\n blocks={blocks}\n duplicateRow={duplicateRow}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label: getTranslation(\n minRows === 1 || typeof minRows === 'undefined'\n ? labels.singular\n : labels.plural,\n i18n,\n ),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!readOnly && !hasMaxRows && (\n <Fragment>\n <DrawerToggler className={`${baseClass}__drawer-toggler`} slug={drawerSlug}>\n <Button\n buttonStyle=\"icon-label\"\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n </div>\n )\n}\n\nexport default BlocksField\n"],"names":["getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortable","DraggableSortableItem","DrawerToggler","useDrawerSlug","ErrorPill","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","useForm","useFormSubmitted","LabelComp","NullifyLocaleField","useField","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksField","props","i18n","t","name","Description","Error","Label","LabelFromProps","className","forceRender","indexPath","label","localized","path","pathFromProps","permissions","readOnly","required","validate","minRows","maxRows","undefined","blocks","labelsFromProps","labels","setDocFieldPreferences","dispatchFields","setModified","code","locale","localization","drawerSlug","submitted","plural","singular","editingDefaultLocale","fallback","defaultLocale","memoizedValidate","value","options","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","blockType","type","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","reduce","total","row","errorPaths","size","fieldHasErrors","showMinRows","showRequired","div","filter","Boolean","join","id","replace","header","h3","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","onDragEnd","i","blockToRender","find","block","slug","disabled","key","draggableSortableItemProps","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/forms/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport Banner from '../../../elements/Banner/index.js'\nimport { Button } from '../../../elements/Button/index.js'\nimport DraggableSortableItem from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport DraggableSortable from '../../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../../elements/ErrorPill/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { scrollToID } from '../../../utilities/scrollToID.js'\nimport { useForm, useFormSubmitted } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport { NullifyLocaleField } from '../../NullifyField/index.js'\nimport useField from '../../useField/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksField: React.FC<Props> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n name,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n forceRender = false,\n indexPath,\n label,\n localized,\n path: pathFromProps,\n permissions,\n readOnly,\n required,\n validate,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const minRows = 'minRows' in props ? props?.minRows : 0\n const maxRows = 'maxRows' in props ? props?.maxRows : undefined\n const blocks = 'blocks' in props ? props?.blocks : undefined\n const labelsFromProps = 'labels' in props ? props?.labels : undefined\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const { localization } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n path,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n async (rowIndex: number, blockType: string) => {\n await addFieldRow({\n data: { blockType },\n path,\n rowIndex,\n schemaPath: `${schemaPath}.${blockType}`,\n })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, setModified, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', collapsed, path, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n dispatchFields({ type: 'SET_ROW_COLLAPSED', collapsed, path, rowID, setDocFieldPreferences })\n },\n [dispatchFields, path, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = rows.reduce((total, row) => total + (row?.errorPaths?.size || 0), 0)\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && <div className={`${baseClass}__error-wrap`}>{Error}</div>}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>{Label}</h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n {Description}\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType } = row\n const blockToRender = blocks.find((block) => block.slug === blockType)\n\n if (blockToRender) {\n return (\n <DraggableSortableItem disabled={readOnly} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockToRender}\n blocks={blocks}\n duplicateRow={duplicateRow}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={readOnly}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label: getTranslation(\n minRows === 1 || typeof minRows === 'undefined'\n ? labels.singular\n : labels.plural,\n i18n,\n ),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!readOnly && !hasMaxRows && (\n <Fragment>\n <DrawerToggler className={`${baseClass}__drawer-toggler`} slug={drawerSlug}>\n <Button\n buttonStyle=\"icon-label\"\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n </div>\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default BlocksField\n"],"names":["getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","useForm","useFormSubmitted","LabelComp","NullifyLocaleField","useField","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksField","props","i18n","t","name","Description","Error","Label","LabelFromProps","className","forceRender","indexPath","label","localized","path","pathFromProps","permissions","readOnly","required","validate","minRows","maxRows","undefined","blocks","labelsFromProps","labels","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","localization","drawerSlug","submitted","plural","singular","editingDefaultLocale","fallback","defaultLocale","memoizedValidate","value","options","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","blockType","data","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","reduce","total","row","errorPaths","size","fieldHasErrors","showMinRows","showRequired","div","filter","Boolean","join","id","replace","header","h3","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","onDragEnd","i","blockToRender","find","block","slug","disabled","key","draggableSortableItemProps","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/forms/fields/Relationship/AddNew/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAIzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAWvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmL1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/forms/fields/Relationship/AddNew/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAIzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAUvC,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkL1C,CAAA"}
@@ -3,16 +3,16 @@ import { getTranslation } from '@payloadcms/translations';
3
3
  import React, { Fragment, useCallback, useEffect, useState } from 'react';
4
4
  import { Button } from '../../../../elements/Button/index.js';
5
5
  import { useDocumentDrawer } from '../../../../elements/DocumentDrawer/index.js';
6
- import Popup from '../../../../elements/Popup/index.js';
7
6
  import * as PopupList from '../../../../elements/Popup/PopupButtonList/index.js';
7
+ import Popup from '../../../../elements/Popup/index.js';
8
8
  import { Tooltip } from '../../../../elements/Tooltip/index.js';
9
9
  import { Plus } from '../../../../icons/Plus/index.js';
10
10
  import { useAuth } from '../../../../providers/Auth/index.js';
11
- import { useConfig } from '../../../../providers/Config/index.js';
12
11
  import { useTranslation } from '../../../../providers/Translation/index.js';
13
12
  import { useRelatedCollections } from './useRelatedCollections.js';
14
13
  const baseClass = 'relationship-add-new';
15
- export const AddNewRelation = ({ dispatchOptions, hasMany, path, relationTo, setValue, value })=>{
14
+ export const AddNewRelation = ({ // dispatchOptions,
15
+ hasMany, path, relationTo, setValue, value })=>{
16
16
  const relatedCollections = useRelatedCollections(relationTo);
17
17
  const { permissions } = useAuth();
18
18
  const [show, setShow] = useState(false);
@@ -22,7 +22,6 @@ export const AddNewRelation = ({ dispatchOptions, hasMany, path, relationTo, set
22
22
  const [popupOpen, setPopupOpen] = useState(false);
23
23
  const { i18n, t } = useTranslation();
24
24
  const [showTooltip, setShowTooltip] = useState(false);
25
- const config = useConfig();
26
25
  const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer({
27
26
  collectionSlug: collectionConfig?.slug
28
27
  });
@@ -59,12 +58,9 @@ export const AddNewRelation = ({ dispatchOptions, hasMany, path, relationTo, set
59
58
  }, [
60
59
  relationTo,
61
60
  collectionConfig,
62
- dispatchOptions,
63
- i18n,
64
61
  hasMany,
65
62
  setValue,
66
- value,
67
- config
63
+ value
68
64
  ]);
69
65
  const onPopupToggle = useCallback((state)=>{
70
66
  setPopupOpen(state);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/forms/fields/Relationship/AddNew/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentInfoContext } from '../../../../providers/DocumentInfo/types.js'\nimport type { Value } from '../types.js'\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../../../elements/DocumentDrawer/index.js'\nimport Popup from '../../../../elements/Popup/index.js'\nimport * as PopupList from '../../../../elements/Popup/PopupButtonList/index.js'\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { Plus } from '../../../../icons/Plus/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n dispatchOptions,\n hasMany,\n path,\n relationTo,\n setValue,\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 const relatedToMany = relatedCollections.length > 1\n const [collectionConfig, setCollectionConfig] = useState<SanitizedCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n const config = useConfig()\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentInfoContext['onSave'] = useCallback(\n ({ doc, operation }) => {\n if (operation === 'create') {\n const newValue: Value = Array.isArray(relationTo)\n ? {\n relationTo: collectionConfig.slug,\n value: doc.id,\n }\n : doc.id\n\n // ensure the value is not already in the array\n const isNewValue =\n Array.isArray(relationTo) && Array.isArray(value)\n ? !value.some((v) => v && typeof v === 'object' && v.value === doc.id)\n : value !== doc.id\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) {\n setValue([...(Array.isArray(value) ? value : []), newValue])\n } else {\n setValue(newValue)\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [relationTo, collectionConfig, dispatchOptions, i18n, hasMany, setValue, value, config],\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.permission)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection.slug].create.permission,\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 if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={`${baseClass}__add-button`}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0].labels.singular, i18n),\n })}\n </Tooltip>\n <Plus />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <Plus />\n </Button>\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.permission) {\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 &&\n permissions.collections[collectionConfig.slug].create.permission && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"names":["getTranslation","React","Fragment","useCallback","useEffect","useState","Button","useDocumentDrawer","Popup","PopupList","Tooltip","Plus","useAuth","useConfig","useTranslation","useRelatedCollections","baseClass","AddNewRelation","dispatchOptions","hasMany","path","relationTo","setValue","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","collectionConfig","setCollectionConfig","undefined","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","config","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","toggleDrawer","collectionSlug","slug","onSave","doc","operation","newValue","Array","isArray","id","isNewValue","some","v","onPopupToggle","state","collections","create","permission","collection","find","div","className","onClick","onMouseEnter","onMouseLeave","label","labels","singular","button","buttonStyle","tooltip","buttonType","horizontalAlign","onToggleOpen","render","close","closePopup","ButtonGroup","map","relatedCollection","key","size"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/forms/fields/Relationship/AddNew/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentInfoContext } from '../../../../providers/DocumentInfo/types.js'\nimport type { Value } from '../types.js'\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../../../elements/DocumentDrawer/index.js'\nimport * as PopupList from '../../../../elements/Popup/PopupButtonList/index.js'\nimport Popup from '../../../../elements/Popup/index.js'\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { Plus } from '../../../../icons/Plus/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n // dispatchOptions,\n hasMany,\n path,\n relationTo,\n setValue,\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 const relatedToMany = relatedCollections.length > 1\n const [collectionConfig, setCollectionConfig] = useState<SanitizedCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\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: DocumentInfoContext['onSave'] = useCallback(\n ({ doc, operation }) => {\n if (operation === 'create') {\n const newValue: Value = Array.isArray(relationTo)\n ? {\n relationTo: collectionConfig.slug,\n value: doc.id,\n }\n : doc.id\n\n // ensure the value is not already in the array\n const isNewValue =\n Array.isArray(relationTo) && Array.isArray(value)\n ? !value.some((v) => v && typeof v === 'object' && v.value === doc.id)\n : value !== doc.id\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) {\n setValue([...(Array.isArray(value) ? value : []), newValue])\n } else {\n setValue(newValue)\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [relationTo, collectionConfig, hasMany, setValue, value],\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.permission)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection.slug].create.permission,\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 if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={`${baseClass}__add-button`}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0].labels.singular, i18n),\n })}\n </Tooltip>\n <Plus />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <Plus />\n </Button>\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.permission) {\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 &&\n permissions.collections[collectionConfig.slug].create.permission && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"names":["getTranslation","React","Fragment","useCallback","useEffect","useState","Button","useDocumentDrawer","PopupList","Popup","Tooltip","Plus","useAuth","useTranslation","useRelatedCollections","baseClass","AddNewRelation","hasMany","path","relationTo","setValue","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","collectionConfig","setCollectionConfig","undefined","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","toggleDrawer","collectionSlug","slug","onSave","doc","operation","newValue","Array","isArray","id","isNewValue","some","v","onPopupToggle","state","collections","create","permission","collection","find","div","className","onClick","onMouseEnter","onMouseLeave","label","labels","singular","button","buttonStyle","tooltip","buttonType","horizontalAlign","onToggleOpen","render","close","closePopup","ButtonGroup","map","relatedCollection","key","size"],"mappings":"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"}