@payloadcms/ui 3.0.0-beta.100 → 3.0.0-beta.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FileSidebar/index.js +5 -3
  3. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FileSidebar/index.scss +4 -4
  5. package/dist/elements/ListControls/index.d.ts.map +1 -1
  6. package/dist/elements/ListControls/index.js +13 -18
  7. package/dist/elements/ListControls/index.js.map +1 -1
  8. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  9. package/dist/elements/ListDrawer/DrawerContent.js +304 -226
  10. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  11. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  12. package/dist/elements/SearchFilter/index.js +30 -12
  13. package/dist/elements/SearchFilter/index.js.map +1 -1
  14. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  15. package/dist/elements/SortColumn/index.js +3 -6
  16. package/dist/elements/SortColumn/index.js.map +1 -1
  17. package/dist/elements/Upload/index.scss +3 -0
  18. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  19. package/dist/elements/WhereBuilder/index.js +5 -8
  20. package/dist/elements/WhereBuilder/index.js.map +1 -1
  21. package/dist/exports/client/index.js +19 -19
  22. package/dist/exports/client/index.js.map +3 -3
  23. package/dist/fields/Blocks/index.js +1 -1
  24. package/dist/fields/Blocks/index.js.map +1 -1
  25. package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
  26. package/dist/fields/Upload/HasMany/index.js +18 -11
  27. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  28. package/dist/fields/Upload/HasOne/index.d.ts.map +1 -1
  29. package/dist/fields/Upload/HasOne/index.js +8 -1
  30. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  31. package/dist/fields/Upload/index.scss +3 -0
  32. package/dist/hooks/useThrottledEffect.d.ts +7 -0
  33. package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
  34. package/dist/hooks/useThrottledEffect.js +7 -0
  35. package/dist/hooks/useThrottledEffect.js.map +1 -1
  36. package/dist/providers/ListQuery/index.d.ts +6 -0
  37. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  38. package/dist/providers/ListQuery/index.js +26 -18
  39. package/dist/providers/ListQuery/index.js.map +1 -1
  40. package/dist/providers/Selection/index.d.ts.map +1 -1
  41. package/dist/providers/Selection/index.js +9 -4
  42. package/dist/providers/Selection/index.js.map +1 -1
  43. package/dist/styles.css +1 -1
  44. package/package.json +5 -5
@@ -443,7 +443,7 @@ const BlocksFieldComponent = props => {
443
443
  } = row_0;
444
444
  const blockToRender = blocks.find(block => block.slug === blockType_0);
445
445
  if (blockToRender) {
446
- const rowErrorCount = errorPaths.filter(errorPath => errorPath.startsWith(`${path}.${i}`)).length;
446
+ const rowErrorCount = errorPaths.filter(errorPath => errorPath.startsWith(`${path}.${i}.`)).length;
447
447
  return _jsx(DraggableSortableItem, {
448
448
  disabled: disabled || !isSortable,
449
449
  id: row_0.id,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","useFieldProps","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","$","i18n","t","descriptionProps","errorProps","field","t0","forceRender","t1","labelProps","readOnly","readOnlyFromTopLevelProps","validate","name","_path","pathFromProps","admin","t2","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","t3","undefined","className","description","isSortable","t4","readOnlyFromAdmin","readOnlyFromProps","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","config","t5","localization","drawerSlug","submitted","plural","singular","t6","bb0","fallback","defaultLocale","editingDefaultLocale","t7","value","options","memoizedValidate","path","pathFromContext","t8","t9","hasRows","errorPaths","formInitializing","formProcessing","permissions","rows","t10","schemaPath","showError","valid","value_0","t11","disabled","t12","rowIndex","blockType","data","setTimeout","addRow","t13","rowIndex_0","type","duplicateRow","t14","rowIndex_1","removeRow","t15","moveFromIndex","moveToIndex","moveRow","t16","collapsed","collapsedIDs","updatedRows","toggleCollapseAll","t17","rowID","collapsed_0","collapsedIDs_0","updatedRows_0","setCollapse","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","t18","t19","filter","Boolean","t20","_jsx","CustomError","components","Error","t21","t22","count","withMessage","t23","_jsxs","join","id","replace","children","as","Label","Description","unstyled","onClick","fieldValue","ids","map","_temp","onDragEnd","t24","moveFromIndex_0","moveToIndex_0","row_0","i","blockType_0","row","blockToRender","find","block","slug","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","errorCount","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlockFieldProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: React.FC<BlockFieldProps> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n descriptionProps,\n errorProps,\n field,\n field: {\n name,\n _path: pathFromProps,\n admin: { className, description, isSortable = true, readOnly: readOnlyFromAdmin } = {},\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n labelProps,\n readOnly: readOnlyFromTopLevelProps,\n validate,\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n formInitializing,\n formProcessing,\n path,\n permissions,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const addRow = useCallback(\n async (rowIndex: number, blockType: string): Promise<void> => {\n await addFieldRow({\n data: { blockType },\n path,\n rowIndex,\n schemaPath: `${schemaPath}.${blockType}`,\n })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, setModified, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = disabled && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && (\n <FieldError\n CustomError={field?.admin?.components?.Error}\n field={field}\n path={path}\n {...(errorProps || {})}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <FieldLabel\n as=\"span\"\n field={field}\n Label={field?.admin?.components?.Description}\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n <FieldDescription\n Description={field?.admin?.components?.Description}\n description={description}\n field={field}\n {...(descriptionProps || {})}\n />\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType } = row\n const blockToRender = blocks.find((block) => block.slug === blockType)\n\n if (blockToRender) {\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}`),\n ).length\n return (\n <DraggableSortableItem disabled={disabled || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockToRender}\n blocks={blocks}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={disabled}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!disabled && !hasMaxRows && (\n <Fragment>\n <DrawerToggler className={`${baseClass}__drawer-toggler`} slug={drawerSlug}>\n <Button\n buttonStyle=\"icon-label\"\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","useFieldProps","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","$","i18n","t","descriptionProps","errorProps","field","t0","forceRender","t1","labelProps","readOnly","readOnlyFromTopLevelProps","validate","name","_path","pathFromProps","admin","t2","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","t3","undefined","className","description","isSortable","t4","readOnlyFromAdmin","readOnlyFromProps","indexPath","readOnlyFromContext","setDocFieldPreferences","addFieldRow","dispatchFields","setModified","code","locale","config","t5","localization","drawerSlug","submitted","plural","singular","t6","bb0","fallback","defaultLocale","editingDefaultLocale","t7","value","options","memoizedValidate","path","pathFromContext","t8","t9","hasRows","errorPaths","formInitializing","formProcessing","permissions","rows","t10","schemaPath","showError","valid","value_0","t11","disabled","t12","rowIndex","blockType","data","setTimeout","addRow","t13","rowIndex_0","type","duplicateRow","t14","rowIndex_1","removeRow","t15","moveFromIndex","moveToIndex","moveRow","t16","collapsed","collapsedIDs","updatedRows","toggleCollapseAll","t17","rowID","collapsed_0","collapsedIDs_0","updatedRows_0","setCollapse","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","t18","t19","filter","Boolean","t20","_jsx","CustomError","components","Error","t21","t22","count","withMessage","t23","_jsxs","join","id","replace","children","as","Label","Description","unstyled","onClick","fieldValue","ids","map","_temp","onDragEnd","t24","moveFromIndex_0","moveToIndex_0","row_0","i","blockType_0","row","blockToRender","find","block","slug","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","errorCount","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlockFieldProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { useFieldProps } from '../../forms/FieldPropsProvider/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: React.FC<BlockFieldProps> = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n descriptionProps,\n errorProps,\n field,\n field: {\n name,\n _path: pathFromProps,\n admin: { className, description, isSortable = true, readOnly: readOnlyFromAdmin } = {},\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n forceRender = false,\n labelProps,\n readOnly: readOnlyFromTopLevelProps,\n validate,\n } = props\n\n const readOnlyFromProps = readOnlyFromTopLevelProps || readOnlyFromAdmin\n\n const { indexPath, readOnly: readOnlyFromContext } = useFieldProps()\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, setModified } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale || 'en'\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const { path: pathFromContext } = useFieldProps()\n\n const {\n errorPaths,\n formInitializing,\n formProcessing,\n path,\n permissions,\n rows = [],\n schemaPath,\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n path: pathFromContext ?? pathFromProps ?? name,\n validate: memoizedValidate,\n })\n\n const disabled = readOnlyFromProps || readOnlyFromContext || formProcessing || formInitializing\n\n const addRow = useCallback(\n async (rowIndex: number, blockType: string): Promise<void> => {\n await addFieldRow({\n data: { blockType },\n path,\n rowIndex,\n schemaPath: `${schemaPath}.${blockType}`,\n })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, setModified, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({\n type: 'REMOVE_ROW',\n path,\n rowIndex,\n })\n\n setModified(true)\n },\n [path, dispatchFields, setModified],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n dispatchFields({ type: 'MOVE_ROW', moveFromIndex, moveToIndex, path })\n setModified(true)\n },\n [dispatchFields, path, setModified],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = disabled && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n >\n {showError && (\n <FieldError\n CustomError={field?.admin?.components?.Error}\n field={field}\n path={path}\n {...(errorProps || {})}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <FieldLabel\n as=\"span\"\n field={field}\n Label={field?.admin?.components?.Description}\n label={label}\n required={required}\n unstyled\n {...(labelProps || {})}\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n <FieldDescription\n Description={field?.admin?.components?.Description}\n description={description}\n field={field}\n {...(descriptionProps || {})}\n />\n </header>\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType } = row\n const blockToRender = blocks.find((block) => block.slug === blockType)\n\n if (blockToRender) {\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(`${path}.${i}.`),\n ).length\n return (\n <DraggableSortableItem disabled={disabled || !isSortable} id={row.id} key={row.id}>\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockToRender}\n blocks={blocks}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n forceRender={forceRender}\n hasMaxRows={hasMaxRows}\n indexPath={indexPath}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n path={path}\n permissions={permissions}\n readOnly={disabled}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!disabled && !hasMaxRows && (\n <Fragment>\n <DrawerToggler className={`${baseClass}__drawer-toggler`} slug={drawerSlug}>\n <Button\n buttonStyle=\"icon-label\"\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Upload/HasMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,UAAU,CAAA;KAClB,EAAE,CAAA;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,qBAyFlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Upload/HasMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,UAAU,CAAA;KAClB,EAAE,CAAA;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,KAAA,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,qBAkGlD"}
@@ -63,7 +63,7 @@ export function UploadComponentHasMany(props) {
63
63
  }
64
64
  const t3 = t2.join(" ");
65
65
  let t4;
66
- if ($[8] !== fileDocs || $[9] !== moveRow || $[10] !== isSortable || $[11] !== readonly || $[12] !== removeItem || $[13] !== serverURL || $[14] !== t3) {
66
+ if ($[8] !== fileDocs || $[9] !== moveRow || $[10] !== serverURL || $[11] !== isSortable || $[12] !== readonly || $[13] !== removeItem || $[14] !== t3) {
67
67
  let t5;
68
68
  if ($[16] !== moveRow) {
69
69
  t5 = t6 => {
@@ -79,13 +79,20 @@ export function UploadComponentHasMany(props) {
79
79
  t5 = $[17];
80
80
  }
81
81
  let t6;
82
- if ($[18] !== isSortable || $[19] !== readonly || $[20] !== removeItem || $[21] !== serverURL) {
82
+ if ($[18] !== serverURL || $[19] !== isSortable || $[20] !== readonly || $[21] !== removeItem) {
83
83
  t6 = (t7, index_0) => {
84
84
  const {
85
85
  relationTo,
86
86
  value: value_0
87
87
  } = t7;
88
88
  const id = String(value_0.id);
89
+ const url = value_0.thumbnailURL || value_0.url;
90
+ let src;
91
+ try {
92
+ src = new URL(url, serverURL).toString();
93
+ } catch {
94
+ src = `${serverURL}${url}`;
95
+ }
89
96
  return _jsx(DraggableSortableItem, {
90
97
  disabled: !isSortable,
91
98
  id,
@@ -114,7 +121,7 @@ export function UploadComponentHasMany(props) {
114
121
  id,
115
122
  mimeType: value_0?.mimeType,
116
123
  onRemove: () => removeItem(index_0),
117
- src: `${serverURL}${value_0.url}`,
124
+ src,
118
125
  withMeta: false,
119
126
  x: value_0?.width,
120
127
  y: value_0?.height
@@ -123,10 +130,10 @@ export function UploadComponentHasMany(props) {
123
130
  })
124
131
  }, id);
125
132
  };
126
- $[18] = isSortable;
127
- $[19] = readonly;
128
- $[20] = removeItem;
129
- $[21] = serverURL;
133
+ $[18] = serverURL;
134
+ $[19] = isSortable;
135
+ $[20] = readonly;
136
+ $[21] = removeItem;
130
137
  $[22] = t6;
131
138
  } else {
132
139
  t6 = $[22];
@@ -142,10 +149,10 @@ export function UploadComponentHasMany(props) {
142
149
  });
143
150
  $[8] = fileDocs;
144
151
  $[9] = moveRow;
145
- $[10] = isSortable;
146
- $[11] = readonly;
147
- $[12] = removeItem;
148
- $[13] = serverURL;
152
+ $[10] = serverURL;
153
+ $[11] = isSortable;
154
+ $[12] = readonly;
155
+ $[13] = removeItem;
149
156
  $[14] = t3;
150
157
  $[15] = t4;
151
158
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","DraggableSortableItem","DraggableSortable","DragHandleIcon","RelationshipContent","UploadCard","baseClass","UploadComponentHasMany","props","$","className","fileDocs","isSortable","onRemove","onReorder","readonly","serverURL","t0","moveFromIndex","moveToIndex","updatedArray","item","splice","moveRow","t1","index","updatedArray_0","length","removeItem","t2","filter","Boolean","t3","join","t4","t5","t6","moveFromIndex_0","moveToIndex_0","t7","index_0","relationTo","value","value_0","id","String","_jsx","disabled","children","draggableSortableItemProps","ref","setNodeRef","style","transform","transition","zIndex","isDragging","undefined","_jsxs","size","attributes","listeners","allowEdit","allowRemove","alt","filename","byteSize","filesize","collectionSlug","mimeType","src","url","withMeta","x","width","y","height","ids","map","_temp","onDragEnd"],"sources":["../../../../src/fields/Upload/HasMany/index.tsx"],"sourcesContent":["'use client'\nimport type { JsonObject } from 'payload'\n\nimport React from 'react'\n\nimport { DraggableSortableItem } from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../../elements/DraggableSortable/index.js'\nimport { DragHandleIcon } from '../../../icons/DragHandle/index.js'\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\n\nconst baseClass = 'upload upload--has-many'\n\nimport './index.scss'\n\ntype Props = {\n readonly className?: string\n readonly fileDocs: {\n relationTo: string\n value: JsonObject\n }[]\n readonly isSortable?: boolean\n readonly onRemove?: (value) => void\n readonly onReorder?: (value) => void\n readonly readonly?: boolean\n readonly serverURL: string\n}\nexport function UploadComponentHasMany(props: Props) {\n const { className, fileDocs, isSortable, onRemove, onReorder, readonly, serverURL } = props\n\n const moveRow = React.useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n if (moveFromIndex === moveToIndex) {\n return\n }\n\n const updatedArray = [...fileDocs]\n const [item] = updatedArray.splice(moveFromIndex, 1)\n\n updatedArray.splice(moveToIndex, 0, item)\n\n onReorder(updatedArray)\n },\n [fileDocs, onReorder],\n )\n\n const removeItem = React.useCallback(\n (index: number) => {\n const updatedArray = [...(fileDocs || [])]\n updatedArray.splice(index, 1)\n onRemove(updatedArray.length === 0 ? [] : updatedArray)\n },\n [fileDocs, onRemove],\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={fileDocs?.map(({ value }) => String(value.id))}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {fileDocs.map(({ relationTo, value }, index) => {\n const id = String(value.id)\n return (\n <DraggableSortableItem disabled={!isSortable} id={id} key={id}>\n {(draggableSortableItemProps) => (\n <div\n className={[\n `${baseClass}__dragItem`,\n draggableSortableItemProps && isSortable && `${baseClass}--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={draggableSortableItemProps.setNodeRef}\n style={{\n transform: draggableSortableItemProps.transform,\n transition: draggableSortableItemProps.transition,\n zIndex: draggableSortableItemProps.isDragging ? 1 : undefined,\n }}\n >\n <UploadCard size=\"small\">\n {isSortable && draggableSortableItemProps && (\n <div\n className={`${baseClass}__drag`}\n {...draggableSortableItemProps.attributes}\n {...draggableSortableItemProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={() => removeItem(index)}\n src={`${serverURL}${value.url}`}\n withMeta={false}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n </div>\n )}\n </DraggableSortableItem>\n )\n })}\n </DraggableSortable>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","DraggableSortableItem","DraggableSortable","DragHandleIcon","RelationshipContent","UploadCard","baseClass","UploadComponentHasMany","props","$","className","fileDocs","isSortable","onRemove","onReorder","readonly","serverURL","t0","moveFromIndex","moveToIndex","updatedArray","item","splice","moveRow","t1","index","updatedArray_0","length","removeItem","t2","filter","Boolean","t3","join","t4","t5","t6","moveFromIndex_0","moveToIndex_0","t7","index_0","relationTo","value","value_0","id","String","url","thumbnailURL","src","toString","_jsx","disabled","children","draggableSortableItemProps","ref","setNodeRef","style","transform","transition","zIndex","isDragging","undefined","_jsxs","size","attributes","listeners","allowEdit","allowRemove","alt","filename","byteSize","filesize","collectionSlug","mimeType","withMeta","x","width","y","height","ids","map","_temp","onDragEnd"],"sources":["../../../../src/fields/Upload/HasMany/index.tsx"],"sourcesContent":["'use client'\nimport type { JsonObject } from 'payload'\n\nimport React from 'react'\n\nimport { DraggableSortableItem } from '../../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../../elements/DraggableSortable/index.js'\nimport { DragHandleIcon } from '../../../icons/DragHandle/index.js'\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\n\nconst baseClass = 'upload upload--has-many'\n\nimport './index.scss'\n\ntype Props = {\n readonly className?: string\n readonly fileDocs: {\n relationTo: string\n value: JsonObject\n }[]\n readonly isSortable?: boolean\n readonly onRemove?: (value) => void\n readonly onReorder?: (value) => void\n readonly readonly?: boolean\n readonly serverURL: string\n}\nexport function UploadComponentHasMany(props: Props) {\n const { className, fileDocs, isSortable, onRemove, onReorder, readonly, serverURL } = props\n\n const moveRow = React.useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n if (moveFromIndex === moveToIndex) {\n return\n }\n\n const updatedArray = [...fileDocs]\n const [item] = updatedArray.splice(moveFromIndex, 1)\n\n updatedArray.splice(moveToIndex, 0, item)\n\n onReorder(updatedArray)\n },\n [fileDocs, onReorder],\n )\n\n const removeItem = React.useCallback(\n (index: number) => {\n const updatedArray = [...(fileDocs || [])]\n updatedArray.splice(index, 1)\n onRemove(updatedArray.length === 0 ? [] : updatedArray)\n },\n [fileDocs, onRemove],\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <DraggableSortable\n className={`${baseClass}__draggable-rows`}\n ids={fileDocs?.map(({ value }) => String(value.id))}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {fileDocs.map(({ relationTo, value }, index) => {\n const id = String(value.id)\n const url: string = value.thumbnailURL || value.url\n let src: string\n\n try {\n src = new URL(url, serverURL).toString()\n } catch {\n src = `${serverURL}${url}`\n }\n\n return (\n <DraggableSortableItem disabled={!isSortable} id={id} key={id}>\n {(draggableSortableItemProps) => (\n <div\n className={[\n `${baseClass}__dragItem`,\n draggableSortableItemProps && isSortable && `${baseClass}--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={draggableSortableItemProps.setNodeRef}\n style={{\n transform: draggableSortableItemProps.transform,\n transition: draggableSortableItemProps.transition,\n zIndex: draggableSortableItemProps.isDragging ? 1 : undefined,\n }}\n >\n <UploadCard size=\"small\">\n {isSortable && draggableSortableItemProps && (\n <div\n className={`${baseClass}__drag`}\n {...draggableSortableItemProps.attributes}\n {...draggableSortableItemProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={() => removeItem(index)}\n src={src}\n withMeta={false}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n </div>\n )}\n </DraggableSortableItem>\n )\n })}\n </DraggableSortable>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Upload/HasOne/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,UAAU,CAAA;KAClB,CAAA;IACD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,qBAuBjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/Upload/HasOne/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,UAAU,CAAA;KAClB,CAAA;IACD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,qBAgCjD"}
@@ -19,6 +19,13 @@ export function UploadComponentHasOne(props) {
19
19
  value
20
20
  } = fileDoc;
21
21
  const id = String(value.id);
22
+ const url = value.thumbnailURL || value.url;
23
+ let src;
24
+ try {
25
+ src = new URL(url, serverURL).toString();
26
+ } catch {
27
+ src = `${serverURL}${url}`;
28
+ }
22
29
  return /*#__PURE__*/_jsx(UploadCard, {
23
30
  className: [baseClass, className].filter(Boolean).join(' '),
24
31
  children: /*#__PURE__*/_jsx(RelationshipContent, {
@@ -31,7 +38,7 @@ export function UploadComponentHasOne(props) {
31
38
  id: id,
32
39
  mimeType: value?.mimeType,
33
40
  onRemove: onRemove,
34
- src: `${serverURL}${value.url}`,
41
+ src: src,
35
42
  x: value?.width,
36
43
  y: value?.height
37
44
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","RelationshipContent","UploadCard","baseClass","UploadComponentHasOne","props","className","fileDoc","onRemove","readonly","serverURL","relationTo","value","id","String","_jsx","filter","Boolean","join","allowEdit","allowRemove","alt","filename","byteSize","filesize","collectionSlug","mimeType","src","url","x","width","y","height"],"sources":["../../../../src/fields/Upload/HasOne/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport React from 'react'\n\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\nimport './index.scss'\n\nconst baseClass = 'upload upload--has-one'\n\ntype Props = {\n readonly className?: string\n readonly fileDoc: {\n relationTo: string\n value: JsonObject\n }\n readonly onRemove?: () => void\n readonly readonly?: boolean\n readonly serverURL: string\n}\n\nexport function UploadComponentHasOne(props: Props) {\n const { className, fileDoc, onRemove, readonly, serverURL } = props\n const { relationTo, value } = fileDoc\n const id = String(value.id)\n\n return (\n <UploadCard className={[baseClass, className].filter(Boolean).join(' ')}>\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={onRemove}\n src={`${serverURL}${value.url}`}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n )\n}\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,MAAW;AAElB,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAalB,OAAO,SAASC,sBAAsBC,KAAY;EAChD,MAAM;IAAEC,SAAS;IAAEC,OAAO;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAS,CAAE,GAAGL,KAAA;EAC9D,MAAM;IAAEM,UAAU;IAAEC;EAAK,CAAE,GAAGL,OAAA;EAC9B,MAAMM,EAAA,GAAKC,MAAA,CAAOF,KAAA,CAAMC,EAAE;EAE1B,oBACEE,IAAA,CAACb,UAAA;IAAWI,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACU,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;cACjE,aAAAH,IAAA,CAACd,mBAAA;MACCkB,SAAA,EAAW,CAACV,QAAA;MACZW,WAAA,EAAa,CAACX,QAAA;MACdY,GAAA,EAAMT,KAAA,EAAOS,GAAA,IAAOT,KAAA,EAAOU,QAAA;MAC3BC,QAAA,EAAUX,KAAA,CAAMY,QAAQ;MACxBC,cAAA,EAAgBd,UAAA;MAChBW,QAAA,EAAUV,KAAA,CAAMU,QAAQ;MACxBT,EAAA,EAAIA,EAAA;MACJa,QAAA,EAAUd,KAAA,EAAOc,QAAA;MACjBlB,QAAA,EAAUA,QAAA;MACVmB,GAAA,EAAK,GAAGjB,SAAA,GAAYE,KAAA,CAAMgB,GAAG,EAAE;MAC/BC,CAAA,EAAGjB,KAAA,EAAOkB,KAAA;MACVC,CAAA,EAAGnB,KAAA,EAAOoB;;;AAIlB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","RelationshipContent","UploadCard","baseClass","UploadComponentHasOne","props","className","fileDoc","onRemove","readonly","serverURL","relationTo","value","id","String","url","thumbnailURL","src","URL","toString","_jsx","filter","Boolean","join","allowEdit","allowRemove","alt","filename","byteSize","filesize","collectionSlug","mimeType","x","width","y","height"],"sources":["../../../../src/fields/Upload/HasOne/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport React from 'react'\n\nimport { RelationshipContent } from '../RelationshipContent/index.js'\nimport { UploadCard } from '../UploadCard/index.js'\nimport './index.scss'\n\nconst baseClass = 'upload upload--has-one'\n\ntype Props = {\n readonly className?: string\n readonly fileDoc: {\n relationTo: string\n value: JsonObject\n }\n readonly onRemove?: () => void\n readonly readonly?: boolean\n readonly serverURL: string\n}\n\nexport function UploadComponentHasOne(props: Props) {\n const { className, fileDoc, onRemove, readonly, serverURL } = props\n const { relationTo, value } = fileDoc\n const id = String(value.id)\n\n const url: string = value.thumbnailURL || value.url\n let src: string\n\n try {\n src = new URL(url, serverURL).toString()\n } catch {\n src = `${serverURL}${url}`\n }\n\n return (\n <UploadCard className={[baseClass, className].filter(Boolean).join(' ')}>\n <RelationshipContent\n allowEdit={!readonly}\n allowRemove={!readonly}\n alt={(value?.alt || value?.filename) as string}\n byteSize={value.filesize as number}\n collectionSlug={relationTo}\n filename={value.filename as string}\n id={id}\n mimeType={value?.mimeType as string}\n onRemove={onRemove}\n src={src}\n x={value?.width as number}\n y={value?.height as number}\n />\n </UploadCard>\n )\n}\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,MAAW;AAElB,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAalB,OAAO,SAASC,sBAAsBC,KAAY;EAChD,MAAM;IAAEC,SAAS;IAAEC,OAAO;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC;EAAS,CAAE,GAAGL,KAAA;EAC9D,MAAM;IAAEM,UAAU;IAAEC;EAAK,CAAE,GAAGL,OAAA;EAC9B,MAAMM,EAAA,GAAKC,MAAA,CAAOF,KAAA,CAAMC,EAAE;EAE1B,MAAME,GAAA,GAAcH,KAAA,CAAMI,YAAY,IAAIJ,KAAA,CAAMG,GAAG;EACnD,IAAIE,GAAA;EAEJ,IAAI;IACFA,GAAA,GAAM,IAAIC,GAAA,CAAIH,GAAA,EAAKL,SAAA,EAAWS,QAAQ;EACxC,EAAE,MAAM;IACNF,GAAA,GAAM,GAAGP,SAAA,GAAYK,GAAA,EAAK;EAC5B;EAEA,oBACEK,IAAA,CAAClB,UAAA;IAAWI,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACe,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;cACjE,aAAAH,IAAA,CAACnB,mBAAA;MACCuB,SAAA,EAAW,CAACf,QAAA;MACZgB,WAAA,EAAa,CAAChB,QAAA;MACdiB,GAAA,EAAMd,KAAA,EAAOc,GAAA,IAAOd,KAAA,EAAOe,QAAA;MAC3BC,QAAA,EAAUhB,KAAA,CAAMiB,QAAQ;MACxBC,cAAA,EAAgBnB,UAAA;MAChBgB,QAAA,EAAUf,KAAA,CAAMe,QAAQ;MACxBd,EAAA,EAAIA,EAAA;MACJkB,QAAA,EAAUnB,KAAA,EAAOmB,QAAA;MACjBvB,QAAA,EAAUA,QAAA;MACVS,GAAA,EAAKA,GAAA;MACLe,CAAA,EAAGpB,KAAA,EAAOqB,KAAA;MACVC,CAAA,EAAGtB,KAAA,EAAOuB;;;AAIlB","ignoreList":[]}
@@ -9,6 +9,8 @@
9
9
 
10
10
  &__dropzoneContent {
11
11
  display: flex;
12
+ flex-wrap: wrap;
13
+ gap: base(0.4);
12
14
  justify-content: space-between;
13
15
  width: 100%;
14
16
  }
@@ -34,6 +36,7 @@
34
36
  }
35
37
 
36
38
  &__dragAndDropText {
39
+ flex-shrink: 0;
37
40
  margin: 0;
38
41
  text-transform: lowercase;
39
42
  align-self: center;
@@ -1,5 +1,12 @@
1
1
  import type React from 'react';
2
2
  type useThrottledEffect = (callback: React.EffectCallback, delay: number, deps: React.DependencyList) => void;
3
+ /**
4
+ * A hook that will throttle the execution of a callback function inside a useEffect.
5
+ * This is useful for things like throttling loading states or other UI updates.
6
+ * @param callback The callback function to be executed.
7
+ * @param delay The delay in milliseconds to throttle the callback.
8
+ * @param deps The dependencies to watch for changes.
9
+ */
3
10
  export declare const useThrottledEffect: useThrottledEffect;
4
11
  export {};
5
12
  //# sourceMappingURL=useThrottledEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useThrottledEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,kBAAkB,GAAG,CACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,cAAc,KACvB,IAAI,CAAA;AAET,eAAO,MAAM,kBAAkB,EAAE,kBAkBhC,CAAA"}
1
+ {"version":3,"file":"useThrottledEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useThrottledEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,kBAAkB,GAAG,CACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,cAAc,KACvB,IAAI,CAAA;AAET;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAkBhC,CAAA"}
@@ -2,6 +2,13 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { useEffect, useRef } from 'react';
5
+ /**
6
+ * A hook that will throttle the execution of a callback function inside a useEffect.
7
+ * This is useful for things like throttling loading states or other UI updates.
8
+ * @param callback The callback function to be executed.
9
+ * @param delay The delay in milliseconds to throttle the callback.
10
+ * @param deps The dependencies to watch for changes.
11
+ */
5
12
  export const useThrottledEffect = (callback, delay, t0) => {
6
13
  const $ = _c(9);
7
14
  let t1;
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledEffect.js","names":["c","_c","useEffect","useRef","useThrottledEffect","callback","delay","t0","$","t1","undefined","deps","t2","Symbol","for","Date","now","lastRan","t3","handler","setTimeout","current","clearTimeout","t4"],"sources":["../../src/hooks/useThrottledEffect.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useEffect, useRef } from 'react'\n\ntype useThrottledEffect = (\n callback: React.EffectCallback,\n delay: number,\n deps: React.DependencyList,\n) => void\n\nexport const useThrottledEffect: useThrottledEffect = (callback, delay, deps = []) => {\n const lastRan = useRef(Date.now())\n\n useEffect(() => {\n const handler = setTimeout(\n () => {\n if (Date.now() - lastRan.current >= delay) {\n callback()\n lastRan.current = Date.now()\n }\n },\n delay - (Date.now() - lastRan.current),\n )\n\n return () => {\n clearTimeout(handler)\n }\n }, [delay, ...deps])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,MAAM,QAAQ;AAQlC,OAAO,MAAMC,kBAAA,GAAyCA,CAAAC,QAAA,EAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAkBE,EAAA,GAAAF,EAAS,KAAAG,SAAA,QAATH,EAAS;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAT,MAAAG,IAAA,GAAAF,EAAS;EAAA,IAAAG,EAAA;EAAA,IAAAJ,CAAA,QAAAK,MAAA,CAAAC,GAAA;IACxDF,EAAA,GAAAG,IAAA,CAAAC,GAAA,CAAQ;IAAAR,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAA/B,MAAAS,OAAA,GAAgBd,MAAA,CAAOS,EAAQ;EAAA,IAAAM,EAAA;EAAA,IAAAV,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAH,QAAA;IAErBa,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA;QAAA,IAERL,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,IAAIf,KAAA;UAClCD,QAAA;UACAY,OAAA,CAAAI,OAAA,GAAkBN,IAAA,CAAAC,GAAA,CAAQ;QAAA;MAAA,GAG9BV,KAAA,IAASS,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,CAAD;MAAA;QAIpCC,YAAA,CAAaH,OAAA;MAAA;IAAA;IAEjBX,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAH,QAAA;IAAAG,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAG,IAAA;IAAGY,EAAA,IAACjB,KAAA,KAAUK,IAAA;IAAKH,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAG,IAAA;IAAAH,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAdnBN,SAAA,CAAUgB,EAcV,EAAGK,EAAgB;AAAA,CACrB","ignoreList":[]}
1
+ {"version":3,"file":"useThrottledEffect.js","names":["c","_c","useEffect","useRef","useThrottledEffect","callback","delay","t0","$","t1","undefined","deps","t2","Symbol","for","Date","now","lastRan","t3","handler","setTimeout","current","clearTimeout","t4"],"sources":["../../src/hooks/useThrottledEffect.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useEffect, useRef } from 'react'\n\ntype useThrottledEffect = (\n callback: React.EffectCallback,\n delay: number,\n deps: React.DependencyList,\n) => void\n\n/**\n * A hook that will throttle the execution of a callback function inside a useEffect.\n * This is useful for things like throttling loading states or other UI updates.\n * @param callback The callback function to be executed.\n * @param delay The delay in milliseconds to throttle the callback.\n * @param deps The dependencies to watch for changes.\n */\nexport const useThrottledEffect: useThrottledEffect = (callback, delay, deps = []) => {\n const lastRan = useRef(Date.now())\n\n useEffect(() => {\n const handler = setTimeout(\n () => {\n if (Date.now() - lastRan.current >= delay) {\n callback()\n lastRan.current = Date.now()\n }\n },\n delay - (Date.now() - lastRan.current),\n )\n\n return () => {\n clearTimeout(handler)\n }\n }, [delay, ...deps])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,MAAM,QAAQ;AAQlC;;;;;;;AAOA,OAAO,MAAMC,kBAAA,GAAyCA,CAAAC,QAAA,EAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAkBE,EAAA,GAAAF,EAAS,KAAAG,SAAA,QAATH,EAAS;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAT,MAAAG,IAAA,GAAAF,EAAS;EAAA,IAAAG,EAAA;EAAA,IAAAJ,CAAA,QAAAK,MAAA,CAAAC,GAAA;IACxDF,EAAA,GAAAG,IAAA,CAAAC,GAAA,CAAQ;IAAAR,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAA/B,MAAAS,OAAA,GAAgBd,MAAA,CAAOS,EAAQ;EAAA,IAAAM,EAAA;EAAA,IAAAV,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAH,QAAA;IAErBa,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA;QAAA,IAERL,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,IAAIf,KAAA;UAClCD,QAAA;UACAY,OAAA,CAAAI,OAAA,GAAkBN,IAAA,CAAAC,GAAA,CAAQ;QAAA;MAAA,GAG9BV,KAAA,IAASS,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,CAAD;MAAA;QAIpCC,YAAA,CAAaH,OAAA;MAAA;IAAA;IAEjBX,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAH,QAAA;IAAAG,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAG,IAAA;IAAGY,EAAA,IAACjB,KAAA,KAAUK,IAAA;IAAKH,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAG,IAAA;IAAAH,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAdnBN,SAAA,CAAUgB,EAcV,EAAGK,EAAgB;AAAA,CACrB","ignoreList":[]}
@@ -15,6 +15,7 @@ type ContextHandlers = {
15
15
  handleSearchChange?: (search: string) => Promise<void>;
16
16
  handleSortChange?: (sort: string) => Promise<void>;
17
17
  handleWhereChange?: (where: Where) => Promise<void>;
18
+ params: RefineOverrides;
18
19
  };
19
20
  export type ListQueryProps = {
20
21
  readonly children: React.ReactNode;
@@ -22,6 +23,11 @@ export type ListQueryProps = {
22
23
  readonly defaultLimit?: number;
23
24
  readonly defaultSort?: string;
24
25
  readonly modifySearchParams?: boolean;
26
+ /**
27
+ * Used to manage the query params manually. If you pass this prop, the provider will not manage the query params from the searchParams.
28
+ * Useful for modals or other components that need to manage the query params themselves.
29
+ */
30
+ readonly params?: RefineOverrides;
25
31
  readonly preferenceKey?: string;
26
32
  } & PropHandlers;
27
33
  export type ListQueryContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKnD,OAAO,KAAoC,MAAM,OAAO,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAK3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAErE,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC3D,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,GAAG,YAAY,CAAA;AAEhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACzD,GAAG,eAAe,CAAA;AAInB,eAAO,MAAM,YAAY,QAAO,gBAAuC,CAAA;AAEvE,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0JtD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKnD,OAAO,KAAsE,MAAM,OAAO,CAAA;AAE1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAK3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAErE,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC3D,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,EAAE,eAAe,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,GAAG,YAAY,CAAA;AAEhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACzD,GAAG,eAAe,CAAA;AAInB,eAAO,MAAM,YAAY,QAAO,gBAAuC,CAAA;AAEvE,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4KtD,CAAA"}
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { useRouter } from 'next/navigation.js';
5
5
  import { isNumber } from 'payload/shared';
6
6
  import * as qs from 'qs-esm';
7
- import React, { createContext, useContext } from 'react';
7
+ import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
8
8
  import { usePreferences } from '../Preferences/index.js';
9
9
  import { useSearchParams } from '../SearchParams/index.js';
10
10
  const Context = /*#__PURE__*/createContext({});
@@ -22,17 +22,18 @@ export const ListQueryProvider = ({
22
22
  handleSortChange: handleSortChangeFromProps,
23
23
  handleWhereChange: handleWhereChangeFromProps,
24
24
  modifySearchParams,
25
+ params: paramsFromProps,
25
26
  preferenceKey
26
27
  }) => {
27
28
  const router = useRouter();
28
29
  const {
29
30
  setPreference
30
31
  } = usePreferences();
31
- const hasSetInitialParams = React.useRef(false);
32
32
  const {
33
33
  searchParams: currentQuery
34
34
  } = useSearchParams();
35
- const refineListData = React.useCallback(async query => {
35
+ const [params, setParams] = useState(paramsFromProps || currentQuery);
36
+ const refineListData = useCallback(async query => {
36
37
  if (!modifySearchParams) {
37
38
  return;
38
39
  }
@@ -53,18 +54,18 @@ export const ListQueryProvider = ({
53
54
  if (updatePreferences && preferenceKey) {
54
55
  await setPreference(preferenceKey, updatedPreferences);
55
56
  }
56
- const params = {
57
+ const params_0 = {
57
58
  limit: 'limit' in query ? query.limit : currentQuery?.limit,
58
59
  page: pageQuery,
59
60
  search: 'search' in query ? query.search : currentQuery?.search,
60
61
  sort: 'sort' in query ? query.sort : currentQuery?.sort,
61
62
  where: 'where' in query ? query.where : currentQuery?.where
62
63
  };
63
- router.replace(`${qs.stringify(params, {
64
+ router.replace(`${qs.stringify(params_0, {
64
65
  addQueryPrefix: true
65
66
  })}`);
66
- }, [preferenceKey, modifySearchParams, router, setPreference, currentQuery]);
67
- const handlePageChange = React.useCallback(async arg => {
67
+ }, [modifySearchParams, currentQuery?.page, currentQuery?.limit, currentQuery?.search, currentQuery?.sort, currentQuery?.where, preferenceKey, router, setPreference]);
68
+ const handlePageChange = useCallback(async arg => {
68
69
  if (typeof handlePageChangeFromProps === 'function') {
69
70
  await handlePageChangeFromProps(arg);
70
71
  }
@@ -77,18 +78,20 @@ export const ListQueryProvider = ({
77
78
  await handlePerPageChangeFromProps(arg_0);
78
79
  }
79
80
  await refineListData({
80
- limit: String(arg_0)
81
+ limit: String(arg_0),
82
+ page: '1'
81
83
  });
82
84
  }, [refineListData, handlePerPageChangeFromProps]);
83
- const handleSearchChange = React.useCallback(async arg_1 => {
85
+ const handleSearchChange = useCallback(async arg_1 => {
86
+ const search = arg_1 === '' ? undefined : arg_1;
84
87
  if (typeof handleSearchChangeFromProps === 'function') {
85
- await handleSearchChangeFromProps(arg_1);
88
+ await handleSearchChangeFromProps(search);
86
89
  }
87
90
  await refineListData({
88
- search: arg_1
91
+ search
89
92
  });
90
- }, [refineListData, handleSearchChangeFromProps]);
91
- const handleSortChange = React.useCallback(async arg_2 => {
93
+ }, [handleSearchChangeFromProps, refineListData]);
94
+ const handleSortChange = useCallback(async arg_2 => {
92
95
  if (typeof handleSortChangeFromProps === 'function') {
93
96
  await handleSortChangeFromProps(arg_2);
94
97
  }
@@ -96,7 +99,7 @@ export const ListQueryProvider = ({
96
99
  sort: arg_2
97
100
  });
98
101
  }, [refineListData, handleSortChangeFromProps]);
99
- const handleWhereChange = React.useCallback(async arg_3 => {
102
+ const handleWhereChange = useCallback(async arg_3 => {
100
103
  if (typeof handleWhereChangeFromProps === 'function') {
101
104
  await handleWhereChangeFromProps(arg_3);
102
105
  }
@@ -104,8 +107,11 @@ export const ListQueryProvider = ({
104
107
  where: arg_3
105
108
  });
106
109
  }, [refineListData, handleWhereChangeFromProps]);
107
- React.useEffect(() => {
108
- if (!hasSetInitialParams.current) {
110
+ useEffect(() => {
111
+ if (paramsFromProps) {
112
+ // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
113
+ setParams(paramsFromProps);
114
+ } else {
109
115
  if (modifySearchParams) {
110
116
  let shouldUpdateQueryString = false;
111
117
  if (isNumber(defaultLimit) && !('limit' in currentQuery)) {
@@ -116,13 +122,14 @@ export const ListQueryProvider = ({
116
122
  currentQuery.sort = defaultSort;
117
123
  shouldUpdateQueryString = true;
118
124
  }
125
+ // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
126
+ setParams(currentQuery);
119
127
  if (shouldUpdateQueryString) {
120
128
  router.replace(`?${qs.stringify(currentQuery)}`);
121
129
  }
122
130
  }
123
- hasSetInitialParams.current = true;
124
131
  }
125
- }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery]);
132
+ }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery, paramsFromProps, params]);
126
133
  return /*#__PURE__*/_jsx(Context.Provider, {
127
134
  value: {
128
135
  data,
@@ -131,6 +138,7 @@ export const ListQueryProvider = ({
131
138
  handleSearchChange,
132
139
  handleSortChange,
133
140
  handleWhereChange,
141
+ params,
134
142
  refineListData
135
143
  },
136
144
  children: children
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","isNumber","qs","React","createContext","useContext","usePreferences","useSearchParams","Context","useListQuery","ListQueryProvider","children","data","defaultLimit","defaultSort","handlePageChange","handlePageChangeFromProps","handlePerPageChange","handlePerPageChangeFromProps","handleSearchChange","handleSearchChangeFromProps","handleSortChange","handleSortChangeFromProps","handleWhereChange","handleWhereChangeFromProps","modifySearchParams","preferenceKey","router","setPreference","hasSetInitialParams","useRef","searchParams","currentQuery","refineListData","useCallback","query","pageQuery","page","updatedPreferences","updatePreferences","limit","sort","params","search","where","replace","stringify","addQueryPrefix","arg","String","useEffect","current","shouldUpdateQueryString","_jsx","Provider","value"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { useRouter } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useContext } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\n\nimport { usePreferences } from '../Preferences/index.js'\nimport { useSearchParams } from '../SearchParams/index.js'\n\nexport type ColumnPreferences = Pick<Column, 'accessor' | 'active'>[]\n\ntype PropHandlers = {\n handlePageChange?: (page: number) => Promise<void> | void\n handlePerPageChange?: (limit: number) => Promise<void> | void\n handleSearchChange?: (search: string) => Promise<void> | void\n handleSortChange?: (sort: string) => Promise<void> | void\n handleWhereChange?: (where: Where) => Promise<void> | void\n}\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: string\n readonly modifySearchParams?: boolean\n readonly preferenceKey?: string\n} & PropHandlers\n\nexport type ListQueryContext = {\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: string\n refineListData: (args: RefineOverrides) => Promise<void>\n} & ContextHandlers\n\nconst Context = createContext({} as ListQueryContext)\n\nexport const useListQuery = (): ListQueryContext => useContext(Context)\n\ntype RefineOverrides = {\n limit?: string\n page?: string\n search?: string\n sort?: string\n where?: Where\n}\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n data,\n defaultLimit,\n defaultSort,\n handlePageChange: handlePageChangeFromProps,\n handlePerPageChange: handlePerPageChangeFromProps,\n handleSearchChange: handleSearchChangeFromProps,\n handleSortChange: handleSortChangeFromProps,\n handleWhereChange: handleWhereChangeFromProps,\n modifySearchParams,\n preferenceKey,\n}) => {\n const router = useRouter()\n const { setPreference } = usePreferences()\n const hasSetInitialParams = React.useRef(false)\n const { searchParams: currentQuery } = useSearchParams()\n\n const refineListData = React.useCallback(\n async (query: RefineOverrides) => {\n if (!modifySearchParams) {\n return\n }\n\n let pageQuery = 'page' in query ? query.page : currentQuery?.page\n\n if ('where' in query || 'search' in query) {\n pageQuery = '1'\n }\n\n const updatedPreferences: Record<string, unknown> = {}\n let updatePreferences = false\n\n if ('limit' in query) {\n updatedPreferences.limit = query.limit\n updatePreferences = true\n }\n\n if ('sort' in query) {\n updatedPreferences.sort = query.sort\n updatePreferences = true\n }\n\n if (updatePreferences && preferenceKey) {\n await setPreference(preferenceKey, updatedPreferences)\n }\n\n const params = {\n limit: 'limit' in query ? query.limit : currentQuery?.limit,\n page: pageQuery,\n search: 'search' in query ? query.search : currentQuery?.search,\n sort: 'sort' in query ? query.sort : currentQuery?.sort,\n where: 'where' in query ? query.where : currentQuery?.where,\n }\n\n router.replace(`${qs.stringify(params, { addQueryPrefix: true })}`)\n },\n [preferenceKey, modifySearchParams, router, setPreference, currentQuery],\n )\n\n const handlePageChange = React.useCallback(\n async (arg: number) => {\n if (typeof handlePageChangeFromProps === 'function') {\n await handlePageChangeFromProps(arg)\n }\n\n await refineListData({ page: String(arg) })\n },\n [refineListData, handlePageChangeFromProps],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n if (typeof handlePerPageChangeFromProps === 'function') {\n await handlePerPageChangeFromProps(arg)\n }\n\n await refineListData({ limit: String(arg) })\n },\n [refineListData, handlePerPageChangeFromProps],\n )\n\n const handleSearchChange = React.useCallback(\n async (arg: string) => {\n if (typeof handleSearchChangeFromProps === 'function') {\n await handleSearchChangeFromProps(arg)\n }\n\n await refineListData({ search: arg })\n },\n [refineListData, handleSearchChangeFromProps],\n )\n\n const handleSortChange = React.useCallback(\n async (arg: string) => {\n if (typeof handleSortChangeFromProps === 'function') {\n await handleSortChangeFromProps(arg)\n }\n\n await refineListData({ sort: arg })\n },\n [refineListData, handleSortChangeFromProps],\n )\n\n const handleWhereChange = React.useCallback(\n async (arg: Where) => {\n if (typeof handleWhereChangeFromProps === 'function') {\n await handleWhereChangeFromProps(arg)\n }\n\n await refineListData({ where: arg })\n },\n [refineListData, handleWhereChangeFromProps],\n )\n\n React.useEffect(() => {\n if (!hasSetInitialParams.current) {\n if (modifySearchParams) {\n let shouldUpdateQueryString = false\n\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n currentQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n if (defaultSort && !('sort' in currentQuery)) {\n currentQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n if (shouldUpdateQueryString) {\n router.replace(`?${qs.stringify(currentQuery)}`)\n }\n }\n\n hasSetInitialParams.current = true\n }\n }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery])\n\n return (\n <Context.Provider\n value={{\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n refineListData,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","isNumber","qs","React","createContext","useCallback","useContext","useEffect","useState","usePreferences","useSearchParams","Context","useListQuery","ListQueryProvider","children","data","defaultLimit","defaultSort","handlePageChange","handlePageChangeFromProps","handlePerPageChange","handlePerPageChangeFromProps","handleSearchChange","handleSearchChangeFromProps","handleSortChange","handleSortChangeFromProps","handleWhereChange","handleWhereChangeFromProps","modifySearchParams","params","paramsFromProps","preferenceKey","router","setPreference","searchParams","currentQuery","setParams","refineListData","query","pageQuery","page","updatedPreferences","updatePreferences","limit","sort","search","where","replace","stringify","addQueryPrefix","arg","String","undefined","shouldUpdateQueryString","_jsx","Provider","value"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { useRouter } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\n\nimport { usePreferences } from '../Preferences/index.js'\nimport { useSearchParams } from '../SearchParams/index.js'\n\nexport type ColumnPreferences = Pick<Column, 'accessor' | 'active'>[]\n\ntype PropHandlers = {\n handlePageChange?: (page: number) => Promise<void> | void\n handlePerPageChange?: (limit: number) => Promise<void> | void\n handleSearchChange?: (search: string) => Promise<void> | void\n handleSortChange?: (sort: string) => Promise<void> | void\n handleWhereChange?: (where: Where) => Promise<void> | void\n}\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n params: RefineOverrides\n}\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: string\n readonly modifySearchParams?: boolean\n /**\n * Used to manage the query params manually. If you pass this prop, the provider will not manage the query params from the searchParams.\n * Useful for modals or other components that need to manage the query params themselves.\n */\n readonly params?: RefineOverrides\n readonly preferenceKey?: string\n} & PropHandlers\n\nexport type ListQueryContext = {\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: string\n refineListData: (args: RefineOverrides) => Promise<void>\n} & ContextHandlers\n\nconst Context = createContext({} as ListQueryContext)\n\nexport const useListQuery = (): ListQueryContext => useContext(Context)\n\ntype RefineOverrides = {\n limit?: string\n page?: string\n search?: string\n sort?: string\n where?: Where\n}\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n data,\n defaultLimit,\n defaultSort,\n handlePageChange: handlePageChangeFromProps,\n handlePerPageChange: handlePerPageChangeFromProps,\n handleSearchChange: handleSearchChangeFromProps,\n handleSortChange: handleSortChangeFromProps,\n handleWhereChange: handleWhereChangeFromProps,\n modifySearchParams,\n params: paramsFromProps,\n preferenceKey,\n}) => {\n const router = useRouter()\n const { setPreference } = usePreferences()\n const { searchParams: currentQuery } = useSearchParams()\n const [params, setParams] = useState(paramsFromProps || currentQuery)\n\n const refineListData = useCallback(\n async (query: RefineOverrides) => {\n if (!modifySearchParams) {\n return\n }\n\n let pageQuery = 'page' in query ? query.page : currentQuery?.page\n\n if ('where' in query || 'search' in query) {\n pageQuery = '1'\n }\n\n const updatedPreferences: Record<string, unknown> = {}\n let updatePreferences = false\n\n if ('limit' in query) {\n updatedPreferences.limit = query.limit\n updatePreferences = true\n }\n\n if ('sort' in query) {\n updatedPreferences.sort = query.sort\n updatePreferences = true\n }\n\n if (updatePreferences && preferenceKey) {\n await setPreference(preferenceKey, updatedPreferences)\n }\n\n const params = {\n limit: 'limit' in query ? query.limit : currentQuery?.limit,\n page: pageQuery,\n search: 'search' in query ? query.search : currentQuery?.search,\n sort: 'sort' in query ? query.sort : currentQuery?.sort,\n where: 'where' in query ? query.where : currentQuery?.where,\n }\n\n router.replace(`${qs.stringify(params, { addQueryPrefix: true })}`)\n },\n [\n modifySearchParams,\n currentQuery?.page,\n currentQuery?.limit,\n currentQuery?.search,\n currentQuery?.sort,\n currentQuery?.where,\n preferenceKey,\n router,\n setPreference,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n if (typeof handlePageChangeFromProps === 'function') {\n await handlePageChangeFromProps(arg)\n }\n\n await refineListData({ page: String(arg) })\n },\n [refineListData, handlePageChangeFromProps],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n if (typeof handlePerPageChangeFromProps === 'function') {\n await handlePerPageChangeFromProps(arg)\n }\n\n await refineListData({ limit: String(arg), page: '1' })\n },\n [refineListData, handlePerPageChangeFromProps],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n\n if (typeof handleSearchChangeFromProps === 'function') {\n await handleSearchChangeFromProps(search)\n }\n\n await refineListData({ search })\n },\n [handleSearchChangeFromProps, refineListData],\n )\n\n const handleSortChange = useCallback(\n async (arg: string) => {\n if (typeof handleSortChangeFromProps === 'function') {\n await handleSortChangeFromProps(arg)\n }\n\n await refineListData({ sort: arg })\n },\n [refineListData, handleSortChangeFromProps],\n )\n\n const handleWhereChange = useCallback(\n async (arg: Where) => {\n if (typeof handleWhereChangeFromProps === 'function') {\n await handleWhereChangeFromProps(arg)\n }\n\n await refineListData({ where: arg })\n },\n [refineListData, handleWhereChangeFromProps],\n )\n\n useEffect(() => {\n if (paramsFromProps) {\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setParams(paramsFromProps)\n } else {\n if (modifySearchParams) {\n let shouldUpdateQueryString = false\n\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n currentQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n if (defaultSort && !('sort' in currentQuery)) {\n currentQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect\n setParams(currentQuery)\n\n if (shouldUpdateQueryString) {\n router.replace(`?${qs.stringify(currentQuery)}`)\n }\n }\n }\n }, [defaultSort, defaultLimit, router, modifySearchParams, currentQuery, paramsFromProps, params])\n\n return (\n <Context.Provider\n value={{\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n params,\n refineListData,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}