{"version":3,"file":"index.js","names":["React","useMemo","SelectInput","useAuth","useListQuery","useTranslation","reduceFieldsToOptions","ReactSelect","baseClass","supportedFieldTypes","GroupByBuilder","collectionSlug","fields","i18n","t","permissions","fieldPermissions","collections","reducedFields","query","refineListData","groupByFieldName","groupBy","replace","groupByField","find","field","value","_jsxs","className","_jsx","label","id","onClick","type","filterOption","option","inputValue","data","plainTextLabel","toLowerCase","includes","isClearable","isMulti","onChange","v","undefined","page","startsWith","options","filter","admin","disableGroupBy","name","path","readOnly"],"sources":["../../../src/elements/GroupByBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, Field, SanitizedCollectionConfig } from 'payload'\n\nimport './index.scss'\n\nimport React, { useMemo } from 'react'\n\nimport { SelectInput } from '../../fields/Select/Input.js'\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 { ReactSelect } from '../ReactSelect/index.js'\n\nexport type Props = {\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n fields: ClientField[]\n}\n\nconst baseClass = 'group-by-builder'\n\n/**\n * Note: Some fields are already omitted from the list of fields:\n * - fields with nested field, e.g. `tabs`, `groups`, etc.\n * - fields that don't affect data, i.e. `row`, `collapsible`, `ui`, etc.\n * So we don't technically need to omit them here, but do anyway.\n * But some remaining fields still need an additional check, e.g. `richText`, etc.\n */\nconst supportedFieldTypes: Field['type'][] = [\n 'text',\n 'textarea',\n 'number',\n 'select',\n 'relationship',\n 'date',\n 'checkbox',\n 'radio',\n 'email',\n 'number',\n 'upload',\n]\n\nexport const GroupByBuilder: React.FC = ({ collectionSlug, fields }) => {\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 [fields, fieldPermissions, i18n],\n )\n\n const { query, refineListData } = useListQuery()\n\n const groupByFieldName = query.groupBy?.replace(/^-/, '')\n\n const groupByField = reducedFields.find((field) => field.value === groupByFieldName)\n\n return (\n
\n
\n

\n {t('general:groupByLabel', {\n label: '',\n })}\n

\n {query.groupBy && (\n {\n await refineListData({\n groupBy: '',\n })\n }}\n type=\"button\"\n >\n {t('general:clear')}\n \n )}\n
\n
\n \n ((option?.data?.plainTextLabel as string) || option.label)\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n }\n id=\"group-by--field-select\"\n isClearable\n isMulti={false}\n onChange={async (v: { value: string } | null) => {\n const value = v === null ? undefined : v.value\n\n // value is being cleared\n if (v === null) {\n await refineListData({\n groupBy: '',\n page: 1,\n })\n }\n\n await refineListData({\n groupBy: value ? (query.groupBy?.startsWith('-') ? `-${value}` : value) : undefined,\n page: 1,\n })\n }}\n options={reducedFields.filter(\n (field) =>\n !field.field.admin.disableGroupBy &&\n field.value !== 'id' &&\n supportedFieldTypes.includes(field.field.type),\n )}\n value={{\n label: groupByField?.label || t('general:selectValue'),\n value: groupByFieldName || '',\n }}\n />\n {\n if (!groupByFieldName) {\n return\n }\n\n await refineListData({\n groupBy: value === 'asc' ? groupByFieldName : `-${groupByFieldName}`,\n page: 1,\n })\n }}\n options={[\n { label: t('general:ascending'), value: 'asc' },\n { label: t('general:descending'), value: 'desc' },\n ]}\n path=\"direction\"\n readOnly={!groupByFieldName}\n value={\n !query.groupBy\n ? 'asc'\n : typeof query.groupBy === 'string'\n ? `${query.groupBy.startsWith('-') ? 'desc' : 'asc'}`\n : ''\n }\n />\n
\n
\n )\n}\n"],"mappings":"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","ignoreList":[]}