@payloadcms/ui 3.69.0-internal.2883df2 → 3.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AddNewRelation/index.js +1 -1
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +2 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/AppHeader/index.scss +0 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +20 -5
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +36 -39
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +1 -2
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +8 -5
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +19 -16
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +6 -3
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +14 -6
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.js +9 -2
- package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
- package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
- package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
- package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
- package/dist/elements/ItemsDrawer/index.d.ts +15 -0
- package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
- package/dist/elements/ItemsDrawer/index.js +195 -0
- package/dist/elements/ItemsDrawer/index.js.map +1 -0
- package/dist/elements/ItemsDrawer/index.scss +102 -0
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +5 -3
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +6 -4
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.js +21 -15
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
- package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
- package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js +24 -92
- package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
- package/dist/elements/Popup/index.d.ts +32 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +249 -122
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/index.scss +49 -231
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +17 -5
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +8 -5
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +11 -4
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts.map +1 -1
- package/dist/elements/RestoreButton/index.js +21 -15
- package/dist/elements/RestoreButton/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.d.ts.map +1 -1
- package/dist/elements/RestoreMany/index.js +17 -14
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +11 -5
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +11 -5
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StepNav/context.d.ts.map +1 -1
- package/dist/elements/StepNav/context.js +9 -1
- package/dist/elements/StepNav/context.js.map +1 -1
- package/dist/elements/StepNav/index.scss +0 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +5 -1
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +25 -24
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +7 -5
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +1 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +24 -24
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +1 -0
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +1 -0
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.d.ts +3 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +12 -5
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +7 -3
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
- package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +2 -2
- package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +31 -13
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +16 -15
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/Folders/index.d.ts.map +1 -1
- package/dist/providers/Folders/index.js +12 -8
- package/dist/providers/Folders/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +45 -34
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +16 -7
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +6 -1
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/scss/app.scss +14 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.js +2 -2
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/getGlobalData.d.ts +11 -0
- package/dist/utilities/getGlobalData.d.ts.map +1 -0
- package/dist/utilities/getGlobalData.js +49 -0
- package/dist/utilities/getGlobalData.js.map +1 -0
- package/dist/utilities/getNavGroups.d.ts +5 -0
- package/dist/utilities/getNavGroups.d.ts.map +1 -0
- package/dist/utilities/getNavGroups.js +22 -0
- package/dist/utilities/getNavGroups.js.map +1 -0
- package/dist/utilities/getVisibleEntities.d.ts +5 -0
- package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
- package/dist/utilities/getVisibleEntities.js +31 -0
- package/dist/utilities/getVisibleEntities.js.map +1 -0
- package/dist/utilities/groupNavItems.d.ts +3 -0
- package/dist/utilities/groupNavItems.d.ts.map +1 -1
- package/dist/utilities/groupNavItems.js +3 -0
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/dist/utilities/handleBackToDashboard.d.ts +2 -1
- package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
- package/dist/utilities/handleBackToDashboard.js +4 -2
- package/dist/utilities/handleBackToDashboard.js.map +1 -1
- package/dist/utilities/handleGoBack.d.ts +2 -1
- package/dist/utilities/handleGoBack.d.ts.map +1 -1
- package/dist/utilities/handleGoBack.js +2 -1
- package/dist/utilities/handleGoBack.js.map +1 -1
- package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
- package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
- package/dist/views/CollectionFolder/index.js +1 -1
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +22 -21
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js +26 -6
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +7 -4
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +3 -2
- package/dist/views/List/index.js.map +1 -1
- package/dist/widgets/CollectionCards/index.d.ts +5 -0
- package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
- package/dist/widgets/CollectionCards/index.js +135 -0
- package/dist/widgets/CollectionCards/index.js.map +1 -0
- package/dist/widgets/CollectionCards/index.scss +70 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAkB,MAAM,gBAAgB,CAAA;AACtE,OAAO,KAAgB,MAAM,OAAO,CAAA;AAGpC,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAA;AASjE,OAAO,cAAc,CAAA;AAKrB;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,SAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,EAAE;IACD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC,qBA2DA;AAED,KAAK,0BAA0B,GAAG;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CACpC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,uLAc/B,0BAA0B,sBA0E5B,CAAA"}
|
|
@@ -4,6 +4,7 @@ import { c as _c } from "react/compiler-runtime";
|
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
5
5
|
import { useModal } from '@faceless-ui/modal';
|
|
6
6
|
import { getTranslation } from '@payloadcms/translations';
|
|
7
|
+
import { formatAdminURL } from 'payload/shared';
|
|
7
8
|
import React, { useId } from 'react';
|
|
8
9
|
import { toast } from 'sonner';
|
|
9
10
|
import { useForm, useFormFields } from '../../../forms/Form/context.js';
|
|
@@ -73,7 +74,10 @@ export function MoveDocToFolder(t0) {
|
|
|
73
74
|
t4 = () => {
|
|
74
75
|
const fetchFolderLabel = async function fetchFolderLabel() {
|
|
75
76
|
if (fromFolderID && (typeof fromFolderID === "string" || typeof fromFolderID === "number")) {
|
|
76
|
-
const response = await fetch(
|
|
77
|
+
const response = await fetch(formatAdminURL({
|
|
78
|
+
apiRoute: config.routes.api,
|
|
79
|
+
path: `/${folderCollectionSlug}/${fromFolderID}`
|
|
80
|
+
}));
|
|
77
81
|
const folderData = await response.json();
|
|
78
82
|
setFromFolderName(folderData?.name || t("folder:noFolder"));
|
|
79
83
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","React","useId","toast","useForm","useFormFields","FolderIcon","useConfig","useDocumentInfo","useTranslation","Button","formatDrawerSlug","useDrawerDepth","MoveItemsToFolderDrawer","baseClass","MoveDocToFolder","t0","$","buttonProps","className","t1","folderCollectionSlug","folderFieldName","undefined","t","dispatchField","_temp","t2","t3","fields","currentParentFolder","fromFolderID","value","id","collectionSlug","initialData","title","setModified","fromFolderName","setFromFolderName","useState","config","modalID","t4","t5","routes","api","fetchFolderLabel","response","fetch","folderData","json","name","useEffect","t6","t7","t8","id_0","type","path","t9","_jsx","MoveDocToFolderButton","docData","docID","docTitle","modalSlug","onConfirm","skipConfirmModal","dispatch","getEntityConfig","i18n","closeModal","openModal","drawerDepth","drawerSlug","slug","depth","titleToRender","labels","singular","filter","Boolean","_jsxs","_Fragment","children","buttonStyle","join","icon","iconPosition","onClick","action","folderAssignedCollections","itemsToMove","itemKey","relationTo","args","success","folderName","_"],"sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"sourcesContent":["'use client'\n\nimport type { CollectionSlug } from 'payload'\nimport type { FolderOrDocument } from 'payload/shared'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useId } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props as ButtonProps } from '../../Button/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { FolderIcon } from '../../../icons/Folder/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { formatDrawerSlug, useDrawerDepth } from '../../Drawer/index.js'\nimport './index.scss'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst baseClass = 'move-doc-to-folder'\n\n/**\n * This is the button shown on the edit document view. It uses the more generic `MoveDocToFolderButton` component.\n */\nexport function MoveDocToFolder({\n buttonProps,\n className = '',\n folderCollectionSlug,\n folderFieldName,\n}: {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n}) {\n const { t } = useTranslation()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const currentParentFolder = useFormFields(\n ([fields]) => (fields && fields?.[folderFieldName]) || null,\n )\n const fromFolderID = currentParentFolder?.value\n const { id, collectionSlug, initialData, title } = useDocumentInfo()\n const { setModified } = useForm()\n const [fromFolderName, setFromFolderName] = React.useState(() => `${t('general:loading')}...`)\n\n const { config } = useConfig()\n const modalID = useId()\n\n React.useEffect(() => {\n async function fetchFolderLabel() {\n if (fromFolderID && (typeof fromFolderID === 'string' || typeof fromFolderID === 'number')) {\n const response = await fetch(`${config.routes.api}/${folderCollectionSlug}/${fromFolderID}`)\n const folderData = await response.json()\n setFromFolderName(folderData?.name || t('folder:noFolder'))\n } else {\n setFromFolderName(t('folder:noFolder'))\n }\n }\n\n void fetchFolderLabel()\n }, [folderCollectionSlug, config.routes.api, fromFolderID, t])\n\n return (\n <MoveDocToFolderButton\n buttonProps={buttonProps}\n className={className}\n collectionSlug={collectionSlug}\n docData={initialData as FolderOrDocument['value']}\n docID={id}\n docTitle={title}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID as number | string}\n fromFolderName={fromFolderName}\n modalSlug={`move-to-folder-${modalID}`}\n onConfirm={({ id }) => {\n if (currentParentFolder.value !== id) {\n dispatchField({\n type: 'UPDATE',\n path: folderFieldName,\n value: id,\n })\n setModified(true)\n }\n }}\n skipConfirmModal={!currentParentFolder?.value}\n />\n )\n}\n\ntype MoveDocToFolderButtonProps = {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly collectionSlug: string\n readonly docData: FolderOrDocument['value']\n readonly docID: number | string\n readonly docTitle?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName: string\n readonly modalSlug: string\n readonly onConfirm?: (args: { id: number | string; name: string }) => Promise<void> | void\n readonly skipConfirmModal?: boolean\n}\n\n/**\n * This is a more generic button that can be used in other contexts, such as table cells and the edit view.\n */\nexport const MoveDocToFolderButton = ({\n buttonProps,\n className,\n collectionSlug,\n docData,\n docID,\n docTitle,\n folderCollectionSlug,\n folderFieldName,\n fromFolderID,\n fromFolderName,\n modalSlug,\n onConfirm,\n skipConfirmModal,\n}: MoveDocToFolderButtonProps) => {\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const drawerDepth = useDrawerDepth()\n const drawerSlug = formatDrawerSlug({ slug: modalSlug, depth: drawerDepth })\n\n const titleToRender =\n docTitle || getTranslation(getEntityConfig({ collectionSlug }).labels.singular, i18n)\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, className].filter(Boolean).join(' ')}\n icon={<FolderIcon />}\n iconPosition=\"left\"\n onClick={() => {\n openModal(drawerSlug)\n }}\n {...buttonProps}\n >\n {fromFolderName}\n </Button>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={drawerSlug}\n //todo this should inherit\n folderAssignedCollections={[collectionSlug]}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID}\n fromFolderName={fromFolderName}\n itemsToMove={[\n {\n itemKey: `${collectionSlug}-${docID}`,\n relationTo: collectionSlug,\n value: { ...docData, id: docID },\n },\n ]}\n onConfirm={async (args) => {\n if (fromFolderID !== args.id && typeof onConfirm === 'function') {\n try {\n await onConfirm(args)\n\n if (args.id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${args.name}\"`,\n title: titleToRender,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: titleToRender,\n }),\n )\n }\n } catch (_) {\n // todo: add error toast?\n }\n }\n\n closeModal(drawerSlug)\n }}\n skipConfirmModal={skipConfirmModal}\n title={titleToRender}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","getTranslation","formatAdminURL","React","useId","toast","useForm","useFormFields","FolderIcon","useConfig","useDocumentInfo","useTranslation","Button","formatDrawerSlug","useDrawerDepth","MoveItemsToFolderDrawer","baseClass","MoveDocToFolder","t0","$","buttonProps","className","t1","folderCollectionSlug","folderFieldName","undefined","t","dispatchField","_temp","t2","t3","fields","currentParentFolder","fromFolderID","value","id","collectionSlug","initialData","title","setModified","fromFolderName","setFromFolderName","useState","config","modalID","t4","t5","routes","api","fetchFolderLabel","response","fetch","apiRoute","path","folderData","json","name","useEffect","t6","t7","t8","id_0","type","t9","_jsx","MoveDocToFolderButton","docData","docID","docTitle","modalSlug","onConfirm","skipConfirmModal","dispatch","getEntityConfig","i18n","closeModal","openModal","drawerDepth","drawerSlug","slug","depth","titleToRender","labels","singular","filter","Boolean","_jsxs","_Fragment","children","buttonStyle","join","icon","iconPosition","onClick","action","folderAssignedCollections","itemsToMove","itemKey","relationTo","args","success","folderName","_"],"sources":["../../../../src/elements/FolderView/MoveDocToFolder/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { type FolderOrDocument, formatAdminURL } from 'payload/shared'\nimport React, { useId } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props as ButtonProps } from '../../Button/types.js'\n\nimport { useForm, useFormFields } from '../../../forms/Form/context.js'\nimport { FolderIcon } from '../../../icons/Folder/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { formatDrawerSlug, useDrawerDepth } from '../../Drawer/index.js'\nimport './index.scss'\nimport { MoveItemsToFolderDrawer } from '../Drawers/MoveToFolder/index.js'\n\nconst baseClass = 'move-doc-to-folder'\n\n/**\n * This is the button shown on the edit document view. It uses the more generic `MoveDocToFolderButton` component.\n */\nexport function MoveDocToFolder({\n buttonProps,\n className = '',\n folderCollectionSlug,\n folderFieldName,\n}: {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n}) {\n const { t } = useTranslation()\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const currentParentFolder = useFormFields(\n ([fields]) => (fields && fields?.[folderFieldName]) || null,\n )\n const fromFolderID = currentParentFolder?.value\n const { id, collectionSlug, initialData, title } = useDocumentInfo()\n const { setModified } = useForm()\n const [fromFolderName, setFromFolderName] = React.useState(() => `${t('general:loading')}...`)\n\n const { config } = useConfig()\n const modalID = useId()\n\n React.useEffect(() => {\n async function fetchFolderLabel() {\n if (fromFolderID && (typeof fromFolderID === 'string' || typeof fromFolderID === 'number')) {\n const response = await fetch(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${folderCollectionSlug}/${fromFolderID}`,\n }),\n )\n const folderData = await response.json()\n setFromFolderName(folderData?.name || t('folder:noFolder'))\n } else {\n setFromFolderName(t('folder:noFolder'))\n }\n }\n\n void fetchFolderLabel()\n }, [folderCollectionSlug, config.routes.api, fromFolderID, t])\n\n return (\n <MoveDocToFolderButton\n buttonProps={buttonProps}\n className={className}\n collectionSlug={collectionSlug}\n docData={initialData as FolderOrDocument['value']}\n docID={id}\n docTitle={title}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID as number | string}\n fromFolderName={fromFolderName}\n modalSlug={`move-to-folder-${modalID}`}\n onConfirm={({ id }) => {\n if (currentParentFolder.value !== id) {\n dispatchField({\n type: 'UPDATE',\n path: folderFieldName,\n value: id,\n })\n setModified(true)\n }\n }}\n skipConfirmModal={!currentParentFolder?.value}\n />\n )\n}\n\ntype MoveDocToFolderButtonProps = {\n readonly buttonProps?: Partial<ButtonProps>\n readonly className?: string\n readonly collectionSlug: string\n readonly docData: FolderOrDocument['value']\n readonly docID: number | string\n readonly docTitle?: string\n readonly folderCollectionSlug: string\n readonly folderFieldName: string\n readonly fromFolderID?: number | string\n readonly fromFolderName: string\n readonly modalSlug: string\n readonly onConfirm?: (args: { id: number | string; name: string }) => Promise<void> | void\n readonly skipConfirmModal?: boolean\n}\n\n/**\n * This is a more generic button that can be used in other contexts, such as table cells and the edit view.\n */\nexport const MoveDocToFolderButton = ({\n buttonProps,\n className,\n collectionSlug,\n docData,\n docID,\n docTitle,\n folderCollectionSlug,\n folderFieldName,\n fromFolderID,\n fromFolderName,\n modalSlug,\n onConfirm,\n skipConfirmModal,\n}: MoveDocToFolderButtonProps) => {\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const drawerDepth = useDrawerDepth()\n const drawerSlug = formatDrawerSlug({ slug: modalSlug, depth: drawerDepth })\n\n const titleToRender =\n docTitle || getTranslation(getEntityConfig({ collectionSlug }).labels.singular, i18n)\n\n return (\n <>\n <Button\n buttonStyle=\"subtle\"\n className={[baseClass, className].filter(Boolean).join(' ')}\n icon={<FolderIcon />}\n iconPosition=\"left\"\n onClick={() => {\n openModal(drawerSlug)\n }}\n {...buttonProps}\n >\n {fromFolderName}\n </Button>\n\n <MoveItemsToFolderDrawer\n action=\"moveItemToFolder\"\n drawerSlug={drawerSlug}\n //todo this should inherit\n folderAssignedCollections={[collectionSlug]}\n folderCollectionSlug={folderCollectionSlug}\n folderFieldName={folderFieldName}\n fromFolderID={fromFolderID}\n fromFolderName={fromFolderName}\n itemsToMove={[\n {\n itemKey: `${collectionSlug}-${docID}`,\n relationTo: collectionSlug,\n value: { ...docData, id: docID },\n },\n ]}\n onConfirm={async (args) => {\n if (fromFolderID !== args.id && typeof onConfirm === 'function') {\n try {\n await onConfirm(args)\n\n if (args.id) {\n // moved to folder\n toast.success(\n t('folder:itemHasBeenMoved', {\n folderName: `\"${args.name}\"`,\n title: titleToRender,\n }),\n )\n } else {\n // moved to root\n toast.success(\n t('folder:itemHasBeenMovedToRoot', {\n title: titleToRender,\n }),\n )\n }\n } catch (_) {\n // todo: add error toast?\n }\n }\n\n closeModal(drawerSlug)\n }}\n skipConfirmModal={skipConfirmModal}\n title={titleToRender}\n />\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ItemsDrawer/ItemSearch/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgB,MAAM,OAAO,CAAA;AAGpC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwBtC,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
import React, { useId } from 'react';
|
|
6
|
+
import { SearchIcon } from '../../../icons/Search/index.js';
|
|
7
|
+
import './index.scss';
|
|
8
|
+
const baseClass = 'item-search';
|
|
9
|
+
export const ItemSearch = t0 => {
|
|
10
|
+
const $ = _c(7);
|
|
11
|
+
const {
|
|
12
|
+
placeholder,
|
|
13
|
+
setSearchTerm
|
|
14
|
+
} = t0;
|
|
15
|
+
const inputId = useId();
|
|
16
|
+
const labelId = `${inputId}-label`;
|
|
17
|
+
let t1;
|
|
18
|
+
if ($[0] !== setSearchTerm) {
|
|
19
|
+
t1 = e => {
|
|
20
|
+
setSearchTerm(e.target.value);
|
|
21
|
+
};
|
|
22
|
+
$[0] = setSearchTerm;
|
|
23
|
+
$[1] = t1;
|
|
24
|
+
} else {
|
|
25
|
+
t1 = $[1];
|
|
26
|
+
}
|
|
27
|
+
const handleChange = t1;
|
|
28
|
+
let t2;
|
|
29
|
+
if ($[2] !== handleChange || $[3] !== inputId || $[4] !== labelId || $[5] !== placeholder) {
|
|
30
|
+
t2 = _jsxs("div", {
|
|
31
|
+
className: baseClass,
|
|
32
|
+
children: [_jsx("label", {
|
|
33
|
+
className: "sr-only",
|
|
34
|
+
htmlFor: inputId,
|
|
35
|
+
id: labelId,
|
|
36
|
+
children: placeholder
|
|
37
|
+
}), _jsx("input", {
|
|
38
|
+
"aria-labelledby": labelId,
|
|
39
|
+
className: `${baseClass}__input`,
|
|
40
|
+
id: inputId,
|
|
41
|
+
onChange: handleChange,
|
|
42
|
+
placeholder,
|
|
43
|
+
type: "text"
|
|
44
|
+
}), _jsx(SearchIcon, {})]
|
|
45
|
+
});
|
|
46
|
+
$[2] = handleChange;
|
|
47
|
+
$[3] = inputId;
|
|
48
|
+
$[4] = labelId;
|
|
49
|
+
$[5] = placeholder;
|
|
50
|
+
$[6] = t2;
|
|
51
|
+
} else {
|
|
52
|
+
t2 = $[6];
|
|
53
|
+
}
|
|
54
|
+
return t2;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useId","SearchIcon","baseClass","ItemSearch","t0","$","placeholder","setSearchTerm","inputId","labelId","t1","e","target","value","handleChange","t2","_jsxs","className","children","_jsx","htmlFor","id","onChange","type"],"sources":["../../../../src/elements/ItemsDrawer/ItemSearch/index.tsx"],"sourcesContent":["'use client'\nimport React, { useId } from 'react'\n\nimport { SearchIcon } from '../../../icons/Search/index.js'\nimport './index.scss'\n\nconst baseClass = 'item-search'\n\nexport type Props = {\n readonly placeholder?: string\n readonly setSearchTerm: (term: string) => void\n}\n\nexport const ItemSearch: React.FC<Props> = ({ placeholder, setSearchTerm }) => {\n const inputId = useId()\n const labelId = `${inputId}-label`\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchTerm(e.target.value)\n }\n\n return (\n <div className={baseClass}>\n <label className=\"sr-only\" htmlFor={inputId} id={labelId}>\n {placeholder}\n </label>\n <input\n aria-labelledby={labelId}\n className={`${baseClass}__input`}\n id={inputId}\n onChange={handleChange}\n placeholder={placeholder}\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,KAAK,QAAQ;AAE7B,SAASC,UAAU,QAAQ;AAC3B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAOlB,OAAO,MAAMC,UAAA,GAA8BC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAC;IAAAQ,WAAA;IAAAC;EAAA,IAAAH,EAA8B;EACxE,MAAAI,OAAA,GAAgBR,KAAA;EAChB,MAAAS,OAAA,GAAgB,GAAGD,OAAA,QAAe;EAAA,IAAAE,EAAA;EAAA,IAAAL,CAAA,QAAAE,aAAA;IAEbG,EAAA,GAAAC,CAAA;MACnBJ,aAAA,CAAcI,CAAA,CAAAC,MAAA,CAAAC,KAAc;IAAA;IAC9BR,CAAA,MAAAE,aAAA;IAAAF,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAFA,MAAAS,YAAA,GAAqBJ,EAErB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAS,YAAA,IAAAT,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAI,OAAA,IAAAJ,CAAA,QAAAC,WAAA;IAGES,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAAf,SAAA;MAAAgB,QAAA,GACCC,IAAA,CAAC;QAAAF,SAAA,EAAgB;QAAAG,OAAA,EAAmBZ,OAAA;QAAAa,EAAA,EAAaZ,OAAA;QAAAS,QAAA,EAC9CZ;MAAA,C,GAEHa,IAAA,CAAC;QAAA,mBACkBV,OAAA;QAAAQ,SAAA,EACN,GAAAf,SAAA,SAAqB;QAAAmB,EAAA,EAC5Bb,OAAA;QAAAc,QAAA,EACMR,YAAA;QAAAR,WAAA;QAAAiB,IAAA,EAEL;MAAA,C,GAEPJ,IAAA,CAAAlB,UAAA,IAAC;IAAA,C;;;;;;;;;SAZHc,E;CAeJ","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
@import '../../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
$icon-width: base(2);
|
|
4
|
+
$icon-margin: base(0.25);
|
|
5
|
+
|
|
6
|
+
@layer payload-default {
|
|
7
|
+
.item-search {
|
|
8
|
+
position: sticky;
|
|
9
|
+
top: 0;
|
|
10
|
+
display: flex;
|
|
11
|
+
width: 100%;
|
|
12
|
+
align-items: center;
|
|
13
|
+
z-index: 1;
|
|
14
|
+
|
|
15
|
+
&__input {
|
|
16
|
+
@include formInput;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.icon--search {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 50%;
|
|
22
|
+
transform: translate3d(0, -50%, 0);
|
|
23
|
+
right: 0;
|
|
24
|
+
width: $icon-width;
|
|
25
|
+
margin: 0 $icon-margin;
|
|
26
|
+
|
|
27
|
+
.stroke {
|
|
28
|
+
stroke: var(--theme-elevation-300);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@include mid-break {
|
|
33
|
+
&__input {
|
|
34
|
+
margin-bottom: 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClientBlock, ClientWidget, Labels } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import './index.scss';
|
|
4
|
+
export type DrawerItem = ClientBlock | ClientWidget;
|
|
5
|
+
export type ItemsDrawerProps = {
|
|
6
|
+
readonly addRowIndex?: number;
|
|
7
|
+
readonly drawerSlug: string;
|
|
8
|
+
readonly items: (DrawerItem | string)[];
|
|
9
|
+
readonly labels?: Labels;
|
|
10
|
+
readonly onItemClick: (item: DrawerItem, index?: number) => Promise<void> | void;
|
|
11
|
+
readonly searchPlaceholder?: string;
|
|
12
|
+
readonly title?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const ItemsDrawer: React.FC<ItemsDrawerProps>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ItemsDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKhE,OAAO,KAAuC,MAAM,OAAO,CAAA;AAO3D,OAAO,cAAc,CAAA;AAGrB,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAChF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAmED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmIlD,CAAA"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { useModal } from '@faceless-ui/modal';
|
|
5
|
+
import { getTranslation } from '@payloadcms/translations';
|
|
6
|
+
import { toWords } from 'payload/shared';
|
|
7
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
+
import { DefaultBlockImage } from '../../graphics/DefaultBlockImage/index.js';
|
|
9
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
10
|
+
import { useTranslation } from '../../providers/Translation/index.js';
|
|
11
|
+
import { Drawer } from '../Drawer/index.js';
|
|
12
|
+
import { ThumbnailCard } from '../ThumbnailCard/index.js';
|
|
13
|
+
import './index.scss';
|
|
14
|
+
import { ItemSearch } from './ItemSearch/index.js';
|
|
15
|
+
const baseClass = 'items-drawer';
|
|
16
|
+
const getItemLabel = (item, i18n) => {
|
|
17
|
+
// Handle ClientBlock
|
|
18
|
+
if ('labels' in item && item.labels?.singular) {
|
|
19
|
+
if (typeof item.labels.singular === 'string') {
|
|
20
|
+
return item.labels.singular.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
if (typeof item.labels.singular === 'object') {
|
|
23
|
+
return getTranslation(item.labels.singular, i18n).toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Handle ClientWidget with label (already resolved from function on server)
|
|
27
|
+
if ('label' in item && item.label) {
|
|
28
|
+
if (typeof item.label === 'string') {
|
|
29
|
+
return item.label.toLowerCase();
|
|
30
|
+
}
|
|
31
|
+
if (typeof item.label === 'object') {
|
|
32
|
+
return getTranslation(item.label, i18n).toLowerCase();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Fallback to slug
|
|
36
|
+
if ('slug' in item) {
|
|
37
|
+
return toWords(item.slug).toLowerCase();
|
|
38
|
+
}
|
|
39
|
+
return '';
|
|
40
|
+
};
|
|
41
|
+
const getItemSlug = item => {
|
|
42
|
+
return item.slug;
|
|
43
|
+
};
|
|
44
|
+
const getItemImageInfo = item => {
|
|
45
|
+
if ('imageURL' in item) {
|
|
46
|
+
return {
|
|
47
|
+
imageAltText: item.imageAltText,
|
|
48
|
+
imageURL: item.imageURL
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
imageAltText: undefined,
|
|
53
|
+
imageURL: undefined
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const getItemDisplayLabel = (item, i18n) => {
|
|
57
|
+
// Handle ClientBlock
|
|
58
|
+
if ('labels' in item && item.labels?.singular) {
|
|
59
|
+
return getTranslation(item.labels.singular, i18n);
|
|
60
|
+
}
|
|
61
|
+
// Handle ClientWidget with label (already resolved from function on server)
|
|
62
|
+
if ('label' in item && item.label) {
|
|
63
|
+
if (typeof item.label === 'string') {
|
|
64
|
+
return item.label;
|
|
65
|
+
}
|
|
66
|
+
if (typeof item.label === 'object') {
|
|
67
|
+
return getTranslation(item.label, i18n);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Fallback to slug - convert to human-readable label
|
|
71
|
+
return toWords(item.slug);
|
|
72
|
+
};
|
|
73
|
+
export const ItemsDrawer = props => {
|
|
74
|
+
const {
|
|
75
|
+
addRowIndex,
|
|
76
|
+
drawerSlug,
|
|
77
|
+
items,
|
|
78
|
+
labels,
|
|
79
|
+
onItemClick,
|
|
80
|
+
searchPlaceholder,
|
|
81
|
+
title
|
|
82
|
+
} = props;
|
|
83
|
+
const [searchTerm, setSearchTerm] = useState('');
|
|
84
|
+
const [filteredItems, setFilteredItems] = useState(items);
|
|
85
|
+
const {
|
|
86
|
+
closeModal,
|
|
87
|
+
isModalOpen
|
|
88
|
+
} = useModal();
|
|
89
|
+
const {
|
|
90
|
+
i18n,
|
|
91
|
+
t
|
|
92
|
+
} = useTranslation();
|
|
93
|
+
const {
|
|
94
|
+
config
|
|
95
|
+
} = useConfig();
|
|
96
|
+
const itemGroups = useMemo(() => {
|
|
97
|
+
const groups = {
|
|
98
|
+
_none: []
|
|
99
|
+
};
|
|
100
|
+
filteredItems.forEach(item => {
|
|
101
|
+
if (typeof item === 'object' && 'admin' in item && item.admin?.group) {
|
|
102
|
+
const group = item.admin.group;
|
|
103
|
+
const label = typeof group === 'string' ? group : getTranslation(group, i18n);
|
|
104
|
+
if (Object.hasOwn(groups, label)) {
|
|
105
|
+
groups[label].push(item);
|
|
106
|
+
} else {
|
|
107
|
+
groups[label] = [item];
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
groups._none.push(item);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return groups;
|
|
114
|
+
}, [filteredItems, i18n]);
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
if (!isModalOpen(drawerSlug)) {
|
|
117
|
+
setSearchTerm('');
|
|
118
|
+
}
|
|
119
|
+
}, [isModalOpen, drawerSlug]);
|
|
120
|
+
useEffect(() => {
|
|
121
|
+
const searchTermToUse = searchTerm.toLowerCase();
|
|
122
|
+
const matchingItems = items?.reduce((matchedItems, _item) => {
|
|
123
|
+
let item_0;
|
|
124
|
+
if (typeof _item === 'string') {
|
|
125
|
+
// Handle string references (for blocks)
|
|
126
|
+
item_0 = config.blocksMap?.[_item];
|
|
127
|
+
} else {
|
|
128
|
+
item_0 = _item;
|
|
129
|
+
}
|
|
130
|
+
if (item_0) {
|
|
131
|
+
const itemLabel = getItemLabel(item_0, i18n);
|
|
132
|
+
if (itemLabel.includes(searchTermToUse)) {
|
|
133
|
+
matchedItems.push(item_0);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return matchedItems;
|
|
137
|
+
}, []);
|
|
138
|
+
setFilteredItems(matchingItems || []);
|
|
139
|
+
}, [searchTerm, items, i18n, config.blocksMap]);
|
|
140
|
+
const finalTitle = title || (labels ? t('fields:addLabel', {
|
|
141
|
+
label: getTranslation(labels.singular, i18n)
|
|
142
|
+
}) : t('fields:addNew'));
|
|
143
|
+
return /*#__PURE__*/_jsxs(Drawer, {
|
|
144
|
+
slug: drawerSlug,
|
|
145
|
+
title: finalTitle,
|
|
146
|
+
children: [/*#__PURE__*/_jsx(ItemSearch, {
|
|
147
|
+
placeholder: searchPlaceholder || t('fields:searchForBlock'),
|
|
148
|
+
setSearchTerm: setSearchTerm
|
|
149
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
150
|
+
className: `${baseClass}__items-wrapper`,
|
|
151
|
+
children: /*#__PURE__*/_jsx("ul", {
|
|
152
|
+
className: `${baseClass}__item-groups`,
|
|
153
|
+
children: Object.entries(itemGroups).map(([groupLabel, groupItems]) => !groupItems.length ? null : /*#__PURE__*/_jsxs("li", {
|
|
154
|
+
className: [`${baseClass}__item-group`, groupLabel === '_none' && `${baseClass}__item-group-none`].filter(Boolean).join(' '),
|
|
155
|
+
children: [groupLabel !== '_none' && /*#__PURE__*/_jsx("h3", {
|
|
156
|
+
className: `${baseClass}__item-group-label`,
|
|
157
|
+
children: groupLabel
|
|
158
|
+
}), /*#__PURE__*/_jsx("ul", {
|
|
159
|
+
className: `${baseClass}__items`,
|
|
160
|
+
children: groupItems.map((_item_0, index) => {
|
|
161
|
+
const item_1 = typeof _item_0 === 'string' ? config.blocksMap?.[_item_0] : _item_0;
|
|
162
|
+
if (!item_1) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const {
|
|
166
|
+
imageAltText,
|
|
167
|
+
imageURL
|
|
168
|
+
} = getItemImageInfo(item_1);
|
|
169
|
+
const displayLabel = getItemDisplayLabel(item_1, i18n);
|
|
170
|
+
return /*#__PURE__*/_jsx("li", {
|
|
171
|
+
className: `${baseClass}__item`,
|
|
172
|
+
children: /*#__PURE__*/_jsx(ThumbnailCard, {
|
|
173
|
+
alignLabel: "center",
|
|
174
|
+
label: displayLabel,
|
|
175
|
+
onClick: () => {
|
|
176
|
+
void onItemClick(item_1, addRowIndex);
|
|
177
|
+
closeModal(drawerSlug);
|
|
178
|
+
},
|
|
179
|
+
thumbnail: /*#__PURE__*/_jsx("div", {
|
|
180
|
+
className: `${baseClass}__default-image`,
|
|
181
|
+
children: imageURL ? /*#__PURE__*/_jsx("img", {
|
|
182
|
+
alt: imageAltText,
|
|
183
|
+
src: imageURL
|
|
184
|
+
}) : /*#__PURE__*/_jsx(DefaultBlockImage, {})
|
|
185
|
+
})
|
|
186
|
+
})
|
|
187
|
+
}, index);
|
|
188
|
+
})
|
|
189
|
+
})]
|
|
190
|
+
}, groupLabel))
|
|
191
|
+
})
|
|
192
|
+
})]
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","getTranslation","toWords","React","useEffect","useMemo","useState","DefaultBlockImage","useConfig","useTranslation","Drawer","ThumbnailCard","ItemSearch","baseClass","getItemLabel","item","i18n","labels","singular","toLowerCase","label","slug","getItemSlug","getItemImageInfo","imageAltText","imageURL","undefined","getItemDisplayLabel","ItemsDrawer","props","addRowIndex","drawerSlug","items","onItemClick","searchPlaceholder","title","searchTerm","setSearchTerm","filteredItems","setFilteredItems","closeModal","isModalOpen","t","config","itemGroups","groups","_none","forEach","admin","group","Object","hasOwn","push","searchTermToUse","matchingItems","reduce","matchedItems","_item","blocksMap","itemLabel","includes","finalTitle","_jsxs","_jsx","placeholder","className","entries","map","groupLabel","groupItems","length","filter","Boolean","join","index","displayLabel","alignLabel","onClick","thumbnail","alt","src"],"sources":["../../../src/elements/ItemsDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock, ClientWidget, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { toWords } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { DefaultBlockImage } from '../../graphics/DefaultBlockImage/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ThumbnailCard } from '../ThumbnailCard/index.js'\nimport './index.scss'\nimport { ItemSearch } from './ItemSearch/index.js'\n\nexport type DrawerItem = ClientBlock | ClientWidget\n\nexport type ItemsDrawerProps = {\n readonly addRowIndex?: number\n readonly drawerSlug: string\n readonly items: (DrawerItem | string)[]\n readonly labels?: Labels\n readonly onItemClick: (item: DrawerItem, index?: number) => Promise<void> | void\n readonly searchPlaceholder?: string\n readonly title?: string\n}\n\nconst baseClass = 'items-drawer'\n\nconst getItemLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n if (typeof item.labels.singular === 'string') {\n return item.labels.singular.toLowerCase()\n }\n if (typeof item.labels.singular === 'object') {\n return getTranslation(item.labels.singular, i18n).toLowerCase()\n }\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label.toLowerCase()\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n).toLowerCase()\n }\n }\n\n // Fallback to slug\n if ('slug' in item) {\n return toWords(item.slug).toLowerCase()\n }\n\n return ''\n}\n\nconst getItemSlug = (item: DrawerItem): string => {\n return item.slug\n}\n\nconst getItemImageInfo = (item: DrawerItem) => {\n if ('imageURL' in item) {\n return {\n imageAltText: item.imageAltText,\n imageURL: item.imageURL,\n }\n }\n return { imageAltText: undefined, imageURL: undefined }\n}\n\nconst getItemDisplayLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n return getTranslation(item.labels.singular, i18n)\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n)\n }\n }\n\n // Fallback to slug - convert to human-readable label\n return toWords(item.slug)\n}\n\nexport const ItemsDrawer: React.FC<ItemsDrawerProps> = (props) => {\n const { addRowIndex, drawerSlug, items, labels, onItemClick, searchPlaceholder, title } = props\n\n const [searchTerm, setSearchTerm] = useState('')\n const [filteredItems, setFilteredItems] = useState(items)\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const { config } = useConfig()\n\n const itemGroups = useMemo(() => {\n const groups: Record<string, (DrawerItem | string)[]> = {\n _none: [],\n }\n filteredItems.forEach((item) => {\n if (typeof item === 'object' && 'admin' in item && item.admin?.group) {\n const group = item.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(item)\n } else {\n groups[label] = [item]\n }\n } else {\n groups._none.push(item)\n }\n })\n return groups\n }, [filteredItems, i18n])\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTerm('')\n }\n }, [isModalOpen, drawerSlug])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingItems = items?.reduce((matchedItems, _item) => {\n let item: DrawerItem\n\n if (typeof _item === 'string') {\n // Handle string references (for blocks)\n item = config.blocksMap?.[_item] as DrawerItem\n } else {\n item = _item\n }\n\n if (item) {\n const itemLabel = getItemLabel(item, i18n)\n if (itemLabel.includes(searchTermToUse)) {\n matchedItems.push(item)\n }\n }\n return matchedItems\n }, [] as DrawerItem[])\n\n setFilteredItems(matchingItems || [])\n }, [searchTerm, items, i18n, config.blocksMap])\n\n const finalTitle =\n title ||\n (labels\n ? t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })\n : t('fields:addNew'))\n\n return (\n <Drawer slug={drawerSlug} title={finalTitle}>\n <ItemSearch\n placeholder={searchPlaceholder || t('fields:searchForBlock')}\n setSearchTerm={setSearchTerm}\n />\n <div className={`${baseClass}__items-wrapper`}>\n <ul className={`${baseClass}__item-groups`}>\n {Object.entries(itemGroups).map(([groupLabel, groupItems]) =>\n !groupItems.length ? null : (\n <li\n className={[\n `${baseClass}__item-group`,\n groupLabel === '_none' && `${baseClass}__item-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__item-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__items`}>\n {groupItems.map((_item, index) => {\n const item =\n typeof _item === 'string' ? (config.blocksMap?.[_item] as DrawerItem) : _item\n\n if (!item) {\n return null\n }\n\n const { imageAltText, imageURL } = getItemImageInfo(item)\n const displayLabel = getItemDisplayLabel(item, i18n)\n\n return (\n <li className={`${baseClass}__item`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={displayLabel}\n onClick={() => {\n void onItemClick(item, addRowIndex)\n closeModal(drawerSlug)\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
@import '../../scss/styles.scss';
|
|
2
|
+
|
|
3
|
+
@layer payload-default {
|
|
4
|
+
.items-drawer {
|
|
5
|
+
&__items-wrapper {
|
|
6
|
+
padding-top: base(1.5);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
&__items {
|
|
10
|
+
position: relative;
|
|
11
|
+
padding: 0;
|
|
12
|
+
list-style: none;
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: repeat(6, 1fr);
|
|
15
|
+
gap: base(1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&__default-image {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
width: 100%;
|
|
23
|
+
aspect-ratio: 3 / 2;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
|
|
26
|
+
img,
|
|
27
|
+
svg {
|
|
28
|
+
width: 100%;
|
|
29
|
+
height: 100%;
|
|
30
|
+
object-fit: cover;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&__item-groups {
|
|
35
|
+
padding: 0;
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
gap: base(1.5);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&__item-group {
|
|
42
|
+
list-style: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&__item-group-label {
|
|
46
|
+
padding-bottom: base(0.5);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&__item-group-none {
|
|
50
|
+
order: 1;
|
|
51
|
+
padding-top: base(1.5);
|
|
52
|
+
border-top: 1px solid var(--theme-border-color);
|
|
53
|
+
|
|
54
|
+
&:only-child {
|
|
55
|
+
padding-top: 0;
|
|
56
|
+
border-top: 0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@include large-break {
|
|
61
|
+
&__items {
|
|
62
|
+
grid-template-columns: repeat(5, 1fr);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@include mid-break {
|
|
67
|
+
&__items-wrapper {
|
|
68
|
+
padding-top: base(1.75);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&__items {
|
|
72
|
+
grid-template-columns: repeat(3, 1fr);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&__item-groups {
|
|
76
|
+
gap: base(1.75);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&__item-group-none {
|
|
80
|
+
padding-top: base(1.75);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@include small-break {
|
|
85
|
+
&__items-wrapper {
|
|
86
|
+
padding-top: base(0.75);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&__items {
|
|
90
|
+
grid-template-columns: repeat(2, 1fr);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&__item-groups {
|
|
94
|
+
gap: base(0.75);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&__item-group-none {
|
|
98
|
+
padding-top: base(0.75);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ;eA4E2mF,MAAO,SAAS;2CA5EnjF,CAAA;AAgBtF,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkDhC,CAAA"}
|
|
@@ -43,8 +43,8 @@ export const Link = ({
|
|
|
43
43
|
if (preventDefault) {
|
|
44
44
|
e.preventDefault();
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
const url = typeof href === 'string' ? href : formatUrl(href);
|
|
47
|
+
const navigate = () => {
|
|
48
48
|
if (replace) {
|
|
49
49
|
void router.replace(url, {
|
|
50
50
|
scroll
|
|
@@ -54,7 +54,9 @@ export const Link = ({
|
|
|
54
54
|
scroll
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
};
|
|
58
|
+
// Call startRouteTransition if available, otherwise navigate directly
|
|
59
|
+
startRouteTransition(navigate);
|
|
58
60
|
},
|
|
59
61
|
ref: ref,
|
|
60
62
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n
|
|
1
|
+
{"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","navigate","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n const navigate = () => {\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n }\n\n // Call startRouteTransition if available, otherwise navigate directly\n startRouteTransition(navigate)\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAW,aAAaL,cAAA,GAAiBA,cAAA,CAAeM,OAAO,GAAGN,cAAA;AAExE;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEA,MAAMS,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;MAExD,MAAMY,QAAA,GAAWA,CAAA;QACf,IAAIR,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOM,IAAI,CAACF,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;MAEA;MACAG,oBAAA,CAAqBI,QAAA;IACvB;IACAT,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkOpD,CAAA"}
|