@payloadcms/ui 4.0.0-canary.3 → 4.0.0-internal.17c13d2

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 (163) hide show
  1. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FormsManager/index.js +13 -0
  3. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  4. package/dist/elements/Card/index.css +1 -1
  5. package/dist/elements/ColumnSelection/Popup.d.ts +12 -0
  6. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -0
  7. package/dist/elements/{ColumnSelector/index.js → ColumnSelection/Popup.js} +28 -13
  8. package/dist/elements/ColumnSelection/Popup.js.map +1 -0
  9. package/dist/elements/ColumnSelection/index.d.ts +10 -0
  10. package/dist/elements/ColumnSelection/index.d.ts.map +1 -0
  11. package/dist/elements/{ColumnsButton → ColumnSelection}/index.js +23 -17
  12. package/dist/elements/ColumnSelection/index.js.map +1 -0
  13. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentControls/index.js +2 -2
  15. package/dist/elements/DocumentControls/index.js.map +1 -1
  16. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  17. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +5 -3
  18. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  19. package/dist/elements/GroupBy/Popup.d.ts +21 -0
  20. package/dist/elements/GroupBy/Popup.d.ts.map +1 -0
  21. package/dist/elements/GroupBy/Popup.js +269 -0
  22. package/dist/elements/GroupBy/Popup.js.map +1 -0
  23. package/dist/elements/GroupBy/index.d.ts +12 -0
  24. package/dist/elements/GroupBy/index.d.ts.map +1 -0
  25. package/dist/elements/GroupBy/index.js +91 -0
  26. package/dist/elements/GroupBy/index.js.map +1 -0
  27. package/dist/elements/ListColumnSelectionButton/index.d.ts +11 -0
  28. package/dist/elements/ListColumnSelectionButton/index.d.ts.map +1 -0
  29. package/dist/elements/ListColumnSelectionButton/index.js +37 -0
  30. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -0
  31. package/dist/elements/ListControls/index.d.ts.map +1 -1
  32. package/dist/elements/ListControls/index.js +7 -7
  33. package/dist/elements/ListControls/index.js.map +1 -1
  34. package/dist/elements/ListGroupByButton/index.d.ts +12 -0
  35. package/dist/elements/ListGroupByButton/index.d.ts.map +1 -0
  36. package/dist/elements/ListGroupByButton/index.js +55 -0
  37. package/dist/elements/ListGroupByButton/index.js.map +1 -0
  38. package/dist/elements/ListWhereBuilder/index.d.ts +16 -0
  39. package/dist/elements/ListWhereBuilder/index.d.ts.map +1 -0
  40. package/dist/elements/ListWhereBuilder/index.js +62 -0
  41. package/dist/elements/ListWhereBuilder/index.js.map +1 -0
  42. package/dist/elements/Popup/index.d.ts.map +1 -1
  43. package/dist/elements/Popup/index.js +42 -11
  44. package/dist/elements/Popup/index.js.map +1 -1
  45. package/dist/elements/QueryPresets/cells/ColumnsCell/{index.scss → index.css} +1 -3
  46. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +1 -1
  47. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -1
  48. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -1
  49. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  50. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +1 -1
  51. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
  52. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +77 -48
  53. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  54. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +1 -1
  55. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
  56. package/dist/elements/QueryPresets/fields/GroupByField/index.js +12 -21
  57. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  58. package/dist/elements/QueryPresets/fields/Heading/index.css +52 -0
  59. package/dist/elements/QueryPresets/fields/Heading/index.d.ts +7 -0
  60. package/dist/elements/QueryPresets/fields/Heading/index.d.ts.map +1 -0
  61. package/dist/elements/QueryPresets/fields/Heading/index.js +31 -0
  62. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -0
  63. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +1 -1
  64. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  65. package/dist/elements/QueryPresets/fields/WhereField/index.js +24 -23
  66. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  67. package/dist/elements/QueryPresets/fields/fields.css +23 -0
  68. package/dist/elements/RelationshipTable/index.js +2 -2
  69. package/dist/elements/RelationshipTable/index.js.map +1 -1
  70. package/dist/elements/RenderServerComponent/clientOnly.d.ts +8 -0
  71. package/dist/elements/RenderServerComponent/clientOnly.d.ts.map +1 -0
  72. package/dist/elements/RenderServerComponent/clientOnly.js +56 -0
  73. package/dist/elements/RenderServerComponent/clientOnly.js.map +1 -0
  74. package/dist/elements/SortColumn/index.css +1 -1
  75. package/dist/elements/Table/index.css +24 -2
  76. package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -0
  77. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  78. package/dist/elements/WhereBuilder/Condition/index.js +17 -2
  79. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  80. package/dist/elements/WhereBuilder/index.d.ts +4 -3
  81. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  82. package/dist/elements/WhereBuilder/index.js +71 -62
  83. package/dist/elements/WhereBuilder/index.js.map +1 -1
  84. package/dist/elements/WhereBuilder/types.d.ts +6 -5
  85. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  86. package/dist/elements/WhereBuilder/types.js.map +1 -1
  87. package/dist/exports/client/index.d.ts +1 -0
  88. package/dist/exports/client/index.d.ts.map +1 -1
  89. package/dist/exports/client/index.js +2 -86
  90. package/dist/exports/client/index.js.map +4 -4
  91. package/dist/exports/server.d.ts +3 -0
  92. package/dist/exports/server.d.ts.map +1 -0
  93. package/dist/exports/server.js +2 -0
  94. package/dist/exports/server.js.map +1 -0
  95. package/dist/providers/Auth/index.d.ts +3 -1
  96. package/dist/providers/Auth/index.d.ts.map +1 -1
  97. package/dist/providers/Auth/index.js +8 -3
  98. package/dist/providers/Auth/index.js.map +1 -1
  99. package/dist/scss/app.scss +6 -0
  100. package/dist/styles.css +1361 -1
  101. package/dist/utilities/getVersions.d.ts.map +1 -1
  102. package/dist/utilities/getVersions.js +5 -2
  103. package/dist/utilities/getVersions.js.map +1 -1
  104. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  105. package/dist/utilities/reduceFieldsToOptions.js +1 -1
  106. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  107. package/dist/utilities/serverFunctionRegistry.d.ts +13 -0
  108. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -0
  109. package/dist/utilities/serverFunctionRegistry.js +25 -0
  110. package/dist/utilities/serverFunctionRegistry.js.map +1 -0
  111. package/dist/views/List/index.client.d.ts.map +1 -1
  112. package/dist/views/List/index.client.js +3 -3
  113. package/dist/views/List/index.client.js.map +1 -1
  114. package/dist/views/List/index.d.ts.map +1 -1
  115. package/dist/views/List/index.js +7 -1
  116. package/dist/views/List/index.js.map +1 -1
  117. package/dist/views/Logout/LogoutClient.d.ts +14 -0
  118. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  119. package/dist/views/Logout/LogoutClient.js +38 -32
  120. package/dist/views/Logout/LogoutClient.js.map +1 -1
  121. package/dist/views/Logout/index.d.ts.map +1 -1
  122. package/dist/views/Logout/index.js +7 -2
  123. package/dist/views/Logout/index.js.map +1 -1
  124. package/dist/views/Versions/index.css +0 -4
  125. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +20 -0
  126. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -0
  127. package/dist/widgets/CollectionCards/getCollectionCardsData.js +29 -0
  128. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -0
  129. package/dist/widgets/CollectionCards/index.client.d.ts +5 -0
  130. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -0
  131. package/dist/widgets/CollectionCards/index.client.js +139 -0
  132. package/dist/widgets/CollectionCards/index.client.js.map +1 -0
  133. package/package.json +562 -8
  134. package/dist/elements/ColumnSelector/index.d.ts +0 -9
  135. package/dist/elements/ColumnSelector/index.d.ts.map +0 -1
  136. package/dist/elements/ColumnSelector/index.js.map +0 -1
  137. package/dist/elements/ColumnsButton/index.d.ts +0 -7
  138. package/dist/elements/ColumnsButton/index.d.ts.map +0 -1
  139. package/dist/elements/ColumnsButton/index.js.map +0 -1
  140. package/dist/elements/GroupByBuilder/index.d.ts +0 -12
  141. package/dist/elements/GroupByBuilder/index.d.ts.map +0 -1
  142. package/dist/elements/GroupByBuilder/index.js +0 -164
  143. package/dist/elements/GroupByBuilder/index.js.map +0 -1
  144. package/dist/elements/GroupByBuilder/index.scss +0 -39
  145. package/dist/elements/GroupByControl/index.d.ts +0 -9
  146. package/dist/elements/GroupByControl/index.d.ts.map +0 -1
  147. package/dist/elements/GroupByControl/index.js +0 -254
  148. package/dist/elements/GroupByControl/index.js.map +0 -1
  149. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -17
  150. package/dist/elements/QueryPresets/fields/GroupByField/index.scss +0 -17
  151. package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
  152. package/dist/exports/client/CodeEditor-T3624SG3.js +0 -14
  153. package/dist/exports/client/CodeEditor-T3624SG3.js.map +0 -7
  154. package/dist/exports/client/DatePicker-6KF52Z3G.js +0 -14
  155. package/dist/exports/client/DatePicker-6KF52Z3G.js.map +0 -7
  156. package/dist/exports/client/chunk-5LKBKI4T.js +0 -14
  157. package/dist/exports/client/chunk-5LKBKI4T.js.map +0 -7
  158. package/dist/exports/client/chunk-7T64ULOM.js +0 -29
  159. package/dist/exports/client/chunk-7T64ULOM.js.map +0 -7
  160. package/dist/exports/client/chunk-DMFYTMX6.js +0 -27
  161. package/dist/exports/client/chunk-DMFYTMX6.js.map +0 -7
  162. /package/dist/elements/{ColumnSelector/index.css → ColumnSelection/Popup.css} +0 -0
  163. /package/dist/elements/{GroupByControl/index.css → GroupBy/Popup.css} +0 -0
@@ -0,0 +1,52 @@
1
+ @layer payload-default {
2
+ .query-preset-heading {
3
+ margin: var(--spacer-4) 0 var(--spacer-2-5);
4
+ color: var(--color-text);
5
+ font-family: var(--text-heading-medium-font-family);
6
+ font-size: var(--text-heading-medium-font-size);
7
+ font-weight: var(--text-heading-medium-font-weight);
8
+ line-height: var(--text-heading-medium-line-height);
9
+ }
10
+
11
+ .field-type.row.query-preset-controls-row {
12
+ /* Match the standalone headings' top spacing so sections stay aligned. */
13
+ margin-top: var(--spacer-4);
14
+
15
+ .row__fields {
16
+ align-items: center;
17
+ column-gap: var(--spacer-2);
18
+ flex-wrap: nowrap;
19
+
20
+ /* Size controls to their content and drop Row's inline margins so the last
21
+ one aligns with the right edge. Matches Row's `:has` selector to win on
22
+ mobile, where Row's media-query reset has too little specificity. */
23
+ &:has(> *:nth-child(2)) {
24
+ margin-inline: 0;
25
+
26
+ > * {
27
+ flex: 0 0 auto;
28
+ margin-inline: 0;
29
+ /* Clamp against Row's mobile `width: 100% !important`. */
30
+ max-width: fit-content;
31
+ }
32
+ }
33
+
34
+ /* Stay in a row on mobile, where Row otherwise stacks into a column. */
35
+ @media (max-width: 1024px) {
36
+ flex-direction: row;
37
+ }
38
+ }
39
+
40
+ /* The heading absorbs the free space to push the controls to the right edge;
41
+ the row owns the top spacing, so collapse the heading's own block margins. */
42
+ .row__fields:has(> *:nth-child(2)) > .query-preset-heading {
43
+ margin-block: 0;
44
+ margin-inline-end: auto;
45
+ }
46
+ }
47
+
48
+ /* The Access heading provides the separation, so hide the group's top border. */
49
+ .query-preset-access-group.group-field--top-level::before {
50
+ display: none;
51
+ }
52
+ }
@@ -0,0 +1,7 @@
1
+ import type { ClientTranslationKeys } from '@payloadcms/translations';
2
+ import React from 'react';
3
+ import './index.css';
4
+ export declare const QueryPresetsHeading: React.FC<{
5
+ i18nKey?: ClientTranslationKeys;
6
+ }>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/Heading/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,aAAa,CAAA;AAEpB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAM7E,CAAA"}
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import React from 'react';
6
+ import { useTranslation } from '../../../../providers/Translation/index.js';
7
+ import './index.css';
8
+ export const QueryPresetsHeading = t0 => {
9
+ const $ = _c(3);
10
+ const {
11
+ i18nKey: t1
12
+ } = t0;
13
+ const i18nKey = t1 === undefined ? "general:presets" : t1;
14
+ const {
15
+ t
16
+ } = useTranslation();
17
+ let t2;
18
+ if ($[0] !== i18nKey || $[1] !== t) {
19
+ t2 = _jsx("h3", {
20
+ className: "query-preset-heading",
21
+ children: t(i18nKey)
22
+ });
23
+ $[0] = i18nKey;
24
+ $[1] = t;
25
+ $[2] = t2;
26
+ } else {
27
+ t2 = $[2];
28
+ }
29
+ return t2;
30
+ };
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useTranslation","QueryPresetsHeading","t0","$","i18nKey","t1","undefined","t","t2","_jsx","className","children"],"sources":["../../../../../src/elements/QueryPresets/fields/Heading/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys } from '@payloadcms/translations'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.css'\n\nexport const QueryPresetsHeading: React.FC<{ i18nKey?: ClientTranslationKeys }> = ({\n i18nKey = 'general:presets',\n}) => {\n const { t } = useTranslation()\n\n return <h3 className=\"query-preset-heading\">{t(i18nKey)}</h3>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,OAAO,MAAMC,mBAAA,GAAqEC,EAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAAC;IAAAM,OAAA,EAAAC;EAAA,IAAAH,EAElF;EADC,MAAAE,OAAA,GAAAC,EAA2B,KAAAC,SAAA,GAAjB,iBAAiB,GAA3BD,EAA2B;EAE3B;IAAAE;EAAA,IAAcP,cAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAL,CAAA,QAAAC,OAAA,IAAAD,CAAA,QAAAI,CAAA;IAEPC,EAAA,GAAAC,IAAA,CAAC;MAAAC,SAAA,EAAa;MAAAC,QAAA,EAAwBJ,CAAA,CAAEH,OAAA;IAAA,C;;;;;;;SAAxCI,E;CACT","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import type { JSONFieldClientComponent } from 'payload';
2
- import './index.scss';
2
+ import '../fields.css';
3
3
  export declare const QueryPresetsWhereField: JSONFieldClientComponent;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/WhereField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAS,MAAM,SAAS,CAAA;AAO9D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,sBAAsB,EAAE,wBA4BpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/QueryPresets/fields/WhereField/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAS,MAAM,SAAS,CAAA;AAQ9D,OAAO,eAAe,CAAA;AAEtB,eAAO,MAAM,sBAAsB,EAAE,wBA+BpC,CAAA"}
@@ -5,10 +5,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { FieldLabel } from '../../../../fields/FieldLabel/index.js';
7
7
  import { useField } from '../../../../forms/useField/index.js';
8
+ import { useConfig } from '../../../../providers/Config/index.js';
8
9
  import { WhereBuilder } from '../../../WhereBuilder/index.js';
9
- import './index.scss';
10
+ import '../fields.css';
10
11
  export const QueryPresetsWhereField = t0 => {
11
- const $ = _c(14);
12
+ const $ = _c(12);
12
13
  const {
13
14
  field: t1
14
15
  } = t0;
@@ -32,6 +33,9 @@ export const QueryPresetsWhereField = t0 => {
32
33
  }
33
34
  const relatedCollectionField = useField(t2);
34
35
  const relatedCollection = relatedCollectionField.value;
36
+ const {
37
+ getEntityConfig
38
+ } = useConfig();
35
39
  if (!relatedCollection) {
36
40
  let t3;
37
41
  if ($[1] !== label || $[2] !== path || $[3] !== required) {
@@ -57,37 +61,34 @@ export const QueryPresetsWhereField = t0 => {
57
61
  return t3;
58
62
  }
59
63
  let t3;
60
- if ($[5] !== label || $[6] !== path || $[7] !== relatedCollection || $[8] !== required || $[9] !== setValue || $[10] !== value) {
64
+ if ($[5] !== getEntityConfig || $[6] !== relatedCollection || $[7] !== setValue || $[8] !== value) {
65
+ const collectionConfig = getEntityConfig({
66
+ collectionSlug: relatedCollection
67
+ });
61
68
  let t4;
62
- if ($[12] !== setValue) {
69
+ if ($[10] !== setValue) {
63
70
  t4 = where => setValue(where);
64
- $[12] = setValue;
65
- $[13] = t4;
71
+ $[10] = setValue;
72
+ $[11] = t4;
66
73
  } else {
67
- t4 = $[13];
74
+ t4 = $[11];
68
75
  }
69
- t3 = _jsxs("div", {
76
+ t3 = _jsx("div", {
70
77
  className: "field-type query-preset-where-field",
71
- children: [_jsx(FieldLabel, {
72
- as: "h3",
73
- label,
74
- path,
75
- required
76
- }), _jsx(WhereBuilder, {
78
+ children: _jsx(WhereBuilder, {
77
79
  collectionSlug: relatedCollection,
80
+ fields: collectionConfig?.fields ?? [],
78
81
  onChange: t4,
79
82
  value: value ?? undefined
80
- })]
83
+ })
81
84
  });
82
- $[5] = label;
83
- $[6] = path;
84
- $[7] = relatedCollection;
85
- $[8] = required;
86
- $[9] = setValue;
87
- $[10] = value;
88
- $[11] = t3;
85
+ $[5] = getEntityConfig;
86
+ $[6] = relatedCollection;
87
+ $[7] = setValue;
88
+ $[8] = value;
89
+ $[9] = t3;
89
90
  } else {
90
- t3 = $[11];
91
+ t3 = $[9];
91
92
  }
92
93
  return t3;
93
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","FieldLabel","useField","WhereBuilder","QueryPresetsWhereField","t0","$","field","t1","label","required","path","setValue","value","t2","Symbol","for","relatedCollectionField","relatedCollection","t3","_jsxs","className","children","_jsx","as","t4","where","collectionSlug","onChange","undefined"],"sources":["../../../../../src/elements/QueryPresets/fields/WhereField/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent, Where } from 'payload'\n\nimport React from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { WhereBuilder } from '../../../WhereBuilder/index.js'\nimport './index.scss'\n\nexport const QueryPresetsWhereField: JSONFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, setValue, value } = useField<Where>()\n const relatedCollectionField = useField({ path: 'relatedCollection' })\n const relatedCollection = relatedCollectionField.value as string | undefined\n\n if (!relatedCollection) {\n return (\n <div className=\"field-type query-preset-where-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <p className=\"query-preset-where-field__hint\">\n Select the related collection to configure filters.\n </p>\n </div>\n )\n }\n\n return (\n <div className=\"field-type query-preset-where-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <WhereBuilder\n collectionSlug={relatedCollection}\n onChange={(where) => setValue(where)}\n value={value ?? undefined}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAEP,OAAO,MAAMC,sBAAA,GAAmDC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,KAAA,EAAAC;EAAA,IAAAH,EAEhE;EADQ;IAAAI,KAAA;IAAAC;EAAA,IAAAF,EAAmB;EAE1B;IAAAG,IAAA;IAAAC,QAAA;IAAAC;EAAA,IAAkCX,QAAA;EAAA,IAAAY,EAAA;EAAA,IAAAR,CAAA,QAAAS,MAAA,CAAAC,GAAA;IACMF,EAAA;MAAAH,IAAA,EAAQ;IAAA;IAAoBL,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAApE,MAAAW,sBAAA,GAA+Bf,QAAA,CAASY,EAA4B;EACpE,MAAAI,iBAAA,GAA0BD,sBAAA,CAAAJ,KAAA;EAA4B,KAEjDK,iBAAA;IAAA,IAAAC,EAAA;IAAA,IAAAb,CAAA,QAAAG,KAAA,IAAAH,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAI,QAAA;MAEDS,EAAA,GAAAC,KAAA,CAAC;QAAAC,SAAA,EAAc;QAAAC,QAAA,GACbC,IAAA,CAAAtB,UAAA;UAAAuB,EAAA,EAAe;UAAAf,KAAA;UAAAE,IAAA;UAAAD;QAAA,C,GACfa,IAAA,CAAC;UAAAF,SAAA,EAAY;UAAAC,QAAA,EAAiC;QAAA,C;;;;;;;;;WAFhDH,E;;;;;;MAcYM,EAAA,GAAAC,KAAA,IAAWd,QAAA,CAASc,KAAA;MAAApB,CAAA,OAAAM,QAAA;MAAAN,CAAA,OAAAmB,EAAA;IAAA;MAAAA,EAAA,GAAAnB,CAAA;IAAA;IAJlCa,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAc;MAAAC,QAAA,GACbC,IAAA,CAAAtB,UAAA;QAAAuB,EAAA,EAAe;QAAAf,KAAA;QAAAE,IAAA;QAAAD;MAAA,C,GACfa,IAAA,CAAApB,YAAA;QAAAwB,cAAA,EACkBT,iBAAA;QAAAU,QAAA,EACNH,EAAoB;QAAAZ,KAAA,EACvBA,KAAA,IAAAgB;MAAS,C;;;;;;;;;;;;SALpBV,E;CASJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","FieldLabel","useField","useConfig","WhereBuilder","QueryPresetsWhereField","t0","$","field","t1","label","required","path","setValue","value","t2","Symbol","for","relatedCollectionField","relatedCollection","getEntityConfig","t3","_jsxs","className","children","_jsx","as","collectionConfig","collectionSlug","t4","where","fields","onChange","undefined"],"sources":["../../../../../src/elements/QueryPresets/fields/WhereField/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent, Where } from 'payload'\n\nimport React from 'react'\n\nimport { FieldLabel } from '../../../../fields/FieldLabel/index.js'\nimport { useField } from '../../../../forms/useField/index.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { WhereBuilder } from '../../../WhereBuilder/index.js'\nimport '../fields.css'\n\nexport const QueryPresetsWhereField: JSONFieldClientComponent = ({\n field: { label, required },\n}) => {\n const { path, setValue, value } = useField<Where>()\n const relatedCollectionField = useField({ path: 'relatedCollection' })\n const relatedCollection = relatedCollectionField.value as string | undefined\n const { getEntityConfig } = useConfig()\n\n if (!relatedCollection) {\n return (\n <div className=\"field-type query-preset-where-field\">\n <FieldLabel as=\"h3\" label={label} path={path} required={required} />\n <p className=\"query-preset-where-field__hint\">\n Select the related collection to configure filters.\n </p>\n </div>\n )\n }\n\n const collectionConfig = getEntityConfig({ collectionSlug: relatedCollection })\n\n return (\n <div className=\"field-type query-preset-where-field\">\n <WhereBuilder\n collectionSlug={relatedCollection}\n fields={collectionConfig?.fields ?? []}\n onChange={(where) => setValue(where)}\n value={value ?? undefined}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAEP,OAAO,MAAMC,sBAAA,GAAmDC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS,KAAA,EAAAC;EAAA,IAAAH,EAEhE;EADQ;IAAAI,KAAA;IAAAC;EAAA,IAAAF,EAAmB;EAE1B;IAAAG,IAAA;IAAAC,QAAA;IAAAC;EAAA,IAAkCZ,QAAA;EAAA,IAAAa,EAAA;EAAA,IAAAR,CAAA,QAAAS,MAAA,CAAAC,GAAA;IACMF,EAAA;MAAAH,IAAA,EAAQ;IAAA;IAAoBL,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAApE,MAAAW,sBAAA,GAA+BhB,QAAA,CAASa,EAA4B;EACpE,MAAAI,iBAAA,GAA0BD,sBAAA,CAAAJ,KAAA;EAC1B;IAAAM;EAAA,IAA4BjB,SAAA;EAAA,KAEvBgB,iBAAA;IAAA,IAAAE,EAAA;IAAA,IAAAd,CAAA,QAAAG,KAAA,IAAAH,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAI,QAAA;MAEDU,EAAA,GAAAC,KAAA,CAAC;QAAAC,SAAA,EAAc;QAAAC,QAAA,GACbC,IAAA,CAAAxB,UAAA;UAAAyB,EAAA,EAAe;UAAAhB,KAAA;UAAAE,IAAA;UAAAD;QAAA,C,GACfc,IAAA,CAAC;UAAAF,SAAA,EAAY;UAAAC,QAAA,EAAiC;QAAA,C;;;;;;;;;WAFhDH,E;;;;IASJ,MAAAM,gBAAA,GAAyBP,eAAA;MAAAQ,cAAA,EAAkCT;IAAA,CAAkB;IAAA,IAAAU,EAAA;IAAA,IAAAtB,CAAA,SAAAM,QAAA;MAO7DgB,EAAA,GAAAC,KAAA,IAAWjB,QAAA,CAASiB,KAAA;MAAAvB,CAAA,OAAAM,QAAA;MAAAN,CAAA,OAAAsB,EAAA;IAAA;MAAAA,EAAA,GAAAtB,CAAA;IAAA;IAJlCc,EAAA,GAAAI,IAAA,CAAC;MAAAF,SAAA,EAAc;MAAAC,QAAA,EACbC,IAAA,CAAArB,YAAA;QAAAwB,cAAA,EACkBT,iBAAA;QAAAY,MAAA,EACRJ,gBAAA,EAAAI,MAAA,MAA8B;QAAAC,QAAA,EAC5BH,EAAoB;QAAAf,KAAA,EACvBA,KAAA,IAAAmB;MAAS,C;;;;;;;;;;SALpBZ,E;CASJ","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ @layer payload-default {
2
+ .query-preset-columns-field,
3
+ .query-preset-group-by-field,
4
+ .query-preset-where-field {
5
+ .field-label {
6
+ margin-bottom: var(--spacer-2);
7
+ }
8
+ }
9
+
10
+ .query-preset-columns-field__hint,
11
+ .query-preset-group-by-field__hint,
12
+ .query-preset-where-field__hint {
13
+ margin: 0;
14
+ color: var(--color-text-secondary);
15
+ }
16
+
17
+ /* The builder sits inline within the form here, so drop the list-panel chrome
18
+ (border + gutter padding) it carries in the list view. */
19
+ .query-preset-where-field .where-builder {
20
+ padding: 0;
21
+ border-bottom: none;
22
+ }
23
+ }
@@ -11,8 +11,8 @@ import { ListQueryProvider } from '../../providers/ListQuery/index.js';
11
11
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
12
12
  import { TableColumnsProvider } from '../../providers/TableColumns/index.js';
13
13
  import { useTranslation } from '../../providers/Translation/index.js';
14
- import { ColumnsButton } from '../ColumnsButton/index.js';
15
14
  import { useDocumentDrawer } from '../DocumentDrawer/index.js';
15
+ import { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js';
16
16
  import { NoListResults } from '../NoListResults/index.js';
17
17
  import { RelationshipProvider } from '../Table/RelationshipProvider/index.js';
18
18
  import { AddNewButton } from './AddNewButton.js';
@@ -209,7 +209,7 @@ export const RelationshipTable = props => {
209
209
  permissions: permissions,
210
210
  relationTo: relationTo
211
211
  });
212
- const columnsButton = /*#__PURE__*/_jsx(ColumnsButton, {
212
+ const columnsButton = /*#__PURE__*/_jsx(ListColumnSelectionButton, {
213
213
  collectionSlug: collectionConfig?.slug
214
214
  });
215
215
  return /*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useRef","useState","useEffectEvent","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","ColumnsButton","useDocumentDrawer","NoListResults","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","i18n","t","query","setQuery","collectionConfig","collectionSlug","isPolymorphic","Array","isArray","selectedCollection","setSelectedCollection","undefined","permissions","openDrawerWhenRelationChanges","currentDrawerID","setCurrentDrawerID","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","id","isLoadingTable","setIsLoadingTable","data","setData","docs","reduce","acc","doc","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","renderRowTypes","disableRowTypes","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","tableAppearance","handleTableRender","onDrawerSave","operation","foundDocIndex","findIndex","d","withNewOrUpdatedData","newDocs","onDrawerDelete","args","filter","onDrawerOpen","current","canCreate","collections","create","memoizedListQuery","useMemo","addNewButton","_jsx","buttonStyle","className","label","onClick","columnsButton","slug","_jsxs","length","Actions","labels","singular","description","plural","title","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","onDelete","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ColumnsButton } from '../ColumnsButton/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { NoListResults } from '../NoListResults/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.css'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport type OnDrawerOpen = (id?: string, collectionSlug?: string) => void\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n\n const { permissions } = useAuth()\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const [currentDrawerID, setCurrentDrawerID] = useState<string | undefined>(undefined)\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentDrawerID,\n collectionSlug: selectedCollection,\n })\n\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n\n const [data, setData] = useState<PaginatedDocs>(() =>\n initialDataFromProps\n ? {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string' || typeof doc === 'number') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n\n return [...acc, doc]\n }, [])\n : [],\n }\n : undefined,\n )\n\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin?.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const renderRowTypes =\n typeof field.admin?.disableRowTypes === 'boolean'\n ? !field.admin.disableRowTypes\n : Array.isArray(relationTo)\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin?.defaultColumns,\n field.admin?.disableRowTypes,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n ({ doc, operation }) => {\n if (operation === 'create') {\n closeDrawer()\n }\n\n const foundDocIndex = data?.docs?.findIndex((d) => d.id === doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable, closeDrawer],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n\n setCurrentDrawerID(undefined)\n },\n [data, renderTable],\n )\n\n const onDrawerOpen = useCallback<OnDrawerOpen>((id, collectionSlug) => {\n openDrawerWhenRelationChanges.current = true\n\n if (id) {\n setCurrentDrawerID(id)\n } else {\n setCurrentDrawerID(undefined)\n }\n\n if (collectionSlug) {\n setSelectedCollection(collectionSlug)\n } else {\n setSelectedCollection(undefined)\n }\n }, [])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawerWhenRelationChanges.current = false\n openDrawer()\n }\n }, [openDrawer])\n\n useEffect(() => {\n if (!isDrawerOpen) {\n setCurrentDrawerID(undefined)\n }\n }, [isDrawerOpen])\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n const addNewButton = (\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ''}`}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n )\n\n const columnsButton = <ColumnsButton collectionSlug={collectionConfig?.slug} />\n\n return (\n <div className={baseClass}>\n {isLoadingTable ? (\n <Fragment>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>{addNewButton}</div>\n </div>\n {BeforeInput}\n <p>{t('general:loading')}</p>\n </Fragment>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <Fragment>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>{addNewButton}</div>\n </div>\n {BeforeInput}\n <NoListResults\n Actions={\n canCreate\n ? [\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n key=\"create\"\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />,\n ]\n : []\n }\n description={i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n title={i18n.t('general:noResultsFound')}\n />\n </Fragment>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink currentDrawerID={currentDrawerID} onDrawerOpen={onDrawerOpen} />\n }\n >\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n {addNewButton}\n {columnsButton}\n </div>\n </div>\n {BeforeInput}\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer\n initialData={initialDrawerData}\n onDelete={onDrawerDelete}\n onSave={onDrawerSave}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","hoistQueryParamsToAnd","transformColumnsToPreferences","React","Fragment","useCallback","useEffect","useRef","useState","useEffectEvent","useAuth","useConfig","ListQueryProvider","useServerFunctions","TableColumnsProvider","useTranslation","useDocumentDrawer","ListColumnSelectionButton","NoListResults","RelationshipProvider","AddNewButton","DrawerLink","RelationshipTablePagination","baseClass","RelationshipTable","props","AfterInput","allowCreate","BeforeInput","disableTable","field","fieldPath","filterOptions","initialData","initialDataFromProps","initialDrawerData","Label","parent","relationTo","Table","setTable","config","getEntityConfig","i18n","t","query","setQuery","collectionConfig","collectionSlug","isPolymorphic","Array","isArray","selectedCollection","setSelectedCollection","undefined","permissions","openDrawerWhenRelationChanges","currentDrawerID","setCurrentDrawerID","DocumentDrawer","closeDrawer","isDrawerOpen","openDrawer","id","isLoadingTable","setIsLoadingTable","data","setData","docs","reduce","acc","doc","columnState","setColumnState","getTableState","renderTable","newQuery","limit","defaultLimit","admin","pagination","sort","defaultSort","where","defaultColumns","map","accessor","active","renderRowTypes","disableRowTypes","newData","state","newColumnState","NewTable","columns","enableRowSelections","orderableFieldName","orderable","collection","name","tableAppearance","handleTableRender","onDrawerSave","operation","foundDocIndex","findIndex","d","withNewOrUpdatedData","newDocs","onDrawerDelete","args","filter","onDrawerOpen","current","canCreate","collections","create","memoizedListQuery","useMemo","addNewButton","_jsx","buttonStyle","className","label","onClick","columnsButton","slug","_jsxs","length","Actions","labels","singular","description","plural","title","modifySearchParams","onQueryChange","replaceAll","LinkedCellOverride","onDelete","onSave"],"sources":["../../../src/elements/RelationshipTable/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n type CollectionSlug,\n type Column,\n type JoinFieldClient,\n type ListQuery,\n type PaginatedDocs,\n type Where,\n} from 'payload'\nimport { hoistQueryParamsToAnd, transformColumnsToPreferences } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { TableColumnsProvider } from '../../providers/TableColumns/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js'\nimport { NoListResults } from '../NoListResults/index.js'\nimport { RelationshipProvider } from '../Table/RelationshipProvider/index.js'\nimport { AddNewButton } from './AddNewButton.js'\nimport { DrawerLink } from './cells/DrawerLink/index.js'\nimport { RelationshipTablePagination } from './Pagination.js'\nimport './index.css'\n\nconst baseClass = 'relationship-table'\n\ntype RelationshipTableComponentProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n readonly BeforeInput?: React.ReactNode\n readonly disableTable?: boolean\n readonly field: JoinFieldClient\n readonly fieldPath?: string\n readonly filterOptions?: Where\n readonly initialData?: PaginatedDocs\n readonly initialDrawerData?: DocumentDrawerProps['initialData']\n readonly Label?: React.ReactNode\n readonly parent?: {\n collectionSlug: CollectionSlug\n id: number | string\n joinPath: string\n }\n readonly relationTo: string | string[]\n}\n\nexport type OnDrawerOpen = (id?: string, collectionSlug?: string) => void\n\nexport const RelationshipTable: React.FC<RelationshipTableComponentProps> = (props) => {\n const {\n AfterInput,\n allowCreate = true,\n BeforeInput,\n disableTable = false,\n field,\n fieldPath,\n filterOptions,\n initialData: initialDataFromProps,\n initialDrawerData,\n Label,\n parent,\n relationTo,\n } = props\n const [Table, setTable] = useState<React.ReactNode>(null)\n const { config, getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [query, setQuery] = useState<ListQuery>()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\n\n const isPolymorphic = Array.isArray(relationTo)\n\n const [selectedCollection, setSelectedCollection] = useState(\n isPolymorphic ? undefined : relationTo,\n )\n\n const { permissions } = useAuth()\n\n const openDrawerWhenRelationChanges = useRef(false)\n\n const [currentDrawerID, setCurrentDrawerID] = useState<string | undefined>(undefined)\n\n const [DocumentDrawer, , { closeDrawer, isDrawerOpen, openDrawer }] = useDocumentDrawer({\n id: currentDrawerID,\n collectionSlug: selectedCollection,\n })\n\n const [isLoadingTable, setIsLoadingTable] = useState(!disableTable)\n\n const [data, setData] = useState<PaginatedDocs>(() =>\n initialDataFromProps\n ? {\n ...initialDataFromProps,\n docs: Array.isArray(initialDataFromProps.docs)\n ? initialDataFromProps.docs.reduce((acc, doc) => {\n if (typeof doc === 'string' || typeof doc === 'number') {\n return [\n ...acc,\n {\n id: doc,\n },\n ]\n }\n\n return [...acc, doc]\n }, [])\n : [],\n }\n : undefined,\n )\n\n const [columnState, setColumnState] = useState<Column[]>()\n\n const { getTableState } = useServerFunctions()\n\n const renderTable = useCallback(\n async (data?: PaginatedDocs) => {\n const newQuery: ListQuery = {\n limit: field?.defaultLimit || collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort || collectionConfig?.defaultSort,\n ...(query || {}),\n where: { ...(query?.where || {}) },\n }\n\n if (filterOptions) {\n newQuery.where = hoistQueryParamsToAnd(newQuery.where, filterOptions)\n }\n\n // map columns from string[] to CollectionPreferences['columns']\n const defaultColumns = field.admin?.defaultColumns\n ? field.admin.defaultColumns.map((accessor) => ({\n accessor,\n active: true,\n }))\n : undefined\n\n const renderRowTypes =\n typeof field.admin?.disableRowTypes === 'boolean'\n ? !field.admin.disableRowTypes\n : Array.isArray(relationTo)\n\n const {\n data: newData,\n state: newColumnState,\n Table: NewTable,\n } = await getTableState({\n collectionSlug: relationTo,\n columns: transformColumnsToPreferences(query?.columns) || defaultColumns,\n data,\n enableRowSelections: false,\n orderableFieldName:\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${field.name}_order`,\n parent,\n query: newQuery,\n renderRowTypes,\n tableAppearance: 'condensed',\n })\n\n setData(newData)\n setTable(NewTable)\n setColumnState(newColumnState)\n setIsLoadingTable(false)\n },\n [\n field.defaultLimit,\n field.defaultSort,\n field.admin?.defaultColumns,\n field.admin?.disableRowTypes,\n field.collection,\n field.name,\n field.orderable,\n collectionConfig?.admin?.pagination?.defaultLimit,\n collectionConfig?.defaultSort,\n query,\n filterOptions,\n getTableState,\n relationTo,\n parent,\n ],\n )\n\n const handleTableRender = useEffectEvent((query: ListQuery, disableTable: boolean) => {\n if (!disableTable && (!Table || query)) {\n void renderTable()\n }\n })\n\n useEffect(() => {\n handleTableRender(query, disableTable)\n }, [query, disableTable])\n\n const onDrawerSave = useCallback<DocumentDrawerProps['onSave']>(\n ({ doc, operation }) => {\n if (operation === 'create') {\n closeDrawer()\n }\n\n const foundDocIndex = data?.docs?.findIndex((d) => d.id === doc.id)\n const withNewOrUpdatedData: PaginatedDocs = { docs: [] } as PaginatedDocs\n\n if (foundDocIndex !== -1) {\n const newDocs = [...data.docs]\n newDocs[foundDocIndex] = doc\n withNewOrUpdatedData.docs = newDocs\n } else {\n withNewOrUpdatedData.docs = [doc, ...data.docs]\n }\n\n void renderTable(withNewOrUpdatedData)\n },\n [data?.docs, renderTable, closeDrawer],\n )\n\n const onDrawerDelete = useCallback<DocumentDrawerProps['onDelete']>(\n (args) => {\n const newDocs = data.docs.filter((doc) => doc.id !== args.id)\n\n void renderTable({\n ...data,\n docs: newDocs,\n })\n\n setCurrentDrawerID(undefined)\n },\n [data, renderTable],\n )\n\n const onDrawerOpen = useCallback<OnDrawerOpen>((id, collectionSlug) => {\n openDrawerWhenRelationChanges.current = true\n\n if (id) {\n setCurrentDrawerID(id)\n } else {\n setCurrentDrawerID(undefined)\n }\n\n if (collectionSlug) {\n setSelectedCollection(collectionSlug)\n } else {\n setSelectedCollection(undefined)\n }\n }, [])\n\n useEffect(() => {\n if (openDrawerWhenRelationChanges.current) {\n openDrawerWhenRelationChanges.current = false\n openDrawer()\n }\n }, [openDrawer])\n\n useEffect(() => {\n if (!isDrawerOpen) {\n setCurrentDrawerID(undefined)\n }\n }, [isDrawerOpen])\n\n const canCreate =\n allowCreate !== false &&\n permissions?.collections?.[isPolymorphic ? relationTo[0] : relationTo]?.create\n\n useEffect(() => {\n if (isPolymorphic && selectedCollection) {\n openDrawer()\n }\n }, [selectedCollection, openDrawer, isPolymorphic])\n\n useEffect(() => {\n if (isPolymorphic && !isDrawerOpen && selectedCollection) {\n setSelectedCollection(undefined)\n }\n // eslint-disable-next-line react-compiler/react-compiler -- TODO: fix\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen])\n\n const memoizedListQuery = React.useMemo(\n () => ({\n columns: transformColumnsToPreferences(columnState)?.map(({ accessor }) => accessor),\n limit: field.defaultLimit ?? collectionConfig?.admin?.pagination?.defaultLimit,\n sort: field.defaultSort ?? collectionConfig?.defaultSort,\n }),\n [columnState, field, collectionConfig],\n )\n\n const addNewButton = (\n <AddNewButton\n allowCreate={allowCreate !== false}\n baseClass={baseClass}\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-new${isPolymorphic ? '-polymorphic' : ''}`}\n collections={config.collections}\n i18n={i18n}\n label={i18n.t('fields:addNew')}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />\n )\n\n const columnsButton = <ListColumnSelectionButton collectionSlug={collectionConfig?.slug} />\n\n return (\n <div className={baseClass}>\n {isLoadingTable ? (\n <Fragment>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>{addNewButton}</div>\n </div>\n {BeforeInput}\n <p>{t('general:loading')}</p>\n </Fragment>\n ) : (\n <Fragment>\n {data?.docs && data.docs.length === 0 && (\n <Fragment>\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>{addNewButton}</div>\n </div>\n {BeforeInput}\n <NoListResults\n Actions={\n canCreate\n ? [\n <AddNewButton\n allowCreate={canCreate}\n baseClass={baseClass}\n collections={config.collections}\n i18n={i18n}\n key=\"create\"\n label={i18n.t('general:createNewLabel', {\n label: isPolymorphic\n ? i18n.t('general:document')\n : getTranslation(collectionConfig?.labels?.singular, i18n),\n })}\n onClick={isPolymorphic ? setSelectedCollection : openDrawer}\n permissions={permissions}\n relationTo={relationTo}\n />,\n ]\n : []\n }\n description={i18n.t('general:noResults', {\n label: isPolymorphic\n ? i18n.t('general:documents')\n : getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n title={i18n.t('general:noResultsFound')}\n />\n </Fragment>\n )}\n {data?.docs && data.docs.length > 0 && (\n <RelationshipProvider>\n <ListQueryProvider\n data={data}\n modifySearchParams={false}\n onQueryChange={setQuery}\n orderableFieldName={\n !field.orderable || Array.isArray(field.collection)\n ? undefined\n : `_${field.collection}_${fieldPath.replaceAll('.', '_')}_order`\n }\n query={memoizedListQuery}\n >\n <TableColumnsProvider\n collectionSlug={isPolymorphic ? relationTo[0] : relationTo}\n columnState={columnState}\n LinkedCellOverride={\n <DrawerLink currentDrawerID={currentDrawerID} onDrawerOpen={onDrawerOpen} />\n }\n >\n <div className={`${baseClass}__header`}>\n {Label}\n <div className={`${baseClass}__actions`}>\n {addNewButton}\n {columnsButton}\n </div>\n </div>\n {BeforeInput}\n {Table}\n <RelationshipTablePagination />\n </TableColumnsProvider>\n </ListQueryProvider>\n </RelationshipProvider>\n )}\n </Fragment>\n )}\n {AfterInput}\n <DocumentDrawer\n initialData={initialDrawerData}\n onDelete={onDrawerDelete}\n onSave={onDrawerSave}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type { ComponentRenderer } from 'payload';
2
+ /**
3
+ * Client-only component renderer for non-RSC frameworks.
4
+ * All components are treated as client components - serverProps are never passed.
5
+ * Use this when the framework doesn't support React Server Components.
6
+ */
7
+ export declare const RenderClientComponent: ComponentRenderer;
8
+ //# sourceMappingURL=clientOnly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientOnly.d.ts","sourceRoot":"","sources":["../../../src/elements/RenderServerComponent/clientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAOhD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAgDnC,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getFromImportMap, isPlainObject } from 'payload/shared';
3
+ import React from 'react';
4
+ import { removeUndefined } from '../../utilities/removeUndefined.js';
5
+ /**
6
+ * Client-only component renderer for non-RSC frameworks.
7
+ * All components are treated as client components - serverProps are never passed.
8
+ * Use this when the framework doesn't support React Server Components.
9
+ */
10
+ export const RenderClientComponent = ({
11
+ clientProps = {},
12
+ Component,
13
+ Fallback,
14
+ importMap,
15
+ key
16
+ }) => {
17
+ if (Array.isArray(Component)) {
18
+ return Component.map((c, index) => RenderClientComponent({
19
+ clientProps,
20
+ Component: c,
21
+ importMap,
22
+ key: index
23
+ }));
24
+ }
25
+ if (typeof Component === 'function') {
26
+ const sanitizedProps = removeUndefined({
27
+ ...clientProps
28
+ });
29
+ return /*#__PURE__*/_jsx(Component, {
30
+ ...sanitizedProps
31
+ }, key);
32
+ }
33
+ if (typeof Component === 'string' || isPlainObject(Component)) {
34
+ const ResolvedComponent = getFromImportMap({
35
+ importMap,
36
+ PayloadComponent: Component,
37
+ schemaPath: ''
38
+ });
39
+ if (ResolvedComponent) {
40
+ const sanitizedProps = removeUndefined({
41
+ ...clientProps,
42
+ ...(typeof Component === 'object' && Component?.clientProps ? Component.clientProps : {})
43
+ });
44
+ return /*#__PURE__*/_jsx(ResolvedComponent, {
45
+ ...sanitizedProps
46
+ }, key);
47
+ }
48
+ }
49
+ return Fallback ? RenderClientComponent({
50
+ clientProps,
51
+ Component: Fallback,
52
+ importMap,
53
+ key
54
+ }) : null;
55
+ };
56
+ //# sourceMappingURL=clientOnly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientOnly.js","names":["getFromImportMap","isPlainObject","React","removeUndefined","RenderClientComponent","clientProps","Component","Fallback","importMap","key","Array","isArray","map","c","index","sanitizedProps","_jsx","ResolvedComponent","PayloadComponent","schemaPath"],"sources":["../../../src/elements/RenderServerComponent/clientOnly.tsx"],"sourcesContent":["import type { ComponentRenderer } from 'payload'\n\nimport { getFromImportMap, isPlainObject } from 'payload/shared'\nimport React from 'react'\n\nimport { removeUndefined } from '../../utilities/removeUndefined.js'\n\n/**\n * Client-only component renderer for non-RSC frameworks.\n * All components are treated as client components - serverProps are never passed.\n * Use this when the framework doesn't support React Server Components.\n */\nexport const RenderClientComponent: ComponentRenderer = ({\n clientProps = {},\n Component,\n Fallback,\n importMap,\n key,\n}) => {\n if (Array.isArray(Component)) {\n return Component.map((c, index) =>\n RenderClientComponent({\n clientProps,\n Component: c,\n importMap,\n key: index,\n }),\n )\n }\n\n if (typeof Component === 'function') {\n const sanitizedProps = removeUndefined({ ...clientProps })\n return <Component key={key} {...sanitizedProps} />\n }\n\n if (typeof Component === 'string' || isPlainObject(Component)) {\n const ResolvedComponent = getFromImportMap<React.ComponentType>({\n importMap,\n PayloadComponent: Component,\n schemaPath: '',\n })\n\n if (ResolvedComponent) {\n const sanitizedProps = removeUndefined({\n ...clientProps,\n ...(typeof Component === 'object' && Component?.clientProps ? Component.clientProps : {}),\n })\n\n return <ResolvedComponent key={key} {...sanitizedProps} />\n }\n }\n\n return Fallback\n ? RenderClientComponent({\n clientProps,\n Component: Fallback,\n importMap,\n key,\n })\n : null\n}\n"],"mappings":";AAEA,SAASA,gBAAgB,EAAEC,aAAa,QAAQ;AAChD,OAAOC,KAAA,MAAW;AAElB,SAASC,eAAe,QAAQ;AAEhC;;;;;AAKA,OAAO,MAAMC,qBAAA,GAA2CA,CAAC;EACvDC,WAAA,GAAc,CAAC,CAAC;EAChBC,SAAS;EACTC,QAAQ;EACRC,SAAS;EACTC;AAAG,CACJ;EACC,IAAIC,KAAA,CAAMC,OAAO,CAACL,SAAA,GAAY;IAC5B,OAAOA,SAAA,CAAUM,GAAG,CAAC,CAACC,CAAA,EAAGC,KAAA,KACvBV,qBAAA,CAAsB;MACpBC,WAAA;MACAC,SAAA,EAAWO,CAAA;MACXL,SAAA;MACAC,GAAA,EAAKK;IACP;EAEJ;EAEA,IAAI,OAAOR,SAAA,KAAc,YAAY;IACnC,MAAMS,cAAA,GAAiBZ,eAAA,CAAgB;MAAE,GAAGE;IAAY;IACxD,oBAAOW,IAAA,CAACV,SAAA;MAAqB,GAAGS;OAATN,GAAA;EACzB;EAEA,IAAI,OAAOH,SAAA,KAAc,YAAYL,aAAA,CAAcK,SAAA,GAAY;IAC7D,MAAMW,iBAAA,GAAoBjB,gBAAA,CAAsC;MAC9DQ,SAAA;MACAU,gBAAA,EAAkBZ,SAAA;MAClBa,UAAA,EAAY;IACd;IAEA,IAAIF,iBAAA,EAAmB;MACrB,MAAMF,cAAA,GAAiBZ,eAAA,CAAgB;QACrC,GAAGE,WAAW;QACd,IAAI,OAAOC,SAAA,KAAc,YAAYA,SAAA,EAAWD,WAAA,GAAcC,SAAA,CAAUD,WAAW,GAAG,CAAC,CAAC;MAC1F;MAEA,oBAAOW,IAAA,CAACC,iBAAA;QAA6B,GAAGF;SAATN,GAAA;IACjC;EACF;EAEA,OAAOF,QAAA,GACHH,qBAAA,CAAsB;IACpBC,WAAA;IACAC,SAAA,EAAWC,QAAA;IACXC,SAAA;IACAC;EACF,KACA;AACN","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  @layer payload-default {
2
2
  .sort-column {
3
- display: flex;
3
+ display: inline-flex;
4
4
  gap: var(--spacer-1);
5
5
  align-items: center;
6
6
  }
@@ -49,16 +49,30 @@
49
49
  }
50
50
 
51
51
  /* Linked cells: move padding to the anchor/button for full-cell clickability */
52
- .cell--linked {
52
+ td.cell--linked {
53
53
  padding: 0;
54
54
 
55
+ &:first-child,
56
+ &:last-child {
57
+ padding: 0;
58
+ }
59
+
55
60
  > :is(a, button) {
56
61
  display: flex;
57
62
  align-items: center;
63
+ width: 100%;
58
64
  padding: var(--spacer-2) var(--spacer-2-5);
59
65
  min-height: calc(var(--spacer-4) * 2);
60
66
  cursor: pointer;
61
67
  }
68
+
69
+ &:first-child > :is(a, button) {
70
+ padding-inline-start: var(--gutter-h);
71
+ }
72
+ }
73
+
74
+ .drawer & td.cell--linked:first-child > :is(a, button) {
75
+ padding-inline-start: var(--spacer-3);
62
76
  }
63
77
 
64
78
  #heading-_select,
@@ -178,10 +192,18 @@
178
192
  }
179
193
 
180
194
  /* Linked cells: move padding to the anchor/button for full-cell clickability */
181
- .cell--linked {
195
+ td.cell--linked {
182
196
  padding: 0;
183
197
 
198
+ &:first-child,
199
+ &:last-child {
200
+ padding: 0;
201
+ }
202
+
184
203
  > :is(a, button) {
204
+ display: flex;
205
+ align-items: center;
206
+ width: 100%;
185
207
  padding: 0 var(--spacer-2-5);
186
208
  min-height: var(--spacer-5);
187
209
  cursor: pointer;
@@ -3,6 +3,7 @@ import type { AddCondition, ReducedField, RemoveCondition, UpdateCondition, Upda
3
3
  export type Props = {
4
4
  readonly addCondition: AddCondition;
5
5
  readonly andIndex: number;
6
+ readonly disableRemoveButton: boolean;
6
7
  readonly fieldPath: string;
7
8
  readonly filterOptions?: ResolvedFilterOptions;
8
9
  readonly isFirstCondition: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAcvF,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqLrC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAEvE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,KAAK,EACN,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAA2B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAcvF,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuMrC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React, { useCallback, useEffect, useState } from 'react';
4
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
5
5
  import { isFieldDisabled } from 'payload/shared';
6
6
  import { useDebounce } from '../../../hooks/useDebounce.js';
7
7
  import { useEffectEvent } from '../../../hooks/useEffectEvent.js';
@@ -16,6 +16,7 @@ const baseClass = 'condition';
16
16
  export const Condition = props => {
17
17
  const {
18
18
  andIndex,
19
+ disableRemoveButton,
19
20
  fieldPath,
20
21
  filterOptions,
21
22
  isFirstCondition,
@@ -35,6 +36,9 @@ export const Condition = props => {
35
36
  const reducedField = reducedFields.find(field => field.fieldPath === fieldPath);
36
37
  const [internalValue, setInternalValue] = useState(value);
37
38
  const debouncedValue = useDebounce(internalValue, 300);
39
+ // Tracks the last value this row reported upward, so the downward sync below can tell our own
40
+ // committed echo apart from a genuine external change (e.g. the row being cleared/reset).
41
+ const lastReportedValue = useRef(value);
38
42
  const booleanSelect = ['exists'].includes(operator) || reducedField?.field?.type === 'checkbox';
39
43
  let valueOptions = [];
40
44
  if (booleanSelect) {
@@ -50,19 +54,29 @@ export const Condition = props => {
50
54
  }
51
55
  const updateValue = useEffectEvent(async debouncedValue_0 => {
52
56
  if (operator) {
57
+ const normalizedValue = debouncedValue_0 === null || debouncedValue_0 === '' ? undefined : debouncedValue_0;
58
+ lastReportedValue.current = normalizedValue;
53
59
  await updateCondition({
54
60
  type: 'value',
55
61
  andIndex,
56
62
  field: reducedField,
57
63
  operator,
58
64
  orIndex,
59
- value: debouncedValue_0 === null || debouncedValue_0 === '' ? undefined : debouncedValue_0
65
+ value: normalizedValue
60
66
  });
61
67
  }
62
68
  });
63
69
  useEffect(() => {
64
70
  void updateValue(debouncedValue);
65
71
  }, [debouncedValue]);
72
+ // Sync external value changes (e.g. the row being cleared or reset to a placeholder) down into
73
+ // local state, but skip our own committed echo so this never clobbers in-progress typing.
74
+ useEffect(() => {
75
+ if (value !== lastReportedValue.current) {
76
+ lastReportedValue.current = value;
77
+ setInternalValue(value);
78
+ }
79
+ }, [value]);
66
80
  const disabled = !reducedField?.fieldPath || isFieldDisabled(reducedField?.field, 'filter');
67
81
  const handleFieldChange = useCallback(async field_0 => {
68
82
  setInternalValue(undefined);
@@ -169,6 +183,7 @@ export const Condition = props => {
169
183
  children: /*#__PURE__*/_jsx(Button, {
170
184
  buttonStyle: "ghost",
171
185
  className: `${baseClass}__actions-remove`,
186
+ disabled: disableRemoveButton,
172
187
  icon: /*#__PURE__*/_jsx(LineIcon, {
173
188
  size: 24
174
189
  }),