mirror of
https://github.com/rowyio/rowy.git
synced 2025-12-29 00:16:39 +01:00
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:
48
src/App.tsx
48
src/App.tsx
@@ -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 (
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"> {}
|
||||
|
||||
@@ -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" */)
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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[]>;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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[]>;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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>>;
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 }) => ({
|
||||
|
||||
@@ -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) =>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 } =
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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>;
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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: {} };
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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 = () => () => {};
|
||||
|
||||
186
src/components/Table/Settings/Webhooks.tsx
Normal file
186
src/components/Table/Settings/Webhooks.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 }} />
|
||||
|
||||
@@ -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"]);
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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-grid’s default
|
||||
|
||||
@@ -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-grid’s default
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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> & {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user