@payloadcms/ui 3.0.0-beta.33 → 3.0.0-beta.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/EditUpload/index.d.ts +2 -4
- package/dist/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/elements/EditUpload/index.js +19 -16
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/Save/index.d.ts.map +1 -1
- package/dist/elements/Save/index.js +3 -1
- package/dist/elements/Save/index.js.map +1 -1
- package/dist/elements/SaveDraft/index.d.ts.map +1 -1
- package/dist/elements/SaveDraft/index.js +3 -1
- package/dist/elements/SaveDraft/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +8 -0
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Tooltip/index.d.ts +4 -0
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +10 -5
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.scss +5 -3
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +8 -7
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +2 -4
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Array/index.scss +0 -4
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +2 -4
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Blocks/index.scss +0 -4
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +1 -3
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Checkbox/index.scss +0 -4
- package/dist/fields/Code/index.js +8 -6
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
- package/dist/fields/ConfirmPassword/index.js +6 -4
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +7 -9
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/DateTime/index.scss +0 -6
- package/dist/fields/Email/index.js +8 -6
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +12 -6
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +4 -2
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +8 -6
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +8 -8
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.scss +0 -4
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +15 -14
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +12 -6
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +8 -6
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Textarea/Input.d.ts.map +1 -1
- package/dist/fields/Textarea/Input.js +8 -6
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +7 -5
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/FieldError/index.js +3 -2
- package/dist/forms/FieldError/index.js.map +1 -1
- package/dist/forms/FieldError/index.scss +1 -2
- package/dist/forms/RenderFields/index.scss +5 -0
- package/dist/hooks/useIntersect.js +1 -1
- package/dist/hooks/useIntersect.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig } from 'payload/types'\n\nimport { isImage } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\nexport const UploadActions = ({ canEdit, showSizePreviews }) => {\n const { t } = useTranslation()\n return (\n <div className={`${baseClass}__file-mutation`}>\n {showSizePreviews && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {canEdit && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </div>\n )\n}\n\nexport type UploadProps = {\n collectionSlug: string\n initialState?: FormState\n onChange?: (file?: File) => void\n updatedAt?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, initialState, onChange, updatedAt, uploadConfig } = props\n\n const submitted = useFormSubmitted()\n const [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { dispatchFormQueryParams, formQueryParams } = useFormQueryParams()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n const [crop, setCrop] = useState({ x: 0, y: 0 })\n\n const handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n setValue(newFile) // Updating the state with the new File object\n }\n }\n\n const handleFileSelection = React.useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n setValue(fileToUpload)\n },\n [setValue],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n setValue(null)\n setFileSrc('')\n }, [setValue])\n\n const onEditsSave = React.useCallback(\n ({ crop, pointPosition }) => {\n setCrop({\n x: crop.x || 0,\n y: crop.y || 0,\n })\n const zoomScale = 100 / Math.min(crop.width, crop.height)\n\n document.documentElement.style.setProperty('--file-details-thumbnail--zoom', `${zoomScale}`)\n document.documentElement.style.setProperty(\n '--file-details-thumbnail--top-offset',\n `${zoomScale * (50 - crop.height / 2 - crop.y)}%`,\n )\n document.documentElement.style.setProperty(\n '--file-details-thumbnail--left-offset',\n `${zoomScale * (50 - crop.width / 2 - crop.x)}%`,\n )\n setModified(true)\n dispatchFormQueryParams({\n type: 'SET',\n params: {\n uploadEdits:\n crop || pointPosition\n ? {\n crop: crop || null,\n focalPoint: pointPosition ? pointPosition : null,\n }\n : null,\n },\n })\n },\n [dispatchFormQueryParams, setModified],\n )\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (value instanceof File) {\n const fileReader = new FileReader()\n fileReader.onload = (e) => {\n const imgSrc = e.target?.result\n\n if (typeof imgSrc === 'string') {\n setFileSrc(imgSrc)\n }\n }\n fileReader.readAsDataURL(value)\n }\n\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }, [value, onChange, updatedAt])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions)\n\n const lastSubmittedTime = submitted ? new Date().toISOString() : null\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n canEdit={showCrop || showFocalPoint}\n collectionSlug={collectionSlug}\n doc={doc}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={lastSubmittedTime}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n />\n )}\n\n {value && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={value.name}\n />\n\n {isImage(value.type) && value.type !== 'image/svg+xml' && (\n <UploadActions\n canEdit={showCrop || showFocalPoint}\n showSizePreviews={hasImageSizes && doc.filename && !replacingFile}\n />\n )}\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n doc={doc || undefined}\n fileName={value?.name || doc?.filename}\n fileSrc={fileSrc || doc?.url}\n imageCacheTag={lastSubmittedTime}\n initialCrop={formQueryParams?.uploadEdits?.crop ?? {}}\n initialFocalPoint={{\n x: formQueryParams?.uploadEdits?.focalPoint.x || 0,\n y: formQueryParams?.uploadEdits?.focalPoint.y || 0,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"names":["isImage","React","useCallback","useEffect","useState","fieldBaseClass","FieldError","useForm","useFormSubmitted","useField","useDocumentInfo","useFormQueryParams","useTranslation","reduceFieldsToValues","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","canEdit","showSizePreviews","t","div","className","slug","Upload","props","collectionSlug","initialState","onChange","updatedAt","uploadConfig","submitted","replacingFile","setReplacingFile","fileSrc","setFileSrc","setModified","dispatchFormQueryParams","formQueryParams","doc","setDoc","docPermissions","errorMessage","setValue","showError","path","crop","setCrop","x","y","handleFileNameChange","e","updatedFileName","target","fileValue","newFile","File","type","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","pointPosition","zoomScale","Math","min","width","height","document","documentElement","style","setProperty","params","uploadEdits","focalPoint","fileReader","FileReader","onload","imgSrc","result","readAsDataURL","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","length","hasResizeOptions","Boolean","resizeOptions","showCrop","showFocalPoint","lastSubmittedTime","Date","toISOString","filter","join","message","filename","handleRemove","imageCacheTag","mimeTypes","Fragment","input","name","buttonStyle","icon","iconStyle","onClick","round","tooltip","Header","fileName","url","initialCrop","initialFocalPoint","onSave","hoverTitle","title","label"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig } from 'payload/types'\n\nimport { isImage } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\nexport const UploadActions = ({ canEdit, showSizePreviews }) => {\n const { t } = useTranslation()\n return (\n <div className={`${baseClass}__file-mutation`}>\n {showSizePreviews && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {canEdit && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </div>\n )\n}\n\nexport type UploadProps = {\n collectionSlug: string\n initialState?: FormState\n onChange?: (file?: File) => void\n updatedAt?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, initialState, onChange, updatedAt, uploadConfig } = props\n\n const submitted = useFormSubmitted()\n const [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { dispatchFormQueryParams, formQueryParams } = useFormQueryParams()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n const [crop, setCrop] = useState({ x: 0, y: 0 })\n\n const handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n setValue(newFile) // Updating the state with the new File object\n }\n }\n\n const handleFileSelection = React.useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n setValue(fileToUpload)\n },\n [setValue],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n setValue(null)\n setFileSrc('')\n }, [setValue])\n\n const onEditsSave = React.useCallback(\n ({ crop, focalPosition }) => {\n setCrop({\n x: crop.x || 0,\n y: crop.y || 0,\n })\n const zoomScale = 100 / Math.min(crop.width, crop.height)\n\n document.documentElement.style.setProperty('--file-details-thumbnail--zoom', `${zoomScale}`)\n document.documentElement.style.setProperty(\n '--file-details-thumbnail--top-offset',\n `${zoomScale * (50 - crop.height / 2 - crop.y)}%`,\n )\n document.documentElement.style.setProperty(\n '--file-details-thumbnail--left-offset',\n `${zoomScale * (50 - crop.width / 2 - crop.x)}%`,\n )\n setModified(true)\n dispatchFormQueryParams({\n type: 'SET',\n params: {\n uploadEdits:\n crop || focalPosition\n ? {\n crop: crop || null,\n focalPoint: focalPosition ? focalPosition : null,\n }\n : null,\n },\n })\n },\n [dispatchFormQueryParams, setModified],\n )\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (value instanceof File) {\n const fileReader = new FileReader()\n fileReader.onload = (e) => {\n const imgSrc = e.target?.result\n\n if (typeof imgSrc === 'string') {\n setFileSrc(imgSrc)\n }\n }\n fileReader.readAsDataURL(value)\n }\n\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }, [value, onChange, updatedAt])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const lastSubmittedTime = submitted ? new Date().toISOString() : null\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n canEdit={showCrop || showFocalPoint}\n collectionSlug={collectionSlug}\n doc={doc}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={lastSubmittedTime}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n />\n )}\n\n {value && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={value.name}\n />\n\n {isImage(value.type) && value.type !== 'image/svg+xml' && (\n <UploadActions\n canEdit={showCrop || showFocalPoint}\n showSizePreviews={hasImageSizes && doc.filename && !replacingFile}\n />\n )}\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={fileSrc || doc?.url}\n imageCacheTag={lastSubmittedTime}\n initialCrop={formQueryParams?.uploadEdits?.crop ?? {}}\n initialFocalPoint={{\n x: formQueryParams?.uploadEdits?.focalPoint.x || doc.focalX || 50,\n y: formQueryParams?.uploadEdits?.focalPoint.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"names":["isImage","React","useCallback","useEffect","useState","fieldBaseClass","FieldError","useForm","useFormSubmitted","useField","useDocumentInfo","useFormQueryParams","useTranslation","reduceFieldsToValues","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","canEdit","showSizePreviews","t","div","className","slug","Upload","props","collectionSlug","initialState","onChange","updatedAt","uploadConfig","submitted","replacingFile","setReplacingFile","fileSrc","setFileSrc","setModified","dispatchFormQueryParams","formQueryParams","doc","setDoc","docPermissions","errorMessage","setValue","showError","path","crop","setCrop","x","y","handleFileNameChange","e","updatedFileName","target","fileValue","newFile","File","type","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","focalPosition","zoomScale","Math","min","width","height","document","documentElement","style","setProperty","params","uploadEdits","focalPoint","fileReader","FileReader","onload","imgSrc","result","readAsDataURL","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","length","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","showCrop","showFocalPoint","lastSubmittedTime","Date","toISOString","filter","join","message","filename","handleRemove","imageCacheTag","mimeTypes","Fragment","input","name","buttonStyle","icon","iconStyle","onClick","round","tooltip","Header","fileName","url","initialCrop","initialFocalPoint","focalX","focalY","onSave","hoverTitle","title","label"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AAGjE,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAsBvD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AAGjE,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAsBvD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoRjD,CAAA;AAED,eAAO,MAAM,UAAU,2BAA6B,CAAA"}
|
|
@@ -173,13 +173,11 @@ export const _ArrayField = (props)=>{
|
|
|
173
173
|
fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`
|
|
174
174
|
].filter(Boolean).join(' '),
|
|
175
175
|
id: `field-${path.replace(/\./g, '__')}`
|
|
176
|
-
}, showError && /*#__PURE__*/ React.createElement(
|
|
177
|
-
className: `${baseClass}__error-wrap`
|
|
178
|
-
}, /*#__PURE__*/ React.createElement(FieldError, {
|
|
176
|
+
}, showError && /*#__PURE__*/ React.createElement(FieldError, {
|
|
179
177
|
CustomError: CustomError,
|
|
180
178
|
path: path,
|
|
181
179
|
...errorProps || {}
|
|
182
|
-
})
|
|
180
|
+
}), /*#__PURE__*/ React.createElement("header", {
|
|
183
181
|
className: `${baseClass}__header`
|
|
184
182
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
185
183
|
className: `${baseClass}__header-wrap`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\nimport type { ArrayField as ArrayFieldType } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.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 { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/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 { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport type ArrayFieldProps = FormFieldBase & {\n CustomRowLabel?: React.ReactNode\n fieldMap: FieldMap\n forceRender?: boolean\n isSortable?: boolean\n labels?: ArrayFieldType['labels']\n maxRows?: ArrayFieldType['maxRows']\n minRows?: ArrayFieldType['minRows']\n name?: string\n permissions: FieldPermissions\n width?: string\n}\n\nexport const _ArrayField: React.FC<ArrayFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n CustomRowLabel,\n className,\n descriptionProps,\n errorProps,\n fieldMap,\n forceRender = false,\n isSortable = true,\n label,\n labelProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n path: pathFromProps,\n permissions,\n readOnly: readOnlyFromProps,\n required,\n validate,\n } = props\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n const minRows = minRowsProp ?? required ? 1 : 0\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: ArrayFieldProps): ArrayFieldType['labels'] => {\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 { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n path,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext || 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 = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 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 && (\n <div className={`${baseClass}__error-wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n </div>\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <FieldLabel\n CustomLabel={CustomLabel}\n as=\"span\"\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </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 <FieldDescription CustomDescription={CustomDescription} {...(descriptionProps || {})} />\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 const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}.`),\n ).length\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n CustomRowLabel={CustomRowLabel}\n addRow={addRow}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fieldMap={fieldMap}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\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 {!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 > 1 ? 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 const ArrayField = withCondition(_ArrayField)\n"],"names":["getTranslation","React","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","ErrorPill","FieldDescription","FieldError","FieldLabel","useFieldProps","useForm","useFormSubmitted","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","fieldBaseClass","ArrayRow","baseClass","_ArrayField","props","name","CustomDescription","CustomError","CustomLabel","CustomRowLabel","className","descriptionProps","errorProps","fieldMap","forceRender","isSortable","label","labelProps","localized","maxRows","minRows","minRowsProp","path","pathFromProps","permissions","readOnly","readOnlyFromProps","required","validate","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","submitted","code","locale","i18n","t","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","undefined","singular","memoizedValidate","value","options","pathFromContext","errorPaths","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","div","filter","Boolean","join","id","replace","header","h3","as","unstyled","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","row","onDragEnd","i","rowErrorCount","errorPath","startsWith","disabled","key","draggableSortableItemProps","errorCount","rowCount","Fragment","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldPermissions } from 'payload/auth'\nimport type { ArrayField as ArrayFieldType } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.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 { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/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 { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport type ArrayFieldProps = FormFieldBase & {\n CustomRowLabel?: React.ReactNode\n fieldMap: FieldMap\n forceRender?: boolean\n isSortable?: boolean\n labels?: ArrayFieldType['labels']\n maxRows?: ArrayFieldType['maxRows']\n minRows?: ArrayFieldType['minRows']\n name?: string\n permissions: FieldPermissions\n width?: string\n}\n\nexport const _ArrayField: React.FC<ArrayFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n CustomRowLabel,\n className,\n descriptionProps,\n errorProps,\n fieldMap,\n forceRender = false,\n isSortable = true,\n label,\n labelProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n path: pathFromProps,\n permissions,\n readOnly: readOnlyFromProps,\n required,\n validate,\n } = props\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n const minRows = minRowsProp ?? required ? 1 : 0\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: ArrayFieldProps): ArrayFieldType['labels'] => {\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 { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n path,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext || 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 = errorPaths.length\n const fieldHasErrors = submitted && errorPaths.length > 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 && <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <FieldLabel\n CustomLabel={CustomLabel}\n as=\"span\"\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </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 <FieldDescription CustomDescription={CustomDescription} {...(descriptionProps || {})} />\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 const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}.`),\n ).length\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n CustomRowLabel={CustomRowLabel}\n addRow={addRow}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fieldMap={fieldMap}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\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 {!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 > 1 ? 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 const ArrayField = withCondition(_ArrayField)\n"],"names":["getTranslation","React","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","ErrorPill","FieldDescription","FieldError","FieldLabel","useFieldProps","useForm","useFormSubmitted","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","fieldBaseClass","ArrayRow","baseClass","_ArrayField","props","name","CustomDescription","CustomError","CustomLabel","CustomRowLabel","className","descriptionProps","errorProps","fieldMap","forceRender","isSortable","label","labelProps","localized","maxRows","minRows","minRowsProp","path","pathFromProps","permissions","readOnly","readOnlyFromProps","required","validate","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","submitted","code","locale","i18n","t","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","undefined","singular","memoizedValidate","value","options","pathFromContext","errorPaths","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","div","filter","Boolean","join","id","replace","header","h3","as","unstyled","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","row","onDragEnd","i","rowErrorCount","errorPath","startsWith","disabled","key","draggableSortableItemProps","errorCount","rowCount","Fragment","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAoBpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAA;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAoBpD,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAA;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,gBAAgB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAkTD,eAAO,MAAM,WAAW,4BAA8B,CAAA"}
|
|
@@ -172,13 +172,11 @@ const _BlocksField = (props)=>{
|
|
|
172
172
|
fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`
|
|
173
173
|
].filter(Boolean).join(' '),
|
|
174
174
|
id: `field-${path.replace(/\./g, '__')}`
|
|
175
|
-
}, showError && /*#__PURE__*/ React.createElement(
|
|
176
|
-
className: `${baseClass}__error-wrap`
|
|
177
|
-
}, /*#__PURE__*/ React.createElement(FieldError, {
|
|
175
|
+
}, showError && /*#__PURE__*/ React.createElement(FieldError, {
|
|
178
176
|
CustomError: CustomError,
|
|
179
177
|
path: path,
|
|
180
178
|
...errorProps || {}
|
|
181
|
-
})
|
|
179
|
+
}), /*#__PURE__*/ React.createElement("header", {
|
|
182
180
|
className: `${baseClass}__header`
|
|
183
181
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
184
182
|
className: `${baseClass}__header-wrap`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\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 { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/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 { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nimport type { FieldPermissions } from 'payload/auth'\nimport type { BlockField } from 'payload/types'\n\nimport type { ReducedBlock } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\n\nexport type BlocksFieldProps = FormFieldBase & {\n blocks?: ReducedBlock[]\n forceRender?: boolean\n isSortable?: boolean\n labels?: BlockField['labels']\n maxRows?: number\n minRows?: number\n name?: string\n permissions: FieldPermissions\n slug?: string\n width?: string\n}\n\nconst _BlocksField: React.FC<BlocksFieldProps> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n blocks,\n className,\n descriptionProps,\n errorProps,\n forceRender = false,\n isSortable = true,\n label,\n labelProps,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n validate,\n } = props\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n const minRows = minRowsProp ?? required ? 1 : 0\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 { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n path,\n permissions,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext || 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 = errorPaths.length\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 && (\n <div className={`${baseClass}__error-wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n </div>\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <FieldLabel\n CustomLabel={CustomLabel}\n as=\"span\"\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </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 <FieldDescription CustomDescription={CustomDescription} {...(descriptionProps || {})} />\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 const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}`),\n ).length\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} 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 errorCount={rowErrorCount}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\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:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\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 const BlocksField = withCondition(_BlocksField)\n"],"names":["getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","useForm","useFormSubmitted","NullifyLocaleField","useField","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","FieldDescription","FieldError","FieldLabel","useFieldProps","withCondition","_BlocksField","props","i18n","t","name","CustomDescription","CustomError","CustomLabel","blocks","className","descriptionProps","errorProps","forceRender","isSortable","label","labelProps","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","path","pathFromProps","readOnly","readOnlyFromProps","required","validate","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","localization","drawerSlug","submitted","plural","singular","editingDefaultLocale","fallback","defaultLocale","memoizedValidate","value","options","pathFromContext","errorPaths","permissions","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","blockType","data","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","div","filter","Boolean","join","id","replace","header","h3","as","unstyled","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","row","onDragEnd","i","blockToRender","find","block","slug","rowErrorCount","errorPath","startsWith","disabled","key","draggableSortableItemProps","errorCount","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\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 { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/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 { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nimport type { FieldPermissions } from 'payload/auth'\nimport type { BlockField } from 'payload/types'\n\nimport type { ReducedBlock } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\n\nexport type BlocksFieldProps = FormFieldBase & {\n blocks?: ReducedBlock[]\n forceRender?: boolean\n isSortable?: boolean\n labels?: BlockField['labels']\n maxRows?: number\n minRows?: number\n name?: string\n permissions: FieldPermissions\n slug?: string\n width?: string\n}\n\nconst _BlocksField: React.FC<BlocksFieldProps> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n blocks,\n className,\n descriptionProps,\n errorProps,\n forceRender = false,\n isSortable = true,\n label,\n labelProps,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n validate,\n } = props\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n const minRows = minRowsProp ?? required ? 1 : 0\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 { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n path,\n permissions,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext || 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 = errorPaths.length\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 && <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <FieldLabel\n CustomLabel={CustomLabel}\n as=\"span\"\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </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 <FieldDescription CustomDescription={CustomDescription} {...(descriptionProps || {})} />\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 const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}`),\n ).length\n return (\n <DraggableSortableItem disabled={readOnly || !isSortable} 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 errorCount={rowErrorCount}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\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:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\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 const BlocksField = withCondition(_BlocksField)\n"],"names":["getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","useForm","useFormSubmitted","NullifyLocaleField","useField","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","FieldDescription","FieldError","FieldLabel","useFieldProps","withCondition","_BlocksField","props","i18n","t","name","CustomDescription","CustomError","CustomLabel","blocks","className","descriptionProps","errorProps","forceRender","isSortable","label","labelProps","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","path","pathFromProps","readOnly","readOnlyFromProps","required","validate","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","localization","drawerSlug","submitted","plural","singular","editingDefaultLocale","fallback","defaultLocale","memoizedValidate","value","options","pathFromContext","errorPaths","permissions","rows","schemaPath","showError","valid","hasRows","addRow","rowIndex","blockType","data","setTimeout","duplicateRow","type","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","setCollapse","rowID","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","div","filter","Boolean","join","id","replace","header","h3","as","unstyled","count","withMessage","ul","li","button","onClick","fieldValue","ids","map","row","onDragEnd","i","blockToRender","find","block","slug","rowErrorCount","errorPath","startsWith","disabled","key","draggableSortableItemProps","errorCount","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAWpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAWpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAA;AAuG5C,eAAO,MAAM,QAAQ,8BAA+B,CAAA"}
|
|
@@ -60,13 +60,11 @@ const CheckboxField = (props)=>{
|
|
|
60
60
|
...style,
|
|
61
61
|
width
|
|
62
62
|
}
|
|
63
|
-
}, /*#__PURE__*/ React.createElement("div", {
|
|
64
|
-
className: `${baseClass}__error-wrap`
|
|
65
63
|
}, /*#__PURE__*/ React.createElement(FieldError, {
|
|
66
64
|
CustomError: CustomError,
|
|
67
65
|
path: path,
|
|
68
66
|
...errorProps || {}
|
|
69
|
-
})
|
|
67
|
+
}), /*#__PURE__*/ React.createElement(CheckboxInput, {
|
|
70
68
|
AfterInput: AfterInput,
|
|
71
69
|
BeforeInput: BeforeInput,
|
|
72
70
|
CustomLabel: CustomLabel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Checkbox/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { CheckboxFieldProps } from './types.js'\n\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nexport { CheckboxFieldProps, CheckboxInput }\n\nconst CheckboxField: React.FC<CheckboxFieldProps> = (props) => {\n const {\n id,\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n checked: checkedFromProps,\n className,\n descriptionProps,\n disableFormData,\n errorProps,\n label,\n labelProps,\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const editDepth = useEditDepth()\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: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField({\n disableFormData,\n path: pathFromContext || 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, editDepth, 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 <
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Checkbox/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { CheckboxFieldProps } from './types.js'\n\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { generateFieldID } from '../../utilities/generateFieldID.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { CheckboxInput } from './Input.js'\nimport './index.scss'\n\nconst baseClass = 'checkbox'\n\nexport { CheckboxFieldProps, CheckboxInput }\n\nconst CheckboxField: React.FC<CheckboxFieldProps> = (props) => {\n const {\n id,\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n checked: checkedFromProps,\n className,\n descriptionProps,\n disableFormData,\n errorProps,\n label,\n labelProps,\n onChange: onChangeFromProps,\n partialChecked,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const editDepth = useEditDepth()\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: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField({\n disableFormData,\n path: pathFromContext || 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, editDepth, 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 <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <CheckboxInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomLabel={CustomLabel}\n checked={checked}\n id={fieldID}\n inputRef={null}\n label={label}\n labelProps={labelProps}\n name={path}\n onToggle={onToggle}\n partialChecked={partialChecked}\n readOnly={readOnly}\n required={required}\n />\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const Checkbox = withCondition(CheckboxField)\n"],"names":["React","useCallback","FieldDescription","FieldError","useFieldProps","useForm","useField","withCondition","useEditDepth","generateFieldID","fieldBaseClass","CheckboxInput","baseClass","CheckboxField","props","id","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","checked","checkedFromProps","className","descriptionProps","disableFormData","errorProps","label","labelProps","onChange","onChangeFromProps","partialChecked","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","width","uuid","editDepth","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","onToggle","Boolean","fieldID","div","filter","join","inputRef","undefined","Checkbox"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,OAAO,QAAQ,8BAA6B;AACrD,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,aAAa,QAAQ,aAAY;AAG1C,MAAMC,YAAY;AAElB,SAA6BD,aAAa,GAAE;AAE5C,MAAME,gBAA8C,CAACC;IACnD,MAAM,EACJC,EAAE,EACFC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAASC,gBAAgB,EACzBC,SAAS,EACTC,gBAAgB,EAChBC,eAAe,EACfC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,UAAUC,iBAAiB,EAC3BC,cAAc,EACdC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAG1B;IAEJ,MAAM,EAAE2B,IAAI,EAAE,GAAGpC;IAEjB,MAAMqC,YAAYlC;IAElB,MAAMmC,mBAAmC1C,YACvC,CAAC2C,OAAOC;QACN,IAAI,OAAON,aAAa,YAAY;YAClC,OAAOA,SAASK,OAAO;gBAAE,GAAGC,OAAO;gBAAER;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEJ,MAAMa,eAAe,EAAEX,UAAUY,mBAAmB,EAAE,GAAG3C;IACjE,MAAM+B,WAAWC,qBAAqBW;IAEtC,MAAM,EAAEd,IAAI,EAAEe,QAAQ,EAAEC,SAAS,EAAEL,KAAK,EAAE,GAAGtC,SAAS;QACpDoB;QACAO,MAAMa,mBAAmBZ,iBAAiBlB;QAC1CuB,UAAUI;IACZ;IAEA,MAAMO,WAAWjD,YAAY;QAC3B,IAAI,CAACkC,UAAU;YACba,SAAS,CAACJ;YACV,IAAI,OAAOb,sBAAsB,YAAYA,kBAAkB,CAACa;QAClE;IACF,GAAG;QAACb;QAAmBI;QAAUa;QAAUJ;KAAM;IAEjD,MAAMtB,UAAUC,oBAAoB4B,QAAQP;IAE5C,MAAMQ,UAAUrC,MAAMN,gBAAgBwB,MAAMS,WAAWD;IAEvD,qBACE,oBAACY;QACC7B,WAAW;YACTd;YACAE;YACAqC,aAAa;YACbzB;YACAoB,SAAS,CAAC,EAAEhC,UAAU,SAAS,CAAC;YAChCuB,YAAY,CAAC,EAAEvB,UAAU,WAAW,CAAC;SACtC,CACE0C,MAAM,CAACH,SACPI,IAAI,CAAC;QACRjB,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACrC;QAAWiB,aAAaA;QAAaa,MAAMA;QAAO,GAAIN,cAAc,CAAC,CAAC;sBACvE,oBAAChB;QACCM,YAAYA;QACZC,aAAaA;QACbG,aAAaA;QACbC,SAASA;QACTP,IAAIqC;QACJI,UAAU;QACV5B,OAAOA;QACPC,YAAYA;QACZb,MAAMiB;QACNiB,UAAUA;QACVlB,gBAAgBA;QAChBG,UAAUA;QACVE,UAAUA;QAEXlB,sBAAsBsC,YACrBtC,kCAEA,oBAACjB,kBAAsBuB,oBAAoB,CAAC;AAIpD;AAEA,OAAO,MAAMiC,WAAWnD,cAAcM,eAAc"}
|
|
@@ -44,16 +44,18 @@ const CodeField = (props)=>{
|
|
|
44
44
|
...style,
|
|
45
45
|
width
|
|
46
46
|
}
|
|
47
|
-
}, /*#__PURE__*/ React.createElement(
|
|
48
|
-
CustomError: CustomError,
|
|
49
|
-
path: path,
|
|
50
|
-
...errorProps || {}
|
|
51
|
-
}), /*#__PURE__*/ React.createElement(FieldLabel, {
|
|
47
|
+
}, /*#__PURE__*/ React.createElement(FieldLabel, {
|
|
52
48
|
CustomLabel: CustomLabel,
|
|
53
49
|
label: label,
|
|
54
50
|
required: required,
|
|
55
51
|
...labelProps || {}
|
|
56
|
-
}), /*#__PURE__*/ React.createElement("div",
|
|
52
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
53
|
+
className: `${fieldBaseClass}__wrap`
|
|
54
|
+
}, /*#__PURE__*/ React.createElement(FieldError, {
|
|
55
|
+
CustomError: CustomError,
|
|
56
|
+
path: path,
|
|
57
|
+
...errorProps || {}
|
|
58
|
+
}), BeforeInput, /*#__PURE__*/ React.createElement(CodeEditor, {
|
|
57
59
|
defaultLanguage: prismToMonacoLanguageMap[language] || language,
|
|
58
60
|
onChange: readOnly ? ()=>null : (val)=>setValue(val),
|
|
59
61
|
options: editorOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Code/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { CodeField as CodeFieldType } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type CodeFieldProps = FormFieldBase & {\n editorOptions?: CodeFieldType['admin']['editorOptions']\n language?: CodeFieldType['admin']['language']\n name?: string\n path?: string\n width: string\n}\n\nconst prismToMonacoLanguageMap = {\n js: 'javascript',\n ts: 'typescript',\n}\n\nconst baseClass = 'code-field'\n\nconst CodeField: React.FC<CodeFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n editorOptions = {},\n errorProps,\n label,\n labelProps,\n language = 'javascript',\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const memoizedValidate = 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: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\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 <
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Code/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { CodeField as CodeFieldType } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { FieldDescription } from '../../forms/FieldDescription/index.js'\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type CodeFieldProps = FormFieldBase & {\n editorOptions?: CodeFieldType['admin']['editorOptions']\n language?: CodeFieldType['admin']['language']\n name?: string\n path?: string\n width: string\n}\n\nconst prismToMonacoLanguageMap = {\n js: 'javascript',\n ts: 'typescript',\n}\n\nconst baseClass = 'code-field'\n\nconst CodeField: React.FC<CodeFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n editorOptions = {},\n errorProps,\n label,\n labelProps,\n language = 'javascript',\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const memoizedValidate = 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: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\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 <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n {BeforeInput}\n <CodeEditor\n defaultLanguage={prismToMonacoLanguageMap[language] || language}\n onChange={readOnly ? () => null : (val) => setValue(val)}\n options={editorOptions}\n readOnly={readOnly}\n value={(value as string) || ''}\n />\n {AfterInput}\n </div>\n {CustomDescription ? CustomDescription : <FieldDescription {...(descriptionProps || {})} />}\n </div>\n )\n}\n\nexport const Code = withCondition(CodeField)\n"],"names":["React","useCallback","CodeEditor","FieldDescription","FieldError","FieldLabel","useFieldProps","useField","withCondition","fieldBaseClass","prismToMonacoLanguageMap","js","ts","baseClass","CodeField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","editorOptions","errorProps","label","labelProps","language","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","width","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","div","filter","Boolean","join","defaultLanguage","onChange","val","Code"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,iDAAiD,GACjD;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,UAAU,QAAQ,qCAAoC;AAC/D,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,0CAAyC;AACvE,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,qBAAoB;AAWnD,MAAMC,2BAA2B;IAC/BC,IAAI;IACJC,IAAI;AACN;AAEA,MAAMC,YAAY;AAElB,MAAMC,YAAsC,CAACC;IAC3C,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,gBAAgB,CAAC,CAAC,EAClBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,WAAW,YAAY,EACvBC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGrB;IAEJ,MAAMsB,mBAAmBpC,YACvB,CAACqC,OAAOC;QACN,IAAI,OAAOJ,aAAa,YAAY;YAClC,OAAOA,SAASG,OAAO;gBAAE,GAAGC,OAAO;gBAAEN;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEJ,MAAMW,eAAe,EAAET,UAAUU,mBAAmB,EAAE,GAAGnC;IACjE,MAAMyB,WAAWC,qBAAqBS;IAEtC,MAAM,EAAEZ,IAAI,EAAEa,QAAQ,EAAEC,SAAS,EAAEL,KAAK,EAAE,GAAG/B,SAAS;QACpDsB,MAAMW,mBAAmBV,iBAAiBd;QAC1CmB,UAAUE;IACZ;IAEA,qBACE,oBAACO;QACCtB,WAAW;YACTb;YACAI;YACAS;YACAqB,aAAa;YACbZ,YAAY;SACb,CACEc,MAAM,CAACC,SACPC,IAAI,CAAC;QACRb,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAAC/B;QACCgB,aAAaA;QACbK,OAAOA;QACPO,UAAUA;QACT,GAAIN,cAAc,CAAC,CAAC;sBAEvB,oBAACiB;QAAItB,WAAW,CAAC,EAAEb,eAAe,MAAM,CAAC;qBACvC,oBAACL;QAAWgB,aAAaA;QAAaS,MAAMA;QAAO,GAAIJ,cAAc,CAAC,CAAC;QACtEP,2BACD,oBAAChB;QACC8C,iBAAiBtC,wBAAwB,CAACkB,SAAS,IAAIA;QACvDqB,UAAUlB,WAAW,IAAM,OAAO,CAACmB,MAAQR,SAASQ;QACpDX,SAASf;QACTO,UAAUA;QACVO,OAAO,AAACA,SAAoB;QAE7BrB,aAEFE,oBAAoBA,kCAAoB,oBAAChB,kBAAsBoB,oBAAoB,CAAC;AAG3F;AAEA,OAAO,MAAM4B,OAAO3C,cAAcM,WAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/ConfirmPassword/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAQ1C,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/ConfirmPassword/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAQ1C,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAsD/D,CAAA"}
|
|
@@ -34,12 +34,14 @@ export const ConfirmPassword = (props)=>{
|
|
|
34
34
|
'confirm-password',
|
|
35
35
|
showError && 'error'
|
|
36
36
|
].filter(Boolean).join(' ')
|
|
37
|
-
}, /*#__PURE__*/ React.createElement(
|
|
38
|
-
path: path
|
|
39
|
-
}), /*#__PURE__*/ React.createElement(FieldLabel, {
|
|
37
|
+
}, /*#__PURE__*/ React.createElement(FieldLabel, {
|
|
40
38
|
htmlFor: "field-confirm-password",
|
|
41
39
|
label: t('authentication:confirmPassword'),
|
|
42
40
|
required: true
|
|
41
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
42
|
+
className: `${fieldBaseClass}__wrap`
|
|
43
|
+
}, /*#__PURE__*/ React.createElement(FieldError, {
|
|
44
|
+
path: path
|
|
43
45
|
}), /*#__PURE__*/ React.createElement("input", {
|
|
44
46
|
autoComplete: "off",
|
|
45
47
|
disabled: !!disabled,
|
|
@@ -48,7 +50,7 @@ export const ConfirmPassword = (props)=>{
|
|
|
48
50
|
onChange: setValue,
|
|
49
51
|
type: "password",
|
|
50
52
|
value: value || ''
|
|
51
|
-
}));
|
|
53
|
+
})));
|
|
52
54
|
};
|
|
53
55
|
|
|
54
56
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/ConfirmPassword/index.tsx"],"sourcesContent":["'use client'\nimport type { FormField } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type ConfirmPasswordFieldProps = {\n disabled?: boolean\n}\n\nexport const ConfirmPassword: React.FC<ConfirmPasswordFieldProps> = (props) => {\n const { disabled } = props\n\n const password = useFormFields<FormField>(([fields]) => fields?.password)\n const { t } = useTranslation()\n\n const validate = useCallback(\n (value: string) => {\n if (!value) {\n return t('validation:required')\n }\n\n if (value === password?.value) {\n return true\n }\n\n return t('fields:passwordsDoNotMatch')\n },\n [password, t],\n )\n\n const path = 'confirm-password'\n\n const { setValue, showError, value } = useField({\n disableFormData: true,\n path,\n validate,\n })\n\n return (\n <div\n className={[fieldBaseClass, 'confirm-password', showError && 'error']\n .filter(Boolean)\n .join(' ')}\n >\n <
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/ConfirmPassword/index.tsx"],"sourcesContent":["'use client'\nimport type { FormField } from 'payload/types'\n\nimport React, { useCallback } from 'react'\n\nimport { FieldError } from '../../forms/FieldError/index.js'\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type ConfirmPasswordFieldProps = {\n disabled?: boolean\n}\n\nexport const ConfirmPassword: React.FC<ConfirmPasswordFieldProps> = (props) => {\n const { disabled } = props\n\n const password = useFormFields<FormField>(([fields]) => fields?.password)\n const { t } = useTranslation()\n\n const validate = useCallback(\n (value: string) => {\n if (!value) {\n return t('validation:required')\n }\n\n if (value === password?.value) {\n return true\n }\n\n return t('fields:passwordsDoNotMatch')\n },\n [password, t],\n )\n\n const path = 'confirm-password'\n\n const { setValue, showError, value } = useField({\n disableFormData: true,\n path,\n validate,\n })\n\n return (\n <div\n className={[fieldBaseClass, 'confirm-password', showError && 'error']\n .filter(Boolean)\n .join(' ')}\n >\n <FieldLabel\n htmlFor=\"field-confirm-password\"\n label={t('authentication:confirmPassword')}\n required\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError path={path} />\n <input\n autoComplete=\"off\"\n disabled={!!disabled}\n id=\"field-confirm-password\"\n name=\"confirm-password\"\n onChange={setValue}\n type=\"password\"\n value={(value as string) || ''}\n />\n </div>\n </div>\n )\n}\n"],"names":["React","useCallback","FieldError","FieldLabel","useFormFields","useField","useTranslation","fieldBaseClass","ConfirmPassword","props","disabled","password","fields","t","validate","value","path","setValue","showError","disableFormData","div","className","filter","Boolean","join","htmlFor","label","required","input","autoComplete","id","name","onChange","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,qBAAoB;AAOnD,OAAO,MAAMC,kBAAuD,CAACC;IACnE,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,MAAME,WAAWP,cAAyB,CAAC,CAACQ,OAAO,GAAKA,QAAQD;IAChE,MAAM,EAAEE,CAAC,EAAE,GAAGP;IAEd,MAAMQ,WAAWb,YACf,CAACc;QACC,IAAI,CAACA,OAAO;YACV,OAAOF,EAAE;QACX;QAEA,IAAIE,UAAUJ,UAAUI,OAAO;YAC7B,OAAO;QACT;QAEA,OAAOF,EAAE;IACX,GACA;QAACF;QAAUE;KAAE;IAGf,MAAMG,OAAO;IAEb,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEH,KAAK,EAAE,GAAGV,SAAS;QAC9Cc,iBAAiB;QACjBH;QACAF;IACF;IAEA,qBACE,oBAACM;QACCC,WAAW;YAACd;YAAgB;YAAoBW,aAAa;SAAQ,CAClEI,MAAM,CAACC,SACPC,IAAI,CAAC;qBAER,oBAACrB;QACCsB,SAAQ;QACRC,OAAOb,EAAE;QACTc,UAAAA;sBAEF,oBAACP;QAAIC,WAAW,CAAC,EAAEd,eAAe,MAAM,CAAC;qBACvC,oBAACL;QAAWc,MAAMA;sBAClB,oBAACY;QACCC,cAAa;QACbnB,UAAU,CAAC,CAACA;QACZoB,IAAG;QACHC,MAAK;QACLC,UAAUf;QACVgB,MAAK;QACLlB,OAAO,AAACA,SAAoB;;AAKtC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTime/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAO1C,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOvD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,MAAM,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTime/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAO1C,OAAO,cAAc,CAAA;AAIrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAOvD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,MAAM,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA0FD,eAAO,MAAM,QAAQ,0BAA+B,CAAA"}
|