@payloadcms/ui 3.23.0-canary.f63b80a → 3.23.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/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +17 -1
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +52 -7
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +4 -11
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
- package/dist/elements/ViewDescription/index.d.ts +0 -1
- package/dist/elements/ViewDescription/index.d.ts.map +1 -1
- package/dist/elements/ViewDescription/index.js +1 -2
- package/dist/elements/ViewDescription/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts +2 -2
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +1 -0
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +59 -43
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js +2 -0
- package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/types.d.ts +1 -0
- package/dist/elements/WhereBuilder/Condition/Select/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts +5 -16
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +114 -276
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/types.d.ts +2 -2
- package/dist/elements/WhereBuilder/Condition/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/types.js.map +1 -1
- package/dist/elements/WhereBuilder/field-types.d.ts +1 -92
- package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/field-types.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +168 -259
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/{reduceClientFields.d.ts → reduceFields.d.ts} +5 -4
- package/dist/elements/WhereBuilder/reduceFields.d.ts.map +1 -0
- package/dist/elements/WhereBuilder/{reduceClientFields.js → reduceFields.js} +8 -8
- package/dist/elements/WhereBuilder/reduceFields.js.map +1 -0
- package/dist/elements/WhereBuilder/types.d.ts +15 -2
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/elements/WhereBuilder/validateWhereQuery.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
- package/dist/exports/client/{CodeEditor-G3Y4UHC4.js → CodeEditor-BMYVMDNZ.js} +2 -2
- package/dist/exports/client/chunk-CQQHQHCB.js +26 -0
- package/dist/exports/client/{chunk-4L367VSB.js.map → chunk-CQQHQHCB.js.map} +3 -3
- package/dist/exports/client/index.js +23 -23
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Blocks/BlockRow.d.ts +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js +23 -31
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +1 -1
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +4 -6
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +2 -9
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -2
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -2
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/providers/Config/index.d.ts +2 -2
- package/dist/providers/Config/index.d.ts.map +1 -1
- package/dist/providers/Config/index.js +2 -17
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +11 -2
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +1 -3
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +1 -4
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
- package/dist/utilities/copyDataFromLocale.js +15 -13
- package/dist/utilities/copyDataFromLocale.js.map +1 -1
- package/dist/utilities/formatDate.d.ts +2 -1
- package/dist/utilities/formatDate.d.ts.map +1 -1
- package/dist/utilities/formatDate.js +15 -3
- package/dist/utilities/formatDate.js.map +1 -1
- package/dist/utilities/getClientConfig.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.d.ts +2 -1
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +3 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/ViewDescription/index.scss +0 -7
- package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +0 -1
- package/dist/elements/WhereBuilder/reduceClientFields.js.map +0 -1
- package/dist/exports/client/chunk-4L367VSB.js +0 -26
- /package/dist/exports/client/{CodeEditor-G3Y4UHC4.js.map → CodeEditor-BMYVMDNZ.js.map} +0 -0
|
@@ -4,11 +4,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
import * as qs from 'qs-esm';
|
|
5
5
|
import React, { useCallback, useEffect, useReducer, useState } from 'react';
|
|
6
6
|
import { useDebounce } from '../../../../hooks/useDebounce.js';
|
|
7
|
+
import { useEffectEvent } from '../../../../hooks/useEffectEvent.js';
|
|
7
8
|
import { useConfig } from '../../../../providers/Config/index.js';
|
|
8
9
|
import { useTranslation } from '../../../../providers/Translation/index.js';
|
|
9
10
|
import { ReactSelect } from '../../../ReactSelect/index.js';
|
|
10
|
-
import './index.scss';
|
|
11
11
|
import optionsReducer from './optionsReducer.js';
|
|
12
|
+
import './index.scss';
|
|
12
13
|
const baseClass = 'condition-value-relationship';
|
|
13
14
|
const maxResultsPerRequest = 10;
|
|
14
15
|
export const RelationshipFilter = props => {
|
|
@@ -36,23 +37,18 @@ export const RelationshipFilter = props => {
|
|
|
36
37
|
const hasMultipleRelations = Array.isArray(relationTo);
|
|
37
38
|
const [options, dispatchOptions] = useReducer(optionsReducer, []);
|
|
38
39
|
const [search, setSearch] = useState('');
|
|
40
|
+
const debouncedSearch = useDebounce(search, 300);
|
|
39
41
|
const [errorLoading, setErrorLoading] = useState('');
|
|
40
42
|
const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false);
|
|
41
|
-
const debouncedSearch = useDebounce(search, 300);
|
|
42
43
|
const {
|
|
43
44
|
i18n,
|
|
44
45
|
t
|
|
45
46
|
} = useTranslation();
|
|
46
47
|
const relationSlugs = hasMultipleRelations ? relationTo : [relationTo];
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
52
|
-
return map;
|
|
53
|
-
};
|
|
54
|
-
const nextPageByRelationshipRef = React.useRef(initialRelationMap());
|
|
55
|
-
const partiallyLoadedRelationshipSlugs = React.useRef(relationSlugs);
|
|
48
|
+
const loadedRelationships = React.useRef(new Map(relationSlugs.map(relation => [relation, {
|
|
49
|
+
hasLoadedAll: false,
|
|
50
|
+
nextPage: 1
|
|
51
|
+
}])));
|
|
56
52
|
const addOptions = useCallback((data, relation_0) => {
|
|
57
53
|
const collection = getEntityConfig({
|
|
58
54
|
collectionSlug: relation_0
|
|
@@ -66,23 +62,23 @@ export const RelationshipFilter = props => {
|
|
|
66
62
|
relation: relation_0
|
|
67
63
|
});
|
|
68
64
|
}, [hasMultipleRelations, i18n, getEntityConfig]);
|
|
69
|
-
const
|
|
65
|
+
const loadOptions = useEffectEvent(async ({
|
|
70
66
|
abortController,
|
|
71
67
|
relationSlug
|
|
72
68
|
}) => {
|
|
73
|
-
|
|
69
|
+
const loadedRelationship = loadedRelationships.current.get(relationSlug);
|
|
70
|
+
if (relationSlug && !loadedRelationship.hasLoadedAll) {
|
|
74
71
|
const collection_0 = getEntityConfig({
|
|
75
72
|
collectionSlug: relationSlug
|
|
76
73
|
});
|
|
77
74
|
const fieldToSearch = collection_0?.admin?.useAsTitle || 'id';
|
|
78
|
-
const pageIndex = nextPageByRelationshipRef.current.get(relationSlug);
|
|
79
75
|
const where = {
|
|
80
76
|
and: []
|
|
81
77
|
};
|
|
82
78
|
const query = {
|
|
83
79
|
depth: 0,
|
|
84
80
|
limit: maxResultsPerRequest,
|
|
85
|
-
page:
|
|
81
|
+
page: loadedRelationship.nextPage,
|
|
86
82
|
select: {
|
|
87
83
|
[fieldToSearch]: true
|
|
88
84
|
},
|
|
@@ -110,9 +106,15 @@ export const RelationshipFilter = props => {
|
|
|
110
106
|
if (data_0.docs.length > 0) {
|
|
111
107
|
addOptions(data_0, relationSlug);
|
|
112
108
|
if (data_0.nextPage) {
|
|
113
|
-
|
|
109
|
+
loadedRelationships.current.set(relationSlug, {
|
|
110
|
+
hasLoadedAll: false,
|
|
111
|
+
nextPage: data_0.nextPage
|
|
112
|
+
});
|
|
114
113
|
} else {
|
|
115
|
-
|
|
114
|
+
loadedRelationships.current.set(relationSlug, {
|
|
115
|
+
hasLoadedAll: true,
|
|
116
|
+
nextPage: null
|
|
117
|
+
});
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
} else {
|
|
@@ -120,21 +122,23 @@ export const RelationshipFilter = props => {
|
|
|
120
122
|
}
|
|
121
123
|
} catch (e) {
|
|
122
124
|
if (!abortController.signal.aborted) {
|
|
123
|
-
console.error(e)
|
|
125
|
+
console.error(e) // eslint-disable-line no-console
|
|
126
|
+
;
|
|
124
127
|
}
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
setHasLoadedFirstOptions(true);
|
|
128
|
-
}
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
+
});
|
|
132
|
+
const handleScrollToBottom = React.useCallback(() => {
|
|
133
|
+
const relationshipToLoad = loadedRelationships.current.entries().next().value;
|
|
134
|
+
if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {
|
|
131
135
|
const abortController_0 = new AbortController();
|
|
132
|
-
void
|
|
136
|
+
void loadOptions({
|
|
133
137
|
abortController: abortController_0,
|
|
134
|
-
relationSlug:
|
|
138
|
+
relationSlug: relationshipToLoad[0]
|
|
135
139
|
});
|
|
136
140
|
}
|
|
137
|
-
}, [
|
|
141
|
+
}, []);
|
|
138
142
|
const findOptionsByValue = useCallback(() => {
|
|
139
143
|
if (value) {
|
|
140
144
|
if (hasMany) {
|
|
@@ -180,22 +184,24 @@ export const RelationshipFilter = props => {
|
|
|
180
184
|
}
|
|
181
185
|
return undefined;
|
|
182
186
|
}, [hasMany, hasMultipleRelations, value, options]);
|
|
183
|
-
const handleInputChange = input => {
|
|
187
|
+
const handleInputChange = useCallback(input => {
|
|
184
188
|
if (input !== search) {
|
|
185
189
|
dispatchOptions({
|
|
186
190
|
type: 'CLEAR',
|
|
187
191
|
i18n,
|
|
188
192
|
required: false
|
|
189
193
|
});
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
const relationSlugs_0 = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
195
|
+
loadedRelationships.current = new Map(relationSlugs_0.map(relation_1 => [relation_1, {
|
|
196
|
+
hasLoadedAll: false,
|
|
197
|
+
nextPage: 1
|
|
198
|
+
}]));
|
|
193
199
|
setSearch(input);
|
|
194
200
|
}
|
|
195
|
-
};
|
|
196
|
-
const addOptionByID = useCallback(async (id,
|
|
197
|
-
if (!errorLoading && id !== 'null' && id &&
|
|
198
|
-
const response_0 = await fetch(`${serverURL}${api}/${
|
|
201
|
+
}, [i18n, relationTo, search]);
|
|
202
|
+
const addOptionByID = useCallback(async (id, relation_2) => {
|
|
203
|
+
if (!errorLoading && id !== 'null' && id && relation_2) {
|
|
204
|
+
const response_0 = await fetch(`${serverURL}${api}/${relation_2}/${id}?depth=0`, {
|
|
199
205
|
credentials: 'include',
|
|
200
206
|
headers: {
|
|
201
207
|
'Accept-Language': i18n.language
|
|
@@ -205,7 +211,7 @@ export const RelationshipFilter = props => {
|
|
|
205
211
|
const data_1 = await response_0.json();
|
|
206
212
|
addOptions({
|
|
207
213
|
docs: [data_1]
|
|
208
|
-
},
|
|
214
|
+
}, relation_2);
|
|
209
215
|
} else {
|
|
210
216
|
// eslint-disable-next-line no-console
|
|
211
217
|
console.error(t('error:loadingDocument', {
|
|
@@ -215,18 +221,29 @@ export const RelationshipFilter = props => {
|
|
|
215
221
|
}
|
|
216
222
|
}, [i18n, addOptions, api, errorLoading, serverURL, t]);
|
|
217
223
|
/**
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
224
|
+
* When `relationTo` changes externally, reset the options and reload them from scratch
|
|
225
|
+
* The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own
|
|
226
|
+
* This means we can safely depend on it without it triggering this effect to run
|
|
227
|
+
* This is useful because this effect should _only_ run when `relationTo` changes
|
|
221
228
|
*/
|
|
222
229
|
useEffect(() => {
|
|
223
230
|
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
231
|
+
loadedRelationships.current = new Map(relations.map(relation_3 => [relation_3, {
|
|
232
|
+
hasLoadedAll: false,
|
|
233
|
+
nextPage: 1
|
|
234
|
+
}]));
|
|
235
|
+
dispatchOptions({
|
|
236
|
+
type: 'CLEAR',
|
|
237
|
+
i18n,
|
|
238
|
+
required: false
|
|
239
|
+
});
|
|
240
|
+
setHasLoadedFirstOptions(false);
|
|
224
241
|
const abortControllers = [];
|
|
225
|
-
relations.forEach(
|
|
242
|
+
relations.forEach(relation_4 => {
|
|
226
243
|
const abortController_1 = new AbortController();
|
|
227
|
-
void
|
|
244
|
+
void loadOptions({
|
|
228
245
|
abortController: abortController_1,
|
|
229
|
-
relationSlug:
|
|
246
|
+
relationSlug: relation_4
|
|
230
247
|
});
|
|
231
248
|
abortControllers.push(abortController_1);
|
|
232
249
|
});
|
|
@@ -241,10 +258,9 @@ export const RelationshipFilter = props => {
|
|
|
241
258
|
}
|
|
242
259
|
});
|
|
243
260
|
};
|
|
244
|
-
}, [i18n,
|
|
261
|
+
}, [i18n, relationTo, debouncedSearch]);
|
|
245
262
|
/**
|
|
246
|
-
* Load any options that were not
|
|
247
|
-
* in the first 10 of each relation fetch
|
|
263
|
+
* Load any other options that might exist in the value that were not loaded already
|
|
248
264
|
*/
|
|
249
265
|
useEffect(() => {
|
|
250
266
|
if (value && hasLoadedFirstOptions) {
|
|
@@ -305,7 +321,7 @@ export const RelationshipFilter = props => {
|
|
|
305
321
|
}
|
|
306
322
|
},
|
|
307
323
|
onInputChange: handleInputChange,
|
|
308
|
-
onMenuScrollToBottom:
|
|
324
|
+
onMenuScrollToBottom: handleScrollToBottom,
|
|
309
325
|
options: options,
|
|
310
326
|
placeholder: t('general:selectValue'),
|
|
311
327
|
value: valueToRender
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useConfig","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","isSortable","hasMany","relationTo","onChange","value","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","debouncedSearch","i18n","t","relationSlugs","initialRelationMap","map","Map","forEach","relation","set","nextPageByRelationshipRef","useRef","partiallyLoadedRelationshipSlugs","addOptions","data","collection","collectionSlug","type","loadRelationOptions","abortController","relationSlug","current","includes","fieldToSearch","useAsTitle","pageIndex","get","where","and","query","depth","limit","page","select","push","like","response","fetch","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","nextPage","filter","partiallyLoadedRelation","e","aborted","console","error","loadMoreOptions","AbortController","findOptionsByValue","val","matchedOption","opt","some","subOpt","find","undefined","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","Boolean","join","valueToRender","_jsxs","className","_jsx","isMulti","selected","onInputChange","onMenuScrollToBottom","placeholder"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin: { isSortable } = {}, hasMany, relationTo },\n onChange,\n value,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const debouncedSearch = useDebounce(search, 300)\n const { i18n, t } = useTranslation()\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const initialRelationMap = () => {\n const map: Map<string, number> = new Map()\n relationSlugs.forEach((relation) => {\n map.set(relation, 1)\n })\n return map\n }\n\n const nextPageByRelationshipRef = React.useRef<Map<string, number>>(initialRelationMap())\n const partiallyLoadedRelationshipSlugs = React.useRef<string[]>(relationSlugs)\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadRelationOptions = React.useCallback(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n if (relationSlug && partiallyLoadedRelationshipSlugs.current.includes(relationSlug)) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n const pageIndex = nextPageByRelationshipRef.current.get(relationSlug)\n\n const where: Where = {\n and: [],\n }\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n page: pageIndex,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n `${serverURL}${api}/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n nextPageByRelationshipRef.current.set(relationSlug, data.nextPage)\n } else {\n partiallyLoadedRelationshipSlugs.current =\n partiallyLoadedRelationshipSlugs.current.filter(\n (partiallyLoadedRelation) => partiallyLoadedRelation !== relationSlug,\n )\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e)\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n [addOptions, api, debouncedSearch, getEntityConfig, i18n.language, serverURL, t],\n )\n\n const loadMoreOptions = React.useCallback(() => {\n if (partiallyLoadedRelationshipSlugs.current.length > 0) {\n const abortController = new AbortController()\n void loadRelationOptions({\n abortController,\n relationSlug: partiallyLoadedRelationshipSlugs.current[0],\n })\n }\n }, [loadRelationOptions])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n const relationSlug = partiallyLoadedRelationshipSlugs.current[0]\n partiallyLoadedRelationshipSlugs.current = relationSlugs\n nextPageByRelationshipRef.current.set(relationSlug, 1)\n setSearch(input)\n }\n }\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n /**\n * 1. Trigger initial relationship options fetch\n * 2. When search changes, loadRelationOptions will\n * fire off again\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const abortControllers: AbortController[] = []\n relations.forEach((relation) => {\n const abortController = new AbortController()\n void loadRelationOptions({\n abortController,\n relationSlug: relation,\n })\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, loadRelationOptions, relationTo])\n\n /**\n * Load any options that were not returned\n * in the first 10 of each relation fetch\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {!errorLoading && (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={loadMoreOptions}\n options={options}\n placeholder={t('general:selectValue')}\n value={valueToRender}\n />\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","isSortable","hasMany","relationTo","onChange","value","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","page","select","push","like","response","fetch","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","undefined","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsxs","className","_jsx","isMulti","selected","onInputChange","onMenuScrollToBottom","placeholder"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport optionsReducer from './optionsReducer.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin: { isSortable } = {}, hasMany, relationTo },\n onChange,\n value,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n `${serverURL}${api}/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {!errorLoading && (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={t('general:selectValue')}\n value={valueToRender}\n />\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMvC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMvC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuElC,CAAA"}
|
|
@@ -11,6 +11,7 @@ export const Select = t0 => {
|
|
|
11
11
|
const $ = _c(26);
|
|
12
12
|
const {
|
|
13
13
|
disabled,
|
|
14
|
+
isClearable,
|
|
14
15
|
onChange,
|
|
15
16
|
operator,
|
|
16
17
|
options: optionsFromProps,
|
|
@@ -157,6 +158,7 @@ export const Select = t0 => {
|
|
|
157
158
|
}
|
|
158
159
|
return _jsx(ReactSelect, {
|
|
159
160
|
disabled,
|
|
161
|
+
isClearable,
|
|
160
162
|
isMulti,
|
|
161
163
|
onChange: onSelect,
|
|
162
164
|
options: options.map(t8),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useTranslation","ReactSelect","formatOptions","Select","t0","$","disabled","onChange","operator","options","optionsFromProps","value","i18n","t1","setOptions","useState","t2","Symbol","for","isMulti","includes","valueToRender","Array","isArray","t3","val","matchingOption","find","option","label","map","matchingOption_0","t4","option_0","selectedOption","newValue","_temp","onSelect","t5","useEffect","t6","t7","t8","option_2","_jsx","option_1"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Select/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport { formatOptions } from './formatOptions.js'\n\nexport const Select: React.FC<Props> = ({\n disabled,\n onChange,\n operator,\n options: optionsFromProps,\n value,\n}) => {\n const { i18n } = useTranslation()\n const [options, setOptions] = React.useState(formatOptions(optionsFromProps))\n\n const isMulti = ['in', 'not_in'].includes(operator)\n let valueToRender\n\n if (isMulti && Array.isArray(value)) {\n valueToRender = value.map((val) => {\n const matchingOption = options.find((option) => option.value === val)\n return {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : val,\n value: matchingOption?.value ?? val,\n }\n })\n } else if (value) {\n const matchingOption = options.find((option) => option.value === value)\n valueToRender = {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : value,\n value: matchingOption?.value ?? value,\n }\n }\n\n const onSelect = React.useCallback(\n (selectedOption) => {\n let newValue\n if (!selectedOption) {\n newValue = null\n } else if (isMulti) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else {\n newValue = selectedOption.value\n }\n\n onChange(newValue)\n },\n [isMulti, onChange],\n )\n\n React.useEffect(() => {\n setOptions(formatOptions(optionsFromProps))\n }, [optionsFromProps])\n\n React.useEffect(() => {\n if (!isMulti && Array.isArray(value)) {\n onChange(value[0])\n }\n }, [isMulti, onChange, value])\n\n return (\n <ReactSelect\n disabled={disabled}\n isMulti={isMulti}\n onChange={onSelect}\n options={options.map((option) => ({ ...option, label: getTranslation(option.label, i18n) }))}\n value={valueToRender}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAIlB,SAASC,cAAc,QAAQ;AAC/B,SAASC,WAAW,QAAQ;AAC5B,SAASC,aAAa,QAAQ;AAE9B,OAAO,MAAMC,MAAA,GAA0BC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS,QAAA;IAAAC,QAAA;IAAAC,QAAA;IAAAC,OAAA,EAAAC,gBAAA;IAAAC;EAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useTranslation","ReactSelect","formatOptions","Select","t0","$","disabled","isClearable","onChange","operator","options","optionsFromProps","value","i18n","t1","setOptions","useState","t2","Symbol","for","isMulti","includes","valueToRender","Array","isArray","t3","val","matchingOption","find","option","label","map","matchingOption_0","t4","option_0","selectedOption","newValue","_temp","onSelect","t5","useEffect","t6","t7","t8","option_2","_jsx","option_1"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Select/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport { formatOptions } from './formatOptions.js'\n\nexport const Select: React.FC<Props> = ({\n disabled,\n isClearable,\n onChange,\n operator,\n options: optionsFromProps,\n value,\n}) => {\n const { i18n } = useTranslation()\n const [options, setOptions] = React.useState(formatOptions(optionsFromProps))\n\n const isMulti = ['in', 'not_in'].includes(operator)\n let valueToRender\n\n if (isMulti && Array.isArray(value)) {\n valueToRender = value.map((val) => {\n const matchingOption = options.find((option) => option.value === val)\n return {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : val,\n value: matchingOption?.value ?? val,\n }\n })\n } else if (value) {\n const matchingOption = options.find((option) => option.value === value)\n valueToRender = {\n label: matchingOption ? getTranslation(matchingOption.label, i18n) : value,\n value: matchingOption?.value ?? value,\n }\n }\n\n const onSelect = React.useCallback(\n (selectedOption) => {\n let newValue\n\n if (!selectedOption) {\n newValue = null\n } else if (isMulti) {\n if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value)\n } else {\n newValue = []\n }\n } else {\n newValue = selectedOption.value\n }\n\n onChange(newValue)\n },\n [isMulti, onChange],\n )\n\n React.useEffect(() => {\n setOptions(formatOptions(optionsFromProps))\n }, [optionsFromProps])\n\n React.useEffect(() => {\n if (!isMulti && Array.isArray(value)) {\n onChange(value[0])\n }\n }, [isMulti, onChange, value])\n\n return (\n <ReactSelect\n disabled={disabled}\n isClearable={isClearable}\n isMulti={isMulti}\n onChange={onSelect}\n options={options.map((option) => ({ ...option, label: getTranslation(option.label, i18n) }))}\n value={valueToRender}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@ import type { Option, SelectFieldClient } from 'payload';
|
|
|
2
2
|
import type { DefaultFilterProps } from '../types.js';
|
|
3
3
|
export type Props = {
|
|
4
4
|
readonly field: SelectFieldClient;
|
|
5
|
+
readonly isClearable?: boolean;
|
|
5
6
|
readonly onChange: (val: string) => void;
|
|
6
7
|
readonly options: Option[];
|
|
7
8
|
readonly value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,GAAG,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,GAAG,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/elements/WhereBuilder/Condition/Select/types.ts"],"sourcesContent":["import type { Option, SelectFieldClient } from 'payload'\n\nimport type { DefaultFilterProps } from '../types.js'\n\nexport type Props = {\n readonly field: SelectFieldClient\n readonly onChange: (val: string) => void\n readonly options: Option[]\n readonly value: string\n} & DefaultFilterProps\n"],"mappings":"AAIA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/elements/WhereBuilder/Condition/Select/types.ts"],"sourcesContent":["import type { Option, SelectFieldClient } from 'payload'\n\nimport type { DefaultFilterProps } from '../types.js'\n\nexport type Props = {\n readonly field: SelectFieldClient\n readonly isClearable?: boolean\n readonly onChange: (val: string) => void\n readonly options: Option[]\n readonly value: string\n} & DefaultFilterProps\n"],"mappings":"AAIA","ignoreList":[]}
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AddCondition, ReducedField, UpdateCondition } from '../types.js';
|
|
3
3
|
export type Props = {
|
|
4
|
-
readonly addCondition:
|
|
5
|
-
andIndex: number;
|
|
6
|
-
fieldName: string;
|
|
7
|
-
orIndex: number;
|
|
8
|
-
relation: 'and' | 'or';
|
|
9
|
-
}) => void;
|
|
4
|
+
readonly addCondition: AddCondition;
|
|
10
5
|
readonly andIndex: number;
|
|
11
6
|
readonly fieldName: string;
|
|
12
|
-
readonly initialValue: string;
|
|
13
7
|
readonly operator: Operator;
|
|
14
|
-
readonly options: FieldCondition[];
|
|
15
8
|
readonly orIndex: number;
|
|
9
|
+
readonly reducedFields: ReducedField[];
|
|
16
10
|
readonly removeCondition: ({ andIndex, orIndex }: {
|
|
17
11
|
andIndex: number;
|
|
18
12
|
orIndex: number;
|
|
19
13
|
}) => void;
|
|
20
14
|
readonly RenderedFilter: React.ReactNode;
|
|
21
|
-
readonly updateCondition:
|
|
22
|
-
|
|
23
|
-
fieldName: string;
|
|
24
|
-
operator: string;
|
|
25
|
-
orIndex: number;
|
|
26
|
-
value: string;
|
|
27
|
-
}) => void;
|
|
15
|
+
readonly updateCondition: UpdateCondition;
|
|
16
|
+
readonly value: string;
|
|
28
17
|
};
|
|
29
18
|
import type { Operator } from 'payload';
|
|
30
19
|
import './index.scss';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,MAAM,SAAS,CAAA;AAUhE,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6JrC,CAAA"}
|