diff --git a/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx
new file mode 100644
index 000000000..f72811405
--- /dev/null
+++ b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx
@@ -0,0 +1,121 @@
+import { DefaultButton, DetailsList, IColumn, IPanelProps, IRenderFunction, Panel, PanelType, SelectionMode, Spinner } from "@fluentui/react";
+import { ServiceHealth, ServiceHealthIssue } from "@microsoft/microsoft-graph-types";
+import * as React from "react";
+import { IServiceHealthOverviewItem, IServiceHealthOverviewProps, IServiceHealthOverviewState } from "../../interfaces/ServiceHealthModels";
+import * as ListViewHelperService from "../../services/ListViewHelperService";
+import { backButtonStyles, cancelButtonStyle, issueDetailPanelStyles, issueListPanelStyles } from "./Constant";
+import { IssueDetail } from "./IssueDetail/IssueDetail";
+import { IssueList } from "./IssueList/IssueList";
+import { ListItem } from "./ListItem/ListItem";
+import { M365HealthService } from "../../../../common/services/M365HealthService";
+
+export const ServiceHealthOverview = (props: IServiceHealthOverviewProps): JSX.Element => {
+ const [state, setState] = React.useState
({
+ columns: ListViewHelperService.getOverviewListViewColumns(),
+ items: [],
+ showIssueListPanel: false,
+ showIssueDetailPanel: false,
+ selectedItem: null,
+ selectedIssue: null,
+ showBackButton: false,
+ spinner: true,
+ });
+ /* eslint-disable */
+ React.useEffect(() => {
+ let listViewItems: IServiceHealthOverviewItem[] = [];
+ (async () => {
+ try {
+ if (props.context && props.apiBaseUrl && props.audience) {
+ const m365HealthService = new M365HealthService(props.context, props.apiBaseUrl, props.audience);
+ await m365HealthService.initClint();
+ const response: ServiceHealth[] = await m365HealthService.getServiceHealth();
+ listViewItems = ListViewHelperService.getListViewItemsForOverview(response);
+ }
+ } catch (ex) {
+ console.log(ex);
+ }
+ setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, items: listViewItems, spinner: false }));
+ })();
+ }, [props.context, props.apiBaseUrl, props.audience]);
+
+ const _renderItemColumn = (item: IServiceHealthOverviewItem, index: number, column: IColumn) => {
+ return ;
+ };
+
+ const handleLinkClick = (item: IServiceHealthOverviewItem) => {
+ if (item.InProgressItems.length > 1) {
+ setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, showIssueListPanel: true, selectedItem: item }));
+ } else {
+ setState((prevState: IServiceHealthOverviewState) => ({
+ ...prevState,
+ showIssueDetailPanel: true,
+ selectedItem: item,
+ selectedIssue: item.InProgressItems[0],
+ }));
+ }
+ };
+ const handleDismissPanel = () => {
+ setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, showIssueDetailPanel: false, showIssueListPanel: false, showBackButton: false }));
+ };
+
+ const handleIssueDetailClick = (item: ServiceHealthIssue) => {
+ setState((prevState: IServiceHealthOverviewState) => ({
+ ...prevState,
+ showIssueDetailPanel: true,
+ showIssueListPanel: false,
+ selectedIssue: item,
+ showBackButton: true,
+ }));
+ };
+
+ const handleBackClick = () => {
+ setState((prevState: IServiceHealthOverviewState) => ({
+ ...prevState,
+ showIssueDetailPanel: false,
+ showIssueListPanel: true,
+ showBackButton: true,
+ }));
+ };
+
+ const handleCloseClick = () => {
+ setState((prevState: IServiceHealthOverviewState) => ({
+ ...prevState,
+ showIssueDetailPanel: false,
+ showIssueListPanel: false,
+ showBackButton: true,
+ selectedItem: null,
+ selectedIssue: null,
+ }));
+ };
+
+ const _renderNavigation: IRenderFunction = (props: IPanelProps, defaultRender): JSX.Element => {
+ return state.showBackButton ? (
+
+
+
+
+ ) : (
+ defaultRender(props)
+ );
+ };
+
+ return (
+ <>
+ {state.spinner && }
+ {!state.spinner && }
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts
new file mode 100644
index 000000000..e3d796ec6
--- /dev/null
+++ b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts
@@ -0,0 +1,44 @@
+import { IColumn } from "@fluentui/react";
+import { ServiceHealthIssue } from "@microsoft/microsoft-graph-types";
+import { WebPartContext } from "@microsoft/sp-webpart-base";
+
+export interface IServiceHealthOverviewItem {
+ Service: string;
+ Status: string;
+ InProgressItems?: ServiceHealthIssue[];
+}
+export interface IServiceHealthOverviewProps {
+ apiBaseUrl: string;
+ audience: string;
+ context: WebPartContext;
+}
+
+export interface IServiceHealthHeaderProps {
+ title: string;
+}
+
+export interface IServiceHealthOverviewState {
+ columns: IColumn[];
+ items: IServiceHealthOverviewItem[];
+ showIssueListPanel: boolean;
+ showIssueDetailPanel: boolean;
+ selectedItem: IServiceHealthOverviewItem;
+ selectedIssue: ServiceHealthIssue;
+ showBackButton: boolean;
+ spinner: boolean;
+}
+
+export interface IIssueDetailProps {
+ details: ServiceHealthIssue;
+}
+
+export interface IIssueListProps {
+ selectedItem: IServiceHealthOverviewItem;
+ onClick: (item: ServiceHealthIssue) => void;
+}
+export interface IListItemProps {
+ column: IColumn;
+ item: IServiceHealthOverviewItem;
+ index: number;
+ onLinkClick: (item: IServiceHealthOverviewItem) => void;
+}
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/loc/en-us.js b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/loc/en-us.js
similarity index 100%
rename from samples/react-m365-services-health/src/webparts/m365ServicesHealth/loc/en-us.js
rename to samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/loc/en-us.js
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/loc/mystrings.d.ts b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/loc/mystrings.d.ts
similarity index 100%
rename from samples/react-m365-services-health/src/webparts/m365ServicesHealth/loc/mystrings.d.ts
rename to samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/loc/mystrings.d.ts
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts
similarity index 86%
rename from samples/react-m365-services-health/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts
rename to samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts
index 6c566d4c9..6aaab9d05 100644
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts
+++ b/samples/react-m365-services-health/SPFx-WebPart/src/webparts/m365ServicesHealth/services/ListViewHelperService.ts
@@ -32,9 +32,9 @@ export const getListViewItemsForOverview = (response: ServiceHealth[]): IService
if (inProgressIssues.length > 0) {
const counts = inProgressIssues.reduce(
(acc, curr) => {
- if (curr.classification === "advisory") {
+ if (curr.classification?.toLowerCase() === "advisory") {
acc.advisoryCount++;
- } else if (curr.classification === "incident" || curr.classification === "unknownFutureValue") {
+ } else if (curr.classification?.toLowerCase() === "incident" || curr.classification?.toLowerCase() === "unknownFutureValue") {
acc.incidentCount++;
}
return acc;
@@ -44,10 +44,10 @@ export const getListViewItemsForOverview = (response: ServiceHealth[]): IService
const status: string[] = [];
if (counts.advisoryCount > 0) {
- status.push(`${counts.advisoryCount} ${counts.advisoryCount === 1 ? "advisory" : "advisories"}`);
+ status.push(`${counts.advisoryCount} ${counts.advisoryCount === 1 ? "Advisory" : "Advisories"}`);
}
if (counts.incidentCount > 0) {
- status.push(`${counts.incidentCount} ${counts.incidentCount === 1 ? "incident" : "incidents"}`);
+ status.push(`${counts.incidentCount} ${counts.incidentCount === 1 ? "Incident" : "Incidents"}`);
}
overviewItem.Status = status.join(",");
overviewItem.InProgressItems = inProgressIssues;
diff --git a/samples/react-m365-services-health/teams/b43bbaf4-e46b-4106-9495-700bc965996f_color.png b/samples/react-m365-services-health/SPFx-WebPart/teams/b43bbaf4-e46b-4106-9495-700bc965996f_color.png
similarity index 100%
rename from samples/react-m365-services-health/teams/b43bbaf4-e46b-4106-9495-700bc965996f_color.png
rename to samples/react-m365-services-health/SPFx-WebPart/teams/b43bbaf4-e46b-4106-9495-700bc965996f_color.png
diff --git a/samples/react-m365-services-health/teams/b43bbaf4-e46b-4106-9495-700bc965996f_outline.png b/samples/react-m365-services-health/SPFx-WebPart/teams/b43bbaf4-e46b-4106-9495-700bc965996f_outline.png
similarity index 100%
rename from samples/react-m365-services-health/teams/b43bbaf4-e46b-4106-9495-700bc965996f_outline.png
rename to samples/react-m365-services-health/SPFx-WebPart/teams/b43bbaf4-e46b-4106-9495-700bc965996f_outline.png
diff --git a/samples/react-m365-services-health/SPFx-WebPart/tsconfig.json b/samples/react-m365-services-health/SPFx-WebPart/tsconfig.json
new file mode 100644
index 000000000..2720c5756
--- /dev/null
+++ b/samples/react-m365-services-health/SPFx-WebPart/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "extends": "./node_modules/@microsoft/rush-stack-compiler-4.7/includes/tsconfig-web.json",
+ "compilerOptions": {
+ "target": "es5",
+ "forceConsistentCasingInFileNames": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "jsx": "react",
+ "declaration": true,
+ "sourceMap": true,
+ "experimentalDecorators": true,
+ "skipLibCheck": true,
+ "outDir": "lib",
+ "inlineSources": false,
+ "strictNullChecks": false,
+ "noImplicitAny": true,
+
+ "typeRoots": ["./node_modules/@types", "./node_modules/@microsoft"],
+ "types": ["webpack-env"],
+ "lib": ["ES2017", "es5", "dom", "es2015.collection", "es2015.promise"]
+ },
+ "include": ["src/**/*.ts", "src/**/*.tsx"]
+}
diff --git a/samples/react-m365-services-health/assets/AppRegistration.png b/samples/react-m365-services-health/assets/AppRegistration.png
new file mode 100644
index 000000000..db9857793
Binary files /dev/null and b/samples/react-m365-services-health/assets/AppRegistration.png differ
diff --git a/samples/react-m365-services-health/assets/ApplicationScope.png b/samples/react-m365-services-health/assets/ApplicationScope.png
new file mode 100644
index 000000000..f59221fe5
Binary files /dev/null and b/samples/react-m365-services-health/assets/ApplicationScope.png differ
diff --git a/samples/react-m365-services-health/assets/M365ServiceHealthDetail.png b/samples/react-m365-services-health/assets/M365ServiceHealthDetail.png
index f44e9b233..d408627a6 100644
Binary files a/samples/react-m365-services-health/assets/M365ServiceHealthDetail.png and b/samples/react-m365-services-health/assets/M365ServiceHealthDetail.png differ
diff --git a/samples/react-m365-services-health/assets/WebPartProperties.png b/samples/react-m365-services-health/assets/WebPartProperties.png
new file mode 100644
index 000000000..2e7fdf192
Binary files /dev/null and b/samples/react-m365-services-health/assets/WebPartProperties.png differ
diff --git a/samples/react-m365-services-health/assets/sample.json b/samples/react-m365-services-health/assets/sample.json
index e32a450c2..1642fd9e3 100644
--- a/samples/react-m365-services-health/assets/sample.json
+++ b/samples/react-m365-services-health/assets/sample.json
@@ -10,7 +10,7 @@
"Service Health for Microsoft 365 solution show the health status for all the M365 services"
],
"creationDateTime": "2023-02-03",
- "updateDateTime": "2023-02-03",
+ "updateDateTime": "2024-02-10",
"products": [
"SharePoint"
],
diff --git a/samples/react-m365-services-health/src/common/services/GraphService.ts b/samples/react-m365-services-health/src/common/services/GraphService.ts
deleted file mode 100644
index 177ad4856..000000000
--- a/samples/react-m365-services-health/src/common/services/GraphService.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { ServiceHealth } from "@microsoft/microsoft-graph-types";
-import { MSGraphClientV3, GraphRequest } from "@microsoft/sp-http-msgraph";
-import { WebPartContext } from "@microsoft/sp-webpart-base";
-
-export class GraphService {
- private context: WebPartContext;
-
- constructor(context: WebPartContext) {
- this.context = context;
- }
-
- private getClient = async (): Promise => {
- return await this.context.msGraphClientFactory.getClient("3");
- };
-
- public getHealthOverviews = async (): Promise => {
- const client = await this.getClient();
- const request: GraphRequest = client.api("/admin/serviceAnnouncement/healthOverviews");
- const response = await request.expand("issues").get();
- return Promise.resolve(response.value);
- };
-}
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/M365ServicesHealthWebPart.ts b/samples/react-m365-services-health/src/webparts/m365ServicesHealth/M365ServicesHealthWebPart.ts
deleted file mode 100644
index 14843dbf1..000000000
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/M365ServicesHealthWebPart.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import * as React from "react";
-import * as ReactDom from "react-dom";
-import { Version } from "@microsoft/sp-core-library";
-import { IPropertyPaneConfiguration, PropertyPaneTextField } from "@microsoft/sp-property-pane";
-import { BaseClientSideWebPart } from "@microsoft/sp-webpart-base";
-
-import * as strings from "M365ServicesHealthWebPartStrings";
-import M365ServicesHealth from "./components/M365ServicesHealth";
-import { IM365ServicesHealthProps } from "./components/IM365ServicesHealthProps";
-import { GraphService } from "../../common/services/GraphService";
-
-export interface IM365ServicesHealthWebPartProps {
- title: string;
- height: number;
-}
-
-export default class M365ServicesHealthWebPart extends BaseClientSideWebPart {
- private graphService: GraphService;
-
- public render(): void {
- const element: React.ReactElement = React.createElement(M365ServicesHealth, {
- title: this.properties.title,
- context: this.context,
- graphService: this.graphService,
- });
-
- ReactDom.render(element, this.domElement);
- }
-
- protected onInit(): Promise {
- this.graphService = new GraphService(this.context);
- return Promise.resolve();
- }
-
- protected onDispose(): void {
- ReactDom.unmountComponentAtNode(this.domElement);
- }
-
- protected get dataVersion(): Version {
- return Version.parse("1.0");
- }
-
- protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration {
- return {
- pages: [
- {
- header: {
- description: strings.PropertyPaneDescription,
- },
- groups: [
- {
- groupName: strings.BasicGroupName,
- groupFields: [
- PropertyPaneTextField("title", {
- label: strings.TitleFieldLabel,
- }),
- ],
- },
- ],
- },
- ],
- };
- }
-}
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/IM365ServicesHealthProps.ts b/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/IM365ServicesHealthProps.ts
deleted file mode 100644
index 41abb39b7..000000000
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/IM365ServicesHealthProps.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { WebPartContext } from "@microsoft/sp-webpart-base";
-import { GraphService } from "../../../common/services/GraphService";
-export interface IM365ServicesHealthProps {
- title: string;
- context: WebPartContext;
- graphService: GraphService;
-}
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/IssueDetail/IssueDetail.tsx b/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/IssueDetail/IssueDetail.tsx
deleted file mode 100644
index 7908df1d1..000000000
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/IssueDetail/IssueDetail.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import { ServiceHealthIssuePost } from "@microsoft/microsoft-graph-types";
-import Style from "./IssueDetail.module.scss";
-import * as React from "react";
-import * as HelperService from "../../../../../common/services/HelperService";
-import { Icon, Label } from "@fluentui/react";
-import { IIssueDetailProps } from "../../../interfaces/ServiceHealthModels";
-
-export const IssueDetail = (props: IIssueDetailProps): JSX.Element => {
- return (
- <>
-
-
-
{props.details?.title}
-
-
-
-
- {props.details?.id}, Last updated: {HelperService.getFormattedDateTime(props.details?.lastModifiedDateTime)}
-
-
Estimated Start time: {HelperService.getFormattedDateTime(props.details?.startDateTime)}
-
-
-
-
- {props.details?.service}
-
-
-
-
-
-
-
-
-
-
-
- {props.details?.classification.charAt(0).toUpperCase() + props.details?.classification.slice(1)}
-
-
-
-
-
-
-
-
-
-
-
-
- {props.details?.origin.charAt(0).toUpperCase() + props.details?.origin.slice(1)}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {props.details?.status.charAt(0).toUpperCase() + props.details?.status.slice(1)}
-
-
-
-
-
-
-
-
-
-
{props.details?.impactDescription}
-
- All Updates
- {props.details?.posts
- ?.sort((a, b) => {
- return new Date(b.createdDateTime).valueOf() - new Date(a.createdDateTime).valueOf(); // descending
- })
- .map((post: ServiceHealthIssuePost, index: number) => {
- return (
-
-
-
{HelperService.getFormattedDateTime(post.createdDateTime)}
-
-
- );
- })}
- >
- );
-};
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx b/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx
deleted file mode 100644
index abd6da53f..000000000
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/components/ServiceHealthOverview/ServiceHealthOverview.tsx
+++ /dev/null
@@ -1,116 +0,0 @@
-import { DefaultButton, DetailsList, IColumn, IPanelProps, IRenderFunction, Panel, PanelType, SelectionMode, Spinner } from "@fluentui/react";
-import { ServiceHealth, ServiceHealthIssue } from "@microsoft/microsoft-graph-types";
-import * as React from "react";
-import { IServiceHealthOverviewItem, IServiceHealthOverviewProps, IServiceHealthOverviewState } from "../../interfaces/ServiceHealthModels";
-import * as ListViewHelperService from "../../services/ListViewHelperService";
-import { backButtonStyles, cancelButtonStyle, issueDetailPanelStyles, issueListPanelStyles } from "./Constant";
-import { IssueDetail } from "./IssueDetail/IssueDetail";
-import { IssueList } from "./IssueList/IssueList";
-import { ListItem } from "./ListItem/ListItem";
-
-export const ServiceHealthOverview = (props: IServiceHealthOverviewProps): JSX.Element => {
- const [state, setState] = React.useState({
- columns: ListViewHelperService.getOverviewListViewColumns(),
- items: [],
- showIssueListPanel: false,
- showIssueDetailPanel: false,
- selectedItem: null,
- selectedIssue: null,
- showBackButton: false,
- spinner: true,
- });
- /* eslint-disable */
- React.useEffect(() => {
- let listViewItems: IServiceHealthOverviewItem[] = [];
- (async () => {
- try {
- const response: ServiceHealth[] = await props.graphService.getHealthOverviews();
- listViewItems = ListViewHelperService.getListViewItemsForOverview(response);
- } catch (ex) {
- console.log(ex);
- }
- setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, items: listViewItems, spinner: false }));
- })();
- }, []);
-
- const _renderItemColumn = (item: IServiceHealthOverviewItem, index: number, column: IColumn) => {
- return ;
- };
-
- const handleLinkClick = (item: IServiceHealthOverviewItem) => {
- if (item.InProgressItems.length > 1) {
- setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, showIssueListPanel: true, selectedItem: item }));
- } else {
- setState((prevState: IServiceHealthOverviewState) => ({
- ...prevState,
- showIssueDetailPanel: true,
- selectedItem: item,
- selectedIssue: item.InProgressItems[0],
- }));
- }
- };
- const handleDismissPanel = () => {
- setState((prevState: IServiceHealthOverviewState) => ({ ...prevState, showIssueDetailPanel: false, showIssueListPanel: false, showBackButton: false }));
- };
-
- const handleIssueDetailClick = (item: ServiceHealthIssue) => {
- setState((prevState: IServiceHealthOverviewState) => ({
- ...prevState,
- showIssueDetailPanel: true,
- showIssueListPanel: false,
- selectedIssue: item,
- showBackButton: true,
- }));
- };
-
- const handleBackClick = () => {
- setState((prevState: IServiceHealthOverviewState) => ({
- ...prevState,
- showIssueDetailPanel: false,
- showIssueListPanel: true,
- showBackButton: true,
- }));
- };
-
- const handleCloseClick = () => {
- setState((prevState: IServiceHealthOverviewState) => ({
- ...prevState,
- showIssueDetailPanel: false,
- showIssueListPanel: false,
- showBackButton: true,
- selectedItem: null,
- selectedIssue: null,
- }));
- };
-
- const _renderNavigation: IRenderFunction = (props: IPanelProps, defaultRender): JSX.Element => {
- return state.showBackButton ? (
-
-
-
-
- ) : (
- defaultRender(props)
- );
- };
-
- return (
- <>
- {state.spinner && }
- {!state.spinner && }
-
-
-
-
-
-
-
- >
- );
-};
diff --git a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts b/samples/react-m365-services-health/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts
deleted file mode 100644
index b73f32b04..000000000
--- a/samples/react-m365-services-health/src/webparts/m365ServicesHealth/interfaces/ServiceHealthModels.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { IColumn } from "@fluentui/react";
-import { ServiceHealthIssue } from "@microsoft/microsoft-graph-types";
-import { GraphService } from "../../../common/services/GraphService";
-
-export interface IServiceHealthOverviewItem {
- Service: string;
- Status: string;
- InProgressItems?: ServiceHealthIssue[];
-}
-export interface IServiceHealthOverviewProps {
- graphService: GraphService;
-}
-
-export interface IServiceHealthHeaderProps {
- title: string;
-}
-
-export interface IServiceHealthOverviewState {
- columns: IColumn[];
- items: IServiceHealthOverviewItem[];
- showIssueListPanel: boolean;
- showIssueDetailPanel: boolean;
- selectedItem: IServiceHealthOverviewItem;
- selectedIssue: ServiceHealthIssue;
- showBackButton: boolean;
- spinner: boolean;
-}
-
-export interface IIssueDetailProps {
- details: ServiceHealthIssue;
-}
-
-export interface IIssueListProps {
- selectedItem: IServiceHealthOverviewItem;
- onClick: (item: ServiceHealthIssue) => void;
-}
-export interface IListItemProps {
- column: IColumn;
- item: IServiceHealthOverviewItem;
- index: number;
- onLinkClick: (item: IServiceHealthOverviewItem) => void;
-}
diff --git a/samples/react-m365-services-health/tsconfig.json b/samples/react-m365-services-health/tsconfig.json
deleted file mode 100644
index 5a2f15b32..000000000
--- a/samples/react-m365-services-health/tsconfig.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "extends": "./node_modules/@microsoft/rush-stack-compiler-4.5/includes/tsconfig-web.json",
- "compilerOptions": {
- "target": "es5",
- "forceConsistentCasingInFileNames": true,
- "module": "esnext",
- "moduleResolution": "node",
- "jsx": "react",
- "declaration": true,
- "sourceMap": true,
- "experimentalDecorators": true,
- "skipLibCheck": true,
- "outDir": "lib",
- "inlineSources": false,
- "strictNullChecks": false,
- "noImplicitAny": true,
-
- "typeRoots": ["./node_modules/@types", "./node_modules/@microsoft"],
- "types": ["webpack-env"],
- "lib": ["ES2017", "es5", "dom", "es2015.collection", "es2015.promise"]
- },
- "include": ["src/**/*.ts", "src/**/*.tsx"]
-}