@payloadcms/ui 3.63.0-internal.c0bd36f → 3.63.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/ReactSelect/MultiValue/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js +5 -4
- package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +11 -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 +3 -4
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts +2 -2
- package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
- package/dist/elements/WhereBuilder/field-types.js +1 -1
- package/dist/elements/WhereBuilder/field-types.js.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Upload/HasMany/index.d.ts +1 -0
- package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasMany/index.js +50 -45
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/HasOne/index.d.ts +1 -0
- package/dist/fields/Upload/HasOne/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasOne/index.js +3 -1
- package/dist/fields/Upload/HasOne/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts +2 -2
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +270 -125
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.d.ts +1 -0
- package/dist/fields/Upload/RelationshipContent/index.d.ts.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.js +41 -30
- package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +17 -3
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/Upload/types.d.ts +10 -3
- package/dist/fields/Upload/types.d.ts.map +1 -1
- package/dist/fields/Upload/types.js.map +1 -1
- package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
- package/dist/utilities/reduceFieldsToOptions.js +17 -3
- package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ReactSelect/MultiValue/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,cAAc,CAAA;AAIrB,wBAAgB,6BAA6B,CAAC,UAAU,KAAA,EAAE,aAAa,KAAA,OAEtE;AACD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ReactSelect/MultiValue/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,cAAc,CAAA;AAIrB,wBAAgB,6BAA6B,CAAC,UAAU,KAAA,EAAE,aAAa,KAAA,OAEtE;AACD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAwDxD,CAAA"}
|
|
@@ -8,7 +8,7 @@ import { useDraggableSortable } from '../../DraggableSortable/useDraggableSortab
|
|
|
8
8
|
import './index.scss';
|
|
9
9
|
const baseClass = 'multi-value';
|
|
10
10
|
export function generateMultiValueDraggableID(optionData, valueFunction) {
|
|
11
|
-
return typeof valueFunction === 'function' ? valueFunction(optionData) : optionData
|
|
11
|
+
return typeof valueFunction === 'function' ? valueFunction(optionData) : optionData?.value;
|
|
12
12
|
}
|
|
13
13
|
export const MultiValue = props => {
|
|
14
14
|
const $ = _c(26);
|
|
@@ -52,14 +52,15 @@ export const MultiValue = props => {
|
|
|
52
52
|
} else {
|
|
53
53
|
t4 = $[6];
|
|
54
54
|
}
|
|
55
|
+
const id = t4;
|
|
55
56
|
const t5 = !isSortable;
|
|
56
57
|
let t6;
|
|
57
|
-
if ($[7] !==
|
|
58
|
+
if ($[7] !== id || $[8] !== t5) {
|
|
58
59
|
t6 = {
|
|
59
|
-
id
|
|
60
|
+
id,
|
|
60
61
|
disabled: t5
|
|
61
62
|
};
|
|
62
|
-
$[7] =
|
|
63
|
+
$[7] = id;
|
|
63
64
|
$[8] = t5;
|
|
64
65
|
$[9] = t6;
|
|
65
66
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","components","SelectComponents","useDraggableSortable","baseClass","generateMultiValueDraggableID","optionData","valueFunction","value","MultiValue","props","$","className","data","innerProps","isDisabled","selectProps","t0","t1","undefined","customProps","t2","getOptionValue","isSortable","t3","disableMouseDown","t4","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","components","SelectComponents","useDraggableSortable","baseClass","generateMultiValueDraggableID","optionData","valueFunction","value","MultiValue","props","$","className","data","innerProps","isDisabled","selectProps","t0","t1","undefined","customProps","t2","getOptionValue","isSortable","t3","disableMouseDown","t4","id","t5","t6","disabled","attributes","isDragging","listeners","setNodeRef","transform","t7","t8","t9","filter","Boolean","classes","join","t10","t11","e","stopPropagation","_jsx","Fragment","children","onMouseDown","ref","style"],"sources":["../../../../src/elements/ReactSelect/MultiValue/index.tsx"],"sourcesContent":["'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { Option } from '../types.js'\n\nimport { useDraggableSortable } from '../../DraggableSortable/useDraggableSortable/index.js'\nimport './index.scss'\n\nconst baseClass = 'multi-value'\n\nexport function generateMultiValueDraggableID(optionData, valueFunction) {\n return typeof valueFunction === 'function' ? valueFunction(optionData) : optionData?.value\n}\nexport const MultiValue: React.FC<MultiValueProps<Option>> = (props) => {\n const {\n className,\n data,\n innerProps,\n isDisabled,\n // @ts-expect-error // TODO Fix this - moduleResolution 16 breaks our declare module\n selectProps: { customProps: { disableMouseDown } = {}, getOptionValue, isSortable } = {},\n } = props\n\n const id = generateMultiValueDraggableID(data, getOptionValue)\n\n const { attributes, isDragging, listeners, setNodeRef, transform } = useDraggableSortable({\n id,\n disabled: !isSortable,\n })\n\n const classes = [\n baseClass,\n className,\n !isDisabled && isSortable && 'draggable',\n isDragging && `${baseClass}--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <React.Fragment>\n <SelectComponents.MultiValue\n {...props}\n className={classes}\n innerProps={{\n ...(isSortable\n ? {\n ...attributes,\n ...listeners,\n }\n : {}),\n ...innerProps,\n onMouseDown: (e) => {\n if (!disableMouseDown) {\n // we need to prevent the dropdown from opening when clicking on the drag handle, but not when a modal is open (i.e. the 'Relationship' field component)\n e.stopPropagation()\n }\n },\n ref: setNodeRef,\n style: isSortable\n ? {\n transform,\n ...attributes?.style,\n }\n : {},\n }}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAClB,SAASC,UAAA,IAAcC,gBAAgB,QAAQ;AAI/C,SAASC,oBAAoB,QAAQ;AACrC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,SAASC,8BAA8BC,UAAU,EAAEC,aAAa;EACrE,OAAO,OAAOA,aAAA,KAAkB,aAAaA,aAAA,CAAcD,UAAA,IAAcA,UAAA,EAAYE,KAAA;AACvF;AACA,OAAO,MAAMC,UAAA,GAAgDC,KAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAC3D;IAAAa,SAAA;IAAAC,IAAA;IAAAC,UAAA;IAAAC,UAAA;IAAAC,WAAA,EAAAC;EAAA,IAOIP,KAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAP,CAAA,QAAAM,EAAA;IADWC,EAAA,GAAAD,EAA2E,KAAAE,SAAA,QAA3EF,EAA2E;IAAAN,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAA3E;IAAAS,WAAA,EAAAC,EAAA;IAAAC,cAAA;IAAAC;EAAA,IAAAL,EAA2E;EAAA,IAAAM,EAAA;EAAA,IAAAb,CAAA,QAAAU,EAAA;IAA5DG,EAAA,GAAAH,EAAyB,KAAAF,SAAA,QAAzBE,EAAyB;IAAAV,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAAa,EAAA;EAAA;IAAAA,EAAA,GAAAb,CAAA;EAAA;EAAzB;IAAAc;EAAA,IAAAD,EAAyB;EAAA,IAAAE,EAAA;EAAA,IAAAf,CAAA,QAAAE,IAAA,IAAAF,CAAA,QAAAW,cAAA;IAG5CI,EAAA,GAAArB,6BAAA,CAA8BQ,IAAA,EAAMS,cAAA;IAAAX,CAAA,MAAAE,IAAA;IAAAF,CAAA,MAAAW,cAAA;IAAAX,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAA/C,MAAAgB,EAAA,GAAWD,EAAoC;EAInC,MAAAE,EAAA,IAACL,UAAA;EAAA,IAAAM,EAAA;EAAA,IAAAlB,CAAA,QAAAgB,EAAA,IAAAhB,CAAA,QAAAiB,EAAA;IAF6EC,EAAA;MAAAF,EAAA;MAAAG,QAAA,EAE9EF;IAAC;IACbjB,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,MAAAiB,EAAA;IAAAjB,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAHA;IAAAoB,UAAA;IAAAC,UAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC;EAAA,IAAqEhC,oBAAA,CAAqB0B,EAG1F;EAKE,MAAAO,EAAA,IAACrB,UAAA,IAAcQ,UAAA,IAAc;EAC7B,MAAAc,EAAA,GAAAL,UAAA,IAAc,GAAA5B,SAAA,eAA2B;EAAA,IAAAkC,EAAA;EAAA,IAAA3B,CAAA,SAAAC,SAAA,IAAAD,CAAA,SAAAyB,EAAA,IAAAzB,CAAA,SAAA0B,EAAA;IAJ3BC,EAAA,IAAAlC,SAAA,EAEdQ,SAAA,EACAwB,EAA6B,EAC7BC,EAAyC,EAAAE,MAAA,CAAAC,OAEjC;IAAA7B,CAAA,OAAAC,SAAA;IAAAD,CAAA,OAAAyB,EAAA;IAAAzB,CAAA,OAAA0B,EAAA;IAAA1B,CAAA,OAAA2B,EAAA;EAAA;IAAAA,EAAA,GAAA3B,CAAA;EAAA;EANV,MAAA8B,OAAA,GAAgBH,EAMN,CAAAI,IAAA,CACF;EAAA,IAAAC,GAAA;EAAA,IAAAhC,CAAA,SAAAoB,UAAA,IAAApB,CAAA,SAAA8B,OAAA,IAAA9B,CAAA,SAAAc,gBAAA,IAAAd,CAAA,SAAAG,UAAA,IAAAH,CAAA,SAAAY,UAAA,IAAAZ,CAAA,SAAAsB,SAAA,IAAAtB,CAAA,SAAAD,KAAA,IAAAC,CAAA,SAAAuB,UAAA,IAAAvB,CAAA,SAAAwB,SAAA;IAAA,IAAAS,GAAA;IAAA,IAAAjC,CAAA,SAAAc,gBAAA;MAeamB,GAAA,GAAAC,CAAA;QAAA,KACNpB,gBAAA;UAEHoB,CAAA,CAAAC,eAAA,CAAiB;QAAA;MAAA;MAErBnC,CAAA,OAAAc,gBAAA;MAAAd,CAAA,OAAAiC,GAAA;IAAA;MAAAA,GAAA,GAAAjC,CAAA;IAAA;IAjBNgC,GAAA,GAAAI,IAAA,CAAA/C,KAAA,CAAAgD,QAAA;MAAAC,QAAA,EACEF,IAAA,CAAA7C,gBAAA,CAAAO,UAAA;QAAA,GACMC,KAAK;QAAAE,SAAA,EACE6B,OAAA;QAAA3B,UAAA;UAAA,IAELS,UAAA;YAAA,GAEKQ,UAAU;YAAA,GACVE;UAAS,MAEZ;UAAA,GACHnB,UAAU;UAAAoC,WAAA,EACAN,GAKb;UAAAO,GAAA,EACKjB,UAAA;UAAAkB,KAAA,EACE7B,UAAA;YAAAY,SAAA;YAAA,GAGEJ,UAAA,EAAAqB;UAAA;QAEJ;MAAA,C;;;;;;;;;;;;;;;SAxBXT,G;CA6BJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/DefaultFilter/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,qBAAqB,EAGtB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAQzD,KAAK,KAAK,GAAG;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,YAAY,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/DefaultFilter/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,qBAAqB,EAGtB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAQzD,KAAK,KAAK,GAAG;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,qBAAqB,CAAA;IACpC,aAAa,EAAE,YAAY,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuFzC,CAAA"}
|
|
@@ -58,6 +58,17 @@ export const DefaultFilter = ({
|
|
|
58
58
|
value: value
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
case 'upload':
|
|
62
|
+
{
|
|
63
|
+
return /*#__PURE__*/_jsx(RelationshipFilter, {
|
|
64
|
+
disabled: disabled,
|
|
65
|
+
field: internalField.field,
|
|
66
|
+
filterOptions: filterOptions,
|
|
67
|
+
onChange: onChange,
|
|
68
|
+
operator: operator,
|
|
69
|
+
value: value
|
|
70
|
+
});
|
|
71
|
+
}
|
|
61
72
|
default:
|
|
62
73
|
{
|
|
63
74
|
return /*#__PURE__*/_jsx(Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","DateFilter","NumberFilter","RelationshipFilter","Select","Text","DefaultFilter","booleanSelect","disabled","filterOptions","internalField","onChange","operator","options","value","includes","field","type","_jsx","isClearable"],"sources":["../../../../../src/elements/WhereBuilder/Condition/DefaultFilter/index.tsx"],"sourcesContent":["import type {\n Operator,\n Option,\n ResolvedFilterOptions,\n SelectFieldClient,\n TextFieldClient,\n} from 'payload'\n\nimport React from 'react'\n\nimport type { ReducedField, Value } from '../../types.js'\n\nimport { DateFilter } from '../Date/index.js'\nimport { NumberFilter } from '../Number/index.js'\nimport { RelationshipFilter } from '../Relationship/index.js'\nimport { Select } from '../Select/index.js'\nimport { Text } from '../Text/index.js'\n\ntype Props = {\n booleanSelect: boolean\n disabled: boolean\n filterOptions: ResolvedFilterOptions\n internalField: ReducedField\n onChange: React.Dispatch<React.SetStateAction<string>>\n operator: Operator\n options: Option[]\n value: Value\n}\n\nexport const DefaultFilter: React.FC<Props> = ({\n booleanSelect,\n disabled,\n filterOptions,\n internalField,\n onChange,\n operator,\n options,\n value,\n}) => {\n if (booleanSelect || ['radio', 'select'].includes(internalField?.field?.type)) {\n return (\n <Select\n disabled={disabled}\n field={internalField.field as SelectFieldClient}\n isClearable={!booleanSelect}\n onChange={onChange}\n operator={operator}\n options={options}\n value={value as string}\n />\n )\n }\n\n switch (internalField?.field?.type) {\n case 'date': {\n return (\n <DateFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as Date | string}\n />\n )\n }\n\n case 'number': {\n return (\n <NumberFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as number | number[]}\n />\n )\n }\n\n case 'relationship': {\n return (\n <RelationshipFilter\n disabled={disabled}\n field={internalField.field}\n filterOptions={filterOptions}\n onChange={onChange}\n operator={operator}\n value={value}\n />\n )\n }\n\n default: {\n return (\n <Text\n disabled={disabled}\n field={internalField?.field as TextFieldClient}\n onChange={onChange}\n operator={operator}\n value={value as string | string[]}\n />\n )\n }\n }\n}\n"],"mappings":";AAQA,OAAOA,KAAA,MAAW;AAIlB,SAASC,UAAU,QAAQ;AAC3B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AAarB,OAAO,MAAMC,aAAA,GAAiCA,CAAC;EAC7CC,aAAa;EACbC,QAAQ;EACRC,aAAa;EACbC,aAAa;EACbC,QAAQ;EACRC,QAAQ;EACRC,OAAO;EACPC;AAAK,CACN;EACC,IAAIP,aAAA,IAAiB,CAAC,SAAS,SAAS,CAACQ,QAAQ,CAACL,aAAA,EAAeM,KAAA,EAAOC,IAAA,GAAO;IAC7E,oBACEC,IAAA,CAACd,MAAA;MACCI,QAAA,EAAUA,QAAA;MACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;MAC1BG,WAAA,EAAa,CAACZ,aAAA;MACdI,QAAA,EAAUA,QAAA;MACVC,QAAA,EAAUA,QAAA;MACVC,OAAA,EAASA,OAAA;MACTC,KAAA,EAAOA;;EAGb;EAEA,QAAQJ,aAAA,EAAeM,KAAA,EAAOC,IAAA;IAC5B,KAAK;MAAQ;QACX,oBACEC,IAAA,CAACjB,UAAA;UACCO,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA,KAAK;MAAU;QACb,oBACEI,IAAA,CAAChB,YAAA;UACCM,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA,KAAK;MAAgB;QACnB,oBACEI,IAAA,CAACf,kBAAA;UACCK,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BP,aAAA,EAAeA,aAAA;UACfE,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA;MAAS;QACP,oBACEI,IAAA,CAACb,IAAA;UACCG,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,EAAeM,KAAA;UACtBL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;EACF;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","DateFilter","NumberFilter","RelationshipFilter","Select","Text","DefaultFilter","booleanSelect","disabled","filterOptions","internalField","onChange","operator","options","value","includes","field","type","_jsx","isClearable"],"sources":["../../../../../src/elements/WhereBuilder/Condition/DefaultFilter/index.tsx"],"sourcesContent":["import type {\n Operator,\n Option,\n ResolvedFilterOptions,\n SelectFieldClient,\n TextFieldClient,\n} from 'payload'\n\nimport React from 'react'\n\nimport type { ReducedField, Value } from '../../types.js'\n\nimport { DateFilter } from '../Date/index.js'\nimport { NumberFilter } from '../Number/index.js'\nimport { RelationshipFilter } from '../Relationship/index.js'\nimport { Select } from '../Select/index.js'\nimport { Text } from '../Text/index.js'\n\ntype Props = {\n booleanSelect: boolean\n disabled: boolean\n filterOptions: ResolvedFilterOptions\n internalField: ReducedField\n onChange: React.Dispatch<React.SetStateAction<string>>\n operator: Operator\n options: Option[]\n value: Value\n}\n\nexport const DefaultFilter: React.FC<Props> = ({\n booleanSelect,\n disabled,\n filterOptions,\n internalField,\n onChange,\n operator,\n options,\n value,\n}) => {\n if (booleanSelect || ['radio', 'select'].includes(internalField?.field?.type)) {\n return (\n <Select\n disabled={disabled}\n field={internalField.field as SelectFieldClient}\n isClearable={!booleanSelect}\n onChange={onChange}\n operator={operator}\n options={options}\n value={value as string}\n />\n )\n }\n\n switch (internalField?.field?.type) {\n case 'date': {\n return (\n <DateFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as Date | string}\n />\n )\n }\n\n case 'number': {\n return (\n <NumberFilter\n disabled={disabled}\n field={internalField.field}\n onChange={onChange}\n operator={operator}\n value={value as number | number[]}\n />\n )\n }\n\n case 'relationship': {\n return (\n <RelationshipFilter\n disabled={disabled}\n field={internalField.field}\n filterOptions={filterOptions}\n onChange={onChange}\n operator={operator}\n value={value}\n />\n )\n }\n\n case 'upload': {\n return (\n <RelationshipFilter\n disabled={disabled}\n field={internalField.field}\n filterOptions={filterOptions}\n onChange={onChange}\n operator={operator}\n value={value}\n />\n )\n }\n\n default: {\n return (\n <Text\n disabled={disabled}\n field={internalField?.field as TextFieldClient}\n onChange={onChange}\n operator={operator}\n value={value as string | string[]}\n />\n )\n }\n }\n}\n"],"mappings":";AAQA,OAAOA,KAAA,MAAW;AAIlB,SAASC,UAAU,QAAQ;AAC3B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AAarB,OAAO,MAAMC,aAAA,GAAiCA,CAAC;EAC7CC,aAAa;EACbC,QAAQ;EACRC,aAAa;EACbC,aAAa;EACbC,QAAQ;EACRC,QAAQ;EACRC,OAAO;EACPC;AAAK,CACN;EACC,IAAIP,aAAA,IAAiB,CAAC,SAAS,SAAS,CAACQ,QAAQ,CAACL,aAAA,EAAeM,KAAA,EAAOC,IAAA,GAAO;IAC7E,oBACEC,IAAA,CAACd,MAAA;MACCI,QAAA,EAAUA,QAAA;MACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;MAC1BG,WAAA,EAAa,CAACZ,aAAA;MACdI,QAAA,EAAUA,QAAA;MACVC,QAAA,EAAUA,QAAA;MACVC,OAAA,EAASA,OAAA;MACTC,KAAA,EAAOA;;EAGb;EAEA,QAAQJ,aAAA,EAAeM,KAAA,EAAOC,IAAA;IAC5B,KAAK;MAAQ;QACX,oBACEC,IAAA,CAACjB,UAAA;UACCO,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA,KAAK;MAAU;QACb,oBACEI,IAAA,CAAChB,YAAA;UACCM,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA,KAAK;MAAgB;QACnB,oBACEI,IAAA,CAACf,kBAAA;UACCK,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BP,aAAA,EAAeA,aAAA;UACfE,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA,KAAK;MAAU;QACb,oBACEI,IAAA,CAACf,kBAAA;UACCK,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,CAAcM,KAAK;UAC1BP,aAAA,EAAeA,aAAA;UACfE,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;IAEA;MAAS;QACP,oBACEI,IAAA,CAACb,IAAA;UACCG,QAAA,EAAUA,QAAA;UACVQ,KAAA,EAAON,aAAA,EAAeM,KAAA;UACtBL,QAAA,EAAUA,QAAA;UACVC,QAAA,EAAUA,QAAA;UACVE,KAAA,EAAOA;;MAGb;EACF;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AASrF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AASrF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmZ9C,CAAA"}
|
|
@@ -17,10 +17,7 @@ export const RelationshipFilter = props => {
|
|
|
17
17
|
const {
|
|
18
18
|
disabled,
|
|
19
19
|
field: {
|
|
20
|
-
admin
|
|
21
|
-
isSortable,
|
|
22
|
-
placeholder
|
|
23
|
-
} = {},
|
|
20
|
+
admin = {},
|
|
24
21
|
hasMany,
|
|
25
22
|
relationTo
|
|
26
23
|
},
|
|
@@ -28,6 +25,8 @@ export const RelationshipFilter = props => {
|
|
|
28
25
|
onChange,
|
|
29
26
|
value
|
|
30
27
|
} = props;
|
|
28
|
+
const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined;
|
|
29
|
+
const isSortable = admin?.isSortable;
|
|
31
30
|
const {
|
|
32
31
|
config: {
|
|
33
32
|
routes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","isSortable","placeholder","hasMany","relationTo","filterOptions","onChange","value","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","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","code","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","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"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 { RelationshipFilterProps as 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 { useLocale } from '../../../../providers/Locale/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, placeholder } = {}, hasMany, relationTo },\n filterOptions,\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 const locale = useLocale()\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 locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\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, filterOptions])\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 <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\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={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,YAAYA,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,QAAQ;AAKpE,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,WAAW,QAAQ;AAC5B,OAAOC,cAAA,MAAoB;AAC3B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,MAAMC,oBAAA,GAAuB;AAE7B,OAAO,MAAMC,kBAAA,GAAuCC,KAAA;EAClD,MAAM;IACJC,QAAQ;IACRC,KAAA,EAAO;MAAEC,KAAA,EAAO;QAAEC,UAAU;QAAEC;MAAW,CAAE,GAAG,CAAC,CAAC;MAAEC,OAAO;MAAEC;IAAU,CAAE;IACvEC,aAAa;IACbC,QAAQ;IACRC;EAAK,CACN,GAAGV,KAAA;EAEJ,MAAM;IACJW,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS,CACV;IACDC;EAAe,CAChB,GAAGvB,SAAA;EAEJ,MAAMwB,oBAAA,GAAuBC,KAAA,CAAMC,OAAO,CAACX,UAAA;EAC3C,MAAM,CAACY,OAAA,EAASC,eAAA,CAAgB,GAAGhC,UAAA,CAAWQ,cAAA,EAAgB,EAAE;EAChE,MAAM,CAACyB,MAAA,EAAQC,SAAA,CAAU,GAAGjC,QAAA,CAAS;EACrC,MAAMkC,eAAA,GAAkBjC,WAAA,CAAY+B,MAAA,EAAQ;EAC5C,MAAM,CAACG,YAAA,EAAcC,eAAA,CAAgB,GAAGpC,QAAA,CAAS;EACjD,MAAM,CAACqC,qBAAA,EAAuBC,wBAAA,CAAyB,GAAGtC,QAAA,CAAS;EACnE,MAAM;IAAEuC,IAAI;IAAEC;EAAC,CAAE,GAAGnC,cAAA;EACpB,MAAMoC,MAAA,GAASrC,SAAA;EAEf,MAAMsC,aAAA,GAAgBf,oBAAA,GAAuBT,UAAA,GAAa,CAACA,UAAA,CAAW;EAEtE,MAAMyB,mBAAA,GAAsB/C,KAAA,CAAMgD,MAAM,CAStC,IAAIC,GAAA,CACFH,aAAA,CAAcI,GAAG,CAAEC,QAAA,IAAa,CAC9BA,QAAA,EACA;IACEC,YAAA,EAAc;IACdC,QAAA,EAAU;EACZ,EACD;EAIL,MAAMC,UAAA,GAAarD,WAAA,CACjB,CAACsD,IAAA,EAAMJ,UAAA;IACL,MAAMK,UAAA,GAAa1B,eAAA,CAAgB;MAAE2B,cAAA,EAAgBN;IAAS;IAC9DhB,eAAA,CAAgB;MAAEuB,IAAA,EAAM;MAAOF,UAAA;MAAYD,IAAA;MAAMxB,oBAAA;MAAsBY,IAAA;MAAMQ,QAAA,EAAAA;IAAS;EACxF,GACA,CAACpB,oBAAA,EAAsBY,IAAA,EAAMb,eAAA,CAAgB;EAG/C,MAAM6B,WAAA,GAAcrD,cAAA,CAClB,OAAO;IACLsD,eAAe;IACfC;EAAY,CAIb;IACC,MAAMC,kBAAA,GAAqBf,mBAAA,CAAoBgB,OAAO,CAACC,GAAG,CAACH,YAAA;IAE3D,IAAIA,YAAA,IAAgB,CAACC,kBAAA,CAAmBV,YAAY,EAAE;MACpD,MAAMI,YAAA,GAAa1B,eAAA,CAAgB;QACjC2B,cAAA,EAAgBI;MAClB;MAEA,MAAMI,aAAA,GAAgBT,YAAA,EAAYtC,KAAA,EAAOgD,UAAA,IAAc;MAEvD,MAAMC,KAAA,GAAe;QACnBC,GAAA,EAAK;MACP;MAEA,MAAMC,KAAA,GAAQ;QACZC,KAAA,EAAO;QACPC,KAAA,EAAO1D,oBAAA;QACPgC,MAAA,EAAQA,MAAA,CAAO2B,IAAI;QACnBC,IAAA,EAAMX,kBAAA,CAAmBT,QAAQ;QACjCqB,MAAA,EAAQ;UACN,CAACT,aAAA,GAAgB;QACnB;QACAE;MACF;MAEA,IAAI5C,aAAA,IAAiBA,aAAA,GAAgBsC,YAAA,CAAa,EAAE;QAClDQ,KAAA,CAAMF,KAAK,CAACC,GAAG,CAACO,IAAI,CAACpD,aAAa,CAACsC,YAAA,CAAa;MAClD;MAEA,IAAIvB,eAAA,EAAiB;QACnB+B,KAAA,CAAMF,KAAK,CAACC,GAAG,CAACO,IAAI,CAAC;UACnB,CAACV,aAAA,GAAgB;YACfW,IAAA,EAAMtC;UACR;QACF;MACF;MAEA,IAAI;QACF,MAAMuC,QAAA,GAAW,MAAMC,KAAA,CACrB,GAAGjD,SAAA,GAAYD,GAAA,IAAOiC,YAAA,GAAe9D,EAAA,CAAGgF,SAAS,CAACV,KAAA,EAAO;UAAEW,cAAA,EAAgB;QAAK,IAAI,EACpF;UACEC,WAAA,EAAa;UACbC,OAAA,EAAS;YACP,mBAAmBvC,IAAA,CAAKwC;UAC1B;UACAC,MAAA,EAAQxB,eAAA,CAAgBwB;QAC1B;QAGF,IAAIP,QAAA,CAASQ,EAAE,EAAE;UACf,MAAM9B,MAAA,GAAsB,MAAMsB,QAAA,CAASS,IAAI;UAC/C,IAAI/B,MAAA,CAAKgC,IAAI,CAACC,MAAM,GAAG,GAAG;YACxBlC,UAAA,CAAWC,MAAA,EAAMM,YAAA;YAEjB,IAAIN,MAAA,CAAKF,QAAQ,EAAE;cACjBN,mBAAA,CAAoBgB,OAAO,CAAC0B,GAAG,CAAC5B,YAAA,EAAc;gBAC5CT,YAAA,EAAc;gBACdC,QAAA,EAAUE,MAAA,CAAKF;cACjB;YACF,OAAO;cACLN,mBAAA,CAAoBgB,OAAO,CAAC0B,GAAG,CAAC5B,YAAA,EAAc;gBAC5CT,YAAA,EAAc;gBACdC,QAAA,EAAU;cACZ;YACF;UACF;QACF,OAAO;UACLb,eAAA,CAAgBI,CAAA,CAAE;QACpB;MACF,EAAE,OAAO8C,CAAA,EAAG;QACV,IAAI,CAAC9B,eAAA,CAAgBwB,MAAM,CAACO,OAAO,EAAE;UACnCC,OAAA,CAAQC,KAAK,CAACH,CAAA,EAAG;UAAA;QACnB;MACF;IACF;IAEAhD,wBAAA,CAAyB;EAC3B;EAGF,MAAMoD,oBAAA,GAAuB9F,KAAA,CAAMC,WAAW,CAAC;IAC7C,MAAM8F,kBAAA,GAAqBhD,mBAAA,CAAoBgB,OAAO,CAACiC,OAAO,GAAGC,IAAI,GAAGxE,KAAK;IAE7E,IAAIsE,kBAAkB,CAAC,EAAE,IAAI,CAACA,kBAAkB,CAAC,EAAE,CAAC3C,YAAY,EAAE;MAChE,MAAMQ,iBAAA,GAAkB,IAAIsC,eAAA;MAE5B,KAAKvC,WAAA,CAAY;QACfC,eAAA,EAAAA,iBAAA;QACAC,YAAA,EAAckC,kBAAkB,CAAC;MACnC;IACF;EACF,GAAG,EAAE;EAEL,MAAMI,kBAAA,GAAqBlG,WAAA,CAAY;IACrC,IAAIwB,KAAA,EAAO;MACT,IAAIJ,OAAA,EAAS;QACX,IAAIW,KAAA,CAAMC,OAAO,CAACR,KAAA,GAAQ;UACxB,OAAOA,KAAA,CAAMyB,GAAG,CAAEkD,GAAA;YAChB,IAAIrE,oBAAA,EAAsB;cACxB,IAAIsE,aAAA;cAEJnE,OAAA,CAAQoE,OAAO,CAAEC,GAAA;gBACf,IAAIA,GAAA,CAAIrE,OAAO,EAAE;kBACfqE,GAAA,CAAIrE,OAAO,CAACsE,IAAI,CAAEC,MAAA;oBAChB,IAAIA,MAAA,EAAQhF,KAAA,IAAS2E,GAAA,CAAI3E,KAAK,EAAE;sBAC9B4E,aAAA,GAAgBI,MAAA;sBAChB,OAAO;oBACT;oBAEA,OAAO;kBACT;gBACF;cACF;cAEA,OAAOJ,aAAA;YACT;YAEA,OAAOnE,OAAA,CAAQwE,IAAI,CAAEH,KAAA,IAAQA,KAAA,CAAI9E,KAAK,IAAI2E,GAAA;UAC5C;QACF;QAEA,OAAOO,SAAA;MACT;MAEA,IAAI5E,oBAAA,EAAsB;QACxB,IAAIsE,eAAA;QAEJ,MAAMO,iBAAA,GAAoBnF,KAAA;QAE1BS,OAAA,CAAQoE,OAAO,CAAEC,KAAA;UACf,IAAIA,KAAA,EAAKrE,OAAA,EAAS;YAChBqE,KAAA,CAAIrE,OAAO,CAACsE,IAAI,CAAEC,QAAA;cAChB,IAAIA,QAAA,EAAQhF,KAAA,IAASmF,iBAAA,CAAkBnF,KAAK,EAAE;gBAC5C4E,eAAA,GAAgBI,QAAA;gBAChB,OAAO;cACT;cACA,OAAO;YACT;UACF;QACF;QAEA,OAAOJ,eAAA;MACT;MAEA,OAAOnE,OAAA,CAAQwE,IAAI,CAAEH,KAAA,IAAQA,KAAA,CAAI9E,KAAK,IAAIA,KAAA;IAC5C;IAEA,OAAOkF,SAAA;EACT,GAAG,CAACtF,OAAA,EAASU,oBAAA,EAAsBN,KAAA,EAAOS,OAAA,CAAQ;EAElD,MAAM2E,iBAAA,GAAoB5G,WAAA,CACvB6G,KAAA;IACC,IAAIA,KAAA,KAAU1E,MAAA,EAAQ;MACpBD,eAAA,CAAgB;QAAEuB,IAAA,EAAM;QAASf,IAAA;QAAMoE,QAAA,EAAU;MAAM;MAEvD,MAAMjE,eAAA,GAAgBd,KAAA,CAAMC,OAAO,CAACX,UAAA,IAAcA,UAAA,GAAa,CAACA,UAAA,CAAW;MAE3EyB,mBAAA,CAAoBgB,OAAO,GAAG,IAAId,GAAA,CAChCH,eAAA,CAAcI,GAAG,CAAEC,UAAA,IAAa,CAC9BA,UAAA,EACA;QACEC,YAAA,EAAc;QACdC,QAAA,EAAU;MACZ,EACD;MAGHhB,SAAA,CAAUyE,KAAA;IACZ;EACF,GACA,CAACnE,IAAA,EAAMrB,UAAA,EAAYc,MAAA,CAAO;EAG5B,MAAM4E,aAAA,GAAgB/G,WAAA,CACpB,OAAOgH,EAAA,EAAI9D,UAAA;IACT,IAAI,CAACZ,YAAA,IAAgB0E,EAAA,KAAO,UAAUA,EAAA,IAAM9D,UAAA,EAAU;MACpD,MAAM0B,UAAA,GAAW,MAAMC,KAAA,CAAM,GAAGjD,SAAA,GAAYD,GAAA,IAAOuB,UAAA,IAAY8D,EAAA,UAAY,EAAE;QAC3EhC,WAAA,EAAa;QACbC,OAAA,EAAS;UACP,mBAAmBvC,IAAA,CAAKwC;QAC1B;MACF;MAEA,IAAIN,UAAA,CAASQ,EAAE,EAAE;QACf,MAAM9B,MAAA,GAAO,MAAMsB,UAAA,CAASS,IAAI;QAChChC,UAAA,CAAW;UAAEiC,IAAA,EAAM,CAAChC,MAAA;QAAM,GAAGJ,UAAA;MAC/B,OAAO;QACL;QACAyC,OAAA,CAAQC,KAAK,CAACjD,CAAA,CAAE,yBAAyB;UAAEqE;QAAG;MAChD;IACF;EACF,GACA,CAACtE,IAAA,EAAMW,UAAA,EAAY1B,GAAA,EAAKW,YAAA,EAAcV,SAAA,EAAWe,CAAA,CAAE;EAGrD;;;;;;EAMA1C,SAAA,CAAU;IACR,MAAMgH,SAAA,GAAYlF,KAAA,CAAMC,OAAO,CAACX,UAAA,IAAcA,UAAA,GAAa,CAACA,UAAA,CAAW;IAEvEyB,mBAAA,CAAoBgB,OAAO,GAAG,IAAId,GAAA,CAChCiE,SAAA,CAAUhE,GAAG,CAAEC,UAAA,IAAa,CAC1BA,UAAA,EACA;MACEC,YAAA,EAAc;MACdC,QAAA,EAAU;IACZ,EACD;IAGHlB,eAAA,CAAgB;MAAEuB,IAAA,EAAM;MAASf,IAAA;MAAMoE,QAAA,EAAU;IAAM;IACvDrE,wBAAA,CAAyB;IAEzB,MAAMyE,gBAAA,GAAsC,EAAE;IAE9CD,SAAA,CAAUZ,OAAO,CAAEnD,UAAA;MACjB,MAAMS,iBAAA,GAAkB,IAAIsC,eAAA;MAE5B,KAAKvC,WAAA,CAAY;QACfC,eAAA,EAAAA,iBAAA;QACAC,YAAA,EAAcV;MAChB;MAEAgE,gBAAA,CAAiBxC,IAAI,CAACf,iBAAA;IACxB;IAEA,OAAO;MACLuD,gBAAA,CAAiBb,OAAO,CAAEc,UAAA;QACxB,IAAIA,UAAA,CAAWhC,MAAM,EAAE;UACrB,IAAI;YACFgC,UAAA,CAAWC,KAAK;UAClB,EAAE,OAAOC,IAAA,EAAM;YACb;UAAA;QAEJ;MACF;IACF;EACF,GAAG,CAAC3E,IAAA,EAAMrB,UAAA,EAAYgB,eAAA,EAAiBf,aAAA,CAAc;EAErD;;;EAGArB,SAAA,CAAU;IACR,IAAIuB,KAAA,IAASgB,qBAAA,EAAuB;MAClC,IAAIpB,OAAA,EAAS;QACX,MAAMkG,cAAA,GAAiBpB,kBAAA;QAErB,CAAAoB,cAAC,IAA+B,EAAE,EAAEjB,OAAO,CAAC,CAACkB,MAAA,EAAQC,CAAA;UACrD,IAAI,CAACD,MAAA,EAAQ;YACX,IAAIzF,oBAAA,EAAsB;cACxB,KAAKiF,aAAA,CAAcvF,KAAK,CAACgG,CAAA,CAAE,CAAChG,KAAK,EAAEA,KAAK,CAACgG,CAAA,CAAE,CAACnG,UAAU;YACxD,OAAO;cACL,KAAK0F,aAAA,CAAcvF,KAAK,CAACgG,CAAA,CAAE,EAAEnG,UAAA;YAC/B;UACF;QACF;MACF,OAAO;QACL,MAAM+E,eAAA,GAAgBF,kBAAA;QAEtB,IAAI,CAACE,eAAA,EAAe;UAClB,IAAItE,oBAAA,EAAsB;YACxB,MAAM6E,mBAAA,GAAoBnF,KAAA;YAC1B,KAAKuF,aAAA,CAAcJ,mBAAA,CAAkBnF,KAAK,EAAEmF,mBAAA,CAAkBtF,UAAU;UAC1E,OAAO;YACL,KAAK0F,aAAA,CAAcvF,KAAA,EAAOH,UAAA;UAC5B;QACF;MACF;IACF;EACF,GAAG,CACD0F,aAAA,EACAb,kBAAA,EACA9E,OAAA,EACAU,oBAAA,EACAT,UAAA,EACAG,KAAA,EACAgB,qBAAA,CACD;EAED,MAAMiF,OAAA,GAAU,CAAC,cAAc9G,SAAA,EAAW2B,YAAA,IAAgB,gBAAgB,CACvEoF,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMC,aAAA,GAAiB3B,kBAAA,MAAwB1E,KAAA;EAE/C,oBACEsG,IAAA,CAAC;IAAIC,SAAA,EAAWN,OAAA;cACbnF,YAAA,gBACCwF,IAAA,CAAC;MAAIC,SAAA,EAAW,GAAGpH,SAAA,iBAA0B;gBAAG2B;sBAEhDwF,IAAA,CAACrH,WAAA;MACCM,QAAA,EAAUA,QAAA;MACViH,OAAA,EAAS5G,OAAA;MACTF,UAAA,EAAYA,UAAA;MACZK,QAAA,EAAW0G,QAAA;QACT,IAAI,CAACA,QAAA,EAAU;UACb1G,QAAA,CAAS;UACT;QACF;QAEA,IAAIH,OAAA,IAAWW,KAAA,CAAMC,OAAO,CAACiG,QAAA,GAAW;UACtC1G,QAAA,CACE0G,QAAA,GACIA,QAAA,CAAShF,GAAG,CAAEsE,QAAA;YACZ,IAAIzF,oBAAA,EAAsB;cACxB,OAAO;gBACLT,UAAA,EAAYkG,QAAA,EAAQlG,UAAA;gBACpBG,KAAA,EAAO+F,QAAA,EAAQ/F;cACjB;YACF;YAEA,OAAO+F,QAAA,EAAQ/F,KAAA;UACjB,KACA;QAER,OAAO,IAAIM,oBAAA,IAAwB,CAACC,KAAA,CAAMC,OAAO,CAACiG,QAAA,GAAW;UAC3D1G,QAAA,CAAS;YACPF,UAAA,EAAY4G,QAAA,EAAU5G,UAAA;YACtBG,KAAA,EAAOyG,QAAA,EAAUzG;UACnB;QACF,OAAO,IAAI,CAACO,KAAA,CAAMC,OAAO,CAACiG,QAAA,GAAW;UACnC1G,QAAA,CAAS0G,QAAA,EAAUzG,KAAA;QACrB;MACF;MACA0G,aAAA,EAAetB,iBAAA;MACfuB,oBAAA,EAAsBtC,oBAAA;MACtB5D,OAAA,EAASA,OAAA;MACTd,WAAA,EAAaA,WAAA;MACbK,KAAA,EAAOqG;;;AAKjB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","hasMany","relationTo","filterOptions","onChange","value","placeholder","undefined","isSortable","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","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","code","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","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"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 { RelationshipFilterProps as 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 { useLocale } from '../../../../providers/Locale/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 = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\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 const locale = useLocale()\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 locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\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, filterOptions])\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 <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\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={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { I18nClient } from '@payloadcms/translations';
|
|
2
|
-
import type { ClientCollectionConfig, PaginatedDocs, RelationshipFieldClient, ResolvedFilterOptions } from 'payload';
|
|
2
|
+
import type { ClientCollectionConfig, PaginatedDocs, RelationshipFieldClient, ResolvedFilterOptions, UploadFieldClient } from 'payload';
|
|
3
3
|
import type { DefaultFilterProps } from '../types.js';
|
|
4
4
|
export type RelationshipFilterProps = {
|
|
5
|
-
readonly field: RelationshipFieldClient;
|
|
5
|
+
readonly field: RelationshipFieldClient | UploadFieldClient;
|
|
6
6
|
readonly filterOptions: ResolvedFilterOptions;
|
|
7
7
|
} & DefaultFilterProps;
|
|
8
8
|
export type Option = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,iBAAiB,CAAA;IAC3D,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAA;CAC9C,GAAG,kBAAkB,CAAA;AAEtB,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,GAAG,GAAG;IACT,UAAU,EAAE,sBAAsB,CAAA;IAClC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,KAAK,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,CAAA;AAEhC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n PaginatedDocs,\n RelationshipFieldClient,\n ResolvedFilterOptions,\n} from 'payload'\n\nimport type { DefaultFilterProps } from '../types.js'\n\nexport type RelationshipFilterProps = {\n readonly field: RelationshipFieldClient\n readonly filterOptions: ResolvedFilterOptions\n} & DefaultFilterProps\n\nexport type Option = {\n label: string\n options?: Option[]\n relationTo?: string | string[]\n value: string\n}\n\ntype CLEAR = {\n i18n: I18nClient\n required: boolean\n type: 'CLEAR'\n}\n\ntype ADD = {\n collection: ClientCollectionConfig\n data: PaginatedDocs<any>\n hasMultipleRelations: boolean\n i18n: I18nClient\n relation: string\n type: 'ADD'\n}\n\nexport type Action = ADD | CLEAR\n\nexport type ValueWithRelation = {\n relationTo: string\n value: string\n}\n\nexport type GetResults = (args: {\n lastFullyLoadedRelation?: number\n lastLoadedPage?: number\n search?: string\n}) => Promise<void>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n PaginatedDocs,\n RelationshipFieldClient,\n ResolvedFilterOptions,\n UploadFieldClient,\n} from 'payload'\n\nimport type { DefaultFilterProps } from '../types.js'\n\nexport type RelationshipFilterProps = {\n readonly field: RelationshipFieldClient | UploadFieldClient\n readonly filterOptions: ResolvedFilterOptions\n} & DefaultFilterProps\n\nexport type Option = {\n label: string\n options?: Option[]\n relationTo?: string | string[]\n value: string\n}\n\ntype CLEAR = {\n i18n: I18nClient\n required: boolean\n type: 'CLEAR'\n}\n\ntype ADD = {\n collection: ClientCollectionConfig\n data: PaginatedDocs<any>\n hasMultipleRelations: boolean\n i18n: I18nClient\n relation: string\n type: 'ADD'\n}\n\nexport type Action = ADD | CLEAR\n\nexport type ValueWithRelation = {\n relationTo: string\n value: string\n}\n\nexport type GetResults = (args: {\n lastFullyLoadedRelation?: number\n lastLoadedPage?: number\n search?: string\n}) => Promise<void>\n"],"mappings":"AA6CA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-types.js","names":["equalsOperators","label","value","arrayOperators","exists","base","numeric","geo","within","intersects","like","notLike","contains","fieldTypeConditions","checkbox","component","operators","code","date","email","json","number","point","radio","relationship","richText","select","text","textarea","upload","getValidFieldOperators","field","operator","validOperators","type","Array","isArray","relationTo","hasMany","validOperator","find"],"sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientField } from 'payload'\n\nconst equalsOperators = [\n {\n label: 'equals',\n value: 'equals',\n },\n {\n label: 'isNotEqualTo',\n value: 'not_equals',\n },\n]\n\nexport const arrayOperators = [\n {\n label: 'isIn',\n value: 'in',\n },\n {\n label: 'isNotIn',\n value: 'not_in',\n },\n]\n\nconst exists = {\n label: 'exists',\n value: 'exists',\n}\n\nconst base = [...equalsOperators, ...arrayOperators, exists]\n\nconst numeric = [\n ...base,\n {\n label: 'isGreaterThan',\n value: 'greater_than',\n },\n {\n label: 'isLessThan',\n value: 'less_than',\n },\n {\n label: 'isLessThanOrEqualTo',\n value: 'less_than_equal',\n },\n {\n label: 'isGreaterThanOrEqualTo',\n value: 'greater_than_equal',\n },\n]\n\nconst geo = [\n ...equalsOperators,\n {\n label: 'near',\n value: 'near',\n },\n]\n\nconst within = {\n label: 'within',\n value: 'within',\n}\n\nconst intersects = {\n label: 'intersects',\n value: 'intersects',\n}\n\nconst like = {\n label: 'isLike',\n value: 'like',\n}\n\nconst notLike = {\n label: 'isNotLike',\n value: 'not_like',\n}\n\nconst contains = {\n label: 'contains',\n value: 'contains',\n}\n\nexport const fieldTypeConditions: {\n [key: string]: {\n component: string\n operators: { label: string; value: string }[]\n }\n} = {\n checkbox: {\n component: 'Text',\n operators: [...equalsOperators, exists],\n },\n code: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n date: {\n component: 'Date',\n operators: [...numeric, exists],\n },\n email: {\n component: 'Text',\n operators: [...base, contains],\n },\n json: {\n component: 'Text',\n operators: [...base, like, contains, notLike, within, intersects],\n },\n number: {\n component: 'Number',\n operators: [...numeric, exists],\n },\n point: {\n component: 'Point',\n operators: [...geo, exists, within, intersects],\n },\n radio: {\n component: 'Select',\n operators: [...base],\n },\n relationship: {\n component: 'Relationship',\n operators: [...base],\n },\n richText: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n select: {\n component: 'Select',\n operators: [...base],\n },\n text: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n textarea: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n upload: {\n component: '
|
|
1
|
+
{"version":3,"file":"field-types.js","names":["equalsOperators","label","value","arrayOperators","exists","base","numeric","geo","within","intersects","like","notLike","contains","fieldTypeConditions","checkbox","component","operators","code","date","email","json","number","point","radio","relationship","richText","select","text","textarea","upload","getValidFieldOperators","field","operator","validOperators","type","Array","isArray","relationTo","hasMany","validOperator","find"],"sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientField } from 'payload'\n\nconst equalsOperators = [\n {\n label: 'equals',\n value: 'equals',\n },\n {\n label: 'isNotEqualTo',\n value: 'not_equals',\n },\n]\n\nexport const arrayOperators = [\n {\n label: 'isIn',\n value: 'in',\n },\n {\n label: 'isNotIn',\n value: 'not_in',\n },\n]\n\nconst exists = {\n label: 'exists',\n value: 'exists',\n}\n\nconst base = [...equalsOperators, ...arrayOperators, exists]\n\nconst numeric = [\n ...base,\n {\n label: 'isGreaterThan',\n value: 'greater_than',\n },\n {\n label: 'isLessThan',\n value: 'less_than',\n },\n {\n label: 'isLessThanOrEqualTo',\n value: 'less_than_equal',\n },\n {\n label: 'isGreaterThanOrEqualTo',\n value: 'greater_than_equal',\n },\n]\n\nconst geo = [\n ...equalsOperators,\n {\n label: 'near',\n value: 'near',\n },\n]\n\nconst within = {\n label: 'within',\n value: 'within',\n}\n\nconst intersects = {\n label: 'intersects',\n value: 'intersects',\n}\n\nconst like = {\n label: 'isLike',\n value: 'like',\n}\n\nconst notLike = {\n label: 'isNotLike',\n value: 'not_like',\n}\n\nconst contains = {\n label: 'contains',\n value: 'contains',\n}\n\nexport const fieldTypeConditions: {\n [key: string]: {\n component: string\n operators: { label: string; value: string }[]\n }\n} = {\n checkbox: {\n component: 'Text',\n operators: [...equalsOperators, exists],\n },\n code: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n date: {\n component: 'Date',\n operators: [...numeric, exists],\n },\n email: {\n component: 'Text',\n operators: [...base, contains],\n },\n json: {\n component: 'Text',\n operators: [...base, like, contains, notLike, within, intersects],\n },\n number: {\n component: 'Number',\n operators: [...numeric, exists],\n },\n point: {\n component: 'Point',\n operators: [...geo, exists, within, intersects],\n },\n radio: {\n component: 'Select',\n operators: [...base],\n },\n relationship: {\n component: 'Relationship',\n operators: [...base],\n },\n richText: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n select: {\n component: 'Select',\n operators: [...base],\n },\n text: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n textarea: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n upload: {\n component: 'Relationship',\n operators: [...base],\n },\n}\n\nexport const getValidFieldOperators = ({\n field,\n operator,\n}: {\n field: ClientField\n operator?: string\n}): {\n validOperator: string\n validOperators: {\n label: string\n value: string\n }[]\n} => {\n let validOperators: {\n label: string\n value: string\n }[] = []\n\n if (field.type === 'relationship' && Array.isArray(field.relationTo)) {\n if ('hasMany' in field && field.hasMany) {\n validOperators = [...equalsOperators, exists]\n } else {\n validOperators = [...base]\n }\n } else {\n validOperators = [...fieldTypeConditions[field.type].operators]\n }\n\n return {\n validOperator:\n operator && validOperators.find(({ value }) => value === operator)\n ? operator\n : validOperators[0].value,\n validOperators,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|