diff --git a/README.md b/README.md
index 69dcafba8..455884571 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
@@ -9,30 +9,29 @@
Build on Google Cloud Platform in minutes
-Manage Firestore data in a spreadsheet-like UI, write Cloud Functions effortlessly in the browser, connect to your favorite third party platforms such as sendgrid, twilio, algolia, slack and more.
+Manage Firestore data in a spreadsheet-like UI, write Cloud Functions effortlessly in the browser, and connect to your favorite third party platforms such as SendGrid, Twilio, Algolia, sSack and more.
-[![Discord](https://img.shields.io/discord/853498675484819476?color=%234200FF&label=Chat%20with%20us&logo=discord&logoColor=%23FFFFFF&style=for-the-badge)](https://discord.com/invite/B8yAD5PDX4)
-
+[![Discord](https://img.shields.io/discord/853498675484819476?color=%234200FF&label=Chat%20with%20us&logo=discord&logoColor=%23FFFFFF&style=for-the-badge)](https://discord.gg/B8yAD5PDX4)
+
Website •
Documentation •
Discord •
- Twitter
-
-
-[![Build Status](https://badgen.net/github/license/RowyIO/rowy)](https://github.com/RowyIO/rowy/blob/rc/LICENSE)
-[![Commits](https://badgen.net/github/last-commit/RowyIO/rowy/rc)](https://github.com/RowyIO/rowy/commits/rc)
-[![GitHub stars](https://badgen.net/github/stars/RowyIO/rowy)](https://github.com/RowyIO/rowy/stargazers/)
-
+ Twitter
+
+[![License](https://img.shields.io/github/license/rowyio/rowy)](https://github.com/rowyio/rowy/blob/main/LICENSE)
+[![Last commit](https://img.shields.io/github/last-commit/rowyio/rowy/rc)](https://github.com/rowyio/rowy/commits/rc)
+[![GitHub stars](https://img.shields.io/github/stars/rowyio/rowy)](https://github.com/rowyio/rowy/stargazers/)
+
-
+
-# Quick Try
+## Quick try
Set up Rowy on your Google Cloud Platform project with this one-click deploy button.
@@ -40,11 +39,12 @@ Manage Firestore data in a spreadsheet-like UI, write Cloud Functions effortless
title="One Click Deploy" width="250" />
-# Documentation
+## Documentation
-You can find the full documentation with how-to guides [here](http://docs.rowy.io/).
+You can find the full documentation with how-to guides
+[here](http://docs.rowy.io/).
-# Features
+## Features
### Powerful spreadsheet interface for Firestore
@@ -54,17 +54,25 @@ You can find the full documentation with how-to guides [here](http://docs.rowy.i
- Multiple views for the same collection
- Bulk import or export data - csv, json
+### Supercharge your database with cloud functions and ready made extension
+
+- Effortlessly build cloud functions on field level triggers right in the browser
+ - Use any NPM modules or APIs
+- Connect to your favourite tool with pre-built extensions or create your own
+ - SendGrid, Algolia, Twilio, Bigquery and more
+
### Rich and flexible data fields
+
- [30+ fields supported](https://docs.rowy.io/field-types/supported-fields)
-- Basic types: Short Text, Long Text, Email, Phone, URL…
-- Custom UI pickers: Date, Checkbox, Single Select, Multi Select…
-- Uploaders: Image, File
-- Rich Editors: JSON, Code, Rich Text (HTML)
-- Data validation, default values, required fields
+ - Basic types: Short Text, Long Text, Email, Phone, URL…
+ - Custom UI pickers: Date, Checkbox, Single Select, Multi Select…
+ - Uploaders: Image, File
+ - Rich Editors: JSON, Code, Rich Text (HTML)
+ - Data validation, default values, required fields
- Action field: Clickable trigger for any Cloud Function
-- Derivative field: Populate a cell with value derived from your database,
-npm modules, api calls - called on field level triggers
- Aggregate field: Populate cell with value aggregated from the row’s sub-table
+- Connect Table: Get snapshot of data from another data table using Algolia
+- Connect Service: Get data from any HTTP endpoint
### Collaborate with your team
@@ -73,26 +81,23 @@ npm modules, api calls - called on field level triggers
- Built in user management
- Customizable views for different user roles
-### Supercharge your database with cloud functions
+## Install
-- Effortless build cloud functions right in the browser
-- Connect to your favourite tools: SendGrid, Algolia, Twilio, Bigquery and more
-- Integrations with external services
- - Connect Table uses Algolia to get a snapshot of another table’s row values
- - Connect Service uses any HTTP endpoint to get a cell value
-
-# Install
+Set up Rowy on your Google Cloud project with this one-click deploy button.
-Set up Rowy on your Google Cloud Platform project with this one-click deploy button that makes the process of setting up easy with step by step guide and ensuring your project is setup correctly. This runs RowyRun (an open-source, cloud run instance) that operates exclusively on your GCP project and we will never have access to your service account or any of your data.
-
-
-
+[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/rowyio/rowyRun.git)
+
+The one-click deploy makes the process of setting up easy with a step by step
+guide and ensures your project is setup correctly.
-Alternatively, you can also manually install using the full installation guide is available [here](https://docs.rowy.io/install).
+It deploys [Rowy Run](https://github.com/rowyio/rowyrun), an open-source Cloud
+Run instance that operates exclusively on your GCP project. So we never have
+access to your service account or any of your data.
+Alternatively, you can manually install by
+[following this guide](https://docs.rowy.io/setup/install).
-# Join Our Community
+## Join our community
We would love to connect and hear what you think!
diff --git a/public/index.html b/public/index.html
index c2b0f3aba..4104e958e 100644
--- a/public/index.html
+++ b/public/index.html
@@ -21,36 +21,33 @@
-
-
+
@@ -79,6 +76,30 @@
/>
Rowy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
You need to enable JavaScript to run this app.
diff --git a/public/static/meta.png b/public/static/meta.png
new file mode 100644
index 000000000..702f613ba
Binary files /dev/null and b/public/static/meta.png differ
diff --git a/public/static/tinymce_content-dark.css b/public/static/tinymce_content-dark.css
deleted file mode 100644
index c9bcd3cbf..000000000
--- a/public/static/tinymce_content-dark.css
+++ /dev/null
@@ -1,110 +0,0 @@
-:root {
- font-size: 16px;
-
- --tinymce-text-color: rgba(255, 255, 255, 1);
- --tinymce-primary-color: #ed4747;
- --tinymce-divider-color: rgba(255, 255, 255, 0.12);
-}
-
-html {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- box-sizing: border-box;
-
- padding: 1rem;
-}
-
-*,
-*::before,
-*::after {
- box-sizing: inherit;
-}
-
-body {
- margin: 0 auto;
- max-width: 33em;
- max-width: 60ch;
-
- font-size: 13.8px;
- font-family: "Open Sans", sans-serif;
- line-height: 1.45;
- letter-spacing: 0.25px;
-
- color: var(--tinymce-text-color);
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-family: "Europa", "Open Sans", sans-serif;
- margin: 0;
- line-height: 1.2;
- font-weight: bold;
-}
-p {
- margin: 0;
-}
-
-a {
- font-weight: bold;
- color: var(--tinymce-primary-color);
-}
-
-ul,
-ol {
- margin: 0;
- padding-left: 1.5em;
-}
-li + li {
- margin-top: 0.5em;
-}
-
-body * + * {
- margin-top: 1em;
-}
-
-table {
- border-collapse: collapse;
-}
-table th,
-table td {
- border: 1px solid var(--tinymce-divider-color);
- padding: 0.4rem;
-}
-figure {
- display: table;
- margin: 1rem auto;
-}
-figure figcaption {
- color: #999;
- display: block;
- margin-top: 0.25rem;
- text-align: center;
-}
-hr {
- border-color: var(--tinymce-divider-color);
- border-style: solid;
- border-width: 1px 0 0 0;
-}
-code {
- background-color: var(--tinymce-divider-color);
- border-radius: 4px;
- padding: 0.1rem 0.2rem;
- font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
-}
-pre {
- font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
-}
-.mce-content-body:not([dir="rtl"]) blockquote {
- border-left: 2px solid var(--tinymce-divider-color);
- margin-left: 1.5rem;
- padding-left: 1rem;
-}
-.mce-content-body[dir="rtl"] blockquote {
- border-right: 2px solid var(--tinymce-divider-color);
- margin-right: 1.5rem;
- padding-right: 1rem;
-}
diff --git a/public/static/tinymce_content.css b/public/static/tinymce_content.css
deleted file mode 100644
index b90b9e224..000000000
--- a/public/static/tinymce_content.css
+++ /dev/null
@@ -1,110 +0,0 @@
-:root {
- font-size: 16px;
-
- --tinymce-text-color: rgba(0, 0, 0, 0.87);
- --tinymce-primary-color: #ed4747;
- --tinymce-divider-color: rgba(0, 0, 0, 0.12);
-}
-
-html {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- box-sizing: border-box;
-
- padding: 1rem;
-}
-
-*,
-*::before,
-*::after {
- box-sizing: inherit;
-}
-
-body {
- margin: 0 auto;
- max-width: 33em;
- max-width: 60ch;
-
- font-size: 13.8px;
- font-family: "Open Sans", sans-serif;
- line-height: 1.45;
- letter-spacing: 0.25px;
-
- color: var(--tinymce-text-color);
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-family: "Europa", "Open Sans", sans-serif;
- margin: 0;
- line-height: 1.2;
- font-weight: bold;
-}
-p {
- margin: 0;
-}
-
-a {
- font-weight: bold;
- color: var(--tinymce-primary-color);
-}
-
-ul,
-ol {
- margin: 0;
- padding-left: 1.5em;
-}
-li + li {
- margin-top: 0.5em;
-}
-
-body * + * {
- margin-top: 1em;
-}
-
-table {
- border-collapse: collapse;
-}
-table th,
-table td {
- border: 1px solid var(--tinymce-divider-color);
- padding: 0.4rem;
-}
-figure {
- display: table;
- margin: 1rem auto;
-}
-figure figcaption {
- color: #999;
- display: block;
- margin-top: 0.25rem;
- text-align: center;
-}
-hr {
- border-color: var(--tinymce-divider-color);
- border-style: solid;
- border-width: 1px 0 0 0;
-}
-code {
- background-color: var(--tinymce-divider-color);
- border-radius: 4px;
- padding: 0.1rem 0.2rem;
- font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
-}
-pre {
- font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
-}
-.mce-content-body:not([dir="rtl"]) blockquote {
- border-left: 2px solid var(--tinymce-divider-color);
- margin-left: 1.5rem;
- padding-left: 1rem;
-}
-.mce-content-body[dir="rtl"] blockquote {
- border-right: 2px solid var(--tinymce-divider-color);
- margin-right: 1.5rem;
- padding-right: 1rem;
-}
diff --git a/src/assets/logo-sticker.svg b/src/assets/logo-sticker.svg
new file mode 100644
index 000000000..b6696ee00
--- /dev/null
+++ b/src/assets/logo-sticker.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Setup/Step0Welcome.tsx b/src/components/Setup/Step0Welcome.tsx
index 3fa05d868..fc47668bc 100644
--- a/src/components/Setup/Step0Welcome.tsx
+++ b/src/components/Setup/Step0Welcome.tsx
@@ -45,8 +45,19 @@ export default function Step0Welcome({
variant="body2"
color="text.primary"
>
- terms and conditions
+ Terms and Conditions
+ {" "}
+ and
+
+ Privacy Policy
+ .
>
}
sx={{ pr: 1, textAlign: "left", alignItems: "flex-start", p: 0, m: 0 }}
diff --git a/src/components/fields/Action/index.tsx b/src/components/fields/Action/index.tsx
index 8496d55ee..6e054f552 100644
--- a/src/components/fields/Action/index.tsx
+++ b/src/components/fields/Action/index.tsx
@@ -24,7 +24,7 @@ export const config: IFieldConfig = {
initialValue: {},
icon: ,
description:
- "A button with a pre-defined action. Triggers a Cloud Function. 3 different states: Disabled, Enabled, Active (Clicked). Supports Undo and Redo.",
+ "Button with pre-defined action script or triggers a Cloud Function. Optionally supports Undo and Redo.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
SideDrawerField,
diff --git a/src/components/fields/Aggregate/index.tsx b/src/components/fields/Aggregate/index.tsx
index ddbb4c22c..66f3ae778 100644
--- a/src/components/fields/Aggregate/index.tsx
+++ b/src/components/fields/Aggregate/index.tsx
@@ -9,12 +9,12 @@ export const config: IFieldConfig = {
type: FieldType.aggregate,
name: "Aggregate",
group: "Cloud Function",
- dataType: "string",
+ dataType: "any",
initialValue: "",
initializable: false,
icon: ,
description:
- "Value aggregated from a specified sub-table of the row. Displayed using any other field type. Requires Cloud Function setup.",
+ "Value aggregated from a specified sub-table of the row. Displayed using any other field type. Requires Cloud Function set up.",
TableCell: withBasicCell(BasicCell),
TableEditor: NullEditor as any,
SideDrawerField: BasicCell as any,
diff --git a/src/components/fields/Checkbox/index.tsx b/src/components/fields/Checkbox/index.tsx
index 570f412c5..92555b224 100644
--- a/src/components/fields/Checkbox/index.tsx
+++ b/src/components/fields/Checkbox/index.tsx
@@ -24,7 +24,7 @@ export const config: IFieldConfig = {
initialValue: false,
initializable: true,
icon: ,
- description: "Either toggled on or off. Toggled off by default.",
+ description: "True/false value. Default: false.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
csvImportParser: (value: string) => {
diff --git a/src/components/fields/Code/index.tsx b/src/components/fields/Code/index.tsx
index 63f121fb8..b3f041d5c 100644
--- a/src/components/fields/Code/index.tsx
+++ b/src/components/fields/Code/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Raw code editable with Monaco Editor.",
+ description: "Raw code edited with the Monaco Editor.",
TableCell: withBasicCell(BasicCell),
TableEditor: withSideDrawerEditor(BasicCell),
SideDrawerField,
diff --git a/src/components/fields/Color/index.tsx b/src/components/fields/Color/index.tsx
index 14ce4c3ff..7409adf86 100644
--- a/src/components/fields/Color/index.tsx
+++ b/src/components/fields/Color/index.tsx
@@ -23,7 +23,8 @@ export const config: IFieldConfig = {
initialValue: {},
initializable: true,
icon: ,
- description: "Visual color picker. Supports Hex, RGBA, HSLA.",
+ description:
+ "Color stored as Hex, RGB, and HSV. Edited with a visual picker.",
TableCell: withPopoverCell(BasicCell, InlineCell, PopoverCell, {
anchorOrigin: { horizontal: "left", vertical: "bottom" },
}),
diff --git a/src/components/fields/ConnectService/index.tsx b/src/components/fields/ConnectService/index.tsx
index 7f8fb5f14..e65d5ac6b 100644
--- a/src/components/fields/ConnectService/index.tsx
+++ b/src/components/fields/ConnectService/index.tsx
@@ -25,7 +25,7 @@ export const config: IFieldConfig = {
type: FieldType.connectService,
name: "Connect Service (Alpha)",
group: "Connection",
- dataType: "{ docPath: string; snapshot: Record; }",
+ dataType: "{ docPath: string; snapshot: Record; }[]",
initialValue: [],
icon: ,
description:
diff --git a/src/components/fields/ConnectTable/index.tsx b/src/components/fields/ConnectTable/index.tsx
index befd0ad8f..99d2df14c 100644
--- a/src/components/fields/ConnectTable/index.tsx
+++ b/src/components/fields/ConnectTable/index.tsx
@@ -25,7 +25,7 @@ export const config: IFieldConfig = {
type: FieldType.connectTable,
name: "Connect Table (Alpha)",
group: "Connection",
- dataType: "{ docPath: string; snapshot: Record; }",
+ dataType: "{ docPath: string; snapshot: Record; }[]",
initialValue: [],
icon: ,
description:
diff --git a/src/components/fields/Date/index.tsx b/src/components/fields/Date/index.tsx
index 353d6f7b3..9636cf612 100644
--- a/src/components/fields/Date/index.tsx
+++ b/src/components/fields/Date/index.tsx
@@ -27,7 +27,7 @@ export const config: IFieldConfig = {
initialValue: null,
initializable: true,
icon: ,
- description: `Date displayed by default as ${DATE_FORMAT}.`,
+ description: `Formatted date. Format is configurable, default: ${DATE_FORMAT}. Edited with a visual picker.`,
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
SideDrawerField,
diff --git a/src/components/fields/DateTime/index.tsx b/src/components/fields/DateTime/index.tsx
index 2c2c3da6e..4522f6ada 100644
--- a/src/components/fields/DateTime/index.tsx
+++ b/src/components/fields/DateTime/index.tsx
@@ -29,7 +29,7 @@ export const config: IFieldConfig = {
initialValue: null,
initializable: true,
icon: ,
- description: `Date & Time displayed by default as ${DATE_TIME_FORMAT}.`,
+ description: `Formatted date & time. Format is configurable, default: ${DATE_TIME_FORMAT}. Edited with a visual picker.`,
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
SideDrawerField,
diff --git a/src/components/fields/Derivative/index.tsx b/src/components/fields/Derivative/index.tsx
index 85fd18c8a..37e4328a4 100644
--- a/src/components/fields/Derivative/index.tsx
+++ b/src/components/fields/Derivative/index.tsx
@@ -10,13 +10,13 @@ export const config: IFieldConfig = {
type: FieldType.derivative,
name: "Derivative",
group: "Cloud Function",
- dataType: "string",
+ dataType: "any",
initialValue: "",
initializable: true,
icon: ,
requireConfiguration: true,
description:
- "Value derived from the rest of the row’s values. Displayed using any other field type. Requires Cloud Function setup.",
+ "Value derived from the rest of the row’s values. Displayed using any other field type. Requires Cloud Function set up.",
TableCell: withBasicCell(BasicCell),
TableEditor: NullEditor as any,
SideDrawerField: BasicCell as any,
diff --git a/src/components/fields/Duration/index.tsx b/src/components/fields/Duration/index.tsx
index 1d97feeff..23ff1795d 100644
--- a/src/components/fields/Duration/index.tsx
+++ b/src/components/fields/Duration/index.tsx
@@ -20,8 +20,7 @@ export const config: IFieldConfig = {
type: FieldType.duration,
name: "Duration (Alpha)",
group: "Date & Time",
- dataType:
- "{ start: firebase.firestore.Timestamp, end?: firebase.firestore.Timestamp }",
+ dataType: "Record<'start' | 'end', firebase.firestore.Timestamp>",
initialValue: {},
icon: ,
description: "Duration calculated from two timestamps.",
diff --git a/src/components/fields/Email/index.tsx b/src/components/fields/Email/index.tsx
index bd18d781a..292e09559 100644
--- a/src/components/fields/Email/index.tsx
+++ b/src/components/fields/Email/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Email address.",
+ description: "Email address. Not validated.",
TableCell: withBasicCell(BasicCell),
TableEditor: TextEditor,
SideDrawerField,
diff --git a/src/components/fields/File/TableCell.tsx b/src/components/fields/File/TableCell.tsx
index 8102827a0..cd6c92e1c 100644
--- a/src/components/fields/File/TableCell.tsx
+++ b/src/components/fields/File/TableCell.tsx
@@ -3,7 +3,6 @@ import { IHeavyCellProps } from "../types";
import { useDropzone } from "react-dropzone";
import _findIndex from "lodash/findIndex";
-import clsx from "clsx";
import { format } from "date-fns";
import { makeStyles, createStyles } from "@mui/styles";
diff --git a/src/components/fields/File/index.tsx b/src/components/fields/File/index.tsx
index 2bdedfed0..dddac8ac0 100644
--- a/src/components/fields/File/index.tsx
+++ b/src/components/fields/File/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
name: "File",
group: "File",
dataType:
- "{ downloadURL: string, lastModifiedTS: number, name: string, type, ref }[]",
+ "{ downloadURL: string; lastModifiedTS: number; name: string; type: string; ref: string; }[]",
initialValue: [],
icon: ,
description: "File uploaded to Firebase Storage. Supports any file type.",
diff --git a/src/components/fields/Id/index.tsx b/src/components/fields/Id/index.tsx
index 526459287..245c4ebe4 100644
--- a/src/components/fields/Id/index.tsx
+++ b/src/components/fields/Id/index.tsx
@@ -17,10 +17,10 @@ export const config: IFieldConfig = {
type: FieldType.id,
name: "ID",
group: "Metadata",
- dataType: "undefined",
+ dataType: "string",
initialValue: "",
icon: ,
- description: "Displays the row’s document ID. Cannot be sorted.",
+ description: "Displays the row’s ID. Read-only. Cannot be sorted.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: withSideDrawerEditor(TableCell),
SideDrawerField,
diff --git a/src/components/fields/Image/index.tsx b/src/components/fields/Image/index.tsx
index f58705072..022ae65ba 100644
--- a/src/components/fields/Image/index.tsx
+++ b/src/components/fields/Image/index.tsx
@@ -19,11 +19,11 @@ export const config: IFieldConfig = {
name: "Image",
group: "File",
dataType:
- "{ downloadURL: string, lastModifiedTS: number, name: string, type, ref }[]",
+ "{ downloadURL: string; lastModifiedTS: number; name: string; type: string; ref: string; }[]",
initialValue: [],
icon: ,
description:
- "Image file uploaded to Firebase Storage. Supports JPEG, PNG, SVG, GIF, WebP.",
+ "Image file uploaded to Firebase Storage. Supports JPEG, PNG, SVG, GIF, WebP, AVIF, JPEG XL.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
SideDrawerField,
@@ -36,4 +36,6 @@ export const IMAGE_MIME_TYPES = [
"image/svg+xml",
"image/gif",
"image/webp",
+ "image/avif",
+ "image/jxl",
];
diff --git a/src/components/fields/Json/index.tsx b/src/components/fields/Json/index.tsx
index cb541cf2d..deea3de24 100644
--- a/src/components/fields/Json/index.tsx
+++ b/src/components/fields/Json/index.tsx
@@ -19,11 +19,11 @@ export const config: IFieldConfig = {
type: FieldType.json,
name: "JSON",
group: "Code",
- dataType: "any",
+ dataType: "object",
initialValue: undefined,
initializable: true,
icon: ,
- description: "JSON object editable with a visual JSON editor.",
+ description: "Object edited with a visual JSON editor.",
TableCell: withBasicCell(BasicCell),
TableEditor: withSideDrawerEditor(BasicCell),
csvImportParser: (value) => {
diff --git a/src/components/fields/LongText/index.tsx b/src/components/fields/LongText/index.tsx
index f0058bab4..a944bdd21 100644
--- a/src/components/fields/LongText/index.tsx
+++ b/src/components/fields/LongText/index.tsx
@@ -21,7 +21,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Large amount of text, such as sentences and paragraphs.",
+ description: "Text displayed on multiple lines.",
TableCell: withBasicCell(BasicCell),
TableEditor: withSideDrawerEditor(BasicCell),
SideDrawerField,
diff --git a/src/components/fields/MultiSelect/index.tsx b/src/components/fields/MultiSelect/index.tsx
index fc7f186a7..4423e5034 100644
--- a/src/components/fields/MultiSelect/index.tsx
+++ b/src/components/fields/MultiSelect/index.tsx
@@ -33,7 +33,7 @@ export const config: IFieldConfig = {
initializable: true,
icon: ,
description:
- "Dropdown selector with searchable options and check box behavior. Optionally allows users to input custom values. Max selection: all options.",
+ "Multiple values from predefined options. Options are searchable and users can optionally input custom values.",
TableCell: withPopoverCell(BasicCell, InlineCell, PopoverCell, {
anchorOrigin: { horizontal: "left", vertical: "bottom" },
transparent: true,
diff --git a/src/components/fields/Number/index.tsx b/src/components/fields/Number/index.tsx
index 20b67ce0e..3cc51ab60 100644
--- a/src/components/fields/Number/index.tsx
+++ b/src/components/fields/Number/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
initialValue: 0,
initializable: true,
icon: ,
- description: "Numeric data.",
+ description: "Numeric value.",
TableCell: withBasicCell(BasicCell),
TableEditor: TextEditor,
SideDrawerField,
diff --git a/src/components/fields/Phone/index.tsx b/src/components/fields/Phone/index.tsx
index 1bba638af..ed872921f 100644
--- a/src/components/fields/Phone/index.tsx
+++ b/src/components/fields/Phone/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Phone numbers stored as text.",
+ description: "Phone number stored as text. Not validated.",
TableCell: withBasicCell(BasicCell),
TableEditor: TextEditor,
SideDrawerField,
diff --git a/src/components/fields/Rating/index.tsx b/src/components/fields/Rating/index.tsx
index b48559158..b21649e94 100644
--- a/src/components/fields/Rating/index.tsx
+++ b/src/components/fields/Rating/index.tsx
@@ -26,7 +26,7 @@ export const config: IFieldConfig = {
initializable: true,
icon: ,
description:
- "Rating displayed as stars from 0 to configurable number of stars. Default: 5 stars.",
+ "Rating displayed as stars. Max stars is configurable, default: 5 stars.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
settings: Settings,
diff --git a/src/components/fields/RichText/index.tsx b/src/components/fields/RichText/index.tsx
index ffe93e9ef..139a41896 100644
--- a/src/components/fields/RichText/index.tsx
+++ b/src/components/fields/RichText/index.tsx
@@ -24,7 +24,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Rich text editor with predefined HTML text styles.",
+ description: "HTML edited with a rich text editor.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: withSideDrawerEditor(TableCell),
SideDrawerField,
diff --git a/src/components/fields/ShortText/index.tsx b/src/components/fields/ShortText/index.tsx
index 8a4d212d2..a652162e6 100644
--- a/src/components/fields/ShortText/index.tsx
+++ b/src/components/fields/ShortText/index.tsx
@@ -24,7 +24,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Small amount of text, such as names and taglines.",
+ description: "Text displayed on a single line.",
TableCell: withBasicCell(BasicCell),
TableEditor: TextEditor,
SideDrawerField,
diff --git a/src/components/fields/SingleSelect/index.tsx b/src/components/fields/SingleSelect/index.tsx
index 429b1b15a..5910817ce 100644
--- a/src/components/fields/SingleSelect/index.tsx
+++ b/src/components/fields/SingleSelect/index.tsx
@@ -30,7 +30,7 @@ export const config: IFieldConfig = {
initializable: true,
icon: ,
description:
- "Dropdown selector with searchable options and radio button behavior. Optionally allows users to input custom values. Max selection: 1 option.",
+ "Single value from predefined options. Options are searchable and users can optionally input custom values.",
TableCell: withPopoverCell(BasicCell, InlineCell, PopoverCell, {
anchorOrigin: { horizontal: "left", vertical: "bottom" },
transparent: true,
diff --git a/src/components/fields/Slider/index.tsx b/src/components/fields/Slider/index.tsx
index b8592c3e0..611252ba4 100644
--- a/src/components/fields/Slider/index.tsx
+++ b/src/components/fields/Slider/index.tsx
@@ -25,7 +25,7 @@ export const config: IFieldConfig = {
initialValue: 0,
initializable: true,
icon: ,
- description: "Slider with adjustable range. Returns a numeric value.",
+ description: "Numeric value edited with a Slider. Range is configurable.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: withSideDrawerEditor(TableCell),
settings: Settings,
diff --git a/src/components/fields/Status/index.tsx b/src/components/fields/Status/index.tsx
index bf8073b32..399a46d01 100644
--- a/src/components/fields/Status/index.tsx
+++ b/src/components/fields/Status/index.tsx
@@ -25,8 +25,7 @@ export const config: IFieldConfig = {
initialValue: undefined,
initializable: true,
icon: ,
- description:
- "Status is read only field that displays field values in more visual format",
+ description: "Displays field value as custom status text. Read-only. ",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
settings: Settings,
diff --git a/src/components/fields/SubTable/index.tsx b/src/components/fields/SubTable/index.tsx
index e730d8f68..74f6dc1f0 100644
--- a/src/components/fields/SubTable/index.tsx
+++ b/src/components/fields/SubTable/index.tsx
@@ -20,14 +20,14 @@ const Settings = lazy(
);
export const config: IFieldConfig = {
type: FieldType.subTable,
- name: "SubTable",
+ name: "Sub-Table",
group: "Connection",
dataType: "undefined",
initialValue: null,
icon: ,
settings: Settings,
description:
- "Creates a sub-table. Also displays number of rows inside the sub-table. Max sub-table levels: 100.",
+ "Connects to a sub-table in the current row. Also displays number of rows inside the sub-table. Max sub-table depth: 100.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: NullEditor as any,
SideDrawerField,
diff --git a/src/components/fields/Url/index.tsx b/src/components/fields/Url/index.tsx
index ff996d7dc..d562d73ba 100644
--- a/src/components/fields/Url/index.tsx
+++ b/src/components/fields/Url/index.tsx
@@ -19,7 +19,7 @@ export const config: IFieldConfig = {
initialValue: "",
initializable: true,
icon: ,
- description: "Web address.",
+ description: "Web address. Not validated.",
TableCell: withBasicCell(TableCell),
TableEditor: TextEditor,
SideDrawerField,
diff --git a/src/components/fields/User/index.tsx b/src/components/fields/User/index.tsx
index 41a32a9f4..2db100d46 100644
--- a/src/components/fields/User/index.tsx
+++ b/src/components/fields/User/index.tsx
@@ -19,10 +19,11 @@ export const config: IFieldConfig = {
name: "User",
group: "Metadata",
dataType:
- "{ displayName: string, email: string, emailVerified: boolean, isAnonymous: boolean, photoURL: string, timestamp: firebase.firestore.Timestamp, uid: string }",
+ "{ displayName: string; email: string; emailVerified: boolean; isAnonymous: boolean; photoURL: string; timestamp: firebase.firestore.Timestamp; uid: string; }",
initialValue: null,
icon: ,
- description: "Displays the _updatedBy field for editing history.",
+ description:
+ "Displays user & timestamp. Supports the _createdBy and _updatedBy fields, which are automatically set when a row is created or updated. Read-only.",
TableCell: withHeavyCell(BasicCell, TableCell),
TableEditor: withSideDrawerEditor(TableCell),
SideDrawerField,
diff --git a/src/components/fields/index.tsx b/src/components/fields/index.tsx
index 431c32d57..cb46b20ad 100644
--- a/src/components/fields/index.tsx
+++ b/src/components/fields/index.tsx
@@ -11,8 +11,8 @@ import RichText from "./RichText";
import Email from "./Email";
import Phone from "./Phone";
import Url from "./Url";
-import Checkbox from "./Checkbox";
import Number_ from "./Number";
+import Checkbox from "./Checkbox";
import Percentage from "./Percentage";
import Rating from "./Rating";
import Slider from "./Slider";
@@ -49,8 +49,8 @@ export const FIELDS: IFieldConfig[] = [
SingleSelect,
MultiSelect,
// NUMERIC
- Checkbox,
Number_,
+ Checkbox,
Percentage,
Rating,
Slider,