mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
chore: simplify imports (#9896)
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { test, expect } from "@playwright/test";
|
||||||
import * as constants from "./constants";
|
import * as constants from "./constants";
|
||||||
import { STORAGE_STATE } from "./playwright.config";
|
import { STORAGE_STATE } from "./playwright.config";
|
||||||
import { Language } from "../src/pages/CreateUserPage/CreateUserForm";
|
import { Language } from "pages/CreateUserPage/CreateUserForm";
|
||||||
|
|
||||||
test("create first user", async ({ page }) => {
|
test("create first user", async ({ page }) => {
|
||||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { MONOSPACE_FONT_FAMILY } from "../../theme/constants";
|
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
|
||||||
import { combineClasses } from "../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import { CopyButton } from "../CopyButton/CopyButton";
|
import { CopyButton } from "../CopyButton/CopyButton";
|
||||||
import { Theme } from "@mui/material/styles";
|
import { Theme } from "@mui/material/styles";
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import { makeStyles } from "@mui/styles";
|
|||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
import Check from "@mui/icons-material/Check";
|
import Check from "@mui/icons-material/Check";
|
||||||
import { useClipboard } from "hooks/useClipboard";
|
import { useClipboard } from "hooks/useClipboard";
|
||||||
import { combineClasses } from "../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import { FileCopyIcon } from "../Icons/FileCopyIcon";
|
import { FileCopyIcon } from "../Icons/FileCopyIcon";
|
||||||
|
|
||||||
interface CopyButtonProps {
|
interface CopyButtonProps {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
import { MockUser, MockUser2 } from "../../../testHelpers/entities";
|
import { MockUser, MockUser2 } from "testHelpers/entities";
|
||||||
import { NavbarView } from "./NavbarView";
|
import { NavbarView } from "./NavbarView";
|
||||||
|
|
||||||
const meta: Meta<typeof NavbarView> = {
|
const meta: Meta<typeof NavbarView> = {
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
import { screen } from "@testing-library/react";
|
import { screen } from "@testing-library/react";
|
||||||
import {
|
import { MockPrimaryWorkspaceProxy, MockUser } from "testHelpers/entities";
|
||||||
MockPrimaryWorkspaceProxy,
|
import { renderWithAuth } from "testHelpers/renderHelpers";
|
||||||
MockUser,
|
|
||||||
} from "../../../testHelpers/entities";
|
|
||||||
import { renderWithAuth } from "../../../testHelpers/renderHelpers";
|
|
||||||
import { Language as navLanguage, NavbarView } from "./NavbarView";
|
import { Language as navLanguage, NavbarView } from "./NavbarView";
|
||||||
import { ProxyContextValue } from "contexts/ProxyContext";
|
import { ProxyContextValue } from "contexts/ProxyContext";
|
||||||
import { action } from "@storybook/addon-actions";
|
import { action } from "@storybook/addon-actions";
|
||||||
|
@ -8,9 +8,9 @@ import { CoderIcon } from "components/Icons/CoderIcon";
|
|||||||
import { FC, useRef, useState } from "react";
|
import { FC, useRef, useState } from "react";
|
||||||
import { NavLink, useLocation, useNavigate } from "react-router-dom";
|
import { NavLink, useLocation, useNavigate } from "react-router-dom";
|
||||||
import { colors } from "theme/colors";
|
import { colors } from "theme/colors";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { navHeight } from "../../../theme/constants";
|
import { navHeight } from "theme/constants";
|
||||||
import { combineClasses } from "../../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import { UserDropdown } from "./UserDropdown/UserDropdown";
|
import { UserDropdown } from "./UserDropdown/UserDropdown";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Menu from "@mui/material/Menu";
|
import Menu from "@mui/material/Menu";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { MockUser } from "../../../../testHelpers/entities";
|
import { MockUser } from "testHelpers/entities";
|
||||||
import { UserDropdown } from "./UserDropdown";
|
import { UserDropdown } from "./UserDropdown";
|
||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import MuiDialog, { DialogProps as MuiDialogProps } from "@mui/material/Dialog";
|
|||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { colors } from "theme/colors";
|
import { colors } from "theme/colors";
|
||||||
import { combineClasses } from "../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import {
|
import {
|
||||||
LoadingButton,
|
LoadingButton,
|
||||||
LoadingButtonProps,
|
LoadingButtonProps,
|
||||||
|
@ -2,7 +2,7 @@ import Box from "@mui/material/Box";
|
|||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import { FC, ReactNode } from "react";
|
import { FC, ReactNode } from "react";
|
||||||
import { combineClasses } from "../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
|
|
||||||
export interface EmptyStateProps {
|
export interface EmptyStateProps {
|
||||||
/** Text Message to display, placed inside Typography component */
|
/** Text Message to display, placed inside Typography component */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { dispatchCustomEvent } from "../../utils/events";
|
import { dispatchCustomEvent } from "utils/events";
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Notification Types
|
// Notification Types
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
containerWidth,
|
containerWidth,
|
||||||
containerWidthMedium,
|
containerWidthMedium,
|
||||||
sidePadding,
|
sidePadding,
|
||||||
} from "../../theme/constants";
|
} from "theme/constants";
|
||||||
|
|
||||||
type Size = "regular" | "medium" | "small";
|
type Size = "regular" | "medium" | "small";
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import axios from "axios";
|
|||||||
import { useAuth } from "components/AuthProvider/AuthProvider";
|
import { useAuth } from "components/AuthProvider/AuthProvider";
|
||||||
import { FC, useEffect } from "react";
|
import { FC, useEffect } from "react";
|
||||||
import { Outlet, Navigate, useLocation } from "react-router-dom";
|
import { Outlet, Navigate, useLocation } from "react-router-dom";
|
||||||
import { embedRedirect } from "../../utils/redirect";
|
import { embedRedirect } from "utils/redirect";
|
||||||
import { FullScreenLoader } from "../Loader/FullScreenLoader";
|
import { FullScreenLoader } from "../Loader/FullScreenLoader";
|
||||||
import { DashboardProvider } from "components/Dashboard/DashboardProvider";
|
import { DashboardProvider } from "components/Dashboard/DashboardProvider";
|
||||||
import { ProxyProvider } from "contexts/ProxyContext";
|
import { ProxyProvider } from "contexts/ProxyContext";
|
||||||
|
@ -6,8 +6,8 @@ import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
|
|||||||
import { PrimaryAgentButton } from "components/Resources/AgentButton";
|
import { PrimaryAgentButton } from "components/Resources/AgentButton";
|
||||||
import { FC, useState } from "react";
|
import { FC, useState } from "react";
|
||||||
import { combineClasses } from "utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { generateRandomString } from "../../../utils/random";
|
import { generateRandomString } from "utils/random";
|
||||||
import { BaseIcon } from "./BaseIcon";
|
import { BaseIcon } from "./BaseIcon";
|
||||||
import { ShareIcon } from "./ShareIcon";
|
import { ShareIcon } from "./ShareIcon";
|
||||||
import { useProxy } from "contexts/ProxyContext";
|
import { useProxy } from "contexts/ProxyContext";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import PublicOutlinedIcon from "@mui/icons-material/PublicOutlined";
|
import PublicOutlinedIcon from "@mui/icons-material/PublicOutlined";
|
||||||
import GroupOutlinedIcon from "@mui/icons-material/GroupOutlined";
|
import GroupOutlinedIcon from "@mui/icons-material/GroupOutlined";
|
||||||
import LaunchOutlinedIcon from "@mui/icons-material/LaunchOutlined";
|
import LaunchOutlinedIcon from "@mui/icons-material/LaunchOutlined";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
|
|
||||||
export interface ShareIconProps {
|
export interface ShareIconProps {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Avatar, AvatarIcon } from "components/Avatar/Avatar";
|
import { Avatar, AvatarIcon } from "components/Avatar/Avatar";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { WorkspaceResource } from "../../api/typesGenerated";
|
import { WorkspaceResource } from "api/typesGenerated";
|
||||||
|
|
||||||
const FALLBACK_ICON = "/icon/widgets.svg";
|
const FALLBACK_ICON = "/icon/widgets.svg";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import { FC, useState } from "react";
|
import { FC, useState } from "react";
|
||||||
import { WorkspaceAgent, WorkspaceResource } from "../../api/typesGenerated";
|
import { WorkspaceAgent, WorkspaceResource } from "api/typesGenerated";
|
||||||
import { Stack } from "../Stack/Stack";
|
import { Stack } from "../Stack/Stack";
|
||||||
import { ResourceAvatar } from "./ResourceAvatar";
|
import { ResourceAvatar } from "./ResourceAvatar";
|
||||||
import { SensitiveValue } from "./SensitiveValue";
|
import { SensitiveValue } from "./SensitiveValue";
|
||||||
|
@ -5,7 +5,7 @@ import {
|
|||||||
OpenDropdown,
|
OpenDropdown,
|
||||||
} from "components/DropdownArrows/DropdownArrows";
|
} from "components/DropdownArrows/DropdownArrows";
|
||||||
import { FC, useState } from "react";
|
import { FC, useState } from "react";
|
||||||
import { WorkspaceAgent, WorkspaceResource } from "../../api/typesGenerated";
|
import { WorkspaceAgent, WorkspaceResource } from "api/typesGenerated";
|
||||||
import { Stack } from "../Stack/Stack";
|
import { Stack } from "../Stack/Stack";
|
||||||
import { ResourceCard } from "./ResourceCard";
|
import { ResourceCard } from "./ResourceCard";
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import Link from "@mui/material/Link";
|
import Link from "@mui/material/Link";
|
||||||
import { SecondaryAgentButton } from "components/Resources/AgentButton";
|
import { SecondaryAgentButton } from "components/Resources/AgentButton";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { generateRandomString } from "../../../utils/random";
|
import { generateRandomString } from "utils/random";
|
||||||
|
|
||||||
export const Language = {
|
export const Language = {
|
||||||
linkText: "Terminal",
|
linkText: "Terminal",
|
||||||
|
@ -3,7 +3,7 @@ import { Sidebar } from "./Sidebar";
|
|||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { FC, Suspense } from "react";
|
import { FC, Suspense } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { Margins } from "../Margins/Margins";
|
import { Margins } from "../Margins/Margins";
|
||||||
import { useMe } from "hooks/useMe";
|
import { useMe } from "hooks/useMe";
|
||||||
import { Loader } from "components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
|
@ -2,7 +2,7 @@ import { makeStyles } from "@mui/styles";
|
|||||||
import { CSSProperties } from "@mui/styles/withStyles";
|
import { CSSProperties } from "@mui/styles/withStyles";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { ReactNode } from "react-markdown/lib/react-markdown";
|
import { ReactNode } from "react-markdown/lib/react-markdown";
|
||||||
import { combineClasses } from "../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
|
|
||||||
type Direction = "column" | "row";
|
type Direction = "column" | "row";
|
||||||
|
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
import TableCell from "@mui/material/TableCell";
|
import TableCell from "@mui/material/TableCell";
|
||||||
import TableRow from "@mui/material/TableRow";
|
import TableRow from "@mui/material/TableRow";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import {
|
import { EmptyState, EmptyStateProps } from "components/EmptyState/EmptyState";
|
||||||
EmptyState,
|
|
||||||
EmptyStateProps,
|
|
||||||
} from "../../components/EmptyState/EmptyState";
|
|
||||||
|
|
||||||
export type TableEmptyProps = EmptyStateProps;
|
export type TableEmptyProps = EmptyStateProps;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { AgentRowPreview } from "components/Resources/AgentRowPreview";
|
import { AgentRowPreview } from "components/Resources/AgentRowPreview";
|
||||||
import { Resources } from "components/Resources/Resources";
|
import { Resources } from "components/Resources/Resources";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { WorkspaceResource } from "../../api/typesGenerated";
|
import { WorkspaceResource } from "api/typesGenerated";
|
||||||
|
|
||||||
export interface TemplateResourcesProps {
|
export interface TemplateResourcesProps {
|
||||||
resources: WorkspaceResource[];
|
resources: WorkspaceResource[];
|
||||||
|
@ -8,7 +8,7 @@ import MuiTypography, {
|
|||||||
TypographyProps as MuiTypographyProps,
|
TypographyProps as MuiTypographyProps,
|
||||||
} from "@mui/material/Typography";
|
} from "@mui/material/Typography";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { appendCSSString, combineClasses } from "../../utils/combineClasses";
|
import { appendCSSString, combineClasses } from "utils/combineClasses";
|
||||||
|
|
||||||
export interface TypographyProps extends MuiTypographyProps {
|
export interface TypographyProps extends MuiTypographyProps {
|
||||||
short?: boolean;
|
short?: boolean;
|
||||||
|
@ -15,8 +15,8 @@ import {
|
|||||||
useNavigate,
|
useNavigate,
|
||||||
} from "react-router-dom";
|
} from "react-router-dom";
|
||||||
import { combineClasses } from "utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import { Margins } from "../../components/Margins/Margins";
|
import { Margins } from "components/Margins/Margins";
|
||||||
import { Stack } from "../../components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
|
|
||||||
export const UsersLayout: FC = () => {
|
export const UsersLayout: FC = () => {
|
||||||
const styles = useStyles();
|
const styles = useStyles();
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { ComponentProps, FC, Fragment } from "react";
|
import { ComponentProps, FC, Fragment } from "react";
|
||||||
import { ProvisionerJobLog } from "../../api/typesGenerated";
|
import { ProvisionerJobLog } from "api/typesGenerated";
|
||||||
import { MONOSPACE_FONT_FAMILY } from "../../theme/constants";
|
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
|
||||||
import { Logs } from "./Logs";
|
import { Logs } from "./Logs";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import { combineClasses } from "utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { renderHook, waitFor } from "@testing-library/react";
|
import { renderHook, waitFor } from "@testing-library/react";
|
||||||
import { dispatchCustomEvent } from "../utils/events";
|
import { dispatchCustomEvent } from "utils/events";
|
||||||
import { useCustomEvent } from "./events";
|
import { useCustomEvent } from "./events";
|
||||||
|
|
||||||
describe("useCustomEvent", () => {
|
describe("useCustomEvent", () => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { CustomEventListener } from "../utils/events";
|
import { CustomEventListener } from "utils/events";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a custom event with descriptive type information.
|
* Handles a custom event with descriptive type information.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useEffect, useState, FC, PropsWithChildren } from "react";
|
import { useEffect, useState, FC, PropsWithChildren } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { getApiKey } from "../../api/api";
|
import { getApiKey } from "api/api";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { CliAuthPageView } from "./CliAuthPageView";
|
import { CliAuthPageView } from "./CliAuthPageView";
|
||||||
|
|
||||||
export const CliAuthenticationPage: FC<PropsWithChildren<unknown>> = () => {
|
export const CliAuthenticationPage: FC<PropsWithChildren<unknown>> = () => {
|
||||||
|
@ -5,7 +5,7 @@ import { SignInLayout } from "components/SignInLayout/SignInLayout";
|
|||||||
import { Welcome } from "components/Welcome/Welcome";
|
import { Welcome } from "components/Welcome/Welcome";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { Link as RouterLink } from "react-router-dom";
|
import { Link as RouterLink } from "react-router-dom";
|
||||||
import { FullScreenLoader } from "../../components/Loader/FullScreenLoader";
|
import { FullScreenLoader } from "components/Loader/FullScreenLoader";
|
||||||
|
|
||||||
export interface CliAuthPageViewProps {
|
export interface CliAuthPageViewProps {
|
||||||
sessionToken: string | null;
|
sessionToken: string | null;
|
||||||
|
@ -5,7 +5,7 @@ import { makeStyles } from "@mui/styles";
|
|||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { TemplateVersionVariable } from "../../api/typesGenerated";
|
import { TemplateVersionVariable } from "api/typesGenerated";
|
||||||
|
|
||||||
const isBoolean = (variable: TemplateVersionVariable) => {
|
const isBoolean = (variable: TemplateVersionVariable) => {
|
||||||
return variable.type === "bool";
|
return variable.type === "bool";
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
MockTemplateVersionParameter2,
|
MockTemplateVersionParameter2,
|
||||||
MockTemplateVersionParameter3,
|
MockTemplateVersionParameter3,
|
||||||
MockUser,
|
MockUser,
|
||||||
} from "../../testHelpers/entities";
|
} from "testHelpers/entities";
|
||||||
import { CreateWorkspacePageView } from "./CreateWorkspacePageView";
|
import { CreateWorkspacePageView } from "./CreateWorkspacePageView";
|
||||||
|
|
||||||
const meta: Meta<typeof CreateWorkspacePageView> = {
|
const meta: Meta<typeof CreateWorkspacePageView> = {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { MockTemplate } from "../../testHelpers/entities";
|
import { MockTemplate } from "testHelpers/entities";
|
||||||
import { SelectedTemplate } from "./SelectedTemplate";
|
import { SelectedTemplate } from "./SelectedTemplate";
|
||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { screen } from "@testing-library/react";
|
import { screen } from "@testing-library/react";
|
||||||
import { render } from "../../../testHelpers/renderHelpers";
|
import { render } from "testHelpers/renderHelpers";
|
||||||
import { LicenseCard } from "./LicenseCard";
|
import { LicenseCard } from "./LicenseCard";
|
||||||
import { MockLicenseResponse } from "testHelpers/entities";
|
import { MockLicenseResponse } from "testHelpers/entities";
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import { useAuth } from "components/AuthProvider/AuthProvider";
|
|||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { Navigate, useLocation } from "react-router-dom";
|
import { Navigate, useLocation } from "react-router-dom";
|
||||||
import { retrieveRedirect } from "../../utils/redirect";
|
import { retrieveRedirect } from "utils/redirect";
|
||||||
import { LoginPageView } from "./LoginPageView";
|
import { LoginPageView } from "./LoginPageView";
|
||||||
|
|
||||||
export const LoginPage: FC = () => {
|
export const LoginPage: FC = () => {
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
onChangeTrimmed,
|
onChangeTrimmed,
|
||||||
} from "utils/formUtils";
|
} from "utils/formUtils";
|
||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
import * as TypesGen from "../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
|
|
||||||
export const Language = {
|
export const Language = {
|
||||||
emailLabel: "Email",
|
emailLabel: "Email",
|
||||||
|
@ -3,11 +3,11 @@ import userEvent from "@testing-library/user-event";
|
|||||||
import * as API from "api/api";
|
import * as API from "api/api";
|
||||||
import { UpdateTemplateMeta } from "api/typesGenerated";
|
import { UpdateTemplateMeta } from "api/typesGenerated";
|
||||||
import { Language as FooterFormLanguage } from "components/FormFooter/FormFooter";
|
import { Language as FooterFormLanguage } from "components/FormFooter/FormFooter";
|
||||||
import { MockTemplate } from "../../../testHelpers/entities";
|
import { MockTemplate } from "testHelpers/entities";
|
||||||
import {
|
import {
|
||||||
renderWithTemplateSettingsLayout,
|
renderWithTemplateSettingsLayout,
|
||||||
waitForLoaderToBeRemoved,
|
waitForLoaderToBeRemoved,
|
||||||
} from "../../../testHelpers/renderHelpers";
|
} from "testHelpers/renderHelpers";
|
||||||
import { getValidationSchema } from "./TemplateSettingsForm";
|
import { getValidationSchema } from "./TemplateSettingsForm";
|
||||||
import { TemplateSettingsPage } from "./TemplateSettingsPage";
|
import { TemplateSettingsPage } from "./TemplateSettingsPage";
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import { Sidebar } from "./Sidebar";
|
|||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { createContext, FC, Suspense, useContext } from "react";
|
import { createContext, FC, Suspense, useContext } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { Loader } from "components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
import { Outlet, useParams } from "react-router-dom";
|
import { Outlet, useParams } from "react-router-dom";
|
||||||
import { Margins } from "components/Margins/Margins";
|
import { Margins } from "components/Margins/Margins";
|
||||||
|
@ -2,7 +2,7 @@ import { useOrganizationId } from "hooks/useOrganizationId";
|
|||||||
import { usePermissions } from "hooks/usePermissions";
|
import { usePermissions } from "hooks/usePermissions";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { TemplatesPageView } from "./TemplatesPageView";
|
import { TemplatesPageView } from "./TemplatesPageView";
|
||||||
import { templateExamples, templates } from "api/queries/templates";
|
import { templateExamples, templates } from "api/queries/templates";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
|
@ -3,7 +3,7 @@ import {
|
|||||||
MockTemplate,
|
MockTemplate,
|
||||||
MockTemplateExample,
|
MockTemplateExample,
|
||||||
MockTemplateExample2,
|
MockTemplateExample2,
|
||||||
} from "../../testHelpers/entities";
|
} from "testHelpers/entities";
|
||||||
import { TemplatesPageView } from "./TemplatesPageView";
|
import { TemplatesPageView } from "./TemplatesPageView";
|
||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@ import { TextDecoder, TextEncoder } from "util";
|
|||||||
import {
|
import {
|
||||||
renderWithAuth,
|
renderWithAuth,
|
||||||
waitForLoaderToBeRemoved,
|
waitForLoaderToBeRemoved,
|
||||||
} from "../../testHelpers/renderHelpers";
|
} from "testHelpers/renderHelpers";
|
||||||
import { server } from "../../testHelpers/server";
|
import { server } from "testHelpers/server";
|
||||||
import TerminalPage, { Language } from "./TerminalPage";
|
import TerminalPage, { Language } from "./TerminalPage";
|
||||||
import * as API from "api/api";
|
import * as API from "api/api";
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ import { FitAddon } from "xterm-addon-fit";
|
|||||||
import { WebLinksAddon } from "xterm-addon-web-links";
|
import { WebLinksAddon } from "xterm-addon-web-links";
|
||||||
import { Unicode11Addon } from "xterm-addon-unicode11";
|
import { Unicode11Addon } from "xterm-addon-unicode11";
|
||||||
import "xterm/css/xterm.css";
|
import "xterm/css/xterm.css";
|
||||||
import { MONOSPACE_FONT_FAMILY } from "../../theme/constants";
|
import { MONOSPACE_FONT_FAMILY } from "theme/constants";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { terminalMachine } from "../../xServices/terminal/terminalXService";
|
import { terminalMachine } from "xServices/terminal/terminalXService";
|
||||||
import { useProxy } from "contexts/ProxyContext";
|
import { useProxy } from "contexts/ProxyContext";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import { useDashboard } from "components/Dashboard/DashboardProvider";
|
import { useDashboard } from "components/Dashboard/DashboardProvider";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { fireEvent, screen, within } from "@testing-library/react";
|
import { fireEvent, screen, within } from "@testing-library/react";
|
||||||
import * as API from "../../../api/api";
|
import * as API from "api/api";
|
||||||
import { renderWithAuth } from "../../../testHelpers/renderHelpers";
|
import { renderWithAuth } from "testHelpers/renderHelpers";
|
||||||
import { Language as SSHKeysPageLanguage, SSHKeysPage } from "./SSHKeysPage";
|
import { Language as SSHKeysPageLanguage, SSHKeysPage } from "./SSHKeysPage";
|
||||||
import { MockGitSSHKey, mockApiError } from "testHelpers/entities";
|
import { MockGitSSHKey, mockApiError } from "testHelpers/entities";
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { fireEvent, screen, waitFor, within } from "@testing-library/react";
|
import { fireEvent, screen, waitFor, within } from "@testing-library/react";
|
||||||
import * as API from "../../../api/api";
|
import * as API from "api/api";
|
||||||
import * as SecurityForm from "./SettingsSecurityForm";
|
import * as SecurityForm from "./SettingsSecurityForm";
|
||||||
import {
|
import {
|
||||||
renderWithAuth,
|
renderWithAuth,
|
||||||
waitForLoaderToBeRemoved,
|
waitForLoaderToBeRemoved,
|
||||||
} from "../../../testHelpers/renderHelpers";
|
} from "testHelpers/renderHelpers";
|
||||||
import { SecurityPage } from "./SecurityPage";
|
import { SecurityPage } from "./SecurityPage";
|
||||||
import {
|
import {
|
||||||
MockAuthMethodsWithPasswordType,
|
MockAuthMethodsWithPasswordType,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { Section } from "../../../components/SettingsLayout/Section";
|
import { Section } from "components/SettingsLayout/Section";
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import GitHubIcon from "@mui/icons-material/GitHub";
|
import GitHubIcon from "@mui/icons-material/GitHub";
|
||||||
|
@ -11,9 +11,9 @@ import { FC, ReactNode, useEffect } from "react";
|
|||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { useSearchParams, useNavigate } from "react-router-dom";
|
import { useSearchParams, useNavigate } from "react-router-dom";
|
||||||
import { usersMachine } from "xServices/users/usersXService";
|
import { usersMachine } from "xServices/users/usersXService";
|
||||||
import { ConfirmDialog } from "../../components/Dialogs/ConfirmDialog/ConfirmDialog";
|
import { ConfirmDialog } from "components/Dialogs/ConfirmDialog/ConfirmDialog";
|
||||||
import { ResetPasswordDialog } from "./ResetPasswordDialog";
|
import { ResetPasswordDialog } from "./ResetPasswordDialog";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { UsersPageView } from "./UsersPageView";
|
import { UsersPageView } from "./UsersPageView";
|
||||||
import { useStatusFilterMenu } from "./UsersFilter";
|
import { useStatusFilterMenu } from "./UsersFilter";
|
||||||
import { useFilter } from "components/Filter/filter";
|
import { useFilter } from "components/Filter/filter";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { PaginationWidget } from "components/PaginationWidget/PaginationWidget";
|
import { PaginationWidget } from "components/PaginationWidget/PaginationWidget";
|
||||||
import { ComponentProps, FC } from "react";
|
import { ComponentProps, FC } from "react";
|
||||||
import { PaginationMachineRef } from "xServices/pagination/paginationXService";
|
import { PaginationMachineRef } from "xServices/pagination/paginationXService";
|
||||||
import * as TypesGen from "../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { UsersTable } from "./UsersTable/UsersTable";
|
import { UsersTable } from "./UsersTable/UsersTable";
|
||||||
import { UsersFilter } from "./UsersFilter";
|
import { UsersFilter } from "./UsersFilter";
|
||||||
import {
|
import {
|
||||||
|
@ -5,8 +5,8 @@ import TableContainer from "@mui/material/TableContainer";
|
|||||||
import TableHead from "@mui/material/TableHead";
|
import TableHead from "@mui/material/TableHead";
|
||||||
import TableRow from "@mui/material/TableRow";
|
import TableRow from "@mui/material/TableRow";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { Stack } from "../../../components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { UserRoleHelpTooltip } from "./UserRoleHelpTooltip";
|
import { UserRoleHelpTooltip } from "./UserRoleHelpTooltip";
|
||||||
import { UsersTableBody } from "./UsersTableBody";
|
import { UsersTableBody } from "./UsersTableBody";
|
||||||
|
|
||||||
|
@ -5,15 +5,15 @@ import TableRow from "@mui/material/TableRow";
|
|||||||
import { ChooseOne, Cond } from "components/Conditionals/ChooseOne";
|
import { ChooseOne, Cond } from "components/Conditionals/ChooseOne";
|
||||||
import { Pill } from "components/Pill/Pill";
|
import { Pill } from "components/Pill/Pill";
|
||||||
import { type FC } from "react";
|
import { type FC } from "react";
|
||||||
import * as TypesGen from "../../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { combineClasses } from "../../../utils/combineClasses";
|
import { combineClasses } from "utils/combineClasses";
|
||||||
import { AvatarData } from "../../../components/AvatarData/AvatarData";
|
import { AvatarData } from "components/AvatarData/AvatarData";
|
||||||
import { EmptyState } from "../../../components/EmptyState/EmptyState";
|
import { EmptyState } from "components/EmptyState/EmptyState";
|
||||||
import {
|
import {
|
||||||
TableLoaderSkeleton,
|
TableLoaderSkeleton,
|
||||||
TableRowSkeleton,
|
TableRowSkeleton,
|
||||||
} from "../../../components/TableLoader/TableLoader";
|
} from "components/TableLoader/TableLoader";
|
||||||
import { TableRowMenu } from "../../../components/TableRowMenu/TableRowMenu";
|
import { TableRowMenu } from "components/TableRowMenu/TableRowMenu";
|
||||||
import { EditRolesButton } from "./EditRolesButton";
|
import { EditRolesButton } from "./EditRolesButton";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { EnterpriseBadge } from "components/DeploySettingsLayout/Badges";
|
import { EnterpriseBadge } from "components/DeploySettingsLayout/Badges";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { screen, waitFor } from "@testing-library/react";
|
import { screen, waitFor } from "@testing-library/react";
|
||||||
import WS from "jest-websocket-mock";
|
import WS from "jest-websocket-mock";
|
||||||
import { renderWithAuth } from "../../testHelpers/renderHelpers";
|
import { renderWithAuth } from "testHelpers/renderHelpers";
|
||||||
import { WorkspaceBuildPage } from "./WorkspaceBuildPage";
|
import { WorkspaceBuildPage } from "./WorkspaceBuildPage";
|
||||||
import { MockWorkspace, MockWorkspaceBuild } from "testHelpers/entities";
|
import { MockWorkspace, MockWorkspaceBuild } from "testHelpers/entities";
|
||||||
import * as API from "api/api";
|
import * as API from "api/api";
|
||||||
|
@ -3,7 +3,7 @@ import {
|
|||||||
MockFailedWorkspaceBuild,
|
MockFailedWorkspaceBuild,
|
||||||
MockWorkspaceBuild,
|
MockWorkspaceBuild,
|
||||||
MockWorkspaceBuildLogs,
|
MockWorkspaceBuildLogs,
|
||||||
} from "../../testHelpers/entities";
|
} from "testHelpers/entities";
|
||||||
import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView";
|
import { WorkspaceBuildPageView } from "./WorkspaceBuildPageView";
|
||||||
|
|
||||||
const defaultBuilds = Array.from({ length: 15 }, (_, i) => ({
|
const defaultBuilds = Array.from({ length: 15 }, (_, i) => ({
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { BuildAvatar } from "components/BuildAvatar/BuildAvatar";
|
import { BuildAvatar } from "components/BuildAvatar/BuildAvatar";
|
||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { ProvisionerJobLog, WorkspaceBuild } from "../../api/typesGenerated";
|
import { ProvisionerJobLog, WorkspaceBuild } from "api/typesGenerated";
|
||||||
import { Loader } from "../../components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
import { Stack } from "../../components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { WorkspaceBuildLogs } from "../../components/WorkspaceBuildLogs/WorkspaceBuildLogs";
|
import { WorkspaceBuildLogs } from "components/WorkspaceBuildLogs/WorkspaceBuildLogs";
|
||||||
import { makeStyles } from "@mui/styles";
|
import { makeStyles } from "@mui/styles";
|
||||||
import {
|
import {
|
||||||
FullWidthPageHeader,
|
FullWidthPageHeader,
|
||||||
|
@ -2,7 +2,7 @@ import * as cronParser from "cron-parser";
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import timezone from "dayjs/plugin/timezone";
|
import timezone from "dayjs/plugin/timezone";
|
||||||
import utc from "dayjs/plugin/utc";
|
import utc from "dayjs/plugin/utc";
|
||||||
import { extractTimezone, stripTimezone } from "../../../utils/schedule";
|
import { extractTimezone, stripTimezone } from "utils/schedule";
|
||||||
import { Autostop } from "./ttl";
|
import { Autostop } from "./ttl";
|
||||||
import { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm";
|
import { WorkspaceScheduleFormValues } from "./WorkspaceScheduleForm";
|
||||||
import map from "lodash/map";
|
import map from "lodash/map";
|
||||||
|
@ -3,7 +3,7 @@ import { Sidebar } from "./Sidebar";
|
|||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { createContext, FC, Suspense, useContext } from "react";
|
import { createContext, FC, Suspense, useContext } from "react";
|
||||||
import { Helmet } from "react-helmet-async";
|
import { Helmet } from "react-helmet-async";
|
||||||
import { pageTitle } from "../../utils/page";
|
import { pageTitle } from "utils/page";
|
||||||
import { Loader } from "components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
import { Outlet, useParams } from "react-router-dom";
|
import { Outlet, useParams } from "react-router-dom";
|
||||||
import { Margins } from "components/Margins/Margins";
|
import { Margins } from "components/Margins/Margins";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { rest } from "msw";
|
import { rest } from "msw";
|
||||||
import { CreateWorkspaceBuildRequest } from "../api/typesGenerated";
|
import { CreateWorkspaceBuildRequest } from "api/typesGenerated";
|
||||||
import { permissionsToCheck } from "../xServices/auth/authXService";
|
import { permissionsToCheck } from "xServices/auth/authXService";
|
||||||
import * as M from "./entities";
|
import * as M from "./entities";
|
||||||
import { MockGroup, MockWorkspaceQuota } from "./entities";
|
import { MockGroup, MockWorkspaceQuota } from "./entities";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as TypesGen from "../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
|
|
||||||
export const createAppLinkHref = (
|
export const createAppLinkHref = (
|
||||||
protocol: string,
|
protocol: string,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as TypesGen from "../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { queryToFilter } from "./filters";
|
import { queryToFilter } from "./filters";
|
||||||
|
|
||||||
describe("queryToFilter", () => {
|
describe("queryToFilter", () => {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as TypesGen from "../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
|
|
||||||
export const queryToFilter = (
|
export const queryToFilter = (
|
||||||
query?: string,
|
query?: string,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import duration from "dayjs/plugin/duration";
|
import duration from "dayjs/plugin/duration";
|
||||||
import { Workspace } from "../api/typesGenerated";
|
import { Workspace } from "api/typesGenerated";
|
||||||
import * as Mocks from "../testHelpers/entities";
|
import * as Mocks from "testHelpers/entities";
|
||||||
import {
|
import {
|
||||||
deadlineExtensionMax,
|
deadlineExtensionMax,
|
||||||
deadlineExtensionMin,
|
deadlineExtensionMin,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import * as TypesGen from "../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import * as Mocks from "../testHelpers/entities";
|
import * as Mocks from "testHelpers/entities";
|
||||||
import {
|
import {
|
||||||
defaultWorkspaceExtension,
|
defaultWorkspaceExtension,
|
||||||
getDisplayVersionStatus,
|
getDisplayVersionStatus,
|
||||||
|
@ -4,7 +4,7 @@ import duration from "dayjs/plugin/duration";
|
|||||||
import minMax from "dayjs/plugin/minMax";
|
import minMax from "dayjs/plugin/minMax";
|
||||||
import utc from "dayjs/plugin/utc";
|
import utc from "dayjs/plugin/utc";
|
||||||
import semver from "semver";
|
import semver from "semver";
|
||||||
import * as TypesGen from "../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import CircularProgress from "@mui/material/CircularProgress";
|
import CircularProgress from "@mui/material/CircularProgress";
|
||||||
import ErrorIcon from "@mui/icons-material/ErrorOutline";
|
import ErrorIcon from "@mui/icons-material/ErrorOutline";
|
||||||
import StopIcon from "@mui/icons-material/StopOutlined";
|
import StopIcon from "@mui/icons-material/StopOutlined";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { assign, createMachine } from "xstate";
|
import { assign, createMachine } from "xstate";
|
||||||
import * as API from "../../api/api";
|
import * as API from "api/api";
|
||||||
import * as TypesGen from "../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import { displaySuccess } from "../../components/GlobalSnackbar/utils";
|
import { displaySuccess } from "components/GlobalSnackbar/utils";
|
||||||
|
|
||||||
export const Language = {
|
export const Language = {
|
||||||
successProfileUpdate: "Updated settings.",
|
successProfileUpdate: "Updated settings.",
|
||||||
|
@ -5,15 +5,12 @@ import {
|
|||||||
PaginationMachineRef,
|
PaginationMachineRef,
|
||||||
} from "xServices/pagination/paginationXService";
|
} from "xServices/pagination/paginationXService";
|
||||||
import { assign, createMachine, send, spawn } from "xstate";
|
import { assign, createMachine, send, spawn } from "xstate";
|
||||||
import * as API from "../../api/api";
|
import * as API from "api/api";
|
||||||
import { getErrorMessage } from "../../api/errors";
|
import { getErrorMessage } from "api/errors";
|
||||||
import * as TypesGen from "../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
import {
|
import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
|
||||||
displayError,
|
import { queryToFilter } from "utils/filters";
|
||||||
displaySuccess,
|
import { generateRandomString } from "utils/random";
|
||||||
} from "../../components/GlobalSnackbar/utils";
|
|
||||||
import { queryToFilter } from "../../utils/filters";
|
|
||||||
import { generateRandomString } from "../../utils/random";
|
|
||||||
|
|
||||||
const usersPaginationId = "usersPagination";
|
const usersPaginationId = "usersPagination";
|
||||||
|
|
||||||
|
@ -8,11 +8,8 @@ import dayjs from "dayjs";
|
|||||||
import minMax from "dayjs/plugin/minMax";
|
import minMax from "dayjs/plugin/minMax";
|
||||||
import { getDeadline, getMaxDeadline, getMinDeadline } from "utils/schedule";
|
import { getDeadline, getMaxDeadline, getMinDeadline } from "utils/schedule";
|
||||||
import { assign, createMachine } from "xstate";
|
import { assign, createMachine } from "xstate";
|
||||||
import * as API from "../../api/api";
|
import * as API from "api/api";
|
||||||
import {
|
import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
|
||||||
displayError,
|
|
||||||
displaySuccess,
|
|
||||||
} from "../../components/GlobalSnackbar/utils";
|
|
||||||
|
|
||||||
dayjs.extend(minMax);
|
dayjs.extend(minMax);
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
* an individual workspace's schedule.
|
* an individual workspace's schedule.
|
||||||
*/
|
*/
|
||||||
import { assign, createMachine } from "xstate";
|
import { assign, createMachine } from "xstate";
|
||||||
import * as API from "../../api/api";
|
import * as API from "api/api";
|
||||||
import * as TypesGen from "../../api/typesGenerated";
|
import * as TypesGen from "api/typesGenerated";
|
||||||
|
|
||||||
type Permissions = Record<keyof ReturnType<typeof permissionsToCheck>, boolean>;
|
type Permissions = Record<keyof ReturnType<typeof permissionsToCheck>, boolean>;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user