Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
14 KiB
Plaintext
1 line
14 KiB
Plaintext
{"version":3,"file":"BlockRow.js","names":["c","_c","getTranslation","React","Collapsible","ErrorPill","Pill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","RowActions","SectionTitle","baseClass","BlockRow","t0","$","addRow","attributes","block","blocks","copyRow","duplicateRow","errorCount","fields","hasMaxRows","isLoading","isLoadingFromProps","isSortable","Label","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","i18n","hasSubmitted","fieldHasErrors","showBlockName","admin","disableBlockName","t1","t2","filter","Boolean","classNames","join","t3","slug","blockType","collapsed","id","blockPermissions","permissionsBlockSpecific","hasReadPermission","read","missingCreateOrUpdate","create","update","hasRestrictiveStructure","Object","keys","length","t4","_jsx","split","ref","style","children","actions","className","collapsibleStyle","dragHandleProps","undefined","header","height","width","_jsxs","CustomComponent","label","_Fragment","String","padStart","pillStyle","size","singular","count","withMessage","onToggle","margins","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${rowIndex}`}\n ref={setNodeRef}\n style={{\n transform,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]} |