@payloadcms/ui 3.0.0-beta.71 → 3.0.0-beta.72
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/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +4 -2
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +2 -0
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/SortColumn/index.js +4 -4
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +7 -4
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.js +7 -6
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +1 -1
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Array/index.d.ts +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +22 -7
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +20 -7
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.d.ts +1 -0
- package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
- package/dist/fields/ConfirmPassword/index.js +2 -3
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts +13 -2
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +56 -43
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Password/input.d.ts +5 -0
- package/dist/fields/Password/input.d.ts.map +1 -0
- package/dist/fields/Password/input.js +65 -0
- package/dist/fields/Password/input.js.map +1 -0
- package/dist/fields/Password/types.d.ts +27 -0
- package/dist/fields/Password/types.d.ts.map +1 -0
- package/dist/fields/Password/types.js +3 -0
- package/dist/fields/Password/types.js.map +1 -0
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +5 -35
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/rowHelpers.d.ts +17 -0
- package/dist/forms/Form/rowHelpers.d.ts.map +1 -0
- package/dist/forms/Form/rowHelpers.js +24 -0
- package/dist/forms/Form/rowHelpers.js.map +1 -0
- package/dist/forms/Form/types.d.ts +3 -10
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +2 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts +16 -9
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +8 -6
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/index.js +24 -0
- package/dist/utilities/buildFieldSchemaMap/index.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +0 -2
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts +1 -0
- package/dist/utilities/formatAdminURL.d.ts.map +1 -1
- package/dist/utilities/formatAdminURL.js +4 -4
- package/dist/utilities/formatAdminURL.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/ConfirmPassword/index.tsx"],"sourcesContent":["'use client'\nimport type { FormField } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport { useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type ConfirmPasswordFieldProps = {\n disabled?: boolean\n}\n\nexport const ConfirmPasswordField: 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
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/ConfirmPassword/index.tsx"],"sourcesContent":["'use client'\nimport type { FormField } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport { useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type ConfirmPasswordFieldProps = {\n disabled?: boolean\n path?: string\n}\n\nexport const ConfirmPasswordField: React.FC<ConfirmPasswordFieldProps> = (props) => {\n const { disabled, path = 'confirm-password' } = 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 { setValue, showError, value } = useField({\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 aria-label={t('authentication:confirmPassword')}\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","useFormFields","useField","useTranslation","FieldError","FieldLabel","fieldBaseClass","ConfirmPasswordField","props","disabled","path","password","fields","t","validate","value","setValue","showError","div","className","filter","Boolean","join","htmlFor","label","required","input","aria-label","autoComplete","id","name","onChange","type"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,OAAO,eAAc;AAOrB,OAAO,MAAMC,uBAA4D,CAACC;IACxE,MAAM,EAAEC,QAAQ,EAAEC,OAAO,kBAAkB,EAAE,GAAGF;IAEhD,MAAMG,WAAWV,cAAyB,CAAC,CAACW,OAAO,GAAKA,QAAQD;IAChE,MAAM,EAAEE,CAAC,EAAE,GAAGV;IAEd,MAAMW,WAAWd,YACf,CAACe;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,MAAM,EAAEG,QAAQ,EAAEC,SAAS,EAAEF,KAAK,EAAE,GAAGb,SAAS;QAC9CQ;QACAI;IACF;IAEA,qBACE,MAACI;QACCC,WAAW;YAACb;YAAgB;YAAoBW,aAAa;SAAQ,CAClEG,MAAM,CAACC,SACPC,IAAI,CAAC;;0BAER,KAACjB;gBACCkB,SAAQ;gBACRC,OAAOX,EAAE;gBACTY,QAAQ;;0BAEV,MAACP;gBAAIC,WAAW,CAAC,EAAEb,eAAe,MAAM,CAAC;;kCACvC,KAACF;wBAAWM,MAAMA;;kCAClB,KAACgB;wBACCC,cAAYd,EAAE;wBACde,cAAa;wBACbnB,UAAU,CAAC,CAACA;wBACZoB,IAAG;wBACHC,MAAK;wBACLC,UAAUf;wBACVgB,MAAK;wBACLjB,OAAO,AAACA,SAAoB;;;;;;AAKtC,EAAC"}
|
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
import type { Description,
|
|
1
|
+
import type { Description, Validate } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import './index.scss';
|
|
4
4
|
export type PasswordFieldProps = {
|
|
5
|
+
AfterInput?: React.ReactElement;
|
|
6
|
+
BeforeInput?: React.ReactElement;
|
|
7
|
+
CustomDescription?: React.ReactElement;
|
|
8
|
+
CustomError?: React.ReactElement;
|
|
9
|
+
CustomLabel?: React.ReactElement;
|
|
5
10
|
autoComplete?: string;
|
|
6
11
|
className?: string;
|
|
7
12
|
description?: Description;
|
|
8
13
|
disabled?: boolean;
|
|
14
|
+
errorProps?: any;
|
|
15
|
+
inputRef?: React.RefObject<HTMLInputElement>;
|
|
16
|
+
label?: string;
|
|
17
|
+
labelProps?: any;
|
|
9
18
|
name: string;
|
|
10
19
|
path?: string;
|
|
20
|
+
placeholder?: string;
|
|
11
21
|
required?: boolean;
|
|
22
|
+
rtl?: boolean;
|
|
12
23
|
style?: React.CSSProperties;
|
|
13
24
|
validate?: Validate;
|
|
14
25
|
width?: string;
|
|
15
|
-
}
|
|
26
|
+
};
|
|
16
27
|
export declare const PasswordField: React.FC<PasswordFieldProps>;
|
|
17
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAkB,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIpF,OAAO,KAAsB,MAAM,OAAO,CAAA;AAK1C,OAAO,cAAc,CAAA;AAGrB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,iBAAiB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAiGD,eAAO,MAAM,aAAa,8BAAwC,CAAA"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useConfig, useLocale, useTranslation } from '@payloadcms/ui';
|
|
4
|
+
import { password } from 'payload/shared';
|
|
3
5
|
import React, { useCallback } from 'react';
|
|
4
6
|
import { useField } from '../../forms/useField/index.js';
|
|
5
7
|
import { withCondition } from '../../forms/withCondition/index.js';
|
|
6
|
-
import {
|
|
7
|
-
import { FieldLabel } from '../FieldLabel/index.js';
|
|
8
|
-
import { fieldBaseClass } from '../shared/index.js';
|
|
8
|
+
import { isFieldRTL } from '../shared/index.js';
|
|
9
9
|
import './index.scss';
|
|
10
|
+
import { PasswordInput } from './input.js';
|
|
10
11
|
const PasswordFieldComponent = (props)=>{
|
|
11
|
-
const { name, CustomError, CustomLabel, autoComplete, className, disabled: disabledFromProps, errorProps, label, labelProps, path: pathFromProps, required, style, validate, width } = props;
|
|
12
|
+
const { name, AfterInput, BeforeInput, CustomDescription, CustomError, CustomLabel, autoComplete, className, disabled: disabledFromProps, errorProps, inputRef, label, labelProps, path: pathFromProps, placeholder, required, rtl, style, validate, width } = props;
|
|
13
|
+
const { t } = useTranslation();
|
|
14
|
+
const locale = useLocale();
|
|
15
|
+
const config = useConfig();
|
|
12
16
|
const memoizedValidate = useCallback((value, options)=>{
|
|
13
17
|
if (typeof validate === 'function') {
|
|
14
18
|
return validate(value, {
|
|
@@ -16,8 +20,26 @@ const PasswordFieldComponent = (props)=>{
|
|
|
16
20
|
required
|
|
17
21
|
});
|
|
18
22
|
}
|
|
23
|
+
return password(value, {
|
|
24
|
+
name: 'password',
|
|
25
|
+
type: 'text',
|
|
26
|
+
data: {},
|
|
27
|
+
preferences: {
|
|
28
|
+
fields: {}
|
|
29
|
+
},
|
|
30
|
+
req: {
|
|
31
|
+
payload: {
|
|
32
|
+
config
|
|
33
|
+
},
|
|
34
|
+
t
|
|
35
|
+
},
|
|
36
|
+
required: true,
|
|
37
|
+
siblingData: {}
|
|
38
|
+
});
|
|
19
39
|
}, [
|
|
20
40
|
validate,
|
|
41
|
+
config,
|
|
42
|
+
t,
|
|
21
43
|
required
|
|
22
44
|
]);
|
|
23
45
|
const { formInitializing, formProcessing, path, setValue, showError, value } = useField({
|
|
@@ -25,45 +47,36 @@ const PasswordFieldComponent = (props)=>{
|
|
|
25
47
|
validate: memoizedValidate
|
|
26
48
|
});
|
|
27
49
|
const disabled = disabledFromProps || formInitializing || formProcessing;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
50
|
+
const renderRTL = isFieldRTL({
|
|
51
|
+
fieldLocalized: false,
|
|
52
|
+
fieldRTL: rtl,
|
|
53
|
+
locale,
|
|
54
|
+
localizationConfig: config.localization || undefined
|
|
55
|
+
});
|
|
56
|
+
return /*#__PURE__*/ _jsx(PasswordInput, {
|
|
57
|
+
AfterInput: AfterInput,
|
|
58
|
+
BeforeInput: BeforeInput,
|
|
59
|
+
CustomDescription: CustomDescription,
|
|
60
|
+
CustomError: CustomError,
|
|
61
|
+
CustomLabel: CustomLabel,
|
|
62
|
+
autoComplete: autoComplete,
|
|
63
|
+
className: className,
|
|
64
|
+
errorProps: errorProps,
|
|
65
|
+
inputRef: inputRef,
|
|
66
|
+
label: label,
|
|
67
|
+
labelProps: labelProps,
|
|
68
|
+
onChange: (e)=>{
|
|
69
|
+
setValue(e.target.value);
|
|
39
70
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
children: [
|
|
50
|
-
/*#__PURE__*/ _jsx(FieldError, {
|
|
51
|
-
CustomError: CustomError,
|
|
52
|
-
path: path,
|
|
53
|
-
...errorProps || {}
|
|
54
|
-
}),
|
|
55
|
-
/*#__PURE__*/ _jsx("input", {
|
|
56
|
-
autoComplete: autoComplete,
|
|
57
|
-
disabled: disabled,
|
|
58
|
-
id: `field-${path.replace(/\./g, '__')}`,
|
|
59
|
-
name: path,
|
|
60
|
-
onChange: setValue,
|
|
61
|
-
type: "password",
|
|
62
|
-
value: value || ''
|
|
63
|
-
})
|
|
64
|
-
]
|
|
65
|
-
})
|
|
66
|
-
]
|
|
71
|
+
path: path,
|
|
72
|
+
placeholder: placeholder,
|
|
73
|
+
readOnly: disabled,
|
|
74
|
+
required: required,
|
|
75
|
+
rtl: renderRTL,
|
|
76
|
+
showError: showError,
|
|
77
|
+
style: style,
|
|
78
|
+
value: value || '',
|
|
79
|
+
width: width
|
|
67
80
|
});
|
|
68
81
|
};
|
|
69
82
|
export const PasswordField = withCondition(PasswordFieldComponent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Description,
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Description, PayloadRequest, Validate } from 'payload'\n\nimport { useConfig, useLocale, useTranslation } from '@payloadcms/ui'\nimport { password } from 'payload/shared'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport './index.scss'\nimport { PasswordInput } from './input.js'\n\nexport type PasswordFieldProps = {\n AfterInput?: React.ReactElement\n BeforeInput?: React.ReactElement\n CustomDescription?: React.ReactElement\n CustomError?: React.ReactElement\n CustomLabel?: React.ReactElement\n autoComplete?: string\n className?: string\n description?: Description\n disabled?: boolean\n errorProps?: any // unknown type\n inputRef?: React.RefObject<HTMLInputElement>\n label?: string\n labelProps?: any // unknown type\n name: string\n path?: string\n placeholder?: string\n required?: boolean\n rtl?: boolean\n style?: React.CSSProperties\n validate?: Validate\n width?: string\n}\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n autoComplete,\n className,\n disabled: disabledFromProps,\n errorProps,\n inputRef,\n label,\n labelProps,\n path: pathFromProps,\n placeholder,\n required,\n rtl,\n style,\n validate,\n width,\n } = props\n\n const { t } = useTranslation()\n const locale = useLocale()\n const config = useConfig()\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n\n return password(value, {\n name: 'password',\n type: 'text',\n data: {},\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as PayloadRequest,\n required: true,\n siblingData: {},\n })\n },\n [validate, config, t, required],\n )\n\n const { formInitializing, formProcessing, path, setValue, showError, value } = useField({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const disabled = disabledFromProps || formInitializing || formProcessing\n\n const renderRTL = isFieldRTL({\n fieldLocalized: false,\n fieldRTL: rtl,\n locale,\n localizationConfig: config.localization || undefined,\n })\n\n return (\n <PasswordInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n CustomDescription={CustomDescription}\n CustomError={CustomError}\n CustomLabel={CustomLabel}\n autoComplete={autoComplete}\n className={className}\n errorProps={errorProps}\n inputRef={inputRef}\n label={label}\n labelProps={labelProps}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={placeholder}\n readOnly={disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={style}\n value={(value as string) || ''}\n width={width}\n />\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n"],"names":["useConfig","useLocale","useTranslation","password","React","useCallback","useField","withCondition","isFieldRTL","PasswordInput","PasswordFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","autoComplete","className","disabled","disabledFromProps","errorProps","inputRef","label","labelProps","path","pathFromProps","placeholder","required","rtl","style","validate","width","t","locale","config","memoizedValidate","value","options","type","data","preferences","fields","req","payload","siblingData","formInitializing","formProcessing","setValue","showError","renderRTL","fieldLocalized","fieldRTL","localizationConfig","localization","undefined","onChange","e","target","readOnly","PasswordField"],"mappings":"AAAA;;AAGA,SAASA,SAAS,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AACrE,SAASC,QAAQ,QAAQ,iBAAgB;AACzC,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,OAAO,eAAc;AACrB,SAASC,aAAa,QAAQ,aAAY;AA0B1C,MAAMC,yBAAuD,CAACC;IAC5D,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,UAAUC,iBAAiB,EAC3BC,UAAU,EACVC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,WAAW,EACXC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGtB;IAEJ,MAAM,EAAEuB,CAAC,EAAE,GAAGhC;IACd,MAAMiC,SAASlC;IACf,MAAMmC,SAASpC;IAEf,MAAMqC,mBAAmChC,YACvC,CAACiC,OAAOC;QACN,IAAI,OAAOP,aAAa,YAAY;YAClC,OAAOA,SAASM,OAAO;gBAAE,GAAGC,OAAO;gBAAEV;YAAS;QAChD;QAEA,OAAO1B,SAASmC,OAAO;YACrB1B,MAAM;YACN4B,MAAM;YACNC,MAAM,CAAC;YACPC,aAAa;gBAAEC,QAAQ,CAAC;YAAE;YAC1BC,KAAK;gBACHC,SAAS;oBACPT;gBACF;gBACAF;YACF;YACAL,UAAU;YACViB,aAAa,CAAC;QAChB;IACF,GACA;QAACd;QAAUI;QAAQF;QAAGL;KAAS;IAGjC,MAAM,EAAEkB,gBAAgB,EAAEC,cAAc,EAAEtB,IAAI,EAAEuB,QAAQ,EAAEC,SAAS,EAAEZ,KAAK,EAAE,GAAGhC,SAAS;QACtFoB,MAAMC,iBAAiBf;QACvBoB,UAAUK;IACZ;IAEA,MAAMjB,WAAWC,qBAAqB0B,oBAAoBC;IAE1D,MAAMG,YAAY3C,WAAW;QAC3B4C,gBAAgB;QAChBC,UAAUvB;QACVK;QACAmB,oBAAoBlB,OAAOmB,YAAY,IAAIC;IAC7C;IAEA,qBACE,KAAC/C;QACCI,YAAYA;QACZC,aAAaA;QACbC,mBAAmBA;QACnBC,aAAaA;QACbC,aAAaA;QACbC,cAAcA;QACdC,WAAWA;QACXG,YAAYA;QACZC,UAAUA;QACVC,OAAOA;QACPC,YAAYA;QACZgC,UAAU,CAACC;YACTT,SAASS,EAAEC,MAAM,CAACrB,KAAK;QACzB;QACAZ,MAAMA;QACNE,aAAaA;QACbgC,UAAUxC;QACVS,UAAUA;QACVC,KAAKqB;QACLD,WAAWA;QACXnB,OAAOA;QACPO,OAAO,AAACA,SAAoB;QAC5BL,OAAOA;;AAGb;AAEA,OAAO,MAAM4B,gBAAgBtD,cAAcG,wBAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/input.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyEtD,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { FieldError } from '../FieldError/index.js';
|
|
5
|
+
import { FieldLabel } from '../FieldLabel/index.js';
|
|
6
|
+
import { fieldBaseClass } from '../shared/index.js';
|
|
7
|
+
import './index.scss';
|
|
8
|
+
export const PasswordInput = (props)=>{
|
|
9
|
+
const { AfterInput, BeforeInput, CustomDescription, CustomError, CustomLabel, autoComplete = 'off', className, errorProps, inputRef, label, labelProps, onChange, onKeyDown, path, placeholder, readOnly, required, rtl, showError, style, value, width } = props;
|
|
10
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
11
|
+
className: [
|
|
12
|
+
fieldBaseClass,
|
|
13
|
+
'password',
|
|
14
|
+
className,
|
|
15
|
+
showError && 'error',
|
|
16
|
+
readOnly && 'read-only'
|
|
17
|
+
].filter(Boolean).join(' '),
|
|
18
|
+
style: {
|
|
19
|
+
...style,
|
|
20
|
+
width
|
|
21
|
+
},
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ _jsx(FieldLabel, {
|
|
24
|
+
CustomLabel: CustomLabel,
|
|
25
|
+
htmlFor: `field-${path.replace(/\./g, '__')}`,
|
|
26
|
+
label: label,
|
|
27
|
+
required: required,
|
|
28
|
+
...labelProps || {}
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
31
|
+
className: `${fieldBaseClass}__wrap`,
|
|
32
|
+
children: [
|
|
33
|
+
/*#__PURE__*/ _jsx(FieldError, {
|
|
34
|
+
CustomError: CustomError,
|
|
35
|
+
path: path,
|
|
36
|
+
...errorProps || {}
|
|
37
|
+
}),
|
|
38
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
39
|
+
children: [
|
|
40
|
+
BeforeInput !== undefined && BeforeInput,
|
|
41
|
+
/*#__PURE__*/ _jsx("input", {
|
|
42
|
+
"aria-label": label,
|
|
43
|
+
autoComplete: autoComplete,
|
|
44
|
+
"data-rtl": rtl,
|
|
45
|
+
disabled: readOnly,
|
|
46
|
+
id: `field-${path.replace(/\./g, '__')}`,
|
|
47
|
+
name: path,
|
|
48
|
+
onChange: onChange,
|
|
49
|
+
onKeyDown: onKeyDown,
|
|
50
|
+
placeholder: placeholder,
|
|
51
|
+
ref: inputRef,
|
|
52
|
+
type: "password",
|
|
53
|
+
value: value || ''
|
|
54
|
+
}),
|
|
55
|
+
AfterInput !== undefined && AfterInput
|
|
56
|
+
]
|
|
57
|
+
}),
|
|
58
|
+
CustomDescription !== undefined && CustomDescription
|
|
59
|
+
]
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Password/input.tsx"],"sourcesContent":["'use client'\nimport type { ChangeEvent } from 'react'\n\nimport React from 'react'\n\nimport type { PasswordInputProps } from './types.js'\n\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const PasswordInput: React.FC<PasswordInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n autoComplete = 'off',\n className,\n errorProps,\n inputRef,\n label,\n labelProps,\n onChange,\n onKeyDown,\n path,\n placeholder,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n width,\n } = props\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'password',\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 htmlFor={`field-${path.replace(/\\./g, '__')}`}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <div>\n {BeforeInput !== undefined && BeforeInput}\n <input\n aria-label={label}\n autoComplete={autoComplete}\n data-rtl={rtl}\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={onChange as (e: ChangeEvent<HTMLInputElement>) => void}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n ref={inputRef}\n type=\"password\"\n value={value || ''}\n />\n {AfterInput !== undefined && AfterInput}\n </div>\n {CustomDescription !== undefined && CustomDescription}\n </div>\n </div>\n )\n}\n"],"names":["React","FieldError","FieldLabel","fieldBaseClass","PasswordInput","props","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","autoComplete","className","errorProps","inputRef","label","labelProps","onChange","onKeyDown","path","placeholder","readOnly","required","rtl","showError","style","value","width","div","filter","Boolean","join","htmlFor","replace","undefined","input","aria-label","data-rtl","disabled","id","name","ref","type"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAIzB,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,cAAc,QAAQ,qBAAoB;AACnD,OAAO,eAAc;AAErB,OAAO,MAAMC,gBAA8C,CAACC;IAC1D,MAAM,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,eAAe,KAAK,EACpBC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,QAAQ,EACRC,QAAQ,EACRC,GAAG,EACHC,SAAS,EACTC,KAAK,EACLC,KAAK,EACLC,KAAK,EACN,GAAGtB;IAEJ,qBACE,MAACuB;QACChB,WAAW;YACTT;YACA;YACAS;YACAY,aAAa;YACbH,YAAY;SACb,CACEQ,MAAM,CAACC,SACPC,IAAI,CAAC;QACRN,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;;0BAEA,KAACzB;gBACCQ,aAAaA;gBACbsB,SAAS,CAAC,MAAM,EAAEb,KAAKc,OAAO,CAAC,OAAO,MAAM,CAAC;gBAC7ClB,OAAOA;gBACPO,UAAUA;gBACT,GAAIN,cAAc,CAAC,CAAC;;0BAEvB,MAACY;gBAAIhB,WAAW,CAAC,EAAET,eAAe,MAAM,CAAC;;kCACvC,KAACF;wBAAWQ,aAAaA;wBAAaU,MAAMA;wBAAO,GAAIN,cAAc,CAAC,CAAC;;kCACvE,MAACe;;4BACErB,gBAAgB2B,aAAa3B;0CAC9B,KAAC4B;gCACCC,cAAYrB;gCACZJ,cAAcA;gCACd0B,YAAUd;gCACVe,UAAUjB;gCACVkB,IAAI,CAAC,MAAM,EAAEpB,KAAKc,OAAO,CAAC,OAAO,MAAM,CAAC;gCACxCO,MAAMrB;gCACNF,UAAUA;gCACVC,WAAWA;gCACXE,aAAaA;gCACbqB,KAAK3B;gCACL4B,MAAK;gCACLhB,OAAOA,SAAS;;4BAEjBpB,eAAe4B,aAAa5B;;;oBAE9BE,sBAAsB0B,aAAa1B;;;;;AAI5C,EAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ErrorProps, LabelProps } from 'payload';
|
|
2
|
+
import type { ChangeEvent } from 'react';
|
|
3
|
+
export type PasswordInputProps = {
|
|
4
|
+
AfterInput?: React.ReactElement;
|
|
5
|
+
BeforeInput?: React.ReactElement;
|
|
6
|
+
CustomDescription?: React.ReactElement;
|
|
7
|
+
CustomError?: React.ReactElement;
|
|
8
|
+
CustomLabel?: React.ReactElement;
|
|
9
|
+
autoComplete?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
errorProps: ErrorProps;
|
|
12
|
+
inputRef?: React.RefObject<HTMLInputElement>;
|
|
13
|
+
label: string;
|
|
14
|
+
labelProps: LabelProps;
|
|
15
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
16
|
+
onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
|
|
17
|
+
path: string;
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
required?: boolean;
|
|
21
|
+
rtl?: boolean;
|
|
22
|
+
showError?: boolean;
|
|
23
|
+
style?: React.CSSProperties;
|
|
24
|
+
value?: string;
|
|
25
|
+
width?: string;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACxC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,iBAAiB,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/Password/types.ts"],"sourcesContent":["import type { ErrorProps, LabelProps } from 'payload'\nimport type { ChangeEvent } from 'react'\nexport type PasswordInputProps = {\n AfterInput?: React.ReactElement\n BeforeInput?: React.ReactElement\n CustomDescription?: React.ReactElement\n CustomError?: React.ReactElement\n CustomLabel?: React.ReactElement\n autoComplete?: string\n className?: string\n errorProps: ErrorProps\n inputRef?: React.RefObject<HTMLInputElement>\n label: string\n labelProps: LabelProps\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n path: string\n placeholder?: string\n readOnly?: boolean\n required?: boolean\n rtl?: boolean\n showError?: boolean\n style?: React.CSSProperties\n value?: string\n width?: string\n}\n"],"names":[],"mappings":"AAEA,WAuBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"fieldReducer.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/fieldReducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,SAAS,EAAO,MAAM,SAAS,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAoU7E"}
|
|
@@ -269,54 +269,24 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
|
269
269
|
}
|
|
270
270
|
case 'SET_ROW_COLLAPSED':
|
|
271
271
|
{
|
|
272
|
-
const {
|
|
273
|
-
const arrayState = state[path];
|
|
274
|
-
const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce((acc, row, index)=>{
|
|
275
|
-
const isMatchingRow = row.id === rowID;
|
|
276
|
-
if (isMatchingRow) acc.matchedIndex = index;
|
|
277
|
-
if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id);
|
|
278
|
-
else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id);
|
|
279
|
-
return acc;
|
|
280
|
-
}, {
|
|
281
|
-
collapsedRowIDs: [],
|
|
282
|
-
matchedIndex: undefined
|
|
283
|
-
});
|
|
284
|
-
if (matchedIndex > -1) {
|
|
285
|
-
arrayState.rows[matchedIndex].collapsed = collapsed;
|
|
286
|
-
setDocFieldPreferences(path, {
|
|
287
|
-
collapsed: collapsedRowIDs
|
|
288
|
-
});
|
|
289
|
-
}
|
|
272
|
+
const { path, updatedRows } = action;
|
|
290
273
|
const newState = {
|
|
291
274
|
...state,
|
|
292
275
|
[path]: {
|
|
293
|
-
...
|
|
276
|
+
...state[path],
|
|
277
|
+
rows: updatedRows
|
|
294
278
|
}
|
|
295
279
|
};
|
|
296
280
|
return newState;
|
|
297
281
|
}
|
|
298
282
|
case 'SET_ALL_ROWS_COLLAPSED':
|
|
299
283
|
{
|
|
300
|
-
const {
|
|
301
|
-
const { collapsedRowIDs, rows } = state[path].rows.reduce((acc, row)=>{
|
|
302
|
-
if (collapsed) acc.collapsedRowIDs.push(row.id);
|
|
303
|
-
acc.rows.push({
|
|
304
|
-
...row,
|
|
305
|
-
collapsed
|
|
306
|
-
});
|
|
307
|
-
return acc;
|
|
308
|
-
}, {
|
|
309
|
-
collapsedRowIDs: [],
|
|
310
|
-
rows: []
|
|
311
|
-
});
|
|
312
|
-
setDocFieldPreferences(path, {
|
|
313
|
-
collapsed: collapsedRowIDs
|
|
314
|
-
});
|
|
284
|
+
const { path, updatedRows } = action;
|
|
315
285
|
return {
|
|
316
286
|
...state,
|
|
317
287
|
[path]: {
|
|
318
288
|
...state[path],
|
|
319
|
-
rows
|
|
289
|
+
rows: updatedRows
|
|
320
290
|
}
|
|
321
291
|
};
|
|
322
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObject, deepCopyObjectSimple } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { collapsed, path, rowID, setDocFieldPreferences } = action\n\n const arrayState = state[path]\n\n const { collapsedRowIDs, matchedIndex } = state[path].rows.reduce(\n (acc, row, index) => {\n const isMatchingRow = row.id === rowID\n if (isMatchingRow) acc.matchedIndex = index\n\n if (!isMatchingRow && row.collapsed) acc.collapsedRowIDs.push(row.id)\n else if (isMatchingRow && collapsed) acc.collapsedRowIDs.push(row.id)\n\n return acc\n },\n {\n collapsedRowIDs: [],\n matchedIndex: undefined,\n },\n )\n\n if (matchedIndex > -1) {\n arrayState.rows[matchedIndex].collapsed = collapsed\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n }\n\n const newState = {\n ...state,\n [path]: {\n ...arrayState,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { collapsed, path, setDocFieldPreferences } = action\n\n const { collapsedRowIDs, rows } = state[path].rows.reduce(\n (acc, row) => {\n if (collapsed) acc.collapsedRowIDs.push(row.id)\n\n acc.rows.push({\n ...row,\n collapsed,\n })\n\n return acc\n },\n {\n collapsedRowIDs: [],\n rows: [],\n },\n )\n\n setDocFieldPreferences(path, { collapsed: collapsedRowIDs })\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","dequal","deepCopyObject","deepCopyObjectSimple","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","rowID","setDocFieldPreferences","arrayState","collapsedRowIDs","matchedIndex","row","index","isMatchingRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/fieldReducer.ts"],"sourcesContent":["import type { FormField, FormState, Row } from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { deepCopyObject, deepCopyObjectSimple } from 'payload/shared'\n\nimport type { FieldAction } from './types.js'\n\nimport { flattenRows, separateRows } from './rows.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\n/**\n * Reducer which modifies the form field state (all the current data of the fields in the form). When called using dispatch, it will return a new state object.\n */\nexport function fieldReducer(state: FormState, action: FieldAction): FormState {\n switch (action.type) {\n case 'REPLACE_STATE': {\n if (action.optimize !== false) {\n // Only update fields that have changed\n // by comparing old value / initialValue to new\n // ..\n // This is a performance enhancement for saving\n // large documents with hundreds of fields\n const newState = {}\n\n Object.entries(action.state).forEach(([path, field]) => {\n const oldField = state[path]\n const newField = field\n\n if (!dequal(oldField, newField)) {\n newState[path] = newField\n } else if (oldField) {\n newState[path] = oldField\n }\n })\n return newState\n }\n // If we're not optimizing, just set the state to the new state\n return action.state\n }\n\n case 'REMOVE': {\n const newState = { ...state }\n if (newState[action.path]) delete newState[action.path]\n return newState\n }\n\n case 'ADD_SERVER_ERRORS': {\n let newState = { ...state }\n\n const errorPaths: { fieldErrorPath: string; parentPath: string }[] = []\n\n action.errors.forEach(({ field, message }) => {\n newState[field] = {\n ...(newState[field] || {\n initialValue: null,\n value: null,\n }),\n errorMessage: message,\n valid: false,\n }\n\n const segments = field.split('.')\n if (segments.length > 1) {\n errorPaths.push({\n fieldErrorPath: field,\n parentPath: segments.slice(0, segments.length - 1).join('.'),\n })\n }\n })\n\n newState = Object.entries(newState).reduce((acc, [path, fieldState]) => {\n const fieldErrorPaths = errorPaths.reduce((errorACC, { fieldErrorPath, parentPath }) => {\n if (parentPath.startsWith(path)) {\n errorACC.push(fieldErrorPath)\n }\n return errorACC\n }, [])\n\n let changed = false\n\n if (fieldErrorPaths.length > 0) {\n const newErrorPaths = Array.isArray(fieldState.errorPaths) ? fieldState.errorPaths : []\n\n fieldErrorPaths.forEach((fieldErrorPath) => {\n if (!newErrorPaths.includes(fieldErrorPath)) {\n newErrorPaths.push(fieldErrorPath)\n changed = true\n }\n })\n\n if (changed) {\n acc[path] = {\n ...fieldState,\n errorPaths: newErrorPaths,\n }\n }\n }\n\n if (!changed) {\n acc[path] = fieldState\n }\n\n return acc\n }, {})\n\n return newState\n }\n\n case 'UPDATE': {\n const newField = Object.entries(action).reduce(\n (field, [key, value]) => {\n if (\n [\n 'disableFormData',\n 'errorMessage',\n 'initialValue',\n 'rows',\n 'valid',\n 'validate',\n 'value',\n ].includes(key)\n ) {\n return {\n ...field,\n [key]: value,\n }\n }\n\n return field\n },\n state[action.path] || ({} as FormField),\n )\n\n const newState = {\n ...state,\n [action.path]: newField,\n }\n\n return newState\n }\n\n case 'REMOVE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path]?.rows || [])]\n\n rows.splice(rowIndex, 1)\n rowsMetadata.splice(rowIndex, 1)\n\n const newState: FormState = {\n ...remainingFields,\n [path]: {\n ...state[path],\n disableFormData: rows.length > 0,\n rows: rowsMetadata,\n value: rows.length,\n },\n ...flattenRows(path, rows),\n }\n\n return newState\n }\n\n case 'ADD_ROW': {\n const { blockType, path, rowIndex: rowIndexFromArgs, subFieldState = {} } = action\n\n const rowIndex =\n typeof rowIndexFromArgs === 'number' ? rowIndexFromArgs : state[path]?.rows?.length || 0\n\n const withNewRow = [...(state[path]?.rows || [])]\n\n const newRow: Row = {\n id: (subFieldState?.id?.value as string) || new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n withNewRow.splice(rowIndex, 0, newRow)\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // add new row to array _field state_\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n siblingRows.splice(rowIndex, 0, subFieldState)\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: withNewRow,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'REPLACE_ROW': {\n const { blockType, path, rowIndex: rowIndexArg, subFieldState = {} } = action\n\n const { remainingFields, rows: siblingRows } = separateRows(path, state)\n const rowIndex = Math.max(0, Math.min(rowIndexArg, siblingRows?.length - 1 || 0))\n\n const rowsMetadata = [...(state[path]?.rows || [])]\n rowsMetadata[rowIndex] = {\n id: new ObjectId().toHexString(),\n blockType: blockType || undefined,\n collapsed: false,\n }\n\n if (blockType) {\n subFieldState.blockType = {\n initialValue: blockType,\n valid: true,\n value: blockType,\n }\n }\n\n // replace form _field state_\n siblingRows[rowIndex] = subFieldState\n\n const newState: FormState = {\n ...remainingFields,\n ...flattenRows(path, siblingRows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: siblingRows.length,\n },\n }\n\n return newState\n }\n\n case 'DUPLICATE_ROW': {\n const { path, rowIndex } = action\n const { remainingFields, rows } = separateRows(path, state)\n const rowsMetadata = [...(state[path].rows || [])]\n\n const duplicateRowMetadata = deepCopyObjectSimple(rowsMetadata[rowIndex])\n if (duplicateRowMetadata.id) duplicateRowMetadata.id = new ObjectId().toHexString()\n\n const duplicateRowState = deepCopyObject(rows[rowIndex])\n if (duplicateRowState.id) {\n duplicateRowState.id.value = new ObjectId().toHexString()\n duplicateRowState.id.initialValue = new ObjectId().toHexString()\n }\n\n // If there are subfields\n if (Object.keys(duplicateRowState).length > 0) {\n // Add new object containing subfield names to unflattenedRows array\n rows.splice(rowIndex + 1, 0, duplicateRowState)\n rowsMetadata.splice(rowIndex + 1, 0, duplicateRowMetadata)\n }\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n disableFormData: true,\n rows: rowsMetadata,\n value: rows.length,\n },\n }\n\n return newState\n }\n\n case 'MOVE_ROW': {\n const { moveFromIndex, moveToIndex, path } = action\n const { remainingFields, rows } = separateRows(path, state)\n\n // copy the row to move\n const copyOfMovingRow = rows[moveFromIndex]\n // delete the row by index\n rows.splice(moveFromIndex, 1)\n // insert row copyOfMovingRow back in\n rows.splice(moveToIndex, 0, copyOfMovingRow)\n\n // modify array/block internal row state (i.e. collapsed, blockType)\n const rowStateCopy = [...(state[path]?.rows || [])]\n const movingRowState = { ...rowStateCopy[moveFromIndex] }\n rowStateCopy.splice(moveFromIndex, 1)\n rowStateCopy.splice(moveToIndex, 0, movingRowState)\n\n const newState = {\n ...remainingFields,\n ...flattenRows(path, rows),\n [path]: {\n ...state[path],\n rows: rowStateCopy,\n },\n }\n\n return newState\n }\n\n case 'SET_ROW_COLLAPSED': {\n const { path, updatedRows } = action\n\n const newState = {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n\n return newState\n }\n\n case 'SET_ALL_ROWS_COLLAPSED': {\n const { path, updatedRows } = action\n\n return {\n ...state,\n [path]: {\n ...state[path],\n rows: updatedRows,\n },\n }\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["ObjectIdImport","dequal","deepCopyObject","deepCopyObjectSimple","flattenRows","separateRows","ObjectId","default","fieldReducer","state","action","type","optimize","newState","Object","entries","forEach","path","field","oldField","newField","errorPaths","errors","message","initialValue","value","errorMessage","valid","segments","split","length","push","fieldErrorPath","parentPath","slice","join","reduce","acc","fieldState","fieldErrorPaths","errorACC","startsWith","changed","newErrorPaths","Array","isArray","includes","key","rowIndex","remainingFields","rows","rowsMetadata","splice","disableFormData","blockType","rowIndexFromArgs","subFieldState","withNewRow","newRow","id","toHexString","undefined","collapsed","siblingRows","rowIndexArg","Math","max","min","duplicateRowMetadata","duplicateRowState","keys","moveFromIndex","moveToIndex","copyOfMovingRow","rowStateCopy","movingRowState","updatedRows"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Row } from 'payload';
|
|
2
|
+
export declare const extractRowsAndCollapsedIDs: ({ collapsed, rowID, rows, }: {
|
|
3
|
+
collapsed: boolean;
|
|
4
|
+
rowID: string;
|
|
5
|
+
rows: Row[];
|
|
6
|
+
}) => {
|
|
7
|
+
collapsedIDs: string[];
|
|
8
|
+
updatedRows: Row[];
|
|
9
|
+
};
|
|
10
|
+
export declare const toggleAllRows: ({ collapsed, rows, }: {
|
|
11
|
+
collapsed: any;
|
|
12
|
+
rows: any;
|
|
13
|
+
}) => {
|
|
14
|
+
collapsedIDs: string[];
|
|
15
|
+
updatedRows: Row[];
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=rowHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowHelpers.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/rowHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAElC,eAAO,MAAM,0BAA0B,gCAIpC;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ,KAAG;IACF,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,GAAG,EAAE,CAAA;CAcnB,CAAA;AAED,eAAO,MAAM,aAAa;;;MAGtB;IACF,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,GAAG,EAAE,CAAA;CAcnB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const extractRowsAndCollapsedIDs = ({ collapsed, rowID, rows })=>{
|
|
2
|
+
return rows.reduce((acc, row)=>{
|
|
3
|
+
if (rowID === row.id) row.collapsed = collapsed;
|
|
4
|
+
if (row.collapsed) acc.collapsedIDs.push(row.id);
|
|
5
|
+
acc.updatedRows.push(row);
|
|
6
|
+
return acc;
|
|
7
|
+
}, {
|
|
8
|
+
collapsedIDs: [],
|
|
9
|
+
updatedRows: []
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
export const toggleAllRows = ({ collapsed, rows })=>{
|
|
13
|
+
return rows.reduce((acc, row)=>{
|
|
14
|
+
row.collapsed = collapsed;
|
|
15
|
+
if (collapsed) acc.collapsedIDs.push(row.id);
|
|
16
|
+
acc.updatedRows.push(row);
|
|
17
|
+
return acc;
|
|
18
|
+
}, {
|
|
19
|
+
collapsedIDs: [],
|
|
20
|
+
updatedRows: []
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=rowHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/Form/rowHelpers.ts"],"sourcesContent":["import type { Row } from 'payload'\n\nexport const extractRowsAndCollapsedIDs = ({\n collapsed,\n rowID,\n rows,\n}: {\n collapsed: boolean\n rowID: string\n rows: Row[]\n}): {\n collapsedIDs: string[]\n updatedRows: Row[]\n} => {\n return rows.reduce(\n (acc, row) => {\n if (rowID === row.id) row.collapsed = collapsed\n if (row.collapsed) acc.collapsedIDs.push(row.id)\n acc.updatedRows.push(row)\n return acc\n },\n {\n collapsedIDs: [],\n updatedRows: [],\n },\n )\n}\n\nexport const toggleAllRows = ({\n collapsed,\n rows,\n}): {\n collapsedIDs: string[]\n updatedRows: Row[]\n} => {\n return rows.reduce(\n (acc, row) => {\n row.collapsed = collapsed\n if (collapsed) acc.collapsedIDs.push(row.id)\n acc.updatedRows.push(row)\n return acc\n },\n {\n collapsedIDs: [],\n updatedRows: [],\n },\n )\n}\n"],"names":["extractRowsAndCollapsedIDs","collapsed","rowID","rows","reduce","acc","row","id","collapsedIDs","push","updatedRows","toggleAllRows"],"mappings":"AAEA,OAAO,MAAMA,6BAA6B,CAAC,EACzCC,SAAS,EACTC,KAAK,EACLC,IAAI,EAKL;IAIC,OAAOA,KAAKC,MAAM,CAChB,CAACC,KAAKC;QACJ,IAAIJ,UAAUI,IAAIC,EAAE,EAAED,IAAIL,SAAS,GAAGA;QACtC,IAAIK,IAAIL,SAAS,EAAEI,IAAIG,YAAY,CAACC,IAAI,CAACH,IAAIC,EAAE;QAC/CF,IAAIK,WAAW,CAACD,IAAI,CAACH;QACrB,OAAOD;IACT,GACA;QACEG,cAAc,EAAE;QAChBE,aAAa,EAAE;IACjB;AAEJ,EAAC;AAED,OAAO,MAAMC,gBAAgB,CAAC,EAC5BV,SAAS,EACTE,IAAI,EACL;IAIC,OAAOA,KAAKC,MAAM,CAChB,CAACC,KAAKC;QACJA,IAAIL,SAAS,GAAGA;QAChB,IAAIA,WAAWI,IAAIG,YAAY,CAACC,IAAI,CAACH,IAAIC,EAAE;QAC3CF,IAAIK,WAAW,CAACD,IAAI,CAACH;QACrB,OAAOD;IACT,GACA;QACEG,cAAc,EAAE;QAChBE,aAAa,EAAE;IACjB;AAEJ,EAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Data, Field, FormField, FormState, User } from 'payload';
|
|
1
|
+
import type { Data, Field, FormField, FormState, Row, User } from 'payload';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { Dispatch } from 'react';
|
|
4
4
|
export type Preferences = {
|
|
@@ -119,21 +119,14 @@ export type ADD_SERVER_ERRORS = {
|
|
|
119
119
|
type: 'ADD_SERVER_ERRORS';
|
|
120
120
|
};
|
|
121
121
|
export type SET_ROW_COLLAPSED = {
|
|
122
|
-
collapsed: boolean;
|
|
123
122
|
path: string;
|
|
124
|
-
rowID: string;
|
|
125
|
-
setDocFieldPreferences: (field: string, fieldPreferences: {
|
|
126
|
-
[key: string]: unknown;
|
|
127
|
-
}) => void;
|
|
128
123
|
type: 'SET_ROW_COLLAPSED';
|
|
124
|
+
updatedRows: Row[];
|
|
129
125
|
};
|
|
130
126
|
export type SET_ALL_ROWS_COLLAPSED = {
|
|
131
|
-
collapsed: boolean;
|
|
132
127
|
path: string;
|
|
133
|
-
setDocFieldPreferences: (field: string, fieldPreferences: {
|
|
134
|
-
[key: string]: unknown;
|
|
135
|
-
}) => void;
|
|
136
128
|
type: 'SET_ALL_ROWS_COLLAPSED';
|
|
129
|
+
updatedRows: Row[];
|
|
137
130
|
};
|
|
138
131
|
export type FieldAction = ADD_ROW | ADD_SERVER_ERRORS | DUPLICATE_ROW | MODIFY_CONDITION | MOVE_ROW | REMOVE | REMOVE_ROW | REPLACE_ROW | REPLACE_STATE | SET_ALL_ROWS_COLLAPSED | SET_ROW_COLLAPSED | UPDATE;
|
|
139
132
|
export type FormFieldsContext = [FormState, Dispatch<FieldAction>];
|