diff --git a/package.json b/package.json index d0062e3bf..ecd82024e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Rowy", - "version": "2.0.0-rc.0", + "version": "2.0.0", "homepage": "https://rowy.io", "repository": { "type": "git", @@ -12,14 +12,15 @@ "@date-io/date-fns": "1.x", "@emotion/react": "^11.4.0", "@emotion/styled": "^11.3.0", + "@hookform/resolvers": "^2.8.1", "@mdi/js": "^5.9.55", "@monaco-editor/react": "^4.1.0", "@mui/icons-material": "^5.0.0", "@mui/lab": "^5.0.0-alpha.47", "@mui/material": "^5.0.0", "@mui/styles": "^5.0.0", - "@rowy/form-builder": "^0.1.2", - "@rowy/multiselect": "^0.1.12", + "@rowy/form-builder": "^0.2.4", + "@rowy/multiselect": "^0.2.1", "@tinymce/tinymce-react": "^3.12.6", "algoliasearch": "^4.8.6", "ansi-to-react": "^6.1.5", @@ -37,7 +38,7 @@ "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "moment": "^2.29.1", - "notistack": "^1.0.6-next.3", + "notistack": "^2.0.2", "query-string": "^6.8.3", "react": "^17.0.2", "react-beautiful-dnd": "^13.0.0", @@ -51,7 +52,7 @@ "react-element-scroll-hook": "^1.1.0", "react-firebaseui": "^5.0.2", "react-helmet": "^6.1.0", - "react-hook-form": "^6", + "react-hook-form": "^7.16.1", "react-image": "^4.0.3", "react-joyride": "^2.3.0", "react-json-view": "^1.19.1", @@ -61,6 +62,7 @@ "react-scroll-sync": "^0.8.0", "react-usestateref": "^1.0.5", "serve": "^11.3.2", + "swr": "^1.0.1", "tinymce": "^5.9.2", "typescript": "^4.4.2", "use-algolia": "^1.4.1", @@ -70,10 +72,10 @@ "yup": "^0.32.9" }, "scripts": { - "upstream": "git fetch upstream;git merge upstream/v2;git commit -m'merge upstream';git push", + "upstream": "git fetch upstream;git merge upstream/main;git commit -m'merge upstream';git push", "serve": "serve -s build", "start": "craco start", - "build": "craco build", + "build": "craco build CI=false", "test": "craco test --env=jsdom", "eject": "craco eject", "env": "node createDotEnv", diff --git a/src/components/Auth/MarketingBanner.tsx b/src/components/Auth/MarketingBanner.tsx index bc0f91d74..200213343 100644 --- a/src/components/Auth/MarketingBanner.tsx +++ b/src/components/Auth/MarketingBanner.tsx @@ -76,7 +76,7 @@ export default function MarketingBanner() { target="_blank" rel="noopener noreferrer" > - Join our Community + Join our community ); diff --git a/src/components/ConnectServiceSelect/PopupContents.tsx b/src/components/ConnectServiceSelect/PopupContents.tsx index cfd77e597..0b6b71c7e 100644 --- a/src/components/ConnectServiceSelect/PopupContents.tsx +++ b/src/components/ConnectServiceSelect/PopupContents.tsx @@ -194,7 +194,7 @@ export default function PopupContents({ color="primary" className={classes.selectAllButton} > - Clear Selection + Clear selection diff --git a/src/components/EmptyState.tsx b/src/components/EmptyState.tsx index 6ac2a78d0..11e28d992 100644 --- a/src/components/EmptyState.tsx +++ b/src/components/EmptyState.tsx @@ -29,7 +29,7 @@ export interface IEmptyStateProps extends Partial { * Override with props that are passed to the root MUI `Grid` component. */ export default function EmptyState({ - message = "Nothing Here", + message = "Nothing here", description, Icon = ErrorIcon, fullScreen = false, diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx index aa9f78ae1..f3e60c26e 100644 --- a/src/components/ErrorBoundary.tsx +++ b/src/components/ErrorBoundary.tsx @@ -3,7 +3,7 @@ import EmptyState, { IEmptyStateProps } from "./EmptyState"; import { Button } from "@mui/material"; import ReloadIcon from "@mui/icons-material/Refresh"; -import OpenInNewIcon from "@mui/icons-material/OpenInNew"; +import InlineOpenInNewIcon from "components/InlineOpenInNewIcon"; import meta from "../../package.json"; class ErrorBoundary extends React.Component< IEmptyStateProps & { render?: (errorMessage: string) => React.ReactNode } @@ -27,7 +27,7 @@ class ErrorBoundary extends React.Component< return ( {this.state.errorMessage} @@ -48,9 +48,9 @@ class ErrorBoundary extends React.Component< } target="_blank" rel="noopener noreferrer" - endIcon={} > - Report Issue + Report issue + )} diff --git a/src/components/Home/AccessDenied.tsx b/src/components/Home/AccessDenied.tsx index e2ac2f486..4af8d5ce2 100644 --- a/src/components/Home/AccessDenied.tsx +++ b/src/components/Home/AccessDenied.tsx @@ -15,7 +15,7 @@ export default function AccessDenied() { @@ -28,7 +28,7 @@ export default function AccessDenied() { If you are the project owner, please follow{" "} @@ -38,7 +38,7 @@ export default function AccessDenied() { } diff --git a/src/components/InlineOpenInNewIcon.tsx b/src/components/InlineOpenInNewIcon.tsx index cf7e52718..33869d4c0 100644 --- a/src/components/InlineOpenInNewIcon.tsx +++ b/src/components/InlineOpenInNewIcon.tsx @@ -1,18 +1,19 @@ -import { SvgIconProps } from "@mui/material/SvgIcon"; -import OpenInNewIcon from "@mui/icons-material/OpenInNew"; +import { styled } from "@mui/material"; -export default function InlineOpenInNewIcon(props: SvgIconProps) { - return ( - - ); -} +export const InlineOpenInNewIcon = styled("span")(() => ({ + position: "relative", + width: "1em", + height: "1em", + marginLeft: "0.25em", + display: "inline-block", + verticalAlign: "baseline", + + "&::after": { + content: "'\\2197'", + position: "absolute", + top: 0, + left: 0, + }, +})); + +export default InlineOpenInNewIcon; diff --git a/src/components/Navigation/Breadcrumbs.tsx b/src/components/Navigation/Breadcrumbs.tsx index c44cee6e9..b12898f8e 100644 --- a/src/components/Navigation/Breadcrumbs.tsx +++ b/src/components/Navigation/Breadcrumbs.tsx @@ -34,7 +34,7 @@ export default function Breadcrumbs(props: BreadcrumbsProps) { return ( } - aria-label="sub-table breadcrumbs" + aria-label="Sub-table breadcrumbs" sx={{ "& ol": { pl: 2, diff --git a/src/components/Navigation/NavDrawer.tsx b/src/components/Navigation/NavDrawer.tsx index 6c69e8f6b..b3371efa5 100644 --- a/src/components/Navigation/NavDrawer.tsx +++ b/src/components/Navigation/NavDrawer.tsx @@ -87,7 +87,6 @@ export default function NavDrawer({ > - + {canPin && ( { secondary={notification.subtitle} /> - + diff --git a/src/components/Settings/ProjectSettings/About.tsx b/src/components/Settings/ProjectSettings/About.tsx index 84827fc85..ec38e0456 100644 --- a/src/components/Settings/ProjectSettings/About.tsx +++ b/src/components/Settings/ProjectSettings/About.tsx @@ -161,18 +161,16 @@ export default function About() { onClick={checkForUpdate} loading={checkState === "LOADING"} > - Check for Updates + Check for updates ) : ( )} @@ -189,7 +187,7 @@ export default function About() { justifyContent="space-between" > - Firebase Project: {projectId} + Firebase project: {projectId} diff --git a/src/components/Settings/ProjectSettings/Authentication.tsx b/src/components/Settings/ProjectSettings/Authentication.tsx index 5980a7bfd..f4a7af5ca 100644 --- a/src/components/Settings/ProjectSettings/Authentication.tsx +++ b/src/components/Settings/ProjectSettings/Authentication.tsx @@ -21,7 +21,7 @@ export default function Authentication({ return ( <> ({ value: option, diff --git a/src/components/Settings/ProjectSettings/RowyRun.tsx b/src/components/Settings/ProjectSettings/RowyRun.tsx index cf89505e8..5d51d20da 100644 --- a/src/components/Settings/ProjectSettings/RowyRun.tsx +++ b/src/components/Settings/ProjectSettings/RowyRun.tsx @@ -157,7 +157,7 @@ export default function RowyRun({ target="_blank" rel="noopener noreferrer" > - Deploy Instructions + Deploy instructions ); @@ -212,7 +212,7 @@ export default function RowyRun({ onClick={checkForUpdate} loading={checkState === "LOADING"} > - Check for Updates + Check for updates ) : ( deployButton @@ -248,7 +248,7 @@ export default function RowyRun({ setInputRowyRunUrl(e.target.value)} diff --git a/src/components/Settings/ThemeColorPicker.tsx b/src/components/Settings/ThemeColorPicker.tsx index cf43c479b..c22900d93 100644 --- a/src/components/Settings/ThemeColorPicker.tsx +++ b/src/components/Settings/ThemeColorPicker.tsx @@ -51,7 +51,7 @@ export default function ThemeColorPicker({ > - Light Theme + Light theme - Dark Theme + Dark theme {open && ( setOpen(false)} maxWidth="xs" body={ @@ -80,7 +80,7 @@ export default function InviteUser() { setEmail(e.target.value)} diff --git a/src/components/Settings/UserManagement/UserItem.tsx b/src/components/Settings/UserManagement/UserItem.tsx index 5d42967ff..3fdc086cb 100644 --- a/src/components/Settings/UserManagement/UserItem.tsx +++ b/src/components/Settings/UserManagement/UserItem.tsx @@ -126,24 +126,24 @@ export default function UserItem({ id, user, roles: rolesProp }: User) { sx: { mr: 0.5, - "& .MuiInputLabel-root": { + "&& .MuiInputLabel-root": { opacity: 0, mt: -3, }, - "& .MuiFilledInput-root": { + "&& .MuiFilledInput-root": { bgcolor: "transparent", boxShadow: 0, "&::before": { content: "none" }, "&:hover, &.Mui-focused": { bgcolor: "action.hover" }, }, - "& .MuiSelect-select.MuiFilledInput-input": { + "&& .MuiSelect-select.MuiFilledInput-input": { typography: "button", pl: 1, pr: 3.25, }, - "& .MuiSelect-icon": { + "&& .MuiSelect-icon": { right: 2, }, }, @@ -163,9 +163,9 @@ export default function UserItem({ id, user, roles: rolesProp }: User) { - + diff --git a/src/components/Settings/UserSettings/Account.tsx b/src/components/Settings/UserSettings/Account.tsx index 90ef50a3d..96e6958bf 100644 --- a/src/components/Settings/UserSettings/Account.tsx +++ b/src/components/Settings/UserSettings/Account.tsx @@ -27,7 +27,7 @@ export default function Account({ settings }: IUserSettingsChildProps) { diff --git a/src/components/Setup/Step1RowyRun.tsx b/src/components/Setup/Step1RowyRun.tsx index f4d89755e..8ce6eb1e7 100644 --- a/src/components/Setup/Step1RowyRun.tsx +++ b/src/components/Setup/Step1RowyRun.tsx @@ -5,7 +5,7 @@ import { ISetupStepBodyProps } from "pages/Setup"; import { Button, Typography, Stack, TextField } from "@mui/material"; import LoadingButton from "@mui/lab/LoadingButton"; -import OpenInNewIcon from "@mui/icons-material/OpenInNew"; +import InlineOpenInNewIcon from "components/InlineOpenInNewIcon"; import SetupItem from "./SetupItem"; @@ -62,7 +62,7 @@ export default function Step1RowyRun({ if (!isValidRowyRunUrl && paramsRowyRunUrl) console.log(paramsRowyRunUrl); }, [paramsRowyRunUrl, isValidRowyRunUrl]); - const deployButton = !window.location.hostname.includes( + const deployButton = window.location.hostname.includes( EXTERNAL_LINKS.rowyAppHostName ) ? ( } > - Deploy Instructions + Deploy instructions + ); @@ -122,7 +122,7 @@ export default function Step1RowyRun({ > setRowyRunUrl(e.target.value)} diff --git a/src/components/Setup/Step2ServiceAccount.tsx b/src/components/Setup/Step2ServiceAccount.tsx index 08af0388e..430368364 100644 --- a/src/components/Setup/Step2ServiceAccount.tsx +++ b/src/components/Setup/Step2ServiceAccount.tsx @@ -3,7 +3,6 @@ import { ISetupStepBodyProps } from "pages/Setup"; import { Typography, Link, Stack } from "@mui/material"; import LoadingButton from "@mui/lab/LoadingButton"; -import OpenInNewIcon from "@mui/icons-material/OpenInNew"; import InlineOpenInNewIcon from "components/InlineOpenInNewIcon"; import SetupItem from "./SetupItem"; @@ -102,9 +101,9 @@ export default function Step2ServiceAccount({ href={`https://console.cloud.google.com/run/deploy/${region}/rowy-run?project=${projectId}`} target="_blank" rel="noopener noreferrer" - endIcon={} > - Set Up Service Account + Set up service account + - Setup Guide + Setup guide diff --git a/src/components/Setup/Step3ProjectOwner.tsx b/src/components/Setup/Step3ProjectOwner.tsx index 6228e3b8a..e102058ac 100644 --- a/src/components/Setup/Step3ProjectOwner.tsx +++ b/src/components/Setup/Step3ProjectOwner.tsx @@ -3,7 +3,7 @@ import { ISetupStepBodyProps } from "pages/Setup"; import { Typography, Stack, Button, IconButton } from "@mui/material"; import LoadingButton from "@mui/lab/LoadingButton"; -import OpenInNewIcon from "@mui/icons-material/OpenInNew"; +import InlineOpenInNewIcon from "components/InlineOpenInNewIcon"; import SetupItem from "./SetupItem"; import SignInWithGoogle from "./SignInWithGoogle"; @@ -99,9 +99,9 @@ export default function Step3ProjectOwner({ }/authentication/providers`} target="_blank" rel="noopener noreferrer" - endIcon={} > - Set Up in Firebase Console + Set up in Firebase Console + )} @@ -168,7 +177,7 @@ export default function Step4Rules({ > setNewRules(e.target.value)} multiline @@ -183,6 +192,15 @@ export default function Step4Rules({ }} /> + + Please check the generated rules first. + + diff --git a/src/components/SideDrawer/Form/Reset.tsx b/src/components/SideDrawer/Form/Reset.tsx index eef61568e..fd75d0385 100644 --- a/src/components/SideDrawer/Form/Reset.tsx +++ b/src/components/SideDrawer/Form/Reset.tsx @@ -1,5 +1,5 @@ import { useEffect } from "react"; -import { UseFormMethods } from "react-hook-form"; +import { UseFormReturn } from "react-hook-form"; import _pickBy from "lodash/pickBy"; import _isEqual from "lodash/isEqual"; @@ -7,9 +7,9 @@ import { Values } from "./utils"; export interface IResetProps { defaultValues: Values; - dirtyFields: UseFormMethods["formState"]["dirtyFields"]; - reset: UseFormMethods["reset"]; - getValues: UseFormMethods["getValues"]; + dirtyFields: UseFormReturn["formState"]["dirtyFields"]; + reset: UseFormReturn["reset"]; + getValues: UseFormReturn["getValues"]; } /** @@ -38,7 +38,7 @@ export default function Reset({ const diff = _pickBy(getValues(), (v, k) => !_isEqual(v, resetValues[k])); // Reset if needed & keep the current dirty fields if (Object.keys(diff).length > 0) { - reset(resetValues, { isDirty: true, dirtyFields: true }); + reset(resetValues, { keepDirty: true }); } }, // `defaultValues` is the `initialValue` of each field type + diff --git a/src/components/SideDrawer/Form/index.tsx b/src/components/SideDrawer/Form/index.tsx index 13b8d54ec..729342d2a 100644 --- a/src/components/SideDrawer/Form/index.tsx +++ b/src/components/SideDrawer/Form/index.tsx @@ -38,10 +38,8 @@ export default function Form({ values }: IFormProps) { const { ref: docRef, ...rowValues } = values; const defaultValues = { ...initialValues, ...rowValues }; - const { control, reset, formState, getValues } = useForm({ - mode: "onBlur", - defaultValues, - }); + const methods = useForm({ mode: "onBlur", defaultValues }); + const { control, reset, formState, getValues } = methods; const { dirtyFields } = formState; // const { sideDrawerRef } = useProjectContext(); @@ -105,6 +103,7 @@ export default function Form({ values }: IFormProps) { control, docRef, disabled: field.editable === false, + useFormMethods: methods, })} ); @@ -113,7 +112,7 @@ export default function Form({ values }: IFormProps) { diff --git a/src/components/Table/BulkActions/index.tsx b/src/components/Table/BulkActions/index.tsx index bd015d066..f9b8f9552 100644 --- a/src/components/Table/BulkActions/index.tsx +++ b/src/components/Table/BulkActions/index.tsx @@ -262,11 +262,11 @@ export default function BulkActions({ selectedRows, columns, clearSelection }) { color="secondary" onClick={() => { requestConfirmation({ - title: "Duplicate Rows?", + title: "Duplicate rows?", body: `Are you sure you want to duplicate the ${numSelected} selected row${ numSelected !== 1 ? "s" : "" }?`, - confirm: "Duplicate Rows", + confirm: "Duplicate rows", handleConfirm: handleDuplicate, }); }} @@ -283,11 +283,11 @@ export default function BulkActions({ selectedRows, columns, clearSelection }) { color="secondary" onClick={() => { requestConfirmation({ - title: "Delete Rows?", + title: "Delete rows?", body: `Are you sure you want to delete the ${numSelected} select row${ numSelected !== 1 ? "s" : "" }?`, - confirm: "Delete Rows", + confirm: "Delete rows", handleConfirm: handleDelete, }); }} diff --git a/src/components/Table/CellValidation.tsx b/src/components/Table/CellValidation.tsx index 02fb78dbc..16d9bf04c 100644 --- a/src/components/Table/CellValidation.tsx +++ b/src/components/Table/CellValidation.tsx @@ -67,7 +67,7 @@ export default function CellValidation({ <> } - title="Invalid Data" + title="Invalid data" message="This row will not be saved until all the required fields contain valid data" placement="right" render={({ openTooltip }) => } @@ -82,7 +82,7 @@ export default function CellValidation({ <> } - title="Required Field" + title="Required field" message="This row will not be saved until all the required fields contain valid data" placement="right" render={({ openTooltip }) => } diff --git a/src/components/Table/ColumnHeader.tsx b/src/components/Table/ColumnHeader.tsx index fb33e31cd..c5e720b12 100644 --- a/src/components/Table/ColumnHeader.tsx +++ b/src/components/Table/ColumnHeader.tsx @@ -263,7 +263,7 @@ export default function DraggableHeaderRenderer({ title={ isAsc ? "Unsort" - : `Sort by ${isDesc ? "Ascending" : "Descending"}` + : `Sort by ${isDesc ? "ascending" : "descending"}` } > ({ aria-label={ isAsc ? "Unsort" - : `Sort by ${isDesc ? "Ascending" : "Descending"}` + : `Sort by ${isDesc ? "ascending" : "descending"}` } className={clsx(classes.sortIcon, isAsc && classes.sortIconAsc)} > @@ -290,7 +290,7 @@ export default function DraggableHeaderRenderer({ (column as any).type ))) && ( - + handleChange("defaultValue.type")(e.target.value)} fullWidth @@ -146,7 +146,7 @@ export default function DefaultValueInput({ {config.defaultValue?.type === "dynamic" && ( <> - +
- Rendered Field Config + Rendered field config {createElement(rendedFieldSettings, { config: newConfig, @@ -114,7 +114,7 @@ export default function FieldSettings(props: IMenuModalProps) { onClick: () => { if (showRebuildPrompt) { requestConfirmation({ - title: "Deploy Changes", + title: "Deploy changes", body: "You have made changes that affect the behavior of the cloud function of this table, Would you like to redeploy it now?", confirm: "Deploy", cancel: "Later", diff --git a/src/components/Table/ColumnMenu/FieldsDropdown.tsx b/src/components/Table/ColumnMenu/FieldsDropdown.tsx index 766ae6723..43fc77025 100644 --- a/src/components/Table/ColumnMenu/FieldsDropdown.tsx +++ b/src/components/Table/ColumnMenu/FieldsDropdown.tsx @@ -49,8 +49,8 @@ export default function FieldsDropdown({ {option.label} )} - label={label || "Field Type"} - labelPlural="Field Types" + label={label || "Field type"} + labelPlural="field types" TextFieldProps={{ hiddenLabel: hideLabel, helperText: value && getFieldProp("description", value), diff --git a/src/components/Table/ColumnMenu/NameChange.tsx b/src/components/Table/ColumnMenu/NameChange.tsx index 04dbbf736..a23206723 100644 --- a/src/components/Table/ColumnMenu/NameChange.tsx +++ b/src/components/Table/ColumnMenu/NameChange.tsx @@ -19,7 +19,7 @@ export default function NameChange({ return ( { diff --git a/src/components/Table/ColumnMenu/NewColumn.tsx b/src/components/Table/ColumnMenu/NewColumn.tsx index 6f00e1a6e..78ea9b7c6 100644 --- a/src/components/Table/ColumnMenu/NewColumn.tsx +++ b/src/components/Table/ColumnMenu/NewColumn.tsx @@ -43,7 +43,7 @@ export default function NewColumn({ return ( setColumnLabel(e.target.value)} @@ -67,7 +67,7 @@ export default function NewColumn({ value={fieldKey} variant="filled" id="fieldKey" - label="Field Key" + label="Field key" type="text" fullWidth onChange={(e) => setFieldKey(e.target.value)} diff --git a/src/components/Table/ColumnMenu/TypeChange.tsx b/src/components/Table/ColumnMenu/TypeChange.tsx index 6e9a227b2..93a2fafb9 100644 --- a/src/components/Table/ColumnMenu/TypeChange.tsx +++ b/src/components/Table/ColumnMenu/TypeChange.tsx @@ -18,7 +18,7 @@ export default function FormDialog({ return ( } actions={{ primary: { diff --git a/src/components/Table/EmptyTable.tsx b/src/components/Table/EmptyTable.tsx index 7c82e1fdc..0fb9944d0 100644 --- a/src/components/Table/EmptyTable.tsx +++ b/src/components/Table/EmptyTable.tsx @@ -19,7 +19,7 @@ export default function EmptyTable() { <>
- Get Started + Get started There is existing data in the Firestore collection: @@ -51,7 +51,7 @@ export default function EmptyTable() { <>
- Get Started + Get started There is no data in the Firestore collection: @@ -113,7 +113,7 @@ export default function EmptyTable() { } disabled={!columnMenuRef?.current} > - Add Column + Add column diff --git a/src/components/Table/Filters/Row.tsx b/src/components/Table/Filters/Row.tsx deleted file mode 100644 index d87212b2b..000000000 --- a/src/components/Table/Filters/Row.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const FiltersRow = () => { - return <>; -}; - -export default FiltersRow; diff --git a/src/components/Table/Filters/index.tsx b/src/components/Table/Filters/index.tsx index f1a6ca06a..7ce6b232b 100644 --- a/src/components/Table/Filters/index.tsx +++ b/src/components/Table/Filters/index.tsx @@ -248,7 +248,7 @@ const Filters = () => { label="Value" labelPlacement="top" componentsProps={{ - typography: { variant: "caption", fontWeight: "medium" }, + typography: { variant: "button" }, }} sx={{ mr: 0, @@ -455,7 +455,7 @@ const Filters = () => { SelectProps={{ displayEmpty: true }} > - Select Column + Select column {filterColumns.map((c) => ( @@ -483,7 +483,7 @@ const Filters = () => { SelectProps={{ displayEmpty: true }} > - Select Condition + Select condition {operators.map((operator) => ( diff --git a/src/components/Table/FinalColumnHeader.tsx b/src/components/Table/FinalColumnHeader.tsx index 98b90175d..75eb32a95 100644 --- a/src/components/Table/FinalColumnHeader.tsx +++ b/src/components/Table/FinalColumnHeader.tsx @@ -69,7 +69,7 @@ const FinalColumnHeader: Column["headerRenderer"] = ({ column }) => { className={classes.button} startIcon={} > - Add Column + Add column ); diff --git a/src/components/Table/HiddenFields.tsx b/src/components/Table/HiddenFields.tsx index 04881fa22..c8455aa3e 100644 --- a/src/components/Table/HiddenFields.tsx +++ b/src/components/Table/HiddenFields.tsx @@ -140,7 +140,7 @@ export default function HiddenFields() { }, } as any)} label="Hidden fields" - labelPlural="Fields" + labelPlural="fields" options={tableColumns} value={hiddenFields ?? []} onChange={setHiddenFields} diff --git a/src/components/Table/Settings/Menu.tsx b/src/components/Table/Settings/Menu.tsx index 532c8997a..010a03d8e 100644 --- a/src/components/Table/Settings/Menu.tsx +++ b/src/components/Table/Settings/Menu.tsx @@ -24,7 +24,7 @@ export default function SettingsMenu({ modal, setModal }) { return (
- Webhook Type + Webhook type