diff --git a/src/cloud/components/Props/Pickers/StatusSelect.tsx b/src/cloud/components/Props/Pickers/StatusSelect.tsx index 74626cafe..40990edf0 100644 --- a/src/cloud/components/Props/Pickers/StatusSelect.tsx +++ b/src/cloud/components/Props/Pickers/StatusSelect.tsx @@ -85,9 +85,11 @@ const StatusSelect = ({ export default StatusSelect export const StatusSelector = ({ + readOnly, onSelect, ignoredStatuses = [], }: { + readOnly?: boolean ignoredStatuses?: string[] onSelect: (status: SerializedStatus | null) => void }) => { @@ -116,9 +118,9 @@ export const StatusSelector = ({ } })} onSelect={onSelect} - onCreate={createStatus} - onUpdate={editStatus} - onDelete={removeStatus} + onCreate={!readOnly ? createStatus : undefined} + onUpdate={!readOnly ? editStatus : undefined} + onDelete={!readOnly ? removeStatus : undefined} type='Status' allowEmpty={ ignoredStatuses == null ? true : !ignoredStatuses.includes('none') diff --git a/src/cloud/components/Views/Calendar/CalendarView.tsx b/src/cloud/components/Views/Calendar/CalendarView.tsx index ec2d522d7..cc5ef519c 100644 --- a/src/cloud/components/Views/Calendar/CalendarView.tsx +++ b/src/cloud/components/Views/Calendar/CalendarView.tsx @@ -212,6 +212,7 @@ const CalendarView = ({ [actionsRef, closeLastModal] ) + const isViewEditable = currentUserIsCoreMember || view.smartViewId != null return ( @@ -228,7 +229,7 @@ const CalendarView = ({ teamId={team.id} watchedProp={watchedProp} updateWatchedProp={actionsRef.current.updateWatchedProp} - currentUserIsCoreMember={currentUserIsCoreMember} + isViewEditable={isViewEditable} />, { width: 250, @@ -281,7 +282,7 @@ const CalendarView = ({ view={view} teamId={team.id} properties={view.data.props} - currentUserIsCoreMember={currentUserIsCoreMember} + isViewEditable={isViewEditable} setProperties={actionsRef.current.setViewProperties} />, { diff --git a/src/cloud/components/Views/Calendar/CalendarViewPropertiesContext.tsx b/src/cloud/components/Views/Calendar/CalendarViewPropertiesContext.tsx index b9be9c8bf..de5ed15ea 100644 --- a/src/cloud/components/Views/Calendar/CalendarViewPropertiesContext.tsx +++ b/src/cloud/components/Views/Calendar/CalendarViewPropertiesContext.tsx @@ -33,7 +33,7 @@ interface CalendarViewPropertiesContextProps { view: SerializedView teamId: string properties?: Record - currentUserIsCoreMember?: boolean + isViewEditable?: boolean setProperties: ( props: Record ) => Promise @@ -43,7 +43,7 @@ const CalendarViewPropertiesContext = ({ view, teamId, properties = {}, - currentUserIsCoreMember, + isViewEditable, setProperties, }: CalendarViewPropertiesContextProps) => { const [formState, setFormState] = useState<'list' | 'add'>('list') @@ -160,7 +160,7 @@ const CalendarViewPropertiesContext = ({ type: 'content', icon: getIconPathOfPropType(col.id.split(':').pop() as any), label: {col.name}, - content: currentUserIsCoreMember ? ( + content: isViewEditable ? ( )} - {currentUserIsCoreMember && ( + {isViewEditable && ( <> {orderedProps.length > 0 && } { @@ -162,8 +162,7 @@ const CalendarWatchedPropContext = ({ ), iconPath: getIconPathOfPropType(propSuggestion.type), - disabled: - !currentUserIsCoreMember || sending != null || isSelected, + disabled: !isViewEditable || sending != null || isSelected, spinning: sending === propSuggestion.name, id: id, onClick: () => setNewWatchedProp(propSuggestion), @@ -198,8 +197,7 @@ const CalendarWatchedPropContext = ({ ), iconPath: getIconPathOfPropType(propSuggestion.type), - disabled: - !currentUserIsCoreMember || sending != null || isSelected, + disabled: !isViewEditable || sending != null || isSelected, spinning: sending === propSuggestion.name, id: id, onClick: () => setNewWatchedProp(propSuggestion), diff --git a/src/cloud/components/Views/Kanban/KanbanViewPropertiesContext.tsx b/src/cloud/components/Views/Kanban/KanbanViewPropertiesContext.tsx index 7e29c7a51..6e011b856 100644 --- a/src/cloud/components/Views/Kanban/KanbanViewPropertiesContext.tsx +++ b/src/cloud/components/Views/Kanban/KanbanViewPropertiesContext.tsx @@ -33,7 +33,7 @@ interface KanbanViewPropertiesContextProps { view: SerializedView teamId: string properties?: Record - currentUserIsCoreMember?: boolean + isViewEditable?: boolean setProperties: ( props: Record ) => Promise @@ -43,7 +43,7 @@ const KanbanViewPropertiesContext = ({ view, teamId, properties = {}, - currentUserIsCoreMember, + isViewEditable, setProperties, }: KanbanViewPropertiesContextProps) => { const [formState, setFormState] = useState<'list' | 'add'>('list') @@ -159,7 +159,7 @@ const KanbanViewPropertiesContext = ({ type: 'content', icon: getIconPathOfPropType(col.id.split(':').pop() as any), label: {col.name}, - content: currentUserIsCoreMember ? ( + content: isViewEditable ? ( )} - {currentUserIsCoreMember && ( + {isViewEditable && ( <> {orderedProps.length > 0 && } { @@ -84,6 +85,7 @@ const KanbanView = ({ openContextModal( ev, list.id)} onSelect={(status) => { addListRef.current(status?.id.toString() || 'none') @@ -93,7 +95,7 @@ const KanbanView = ({ { width: 200, removePadding: true, keepAll: true } ) }, - [openContextModal, closeLastModal, lists] + [openContextModal, closeLastModal, currentUserIsCoreMember, lists] ) const removeListRef = useRef(removeList) @@ -123,9 +125,9 @@ const KanbanView = ({ name={status?.name || 'No Status'} backgroundColor={status?.backgroundColor} /> - {currentUserIsCoreMember && ( + {isViewEditable && (
- {currentWorkspaceId != null && ( + {currentWorkspaceId != null && currentUserIsCoreMember && (