Merge branch 'develop' into feat/webhooks

* develop:
  standardize imports to use "@src/
  add code helper to action script
  fix nested ref values causing side drawer crash (#565)
This commit is contained in:
Sidney Alcantara
2021-10-29 11:49:04 +11:00
235 changed files with 967 additions and 736 deletions

View File

@@ -6,34 +6,34 @@ import AdapterDateFns from "@mui/lab/AdapterDateFns";
import { StyledEngineProvider } from "@mui/material/styles";
import "./space-grotesk.css";
import CustomBrowserRouter from "utils/CustomBrowserRouter";
import PrivateRoute from "utils/PrivateRoute";
import ErrorBoundary from "components/ErrorBoundary";
import Loading from "components/Loading";
import Navigation from "components/Navigation";
import Logo from "assets/Logo";
import CustomBrowserRouter from "@src/utils/CustomBrowserRouter";
import PrivateRoute from "@src/utils/PrivateRoute";
import ErrorBoundary from "@src/components/ErrorBoundary";
import Loading from "@src/components/Loading";
import Navigation from "@src/components/Navigation";
import Logo from "@src/assets/Logo";
import SwrProvider from "contexts/SwrContext";
import ConfirmationProvider from "components/ConfirmationDialog/Provider";
import { AppProvider } from "contexts/AppContext";
import { ProjectContextProvider } from "contexts/ProjectContext";
import { SnackbarProvider } from "contexts/SnackbarContext";
import { SnackLogProvider } from "contexts/SnackLogContext";
import routes from "constants/routes";
import SwrProvider from "@src/contexts/SwrContext";
import ConfirmationProvider from "@src/components/ConfirmationDialog/Provider";
import { AppProvider } from "@src/contexts/AppContext";
import { ProjectContextProvider } from "@src/contexts/ProjectContext";
import { SnackbarProvider } from "@src/contexts/SnackbarContext";
import { SnackLogProvider } from "@src/contexts/SnackLogContext";
import routes from "@src/constants/routes";
import AuthPage from "pages/Auth";
import SignOutPage from "pages/Auth/SignOut";
import SignUpPage from "pages/Auth/SignUp";
import DeployPage from "pages/Deploy";
import TestPage from "pages/Test";
import RowyRunTestPage from "pages/RowyRunTest";
import PageNotFound from "pages/PageNotFound";
import AuthPage from "@src/pages/Auth";
import SignOutPage from "@src/pages/Auth/SignOut";
import SignUpPage from "@src/pages/Auth/SignUp";
import DeployPage from "@src/pages/Deploy";
import TestPage from "@src/pages/Test";
import RowyRunTestPage from "@src/pages/RowyRunTest";
import PageNotFound from "@src/pages/PageNotFound";
import Favicon from "assets/Favicon";
import "analytics";
import Favicon from "@src/assets/Favicon";
import "@src/analytics";
// prettier-ignore
const AuthSetupGuidePage = lazy(() => import("pages/Auth/SetupGuide" /* webpackChunkName: "AuthSetupGuide" */));
const AuthSetupGuidePage = lazy(() => import("@src/pages/Auth/SetupGuide" /* webpackChunkName: "AuthSetupGuide" */));
// prettier-ignore
const ImpersonatorAuthPage = lazy(() => import("./pages/Auth/ImpersonatorAuth" /* webpackChunkName: "ImpersonatorAuthPage" */));
// prettier-ignore
@@ -51,7 +51,7 @@ const UserSettingsPage = lazy(() => import("./pages/Settings/UserSettings" /* we
// prettier-ignore
const UserManagementPage = lazy(() => import("./pages/Settings/UserManagement" /* webpackChunkName: "UserManagementPage" */));
// prettier-ignore
const SetupPage = lazy(() => import("pages/Setup" /* webpackChunkName: "SetupPage" */));
const SetupPage = lazy(() => import("@src/pages/Setup" /* webpackChunkName: "SetupPage" */));
export default function App() {
return (

View File

@@ -4,8 +4,8 @@ import { use100vh } from "react-div-100vh";
import { useTheme, alpha } from "@mui/material/styles";
import { Box, BoxProps } from "@mui/material";
import bgPattern from "assets/bg-pattern.svg";
import bgPatternDark from "assets/bg-pattern-dark.svg";
import bgPattern from "@src/assets/bg-pattern.svg";
import bgPatternDark from "@src/assets/bg-pattern-dark.svg";
export default function BrandedBackground() {
const theme = useTheme();

View File

@@ -7,11 +7,11 @@ import {
LinkProps,
} from "@mui/material";
import { alpha } from "@mui/material/styles";
import BrandedBackground, { Wrapper } from "assets/BrandedBackground";
import Logo from "assets/Logo";
import BrandedBackground, { Wrapper } from "@src/assets/BrandedBackground";
import Logo from "@src/assets/Logo";
import { useAppContext } from "contexts/AppContext";
import { EXTERNAL_LINKS } from "constants/externalLinks";
import { useAppContext } from "@src/contexts/AppContext";
import { EXTERNAL_LINKS } from "@src/constants/externalLinks";
export interface IAuthLayoutProps {
hideLogo?: boolean;

View File

@@ -11,7 +11,7 @@ import Skeleton from "@mui/material/Skeleton";
import { auth, db } from "@src/firebase";
import { defaultUiConfig, getSignInOptions } from "@src/firebase/firebaseui";
import { PUBLIC_SETTINGS } from "config/dbPaths";
import { PUBLIC_SETTINGS } from "@src/config/dbPaths";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -1,10 +1,10 @@
import { Stack, Paper, Typography, Button } from "@mui/material";
import { alpha } from "@mui/material/styles";
import DiscordIcon from "assets/icons/Discord";
import DiscordIcon from "@src/assets/icons/Discord";
import TwitterIcon from "@mui/icons-material/Twitter";
import Logo from "assets/Logo";
import { EXTERNAL_LINKS } from "constants/externalLinks";
import Logo from "@src/assets/Logo";
import { EXTERNAL_LINKS } from "@src/constants/externalLinks";
export default function MarketingBanner() {
return (

View File

@@ -1,5 +1,5 @@
import { Stack, Typography, Grid, Tooltip, Button } from "@mui/material";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
export interface ICodeEditorHelperProps {
docLink: string;

View File

@@ -6,11 +6,11 @@ import githubLightTheme from "./github-light-default.json";
import githubDarkTheme from "./github-dark-default.json";
import { useTheme, Box, BoxProps } from "@mui/material";
import CircularProgressOptical from "components/CircularProgressOptical";
import ResizeBottomRightIcon from "assets/icons/ResizeBottomRight";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
import ResizeBottomRightIcon from "@src/assets/icons/ResizeBottomRight";
import { useProjectContext } from "contexts/ProjectContext";
import { getFieldProp } from "components/fields";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { getFieldProp } from "@src/components/fields";
/* eslint-disable import/no-webpack-loader-syntax */
import firestoreDefs from "!!raw-loader!./firestore.d.ts";

View File

@@ -8,7 +8,7 @@ import DialogContent from "@mui/material/DialogContent";
import DialogContentText from "@mui/material/DialogContentText";
import DialogTitle from "@mui/material/DialogTitle";
import TextField from "@mui/material/TextField";
import { SlideTransitionMui } from "components/Modal/SlideTransition";
import { SlideTransitionMui } from "@src/components/Modal/SlideTransition";
const useStyles = makeStyles(() =>
createStyles({

View File

@@ -10,7 +10,7 @@ import {
Button,
} from "@mui/material";
import { SlideTransitionMui } from "components/Modal/SlideTransition";
import { SlideTransitionMui } from "@src/components/Modal/SlideTransition";
export default function Confirmation({
title,

View File

@@ -21,7 +21,7 @@ import SearchIcon from "@mui/icons-material/Search";
import { IConnectServiceSelectProps } from ".";
import useStyles from "./styles";
import Loading from "components/Loading";
import Loading from "@src/components/Loading";
export interface IPopupContentsProps
extends Omit<IConnectServiceSelectProps, "className" | "TextFieldProps"> {}

View File

@@ -3,8 +3,8 @@ import clsx from "clsx";
import { TextField, TextFieldProps } from "@mui/material";
import useStyles from "./styles";
import Loading from "components/Loading";
import ErrorBoundary from "components/ErrorBoundary";
import Loading from "@src/components/Loading";
import ErrorBoundary from "@src/components/ErrorBoundary";
const PopupContents = lazy(
() => import("./PopupContents" /* webpackChunkName: "PopupContents" */)

View File

@@ -3,7 +3,7 @@ import EmptyState, { IEmptyStateProps } from "./EmptyState";
import { Button } from "@mui/material";
import ReloadIcon from "@mui/icons-material/Refresh";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import meta from "@root/package.json";

View File

@@ -7,8 +7,8 @@ import {
} from "@mui/material";
import SearchIcon from "@mui/icons-material/Search";
import SlideTransition from "components/Modal/SlideTransition";
import { APP_BAR_HEIGHT } from "components/Navigation";
import SlideTransition from "@src/components/Modal/SlideTransition";
import { APP_BAR_HEIGHT } from "@src/components/Navigation";
export interface IFloatingSearchProps extends Partial<FilledTextFieldProps> {
label: string;

View File

@@ -3,10 +3,10 @@ import { Link } from "react-router-dom";
import { Typography, Link as MuiLink, Button } from "@mui/material";
import SecurityIcon from "@mui/icons-material/SecurityOutlined";
import EmptyState from "components/EmptyState";
import EmptyState from "@src/components/EmptyState";
import { WIKI_LINKS } from "constants/externalLinks";
import routes from "constants/routes";
import { WIKI_LINKS } from "@src/constants/externalLinks";
import routes from "@src/constants/routes";
import { useAppContext } from "@src/contexts/AppContext";
export default function AccessDenied() {

View File

@@ -8,9 +8,9 @@ import {
CardActions,
Button,
} from "@mui/material";
import GoIcon from "assets/icons/Go";
import GoIcon from "@src/assets/icons/Go";
import { Table } from "contexts/ProjectContext";
import { Table } from "@src/contexts/ProjectContext";
export interface ITableCardProps extends Table {
link: string;

View File

@@ -1,6 +1,6 @@
import { Container, Paper, Box, Grid } from "@mui/material";
import SectionHeadingSkeleton from "components/SectionHeadingSkeleton";
import SectionHeadingSkeleton from "@src/components/SectionHeadingSkeleton";
import TableCardSkeleton from "./TableCardSkeleton";
export default function TableGridSkeleton() {

View File

@@ -2,11 +2,11 @@ import { TransitionGroup } from "react-transition-group";
import { Box, Grid, Collapse } from "@mui/material";
import SectionHeading from "components/SectionHeading";
import SectionHeading from "@src/components/SectionHeading";
import TableCard from "./TableCard";
import SlideTransition from "components/Modal/SlideTransition";
import SlideTransition from "@src/components/Modal/SlideTransition";
import { Table } from "contexts/ProjectContext";
import { Table } from "@src/contexts/ProjectContext";
export interface ITableGridProps {
sections: Record<string, Table[]>;

View File

@@ -8,7 +8,7 @@ import {
} from "@mui/material";
import GoIcon from "@mui/icons-material/ArrowForward";
import { Table } from "contexts/ProjectContext";
import { Table } from "@src/contexts/ProjectContext";
export interface ITableListItemProps extends Table {
link: string;

View File

@@ -1,6 +1,6 @@
import { Container, Box, Paper } from "@mui/material";
import SectionHeadingSkeleton from "components/SectionHeadingSkeleton";
import SectionHeadingSkeleton from "@src/components/SectionHeadingSkeleton";
import TableListItemSkeleton from "./TableListItemSkeleton";
export default function TableGridSkeleton() {

View File

@@ -2,11 +2,11 @@ import { TransitionGroup } from "react-transition-group";
import { Box, Paper, Collapse, List } from "@mui/material";
import SectionHeading from "components/SectionHeading";
import SectionHeading from "@src/components/SectionHeading";
import TableListItem from "./TableListItem";
import SlideTransition from "components/Modal/SlideTransition";
import SlideTransition from "@src/components/Modal/SlideTransition";
import { Table } from "contexts/ProjectContext";
import { Table } from "@src/contexts/ProjectContext";
export interface ITableListProps {
sections: Record<string, Table[]>;

View File

@@ -1,7 +1,7 @@
import { use100vh } from "react-div-100vh";
import { Fade, Stack, StackProps, Typography } from "@mui/material";
import CircularProgressOptical from "components/CircularProgressOptical";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
interface ILoadingProps extends Partial<StackProps> {
message?: string;

View File

@@ -11,9 +11,9 @@ import {
} from "@mui/material";
import ArrowRightIcon from "@mui/icons-material/ChevronRight";
import { useProjectContext } from "contexts/ProjectContext";
import useRouter from "hooks/useRouter";
import routes from "constants/routes";
import { useProjectContext } from "@src/contexts/ProjectContext";
import useRouter from "@src/hooks/useRouter";
import routes from "@src/constants/routes";
export default function Breadcrumbs(props: BreadcrumbsProps) {
const { tables, tableState } = useProjectContext();

View File

@@ -15,18 +15,18 @@ import HomeIcon from "@mui/icons-material/HomeOutlined";
import SettingsIcon from "@mui/icons-material/SettingsOutlined";
import ProjectSettingsIcon from "@mui/icons-material/BuildCircleOutlined";
import UserManagementIcon from "@mui/icons-material/AccountCircleOutlined";
import CloseIcon from "assets/icons/Backburger";
import CloseIcon from "@src/assets/icons/Backburger";
import PinIcon from "@mui/icons-material/PushPinOutlined";
import UnpinIcon from "@mui/icons-material/PushPin";
import { APP_BAR_HEIGHT } from ".";
import Logo from "assets/Logo";
import Logo from "@src/assets/Logo";
import NavItem from "./NavItem";
import NavTableSection from "./NavTableSection";
import { useAppContext } from "contexts/AppContext";
import { useProjectContext } from "contexts/ProjectContext";
import { routes } from "constants/routes";
import { useAppContext } from "@src/contexts/AppContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { routes } from "@src/constants/routes";
export const NAV_DRAWER_WIDTH = 256;

View File

@@ -5,8 +5,8 @@ import { List, ListItemText, Collapse } from "@mui/material";
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
import NavItem from "./NavItem";
import { Table } from "contexts/ProjectContext";
import { routes } from "constants/routes";
import { Table } from "@src/contexts/ProjectContext";
import { routes } from "@src/constants/routes";
export interface INavDrawerItemProps {
open?: boolean;

View File

@@ -18,8 +18,8 @@ import {
import AccountCircleIcon from "@mui/icons-material/AccountCircleOutlined";
import ArrowRightIcon from "@mui/icons-material/ArrowRight";
import { useAppContext } from "contexts/AppContext";
import routes from "constants/routes";
import { useAppContext } from "@src/contexts/AppContext";
import routes from "@src/constants/routes";
export default function UserMenu(props: IconButtonProps) {
const anchorEl = useRef<HTMLButtonElement>(null);

View File

@@ -17,11 +17,11 @@ import MenuIcon from "@mui/icons-material/Menu";
import NavDrawer, { NAV_DRAWER_WIDTH } from "./NavDrawer";
import UserMenu from "./UserMenu";
import ErrorBoundary from "components/ErrorBoundary";
import Loading from "components/Loading";
import ErrorBoundary from "@src/components/ErrorBoundary";
import Loading from "@src/components/Loading";
import { useAppContext } from "contexts/AppContext";
import useDocumentTitle from "hooks/useDocumentTitle";
import { useAppContext } from "@src/contexts/AppContext";
import useDocumentTitle from "@src/hooks/useDocumentTitle";
export const APP_BAR_HEIGHT = 56;

View File

@@ -5,7 +5,7 @@ import { HashLink } from "react-router-hash-link";
import { Stack, StackProps, Typography, IconButton } from "@mui/material";
import LinkIcon from "@mui/icons-material/Link";
import { APP_BAR_HEIGHT } from "components/Navigation";
import { APP_BAR_HEIGHT } from "@src/components/Navigation";
export interface ISectionHeadingProps extends Omit<StackProps, "children"> {
children: string;

View File

@@ -5,15 +5,15 @@ import { differenceInDays } from "date-fns";
import { Grid, Typography, Button, Link, Divider } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import GitHubIcon from "@mui/icons-material/GitHub";
import DiscordIcon from "assets/icons/Discord";
import DiscordIcon from "@src/assets/icons/Discord";
import TwitterIcon from "@mui/icons-material/Twitter";
import Logo from "assets/Logo";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import Logo from "@src/assets/Logo";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import { name, version, repository } from "@root/package.json";
import { useAppContext } from "contexts/AppContext";
import { EXTERNAL_LINKS, WIKI_LINKS } from "constants/externalLinks";
import { useAppContext } from "@src/contexts/AppContext";
import { EXTERNAL_LINKS, WIKI_LINKS } from "@src/constants/externalLinks";
const useLastCheckedUpdateState = createPersistedState(
"__ROWY__LAST_CHECKED_UPDATE"

View File

@@ -4,9 +4,9 @@ import _startCase from "lodash/startCase";
import MultiSelect from "@rowy/multiselect";
import { Typography, Link } from "@mui/material";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import { IProjectSettingsChildProps } from "pages/Settings/ProjectSettings";
import { IProjectSettingsChildProps } from "@src/pages/Settings/ProjectSettings";
export default function Authentication({
publicSettings,

View File

@@ -1,13 +1,13 @@
import { lazy, Suspense, useState } from "react";
import { IProjectSettingsChildProps } from "pages/Settings/ProjectSettings";
import { IProjectSettingsChildProps } from "@src/pages/Settings/ProjectSettings";
import _merge from "lodash/merge";
import _unset from "lodash/unset";
import { FormControlLabel, Checkbox, Collapse } from "@mui/material";
import Loading from "components/Loading";
import Loading from "@src/components/Loading";
// prettier-ignore
const ThemeColorPicker = lazy(() => import("components/Settings/ThemeColorPicker") /* webpackChunkName: "Settings/ThemeColorPicker" */);
const ThemeColorPicker = lazy(() => import("@src/components/Settings/ThemeColorPicker") /* webpackChunkName: "Settings/ThemeColorPicker" */);
export default function Customization({
publicSettings,

View File

@@ -11,12 +11,12 @@ import {
TextField,
} from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import { IProjectSettingsChildProps } from "pages/Settings/ProjectSettings";
import { EXTERNAL_LINKS } from "constants/externalLinks";
import { IProjectSettingsChildProps } from "@src/pages/Settings/ProjectSettings";
import { EXTERNAL_LINKS } from "@src/constants/externalLinks";
import { name } from "@root/package.json";
import { runRoutes } from "constants/runRoutes";
import { runRoutes } from "@src/constants/runRoutes";
const useLastCheckedUpdateState = createPersistedState(
"__ROWY__RUN_LAST_CHECKED_UPDATE"

View File

@@ -1,7 +1,7 @@
import { Paper, PaperProps } from "@mui/material";
import SectionHeading from "components/SectionHeading";
import SlideTransition from "components/Modal/SlideTransition";
import SectionHeading from "@src/components/SectionHeading";
import SlideTransition from "@src/components/Modal/SlideTransition";
export interface ISettingsSectionProps {
children: React.ReactNode;

View File

@@ -6,7 +6,7 @@ import { useTheme, Grid, Typography, Stack, Box, Button } from "@mui/material";
import PassIcon from "@mui/icons-material/Check";
import FailIcon from "@mui/icons-material/Error";
import { PRIMARY, DARK_PRIMARY } from "theme/colors";
import { PRIMARY, DARK_PRIMARY } from "@src/theme/colors";
import themes from "theme";
import { colord, extend } from "colord";

View File

@@ -12,11 +12,11 @@ import {
import AddIcon from "@mui/icons-material/PersonAddOutlined";
import MultiSelect from "@rowy/multiselect";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
import { useProjectContext } from "contexts/ProjectContext";
import routes from "constants/routes";
import { runRoutes } from "constants/runRoutes";
import { useProjectContext } from "@src/contexts/ProjectContext";
import routes from "@src/constants/routes";
import { runRoutes } from "@src/constants/runRoutes";
export default function InviteUser() {
const { roles: projectRoles, rowyRun } = useProjectContext();

View File

@@ -10,17 +10,16 @@ import {
IconButton,
Typography,
} from "@mui/material";
import CopyIcon from "assets/icons/Copy";
import CopyIcon from "@src/assets/icons/Copy";
import DeleteIcon from "@mui/icons-material/DeleteOutlined";
import MultiSelect from "@rowy/multiselect";
import { User } from "pages/Settings/UserManagement";
import { User } from "@src/pages/Settings/UserManagement";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { runRoutes } from "constants/runRoutes";
import { runRoutes } from "@src/constants/runRoutes";
import { db } from "@src/firebase";
import { USERS } from "config/dbPaths";
import { useConfirmation } from "components/ConfirmationDialog";
import { analytics } from "@src/analytics";
import { USERS } from "@src/config/dbPaths";
import { useConfirmation } from "@src/components/ConfirmationDialog";
export default function UserItem({ id, user, roles: rolesProp }: User) {
const { enqueueSnackbar, closeSnackbar } = useSnackbar();

View File

@@ -1,9 +1,9 @@
import { IUserSettingsChildProps } from "pages/Settings/UserSettings";
import { IUserSettingsChildProps } from "@src/pages/Settings/UserSettings";
import { Link } from "react-router-dom";
import { Grid, Avatar, Typography, Button } from "@mui/material";
import routes from "constants/routes";
import routes from "@src/constants/routes";
export default function Account({ settings }: IUserSettingsChildProps) {
return (

View File

@@ -1,13 +1,13 @@
import { lazy, Suspense, useState } from "react";
import { IUserSettingsChildProps } from "pages/Settings/UserSettings";
import { IUserSettingsChildProps } from "@src/pages/Settings/UserSettings";
import _merge from "lodash/merge";
import _unset from "lodash/unset";
import { FormControlLabel, Checkbox, Collapse } from "@mui/material";
import Loading from "components/Loading";
import Loading from "@src/components/Loading";
// prettier-ignore
const ThemeColorPicker = lazy(() => import("components/Settings/ThemeColorPicker") /* webpackChunkName: "Settings/ThemeColorPicker" */);
const ThemeColorPicker = lazy(() => import("@src/components/Settings/ThemeColorPicker") /* webpackChunkName: "Settings/ThemeColorPicker" */);
export default function Personalization({
settings,

View File

@@ -1,4 +1,4 @@
import { IUserSettingsChildProps } from "pages/Settings/UserSettings";
import { IUserSettingsChildProps } from "@src/pages/Settings/UserSettings";
import _merge from "lodash/merge";
import {
@@ -10,7 +10,7 @@ import {
Checkbox,
} from "@mui/material";
import { useAppContext } from "contexts/AppContext";
import { useAppContext } from "@src/contexts/AppContext";
export default function Theme({
settings,

View File

@@ -1,7 +1,7 @@
import { Stack, Typography } from "@mui/material";
import CheckIcon from "@mui/icons-material/Check";
import ArrowIcon from "@mui/icons-material/ArrowForward";
import CircularProgressOptical from "components/CircularProgressOptical";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
export interface ISetupItemProps {
status: "complete" | "loading" | "incomplete";

View File

@@ -1,9 +1,9 @@
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import { FormControlLabel, Checkbox, Typography, Link } from "@mui/material";
import { useAppContext } from "contexts/AppContext";
import { EXTERNAL_LINKS } from "constants/externalLinks";
import { useAppContext } from "@src/contexts/AppContext";
import { EXTERNAL_LINKS } from "@src/constants/externalLinks";
export default function Step0Welcome({
completion,

View File

@@ -1,18 +1,18 @@
import { useState, useEffect } from "react";
import { useLocation, useHistory } from "react-router-dom";
import queryString from "query-string";
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import { Button, Typography, Stack, TextField } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import SetupItem from "./SetupItem";
import { name } from "@root/package.json";
import { rowyRun } from "utils/rowyRun";
import { runRoutes } from "constants/runRoutes";
import { EXTERNAL_LINKS } from "constants/externalLinks";
import { rowyRun } from "@src/utils/rowyRun";
import { runRoutes } from "@src/constants/runRoutes";
import { EXTERNAL_LINKS } from "@src/constants/externalLinks";
export default function Step1RowyRun({
completion,

View File

@@ -1,18 +1,18 @@
import { useState, useEffect } from "react";
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import { Typography, Link, Stack } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import SetupItem from "./SetupItem";
import { name } from "@root/package.json";
import { useAppContext } from "contexts/AppContext";
import { rowyRun } from "utils/rowyRun";
import { runRoutes } from "constants/runRoutes";
import { WIKI_LINKS } from "constants/externalLinks";
import screenRecording from "assets/service-account.mp4";
import { useAppContext } from "@src/contexts/AppContext";
import { rowyRun } from "@src/utils/rowyRun";
import { runRoutes } from "@src/constants/runRoutes";
import { WIKI_LINKS } from "@src/constants/externalLinks";
import screenRecording from "@src/assets/service-account.mp4";
export default function Step2ServiceAccount({
rowyRunUrl,

View File

@@ -1,17 +1,17 @@
import { useState, useEffect } from "react";
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import { Typography, Stack, Button, IconButton } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import SetupItem from "./SetupItem";
import SignInWithGoogle from "./SignInWithGoogle";
import { useAppContext } from "contexts/AppContext";
import { rowyRun } from "utils/rowyRun";
import { runRoutes } from "constants/runRoutes";
import CopyIcon from "assets/icons/Copy";
import { useAppContext } from "@src/contexts/AppContext";
import { rowyRun } from "@src/utils/rowyRun";
import { runRoutes } from "@src/constants/runRoutes";
import CopyIcon from "@src/assets/icons/Copy";
export default function Step3ProjectOwner({
rowyRunUrl,

View File

@@ -1,5 +1,5 @@
import { useState, useEffect } from "react";
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import {
Typography,
@@ -10,18 +10,18 @@ import {
TextField,
} from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import CopyIcon from "assets/icons/Copy";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import CopyIcon from "@src/assets/icons/Copy";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import SetupItem from "./SetupItem";
import { name } from "@root/package.json";
import { useAppContext } from "contexts/AppContext";
import { CONFIG } from "config/dbPaths";
import { requiredRules, adminRules, utilFns } from "config/firestoreRules";
import { rowyRun } from "utils/rowyRun";
import { runRoutes } from "constants/runRoutes";
import { useConfirmation } from "components/ConfirmationDialog";
import { useAppContext } from "@src/contexts/AppContext";
import { CONFIG } from "@src/config/dbPaths";
import { requiredRules, adminRules, utilFns } from "@src/config/firestoreRules";
import { rowyRun } from "@src/utils/rowyRun";
import { runRoutes } from "@src/constants/runRoutes";
import { useConfirmation } from "@src/components/ConfirmationDialog";
export default function Step4Rules({
rowyRunUrl,

View File

@@ -1,5 +1,5 @@
import { useState, useEffect } from "react";
import { ISetupStepBodyProps } from "pages/Setup";
import { ISetupStepBodyProps } from "@src/pages/Setup";
import { Typography, Button } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
@@ -7,10 +7,10 @@ import LoadingButton from "@mui/lab/LoadingButton";
import SetupItem from "./SetupItem";
import { name } from "@root/package.json";
import { useAppContext } from "contexts/AppContext";
import { CONFIG } from "config/dbPaths";
import { rowyRun } from "utils/rowyRun";
import { runRoutes } from "constants/runRoutes";
import { useAppContext } from "@src/contexts/AppContext";
import { CONFIG } from "@src/config/dbPaths";
import { rowyRun } from "@src/utils/rowyRun";
import { runRoutes } from "@src/constants/runRoutes";
export default function Step5Migrate({
rowyRunUrl,

View File

@@ -7,8 +7,8 @@ import _pickBy from "lodash/pickBy";
import { Control, UseFormReturn, useWatch } from "react-hook-form";
import { Values } from "./utils";
import { useProjectContext } from "contexts/ProjectContext";
import { TableState } from "hooks/useTable";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { TableState } from "@src/hooks/useTable";
export interface IAutosaveProps {
control: Control;

View File

@@ -1,16 +1,16 @@
import { Suspense } from "react";
import { Stack, InputLabel, Typography, IconButton } from "@mui/material";
import DocumentPathIcon from "assets/icons/DocumentPath";
import DocumentPathIcon from "@src/assets/icons/DocumentPath";
import LaunchIcon from "@mui/icons-material/Launch";
import LockIcon from "@mui/icons-material/LockOutlined";
import ErrorBoundary from "components/ErrorBoundary";
import ErrorBoundary from "@src/components/ErrorBoundary";
import FieldSkeleton from "./FieldSkeleton";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { useAppContext } from "contexts/AppContext";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import { useAppContext } from "@src/contexts/AppContext";
export interface IFieldWrapperProps {
children?: React.ReactNode;

View File

@@ -2,20 +2,19 @@ import { createElement, useEffect } from "react";
import { useForm } from "react-hook-form";
import _sortBy from "lodash/sortBy";
import _isEmpty from "lodash/isEmpty";
import _mapValues from "lodash/mapValues";
import firebase from "firebase/app";
import { Stack } from "@mui/material";
import { Values } from "./utils";
import { getFieldProp } from "components/fields";
import { IFieldConfig } from "components/fields/types";
import { getFieldProp } from "@src/components/fields";
import { IFieldConfig } from "@src/components/fields/types";
import Autosave from "./Autosave";
import Reset from "./Reset";
import FieldWrapper from "./FieldWrapper";
import { useAppContext } from "contexts/AppContext";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "@src/contexts/AppContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { sanitizeFirestoreRefs } from "@src/utils/fns";
export interface IFormProps {
values: Values;
@@ -38,13 +37,7 @@ export default function Form({ values }: IFormProps) {
{}
);
const { ref: docRef, ...rowValues } = values;
const safeRowValues = _mapValues(rowValues, (v) => {
// If react-hook-form receives a Firestore document reference, it tries to
// clone firebase.firestore and exceeds maximum call stack size.
if (firebase.firestore.DocumentReference.prototype.isPrototypeOf(v))
return v.path;
return v;
});
const safeRowValues = sanitizeFirestoreRefs(rowValues);
const defaultValues = { ...initialValues, ...safeRowValues };
const methods = useForm({ mode: "onBlur", defaultValues });

View File

@@ -1,6 +1,6 @@
import { Control } from "react-hook-form";
import { makeStyles, createStyles } from "@mui/styles";
import { FieldType } from "constants/fields";
import { FieldType } from "@src/constants/fields";
import { colord } from "colord";
export interface IFieldProps {

View File

@@ -10,11 +10,11 @@ import ChevronUpIcon from "@mui/icons-material/KeyboardArrowUp";
import ChevronDownIcon from "@mui/icons-material/KeyboardArrowDown";
import Form from "./Form";
import ErrorBoundary from "components/ErrorBoundary";
import ErrorBoundary from "@src/components/ErrorBoundary";
import { useStyles } from "./useStyles";
import { useProjectContext } from "contexts/ProjectContext";
import useDoc from "hooks/useDoc";
import { useProjectContext } from "@src/contexts/ProjectContext";
import useDoc from "@src/hooks/useDoc";
import { analytics } from "@src/analytics";
export const DRAWER_WIDTH = 512;

View File

@@ -1,7 +1,7 @@
import { makeStyles, createStyles } from "@mui/styles";
import { DRAWER_WIDTH, DRAWER_COLLAPSED_WIDTH } from "./index";
import { APP_BAR_HEIGHT } from "components/Navigation";
import { TABLE_HEADER_HEIGHT } from "components/Table/TableHeader";
import { APP_BAR_HEIGHT } from "@src/components/Navigation";
import { TABLE_HEADER_HEIGHT } from "@src/components/Table/TableHeader";
export const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -1,7 +1,7 @@
import { useState, Dispatch, SetStateAction, MutableRefObject } from "react";
import { Stack } from "@mui/material";
import CircularProgressOptical from "components/CircularProgressOptical";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
export interface ISnackbarProgressRef {
setProgress: Dispatch<SetStateAction<number>>;

View File

@@ -15,14 +15,14 @@ import {
MenuItem,
} from "@mui/material";
import CopyCellsIcon from "assets/icons/CopyCells";
import CopyCellsIcon from "@src/assets/icons/CopyCells";
import ClearSelectionIcon from "@mui/icons-material/IndeterminateCheckBox";
import DeleteIcon from "@mui/icons-material/DeleteForever";
import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp";
import { useConfirmation } from "components/ConfirmationDialog/Context";
import { useProjectContext } from "contexts/ProjectContext";
import { formatPath } from "utils/fns";
import { useConfirmation } from "@src/components/ConfirmationDialog/Context";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { formatPath } from "@src/utils/fns";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -2,7 +2,7 @@ import { styled } from "@mui/material/styles";
import ErrorIcon from "@mui/icons-material/ErrorOutline";
import WarningIcon from "@mui/icons-material/WarningAmber";
import RichTooltip from "components/RichTooltip";
import RichTooltip from "@src/components/RichTooltip";
const Root = styled("div", { shouldForwardProp: (prop) => prop !== "error" })(
({ theme, ...props }) => ({

View File

@@ -2,7 +2,7 @@ import { useRef } from "react";
import clsx from "clsx";
import { HeaderRendererProps } from "react-data-grid";
import { useDrag, useDrop, DragObjectWithType } from "react-dnd";
import useCombinedRefs from "hooks/useCombinedRefs";
import useCombinedRefs from "@src/hooks/useCombinedRefs";
import { makeStyles, createStyles } from "@mui/styles";
import {
@@ -17,10 +17,10 @@ import SortDescIcon from "@mui/icons-material/ArrowDownward";
import DropdownIcon from "@mui/icons-material/MoreHoriz";
import LockIcon from "@mui/icons-material/LockOutlined";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { useAppContext } from "contexts/AppContext";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import { useAppContext } from "@src/contexts/AppContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { TableOrder } from "@src/hooks/useTable";
const useStyles = makeStyles((theme) =>

View File

@@ -6,16 +6,17 @@ import Checkbox from "@mui/material/Checkbox";
import FormControlLabel from "@mui/material/FormControlLabel";
import { Typography, TextField, MenuItem, ListItemText } from "@mui/material";
import { getFieldProp } from "components/fields";
import FieldSkeleton from "components/SideDrawer/Form/FieldSkeleton";
import { getFieldProp } from "@src/components/fields";
import FieldSkeleton from "@src/components/SideDrawer/Form/FieldSkeleton";
import CodeEditorHelper from "@src/components/CodeEditor/CodeEditorHelper";
import FormAutosave from "./FormAutosave";
import { FieldType } from "constants/fields";
import { WIKI_LINKS } from "constants/externalLinks";
import { FieldType } from "@src/constants/fields";
import { WIKI_LINKS } from "@src/constants/externalLinks";
import { name } from "@root/package.json";
const CodeEditor = lazy(
() => import("components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
() =>
import("@src/components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
);
export interface IDefaultValueInputProps extends IMenuModalProps {

View File

@@ -4,16 +4,16 @@ import { IMenuModalProps } from "..";
import { Typography, Stack } from "@mui/material";
import Modal from "components/Modal";
import { getFieldProp } from "components/fields";
import Modal from "@src/components/Modal";
import { getFieldProp } from "@src/components/fields";
import DefaultValueInput from "./DefaultValueInput";
import ErrorBoundary from "components/ErrorBoundary";
import Loading from "components/Loading";
import ErrorBoundary from "@src/components/ErrorBoundary";
import Loading from "@src/components/Loading";
import { useProjectContext } from "contexts/ProjectContext";
import { useConfirmation } from "components/ConfirmationDialog";
import { FieldType } from "constants/fields";
import { runRoutes } from "constants/runRoutes";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useConfirmation } from "@src/components/ConfirmationDialog";
import { FieldType } from "@src/constants/fields";
import { runRoutes } from "@src/constants/runRoutes";
export default function FieldSettings(props: IMenuModalProps) {
const { name, fieldName, type, open, config, handleClose, handleSave } =

View File

@@ -1,9 +1,9 @@
import MultiSelect from "@rowy/multiselect";
import { ListItemIcon } from "@mui/material";
import { FIELDS } from "components/fields";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { FIELDS } from "@src/components/fields";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
export interface IFieldsDropdownProps {
value: FieldType;

View File

@@ -3,7 +3,7 @@ import { IMenuModalProps } from ".";
import { TextField } from "@mui/material";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
export default function NameChange({
name,

View File

@@ -4,13 +4,13 @@ import { IMenuModalProps } from ".";
import { TextField, Typography, Button } from "@mui/material";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
import FieldsDropdown from "./FieldsDropdown";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import { analytics } from "analytics";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
export interface INewColumnProps extends IMenuModalProps {
data: Record<string, any>;

View File

@@ -1,7 +1,7 @@
import { useState } from "react";
import { IMenuModalProps } from ".";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
import FieldsDropdown from "./FieldsDropdown";
import { analytics } from "analytics";
export default function FormDialog({

View File

@@ -11,32 +11,32 @@ import LockOpenIcon from "@mui/icons-material/LockOpen";
import LockIcon from "@mui/icons-material/LockOutlined";
// import VisibilityOffIcon from "@mui/icons-material/VisibilityOffOutlined";
// import VisibilityIcon from "@mui/icons-material/VisibilityOutlined";
import FreezeIcon from "assets/icons/Freeze";
import UnfreezeIcon from "assets/icons/Unfreeze";
import CellResizeIcon from "assets/icons/CellResize";
import FreezeIcon from "@src/assets/icons/Freeze";
import UnfreezeIcon from "@src/assets/icons/Unfreeze";
import CellResizeIcon from "@src/assets/icons/CellResize";
import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward";
import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward";
import EditIcon from "@mui/icons-material/EditOutlined";
// import ReorderIcon from "@mui/icons-material/Reorder";
import SettingsIcon from "@mui/icons-material/SettingsOutlined";
import ColumnPlusBeforeIcon from "assets/icons/ColumnPlusBefore";
import ColumnPlusAfterIcon from "assets/icons/ColumnPlusAfter";
import ColumnRemoveIcon from "assets/icons/ColumnRemove";
import ColumnPlusBeforeIcon from "@src/assets/icons/ColumnPlusBefore";
import ColumnPlusAfterIcon from "@src/assets/icons/ColumnPlusAfter";
import ColumnRemoveIcon from "@src/assets/icons/ColumnRemove";
import MenuContents from "./MenuContents";
import NameChange from "./NameChange";
import NewColumn from "./NewColumn";
import TypeChange from "./TypeChange";
import FieldSettings from "./FieldSettings";
import ColumnHeader from "components/Wizards/Column";
import ColumnHeader from "@src/components/Wizards/Column";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import { Column } from "react-data-grid";
import { PopoverProps } from "@mui/material";
import { useConfirmation } from "components/ConfirmationDialog";
import { useConfirmation } from "@src/components/ConfirmationDialog";
const INITIAL_MODAL = { type: "", data: {} };

View File

@@ -1,12 +1,12 @@
import { Grid, Stack, Typography, Button, Divider } from "@mui/material";
import ImportIcon from "assets/icons/Import";
import AddColumnIcon from "assets/icons/AddColumn";
import ImportIcon from "@src/assets/icons/Import";
import AddColumnIcon from "@src/assets/icons/AddColumn";
import { APP_BAR_HEIGHT } from "components/Navigation";
import { APP_BAR_HEIGHT } from "@src/components/Navigation";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import ColumnMenu from "./ColumnMenu";
import ImportWizard from "components/Wizards/ImportWizard";
import ImportWizard from "@src/components/Wizards/ImportWizard";
import ImportCSV from "./TableHeader/ImportCsv";
export default function EmptyTable() {

View File

@@ -17,16 +17,16 @@ import {
import FilterIcon from "@mui/icons-material/FilterList";
import CloseIcon from "@mui/icons-material/Close";
import ButtonWithStatus from "components/ButtonWithStatus";
import FormAutosave from "components/Table/ColumnMenu/FieldSettings/FormAutosave";
import FieldSkeleton from "components/SideDrawer/Form/FieldSkeleton";
import ButtonWithStatus from "@src/components/ButtonWithStatus";
import FormAutosave from "@src/components/Table/ColumnMenu/FieldSettings/FormAutosave";
import FieldSkeleton from "@src/components/SideDrawer/Form/FieldSkeleton";
import { FieldType } from "constants/fields";
import { TableFilter } from "hooks/useTable";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "contexts/AppContext";
import { DocActions } from "hooks/useDoc";
import { getFieldProp } from "components/fields";
import { FieldType } from "@src/constants/fields";
import { TableFilter } from "@src/hooks/useTable";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useAppContext } from "@src/contexts/AppContext";
import { DocActions } from "@src/hooks/useDoc";
import { getFieldProp } from "@src/components/fields";
const getType = (column) =>
column.type === FieldType.derivative

View File

@@ -2,9 +2,9 @@ import { Column } from "react-data-grid";
import { makeStyles, createStyles } from "@mui/styles";
import { Grid, Button } from "@mui/material";
import AddColumnIcon from "assets/icons/AddColumn";
import AddColumnIcon from "@src/assets/icons/AddColumn";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -6,12 +6,12 @@ import { makeStyles, createStyles } from "@mui/styles";
import VisibilityOffIcon from "@mui/icons-material/VisibilityOffOutlined";
import MultiSelect from "@rowy/multiselect";
import ButtonWithStatus from "components/ButtonWithStatus";
import Column from "components/Wizards/Column";
import ButtonWithStatus from "@src/components/ButtonWithStatus";
import Column from "@src/components/Wizards/Column";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "contexts/AppContext";
import { DocActions } from "hooks/useDoc";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useAppContext } from "@src/contexts/AppContext";
import { DocActions } from "@src/hooks/useDoc";
import { formatSubTableName } from "../../utils/fns";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -1,6 +1,6 @@
import useHotkeys from "../../hooks/useHotkeys";
import { FieldType } from "constants/fields";
import { useAppContext } from "contexts/AppContext";
import { FieldType } from "@src/constants/fields";
import { useAppContext } from "@src/contexts/AppContext";
// TODO: Hook up to ProjectContext
const onSubmit: any = () => () => {};

View File

@@ -0,0 +1,186 @@
import React, { useState, useEffect } from "react";
import { makeStyles, createStyles } from "@mui/styles";
import Button from "@mui/material/Button";
import Dialog, { DialogProps } from "@mui/material/Dialog";
import DialogActions from "@mui/material/DialogActions";
import DialogContent from "@mui/material/DialogContent";
import DialogTitle from "@mui/material/DialogTitle";
import FormControl from "@mui/material/FormControl";
import Typography from "@mui/material/Typography";
import FormControlLabel from "@mui/material/FormControlLabel";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import Select from "@mui/material/Select";
import Switch from "@mui/material/Switch";
// import CodeEditor from "../editors/CodeEditor";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { makeId } from "../../../utils/fns";
const useStyles = makeStyles((theme) =>
createStyles({
form: {
display: "flex",
flexDirection: "column",
margin: "auto",
width: "fit-content",
},
formControl: {
marginTop: theme.spacing(2),
minWidth: 120,
},
formControlLabel: {
marginTop: theme.spacing(1),
},
})
);
enum WebhookTypes {
custom = "CUSTOM",
typeForm = "TYPE_FORM",
}
const EmptyState = {
enabled: false,
type: WebhookTypes.custom,
secret: "",
customParser: "",
};
export default function WebhooksDialog({ open, handleClose }) {
const classes = useStyles();
const { tableState, tableActions } = useProjectContext();
const [state, setState] = useState<{
enabled: boolean;
type: WebhookTypes;
secret: string;
customParser: string;
}>(EmptyState);
const tableFields = Object.keys(tableState?.columns as any);
const fullWidth = true;
const maxWidth: DialogProps["maxWidth"] = "xl";
const handleChange = (key: string) => (value: any) => {
setState((s) => ({ ...s, [key]: value }));
};
const initializeWebhooksConfig = () => {
const secret = makeId(32);
handleChange("secret")(secret);
setState({ ...EmptyState, secret });
tableActions?.table.updateConfig("webhooks", {
enabled: false,
type: WebhookTypes.custom,
secret,
customParser: "", // TODO: add a boilerplate/example
});
};
useEffect(() => {
if (
tableState &&
!tableState.config.tableConfig.loading &&
!tableState?.config.webhooks &&
!state.secret
) {
initializeWebhooksConfig();
} else if (tableState?.config.webhooks) {
setState({ ...tableState?.config.webhooks });
}
}, [tableState?.config]);
const handleWebhookTypeChange = (
event: React.ChangeEvent<{ value: unknown }>
) => {
handleChange("type")(event.target.value as WebhookTypes);
};
const handleSave = async () => {
handleClose();
await tableActions?.table.updateConfig("webhooks", {
...state,
});
};
const handleCancel = () => {
handleClose();
setState({ ...tableState?.config.webhooks });
};
return (
<React.Fragment>
<Dialog
fullWidth={fullWidth}
maxWidth={maxWidth}
open={open}
onClose={handleClose}
aria-labelledby="max-width-dialog-title"
>
<DialogTitle id="max-width-dialog-title">Webhooks</DialogTitle>
<DialogContent>
<FormControl className={classes.formControl}>
<FormControlLabel
control={<Switch />}
label={"Enable webhooks for this table"}
labelPlacement="end"
checked={state.enabled}
onChange={() => {
handleChange("enabled")(!state.enabled);
}}
sx={{
alignItems: "center",
"& .MuiFormControlLabel-label": { mt: 0 },
}}
// classes={{ root: classes.formControlLabel, label: classes.label }}
/>
<InputLabel htmlFor="webhook-type">Webhook type</InputLabel>
<Select
autoFocus
value={state.type}
onChange={handleWebhookTypeChange as any}
inputProps={{
name: "webhook-type",
id: "webhook-type",
}}
>
<MenuItem value={WebhookTypes.typeForm}>Typeform</MenuItem>
<MenuItem value={WebhookTypes.custom}>Custom</MenuItem>
</Select>
</FormControl>
{/* {state.type === WebhookTypes.custom && (
<CodeEditor
script={state.customParser}
handleChange={handleChange("customParser")}
/>
)} */}
<br />
{state.type === WebhookTypes.typeForm && (
<>
<Typography variant="overline">Web hook url:</Typography>
<Typography variant="body1">
{/* {WEBHOOK_URL}?tablePath={tableState?.tablePath}
&type=TYPE_FORM&secret={state.secret} */}
</Typography>
<Typography variant="overline">instructions:</Typography>
<Typography variant="body1">
please set the question reference in typeform to the following
field keys :{" "}
{tableFields.map((key) => (
<>
{" "}
<b key={key}>{key}</b>,
</>
))}
</Typography>
</>
)}
</DialogContent>
<DialogActions>
<Button onClick={handleSave} color="primary">
Save
</Button>
<Button onClick={handleCancel} color="primary">
Cancel
</Button>
</DialogActions>
</Dialog>
</React.Fragment>
);
}

View File

@@ -1,5 +1,5 @@
import { Fade, Stack, Skeleton, Button } from "@mui/material";
import AddColumnIcon from "assets/icons/AddColumn";
import AddColumnIcon from "@src/assets/icons/AddColumn";
const NUM_CELLS = 5;

View File

@@ -1,8 +1,8 @@
import { Fade, Stack, Button } from "@mui/material";
import Skeleton from "@mui/material/Skeleton";
import AddRowIcon from "assets/icons/AddRow";
import AddRowIcon from "@src/assets/icons/AddRow";
import { TABLE_HEADER_HEIGHT } from "components/Table/TableHeader";
import { TABLE_HEADER_HEIGHT } from "@src/components/Table/TableHeader";
const ButtonSkeleton = (props) => (
<Skeleton variant="rect" {...props} sx={{ borderRadius: 1, ...props.sx }} />

View File

@@ -17,13 +17,13 @@ import {
Checkbox,
} from "@mui/material";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import SnackbarProgress, {
ISnackbarProgressRef,
} from "components/SnackbarProgress";
} from "@src/components/SnackbarProgress";
import { FieldType } from "constants/fields";
import { hasDataTypes } from "components/fields";
import { FieldType } from "@src/constants/fields";
import { hasDataTypes } from "@src/components/fields";
const DOWNLOADABLE_COLUMNS = [FieldType.image, FieldType.file];
const LABEL_COLUMNS = hasDataTypes(["string", "number"]);

View File

@@ -11,9 +11,9 @@ import MultiSelect from "@rowy/multiselect";
import { Button, DialogActions } from "@mui/material";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import { analytics } from "@src/analytics";
const selectedColumnsJsonReducer =

View File

@@ -7,15 +7,15 @@ import TabList from "@mui/lab/TabList";
import TabPanel from "@mui/lab/TabPanel";
import TableHeaderButton from "../TableHeaderButton";
import ExportIcon from "assets/icons/Export";
import ExportIcon from "@src/assets/icons/Export";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
import ExportDetails from "./Export";
import DownloadDetails from "./Download";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { db } from "../../../../firebase";
import { isCollectionGroup } from "utils/fns";
import { isCollectionGroup } from "@src/utils/fns";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -17,19 +17,19 @@ import {
Typography,
} from "@mui/material";
import AddIcon from "@mui/icons-material/Add";
import ExtensionIcon from "assets/icons/Extension";
import DuplicateIcon from "assets/icons/Copy";
import ExtensionIcon from "@src/assets/icons/Extension";
import DuplicateIcon from "@src/assets/icons/Copy";
import EditIcon from "@mui/icons-material/EditOutlined";
import DeleteIcon from "@mui/icons-material/DeleteOutlined";
import EmptyState from "components/EmptyState";
import EmptyState from "@src/components/EmptyState";
import {
extensionTypes,
extensionNames,
IExtension,
ExtensionType,
} from "./utils";
import { DATE_TIME_FORMAT } from "constants/dates";
import { DATE_TIME_FORMAT } from "@src/constants/dates";
export interface IExtensionListProps {
extensions: IExtension[];

View File

@@ -4,14 +4,14 @@ import firebase from "firebase/app";
import { Button, Link, Typography } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
import DownloadIcon from "@mui/icons-material/FileDownloadOutlined";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import GoIcon from "@mui/icons-material/ChevronRight";
import Modal from "components/Modal";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "contexts/AppContext";
import Modal from "@src/components/Modal";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useAppContext } from "@src/contexts/AppContext";
import { sparkToExtensionObjects } from "./utils";
import { WIKI_LINKS } from "constants/externalLinks";
import { WIKI_LINKS } from "@src/constants/externalLinks";
export interface IExtensionMigrationProps {
handleClose: () => void;

View File

@@ -16,18 +16,18 @@ import {
Link,
} from "@mui/material";
import ExpandIcon from "@mui/icons-material/KeyboardArrowDown";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import Modal, { IModalProps } from "components/Modal";
import Modal, { IModalProps } from "@src/components/Modal";
import Step1Triggers from "./Step1Triggers";
import Step2RequiredFields from "./Step2RequiredFields";
import Step3Conditions from "./Step3Conditions";
import Step4Body from "./Step4Body";
import { useConfirmation } from "components/ConfirmationDialog";
import { useConfirmation } from "@src/components/ConfirmationDialog";
import { extensionNames, IExtension } from "./utils";
import { WIKI_LINKS } from "constants/externalLinks";
import { WIKI_LINKS } from "@src/constants/externalLinks";
type StepValidation = Record<"condition" | "extensionBody", boolean>;
export interface IExtensionModalStepProps {

View File

@@ -4,9 +4,9 @@ import _sortBy from "lodash/sortBy";
import MultiSelect from "@rowy/multiselect";
import { ListItemIcon } from "@mui/material";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
export default function Step2RequiredFields({
extensionObject,

View File

@@ -2,12 +2,13 @@ import { lazy, Suspense } from "react";
import { IExtensionModalStepProps } from "./ExtensionModal";
import useStateRef from "react-usestateref";
import FieldSkeleton from "components/SideDrawer/Form/FieldSkeleton";
import FieldSkeleton from "@src/components/SideDrawer/Form/FieldSkeleton";
import CodeEditorHelper from "@src/components/CodeEditor/CodeEditorHelper";
import { WIKI_LINKS } from "constants/externalLinks";
import { WIKI_LINKS } from "@src/constants/externalLinks";
const CodeEditor = lazy(
() => import("components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
() =>
import("@src/components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
);
const additionalVariables = [

View File

@@ -3,13 +3,14 @@ import { IExtensionModalStepProps } from "./ExtensionModal";
import _upperFirst from "lodash/upperFirst";
import useStateRef from "react-usestateref";
import FieldSkeleton from "components/SideDrawer/Form/FieldSkeleton";
import FieldSkeleton from "@src/components/SideDrawer/Form/FieldSkeleton";
import CodeEditorHelper from "@src/components/CodeEditor/CodeEditorHelper";
import { WIKI_LINKS } from "constants/externalLinks";
import { WIKI_LINKS } from "@src/constants/externalLinks";
const CodeEditor = lazy(
() => import("components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
() =>
import("@src/components/CodeEditor" /* webpackChunkName: "CodeEditor" */)
);
const additionalVariables = [

View File

@@ -4,19 +4,19 @@ import _isEqual from "lodash/isEqual";
import { Breadcrumbs } from "@mui/material";
import TableHeaderButton from "../TableHeaderButton";
import ExtensionIcon from "assets/icons/Extension";
import Modal from "components/Modal";
import ExtensionIcon from "@src/assets/icons/Extension";
import Modal from "@src/components/Modal";
import ExtensionList from "./ExtensionList";
import ExtensionModal from "./ExtensionModal";
import ExtensionMigration from "./ExtensionMigration";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "contexts/AppContext";
import { useConfirmation } from "components/ConfirmationDialog";
import { useSnackLogContext } from "contexts/SnackLogContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { useAppContext } from "@src/contexts/AppContext";
import { useConfirmation } from "@src/components/ConfirmationDialog";
import { useSnackLogContext } from "@src/contexts/SnackLogContext";
import { emptyExtensionObject, IExtension, ExtensionType } from "./utils";
import { runRoutes } from "constants/runRoutes";
import { runRoutes } from "@src/constants/runRoutes";
import { analytics } from "@src/analytics";
export default function Extensions() {

View File

@@ -21,14 +21,14 @@ import TabList from "@mui/lab/TabList";
import TabPanel from "@mui/lab/TabPanel";
import TableHeaderButton from "./TableHeaderButton";
import ImportIcon from "assets/icons/Import";
import ImportIcon from "@src/assets/icons/Import";
import FileUploadIcon from "assets/icons/Upload";
import FileUploadIcon from "@src/assets/icons/Upload";
import CheckIcon from "@mui/icons-material/CheckCircle";
import ImportCsvWizard, {
IImportCsvWizardProps,
} from "components/Wizards/ImportCsvWizard";
} from "@src/components/Wizards/ImportCsvWizard";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -1,7 +1,7 @@
import { Tooltip, Typography } from "@mui/material";
import { useProjectContext } from "contexts/ProjectContext";
import { CAP } from "hooks/useTable/useTableData";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { CAP } from "@src/hooks/useTable/useTableData";
export default function LoadedRowsStatus() {
const { tableState } = useProjectContext();

View File

@@ -3,12 +3,12 @@ import { useState } from "react";
import TableHeaderButton from "./TableHeaderButton";
import LoopIcon from "@mui/icons-material/Loop";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { db } from "../../../firebase";
import { isCollectionGroup } from "utils/fns";
import CircularProgressOptical from "components/CircularProgressOptical";
import { isCollectionGroup } from "@src/utils/fns";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
export default function ReExecute() {
const [open, setOpen] = useState(false);

View File

@@ -1,10 +1,10 @@
import { useRef, useState } from "react";
import { useTheme, TextField, ListSubheader, MenuItem } from "@mui/material";
import RowHeightIcon from "assets/icons/RowHeight";
import RowHeightIcon from "@src/assets/icons/RowHeight";
import TableHeaderButton from "./TableHeaderButton";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
const ROW_HEIGHTS = [33, 41, 65, 97, 129, 161];

View File

@@ -1,10 +1,10 @@
import React, { useEffect, useRef, useState } from "react";
import useRouter from "hooks/useRouter";
import useCollection from "hooks/useCollection";
import { useProjectContext } from "contexts/ProjectContext";
import useRouter from "@src/hooks/useRouter";
import useCollection from "@src/hooks/useCollection";
import { useProjectContext } from "@src/contexts/ProjectContext";
import useStateRef from "react-usestateref";
import { useSnackLogContext } from "contexts/SnackLogContext";
import { isCollectionGroup } from "utils/fns";
import { useSnackLogContext } from "@src/contexts/SnackLogContext";
import { isCollectionGroup } from "@src/utils/fns";
import _throttle from "lodash/throttle";
import { format } from "date-fns";
import moment from "moment";
@@ -19,9 +19,9 @@ import {
IconButton,
Button,
} from "@mui/material";
import Modal from "components/Modal";
import Modal from "@src/components/Modal";
import { makeStyles, createStyles } from "@mui/styles";
import LogsIcon from "assets/icons/CloudLogs";
import LogsIcon from "@src/assets/icons/CloudLogs";
import SuccessIcon from "@mui/icons-material/CheckCircle";
import FailIcon from "@mui/icons-material/Cancel";
import ExpandIcon from "@mui/icons-material/ExpandLess";
@@ -30,13 +30,17 @@ import OpenIcon from "@mui/icons-material/OpenInNew";
import CloseIcon from "@mui/icons-material/Close";
import TableHeaderButton from "./TableHeaderButton";
import Ansi from "ansi-to-react";
import EmptyState from "components/EmptyState";
import CircularProgressOptical from "components/CircularProgressOptical";
import EmptyState from "@src/components/EmptyState";
import CircularProgressOptical from "@src/components/CircularProgressOptical";
import PropTypes from "prop-types";
import routes from "constants/routes";
import { DATE_TIME_FORMAT } from "constants/dates";
import { SETTINGS, TABLE_SCHEMAS, TABLE_GROUP_SCHEMAS } from "config/dbPaths";
import routes from "@src/constants/routes";
import { DATE_TIME_FORMAT } from "@src/constants/dates";
import {
SETTINGS,
TABLE_SCHEMAS,
TABLE_GROUP_SCHEMAS,
} from "@src/config/dbPaths";
function a11yProps(index) {
return {

View File

@@ -6,8 +6,8 @@ import SettingsIcon from "@mui/icons-material/SettingsOutlined";
import TableSettingsDialog, {
TableSettingsDialogModes,
} from "components/TableSettings";
import { useProjectContext } from "contexts/ProjectContext";
} from "@src/components/TableSettings";
import { useProjectContext } from "@src/contexts/ProjectContext";
export default function TableSettings() {
const [open, setOpen] = useState(false);

View File

@@ -1,7 +1,7 @@
import { Stack, Button } from "@mui/material";
import { isCollectionGroup } from "utils/fns";
import AddRowIcon from "assets/icons/AddRow";
import { isCollectionGroup } from "@src/utils/fns";
import AddRowIcon from "@src/assets/icons/AddRow";
import Filters from "../Filters";
import ImportCSV from "./ImportCsv";
@@ -15,9 +15,9 @@ import Extensions from "./Extensions";
import Webhooks from "./Webhooks";
import ReExecute from "./ReExecute";
import { useAppContext } from "contexts/AppContext";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "constants/fields";
import { useAppContext } from "@src/contexts/AppContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
export const TABLE_HEADER_HEIGHT = 44;

View File

@@ -3,9 +3,9 @@ import { EditorProps } from "react-data-grid";
import { TextField } from "@mui/material";
import { FieldType } from "constants/fields";
import { getCellValue } from "utils/fns";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { getCellValue } from "@src/utils/fns";
import { useProjectContext } from "@src/contexts/ProjectContext";
export default function TextEditor({ row, column }: EditorProps<any>) {
const { updateCell } = useProjectContext();

View File

@@ -1,7 +1,7 @@
import { EditorProps } from "react-data-grid";
import { IHeavyCellProps } from "components/fields/types";
import { IHeavyCellProps } from "@src/components/fields/types";
import { getCellValue } from "utils/fns";
import { getCellValue } from "@src/utils/fns";
/**
* Allow the cell to be editable, but disable react-data-grids default

View File

@@ -1,9 +1,9 @@
import { useEffect } from "react";
import { EditorProps } from "react-data-grid";
import { useProjectContext } from "contexts/ProjectContext";
import { IHeavyCellProps } from "components/fields/types";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { IHeavyCellProps } from "@src/components/fields/types";
import { getCellValue } from "utils/fns";
import { getCellValue } from "@src/utils/fns";
/**
* Allow the cell to be editable, but disable react-data-grids default

View File

@@ -1,5 +1,5 @@
import { Grid } from "@mui/material";
import { useProjectContext } from "contexts/ProjectContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
export default function ChipList({ children }: React.PropsWithChildren<{}>) {
const { tableState } = useProjectContext();

View File

@@ -2,12 +2,12 @@ import { FormatterProps } from "react-data-grid";
import { makeStyles, createStyles } from "@mui/styles";
import { Stack, Tooltip, IconButton, alpha } from "@mui/material";
import CopyCellsIcon from "assets/icons/CopyCells";
import CopyCellsIcon from "@src/assets/icons/CopyCells";
import DeleteIcon from "@mui/icons-material/DeleteOutlined";
import { useConfirmation } from "components/ConfirmationDialog/Context";
import { useProjectContext } from "contexts/ProjectContext";
import useKeyPress from "hooks/useKeyPress";
import { useConfirmation } from "@src/components/ConfirmationDialog/Context";
import { useProjectContext } from "@src/contexts/ProjectContext";
import useKeyPress from "@src/hooks/useKeyPress";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -14,7 +14,7 @@ import DataGrid, {
SelectColumn as _SelectColumn,
} from "react-data-grid";
import Loading from "components/Loading";
import Loading from "@src/components/Loading";
import TableHeader from "./TableHeader";
import ColumnHeader from "./ColumnHeader";
import ColumnMenu from "./ColumnMenu";
@@ -22,13 +22,13 @@ import FinalColumnHeader from "./FinalColumnHeader";
import FinalColumn from "./formatters/FinalColumn";
// import BulkActions from "./BulkActions";
import { getFieldProp } from "components/fields";
import { FieldType } from "constants/fields";
import { formatSubTableName } from "utils/fns";
import { getFieldProp } from "@src/components/fields";
import { FieldType } from "@src/constants/fields";
import { formatSubTableName } from "@src/utils/fns";
import { useAppContext } from "contexts/AppContext";
import { useProjectContext } from "contexts/ProjectContext";
import useWindowSize from "hooks/useWindowSize";
import { useAppContext } from "@src/contexts/AppContext";
import { useProjectContext } from "@src/contexts/ProjectContext";
import useWindowSize from "@src/hooks/useWindowSize";
import useStyles from "./styles";
export type TableColumn = Column<any> & {

View File

@@ -1,7 +1,7 @@
import { makeStyles, createStyles } from "@mui/styles";
import { alpha, darken, lighten } from "@mui/material";
import { APP_BAR_HEIGHT } from "components/Navigation";
import { DRAWER_COLLAPSED_WIDTH } from "components/SideDrawer";
import { APP_BAR_HEIGHT } from "@src/components/Navigation";
import { DRAWER_COLLAPSED_WIDTH } from "@src/components/SideDrawer";
import { colord, extend } from "colord";
import mixPlugin from "colord/plugins/lch";

View File

@@ -9,7 +9,7 @@ import {
Grid,
Button,
} from "@mui/material";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import InlineOpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import { IFieldComponentProps } from "@rowy/form-builder";
import { useAppContext } from "@src/contexts/AppContext";

View File

@@ -2,12 +2,12 @@ import { Field, FieldType } from "@rowy/form-builder";
import { TableSettingsDialogModes } from "./index";
import { Link, Typography } from "@mui/material";
import OpenInNewIcon from "components/InlineOpenInNewIcon";
import OpenInNewIcon from "@src/components/InlineOpenInNewIcon";
import WarningIcon from "@mui/icons-material/WarningAmber";
import { WIKI_LINKS } from "constants/externalLinks";
import { WIKI_LINKS } from "@src/constants/externalLinks";
import { name } from "@root/package.json";
import { FieldType as TableFieldType } from "constants/fields";
import { FieldType as TableFieldType } from "@src/constants/fields";
export const tableSettings = (
mode: TableSettingsDialogModes | null,

View File

@@ -8,15 +8,19 @@ import { FormDialog } from "@rowy/form-builder";
import { tableSettings } from "./form";
import CamelCaseId from "./CamelCaseId";
import SuggestedRules from "./SuggestedRules";
import Confirmation from "components/Confirmation";
import Confirmation from "@src/components/Confirmation";
import { useProjectContext, Table } from "contexts/ProjectContext";
import useRouter from "hooks/useRouter";
import { routes } from "constants/routes";
import { useProjectContext, Table } from "@src/contexts/ProjectContext";
import useRouter from "@src/hooks/useRouter";
import { routes } from "@src/constants/routes";
import { db } from "@src/firebase";
import { name } from "@root/package.json";
import { SETTINGS, TABLE_SCHEMAS, TABLE_GROUP_SCHEMAS } from "config/dbPaths";
import { runRoutes } from "constants/runRoutes";
import {
SETTINGS,
TABLE_SCHEMAS,
TABLE_GROUP_SCHEMAS,
} from "@src/config/dbPaths";
import { runRoutes } from "@src/constants/runRoutes";
import { analytics } from "@src/analytics";
export enum TableSettingsDialogModes {

View File

@@ -1,9 +1,9 @@
import React from "react";
import { makeStyles, createStyles } from "@mui/styles";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import EmptyState from "components/EmptyState";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
import EmptyState from "@src/components/EmptyState";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -4,8 +4,8 @@ import { makeStyles, createStyles } from "@mui/styles";
import { Grid, GridProps, Typography } from "@mui/material";
import { alpha } from "@mui/material/styles";
import { FieldType } from "constants/fields";
import { getFieldProp } from "components/fields";
import { FieldType } from "@src/constants/fields";
import { getFieldProp } from "@src/components/fields";
const useStyles = makeStyles((theme) =>
createStyles({

View File

@@ -21,8 +21,8 @@ import { IStepProps } from ".";
import FadeList from "../ScrollableList";
import Column from "../Column";
import { useProjectContext } from "contexts/ProjectContext";
import { FieldType } from "constants/fields";
import { useProjectContext } from "@src/contexts/ProjectContext";
import { FieldType } from "@src/constants/fields";
import { suggestType } from "../ImportWizard/utils";
const useStyles = makeStyles((theme) =>

Some files were not shown because too many files have changed in this diff Show More