forked from github/plane
fix: formatting files
This commit is contained in:
parent
1fa47a6c04
commit
bce69bcbe1
@ -71,7 +71,11 @@ export const setToast = (props: SetToastProps) => {
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}}
|
}}
|
||||||
className={cn("w-[350px] h-[67.3px] rounded-lg border shadow-sm p-2", backgroundColorClassName, borderColorClassName)}
|
className={cn(
|
||||||
|
"w-[350px] h-[67.3px] rounded-lg border shadow-sm p-2",
|
||||||
|
backgroundColorClassName,
|
||||||
|
borderColorClassName
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
<div className="w-full h-full flex items-center justify-center px-4 py-2">
|
<div className="w-full h-full flex items-center justify-center px-4 py-2">
|
||||||
{icon && <div className="flex items-center justify-center">{icon}</div>}
|
{icon && <div className="flex items-center justify-center">{icon}</div>}
|
||||||
|
@ -203,8 +203,8 @@ export const SignInUniqueCodeForm: React.FC<Props> = (props) => {
|
|||||||
{resendTimerCode > 0
|
{resendTimerCode > 0
|
||||||
? `Request new code in ${resendTimerCode}s`
|
? `Request new code in ${resendTimerCode}s`
|
||||||
: isRequestingNewCode
|
: isRequestingNewCode
|
||||||
? "Requesting new code"
|
? "Requesting new code"
|
||||||
: "Request new code"}
|
: "Request new code"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -202,8 +202,8 @@ export const SignUpUniqueCodeForm: React.FC<Props> = (props) => {
|
|||||||
{resendTimerCode > 0
|
{resendTimerCode > 0
|
||||||
? `Request new code in ${resendTimerCode}s`
|
? `Request new code in ${resendTimerCode}s`
|
||||||
: isRequestingNewCode
|
: isRequestingNewCode
|
||||||
? "Requesting new code"
|
? "Requesting new code"
|
||||||
: "Request new code"}
|
: "Request new code"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -160,8 +160,8 @@ export const CustomAnalyticsSidebar: React.FC<Props> = observer((props) => {
|
|||||||
(cycleId
|
(cycleId
|
||||||
? cycleDetails?.created_at
|
? cycleDetails?.created_at
|
||||||
: moduleId
|
: moduleId
|
||||||
? moduleDetails?.created_at
|
? moduleDetails?.created_at
|
||||||
: projectDetails?.created_at) ?? ""
|
: projectDetails?.created_at) ?? ""
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -170,8 +170,8 @@ export const CreateApiTokenForm: React.FC<Props> = (props) => {
|
|||||||
{value === "custom"
|
{value === "custom"
|
||||||
? "Custom date"
|
? "Custom date"
|
||||||
: selectedOption
|
: selectedOption
|
||||||
? selectedOption.label
|
? selectedOption.label
|
||||||
: "Set expiration date"}
|
: "Set expiration date"}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
value={value}
|
value={value}
|
||||||
@ -207,8 +207,8 @@ export const CreateApiTokenForm: React.FC<Props> = (props) => {
|
|||||||
? `Expires ${renderFormattedDate(customDate)}`
|
? `Expires ${renderFormattedDate(customDate)}`
|
||||||
: null
|
: null
|
||||||
: watch("expired_at")
|
: watch("expired_at")
|
||||||
? `Expires ${getExpiryDate(watch("expired_at") ?? "")}`
|
? `Expires ${getExpiryDate(watch("expired_at") ?? "")}`
|
||||||
: null}
|
: null}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -172,8 +172,8 @@ export const GptAssistantPopover: React.FC<Props> = (props) => {
|
|||||||
const generateResponseButtonText = isSubmitting
|
const generateResponseButtonText = isSubmitting
|
||||||
? "Generating response..."
|
? "Generating response..."
|
||||||
: response === ""
|
: response === ""
|
||||||
? "Generate response"
|
? "Generate response"
|
||||||
: "Generate again";
|
: "Generate again";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover as="div" className={`relative w-min text-left`}>
|
<Popover as="div" className={`relative w-min text-left`}>
|
||||||
|
@ -78,8 +78,8 @@ export const CyclesBoardCard: FC<ICyclesBoardCard> = observer((props) => {
|
|||||||
? cycleTotalIssues === 0
|
? cycleTotalIssues === 0
|
||||||
? "0 Issue"
|
? "0 Issue"
|
||||||
: cycleTotalIssues === cycleDetails.completed_issues
|
: cycleTotalIssues === cycleDetails.completed_issues
|
||||||
? `${cycleTotalIssues} Issue${cycleTotalIssues > 1 ? "s" : ""}`
|
? `${cycleTotalIssues} Issue${cycleTotalIssues > 1 ? "s" : ""}`
|
||||||
: `${cycleDetails.completed_issues}/${cycleTotalIssues} Issues`
|
: `${cycleDetails.completed_issues}/${cycleTotalIssues} Issues`
|
||||||
: "0 Issue";
|
: "0 Issue";
|
||||||
|
|
||||||
const handleCopyText = (e: MouseEvent<HTMLButtonElement>) => {
|
const handleCopyText = (e: MouseEvent<HTMLButtonElement>) => {
|
||||||
|
@ -216,8 +216,8 @@ export const CycleDetailsSidebar: React.FC<Props> = observer((props) => {
|
|||||||
? "0 Issue"
|
? "0 Issue"
|
||||||
: `${cycleDetails.progress_snapshot.completed_issues}/${cycleDetails.progress_snapshot.total_issues}`
|
: `${cycleDetails.progress_snapshot.completed_issues}/${cycleDetails.progress_snapshot.total_issues}`
|
||||||
: cycleDetails.total_issues === 0
|
: cycleDetails.total_issues === 0
|
||||||
? "0 Issue"
|
? "0 Issue"
|
||||||
: `${cycleDetails.completed_issues}/${cycleDetails.total_issues}`;
|
: `${cycleDetails.completed_issues}/${cycleDetails.total_issues}`;
|
||||||
|
|
||||||
const daysLeft = findHowManyDaysLeft(cycleDetails.end_date);
|
const daysLeft = findHowManyDaysLeft(cycleDetails.end_date);
|
||||||
|
|
||||||
|
@ -79,14 +79,14 @@ export const IssuesByStateGroupWidget: React.FC<WidgetProps> = observer((props)
|
|||||||
startedCount > 0
|
startedCount > 0
|
||||||
? "started"
|
? "started"
|
||||||
: unStartedCount > 0
|
: unStartedCount > 0
|
||||||
? "unstarted"
|
? "unstarted"
|
||||||
: backlogCount > 0
|
: backlogCount > 0
|
||||||
? "backlog"
|
? "backlog"
|
||||||
: completedCount > 0
|
: completedCount > 0
|
||||||
? "completed"
|
? "completed"
|
||||||
: canceledCount > 0
|
: canceledCount > 0
|
||||||
? "cancelled"
|
? "cancelled"
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
setActiveStateGroup(stateGroup);
|
setActiveStateGroup(stateGroup);
|
||||||
setDefaultStateGroup(stateGroup);
|
setDefaultStateGroup(stateGroup);
|
||||||
|
@ -312,8 +312,8 @@ export const CreateUpdateEstimateModal: React.FC<Props> = observer((props) => {
|
|||||||
? "Updating Estimate..."
|
? "Updating Estimate..."
|
||||||
: "Update Estimate"
|
: "Update Estimate"
|
||||||
: isSubmitting
|
: isSubmitting
|
||||||
? "Creating Estimate..."
|
? "Creating Estimate..."
|
||||||
: "Create Estimate"}
|
: "Create Estimate"}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -205,9 +205,7 @@ export const CycleIssuesHeader: React.FC = observer(() => {
|
|||||||
className="ml-1.5 flex-shrink-0"
|
className="ml-1.5 flex-shrink-0"
|
||||||
placement="bottom-start"
|
placement="bottom-start"
|
||||||
>
|
>
|
||||||
{currentProjectCycleIds?.map((cycleId) => (
|
{currentProjectCycleIds?.map((cycleId) => <CycleDropdownOption key={cycleId} cycleId={cycleId} />)}
|
||||||
<CycleDropdownOption key={cycleId} cycleId={cycleId} />
|
|
||||||
))}
|
|
||||||
</CustomMenu>
|
</CustomMenu>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -206,9 +206,7 @@ export const ModuleIssuesHeader: React.FC = observer(() => {
|
|||||||
className="ml-1.5 flex-shrink-0"
|
className="ml-1.5 flex-shrink-0"
|
||||||
placement="bottom-start"
|
placement="bottom-start"
|
||||||
>
|
>
|
||||||
{projectModuleIds?.map((moduleId) => (
|
{projectModuleIds?.map((moduleId) => <ModuleDropdownOption key={moduleId} moduleId={moduleId} />)}
|
||||||
<ModuleDropdownOption key={moduleId} moduleId={moduleId} />
|
|
||||||
))}
|
|
||||||
</CustomMenu>
|
</CustomMenu>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -31,13 +31,7 @@ interface IBaseCalendarRoot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => {
|
export const BaseCalendarRoot = observer((props: IBaseCalendarRoot) => {
|
||||||
const {
|
const { QuickActions, storeType, addIssuesToView, viewId, isCompletedCycle = false } = props;
|
||||||
QuickActions,
|
|
||||||
storeType,
|
|
||||||
addIssuesToView,
|
|
||||||
viewId,
|
|
||||||
isCompletedCycle = false,
|
|
||||||
} = props;
|
|
||||||
|
|
||||||
// router
|
// router
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
@ -5,7 +5,15 @@ import { observer } from "mobx-react-lite";
|
|||||||
import { Spinner } from "@plane/ui";
|
import { Spinner } from "@plane/ui";
|
||||||
import { CalendarHeader, CalendarWeekDays, CalendarWeekHeader } from "components/issues";
|
import { CalendarHeader, CalendarWeekDays, CalendarWeekHeader } from "components/issues";
|
||||||
// types
|
// types
|
||||||
import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOptions, TGroupedIssues, TIssue, TIssueKanbanFilters, TIssueMap } from "@plane/types";
|
import {
|
||||||
|
IIssueDisplayFilterOptions,
|
||||||
|
IIssueDisplayProperties,
|
||||||
|
IIssueFilterOptions,
|
||||||
|
TGroupedIssues,
|
||||||
|
TIssue,
|
||||||
|
TIssueKanbanFilters,
|
||||||
|
TIssueMap,
|
||||||
|
} from "@plane/types";
|
||||||
import { ICalendarWeek } from "./types";
|
import { ICalendarWeek } from "./types";
|
||||||
// constants
|
// constants
|
||||||
import { EIssueFilterType, EIssuesStoreType } from "constants/issue";
|
import { EIssueFilterType, EIssuesStoreType } from "constants/issue";
|
||||||
|
@ -9,7 +9,13 @@ import { Popover, Transition } from "@headlessui/react";
|
|||||||
import { Check, ChevronUp } from "lucide-react";
|
import { Check, ChevronUp } from "lucide-react";
|
||||||
import { ToggleSwitch } from "@plane/ui";
|
import { ToggleSwitch } from "@plane/ui";
|
||||||
// types
|
// types
|
||||||
import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOptions, TCalendarLayouts, TIssueKanbanFilters } from "@plane/types";
|
import {
|
||||||
|
IIssueDisplayFilterOptions,
|
||||||
|
IIssueDisplayProperties,
|
||||||
|
IIssueFilterOptions,
|
||||||
|
TCalendarLayouts,
|
||||||
|
TIssueKanbanFilters,
|
||||||
|
} from "@plane/types";
|
||||||
// constants
|
// constants
|
||||||
import { CALENDAR_LAYOUTS } from "constants/calendar";
|
import { CALENDAR_LAYOUTS } from "constants/calendar";
|
||||||
import { EIssueFilterType } from "constants/issue";
|
import { EIssueFilterType } from "constants/issue";
|
||||||
|
@ -12,9 +12,9 @@ import { useIssues } from "hooks/store";
|
|||||||
|
|
||||||
export const ModuleCalendarLayout: React.FC = observer(() => {
|
export const ModuleCalendarLayout: React.FC = observer(() => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { workspaceSlug, projectId, moduleId } = router.query ;
|
const { workspaceSlug, projectId, moduleId } = router.query;
|
||||||
|
|
||||||
const {issues} = useIssues(EIssuesStoreType.MODULE)
|
const { issues } = useIssues(EIssuesStoreType.MODULE);
|
||||||
|
|
||||||
if (!moduleId) return null;
|
if (!moduleId) return null;
|
||||||
|
|
||||||
|
@ -5,4 +5,4 @@ import { EIssuesStoreType } from "constants/issue";
|
|||||||
// components
|
// components
|
||||||
import { BaseGanttRoot } from "./base-gantt-root";
|
import { BaseGanttRoot } from "./base-gantt-root";
|
||||||
|
|
||||||
export const GanttLayout: React.FC = observer(() =>( <BaseGanttRoot storeType={EIssuesStoreType.PROJECT} />));
|
export const GanttLayout: React.FC = observer(() => <BaseGanttRoot storeType={EIssuesStoreType.PROJECT} />);
|
||||||
|
@ -198,13 +198,9 @@ export const BaseKanBanRoot: React.FC<IBaseKanBanLayout> = observer((props: IBas
|
|||||||
let kanbanFilters = issuesFilter?.issueFilters?.kanbanFilters?.[toggle] || [];
|
let kanbanFilters = issuesFilter?.issueFilters?.kanbanFilters?.[toggle] || [];
|
||||||
if (kanbanFilters.includes(value)) kanbanFilters = kanbanFilters.filter((_value) => _value != value);
|
if (kanbanFilters.includes(value)) kanbanFilters = kanbanFilters.filter((_value) => _value != value);
|
||||||
else kanbanFilters.push(value);
|
else kanbanFilters.push(value);
|
||||||
updateFilters(
|
updateFilters(projectId.toString(), EIssueFilterType.KANBAN_FILTERS, {
|
||||||
projectId.toString(),
|
[toggle]: kanbanFilters,
|
||||||
EIssueFilterType.KANBAN_FILTERS,
|
});
|
||||||
{
|
|
||||||
[toggle]: kanbanFilters,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@ import { BaseKanBanRoot } from "../base-kanban-root";
|
|||||||
|
|
||||||
export const ProfileIssuesKanBanLayout: React.FC = observer(() => {
|
export const ProfileIssuesKanBanLayout: React.FC = observer(() => {
|
||||||
const {
|
const {
|
||||||
membership: { currentWorkspaceAllProjectsRole },
|
membership: { currentWorkspaceAllProjectsRole },
|
||||||
} = useUser();
|
} = useUser();
|
||||||
|
|
||||||
const canEditPropertiesBasedOnProject = (projectId: string) => {
|
const canEditPropertiesBasedOnProject = (projectId: string) => {
|
||||||
const currentProjectRole = currentWorkspaceAllProjectsRole && currentWorkspaceAllProjectsRole[projectId];
|
const currentProjectRole = currentWorkspaceAllProjectsRole && currentWorkspaceAllProjectsRole[projectId];
|
||||||
|
@ -5,7 +5,7 @@ import { EIssuesStoreType } from "constants/issue";
|
|||||||
import { EUserProjectRoles } from "constants/project";
|
import { EUserProjectRoles } from "constants/project";
|
||||||
import { useIssues, useUser } from "hooks/store";
|
import { useIssues, useUser } from "hooks/store";
|
||||||
|
|
||||||
import { TIssue } from "@plane/types"
|
import { TIssue } from "@plane/types";
|
||||||
// components
|
// components
|
||||||
import { List } from "./default";
|
import { List } from "./default";
|
||||||
import { IQuickActionProps } from "./list-view-types";
|
import { IQuickActionProps } from "./list-view-types";
|
||||||
|
@ -224,8 +224,8 @@ export const IssuePropertyLabels: React.FC<IIssuePropertyLabels> = observer((pro
|
|||||||
disabled
|
disabled
|
||||||
? "cursor-not-allowed text-custom-text-200"
|
? "cursor-not-allowed text-custom-text-200"
|
||||||
: value.length <= maxRender
|
: value.length <= maxRender
|
||||||
? "cursor-pointer"
|
? "cursor-pointer"
|
||||||
: "cursor-pointer hover:bg-custom-background-80"
|
: "cursor-pointer hover:bg-custom-background-80"
|
||||||
} ${buttonClassName}`}
|
} ${buttonClassName}`}
|
||||||
onClick={handleOnClick}
|
onClick={handleOnClick}
|
||||||
>
|
>
|
||||||
|
@ -57,13 +57,13 @@ export const BaseSpreadsheetRoot = observer((props: IBaseSpreadsheetRoot) => {
|
|||||||
|
|
||||||
const handleDisplayFiltersUpdate = useCallback(
|
const handleDisplayFiltersUpdate = useCallback(
|
||||||
(updatedDisplayFilter: Partial<IIssueDisplayFilterOptions>) => {
|
(updatedDisplayFilter: Partial<IIssueDisplayFilterOptions>) => {
|
||||||
if ( !projectId) return;
|
if (!projectId) return;
|
||||||
|
|
||||||
updateFilters(projectId.toString(), EIssueFilterType.DISPLAY_FILTERS, {
|
updateFilters(projectId.toString(), EIssueFilterType.DISPLAY_FILTERS, {
|
||||||
...updatedDisplayFilter,
|
...updatedDisplayFilter,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
[ projectId, updateFilters]
|
[projectId, updateFilters]
|
||||||
);
|
);
|
||||||
|
|
||||||
const renderQuickActions = useCallback(
|
const renderQuickActions = useCallback(
|
||||||
|
@ -770,4 +770,3 @@ export const IssueFormRoot: FC<IssueFormProps> = observer((props) => {
|
|||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -159,8 +159,8 @@ export const ModuleCardItem: React.FC<Props> = observer((props) => {
|
|||||||
? !moduleTotalIssues || moduleTotalIssues === 0
|
? !moduleTotalIssues || moduleTotalIssues === 0
|
||||||
? "0 Issue"
|
? "0 Issue"
|
||||||
: moduleTotalIssues === moduleDetails.completed_issues
|
: moduleTotalIssues === moduleDetails.completed_issues
|
||||||
? `${moduleTotalIssues} Issue${moduleTotalIssues > 1 ? "s" : ""}`
|
? `${moduleTotalIssues} Issue${moduleTotalIssues > 1 ? "s" : ""}`
|
||||||
: `${moduleDetails.completed_issues}/${moduleTotalIssues} Issues`
|
: `${moduleDetails.completed_issues}/${moduleTotalIssues} Issues`
|
||||||
: "0 Issue";
|
: "0 Issue";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -176,12 +176,12 @@ export const NotificationCard: React.FC<NotificationCardProps> = (props) => {
|
|||||||
{notificationField === "comment"
|
{notificationField === "comment"
|
||||||
? "commented"
|
? "commented"
|
||||||
: notificationField === "archived_at"
|
: notificationField === "archived_at"
|
||||||
? notification.data.issue_activity.new_value === "restore"
|
? notification.data.issue_activity.new_value === "restore"
|
||||||
? "restored the issue"
|
? "restored the issue"
|
||||||
: "archived the issue"
|
: "archived the issue"
|
||||||
: notificationField === "None"
|
: notificationField === "None"
|
||||||
? null
|
? null
|
||||||
: replaceUnderscoreIfSnakeCase(notificationField)}{" "}
|
: replaceUnderscoreIfSnakeCase(notificationField)}{" "}
|
||||||
{!["comment", "archived_at", "None"].includes(notificationField) ? "to" : ""}
|
{!["comment", "archived_at", "None"].includes(notificationField) ? "to" : ""}
|
||||||
<span className="font-semibold">
|
<span className="font-semibold">
|
||||||
{" "}
|
{" "}
|
||||||
|
@ -25,8 +25,8 @@ export const ProfileWorkload: React.FC<Props> = ({ stateDistribution }) => (
|
|||||||
{group.state_group === "unstarted"
|
{group.state_group === "unstarted"
|
||||||
? "Not started"
|
? "Not started"
|
||||||
: group.state_group === "started"
|
: group.state_group === "started"
|
||||||
? "Working on"
|
? "Working on"
|
||||||
: STATE_GROUPS[group.state_group].label}
|
: STATE_GROUPS[group.state_group].label}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-xl font-semibold">{group.state_count}</p>
|
<p className="text-xl font-semibold">{group.state_count}</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -164,8 +164,8 @@ export const ProfileSidebar = observer(() => {
|
|||||||
completedIssuePercentage <= 35
|
completedIssuePercentage <= 35
|
||||||
? "bg-red-500/10 text-red-500"
|
? "bg-red-500/10 text-red-500"
|
||||||
: completedIssuePercentage <= 70
|
: completedIssuePercentage <= 70
|
||||||
? "bg-yellow-500/10 text-yellow-500"
|
? "bg-yellow-500/10 text-yellow-500"
|
||||||
: "bg-green-500/10 text-green-500"
|
: "bg-green-500/10 text-green-500"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{completedIssuePercentage}%
|
{completedIssuePercentage}%
|
||||||
|
@ -142,9 +142,8 @@ export const SendProjectInvitationModal: React.FC<Props> = observer((props) => {
|
|||||||
if (!memberDetails?.member) return;
|
if (!memberDetails?.member) return;
|
||||||
return {
|
return {
|
||||||
value: `${memberDetails?.member.id}`,
|
value: `${memberDetails?.member.id}`,
|
||||||
query: `${memberDetails?.member.first_name} ${
|
query: `${memberDetails?.member.first_name} ${memberDetails?.member
|
||||||
memberDetails?.member.last_name
|
.last_name} ${memberDetails?.member.display_name.toLowerCase()}`,
|
||||||
} ${memberDetails?.member.display_name.toLowerCase()}`,
|
|
||||||
content: (
|
content: (
|
||||||
<div className="flex w-full items-center gap-2">
|
<div className="flex w-full items-center gap-2">
|
||||||
<div className="flex-shrink-0 pt-0.5">
|
<div className="flex-shrink-0 pt-0.5">
|
||||||
|
@ -108,12 +108,12 @@ export const MultiLevelDropdown: React.FC<MultiLevelDropdownProps> = ({
|
|||||||
height === "sm"
|
height === "sm"
|
||||||
? "max-h-28"
|
? "max-h-28"
|
||||||
: height === "md"
|
: height === "md"
|
||||||
? "max-h-44"
|
? "max-h-44"
|
||||||
: height === "rg"
|
: height === "rg"
|
||||||
? "max-h-56"
|
? "max-h-56"
|
||||||
: height === "lg"
|
: height === "lg"
|
||||||
? "max-h-80"
|
? "max-h-80"
|
||||||
: ""
|
: ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{option.children ? (
|
{option.children ? (
|
||||||
|
@ -49,10 +49,10 @@ export const getRedirectionFilters = (type: TIssuesListTypes): string => {
|
|||||||
type === "pending"
|
type === "pending"
|
||||||
? "?state_group=backlog,unstarted,started"
|
? "?state_group=backlog,unstarted,started"
|
||||||
: type === "upcoming"
|
: type === "upcoming"
|
||||||
? `?target_date=${today};after`
|
? `?target_date=${today};after`
|
||||||
: type === "overdue"
|
: type === "overdue"
|
||||||
? `?target_date=${today};before`
|
? `?target_date=${today};before`
|
||||||
: "?state_group=completed";
|
: "?state_group=completed";
|
||||||
|
|
||||||
return filterParams;
|
return filterParams;
|
||||||
};
|
};
|
||||||
|
@ -41,13 +41,16 @@ export const groupReactions: (reactions: any[], key: string) => { [key: string]:
|
|||||||
reactions: any,
|
reactions: any,
|
||||||
key: string
|
key: string
|
||||||
) => {
|
) => {
|
||||||
const groupedReactions = reactions.reduce((acc: any, reaction: any) => {
|
const groupedReactions = reactions.reduce(
|
||||||
if (!acc[reaction[key]]) {
|
(acc: any, reaction: any) => {
|
||||||
acc[reaction[key]] = [];
|
if (!acc[reaction[key]]) {
|
||||||
}
|
acc[reaction[key]] = [];
|
||||||
acc[reaction[key]].push(reaction);
|
}
|
||||||
return acc;
|
acc[reaction[key]].push(reaction);
|
||||||
}, {} as { [key: string]: any[] });
|
return acc;
|
||||||
|
},
|
||||||
|
{} as { [key: string]: any[] }
|
||||||
|
);
|
||||||
|
|
||||||
return groupedReactions;
|
return groupedReactions;
|
||||||
};
|
};
|
||||||
|
@ -172,19 +172,15 @@ export const renderIssueBlocksStructure = (blocks: TIssue[]): IGanttBlock[] =>
|
|||||||
target_date: block.target_date ? new Date(block.target_date) : null,
|
target_date: block.target_date ? new Date(block.target_date) : null,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
export function getChangedIssuefields(formData: Partial<TIssue>, dirtyFields: { [key: string]: boolean | undefined }) {
|
||||||
|
const changedFields: Partial<TIssue> = {};
|
||||||
|
|
||||||
export function getChangedIssuefields(
|
const dirtyFieldKeys = Object.keys(dirtyFields) as (keyof TIssue)[];
|
||||||
formData: Partial<TIssue>,
|
for (const dirtyField of dirtyFieldKeys) {
|
||||||
dirtyFields: { [key: string]: boolean | undefined }
|
if (!!dirtyFields[dirtyField]) {
|
||||||
) {
|
changedFields[dirtyField] = formData[dirtyField];
|
||||||
const changedFields: Partial<TIssue> = {};
|
|
||||||
|
|
||||||
const dirtyFieldKeys = Object.keys(dirtyFields) as (keyof TIssue)[];
|
|
||||||
for (const dirtyField of dirtyFieldKeys) {
|
|
||||||
if (!!dirtyFields[dirtyField]) {
|
|
||||||
changedFields[dirtyField] = formData[dirtyField];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return changedFields;
|
return changedFields;
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,7 @@ export const ProfileSettingsLayout: FC<IProfileSettingsLayout> = (props) => {
|
|||||||
<ProfileLayoutSidebar />
|
<ProfileLayoutSidebar />
|
||||||
<main className="relative flex h-full w-full flex-col overflow-hidden bg-custom-background-100">
|
<main className="relative flex h-full w-full flex-col overflow-hidden bg-custom-background-100">
|
||||||
{header}
|
{header}
|
||||||
<div className="h-full w-full overflow-x-hidden overflow-y-scroll">
|
<div className="h-full w-full overflow-x-hidden overflow-y-scroll">{children}</div>
|
||||||
{children}
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</UserAuthWrapper>
|
</UserAuthWrapper>
|
||||||
|
@ -69,9 +69,10 @@ const ArchivedIssueDetailsPage: NextPageWithLayout = observer(() => {
|
|||||||
title: "Success",
|
title: "Success",
|
||||||
message:
|
message:
|
||||||
issue &&
|
issue &&
|
||||||
`${getProjectById(issue.project_id)?.identifier}-${
|
`${getProjectById(issue.project_id)
|
||||||
issue?.sequence_id
|
?.identifier}-${issue?.sequence_id} is restored successfully under the project ${getProjectById(
|
||||||
} is restored successfully under the project ${getProjectById(issue.project_id)?.name}`,
|
issue.project_id
|
||||||
|
)?.name}`,
|
||||||
});
|
});
|
||||||
router.push(`/${workspaceSlug}/projects/${projectId}/issues/${archivedIssueId}`);
|
router.push(`/${workspaceSlug}/projects/${projectId}/issues/${archivedIssueId}`);
|
||||||
})
|
})
|
||||||
|
@ -127,9 +127,8 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
|
|||||||
const searchedWorkspaceMemberIds = workspaceMemberIds?.filter((userId) => {
|
const searchedWorkspaceMemberIds = workspaceMemberIds?.filter((userId) => {
|
||||||
const memberDetails = this.getWorkspaceMemberDetails(userId);
|
const memberDetails = this.getWorkspaceMemberDetails(userId);
|
||||||
if (!memberDetails) return false;
|
if (!memberDetails) return false;
|
||||||
const memberSearchQuery = `${memberDetails.member.first_name} ${memberDetails.member.last_name} ${
|
const memberSearchQuery = `${memberDetails.member.first_name} ${memberDetails.member.last_name} ${memberDetails
|
||||||
memberDetails.member?.display_name
|
.member?.display_name} ${memberDetails.member.email ?? ""}`;
|
||||||
} ${memberDetails.member.email ?? ""}`;
|
|
||||||
return memberSearchQuery.toLowerCase()?.includes(searchQuery.toLowerCase());
|
return memberSearchQuery.toLowerCase()?.includes(searchQuery.toLowerCase());
|
||||||
});
|
});
|
||||||
return searchedWorkspaceMemberIds;
|
return searchedWorkspaceMemberIds;
|
||||||
|
Loading…
Reference in New Issue
Block a user