@payloadcms/ui 3.0.0-alpha.60 → 3.0.0-alpha.62
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/@types/assets.d.js.map +1 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.js +4 -1
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Banner/index.js.map +1 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/Card/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/CodeEditor/index.js.map +1 -1
- package/dist/elements/CodeEditor/types.js.map +1 -1
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/provider.js.map +1 -1
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +4 -4
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/getFormattedLocale.d.ts +2 -0
- package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -0
- package/dist/elements/DatePicker/getFormattedLocale.js +12 -0
- package/dist/elements/DatePicker/getFormattedLocale.js.map +1 -0
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/types.js.map +1 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- 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 +21 -5
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/DocumentHeader/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
- package/dist/elements/DraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/types.js.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
- package/dist/elements/Dropzone/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/index.js +2 -2
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/ErrorPill/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
- package/dist/elements/FileDetails/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js.map +1 -1
- package/dist/elements/Gutter/index.js.map +1 -1
- package/dist/elements/Hamburger/index.js.map +1 -1
- package/dist/elements/HydrateClientUser/index.d.ts +3 -2
- package/dist/elements/HydrateClientUser/index.d.ts.map +1 -1
- package/dist/elements/HydrateClientUser/index.js.map +1 -1
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/ListControls/index.js +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListDrawer/types.js.map +1 -1
- package/dist/elements/ListSelection/index.js.map +1 -1
- package/dist/elements/Loading/index.js.map +1 -1
- package/dist/elements/LoadingOverlay/index.js.map +1 -1
- package/dist/elements/LoadingOverlay/reducer.js.map +1 -1
- package/dist/elements/LoadingOverlay/types.js.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
- package/dist/elements/Nav/NavToggler/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/elements/NavGroup/index.js.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
- package/dist/elements/Pagination/Page/index.js.map +1 -1
- package/dist/elements/Pagination/Separator/index.js.map +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/PerPage/index.js.map +1 -1
- package/dist/elements/Pill/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
- package/dist/elements/Popup/PopupTrigger/types.js.map +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
- package/dist/elements/PreviewSizes/index.js.map +1 -1
- package/dist/elements/Publish/index.js +1 -1
- package/dist/elements/Publish/index.js.map +1 -1
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
- package/dist/elements/ReactSelect/Control/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
- package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RenderCustomComponent/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/Save/index.js.map +1 -1
- package/dist/elements/SaveDraft/index.js.map +1 -1
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/SelectAll/index.js.map +1 -1
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/SortComplex/index.js.map +1 -1
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/SetStepNav.js.map +1 -1
- package/dist/elements/StepNav/index.d.ts +2 -1
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js +5 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/reducer.js.map +1 -1
- package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +1 -0
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/columnReducer.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Translation/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/ViewDescription/index.js.map +1 -1
- package/dist/elements/ViewDescription/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/types.js.map +1 -1
- package/dist/elements/WhereBuilder/field-types.js.map +1 -1
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
- package/dist/elements/WhereBuilder/transformWhereQuery.js.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
- package/dist/elements/WindowInfo/index.js.map +1 -1
- package/dist/elements/withMergedProps/index.d.ts +2 -1
- package/dist/elements/withMergedProps/index.d.ts.map +1 -1
- package/dist/elements/withMergedProps/index.js +7 -1
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/elements.d.ts +3 -2
- package/dist/exports/elements.d.ts.map +1 -1
- package/dist/exports/elements.js +5 -2
- package/dist/exports/elements.js.map +1 -1
- package/dist/exports/fields.d.ts +2 -0
- package/dist/exports/fields.d.ts.map +1 -0
- package/dist/exports/fields.js +3 -0
- package/dist/exports/fields.js.map +1 -0
- package/dist/exports/providers.d.ts +2 -0
- package/dist/exports/providers.d.ts.map +1 -0
- package/dist/exports/providers.js +3 -0
- package/dist/exports/providers.js.map +1 -0
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +3 -2
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +3 -2
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Checkbox/types.js.map +1 -1
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +27 -21
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Group/provider.js.map +1 -1
- package/dist/fields/HiddenInput/index.d.ts +1 -1
- package/dist/fields/HiddenInput/index.d.ts.map +1 -1
- package/dist/fields/HiddenInput/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +1 -0
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +20 -1
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/AddNew/index.js.map +1 -1
- package/dist/fields/Relationship/AddNew/types.js.map +1 -1
- package/dist/fields/Relationship/AddNew/useRelatedCollections.js.map +1 -1
- package/dist/fields/Relationship/createRelationMap.js.map +1 -1
- package/dist/fields/Relationship/findOptionsByValue.js.map +1 -1
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/RichText/index.js.map +1 -1
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Row/provider.js.map +1 -1
- package/dist/fields/Row/types.js.map +1 -1
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +27 -23
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Tabs/provider.js.map +1 -1
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.js.map +1 -1
- package/dist/fields/UI/index.js.map +1 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/Upload/types.js.map +1 -1
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/shared/index.d.ts +1 -0
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/FieldDescription/index.js.map +1 -1
- package/dist/forms/FieldError/index.js.map +1 -1
- package/dist/forms/FieldLabel/index.js.map +1 -1
- package/dist/forms/FieldPropsProvider/index.d.ts +2 -0
- package/dist/forms/FieldPropsProvider/index.d.ts.map +1 -1
- package/dist/forms/FieldPropsProvider/index.js +5 -3
- package/dist/forms/FieldPropsProvider/index.js.map +1 -1
- package/dist/forms/Form/context.js.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
- package/dist/forms/Form/errorMessages.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +53 -0
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/getDataByPath.js.map +1 -1
- package/dist/forms/Form/getSiblingData.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +3 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/initContextState.js.map +1 -1
- package/dist/forms/Form/mergeErrorPaths.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/forms/Form/rows.js.map +1 -1
- package/dist/forms/Form/types.d.ts +8 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts +1 -0
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +2 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/index.d.ts.map +1 -1
- package/dist/forms/RenderFields/index.js +2 -1
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/RowLabel/index.js.map +1 -1
- package/dist/forms/RowLabel/types.js.map +1 -1
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
- package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js.map +1 -1
- package/dist/forms/WatchChildErrors/getNestedFieldState.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js.map +1 -1
- package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.js.map +1 -1
- package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.js.map +1 -1
- package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.js.map +1 -1
- package/dist/forms/buildStateFromSchema/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/forms/withCondition/WatchCondition.js.map +1 -1
- package/dist/forms/withCondition/index.js.map +1 -1
- package/dist/graphics/Account/Default/index.js.map +1 -1
- package/dist/graphics/Account/Gravatar/index.js.map +1 -1
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/graphics/DefaultBlockImage/index.js.map +1 -1
- package/dist/graphics/ExternalLink/index.js.map +1 -1
- package/dist/graphics/File/index.js.map +1 -1
- package/dist/graphics/Icon/index.js.map +1 -1
- package/dist/graphics/Logo/index.js.map +1 -1
- package/dist/graphics/Search/index.js.map +1 -1
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useHotkey.js.map +1 -1
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/useResize.js.map +1 -1
- package/dist/hooks/useThrottledEffect.js.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/icons/Calendar/index.js.map +1 -1
- package/dist/icons/Check/index.js.map +1 -1
- package/dist/icons/Chevron/index.js.map +1 -1
- package/dist/icons/CloseMenu/index.js.map +1 -1
- package/dist/icons/CodeBlock/index.js.map +1 -1
- package/dist/icons/Copy/index.js.map +1 -1
- package/dist/icons/DragHandle/index.js.map +1 -1
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/icons/Line/index.js.map +1 -1
- package/dist/icons/Link/index.js.map +1 -1
- package/dist/icons/LogOut/index.js.map +1 -1
- package/dist/icons/Menu/index.js.map +1 -1
- package/dist/icons/MinimizeMaximize/index.js.map +1 -1
- package/dist/icons/More/index.js.map +1 -1
- package/dist/icons/Plus/index.js.map +1 -1
- package/dist/icons/Search/index.js.map +1 -1
- package/dist/icons/Swap/index.js.map +1 -1
- package/dist/icons/X/index.js.map +1 -1
- package/dist/providers/Actions/SetViewActions/index.js.map +1 -1
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ClientFunction/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/WithServerSideProps.d.ts +3 -0
- package/dist/providers/ComponentMap/buildComponentMap/WithServerSideProps.d.ts.map +1 -0
- package/dist/providers/ComponentMap/buildComponentMap/WithServerSideProps.js +19 -0
- package/dist/providers/ComponentMap/buildComponentMap/WithServerSideProps.js.map +1 -0
- package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts +2 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.js +7 -3
- package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +5 -2
- package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.js +36 -14
- package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +4 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +75 -18
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +5 -2
- package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/globals.js +20 -6
- package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.d.ts +4 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.js +22 -4
- package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +2 -0
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
- package/dist/providers/ComponentMap/index.d.ts +1 -0
- package/dist/providers/ComponentMap/index.d.ts.map +1 -1
- package/dist/providers/ComponentMap/index.js +1 -0
- package/dist/providers/ComponentMap/index.js.map +1 -1
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentEvents/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/EditDepth/index.js.map +1 -1
- package/dist/providers/EntityVisibility/index.js.map +1 -1
- package/dist/providers/FieldComponents/index.js.map +1 -1
- package/dist/providers/FormQueryParams/index.js.map +1 -1
- package/dist/providers/FormQueryParams/types.js.map +1 -1
- package/dist/providers/ListInfo/index.js.map +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/Locale/index.js +1 -1
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Operation/index.js.map +1 -1
- package/dist/providers/Params/index.js.map +1 -1
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts +4 -3
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +3 -2
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/SearchParams/index.js.map +1 -1
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Translation/index.d.ts +4 -3
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js +20 -6
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/scss/app.scss +2 -3
- package/dist/scss/vars.scss +0 -7
- package/dist/templates/Default/NavHamburger/index.js.map +1 -1
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/templates/Minimal/index.js.map +1 -1
- package/dist/utilities/api.js.map +1 -1
- package/dist/utilities/arraysHaveSameStrings.js.map +1 -1
- package/dist/utilities/buildComponentMap.js.map +1 -1
- package/dist/utilities/canUseDOM.js.map +1 -1
- package/dist/utilities/dateLocales.js.map +1 -1
- package/dist/utilities/findLocaleFromCode.js.map +1 -1
- package/dist/utilities/flattenFieldMap.js.map +1 -1
- package/dist/utilities/formatDate.d.ts +13 -2
- package/dist/utilities/formatDate.d.ts.map +1 -1
- package/dist/utilities/formatDate.js +4 -7
- package/dist/utilities/formatDate.js.map +1 -1
- package/dist/utilities/formatDocTitle.js +5 -1
- package/dist/utilities/formatDocTitle.js.map +1 -1
- package/dist/utilities/formatFields.js.map +1 -1
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getFormState.js.map +1 -1
- package/dist/utilities/getOffsetTop.js.map +1 -1
- package/dist/utilities/getRequestLanguage.js.map +1 -1
- package/dist/utilities/getSupportedMonacoLocale.js.map +1 -1
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/dist/utilities/reduceFieldsToValues.js.map +1 -1
- package/dist/utilities/scrollToID.js.map +1 -1
- package/dist/utilities/setsAreEqual.js.map +1 -1
- package/package.json +10 -10
- package/dist/assets/fonts/SuisseIntl-Bold.woff +0 -0
- package/dist/assets/fonts/SuisseIntl-Bold.woff2 +0 -0
- package/dist/assets/fonts/SuisseIntl-Medium.woff +0 -0
- package/dist/assets/fonts/SuisseIntl-Medium.woff2 +0 -0
- package/dist/assets/fonts/SuisseIntl-SemiBold.woff +0 -0
- package/dist/assets/fonts/SuisseIntl-SemiBold.woff2 +0 -0
- package/dist/assets/fonts/SuisseIntl.woff +0 -0
- package/dist/assets/fonts/SuisseIntl.woff2 +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-900.woff +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-900.woff2 +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-900italic.woff +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-900italic.woff2 +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-italic.woff +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-italic.woff2 +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-regular.woff +0 -0
- package/dist/assets/fonts/merriweather-v30-latin-regular.woff2 +0 -0
- package/dist/scss/fonts.scss +0 -75
- package/dist/utilities/getDateLocale.d.ts +0 -7
- package/dist/utilities/getDateLocale.d.ts.map +0 -1
- package/dist/utilities/getDateLocale.js +0 -16
- package/dist/utilities/getDateLocale.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Dropzone/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n}\n\nconst baseClass = 'dropzone'\n\nexport type Props = {\n className?: string\n mimeTypes?: string[]\n onChange: (e: FileList) => void\n}\n\nexport const Dropzone: React.FC<Props> = ({ className, mimeTypes, onChange }) => {\n const dropRef = React.useRef<HTMLDivElement>(null)\n const [dragging, setDragging] = React.useState(false)\n const inputRef = React.useRef(null)\n\n const { t } = useTranslation()\n\n const handlePaste = React.useCallback(\n (e: ClipboardEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (e.clipboardData.files && e.clipboardData.files.length > 0) {\n onChange(e.clipboardData.files)\n }\n },\n [onChange],\n )\n\n const handleDragEnter = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(true)\n }, [])\n\n const handleDragLeave = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n }, [])\n\n const handleDrop = React.useCallback(\n (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n onChange(e.dataTransfer.files)\n setDragging(false)\n\n e.dataTransfer.clearData()\n }\n },\n [onChange],\n )\n\n const handleFileSelection = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n onChange(e.target.files)\n }\n },\n [onChange],\n )\n\n React.useEffect(() => {\n const div = dropRef.current\n\n if (div) {\n div.addEventListener('dragenter', handleDragEnter)\n div.addEventListener('dragleave', handleDragLeave)\n div.addEventListener('dragover', handleDragOver)\n div.addEventListener('drop', handleDrop)\n div.addEventListener('paste', handlePaste)\n\n return () => {\n div.removeEventListener('dragenter', handleDragEnter)\n div.removeEventListener('dragleave', handleDragLeave)\n div.removeEventListener('dragover', handleDragOver)\n div.removeEventListener('drop', handleDrop)\n div.removeEventListener('paste', handlePaste)\n }\n }\n\n return () => null\n }, [handleDragEnter, handleDragLeave, handleDrop, handlePaste])\n\n const classes = [baseClass, className, dragging ? 'dragging' : ''].filter(Boolean).join(' ')\n\n return (\n <div className={classes} ref={dropRef}>\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__file-button`}\n onClick={() => {\n inputRef.current.click()\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n\n <input\n accept={mimeTypes?.join(',')}\n className={`${baseClass}__hidden-input`}\n onChange={handleFileSelection}\n ref={inputRef}\n type=\"file\"\n />\n\n <p className={`${baseClass}__label`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n )\n}\n"],"names":["React","useTranslation","Button","handleDragOver","e","preventDefault","stopPropagation","baseClass","Dropzone","className","mimeTypes","onChange","dropRef","useRef","dragging","setDragging","useState","inputRef","t","handlePaste","useCallback","clipboardData","files","length","handleDragEnter","handleDragLeave","handleDrop","dataTransfer","clearData","handleFileSelection","target","useEffect","div","current","addEventListener","removeEventListener","classes","filter","Boolean","join","ref","buttonStyle","onClick","click","size","input","accept","type","p"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Dropzone/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n}\n\nconst baseClass = 'dropzone'\n\nexport type Props = {\n className?: string\n mimeTypes?: string[]\n onChange: (e: FileList) => void\n}\n\nexport const Dropzone: React.FC<Props> = ({ className, mimeTypes, onChange }) => {\n const dropRef = React.useRef<HTMLDivElement>(null)\n const [dragging, setDragging] = React.useState(false)\n const inputRef = React.useRef(null)\n\n const { t } = useTranslation()\n\n const handlePaste = React.useCallback(\n (e: ClipboardEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (e.clipboardData.files && e.clipboardData.files.length > 0) {\n onChange(e.clipboardData.files)\n }\n },\n [onChange],\n )\n\n const handleDragEnter = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(true)\n }, [])\n\n const handleDragLeave = React.useCallback((e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n }, [])\n\n const handleDrop = React.useCallback(\n (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDragging(false)\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n onChange(e.dataTransfer.files)\n setDragging(false)\n\n e.dataTransfer.clearData()\n }\n },\n [onChange],\n )\n\n const handleFileSelection = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n onChange(e.target.files)\n }\n },\n [onChange],\n )\n\n React.useEffect(() => {\n const div = dropRef.current\n\n if (div) {\n div.addEventListener('dragenter', handleDragEnter)\n div.addEventListener('dragleave', handleDragLeave)\n div.addEventListener('dragover', handleDragOver)\n div.addEventListener('drop', handleDrop)\n div.addEventListener('paste', handlePaste)\n\n return () => {\n div.removeEventListener('dragenter', handleDragEnter)\n div.removeEventListener('dragleave', handleDragLeave)\n div.removeEventListener('dragover', handleDragOver)\n div.removeEventListener('drop', handleDrop)\n div.removeEventListener('paste', handlePaste)\n }\n }\n\n return () => null\n }, [handleDragEnter, handleDragLeave, handleDrop, handlePaste])\n\n const classes = [baseClass, className, dragging ? 'dragging' : ''].filter(Boolean).join(' ')\n\n return (\n <div className={classes} ref={dropRef}>\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__file-button`}\n onClick={() => {\n inputRef.current.click()\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n\n <input\n accept={mimeTypes?.join(',')}\n className={`${baseClass}__hidden-input`}\n onChange={handleFileSelection}\n ref={inputRef}\n type=\"file\"\n />\n\n <p className={`${baseClass}__label`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n )\n}\n"],"names":["React","useTranslation","Button","handleDragOver","e","preventDefault","stopPropagation","baseClass","Dropzone","className","mimeTypes","onChange","dropRef","useRef","dragging","setDragging","useState","inputRef","t","handlePaste","useCallback","clipboardData","files","length","handleDragEnter","handleDragLeave","handleDrop","dataTransfer","clearData","handleFileSelection","target","useEffect","div","current","addEventListener","removeEventListener","classes","filter","Boolean","join","ref","buttonStyle","onClick","click","size","input","accept","type","p"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n id: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({ id, slug, singularLabel }) => {\n const { Modal, useModal } = facelessUIImport\n\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const {\n routes: { admin },\n } = useConfig()\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(`${serverURL}${api}/${slug}/${id}/duplicate?locale=${locale.code}`, {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n {\n autoClose: 3000,\n },\n )\n setModified(false)\n router.push(`${admin}/collections/${slug}/${doc.id}?locale=${locale.code}`)\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n { autoClose: 5000 },\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n api,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n setModified,\n router,\n admin,\n ],\n )\n\n const confirm = useCallback(async () => {\n setHasClicked(false)\n await handleClick(true)\n }, [handleClick])\n\n return (\n <React.Fragment>\n <PopupList.Button id=\"action-duplicate\" onClick={() => handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={confirm}>\n {t('general:duplicateWithoutSaving')}\n </Button>\n </MinimalTemplate>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useLocale","useTranslation","MinimalTemplate","requests","Button","PopupList","baseClass","DuplicateDocument","id","slug","singularLabel","Modal","useModal","router","modified","toggleModal","locale","setModified","routes","api","serverURL","admin","hasClicked","setHasClicked","i18n","t","modalSlug","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","autoClose","push","error","confirm","Fragment","onClick","className","h1","p","buttonStyle","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'duplicate'\n\nexport type Props = {\n id: string\n singularLabel: SanitizedCollectionConfig['labels']['singular']\n slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({ id, slug, singularLabel }) => {\n const { Modal, useModal } = facelessUIImport\n\n const router = useRouter()\n const modified = useFormModified()\n const { toggleModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const {\n routes: { admin },\n } = useConfig()\n const [hasClicked, setHasClicked] = useState<boolean>(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const handleClick = useCallback(\n async (override = false) => {\n setHasClicked(true)\n\n if (modified && !override) {\n toggleModal(modalSlug)\n return\n }\n await requests\n .post(`${serverURL}${api}/${slug}/${id}/duplicate?locale=${locale.code}`, {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n })\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n {\n autoClose: 3000,\n },\n )\n setModified(false)\n router.push(`${admin}/collections/${slug}/${doc.id}?locale=${locale.code}`)\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n { autoClose: 5000 },\n )\n }\n })\n },\n [\n locale,\n modified,\n serverURL,\n api,\n slug,\n id,\n i18n,\n toggleModal,\n modalSlug,\n t,\n singularLabel,\n setModified,\n router,\n admin,\n ],\n )\n\n const confirm = useCallback(async () => {\n setHasClicked(false)\n await handleClick(true)\n }, [handleClick])\n\n return (\n <React.Fragment>\n <PopupList.Button id=\"action-duplicate\" onClick={() => handleClick(false)}>\n {t('general:duplicate')}\n </PopupList.Button>\n {modified && hasClicked && (\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('general:confirmDuplication')}</h1>\n <p>{t('general:unsavedChangesDuplicate')}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={() => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-duplicate\" onClick={confirm}>\n {t('general:duplicateWithoutSaving')}\n </Button>\n </MinimalTemplate>\n </Modal>\n )}\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","toast","useForm","useFormModified","useConfig","useLocale","useTranslation","MinimalTemplate","requests","Button","PopupList","baseClass","DuplicateDocument","id","slug","singularLabel","Modal","useModal","router","modified","toggleModal","locale","setModified","routes","api","serverURL","admin","hasClicked","setHasClicked","i18n","t","modalSlug","handleClick","override","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","autoClose","push","error","confirm","Fragment","onClick","className","h1","p","buttonStyle","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -206,10 +206,10 @@ export const EditMany = (props)=>{
|
|
|
206
206
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
207
207
|
className: `${baseClass}__document-actions`
|
|
208
208
|
}, collection?.versions?.drafts ? /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Publish, {
|
|
209
|
-
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}`,
|
|
209
|
+
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`,
|
|
210
210
|
disabled: selected.length === 0
|
|
211
211
|
}), /*#__PURE__*/ React.createElement(SaveDraft, {
|
|
212
|
-
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}`,
|
|
212
|
+
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`,
|
|
213
213
|
disabled: selected.length === 0
|
|
214
214
|
})) : /*#__PURE__*/ React.createElement(Submit, {
|
|
215
215
|
action: `${serverURL}${apiRoute}/${slug}${getQueryParams()}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\nconst Publish: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\nconst SaveDraft: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { useModal } = facelessUIImport\n\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <Publish\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n <SaveDraft\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","X","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","Publish","overrides","_status","SaveDraft","EditMany","props","useModal","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"mappings":"AAAA;AAGA,YAAYA,sBAAsB,qBAAoB;AACtD,SAASC,cAAc,QAAQ,2BAA0B;AACzD,SAASC,SAAS,QAAQ,qBAAoB;AAC9C,OAAOC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAO;AAIpD,SAASC,OAAO,QAAQ,8BAA6B;AACrD,SAASC,IAAI,QAAQ,4BAA2B;AAChD,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,CAAC,QAAQ,yBAAwB;AAC1C,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,oBAAoB,QAAQ,wCAAuC;AAC5E,SAASC,gBAAgB,QAAQ,qCAAoC;AACrE,SAASC,aAAa,QAAQ,sCAAqC;AACnE,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,eAAe,EAAEC,YAAY,QAAQ,qCAAoC;AAClF,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,YAAY,QAAQ,kCAAiC;AAC9D,SAASC,MAAM,EAAEC,aAAa,QAAQ,qBAAoB;AAC1D,SAASC,WAAW,QAAQ,0BAAyB;AAGrD,MAAMC,YAAY;AAWlB,MAAMC,SAA0D,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAE;IACnF,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRC,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,oBAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;OACvED,EAAE;AAGT;AACA,MAAMM,UAA2D,CAAC,EAAET,MAAM,EAAEC,QAAQ,EAAE;IACpF,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRK,WAAW;gBACTC,SAAS;YACX;YACAL,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,oBAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,SAAS,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;OAC1ED,EAAE;AAGT;AACA,MAAMS,YAA6D,CAAC,EAAEZ,MAAM,EAAEC,QAAQ,EAAE;IACtF,MAAM,EAAEC,MAAM,EAAE,GAAGtB;IACnB,MAAM,EAAEuB,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAO1B,YAAY;QACvB,KAAKwB,OAAO;YACVF;YACAK,QAAQ;YACRK,WAAW;gBACTC,SAAS;YACX;YACAL,gBAAgB;QAClB;IACF,GAAG;QAACN;QAAQE;KAAO;IAEnB,qBACE,oBAACnB;QAAWwB,WAAW,CAAC,EAAET,UAAU,OAAO,CAAC;QAAEG,UAAUA;QAAUO,SAASJ;OACxED,EAAE;AAGT;AACA,OAAO,MAAMU,WAAoC,CAACC;IAChD,MAAM,EAAEC,QAAQ,EAAE,GAAGzC;IAErB,MAAM,EAAE0C,YAAY,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,EAAEH,UAAU,EAAEI,QAAQ,EAAE,GAAGN;IAEhF,MAAM,EAAEO,WAAW,EAAE,GAAGpC;IACxB,MAAM,EAAEqC,UAAU,EAAE,GAAGP;IACvB,MAAM,EACJQ,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,GAAGxC;IACJ,MAAM,EAAEyC,KAAK,EAAEC,cAAc,EAAEC,SAAS,EAAE,GAAGrC;IAC7C,MAAM,EAAEsC,IAAI,EAAE3B,CAAC,EAAE,GAAGV;IACpB,MAAM,CAACsC,UAAUC,YAAY,GAAGrD,SAAS,EAAE;IAC3C,MAAM,EAAEsD,eAAe,EAAE,GAAG3C;IAC5B,MAAM4C,SAAS1D;IACf,MAAM,CAAC2D,cAAcC,gBAAgB,GAAGzD;IACxC,MAAM0D,sBAAsB5D,MAAM6D,MAAM,CAAC;IACzC,MAAM,EAAEC,eAAe,EAAE,GAAGlD;IAE5B,MAAMmD,wBAAwBnB,aAAaoB,aAAa,CAACxB,KAAK;IAC9D,MAAMyB,sBAAsBF,uBAAuBG,QAAQC;IAE3D,MAAMC,aAAa,CAAC,KAAK,EAAE5B,KAAK,CAAC;IAEjCxC,MAAMqE,SAAS,CAAC;QACd,IAAI,CAACT,oBAAoBU,OAAO,EAAE;YAChC,MAAMC,kBAAkB;gBACtB,MAAMC,SAAS,MAAMvD,aAAa;oBAChC+B;oBACAyB,MAAM;wBACJC,gBAAgBlC;wBAChBmC,MAAM,CAAC;wBACPC,WAAW;wBACXC,YAAYrC;oBACd;oBACAS;gBACF;gBAEAU,gBAAgBa;gBAChBZ,oBAAoBU,OAAO,GAAG;YAChC;YAEA,KAAKC;QACP;IACF,GAAG;QAACvB;QAAUY;QAAqBX;QAAWT;KAAK;IAEnD,MAAMsC,WAAqC7E,YACzC,CAAC,EAAE8E,WAAWC,aAAa,EAAE,GAC3B/D,aAAa;YACX+B;YACAyB,MAAM;gBACJC,gBAAgBlC;gBAChBuC,WAAWC;gBACXJ,WAAW;gBACXC,YAAYrC;YACd;YACAS;QACF,IACF;QAACA;QAAWD;QAAUR;KAAK;IAG7B,IAAIY,cAActC,gBAAgBmE,IAAI,IAAI,CAAChB,qBAAqB;QAC9D,OAAO;IACT;IAEA,MAAMiB,YAAY;QAChBzB,OAAO0B,OAAO,CACZ3B,gBAAgB;YACd4B,QAAQ;gBAAEC,MAAMjC,cAActC,gBAAgBwE,YAAY,GAAG,MAAMC;YAAU;QAC/E;QAEFzB;QACAjB,WAAWuB;IACb;IAEA,qBACE,oBAACoB;QAAI1D,WAAWT;qBACd,oBAACF;QACCsE,cAAY/D,EAAE;QACdI,WAAW,CAAC,EAAET,UAAU,QAAQ,CAAC;QACjCU,SAAS;YACPwB,YAAY,EAAE;QAChB;QACAf,MAAM4B;OAEL1C,EAAE,gCAEL,oBAACR;QAAOwE,QAAQ;QAAMlD,MAAM4B;qBAC1B,oBAAC1D;QAAqBgE,gBAAgBlC;QAAMmD,IAAI;qBAC9C,oBAAChF,iBAAiBiF,QAAQ;QAACC,OAAM;qBAC/B,oBAACL;QAAI1D,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;qBAClC,oBAACmE;QAAI1D,WAAW,CAAC,EAAET,UAAU,QAAQ,CAAC;qBACpC,oBAACyE;QAAGhE,WAAW,CAAC,EAAET,UAAU,eAAe,CAAC;OACzCK,EAAE,wBAAwB;QAAEwB;QAAO6C,OAAOjG,eAAe4C,QAAQW;IAAM,mBAE1E,oBAAC2C;QACCP,cAAY/D,EAAE;QACdI,WAAW,CAAC,EAAET,UAAU,eAAe,CAAC;QACxCsE,IAAI,CAAC,cAAc,EAAEvB,WAAW,CAAC;QACjCrC,SAAS,IAAMc,WAAWuB;QAC1B6B,MAAK;qBAEL,oBAAC1F,0BAGL,oBAACH;QACC0B,WAAW,CAAC,EAAET,UAAU,MAAM,CAAC;QAC/BqC,cAAcA;QACdoB,UAAU;YAACA;SAAS;QACpBI,WAAWA;qBAEX,oBAAC9D;QAAYuB,UAAUA;QAAUY,aAAaA;QAC7CD,SAAS4C,MAAM,KAAK,IAAI,qBACvB,oBAAC7F;QAAasC,UAAUW;QAAU6C,MAAK;QAAGC,UAAU;QAAOvB,YAAYrC;sBAEzE,oBAACgD;QAAI1D,WAAW,CAAC,EAAET,UAAU,cAAc,CAAC;qBAC1C,oBAACmE;QAAI1D,WAAW,CAAC,EAAET,UAAU,SAAS,CAAC;qBACrC,oBAACmE;QAAI1D,WAAW,CAAC,EAAET,UAAU,qBAAqB,CAAC;qBACjD,oBAACmE;QAAI1D,WAAW,CAAC,EAAET,UAAU,kBAAkB,CAAC;OAC7CkB,YAAY8D,UAAUC,uBACrB,oBAACtG,MAAMuG,QAAQ,sBACb,oBAACvE;QACCT,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,CAAC;QAC5D3B,UAAU8B,SAAS4C,MAAM,KAAK;sBAEhC,oBAAC/D;QACCZ,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,CAAC;QAC5D3B,UAAU8B,SAAS4C,MAAM,KAAK;wBAIlC,oBAAC5E;QACCC,QAAQ,CAAC,EAAE0B,UAAU,EAAED,SAAS,CAAC,EAAER,KAAK,EAAEW,iBAAiB,CAAC;QAC5D3B,UAAU8B,SAAS4C,MAAM,KAAK;;AAc1D,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport type { FieldMap } from '../../utilities/buildComponentMap.js'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\nconst Publish: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\nconst SaveDraft: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { useModal } = facelessUIImport\n\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <Publish\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraft\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","X","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","Publish","overrides","_status","SaveDraft","EditMany","props","useModal","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/EditUpload/index.tsx"],"sourcesContent":["'use client'\nimport type { Data } from 'payload/types'\nimport type CropType from 'react-image-crop'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React, { useRef, useState } from 'react'\nimport ReactCrop from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\n\nimport { editDrawerSlug } from '../../elements/Upload/index.js'\nimport { Plus } from '../../icons/Plus/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-upload'\n\nconst Input: React.FC<{ name: string; onChange: (value: string) => void; value: string }> = ({\n name,\n onChange,\n value,\n}) => (\n <div className={`${baseClass}__input`}>\n {name}\n <input name={name} onChange={(e) => onChange(e.target.value)} type=\"number\" value={value} />\n </div>\n)\n\nexport type EditUploadProps = {\n doc?: Data\n fileName: string\n fileSrc: string\n imageCacheTag?: string\n showCrop?: boolean\n showFocalPoint?: boolean\n}\n\nexport const EditUpload: React.FC<EditUploadProps> = ({\n fileName,\n fileSrc,\n imageCacheTag,\n showCrop,\n showFocalPoint,\n}) => {\n const { Modal, useModal } = facelessUIImport\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n const { dispatchFormQueryParams, formQueryParams } = useFormQueryParams()\n const { uploadEdits } = formQueryParams || {}\n const [crop, setCrop] = useState<CropType>({\n height: uploadEdits?.crop?.height || 100,\n unit: '%',\n width: uploadEdits?.crop?.width || 100,\n x: uploadEdits?.crop?.x || 0,\n y: uploadEdits?.crop?.y || 0,\n })\n\n const [pointPosition, setPointPosition] = useState<{ x: number; y: number }>({\n x: uploadEdits?.focalPoint?.x || 50,\n y: uploadEdits?.focalPoint?.y || 50,\n })\n const [checkBounds, setCheckBounds] = useState<boolean>(false)\n const [originalHeight, setOriginalHeight] = useState<number>(0)\n const [originalWidth, setOriginalWidth] = useState<number>(0)\n\n const focalWrapRef = useRef<HTMLDivElement | undefined>()\n const imageRef = useRef<HTMLImageElement | undefined>()\n const cropRef = useRef<HTMLDivElement | undefined>()\n\n const fineTuneCrop = ({ dimension, value }: { dimension: 'height' | 'width'; value: string }) => {\n const intValue = parseInt(value)\n if (dimension === 'width' && intValue >= originalWidth) return null\n if (dimension === 'height' && intValue >= originalHeight) return null\n\n const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight))\n\n if (percentage === 100 || percentage === 0) return null\n\n setCrop({\n ...crop,\n [dimension]: percentage,\n })\n }\n\n const fineTuneFocalPoint = ({ coordinate, value }: { coordinate: 'x' | 'y'; value: string }) => {\n const intValue = parseInt(value)\n if (intValue >= 0 && intValue <= 100) {\n setPointPosition((prevPosition) => ({ ...prevPosition, [coordinate]: intValue }))\n }\n }\n\n const saveEdits = () => {\n dispatchFormQueryParams({\n type: 'SET',\n params: {\n uploadEdits:\n crop || pointPosition\n ? {\n crop: crop || null,\n focalPoint: pointPosition ? pointPosition : null,\n }\n : null,\n },\n })\n closeModal(editDrawerSlug)\n }\n\n const onDragEnd = React.useCallback(({ x, y }) => {\n setPointPosition({ x, y })\n setCheckBounds(false)\n }, [])\n\n const centerFocalPoint = () => {\n const containerRect = focalWrapRef.current.getBoundingClientRect()\n const boundsRect = showCrop\n ? cropRef.current.getBoundingClientRect()\n : imageRef.current.getBoundingClientRect()\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n setPointPosition({ x: xCenter, y: yCenter })\n }\n\n const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h2 title={`${t('general:editing')} ${fileName}`}>\n {t('general:editing')} {fileName}\n </h2>\n <div className={`${baseClass}__actions`}>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__cancel`}\n onClick={() => closeModal(editDrawerSlug)}\n >\n {t('general:cancel')}\n </Button>\n <Button\n aria-label={t('general:applyChanges')}\n buttonStyle=\"primary\"\n className={`${baseClass}__save`}\n onClick={() => saveEdits()}\n >\n {t('general:applyChanges')}\n </Button>\n </div>\n </div>\n <div className={`${baseClass}__toolWrap`}>\n <div className={`${baseClass}__crop`}>\n <div\n className={`${baseClass}__focal-wrapper`}\n ref={focalWrapRef}\n style={{\n aspectRatio: `${originalWidth / originalHeight}`,\n }}\n >\n {showCrop ? (\n <ReactCrop\n className={`${baseClass}__reactCrop`}\n crop={crop}\n onChange={(_, c) => setCrop(c)}\n onComplete={() => setCheckBounds(true)}\n renderSelectionAddon={() => {\n return <div className={`${baseClass}__crop-window`} ref={cropRef} />\n }}\n >\n <img\n alt={t('upload:setCropArea')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n </ReactCrop>\n ) : (\n <img\n alt={t('upload:setFocalPoint')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n )}\n {showFocalPoint && (\n <DraggableElement\n boundsRef={showCrop ? cropRef : imageRef}\n checkBounds={showCrop ? checkBounds : false}\n className={`${baseClass}__focalPoint`}\n containerRef={focalWrapRef}\n initialPosition={pointPosition}\n onDragEnd={onDragEnd}\n setCheckBounds={showCrop ? setCheckBounds : false}\n >\n <Plus />\n </DraggableElement>\n )}\n </div>\n </div>\n {(showCrop || showFocalPoint) && (\n <div className={`${baseClass}__sidebar`}>\n {showCrop && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:crop')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={() =>\n setCrop({\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n })\n }\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:cropToolDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name={`${t('upload:width')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'width', value })}\n value={((crop.width / 100) * originalWidth).toFixed(0)}\n />\n <Input\n name={`${t('upload:height')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'height', value })}\n value={((crop.height / 100) * originalHeight).toFixed(0)}\n />\n </div>\n </div>\n )}\n\n {showFocalPoint && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:focalPoint')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={centerFocalPoint}\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:focalPointDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name=\"X %\"\n onChange={(value) => fineTuneFocalPoint({ coordinate: 'x', value })}\n value={pointPosition.x.toFixed(0)}\n />\n <Input\n name=\"Y %\"\n onChange={(value) => fineTuneFocalPoint({ coordinate: 'y', value })}\n value={pointPosition.y.toFixed(0)}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst DraggableElement = ({\n boundsRef,\n checkBounds,\n children,\n className,\n containerRef,\n initialPosition = { x: 50, y: 50 },\n onDragEnd,\n setCheckBounds,\n}) => {\n const [position, setPosition] = useState({ x: initialPosition.x, y: initialPosition.y })\n const [isDragging, setIsDragging] = useState(false)\n const dragRef = useRef<HTMLButtonElement | undefined>()\n\n const getCoordinates = React.useCallback(\n (mouseXArg?: number, mouseYArg?: number, recenter?: boolean) => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const boundsRect = boundsRef.current.getBoundingClientRect()\n const mouseX = mouseXArg ?? boundsRect.left\n const mouseY = mouseYArg ?? boundsRect.top\n\n const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right\n const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom\n\n let x = ((mouseX - containerRect.left) / containerRect.width) * 100\n let y = ((mouseY - containerRect.top) / containerRect.height) * 100\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n if (xOutOfBounds || yOutOfBounds) {\n setIsDragging(false)\n if (mouseX < boundsRect.left) {\n x = ((boundsRect.left - containerRect.left) / containerRect.width) * 100\n } else if (mouseX > boundsRect.right) {\n x =\n ((containerRect.width - (containerRect.right - boundsRect.right)) /\n containerRect.width) *\n 100\n }\n\n if (mouseY < boundsRect.top) {\n y = ((boundsRect.top - containerRect.top) / containerRect.height) * 100\n } else if (mouseY > boundsRect.bottom) {\n y =\n ((containerRect.height - (containerRect.bottom - boundsRect.bottom)) /\n containerRect.height) *\n 100\n }\n\n if (recenter) {\n x = xOutOfBounds ? xCenter : x\n y = yOutOfBounds ? yCenter : y\n }\n }\n\n return { x, y }\n },\n [boundsRef, containerRef],\n )\n\n const handleMouseDown = (event) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleMouseMove = (event) => {\n if (!isDragging) return null\n const { x, y } = getCoordinates(event.clientX, event.clientY)\n\n setPosition({ x, y })\n }\n\n const onDrop = () => {\n setIsDragging(false)\n onDragEnd(position)\n }\n\n React.useEffect(() => {\n if (isDragging || !dragRef.current) return\n if (checkBounds) {\n const { height, left, top, width } = dragRef.current.getBoundingClientRect()\n const { x, y } = getCoordinates(left + width / 2, top + height / 2, true)\n onDragEnd({ x, y })\n setPosition({ x, y })\n setCheckBounds(false)\n return\n }\n }, [getCoordinates, isDragging, checkBounds, setCheckBounds, position.x, position.y, onDragEnd])\n\n React.useEffect(() => {\n setPosition({ x: initialPosition.x, y: initialPosition.y })\n }, [initialPosition.x, initialPosition.y])\n\n return (\n <div\n className={[\n `${baseClass}__draggable-container`,\n isDragging && `${baseClass}__draggable-container--dragging`,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseMove={handleMouseMove}\n >\n <button\n className={[`${baseClass}__draggable`, className].filter(Boolean).join(' ')}\n onMouseDown={handleMouseDown}\n onMouseUp={onDrop}\n ref={dragRef}\n style={{ left: `${position.x}%`, top: `${position.y}%` }}\n type=\"button\"\n >\n {children}\n </button>\n <div />\n </div>\n )\n}\n"],"names":["facelessUIImport","React","useRef","useState","ReactCrop","editDrawerSlug","Plus","useFormQueryParams","useTranslation","Button","baseClass","Input","name","onChange","value","div","className","input","e","target","type","EditUpload","fileName","fileSrc","imageCacheTag","showCrop","showFocalPoint","Modal","useModal","closeModal","t","dispatchFormQueryParams","formQueryParams","uploadEdits","crop","setCrop","height","unit","width","x","y","pointPosition","setPointPosition","focalPoint","checkBounds","setCheckBounds","originalHeight","setOriginalHeight","originalWidth","setOriginalWidth","focalWrapRef","imageRef","cropRef","fineTuneCrop","dimension","intValue","parseInt","percentage","fineTuneFocalPoint","coordinate","prevPosition","saveEdits","params","onDragEnd","useCallback","centerFocalPoint","containerRect","current","getBoundingClientRect","boundsRect","xCenter","left","yCenter","top","fileSrcToUse","h2","title","aria-label","buttonStyle","onClick","ref","style","aspectRatio","_","c","onComplete","renderSelectionAddon","img","alt","onLoad","currentTarget","naturalHeight","naturalWidth","src","DraggableElement","boundsRef","containerRef","initialPosition","h3","span","toFixed","children","position","setPosition","isDragging","setIsDragging","dragRef","getCoordinates","mouseXArg","mouseYArg","recenter","mouseX","mouseY","xOutOfBounds","right","yOutOfBounds","bottom","handleMouseDown","event","preventDefault","handleMouseMove","clientX","clientY","onDrop","useEffect","filter","Boolean","join","onMouseMove","button","onMouseDown","onMouseUp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/EditUpload/index.tsx"],"sourcesContent":["'use client'\nimport type { Data } from 'payload/types'\nimport type CropType from 'react-image-crop'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React, { useRef, useState } from 'react'\nimport ReactCrop from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\n\nimport { editDrawerSlug } from '../../elements/Upload/index.js'\nimport { Plus } from '../../icons/Plus/index.js'\nimport { useFormQueryParams } from '../../providers/FormQueryParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-upload'\n\nconst Input: React.FC<{ name: string; onChange: (value: string) => void; value: string }> = ({\n name,\n onChange,\n value,\n}) => (\n <div className={`${baseClass}__input`}>\n {name}\n <input name={name} onChange={(e) => onChange(e.target.value)} type=\"number\" value={value} />\n </div>\n)\n\nexport type EditUploadProps = {\n doc?: Data\n fileName: string\n fileSrc: string\n imageCacheTag?: string\n showCrop?: boolean\n showFocalPoint?: boolean\n}\n\nexport const EditUpload: React.FC<EditUploadProps> = ({\n fileName,\n fileSrc,\n imageCacheTag,\n showCrop,\n showFocalPoint,\n}) => {\n const { Modal, useModal } = facelessUIImport\n\n const { closeModal } = useModal()\n const { t } = useTranslation()\n const { dispatchFormQueryParams, formQueryParams } = useFormQueryParams()\n const { uploadEdits } = formQueryParams || {}\n const [crop, setCrop] = useState<CropType>({\n height: uploadEdits?.crop?.height || 100,\n unit: '%',\n width: uploadEdits?.crop?.width || 100,\n x: uploadEdits?.crop?.x || 0,\n y: uploadEdits?.crop?.y || 0,\n })\n\n const [pointPosition, setPointPosition] = useState<{ x: number; y: number }>({\n x: uploadEdits?.focalPoint?.x || 50,\n y: uploadEdits?.focalPoint?.y || 50,\n })\n const [checkBounds, setCheckBounds] = useState<boolean>(false)\n const [originalHeight, setOriginalHeight] = useState<number>(0)\n const [originalWidth, setOriginalWidth] = useState<number>(0)\n\n const focalWrapRef = useRef<HTMLDivElement | undefined>()\n const imageRef = useRef<HTMLImageElement | undefined>()\n const cropRef = useRef<HTMLDivElement | undefined>()\n\n const fineTuneCrop = ({ dimension, value }: { dimension: 'height' | 'width'; value: string }) => {\n const intValue = parseInt(value)\n if (dimension === 'width' && intValue >= originalWidth) return null\n if (dimension === 'height' && intValue >= originalHeight) return null\n\n const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight))\n\n if (percentage === 100 || percentage === 0) return null\n\n setCrop({\n ...crop,\n [dimension]: percentage,\n })\n }\n\n const fineTuneFocalPoint = ({ coordinate, value }: { coordinate: 'x' | 'y'; value: string }) => {\n const intValue = parseInt(value)\n if (intValue >= 0 && intValue <= 100) {\n setPointPosition((prevPosition) => ({ ...prevPosition, [coordinate]: intValue }))\n }\n }\n\n const saveEdits = () => {\n dispatchFormQueryParams({\n type: 'SET',\n params: {\n uploadEdits:\n crop || pointPosition\n ? {\n crop: crop || null,\n focalPoint: pointPosition ? pointPosition : null,\n }\n : null,\n },\n })\n closeModal(editDrawerSlug)\n }\n\n const onDragEnd = React.useCallback(({ x, y }) => {\n setPointPosition({ x, y })\n setCheckBounds(false)\n }, [])\n\n const centerFocalPoint = () => {\n const containerRect = focalWrapRef.current.getBoundingClientRect()\n const boundsRect = showCrop\n ? cropRef.current.getBoundingClientRect()\n : imageRef.current.getBoundingClientRect()\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n setPointPosition({ x: xCenter, y: yCenter })\n }\n\n const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__header`}>\n <h2 title={`${t('general:editing')} ${fileName}`}>\n {t('general:editing')} {fileName}\n </h2>\n <div className={`${baseClass}__actions`}>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__cancel`}\n onClick={() => closeModal(editDrawerSlug)}\n >\n {t('general:cancel')}\n </Button>\n <Button\n aria-label={t('general:applyChanges')}\n buttonStyle=\"primary\"\n className={`${baseClass}__save`}\n onClick={() => saveEdits()}\n >\n {t('general:applyChanges')}\n </Button>\n </div>\n </div>\n <div className={`${baseClass}__toolWrap`}>\n <div className={`${baseClass}__crop`}>\n <div\n className={`${baseClass}__focal-wrapper`}\n ref={focalWrapRef}\n style={{\n aspectRatio: `${originalWidth / originalHeight}`,\n }}\n >\n {showCrop ? (\n <ReactCrop\n className={`${baseClass}__reactCrop`}\n crop={crop}\n onChange={(_, c) => setCrop(c)}\n onComplete={() => setCheckBounds(true)}\n renderSelectionAddon={() => {\n return <div className={`${baseClass}__crop-window`} ref={cropRef} />\n }}\n >\n <img\n alt={t('upload:setCropArea')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n </ReactCrop>\n ) : (\n <img\n alt={t('upload:setFocalPoint')}\n onLoad={(e) => {\n setOriginalHeight(e.currentTarget.naturalHeight)\n setOriginalWidth(e.currentTarget.naturalWidth)\n }}\n ref={imageRef}\n src={fileSrcToUse}\n />\n )}\n {showFocalPoint && (\n <DraggableElement\n boundsRef={showCrop ? cropRef : imageRef}\n checkBounds={showCrop ? checkBounds : false}\n className={`${baseClass}__focalPoint`}\n containerRef={focalWrapRef}\n initialPosition={pointPosition}\n onDragEnd={onDragEnd}\n setCheckBounds={showCrop ? setCheckBounds : false}\n >\n <Plus />\n </DraggableElement>\n )}\n </div>\n </div>\n {(showCrop || showFocalPoint) && (\n <div className={`${baseClass}__sidebar`}>\n {showCrop && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:crop')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={() =>\n setCrop({\n height: 100,\n unit: '%',\n width: 100,\n x: 0,\n y: 0,\n })\n }\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:cropToolDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name={`${t('upload:width')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'width', value })}\n value={((crop.width / 100) * originalWidth).toFixed(0)}\n />\n <Input\n name={`${t('upload:height')} (px)`}\n onChange={(value) => fineTuneCrop({ dimension: 'height', value })}\n value={((crop.height / 100) * originalHeight).toFixed(0)}\n />\n </div>\n </div>\n )}\n\n {showFocalPoint && (\n <div className={`${baseClass}__groupWrap`}>\n <div>\n <div className={`${baseClass}__titleWrap`}>\n <h3>{t('upload:focalPoint')}</h3>\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__reset`}\n onClick={centerFocalPoint}\n >\n {t('general:reset')}\n </Button>\n </div>\n </div>\n <span className={`${baseClass}__description`}>\n {t('upload:focalPointDescription')}\n </span>\n <div className={`${baseClass}__inputsWrap`}>\n <Input\n name=\"X %\"\n onChange={(value) => fineTuneFocalPoint({ coordinate: 'x', value })}\n value={pointPosition.x.toFixed(0)}\n />\n <Input\n name=\"Y %\"\n onChange={(value) => fineTuneFocalPoint({ coordinate: 'y', value })}\n value={pointPosition.y.toFixed(0)}\n />\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst DraggableElement = ({\n boundsRef,\n checkBounds,\n children,\n className,\n containerRef,\n initialPosition = { x: 50, y: 50 },\n onDragEnd,\n setCheckBounds,\n}) => {\n const [position, setPosition] = useState({ x: initialPosition.x, y: initialPosition.y })\n const [isDragging, setIsDragging] = useState(false)\n const dragRef = useRef<HTMLButtonElement | undefined>()\n\n const getCoordinates = React.useCallback(\n (mouseXArg?: number, mouseYArg?: number, recenter?: boolean) => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const boundsRect = boundsRef.current.getBoundingClientRect()\n const mouseX = mouseXArg ?? boundsRect.left\n const mouseY = mouseYArg ?? boundsRect.top\n\n const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right\n const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom\n\n let x = ((mouseX - containerRect.left) / containerRect.width) * 100\n let y = ((mouseY - containerRect.top) / containerRect.height) * 100\n const xCenter =\n ((boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width) * 100\n const yCenter =\n ((boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height) * 100\n if (xOutOfBounds || yOutOfBounds) {\n setIsDragging(false)\n if (mouseX < boundsRect.left) {\n x = ((boundsRect.left - containerRect.left) / containerRect.width) * 100\n } else if (mouseX > boundsRect.right) {\n x =\n ((containerRect.width - (containerRect.right - boundsRect.right)) /\n containerRect.width) *\n 100\n }\n\n if (mouseY < boundsRect.top) {\n y = ((boundsRect.top - containerRect.top) / containerRect.height) * 100\n } else if (mouseY > boundsRect.bottom) {\n y =\n ((containerRect.height - (containerRect.bottom - boundsRect.bottom)) /\n containerRect.height) *\n 100\n }\n\n if (recenter) {\n x = xOutOfBounds ? xCenter : x\n y = yOutOfBounds ? yCenter : y\n }\n }\n\n return { x, y }\n },\n [boundsRef, containerRef],\n )\n\n const handleMouseDown = (event) => {\n event.preventDefault()\n setIsDragging(true)\n }\n\n const handleMouseMove = (event) => {\n if (!isDragging) return null\n const { x, y } = getCoordinates(event.clientX, event.clientY)\n\n setPosition({ x, y })\n }\n\n const onDrop = () => {\n setIsDragging(false)\n onDragEnd(position)\n }\n\n React.useEffect(() => {\n if (isDragging || !dragRef.current) return\n if (checkBounds) {\n const { height, left, top, width } = dragRef.current.getBoundingClientRect()\n const { x, y } = getCoordinates(left + width / 2, top + height / 2, true)\n onDragEnd({ x, y })\n setPosition({ x, y })\n setCheckBounds(false)\n return\n }\n }, [getCoordinates, isDragging, checkBounds, setCheckBounds, position.x, position.y, onDragEnd])\n\n React.useEffect(() => {\n setPosition({ x: initialPosition.x, y: initialPosition.y })\n }, [initialPosition.x, initialPosition.y])\n\n return (\n <div\n className={[\n `${baseClass}__draggable-container`,\n isDragging && `${baseClass}__draggable-container--dragging`,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseMove={handleMouseMove}\n >\n <button\n className={[`${baseClass}__draggable`, className].filter(Boolean).join(' ')}\n onMouseDown={handleMouseDown}\n onMouseUp={onDrop}\n ref={dragRef}\n style={{ left: `${position.x}%`, top: `${position.y}%` }}\n type=\"button\"\n >\n {children}\n </button>\n <div />\n </div>\n )\n}\n"],"names":["facelessUIImport","React","useRef","useState","ReactCrop","editDrawerSlug","Plus","useFormQueryParams","useTranslation","Button","baseClass","Input","name","onChange","value","div","className","input","e","target","type","EditUpload","fileName","fileSrc","imageCacheTag","showCrop","showFocalPoint","Modal","useModal","closeModal","t","dispatchFormQueryParams","formQueryParams","uploadEdits","crop","setCrop","height","unit","width","x","y","pointPosition","setPointPosition","focalPoint","checkBounds","setCheckBounds","originalHeight","setOriginalHeight","originalWidth","setOriginalWidth","focalWrapRef","imageRef","cropRef","fineTuneCrop","dimension","intValue","parseInt","percentage","fineTuneFocalPoint","coordinate","prevPosition","saveEdits","params","onDragEnd","useCallback","centerFocalPoint","containerRect","current","getBoundingClientRect","boundsRect","xCenter","left","yCenter","top","fileSrcToUse","h2","title","aria-label","buttonStyle","onClick","ref","style","aspectRatio","_","c","onComplete","renderSelectionAddon","img","alt","onLoad","currentTarget","naturalHeight","naturalWidth","src","DraggableElement","boundsRef","containerRef","initialPosition","h3","span","toFixed","children","position","setPosition","isDragging","setIsDragging","dragRef","getCoordinates","mouseXArg","mouseYArg","recenter","mouseX","mouseY","xOutOfBounds","right","yOutOfBounds","bottom","handleMouseDown","event","preventDefault","handleMouseMove","clientX","clientY","onDrop","useEffect","filter","Boolean","join","onMouseMove","button","onMouseDown","onMouseUp"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ErrorPill/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'error-pill'\n\nexport type ErrorPillProps = {\n className?: string\n count: number\n i18n: I18n\n withMessage?: boolean\n}\n\nexport const ErrorPill: React.FC<ErrorPillProps> = (props) => {\n const { className, count, i18n, withMessage } = props\n const lessThan3Chars = !withMessage && count < 99\n\n const classes = [baseClass, lessThan3Chars && `${baseClass}--fixed-width`, className && className]\n .filter(Boolean)\n .join(' ')\n\n if (count === 0) return null\n\n return (\n <div className={classes}>\n <div className={`${baseClass}__content`}>\n <span className={`${baseClass}__count`}>{count}</span>\n {withMessage && ` ${count > 1 ? i18n.t('general:errors') : i18n.t('general:error')}`}\n </div>\n </div>\n )\n}\n"],"names":["React","baseClass","ErrorPill","props","className","count","i18n","withMessage","lessThan3Chars","classes","filter","Boolean","join","div","span","t"],"mappings":"AAEA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AASlB,OAAO,MAAMC,YAAsC,CAACC;IAClD,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGJ;IAChD,MAAMK,iBAAiB,CAACD,eAAeF,QAAQ;IAE/C,MAAMI,UAAU;QAACR;QAAWO,kBAAkB,CAAC,EAAEP,UAAU,aAAa,CAAC;QAAEG,aAAaA;KAAU,CAC/FM,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIP,UAAU,GAAG,OAAO;IAExB,qBACE,oBAACQ;QAAIT,WAAWK;qBACd,oBAACI;QAAIT,WAAW,CAAC,EAAEH,UAAU,SAAS,CAAC;qBACrC,oBAACa;QAAKV,WAAW,CAAC,EAAEH,UAAU,OAAO,CAAC;OAAGI,QACxCE,eAAe,CAAC,CAAC,EAAEF,QAAQ,IAAIC,KAAKS,CAAC,CAAC,oBAAoBT,KAAKS,CAAC,CAAC,iBAAiB,CAAC;AAI5F,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ErrorPill/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'error-pill'\n\nexport type ErrorPillProps = {\n className?: string\n count: number\n i18n: I18n\n withMessage?: boolean\n}\n\nexport const ErrorPill: React.FC<ErrorPillProps> = (props) => {\n const { className, count, i18n, withMessage } = props\n const lessThan3Chars = !withMessage && count < 99\n\n const classes = [baseClass, lessThan3Chars && `${baseClass}--fixed-width`, className && className]\n .filter(Boolean)\n .join(' ')\n\n if (count === 0) return null\n\n return (\n <div className={classes}>\n <div className={`${baseClass}__content`}>\n <span className={`${baseClass}__count`}>{count}</span>\n {withMessage && ` ${count > 1 ? i18n.t('general:errors') : i18n.t('general:error')}`}\n </div>\n </div>\n )\n}\n"],"names":["React","baseClass","ErrorPill","props","className","count","i18n","withMessage","lessThan3Chars","classes","filter","Boolean","join","div","span","t"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AASlB,OAAO,MAAMC,YAAsC,CAACC;IAClD,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGJ;IAChD,MAAMK,iBAAiB,CAACD,eAAeF,QAAQ;IAE/C,MAAMI,UAAU;QAACR;QAAWO,kBAAkB,CAAC,EAAEP,UAAU,aAAa,CAAC;QAAEG,aAAaA;KAAU,CAC/FM,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIP,UAAU,GAAG,OAAO;IAExB,qBACE,oBAACQ;QAAIT,WAAWK;qBACd,oBAACI;QAAIT,WAAW,CAAC,EAAEH,UAAU,SAAS,CAAC;qBACrC,oBAACa;QAAKV,WAAW,CAAC,EAAEH,UAAU,OAAO,CAAC;OAAGI,QACxCE,eAAe,CAAC,CAAC,EAAEF,QAAQ,IAAIC,KAAKS,CAAC,CAAC,oBAAoBT,KAAKS,CAAC,CAAC,iBAAiB,CAAC;AAI5F,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["import type { FieldWithPath } from 'payload/types'\n\nimport React, { Fragment, useState } from 'react'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedFieldPath.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type FieldSelectProps = {\n fieldMap: FieldMap\n setSelected: (fields: FieldWithPath[]) => void\n}\n\nconst combineLabel = ({\n customLabel,\n field,\n prefix,\n}: {\n customLabel?: string\n field?: MappedField\n prefix?: JSX.Element | string\n}): JSX.Element => {\n const CustomLabelToRender =\n field &&\n 'CustomLabel' in field.fieldComponentProps &&\n field.fieldComponentProps.CustomLabel !== undefined\n ? field.fieldComponentProps.CustomLabel\n : null\n const DefaultLabelToRender =\n field && 'labelProps' in field.fieldComponentProps && field.fieldComponentProps.labelProps ? (\n <FieldLabel {...field.fieldComponentProps.labelProps} />\n ) : null\n\n const LabelToRender = CustomLabelToRender || DefaultLabelToRender || customLabel\n\n if (!LabelToRender) return null\n\n return (\n <Fragment>\n {prefix && (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n )}\n <span style={{ display: 'inline-block' }}>{LabelToRender}</span>\n </Fragment>\n )\n}\n\nconst reduceFields = ({\n fieldMap,\n labelPrefix = null,\n path = '',\n}: {\n fieldMap: FieldMap\n labelPrefix?: JSX.Element | string\n path?: string\n}): { Label: JSX.Element; value: FieldWithPath }[] => {\n if (!fieldMap) {\n return []\n }\n\n return fieldMap?.reduce((fieldsToUse, field) => {\n const { isFieldAffectingData } = field\n // escape for a variety of reasons\n if (\n isFieldAffectingData &&\n (field.disableBulkEdit ||\n field.unique ||\n field.isHidden ||\n ('readOnly' in field.fieldComponentProps && field.fieldComponentProps.readOnly))\n ) {\n return fieldsToUse\n }\n\n if (\n !(field.type === 'array' || field.type === 'blocks') &&\n 'fieldMap' in field.fieldComponentProps\n ) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n fieldMap: field.fieldComponentProps.fieldMap,\n labelPrefix: combineLabel({ field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field.fieldComponentProps) {\n return [\n ...fieldsToUse,\n ...field.fieldComponentProps.tabs.reduce((tabFields, tab) => {\n if ('fieldMap' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFields({\n fieldMap: tab.fieldMap,\n labelPrefix,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField = {\n label: combineLabel({ field, prefix: labelPrefix }),\n value: {\n ...field,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fieldMap, setSelected }) => {\n const { t } = useTranslation()\n const [options] = useState(() => reduceFields({ fieldMap }))\n\n const { dispatchFields, getFields } = useForm()\n\n const handleChange = (selected) => {\n const activeFields = getFields()\n if (selected === null) {\n setSelected([])\n } else {\n setSelected(selected.map(({ value }) => value))\n }\n\n // remove deselected values from form state\n if (selected === null || Object.keys(activeFields || []).length > selected.length) {\n Object.keys(activeFields).forEach((path) => {\n if (\n selected === null ||\n !selected.find((field) => {\n return field.value.path === path\n })\n ) {\n dispatchFields({\n type: 'REMOVE',\n path,\n })\n }\n })\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={handleChange}\n options={options}\n />\n </div>\n )\n}\n"],"names":["React","Fragment","useState","FieldLabel","useForm","createNestedClientFieldPath","useTranslation","ReactSelect","baseClass","combineLabel","customLabel","field","prefix","CustomLabelToRender","fieldComponentProps","CustomLabel","undefined","DefaultLabelToRender","labelProps","LabelToRender","span","style","display","reduceFields","fieldMap","labelPrefix","path","reduce","fieldsToUse","isFieldAffectingData","disableBulkEdit","unique","isHidden","readOnly","type","tabs","tabFields","tab","isNamedTab","name","formattedField","label","value","FieldSelect","setSelected","t","options","dispatchFields","getFields","handleChange","selected","activeFields","map","Object","keys","length","forEach","find","div","className","getOptionValue","option","String","isMulti","onChange"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["import type { FieldWithPath } from 'payload/types'\n\nimport React, { Fragment, useState } from 'react'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedFieldPath.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type FieldSelectProps = {\n fieldMap: FieldMap\n setSelected: (fields: FieldWithPath[]) => void\n}\n\nconst combineLabel = ({\n customLabel,\n field,\n prefix,\n}: {\n customLabel?: string\n field?: MappedField\n prefix?: JSX.Element | string\n}): JSX.Element => {\n const CustomLabelToRender =\n field &&\n 'CustomLabel' in field.fieldComponentProps &&\n field.fieldComponentProps.CustomLabel !== undefined\n ? field.fieldComponentProps.CustomLabel\n : null\n const DefaultLabelToRender =\n field && 'labelProps' in field.fieldComponentProps && field.fieldComponentProps.labelProps ? (\n <FieldLabel {...field.fieldComponentProps.labelProps} />\n ) : null\n\n const LabelToRender = CustomLabelToRender || DefaultLabelToRender || customLabel\n\n if (!LabelToRender) return null\n\n return (\n <Fragment>\n {prefix && (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n )}\n <span style={{ display: 'inline-block' }}>{LabelToRender}</span>\n </Fragment>\n )\n}\n\nconst reduceFields = ({\n fieldMap,\n labelPrefix = null,\n path = '',\n}: {\n fieldMap: FieldMap\n labelPrefix?: JSX.Element | string\n path?: string\n}): { Label: JSX.Element; value: FieldWithPath }[] => {\n if (!fieldMap) {\n return []\n }\n\n return fieldMap?.reduce((fieldsToUse, field) => {\n const { isFieldAffectingData } = field\n // escape for a variety of reasons\n if (\n isFieldAffectingData &&\n (field.disableBulkEdit ||\n field.unique ||\n field.isHidden ||\n ('readOnly' in field.fieldComponentProps && field.fieldComponentProps.readOnly))\n ) {\n return fieldsToUse\n }\n\n if (\n !(field.type === 'array' || field.type === 'blocks') &&\n 'fieldMap' in field.fieldComponentProps\n ) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n fieldMap: field.fieldComponentProps.fieldMap,\n labelPrefix: combineLabel({ field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field.fieldComponentProps) {\n return [\n ...fieldsToUse,\n ...field.fieldComponentProps.tabs.reduce((tabFields, tab) => {\n if ('fieldMap' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFields({\n fieldMap: tab.fieldMap,\n labelPrefix,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField = {\n label: combineLabel({ field, prefix: labelPrefix }),\n value: {\n ...field,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fieldMap, setSelected }) => {\n const { t } = useTranslation()\n const [options] = useState(() => reduceFields({ fieldMap }))\n\n const { dispatchFields, getFields } = useForm()\n\n const handleChange = (selected) => {\n const activeFields = getFields()\n if (selected === null) {\n setSelected([])\n } else {\n setSelected(selected.map(({ value }) => value))\n }\n\n // remove deselected values from form state\n if (selected === null || Object.keys(activeFields || []).length > selected.length) {\n Object.keys(activeFields).forEach((path) => {\n if (\n selected === null ||\n !selected.find((field) => {\n return field.value.path === path\n })\n ) {\n dispatchFields({\n type: 'REMOVE',\n path,\n })\n }\n })\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={handleChange}\n options={options}\n />\n </div>\n )\n}\n"],"names":["React","Fragment","useState","FieldLabel","useForm","createNestedClientFieldPath","useTranslation","ReactSelect","baseClass","combineLabel","customLabel","field","prefix","CustomLabelToRender","fieldComponentProps","CustomLabel","undefined","DefaultLabelToRender","labelProps","LabelToRender","span","style","display","reduceFields","fieldMap","labelPrefix","path","reduce","fieldsToUse","isFieldAffectingData","disableBulkEdit","unique","isHidden","readOnly","type","tabs","tabFields","tab","isNamedTab","name","formattedField","label","value","FieldSelect","setSelected","t","options","dispatchFields","getFields","handleChange","selected","activeFields","map","Object","keys","length","forEach","find","div","className","getOptionValue","option","String","isMulti","onChange"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/elements/FileDetails/FileMeta/index.tsx"],"sourcesContent":["import { formatFilesize } from 'payload/utilities'\nimport React, { useState } from 'react'\n\nexport type FileMetaProps = {\n collection?: string\n filename: string\n filesize: number\n height?: number\n id?: string\n mimeType: string\n sizes?: unknown\n url: string\n width?: number\n}\n\nimport { Edit } from '../../../icons/Edit/index.js'\nimport { CopyToClipboard } from '../../CopyToClipboard/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { Tooltip } from '../../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-meta'\n\nexport const FileMeta: React.FC<FileMetaProps> = (props) => {\n const { id, collection, filename, filesize, height, mimeType, url: fileURL, width } = props\n\n const [hovered, setHovered] = useState(false)\n const openInDrawer = Boolean(id && collection)\n\n const [DocumentDrawer, DocumentDrawerToggler] = useDocumentDrawer({\n id,\n collectionSlug: collection,\n })\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__url`}>\n {openInDrawer && <DocumentDrawer />}\n <a href={fileURL} rel=\"noopener noreferrer\" target=\"_blank\">\n {filename}\n </a>\n <CopyToClipboard defaultMessage=\"Copy URL\" value={fileURL} />\n {openInDrawer && (\n <DocumentDrawerToggler\n className={`${baseClass}__edit`}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n <Edit />\n <Tooltip show={hovered}>Edit</Tooltip>\n </DocumentDrawerToggler>\n )}\n </div>\n <div className={`${baseClass}__size-type`}>\n {formatFilesize(filesize)}\n {width && height && (\n <React.Fragment>\n - \n {width}x{height}\n </React.Fragment>\n )}\n {mimeType && (\n <React.Fragment>\n - \n {mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n )\n}\n"],"names":["formatFilesize","React","useState","Edit","CopyToClipboard","useDocumentDrawer","Tooltip","baseClass","FileMeta","props","id","collection","filename","filesize","height","mimeType","url","fileURL","width","hovered","setHovered","openInDrawer","Boolean","DocumentDrawer","DocumentDrawerToggler","collectionSlug","div","className","a","href","rel","target","defaultMessage","value","onMouseEnter","onMouseLeave","show","Fragment"],"mappings":"AAAA,SAASA,cAAc,QAAQ,oBAAmB;AAClD,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAcvC,SAASC,IAAI,QAAQ,+BAA8B;AACnD,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,iBAAiB,QAAQ,gCAA+B;AACjE,SAASC,OAAO,QAAQ,yBAAwB;AAGhD,MAAMC,YAAY;AAElB,OAAO,MAAMC,WAAoC,CAACC;IAChD,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAKC,OAAO,EAAEC,KAAK,EAAE,GAAGT;IAEtF,MAAM,CAACU,SAASC,WAAW,GAAGlB,SAAS;IACvC,MAAMmB,eAAeC,QAAQZ,MAAMC;IAEnC,MAAM,CAACY,gBAAgBC,sBAAsB,GAAGnB,kBAAkB;QAChEK;QACAe,gBAAgBd;IAClB;IAEA,qBACE,oBAACe;QAAIC,WAAWpB;qBACd,oBAACmB;QAAIC,WAAW,CAAC,EAAEpB,UAAU,KAAK,CAAC;OAChCc,8BAAgB,oBAACE,qCAClB,oBAACK;QAAEC,MAAMZ;QAASa,KAAI;QAAsBC,QAAO;OAChDnB,yBAEH,oBAACR;QAAgB4B,gBAAe;QAAWC,OAAOhB;QACjDI,8BACC,oBAACG;QACCG,WAAW,CAAC,EAAEpB,UAAU,MAAM,CAAC;QAC/B2B,cAAc,IAAMd,WAAW;QAC/Be,cAAc,IAAMf,WAAW;qBAE/B,oBAACjB,2BACD,oBAACG;QAAQ8B,MAAMjB;OAAS,yBAI9B,oBAACO;QAAIC,WAAW,CAAC,EAAEpB,UAAU,WAAW,CAAC;OACtCP,eAAea,WACfK,SAASJ,wBACR,oBAACb,MAAMoC,QAAQ,QAAC,OAEbnB,OAAM,KAAEJ,SAGZC,0BACC,oBAACd,MAAMoC,QAAQ,QAAC,OAEbtB;AAMb,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/elements/FileDetails/FileMeta/index.tsx"],"sourcesContent":["import { formatFilesize } from 'payload/utilities'\nimport React, { useState } from 'react'\n\nexport type FileMetaProps = {\n collection?: string\n filename: string\n filesize: number\n height?: number\n id?: string\n mimeType: string\n sizes?: unknown\n url: string\n width?: number\n}\n\nimport { Edit } from '../../../icons/Edit/index.js'\nimport { CopyToClipboard } from '../../CopyToClipboard/index.js'\nimport { useDocumentDrawer } from '../../DocumentDrawer/index.js'\nimport { Tooltip } from '../../Tooltip/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-meta'\n\nexport const FileMeta: React.FC<FileMetaProps> = (props) => {\n const { id, collection, filename, filesize, height, mimeType, url: fileURL, width } = props\n\n const [hovered, setHovered] = useState(false)\n const openInDrawer = Boolean(id && collection)\n\n const [DocumentDrawer, DocumentDrawerToggler] = useDocumentDrawer({\n id,\n collectionSlug: collection,\n })\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__url`}>\n {openInDrawer && <DocumentDrawer />}\n <a href={fileURL} rel=\"noopener noreferrer\" target=\"_blank\">\n {filename}\n </a>\n <CopyToClipboard defaultMessage=\"Copy URL\" value={fileURL} />\n {openInDrawer && (\n <DocumentDrawerToggler\n className={`${baseClass}__edit`}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n <Edit />\n <Tooltip show={hovered}>Edit</Tooltip>\n </DocumentDrawerToggler>\n )}\n </div>\n <div className={`${baseClass}__size-type`}>\n {formatFilesize(filesize)}\n {width && height && (\n <React.Fragment>\n - \n {width}x{height}\n </React.Fragment>\n )}\n {mimeType && (\n <React.Fragment>\n - \n {mimeType}\n </React.Fragment>\n )}\n </div>\n </div>\n )\n}\n"],"names":["formatFilesize","React","useState","Edit","CopyToClipboard","useDocumentDrawer","Tooltip","baseClass","FileMeta","props","id","collection","filename","filesize","height","mimeType","url","fileURL","width","hovered","setHovered","openInDrawer","Boolean","DocumentDrawer","DocumentDrawerToggler","collectionSlug","div","className","a","href","rel","target","defaultMessage","value","onMouseEnter","onMouseLeave","show","Fragment"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,cAAc,QAAQ,oBAAmB;AAClD,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAcvC,SAASC,IAAI,QAAQ,+BAA8B;AACnD,SAASC,eAAe,QAAQ,iCAAgC;AAChE,SAASC,iBAAiB,QAAQ,gCAA+B;AACjE,SAASC,OAAO,QAAQ,yBAAwB;AAGhD,MAAMC,YAAY;AAElB,OAAO,MAAMC,WAAoC,CAACC;IAChD,MAAM,EAAEC,EAAE,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAKC,OAAO,EAAEC,KAAK,EAAE,GAAGT;IAEtF,MAAM,CAACU,SAASC,WAAW,GAAGlB,SAAS;IACvC,MAAMmB,eAAeC,QAAQZ,MAAMC;IAEnC,MAAM,CAACY,gBAAgBC,sBAAsB,GAAGnB,kBAAkB;QAChEK;QACAe,gBAAgBd;IAClB;IAEA,qBACE,oBAACe;QAAIC,WAAWpB;qBACd,oBAACmB;QAAIC,WAAW,CAAC,EAAEpB,UAAU,KAAK,CAAC;OAChCc,8BAAgB,oBAACE,qCAClB,oBAACK;QAAEC,MAAMZ;QAASa,KAAI;QAAsBC,QAAO;OAChDnB,yBAEH,oBAACR;QAAgB4B,gBAAe;QAAWC,OAAOhB;QACjDI,8BACC,oBAACG;QACCG,WAAW,CAAC,EAAEpB,UAAU,MAAM,CAAC;QAC/B2B,cAAc,IAAMd,WAAW;QAC/Be,cAAc,IAAMf,WAAW;qBAE/B,oBAACjB,2BACD,oBAACG;QAAQ8B,MAAMjB;OAAS,yBAI9B,oBAACO;QAAIC,WAAW,CAAC,EAAEpB,UAAU,WAAW,CAAC;OACtCP,eAAea,WACfK,SAASJ,wBACR,oBAACb,MAAMoC,QAAQ,QAAC,OAEbnB,OAAM,KAAEJ,SAGZC,0BACC,oBAACd,MAAMoC,QAAQ,QAAC,OAEbtB;AAMb,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/FileDetails/index.tsx"],"sourcesContent":["import { isImage } from 'payload/utilities'\nimport React from 'react'\n\nimport { UploadActions } from '../../elements/Upload/index.js'\nimport { Button } from '../Button/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { FileMeta } from './FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload/types'\n\nexport type FileDetailsProps = {\n canEdit?: boolean\n collectionSlug: string\n doc: Data & {\n sizes?: FileSizes\n }\n handleRemove?: () => void\n hasImageSizes?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const FileDetails: React.FC<FileDetailsProps> = (props) => {\n const { canEdit, collectionSlug, doc, handleRemove, hasImageSizes, imageCacheTag, uploadConfig } =\n props\n\n const { id, filename, filesize, height, mimeType, thumbnailURL, url, width } = doc\n\n return (\n <div className={baseClass}>\n <header>\n <Thumbnail\n collectionSlug={collectionSlug}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n <div className={`${baseClass}__main-detail`}>\n <FileMeta\n collection={collectionSlug}\n filename={filename as string}\n filesize={filesize as number}\n height={height as number}\n id={id as string}\n mimeType={mimeType as string}\n url={url as string}\n width={width as number}\n />\n\n {isImage(mimeType as string) && mimeType !== 'image/svg+xml' && (\n <UploadActions canEdit={canEdit} showSizePreviews={hasImageSizes && doc.filename} />\n )}\n </div>\n {handleRemove && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleRemove}\n round\n />\n )}\n </header>\n </div>\n )\n}\n"],"names":["isImage","React","UploadActions","Button","Thumbnail","FileMeta","baseClass","FileDetails","props","canEdit","collectionSlug","doc","handleRemove","hasImageSizes","imageCacheTag","uploadConfig","id","filename","filesize","height","mimeType","thumbnailURL","url","width","div","className","header","fileSrc","collection","showSizePreviews","buttonStyle","icon","iconStyle","onClick","round"],"mappings":"AAAA,SAASA,OAAO,QAAQ,oBAAmB;AAC3C,OAAOC,WAAW,QAAO;AAEzB,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SAASC,QAAQ,QAAQ,sBAAqB;AAG9C,MAAMC,YAAY;AAgBlB,OAAO,MAAMC,cAA0C,CAACC;IACtD,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAEC,GAAG,EAAEC,YAAY,EAAEC,aAAa,EAAEC,aAAa,EAAEC,YAAY,EAAE,GAC9FP;IAEF,MAAM,EAAEQ,EAAE,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGZ;IAE/E,qBACE,oBAACa;QAAIC,WAAWnB;qBACd,oBAACoB,8BACC,oBAACtB;QACCM,gBAAgBA;QAChBC,KAAKA;QACLgB,SAASN,gBAAgBC;QACzBR,eAAeA;QACfC,cAAcA;sBAEhB,oBAACS;QAAIC,WAAW,CAAC,EAAEnB,UAAU,aAAa,CAAC;qBACzC,oBAACD;QACCuB,YAAYlB;QACZO,UAAUA;QACVC,UAAUA;QACVC,QAAQA;QACRH,IAAIA;QACJI,UAAUA;QACVE,KAAKA;QACLC,OAAOA;QAGRvB,QAAQoB,aAAuBA,aAAa,iCAC3C,oBAAClB;QAAcO,SAASA;QAASoB,kBAAkBhB,iBAAiBF,IAAIM,QAAQ;SAGnFL,8BACC,oBAACT;QACC2B,aAAY;QACZL,WAAW,CAAC,EAAEnB,UAAU,QAAQ,CAAC;QACjCyB,MAAK;QACLC,WAAU;QACVC,SAASrB;QACTsB,OAAAA;;AAMZ,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/FileDetails/index.tsx"],"sourcesContent":["import { isImage } from 'payload/utilities'\nimport React from 'react'\n\nimport { UploadActions } from '../../elements/Upload/index.js'\nimport { Button } from '../Button/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { FileMeta } from './FileMeta/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-details'\n\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload/types'\n\nexport type FileDetailsProps = {\n canEdit?: boolean\n collectionSlug: string\n doc: Data & {\n sizes?: FileSizes\n }\n handleRemove?: () => void\n hasImageSizes?: boolean\n imageCacheTag?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const FileDetails: React.FC<FileDetailsProps> = (props) => {\n const { canEdit, collectionSlug, doc, handleRemove, hasImageSizes, imageCacheTag, uploadConfig } =\n props\n\n const { id, filename, filesize, height, mimeType, thumbnailURL, url, width } = doc\n\n return (\n <div className={baseClass}>\n <header>\n <Thumbnail\n collectionSlug={collectionSlug}\n doc={doc}\n fileSrc={thumbnailURL || url}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n <div className={`${baseClass}__main-detail`}>\n <FileMeta\n collection={collectionSlug}\n filename={filename as string}\n filesize={filesize as number}\n height={height as number}\n id={id as string}\n mimeType={mimeType as string}\n url={url as string}\n width={width as number}\n />\n\n {isImage(mimeType as string) && mimeType !== 'image/svg+xml' && (\n <UploadActions canEdit={canEdit} showSizePreviews={hasImageSizes && doc.filename} />\n )}\n </div>\n {handleRemove && (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleRemove}\n round\n />\n )}\n </header>\n </div>\n )\n}\n"],"names":["isImage","React","UploadActions","Button","Thumbnail","FileMeta","baseClass","FileDetails","props","canEdit","collectionSlug","doc","handleRemove","hasImageSizes","imageCacheTag","uploadConfig","id","filename","filesize","height","mimeType","thumbnailURL","url","width","div","className","header","fileSrc","collection","showSizePreviews","buttonStyle","icon","iconStyle","onClick","round"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,oBAAmB;AAC3C,OAAOC,WAAW,QAAO;AAEzB,SAASC,aAAa,QAAQ,iCAAgC;AAC9D,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SAASC,QAAQ,QAAQ,sBAAqB;AAG9C,MAAMC,YAAY;AAgBlB,OAAO,MAAMC,cAA0C,CAACC;IACtD,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAEC,GAAG,EAAEC,YAAY,EAAEC,aAAa,EAAEC,aAAa,EAAEC,YAAY,EAAE,GAC9FP;IAEF,MAAM,EAAEQ,EAAE,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGZ;IAE/E,qBACE,oBAACa;QAAIC,WAAWnB;qBACd,oBAACoB,8BACC,oBAACtB;QACCM,gBAAgBA;QAChBC,KAAKA;QACLgB,SAASN,gBAAgBC;QACzBR,eAAeA;QACfC,cAAcA;sBAEhB,oBAACS;QAAIC,WAAW,CAAC,EAAEnB,UAAU,aAAa,CAAC;qBACzC,oBAACD;QACCuB,YAAYlB;QACZO,UAAUA;QACVC,UAAUA;QACVC,QAAQA;QACRH,IAAIA;QACJI,UAAUA;QACVE,KAAKA;QACLC,OAAOA;QAGRvB,QAAQoB,aAAuBA,aAAa,iCAC3C,oBAAClB;QAAcO,SAASA;QAASoB,kBAAkBhB,iBAAiBF,IAAIM,QAAQ;SAGnFL,8BACC,oBAACT;QACC2B,aAAY;QACZL,WAAW,CAAC,EAAEnB,UAAU,QAAQ,CAAC;QACjCyB,MAAK;QACLC,WAAU;QACVC,SAASrB;QACTsB,OAAAA;;AAMZ,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { Button } from '../Button/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'generate-confirmation'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport const GenerateConfirmation: React.FC<GenerateConfirmationProps> = (props) => {\n const { Modal, useModal } = facelessUIImport\n\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = () => {\n setKey()\n toggleModal(modalSlug)\n toast.success(t('authentication:newAPIKeyGenerated'), { autoClose: 3000 })\n highlightField(true)\n }\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('authentication:confirmGeneration')}</h1>\n <p>\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n </p>\n\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={handleGenerate}>{t('authentication:generate')}</Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","React","toast","useDocumentInfo","useTranslation","MinimalTemplate","Button","Translation","baseClass","GenerateConfirmation","props","Modal","useModal","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","autoClose","Fragment","buttonStyle","onClick","size","className","slug","h1","p","elements","children","strong","i18nKey","type"],"mappings":"AAAA;AACA,YAAYA,sBAAsB,qBAAoB;AACtD,OAAOC,WAAW,QAAO;AACzB,SAASC,KAAK,QAAQ,iBAAgB;AAEtC,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,WAAW,QAAQ,0BAAyB;AAGrD,MAAMC,YAAY;AAOlB,OAAO,MAAMC,uBAA4D,CAACC;IACxE,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGZ;IAE5B,MAAM,EAAEa,cAAc,EAAEC,MAAM,EAAE,GAAGJ;IAEnC,MAAM,EAAEK,EAAE,EAAE,GAAGZ;IACf,MAAM,EAAEa,WAAW,EAAE,GAAGJ;IACxB,MAAM,EAAEK,CAAC,EAAE,GAAGb;IAEd,MAAMc,YAAY,CAAC,sBAAsB,EAAEH,GAAG,CAAC;IAE/C,MAAMI,iBAAiB;QACrBL;QACAE,YAAYE;QACZhB,MAAMkB,OAAO,CAACH,EAAE,sCAAsC;YAAEI,WAAW;QAAK;QACxER,eAAe;IACjB;IAEA,qBACE,oBAACZ,MAAMqB,QAAQ,sBACb,oBAAChB;QACCiB,aAAY;QACZC,SAAS;YACPR,YAAYE;QACd;QACAO,MAAK;OAEJR,EAAE,oDAEL,oBAACN;QAAMe,WAAWlB;QAAWmB,MAAMT;qBACjC,oBAACb;QAAgBqB,WAAW,CAAC,EAAElB,UAAU,UAAU,CAAC;qBAClD,oBAACoB,YAAIX,EAAE,oDACP,oBAACY,yBACC,oBAACtB;QACCuB,UAAU;YACR,GAAG,CAAC,EAAEC,QAAQ,EAAE,iBAAK,oBAACC,gBAAQD;QAChC;QACAE,SAAQ;QACRhB,GAAGA;uBAIP,oBAACX;QACCiB,aAAY;QACZC,SAAS;YACPR,YAAYE;QACd;QACAgB,MAAK;OAEJjB,EAAE,kCAEL,oBAACX;QAAOkB,SAASL;OAAiBF,EAAE;AAK9C,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { Button } from '../Button/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'generate-confirmation'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport const GenerateConfirmation: React.FC<GenerateConfirmationProps> = (props) => {\n const { Modal, useModal } = facelessUIImport\n\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = () => {\n setKey()\n toggleModal(modalSlug)\n toast.success(t('authentication:newAPIKeyGenerated'), { autoClose: 3000 })\n highlightField(true)\n }\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('authentication:confirmGeneration')}</h1>\n <p>\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n </p>\n\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={handleGenerate}>{t('authentication:generate')}</Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","React","toast","useDocumentInfo","useTranslation","MinimalTemplate","Button","Translation","baseClass","GenerateConfirmation","props","Modal","useModal","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","autoClose","Fragment","buttonStyle","onClick","size","className","slug","h1","p","elements","children","strong","i18nKey","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,YAAYA,sBAAsB,qBAAoB;AACtD,OAAOC,WAAW,QAAO;AACzB,SAASC,KAAK,QAAQ,iBAAgB;AAEtC,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,WAAW,QAAQ,0BAAyB;AAGrD,MAAMC,YAAY;AAOlB,OAAO,MAAMC,uBAA4D,CAACC;IACxE,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGZ;IAE5B,MAAM,EAAEa,cAAc,EAAEC,MAAM,EAAE,GAAGJ;IAEnC,MAAM,EAAEK,EAAE,EAAE,GAAGZ;IACf,MAAM,EAAEa,WAAW,EAAE,GAAGJ;IACxB,MAAM,EAAEK,CAAC,EAAE,GAAGb;IAEd,MAAMc,YAAY,CAAC,sBAAsB,EAAEH,GAAG,CAAC;IAE/C,MAAMI,iBAAiB;QACrBL;QACAE,YAAYE;QACZhB,MAAMkB,OAAO,CAACH,EAAE,sCAAsC;YAAEI,WAAW;QAAK;QACxER,eAAe;IACjB;IAEA,qBACE,oBAACZ,MAAMqB,QAAQ,sBACb,oBAAChB;QACCiB,aAAY;QACZC,SAAS;YACPR,YAAYE;QACd;QACAO,MAAK;OAEJR,EAAE,oDAEL,oBAACN;QAAMe,WAAWlB;QAAWmB,MAAMT;qBACjC,oBAACb;QAAgBqB,WAAW,CAAC,EAAElB,UAAU,UAAU,CAAC;qBAClD,oBAACoB,YAAIX,EAAE,oDACP,oBAACY,yBACC,oBAACtB;QACCuB,UAAU;YACR,GAAG,CAAC,EAAEC,QAAQ,EAAE,iBAAK,oBAACC,gBAAQD;QAChC;QACAE,SAAQ;QACRhB,GAAGA;uBAIP,oBAACX;QACCiB,aAAY;QACZC,SAAS;YACPR,YAAYE;QACd;QACAgB,MAAK;OAEJjB,EAAE,kCAEL,oBAACX;QAAOkB,SAASL;OAAiBF,EAAE;AAK9C,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Gutter/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport './index.scss'\n\nexport type GutterProps = {\n children: React.ReactNode\n className?: string\n left?: boolean\n negativeLeft?: boolean\n negativeRight?: boolean\n right?: boolean\n}\n\nconst baseClass = 'gutter'\n\nexport const Gutter = forwardRef<HTMLDivElement, GutterProps>((props, ref) => {\n const {\n children,\n className,\n left = true,\n negativeLeft = false,\n negativeRight = false,\n right = true,\n } = props\n\n const shouldPadLeft = left && !negativeLeft\n const shouldPadRight = right && !negativeRight\n\n return (\n <div\n className={[\n shouldPadLeft && `${baseClass}--left`,\n shouldPadRight && `${baseClass}--right`,\n negativeLeft && `${baseClass}--negative-left`,\n negativeRight && `${baseClass}--negative-right`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n >\n {children}\n </div>\n )\n})\n\nGutter.displayName = 'Gutter'\n"],"names":["React","forwardRef","baseClass","Gutter","props","ref","children","className","left","negativeLeft","negativeRight","right","shouldPadLeft","shouldPadRight","div","filter","Boolean","join","displayName"],"mappings":"AAAA,OAAOA,SAASC,UAAU,QAAQ,QAAO;AAazC,MAAMC,YAAY;AAElB,OAAO,MAAMC,uBAASF,WAAwC,CAACG,OAAOC;IACpE,MAAM,EACJC,QAAQ,EACRC,SAAS,EACTC,OAAO,IAAI,EACXC,eAAe,KAAK,EACpBC,gBAAgB,KAAK,EACrBC,QAAQ,IAAI,EACb,GAAGP;IAEJ,MAAMQ,gBAAgBJ,QAAQ,CAACC;IAC/B,MAAMI,iBAAiBF,SAAS,CAACD;IAEjC,qBACE,oBAACI;QACCP,WAAW;YACTK,iBAAiB,CAAC,EAAEV,UAAU,MAAM,CAAC;YACrCW,kBAAkB,CAAC,EAAEX,UAAU,OAAO,CAAC;YACvCO,gBAAgB,CAAC,EAAEP,UAAU,eAAe,CAAC;YAC7CQ,iBAAiB,CAAC,EAAER,UAAU,gBAAgB,CAAC;YAC/CK;SACD,CACEQ,MAAM,CAACC,SACPC,IAAI,CAAC;QACRZ,KAAKA;OAEJC;AAGP,GAAE;AAEFH,OAAOe,WAAW,GAAG"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Gutter/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nimport './index.scss'\n\nexport type GutterProps = {\n children: React.ReactNode\n className?: string\n left?: boolean\n negativeLeft?: boolean\n negativeRight?: boolean\n right?: boolean\n}\n\nconst baseClass = 'gutter'\n\nexport const Gutter = forwardRef<HTMLDivElement, GutterProps>((props, ref) => {\n const {\n children,\n className,\n left = true,\n negativeLeft = false,\n negativeRight = false,\n right = true,\n } = props\n\n const shouldPadLeft = left && !negativeLeft\n const shouldPadRight = right && !negativeRight\n\n return (\n <div\n className={[\n shouldPadLeft && `${baseClass}--left`,\n shouldPadRight && `${baseClass}--right`,\n negativeLeft && `${baseClass}--negative-left`,\n negativeRight && `${baseClass}--negative-right`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n >\n {children}\n </div>\n )\n})\n\nGutter.displayName = 'Gutter'\n"],"names":["React","forwardRef","baseClass","Gutter","props","ref","children","className","left","negativeLeft","negativeRight","right","shouldPadLeft","shouldPadRight","div","filter","Boolean","join","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAASC,UAAU,QAAQ,QAAO;AAazC,MAAMC,YAAY;AAElB,OAAO,MAAMC,uBAASF,WAAwC,CAACG,OAAOC;IACpE,MAAM,EACJC,QAAQ,EACRC,SAAS,EACTC,OAAO,IAAI,EACXC,eAAe,KAAK,EACpBC,gBAAgB,KAAK,EACrBC,QAAQ,IAAI,EACb,GAAGP;IAEJ,MAAMQ,gBAAgBJ,QAAQ,CAACC;IAC/B,MAAMI,iBAAiBF,SAAS,CAACD;IAEjC,qBACE,oBAACI;QACCP,WAAW;YACTK,iBAAiB,CAAC,EAAEV,UAAU,MAAM,CAAC;YACrCW,kBAAkB,CAAC,EAAEX,UAAU,OAAO,CAAC;YACvCO,gBAAgB,CAAC,EAAEP,UAAU,eAAe,CAAC;YAC7CQ,iBAAiB,CAAC,EAAER,UAAU,gBAAgB,CAAC;YAC/CK;SACD,CACEQ,MAAM,CAACC,SACPC,IAAI,CAAC;QACRZ,KAAKA;OAEJC;AAGP,GAAE;AAEFH,OAAOe,WAAW,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Hamburger/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { Chevron } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'hamburger'\n\nexport const Hamburger: React.FC<{\n closeIcon?: 'collapse' | 'x'\n isActive?: boolean\n}> = (props) => {\n const { t } = useTranslation()\n const { closeIcon = 'x', isActive = false } = props\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__icon`}>\n {!isActive && (\n <div className={`${baseClass}__lines`} title={t('general:open')}>\n <div className={`${baseClass}__line ${baseClass}__top`} />\n <div className={`${baseClass}__line ${baseClass}__middle`} />\n <div className={`${baseClass}__line ${baseClass}__bottom`} />\n </div>\n )}\n {isActive && (\n <div\n aria-label={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n className={`${baseClass}__close-icon`}\n title={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n >\n {closeIcon === 'x' && (\n <React.Fragment>\n <div className={`${baseClass}__line ${baseClass}__x-left`} />\n <div className={`${baseClass}__line ${baseClass}__x-right`} />\n </React.Fragment>\n )}\n {closeIcon === 'collapse' && (\n <Chevron className={`${baseClass}__collapse-chevron`} direction=\"left\" />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","Chevron","useTranslation","baseClass","Hamburger","props","t","closeIcon","isActive","div","className","title","aria-label","Fragment","direction"],"mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAEzB,SAASC,OAAO,QAAQ,+BAA8B;AACtD,SAASC,cAAc,QAAQ,uCAAsC;AAGrE,MAAMC,YAAY;AAElB,OAAO,MAAMC,YAGR,CAACC;IACJ,MAAM,EAAEC,CAAC,EAAE,GAAGJ;IACd,MAAM,EAAEK,YAAY,GAAG,EAAEC,WAAW,KAAK,EAAE,GAAGH;IAE9C,qBACE,oBAACI;QAAIC,WAAWP;qBACd,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,SAAS,CAAC;qBACrC,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,MAAM,CAAC;OACjC,CAACK,0BACA,oBAACC;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,CAAC;QAAEQ,OAAOL,EAAE;qBAC9C,oBAACG;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,KAAK,CAAC;sBACtD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;sBACzD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;SAG5DK,0BACC,oBAACC;QACCG,cAAYL,cAAc,aAAaD,EAAE,sBAAsBA,EAAE;QACjEI,WAAW,CAAC,EAAEP,UAAU,YAAY,CAAC;QACrCQ,OAAOJ,cAAc,aAAaD,EAAE,sBAAsBA,EAAE;OAE3DC,cAAc,qBACb,oBAACP,MAAMa,QAAQ,sBACb,oBAACJ;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;sBACzD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,SAAS,CAAC;SAG7DI,cAAc,4BACb,oBAACN;QAAQS,WAAW,CAAC,EAAEP,UAAU,kBAAkB,CAAC;QAAEW,WAAU;;AAQhF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Hamburger/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { Chevron } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'hamburger'\n\nexport const Hamburger: React.FC<{\n closeIcon?: 'collapse' | 'x'\n isActive?: boolean\n}> = (props) => {\n const { t } = useTranslation()\n const { closeIcon = 'x', isActive = false } = props\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__icon`}>\n {!isActive && (\n <div className={`${baseClass}__lines`} title={t('general:open')}>\n <div className={`${baseClass}__line ${baseClass}__top`} />\n <div className={`${baseClass}__line ${baseClass}__middle`} />\n <div className={`${baseClass}__line ${baseClass}__bottom`} />\n </div>\n )}\n {isActive && (\n <div\n aria-label={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n className={`${baseClass}__close-icon`}\n title={closeIcon === 'collapse' ? t('general:collapse') : t('general:close')}\n >\n {closeIcon === 'x' && (\n <React.Fragment>\n <div className={`${baseClass}__line ${baseClass}__x-left`} />\n <div className={`${baseClass}__line ${baseClass}__x-right`} />\n </React.Fragment>\n )}\n {closeIcon === 'collapse' && (\n <Chevron className={`${baseClass}__collapse-chevron`} direction=\"left\" />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","Chevron","useTranslation","baseClass","Hamburger","props","t","closeIcon","isActive","div","className","title","aria-label","Fragment","direction"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAEzB,SAASC,OAAO,QAAQ,+BAA8B;AACtD,SAASC,cAAc,QAAQ,uCAAsC;AAGrE,MAAMC,YAAY;AAElB,OAAO,MAAMC,YAGR,CAACC;IACJ,MAAM,EAAEC,CAAC,EAAE,GAAGJ;IACd,MAAM,EAAEK,YAAY,GAAG,EAAEC,WAAW,KAAK,EAAE,GAAGH;IAE9C,qBACE,oBAACI;QAAIC,WAAWP;qBACd,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,SAAS,CAAC;qBACrC,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,MAAM,CAAC;OACjC,CAACK,0BACA,oBAACC;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,CAAC;QAAEQ,OAAOL,EAAE;qBAC9C,oBAACG;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,KAAK,CAAC;sBACtD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;sBACzD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;SAG5DK,0BACC,oBAACC;QACCG,cAAYL,cAAc,aAAaD,EAAE,sBAAsBA,EAAE;QACjEI,WAAW,CAAC,EAAEP,UAAU,YAAY,CAAC;QACrCQ,OAAOJ,cAAc,aAAaD,EAAE,sBAAsBA,EAAE;OAE3DC,cAAc,qBACb,oBAACP,MAAMa,QAAQ,sBACb,oBAACJ;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,QAAQ,CAAC;sBACzD,oBAACM;QAAIC,WAAW,CAAC,EAAEP,UAAU,OAAO,EAAEA,UAAU,SAAS,CAAC;SAG7DI,cAAc,4BACb,oBAACN;QAAQS,WAAW,CAAC,EAAEP,UAAU,kBAAkB,CAAC;QAAEW,WAAU;;AAQhF,EAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" resolution-mode="require"/>
|
|
2
|
-
import type { Permissions
|
|
2
|
+
import type { Permissions } from 'payload/auth';
|
|
3
|
+
import type { PayloadRequest } from 'payload/types';
|
|
3
4
|
export declare const HydrateClientUser: React.FC<{
|
|
4
5
|
permissions: Permissions;
|
|
5
|
-
user:
|
|
6
|
+
user: PayloadRequest['user'];
|
|
6
7
|
}>;
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/HydrateClientUser/index.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/HydrateClientUser/index.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMnD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC7B,CASA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/HydrateClientUser/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Permissions
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/HydrateClientUser/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Permissions } from 'payload/auth'\nimport type { PayloadRequest } from 'payload/types'\n\nimport { useEffect } from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\n\nexport const HydrateClientUser: React.FC<{\n permissions: Permissions\n user: PayloadRequest['user']\n}> = ({ permissions, user }) => {\n const { setPermissions, setUser } = useAuth()\n\n useEffect(() => {\n setUser(user)\n setPermissions(permissions)\n }, [user, permissions, setUser, setPermissions])\n\n return null\n}\n"],"names":["useEffect","useAuth","HydrateClientUser","permissions","user","setPermissions","setUser"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA;AAKA,SAASA,SAAS,QAAQ,QAAO;AAEjC,SAASC,OAAO,QAAQ,gCAA+B;AAEvD,OAAO,MAAMC,oBAGR,CAAC,EAAEC,WAAW,EAAEC,IAAI,EAAE;IACzB,MAAM,EAAEC,cAAc,EAAEC,OAAO,EAAE,GAAGL;IAEpCD,UAAU;QACRM,QAAQF;QACRC,eAAeF;IACjB,GAAG;QAACC;QAAMD;QAAaG;QAASD;KAAe;IAE/C,OAAO;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/IDLabel/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{ className?: string; id: string; prefix?: string }> = ({\n id,\n className,\n prefix = 'ID:',\n}) => (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n {prefix}\n \n {id}\n </div>\n)\n"],"names":["React","baseClass","IDLabel","id","className","prefix","div","filter","Boolean","join","title"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AAElB,OAAO,MAAMC,UAAyE,CAAC,EACrFC,EAAE,EACFC,SAAS,EACTC,SAAS,KAAK,EACf,iBACC,oBAACC;QAAIF,WAAW;YAACH;YAAWG;SAAU,CAACG,MAAM,CAACC,SAASC,IAAI,CAAC;QAAMC,OAAOP;OACtEE,QAAO,MAEPF,IAEJ"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/IDLabel/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'id-label'\n\nexport const IDLabel: React.FC<{ className?: string; id: string; prefix?: string }> = ({\n id,\n className,\n prefix = 'ID:',\n}) => (\n <div className={[baseClass, className].filter(Boolean).join(' ')} title={id}>\n {prefix}\n \n {id}\n </div>\n)\n"],"names":["React","baseClass","IDLabel","id","className","prefix","div","filter","Boolean","join","title"],"rangeMappings":";;;;;;;;","mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AAElB,OAAO,MAAMC,UAAyE,CAAC,EACrFC,EAAE,EACFC,SAAS,EACTC,SAAS,KAAK,EACf,iBACC,oBAACC;QAAIF,WAAW;YAACH;YAAWG;SAAU,CAACG,MAAM,CAACC,SAASC,IAAI,CAAC;QAAMC,OAAOP;OACtEE,QAAO,MAEPF,IAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"sourcesContent":["import { flattenFieldMap } from '@payloadcms/ui/utilities/flattenFieldMap'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nexport const getTextFieldsToBeSearched = (\n listSearchableFields: string[],\n fieldMap: FieldMap,\n): MappedField[] => {\n if (listSearchableFields) {\n const flattenedFields = flattenFieldMap(fieldMap)\n return flattenedFields.filter(\n (field) => field.isFieldAffectingData && listSearchableFields.includes(field.name),\n )\n }\n\n return null\n}\n"],"names":["flattenFieldMap","getTextFieldsToBeSearched","listSearchableFields","fieldMap","flattenedFields","filter","field","isFieldAffectingData","includes","name"],"mappings":"AAAA,SAASA,eAAe,QAAQ,2CAA0C;AAI1E,OAAO,MAAMC,4BAA4B,CACvCC,sBACAC;IAEA,IAAID,sBAAsB;QACxB,MAAME,kBAAkBJ,gBAAgBG;QACxC,OAAOC,gBAAgBC,MAAM,CAC3B,CAACC,QAAUA,MAAMC,oBAAoB,IAAIL,qBAAqBM,QAAQ,CAACF,MAAMG,IAAI;IAErF;IAEA,OAAO;AACT,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"sourcesContent":["import { flattenFieldMap } from '@payloadcms/ui/utilities/flattenFieldMap'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nexport const getTextFieldsToBeSearched = (\n listSearchableFields: string[],\n fieldMap: FieldMap,\n): MappedField[] => {\n if (listSearchableFields) {\n const flattenedFields = flattenFieldMap(fieldMap)\n return flattenedFields.filter(\n (field) => field.isFieldAffectingData && listSearchableFields.includes(field.name),\n )\n }\n\n return null\n}\n"],"names":["flattenFieldMap","getTextFieldsToBeSearched","listSearchableFields","fieldMap","flattenedFields","filter","field","isFieldAffectingData","includes","name"],"rangeMappings":";;;;;;;","mappings":"AAAA,SAASA,eAAe,QAAQ,2CAA0C;AAI1E,OAAO,MAAMC,4BAA4B,CACvCC,sBACAC;IAEA,IAAID,sBAAsB;QACxB,MAAME,kBAAkBJ,gBAAgBG;QACxC,OAAOC,gBAAgBC,MAAM,CAC3B,CAACC,QAAUA,MAAMC,oBAAoB,IAAIL,qBAAqBM,QAAQ,CAACF,MAAMG,IAAI;IAErF;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -40,7 +40,7 @@ const baseClass = 'list-controls';
|
|
|
40
40
|
className: `${baseClass}__wrap`
|
|
41
41
|
}, /*#__PURE__*/ React.createElement(SearchFilter, {
|
|
42
42
|
fieldLabel: (titleField && getTranslation('label' in titleField.fieldComponentProps && typeof titleField.fieldComponentProps.label === 'string' ? titleField.fieldComponentProps.label : titleField.name, i18n)) ?? undefined,
|
|
43
|
-
fieldName: titleField
|
|
43
|
+
fieldName: titleField?.name,
|
|
44
44
|
handleChange: handleSearchChange,
|
|
45
45
|
listSearchableFields: getTextFieldsToBeSearched(collectionConfig.admin.listSearchableFields, fieldMap)
|
|
46
46
|
}), /*#__PURE__*/ React.createElement("div", {
|