UNPKG

@roadiehq/backstage-plugin-jira

Version:
158 lines (155 loc) 3.89 kB
import { Table, Link } from '@backstage/core-components'; import { Box, Tooltip } from '@material-ui/core'; import Person from '@material-ui/icons/Person'; import React from 'react'; const availableColumns = [ { title: "Key", field: "key", render: (data) => /* @__PURE__ */ React.createElement( Link, { to: new URL(`/browse/${data?.key}`, data.self).href, target: "_blank", rel: "noopener noreferrer" }, data?.key ), width: "auto", id: "key" }, { title: "summary", field: "fields.summary", width: "40%", id: "summary" }, { title: "Priority", field: "fields.priority.name", width: "auto", id: "priority" }, { title: "status", field: "fields.status.name", width: "auto", id: "status" }, { title: "Type", field: "fields.issueType", width: "auto", id: "type-icon", render: (data) => { return data.fields?.issuetype ? /* @__PURE__ */ React.createElement(Box, { paddingLeft: 1 }, /* @__PURE__ */ React.createElement( "img", { src: data.fields?.issuetype?.iconUrl, alt: data.fields?.issuetype?.name, title: data.fields?.issuetype?.name } )) : null; } }, { title: "Type", field: "fields.issuetype.name", width: "auto", id: "type" }, { title: "Assignee", field: "fields.assignee", width: "auto", id: "assignee", render: (data) => { return data.fields?.assignee?.displayName ? /* @__PURE__ */ React.createElement("span", null, data.fields?.assignee?.displayName) : /* @__PURE__ */ React.createElement("span", null, "Not Assigned"); } }, { title: "Assignee", field: "fields.assignee", width: "auto", id: "assignee-icon", render: (data) => { return /* @__PURE__ */ React.createElement(Box, { paddingLeft: 1 }, data.fields?.assignee?.displayName ? /* @__PURE__ */ React.createElement( "img", { src: data.fields?.assignee?.avatarUrls["24x24"], alt: data.fields?.assignee?.displayName, title: data.fields?.assignee?.displayName, width: "24px" } ) : /* @__PURE__ */ React.createElement(Tooltip, { title: "Not Assigned" }, /* @__PURE__ */ React.createElement(Person, { color: "disabled" }))); } }, { title: "created", field: "fields.created", width: "auto", render: (data) => { return data.fields?.created ? new Date(data.fields?.created).toLocaleDateString() : "?"; }, id: "created" }, { title: "Updated", field: "fields.updated", width: "auto", id: "updated", render: (data) => { return data.fields?.created ? new Date(data.fields?.updated).toLocaleDateString() : "?"; } }, { title: "Project", field: "fields.project.name", width: "auto", id: "project", render: (data) => /* @__PURE__ */ React.createElement( Link, { to: new URL( `/browse/${data?.fields?.project?.key}`, data?.fields?.project?.self ).href, target: "_blank", rel: "noopener noreferrer" }, data?.fields?.project?.name ) } ]; const IssuesTable = ({ issues, title, subtitle, columnIds = [ "key", "type-icon", "summary", "status", "assignee-icon", "priority", "created", "updated" ] }) => /* @__PURE__ */ React.createElement( Table, { title: title ?? "Issues", subtitle: subtitle ?? "", options: { paging: true, search: false, sorting: true, draggable: false, padding: "dense" }, data: issues ?? [], columns: columnIds.map((it) => availableColumns.find((column) => column.id === it)).filter((it) => !!it) } ); export { IssuesTable }; //# sourceMappingURL=IssuesTable.esm.js.map