Merge pull request #1410 from makeplane/develop

promote: develop to stage-release
This commit is contained in:
guru_sainath 2023-06-27 19:01:26 +05:30 committed by GitHub
commit 124d1c30aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 36 additions and 18 deletions

View File

@ -165,4 +165,4 @@ Our [Code of Conduct](https://github.com/makeplane/plane/blob/master/CODE_OF_CON
## ⛓️ Security ## ⛓️ Security
If you believe you have found a security vulnerability in Plane, we encourage you to responsibly disclose this and not open a public issue. We will investigate all legitimate reports. Email security@plane.so to disclose any security vulnerabilities. If you believe you have found a security vulnerability in Plane, we encourage you to responsibly disclose this and not open a public issue. We will investigate all legitimate reports. Email engineering@plane.so to disclose any security vulnerabilities.

View File

@ -135,7 +135,7 @@ export const FilterList: React.FC<any> = ({ filters, setFilters }) => {
}`} }`}
> >
<span>{getPriorityIcon(priority)}</span> <span>{getPriorityIcon(priority)}</span>
<span>{priority ? priority : "None"}</span> <span>{priority === "null" ? "None" : priority}</span>
<span <span
className="cursor-pointer" className="cursor-pointer"
onClick={() => onClick={() =>

View File

@ -52,7 +52,7 @@ const ProgressChart: React.FC<Props> = ({ distribution, startDate, endDate, tota
const maxDates = 4; const maxDates = 4;
const totalDates = dates.length; const totalDates = dates.length;
if (totalDates <= maxDates) return dates; if (totalDates <= maxDates) return dates.map((d) => renderShortNumericDateFormat(d));
else { else {
const interval = Math.ceil(totalDates / maxDates); const interval = Math.ceil(totalDates / maxDates);
const limitedDates = []; const limitedDates = [];

View File

@ -49,6 +49,7 @@ type Props = {
handleEditIssue: (issue: IIssue) => void; handleEditIssue: (issue: IIssue) => void;
handleDeleteIssue: (issue: IIssue) => void; handleDeleteIssue: (issue: IIssue) => void;
gridTemplateColumns: string; gridTemplateColumns: string;
isCompleted?: boolean;
user: ICurrentUserResponse | undefined; user: ICurrentUserResponse | undefined;
userAuth: UserAuth; userAuth: UserAuth;
nestingLevel: number; nestingLevel: number;
@ -62,6 +63,7 @@ export const SingleSpreadsheetIssue: React.FC<Props> = ({
handleEditIssue, handleEditIssue,
handleDeleteIssue, handleDeleteIssue,
gridTemplateColumns, gridTemplateColumns,
isCompleted = false,
user, user,
userAuth, userAuth,
nestingLevel, nestingLevel,
@ -170,7 +172,7 @@ export const SingleSpreadsheetIssue: React.FC<Props> = ({
className="relative group grid auto-rows-[minmax(44px,1fr)] hover:rounded-sm hover:bg-brand-surface-2 border-b border-brand-base w-full min-w-max" className="relative group grid auto-rows-[minmax(44px,1fr)] hover:rounded-sm hover:bg-brand-surface-2 border-b border-brand-base w-full min-w-max"
style={{ gridTemplateColumns }} style={{ gridTemplateColumns }}
> >
<div className="flex gap-1.5 items-center px-4 sticky z-10 left-0 text-brand-secondary bg-brand-base group-hover:text-brand-base group-hover:bg-brand-surface-2 border-brand-base w-full"> <div className="flex gap-1.5 items-center px-4 sticky z-[1] left-0 text-brand-secondary bg-brand-base group-hover:text-brand-base group-hover:bg-brand-surface-2 border-brand-base w-full">
<div className="flex gap-1.5 items-center" style={issue.parent ? { paddingLeft } : {}}> <div className="flex gap-1.5 items-center" style={issue.parent ? { paddingLeft } : {}}>
<div className="relative flex items-center cursor-pointer text-xs text-center hover:text-brand-base w-14"> <div className="relative flex items-center cursor-pointer text-xs text-center hover:text-brand-base w-14">
{properties.key && ( {properties.key && (
@ -178,7 +180,7 @@ export const SingleSpreadsheetIssue: React.FC<Props> = ({
{issue.project_detail?.identifier}-{issue.sequence_id} {issue.project_detail?.identifier}-{issue.sequence_id}
</span> </span>
)} )}
{!isNotAllowed && ( {!isNotAllowed && !isCompleted && (
<div className="absolute top-0 left-2.5 opacity-0 group-hover:opacity-100"> <div className="absolute top-0 left-2.5 opacity-0 group-hover:opacity-100">
<Popover2 <Popover2
isOpen={isOpen} isOpen={isOpen}

View File

@ -16,6 +16,7 @@ type Props = {
handleEditIssue: (issue: IIssue) => void; handleEditIssue: (issue: IIssue) => void;
handleDeleteIssue: (issue: IIssue) => void; handleDeleteIssue: (issue: IIssue) => void;
gridTemplateColumns: string; gridTemplateColumns: string;
isCompleted?: boolean;
user: ICurrentUserResponse | undefined; user: ICurrentUserResponse | undefined;
userAuth: UserAuth; userAuth: UserAuth;
nestingLevel?: number; nestingLevel?: number;
@ -30,6 +31,7 @@ export const SpreadsheetIssues: React.FC<Props> = ({
properties, properties,
handleEditIssue, handleEditIssue,
handleDeleteIssue, handleDeleteIssue,
isCompleted = false,
user, user,
userAuth, userAuth,
nestingLevel = 0, nestingLevel = 0,
@ -61,6 +63,7 @@ export const SpreadsheetIssues: React.FC<Props> = ({
properties={properties} properties={properties}
handleEditIssue={handleEditIssue} handleEditIssue={handleEditIssue}
handleDeleteIssue={handleDeleteIssue} handleDeleteIssue={handleDeleteIssue}
isCompleted={isCompleted}
user={user} user={user}
userAuth={userAuth} userAuth={userAuth}
nestingLevel={nestingLevel} nestingLevel={nestingLevel}
@ -80,6 +83,7 @@ export const SpreadsheetIssues: React.FC<Props> = ({
properties={properties} properties={properties}
handleEditIssue={handleEditIssue} handleEditIssue={handleEditIssue}
handleDeleteIssue={handleDeleteIssue} handleDeleteIssue={handleDeleteIssue}
isCompleted={isCompleted}
user={user} user={user}
userAuth={userAuth} userAuth={userAuth}
nestingLevel={nestingLevel + 1} nestingLevel={nestingLevel + 1}

View File

@ -62,7 +62,7 @@ export const SpreadsheetView: React.FC<Props> = ({
return ( return (
<div className="h-full rounded-lg text-brand-secondary overflow-x-auto whitespace-nowrap bg-brand-base"> <div className="h-full rounded-lg text-brand-secondary overflow-x-auto whitespace-nowrap bg-brand-base">
<div className="sticky z-20 top-0 border-b border-brand-base bg-brand-surface-1 w-full min-w-max"> <div className="sticky z-[2] top-0 border-b border-brand-base bg-brand-surface-1 w-full min-w-max">
<SpreadsheetColumns columnData={columnData} gridTemplateColumns={gridTemplateColumns} /> <SpreadsheetColumns columnData={columnData} gridTemplateColumns={gridTemplateColumns} />
</div> </div>
{spreadsheetIssues ? ( {spreadsheetIssues ? (
@ -77,6 +77,7 @@ export const SpreadsheetView: React.FC<Props> = ({
properties={properties} properties={properties}
handleEditIssue={handleEditIssue} handleEditIssue={handleEditIssue}
handleDeleteIssue={handleDeleteIssue} handleDeleteIssue={handleDeleteIssue}
isCompleted={isCompleted}
user={user} user={user}
userAuth={userAuth} userAuth={userAuth}
/> />

View File

@ -101,6 +101,13 @@ export const ActiveCycleDetails: React.FC = () => {
: null : null
) as { data: IIssue[] | undefined }; ) as { data: IIssue[] | undefined };
if (!currentCycle)
return (
<Loader>
<Loader.Item height="250px" />
</Loader>
);
if (!cycle) if (!cycle)
return ( return (
<div className="flex w-full items-center justify-start rounded-[10px] bg-brand-surface-2 px-6 py-4"> <div className="flex w-full items-center justify-start rounded-[10px] bg-brand-surface-2 px-6 py-4">

View File

@ -39,7 +39,7 @@ export const FiltersDropdown: React.FC = () => {
value: PRIORITIES, value: PRIORITIES,
children: [ children: [
...PRIORITIES.map((priority) => ({ ...PRIORITIES.map((priority) => ({
id: priority ?? "none", id: priority === null ? "null" : priority,
label: ( label: (
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
{getPriorityIcon(priority)} {priority ?? "None"} {getPriorityIcon(priority)} {priority ?? "None"}
@ -47,9 +47,9 @@ export const FiltersDropdown: React.FC = () => {
), ),
value: { value: {
key: "priority", key: "priority",
value: priority, value: priority === null ? "null" : priority,
}, },
selected: filters?.priority?.includes(priority ?? "none"), selected: filters?.priority?.includes(priority === null ? "null" : priority),
})), })),
], ],
}, },

View File

@ -38,8 +38,6 @@ import { renderShortNumericDateFormat } from "helpers/date-time.helper";
import type { IInboxIssue, IIssue } from "types"; import type { IInboxIssue, IIssue } from "types";
// fetch-keys // fetch-keys
import { INBOX_ISSUES, INBOX_ISSUE_DETAILS, PROJECT_ISSUES_ACTIVITY } from "constants/fetch-keys"; import { INBOX_ISSUES, INBOX_ISSUE_DETAILS, PROJECT_ISSUES_ACTIVITY } from "constants/fetch-keys";
// constants
import { INBOX_STATUS } from "constants/inbox";
const defaultValues = { const defaultValues = {
name: "", name: "",
@ -192,7 +190,6 @@ export const InboxMainContent: React.FC = () => {
}, [issueDetails, reset, inboxIssueId]); }, [issueDetails, reset, inboxIssueId]);
const issueStatus = issueDetails?.issue_inbox[0].status; const issueStatus = issueDetails?.issue_inbox[0].status;
const inboxStatusDetails = INBOX_STATUS.find((s) => s.value === issueStatus);
if (!inboxIssueId) if (!inboxIssueId)
return ( return (
@ -224,11 +221,18 @@ export const InboxMainContent: React.FC = () => {
<div className="basis-2/3 h-full overflow-auto p-5 space-y-3"> <div className="basis-2/3 h-full overflow-auto p-5 space-y-3">
<div <div
className={`flex items-center gap-2 p-3 text-sm border rounded-md ${ className={`flex items-center gap-2 p-3 text-sm border rounded-md ${
issueStatus === 0 && issueStatus === -2
new Date(issueDetails.issue_inbox[0].snoozed_till ?? "") < new Date() ? "text-yellow-500 border-yellow-500 bg-yellow-500/10"
: issueStatus === -1
? "text-red-500 border-red-500 bg-red-500/10" ? "text-red-500 border-red-500 bg-red-500/10"
: inboxStatusDetails : issueStatus === 0
? `${inboxStatusDetails.textColor} ${inboxStatusDetails.bgColor} ${inboxStatusDetails.borderColor}` ? new Date(issueDetails.issue_inbox[0].snoozed_till ?? "") < new Date()
? "text-red-500 border-red-500 bg-red-500/10"
: "text-brand-secondary border-gray-500 bg-gray-500/10"
: issueStatus === 1
? "text-green-500 border-green-500 bg-green-500/10"
: issueStatus === 2
? "text-brand-secondary border-gray-500 bg-gray-500/10"
: "" : ""
}`} }`}
> >

View File

@ -11,7 +11,7 @@ type Props = {
const Header: React.FC<Props> = ({ breadcrumbs, left, right, setToggleSidebar, noHeader }) => ( const Header: React.FC<Props> = ({ breadcrumbs, left, right, setToggleSidebar, noHeader }) => (
<div <div
className={`relative flex w-full flex-shrink-0 flex-row items-center justify-between gap-y-4 border-b border-brand-base bg-brand-sidebar px-5 py-4 ${ className={`relative flex w-full flex-shrink-0 flex-row z-10 items-center justify-between gap-y-4 border-b border-brand-base bg-brand-sidebar px-5 py-4 ${
noHeader ? "md:hidden" : "" noHeader ? "md:hidden" : ""
}`} }`}
> >

View File

@ -228,5 +228,5 @@ body {
/* popover2 styling */ /* popover2 styling */
.bp4-popover2-transition-container { .bp4-popover2-transition-container {
z-index: 20 !important; z-index: 1 !important;
} }