@payloadcms/ui 3.73.0 → 3.74.0-canary.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AASzE,OAAO,KAAyC,MAAM,OAAO,CAAA;AAc7D,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,6BAA6B,CAAA;CACtD,CA8SA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AASzE,OAAO,KAAyC,MAAM,OAAO,CAAA;AAc7D,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sBAAsB,EAAE,6BAA6B,CAAA;CACtD,CA6SA,CAAA"}
@@ -41,8 +41,7 @@ export const QueryPresetBar = ({
41
41
  config: {
42
42
  routes: {
43
43
  api: apiRoute
44
- },
45
- serverURL
44
+ }
46
45
  },
47
46
  getEntityConfig
48
47
  } = useConfig();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","useCallback","useMemo","toast","PlusIcon","useConfig","useListQuery","useTranslation","ConfirmationModal","useDocumentDrawer","useListDrawer","ListSelectionButton","Pill","Translation","QueryPresetToggler","confirmDeletePresetModalSlug","queryPresetsSlug","baseClass","QueryPresetBar","activePreset","collectionSlug","queryPresetPermissions","modified","query","refineListData","setModified","setQueryModified","i18n","t","openModal","config","routes","api","apiRoute","serverURL","getEntityConfig","presetConfig","PresetDocumentDrawer","openDrawer","openDocumentDrawer","id","CreateNewPresetDrawer","closeDrawer","closeCreateNewDrawer","openCreateNewDrawer","filterOptions","isTemp","not_equals","relatedCollection","equals","ListDrawer","closeListDrawer","openListDrawer","collectionSlugs","selectedCollection","handlePresetChange","preset","columns","undefined","groupBy","where","resetQueryPreset","handleDeletePreset","fetch","path","method","then","res","json","status","success","label","labels","singular","title","errors","forEach","error","message","_err","saveCurrentChanges","body","JSON","stringify","credentials","headers","hasModifiedPreset","_jsxs","className","_jsx","openPresetListDrawer","resetPreset","icon","onClick","size","type","update","isShared","delete","initialData","onSave","doc","redirectAfterCreate","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm","onDelete","onDuplicate","allowCreate","disableQueryPresets","onSelect"],"sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"sourcesContent":["import type { QueryPreset, SanitizedCollectionPermission } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from 'payload/shared'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { useListDrawer } from '../../ListDrawer/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { QueryPresetToggler } from '../QueryPresetToggler/index.js'\nimport './index.scss'\n\nconst confirmDeletePresetModalSlug = 'confirm-delete-preset'\n\nconst queryPresetsSlug = 'payload-query-presets'\n\nconst baseClass = 'query-preset-bar'\n\nexport const QueryPresetBar: React.FC<{\n activePreset: QueryPreset\n collectionSlug?: string\n queryPresetPermissions: SanitizedCollectionPermission\n}> = ({ activePreset, collectionSlug, queryPresetPermissions }) => {\n const { modified, query, refineListData, setModified: setQueryModified } = useListQuery()\n\n const { i18n, t } = useTranslation()\n const { openModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const presetConfig = getEntityConfig({ collectionSlug: queryPresetsSlug })\n\n const [PresetDocumentDrawer, , { openDrawer: openDocumentDrawer }] = useDocumentDrawer({\n id: activePreset?.id,\n collectionSlug: queryPresetsSlug,\n })\n\n const [\n CreateNewPresetDrawer,\n ,\n { closeDrawer: closeCreateNewDrawer, openDrawer: openCreateNewDrawer },\n ] = useDocumentDrawer({\n collectionSlug: queryPresetsSlug,\n })\n\n const filterOptions = useMemo(\n () => ({\n 'payload-query-presets': {\n isTemp: {\n not_equals: true,\n },\n relatedCollection: {\n equals: collectionSlug,\n },\n },\n }),\n [collectionSlug],\n )\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: [queryPresetsSlug],\n filterOptions,\n selectedCollection: queryPresetsSlug,\n })\n\n const handlePresetChange = useCallback(\n async (preset: QueryPreset) => {\n await refineListData(\n {\n columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,\n groupBy: preset.groupBy || '',\n preset: preset.id,\n where: preset.where,\n },\n false,\n )\n },\n [refineListData],\n )\n\n const resetQueryPreset = useCallback(async () => {\n await refineListData(\n {\n columns: [],\n groupBy: '',\n preset: '',\n where: {},\n },\n false,\n )\n }, [refineListData])\n\n const handleDeletePreset = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n method: 'DELETE',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n title: activePreset.title,\n }),\n )\n\n await resetQueryPreset()\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n })\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }, [apiRoute, activePreset?.id, activePreset?.title, t, presetConfig, i18n, resetQueryPreset])\n\n const saveCurrentChanges = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n body: JSON.stringify({\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n where: query.where,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:updatedLabelSuccessfully', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n }),\n )\n\n setQueryModified(false)\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:unknown'))\n }\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n })\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n }, [\n apiRoute,\n activePreset?.id,\n query.columns,\n query.groupBy,\n query.where,\n t,\n presetConfig?.labels?.singular,\n i18n,\n setQueryModified,\n ])\n\n const hasModifiedPreset = activePreset && modified\n\n return (\n <Fragment>\n <div className={baseClass}>\n <div className={`${baseClass}__menu`}>\n <QueryPresetToggler\n activePreset={activePreset}\n openPresetListDrawer={openListDrawer}\n resetPreset={resetQueryPreset}\n />\n <Pill\n aria-label={t('general:newLabel', { label: presetConfig?.labels?.singular })}\n className={`${baseClass}__create-new-preset`}\n icon={<PlusIcon />}\n id=\"create-new-preset\"\n onClick={() => {\n openCreateNewDrawer()\n }}\n size=\"small\"\n />\n </div>\n <div className={`${baseClass}__menu-items`}>\n {hasModifiedPreset && (\n <ListSelectionButton\n id=\"reset-preset\"\n key=\"reset\"\n onClick={async () => {\n await refineListData(\n {\n columns: transformColumnsToSearchParams(activePreset.columns),\n groupBy: activePreset.groupBy || '',\n where: activePreset.where,\n },\n false,\n )\n }}\n type=\"button\"\n >\n {t('general:reset')}\n </ListSelectionButton>\n )}\n {hasModifiedPreset && queryPresetPermissions.update && (\n <ListSelectionButton\n id=\"save-preset\"\n key=\"save\"\n onClick={async () => {\n await saveCurrentChanges()\n }}\n type=\"button\"\n >\n {activePreset?.isShared ? t('general:updateForEveryone') : t('fields:saveChanges')}\n </ListSelectionButton>\n )}\n {activePreset && queryPresetPermissions?.delete && (\n <Fragment>\n <ListSelectionButton\n id=\"delete-preset\"\n onClick={() => openModal(confirmDeletePresetModalSlug)}\n type=\"button\"\n >\n {t('general:deleteLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n <ListSelectionButton\n id=\"edit-preset\"\n onClick={() => {\n openDocumentDrawer()\n }}\n type=\"button\"\n >\n {t('general:editLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n </Fragment>\n )}\n </div>\n </div>\n <CreateNewPresetDrawer\n initialData={{\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n relatedCollection: collectionSlug,\n where: query.where,\n }}\n onSave={async ({ doc }) => {\n closeCreateNewDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n redirectAfterCreate={false}\n />\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: presetConfig?.labels?.singular,\n title: activePreset?.title,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeletePresetModalSlug}\n onConfirm={handleDeletePreset}\n />\n <PresetDocumentDrawer\n onDelete={() => {\n // setSelectedPreset(undefined)\n }}\n onDuplicate={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n onSave={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n <ListDrawer\n allowCreate={false}\n disableQueryPresets\n onSelect={async ({ doc }) => {\n closeListDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","formatAdminURL","transformColumnsToPreferences","transformColumnsToSearchParams","React","Fragment","useCallback","useMemo","toast","PlusIcon","useConfig","useListQuery","useTranslation","ConfirmationModal","useDocumentDrawer","useListDrawer","ListSelectionButton","Pill","Translation","QueryPresetToggler","confirmDeletePresetModalSlug","queryPresetsSlug","baseClass","QueryPresetBar","activePreset","collectionSlug","queryPresetPermissions","modified","query","refineListData","setModified","setQueryModified","i18n","t","openModal","config","routes","api","apiRoute","getEntityConfig","presetConfig","PresetDocumentDrawer","openDrawer","openDocumentDrawer","id","CreateNewPresetDrawer","closeDrawer","closeCreateNewDrawer","openCreateNewDrawer","filterOptions","isTemp","not_equals","relatedCollection","equals","ListDrawer","closeListDrawer","openListDrawer","collectionSlugs","selectedCollection","handlePresetChange","preset","columns","undefined","groupBy","where","resetQueryPreset","handleDeletePreset","fetch","path","method","then","res","json","status","success","label","labels","singular","title","errors","forEach","error","message","_err","saveCurrentChanges","body","JSON","stringify","credentials","headers","hasModifiedPreset","_jsxs","className","_jsx","openPresetListDrawer","resetPreset","icon","onClick","size","type","update","isShared","delete","initialData","onSave","doc","redirectAfterCreate","elements","1","children","i18nKey","variables","confirmingLabel","heading","modalSlug","onConfirm","onDelete","onDuplicate","allowCreate","disableQueryPresets","onSelect"],"sources":["../../../../src/elements/QueryPresets/QueryPresetBar/index.tsx"],"sourcesContent":["import type { QueryPreset, SanitizedCollectionPermission } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatAdminURL,\n transformColumnsToPreferences,\n transformColumnsToSearchParams,\n} from 'payload/shared'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport { PlusIcon } from '../../../icons/Plus/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useListQuery } from '../../../providers/ListQuery/context.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../../ConfirmationModal/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { useListDrawer } from '../../ListDrawer/index.js'\nimport { ListSelectionButton } from '../../ListSelection/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { Translation } from '../../Translation/index.js'\nimport { QueryPresetToggler } from '../QueryPresetToggler/index.js'\nimport './index.scss'\n\nconst confirmDeletePresetModalSlug = 'confirm-delete-preset'\n\nconst queryPresetsSlug = 'payload-query-presets'\n\nconst baseClass = 'query-preset-bar'\n\nexport const QueryPresetBar: React.FC<{\n activePreset: QueryPreset\n collectionSlug?: string\n queryPresetPermissions: SanitizedCollectionPermission\n}> = ({ activePreset, collectionSlug, queryPresetPermissions }) => {\n const { modified, query, refineListData, setModified: setQueryModified } = useListQuery()\n\n const { i18n, t } = useTranslation()\n const { openModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const presetConfig = getEntityConfig({ collectionSlug: queryPresetsSlug })\n\n const [PresetDocumentDrawer, , { openDrawer: openDocumentDrawer }] = useDocumentDrawer({\n id: activePreset?.id,\n collectionSlug: queryPresetsSlug,\n })\n\n const [\n CreateNewPresetDrawer,\n ,\n { closeDrawer: closeCreateNewDrawer, openDrawer: openCreateNewDrawer },\n ] = useDocumentDrawer({\n collectionSlug: queryPresetsSlug,\n })\n\n const filterOptions = useMemo(\n () => ({\n 'payload-query-presets': {\n isTemp: {\n not_equals: true,\n },\n relatedCollection: {\n equals: collectionSlug,\n },\n },\n }),\n [collectionSlug],\n )\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: [queryPresetsSlug],\n filterOptions,\n selectedCollection: queryPresetsSlug,\n })\n\n const handlePresetChange = useCallback(\n async (preset: QueryPreset) => {\n await refineListData(\n {\n columns: preset.columns ? transformColumnsToSearchParams(preset.columns) : undefined,\n groupBy: preset.groupBy || '',\n preset: preset.id,\n where: preset.where,\n },\n false,\n )\n },\n [refineListData],\n )\n\n const resetQueryPreset = useCallback(async () => {\n await refineListData(\n {\n columns: [],\n groupBy: '',\n preset: '',\n where: {},\n },\n false,\n )\n }, [refineListData])\n\n const handleDeletePreset = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n method: 'DELETE',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n title: activePreset.title,\n }),\n )\n\n await resetQueryPreset()\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n })\n } catch (_err) {\n toast.error(t('error:deletingTitle', { title: activePreset.title }))\n }\n }, [apiRoute, activePreset?.id, activePreset?.title, t, presetConfig, i18n, resetQueryPreset])\n\n const saveCurrentChanges = useCallback(async () => {\n try {\n await fetch(\n formatAdminURL({\n apiRoute,\n path: `/${queryPresetsSlug}/${activePreset.id}`,\n }),\n {\n body: JSON.stringify({\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n where: query.where,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n ).then(async (res) => {\n try {\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:updatedLabelSuccessfully', {\n label: getTranslation(presetConfig?.labels?.singular, i18n),\n }),\n )\n\n setQueryModified(false)\n } else {\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n toast.error(t('error:unknown'))\n }\n }\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n })\n } catch (_err) {\n toast.error(t('error:unknown'))\n }\n }, [\n apiRoute,\n activePreset?.id,\n query.columns,\n query.groupBy,\n query.where,\n t,\n presetConfig?.labels?.singular,\n i18n,\n setQueryModified,\n ])\n\n const hasModifiedPreset = activePreset && modified\n\n return (\n <Fragment>\n <div className={baseClass}>\n <div className={`${baseClass}__menu`}>\n <QueryPresetToggler\n activePreset={activePreset}\n openPresetListDrawer={openListDrawer}\n resetPreset={resetQueryPreset}\n />\n <Pill\n aria-label={t('general:newLabel', { label: presetConfig?.labels?.singular })}\n className={`${baseClass}__create-new-preset`}\n icon={<PlusIcon />}\n id=\"create-new-preset\"\n onClick={() => {\n openCreateNewDrawer()\n }}\n size=\"small\"\n />\n </div>\n <div className={`${baseClass}__menu-items`}>\n {hasModifiedPreset && (\n <ListSelectionButton\n id=\"reset-preset\"\n key=\"reset\"\n onClick={async () => {\n await refineListData(\n {\n columns: transformColumnsToSearchParams(activePreset.columns),\n groupBy: activePreset.groupBy || '',\n where: activePreset.where,\n },\n false,\n )\n }}\n type=\"button\"\n >\n {t('general:reset')}\n </ListSelectionButton>\n )}\n {hasModifiedPreset && queryPresetPermissions.update && (\n <ListSelectionButton\n id=\"save-preset\"\n key=\"save\"\n onClick={async () => {\n await saveCurrentChanges()\n }}\n type=\"button\"\n >\n {activePreset?.isShared ? t('general:updateForEveryone') : t('fields:saveChanges')}\n </ListSelectionButton>\n )}\n {activePreset && queryPresetPermissions?.delete && (\n <Fragment>\n <ListSelectionButton\n id=\"delete-preset\"\n onClick={() => openModal(confirmDeletePresetModalSlug)}\n type=\"button\"\n >\n {t('general:deleteLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n <ListSelectionButton\n id=\"edit-preset\"\n onClick={() => {\n openDocumentDrawer()\n }}\n type=\"button\"\n >\n {t('general:editLabel', { label: presetConfig?.labels?.singular })}\n </ListSelectionButton>\n </Fragment>\n )}\n </div>\n </div>\n <CreateNewPresetDrawer\n initialData={{\n columns: transformColumnsToPreferences(query.columns),\n groupBy: query.groupBy,\n relatedCollection: collectionSlug,\n where: query.where,\n }}\n onSave={async ({ doc }) => {\n closeCreateNewDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n redirectAfterCreate={false}\n />\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToDelete\"\n t={t}\n variables={{\n label: presetConfig?.labels?.singular,\n title: activePreset?.title,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmDeletePresetModalSlug}\n onConfirm={handleDeletePreset}\n />\n <PresetDocumentDrawer\n onDelete={() => {\n // setSelectedPreset(undefined)\n }}\n onDuplicate={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n onSave={async ({ doc }) => {\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n <ListDrawer\n allowCreate={false}\n disableQueryPresets\n onSelect={async ({ doc }) => {\n closeListDrawer()\n await handlePresetChange(doc as QueryPreset)\n }}\n />\n </Fragment>\n )\n}\n"],"mappings":";AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SACEC,cAAc,EACdC,6BAA6B,EAC7BC,8BAA8B,QACzB;AACP,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,OAAO,QAAQ;AACtD,SAASC,KAAK,QAAQ;AAEtB,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,IAAI,QAAQ;AACrB,SAASC,WAAW,QAAQ;AAC5B,SAASC,kBAAkB,QAAQ;AACnC,OAAO;AAEP,MAAMC,4BAAA,GAA+B;AAErC,MAAMC,gBAAA,GAAmB;AAEzB,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,cAAA,GAIRA,CAAC;EAAEC,YAAY;EAAEC,cAAc;EAAEC;AAAsB,CAAE;EAC5D,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,cAAc;IAAEC,WAAA,EAAaC;EAAgB,CAAE,GAAGpB,YAAA;EAE3E,MAAM;IAAEqB,IAAI;IAAEC;EAAC,CAAE,GAAGrB,cAAA;EACpB,MAAM;IAAEsB;EAAS,CAAE,GAAGnC,QAAA;EAEtB,MAAM;IACJoC,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC,GAAA,EAAKC;MAAQ;IAAE,CAC1B;IACDC;EAAe,CAChB,GAAG7B,SAAA;EAEJ,MAAM8B,YAAA,GAAeD,eAAA,CAAgB;IAAEd,cAAA,EAAgBJ;EAAiB;EAExE,MAAM,CAACoB,oBAAA,GAAwB;IAAEC,UAAA,EAAYC;EAAkB,CAAE,CAAC,GAAG7B,iBAAA,CAAkB;IACrF8B,EAAA,EAAIpB,YAAA,EAAcoB,EAAA;IAClBnB,cAAA,EAAgBJ;EAClB;EAEA,MAAM,CACJwB,qBAAA,GAEA;IAAEC,WAAA,EAAaC,oBAAoB;IAAEL,UAAA,EAAYM;EAAmB,CAAE,CACvE,GAAGlC,iBAAA,CAAkB;IACpBW,cAAA,EAAgBJ;EAClB;EAEA,MAAM4B,aAAA,GAAgB1C,OAAA,CACpB,OAAO;IACL,yBAAyB;MACvB2C,MAAA,EAAQ;QACNC,UAAA,EAAY;MACd;MACAC,iBAAA,EAAmB;QACjBC,MAAA,EAAQ5B;MACV;IACF;EACF,IACA,CAACA,cAAA,CAAe;EAGlB,MAAM,CAAC6B,UAAA,GAAc;IAAER,WAAA,EAAaS,eAAe;IAAEb,UAAA,EAAYc;EAAc,CAAE,CAAC,GAChFzC,aAAA,CAAc;IACZ0C,eAAA,EAAiB,CAACpC,gBAAA,CAAiB;IACnC4B,aAAA;IACAS,kBAAA,EAAoBrC;EACtB;EAEF,MAAMsC,kBAAA,GAAqBrD,WAAA,CACzB,MAAOsD,MAAA;IACL,MAAM/B,cAAA,CACJ;MACEgC,OAAA,EAASD,MAAA,CAAOC,OAAO,GAAG1D,8BAAA,CAA+ByD,MAAA,CAAOC,OAAO,IAAIC,SAAA;MAC3EC,OAAA,EAASH,MAAA,CAAOG,OAAO,IAAI;MAC3BH,MAAA,EAAQA,MAAA,CAAOhB,EAAE;MACjBoB,KAAA,EAAOJ,MAAA,CAAOI;IAChB,GACA;EAEJ,GACA,CAACnC,cAAA,CAAe;EAGlB,MAAMoC,gBAAA,GAAmB3D,WAAA,CAAY;IACnC,MAAMuB,cAAA,CACJ;MACEgC,OAAA,EAAS,EAAE;MACXE,OAAA,EAAS;MACTH,MAAA,EAAQ;MACRI,KAAA,EAAO,CAAC;IACV,GACA;EAEJ,GAAG,CAACnC,cAAA,CAAe;EAEnB,MAAMqC,kBAAA,GAAqB5D,WAAA,CAAY;IACrC,IAAI;MACF,MAAM6D,KAAA,CACJlE,cAAA,CAAe;QACbqC,QAAA;QACA8B,IAAA,EAAM,IAAI/C,gBAAA,IAAoBG,YAAA,CAAaoB,EAAE;MAC/C,IACA;QACEyB,MAAA,EAAQ;MACV,GACAC,IAAI,CAAC,MAAOC,GAAA;QACZ,IAAI;UACF,MAAMC,IAAA,GAAO,MAAMD,GAAA,CAAIC,IAAI;UAE3B,IAAID,GAAA,CAAIE,MAAM,GAAG,KAAK;YACpBjE,KAAA,CAAMkE,OAAO,CACXzC,CAAA,CAAE,wBAAwB;cACxB0C,KAAA,EAAO3E,cAAA,CAAewC,YAAA,EAAcoC,MAAA,EAAQC,QAAA,EAAU7C,IAAA;cACtD8C,KAAA,EAAOtD,YAAA,CAAasD;YACtB;YAGF,MAAMb,gBAAA;UACR,OAAO;YACL,IAAIO,IAAA,CAAKO,MAAM,EAAE;cACfP,IAAA,CAAKO,MAAM,CAACC,OAAO,CAAEC,KAAA,IAAUzE,KAAA,CAAMyE,KAAK,CAACA,KAAA,CAAMC,OAAO;YAC1D,OAAO;cACL1E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE,uBAAuB;gBAAE6C,KAAA,EAAOtD,YAAA,CAAasD;cAAM;YACnE;UACF;QACF,EAAE,OAAOK,IAAA,EAAM;UACb3E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE,uBAAuB;YAAE6C,KAAA,EAAOtD,YAAA,CAAasD;UAAM;QACnE;MACF;IACF,EAAE,OAAOK,IAAA,EAAM;MACb3E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE,uBAAuB;QAAE6C,KAAA,EAAOtD,YAAA,CAAasD;MAAM;IACnE;EACF,GAAG,CAACxC,QAAA,EAAUd,YAAA,EAAcoB,EAAA,EAAIpB,YAAA,EAAcsD,KAAA,EAAO7C,CAAA,EAAGO,YAAA,EAAcR,IAAA,EAAMiC,gBAAA,CAAiB;EAE7F,MAAMmB,kBAAA,GAAqB9E,WAAA,CAAY;IACrC,IAAI;MACF,MAAM6D,KAAA,CACJlE,cAAA,CAAe;QACbqC,QAAA;QACA8B,IAAA,EAAM,IAAI/C,gBAAA,IAAoBG,YAAA,CAAaoB,EAAE;MAC/C,IACA;QACEyC,IAAA,EAAMC,IAAA,CAAKC,SAAS,CAAC;UACnB1B,OAAA,EAAS3D,6BAAA,CAA8B0B,KAAA,CAAMiC,OAAO;UACpDE,OAAA,EAASnC,KAAA,CAAMmC,OAAO;UACtBC,KAAA,EAAOpC,KAAA,CAAMoC;QACf;QACAwB,WAAA,EAAa;QACbC,OAAA,EAAS;UACP,gBAAgB;QAClB;QACApB,MAAA,EAAQ;MACV,GACAC,IAAI,CAAC,MAAOC,GAAA;QACZ,IAAI;UACF,MAAMC,IAAA,GAAO,MAAMD,GAAA,CAAIC,IAAI;UAE3B,IAAID,GAAA,CAAIE,MAAM,GAAG,KAAK;YACpBjE,KAAA,CAAMkE,OAAO,CACXzC,CAAA,CAAE,oCAAoC;cACpC0C,KAAA,EAAO3E,cAAA,CAAewC,YAAA,EAAcoC,MAAA,EAAQC,QAAA,EAAU7C,IAAA;YACxD;YAGFD,gBAAA,CAAiB;UACnB,OAAO;YACL,IAAIyC,IAAA,CAAKO,MAAM,EAAE;cACfP,IAAA,CAAKO,MAAM,CAACC,OAAO,CAAEC,KAAA,IAAUzE,KAAA,CAAMyE,KAAK,CAACA,KAAA,CAAMC,OAAO;YAC1D,OAAO;cACL1E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE;YAChB;UACF;QACF,EAAE,OAAOkD,IAAA,EAAM;UACb3E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE;QAChB;MACF;IACF,EAAE,OAAOkD,IAAA,EAAM;MACb3E,KAAA,CAAMyE,KAAK,CAAChD,CAAA,CAAE;IAChB;EACF,GAAG,CACDK,QAAA,EACAd,YAAA,EAAcoB,EAAA,EACdhB,KAAA,CAAMiC,OAAO,EACbjC,KAAA,CAAMmC,OAAO,EACbnC,KAAA,CAAMoC,KAAK,EACX/B,CAAA,EACAO,YAAA,EAAcoC,MAAA,EAAQC,QAAA,EACtB7C,IAAA,EACAD,gBAAA,CACD;EAED,MAAM2D,iBAAA,GAAoBlE,YAAA,IAAgBG,QAAA;EAE1C,oBACEgE,KAAA,CAACtF,QAAA;4BACCsF,KAAA,CAAC;MAAIC,SAAA,EAAWtE,SAAA;8BACdqE,KAAA,CAAC;QAAIC,SAAA,EAAW,GAAGtE,SAAA,QAAiB;gCAClCuE,IAAA,CAAC1E,kBAAA;UACCK,YAAA,EAAcA,YAAA;UACdsE,oBAAA,EAAsBtC,cAAA;UACtBuC,WAAA,EAAa9B;yBAEf4B,IAAA,CAAC5E,IAAA;UACC,cAAYgB,CAAA,CAAE,oBAAoB;YAAE0C,KAAA,EAAOnC,YAAA,EAAcoC,MAAA,EAAQC;UAAS;UAC1Ee,SAAA,EAAW,GAAGtE,SAAA,qBAA8B;UAC5C0E,IAAA,eAAMH,IAAA,CAACpF,QAAA;UACPmC,EAAA,EAAG;UACHqD,OAAA,EAASA,CAAA;YACPjD,mBAAA;UACF;UACAkD,IAAA,EAAK;;uBAGTP,KAAA,CAAC;QAAIC,SAAA,EAAW,GAAGtE,SAAA,cAAuB;mBACvCoE,iBAAA,iBACCG,IAAA,CAAC7E,mBAAA;UACC4B,EAAA,EAAG;UAEHqD,OAAA,EAAS,MAAAA,CAAA;YACP,MAAMpE,cAAA,CACJ;cACEgC,OAAA,EAAS1D,8BAAA,CAA+BqB,YAAA,CAAaqC,OAAO;cAC5DE,OAAA,EAASvC,YAAA,CAAauC,OAAO,IAAI;cACjCC,KAAA,EAAOxC,YAAA,CAAawC;YACtB,GACA;UAEJ;UACAmC,IAAA,EAAK;oBAEJlE,CAAA,CAAE;WAbC,UAgBPyD,iBAAA,IAAqBhE,sBAAA,CAAuB0E,MAAM,iBACjDP,IAAA,CAAC7E,mBAAA;UACC4B,EAAA,EAAG;UAEHqD,OAAA,EAAS,MAAAA,CAAA;YACP,MAAMb,kBAAA;UACR;UACAe,IAAA,EAAK;oBAEJ3E,YAAA,EAAc6E,QAAA,GAAWpE,CAAA,CAAE,+BAA+BA,CAAA,CAAE;WANzD,SASPT,YAAA,IAAgBE,sBAAA,EAAwB4E,MAAA,iBACvCX,KAAA,CAACtF,QAAA;kCACCwF,IAAA,CAAC7E,mBAAA;YACC4B,EAAA,EAAG;YACHqD,OAAA,EAASA,CAAA,KAAM/D,SAAA,CAAUd,4BAAA;YACzB+E,IAAA,EAAK;sBAEJlE,CAAA,CAAE,uBAAuB;cAAE0C,KAAA,EAAOnC,YAAA,EAAcoC,MAAA,EAAQC;YAAS;2BAEpEgB,IAAA,CAAC7E,mBAAA;YACC4B,EAAA,EAAG;YACHqD,OAAA,EAASA,CAAA;cACPtD,kBAAA;YACF;YACAwD,IAAA,EAAK;sBAEJlE,CAAA,CAAE,qBAAqB;cAAE0C,KAAA,EAAOnC,YAAA,EAAcoC,MAAA,EAAQC;YAAS;;;;qBAM1EgB,IAAA,CAAChD,qBAAA;MACC0D,WAAA,EAAa;QACX1C,OAAA,EAAS3D,6BAAA,CAA8B0B,KAAA,CAAMiC,OAAO;QACpDE,OAAA,EAASnC,KAAA,CAAMmC,OAAO;QACtBX,iBAAA,EAAmB3B,cAAA;QACnBuC,KAAA,EAAOpC,KAAA,CAAMoC;MACf;MACAwC,MAAA,EAAQ,MAAAA,CAAO;QAAEC;MAAG,CAAE;QACpB1D,oBAAA;QACA,MAAMY,kBAAA,CAAmB8C,GAAA;MAC3B;MACAC,mBAAA,EAAqB;qBAEvBb,IAAA,CAAChF,iBAAA;MACCwE,IAAA,eACEQ,IAAA,CAAC3E,WAAA;QACCyF,QAAA,EAAU;UACR,KAAKC,CAAC;YAAEC;UAAQ,CAAE,kBAAKhB,IAAA,CAAC;sBAAQgB;;QAClC;QACAC,OAAA,EAAQ;QACR7E,CAAA,EAAGA,CAAA;QACH8E,SAAA,EAAW;UACTpC,KAAA,EAAOnC,YAAA,EAAcoC,MAAA,EAAQC,QAAA;UAC7BC,KAAA,EAAOtD,YAAA,EAAcsD;QACvB;;MAGJkC,eAAA,EAAiB/E,CAAA,CAAE;MACnBgF,OAAA,EAAShF,CAAA,CAAE;MACXiF,SAAA,EAAW9F,4BAAA;MACX+F,SAAA,EAAWjD;qBAEb2B,IAAA,CAACpD,oBAAA;MACC2E,QAAA,EAAUA,CAAA;QACR;MAAA,CACF;MACAC,WAAA,EAAa,MAAAA,CAAO;QAAEZ;MAAG,CAAE;QACzB,MAAM9C,kBAAA,CAAmB8C,GAAA;MAC3B;MACAD,MAAA,EAAQ,MAAAA,CAAO;QAAEC;MAAG,CAAE;QACpB,MAAM9C,kBAAA,CAAmB8C,GAAA;MAC3B;qBAEFZ,IAAA,CAACvC,UAAA;MACCgE,WAAA,EAAa;MACbC,mBAAmB;MACnBC,QAAA,EAAU,MAAAA,CAAO;QAAEf;MAAG,CAAE;QACtBlD,eAAA;QACA,MAAMI,kBAAA,CAAmB8C,GAAA;MAC3B;;;AAIR","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAkD,iBAAiB,EAAE,MAAM,YAAY,CAAA;AASnG,OAAO,cAAc,CAAA;AAIrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyMpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAkD,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQnG,OAAO,cAAc,CAAA;AAKrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqNpD,CAAA"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
+ import { dequal } from 'dequal/lite';
5
6
  import { transformWhereQuery, validateWhereQuery } from 'payload/shared';
6
7
  import React, { useMemo } from 'react';
7
8
  import { useAuth } from '../../providers/Auth/index.js';
@@ -10,8 +11,8 @@ import { useTranslation } from '../../providers/Translation/index.js';
10
11
  import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
11
12
  import { Button } from '../Button/index.js';
12
13
  import { Condition } from './Condition/index.js';
13
- import { fieldTypeConditions, getValidFieldOperators } from './field-types.js';
14
14
  import './index.scss';
15
+ import { fieldTypeConditions, getValidFieldOperators } from './field-types.js';
15
16
  const baseClass = 'where-builder';
16
17
  /**
17
18
  * The WhereBuilder component is used to render the filter controls for a collection's list view.
@@ -99,11 +100,19 @@ export const WhereBuilder = props => {
99
100
  field: field_0.field,
100
101
  operator: incomingOperator
101
102
  });
103
+ // Skip if nothing changed
104
+ const existingValue = existingCondition[String(field_0.value)]?.[validOperator];
105
+ if (typeof existingValue !== 'undefined' && existingValue === value) {
106
+ return;
107
+ }
102
108
  const newRowCondition = {
103
109
  [String(field_0.value)]: {
104
110
  [validOperator]: value
105
111
  }
106
112
  };
113
+ if (dequal(existingCondition, newRowCondition)) {
114
+ return;
115
+ }
107
116
  const newConditions_0 = [...conditions];
108
117
  newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
109
118
  await handleWhereChange({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","transformWhereQuery","validateWhereQuery","React","useMemo","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","Button","Condition","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionPluralLabel","collectionSlug","fields","renderedFilters","resolvedFilterOptions","i18n","t","permissions","fieldPermissions","collections","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","String","undefined","push","updateCondition","operator","incomingOperator","existingCondition","validOperator","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldPath","Object","keys","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, collectionSlug, fields, renderedFilters, resolvedFilterOptions } =\n props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field.value) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n const newRowCondition = {\n [String(field.value)]: { [validOperator]: value },\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n await handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <p className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </p>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","dequal","transformWhereQuery","validateWhereQuery","React","useMemo","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","Button","Condition","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionPluralLabel","collectionSlug","fields","renderedFilters","resolvedFilterOptions","i18n","t","permissions","fieldPermissions","collections","reducedFields","handleWhereChange","query","conditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","String","undefined","push","updateCondition","operator","incomingOperator","existingCondition","validOperator","existingValue","newRowCondition","removeCondition","length","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldPath","Object","keys","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { dequal } from 'dequal/lite'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, RemoveCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, collectionSlug, fields, renderedFilters, resolvedFilterOptions } =\n props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields,\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const { handleWhereChange, query } = useListQuery()\n\n const conditions = useMemo(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n }, [query.where])\n\n const addCondition: AddCondition = React.useCallback(\n async ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.value)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n async ({ andIndex, field, operator: incomingOperator, orIndex, value }) => {\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field.value) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.value)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n const newRowCondition = {\n [String(field.value)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n await handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n async ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n await handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <p className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </p>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={async () => {\n if (reducedFields.length > 0) {\n await addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}