@payloadcms/ui 3.12.0 → 3.12.1-canary.33ecab2

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.
Files changed (43) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +1 -2
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
  5. package/dist/elements/ColumnSelector/index.js +41 -90
  6. package/dist/elements/ColumnSelector/index.js.map +1 -1
  7. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  8. package/dist/elements/DocumentDrawer/DrawerContent.js +4 -1
  9. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  10. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  11. package/dist/elements/TableColumns/buildColumnState.js +1 -12
  12. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  13. package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -1
  14. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  15. package/dist/elements/WhereBuilder/Condition/index.js +261 -101
  16. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  17. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  18. package/dist/elements/WhereBuilder/index.js +13 -10
  19. package/dist/elements/WhereBuilder/index.js.map +1 -1
  20. package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +1 -1
  21. package/dist/elements/WhereBuilder/reduceClientFields.js +1 -0
  22. package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -1
  23. package/dist/exports/client/index.js +9 -9
  24. package/dist/exports/client/index.js.map +3 -3
  25. package/dist/fields/Code/index.d.ts +1 -0
  26. package/dist/fields/Code/index.d.ts.map +1 -1
  27. package/dist/fields/Code/index.js +2 -0
  28. package/dist/fields/Code/index.js.map +1 -1
  29. package/dist/providers/DocumentInfo/types.d.ts +0 -6
  30. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  31. package/dist/providers/DocumentInfo/types.js.map +1 -1
  32. package/dist/providers/ServerFunctions/index.d.ts +2 -1
  33. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  34. package/dist/providers/ServerFunctions/index.js.map +1 -1
  35. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  36. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +5 -3
  37. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  38. package/dist/utilities/renderTable.d.ts.map +1 -1
  39. package/dist/utilities/renderTable.js +35 -11
  40. package/dist/utilities/renderTable.js.map +1 -1
  41. package/dist/views/Edit/Auth/index.js +38 -35
  42. package/dist/views/Edit/Auth/index.js.map +1 -1
  43. package/package.json +4 -4
@@ -1,7 +1,8 @@
1
1
  'use client';
2
2
 
3
+ import { c as _c } from "react/compiler-runtime";
3
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React, { useEffect, useMemo, useState } from 'react';
5
+ import React, { useEffect, useState } from 'react';
5
6
  import { useDebounce } from '../../../hooks/useDebounce.js';
6
7
  import { useTranslation } from '../../../providers/Translation/index.js';
7
8
  import { Button } from '../../Button/index.js';
@@ -10,127 +11,286 @@ import { DefaultFilter } from './DefaultFilter/index.js';
10
11
  import './index.scss';
11
12
  const baseClass = 'condition';
12
13
  export const Condition = props => {
14
+ const $ = _c(65);
13
15
  const {
14
16
  addCondition,
15
17
  andIndex,
16
18
  fieldName,
17
- fields,
18
19
  initialValue,
19
20
  operator,
21
+ options,
20
22
  orIndex,
21
23
  removeCondition,
22
24
  RenderedFilter,
23
25
  updateCondition
24
26
  } = props;
25
- const options = useMemo(() => {
26
- return fields.filter(({
27
- field
28
- }) => !field.admin.disableListFilter);
29
- }, [fields]);
30
- const [internalField, setInternalField] = useState(() => fields.find(field_0 => fieldName === field_0.value));
27
+ let t0;
28
+ if ($[0] !== fieldName || $[1] !== options) {
29
+ t0 = () => options.find(field => fieldName === field.value);
30
+ $[0] = fieldName;
31
+ $[1] = options;
32
+ $[2] = t0;
33
+ } else {
34
+ t0 = $[2];
35
+ }
36
+ const [fieldOption, setFieldOption] = useState(t0);
31
37
  const {
32
38
  t
33
39
  } = useTranslation();
34
40
  const [internalOperatorOption, setInternalOperatorOption] = useState(operator);
35
41
  const [internalQueryValue, setInternalQueryValue] = useState(initialValue);
36
42
  const debouncedValue = useDebounce(internalQueryValue, 300);
37
- useEffect(() => {
38
- // This is to trigger changes when the debounced value changes
39
- if ((internalField?.value || typeof internalField?.value === 'number') && internalOperatorOption && ![null, undefined].includes(debouncedValue)) {
40
- updateCondition({
41
- andIndex,
42
- fieldName: internalField.value,
43
+ let t1;
44
+ if ($[3] !== andIndex || $[4] !== debouncedValue || $[5] !== fieldOption || $[6] !== internalOperatorOption || $[7] !== orIndex || $[8] !== updateCondition) {
45
+ t1 = () => {
46
+ if ((fieldOption?.value || typeof fieldOption?.value === "number") && internalOperatorOption && ![null, undefined].includes(debouncedValue)) {
47
+ updateCondition({
48
+ andIndex,
49
+ fieldName: fieldOption.value,
50
+ operator: internalOperatorOption,
51
+ orIndex,
52
+ value: debouncedValue
53
+ });
54
+ }
55
+ };
56
+ $[3] = andIndex;
57
+ $[4] = debouncedValue;
58
+ $[5] = fieldOption;
59
+ $[6] = internalOperatorOption;
60
+ $[7] = orIndex;
61
+ $[8] = updateCondition;
62
+ $[9] = t1;
63
+ } else {
64
+ t1 = $[9];
65
+ }
66
+ const t2 = fieldOption?.value;
67
+ let t3;
68
+ if ($[10] !== andIndex || $[11] !== debouncedValue || $[12] !== internalOperatorOption || $[13] !== operator || $[14] !== orIndex || $[15] !== t2 || $[16] !== updateCondition) {
69
+ t3 = [debouncedValue, andIndex, t2, internalOperatorOption, orIndex, updateCondition, operator];
70
+ $[10] = andIndex;
71
+ $[11] = debouncedValue;
72
+ $[12] = internalOperatorOption;
73
+ $[13] = operator;
74
+ $[14] = orIndex;
75
+ $[15] = t2;
76
+ $[16] = updateCondition;
77
+ $[17] = t3;
78
+ } else {
79
+ t3 = $[17];
80
+ }
81
+ useEffect(t1, t3);
82
+ let t4;
83
+ if ($[18] !== fieldOption?.field?.type || $[19] !== internalOperatorOption) {
84
+ t4 = ["exists"].includes(internalOperatorOption) || fieldOption?.field?.type === "checkbox";
85
+ $[18] = fieldOption?.field?.type;
86
+ $[19] = internalOperatorOption;
87
+ $[20] = t4;
88
+ } else {
89
+ t4 = $[20];
90
+ }
91
+ const booleanSelect = t4;
92
+ let valueOptions;
93
+ if (booleanSelect) {
94
+ let t5;
95
+ if ($[21] !== t) {
96
+ t5 = t("general:true");
97
+ $[21] = t;
98
+ $[22] = t5;
99
+ } else {
100
+ t5 = $[22];
101
+ }
102
+ let t6;
103
+ if ($[23] !== t5) {
104
+ t6 = {
105
+ label: t5,
106
+ value: "true"
107
+ };
108
+ $[23] = t5;
109
+ $[24] = t6;
110
+ } else {
111
+ t6 = $[24];
112
+ }
113
+ let t7;
114
+ if ($[25] !== t) {
115
+ t7 = t("general:false");
116
+ $[25] = t;
117
+ $[26] = t7;
118
+ } else {
119
+ t7 = $[26];
120
+ }
121
+ let t8;
122
+ if ($[27] !== t7) {
123
+ t8 = {
124
+ label: t7,
125
+ value: "false"
126
+ };
127
+ $[27] = t7;
128
+ $[28] = t8;
129
+ } else {
130
+ t8 = $[28];
131
+ }
132
+ let t9;
133
+ if ($[29] !== t6 || $[30] !== t8) {
134
+ t9 = [t6, t8];
135
+ $[29] = t6;
136
+ $[30] = t8;
137
+ $[31] = t9;
138
+ } else {
139
+ t9 = $[31];
140
+ }
141
+ valueOptions = t9;
142
+ } else {
143
+ if (fieldOption?.field && "options" in fieldOption.field) {
144
+ valueOptions = fieldOption.field.options;
145
+ }
146
+ }
147
+ const disabled = !fieldOption?.value && typeof fieldOption?.value !== "number" || fieldOption?.field?.admin?.disableListFilter;
148
+ let t5;
149
+ if ($[32] !== options) {
150
+ t5 = field_0 => {
151
+ setFieldOption(options.find(f => f.value === field_0.value));
152
+ setInternalOperatorOption(undefined);
153
+ setInternalQueryValue(undefined);
154
+ };
155
+ $[32] = options;
156
+ $[33] = t5;
157
+ } else {
158
+ t5 = $[33];
159
+ }
160
+ let t6;
161
+ if ($[34] !== RenderedFilter || $[35] !== addCondition || $[36] !== andIndex || $[37] !== booleanSelect || $[38] !== disabled || $[39] !== fieldOption || $[40] !== internalOperatorOption || $[41] !== internalQueryValue || $[42] !== options || $[43] !== orIndex || $[44] !== removeCondition || $[45] !== t5 || $[46] !== valueOptions) {
162
+ let t7;
163
+ if ($[48] === Symbol.for("react.memo_cache_sentinel")) {
164
+ t7 = operator_0 => {
165
+ setInternalOperatorOption(operator_0.value);
166
+ };
167
+ $[48] = t7;
168
+ } else {
169
+ t7 = $[48];
170
+ }
171
+ let t8;
172
+ if ($[49] !== RenderedFilter || $[50] !== booleanSelect || $[51] !== fieldOption || $[52] !== internalOperatorOption || $[53] !== internalQueryValue || $[54] !== valueOptions) {
173
+ t8 = RenderedFilter || _jsx(DefaultFilter, {
174
+ booleanSelect,
175
+ disabled: !internalOperatorOption || !fieldOption || fieldOption?.field?.admin?.disableListFilter,
176
+ internalField: fieldOption,
177
+ onChange: setInternalQueryValue,
43
178
  operator: internalOperatorOption,
179
+ options: valueOptions,
180
+ value: internalQueryValue ?? ""
181
+ });
182
+ $[49] = RenderedFilter;
183
+ $[50] = booleanSelect;
184
+ $[51] = fieldOption;
185
+ $[52] = internalOperatorOption;
186
+ $[53] = internalQueryValue;
187
+ $[54] = valueOptions;
188
+ $[55] = t8;
189
+ } else {
190
+ t8 = $[55];
191
+ }
192
+ let t9;
193
+ if ($[56] !== andIndex || $[57] !== orIndex || $[58] !== removeCondition) {
194
+ t9 = () => removeCondition({
195
+ andIndex,
196
+ orIndex
197
+ });
198
+ $[56] = andIndex;
199
+ $[57] = orIndex;
200
+ $[58] = removeCondition;
201
+ $[59] = t9;
202
+ } else {
203
+ t9 = $[59];
204
+ }
205
+ let t10;
206
+ if ($[60] !== addCondition || $[61] !== andIndex || $[62] !== options || $[63] !== orIndex) {
207
+ t10 = () => addCondition({
208
+ andIndex: andIndex + 1,
209
+ fieldName: options.find(_temp2).value,
44
210
  orIndex,
45
- value: debouncedValue
211
+ relation: "and"
46
212
  });
213
+ $[60] = addCondition;
214
+ $[61] = andIndex;
215
+ $[62] = options;
216
+ $[63] = orIndex;
217
+ $[64] = t10;
218
+ } else {
219
+ t10 = $[64];
47
220
  }
48
- }, [debouncedValue, andIndex, internalField?.value, internalOperatorOption, orIndex, updateCondition, operator]);
49
- const booleanSelect = ['exists'].includes(internalOperatorOption) || internalField?.field?.type === 'checkbox';
50
- let valueOptions;
51
- if (booleanSelect) {
52
- valueOptions = [{
53
- label: t('general:true'),
54
- value: 'true'
55
- }, {
56
- label: t('general:false'),
57
- value: 'false'
58
- }];
59
- } else if (internalField?.field && 'options' in internalField.field) {
60
- valueOptions = internalField.field.options;
61
- }
62
- const disabled = !internalField?.value && typeof internalField?.value !== 'number' || internalField?.field?.admin?.disableListFilter;
63
- return /*#__PURE__*/_jsx("div", {
64
- className: baseClass,
65
- children: /*#__PURE__*/_jsxs("div", {
66
- className: `${baseClass}__wrap`,
67
- children: [/*#__PURE__*/_jsxs("div", {
68
- className: `${baseClass}__inputs`,
69
- children: [/*#__PURE__*/_jsx("div", {
70
- className: `${baseClass}__field`,
71
- children: /*#__PURE__*/_jsx(ReactSelect, {
72
- disabled: disabled,
73
- isClearable: false,
74
- onChange: field_1 => {
75
- setInternalField(fields.find(f => f.value === field_1.value));
76
- setInternalOperatorOption(undefined);
77
- setInternalQueryValue(undefined);
78
- },
79
- options: options,
80
- value: fields.find(field_2 => internalField?.value === field_2.value) || {
81
- value: internalField?.value
82
- }
83
- })
84
- }), /*#__PURE__*/_jsx("div", {
85
- className: `${baseClass}__operator`,
86
- children: /*#__PURE__*/_jsx(ReactSelect, {
87
- disabled: disabled,
88
- isClearable: false,
89
- onChange: operator_0 => {
90
- setInternalOperatorOption(operator_0.value);
91
- },
92
- options: internalField?.operators,
93
- value: internalField?.operators.find(operator_1 => internalOperatorOption === operator_1.value) || null
94
- })
95
- }), /*#__PURE__*/_jsx("div", {
96
- className: `${baseClass}__value`,
97
- children: RenderedFilter || /*#__PURE__*/_jsx(DefaultFilter, {
98
- booleanSelect: booleanSelect,
99
- disabled: !internalOperatorOption || internalField?.field?.admin?.disableListFilter,
100
- internalField: internalField,
101
- onChange: setInternalQueryValue,
102
- operator: internalOperatorOption,
103
- options: valueOptions,
104
- value: internalQueryValue ?? ''
105
- })
106
- })]
107
- }), /*#__PURE__*/_jsxs("div", {
108
- className: `${baseClass}__actions`,
109
- children: [/*#__PURE__*/_jsx(Button, {
110
- buttonStyle: "icon-label",
111
- className: `${baseClass}__actions-remove`,
112
- icon: "x",
113
- iconStyle: "with-border",
114
- onClick: () => removeCondition({
115
- andIndex,
116
- orIndex
117
- }),
118
- round: true
119
- }), /*#__PURE__*/_jsx(Button, {
120
- buttonStyle: "icon-label",
121
- className: `${baseClass}__actions-add`,
122
- icon: "plus",
123
- iconStyle: "with-border",
124
- onClick: () => addCondition({
125
- andIndex: andIndex + 1,
126
- fieldName: fields[0].value,
127
- orIndex,
128
- relation: 'and'
129
- }),
130
- round: true
221
+ t6 = _jsx("div", {
222
+ className: baseClass,
223
+ children: _jsxs("div", {
224
+ className: `${baseClass}__wrap`,
225
+ children: [_jsxs("div", {
226
+ className: `${baseClass}__inputs`,
227
+ children: [_jsx("div", {
228
+ className: `${baseClass}__field`,
229
+ children: _jsx(ReactSelect, {
230
+ disabled,
231
+ isClearable: false,
232
+ onChange: t5,
233
+ options: options.filter(_temp),
234
+ value: options.find(field_2 => fieldOption?.value === field_2.value) || {
235
+ value: fieldOption?.value
236
+ }
237
+ })
238
+ }), _jsx("div", {
239
+ className: `${baseClass}__operator`,
240
+ children: _jsx(ReactSelect, {
241
+ disabled,
242
+ isClearable: false,
243
+ onChange: t7,
244
+ options: fieldOption?.operators,
245
+ value: fieldOption?.operators.find(operator_1 => internalOperatorOption === operator_1.value) || null
246
+ })
247
+ }), _jsx("div", {
248
+ className: `${baseClass}__value`,
249
+ children: t8
250
+ })]
251
+ }), _jsxs("div", {
252
+ className: `${baseClass}__actions`,
253
+ children: [_jsx(Button, {
254
+ buttonStyle: "icon-label",
255
+ className: `${baseClass}__actions-remove`,
256
+ icon: "x",
257
+ iconStyle: "with-border",
258
+ onClick: t9,
259
+ round: true
260
+ }), _jsx(Button, {
261
+ buttonStyle: "icon-label",
262
+ className: `${baseClass}__actions-add`,
263
+ icon: "plus",
264
+ iconStyle: "with-border",
265
+ onClick: t10,
266
+ round: true
267
+ })]
131
268
  })]
132
- })]
133
- })
134
- });
269
+ })
270
+ });
271
+ $[34] = RenderedFilter;
272
+ $[35] = addCondition;
273
+ $[36] = andIndex;
274
+ $[37] = booleanSelect;
275
+ $[38] = disabled;
276
+ $[39] = fieldOption;
277
+ $[40] = internalOperatorOption;
278
+ $[41] = internalQueryValue;
279
+ $[42] = options;
280
+ $[43] = orIndex;
281
+ $[44] = removeCondition;
282
+ $[45] = t5;
283
+ $[46] = valueOptions;
284
+ $[47] = t6;
285
+ } else {
286
+ t6 = $[47];
287
+ }
288
+ return t6;
135
289
  };
290
+ function _temp(field_1) {
291
+ return !field_1.field.admin.disableListFilter;
292
+ }
293
+ function _temp2(field_3) {
294
+ return !field_3.field.admin?.disableListFilter;
295
+ }
136
296
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useMemo","useState","useDebounce","useTranslation","Button","ReactSelect","DefaultFilter","baseClass","Condition","props","addCondition","andIndex","fieldName","fields","initialValue","operator","orIndex","removeCondition","RenderedFilter","updateCondition","options","filter","field","admin","disableListFilter","internalField","setInternalField","find","value","t","internalOperatorOption","setInternalOperatorOption","internalQueryValue","setInternalQueryValue","debouncedValue","undefined","includes","booleanSelect","type","valueOptions","label","disabled","_jsx","className","_jsxs","isClearable","onChange","f","operators","buttonStyle","icon","iconStyle","onClick","round","relation"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { FieldCondition } from '../types.js'\n\nexport type Props = {\n readonly addCondition: ({\n andIndex,\n fieldName,\n orIndex,\n relation,\n }: {\n andIndex: number\n fieldName: string\n orIndex: number\n relation: 'and' | 'or'\n }) => void\n readonly andIndex: number\n readonly fieldName: string\n readonly fields: FieldCondition[]\n readonly initialValue: string\n readonly operator: Operator\n readonly orIndex: number\n readonly removeCondition: ({ andIndex, orIndex }: { andIndex: number; orIndex: number }) => void\n readonly RenderedFilter: React.ReactNode\n readonly updateCondition: ({\n andIndex,\n fieldName,\n operator,\n orIndex,\n value,\n }: {\n andIndex: number\n fieldName: string\n operator: string\n orIndex: number\n value: string\n }) => void\n}\n\nimport type { Operator } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DefaultFilter } from './DefaultFilter/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n fields,\n initialValue,\n operator,\n orIndex,\n removeCondition,\n RenderedFilter,\n updateCondition,\n } = props\n\n const options = useMemo(() => {\n return fields.filter(({ field }) => !field.admin.disableListFilter)\n }, [fields])\n\n const [internalField, setInternalField] = useState<FieldCondition>(() =>\n fields.find((field) => fieldName === field.value),\n )\n\n const { t } = useTranslation()\n const [internalOperatorOption, setInternalOperatorOption] = useState<Operator>(operator)\n const [internalQueryValue, setInternalQueryValue] = useState<string>(initialValue)\n\n const debouncedValue = useDebounce(internalQueryValue, 300)\n\n useEffect(() => {\n // This is to trigger changes when the debounced value changes\n if (\n (internalField?.value || typeof internalField?.value === 'number') &&\n internalOperatorOption &&\n ![null, undefined].includes(debouncedValue)\n ) {\n updateCondition({\n andIndex,\n fieldName: internalField.value,\n operator: internalOperatorOption,\n orIndex,\n value: debouncedValue,\n })\n }\n }, [\n debouncedValue,\n andIndex,\n internalField?.value,\n internalOperatorOption,\n orIndex,\n updateCondition,\n operator,\n ])\n\n const booleanSelect =\n ['exists'].includes(internalOperatorOption) || internalField?.field?.type === 'checkbox'\n\n let valueOptions\n\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (internalField?.field && 'options' in internalField.field) {\n valueOptions = internalField.field.options\n }\n\n const disabled =\n (!internalField?.value && typeof internalField?.value !== 'number') ||\n internalField?.field?.admin?.disableListFilter\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={(field: Option) => {\n setInternalField(fields.find((f) => f.value === field.value))\n setInternalOperatorOption(undefined)\n setInternalQueryValue(undefined)\n }}\n options={options}\n value={\n fields.find((field) => internalField?.value === field.value) || {\n value: internalField?.value,\n }\n }\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={(operator: Option<Operator>) => {\n setInternalOperatorOption(operator.value)\n }}\n options={internalField?.operators}\n value={\n internalField?.operators.find(\n (operator) => internalOperatorOption === operator.value,\n ) || null\n }\n />\n </div>\n <div className={`${baseClass}__value`}>\n {RenderedFilter || (\n <DefaultFilter\n booleanSelect={booleanSelect}\n disabled={!internalOperatorOption || internalField?.field?.admin?.disableListFilter}\n internalField={internalField}\n onChange={setInternalQueryValue}\n operator={internalOperatorOption}\n options={valueOptions}\n value={internalQueryValue ?? ''}\n />\n )}\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n fieldName: fields[0].value,\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useState","useDebounce","useTranslation","Button","ReactSelect","DefaultFilter","baseClass","Condition","props","$","addCondition","andIndex","fieldName","initialValue","operator","options","orIndex","removeCondition","RenderedFilter","updateCondition","t0","find","field","value","fieldOption","setFieldOption","t","internalOperatorOption","setInternalOperatorOption","internalQueryValue","setInternalQueryValue","debouncedValue","t1","undefined","includes","t2","t3","t4","type","booleanSelect","valueOptions","t5","t6","label","t7","t8","t9","disabled","admin","disableListFilter","field_0","f","Symbol","for","operator_0","_jsx","internalField","onChange","t10","_temp2","relation","className","children","_jsxs","isClearable","filter","_temp","field_2","operators","operator_1","buttonStyle","icon","iconStyle","onClick","round","field_1","field_3"],"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useState } from 'react'\n\nimport type { FieldCondition } from '../types.js'\n\nexport type Props = {\n readonly addCondition: ({\n andIndex,\n fieldName,\n orIndex,\n relation,\n }: {\n andIndex: number\n fieldName: string\n orIndex: number\n relation: 'and' | 'or'\n }) => void\n readonly andIndex: number\n readonly fieldName: string\n readonly initialValue: string\n readonly operator: Operator\n readonly options: FieldCondition[]\n readonly orIndex: number\n readonly removeCondition: ({ andIndex, orIndex }: { andIndex: number; orIndex: number }) => void\n readonly RenderedFilter: React.ReactNode\n readonly updateCondition: ({\n andIndex,\n fieldName,\n operator,\n orIndex,\n value,\n }: {\n andIndex: number\n fieldName: string\n operator: string\n orIndex: number\n value: string\n }) => void\n}\n\nimport type { Operator } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DefaultFilter } from './DefaultFilter/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n initialValue,\n operator,\n options,\n orIndex,\n removeCondition,\n RenderedFilter,\n updateCondition,\n } = props\n\n const [fieldOption, setFieldOption] = useState<FieldCondition>(() =>\n options.find((field) => fieldName === field.value),\n )\n\n const { t } = useTranslation()\n const [internalOperatorOption, setInternalOperatorOption] = useState<Operator>(operator)\n const [internalQueryValue, setInternalQueryValue] = useState<string>(initialValue)\n\n const debouncedValue = useDebounce(internalQueryValue, 300)\n\n useEffect(() => {\n // This is to trigger changes when the debounced value changes\n if (\n (fieldOption?.value || typeof fieldOption?.value === 'number') &&\n internalOperatorOption &&\n ![null, undefined].includes(debouncedValue)\n ) {\n updateCondition({\n andIndex,\n fieldName: fieldOption.value,\n operator: internalOperatorOption,\n orIndex,\n value: debouncedValue,\n })\n }\n }, [\n debouncedValue,\n andIndex,\n fieldOption?.value,\n internalOperatorOption,\n orIndex,\n updateCondition,\n operator,\n ])\n\n const booleanSelect =\n ['exists'].includes(internalOperatorOption) || fieldOption?.field?.type === 'checkbox'\n\n let valueOptions\n\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (fieldOption?.field && 'options' in fieldOption.field) {\n valueOptions = fieldOption.field.options\n }\n\n const disabled =\n (!fieldOption?.value && typeof fieldOption?.value !== 'number') ||\n fieldOption?.field?.admin?.disableListFilter\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={(field: Option) => {\n setFieldOption(options.find((f) => f.value === field.value))\n setInternalOperatorOption(undefined)\n setInternalQueryValue(undefined)\n }}\n options={options.filter((field) => !field.field.admin.disableListFilter)}\n value={\n options.find((field) => fieldOption?.value === field.value) || {\n value: fieldOption?.value,\n }\n }\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={disabled}\n isClearable={false}\n onChange={(operator: Option<Operator>) => {\n setInternalOperatorOption(operator.value)\n }}\n options={fieldOption?.operators}\n value={\n fieldOption?.operators.find(\n (operator) => internalOperatorOption === operator.value,\n ) || null\n }\n />\n </div>\n <div className={`${baseClass}__value`}>\n {RenderedFilter || (\n <DefaultFilter\n booleanSelect={booleanSelect}\n disabled={\n !internalOperatorOption ||\n !fieldOption ||\n fieldOption?.field?.admin?.disableListFilter\n }\n internalField={fieldOption}\n onChange={setInternalQueryValue}\n operator={internalOperatorOption}\n options={valueOptions}\n value={internalQueryValue ?? ''}\n />\n )}\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n fieldName: options.find((field) => !field.field.admin?.disableListFilter).value,\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAMnD,OAAO,cAAc,CAAA;AAOrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+NpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AASnD,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+NpD,CAAA"}
@@ -8,10 +8,10 @@ import { useListQuery } from '../../providers/ListQuery/index.js';
8
8
  import { useTranslation } from '../../providers/Translation/index.js';
9
9
  import { Button } from '../Button/index.js';
10
10
  import { Condition } from './Condition/index.js';
11
- import './index.scss';
12
11
  import { reduceClientFields } from './reduceClientFields.js';
13
12
  import { transformWhereQuery } from './transformWhereQuery.js';
14
13
  import validateWhereQuery from './validateWhereQuery.js';
14
+ import './index.scss';
15
15
  const baseClass = 'where-builder';
16
16
  /**
17
17
  * The WhereBuilder component is used to render the filter controls for a collection's list view.
@@ -40,12 +40,12 @@ export const WhereBuilder = props => {
40
40
  } else {
41
41
  t0 = $[2];
42
42
  }
43
- const [reducedFields, setReducedColumns] = useState(t0);
43
+ const [options, setOptions] = useState(t0);
44
44
  let t1;
45
45
  let t2;
46
46
  if ($[3] !== fields || $[4] !== i18n) {
47
47
  t1 = () => {
48
- setReducedColumns(reduceClientFields({
48
+ setOptions(reduceClientFields({
49
49
  fields,
50
50
  i18n
51
51
  }));
@@ -197,7 +197,7 @@ export const WhereBuilder = props => {
197
197
  }
198
198
  React.useEffect(t7, t8);
199
199
  let t9;
200
- if ($[20] !== addCondition || $[21] !== collectionPluralLabel || $[22] !== conditions || $[23] !== i18n || $[24] !== reducedFields || $[25] !== removeCondition || $[26] !== renderedFilters || $[27] !== t || $[28] !== updateCondition) {
200
+ if ($[20] !== addCondition || $[21] !== collectionPluralLabel || $[22] !== conditions || $[23] !== i18n || $[24] !== options || $[25] !== removeCondition || $[26] !== renderedFilters || $[27] !== t || $[28] !== updateCondition) {
201
201
  t9 = _jsxs("div", {
202
202
  className: baseClass,
203
203
  children: [conditions.length > 0 && _jsxs(React.Fragment, {
@@ -219,7 +219,7 @@ export const WhereBuilder = props => {
219
219
  children: Array.isArray(or?.and) && or.and.map((_, andIndex_2) => {
220
220
  const initialFieldName = Object.keys(conditions[orIndex_2].and[andIndex_2])[0];
221
221
  const initialOperator = Object.keys(conditions[orIndex_2].and[andIndex_2]?.[initialFieldName] || {})?.[0] || undefined;
222
- const initialValue = conditions[orIndex_2].and[andIndex_2]?.[initialFieldName]?.[initialOperator] || "";
222
+ const initialValue = conditions[orIndex_2].and[andIndex_2]?.[initialFieldName]?.[initialOperator] || undefined;
223
223
  return _jsxs("li", {
224
224
  children: [andIndex_2 !== 0 && _jsx("div", {
225
225
  className: `${baseClass}__label`,
@@ -228,9 +228,9 @@ export const WhereBuilder = props => {
228
228
  addCondition,
229
229
  andIndex: andIndex_2,
230
230
  fieldName: initialFieldName,
231
- fields: reducedFields,
232
231
  initialValue,
233
232
  operator: initialOperator,
233
+ options,
234
234
  orIndex: orIndex_2,
235
235
  removeCondition,
236
236
  RenderedFilter: renderedFilters?.get(initialFieldName),
@@ -250,7 +250,7 @@ export const WhereBuilder = props => {
250
250
  onClick: () => {
251
251
  addCondition({
252
252
  andIndex: 0,
253
- fieldName: reducedFields[0].value,
253
+ fieldName: options[0].value,
254
254
  orIndex: conditions.length,
255
255
  relation: "or"
256
256
  });
@@ -269,10 +269,10 @@ export const WhereBuilder = props => {
269
269
  iconPosition: "left",
270
270
  iconStyle: "with-border",
271
271
  onClick: () => {
272
- if (reducedFields.length > 0) {
272
+ if (options.length > 0) {
273
273
  addCondition({
274
274
  andIndex: 0,
275
- fieldName: reducedFields[0].value,
275
+ fieldName: options.find(_temp).value,
276
276
  orIndex: conditions.length,
277
277
  relation: "or"
278
278
  });
@@ -286,7 +286,7 @@ export const WhereBuilder = props => {
286
286
  $[21] = collectionPluralLabel;
287
287
  $[22] = conditions;
288
288
  $[23] = i18n;
289
- $[24] = reducedFields;
289
+ $[24] = options;
290
290
  $[25] = removeCondition;
291
291
  $[26] = renderedFilters;
292
292
  $[27] = t;
@@ -297,4 +297,7 @@ export const WhereBuilder = props => {
297
297
  }
298
298
  return t9;
299
299
  };
300
+ function _temp(field) {
301
+ return !field.field.admin?.disableListFilter;
302
+ }
300
303
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useState","useListQuery","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","$","collectionPluralLabel","fields","renderedFilters","i18n","t","t0","reducedFields","setReducedColumns","t1","t2","handleWhereChange","query","shouldUpdateQuery","setShouldUpdateQuery","t3","where","whereFromSearch","or","transformedWhere","console","warn","JSON","stringify","conditions","setConditions","t4","t5","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","addCondition","t6","andIndex_0","fieldName_0","operator","orIndex_0","value","valueArg","existingRowCondition","newRowCondition","newConditions_0","undefined","includes","updateCondition","t7","andIndex_1","orIndex_1","newConditions_1","length","removeCondition","t8","handleChange","t9","_jsxs","className","children","Fragment","_jsx","label","map","orIndex_2","compoundOrKey","Array","isArray","_","andIndex_2","initialFieldName","Object","keys","initialOperator","initialValue","RenderedFilter","get","buttonStyle","icon","iconPosition","iconStyle","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters } = props\n const { i18n, t } = useTranslation()\n\n const [reducedFields, setReducedColumns] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n setReducedColumns(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n setConditions(newConditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || ''\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n fields={reducedFields}\n initialValue={initialValue}\n operator={initialOperator}\n orIndex={orIndex}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(initialFieldName)}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useState","useListQuery","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","$","collectionPluralLabel","fields","renderedFilters","i18n","t","t0","options","setOptions","t1","t2","handleWhereChange","query","shouldUpdateQuery","setShouldUpdateQuery","t3","where","whereFromSearch","or","transformedWhere","console","warn","JSON","stringify","conditions","setConditions","t4","t5","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","addCondition","t6","andIndex_0","fieldName_0","operator","orIndex_0","value","valueArg","existingRowCondition","newRowCondition","newConditions_0","undefined","includes","updateCondition","t7","andIndex_1","orIndex_1","newConditions_1","length","removeCondition","t8","handleChange","t9","_jsxs","className","children","Fragment","_jsx","label","map","orIndex_2","compoundOrKey","Array","isArray","_","andIndex_2","initialFieldName","Object","keys","initialOperator","initialValue","RenderedFilter","get","buttonStyle","icon","iconPosition","iconStyle","onClick","find","_temp","field","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters } = props\n const { i18n, t } = useTranslation()\n\n const [options, setOptions] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n setOptions(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n setConditions(newConditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n initialValue={initialValue}\n operator={initialOperator}\n options={options}\n orIndex={orIndex}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(initialFieldName)}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: options[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (options.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: options.find((field) => !field.field.admin?.disableListFilter).value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}