@payloadcms/ui 3.59.0-canary.0 → 3.59.0-internal.e247081
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/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +5 -1
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +0 -3
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/TableColumns/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/index.js +0 -1
- package/dist/providers/TableColumns/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAGhB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Array/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAyC,MAAM,OAAO,CAAA;AAiC7D,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,mBAAmB,EAAE,yBAybjC,CAAA;AAED,eAAO,MAAM,UAAU;;;;+EAAqC,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
5
|
-
import React, { Fragment, useCallback } from 'react';
|
|
5
|
+
import React, { Fragment, useCallback, useMemo } from 'react';
|
|
6
6
|
import { toast } from 'sonner';
|
|
7
7
|
import { Banner } from '../../elements/Banner/index.js';
|
|
8
8
|
import { Button } from '../../elements/Button/index.js';
|
|
@@ -26,12 +26,14 @@ import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
|
26
26
|
import { useLocale } from '../../providers/Locale/index.js';
|
|
27
27
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
28
28
|
import { scrollToID } from '../../utilities/scrollToID.js';
|
|
29
|
+
import { mergeFieldStyles } from '../mergeFieldStyles.js';
|
|
29
30
|
import { fieldBaseClass } from '../shared/index.js';
|
|
30
31
|
import { ArrayRow } from './ArrayRow.js';
|
|
31
32
|
import './index.scss';
|
|
32
33
|
const baseClass = 'array-field';
|
|
33
34
|
export const ArrayFieldComponent = props => {
|
|
34
35
|
const {
|
|
36
|
+
field,
|
|
35
37
|
field: {
|
|
36
38
|
name,
|
|
37
39
|
type,
|
|
@@ -283,9 +285,11 @@ export const ArrayFieldComponent = props => {
|
|
|
283
285
|
const fieldHasErrors = submitted && errorPaths.length > 0;
|
|
284
286
|
const showRequired = (readOnly || disabled) && rows.length === 0;
|
|
285
287
|
const showMinRows = rows.length && rows.length < minRows || required && rows.length === 0;
|
|
288
|
+
const styles = useMemo(() => mergeFieldStyles(field), [field]);
|
|
286
289
|
return /*#__PURE__*/_jsxs("div", {
|
|
287
290
|
className: [fieldBaseClass, baseClass, className, fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`].filter(Boolean).join(' '),
|
|
288
291
|
id: `field-${path.replace(/\./g, '__')}`,
|
|
292
|
+
style: styles,
|
|
289
293
|
children: [showError && /*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
290
294
|
CustomComponent: Error,
|
|
291
295
|
Fallback: /*#__PURE__*/_jsx(FieldError, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","_jsxs","filter","Boolean","join","id","replace","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","CustomRowLabel","RowLabel","errorCount","parentPath","rowCount","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.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 const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\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\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\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 removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\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 || disabled) && rows.length === 0\n const showMinRows = (rows.length && 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 <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\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 </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\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((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\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:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"AAAA;;;AAOA,SAASA,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,QAAQ;AAC7C,SAASC,KAAK,QAAQ;AAItB,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,QAAQ;AACvB,SAASC,aAAa,EAAEC,cAAc,QAAQ;AAC9C,SAASC,eAAe,QAAQ;AAChC,SACEC,2BAA2B,EAC3BC,qBAAqB,QAChB;AACP,SAASC,qBAAqB,QAAQ;AACtC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,SAAS,QAAQ;AAC1B,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,UAAU,QAAQ;AAC3B,SAASC,UAAU,QAAQ;AAC3B,SAASC,OAAO,EAAEC,gBAAgB,QAAQ;AAC1C,SAASC,0BAA0B,EAAEC,aAAa,QAAQ;AAC1D,SAASC,kBAAkB,QAAQ;AACnC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,mBAAA,GAAkDC,KAAA;EAC7D,MAAM;IACJC,KAAA,EAAO;MACLC,IAAI;MACJC,IAAI;MACJC,KAAA,EAAO;QAAEC,SAAS;QAAEC,WAAW;QAAEC,UAAA,GAAa;MAAI,CAAE,GAAG,CAAC,CAAC;MACzDC,MAAM;MACNC,KAAK;MACLC,SAAS;MACTC,OAAO;MACPC,OAAA,EAASC,WAAW;MACpBC;IAAQ,CACT;IACDC,WAAA,GAAc,KAAK;IACnBC,IAAA,EAAMC,aAAa;IACnBC,WAAW;IACXC,QAAQ;IACRC,UAAA,EAAYC,mBAAmB;IAC/BC;EAAQ,CACT,GAAGtB,KAAA;EAEJ,MAAMoB,UAAA,GAAaC,mBAAA,IAAuBnB,IAAA;EAE1C,MAAMU,OAAA,GAAUC,WAAC,IAAeC,QAAA,GAAY,IAAI;EAEhD,MAAM;IAAES;EAAsB,CAAE,GAAG/B,eAAA;EACnC,MAAM;IACJgC,WAAW;IACXC,cAAc;IACdC,SAAS;IACTC,YAAY;IACZC,cAAc;IACdC,YAAY;IACZC;EAAW,CACZ,GAAG9C,OAAA;EACJ,MAAM+C,SAAA,GAAY9C,gBAAA;EAClB,MAAM;IAAE+C,IAAA,EAAMC;EAAM,CAAE,GAAGxC,SAAA;EACzB,MAAM;IAAEyC,IAAI;IAAEC;EAAC,CAAE,GAAGzC,cAAA;EAEpB,MAAM;IACJ0C,MAAA,EAAQ;MAAEC;IAAY;EAAE,CACzB,GAAG9C,SAAA;EAEJ,MAAM+C,oBAAA,GAAuB,CAAC;IAC5B,IAAID,YAAA,IAAgBA,YAAA,CAAaE,QAAQ,EAAE;MACzC,MAAMC,aAAA,GAAgBH,YAAA,CAAaG,aAAa;MAChD,OAAOP,MAAA,KAAWO,aAAA;IACpB;IAEA,OAAO;EACT;EAEA;EACA,MAAMC,SAAA,GAAaC,CAAA;IACjB,IAAI,YAAYA,CAAA,IAAKA,CAAA,EAAGC,MAAA,EAAQ;MAC9B,OAAOD,CAAA,CAAEC,MAAM;IACjB;IAEA,IAAI,YAAYD,CAAA,CAAEzC,KAAK,IAAIyC,CAAA,CAAEzC,KAAK,CAAC0C,MAAM,EAAE;MACzC,OAAO;QAAEC,MAAA,EAAQF,CAAA,CAAEzC,KAAK,CAAC0C,MAAM,EAAEC,MAAA;QAAQC,QAAA,EAAUH,CAAA,CAAEzC,KAAK,CAAC0C,MAAM,EAAEE;MAAS;IAC9E;IAEA,IAAI,WAAWH,CAAA,CAAEzC,KAAK,IAAIyC,CAAA,CAAEzC,KAAK,CAACQ,KAAK,EAAE;MACvC,OAAO;QAAEmC,MAAA,EAAQE,SAAA;QAAWD,QAAA,EAAUH,CAAA,CAAEzC,KAAK,CAACQ;MAAM;IACtD;IAEA,OAAO;MAAEmC,MAAA,EAAQT,CAAA,CAAE;MAAiBU,QAAA,EAAUV,CAAA,CAAE;IAAe;EACjE;EAEA,MAAMQ,MAAA,GAASF,SAAA,CAAUzC,KAAA;EAEzB,MAAM+C,gBAAA,GAAmB/E,WAAA,CACvB,CAACgF,KAAA,EAAOC,OAAA;IACN;IACA,IAAI,CAACX,oBAAA,IAAwBU,KAAA,KAAU,MAAM;MAC3C,OAAO;IACT;IAEA,IAAI,OAAO1B,QAAA,KAAa,YAAY;MAClC,OAAOA,QAAA,CAAS0B,KAAA,EAAO;QAAE,GAAGC,OAAO;QAAEtC,OAAA;QAASC,OAAA;QAASE;MAAS;IAClE;EACF,GACA,CAACH,OAAA,EAASC,OAAA,EAASE,QAAA,EAAUQ,QAAA,EAAUgB,oBAAA,CAAqB;EAG9D,MAAM;IACJY,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC,KAAK;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAC7EC,QAAQ;IACRC,UAAU;IACVzC,IAAI;IACJ0C,IAAA,GAAO,EAAE;IACTC,SAAS;IACTC,KAAK;IACLZ,KAAK,EAALA;EAAK,CACN,GAAG3D,QAAA,CAAiB;IACnBwE,OAAA,EAAS;IACTC,oBAAA,EAAsB7C,aAAA;IACtBK,QAAA,EAAUyB;EACZ;EAEA,MAAMgB,MAAA,GAAS/F,WAAA,CACZgG,QAAA;IACCxC,WAAA,CAAY;MACVR,IAAA;MACAgD,QAAA;MACA5C;IACF;IAEA6C,UAAA,CAAW;MACTtE,UAAA,CAAW,GAAGqB,IAAA,QAAYgD,QAAA,EAAU;IACtC,GAAG;EACL,GACA,CAACxC,WAAA,EAAaR,IAAA,EAAMI,UAAA,CAAW;EAGjC,MAAM8C,YAAA,GAAelG,WAAA,CAClBgG,UAAA;IACCvC,cAAA,CAAe;MAAEtB,IAAA,EAAM;MAAiBa,IAAA;MAAMgD,QAAA,EAAAA;IAAS;IAEvDlC,WAAA,CAAY;IAEZmC,UAAA,CAAW;MACTtE,UAAA,CAAW,GAAGqB,IAAA,QAAYgD,UAAA,EAAU;IACtC,GAAG;EACL,GACA,CAACvC,cAAA,EAAgBT,IAAA,EAAMc,WAAA,CAAY;EAGrC,MAAMqC,SAAA,GAAYnG,WAAA,CACfgG,UAAA;IACCpC,cAAA,CAAe;MAAEZ,IAAA;MAAMgD,QAAA,EAAAA;IAAS;EAClC,GACA,CAACpC,cAAA,EAAgBZ,IAAA,CAAK;EAGxB,MAAMoD,OAAA,GAAUpG,WAAA,CACd,CAACqG,aAAA,EAAuBC,WAAA;IACtB3C,YAAA,CAAa;MACX0C,aAAA;MACAC,WAAA;MACAtD;IACF;EACF,GACA,CAACA,IAAA,EAAMW,YAAA,CAAa;EAGtB,MAAM4C,iBAAA,GAAoBvG,WAAA,CACvBwG,SAAA;IACC,MAAM;MAAEC,YAAY;MAAEC;IAAW,CAAE,GAAGvF,aAAA,CAAc;MAClDqF,SAAA;MACAd;IACF;IACAnC,sBAAA,CAAuBP,IAAA,EAAM;MAAEwD,SAAA,EAAWC;IAAa;IACvDhD,cAAA,CAAe;MAAEtB,IAAA,EAAM;MAA0Ba,IAAA;MAAM0D;IAAY;EACrE,GACA,CAACjD,cAAA,EAAgBT,IAAA,EAAM0C,IAAA,EAAMnC,sBAAA,CAAuB;EAGtD,MAAMoD,WAAA,GAAc3G,WAAA,CAClB,CAAC4G,KAAA,EAAeJ,WAAA;IACd,MAAM;MAAEC,YAAY,EAAZA,cAAY;MAAEC,WAAW,EAAXA;IAAW,CAAE,GAAGxF,0BAAA,CAA2B;MAC/DsF,SAAA,EAAAA,WAAA;MACAI,KAAA;MACAlB;IACF;IAEAjC,cAAA,CAAe;MAAEtB,IAAA,EAAM;MAAqBa,IAAA;MAAM0D,WAAA,EAAAA;IAAY;IAC9DnD,sBAAA,CAAuBP,IAAA,EAAM;MAAEwD,SAAA,EAAWC;IAAa;EACzD,GACA,CAAChD,cAAA,EAAgBT,IAAA,EAAM0C,IAAA,EAAMnC,sBAAA,CAAuB;EAGtD,MAAMsD,OAAA,GAAU7G,WAAA,CACbgG,UAAA;IACC,MAAMc,SAAA,GAAY;MAAE,GAAGpD,SAAA;IAAY;IACnC,MAAMqD,eAAA,GAAkB3G,aAAA,CAAc;MACpC+B,IAAA;MACAK,MAAA;MACAwE,aAAA,EAAeA,CAAA,KACbxG,qBAAA,CAAsB;QACpBsG,SAAA;QACA9D,IAAA;QACAgD,QAAA,EAAAA;MACF;MACFhD,IAAA;MACAgD,QAAA,EAAAA,UAAA;MACA7B;IACF;IAEA,IAAI,OAAO4C,eAAA,KAAoB,UAAU;MACvC9G,KAAA,CAAMgH,KAAK,CAACF,eAAA;IACd,OAAO;MACL9G,KAAA,CAAMiH,OAAO,CAAC/C,CAAA,CAAE;IAClB;EACF,GACA,CAAC3B,MAAA,EAAQkB,SAAA,EAAWV,IAAA,EAAMmB,CAAA,EAAGhC,IAAA,CAAK;EAGpC,MAAMgF,QAAA,GAAWnH,WAAA,CACdgG,UAAA;IACC,MAAMc,WAAA,GAAY;MAAE,GAAGpD,SAAA;IAAY;IACnC,MAAM0D,SAAA,GAAY;MAChBC,OAAA,EAAUC,iBAAA;QACR,MAAMC,QAAA,GAAWhH,2BAAA,CAA4B;UAC3C+G,iBAAA;UACAR,SAAA,EAAAA,WAAA;UACA9D,IAAA;UACAgD,QAAA,EAAAA;QACF;QACAnC,YAAA,CAAa0D,QAAA;QACbzD,WAAA,CAAY;MACd;MACAd,IAAA;MACAwE,YAAA,EAAchF,MAAA;MACd2B;IACF;IAEA,MAAM4C,iBAAA,GAAkB1G,cAAA,CAAe+G,SAAA;IAEvC,IAAI,OAAOL,iBAAA,KAAoB,UAAU;MACvC9G,KAAA,CAAMgH,KAAK,CAACF,iBAAA;IACd;EACF,GACA,CAACvE,MAAA,EAAQkB,SAAA,EAAWV,IAAA,EAAMa,YAAA,EAAcC,WAAA,EAAaK,CAAA,CAAE;EAGzD,MAAMsD,UAAA,GAAazH,WAAA,CAChBsH,mBAAA;IACC,MAAMR,WAAA,GAAY;MAAE,GAAGpD,SAAA;IAAY;IACnC,MAAM6D,UAAA,GAAWhH,2BAAA,CAA4B;MAC3C+G,iBAAA,EAAAA,mBAAA;MACAR,SAAA,EAAAA,WAAA;MACA9D;IACF;IACAa,YAAA,CAAa0D,UAAA;IACbzD,WAAA,CAAY;EACd,GACA,CAACJ,SAAA,EAAWV,IAAA,EAAMa,YAAA,EAAcC,WAAA,CAAY;EAG9C,MAAMkD,aAAA,GAAgBhH,WAAA,CACpB,MACEQ,qBAAA,CAAsB;IACpBsG,SAAA,EAAW;MAAE,GAAGpD,SAAA;IAAY;IAC5BV;EACF,IACF,CAACU,SAAA,EAAWV,IAAA,CAAK;EAGnB,MAAM0E,UAAA,GAAa/E,OAAA,IAAW+C,IAAA,CAAKiC,MAAM,IAAIhF,OAAA;EAE7C,MAAMiF,eAAA,GAAkBnC,UAAA,CAAWkC,MAAM;EACzC,MAAME,cAAA,GAAiB9D,SAAA,IAAa0B,UAAA,CAAWkC,MAAM,GAAG;EAExD,MAAMG,YAAA,GAAe,CAAC3E,QAAA,IAAYqC,QAAO,KAAME,IAAA,CAAKiC,MAAM,KAAK;EAC/D,MAAMI,WAAA,GAAcrC,IAAC,CAAKiC,MAAM,IAAIjC,IAAA,CAAKiC,MAAM,GAAG/E,OAAA,IAAaE,QAAA,IAAY4C,IAAA,CAAKiC,MAAM,KAAK;EAE3F,oBACEK,KAAA,CAAC;IACC3F,SAAA,EAAW,CACTT,cAAA,EACAE,SAAA,EACAO,SAAA,EACAwF,cAAA,GAAiB,GAAG/F,SAAA,aAAsB,GAAG,GAAGA,SAAA,gBAAyB,CAC1E,CACEmG,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRC,EAAA,EAAI,SAASpF,IAAA,CAAKqF,OAAO,CAAC,OAAO,OAAO;eAEvC1C,SAAA,iBACC2C,IAAA,CAAC1H,qBAAA;MACC2H,eAAA,EAAiBjD,KAAA;MACjBkD,QAAA,eAAUF,IAAA,CAACxH,UAAA;QAAWkC,IAAA,EAAMA,IAAA;QAAM2C,SAAA,EAAWA;;qBAGjDqC,KAAA,CAAC;MAAO3F,SAAA,EAAW,GAAGP,SAAA,UAAmB;8BACvCkG,KAAA,CAAC;QAAI3F,SAAA,EAAW,GAAGP,SAAA,eAAwB;gCACzCkG,KAAA,CAAC;UAAI3F,SAAA,EAAW,GAAGP,SAAA,kBAA2B;kCAC5CwG,IAAA,CAAC;YAAGjG,SAAA,EAAW,GAAGP,SAAA,SAAkB;sBAClC,aAAAwG,IAAA,CAAC1H,qBAAA;cACC2H,eAAA,EAAiBhD,KAAA;cACjBiD,QAAA,eACEF,IAAA,CAACvH,UAAA;gBACC0H,EAAA,EAAG;gBACHhG,KAAA,EAAOA,KAAA;gBACPC,SAAA,EAAWA,SAAA;gBACXM,IAAA,EAAMA,IAAA;gBACNF,QAAA,EAAUA;;;cAKjB+E,cAAA,IAAkBD,eAAA,GAAkB,kBACnCU,IAAA,CAAC3H,SAAA;YAAU+H,KAAA,EAAOd,eAAA;YAAiB1D,IAAA,EAAMA,IAAA;YAAMyE,WAAW;;yBAG9DX,KAAA,CAAC;UAAG3F,SAAA,EAAW,GAAGP,SAAA,kBAA2B;qBAC1C4D,IAAA,EAAMiC,MAAA,GAAS,kBACdK,KAAA,CAACjI,QAAA;oCACCuI,IAAA,CAAC;wBACC,aAAAA,IAAA,CAAC;gBACCjG,SAAA,EAAW,GAAGP,SAAA,iBAA0B;gBACxC8G,OAAA,EAASA,CAAA,KAAMrC,iBAAA,CAAkB;gBACjCpE,IAAA,EAAK;0BAEJgC,CAAA,CAAE;;6BAGPmE,IAAA,CAAC;wBACC,aAAAA,IAAA,CAAC;gBACCjG,SAAA,EAAW,GAAGP,SAAA,iBAA0B;gBACxC8G,OAAA,EAASA,CAAA,KAAMrC,iBAAA,CAAkB;gBACjCpE,IAAA,EAAK;0BAEJgC,CAAA,CAAE;;;2BAKXmE,IAAA,CAAC;sBACC,aAAAA,IAAA,CAAChI,eAAA;cACCuI,SAAA,EAAWnD,IAAA,EAAMiC,MAAA,GAAS;cAC1BmB,UAAA,EAAY,CAAC3F,QAAA;cACbd,SAAA,EAAW,GAAGP,SAAA,iBAA0B;cACxC0D,QAAA,EAAUA,QAAA;cACVhD,MAAA,EAAQA,MAAA;cACRwE,aAAA,EAAeA,aAAA;cACfK,OAAA,EAASI,UAAA;cACTzE,IAAA,EAAMA,IAAA;cACNb,IAAA,EAAMA;;;;uBAKdmG,IAAA,CAAC1H,qBAAA;QACC2H,eAAA,EAAiBlD,WAAA;QACjBmD,QAAA,eAAUF,IAAA,CAACzH,gBAAA;UAAiByB,WAAA,EAAaA,WAAA;UAAaU,IAAA,EAAMA;;;qBAGhEsF,IAAA,CAAClH,kBAAA;MACC2H,UAAA,EAAY/D,OAAA;MACZtC,SAAA,EAAWA,SAAA;MACXM,IAAA,EAAMA,IAAA;MACNG,QAAA,EAAUA;QAEXiC,WAAA,EACC,CAAAM,IAAA,EAAMiC,MAAA,GAAS,KAAM,CAAC/B,KAAA,KAAUkC,YAAA,IAAgBC,WAAU,CAAE,kBAC5DC,KAAA,CAACtH,iBAAA;MACC2B,SAAA,EAAW,GAAGP,SAAA,kBAA2B;MACzCkH,GAAA,EAAKtD,IAAA,CAAKuD,GAAG,CAAEC,GAAA,IAAQA,GAAA,CAAId,EAAE;MAC7Be,SAAA,EAAWA,CAAC;QAAE9C,aAAa,EAAbA,eAAa;QAAEC,WAAW,EAAXA;MAAW,CAAE,KAAKF,OAAA,CAAQC,eAAA,EAAeC,aAAA;iBAErEZ,IAAA,CAAKuD,GAAG,CAAC,CAACG,OAAA,EAASC,CAAA;QAClB,MAAM;UAAEjB,EAAA,EAAIxB,OAAK;UAAE0C;QAAS,CAAE,GAAGF,OAAA;QAEjC,MAAMG,OAAA,GAAU,GAAGvG,IAAA,IAAQqG,CAAA,EAAG;QAE9B,MAAMG,aAAA,GAAgB/D,UAAA,EAAYwC,MAAA,CAAQwB,SAAA,IACxCA,SAAA,CAAUC,UAAU,CAACH,OAAA,GAAU,MAC/B5B,MAAA;QAEF,oBACEW,IAAA,CAAC7H,qBAAA;UACC+E,QAAA,EAAUrC,QAAA,IAAYqC,QAAA,IAAY,CAACjD,UAAA;UACnC6F,EAAA,EAAIxB,OAAA;oBAGF+C,0BAAA,iBACArB,IAAA,CAACzG,QAAA;YACE,GAAG8H,0BAA0B;YAC9B5D,MAAA,EAAQA,MAAA;YACRc,OAAA,EAASA,OAAA;YACT+C,cAAA,EAAgBlE,IAAA,GAAO2D,CAAA,CAAE,EAAEnE,gBAAA,EAAkB2E,QAAA;YAC7C3D,YAAA,EAAcA,YAAA;YACd4D,UAAA,EAAYN,aAAA;YACZhH,MAAA,EAAQA,MAAA;YACRO,WAAA,EAAaA,WAAA;YACb2E,UAAA,EAAYA,UAAA;YACZ4B,SAAA,EAAWA,SAAA;YACX/G,UAAA,EAAYA,UAAA;YACZoC,MAAA,EAAQA,MAAA;YACRyB,OAAA,EAASA,OAAA;YACT2D,UAAA,EAAY/G,IAAA;YACZmE,QAAA,EAAUA,QAAA;YACVnE,IAAA,EAAMuG,OAAA;YACNrG,WAAA,EAAaA,WAAA;YACbC,QAAA,EAAUA,QAAA,IAAYqC,QAAA;YACtBW,SAAA,EAAWA,SAAA;YACX+C,GAAA,EAAKE,OAAA;YACLY,QAAA,EAAUtE,IAAA,EAAMiC,MAAA;YAChB3B,QAAA,EAAUqD,CAAA;YACVjG,UAAA,EAAYA,UAAA;YACZuD,WAAA,EAAaA;;WA3BZC,OAAA;MAgCX,IACC,CAAChB,KAAA,iBACAoC,KAAA,CAAClI,KAAA,CAAMC,QAAQ;mBACZ+H,YAAA,iBACCQ,IAAA,CAACpI,MAAA;oBACEiE,CAAA,CAAE,yBAAyB;YAAE1B,KAAA,EAAO5C,cAAA,CAAe8E,MAAA,CAAOC,MAAM,EAAEV,IAAA;UAAM;YAG5E6D,WAAA,iBACCO,IAAA,CAACpI,MAAA;UAAOiC,IAAA,EAAK;oBACVgC,CAAA,CAAE,8BAA8B;YAC/BuE,KAAA,EAAO9F,OAAA;YACPH,KAAA,EACE5C,cAAA,CAAe+C,OAAA,GAAU,IAAI+B,MAAA,CAAOC,MAAM,GAAGD,MAAA,CAAOE,QAAQ,EAAEX,IAAA,KAC9DC,CAAA,CAAEvB,OAAA,GAAU,IAAI,iBAAiB;UACrC;;;QAOX,CAAC8E,UAAA,IAAc,CAACvE,QAAA,iBACfmF,IAAA,CAACnI,MAAA;MACC8J,WAAA,EAAY;MACZ5H,SAAA,EAAW,GAAGP,SAAA,WAAoB;MAClC0D,QAAA,EAAUA,QAAA;MACV0E,IAAA,EAAK;MACLC,YAAA,EAAa;MACbC,SAAA,EAAU;MACVxB,OAAA,EAASA,CAAA;QACP,KAAK7C,MAAA,CAAOf,OAAA,IAAS;MACvB;gBAECb,CAAA,CAAE,mBAAmB;QAAE1B,KAAA,EAAO5C,cAAA,CAAe8E,MAAA,CAAOE,QAAQ,EAAEX,IAAA;MAAM;QAGxEiB,UAAA;;AAGP;AAEA,OAAO,MAAMkF,UAAA,GAAa/I,aAAA,CAAcS,mBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","ErrorPill","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","mergeFieldStyles","fieldBaseClass","ArrayRow","baseClass","ArrayFieldComponent","props","field","name","type","admin","className","description","isSortable","fields","label","localized","maxRows","minRows","minRowsProp","required","forceRender","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","submitted","code","locale","i18n","t","config","localization","editingDefaultLocale","fallback","defaultLocale","getLabels","p","labels","plural","singular","undefined","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","formState","clipboardResult","getDataToCopy","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaFields","pasteField","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showRequired","showMinRows","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","rowData","i","isLoading","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","CustomRowLabel","RowLabel","errorCount","parentPath","rowCount","buttonStyle","icon","iconPosition","iconStyle","ArrayField"],"sources":["../../../src/fields/Array/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ArrayFieldClientComponent,\n ArrayFieldClientProps,\n ArrayField as ArrayFieldType,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.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 { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { ArrayRow } from './ArrayRow.js'\nimport './index.scss'\n\nconst baseClass = 'array-field'\n\nexport const ArrayFieldComponent: ArrayFieldClientComponent = (props) => {\n const {\n field,\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n fields,\n label,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const submitted = useFormSubmitted()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const {\n config: { localization },\n } = useConfig()\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n // Handle labeling for Arrays, Global Arrays, and Blocks\n const getLabels = (p: ArrayFieldClientProps): Partial<ArrayFieldType['labels']> => {\n if ('labels' in p && p?.labels) {\n return p.labels\n }\n\n if ('labels' in p.field && p.field.labels) {\n return { plural: p.field.labels?.plural, singular: p.field.labels?.singular }\n }\n\n if ('label' in p.field && p.field.label) {\n return { plural: undefined, singular: p.field.label }\n }\n\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\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number) => {\n addFieldRow({\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n\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 removeFieldRow({ path, rowIndex })\n },\n [removeFieldRow, path],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({\n moveFromIndex,\n moveToIndex,\n path,\n })\n },\n [path, moveFieldRow],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const clipboardResult = clipboardCopy({\n type,\n fields,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState,\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [fields, getFields, path, t, type],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const formState = { ...getFields() }\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaFields: fields,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [fields, getFields, path, replaceState, setModified, t],\n )\n\n const pasteField = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const getDataToCopy = useCallback(\n () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n }),\n [getFields, path],\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 || disabled) && rows.length === 0\n const showMinRows = (rows.length && rows.length < minRows) || (required && rows.length === 0)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\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 style={styles}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h3 className={`${baseClass}__title`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n as=\"span\"\n label={label}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows?.length > 0 && (\n <Fragment>\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 </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n fields={fields}\n getDataToCopy={getDataToCopy}\n onPaste={pasteField}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n <NullifyLocaleField\n fieldValue={value}\n localized={localized}\n path={path}\n readOnly={readOnly}\n />\n {BeforeInput}\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((rowData, i) => {\n const { id: rowID, isLoading } = rowData\n\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths?.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={rowID}\n key={rowID}\n >\n {(draggableSortableItemProps) => (\n <ArrayRow\n {...draggableSortableItemProps}\n addRow={addRow}\n copyRow={copyRow}\n CustomRowLabel={rows?.[i]?.customComponents?.RowLabel}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={fields}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={rowData}\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:rows' : 'general:row'),\n })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && !readOnly && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-row`}\n disabled={disabled}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n void addRow(value || 0)\n }}\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const ArrayField = withCondition(ArrayFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkIxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
|
|
@@ -114,11 +114,8 @@ export const PreferencesProvider = ({
|
|
|
114
114
|
void updatePreference();
|
|
115
115
|
});
|
|
116
116
|
}, [api, getPreference, i18n.language, pendingUpdate, serverURL]);
|
|
117
|
-
// eslint-disable-next-line react-compiler/react-compiler -- TODO: fix
|
|
118
117
|
contextRef.current.getPreference = getPreference;
|
|
119
|
-
// eslint-disable-next-line react-compiler/react-compiler -- TODO: fix
|
|
120
118
|
contextRef.current.setPreference = setPreference;
|
|
121
|
-
// eslint-disable-next-line react-compiler/react-compiler -- TODO: fix
|
|
122
119
|
return /*#__PURE__*/_jsx(Context, {
|
|
123
120
|
value: contextRef.current,
|
|
124
121
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["dequal","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","serverURL","current","getPreference","key","prefs","promise","Promise","resolve","request","get","credentials","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef, serverURL],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, serverURL],\n )\n\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["dequal","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","serverURL","current","getPreference","key","prefs","promise","Promise","resolve","request","get","credentials","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef, serverURL],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, serverURL],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAiB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAM1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAiB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAM1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA+FpE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["transformColumnsToSearchParams","React","startTransition","useCallback","useRef","useConfig","useListQuery","TableColumnContext","useTableColumns","TableColumnsProvider","children","collectionSlug","columnState","columnStateFromProps","LinkedCellOverride","getEntityConfig","query","currentQuery","refineListData","admin","defaultColumns","setOptimisticColumnState","useOptimistic","state","action","contextRef","toggleColumn","column","newColumnState","map","col","accessor","active","columns","moveColumn","args","fromIndex","toIndex","columnToMove","splice","setActiveColumns","forEach","colName","colIndex","findIndex","c","undefined","slice","resetColumnsState","_jsx","value","current"],"sources":["../../../src/providers/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport { type Column } from 'payload'\nimport { transformColumnsToSearchParams } from 'payload/shared'\nimport React, { startTransition, useCallback, useRef } from 'react'\n\nimport type { ITableColumns, TableColumnsProviderProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { TableColumnContext } from './context.js'\n\nexport { useTableColumns } from './context.js'\n\nexport const TableColumnsProvider: React.FC<TableColumnsProviderProps> = ({\n children,\n collectionSlug,\n columnState: columnStateFromProps,\n LinkedCellOverride,\n}) => {\n const { getEntityConfig } = useConfig()\n const { query: currentQuery, refineListData } = useListQuery()\n\n const { admin: { defaultColumns } = {} } = getEntityConfig({\n collectionSlug,\n })\n\n const [columnState, setOptimisticColumnState] = React.useOptimistic(\n columnStateFromProps,\n (state, action: Column[]) => action,\n )\n\n const contextRef = useRef({} as ITableColumns)\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const newColumnState = (columnState || []).map((col) => {\n if (col.accessor === column) {\n return { ...col, active: !col.active }\n }\n return col\n })\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [refineListData, columnState, setOptimisticColumnState],\n )\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n const newColumnState = [...(columnState || [])]\n const [columnToMove] = newColumnState.splice(fromIndex, 1)\n newColumnState.splice(toIndex, 0, columnToMove)\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [columnState, refineListData, setOptimisticColumnState],\n )\n\n const setActiveColumns = useCallback(\n async (columns: string[]) => {\n const newColumnState = currentQuery.columns\n\n columns.forEach((colName) => {\n const colIndex = newColumnState.findIndex((c) => colName === c)\n\n // ensure the name does not begin with a `-` which denotes an inactive column\n if (colIndex !== undefined && newColumnState[colIndex][0] === '-') {\n newColumnState[colIndex] = colName.slice(1)\n }\n })\n\n await refineListData({ columns: newColumnState })\n },\n [currentQuery, refineListData],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await refineListData({ columns: defaultColumns || [] })\n }, [defaultColumns, refineListData])\n\n return (\n <TableColumnContext\n value={{\n columns: columnState,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n toggleColumn,\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["transformColumnsToSearchParams","React","startTransition","useCallback","useRef","useConfig","useListQuery","TableColumnContext","useTableColumns","TableColumnsProvider","children","collectionSlug","columnState","columnStateFromProps","LinkedCellOverride","getEntityConfig","query","currentQuery","refineListData","admin","defaultColumns","setOptimisticColumnState","useOptimistic","state","action","contextRef","toggleColumn","column","newColumnState","map","col","accessor","active","columns","moveColumn","args","fromIndex","toIndex","columnToMove","splice","setActiveColumns","forEach","colName","colIndex","findIndex","c","undefined","slice","resetColumnsState","_jsx","value","current"],"sources":["../../../src/providers/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport { type Column } from 'payload'\nimport { transformColumnsToSearchParams } from 'payload/shared'\nimport React, { startTransition, useCallback, useRef } from 'react'\n\nimport type { ITableColumns, TableColumnsProviderProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { TableColumnContext } from './context.js'\n\nexport { useTableColumns } from './context.js'\n\nexport const TableColumnsProvider: React.FC<TableColumnsProviderProps> = ({\n children,\n collectionSlug,\n columnState: columnStateFromProps,\n LinkedCellOverride,\n}) => {\n const { getEntityConfig } = useConfig()\n const { query: currentQuery, refineListData } = useListQuery()\n\n const { admin: { defaultColumns } = {} } = getEntityConfig({\n collectionSlug,\n })\n\n const [columnState, setOptimisticColumnState] = React.useOptimistic(\n columnStateFromProps,\n (state, action: Column[]) => action,\n )\n\n const contextRef = useRef({} as ITableColumns)\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const newColumnState = (columnState || []).map((col) => {\n if (col.accessor === column) {\n return { ...col, active: !col.active }\n }\n return col\n })\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [refineListData, columnState, setOptimisticColumnState],\n )\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n const newColumnState = [...(columnState || [])]\n const [columnToMove] = newColumnState.splice(fromIndex, 1)\n newColumnState.splice(toIndex, 0, columnToMove)\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [columnState, refineListData, setOptimisticColumnState],\n )\n\n const setActiveColumns = useCallback(\n async (columns: string[]) => {\n const newColumnState = currentQuery.columns\n\n columns.forEach((colName) => {\n const colIndex = newColumnState.findIndex((c) => colName === c)\n\n // ensure the name does not begin with a `-` which denotes an inactive column\n if (colIndex !== undefined && newColumnState[colIndex][0] === '-') {\n newColumnState[colIndex] = colName.slice(1)\n }\n })\n\n await refineListData({ columns: newColumnState })\n },\n [currentQuery, refineListData],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await refineListData({ columns: defaultColumns || [] })\n }, [defaultColumns, refineListData])\n\n return (\n <TableColumnContext\n value={{\n columns: columnState,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n toggleColumn,\n ...contextRef.current,\n }}\n >\n {children}\n </TableColumnContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "3.59.0-
|
|
3
|
+
"version": "3.59.0-internal.e247081",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"ts-essentials": "10.0.3",
|
|
137
137
|
"use-context-selector": "2.0.0",
|
|
138
138
|
"uuid": "10.0.0",
|
|
139
|
-
"@payloadcms/translations": "3.59.0-
|
|
139
|
+
"@payloadcms/translations": "3.59.0-internal.e247081"
|
|
140
140
|
},
|
|
141
141
|
"devDependencies": {
|
|
142
142
|
"@babel/cli": "7.27.2",
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
|
152
152
|
"esbuild": "0.25.5",
|
|
153
153
|
"esbuild-sass-plugin": "3.3.1",
|
|
154
|
-
"
|
|
155
|
-
"
|
|
154
|
+
"payload": "3.59.0-internal.e247081",
|
|
155
|
+
"@payloadcms/eslint-config": "3.28.0"
|
|
156
156
|
},
|
|
157
157
|
"peerDependencies": {
|
|
158
158
|
"next": "^15.2.3",
|
|
159
159
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
160
160
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
161
|
-
"payload": "3.59.0-
|
|
161
|
+
"payload": "3.59.0-internal.e247081"
|
|
162
162
|
},
|
|
163
163
|
"engines": {
|
|
164
164
|
"node": "^18.20.2 || >=20.9.0"
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"build:swc": "swc ./src -d dist --config-file .swcrc --strip-leading-paths",
|
|
175
175
|
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
176
176
|
"build:without_reactcompiler": "rm -rf dist && rm -rf tsconfig.tsbuildinfo && pnpm copyfiles && pnpm build:types && pnpm build:swc",
|
|
177
|
-
"clean": "rimraf -g {dist,*.tsbuildinfo}",
|
|
177
|
+
"clean": "rimraf -g {dist,*.tsbuildinfo,esbuild}",
|
|
178
178
|
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
|
|
179
179
|
"lint": "eslint .",
|
|
180
180
|
"lint:fix": "eslint . --fix"
|