@payloadcms/ui 3.41.0-canary.1 → 3.41.0-internal.72eae46
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/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +36 -50
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts +1 -0
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +2 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/EmailAndUsername/index.d.ts.map +1 -1
- package/dist/elements/EmailAndUsername/index.js +3 -0
- package/dist/elements/EmailAndUsername/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-7N7BMHRP.js → CodeEditor-Z3ZZJH7C.js} +2 -2
- package/dist/exports/client/{DatePicker-4DPXLCID.js → DatePicker-JDD2RARJ.js} +2 -2
- package/dist/exports/client/chunk-CNCOIY3Y.js +26 -0
- package/dist/exports/client/{chunk-QPA2ZA5J.js.map → chunk-CNCOIY3Y.js.map} +3 -3
- package/dist/exports/client/{chunk-OA4JPMVI.js → chunk-L7Q3DZ67.js} +2 -2
- package/dist/exports/client/{chunk-OA4JPMVI.js.map → chunk-L7Q3DZ67.js.map} +3 -3
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +4 -4
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +118 -112
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +2 -2
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +26 -23
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +4 -0
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +4 -1
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +1 -2
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/providers/Config/index.d.ts.map +1 -1
- package/dist/providers/Config/index.js +12 -6
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +2 -2
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/TableColumns/index.js +4 -2
- package/dist/providers/TableColumns/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/views/Edit/index.d.ts +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +2 -0
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +17 -14
- package/dist/exports/client/chunk-QPA2ZA5J.js +0 -26
- /package/dist/exports/client/{CodeEditor-7N7BMHRP.js.map → CodeEditor-Z3ZZJH7C.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-4DPXLCID.js.map → DatePicker-JDD2RARJ.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/Input.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAShD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/Input.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAShD,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0J9C,CAAA"}
|
|
@@ -13,7 +13,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
|
|
|
13
13
|
import { fieldBaseClass } from '../shared/index.js';
|
|
14
14
|
import './index.scss';
|
|
15
15
|
export const TextInput = props => {
|
|
16
|
-
const $ = _c(
|
|
16
|
+
const $ = _c(32);
|
|
17
17
|
const {
|
|
18
18
|
AfterInput,
|
|
19
19
|
BeforeInput,
|
|
@@ -22,6 +22,7 @@ export const TextInput = props => {
|
|
|
22
22
|
description,
|
|
23
23
|
Error,
|
|
24
24
|
hasMany,
|
|
25
|
+
htmlAttributes,
|
|
25
26
|
inputRef,
|
|
26
27
|
Label,
|
|
27
28
|
label,
|
|
@@ -60,7 +61,7 @@ export const TextInput = props => {
|
|
|
60
61
|
}
|
|
61
62
|
const t4 = t3.join(" ");
|
|
62
63
|
let t5;
|
|
63
|
-
if ($[5] !== AfterInput || $[6] !== BeforeInput || $[7] !== Description || $[8] !== Error || $[9] !== Label || $[10] !== description || $[11] !== hasMany || $[12] !==
|
|
64
|
+
if ($[5] !== AfterInput || $[6] !== BeforeInput || $[7] !== Description || $[8] !== Error || $[9] !== Label || $[10] !== description || $[11] !== hasMany || $[12] !== htmlAttributes || $[13] !== i18n || $[14] !== inputRef || $[15] !== label || $[16] !== localized || $[17] !== maxRows || $[18] !== onChange || $[19] !== onKeyDown || $[20] !== path || $[21] !== placeholder || $[22] !== readOnly || $[23] !== required || $[24] !== rtl || $[25] !== showError || $[26] !== style || $[27] !== t || $[28] !== t4 || $[29] !== value || $[30] !== valueToRender) {
|
|
64
65
|
t5 = _jsxs("div", {
|
|
65
66
|
className: t4,
|
|
66
67
|
style,
|
|
@@ -120,7 +121,8 @@ export const TextInput = props => {
|
|
|
120
121
|
placeholder: getTranslation(placeholder, i18n),
|
|
121
122
|
ref: inputRef,
|
|
122
123
|
type: "text",
|
|
123
|
-
value: value || ""
|
|
124
|
+
value: value || "",
|
|
125
|
+
...(htmlAttributes ?? {})
|
|
124
126
|
}), AfterInput, _jsx(RenderCustomComponent, {
|
|
125
127
|
CustomComponent: Description,
|
|
126
128
|
Fallback: _jsx(FieldDescription, {
|
|
@@ -137,27 +139,28 @@ export const TextInput = props => {
|
|
|
137
139
|
$[9] = Label;
|
|
138
140
|
$[10] = description;
|
|
139
141
|
$[11] = hasMany;
|
|
140
|
-
$[12] =
|
|
141
|
-
$[13] =
|
|
142
|
-
$[14] =
|
|
143
|
-
$[15] =
|
|
144
|
-
$[16] =
|
|
145
|
-
$[17] =
|
|
146
|
-
$[18] =
|
|
147
|
-
$[19] =
|
|
148
|
-
$[20] =
|
|
149
|
-
$[21] =
|
|
150
|
-
$[22] =
|
|
151
|
-
$[23] =
|
|
152
|
-
$[24] =
|
|
153
|
-
$[25] =
|
|
154
|
-
$[26] =
|
|
155
|
-
$[27] =
|
|
156
|
-
$[28] =
|
|
157
|
-
$[29] =
|
|
158
|
-
$[30] =
|
|
142
|
+
$[12] = htmlAttributes;
|
|
143
|
+
$[13] = i18n;
|
|
144
|
+
$[14] = inputRef;
|
|
145
|
+
$[15] = label;
|
|
146
|
+
$[16] = localized;
|
|
147
|
+
$[17] = maxRows;
|
|
148
|
+
$[18] = onChange;
|
|
149
|
+
$[19] = onKeyDown;
|
|
150
|
+
$[20] = path;
|
|
151
|
+
$[21] = placeholder;
|
|
152
|
+
$[22] = readOnly;
|
|
153
|
+
$[23] = required;
|
|
154
|
+
$[24] = rtl;
|
|
155
|
+
$[25] = showError;
|
|
156
|
+
$[26] = style;
|
|
157
|
+
$[27] = t;
|
|
158
|
+
$[28] = t4;
|
|
159
|
+
$[29] = value;
|
|
160
|
+
$[30] = valueToRender;
|
|
161
|
+
$[31] = t5;
|
|
159
162
|
} else {
|
|
160
|
-
t5 = $[
|
|
163
|
+
t5 = $[31];
|
|
161
164
|
}
|
|
162
165
|
return t5;
|
|
163
166
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","names":["c","_c","getTranslation","React","ReactSelect","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useTranslation","fieldBaseClass","TextInput","props","$","AfterInput","BeforeInput","className","Description","description","Error","hasMany","inputRef","Label","label","localized","maxRows","onChange","onKeyDown","path","placeholder","readOnly","required","rtl","showError","style","value","valueToRender","i18n","t","editableProps","_temp2","t0","t1","t2","t3","filter","Boolean","t4","join","t5","_jsxs","children","_jsx","CustomComponent","Fallback","replace","components","DropdownIndicator","customProps","disabled","filterOption","Array","isArray","length","isClearable","isCreatable","isMulti","isSortable","menuIsOpen","noOptionsMessage","isOverHasMany","max","options","id","name","ref","type","_temp","event","currentTarget","contentEditable","data","className_0","selectProps","editableClassName","onBlur","onClick","event_0","classList","add","focus","event_1","key","remove","innerText","replaceAll","action","option","newValues","v","removedValue","preventDefault","stopPropagation"],"sources":["../../../src/fields/Text/Input.tsx"],"sourcesContent":["'use client'\nimport type { ChangeEvent } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/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 { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n className,\n Description,\n description,\n Error,\n hasMany,\n inputRef,\n Label,\n label,\n localized,\n maxRows,\n onChange,\n onKeyDown,\n path,\n placeholder,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n valueToRender,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editableProps: ReactSelectAdapterProps['customProps']['editableProps'] = (\n data,\n className,\n selectProps,\n ) => {\n const editableClassName = `${className}--editable`\n\n return {\n onBlur: (event: React.FocusEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'false'\n },\n onClick: (event: React.MouseEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'true'\n event.currentTarget.classList.add(editableClassName)\n event.currentTarget.focus()\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === 'Tab' || event.key === 'Escape') {\n event.currentTarget.contentEditable = 'false'\n event.currentTarget.classList.remove(editableClassName)\n data.value.value = event.currentTarget.innerText\n data.label = event.currentTarget.innerText\n\n if (data.value.value.replaceAll('\\n', '')) {\n selectProps.onChange(selectProps.value, {\n action: 'create-option',\n option: data,\n })\n } else {\n if (Array.isArray(selectProps.value)) {\n const newValues = selectProps.value.filter((v) => v.id !== data.id)\n selectProps.onChange(newValues, {\n action: 'pop-value',\n removedValue: data,\n })\n }\n }\n\n event.preventDefault()\n }\n event.stopPropagation()\n },\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'text',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n components={{ DropdownIndicator: null }}\n customProps={{\n editableProps,\n }}\n disabled={readOnly}\n // prevent adding additional options if maxRows is reached\n filterOption={() =>\n !maxRows ? true : !(Array.isArray(value) && maxRows && value.length >= maxRows)\n }\n isClearable={false}\n isCreatable\n isMulti\n isSortable\n menuIsOpen={false}\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n onChange={onChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender}\n />\n ) : (\n <input\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={getTranslation(placeholder, i18n)}\n ref={inputRef}\n type=\"text\"\n value={value || ''}\n />\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Input.js","names":["c","_c","getTranslation","React","ReactSelect","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useTranslation","fieldBaseClass","TextInput","props","$","AfterInput","BeforeInput","className","Description","description","Error","hasMany","htmlAttributes","inputRef","Label","label","localized","maxRows","onChange","onKeyDown","path","placeholder","readOnly","required","rtl","showError","style","value","valueToRender","i18n","t","editableProps","_temp2","t0","t1","t2","t3","filter","Boolean","t4","join","t5","_jsxs","children","_jsx","CustomComponent","Fallback","replace","components","DropdownIndicator","customProps","disabled","filterOption","Array","isArray","length","isClearable","isCreatable","isMulti","isSortable","menuIsOpen","noOptionsMessage","isOverHasMany","max","options","id","name","ref","type","_temp","event","currentTarget","contentEditable","data","className_0","selectProps","editableClassName","onBlur","onClick","event_0","classList","add","focus","event_1","key","remove","innerText","replaceAll","action","option","newValues","v","removedValue","preventDefault","stopPropagation"],"sources":["../../../src/fields/Text/Input.tsx"],"sourcesContent":["'use client'\nimport type { ChangeEvent } from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/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 { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport const TextInput: React.FC<TextInputProps> = (props) => {\n const {\n AfterInput,\n BeforeInput,\n className,\n Description,\n description,\n Error,\n hasMany,\n htmlAttributes,\n inputRef,\n Label,\n label,\n localized,\n maxRows,\n onChange,\n onKeyDown,\n path,\n placeholder,\n readOnly,\n required,\n rtl,\n showError,\n style,\n value,\n valueToRender,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const editableProps: ReactSelectAdapterProps['customProps']['editableProps'] = (\n data,\n className,\n selectProps,\n ) => {\n const editableClassName = `${className}--editable`\n\n return {\n onBlur: (event: React.FocusEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'false'\n },\n onClick: (event: React.MouseEvent<HTMLDivElement>) => {\n event.currentTarget.contentEditable = 'true'\n event.currentTarget.classList.add(editableClassName)\n event.currentTarget.focus()\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === 'Tab' || event.key === 'Escape') {\n event.currentTarget.contentEditable = 'false'\n event.currentTarget.classList.remove(editableClassName)\n data.value.value = event.currentTarget.innerText\n data.label = event.currentTarget.innerText\n\n if (data.value.value.replaceAll('\\n', '')) {\n selectProps.onChange(selectProps.value, {\n action: 'create-option',\n option: data,\n })\n } else {\n if (Array.isArray(selectProps.value)) {\n const newValues = selectProps.value.filter((v) => v.id !== data.id)\n selectProps.onChange(newValues, {\n action: 'pop-value',\n removedValue: data,\n })\n }\n }\n\n event.preventDefault()\n }\n event.stopPropagation()\n },\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'text',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n components={{ DropdownIndicator: null }}\n customProps={{\n editableProps,\n }}\n disabled={readOnly}\n // prevent adding additional options if maxRows is reached\n filterOption={() =>\n !maxRows ? true : !(Array.isArray(value) && maxRows && value.length >= maxRows)\n }\n isClearable={false}\n isCreatable\n isMulti\n isSortable\n menuIsOpen={false}\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n onChange={onChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender}\n />\n ) : (\n <input\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={getTranslation(placeholder, i18n)}\n ref={inputRef}\n type=\"text\"\n value={value || ''}\n {...(htmlAttributes ?? {})}\n />\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAA;AAyIpC,eAAO,MAAM,SAAS;wBApIlB,MAAI,SACJ;yBAA4C,MAAO,oBAAoB;;;;;+EAmIjB,CAAA"}
|
|
@@ -16,6 +16,7 @@ const TextFieldComponent = props => {
|
|
|
16
16
|
field,
|
|
17
17
|
field: {
|
|
18
18
|
admin: {
|
|
19
|
+
autoComplete,
|
|
19
20
|
className,
|
|
20
21
|
description,
|
|
21
22
|
placeholder,
|
|
@@ -114,6 +115,9 @@ const TextFieldComponent = props => {
|
|
|
114
115
|
description: description,
|
|
115
116
|
Error: Error,
|
|
116
117
|
hasMany: hasMany,
|
|
118
|
+
htmlAttributes: {
|
|
119
|
+
autoComplete: autoComplete || undefined
|
|
120
|
+
},
|
|
117
121
|
inputRef: inputRef,
|
|
118
122
|
Label: Label,
|
|
119
123
|
label: label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","useField","withCondition","useConfig","useLocale","mergeFieldStyles","isFieldRTL","TextInput","TextFieldComponent","props","field","admin","className","description","placeholder","rtl","hasMany","label","localized","maxLength","maxRows","minLength","minRows","required","inputRef","path","pathFromProps","readOnly","validate","locale","config","localization","localizationConfig","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","renderRTL","fieldLocalized","fieldRTL","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","val","index","id","toString","styles","_jsx","onChange","e","target","style","TextField"],"sources":["../../../src/fields/Text/index.tsx"],"sourcesContent":["'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextInput } from './Input.js'\nimport './index.scss'\n\nexport { TextInput, TextInputProps }\n\nconst TextFieldComponent: TextFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, placeholder, rtl } = {},\n hasMany,\n label,\n localized,\n maxLength,\n maxRows,\n minLength,\n minRows,\n required,\n },\n inputRef,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const locale = useLocale()\n\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, minLength, maxLength, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localizationConfig || undefined,\n })\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!(readOnly || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue, disabled],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n // React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n toString: () => `${val}${index}`,\n value: val?.value || val,\n },\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n hasMany={hasMany}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n maxRows={maxRows}\n minRows={minRows}\n onChange={\n hasMany\n ? handleHasManyChange\n : (e) => {\n setValue(e.target.value)\n }\n }\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n valueToRender={valueToRender as Option[]}\n />\n )\n}\n\nexport const TextField = withCondition(TextFieldComponent)\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AAKjE,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAO;AAEP,SAASA,SAAS;AAElB,MAAMC,kBAAA,GAAgDC,KAAA;EACpD,MAAM;IACJC,KAAK;IACLA,KAAA,EAAO;MACLC,KAAA,EAAO;QAAEC,SAAS;QAAEC,WAAW;QAAEC,WAAW;QAAEC;MAAG,CAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","useField","withCondition","useConfig","useLocale","mergeFieldStyles","isFieldRTL","TextInput","TextFieldComponent","props","field","admin","autoComplete","className","description","placeholder","rtl","hasMany","label","localized","maxLength","maxRows","minLength","minRows","required","inputRef","path","pathFromProps","readOnly","validate","locale","config","localization","localizationConfig","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","renderRTL","fieldLocalized","fieldRTL","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","val","index","id","toString","styles","_jsx","htmlAttributes","onChange","e","target","style","TextField"],"sources":["../../../src/fields/Text/index.tsx"],"sourcesContent":["'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextInput } from './Input.js'\nimport './index.scss'\n\nexport { TextInput, TextInputProps }\n\nconst TextFieldComponent: TextFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { autoComplete, className, description, placeholder, rtl } = {},\n hasMany,\n label,\n localized,\n maxLength,\n maxRows,\n minLength,\n minRows,\n required,\n },\n inputRef,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const locale = useLocale()\n\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, minLength, maxLength, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localizationConfig || undefined,\n })\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!(readOnly || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue, disabled],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n // React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n toString: () => `${val}${index}`,\n value: val?.value || val,\n },\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n hasMany={hasMany}\n htmlAttributes={{\n autoComplete: autoComplete || undefined,\n }}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n maxRows={maxRows}\n minRows={minRows}\n onChange={\n hasMany\n ? handleHasManyChange\n : (e) => {\n setValue(e.target.value)\n }\n }\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n valueToRender={valueToRender as Option[]}\n />\n )\n}\n\nexport const TextField = withCondition(TextFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StaticDescription, StaticLabel } from 'payload';
|
|
2
|
-
import type { ChangeEvent } from 'react';
|
|
2
|
+
import type { ChangeEvent, JSX } from 'react';
|
|
3
3
|
import type React from 'react';
|
|
4
4
|
import type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js';
|
|
5
5
|
export type SharedTextFieldProps = {
|
|
@@ -16,6 +16,9 @@ export type TextInputProps = {
|
|
|
16
16
|
readonly Description?: React.ReactNode;
|
|
17
17
|
readonly description?: StaticDescription;
|
|
18
18
|
readonly Error?: React.ReactNode;
|
|
19
|
+
readonly htmlAttributes?: {
|
|
20
|
+
autoComplete?: JSX.IntrinsicElements['input']['autoComplete'];
|
|
21
|
+
};
|
|
19
22
|
readonly inputRef?: React.RefObject<HTMLInputElement>;
|
|
20
23
|
readonly Label?: React.ReactNode;
|
|
21
24
|
readonly label?: StaticLabel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/Text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAE1F,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CAC/D,GACD;IACE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAA;CACxD,CAAA;AAEL,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACxB,YAAY,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAA;KAC9D,CAAA;IACD,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAClC,GAAG,oBAAoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/fields/Text/types.ts"],"sourcesContent":["import type { StaticDescription, StaticLabel } from 'payload'\nimport type { ChangeEvent } from 'react'\nimport type React from 'react'\n\nimport type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\n\nexport type SharedTextFieldProps =\n | {\n readonly hasMany?: false\n readonly onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n }\n | {\n readonly hasMany?: true\n readonly onChange?: ReactSelectAdapterProps['onChange']\n }\n\nexport type TextInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly Error?: React.ReactNode\n readonly inputRef?: React.RefObject<HTMLInputElement>\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly localized?: boolean\n readonly maxRows?: number\n readonly minRows?: number\n readonly onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n readonly path: string\n readonly placeholder?: Record<string, string> | string\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly rtl?: boolean\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: string\n readonly valueToRender?: Option[]\n} & SharedTextFieldProps\n"],"mappings":"AAgBA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/fields/Text/types.ts"],"sourcesContent":["import type { StaticDescription, StaticLabel } from 'payload'\nimport type { ChangeEvent, JSX } from 'react'\nimport type React from 'react'\n\nimport type { Option, ReactSelectAdapterProps } from '../../elements/ReactSelect/types.js'\n\nexport type SharedTextFieldProps =\n | {\n readonly hasMany?: false\n readonly onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n }\n | {\n readonly hasMany?: true\n readonly onChange?: ReactSelectAdapterProps['onChange']\n }\n\nexport type TextInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly Error?: React.ReactNode\n readonly htmlAttributes?: {\n autoComplete?: JSX.IntrinsicElements['input']['autoComplete']\n }\n readonly inputRef?: React.RefObject<HTMLInputElement>\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly localized?: boolean\n readonly maxRows?: number\n readonly minRows?: number\n readonly onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n readonly path: string\n readonly placeholder?: Record<string, string> | string\n readonly readOnly?: boolean\n readonly required?: boolean\n readonly rtl?: boolean\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: string\n readonly valueToRender?: Option[]\n} & SharedTextFieldProps\n"],"mappings":"AAgBA","ignoreList":[]}
|
|
@@ -26,8 +26,7 @@ export const WatchChildErrors = t0 => {
|
|
|
26
26
|
if ($[2] !== formState || $[3] !== hasSubmitted || $[4] !== parentPath || $[5] !== segmentsToMatch || $[6] !== setErrorCount) {
|
|
27
27
|
t2 = () => {
|
|
28
28
|
if (hasSubmitted) {
|
|
29
|
-
let errorCount;
|
|
30
|
-
errorCount = 0;
|
|
29
|
+
let errorCount = 0;
|
|
31
30
|
Object.entries(formState).forEach(t3 => {
|
|
32
31
|
const [key] = t3;
|
|
33
32
|
const matchingSegment = segmentsToMatch?.some(segment => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useThrottledEffect","useAllFormFields","useFormSubmitted","buildPathSegments","WatchChildErrors","t0","$","fields","path","parentPath","setErrorCount","formState","hasSubmitted","t1","segmentsToMatch","t2","errorCount","Object","entries","forEach","t3","key","matchingSegment","some","segment","segmentToMatch","join","endsWith","startsWith","pathState","valid"],"sources":["../../../src/forms/WatchChildErrors/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField } from 'payload'\nimport type React from 'react'\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAllFormFields, useFormSubmitted } from '../Form/context.js'\nimport { buildPathSegments } from './buildPathSegments.js'\n\ntype TrackSubSchemaErrorCountProps = {\n fields?: ClientField[]\n /**\n * This path should only include path segments that affect data\n * i.e. it should not include _index-0 type segments\n *\n * For collapsibles and tabs you can simply pass their parent path\n */\n path: (number | string)[]\n setErrorCount: (count: number) => void\n}\nexport const WatchChildErrors: React.FC<TrackSubSchemaErrorCountProps> = ({\n fields,\n path: parentPath,\n setErrorCount,\n}) => {\n const [formState] = useAllFormFields()\n const hasSubmitted = useFormSubmitted()\n\n const segmentsToMatch = buildPathSegments(fields)\n\n useThrottledEffect(\n () => {\n if (hasSubmitted) {\n let errorCount = 0\n Object.entries(formState).forEach(([key]) => {\n const matchingSegment = segmentsToMatch?.some((segment) => {\n const segmentToMatch = [...parentPath, segment].join('.')\n // match fields with same parent path\n if (segmentToMatch.endsWith('.')) {\n return key.startsWith(segmentToMatch)\n }\n // match fields with same path\n return key === segmentToMatch\n })\n\n if (matchingSegment) {\n const pathState = formState[key]\n if ('valid' in pathState && !pathState.valid) {\n errorCount += 1\n }\n }\n })\n setErrorCount(errorCount)\n }\n },\n 250,\n [formState, hasSubmitted, fields],\n )\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,kBAAkB,QAAQ;AACnC,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ;AACnD,SAASC,iBAAiB,QAAQ;AAalC,OAAO,MAAMC,gBAAA,GAA4DC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,MAAA;IAAAC,IAAA,EAAAC,UAAA;IAAAC;EAAA,IAAAL,EAIzE;EACC,OAAAM,SAAA,IAAoBV,gBAAA;EACpB,MAAAW,YAAA,GAAqBV,gBAAA;EAAA,IAAAW,EAAA;EAAA,IAAAP,CAAA,QAAAC,MAAA;IAEGM,EAAA,GAAAV,iBAAA,CAAkBI,MAAA;IAAAD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAA1C,MAAAQ,eAAA,GAAwBD,EAAkB;EAAA,IAAAE,EAAA;EAAA,IAAAT,CAAA,QAAAK,SAAA,IAAAL,CAAA,QAAAM,YAAA,IAAAN,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAQ,eAAA,IAAAR,CAAA,QAAAI,aAAA;IAGxCK,EAAA,GAAAA,CAAA;MAAA,IACMH,YAAA;QACF,IAAAI,UAAA;
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useThrottledEffect","useAllFormFields","useFormSubmitted","buildPathSegments","WatchChildErrors","t0","$","fields","path","parentPath","setErrorCount","formState","hasSubmitted","t1","segmentsToMatch","t2","errorCount","Object","entries","forEach","t3","key","matchingSegment","some","segment","segmentToMatch","join","endsWith","startsWith","pathState","valid"],"sources":["../../../src/forms/WatchChildErrors/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField } from 'payload'\nimport type React from 'react'\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAllFormFields, useFormSubmitted } from '../Form/context.js'\nimport { buildPathSegments } from './buildPathSegments.js'\n\ntype TrackSubSchemaErrorCountProps = {\n fields?: ClientField[]\n /**\n * This path should only include path segments that affect data\n * i.e. it should not include _index-0 type segments\n *\n * For collapsibles and tabs you can simply pass their parent path\n */\n path: (number | string)[]\n setErrorCount: (count: number) => void\n}\nexport const WatchChildErrors: React.FC<TrackSubSchemaErrorCountProps> = ({\n fields,\n path: parentPath,\n setErrorCount,\n}) => {\n const [formState] = useAllFormFields()\n const hasSubmitted = useFormSubmitted()\n\n const segmentsToMatch = buildPathSegments(fields)\n\n useThrottledEffect(\n () => {\n if (hasSubmitted) {\n let errorCount = 0\n Object.entries(formState).forEach(([key]) => {\n const matchingSegment = segmentsToMatch?.some((segment) => {\n const segmentToMatch = [...parentPath, segment].join('.')\n // match fields with same parent path\n if (segmentToMatch.endsWith('.')) {\n return key.startsWith(segmentToMatch)\n }\n // match fields with same path\n return key === segmentToMatch\n })\n\n if (matchingSegment) {\n const pathState = formState[key]\n if ('valid' in pathState && !pathState.valid) {\n errorCount += 1\n }\n }\n })\n setErrorCount(errorCount)\n }\n },\n 250,\n [formState, hasSubmitted, fields],\n )\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,kBAAkB,QAAQ;AACnC,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ;AACnD,SAASC,iBAAiB,QAAQ;AAalC,OAAO,MAAMC,gBAAA,GAA4DC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,MAAA;IAAAC,IAAA,EAAAC,UAAA;IAAAC;EAAA,IAAAL,EAIzE;EACC,OAAAM,SAAA,IAAoBV,gBAAA;EACpB,MAAAW,YAAA,GAAqBV,gBAAA;EAAA,IAAAW,EAAA;EAAA,IAAAP,CAAA,QAAAC,MAAA;IAEGM,EAAA,GAAAV,iBAAA,CAAkBI,MAAA;IAAAD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAA1C,MAAAQ,eAAA,GAAwBD,EAAkB;EAAA,IAAAE,EAAA;EAAA,IAAAT,CAAA,QAAAK,SAAA,IAAAL,CAAA,QAAAM,YAAA,IAAAN,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAQ,eAAA,IAAAR,CAAA,QAAAI,aAAA;IAGxCK,EAAA,GAAAA,CAAA;MAAA,IACMH,YAAA;QACF,IAAAI,UAAA;QACAC,MAAA,CAAAC,OAAA,CAAeP,SAAA,EAAAQ,OAAA,CAAAC,EAAA;UAAoB,OAAAC,GAAA,IAAAD,EAAK;UACtC,MAAAE,eAAA,GAAwBR,eAAA,EAAAS,IAAA,CAAAC,OAAA;YACtB,MAAAC,cAAA,GAAuB,IAAIhB,UAAA,EAAYe,OAAA,EAAAE,IAAA,CAAc;YAAA,IAEjDD,cAAA,CAAAE,QAAA,CAAwB;cAAA,OACnBN,GAAA,CAAAO,UAAA,CAAeH,cAAA;YAAA;YAAA,OAGjBJ,GAAA,KAAQI,cAAA;UAAA;UACjB,IAEIH,eAAA;YACF,MAAAO,SAAA,GAAkBlB,SAAS,CAACU,GAAA;YAAI,IAC5B,WAAWQ,SAAA,KAAcA,SAAA,CAAAC,KAAe;cAC1Cd,UAAA,GAAAA,UAAA,IAAc;cAAdA,UAAA;YAAA;UAAA;QAAA,CAGN;QACAN,aAAA,CAAcM,UAAA;MAAA;IAAA;IAElBV,CAAA,MAAAK,SAAA;IAAAL,CAAA,MAAAM,YAAA;IAAAN,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAQ,eAAA;IAAAR,CAAA,MAAAI,aAAA;IAAAJ,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAK,SAAA,IAAAL,CAAA,SAAAM,YAAA;IAEAQ,EAAA,IAACT,SAAA,EAAWC,YAAA,EAAcL,MAAA;IAAOD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAK,SAAA;IAAAL,CAAA,OAAAM,YAAA;IAAAN,CAAA,OAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EA1BnCN,kBAAA,CACEe,EAuBA,OAEAK,EAAiC;EAAA;AAAA,CAIrC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Config/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Config/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,KAAK,iBAAiB,GAAG;IAGvB,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,EAAE,GAAG,cAAc,CAAC;QAAC,UAAU,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,sBAAsB,CAAA;IAI3F,CAAC,IAAI,EAAE;QAAE,cAAc,CAAC,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,EAAE,GAAG,UAAU,CAAA;KAAE,GAAG,kBAAkB,CAAA;IAGnF,CAAC,IAAI,EAAE;QACL,cAAc,CAAC,EAAE,EAAE,GAAG,cAAc,CAAA;QACpC,UAAU,CAAC,EAAE,EAAE,GAAG,UAAU,CAAA;KAC7B,GAAG,sBAAsB,GAAG,kBAAkB,GAAG,IAAI,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,eAAe,EAAE,iBAAiB,CAAA;IAClC,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;CAC1C,CAAA;AAsBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,uBAAuB,CAAA;CACxD,CA8CA,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,mBAA6C,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
import React, { createContext, use, useCallback, useEffect, useMemo, useState } from 'react';
|
|
5
|
+
import React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
6
|
const RootConfigContext = /*#__PURE__*/createContext(undefined);
|
|
7
7
|
function sanitizeClientConfig(unSanitizedConfig) {
|
|
8
8
|
if (!unSanitizedConfig?.blocks?.length || unSanitizedConfig.blocksMap) {
|
|
@@ -24,9 +24,14 @@ export const ConfigProvider = ({
|
|
|
24
24
|
config: configFromProps
|
|
25
25
|
}) => {
|
|
26
26
|
const [config, setConfig] = useState(() => sanitizeClientConfig(configFromProps));
|
|
27
|
+
const isFirstRenderRef = useRef(true);
|
|
27
28
|
// Need to update local config state if config from props changes, for HMR.
|
|
28
29
|
// That way, config changes will be updated in the UI immediately without needing a refresh.
|
|
29
30
|
useEffect(() => {
|
|
31
|
+
if (isFirstRenderRef.current) {
|
|
32
|
+
isFirstRenderRef.current = false;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
30
35
|
setConfig(sanitizeClientConfig(configFromProps));
|
|
31
36
|
}, [configFromProps]);
|
|
32
37
|
// Build lookup maps for collections and globals so we can do O(1) lookups by slug
|
|
@@ -56,12 +61,13 @@ export const ConfigProvider = ({
|
|
|
56
61
|
}
|
|
57
62
|
return null;
|
|
58
63
|
}, [collectionsBySlug_0, globalsBySlug_0]);
|
|
64
|
+
const value = useMemo(() => ({
|
|
65
|
+
config,
|
|
66
|
+
getEntityConfig,
|
|
67
|
+
setConfig
|
|
68
|
+
}), [config, getEntityConfig]);
|
|
59
69
|
return /*#__PURE__*/_jsx(RootConfigContext, {
|
|
60
|
-
value:
|
|
61
|
-
config,
|
|
62
|
-
getEntityConfig,
|
|
63
|
-
setConfig
|
|
64
|
-
},
|
|
70
|
+
value: value,
|
|
65
71
|
children: children
|
|
66
72
|
});
|
|
67
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","createContext","use","useCallback","useEffect","useMemo","useState","RootConfigContext","undefined","sanitizeClientConfig","unSanitizedConfig","blocks","length","blocksMap","sanitizedConfig","block","slug","ConfigProvider","children","config","configFromProps","setConfig","collectionsBySlug","globalsBySlug","collection","collections","global","globals","getEntityConfig","args","collectionSlug","globalSlug","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","RootConfigContext","undefined","sanitizeClientConfig","unSanitizedConfig","blocks","length","blocksMap","sanitizedConfig","block","slug","ConfigProvider","children","config","configFromProps","setConfig","isFirstRenderRef","current","collectionsBySlug","globalsBySlug","collection","collections","global","globals","getEntityConfig","args","collectionSlug","globalSlug","value","_jsx","useConfig"],"sources":["../../../src/providers/Config/index.tsx"],"sourcesContent":["/* eslint-disable perfectionist/sort-object-types */ // Need to disable this rule because the order of the overloads is important\n'use client'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientGlobalConfig,\n CollectionSlug,\n GlobalSlug,\n UnsanitizedClientConfig,\n} from 'payload'\n\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\ntype GetEntityConfigFn = {\n // Overload #1: collectionSlug only\n // @todo remove \"{} |\" in 4.0, which would be a breaking change\n (args: { collectionSlug: {} | CollectionSlug; globalSlug?: never }): ClientCollectionConfig\n\n // Overload #2: globalSlug only\n // @todo remove \"{} |\" in 4.0, which would be a breaking change\n (args: { collectionSlug?: never; globalSlug: {} | GlobalSlug }): ClientGlobalConfig\n\n // Overload #3: both/none (fall back to union | null)\n (args: {\n collectionSlug?: {} | CollectionSlug\n globalSlug?: {} | GlobalSlug\n }): ClientCollectionConfig | ClientGlobalConfig | null\n}\n\nexport type ClientConfigContext = {\n config: ClientConfig\n /**\n * Get a collection or global config by its slug. This is preferred over\n * using `config.collections.find` or `config.globals.find`, because\n * getEntityConfig uses a lookup map for O(1) lookups.\n */\n getEntityConfig: GetEntityConfigFn\n setConfig: (config: ClientConfig) => void\n}\n\nconst RootConfigContext = createContext<ClientConfigContext | undefined>(undefined)\n\nfunction sanitizeClientConfig(\n unSanitizedConfig: ClientConfig | UnsanitizedClientConfig,\n): ClientConfig {\n if (!unSanitizedConfig?.blocks?.length || (unSanitizedConfig as ClientConfig).blocksMap) {\n ;(unSanitizedConfig as ClientConfig).blocksMap = {}\n return unSanitizedConfig as ClientConfig\n }\n const sanitizedConfig: ClientConfig = { ...unSanitizedConfig } as ClientConfig\n\n sanitizedConfig.blocksMap = {}\n\n for (const block of unSanitizedConfig.blocks) {\n sanitizedConfig.blocksMap[block.slug] = block\n }\n\n return sanitizedConfig\n}\n\nexport const ConfigProvider: React.FC<{\n readonly children: React.ReactNode\n readonly config: ClientConfig | UnsanitizedClientConfig\n}> = ({ children, config: configFromProps }) => {\n const [config, setConfig] = useState<ClientConfig>(() => sanitizeClientConfig(configFromProps))\n\n const isFirstRenderRef = useRef(true)\n\n // Need to update local config state if config from props changes, for HMR.\n // That way, config changes will be updated in the UI immediately without needing a refresh.\n useEffect(() => {\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false\n return\n }\n setConfig(sanitizeClientConfig(configFromProps))\n }, [configFromProps])\n\n // Build lookup maps for collections and globals so we can do O(1) lookups by slug\n const { collectionsBySlug, globalsBySlug } = useMemo(() => {\n const collectionsBySlug: Record<string, ClientCollectionConfig> = {}\n const globalsBySlug: Record<string, ClientGlobalConfig> = {}\n\n for (const collection of config.collections) {\n collectionsBySlug[collection.slug] = collection\n }\n for (const global of config.globals) {\n globalsBySlug[global.slug] = global\n }\n\n return { collectionsBySlug, globalsBySlug }\n }, [config])\n\n const getEntityConfig = useCallback<GetEntityConfigFn>(\n (args) => {\n if ('collectionSlug' in args) {\n return collectionsBySlug[args.collectionSlug] ?? null\n }\n if ('globalSlug' in args) {\n return globalsBySlug[args.globalSlug] ?? null\n }\n return null as any\n },\n [collectionsBySlug, globalsBySlug],\n )\n\n const value = useMemo(() => ({ config, getEntityConfig, setConfig }), [config, getEntityConfig])\n\n return <RootConfigContext value={value}>{children}</RootConfigContext>\n}\n\nexport const useConfig = (): ClientConfigContext => use(RootConfigContext)\n"],"mappings":"AAAA,sDAAsD;AACtD;;;AAUA,OAAOA,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AA6B7F,MAAMC,iBAAA,gBAAoBP,aAAA,CAA+CQ,SAAA;AAEzE,SAASC,qBACPC,iBAAyD;EAEzD,IAAI,CAACA,iBAAA,EAAmBC,MAAA,EAAQC,MAAA,IAAUF,iBAAC,CAAmCG,SAAS,EAAE;;IACrFH,iBAAA,CAAmCG,SAAS,GAAG,CAAC;IAClD,OAAOH,iBAAA;EACT;EACA,MAAMI,eAAA,GAAgC;IAAE,GAAGJ;EAAkB;EAE7DI,eAAA,CAAgBD,SAAS,GAAG,CAAC;EAE7B,KAAK,MAAME,KAAA,IAASL,iBAAA,CAAkBC,MAAM,EAAE;IAC5CG,eAAA,CAAgBD,SAAS,CAACE,KAAA,CAAMC,IAAI,CAAC,GAAGD,KAAA;EAC1C;EAEA,OAAOD,eAAA;AACT;AAEA,OAAO,MAAMG,cAAA,GAGRA,CAAC;EAAEC,QAAQ;EAAEC,MAAA,EAAQC;AAAe,CAAE;EACzC,MAAM,CAACD,MAAA,EAAQE,SAAA,CAAU,GAAGf,QAAA,CAAuB,MAAMG,oBAAA,CAAqBW,eAAA;EAE9E,MAAME,gBAAA,GAAmBjB,MAAA,CAAO;EAEhC;EACA;EACAF,SAAA,CAAU;IACR,IAAImB,gBAAA,CAAiBC,OAAO,EAAE;MAC5BD,gBAAA,CAAiBC,OAAO,GAAG;MAC3B;IACF;IACAF,SAAA,CAAUZ,oBAAA,CAAqBW,eAAA;EACjC,GAAG,CAACA,eAAA,CAAgB;EAEpB;EACA,MAAM;IAAEI,iBAAiB,EAAjBA,mBAAiB;IAAEC,aAAa,EAAbA;EAAa,CAAE,GAAGrB,OAAA,CAAQ;IACnD,MAAMoB,iBAAA,GAA4D,CAAC;IACnE,MAAMC,aAAA,GAAoD,CAAC;IAE3D,KAAK,MAAMC,UAAA,IAAcP,MAAA,CAAOQ,WAAW,EAAE;MAC3CH,iBAAiB,CAACE,UAAA,CAAWV,IAAI,CAAC,GAAGU,UAAA;IACvC;IACA,KAAK,MAAME,MAAA,IAAUT,MAAA,CAAOU,OAAO,EAAE;MACnCJ,aAAa,CAACG,MAAA,CAAOZ,IAAI,CAAC,GAAGY,MAAA;IAC/B;IAEA,OAAO;MAAEJ,iBAAA;MAAmBC;IAAc;EAC5C,GAAG,CAACN,MAAA,CAAO;EAEX,MAAMW,eAAA,GAAkB5B,WAAA,CACrB6B,IAAA;IACC,IAAI,oBAAoBA,IAAA,EAAM;MAC5B,OAAOP,mBAAiB,CAACO,IAAA,CAAKC,cAAc,CAAC,IAAI;IACnD;IACA,IAAI,gBAAgBD,IAAA,EAAM;MACxB,OAAON,eAAa,CAACM,IAAA,CAAKE,UAAU,CAAC,IAAI;IAC3C;IACA,OAAO;EACT,GACA,CAACT,mBAAA,EAAmBC,eAAA,CAAc;EAGpC,MAAMS,KAAA,GAAQ9B,OAAA,CAAQ,OAAO;IAAEe,MAAA;IAAQW,eAAA;IAAiBT;EAAU,IAAI,CAACF,MAAA,EAAQW,eAAA,CAAgB;EAE/F,oBAAOK,IAAA,CAAC5B,iBAAA;IAAkB2B,KAAA,EAAOA,KAAA;cAAQhB;;AAC3C;AAEA,OAAO,MAAMkB,SAAA,GAAYA,CAAA,KAA2BnC,GAAA,CAAIM,iBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAQnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAQnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2MtD,CAAA"}
|
|
@@ -23,6 +23,8 @@ export const ListQueryProvider = ({
|
|
|
23
23
|
onQueryChange: onQueryChangeFromProps,
|
|
24
24
|
orderableFieldName
|
|
25
25
|
}) => {
|
|
26
|
+
// TODO: Investigate if this is still needed
|
|
27
|
+
// eslint-disable-next-line react-compiler/react-compiler
|
|
26
28
|
'use no memo';
|
|
27
29
|
|
|
28
30
|
const router = useRouter();
|
|
@@ -33,7 +35,6 @@ export const ListQueryProvider = ({
|
|
|
33
35
|
const [modified, setModified] = useState(false);
|
|
34
36
|
const searchParams = useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams]);
|
|
35
37
|
const contextRef = useRef({});
|
|
36
|
-
// eslint-disable-next-line react-compiler/react-compiler -- TODO: fix
|
|
37
38
|
contextRef.current.modified = modified;
|
|
38
39
|
const {
|
|
39
40
|
onQueryChange
|
|
@@ -165,7 +166,6 @@ export const ListQueryProvider = ({
|
|
|
165
166
|
query: currentQuery,
|
|
166
167
|
refineListData,
|
|
167
168
|
setModified,
|
|
168
|
-
// eslint-disable-next-line react-compiler/react-compiler -- TODO: fix
|
|
169
169
|
...contextRef.current
|
|
170
170
|
},
|
|
171
171
|
children: /*#__PURE__*/_jsx(ListQueryModifiedContext, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","transformColumnsToSearchParams","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","ListQueryContext","ListQueryModifiedContext","useListQuery","ListQueryProvider","children","collectionSlug","columns","data","defaultLimit","defaultSort","listPreferences","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","router","rawSearchParams","startRouteTransition","modified","setModified","searchParams","contextRef","current","currentQuery","setCurrentQuery","limit","String","sort","mergeQuery","newQuery","page","mergedQuery","preset","search","where","refineListData","incomingQuery","undefined","replace","stringify","JSON","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","syncQuery","shouldUpdateQueryString","window","history","replaceState","_jsx","value","query"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport { isNumber, transformColumnsToSearchParams } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n columns,\n data,\n defaultLimit,\n defaultSort,\n listPreferences,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n}) => {\n 'use no memo'\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n\n const searchParams = useMemo<ListQuery>(\n () => parseSearchParams(rawSearchParams),\n [rawSearchParams],\n )\n\n const contextRef = useRef({} as IListQueryContext)\n\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n contextRef.current.modified = modified\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {\n limit: String(defaultLimit),\n sort: defaultSort,\n }\n }\n })\n\n const mergeQuery = useCallback(\n (newQuery: ListQuery = {}): ListQuery => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n if ('where' in newQuery || 'search' in newQuery) {\n page = '1'\n }\n\n const mergedQuery: ListQuery = {\n ...currentQuery,\n ...newQuery,\n columns: 'columns' in newQuery ? newQuery.columns : currentQuery.columns,\n limit: 'limit' in newQuery ? newQuery.limit : (currentQuery?.limit ?? String(defaultLimit)),\n page,\n preset: 'preset' in newQuery ? newQuery.preset : currentQuery?.preset,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort: 'sort' in newQuery ? newQuery.sort : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in newQuery ? newQuery.where : currentQuery?.where,\n }\n\n return mergedQuery\n },\n [currentQuery, defaultLimit, defaultSort],\n )\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n if (modified !== undefined) {\n setModified(modified)\n } else {\n setModified(true)\n }\n\n const newQuery = mergeQuery(incomingQuery)\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) }, { addQueryPrefix: true })}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setCurrentQuery(newQuery)\n },\n [\n mergeQuery,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: String(arg) })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: String(arg), page: '1' })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (arg: string) => {\n await refineListData({ sort: arg })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (arg: Where) => {\n await refineListData({ where: arg })\n },\n [refineListData],\n )\n\n const syncQuery = useEffectEvent(() => {\n let shouldUpdateQueryString = false\n const newQuery = { ...(currentQuery || {}) }\n\n // Allow the URL to override the default limit\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n newQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n // Allow the URL to override the default sort\n if (defaultSort && !('sort' in currentQuery)) {\n newQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n // Only modify columns if they originated from preferences\n // We can assume they did if `listPreferences.columns` is defined\n if (columns && listPreferences?.columns && !('columns' in currentQuery)) {\n newQuery.columns = transformColumnsToSearchParams(columns)\n shouldUpdateQueryString = true\n }\n\n if (shouldUpdateQueryString) {\n setCurrentQuery(newQuery)\n // Do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(\n null,\n '',\n `?${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) })}`,\n )\n }\n })\n\n // If `defaultLimit` or `defaultSort` are updated externally, update the query\n // I.e. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n syncQuery()\n }\n }, [defaultSort, defaultLimit, modifySearchParams, columns])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n orderableFieldName,\n query: currentQuery,\n refineListData,\n setModified,\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","transformColumnsToSearchParams","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","ListQueryContext","ListQueryModifiedContext","useListQuery","ListQueryProvider","children","collectionSlug","columns","data","defaultLimit","defaultSort","listPreferences","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","router","rawSearchParams","startRouteTransition","modified","setModified","searchParams","contextRef","current","currentQuery","setCurrentQuery","limit","String","sort","mergeQuery","newQuery","page","mergedQuery","preset","search","where","refineListData","incomingQuery","undefined","replace","stringify","JSON","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","syncQuery","shouldUpdateQueryString","window","history","replaceState","_jsx","value","query"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport { isNumber, transformColumnsToSearchParams } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n columns,\n data,\n defaultLimit,\n defaultSort,\n listPreferences,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n}) => {\n // TODO: Investigate if this is still needed\n // eslint-disable-next-line react-compiler/react-compiler\n 'use no memo'\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n\n const searchParams = useMemo<ListQuery>(\n () => parseSearchParams(rawSearchParams),\n [rawSearchParams],\n )\n\n const contextRef = useRef({} as IListQueryContext)\n\n contextRef.current.modified = modified\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {\n limit: String(defaultLimit),\n sort: defaultSort,\n }\n }\n })\n\n const mergeQuery = useCallback(\n (newQuery: ListQuery = {}): ListQuery => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n if ('where' in newQuery || 'search' in newQuery) {\n page = '1'\n }\n\n const mergedQuery: ListQuery = {\n ...currentQuery,\n ...newQuery,\n columns: 'columns' in newQuery ? newQuery.columns : currentQuery.columns,\n limit: 'limit' in newQuery ? newQuery.limit : (currentQuery?.limit ?? String(defaultLimit)),\n page,\n preset: 'preset' in newQuery ? newQuery.preset : currentQuery?.preset,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort: 'sort' in newQuery ? newQuery.sort : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in newQuery ? newQuery.where : currentQuery?.where,\n }\n\n return mergedQuery\n },\n [currentQuery, defaultLimit, defaultSort],\n )\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n if (modified !== undefined) {\n setModified(modified)\n } else {\n setModified(true)\n }\n\n const newQuery = mergeQuery(incomingQuery)\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) }, { addQueryPrefix: true })}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setCurrentQuery(newQuery)\n },\n [\n mergeQuery,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: String(arg) })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: String(arg), page: '1' })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (arg: string) => {\n await refineListData({ sort: arg })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (arg: Where) => {\n await refineListData({ where: arg })\n },\n [refineListData],\n )\n\n const syncQuery = useEffectEvent(() => {\n let shouldUpdateQueryString = false\n const newQuery = { ...(currentQuery || {}) }\n\n // Allow the URL to override the default limit\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n newQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n // Allow the URL to override the default sort\n if (defaultSort && !('sort' in currentQuery)) {\n newQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n // Only modify columns if they originated from preferences\n // We can assume they did if `listPreferences.columns` is defined\n if (columns && listPreferences?.columns && !('columns' in currentQuery)) {\n newQuery.columns = transformColumnsToSearchParams(columns)\n shouldUpdateQueryString = true\n }\n\n if (shouldUpdateQueryString) {\n setCurrentQuery(newQuery)\n // Do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(\n null,\n '',\n `?${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) })}`,\n )\n }\n })\n\n // If `defaultLimit` or `defaultSort` are updated externally, update the query\n // I.e. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n syncQuery()\n }\n }, [defaultSort, defaultLimit, modifySearchParams, columns])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n orderableFieldName,\n query: currentQuery,\n refineListData,\n setModified,\n\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -75,8 +75,10 @@ export const TableColumnsProvider = ({
|
|
|
75
75
|
});
|
|
76
76
|
}, [currentQuery, refineListData]);
|
|
77
77
|
const resetColumnsState = React.useCallback(async () => {
|
|
78
|
-
await
|
|
79
|
-
|
|
78
|
+
await refineListData({
|
|
79
|
+
columns: defaultColumns || []
|
|
80
|
+
});
|
|
81
|
+
}, [defaultColumns, refineListData]);
|
|
80
82
|
return /*#__PURE__*/_jsx(TableColumnContext, {
|
|
81
83
|
value: {
|
|
82
84
|
columns: columnState,
|
|
@@ -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
|
|
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 // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n ...contextRef.current,\n }}\n >\n {children}\n </TableColumnContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|