@payloadcms/ui 3.0.0-alpha.45 → 3.0.0-alpha.47

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 (93) hide show
  1. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/elements/DocumentDrawer/DrawerContent.js +27 -16
  3. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  4. package/dist/elements/DocumentDrawer/types.d.ts +3 -1
  5. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  6. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  7. package/dist/elements/DocumentHeader/index.d.ts.map +1 -1
  8. package/dist/elements/DocumentHeader/index.js +2 -3
  9. package/dist/elements/DocumentHeader/index.js.map +1 -1
  10. package/dist/elements/RenderTitle/index.d.ts +1 -2
  11. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  12. package/dist/elements/RenderTitle/index.js +2 -3
  13. package/dist/elements/RenderTitle/index.js.map +1 -1
  14. package/dist/elements/RenderTitle/types.d.ts +1 -0
  15. package/dist/elements/RenderTitle/types.d.ts.map +1 -1
  16. package/dist/elements/RenderTitle/types.js.map +1 -1
  17. package/dist/elements/TableColumns/buildColumns.d.ts.map +1 -1
  18. package/dist/elements/TableColumns/buildColumns.js +7 -6
  19. package/dist/elements/TableColumns/buildColumns.js.map +1 -1
  20. package/dist/elements/TableColumns/columnReducer.d.ts.map +1 -1
  21. package/dist/elements/TableColumns/columnReducer.js +26 -4
  22. package/dist/elements/TableColumns/columnReducer.js.map +1 -1
  23. package/dist/elements/TableColumns/index.js +1 -1
  24. package/dist/elements/TableColumns/index.js.map +1 -1
  25. package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
  26. package/dist/elements/ThumbnailCard/index.js +8 -4
  27. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  28. package/dist/elements/ThumbnailCard/types.d.ts +4 -2
  29. package/dist/elements/ThumbnailCard/types.d.ts.map +1 -1
  30. package/dist/elements/ThumbnailCard/types.js.map +1 -1
  31. package/dist/forms/Form/index.d.ts.map +1 -1
  32. package/dist/forms/Form/index.js +19 -22
  33. package/dist/forms/Form/index.js.map +1 -1
  34. package/dist/forms/Form/mergeServerFormState.d.ts +7 -0
  35. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  36. package/dist/forms/Form/mergeServerFormState.js +7 -1
  37. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  38. package/dist/forms/Form/types.d.ts +4 -2
  39. package/dist/forms/Form/types.d.ts.map +1 -1
  40. package/dist/forms/Form/types.js.map +1 -1
  41. package/dist/forms/Label/index.d.ts.map +1 -1
  42. package/dist/forms/Label/index.js +7 -1
  43. package/dist/forms/Label/index.js.map +1 -1
  44. package/dist/forms/RenderFields/RenderField.js +2 -2
  45. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  46. package/dist/forms/fields/Array/index.d.ts.map +1 -1
  47. package/dist/forms/fields/Array/index.js +12 -11
  48. package/dist/forms/fields/Array/index.js.map +1 -1
  49. package/dist/forms/fields/Blocks/BlockRow.d.ts.map +1 -1
  50. package/dist/forms/fields/Blocks/BlockRow.js +1 -1
  51. package/dist/forms/fields/Blocks/BlockRow.js.map +1 -1
  52. package/dist/forms/fields/Blocks/index.d.ts.map +1 -1
  53. package/dist/forms/fields/Blocks/index.js +14 -11
  54. package/dist/forms/fields/Blocks/index.js.map +1 -1
  55. package/dist/forms/fields/Checkbox/index.d.ts.map +1 -1
  56. package/dist/forms/fields/Checkbox/index.js +2 -1
  57. package/dist/forms/fields/Checkbox/index.js.map +1 -1
  58. package/dist/forms/fields/JSON/index.d.ts.map +1 -1
  59. package/dist/forms/fields/JSON/index.js +4 -2
  60. package/dist/forms/fields/JSON/index.js.map +1 -1
  61. package/dist/forms/fields/Relationship/AddNew/index.d.ts.map +1 -1
  62. package/dist/forms/fields/Relationship/AddNew/index.js +4 -8
  63. package/dist/forms/fields/Relationship/AddNew/index.js.map +1 -1
  64. package/dist/forms/fields/Relationship/optionsReducer.d.ts.map +1 -1
  65. package/dist/forms/fields/Relationship/optionsReducer.js +12 -8
  66. package/dist/forms/fields/Relationship/optionsReducer.js.map +1 -1
  67. package/dist/forms/fields/Tabs/index.d.ts.map +1 -1
  68. package/dist/forms/fields/Tabs/index.js +4 -5
  69. package/dist/forms/fields/Tabs/index.js.map +1 -1
  70. package/dist/forms/fields/Tabs/types.d.ts +2 -0
  71. package/dist/forms/fields/Tabs/types.d.ts.map +1 -1
  72. package/dist/forms/fields/Tabs/types.js.map +1 -1
  73. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  74. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +11 -1
  75. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  76. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  77. package/dist/hooks/usePayloadAPI.js +12 -2
  78. package/dist/hooks/usePayloadAPI.js.map +1 -1
  79. package/dist/prod/styles.css +1 -1
  80. package/dist/utilities/buildComponentMap/mapFields.d.ts.map +1 -1
  81. package/dist/utilities/buildComponentMap/mapFields.js +6 -9
  82. package/dist/utilities/buildComponentMap/mapFields.js.map +1 -1
  83. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +7 -1
  84. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  85. package/dist/utilities/formatDocTitle.d.ts +7 -7
  86. package/dist/utilities/formatDocTitle.d.ts.map +1 -1
  87. package/dist/utilities/formatDocTitle.js +21 -16
  88. package/dist/utilities/formatDocTitle.js.map +1 -1
  89. package/dist/utilities/generateFieldID.d.ts +2 -0
  90. package/dist/utilities/generateFieldID.d.ts.map +1 -0
  91. package/dist/utilities/generateFieldID.js +5 -0
  92. package/dist/utilities/generateFieldID.js.map +1 -0
  93. package/package.json +5 -5
@@ -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\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":"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"}
@@ -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;AAED,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({
@@ -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\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":"AAAA;AACA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,QAAQ,EAAEC,WAAW,QAAQ,QAAO;AAIpD,OAAOC,YAAY,oCAAmC;AACtD,SAASC,MAAM,QAAQ,oCAAmC;AAC1D,OAAOC,2BAA2B,qEAAoE;AACtG,OAAOC,uBAAuB,+CAA8C;AAC5E,SAASC,aAAa,QAAQ,oCAAmC;AACjE,SAASC,aAAa,QAAQ,4CAA2C;AACzE,SAASC,SAAS,QAAQ,uCAAsC;AAChE,SAASC,SAAS,QAAQ,qCAAoC;AAC9D,SAASC,eAAe,QAAQ,2CAA0C;AAC1E,SAASC,SAAS,QAAQ,qCAAoC;AAC9D,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,UAAU,QAAQ,mCAAkC;AAC7D,SAASC,OAAO,EAAEC,gBAAgB,QAAQ,wBAAuB;AACjE,OAAOC,eAAe,uBAAsB;AAC5C,SAASC,kBAAkB,QAAQ,8BAA6B;AAChE,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,cAAc,QAAQ,eAAc;AAC7C,SAASC,QAAQ,QAAQ,gBAAe;AACxC,SAASC,YAAY,QAAQ,0BAAyB;AAGtD,MAAMC,YAAY;AAElB,MAAMC,cAA+B,CAACC;IACpC,MAAM,EAAEC,IAAI,EAAEC,CAAC,EAAE,GAAGd;IAEpB,MAAM,EACJe,IAAI,EACJC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAAS,EACTC,cAAc,KAAK,EACnBC,SAAS,EACTC,KAAK,EACLC,SAAS,EACTC,MAAMC,aAAa,EACnBC,WAAW,EACXC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACT,GAAGlB;IAEJ,MAAMM,QAAQC,gCAAkB,oBAACf;QAAUmB,OAAOA;QAAOM,UAAUA;;IAEnE,MAAME,UAAU,aAAanB,QAAQA,OAAOmB,UAAU;IACtD,MAAMC,UAAU,aAAapB,QAAQA,OAAOoB,UAAUC;IACtD,MAAMC,SAAS,YAAYtB,QAAQA,OAAOsB,SAASD;IACnD,MAAME,kBAAkB,YAAYvB,QAAQA,OAAOwB,SAASH;IAE5D,MAAM,EAAEI,sBAAsB,EAAE,GAAGvC;IACnC,MAAM,EAAEwC,WAAW,EAAEC,cAAc,EAAEC,WAAW,EAAE,GAAGtC;IACrD,MAAM,EAAEuC,MAAMC,MAAM,EAAE,GAAG3C;IACzB,MAAM,EAAE4C,YAAY,EAAE,GAAG9C;IACzB,MAAM+C,aAAajD,cAAc;IACjC,MAAMkD,YAAY1C;IAElB,MAAMiC,SAAS;QACbU,QAAQhC,EAAE;QACViC,UAAUjC,EAAE;QACZ,GAAGqB,eAAe;IACpB;IAEA,MAAMa,uBAAuB,AAAC,CAAA;QAC5B,IAAIL,gBAAgBA,aAAaM,QAAQ,EAAE;YACzC,MAAMC,gBAAgBP,aAAaO,aAAa,IAAI;YACpD,OAAOR,WAAWQ;QACpB;QAEA,OAAO;IACT,CAAA;IAEA,MAAMC,mBAAmB9D,YACvB,CAAC+D,OAAOC;QACN,kCAAkC;QAClC,IAAI,CAACL,wBAAwBI,UAAU,MAAM;YAC3C,OAAO;QACT;QACA,IAAI,OAAOtB,aAAa,YAAY;YAClC,OAAOA,SAASsB,OAAO;gBAAE,GAAGC,OAAO;gBAAErB;gBAASD;gBAASF;YAAS;QAClE;IACF,GACA;QAACG;QAASD;QAASF;QAAUC;QAAUkB;KAAqB;IAG9D,MAAM,EACJvB,IAAI,EACJ6B,OAAO,EAAE,EACTC,UAAU,EACVC,SAAS,EACTC,KAAK,EACLL,KAAK,EACN,GAAG9C,SAAiB;QACnBoD,SAAS;QACTjC,MAAMC,iBAAiBX;QACvBe,UAAUqB;IACZ;IAEA,MAAMQ,SAAStE,YACb,OAAOuE,UAAkBC;QACvB,MAAMvB,YAAY;YAChBwB,MAAM;gBAAED;YAAU;YAClBpC;YACAmC;YACAL,YAAY,CAAC,EAAEA,WAAW,CAAC,EAAEM,UAAU,CAAC;QAC1C;QACArB,YAAY;QAEZuB,WAAW;YACT9D,WAAW,CAAC,EAAEwB,KAAK,KAAK,EAAEmC,WAAW,EAAE,CAAC;QAC1C,GAAG;IACL,GACA;QAACtB;QAAab;QAAMe;QAAae;KAAW;IAG9C,MAAMS,eAAe3E,YACnB,CAACuE;QACCrB,eAAe;YAAE0B,MAAM;YAAiBxC;YAAMmC;QAAS;QACvDpB,YAAY;QAEZuB,WAAW;YACT9D,WAAW,CAAC,EAAEwB,KAAK,KAAK,EAAEmC,WAAW,EAAE,CAAC;QAC1C,GAAG;IACL,GACA;QAACrB;QAAgBd;QAAMe;KAAY;IAGrC,MAAM0B,YAAY7E,YAChB,CAACuE;QACCrB,eAAe;YACb0B,MAAM;YACNxC;YACAmC;QACF;QAEApB,YAAY;IACd,GACA;QAACf;QAAMc;QAAgBC;KAAY;IAGrC,MAAM2B,UAAU9E,YACd,CAAC+E,eAAuBC;QACtB9B,eAAe;YAAE0B,MAAM;YAAYG;YAAeC;YAAa5C;QAAK;QACpEe,YAAY;IACd,GACA;QAACD;QAAgBd;QAAMe;KAAY;IAGrC,MAAM8B,oBAAoBjF,YACxB,CAACkF;QACChC,eAAe;YAAE0B,MAAM;YAA0BM;YAAW9C;YAAMY;QAAuB;IAC3F,GACA;QAACE;QAAgBd;QAAMY;KAAuB;IAGhD,MAAMmC,cAAcnF,YAClB,CAACoF,OAAeF;QACdhC,eAAe;YAAE0B,MAAM;YAAqBM;YAAW9C;YAAMgD;YAAOpC;QAAuB;IAC7F,GACA;QAACE;QAAgBd;QAAMY;KAAuB;IAGhD,MAAMqC,aAAa1C,WAAWsB,KAAKqB,MAAM,IAAI3C;IAE7C,MAAM4C,kBAAkBtB,KAAKuB,MAAM,CAAC,CAACC,OAAOC,MAAQD,QAASC,CAAAA,KAAKC,YAAYC,QAAQ,CAAA,GAAI;IAC1F,MAAMC,iBAAiBrC,aAAa+B,kBAAmBnB,CAAAA,QAAQ,IAAI,CAAA,IAAK;IAExE,MAAM0B,cAAc7B,KAAKqB,MAAM,GAAG5C,WAAYF,YAAYyB,KAAKqB,MAAM,KAAK;IAC1E,MAAMS,eAAexD,YAAY0B,KAAKqB,MAAM,KAAK;IAEjD,qBACE,oBAACU;QACCjE,WAAW;YACTb;YACAG;YACAU;YACA8D,iBAAiB,CAAC,EAAExE,UAAU,WAAW,CAAC,GAAG,CAAC,EAAEA,UAAU,cAAc,CAAC;SAC1E,CACE4E,MAAM,CAACC,SACPC,IAAI,CAAC;QACRC,IAAI,CAAC,MAAM,EAAEhE,KAAKiE,OAAO,CAAC,OAAO,MAAM,CAAC;OAEvClC,2BAAa,oBAAC6B;QAAIjE,WAAW,CAAC,EAAEV,UAAU,YAAY,CAAC;OAAGO,sBAC3D,oBAAC0E;QAAOvE,WAAW,CAAC,EAAEV,UAAU,QAAQ,CAAC;qBACvC,oBAAC2E;QAAIjE,WAAW,CAAC,EAAEV,UAAU,aAAa,CAAC;qBACzC,oBAAC2E;QAAIjE,WAAW,CAAC,EAAEV,UAAU,oBAAoB,CAAC;qBAChD,oBAACkF,YAAI1E,QACJgE,kBAAkBN,kBAAkB,mBACnC,oBAAChF;QAAUiG,OAAOjB;QAAiB/D,MAAMA;QAAMiF,aAAAA;SAGlDxC,KAAKqB,MAAM,GAAG,mBACb,oBAACoB;QAAG3E,WAAW,CAAC,EAAEV,UAAU,gBAAgB,CAAC;qBAC3C,oBAACsF,0BACC,oBAACC;QACC7E,WAAW,CAAC,EAAEV,UAAU,eAAe,CAAC;QACxCwF,SAAS,IAAM5B,kBAAkB;QACjCL,MAAK;OAEJnD,EAAE,uCAGP,oBAACkF,0BACC,oBAACC;QACC7E,WAAW,CAAC,EAAEV,UAAU,eAAe,CAAC;QACxCwF,SAAS,IAAM5B,kBAAkB;QACjCL,MAAK;OAEJnD,EAAE,uBAMZE,4BAEH,oBAACX;QAAmB8F,YAAY/C;QAAO5B,WAAWA;QAAWC,MAAMA;QAClE,AAAC6B,CAAAA,KAAKqB,MAAM,GAAG,KAAM,CAAClB,SAAU2B,CAAAA,gBAAgBD,WAAU,CAAE,mBAC3D,oBAAC1F;QACC2B,WAAW,CAAC,EAAEV,UAAU,MAAM,CAAC;QAC/B0F,KAAK9C,KAAK+C,GAAG,CAAC,CAACtB,MAAQA,IAAIU,EAAE;QAC7Ba,WAAW,CAAC,EAAElC,aAAa,EAAEC,WAAW,EAAE,GAAKF,QAAQC,eAAeC;OAErEf,KAAK+C,GAAG,CAAC,CAACtB,KAAKwB;QACd,MAAM,EAAE1C,SAAS,EAAE,GAAGkB;QACtB,MAAMyB,gBAAgBtE,OAAOuE,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAK9C;QAE5D,IAAI2C,eAAe;YACjB,qBACE,oBAAChH;gBAAsBoH,UAAUhF;gBAAU6D,IAAIV,IAAIU,EAAE;gBAAEoB,KAAK9B,IAAIU,EAAE;eAC/D,CAACqB,2CACA,oBAACtG;oBACE,GAAGsG,0BAA0B;oBAC9BnD,QAAQA;oBACR+C,OAAOF;oBACPtE,QAAQA;oBACR8B,cAAcA;oBACd3C,aAAaA;oBACbqD,YAAYA;oBACZpD,WAAWA;oBACXc,QAAQA;oBACR+B,SAASA;oBACT1C,MAAMA;oBACNE,aAAaA;oBACbC,UAAUA;oBACVsC,WAAWA;oBACXa,KAAKA;oBACLgC,UAAUzD,KAAKqB,MAAM;oBACrBf,UAAU2C;oBACVhD,YAAYA;oBACZiB,aAAaA;;QAKvB;QAEA,OAAO;IACT,IACC,CAACxB,sCACA,oBAAC7D,MAAMC,QAAQ,QACZ+F,6BACC,oBAAC7F;QAAO2E,MAAK;OACVnD,EAAE,8BAA8B;QAC/B+E,OAAO9D;QACPR,OAAOrC,eACL6C,YAAY,KAAK,OAAOA,YAAY,cAChCK,OAAOW,QAAQ,GACfX,OAAOU,MAAM,EACjBjC;IAEJ,KAGHuE,8BACC,oBAAC9F,cACEwB,EAAE,yBAAyB;QAAES,OAAOrC,eAAekD,OAAOU,MAAM,EAAEjC;IAAM,OAOpF,CAACe,YAAY,CAAC8C,4BACb,oBAACtF,8BACC,oBAACM;QAAc0B,WAAW,CAAC,EAAEV,UAAU,gBAAgB,CAAC;QAAEiG,MAAM/D;qBAC9D,oBAACrD;QACCyH,aAAY;QACZC,IAAG;QACHC,MAAK;QACLC,cAAa;QACbC,WAAU;OAETtG,EAAE,mBAAmB;QAAES,OAAOrC,eAAekD,OAAOW,QAAQ,EAAElC;IAAM,oBAGzE,oBAACJ;QACCkD,QAAQA;QACR0D,aAAa/D,MAAMqB,UAAU;QAC7BzC,QAAQA;QACRU,YAAYA;QACZR,QAAQA;;AAMpB;AAEA,eAAezB,YAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,cAAc,CAAA;;AA6FrB,wBAAsC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AASvC,OAAO,cAAc,CAAA;;AA6FrB,wBAAsC"}
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  import React, { useCallback } from 'react';
3
+ import { generateFieldID } from '../../../utilities/generateFieldID.js';
3
4
  import { useForm } from '../../Form/context.js';
4
5
  import LabelComp from '../../Label/index.js';
5
6
  import useField from '../../useField/index.js';
@@ -42,7 +43,7 @@ const Checkbox = (props)=>{
42
43
  value
43
44
  ]);
44
45
  const checked = checkedFromProps || Boolean(value);
45
- const fieldID = id || `field-${path?.replace(/\./g, '__')}${uuid ? `-${uuid}` : ''}`;
46
+ const fieldID = id || generateFieldID(path, uuid);
46
47
  return /*#__PURE__*/ React.createElement("div", {
47
48
  className: [
48
49
  fieldBaseClass,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/forms/fields/Checkbox/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useForm } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nconst Checkbox: React.FC<Props> = (props) => {\n const {\n id,\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n checked: checkedFromProps,\n className,\n disableFormData,\n label,\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path, setValue, showError, value } = useField({\n disableFormData,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const onToggle = useCallback(() => {\n if (!readOnly) {\n setValue(!value)\n if (typeof onChangeFromProps === 'function') onChangeFromProps(!value)\n }\n }, [onChangeFromProps, readOnly, setValue, value])\n\n const checked = checkedFromProps || Boolean(value)\n\n const fieldID = id || `field-${path?.replace(/\\./g, '__')}${uuid ? `-${uuid}` : ''}`\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n showError && 'error',\n className,\n value && `${baseClass}--checked`,\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <div className={`${baseClass}__error-wrap`}>{Error}</div>\n <CheckboxInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n Label={Label}\n checked={checked}\n id={fieldID}\n inputRef={null}\n name={path}\n onToggle={onToggle}\n partialChecked={partialChecked}\n readOnly={readOnly}\n required={required}\n />\n {Description}\n </div>\n )\n}\n\nexport default withCondition(Checkbox)\n"],"names":["React","useCallback","useForm","LabelComp","useField","withCondition","fieldBaseClass","CheckboxInput","baseClass","Checkbox","props","id","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","checked","checkedFromProps","className","disableFormData","label","onChange","onChangeFromProps","partialChecked","path","pathFromProps","readOnly","required","style","validate","width","uuid","memoizedValidate","value","options","setValue","showError","onToggle","Boolean","fieldID","replace","div","filter","join","inputRef"],"mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,OAAO,QAAQ,wBAAuB;AAC/C,OAAOC,eAAe,uBAAsB;AAC5C,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,eAAc;AAC7C,SAASC,aAAa,QAAQ,aAAY;AAG1C,MAAMC,YAAY;AAElB,MAAMC,WAA4B,CAACC;IACjC,MAAM,EACJC,EAAE,EACFC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAASC,gBAAgB,EACzBC,SAAS,EACTC,eAAe,EACfC,KAAK,EACLC,UAAUC,iBAAiB,EAC3BC,cAAc,EACdC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGvB;IAEJ,MAAM,EAAEwB,IAAI,EAAE,GAAGhC;IAEjB,MAAMe,QAAQC,gCAAkB,oBAACf;QAAUoB,OAAOA;QAAOO,UAAUA;;IAEnE,MAAMK,mBAAmClC,YACvC,CAACmC,OAAOC;QACN,IAAI,OAAOL,aAAa,YAAY;YAClC,OAAOA,SAASI,OAAO;gBAAE,GAAGC,OAAO;gBAAEP;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEH,IAAI,EAAEW,QAAQ,EAAEC,SAAS,EAAEH,KAAK,EAAE,GAAGhC,SAAS;QACpDkB;QACAK,MAAMC,iBAAiBhB;QACvBoB,UAAUG;IACZ;IAEA,MAAMK,WAAWvC,YAAY;QAC3B,IAAI,CAAC4B,UAAU;YACbS,SAAS,CAACF;YACV,IAAI,OAAOX,sBAAsB,YAAYA,kBAAkB,CAACW;QAClE;IACF,GAAG;QAACX;QAAmBI;QAAUS;QAAUF;KAAM;IAEjD,MAAMjB,UAAUC,oBAAoBqB,QAAQL;IAE5C,MAAMM,UAAU/B,MAAM,CAAC,MAAM,EAAEgB,MAAMgB,QAAQ,OAAO,MAAM,EAAET,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAEpF,qBACE,oBAACU;QACCvB,WAAW;YACTf;YACAE;YACA+B,aAAa;YACblB;YACAe,SAAS,CAAC,EAAE5B,UAAU,SAAS,CAAC;YAChCqB,YAAY,CAAC,EAAErB,UAAU,WAAW,CAAC;SACtC,CACEqC,MAAM,CAACJ,SACPK,IAAI,CAAC;QACRf,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACW;QAAIvB,WAAW,CAAC,EAAEb,UAAU,YAAY,CAAC;OAAGQ,sBAC7C,oBAACT;QACCM,YAAYA;QACZC,aAAaA;QACbG,OAAOA;QACPE,SAASA;QACTR,IAAI+B;QACJK,UAAU;QACVnC,MAAMe;QACNa,UAAUA;QACVd,gBAAgBA;QAChBG,UAAUA;QACVC,UAAUA;QAEXf;AAGP;AAEA,eAAeV,cAAcI,UAAS"}
1
+ {"version":3,"sources":["../../../../src/forms/fields/Checkbox/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { generateFieldID } from '../../../utilities/generateFieldID.js'\nimport { useForm } from '../../Form/context.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nconst Checkbox: React.FC<Props> = (props) => {\n const {\n id,\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n checked: checkedFromProps,\n className,\n disableFormData,\n label,\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path, setValue, showError, value } = useField({\n disableFormData,\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const onToggle = useCallback(() => {\n if (!readOnly) {\n setValue(!value)\n if (typeof onChangeFromProps === 'function') onChangeFromProps(!value)\n }\n }, [onChangeFromProps, readOnly, setValue, value])\n\n const checked = checkedFromProps || Boolean(value)\n\n const fieldID = id || generateFieldID(path, uuid)\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n showError && 'error',\n className,\n value && `${baseClass}--checked`,\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <div className={`${baseClass}__error-wrap`}>{Error}</div>\n <CheckboxInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n Label={Label}\n checked={checked}\n id={fieldID}\n inputRef={null}\n name={path}\n onToggle={onToggle}\n partialChecked={partialChecked}\n readOnly={readOnly}\n required={required}\n />\n {Description}\n </div>\n )\n}\n\nexport default withCondition(Checkbox)\n"],"names":["React","useCallback","generateFieldID","useForm","LabelComp","useField","withCondition","fieldBaseClass","CheckboxInput","baseClass","Checkbox","props","id","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","checked","checkedFromProps","className","disableFormData","label","onChange","onChangeFromProps","partialChecked","path","pathFromProps","readOnly","required","style","validate","width","uuid","memoizedValidate","value","options","setValue","showError","onToggle","Boolean","fieldID","div","filter","join","inputRef"],"mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,OAAO,QAAQ,wBAAuB;AAC/C,OAAOC,eAAe,uBAAsB;AAC5C,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,eAAc;AAC7C,SAASC,aAAa,QAAQ,aAAY;AAG1C,MAAMC,YAAY;AAElB,MAAMC,WAA4B,CAACC;IACjC,MAAM,EACJC,EAAE,EACFC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAASC,gBAAgB,EACzBC,SAAS,EACTC,eAAe,EACfC,KAAK,EACLC,UAAUC,iBAAiB,EAC3BC,cAAc,EACdC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGvB;IAEJ,MAAM,EAAEwB,IAAI,EAAE,GAAGhC;IAEjB,MAAMe,QAAQC,gCAAkB,oBAACf;QAAUoB,OAAOA;QAAOO,UAAUA;;IAEnE,MAAMK,mBAAmCnC,YACvC,CAACoC,OAAOC;QACN,IAAI,OAAOL,aAAa,YAAY;YAClC,OAAOA,SAASI,OAAO;gBAAE,GAAGC,OAAO;gBAAEP;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEH,IAAI,EAAEW,QAAQ,EAAEC,SAAS,EAAEH,KAAK,EAAE,GAAGhC,SAAS;QACpDkB;QACAK,MAAMC,iBAAiBhB;QACvBoB,UAAUG;IACZ;IAEA,MAAMK,WAAWxC,YAAY;QAC3B,IAAI,CAAC6B,UAAU;YACbS,SAAS,CAACF;YACV,IAAI,OAAOX,sBAAsB,YAAYA,kBAAkB,CAACW;QAClE;IACF,GAAG;QAACX;QAAmBI;QAAUS;QAAUF;KAAM;IAEjD,MAAMjB,UAAUC,oBAAoBqB,QAAQL;IAE5C,MAAMM,UAAU/B,MAAMV,gBAAgB0B,MAAMO;IAE5C,qBACE,oBAACS;QACCtB,WAAW;YACTf;YACAE;YACA+B,aAAa;YACblB;YACAe,SAAS,CAAC,EAAE5B,UAAU,SAAS,CAAC;YAChCqB,YAAY,CAAC,EAAErB,UAAU,WAAW,CAAC;SACtC,CACEoC,MAAM,CAACH,SACPI,IAAI,CAAC;QACRd,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACU;QAAItB,WAAW,CAAC,EAAEb,UAAU,YAAY,CAAC;OAAGQ,sBAC7C,oBAACT;QACCM,YAAYA;QACZC,aAAaA;QACbG,OAAOA;QACPE,SAASA;QACTR,IAAI+B;QACJI,UAAU;QACVlC,MAAMe;QACNa,UAAUA;QACVd,gBAAgBA;QAChBG,UAAUA;QACVC,UAAUA;QAEXf;AAGP;AAEA,eAAeV,cAAcI,UAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/JSON/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOvC,OAAO,cAAc,CAAA;;AAwGrB,wBAAuC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/JSON/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOvC,OAAO,cAAc,CAAA;;AA4GrB,wBAAuC"}
@@ -12,6 +12,7 @@ const JSONField = (props)=>{
12
12
  label: label,
13
13
  required: required
14
14
  });
15
+ // eslint-disable-next-line react/destructuring-assignment
15
16
  const editorOptions = 'editorOptions' in props ? props.editorOptions : {};
16
17
  const [stringValue, setStringValue] = useState();
17
18
  const [jsonError, setJsonError] = useState();
@@ -36,9 +37,10 @@ const JSONField = (props)=>{
36
37
  if (readOnly) return;
37
38
  setStringValue(val);
38
39
  try {
39
- setValue(JSON.parse(val));
40
+ setValue(val ? JSON.stringify(JSON.parse(val)) : null);
40
41
  setJsonError(undefined);
41
42
  } catch (e) {
43
+ setValue(val ? val : null);
42
44
  setJsonError(e);
43
45
  }
44
46
  }, [
@@ -48,7 +50,7 @@ const JSONField = (props)=>{
48
50
  ]);
49
51
  useEffect(()=>{
50
52
  if (hasLoadedValue) return;
51
- setStringValue(JSON.stringify(value ? value : initialValue, null, 2));
53
+ setStringValue(value || initialValue ? JSON.stringify(value ? value : initialValue, null, 2) : '');
52
54
  setHasLoadedValue(true);
53
55
  }, [
54
56
  initialValue,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/forms/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { CodeEditor } from '../../../elements/CodeEditor/index.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONField: React.FC<Props> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n label,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n const editorOptions = 'editorOptions' in props ? props.editorOptions : {}\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, jsonError, required })\n },\n [validate, required, jsonError],\n )\n\n const {\n initialValue,\n // path,\n setValue,\n showError,\n value,\n } = useField<string>({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) return\n setStringValue(val)\n\n try {\n setValue(JSON.parse(val))\n setJsonError(undefined)\n } catch (e) {\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue) return\n setStringValue(JSON.stringify(value ? value : initialValue, null, 2))\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n {Error}\n {Label}\n <div>\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n onChange={handleChange}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n {Description}\n </div>\n )\n}\n\nexport default withCondition(JSONField)\n"],"names":["React","useCallback","useEffect","useState","CodeEditor","LabelComp","useField","withCondition","fieldBaseClass","baseClass","JSONField","props","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","className","label","path","pathFromProps","readOnly","required","style","validate","width","editorOptions","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","initialValue","setValue","showError","handleChange","val","JSON","parse","undefined","e","stringify","div","filter","Boolean","join","defaultLanguage","onChange"],"mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAI/D,SAASC,UAAU,QAAQ,wCAAuC;AAClE,OAAOC,eAAe,uBAAsB;AAC5C,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,eAAc;AAG7C,MAAMC,YAAY;AAElB,MAAMC,YAA6B,CAACC;IAClC,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAAS,EACTC,KAAK,EACLC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGhB;IAEJ,MAAMM,QAAQC,gCAAkB,oBAACb;QAAUe,OAAOA;QAAOI,UAAUA;;IAEnE,MAAMI,gBAAgB,mBAAmBjB,QAAQA,MAAMiB,aAAa,GAAG,CAAC;IAExE,MAAM,CAACC,aAAaC,eAAe,GAAG3B;IACtC,MAAM,CAAC4B,WAAWC,aAAa,GAAG7B;IAClC,MAAM,CAAC8B,gBAAgBC,kBAAkB,GAAG/B,SAAS;IAErD,MAAMgC,mBAAmClC,YACvC,CAACmC,OAAOC;QACN,IAAI,OAAOX,aAAa,YACtB,OAAOA,SAASU,OAAO;YAAE,GAAGC,OAAO;YAAEN;YAAWP;QAAS;IAC7D,GACA;QAACE;QAAUF;QAAUO;KAAU;IAGjC,MAAM,EACJO,YAAY,EACZ,QAAQ;IACRC,QAAQ,EACRC,SAAS,EACTJ,KAAK,EACN,GAAG9B,SAAiB;QACnBe,MAAMC,iBAAiBV;QACvBc,UAAUS;IACZ;IAEA,MAAMM,eAAexC,YACnB,CAACyC;QACC,IAAInB,UAAU;QACdO,eAAeY;QAEf,IAAI;YACFH,SAASI,KAAKC,KAAK,CAACF;YACpBV,aAAaa;QACf,EAAE,OAAOC,GAAG;YACVd,aAAac;QACf;IACF,GACA;QAACvB;QAAUgB;QAAUT;KAAe;IAGtC5B,UAAU;QACR,IAAI+B,gBAAgB;QACpBH,eAAea,KAAKI,SAAS,CAACX,QAAQA,QAAQE,cAAc,MAAM;QAClEJ,kBAAkB;IACpB,GAAG;QAACI;QAAcF;QAAOH;KAAe;IAExC,qBACE,oBAACe;QACC7B,WAAW;YACTX;YACAC;YACAU;YACAqB,aAAa;YACbjB,YAAY;SACb,CACE0B,MAAM,CAACC,SACPC,IAAI,CAAC;QACR1B,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;OAECX,OACAC,qBACD,oBAAC+B,aACElC,2BACD,oBAACV;QACCgD,iBAAgB;QAChBC,UAAUZ;QACVJ,SAAST;QACTL,UAAUA;QACVa,OAAOP;QAERhB,aAEFE;AAGP;AAEA,eAAeR,cAAcG,WAAU"}
1
+ {"version":3,"sources":["../../../../src/forms/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { CodeEditor } from '../../../elements/CodeEditor/index.js'\nimport LabelComp from '../../Label/index.js'\nimport useField from '../../useField/index.js'\nimport { withCondition } from '../../withCondition/index.js'\nimport { fieldBaseClass } from '../shared.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONField: React.FC<Props> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n Description,\n Error,\n Label: LabelFromProps,\n className,\n label,\n path: pathFromProps,\n readOnly,\n required,\n style,\n validate,\n width,\n } = props\n\n const Label = LabelFromProps || <LabelComp label={label} required={required} />\n\n // eslint-disable-next-line react/destructuring-assignment\n const editorOptions = 'editorOptions' in props ? props.editorOptions : {}\n\n const [stringValue, setStringValue] = useState<string>()\n const [jsonError, setJsonError] = useState<string>()\n const [hasLoadedValue, setHasLoadedValue] = useState(false)\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function')\n return validate(value, { ...options, jsonError, required })\n },\n [validate, required, jsonError],\n )\n\n const {\n initialValue,\n // path,\n setValue,\n showError,\n value,\n } = useField<string>({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) return\n setStringValue(val)\n\n try {\n setValue(val ? JSON.stringify(JSON.parse(val)) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, setValue, setStringValue],\n )\n\n useEffect(() => {\n if (hasLoadedValue) return\n setStringValue(\n value || initialValue ? JSON.stringify(value ? value : initialValue, null, 2) : '',\n )\n setHasLoadedValue(true)\n }, [initialValue, value, hasLoadedValue])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n {Error}\n {Label}\n <div>\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n onChange={handleChange}\n options={editorOptions}\n readOnly={readOnly}\n value={stringValue}\n />\n {AfterInput}\n </div>\n {Description}\n </div>\n )\n}\n\nexport default withCondition(JSONField)\n"],"names":["React","useCallback","useEffect","useState","CodeEditor","LabelComp","useField","withCondition","fieldBaseClass","baseClass","JSONField","props","name","AfterInput","BeforeInput","Description","Error","Label","LabelFromProps","className","label","path","pathFromProps","readOnly","required","style","validate","width","editorOptions","stringValue","setStringValue","jsonError","setJsonError","hasLoadedValue","setHasLoadedValue","memoizedValidate","value","options","initialValue","setValue","showError","handleChange","val","JSON","stringify","parse","undefined","e","div","filter","Boolean","join","defaultLanguage","onChange"],"mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAI/D,SAASC,UAAU,QAAQ,wCAAuC;AAClE,OAAOC,eAAe,uBAAsB;AAC5C,OAAOC,cAAc,0BAAyB;AAC9C,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,eAAc;AAG7C,MAAMC,YAAY;AAElB,MAAMC,YAA6B,CAACC;IAClC,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,KAAK,EACLC,OAAOC,cAAc,EACrBC,SAAS,EACTC,KAAK,EACLC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGhB;IAEJ,MAAMM,QAAQC,gCAAkB,oBAACb;QAAUe,OAAOA;QAAOI,UAAUA;;IAEnE,0DAA0D;IAC1D,MAAMI,gBAAgB,mBAAmBjB,QAAQA,MAAMiB,aAAa,GAAG,CAAC;IAExE,MAAM,CAACC,aAAaC,eAAe,GAAG3B;IACtC,MAAM,CAAC4B,WAAWC,aAAa,GAAG7B;IAClC,MAAM,CAAC8B,gBAAgBC,kBAAkB,GAAG/B,SAAS;IAErD,MAAMgC,mBAAmClC,YACvC,CAACmC,OAAOC;QACN,IAAI,OAAOX,aAAa,YACtB,OAAOA,SAASU,OAAO;YAAE,GAAGC,OAAO;YAAEN;YAAWP;QAAS;IAC7D,GACA;QAACE;QAAUF;QAAUO;KAAU;IAGjC,MAAM,EACJO,YAAY,EACZ,QAAQ;IACRC,QAAQ,EACRC,SAAS,EACTJ,KAAK,EACN,GAAG9B,SAAiB;QACnBe,MAAMC,iBAAiBV;QACvBc,UAAUS;IACZ;IAEA,MAAMM,eAAexC,YACnB,CAACyC;QACC,IAAInB,UAAU;QACdO,eAAeY;QAEf,IAAI;YACFH,SAASG,MAAMC,KAAKC,SAAS,CAACD,KAAKE,KAAK,CAACH,QAAQ;YACjDV,aAAac;QACf,EAAE,OAAOC,GAAG;YACVR,SAASG,MAAMA,MAAM;YACrBV,aAAae;QACf;IACF,GACA;QAACxB;QAAUgB;QAAUT;KAAe;IAGtC5B,UAAU;QACR,IAAI+B,gBAAgB;QACpBH,eACEM,SAASE,eAAeK,KAAKC,SAAS,CAACR,QAAQA,QAAQE,cAAc,MAAM,KAAK;QAElFJ,kBAAkB;IACpB,GAAG;QAACI;QAAcF;QAAOH;KAAe;IAExC,qBACE,oBAACe;QACC7B,WAAW;YACTX;YACAC;YACAU;YACAqB,aAAa;YACbjB,YAAY;SACb,CACE0B,MAAM,CAACC,SACPC,IAAI,CAAC;QACR1B,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;OAECX,OACAC,qBACD,oBAAC+B,aACElC,2BACD,oBAACV;QACCgD,iBAAgB;QAChBC,UAAUZ;QACVJ,SAAST;QACTL,UAAUA;QACVa,OAAOP;QAERhB,aAEFE;AAGP;AAEA,eAAeR,cAAcG,WAAU"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,QAAA,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EA+FzE,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../src/forms/fields/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAU,WAAW,EAAE,MAAM,YAAY,CAAA;AAyB7D,QAAA,MAAM,cAAc,UAAW,WAAW,EAAE,UAAU,MAAM,KAAG,WAAW,EAmGzE,CAAA;AAED,eAAe,cAAc,CAAA"}