@payloadcms/ui 3.41.0-canary.1 → 3.41.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/client/index.js +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/forms/WatchChildErrors/index.js +1 -2
- package/dist/forms/WatchChildErrors/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/package.json +16 -13
|
@@ -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/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":[]}
|