diff --git a/packages/client/src/components/AccessSelector/index.tsx b/packages/client/src/components/AccessSelector/index.tsx index 932b4e0a90..2a12f0251c 100644 --- a/packages/client/src/components/AccessSelector/index.tsx +++ b/packages/client/src/components/AccessSelector/index.tsx @@ -54,6 +54,7 @@ interface AccessSelectorProps { directionY?: string; isSelectionDisabled?: boolean; selectionErrorText: React.ReactNode; + availableAccess?: number; } const AccessSelector: React.FC = ({ @@ -76,6 +77,7 @@ const AccessSelector: React.FC = ({ directionY = "bottom", isSelectionDisabled, selectionErrorText, + availableAccess, }) => { const [horizontalOrientation, setHorizontalOrientation] = useState(false); const [width, setWidth] = useState(manualWidth || 0); @@ -139,6 +141,7 @@ const AccessSelector: React.FC = ({ isDisabled={isDisabled} isSelectionDisabled={isSelectionDisabled} selectionErrorText={selectionErrorText} + availableAccess={availableAccess} /> )} @@ -163,6 +166,7 @@ const AccessSelector: React.FC = ({ isDisabled={isDisabled} isSelectionDisabled={isSelectionDisabled} selectionErrorText={selectionErrorText} + availableAccess={availableAccess} /> )} diff --git a/packages/client/src/components/panels/InvitePanel/sub-components/Item.js b/packages/client/src/components/panels/InvitePanel/sub-components/Item.js index 527d332e9a..101621c593 100644 --- a/packages/client/src/components/panels/InvitePanel/sub-components/Item.js +++ b/packages/client/src/components/panels/InvitePanel/sub-components/Item.js @@ -50,6 +50,7 @@ import { filterGroupRoleOptions, filterUserRoleOptions } from "SRC_DIR/helpers"; import AccessSelector from "../../../AccessSelector"; import PaidQuotaLimitError from "SRC_DIR/components/PaidQuotaLimitError"; +import { EmployeeType } from "@docspace/shared/enums"; const Item = ({ t, @@ -261,6 +262,7 @@ const Item = ({ noBorder isSelectionDisabled={isPaidUserLimit} selectionErrorText={} + availableAccess={EmployeeType.Guest} /> )} diff --git a/packages/shared/components/access-right-select/AccessRightSelect.tsx b/packages/shared/components/access-right-select/AccessRightSelect.tsx index 71984a6d3d..5a95e3aa5b 100644 --- a/packages/shared/components/access-right-select/AccessRightSelect.tsx +++ b/packages/shared/components/access-right-select/AccessRightSelect.tsx @@ -49,6 +49,7 @@ export const AccessRightSelectPure = ({ className, isSelectionDisabled, selectionErrorText, + availableAccess, ...props }: AccessRightSelectProps) => { const [currentItem, setCurrentItem] = useState(selectedOption); @@ -62,7 +63,11 @@ export const AccessRightSelectPure = ({ if (option) { if (!isSelectionDisabled) setCurrentItem(option); - if (isSelectionDisabled && option.access !== selectedOption.access) { + const isError = availableAccess + ? availableAccess !== option.access + : option.access !== selectedOption.access; + + if (isSelectionDisabled && isError) { toastr.error(selectionErrorText); return; } diff --git a/packages/shared/components/access-right-select/AccessRightSelect.types.ts b/packages/shared/components/access-right-select/AccessRightSelect.types.ts index 1d14224eb9..9d89be91b2 100644 --- a/packages/shared/components/access-right-select/AccessRightSelect.types.ts +++ b/packages/shared/components/access-right-select/AccessRightSelect.types.ts @@ -51,4 +51,5 @@ export type AccessRightSelectProps = PropsFromCombobox & { accessOptions: ComboboxProps["options"]; isSelectionDisabled?: boolean; selectionErrorText?: React.ReactNode; + availableAccess?: number; };