@payloadcms/ui 3.55.0-internal.df60e35 → 3.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/elements/AppHeader/index.scss +1 -0
  2. package/dist/elements/DefaultListViewTabs/index.d.ts +12 -0
  3. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -0
  4. package/dist/elements/DefaultListViewTabs/index.js +161 -0
  5. package/dist/elements/DefaultListViewTabs/index.js.map +1 -0
  6. package/dist/elements/{ListHeaderTabs → DefaultListViewTabs}/index.scss +1 -1
  7. package/dist/elements/DocumentDrawer/Provider.d.ts +2 -1
  8. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  9. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  10. package/dist/elements/FieldSelect/reduceFieldOptions.js +1 -1
  11. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  12. package/dist/elements/ListControls/index.d.ts.map +1 -1
  13. package/dist/elements/ListControls/index.js +69 -78
  14. package/dist/elements/ListControls/index.js.map +1 -1
  15. package/dist/elements/ListControls/index.scss +2 -82
  16. package/dist/elements/SearchBar/index.d.ts +2 -3
  17. package/dist/elements/SearchBar/index.d.ts.map +1 -1
  18. package/dist/elements/SearchBar/index.js +2 -3
  19. package/dist/elements/SearchBar/index.js.map +1 -1
  20. package/dist/elements/SearchBar/index.scss +56 -7
  21. package/dist/elements/SearchFilter/index.d.ts +2 -33
  22. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  23. package/dist/elements/SearchFilter/index.js +7 -5
  24. package/dist/elements/SearchFilter/index.js.map +1 -1
  25. package/dist/elements/SearchFilter/types.d.ts +33 -0
  26. package/dist/elements/SearchFilter/types.d.ts.map +1 -0
  27. package/dist/elements/SearchFilter/types.js +2 -0
  28. package/dist/elements/SearchFilter/types.js.map +1 -0
  29. package/dist/elements/Status/index.d.ts.map +1 -1
  30. package/dist/elements/Status/index.js +1 -1
  31. package/dist/elements/Status/index.js.map +1 -1
  32. package/dist/exports/client/{CodeEditor-MIIBUJZ4.js → CodeEditor-URFJPG6I.js} +2 -2
  33. package/dist/exports/client/chunk-KPQQ5IUL.js +26 -0
  34. package/dist/exports/client/{chunk-Z6O2JA43.js.map → chunk-KPQQ5IUL.js.map} +3 -3
  35. package/dist/exports/client/index.js +12 -12
  36. package/dist/exports/client/index.js.map +4 -4
  37. package/dist/exports/rsc/index.d.ts +1 -0
  38. package/dist/exports/rsc/index.d.ts.map +1 -1
  39. package/dist/exports/rsc/index.js +1 -0
  40. package/dist/exports/rsc/index.js.map +1 -1
  41. package/dist/fields/Blocks/index.d.ts.map +1 -1
  42. package/dist/fields/Blocks/index.js.map +1 -1
  43. package/dist/fields/Join/index.js +1 -1
  44. package/dist/fields/Join/index.js.map +1 -1
  45. package/dist/forms/Form/types.d.ts +6 -3
  46. package/dist/forms/Form/types.d.ts.map +1 -1
  47. package/dist/forms/Form/types.js.map +1 -1
  48. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  49. package/dist/forms/RenderFields/index.js +1 -1
  50. package/dist/forms/RenderFields/index.js.map +1 -1
  51. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  52. package/dist/forms/RowLabel/Context/index.js +17 -31
  53. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  54. package/dist/providers/Auth/index.d.ts +2 -1
  55. package/dist/providers/Auth/index.d.ts.map +1 -1
  56. package/dist/providers/Auth/index.js +74 -83
  57. package/dist/providers/Auth/index.js.map +1 -1
  58. package/dist/providers/Config/index.d.ts.map +1 -1
  59. package/dist/providers/Config/index.js +6 -3
  60. package/dist/providers/Config/index.js.map +1 -1
  61. package/dist/styles.css +1 -1
  62. package/dist/utilities/buildFormState.js +2 -1
  63. package/dist/utilities/buildFormState.js.map +1 -1
  64. package/dist/utilities/buildTableState.d.ts.map +1 -1
  65. package/dist/utilities/buildTableState.js +12 -4
  66. package/dist/utilities/buildTableState.js.map +1 -1
  67. package/dist/utilities/getClientConfig.d.ts +2 -7
  68. package/dist/utilities/getClientConfig.d.ts.map +1 -1
  69. package/dist/utilities/getClientConfig.js +19 -8
  70. package/dist/utilities/getClientConfig.js.map +1 -1
  71. package/dist/utilities/getColumns.d.ts +10 -0
  72. package/dist/utilities/getColumns.d.ts.map +1 -0
  73. package/dist/utilities/getColumns.js +36 -0
  74. package/dist/utilities/getColumns.js.map +1 -0
  75. package/dist/utilities/renderTable.d.ts +3 -3
  76. package/dist/utilities/renderTable.d.ts.map +1 -1
  77. package/dist/utilities/renderTable.js +2 -11
  78. package/dist/utilities/renderTable.js.map +1 -1
  79. package/dist/views/BrowseByFolder/index.js +1 -1
  80. package/dist/views/BrowseByFolder/index.js.map +1 -1
  81. package/dist/views/CollectionFolder/index.d.ts.map +1 -1
  82. package/dist/views/CollectionFolder/index.js +5 -15
  83. package/dist/views/CollectionFolder/index.js.map +1 -1
  84. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  85. package/dist/views/Edit/Auth/index.js +1 -1
  86. package/dist/views/Edit/Auth/index.js.map +1 -1
  87. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  88. package/dist/views/List/ListHeader/index.js +5 -13
  89. package/dist/views/List/ListHeader/index.js.map +1 -1
  90. package/package.json +5 -5
  91. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +0 -10
  92. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +0 -1
  93. package/dist/elements/ListHeaderTabs/ByFolderPill.js +0 -70
  94. package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +0 -1
  95. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +0 -9
  96. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +0 -1
  97. package/dist/elements/ListHeaderTabs/DefaultListPill.js +0 -68
  98. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +0 -1
  99. package/dist/elements/ListHeaderTabs/TrashPill.d.ts +0 -6
  100. package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +0 -1
  101. package/dist/elements/ListHeaderTabs/TrashPill.js +0 -53
  102. package/dist/elements/ListHeaderTabs/TrashPill.js.map +0 -1
  103. package/dist/exports/client/chunk-Z6O2JA43.js +0 -26
  104. /package/dist/exports/client/{CodeEditor-MIIBUJZ4.js.map → CodeEditor-URFJPG6I.js.map} +0 -0
@@ -64,6 +64,7 @@
64
64
 
65
65
  &__account {
66
66
  position: relative;
67
+ flex-shrink: 0;
67
68
 
68
69
  &:focus:not(:focus-visible) {
69
70
  opacity: 1;
@@ -0,0 +1,12 @@
1
+ import type { ClientCollectionConfig, ClientConfig, ViewTypes } from 'payload';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ type DefaultListViewTabsProps = {
5
+ collectionConfig: ClientCollectionConfig;
6
+ config: ClientConfig;
7
+ onChange?: (viewType: ViewTypes) => void;
8
+ viewType?: ViewTypes;
9
+ };
10
+ export declare const DefaultListViewTabs: React.FC<DefaultListViewTabsProps>;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DefaultListViewTabs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAK9E,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAIrB,KAAK,wBAAwB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAsGlE,CAAA"}
@@ -0,0 +1,161 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { getTranslation } from '@payloadcms/translations';
6
+ import { useRouter } from 'next/navigation.js';
7
+ import { formatAdminURL } from 'payload/shared';
8
+ import React from 'react';
9
+ import { usePreferences } from '../../providers/Preferences/index.js';
10
+ import { useTranslation } from '../../providers/Translation/index.js';
11
+ import { Button } from '../Button/index.js';
12
+ import './index.scss';
13
+ const baseClass = 'default-list-view-tabs';
14
+ export const DefaultListViewTabs = t0 => {
15
+ const $ = _c(29);
16
+ const {
17
+ collectionConfig,
18
+ config,
19
+ onChange,
20
+ viewType
21
+ } = t0;
22
+ const {
23
+ i18n,
24
+ t
25
+ } = useTranslation();
26
+ const {
27
+ setPreference
28
+ } = usePreferences();
29
+ const router = useRouter();
30
+ const isTrashEnabled = collectionConfig.trash;
31
+ const isFoldersEnabled = collectionConfig.folders && config.folders;
32
+ if (!isTrashEnabled && !isFoldersEnabled) {
33
+ return null;
34
+ }
35
+ let t1;
36
+ if ($[0] !== collectionConfig.slug || $[1] !== config || $[2] !== onChange || $[3] !== router || $[4] !== setPreference) {
37
+ t1 = async newViewType => {
38
+ if (onChange) {
39
+ onChange(newViewType);
40
+ }
41
+ if (newViewType === "list" || newViewType === "folders") {
42
+ await setPreference(`collection-${collectionConfig.slug}`, {
43
+ listViewType: newViewType
44
+ });
45
+ }
46
+ let path = `/collections/${collectionConfig.slug}`;
47
+ bb21: switch (newViewType) {
48
+ case "folders":
49
+ {
50
+ if (config.folders) {
51
+ path = `/collections/${collectionConfig.slug}/${config.folders.slug}`;
52
+ }
53
+ break bb21;
54
+ }
55
+ case "trash":
56
+ {
57
+ path = `/collections/${collectionConfig.slug}/trash`;
58
+ }
59
+ }
60
+ const url = formatAdminURL({
61
+ adminRoute: config.routes.admin,
62
+ path,
63
+ serverURL: config.serverURL
64
+ });
65
+ router.push(url);
66
+ };
67
+ $[0] = collectionConfig.slug;
68
+ $[1] = config;
69
+ $[2] = onChange;
70
+ $[3] = router;
71
+ $[4] = setPreference;
72
+ $[5] = t1;
73
+ } else {
74
+ t1 = $[5];
75
+ }
76
+ const handleViewChange = t1;
77
+ const allButtonLabel = `${t("general:all")} ${getTranslation(collectionConfig?.labels?.plural, i18n)}`;
78
+ let t2;
79
+ if ($[6] !== allButtonLabel || $[7] !== collectionConfig.labels?.plural || $[8] !== handleViewChange || $[9] !== i18n || $[10] !== isFoldersEnabled || $[11] !== isTrashEnabled || $[12] !== t || $[13] !== viewType) {
80
+ const allButtonId = allButtonLabel.toLowerCase().replace(/\s+/g, "-");
81
+ const t3 = viewType === "list" && `${baseClass}__button--active`;
82
+ let t4;
83
+ if ($[15] !== t3) {
84
+ t4 = [`${baseClass}__button`, t3].filter(Boolean);
85
+ $[15] = t3;
86
+ $[16] = t4;
87
+ } else {
88
+ t4 = $[16];
89
+ }
90
+ let t5;
91
+ if ($[17] !== handleViewChange) {
92
+ t5 = () => handleViewChange("list");
93
+ $[17] = handleViewChange;
94
+ $[18] = t5;
95
+ } else {
96
+ t5 = $[18];
97
+ }
98
+ let t6;
99
+ if ($[19] !== handleViewChange || $[20] !== isFoldersEnabled || $[21] !== t || $[22] !== viewType) {
100
+ t6 = isFoldersEnabled && _jsx(Button, {
101
+ buttonStyle: "tab",
102
+ className: [`${baseClass}__button`, viewType === "folders" && `${baseClass}__button--active`].filter(Boolean).join(" "),
103
+ disabled: viewType === "folders",
104
+ el: "button",
105
+ onClick: () => handleViewChange("folders"),
106
+ children: t("folder:byFolder")
107
+ });
108
+ $[19] = handleViewChange;
109
+ $[20] = isFoldersEnabled;
110
+ $[21] = t;
111
+ $[22] = viewType;
112
+ $[23] = t6;
113
+ } else {
114
+ t6 = $[23];
115
+ }
116
+ let t7;
117
+ if ($[24] !== handleViewChange || $[25] !== isTrashEnabled || $[26] !== t || $[27] !== viewType) {
118
+ t7 = isTrashEnabled && _jsx(Button, {
119
+ buttonStyle: "tab",
120
+ className: [`${baseClass}__button`, viewType === "trash" && `${baseClass}__button--active`].filter(Boolean).join(" "),
121
+ disabled: viewType === "trash",
122
+ el: "button",
123
+ id: "trash-view-pill",
124
+ onClick: () => handleViewChange("trash"),
125
+ children: t("general:trash")
126
+ });
127
+ $[24] = handleViewChange;
128
+ $[25] = isTrashEnabled;
129
+ $[26] = t;
130
+ $[27] = viewType;
131
+ $[28] = t7;
132
+ } else {
133
+ t7 = $[28];
134
+ }
135
+ t2 = _jsxs("div", {
136
+ className: baseClass,
137
+ children: [_jsxs(Button, {
138
+ buttonStyle: "tab",
139
+ className: t4.join(" "),
140
+ disabled: viewType === "list",
141
+ el: "button",
142
+ id: allButtonId,
143
+ onClick: t5,
144
+ children: [t("general:all"), " ", getTranslation(collectionConfig?.labels?.plural, i18n)]
145
+ }), t6, t7]
146
+ });
147
+ $[6] = allButtonLabel;
148
+ $[7] = collectionConfig.labels?.plural;
149
+ $[8] = handleViewChange;
150
+ $[9] = i18n;
151
+ $[10] = isFoldersEnabled;
152
+ $[11] = isTrashEnabled;
153
+ $[12] = t;
154
+ $[13] = viewType;
155
+ $[14] = t2;
156
+ } else {
157
+ t2 = $[14];
158
+ }
159
+ return t2;
160
+ };
161
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useRouter","formatAdminURL","React","usePreferences","useTranslation","Button","baseClass","DefaultListViewTabs","t0","$","collectionConfig","config","onChange","viewType","i18n","t","setPreference","router","isTrashEnabled","trash","isFoldersEnabled","folders","t1","slug","newViewType","listViewType","path","bb21","url","adminRoute","routes","admin","serverURL","push","handleViewChange","allButtonLabel","labels","plural","t2","allButtonId","toLowerCase","replace","t3","t4","filter","Boolean","t5","t6","_jsx","buttonStyle","className","join","disabled","el","onClick","children","t7","id","_jsxs"],"sources":["../../../src/elements/DefaultListViewTabs/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientConfig, ViewTypes } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'default-list-view-tabs'\n\ntype DefaultListViewTabsProps = {\n collectionConfig: ClientCollectionConfig\n config: ClientConfig\n onChange?: (viewType: ViewTypes) => void\n viewType?: ViewTypes\n}\n\nexport const DefaultListViewTabs: React.FC<DefaultListViewTabsProps> = ({\n collectionConfig,\n config,\n onChange,\n viewType,\n}) => {\n const { i18n, t } = useTranslation()\n const { setPreference } = usePreferences()\n const router = useRouter()\n const isTrashEnabled = collectionConfig.trash\n const isFoldersEnabled = collectionConfig.folders && config.folders\n\n if (!isTrashEnabled && !isFoldersEnabled) {\n return null\n }\n\n const handleViewChange = async (newViewType: ViewTypes) => {\n if (onChange) {\n onChange(newViewType)\n }\n\n if (newViewType === 'list' || newViewType === 'folders') {\n await setPreference(`collection-${collectionConfig.slug}`, {\n listViewType: newViewType,\n })\n }\n\n let path: `/${string}` = `/collections/${collectionConfig.slug}`\n switch (newViewType) {\n case 'folders':\n if (config.folders) {\n path = `/collections/${collectionConfig.slug}/${config.folders.slug}`\n }\n break\n case 'trash':\n path = `/collections/${collectionConfig.slug}/trash`\n break\n }\n\n const url = formatAdminURL({\n adminRoute: config.routes.admin,\n path,\n serverURL: config.serverURL,\n })\n\n router.push(url)\n }\n\n const allButtonLabel = `${t('general:all')} ${getTranslation(collectionConfig?.labels?.plural, i18n)}`\n const allButtonId = allButtonLabel.toLowerCase().replace(/\\s+/g, '-')\n\n return (\n <div className={baseClass}>\n <Button\n buttonStyle=\"tab\"\n className={[`${baseClass}__button`, viewType === 'list' && `${baseClass}__button--active`]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'list'}\n el=\"button\"\n id={allButtonId}\n onClick={() => handleViewChange('list')}\n >\n {t('general:all')} {getTranslation(collectionConfig?.labels?.plural, i18n)}\n </Button>\n\n {isFoldersEnabled && (\n <Button\n buttonStyle=\"tab\"\n className={[\n `${baseClass}__button`,\n viewType === 'folders' && `${baseClass}__button--active`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'folders'}\n el=\"button\"\n onClick={() => handleViewChange('folders')}\n >\n {t('folder:byFolder')}\n </Button>\n )}\n\n {isTrashEnabled && (\n <Button\n buttonStyle=\"tab\"\n className={[\n `${baseClass}__button`,\n viewType === 'trash' && `${baseClass}__button--active`,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={viewType === 'trash'}\n el=\"button\"\n id=\"trash-view-pill\"\n onClick={() => handleViewChange('trash')}\n >\n {t('general:trash')}\n </Button>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  @layer payload-default {
2
- .list-pills {
2
+ .default-list-view-tabs {
3
3
  display: flex;
4
4
  gap: calc(var(--base) * 0.5);
5
5
  }
@@ -17,8 +17,9 @@ export type DocumentDrawerContextProps = {
17
17
  readonly onSave?: (args: {
18
18
  collectionConfig?: ClientCollectionConfig;
19
19
  /**
20
- * @experimental - Note: this property is experimental and may change in the future. Use at your own discretion.
21
20
  * If you want to pass additional data to the onSuccess callback, you can use this context object.
21
+ *
22
+ * @experimental This property is experimental and may change in the future. Use at your own discretion.
22
23
  */
23
24
  context?: Record<string, unknown>;
24
25
  doc: TypeWithID;
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,0BAA0B,CAAA;AAEvE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIlF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE1B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,GAAG,EAAE,UAAU,CAAA;KAChB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;QACzC;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,GAAG,EAAE,UAAU,CAAA;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;QAC9B,MAAM,EAAE,IAAI,CAAA;KACb,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,0BAA0B,CAAA;AAEvE,eAAO,MAAM,8BAA8B,qDAAiD,CAAA;AAE5F,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAClD;IACE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,GAAG,0BAA0B,CAG/B,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,yBAQ3C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n /**\n * @experimental - Note: this property is experimental and may change in the future. Use at your own discretion.\n * If you want to pass additional data to the onSuccess callback, you can use this context object.\n */\n context?: Record<string, unknown>\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAiCnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"Provider.js","names":["createContext","use","DocumentDrawerCallbacksContext","DocumentDrawerContextProvider","children","rest","_jsx","value","useDocumentDrawerContext","context","Error"],"sources":["../../../src/elements/DocumentDrawer/Provider.tsx"],"sourcesContent":["import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload'\n\nimport { createContext, use } from 'react'\n\nexport type DocumentDrawerContextProps = {\n readonly clearDoc?: () => void\n readonly drawerSlug: string\n readonly onDelete?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n /* only available if `redirectAfterDuplicate` is `false` */\n readonly onDuplicate?: (args: {\n collectionConfig?: ClientCollectionConfig\n doc: TypeWithID\n }) => Promise<void> | void\n readonly onRestore?: (args: {\n collectionConfig?: ClientCollectionConfig\n id: string\n }) => Promise<void> | void\n readonly onSave?: (args: {\n collectionConfig?: ClientCollectionConfig\n /**\n * If you want to pass additional data to the onSuccess callback, you can use this context object.\n *\n * @experimental This property is experimental and may change in the future. Use at your own discretion.\n */\n context?: Record<string, unknown>\n doc: TypeWithID\n operation: 'create' | 'update'\n result: Data\n }) => Promise<FormState | void> | void\n}\n\nexport type DocumentDrawerContextType = {} & DocumentDrawerContextProps\n\nexport const DocumentDrawerCallbacksContext = createContext({} as DocumentDrawerContextType)\n\nexport const DocumentDrawerContextProvider: React.FC<\n {\n children: React.ReactNode\n } & DocumentDrawerContextProps\n> = ({ children, ...rest }) => {\n return <DocumentDrawerCallbacksContext value={rest}>{children}</DocumentDrawerCallbacksContext>\n}\n\nexport const useDocumentDrawerContext = (): DocumentDrawerContextType => {\n const context = use(DocumentDrawerCallbacksContext)\n\n if (!context) {\n throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider')\n }\n\n return context\n}\n"],"mappings":";AAEA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAkCnC,OAAO,MAAMC,8BAAA,gBAAiCF,aAAA,CAAc,CAAC;AAE7D,OAAO,MAAMG,6BAAA,GAITA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAA,CAAM;EACxB,oBAAOC,IAAA,CAACJ,8BAAA;IAA+BK,KAAA,EAAOF,IAAA;cAAOD;;AACvD;AAEA,OAAO,MAAMI,wBAAA,GAA2BA,CAAA;EACtC,MAAMC,OAAA,GAAUR,GAAA,CAAIC,8BAAA;EAEpB,IAAI,CAACO,OAAA,EAAS;IACZ,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,OAAOD,OAAA;AACT","ignoreList":[]}
@@ -64,7 +64,7 @@ export const reduceFieldOptions = ({
64
64
  }),
65
65
  value: {
66
66
  field,
67
- fieldPermissions,
67
+ fieldPermissions: fieldPermissions,
68
68
  path: createNestedClientFieldPath(path, field)
69
69
  }
70
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFieldOptions.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","createNestedClientFieldPath","combineFieldLabel","ignoreFromBulkEdit","field","Boolean","type","admin","disableBulkEdit","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","prefix","tabs","tabFields","tab","isNamedTab","name","formattedField","label","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n value: SelectedField\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n labelPrefix: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n permissions: fieldPermissions,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField: FieldOption = {\n label: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n field,\n fieldPermissions,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n"],"mappings":"AAEA,SACEA,gBAAgB,EAChBC,iBAAiB,EACjBC,uBAAuB,EACvBC,mBAAmB,QACd;AAEP,SAASC,2BAA2B,QAAQ;AAC5C,SAASC,iBAAiB,QAAQ;AAalC,OAAO,MAAMC,kBAAA,GAAsBC,KAAA,IACjCC,OAAA,CACE,CAACR,gBAAA,CAAiBO,KAAA,KAAUA,KAAA,CAAME,IAAI,KAAK,IAAG,MAC3CF,KAAA,CAAMG,KAAK,CAACC,eAAe,IAC1BJ,KAAA,CAAMK,MAAM,IACZV,uBAAA,CAAwBK,KAAA,KACvB,cAAcA,KAAA,IAASA,KAAA,CAAMM,QAAQ;AAG9C,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EACjCC,MAAM;EACNC,SAAS;EACTC,WAAA,GAAc,IAAI;EAClBC,UAAA,GAAa,EAAE;EACfC,IAAA,GAAO,EAAE;EACTC;AAAW,CAYZ;EACC,IAAI,CAACL,MAAA,EAAQ;IACX,OAAO,EAAE;EACX;EAEA,MAAMM,WAAA,GAAcL,SAAA,GAAYG,IAAA,CAAK,EAAEG,gBAAA,EAAkBC,KAAA;EAEzD,OAAOR,MAAA,EAAQS,MAAA,CAAO,CAACC,WAAA,EAAalB,KAAA;IAClC,MAAM;MACJmB,SAAA,EAAWC,sBAAsB;MACjCP,WAAA,EAAaQ,gBAAgB;MAC7BC,IAAA,EAAMC;IAAiB,CACxB,GAAG3B,mBAAA,CAAoB;MACtBI,KAAA;MACAmB,SAAA,EAAW;MACXK,UAAA,EAAYb,UAAA,EAAYc,QAAA,CAAS,OAC7Bd,UAAA,CAAWe,KAAK,CAAC,IAAI,CAACf,UAAA,CAAWe,KAAK,CAAC,KAAKC,MAAM,GAAG,EAAE,GACvDhB,UAAA;MACJE;IACF;IAEA;IACA,IACE,CAACpB,gBAAA,CAAiBO,KAAA,KAAUA,KAAA,CAAME,IAAI,KAAK,IAAG,MAC7CF,KAAA,CAAMG,KAAK,EAAEC,eAAA,IACZJ,KAAA,CAAMK,MAAM,IACZV,uBAAA,CAAwBK,KAAA,KACvB,cAAcA,KAAA,IAASA,KAAA,CAAMM,QAAQ,IACtC,CAACc,sBAAA,IACD,CAACG,iBAAgB,GACnB;MACA,OAAOL,WAAA;IACT;IAEA,IAAI,EAAElB,KAAA,CAAME,IAAI,KAAK,WAAWF,KAAA,CAAME,IAAI,KAAK,QAAO,KAAMR,iBAAA,CAAkBM,KAAA,GAAQ;MACpF,OAAO,C,GACFkB,WAAA,E,GACAX,kBAAA,CAAmB;QACpBC,MAAA,EAAQR,KAAA,CAAMQ,MAAM;QACpBE,WAAA,EAAaZ,iBAAA,CAAkB;UAAEgB,WAAA;UAAad,KAAA;UAAO4B,MAAA,EAAQlB;QAAY;QACzEC,UAAA,EAAYC,IAAA;QACZA,IAAA,EAAMf,2BAAA,CAA4Be,IAAA,EAAMZ,KAAA;QACxCa,WAAA,EAAaQ;MACf,GACD;IACH;IAEA,IAAIrB,KAAA,CAAME,IAAI,KAAK,UAAU,UAAUF,KAAA,EAAO;MAC5C,OAAO,C,GACFkB,WAAA,E,GACAlB,KAAA,CAAM6B,IAAI,CAACZ,MAAM,CAAC,CAACa,SAAA,EAAWC,GAAA;QAC/B,IAAI,YAAYA,GAAA,EAAK;UACnB,MAAMC,UAAA,GAAa,UAAUD,GAAA,IAAOA,GAAA,CAAIE,IAAI;UAC5C,OAAO,C,GACFH,SAAA,E,GACAvB,kBAAA,CAAmB;YACpBC,MAAA,EAAQuB,GAAA,CAAIvB,MAAM;YAClBE,WAAA;YACAC,UAAA,EAAYC,IAAA;YACZA,IAAA,EAAMoB,UAAA,GAAanC,2BAAA,CAA4Be,IAAA,EAAMZ,KAAA,IAASY,IAAA;YAC9DC,WAAA,EAAaQ;UACf,GACD;QACH;MACF,GAAG,EAAE,EACN;IACH;IAEA,MAAMa,cAAA,GAA8B;MAClCC,KAAA,EAAOrC,iBAAA,CAAkB;QAAEgB,WAAA;QAAad,KAAA;QAAO4B,MAAA,EAAQlB;MAAY;MACnE0B,KAAA,EAAO;QACLpC,KAAA;QACAqB,gBAAA;QACAT,IAAA,EAAMf,2BAAA,CAA4Be,IAAA,EAAMZ,KAAA;MAC1C;IACF;IAEA,OAAO,C,GAAIkB,WAAA,EAAagB,cAAA,CAAe;EACzC,GAAG,EAAE;AACP","ignoreList":[]}
1
+ {"version":3,"file":"reduceFieldOptions.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","getFieldPermissions","createNestedClientFieldPath","combineFieldLabel","ignoreFromBulkEdit","field","Boolean","type","admin","disableBulkEdit","unique","readOnly","reduceFieldOptions","fields","formState","labelPrefix","parentPath","path","permissions","CustomLabel","customComponents","Label","reduce","fieldsToUse","operation","hasOperationPermission","fieldPermissions","read","hasReadPermission","parentName","includes","split","length","prefix","tabs","tabFields","tab","isNamedTab","name","formattedField","label","value"],"sources":["../../../src/elements/FieldSelect/reduceFieldOptions.ts"],"sourcesContent":["import type { ClientField, FormState, SanitizedFieldPermissions } from 'payload'\n\nimport {\n fieldAffectsData,\n fieldHasSubFields,\n fieldIsHiddenOrDisabled,\n getFieldPermissions,\n} from 'payload/shared'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\n\nexport type SelectedField = {\n field: ClientField\n fieldPermissions: SanitizedFieldPermissions\n path: string\n}\n\nexport type FieldOption = {\n label: React.ReactNode\n value: SelectedField\n}\n\nexport const ignoreFromBulkEdit = (field: ClientField): boolean =>\n Boolean(\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly)),\n )\n\nexport const reduceFieldOptions = ({\n fields,\n formState,\n labelPrefix = null,\n parentPath = '',\n path = '',\n permissions,\n}: {\n readonly fields: ClientField[]\n readonly formState?: FormState\n readonly labelPrefix?: React.ReactNode\n readonly parentPath?: string\n readonly path?: string\n readonly permissions:\n | {\n [fieldName: string]: SanitizedFieldPermissions\n }\n | SanitizedFieldPermissions\n}): FieldOption[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n const {\n operation: hasOperationPermission,\n permissions: fieldPermissions,\n read: hasReadPermission,\n } = getFieldPermissions({\n field,\n operation: 'update',\n parentName: parentPath?.includes('.')\n ? parentPath.split('.')[parentPath.split('.').length - 1]\n : parentPath,\n permissions,\n })\n\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly) ||\n !hasOperationPermission ||\n !hasReadPermission)\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFieldOptions({\n fields: field.fields,\n labelPrefix: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n parentPath: path,\n path: createNestedClientFieldPath(path, field),\n permissions: fieldPermissions,\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFieldOptions({\n fields: tab.fields,\n labelPrefix,\n parentPath: path,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n permissions: fieldPermissions,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField: FieldOption = {\n label: combineFieldLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n field,\n fieldPermissions: fieldPermissions as SanitizedFieldPermissions,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAiBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8NpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgOpD,CAAA"}
@@ -9,7 +9,6 @@ import { Popup } from '../../elements/Popup/index.js';
9
9
  import { useUseTitleField } from '../../hooks/useUseAsTitle.js';
10
10
  import { ChevronIcon } from '../../icons/Chevron/index.js';
11
11
  import { Dots } from '../../icons/Dots/index.js';
12
- import { SearchIcon } from '../../icons/Search/index.js';
13
12
  import { useListQuery } from '../../providers/ListQuery/index.js';
14
13
  import { useTranslation } from '../../providers/Translation/index.js';
15
14
  import { AnimateHeight } from '../AnimateHeight/index.js';
@@ -17,7 +16,7 @@ import { ColumnSelector } from '../ColumnSelector/index.js';
17
16
  import { GroupByBuilder } from '../GroupByBuilder/index.js';
18
17
  import { Pill } from '../Pill/index.js';
19
18
  import { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js';
20
- import { SearchFilter } from '../SearchFilter/index.js';
19
+ import { SearchBar } from '../SearchBar/index.js';
21
20
  import { WhereBuilder } from '../WhereBuilder/index.js';
22
21
  import { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js';
23
22
  import './index.scss';
@@ -97,82 +96,74 @@ export const ListControls = props => {
97
96
  activePreset: activePreset,
98
97
  collectionSlug: collectionSlug,
99
98
  queryPresetPermissions: queryPresetPermissions
100
- }), /*#__PURE__*/_jsxs("div", {
101
- className: `${baseClass}__wrap`,
102
- children: [/*#__PURE__*/_jsxs("div", {
103
- className: `${baseClass}__search`,
104
- children: [/*#__PURE__*/_jsx(SearchIcon, {}), /*#__PURE__*/_jsx(SearchFilter, {
105
- handleChange: handleSearchChange,
106
- label: searchLabelTranslated.current,
107
- searchQueryParam: query?.search
108
- }, collectionSlug)]
109
- }), /*#__PURE__*/_jsxs("div", {
110
- className: `${baseClass}__buttons`,
111
- children: [!smallBreak && /*#__PURE__*/_jsx(React.Fragment, {
112
- children: beforeActions && beforeActions
113
- }), enableColumns && /*#__PURE__*/_jsx(Pill, {
114
- "aria-controls": `${baseClass}-columns`,
115
- "aria-expanded": visibleDrawer === 'columns',
116
- className: `${baseClass}__toggle-columns`,
117
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
118
- direction: visibleDrawer === 'columns' ? 'up' : 'down'
119
- }),
120
- id: "toggle-list-columns",
121
- onClick: () => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined),
122
- pillStyle: "light",
123
- size: "small",
124
- children: t('general:columns')
125
- }), enableFilters && /*#__PURE__*/_jsx(Pill, {
126
- "aria-controls": `${baseClass}-where`,
127
- "aria-expanded": visibleDrawer === 'where',
128
- className: `${baseClass}__toggle-where`,
129
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
130
- direction: visibleDrawer === 'where' ? 'up' : 'down'
131
- }),
132
- id: "toggle-list-filters",
133
- onClick: () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined),
134
- pillStyle: "light",
135
- size: "small",
136
- children: t('general:filters')
137
- }), enableSort && /*#__PURE__*/_jsx(Pill, {
138
- "aria-controls": `${baseClass}-sort`,
139
- "aria-expanded": visibleDrawer === 'sort',
140
- className: `${baseClass}__toggle-sort`,
141
- icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
142
- id: "toggle-list-sort",
143
- onClick: () => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined),
144
- pillStyle: "light",
145
- size: "small",
146
- children: t('general:sort')
147
- }), collectionConfig.admin.groupBy && /*#__PURE__*/_jsx(Pill, {
148
- "aria-controls": `${baseClass}-group-by`,
149
- "aria-expanded": visibleDrawer === 'group-by',
150
- className: `${baseClass}__toggle-group-by`,
151
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
152
- direction: visibleDrawer === 'group-by' ? 'up' : 'down'
153
- }),
154
- id: "toggle-group-by",
155
- onClick: () => setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined),
156
- pillStyle: "light",
157
- size: "small",
158
- children: t('general:groupByLabel', {
159
- label: ''
160
- })
161
- }), listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && /*#__PURE__*/_jsx(Popup, {
162
- button: /*#__PURE__*/_jsx(Dots, {
163
- ariaLabel: t('general:moreOptions')
164
- }),
165
- className: `${baseClass}__popup`,
166
- horizontalAlign: "right",
167
- id: "list-menu",
168
- size: "small",
169
- verticalAlign: "bottom",
170
- children: listMenuItems.map((item, i_0) => /*#__PURE__*/_jsx(Fragment, {
171
- children: item
172
- }, `list-menu-item-${i_0}`))
173
- })]
174
- })]
175
- }), enableColumns && /*#__PURE__*/_jsx(AnimateHeight, {
99
+ }), /*#__PURE__*/_jsx(SearchBar, {
100
+ Actions: [!smallBreak && /*#__PURE__*/_jsx(React.Fragment, {
101
+ children: beforeActions && beforeActions
102
+ }, "before-actions"), enableColumns && /*#__PURE__*/_jsx(Pill, {
103
+ "aria-controls": `${baseClass}-columns`,
104
+ "aria-expanded": visibleDrawer === 'columns',
105
+ className: `${baseClass}__toggle-columns`,
106
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {
107
+ direction: visibleDrawer === 'columns' ? 'up' : 'down'
108
+ }),
109
+ id: "toggle-list-columns",
110
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined),
111
+ pillStyle: "light",
112
+ size: "small",
113
+ children: t('general:columns')
114
+ }, "toggle-list-columns"), enableFilters && /*#__PURE__*/_jsx(Pill, {
115
+ "aria-controls": `${baseClass}-where`,
116
+ "aria-expanded": visibleDrawer === 'where',
117
+ className: `${baseClass}__toggle-where`,
118
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {
119
+ direction: visibleDrawer === 'where' ? 'up' : 'down'
120
+ }),
121
+ id: "toggle-list-filters",
122
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined),
123
+ pillStyle: "light",
124
+ size: "small",
125
+ children: t('general:filters')
126
+ }, "toggle-list-filters"), enableSort && /*#__PURE__*/_jsx(Pill, {
127
+ "aria-controls": `${baseClass}-sort`,
128
+ "aria-expanded": visibleDrawer === 'sort',
129
+ className: `${baseClass}__toggle-sort`,
130
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
131
+ id: "toggle-list-sort",
132
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined),
133
+ pillStyle: "light",
134
+ size: "small",
135
+ children: t('general:sort')
136
+ }, "toggle-list-sort"), collectionConfig.admin.groupBy && /*#__PURE__*/_jsx(Pill, {
137
+ "aria-controls": `${baseClass}-group-by`,
138
+ "aria-expanded": visibleDrawer === 'group-by',
139
+ className: `${baseClass}__toggle-group-by`,
140
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {
141
+ direction: visibleDrawer === 'group-by' ? 'up' : 'down'
142
+ }),
143
+ id: "toggle-group-by",
144
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined),
145
+ pillStyle: "light",
146
+ size: "small",
147
+ children: t('general:groupByLabel', {
148
+ label: ''
149
+ })
150
+ }, "toggle-group-by"), listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && /*#__PURE__*/_jsx(Popup, {
151
+ button: /*#__PURE__*/_jsx(Dots, {
152
+ ariaLabel: t('general:moreOptions')
153
+ }),
154
+ className: `${baseClass}__popup`,
155
+ horizontalAlign: "right",
156
+ id: "list-menu",
157
+ size: "small",
158
+ verticalAlign: "bottom",
159
+ children: listMenuItems.map((item, i_0) => /*#__PURE__*/_jsx(Fragment, {
160
+ children: item
161
+ }, `list-menu-item-${i_0}`))
162
+ }, "list-menu")].filter(Boolean),
163
+ label: searchLabelTranslated.current,
164
+ onSearchChange: handleSearchChange,
165
+ searchQueryParam: query?.search
166
+ }, collectionSlug), enableColumns && /*#__PURE__*/_jsx(AnimateHeight, {
176
167
  className: `${baseClass}__columns`,
177
168
  height: visibleDrawer === 'columns' ? 'auto' : 0,
178
169
  id: `${baseClass}-columns`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","validateWhereQuery","React","Fragment","useEffect","useRef","useState","Popup","useUseTitleField","ChevronIcon","Dots","SearchIcon","useListQuery","useTranslation","AnimateHeight","ColumnSelector","GroupByBuilder","Pill","QueryPresetBar","SearchFilter","WhereBuilder","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","enableFilters","enableSort","listMenuItems","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","enableQueryPresets","_jsx","handleChange","searchQueryParam","search","icon","direction","id","onClick","pillStyle","size","groupBy","Array","isArray","button","ariaLabel","horizontalAlign","verticalAlign","map","item","height","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport { validateWhereQuery } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { GroupByBuilder } from '../GroupByBuilder/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n listMenuItems,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const { handleSearchChange, query } = useListQuery()\n\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n i18n,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'group-by' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__search`}>\n <SearchIcon />\n <SearchFilter\n handleChange={handleSearchChange}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n searchQueryParam={query?.search}\n />\n </div>\n <div className={`${baseClass}__buttons`}>\n {!smallBreak && <React.Fragment>{beforeActions && beforeActions}</React.Fragment>}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n id=\"toggle-list-columns\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n )}\n {enableFilters && (\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n id=\"toggle-list-filters\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:filters')}\n </Pill>\n )}\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n id=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:sort')}\n </Pill>\n )}\n {collectionConfig.admin.groupBy && (\n <Pill\n aria-controls={`${baseClass}-group-by`}\n aria-expanded={visibleDrawer === 'group-by'}\n className={`${baseClass}__toggle-group-by`}\n icon={<ChevronIcon direction={visibleDrawer === 'group-by' ? 'up' : 'down'} />}\n id=\"toggle-group-by\"\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined)\n }\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:groupByLabel', {\n label: '',\n })}\n </Pill>\n )}\n {listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </Popup>\n )}\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {collectionConfig.admin.groupBy && (\n <AnimateHeight\n className={`${baseClass}__group-by`}\n height={visibleDrawer === 'group-by' ? 'auto' : 0}\n id={`${baseClass}-group-by`}\n >\n <GroupByBuilder collectionSlug={collectionConfig.slug} fields={collectionConfig.fields} />\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","validateWhereQuery","React","Fragment","useEffect","useRef","useState","Popup","useUseTitleField","ChevronIcon","Dots","useListQuery","useTranslation","AnimateHeight","ColumnSelector","GroupByBuilder","Pill","QueryPresetBar","SearchBar","WhereBuilder","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","enableFilters","enableSort","listMenuItems","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","enableQueryPresets","_jsx","Actions","icon","direction","id","onClick","pillStyle","size","groupBy","Array","isArray","button","ariaLabel","horizontalAlign","verticalAlign","map","item","filter","onSearchChange","searchQueryParam","search","height","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport { validateWhereQuery } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { GroupByBuilder } from '../GroupByBuilder/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { SearchBar } from '../SearchBar/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n listMenuItems,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const { handleSearchChange, query } = useListQuery()\n\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n i18n,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'group-by' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n <SearchBar\n Actions={[\n !smallBreak && (\n <React.Fragment key=\"before-actions\">{beforeActions && beforeActions}</React.Fragment>\n ),\n enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n id=\"toggle-list-columns\"\n key=\"toggle-list-columns\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n ),\n enableFilters && (\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n id=\"toggle-list-filters\"\n key=\"toggle-list-filters\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:filters')}\n </Pill>\n ),\n enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n id=\"toggle-list-sort\"\n key=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:sort')}\n </Pill>\n ),\n collectionConfig.admin.groupBy && (\n <Pill\n aria-controls={`${baseClass}-group-by`}\n aria-expanded={visibleDrawer === 'group-by'}\n className={`${baseClass}__toggle-group-by`}\n icon={<ChevronIcon direction={visibleDrawer === 'group-by' ? 'up' : 'down'} />}\n id=\"toggle-group-by\"\n key=\"toggle-group-by\"\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined)\n }\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:groupByLabel', {\n label: '',\n })}\n </Pill>\n ),\n listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n key=\"list-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </Popup>\n ),\n ].filter(Boolean)}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {collectionConfig.admin.groupBy && (\n <AnimateHeight\n className={`${baseClass}__group-by`}\n height={visibleDrawer === 'group-by' ? 'auto' : 0}\n id={`${baseClass}-group-by`}\n >\n <GroupByBuilder collectionSlug={collectionConfig.slug} fields={collectionConfig.fields} />\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}