forked from github/plane
style: image picker, spreadsheet view title, icons (#2988)
* style: image picker, spreadsheet view title, icons * fix: build error fix
This commit is contained in:
parent
14f8d380c6
commit
023bf8a0a5
@ -324,7 +324,7 @@ export const ImagePickerPopover: React.FC<Props> = observer((props) => {
|
|||||||
File formats supported- .jpeg, .jpg, .png, .webp, .svg
|
File formats supported- .jpeg, .jpg, .png, .webp, .svg
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="flex items-center justify-end gap-2">
|
<div className="flex items-start h-12 justify-end gap-2">
|
||||||
<Button
|
<Button
|
||||||
variant="neutral-primary"
|
variant="neutral-primary"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
@ -111,12 +111,8 @@ export const IssuePropertyAssignee: React.FC<IIssuePropertyAssignee> = observer(
|
|||||||
})}
|
})}
|
||||||
</AvatarGroup>
|
</AvatarGroup>
|
||||||
) : (
|
) : (
|
||||||
<span
|
<span className="flex items-end justify-center h-5 w-5 bg-custom-background-80 rounded-full border border-dashed border-custom-text-400">
|
||||||
className={`flex items-center justify-between gap-1 h-full w-full text-xs rounded duration-300 focus:outline-none ${
|
<User2 className="h-4 w-4 text-custom-text-400" />
|
||||||
noLabelBorder ? "" : " px-2.5 py-1 border-[0.5px] border-custom-border-300"
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
<User2 className="h-3 w-3" />
|
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -85,15 +85,18 @@ export const SpreadsheetColumn: React.FC<Props> = (props) => {
|
|||||||
customButton={
|
customButton={
|
||||||
<div className="flex items-center justify-between gap-1.5 cursor-pointer text-sm text-custom-text-200 hover:text-custom-text-100 w-full py-2">
|
<div className="flex items-center justify-between gap-1.5 cursor-pointer text-sm text-custom-text-200 hover:text-custom-text-100 w-full py-2">
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
|
{<propertyDetails.icon className="h-4 w-4 text-custom-text-400" />}
|
||||||
|
{propertyDetails.title}
|
||||||
|
</div>
|
||||||
|
<div className="flex ml-3">
|
||||||
{activeSortingProperty === property && (
|
{activeSortingProperty === property && (
|
||||||
<div className="rounded-full flex items-center justify-center h-3.5 w-3.5">
|
<div className="rounded-full flex items-center justify-center h-3.5 w-3.5">
|
||||||
<ListFilter className="h-3 w-3" />
|
<ListFilter className="h-3 w-3" />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{propertyDetails.title}
|
|
||||||
</div>
|
|
||||||
<ChevronDownIcon className="h-3 w-3" aria-hidden="true" />
|
<ChevronDownIcon className="h-3 w-3" aria-hidden="true" />
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
width="xl"
|
width="xl"
|
||||||
placement="bottom-end"
|
placement="bottom-end"
|
||||||
|
@ -8,7 +8,7 @@ import {
|
|||||||
SpreadsheetIssuesColumn,
|
SpreadsheetIssuesColumn,
|
||||||
SpreadsheetQuickAddIssueForm,
|
SpreadsheetQuickAddIssueForm,
|
||||||
} from "components/issues";
|
} from "components/issues";
|
||||||
import { Spinner } from "@plane/ui";
|
import { Spinner, LayersIcon } from "@plane/ui";
|
||||||
// types
|
// types
|
||||||
import { IIssue, IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueLabel, IState, IUserLite } from "types";
|
import { IIssue, IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueLabel, IState, IUserLite } from "types";
|
||||||
import { EIssueActions } from "../types";
|
import { EIssueActions } from "../types";
|
||||||
@ -95,9 +95,14 @@ export const SpreadsheetView: React.FC<Props> = observer((props) => {
|
|||||||
>
|
>
|
||||||
<div className="flex items-center text-sm font-medium z-[2] h-11 w-full sticky top-0 bg-custom-background-90 border border-l-0 border-custom-border-100">
|
<div className="flex items-center text-sm font-medium z-[2] h-11 w-full sticky top-0 bg-custom-background-90 border border-l-0 border-custom-border-100">
|
||||||
{displayProperties.key && (
|
{displayProperties.key && (
|
||||||
<span className="flex items-center px-4 py-2.5 h-full w-24 flex-shrink-0">ID</span>
|
<span className="flex items-center px-4 py-2.5 h-full w-24 flex-shrink-0">
|
||||||
|
<span className="mr-1.5 text-custom-text-400">#</span>ID
|
||||||
|
</span>
|
||||||
)}
|
)}
|
||||||
<span className="flex items-center justify-center px-4 py-2.5 h-full w-full flex-grow">Issue</span>
|
<span className="flex items-center justify-center px-4 py-2.5 h-full w-full flex-grow">
|
||||||
|
<LayersIcon className="h-4 w-4 text-custom-text-400 mr-1.5" />
|
||||||
|
Issue
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{issues.map((issue, index) =>
|
{issues.map((issue, index) =>
|
||||||
|
@ -5,8 +5,8 @@ import { observer } from "mobx-react-lite";
|
|||||||
// mobx store
|
// mobx store
|
||||||
import { useMobxStore } from "lib/mobx/store-provider";
|
import { useMobxStore } from "lib/mobx/store-provider";
|
||||||
// ui icons
|
// ui icons
|
||||||
import { DiceIcon, DoubleCircleIcon, UserGroupIcon } from "@plane/ui";
|
import { DiceIcon, DoubleCircleIcon, UserGroupIcon, ContrastIcon } from "@plane/ui";
|
||||||
import { CalendarDays, ContrastIcon, Link2, Plus, Signal, Tag, Triangle, User2 } from "lucide-react";
|
import { CalendarDays, Link2, Plus, Signal, Tag, Triangle, LayoutPanelTop } from "lucide-react";
|
||||||
import {
|
import {
|
||||||
SidebarAssigneeSelect,
|
SidebarAssigneeSelect,
|
||||||
SidebarCycleSelect,
|
SidebarCycleSelect,
|
||||||
@ -289,7 +289,7 @@ export const PeekOverviewProperties: FC<IPeekOverviewProperties> = observer((pro
|
|||||||
{/* parent */}
|
{/* parent */}
|
||||||
<div className="flex items-center gap-2 w-full">
|
<div className="flex items-center gap-2 w-full">
|
||||||
<div className="flex items-center gap-2 w-40 text-sm flex-shrink-0">
|
<div className="flex items-center gap-2 w-40 text-sm flex-shrink-0">
|
||||||
<User2 className="h-4 w-4 flex-shrink-0" />
|
<LayoutPanelTop className="h-4 w-4 flex-shrink-0" />
|
||||||
<p>Parent</p>
|
<p>Parent</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
@ -32,7 +32,7 @@ import {
|
|||||||
// ui
|
// ui
|
||||||
import { CustomDatePicker } from "components/ui";
|
import { CustomDatePicker } from "components/ui";
|
||||||
// icons
|
// icons
|
||||||
import { Bell, CalendarDays, LinkIcon, Plus, Signal, Tag, Trash2, Triangle, User2 } from "lucide-react";
|
import { Bell, CalendarDays, LinkIcon, Plus, Signal, Tag, Trash2, Triangle, LayoutPanelTop } from "lucide-react";
|
||||||
import { Button, ContrastIcon, DiceIcon, DoubleCircleIcon, StateGroupIcon, UserGroupIcon } from "@plane/ui";
|
import { Button, ContrastIcon, DiceIcon, DoubleCircleIcon, StateGroupIcon, UserGroupIcon } from "@plane/ui";
|
||||||
// helpers
|
// helpers
|
||||||
import { copyTextToClipboard } from "helpers/string.helper";
|
import { copyTextToClipboard } from "helpers/string.helper";
|
||||||
@ -421,7 +421,7 @@ export const IssueDetailsSidebar: React.FC<Props> = observer((props) => {
|
|||||||
{(fieldsToShow.includes("all") || fieldsToShow.includes("parent")) && (
|
{(fieldsToShow.includes("all") || fieldsToShow.includes("parent")) && (
|
||||||
<div className="flex flex-wrap items-center py-2">
|
<div className="flex flex-wrap items-center py-2">
|
||||||
<div className="flex items-center gap-x-2 text-sm text-custom-text-200 sm:basis-1/2">
|
<div className="flex items-center gap-x-2 text-sm text-custom-text-200 sm:basis-1/2">
|
||||||
<User2 className="h-4 w-4 flex-shrink-0" />
|
<LayoutPanelTop className="h-4 w-4 flex-shrink-0" />
|
||||||
<p>Parent</p>
|
<p>Parent</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="sm:basis-1/2">
|
<div className="sm:basis-1/2">
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
import { TIssueOrderByOptions } from "types";
|
import { TIssueOrderByOptions } from "types";
|
||||||
|
import { LayersIcon, DoubleCircleIcon, UserGroupIcon } from "@plane/ui";
|
||||||
|
import { CalendarDays, Link2, Signal, Tag, Triangle, Paperclip } from "lucide-react";
|
||||||
|
import { FC } from "react";
|
||||||
|
import { ISvgIcons } from "@plane/ui/src/icons/type";
|
||||||
|
|
||||||
export const SPREADSHEET_PROPERTY_DETAILS: {
|
export const SPREADSHEET_PROPERTY_DETAILS: {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
@ -7,6 +11,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: string;
|
ascendingOrderTitle: string;
|
||||||
descendingOrderKey: TIssueOrderByOptions;
|
descendingOrderKey: TIssueOrderByOptions;
|
||||||
descendingOrderTitle: string;
|
descendingOrderTitle: string;
|
||||||
|
icon: FC<ISvgIcons>;
|
||||||
};
|
};
|
||||||
} = {
|
} = {
|
||||||
assignee: {
|
assignee: {
|
||||||
@ -15,6 +20,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "A",
|
ascendingOrderTitle: "A",
|
||||||
descendingOrderKey: "-assignees__first_name",
|
descendingOrderKey: "-assignees__first_name",
|
||||||
descendingOrderTitle: "Z",
|
descendingOrderTitle: "Z",
|
||||||
|
icon: UserGroupIcon,
|
||||||
},
|
},
|
||||||
created_on: {
|
created_on: {
|
||||||
title: "Created on",
|
title: "Created on",
|
||||||
@ -22,6 +28,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "New",
|
ascendingOrderTitle: "New",
|
||||||
descendingOrderKey: "created_at",
|
descendingOrderKey: "created_at",
|
||||||
descendingOrderTitle: "Old",
|
descendingOrderTitle: "Old",
|
||||||
|
icon: CalendarDays,
|
||||||
},
|
},
|
||||||
due_date: {
|
due_date: {
|
||||||
title: "Due date",
|
title: "Due date",
|
||||||
@ -29,6 +36,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "New",
|
ascendingOrderTitle: "New",
|
||||||
descendingOrderKey: "target_date",
|
descendingOrderKey: "target_date",
|
||||||
descendingOrderTitle: "Old",
|
descendingOrderTitle: "Old",
|
||||||
|
icon: CalendarDays,
|
||||||
},
|
},
|
||||||
estimate: {
|
estimate: {
|
||||||
title: "Estimate",
|
title: "Estimate",
|
||||||
@ -36,6 +44,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "Low",
|
ascendingOrderTitle: "Low",
|
||||||
descendingOrderKey: "-estimate_point",
|
descendingOrderKey: "-estimate_point",
|
||||||
descendingOrderTitle: "High",
|
descendingOrderTitle: "High",
|
||||||
|
icon: Triangle,
|
||||||
},
|
},
|
||||||
labels: {
|
labels: {
|
||||||
title: "Labels",
|
title: "Labels",
|
||||||
@ -43,6 +52,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "A",
|
ascendingOrderTitle: "A",
|
||||||
descendingOrderKey: "-labels__name",
|
descendingOrderKey: "-labels__name",
|
||||||
descendingOrderTitle: "Z",
|
descendingOrderTitle: "Z",
|
||||||
|
icon: Tag,
|
||||||
},
|
},
|
||||||
priority: {
|
priority: {
|
||||||
title: "Priority",
|
title: "Priority",
|
||||||
@ -50,6 +60,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "None",
|
ascendingOrderTitle: "None",
|
||||||
descendingOrderKey: "-priority",
|
descendingOrderKey: "-priority",
|
||||||
descendingOrderTitle: "Urgent",
|
descendingOrderTitle: "Urgent",
|
||||||
|
icon: Signal,
|
||||||
},
|
},
|
||||||
start_date: {
|
start_date: {
|
||||||
title: "Start date",
|
title: "Start date",
|
||||||
@ -57,6 +68,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "New",
|
ascendingOrderTitle: "New",
|
||||||
descendingOrderKey: "start_date",
|
descendingOrderKey: "start_date",
|
||||||
descendingOrderTitle: "Old",
|
descendingOrderTitle: "Old",
|
||||||
|
icon: CalendarDays,
|
||||||
},
|
},
|
||||||
state: {
|
state: {
|
||||||
title: "State",
|
title: "State",
|
||||||
@ -64,6 +76,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "A",
|
ascendingOrderTitle: "A",
|
||||||
descendingOrderKey: "-state__name",
|
descendingOrderKey: "-state__name",
|
||||||
descendingOrderTitle: "Z",
|
descendingOrderTitle: "Z",
|
||||||
|
icon: DoubleCircleIcon,
|
||||||
},
|
},
|
||||||
updated_on: {
|
updated_on: {
|
||||||
title: "Updated on",
|
title: "Updated on",
|
||||||
@ -71,6 +84,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "New",
|
ascendingOrderTitle: "New",
|
||||||
descendingOrderKey: "updated_at",
|
descendingOrderKey: "updated_at",
|
||||||
descendingOrderTitle: "Old",
|
descendingOrderTitle: "Old",
|
||||||
|
icon: CalendarDays,
|
||||||
},
|
},
|
||||||
link: {
|
link: {
|
||||||
title: "Link",
|
title: "Link",
|
||||||
@ -78,6 +92,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "Most",
|
ascendingOrderTitle: "Most",
|
||||||
descendingOrderKey: "link_count",
|
descendingOrderKey: "link_count",
|
||||||
descendingOrderTitle: "Least",
|
descendingOrderTitle: "Least",
|
||||||
|
icon: Link2,
|
||||||
},
|
},
|
||||||
attachment_count: {
|
attachment_count: {
|
||||||
title: "Attachment",
|
title: "Attachment",
|
||||||
@ -85,6 +100,7 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "Most",
|
ascendingOrderTitle: "Most",
|
||||||
descendingOrderKey: "attachment_count",
|
descendingOrderKey: "attachment_count",
|
||||||
descendingOrderTitle: "Least",
|
descendingOrderTitle: "Least",
|
||||||
|
icon: Paperclip,
|
||||||
},
|
},
|
||||||
sub_issue_count: {
|
sub_issue_count: {
|
||||||
title: "Sub-issue",
|
title: "Sub-issue",
|
||||||
@ -92,5 +108,6 @@ export const SPREADSHEET_PROPERTY_DETAILS: {
|
|||||||
ascendingOrderTitle: "Most",
|
ascendingOrderTitle: "Most",
|
||||||
descendingOrderKey: "sub_issues_count",
|
descendingOrderKey: "sub_issues_count",
|
||||||
descendingOrderTitle: "Least",
|
descendingOrderTitle: "Least",
|
||||||
|
icon: LayersIcon,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user