@payloadcms/ui 3.5.1-canary.d9bd64a → 3.6.0
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/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +22 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +66 -44
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.d.ts +2 -2
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js +2 -3
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +3 -3
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +6 -7
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts +4 -0
- package/dist/elements/TableColumns/filterFields.d.ts.map +1 -1
- package/dist/elements/TableColumns/filterFields.js +11 -6
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +7 -2
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js +5 -0
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +5 -2
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +100 -259
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceClientFields.js +1 -1
- package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -1
- package/dist/exports/client/index.js +16 -16
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +25 -14
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +9 -2
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
- package/dist/hooks/useUseAsTitle.js +2 -2
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js +3 -4
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/renderTable.d.ts +4 -4
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +6 -5
- package/dist/utilities/renderTable.js.map +1 -1
- package/package.json +4 -4
- package/dist/utilities/flattenFieldMap.d.ts +0 -10
- package/dist/utilities/flattenFieldMap.d.ts.map +0 -1
- package/dist/utilities/flattenFieldMap.js +0 -26
- package/dist/utilities/flattenFieldMap.js.map +0 -1
|
@@ -46,13 +46,20 @@ export type FormProps = {
|
|
|
46
46
|
export type SubmitOptions = {
|
|
47
47
|
action?: string;
|
|
48
48
|
method?: string;
|
|
49
|
-
overrides?: Record<string, unknown>;
|
|
49
|
+
overrides?: ((formState: any) => FormData) | Record<string, unknown>;
|
|
50
50
|
skipValidation?: boolean;
|
|
51
51
|
};
|
|
52
52
|
export type DispatchFields = React.Dispatch<any>;
|
|
53
53
|
export type Submit = (options?: SubmitOptions, e?: React.FormEvent<HTMLFormElement>) => Promise<void>;
|
|
54
54
|
export type ValidateForm = () => Promise<boolean>;
|
|
55
|
-
export type CreateFormData = (overrides?:
|
|
55
|
+
export type CreateFormData = (overrides?: Record<string, unknown>,
|
|
56
|
+
/**
|
|
57
|
+
* If mergeOverrideData true, the data will be merged with the existing data in the form state.
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
60
|
+
options?: {
|
|
61
|
+
mergeOverrideData?: boolean;
|
|
62
|
+
}) => FormData;
|
|
56
63
|
export type GetFields = () => FormState;
|
|
57
64
|
export type GetField = (path: string) => FormField;
|
|
58
65
|
export type GetData = () => Data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,SAAS,EACT,SAAS,EACT,GAAG,EACH,IAAI,EACJ,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;IACzE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,CACf,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACrC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAChC,IAAI,CAAA;IACT,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAA;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,CACA;IACE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C,GACD;IACE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;CAC7C,CACJ,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forms/Form/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type {\n ClientField,\n Data,\n FormField,\n FormState,\n Row,\n User,\n ValidationFieldError,\n} from 'payload'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type FormProps = {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n disableSuccessStatus?: boolean\n /**\n * If you would like to solely leverage server-side validation on submit,\n * you can disable checks that the form makes before it submits\n */\n disableValidationOnSubmit?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: ClientField[]\n handleResponse?: (\n res: Response,\n successToast: (value: string) => void,\n errorToast: (value: string) => void,\n ) => void\n initialState?: FormState\n isInitializing?: boolean\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => Promise<FormState | void> | void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n} & (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n)\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (overrides?:
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/forms/Form/types.ts"],"sourcesContent":["import type {\n ClientField,\n Data,\n FormField,\n FormState,\n Row,\n User,\n ValidationFieldError,\n} from 'payload'\nimport type React from 'react'\nimport type { Dispatch } from 'react'\n\nexport type Preferences = {\n [key: string]: unknown\n}\n\nexport type FormProps = {\n beforeSubmit?: ((args: { formState: FormState }) => Promise<FormState>)[]\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n disableSuccessStatus?: boolean\n /**\n * If you would like to solely leverage server-side validation on submit,\n * you can disable checks that the form makes before it submits\n */\n disableValidationOnSubmit?: boolean\n /**\n * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.\n * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks\n * feature of the Lexical Rich Text field)\n */\n fields?: ClientField[]\n handleResponse?: (\n res: Response,\n successToast: (value: string) => void,\n errorToast: (value: string) => void,\n ) => void\n initialState?: FormState\n isInitializing?: boolean\n log?: boolean\n onChange?: ((args: { formState: FormState }) => Promise<FormState>)[]\n onSubmit?: (fields: FormState, data: Data) => void\n onSuccess?: (json: unknown) => Promise<FormState | void> | void\n redirect?: string\n submitted?: boolean\n uuid?: string\n validationOperation?: 'create' | 'update'\n waitForAutocomplete?: boolean\n} & (\n | {\n action: (formData: FormData) => Promise<void>\n }\n | {\n action?: string\n method?: 'DELETE' | 'GET' | 'PATCH' | 'POST'\n }\n)\n\nexport type SubmitOptions = {\n action?: string\n method?: string\n overrides?: ((formState) => FormData) | Record<string, unknown>\n skipValidation?: boolean\n}\n\nexport type DispatchFields = React.Dispatch<any>\nexport type Submit = (\n options?: SubmitOptions,\n e?: React.FormEvent<HTMLFormElement>,\n) => Promise<void>\nexport type ValidateForm = () => Promise<boolean>\nexport type CreateFormData = (\n overrides?: Record<string, unknown>,\n /**\n * If mergeOverrideData true, the data will be merged with the existing data in the form state.\n * @default true\n */\n options?: { mergeOverrideData?: boolean },\n) => FormData\nexport type GetFields = () => FormState\nexport type GetField = (path: string) => FormField\nexport type GetData = () => Data\nexport type GetSiblingData = (path: string) => Data\nexport type GetDataByPath = <T = unknown>(path: string) => T\nexport type SetModified = (modified: boolean) => void\nexport type SetSubmitted = (submitted: boolean) => void\nexport type SetProcessing = (processing: boolean) => void\n\nexport type Reset = (data: unknown) => Promise<void>\n\nexport type REPLACE_STATE = {\n optimize?: boolean\n state: FormState\n type: 'REPLACE_STATE'\n}\n\nexport type REMOVE = {\n path: string\n type: 'REMOVE'\n}\n\nexport type MODIFY_CONDITION = {\n path: string\n result: boolean\n type: 'MODIFY_CONDITION'\n user: User\n}\n\nexport type UPDATE = {\n path: string\n type: 'UPDATE'\n} & Partial<FormField>\n\nexport type UPDATE_MANY = {\n formState: FormState\n type: 'UPDATE_MANY'\n}\n\nexport type REMOVE_ROW = {\n path: string\n rowIndex: number\n type: 'REMOVE_ROW'\n}\n\nexport type ADD_ROW = {\n blockType?: string\n path: string\n rowIndex?: number\n subFieldState?: FormState\n type: 'ADD_ROW'\n}\n\nexport type REPLACE_ROW = {\n blockType?: string\n path: string\n rowIndex: number\n subFieldState?: FormState\n type: 'REPLACE_ROW'\n}\n\nexport type DUPLICATE_ROW = {\n path: string\n rowIndex: number\n type: 'DUPLICATE_ROW'\n}\n\nexport type MOVE_ROW = {\n moveFromIndex: number\n moveToIndex: number\n path: string\n type: 'MOVE_ROW'\n}\n\nexport type ADD_SERVER_ERRORS = {\n errors: ValidationFieldError[]\n type: 'ADD_SERVER_ERRORS'\n}\n\nexport type SET_ROW_COLLAPSED = {\n path: string\n type: 'SET_ROW_COLLAPSED'\n updatedRows: Row[]\n}\n\nexport type SET_ALL_ROWS_COLLAPSED = {\n path: string\n type: 'SET_ALL_ROWS_COLLAPSED'\n updatedRows: Row[]\n}\n\nexport type FieldAction =\n | ADD_ROW\n | ADD_SERVER_ERRORS\n | DUPLICATE_ROW\n | MODIFY_CONDITION\n | MOVE_ROW\n | REMOVE\n | REMOVE_ROW\n | REPLACE_ROW\n | REPLACE_STATE\n | SET_ALL_ROWS_COLLAPSED\n | SET_ROW_COLLAPSED\n | UPDATE\n | UPDATE_MANY\n\nexport type FormFieldsContext = [FormState, Dispatch<FieldAction>]\n\nexport type Context = {\n addFieldRow: ({\n blockType,\n path,\n rowIndex,\n schemaPath,\n subFieldState,\n }: {\n blockType?: string\n path: string\n rowIndex?: number\n schemaPath: string\n subFieldState?: FormState\n }) => void\n buildRowErrors: () => void\n createFormData: CreateFormData\n disabled: boolean\n dispatchFields: Dispatch<FieldAction>\n /**\n * Form context fields may be outdated and should not be relied on. Instead, prefer `useFormFields`.\n */\n fields: FormState\n formRef: React.RefObject<HTMLFormElement>\n getData: GetData\n getDataByPath: GetDataByPath\n getField: GetField\n getFields: GetFields\n getSiblingData: GetSiblingData\n initializing: boolean\n removeFieldRow: ({ path, rowIndex }: { path: string; rowIndex: number }) => void\n replaceFieldRow: ({\n blockType,\n path,\n rowIndex,\n schemaPath,\n subFieldState,\n }: {\n blockType?: string\n path: string\n rowIndex: number\n schemaPath: string\n subFieldState?: FormState\n }) => void\n replaceState: (state: FormState) => void\n reset: Reset\n setDisabled: (disabled: boolean) => void\n setModified: SetModified\n setProcessing: SetProcessing\n setSubmitted: SetSubmitted\n submit: Submit\n uuid?: string\n validateForm: ValidateForm\n}\n"],"mappings":"AA4LA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUseAsTitle.d.ts","sourceRoot":"","sources":["../../src/hooks/useUseAsTitle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIlE,eAAO,MAAM,gBAAgB,eAAgB,sBAAsB,KAAG,
|
|
1
|
+
{"version":3,"file":"useUseAsTitle.d.ts","sourceRoot":"","sources":["../../src/hooks/useUseAsTitle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIlE,eAAO,MAAM,gBAAgB,eAAgB,sBAAsB,KAAG,WASrE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { flattenTopLevelFields } from 'payload/shared';
|
|
4
4
|
export const useUseTitleField = collection => {
|
|
5
5
|
const {
|
|
6
6
|
admin: {
|
|
@@ -8,7 +8,7 @@ export const useUseTitleField = collection => {
|
|
|
8
8
|
},
|
|
9
9
|
fields
|
|
10
10
|
} = collection;
|
|
11
|
-
const topLevelFields =
|
|
11
|
+
const topLevelFields = flattenTopLevelFields(fields);
|
|
12
12
|
return topLevelFields?.find(field => 'name' in field && field.name === useAsTitle);
|
|
13
13
|
};
|
|
14
14
|
//# sourceMappingURL=useUseAsTitle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUseAsTitle.js","names":["
|
|
1
|
+
{"version":3,"file":"useUseAsTitle.js","names":["flattenTopLevelFields","useUseTitleField","collection","admin","useAsTitle","fields","topLevelFields","find","field","name"],"sources":["../../src/hooks/useUseAsTitle.ts"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientField } from 'payload'\n\nimport { flattenTopLevelFields } from 'payload/shared'\n\nexport const useUseTitleField = (collection: ClientCollectionConfig): ClientField => {\n const {\n admin: { useAsTitle },\n fields,\n } = collection\n\n const topLevelFields = flattenTopLevelFields(fields) as ClientField[]\n\n return topLevelFields?.find((field) => 'name' in field && field.name === useAsTitle)\n}\n"],"mappings":"AAAA;;AAGA,SAASA,qBAAqB,QAAQ;AAEtC,OAAO,MAAMC,gBAAA,GAAoBC,UAAA;EAC/B,MAAM;IACJC,KAAA,EAAO;MAAEC;IAAU,CAAE;IACrBC;EAAM,CACP,GAAGH,UAAA;EAEJ,MAAMI,cAAA,GAAiBN,qBAAA,CAAsBK,MAAA;EAE7C,OAAOC,cAAA,EAAgBC,IAAA,CAAMC,KAAA,IAAU,UAAUA,KAAA,IAASA,KAAA,CAAMC,IAAI,KAAKL,UAAA;AAC3E","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpE,OAAO,KAA+E,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAM3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAErE,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD,GAAG,eAAe,CAAA;AAInB,eAAO,MAAM,YAAY,QAAO,gBAAuC,CAAA;AAEvE,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":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpE,OAAO,KAA+E,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAM3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAErE,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD,GAAG,eAAe,CAAA;AAInB,eAAO,MAAM,YAAY,QAAO,gBAAuC,CAAA;AAEvE,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyKtD,CAAA"}
|
|
@@ -78,7 +78,7 @@ export const ListQueryProvider = ({
|
|
|
78
78
|
const onChangeFn = onQueryChange || onQueryChangeFromProps;
|
|
79
79
|
onChangeFn(newQuery);
|
|
80
80
|
}
|
|
81
|
-
}, [
|
|
81
|
+
}, [currentQuery?.page, currentQuery?.limit, currentQuery?.search, currentQuery?.sort, currentQuery?.where, preferenceKey, defaultLimit, defaultSort, modifySearchParams, onQueryChange, onQueryChangeFromProps, setPreference, router]);
|
|
82
82
|
const handlePageChange = useCallback(async arg => {
|
|
83
83
|
await refineListData({
|
|
84
84
|
page: String(arg)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","qs","React","createContext","useCallback","useContext","useEffect","useMemo","useState","useListDrawerContext","parseSearchParams","usePreferences","Context","useListQuery","ListQueryProvider","children","collectionSlug","data","defaultLimit","defaultSort","modifySearchParams","onQueryChange","onQueryChangeFromProps","preferenceKey","router","setPreference","rawSearchParams","searchParams","currentQuery","setCurrentQuery","refineListData","query","pageQuery","page","updatedPreferences","updatePreferences","limit","Number","sort","newQuery","String","search","where","replace","stringify","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","shouldUpdateQueryString","_jsx","Provider","value"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport type { ListQuery, PaginatedDocs, Sort, Where } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { usePreferences } from '../Preferences/index.js'\n\nexport type ColumnPreferences = Pick<Column, 'accessor' | 'active'>[]\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug: string\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: Sort\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: (query: ListQuery) => void\n readonly preferenceKey?: string\n}\n\nexport type ListQueryContext = {\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: Sort\n query: ListQuery\n refineListData: (args: ListQuery) => Promise<void>\n} & ContextHandlers\n\nconst Context = createContext({} as ListQueryContext)\n\nexport const useListQuery = (): ListQueryContext => useContext(Context)\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n defaultLimit,\n defaultSort,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n preferenceKey,\n}) => {\n 'use no memo'\n const router = useRouter()\n const { setPreference } = usePreferences()\n const rawSearchParams = useSearchParams()\n const searchParams = useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams])\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {}\n }\n })\n\n useEffect(() => {\n if (modifySearchParams) {\n setCurrentQuery(searchParams)\n }\n }, [searchParams, modifySearchParams])\n\n const refineListData = useCallback(\n async (query: ListQuery) => {\n let pageQuery = 'page' in query ? query.page : currentQuery?.page\n\n if ('where' in query || 'search' in query) {\n pageQuery = '1'\n }\n\n const updatedPreferences: Record<string, unknown> = {}\n let updatePreferences = false\n\n if ('limit' in query) {\n updatedPreferences.limit = Number(query.limit)\n updatePreferences = true\n }\n\n if ('sort' in query) {\n updatedPreferences.sort = query.sort\n updatePreferences = true\n }\n\n if (updatePreferences && preferenceKey) {\n await setPreference(preferenceKey, updatedPreferences, true)\n }\n\n const newQuery: ListQuery = {\n limit:\n 'limit' in query\n ? query.limit\n : ((currentQuery?.limit as string) ?? String(defaultLimit)),\n page: pageQuery as string,\n search: 'search' in query ? query.search : (currentQuery?.search as string),\n sort: 'sort' in query ? query.sort : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in query ? query.where : (currentQuery?.where as Where),\n }\n\n if (modifySearchParams) {\n router.replace(`${qs.stringify(newQuery, { addQueryPrefix: true })}`)\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n },\n [\n modifySearchParams,\n currentQuery?.page,\n currentQuery?.limit,\n currentQuery?.sort,\n currentQuery?.where,\n currentQuery?.search,\n preferenceKey,\n router,\n setPreference,\n onQueryChange,\n onQueryChangeFromProps,\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 useEffect(() => {\n if (modifySearchParams) {\n let shouldUpdateQueryString = false\n\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n currentQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n if (defaultSort && !('sort' in currentQuery)) {\n currentQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n setCurrentQuery(currentQuery)\n\n if (shouldUpdateQueryString) {\n router.replace(`?${qs.stringify(currentQuery)}`)\n }\n }\n }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery])\n\n return (\n <Context.Provider\n value={{\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n query: currentQuery,\n refineListData,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","qs","React","createContext","useCallback","useContext","useEffect","useMemo","useState","useListDrawerContext","parseSearchParams","usePreferences","Context","useListQuery","ListQueryProvider","children","collectionSlug","data","defaultLimit","defaultSort","modifySearchParams","onQueryChange","onQueryChangeFromProps","preferenceKey","router","setPreference","rawSearchParams","searchParams","currentQuery","setCurrentQuery","refineListData","query","pageQuery","page","updatedPreferences","updatePreferences","limit","Number","sort","newQuery","String","search","where","replace","stringify","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","shouldUpdateQueryString","_jsx","Provider","value"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport type { ListQuery, PaginatedDocs, Sort, Where } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { usePreferences } from '../Preferences/index.js'\n\nexport type ColumnPreferences = Pick<Column, 'accessor' | 'active'>[]\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug: string\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: Sort\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: (query: ListQuery) => void\n readonly preferenceKey?: string\n}\n\nexport type ListQueryContext = {\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: Sort\n query: ListQuery\n refineListData: (args: ListQuery) => Promise<void>\n} & ContextHandlers\n\nconst Context = createContext({} as ListQueryContext)\n\nexport const useListQuery = (): ListQueryContext => useContext(Context)\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n defaultLimit,\n defaultSort,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n preferenceKey,\n}) => {\n 'use no memo'\n const router = useRouter()\n const { setPreference } = usePreferences()\n const rawSearchParams = useSearchParams()\n const searchParams = useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams])\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {}\n }\n })\n\n useEffect(() => {\n if (modifySearchParams) {\n setCurrentQuery(searchParams)\n }\n }, [searchParams, modifySearchParams])\n\n const refineListData = useCallback(\n async (query: ListQuery) => {\n let pageQuery = 'page' in query ? query.page : currentQuery?.page\n\n if ('where' in query || 'search' in query) {\n pageQuery = '1'\n }\n\n const updatedPreferences: Record<string, unknown> = {}\n let updatePreferences = false\n\n if ('limit' in query) {\n updatedPreferences.limit = Number(query.limit)\n updatePreferences = true\n }\n\n if ('sort' in query) {\n updatedPreferences.sort = query.sort\n updatePreferences = true\n }\n\n if (updatePreferences && preferenceKey) {\n await setPreference(preferenceKey, updatedPreferences, true)\n }\n\n const newQuery: ListQuery = {\n limit:\n 'limit' in query\n ? query.limit\n : ((currentQuery?.limit as string) ?? String(defaultLimit)),\n page: pageQuery as string,\n search: 'search' in query ? query.search : (currentQuery?.search as string),\n sort: 'sort' in query ? query.sort : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in query ? query.where : (currentQuery?.where as Where),\n }\n\n if (modifySearchParams) {\n router.replace(`${qs.stringify(newQuery, { addQueryPrefix: true })}`)\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n },\n [\n currentQuery?.page,\n currentQuery?.limit,\n currentQuery?.search,\n currentQuery?.sort,\n currentQuery?.where,\n preferenceKey,\n defaultLimit,\n defaultSort,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n setPreference,\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 useEffect(() => {\n if (modifySearchParams) {\n let shouldUpdateQueryString = false\n\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n currentQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n if (defaultSort && !('sort' in currentQuery)) {\n currentQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n setCurrentQuery(currentQuery)\n\n if (shouldUpdateQueryString) {\n router.replace(`?${qs.stringify(currentQuery)}`)\n }\n }\n }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery])\n\n return (\n <Context.Provider\n value={{\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n query: currentQuery,\n refineListData,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAKxE,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,SAC3B,mBAAmB,KACxB,OAAO,CAAC,qBAAqB,CAqB/B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB,mBAAmB,KACxB,OAAO,CAAC,4BAA4B,
|
|
1
|
+
{"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAKxE,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,SAC3B,mBAAmB,KACxB,OAAO,CAAC,qBAAqB,CAqB/B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB,mBAAmB,KACxB,OAAO,CAAC,4BAA4B,CA4KtC,CAAA"}
|
|
@@ -137,7 +137,6 @@ export const buildTableState = async args => {
|
|
|
137
137
|
newPrefs = await payload.create(preferencesArgs)?.then(res => res.value);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
const fields = collectionConfig.fields;
|
|
141
140
|
let docs = docsFromArgs;
|
|
142
141
|
let data;
|
|
143
142
|
// lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`
|
|
@@ -156,19 +155,19 @@ export const buildTableState = async args => {
|
|
|
156
155
|
columnState,
|
|
157
156
|
Table
|
|
158
157
|
} = renderTable({
|
|
159
|
-
|
|
158
|
+
clientCollectionConfig,
|
|
159
|
+
collectionConfig,
|
|
160
160
|
columnPreferences: undefined,
|
|
161
161
|
columns,
|
|
162
162
|
docs,
|
|
163
163
|
enableRowSelections,
|
|
164
|
-
fields,
|
|
165
164
|
i18n: req.i18n,
|
|
166
165
|
payload,
|
|
167
166
|
renderRowTypes,
|
|
168
167
|
tableAppearance,
|
|
169
168
|
useAsTitle: collectionConfig.admin.useAsTitle
|
|
170
169
|
});
|
|
171
|
-
const renderedFilters = renderFilters(fields, req.payload.importMap);
|
|
170
|
+
const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap);
|
|
172
171
|
return {
|
|
173
172
|
data,
|
|
174
173
|
preferences: newPrefs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableState.js","names":["dequal","formatErrors","getClientConfig","renderFilters","renderTable","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","preferencesArgs","data","update","create","fields","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0] ?? { id: null, value: {} })\n\n let newPrefs = preferencesResult.value\n\n if (!preferencesResult.id || !dequal(columns, preferencesResult?.columns)) {\n const preferencesArgs = {\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: {\n ...(preferencesResult?.value || {}),\n columns,\n },\n },\n depth: 0,\n req,\n }\n\n if (preferencesResult.id) {\n newPrefs = await payload\n .update({\n ...preferencesArgs,\n id: preferencesResult.id,\n })\n ?.then((res) => res.value as ListPreferences)\n } else {\n newPrefs = await payload.create(preferencesArgs)?.then((res) => res.value as ListPreferences)\n }\n }\n\n const fields = collectionConfig.fields\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n collectionConfig: clientCollectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n fields,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"AASA,SAASA,MAAM,QAAQ;AACvB,SAASC,YAAY,QAAQ;AAK7B,SAASC,eAAe,QAAQ;AAChC,SAASC,aAAa,EAAEC,WAAW,QAAQ;AA0B3C,OAAO,MAAMC,sBAAA,GAAyB,MACpCC,IAAA;EAEA,MAAM;IAAEC;EAAG,CAAE,GAAGD,IAAA;EAEhB,IAAI;IACF,MAAME,GAAA,GAAM,MAAMC,eAAA,CAAgBH,IAAA;IAClC,OAAOE,GAAA;EACT,EAAE,OAAOE,GAAA,EAAK;IACZH,GAAA,CAAII,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;MAAEH,GAAA;MAAKI,GAAA,EAAK;IAAyC;IAE9E,IAAIJ,GAAA,CAAIK,OAAO,KAAK,8CAA8C;MAChE,OAAO;QACLA,OAAA,EAASL,GAAA,CAAIK;MACf;IACF;IAEA,IAAIL,GAAA,CAAIK,OAAO,KAAK,gBAAgB;MAClC,OAAO;IACT;IAEA,OAAOd,YAAA,CAAaS,GAAA;EACtB;AACF;AAEA,OAAO,MAAMD,eAAA,GAAkB,MAC7BH,IAAA;EAEA,MAAM;IACJU,cAAc;IACdC,OAAO;IACPC,IAAA,EAAMC,YAAY;IAClBC,mBAAmB;IACnBC,KAAK;IACLC,cAAc;IACdf,GAAG;IACHA,GAAA,EAAK;MACHgB,IAAI;MACJZ,OAAO;MACPA,OAAA,EAAS;QAAEa;MAAM,CAAE;MACnBC;IAAI,CACL;IACDC;EAAe,CAChB,GAAGpB,IAAA;EAEJ,MAAMqB,gBAAA,GAAmBF,IAAA,EAAMG,UAAA;EAE/B,MAAMC,aAAA,GAAgBL,MAAA,CAAOM,KAAK,CAACL,IAAI;EAEvC;EACA,IAAIE,gBAAA,EAAkB;IACpB,MAAMI,mBAAA,GAAsBpB,OAAA,CAAQqB,WAAW,CAACL,gBAAA,CAAiB,CAACH,MAAM,CAACS,MAAM,EAAEH,KAAA;IAEjF;IACA,IAAIC,mBAAA,EAAqB;MACvB,MAAMG,cAAA,GAAiB,MAAMH,mBAAA,CAAoB;QAAExB;MAAI;MAEvD,IAAI,CAAC2B,cAAA,EAAgB;QACnB,MAAM,IAAIC,KAAA,CAAM;MAClB;MAEA;IACF,OAAO,IAAIN,aAAA,KAAkBF,gBAAA,EAAkB;MAC7C,MAAM,IAAIQ,KAAA,CAAM;IAClB;EACF,OAAO;IACL,MAAMC,QAAA,GAAW,MAAMzB,OAAA,CAAQ0B,IAAI,CAAC;MAClCT,UAAA,EAAYC,aAAA;MACZS,KAAA,EAAO;MACPC,KAAA,EAAO;MACPC,UAAA,EAAY;IACd;IAEA;IACA,IAAIJ,QAAA,CAASlB,IAAI,CAACuB,MAAM,EAAE;MACxB,MAAM,IAAIN,KAAA,CAAM;IAClB;EACF;EAEA,MAAMO,YAAA,GAAexC,eAAA,CAAgB;IACnCsB,MAAA;IACAD,IAAA;IACAoB,SAAA,EAAWhC,OAAA,CAAQgC;EACrB;EAEA,IAAIC,gBAAA;EACJ,IAAIC,sBAAA;EAEJ,IAAItC,GAAA,CAAII,OAAO,CAACqB,WAAW,CAAChB,cAAA,CAAe,EAAE;IAC3C4B,gBAAA,GAAmBrC,GAAA,CAAII,OAAO,CAACqB,WAAW,CAAChB,cAAA,CAAe,CAACQ,MAAM;IACjEqB,sBAAA,GAAyBH,YAAA,CAAaV,WAAW,CAACK,IAAI,CACnDT,UAAA,IAAeA,UAAA,CAAWkB,IAAI,KAAK9B,cAAA;EAExC;EAEA;EACA,MAAM+B,cAAA,GAAiB,GAAG/B,cAAA,OAAqB;EAE/C,MAAMgC,iBAAA,GAAoB,MAAMrC,OAAA,CAC7B0B,IAAI,CAAC;IACJT,UAAA,EAAY;IACZU,KAAA,EAAO;IACPC,KAAA,EAAO;IACPC,UAAA,EAAY;IACZS,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQL;QACV;MACF,GACA;QACE,mBAAmB;UACjBK,MAAA,EAAQ3B,IAAA,CAAKG;QACf;MACF,GACA;QACE,cAAc;UACZwB,MAAA,EAAQ3B,IAAA,CAAK4B;QACf;MACF;IAEJ;EACF,GACCC,IAAI,CAAE9C,GAAA,IAAQA,GAAA,CAAIU,IAAI,CAAC,EAAE,IAAI;IAAEmC,EAAA,EAAI;IAAME,KAAA,EAAO,CAAC;EAAE;EAEtD,IAAIC,QAAA,GAAWR,iBAAA,CAAkBO,KAAK;EAEtC,IAAI,CAACP,iBAAA,CAAkBK,EAAE,IAAI,CAACrD,MAAA,CAAOiB,OAAA,EAAS+B,iBAAA,EAAmB/B,OAAA,GAAU;IACzE,MAAMwC,eAAA,GAAkB;MACtB7B,UAAA,EAAY;MACZ8B,IAAA,EAAM;QACJP,GAAA,EAAKJ,cAAA;QACLtB,IAAA,EAAM;UACJG,UAAA,EAAYH,IAAA,CAAKG,UAAU;UAC3B2B,KAAA,EAAO9B,IAAA,CAAK4B;QACd;QACAE,KAAA,EAAO;UACL,IAAIP,iBAAA,EAAmBO,KAAA,IAAS,CAAC,CAAC;UAClCtC;QACF;MACF;MACAqB,KAAA,EAAO;MACP/B;IACF;IAEA,IAAIyC,iBAAA,CAAkBK,EAAE,EAAE;MACxBG,QAAA,GAAW,MAAM7C,OAAA,CACdgD,MAAM,CAAC;QACN,GAAGF,eAAe;QAClBJ,EAAA,EAAIL,iBAAA,CAAkBK;MACxB,IACEC,IAAA,CAAM9C,GAAA,IAAQA,GAAA,CAAI+C,KAAK;IAC7B,OAAO;MACLC,QAAA,GAAW,MAAM7C,OAAA,CAAQiD,MAAM,CAACH,eAAA,GAAkBH,IAAA,CAAM9C,GAAA,IAAQA,GAAA,CAAI+C,KAAK;IAC3E;EACF;EAEA,MAAMM,MAAA,GAASjB,gBAAA,CAAiBiB,MAAM;EAEtC,IAAI3C,IAAA,GAAOC,YAAA;EACX,IAAIuC,IAAA;EAEJ;EAEA,IAAI,CAACxC,IAAA,IAAQG,KAAA,EAAO;IAClBqC,IAAA,GAAO,MAAM/C,OAAA,CAAQ0B,IAAI,CAAC;MACxBT,UAAA,EAAYZ,cAAA;MACZsB,KAAA,EAAO;MACPC,KAAA,EAAOlB,KAAA,EAAOkB,KAAA,GAAQuB,QAAA,CAASzC,KAAA,CAAMkB,KAAK,EAAE,MAAMwB,SAAA;MAClDC,IAAA,EAAM3C,KAAA,EAAO2C,IAAA,GAAOF,QAAA,CAASzC,KAAA,CAAM2C,IAAI,EAAE,MAAMD,SAAA;MAC/CE,IAAA,EAAM5C,KAAA,EAAO4C,IAAA;MACbhB,KAAA,EAAO5B,KAAA,EAAO4B;IAChB;IAEA/B,IAAA,GAAOwC,IAAA,CAAKxC,IAAI;EAClB;EAEA,MAAM;IAAEgD,WAAW;IAAEC;EAAK,CAAE,GAAG/D,WAAA,CAAY;IACzCwC,gBAAA,EAAkBC,sBAAA;IAClBuB,iBAAA,EAAmBL,SAAA;IACnB9C,OAAA;IACAC,IAAA;IACAE,mBAAA;IACAyC,MAAA;IACAtC,IAAA,EAAMhB,GAAA,CAAIgB,IAAI;IACdZ,OAAA;IACAW,cAAA;IACAI,eAAA;IACA2C,UAAA,EAAYzB,gBAAA,CAAiBd,KAAK,CAACuC;EACrC;EAEA,MAAMC,eAAA,GAAkBnE,aAAA,CAAc0D,MAAA,EAAQtD,GAAA,CAAII,OAAO,CAACgC,SAAS;EAEnE,OAAO;IACLe,IAAA;IACAa,WAAA,EAAaf,QAAA;IACbc,eAAA;IACAE,KAAA,EAAON,WAAA;IACPC;EACF;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildTableState.js","names":["dequal","formatErrors","getClientConfig","renderFilters","renderTable","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","preferencesArgs","data","update","create","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n pagination: false,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0] ?? { id: null, value: {} })\n\n let newPrefs = preferencesResult.value\n\n if (!preferencesResult.id || !dequal(columns, preferencesResult?.columns)) {\n const preferencesArgs = {\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: {\n ...(preferencesResult?.value || {}),\n columns,\n },\n },\n depth: 0,\n req,\n }\n\n if (preferencesResult.id) {\n newPrefs = await payload\n .update({\n ...preferencesArgs,\n id: preferencesResult.id,\n })\n ?.then((res) => res.value as ListPreferences)\n } else {\n newPrefs = await payload.create(preferencesArgs)?.then((res) => res.value as ListPreferences)\n }\n }\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n collectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import type { ClientCollectionConfig, CollectionConfig, Field, ImportMap, PaginatedDocs, Payload } from 'payload';
|
|
2
1
|
import { type I18nClient } from '@payloadcms/translations';
|
|
2
|
+
import { type ClientCollectionConfig, type CollectionConfig, type Field, type ImportMap, type PaginatedDocs, type Payload, type SanitizedCollectionConfig } from 'payload';
|
|
3
3
|
import type { Column } from '../exports/client/index.js';
|
|
4
4
|
import type { ColumnPreferences } from '../providers/ListQuery/index.js';
|
|
5
5
|
export declare const renderFilters: (fields: Field[], importMap: ImportMap) => Map<string, React.ReactNode>;
|
|
6
|
-
export declare const renderTable: ({ collectionConfig, columnPreferences, columns: columnsFromArgs, customCellProps, docs, enableRowSelections,
|
|
7
|
-
|
|
6
|
+
export declare const renderTable: ({ clientCollectionConfig, collectionConfig, columnPreferences, columns: columnsFromArgs, customCellProps, docs, enableRowSelections, i18n, payload, renderRowTypes, tableAppearance, useAsTitle, }: {
|
|
7
|
+
clientCollectionConfig: ClientCollectionConfig;
|
|
8
|
+
collectionConfig: SanitizedCollectionConfig;
|
|
8
9
|
columnPreferences: ColumnPreferences;
|
|
9
10
|
columns?: ColumnPreferences;
|
|
10
11
|
customCellProps?: Record<string, any>;
|
|
11
12
|
docs: PaginatedDocs["docs"];
|
|
12
13
|
drawerSlug?: string;
|
|
13
14
|
enableRowSelections: boolean;
|
|
14
|
-
fields: Field[];
|
|
15
15
|
i18n: I18nClient;
|
|
16
16
|
payload: Payload;
|
|
17
17
|
renderRowTypes?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAC/B,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AASxE,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,uMAarB;IACD,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CACpD,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CA8CvB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { getTranslation } from '@payloadcms/translations';
|
|
3
|
-
import { fieldIsHiddenOrDisabled } from 'payload/shared';
|
|
3
|
+
import { fieldIsHiddenOrDisabled, flattenTopLevelFields } from 'payload/shared';
|
|
4
4
|
import { RenderServerComponent } from '../elements/RenderServerComponent/index.js';
|
|
5
5
|
import { buildColumnState } from '../elements/TableColumns/buildColumnState.js';
|
|
6
6
|
import { filterFields } from '../elements/TableColumns/filterFields.js';
|
|
@@ -20,20 +20,21 @@ export const renderFilters = (fields, importMap) => fields.reduce((acc, field) =
|
|
|
20
20
|
return acc;
|
|
21
21
|
}, new Map());
|
|
22
22
|
export const renderTable = ({
|
|
23
|
+
clientCollectionConfig,
|
|
23
24
|
collectionConfig,
|
|
24
25
|
columnPreferences,
|
|
25
26
|
columns: columnsFromArgs,
|
|
26
27
|
customCellProps,
|
|
27
28
|
docs,
|
|
28
29
|
enableRowSelections,
|
|
29
|
-
fields,
|
|
30
30
|
i18n,
|
|
31
31
|
payload,
|
|
32
32
|
renderRowTypes,
|
|
33
33
|
tableAppearance,
|
|
34
34
|
useAsTitle
|
|
35
35
|
}) => {
|
|
36
|
-
|
|
36
|
+
// Ensure that columns passed as args comply with the field config, i.e. `hidden`, `disableListColumn`, etc.
|
|
37
|
+
const columns = columnsFromArgs ? columnsFromArgs?.filter(column => flattenTopLevelFields(clientCollectionConfig.fields, true)?.some(field => 'name' in field && field.name === column.accessor)) : getInitialColumns(filterFields(clientCollectionConfig.fields), useAsTitle, clientCollectionConfig?.admin?.defaultColumns);
|
|
37
38
|
const columnState = buildColumnState({
|
|
38
39
|
beforeRows: renderRowTypes ? [{
|
|
39
40
|
accessor: 'collection',
|
|
@@ -41,14 +42,14 @@ export const renderTable = ({
|
|
|
41
42
|
field: null,
|
|
42
43
|
Heading: i18n.t('version:type'),
|
|
43
44
|
renderedCells: docs.map((_, i) => /*#__PURE__*/_jsx(Pill, {
|
|
44
|
-
children: getTranslation(
|
|
45
|
+
children: getTranslation(clientCollectionConfig.labels.singular, i18n)
|
|
45
46
|
}, i))
|
|
46
47
|
}] : undefined,
|
|
48
|
+
clientCollectionConfig,
|
|
47
49
|
collectionConfig,
|
|
48
50
|
columnPreferences,
|
|
49
51
|
columns,
|
|
50
52
|
enableRowSelections,
|
|
51
|
-
fields,
|
|
52
53
|
i18n,
|
|
53
54
|
// sortColumnProps,
|
|
54
55
|
customCellProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTable.js","names":["getTranslation","fieldIsHiddenOrDisabled","RenderServerComponent","buildColumnState","filterFields","getInitialColumns","Pill","Table","renderFilters","fields","importMap","reduce","acc","field","admin","components","Filter","set","name","Component","Map","renderTable","collectionConfig","columnPreferences","columns","columnsFromArgs","customCellProps","docs","enableRowSelections","i18n","payload","renderRowTypes","tableAppearance","useAsTitle","
|
|
1
|
+
{"version":3,"file":"renderTable.js","names":["getTranslation","fieldIsHiddenOrDisabled","flattenTopLevelFields","RenderServerComponent","buildColumnState","filterFields","getInitialColumns","Pill","Table","renderFilters","fields","importMap","reduce","acc","field","admin","components","Filter","set","name","Component","Map","renderTable","clientCollectionConfig","collectionConfig","columnPreferences","columns","columnsFromArgs","customCellProps","docs","enableRowSelections","i18n","payload","renderRowTypes","tableAppearance","useAsTitle","filter","column","some","accessor","defaultColumns","columnState","beforeRows","active","Heading","t","renderedCells","map","_","i","_jsx","labels","singular","undefined","appearance","data"],"sources":["../../src/utilities/renderTable.tsx"],"sourcesContent":["import { getTranslation, type I18nClient } from '@payloadcms/translations'\nimport {\n type ClientCollectionConfig,\n type CollectionConfig,\n type Field,\n type ImportMap,\n type PaginatedDocs,\n type Payload,\n type SanitizedCollectionConfig,\n} from 'payload'\nimport { fieldIsHiddenOrDisabled, flattenTopLevelFields } from 'payload/shared'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport type { Column } from '../exports/client/index.js'\nimport type { ColumnPreferences } from '../providers/ListQuery/index.js'\n\nimport { RenderServerComponent } from '../elements/RenderServerComponent/index.js'\nimport { buildColumnState } from '../elements/TableColumns/buildColumnState.js'\nimport { filterFields } from '../elements/TableColumns/filterFields.js'\nimport { getInitialColumns } from '../elements/TableColumns/getInitialColumns.js'\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { Pill, Table } from '../exports/client/index.js'\n\nexport const renderFilters = (\n fields: Field[],\n importMap: ImportMap,\n): Map<string, React.ReactNode> =>\n fields.reduce(\n (acc, field) => {\n if (fieldIsHiddenOrDisabled(field)) {\n return acc\n }\n\n if ('name' in field && field.admin?.components?.Filter) {\n acc.set(\n field.name,\n RenderServerComponent({\n Component: field.admin.components?.Filter,\n importMap,\n }),\n )\n }\n\n return acc\n },\n new Map() as Map<string, React.ReactNode>,\n )\n\nexport const renderTable = ({\n clientCollectionConfig,\n collectionConfig,\n columnPreferences,\n columns: columnsFromArgs,\n customCellProps,\n docs,\n enableRowSelections,\n i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle,\n}: {\n clientCollectionConfig: ClientCollectionConfig\n collectionConfig: SanitizedCollectionConfig\n columnPreferences: ColumnPreferences\n columns?: ColumnPreferences\n customCellProps?: Record<string, any>\n docs: PaginatedDocs['docs']\n drawerSlug?: string\n enableRowSelections: boolean\n i18n: I18nClient\n payload: Payload\n renderRowTypes?: boolean\n tableAppearance?: 'condensed' | 'default'\n useAsTitle: CollectionConfig['admin']['useAsTitle']\n}): {\n columnState: Column[]\n Table: React.ReactNode\n} => {\n // Ensure that columns passed as args comply with the field config, i.e. `hidden`, `disableListColumn`, etc.\n const columns = columnsFromArgs\n ? columnsFromArgs?.filter((column) =>\n flattenTopLevelFields(clientCollectionConfig.fields, true)?.some(\n (field) => 'name' in field && field.name === column.accessor,\n ),\n )\n : getInitialColumns(\n filterFields(clientCollectionConfig.fields),\n useAsTitle,\n clientCollectionConfig?.admin?.defaultColumns,\n )\n\n const columnState = buildColumnState({\n beforeRows: renderRowTypes\n ? [\n {\n accessor: 'collection',\n active: true,\n field: null,\n Heading: i18n.t('version:type'),\n renderedCells: docs.map((_, i) => (\n <Pill key={i}>{getTranslation(clientCollectionConfig.labels.singular, i18n)}</Pill>\n )),\n },\n ]\n : undefined,\n clientCollectionConfig,\n collectionConfig,\n columnPreferences,\n columns,\n enableRowSelections,\n i18n,\n // sortColumnProps,\n customCellProps,\n docs,\n payload,\n useAsTitle,\n })\n\n return {\n columnState,\n Table: <Table appearance={tableAppearance} columns={columnState} data={docs} />,\n }\n}\n"],"mappings":";AAAA,SAASA,cAAc,QAAyB;AAUhD,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ;AAM/D,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,YAAY,QAAQ;AAC7B,SAASC,iBAAiB,QAAQ;AAClC;AACA,SAASC,IAAI,EAAEC,KAAK,QAAQ;AAE5B,OAAO,MAAMC,aAAA,GAAgBA,CAC3BC,MAAA,EACAC,SAAA,KAEAD,MAAA,CAAOE,MAAM,CACX,CAACC,GAAA,EAAKC,KAAA;EACJ,IAAIb,uBAAA,CAAwBa,KAAA,GAAQ;IAClC,OAAOD,GAAA;EACT;EAEA,IAAI,UAAUC,KAAA,IAASA,KAAA,CAAMC,KAAK,EAAEC,UAAA,EAAYC,MAAA,EAAQ;IACtDJ,GAAA,CAAIK,GAAG,CACLJ,KAAA,CAAMK,IAAI,EACVhB,qBAAA,CAAsB;MACpBiB,SAAA,EAAWN,KAAA,CAAMC,KAAK,CAACC,UAAU,EAAEC,MAAA;MACnCN;IACF;EAEJ;EAEA,OAAOE,GAAA;AACT,GACA,IAAIQ,GAAA;AAGR,OAAO,MAAMC,WAAA,GAAcA,CAAC;EAC1BC,sBAAsB;EACtBC,gBAAgB;EAChBC,iBAAiB;EACjBC,OAAA,EAASC,eAAe;EACxBC,eAAe;EACfC,IAAI;EACJC,mBAAmB;EACnBC,IAAI;EACJC,OAAO;EACPC,cAAc;EACdC,eAAe;EACfC;AAAU,CAeX;EAIC;EACA,MAAMT,OAAA,GAAUC,eAAA,GACZA,eAAA,EAAiBS,MAAA,CAAQC,MAAA,IACvBnC,qBAAA,CAAsBqB,sBAAA,CAAuBb,MAAM,EAAE,OAAO4B,IAAA,CACzDxB,KAAA,IAAU,UAAUA,KAAA,IAASA,KAAA,CAAMK,IAAI,KAAKkB,MAAA,CAAOE,QAAQ,KAGhEjC,iBAAA,CACED,YAAA,CAAakB,sBAAA,CAAuBb,MAAM,GAC1CyB,UAAA,EACAZ,sBAAA,EAAwBR,KAAA,EAAOyB,cAAA;EAGrC,MAAMC,WAAA,GAAcrC,gBAAA,CAAiB;IACnCsC,UAAA,EAAYT,cAAA,GACR,CACE;MACEM,QAAA,EAAU;MACVI,MAAA,EAAQ;MACR7B,KAAA,EAAO;MACP8B,OAAA,EAASb,IAAA,CAAKc,CAAC,CAAC;MAChBC,aAAA,EAAejB,IAAA,CAAKkB,GAAG,CAAC,CAACC,CAAA,EAAGC,CAAA,kBAC1BC,IAAA,CAAC3C,IAAA;kBAAcP,cAAA,CAAeuB,sBAAA,CAAuB4B,MAAM,CAACC,QAAQ,EAAErB,IAAA;SAA3DkB,CAAA;IAEf,EACD,GACDI,SAAA;IACJ9B,sBAAA;IACAC,gBAAA;IACAC,iBAAA;IACAC,OAAA;IACAI,mBAAA;IACAC,IAAA;IACA;IACAH,eAAA;IACAC,IAAA;IACAG,OAAA;IACAG;EACF;EAEA,OAAO;IACLM,WAAA;IACAjC,KAAA,eAAO0C,IAAA,CAAC1C,KAAA;MAAM8C,UAAA,EAAYpB,eAAA;MAAiBR,OAAA,EAASe,WAAA;MAAac,IAAA,EAAM1B;;EACzE;AACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"ts-essentials": "10.0.3",
|
|
133
133
|
"use-context-selector": "2.0.0",
|
|
134
134
|
"uuid": "10.0.0",
|
|
135
|
-
"@payloadcms/translations": "3.
|
|
135
|
+
"@payloadcms/translations": "3.6.0"
|
|
136
136
|
},
|
|
137
137
|
"devDependencies": {
|
|
138
138
|
"@babel/cli": "7.25.9",
|
|
@@ -149,14 +149,14 @@
|
|
|
149
149
|
"esbuild": "0.24.0",
|
|
150
150
|
"esbuild-sass-plugin": "3.3.1",
|
|
151
151
|
"eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124",
|
|
152
|
-
"payload": "3.
|
|
152
|
+
"payload": "3.6.0",
|
|
153
153
|
"@payloadcms/eslint-config": "3.0.0"
|
|
154
154
|
},
|
|
155
155
|
"peerDependencies": {
|
|
156
156
|
"next": "^15.0.0",
|
|
157
157
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
158
158
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
159
|
-
"payload": "3.
|
|
159
|
+
"payload": "3.6.0"
|
|
160
160
|
},
|
|
161
161
|
"engines": {
|
|
162
162
|
"node": "^18.20.2 || >=20.9.0"
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ClientField, Field } from 'payload';
|
|
2
|
-
/**
|
|
3
|
-
* Flattens a collection's fields into a single array of fields, as long
|
|
4
|
-
* as the fields do not affect data.
|
|
5
|
-
*
|
|
6
|
-
* @param fields
|
|
7
|
-
* @param keepPresentationalFields if true, will skip flattening fields that are presentational only
|
|
8
|
-
*/
|
|
9
|
-
export declare const flattenFieldMap: <T extends ClientField | Field>(fields: T[], keepPresentationalFields?: boolean) => T[];
|
|
10
|
-
//# sourceMappingURL=flattenFieldMap.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flattenFieldMap.d.ts","sourceRoot":"","sources":["../../src/utilities/flattenFieldMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIjD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,UACnD,CAAC,EAAE,6BACgB,OAAO,KACjC,CAAC,EAuBH,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { fieldIsPresentationalOnly } from 'payload/shared';
|
|
2
|
-
/**
|
|
3
|
-
* Flattens a collection's fields into a single array of fields, as long
|
|
4
|
-
* as the fields do not affect data.
|
|
5
|
-
*
|
|
6
|
-
* @param fields
|
|
7
|
-
* @param keepPresentationalFields if true, will skip flattening fields that are presentational only
|
|
8
|
-
*/
|
|
9
|
-
export const flattenFieldMap = (fields, keepPresentationalFields) => {
|
|
10
|
-
return fields?.reduce((acc, field) => {
|
|
11
|
-
if ('name' in field || keepPresentationalFields && fieldIsPresentationalOnly(field)) {
|
|
12
|
-
acc.push(field);
|
|
13
|
-
return acc;
|
|
14
|
-
} else if ('fields' in field) {
|
|
15
|
-
acc.push(...flattenFieldMap(field.fields, keepPresentationalFields));
|
|
16
|
-
} else if (field.type === 'tabs' && 'tabs' in field && Array.isArray(field.tabs)) {
|
|
17
|
-
return [...acc, ...field.tabs.reduce((tabAcc, tab) => {
|
|
18
|
-
return [...tabAcc, ...('name' in tab ? [{
|
|
19
|
-
...tab
|
|
20
|
-
}] : flattenFieldMap(tab.fields, keepPresentationalFields))];
|
|
21
|
-
}, [])];
|
|
22
|
-
}
|
|
23
|
-
return acc;
|
|
24
|
-
}, []);
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=flattenFieldMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flattenFieldMap.js","names":["fieldIsPresentationalOnly","flattenFieldMap","fields","keepPresentationalFields","reduce","acc","field","push","type","Array","isArray","tabs","tabAcc","tab"],"sources":["../../src/utilities/flattenFieldMap.ts"],"sourcesContent":["import type { ClientField, Field } from 'payload'\n\nimport { fieldIsPresentationalOnly } from 'payload/shared'\n\n/**\n * Flattens a collection's fields into a single array of fields, as long\n * as the fields do not affect data.\n *\n * @param fields\n * @param keepPresentationalFields if true, will skip flattening fields that are presentational only\n */\nexport const flattenFieldMap = <T extends ClientField | Field>(\n fields: T[],\n keepPresentationalFields?: boolean,\n): T[] => {\n return fields?.reduce((acc, field) => {\n if ('name' in field || (keepPresentationalFields && fieldIsPresentationalOnly(field))) {\n acc.push(field)\n return acc\n } else if ('fields' in field) {\n acc.push(...flattenFieldMap(field.fields as T[], keepPresentationalFields))\n } else if (field.type === 'tabs' && 'tabs' in field && Array.isArray(field.tabs)) {\n return [\n ...acc,\n ...field.tabs.reduce((tabAcc, tab) => {\n return [\n ...tabAcc,\n ...('name' in tab\n ? [{ ...tab }]\n : flattenFieldMap(tab.fields as T[], keepPresentationalFields)),\n ]\n }, []),\n ]\n }\n\n return acc\n }, [])\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAE1C;;;;;;;AAOA,OAAO,MAAMC,eAAA,GAAkBA,CAC7BC,MAAA,EACAC,wBAAA;EAEA,OAAOD,MAAA,EAAQE,MAAA,CAAO,CAACC,GAAA,EAAKC,KAAA;IAC1B,IAAI,UAAUA,KAAA,IAAUH,wBAAA,IAA4BH,yBAAA,CAA0BM,KAAA,GAAS;MACrFD,GAAA,CAAIE,IAAI,CAACD,KAAA;MACT,OAAOD,GAAA;IACT,OAAO,IAAI,YAAYC,KAAA,EAAO;MAC5BD,GAAA,CAAIE,IAAI,IAAIN,eAAA,CAAgBK,KAAA,CAAMJ,MAAM,EAASC,wBAAA;IACnD,OAAO,IAAIG,KAAA,CAAME,IAAI,KAAK,UAAU,UAAUF,KAAA,IAASG,KAAA,CAAMC,OAAO,CAACJ,KAAA,CAAMK,IAAI,GAAG;MAChF,OAAO,C,GACFN,GAAA,E,GACAC,KAAA,CAAMK,IAAI,CAACP,MAAM,CAAC,CAACQ,MAAA,EAAQC,GAAA;QAC5B,OAAO,C,GACFD,MAAA,E,IACC,UAAUC,GAAA,GACV,CAAC;UAAE,GAAGA;QAAI,EAAE,GACZZ,eAAA,CAAgBY,GAAA,CAAIX,MAAM,EAASC,wBAAA,GACxC;MACH,GAAG,EAAE,EACN;IACH;IAEA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP","ignoreList":[]}
|