@payloadcms/ui 3.0.0-beta.100 → 3.0.0-beta.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +5 -3
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.scss +4 -4
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +13 -18
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +304 -226
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/SearchFilter/index.d.ts.map +1 -1
- package/dist/elements/SearchFilter/index.js +30 -12
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +3 -6
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Upload/index.scss +3 -0
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +5 -8
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.js +19 -19
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/index.d.ts +11 -3
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts +8 -2
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +1 -1
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +15 -3
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts +9 -2
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts +6 -2
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts +9 -2
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts +10 -2
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts +8 -3
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +8 -2
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts +9 -2
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts +10 -3
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.d.ts +2 -2
- package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts +10 -2
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts +8 -2
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/RichText/index.d.ts +2 -2
- package/dist/fields/RichText/index.d.ts.map +1 -1
- package/dist/fields/RichText/index.js.map +1 -1
- package/dist/fields/Row/index.d.ts +9 -2
- package/dist/fields/Row/index.d.ts.map +1 -1
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Select/index.d.ts +10 -2
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts +6 -2
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/index.d.ts +10 -2
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts +11 -2
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasMany/index.js +18 -11
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/HasOne/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasOne/index.js +8 -1
- package/dist/fields/Upload/HasOne/index.js.map +1 -1
- package/dist/fields/Upload/index.d.ts +3 -3
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/Upload/index.scss +3 -0
- package/dist/hooks/useThrottledEffect.d.ts +7 -0
- package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
- package/dist/hooks/useThrottledEffect.js +7 -0
- package/dist/hooks/useThrottledEffect.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts +6 -0
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +26 -18
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +9 -4
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","getTranslation","React","useCallback","useEffect","useReducer","useState","SelectMany","FieldLabel","usePayloadAPI","XIcon","useAuth","useConfig","RenderComponent","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","t0","$","collectionSlugs","customHeader","drawerSlug","enableRowSelections","filterOptions","onBulkSelect","onSelect","selectedCollection","i18n","t","permissions","setPreference","closeModal","isModalOpen","limit","setLimit","sort","setSort","page","setPage","setWhere","search","setSearch","config","t1","collections","routes","t2","serverURL","api","t3","t4","t5","slug","includes","filter","enabledCollectionConfigs","find","slug_0","selectedCollectionConfig","setSelectedCollectionConfig","List","admin","components","views","list","Component","label","labels","singular","value","undefined","selectedOption","setSelectedOption","t6","_temp","t7","selectedConfig","t8","slug_1","preferenceKey","t9","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t10","documentDrawerSlug","t11","t12","Array","isArray","t13","slug_2","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","_temp2","initialParams","depth","t14","t15","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","t16","slug_3","t17","versions","listSearchableFields","useAsTitle","params","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","drafts","draft","t18","t19","newPreferences","t20","t21","doc","docID","id","onCreateNew","Symbol","for","_jsx","t22","plural","t23","className","children","t24","t25","description","Description","t26","t27","rowColl","rowData","beforeActions","onClick","collectionConfig","disableBulkDelete","disableBulkEdit","Header","_jsxs","type","field","onChange","options","coll","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","cellProps","link","mappedComponent","onSave","state"],"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { usePayloadAPI } from '../../hooks/usePayloadAPI.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { RenderComponent } from '../../providers/Config/RenderComponent.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { type Option, ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n enableRowSelections,\n filterOptions,\n onBulkSelect,\n onSelect,\n selectedCollection,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const List = selectedCollectionConfig?.admin?.components.views.list.Component\n\n const [selectedOption, setSelectedOption] = useState<Option | Option[]>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))\n\n useEffect(() => {\n // setFields(formatFields(selectedCollectionConfig))\n }, [selectedCollectionConfig])\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferenceKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption && !Array.isArray(selectedOption)) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {\n initialParams: {\n depth: 0,\n },\n })\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n const params: {\n cacheBust?: number\n depth?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {\n depth: 0,\n }\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) {\n params.page = page\n }\n if (sort) {\n params.sort = sort\n }\n if (cacheBust) {\n params.cacheBust = cacheBust\n }\n if (copyOfWhere) {\n params.where = copyOfWhere\n }\n if (versions?.drafts) {\n params.draft = 'true'\n }\n\n setParams(params)\n }, [page, sort, where, search, cacheBust, filterOptions, selectedCollectionConfig, t, setParams])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n void setPreference(preferenceKey, newPreferences, true)\n }, [sort, limit, setPreference, preferenceKey])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n if (isLoadingList) {\n return <LoadingOverlay />\n }\n\n return (\n <ListInfoProvider\n beforeActions={\n enableRowSelections ? [<SelectMany key=\"select-many\" onClick={onBulkSelect} />] : undefined\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n disableBulkDelete\n disableBulkEdit\n hasCreatePermission={hasCreatePermission}\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n {(selectedCollectionConfig?.admin?.description ||\n selectedCollectionConfig?.admin?.components?.Description) && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription\n Description={selectedCollectionConfig.admin?.components?.Description}\n description={selectedCollectionConfig.admin?.description}\n />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel field={null} label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n preferenceKey={preferenceKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n enableRowSelections={enableRowSelections}\n preferenceKey={preferenceKey}\n >\n <RenderComponent mappedComponent={List} />\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","getTranslation","React","useCallback","useEffect","useReducer","useRef","useState","SelectMany","FieldLabel","usePayloadAPI","useThrottledEffect","XIcon","useAuth","useConfig","RenderComponent","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","t0","$","collectionSlugs","customHeader","drawerSlug","enableRowSelections","filterOptions","onBulkSelect","onSelect","selectedCollection","i18n","t","permissions","getPreference","setPreference","closeModal","isModalOpen","limit","setLimit","previousLimit","sort","setSort","page","setPage","setWhere","search","setSearch","showLoadingOverlay","setShowLoadingOverlay","hasInitialised","params","config","t1","collections","routes","t2","serverURL","api","t3","t4","t5","slug","includes","filter","enabledCollectionConfigs","find","slug_0","selectedCollectionConfig","setSelectedCollectionConfig","List","admin","components","views","list","Component","label","labels","singular","value","undefined","selectedOption","setSelectedOption","t6","selectedConfig","t7","slug_1","preferencesKey","t8","collectionSlug","DocumentDrawer","DocumentDrawerToggler","t9","documentDrawerSlug","t10","t11","Array","isArray","t12","slug_2","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","_temp","t13","initialParams","depth","t14","t15","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","t16","slug_3","t17","versions","listSearchableFields","useAsTitle","params_0","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","current","drafts","draft","t18","t19","newPreferences","t20","t21","getInitialPref","existingPreferences","t22","t23","t24","t25","t26","t27","t28","t29","doc","docID","id","onCreateNew","_jsx","t30","plural","t31","className","children","t32","t33","description","Description","t34","t35","rowColl","rowData","_jsxs","_Fragment","beforeActions","onClick","collectionConfig","disableBulkDelete","disableBulkEdit","Header","type","field","onChange","options","coll","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","preferenceKey","cellProps","link","mappedComponent","onSave","state"],"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { SelectMany } from '../../elements/SelectMany/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { usePayloadAPI } from '../../hooks/usePayloadAPI.js'\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { RenderComponent } from '../../providers/Config/RenderComponent.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { type Option, ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n enableRowSelections,\n filterOptions,\n onBulkSelect,\n onSelect,\n selectedCollection,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { getPreference, setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n // Track the page limit so we can reset the page number when it changes\n const previousLimit = useRef<number>(limit || null)\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n const [showLoadingOverlay, setShowLoadingOverlay] = useState<boolean>(true)\n const hasInitialised = useRef(false)\n\n const params = {\n limit,\n page,\n search,\n sort,\n where,\n }\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const List = selectedCollectionConfig?.admin?.components.views.list.Component\n\n const [selectedOption, setSelectedOption] = useState<Option | Option[]>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferencesKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption && !Array.isArray(selectedOption)) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {\n initialParams: {\n depth: 0,\n },\n })\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n\n const params: {\n cacheBust?: number\n depth?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {\n depth: 0,\n }\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) {\n params.page = page\n }\n if (sort) {\n params.sort = sort\n }\n if (cacheBust) {\n params.cacheBust = cacheBust\n }\n if (limit) {\n params.limit = limit\n\n if (limit !== previousLimit.current) {\n previousLimit.current = limit\n\n // Reset page if limit changes\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setPage(1)\n }\n }\n if (copyOfWhere) {\n params.where = copyOfWhere\n }\n if (versions?.drafts) {\n params.draft = 'true'\n }\n\n setParams(params)\n }, [\n page,\n sort,\n where,\n search,\n limit,\n cacheBust,\n filterOptions,\n selectedCollectionConfig,\n t,\n setParams,\n ])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n if (limit || sort) {\n void setPreference(preferencesKey, newPreferences, true)\n }\n }, [sort, limit, setPreference, preferencesKey])\n\n // Get existing preferences if they exist\n useEffect(() => {\n if (preferencesKey && !limit) {\n const getInitialPref = async () => {\n const existingPreferences = await getPreference<{ limit?: number }>(preferencesKey)\n\n if (existingPreferences?.limit) {\n setLimit(existingPreferences?.limit)\n }\n }\n void getInitialPref()\n }\n }, [getPreference, limit, preferencesKey])\n\n useThrottledEffect(\n () => {\n if (isLoadingList) {\n setShowLoadingOverlay(true)\n }\n },\n 1750,\n [isLoadingList, setShowLoadingOverlay],\n )\n\n useEffect(() => {\n if (isOpen) {\n hasInitialised.current = true\n } else {\n hasInitialised.current = false\n }\n }, [isOpen])\n\n useEffect(() => {\n if (!isLoadingList && showLoadingOverlay) {\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setShowLoadingOverlay(false)\n }\n }, [isLoadingList, showLoadingOverlay])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n return (\n <>\n {showLoadingOverlay && <LoadingOverlay />}\n <ListInfoProvider\n beforeActions={\n enableRowSelections\n ? [<SelectMany key=\"select-many\" onClick={onBulkSelect} />]\n : undefined\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n disableBulkDelete\n disableBulkEdit\n hasCreatePermission={hasCreatePermission}\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n {(selectedCollectionConfig?.admin?.description ||\n selectedCollectionConfig?.admin?.components?.Description) && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription\n Description={selectedCollectionConfig.admin?.components?.Description}\n description={selectedCollectionConfig.admin?.description}\n />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel field={null} label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n // @ts-expect-error todo: fix types\n params={params}\n preferenceKey={preferencesKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n enableRowSelections={enableRowSelections}\n preferenceKey={preferencesKey}\n >\n <RenderComponent mappedComponent={List} />\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SearchFilter/index.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SearchFilter/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,aAAa,CAAC,EAAE,QAAQ,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAKtC,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyDpD,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
import React, { useEffect, useRef } from 'react';
|
|
4
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { usePathname } from 'next/navigation.js';
|
|
5
6
|
import { useDebounce } from '../../hooks/useDebounce.js';
|
|
6
7
|
import './index.scss';
|
|
7
8
|
const baseClass = 'search-filter';
|
|
@@ -9,32 +10,49 @@ export const SearchFilter = props => {
|
|
|
9
10
|
const {
|
|
10
11
|
handleChange,
|
|
11
12
|
initialParams,
|
|
12
|
-
label
|
|
13
|
-
setValue,
|
|
14
|
-
value
|
|
13
|
+
label
|
|
15
14
|
} = props;
|
|
16
|
-
const
|
|
17
|
-
const
|
|
15
|
+
const pathname = usePathname();
|
|
16
|
+
const [search, setSearch] = useState(typeof initialParams?.search === 'string' ? initialParams?.search : undefined);
|
|
17
|
+
/**
|
|
18
|
+
* Tracks whether the state should be updated based on the search value.
|
|
19
|
+
* If the value is updated from the URL, we don't want to update the state as it causes additional renders.
|
|
20
|
+
*/
|
|
21
|
+
const shouldUpdateState = useRef(true);
|
|
22
|
+
/**
|
|
23
|
+
* Tracks the previous search value to compare with the current debounced search value.
|
|
24
|
+
*/
|
|
25
|
+
const previousSearch = useRef(typeof initialParams?.search === 'string' ? initialParams?.search : undefined);
|
|
26
|
+
const debouncedSearch = useDebounce(search, 300);
|
|
18
27
|
useEffect(() => {
|
|
19
|
-
if (
|
|
28
|
+
if (initialParams?.search !== previousSearch.current) {
|
|
29
|
+
shouldUpdateState.current = false;
|
|
30
|
+
// eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
|
|
31
|
+
setSearch(initialParams?.search);
|
|
32
|
+
previousSearch.current = initialParams?.search;
|
|
33
|
+
}
|
|
34
|
+
}, [initialParams?.search, pathname]);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (debouncedSearch !== previousSearch.current && shouldUpdateState.current) {
|
|
20
37
|
if (handleChange) {
|
|
21
38
|
handleChange(debouncedSearch);
|
|
22
39
|
}
|
|
23
40
|
previousSearch.current = debouncedSearch;
|
|
24
41
|
}
|
|
25
|
-
}, [debouncedSearch,
|
|
26
|
-
// Cleans up the search input when the component is unmounted
|
|
27
|
-
useEffect(() => () => setValue(''), []);
|
|
42
|
+
}, [debouncedSearch, handleChange]);
|
|
28
43
|
return /*#__PURE__*/_jsx("div", {
|
|
29
44
|
className: baseClass,
|
|
30
45
|
children: /*#__PURE__*/_jsx("input", {
|
|
31
46
|
"aria-label": label,
|
|
32
47
|
className: `${baseClass}__input`,
|
|
33
48
|
id: "search-filter-input",
|
|
34
|
-
onChange: e =>
|
|
49
|
+
onChange: e => {
|
|
50
|
+
shouldUpdateState.current = true;
|
|
51
|
+
setSearch(e.target.value);
|
|
52
|
+
},
|
|
35
53
|
placeholder: label,
|
|
36
54
|
type: "text",
|
|
37
|
-
value:
|
|
55
|
+
value: search || ''
|
|
38
56
|
})
|
|
39
57
|
});
|
|
40
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useEffect","useRef","useDebounce","baseClass","SearchFilter","props","handleChange","initialParams","label","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useEffect","useRef","useState","usePathname","useDebounce","baseClass","SearchFilter","props","handleChange","initialParams","label","pathname","search","setSearch","undefined","shouldUpdateState","previousSearch","debouncedSearch","current","_jsx","className","id","onChange","e","target","value","placeholder","type"],"sources":["../../../src/elements/SearchFilter/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef, useState } from 'react'\n\nexport type SearchFilterProps = {\n fieldName?: string\n handleChange?: (search: string) => void\n initialParams?: ParsedQs\n label: string\n setValue?: (arg: string) => void\n value?: string\n}\n\nimport type { ParsedQs } from 'qs-esm'\n\nimport { usePathname } from 'next/navigation.js'\n\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport './index.scss'\n\nconst baseClass = 'search-filter'\n\nexport const SearchFilter: React.FC<SearchFilterProps> = (props) => {\n const { handleChange, initialParams, label } = props\n const pathname = usePathname()\n const [search, setSearch] = useState(\n typeof initialParams?.search === 'string' ? initialParams?.search : undefined,\n )\n\n /**\n * Tracks whether the state should be updated based on the search value.\n * If the value is updated from the URL, we don't want to update the state as it causes additional renders.\n */\n const shouldUpdateState = useRef(true)\n\n /**\n * Tracks the previous search value to compare with the current debounced search value.\n */\n const previousSearch = useRef(\n typeof initialParams?.search === 'string' ? initialParams?.search : undefined,\n )\n\n const debouncedSearch = useDebounce(search, 300)\n\n useEffect(() => {\n if (initialParams?.search !== previousSearch.current) {\n shouldUpdateState.current = false\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setSearch(initialParams?.search as string)\n previousSearch.current = initialParams?.search as string\n }\n }, [initialParams?.search, pathname])\n\n useEffect(() => {\n if (debouncedSearch !== previousSearch.current && shouldUpdateState.current) {\n if (handleChange) {\n handleChange(debouncedSearch)\n }\n\n previousSearch.current = debouncedSearch\n }\n }, [debouncedSearch, handleChange])\n\n return (\n <div className={baseClass}>\n <input\n aria-label={label}\n className={`${baseClass}__input`}\n id=\"search-filter-input\"\n onChange={(e) => {\n shouldUpdateState.current = true\n setSearch(e.target.value)\n }}\n placeholder={label}\n type=\"text\"\n value={search || ''}\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,IAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAanD,SAASC,WAAW,QAAQ;AAE5B,SAASC,WAAW,QAAQ;AAC5B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,YAAA,GAA6CC,KAAA;EACxD,MAAM;IAAEC,YAAY;IAAEC,aAAa;IAAEC;EAAK,CAAE,GAAGH,KAAA;EAC/C,MAAMI,QAAA,GAAWR,WAAA;EACjB,MAAM,CAACS,MAAA,EAAQC,SAAA,CAAU,GAAGX,QAAA,CAC1B,OAAOO,aAAA,EAAeG,MAAA,KAAW,WAAWH,aAAA,EAAeG,MAAA,GAASE,SAAA;EAGtE;;;;EAIA,MAAMC,iBAAA,GAAoBd,MAAA,CAAO;EAEjC;;;EAGA,MAAMe,cAAA,GAAiBf,MAAA,CACrB,OAAOQ,aAAA,EAAeG,MAAA,KAAW,WAAWH,aAAA,EAAeG,MAAA,GAASE,SAAA;EAGtE,MAAMG,eAAA,GAAkBb,WAAA,CAAYQ,MAAA,EAAQ;EAE5CZ,SAAA,CAAU;IACR,IAAIS,aAAA,EAAeG,MAAA,KAAWI,cAAA,CAAeE,OAAO,EAAE;MACpDH,iBAAA,CAAkBG,OAAO,GAAG;MAC5B;MACAL,SAAA,CAAUJ,aAAA,EAAeG,MAAA;MACzBI,cAAA,CAAeE,OAAO,GAAGT,aAAA,EAAeG,MAAA;IAC1C;EACF,GAAG,CAACH,aAAA,EAAeG,MAAA,EAAQD,QAAA,CAAS;EAEpCX,SAAA,CAAU;IACR,IAAIiB,eAAA,KAAoBD,cAAA,CAAeE,OAAO,IAAIH,iBAAA,CAAkBG,OAAO,EAAE;MAC3E,IAAIV,YAAA,EAAc;QAChBA,YAAA,CAAaS,eAAA;MACf;MAEAD,cAAA,CAAeE,OAAO,GAAGD,eAAA;IAC3B;EACF,GAAG,CAACA,eAAA,EAAiBT,YAAA,CAAa;EAElC,oBACEW,IAAA,CAAC;IAAIC,SAAA,EAAWf,SAAA;cACd,aAAAc,IAAA,CAAC;MACC,cAAYT,KAAA;MACZU,SAAA,EAAW,GAAGf,SAAA,SAAkB;MAChCgB,EAAA,EAAG;MACHC,QAAA,EAAWC,CAAA;QACTR,iBAAA,CAAkBG,OAAO,GAAG;QAC5BL,SAAA,CAAUU,CAAA,CAAEC,MAAM,CAACC,KAAK;MAC1B;MACAC,WAAA,EAAahB,KAAA;MACbiB,IAAA,EAAK;MACLF,KAAA,EAAOb,MAAA,IAAU;;;AAIzB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortColumn/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortColumn/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,CAAA;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmDhD,CAAA"}
|
|
@@ -5,7 +5,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import { ChevronIcon } from '../../icons/Chevron/index.js';
|
|
7
7
|
import { useListQuery } from '../../providers/ListQuery/index.js';
|
|
8
|
-
import { useSearchParams } from '../../providers/SearchParams/index.js';
|
|
9
8
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
10
9
|
import './index.scss';
|
|
11
10
|
const baseClass = 'sort-column';
|
|
@@ -19,17 +18,15 @@ export const SortColumn = props => {
|
|
|
19
18
|
} = props;
|
|
20
19
|
const disable = t0 === undefined ? false : t0;
|
|
21
20
|
const {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const {
|
|
25
|
-
handleSortChange
|
|
21
|
+
handleSortChange,
|
|
22
|
+
params
|
|
26
23
|
} = useListQuery();
|
|
27
24
|
const {
|
|
28
25
|
t
|
|
29
26
|
} = useTranslation();
|
|
30
27
|
const {
|
|
31
28
|
sort
|
|
32
|
-
} =
|
|
29
|
+
} = params;
|
|
33
30
|
const desc = `-${name}`;
|
|
34
31
|
const asc = name;
|
|
35
32
|
let ascClasses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","React","ChevronIcon","useListQuery","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","ChevronIcon","useListQuery","useTranslation","baseClass","SortColumn","props","$","name","disable","t0","Label","label","undefined","handleSortChange","params","t","sort","desc","asc","ascClasses","push","descClasses","t1","_jsxs","className","children","_jsx","direction","filter","Boolean","join","onClick","type"],"sources":["../../../src/elements/SortColumn/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldBase } from 'payload'\n\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nexport type SortColumnProps = {\n readonly disable?: boolean\n readonly Label: React.ReactNode\n readonly label?: FieldBase['label']\n readonly name: string\n}\n\nconst baseClass = 'sort-column'\n\nexport const SortColumn: React.FC<SortColumnProps> = (props) => {\n const { name, disable = false, Label, label } = props\n const { handleSortChange, params } = useListQuery()\n const { t } = useTranslation()\n\n const { sort } = params\n\n const desc = `-${name}`\n const asc = name\n\n const ascClasses = [`${baseClass}__asc`]\n if (sort === asc) {\n ascClasses.push(`${baseClass}--active`)\n }\n\n const descClasses = [`${baseClass}__desc`]\n if (sort === desc) {\n descClasses.push(`${baseClass}--active`)\n }\n\n return (\n <div className={baseClass}>\n <span className={`${baseClass}__label`}>{Label}</span>\n {!disable && (\n <div className={`${baseClass}__buttons`}>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:ascending'),\n label,\n })}\n className={[...ascClasses, `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => void handleSortChange(asc)}\n type=\"button\"\n >\n <ChevronIcon direction=\"up\" />\n </button>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:descending'),\n label,\n })}\n className={[...descClasses, `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => void handleSortChange(desc)}\n type=\"button\"\n >\n <ChevronIcon />\n </button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AASP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,UAAA,GAAwCC,KAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EACnD;IAAAS,IAAA;IAAAC,OAAA,EAAAC,EAAA;IAAAC,KAAA;IAAAC;EAAA,IAAgDN,KAAA;EAAlC,MAAAG,OAAA,GAAAC,EAAe,KAAAG,SAAA,WAAfH,EAAe;EAC7B;IAAAI,gBAAA;IAAAC;EAAA,IAAqCb,YAAA;EACrC;IAAAc;EAAA,IAAcb,cAAA;EAEd;IAAAc;EAAA,IAAiBF,MAAA;EAEjB,MAAAG,IAAA,GAAa,IAAIV,IAAA,EAAM;EACvB,MAAAW,GAAA,GAAYX,IAAA;EAAA,IAAAY,UAAA;EAAA,IAAAb,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAY,GAAA;IAEZC,UAAA,IAAoB,GAAAhB,SAAA,OAAmB;IAAC,IACpCa,IAAA,KAASE,GAAA;MACXC,UAAA,CAAAC,IAAA,CAAgB,GAAAjB,SAAA,UAAsB;IAAA;IAAAG,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAY,GAAA;IAAAZ,CAAA,MAAAa,UAAA;EAAA;IAAAA,UAAA,GAAAb,CAAA;EAAA;EAAA,IAAAe,WAAA;EAAA,IAAAf,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAW,IAAA;IAGxCI,WAAA,IAAqB,GAAAlB,SAAA,QAAoB;IAAC,IACtCa,IAAA,KAASC,IAAA;MACXI,WAAA,CAAAD,IAAA,CAAiB,GAAAjB,SAAA,UAAsB;IAAA;IAAAG,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAW,IAAA;IAAAX,CAAA,MAAAe,WAAA;EAAA;IAAAA,WAAA,GAAAf,CAAA;EAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAhB,CAAA,QAAAI,KAAA,IAAAJ,CAAA,QAAAE,OAAA,IAAAF,CAAA,QAAAS,CAAA,IAAAT,CAAA,QAAAK,KAAA,IAAAL,CAAA,SAAAa,UAAA,IAAAb,CAAA,SAAAO,gBAAA,IAAAP,CAAA,SAAAY,GAAA,IAAAZ,CAAA,SAAAe,WAAA,IAAAf,CAAA,SAAAW,IAAA;IAIvCK,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAArB,SAAA;MAAAsB,QAAA,GACCC,IAAA,CAAC;QAAAF,SAAA,EAAgB,GAAArB,SAAA,SAAqB;QAAAsB,QAAA,EAAGf;MAAA,C,GACxC,CAACF,OAAA,IACAe,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAArB,SAAA,WAAuB;QAAAsB,QAAA,GACrCC,IAAA,CAAC;UAAA,cACaX,CAAA,CAAE;YAAAY,SAAA,EACDZ,CAAA,CAAE;YAAAJ;UAAA,CAEf;UAAAa,SAAA,EACW,IAAIL,UAAA,EAAY,GAAAhB,SAAA,UAAsB,EAAAyB,MAAA,CAAAC,OAAS,EAAAC,IAAA,CAAc;UAAAC,OAAA,EAAAA,CAAA,UACpDlB,gBAAA,CAAiBK,GAAA;UAAAc,IAAA,EAChC;UAAAP,QAAA,EAELC,IAAA,CAAA1B,WAAA;YAAA2B,SAAA,EAAuB;UAAA,C;YAEzBD,IAAA,CAAC;UAAA,cACaX,CAAA,CAAE;YAAAY,SAAA,EACDZ,CAAA,CAAE;YAAAJ;UAAA,CAEf;UAAAa,SAAA,EACW,IAAIH,WAAA,EAAa,GAAAlB,SAAA,UAAsB,EAAAyB,MAAA,CAAAC,OAAS,EAAAC,IAAA,CAAc;UAAAC,OAAA,EAAAA,CAAA,UACrDlB,gBAAA,CAAiBI,IAAA;UAAAe,IAAA,EAChC;UAAAP,QAAA,EAELC,IAAA,CAAA1B,WAAA,IAAC;QAAA,C;;;;;;;;;;;;;;;;SAxBTsB,E;CA8BJ","ignoreList":[]}
|
|
@@ -91,6 +91,8 @@
|
|
|
91
91
|
|
|
92
92
|
&__dropzoneContent {
|
|
93
93
|
display: flex;
|
|
94
|
+
flex-wrap: wrap;
|
|
95
|
+
gap: base(0.4);
|
|
94
96
|
justify-content: space-between;
|
|
95
97
|
width: 100%;
|
|
96
98
|
}
|
|
@@ -106,6 +108,7 @@
|
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
&__dragAndDropText {
|
|
111
|
+
flex-shrink: 0;
|
|
109
112
|
margin: 0;
|
|
110
113
|
text-transform: lowercase;
|
|
111
114
|
align-self: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAMnD,OAAO,cAAc,CAAA;AAOrB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8NpD,CAAA"}
|
|
@@ -5,7 +5,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
6
|
import React, { useEffect, useState } from 'react';
|
|
7
7
|
import { useListQuery } from '../../providers/ListQuery/index.js';
|
|
8
|
-
import { useSearchParams } from '../../providers/SearchParams/index.js';
|
|
9
8
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
10
9
|
import { Button } from '../Button/index.js';
|
|
11
10
|
import { Condition } from './Condition/index.js';
|
|
@@ -61,16 +60,14 @@ export const WhereBuilder = props => {
|
|
|
61
60
|
}
|
|
62
61
|
useEffect(t1, t2);
|
|
63
62
|
const {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const {
|
|
67
|
-
handleWhereChange
|
|
63
|
+
handleWhereChange,
|
|
64
|
+
params
|
|
68
65
|
} = useListQuery();
|
|
69
66
|
const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false);
|
|
70
67
|
let t3;
|
|
71
|
-
if ($[7] !==
|
|
68
|
+
if ($[7] !== params.where) {
|
|
72
69
|
t3 = () => {
|
|
73
|
-
const whereFromSearch =
|
|
70
|
+
const whereFromSearch = params.where;
|
|
74
71
|
if (whereFromSearch) {
|
|
75
72
|
if (validateWhereQuery(whereFromSearch)) {
|
|
76
73
|
return whereFromSearch.or;
|
|
@@ -83,7 +80,7 @@ export const WhereBuilder = props => {
|
|
|
83
80
|
}
|
|
84
81
|
return [];
|
|
85
82
|
};
|
|
86
|
-
$[7] =
|
|
83
|
+
$[7] = params.where;
|
|
87
84
|
$[8] = t3;
|
|
88
85
|
} else {
|
|
89
86
|
t3 = $[8];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useState","useListQuery","useSearchParams","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","$","collectionPluralLabel","fields","i18n","t","t0","reducedFields","setReducedColumns","t1","t2","searchParams","handleWhereChange","shouldUpdateQuery","setShouldUpdateQuery","t3","where","whereFromSearch","or","transformedWhere","console","warn","JSON","stringify","conditions","setConditions","t4","t5","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","addCondition","t6","andIndex_0","fieldName_0","operator","orIndex_0","value","valueArg","existingRowCondition","newRowCondition","newConditions_0","undefined","includes","updateCondition","t7","andIndex_1","orIndex_1","newConditions_1","length","removeCondition","t8","handleChange","t9","_jsxs","className","children","Fragment","_jsx","label","map","orIndex_2","compoundOrKey","Array","isArray","_","andIndex_2","initialFieldName","Object","keys","initialOperator","initialValue","buttonStyle","icon","iconPosition","iconStyle","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields } = props\n const { i18n, t } = useTranslation()\n\n const [reducedFields, setReducedColumns] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n setReducedColumns(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { searchParams } = useSearchParams()\n const { handleWhereChange } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = searchParams.where\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n setConditions(newConditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || ''\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n fields={reducedFields}\n initialValue={initialValue}\n operator={initialOperator}\n orIndex={orIndex}\n removeCondition={removeCondition}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useState","useListQuery","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","$","collectionPluralLabel","fields","i18n","t","t0","reducedFields","setReducedColumns","t1","t2","handleWhereChange","params","shouldUpdateQuery","setShouldUpdateQuery","t3","where","whereFromSearch","or","transformedWhere","console","warn","JSON","stringify","conditions","setConditions","t4","t5","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","addCondition","t6","andIndex_0","fieldName_0","operator","orIndex_0","value","valueArg","existingRowCondition","newRowCondition","newConditions_0","undefined","includes","updateCondition","t7","andIndex_1","orIndex_1","newConditions_1","length","removeCondition","t8","handleChange","t9","_jsxs","className","children","Fragment","_jsx","label","map","orIndex_2","compoundOrKey","Array","isArray","_","andIndex_2","initialFieldName","Object","keys","initialOperator","initialValue","buttonStyle","icon","iconPosition","iconStyle","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields } = props\n const { i18n, t } = useTranslation()\n\n const [reducedFields, setReducedColumns] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setReducedColumns(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { handleWhereChange, params } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = params.where\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n setConditions(newConditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || ''\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n fields={reducedFields}\n initialValue={initialValue}\n operator={initialOperator}\n orIndex={orIndex}\n removeCondition={removeCondition}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|