From b0c1f1e1c7112f269da3c04e87b91f8969bd98a9 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 14 Mar 2024 15:50:32 +0530 Subject: [PATCH 01/22] Post-release master to develop sync (#7862) * [create-pull-request] automated change Signed-off-by: GitHub * chore: downgrade sqlite version for executable Signed-off-by: Pranav C * chore: update sdk path Signed-off-by: Pranav C --------- Signed-off-by: GitHub Signed-off-by: Pranav C Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: pranavxc --- packages/nc-gui/package.json | 2 +- packages/nc-lib-gui/package.json | 2 +- packages/nocodb-sdk/package.json | 2 +- packages/nocodb-sdk/src/lib/Api.ts | 13 +++++++++---- packages/nocodb/package.json | 4 ++-- pnpm-lock.yaml | 17 +++++++++-------- scripts/pkg-executable/package.json | 2 +- 7 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/nc-gui/package.json b/packages/nc-gui/package.json index 79847c28999..7ca60b21156 100644 --- a/packages/nc-gui/package.json +++ b/packages/nc-gui/package.json @@ -168,4 +168,4 @@ "vitest": "^1.2.2", "windicss": "^3.5.6" } -} \ No newline at end of file +} diff --git a/packages/nc-lib-gui/package.json b/packages/nc-lib-gui/package.json index e1dcd6c312f..2b7023e8d8a 100644 --- a/packages/nc-lib-gui/package.json +++ b/packages/nc-lib-gui/package.json @@ -1,6 +1,6 @@ { "name": "nc-lib-gui", - "version": "0.204.4", + "version": "0.204.5", "description": "NocoDB GUI", "author": { "name": "NocoDB", diff --git a/packages/nocodb-sdk/package.json b/packages/nocodb-sdk/package.json index 0e2ea72df08..d733a6dd09b 100644 --- a/packages/nocodb-sdk/package.json +++ b/packages/nocodb-sdk/package.json @@ -1,6 +1,6 @@ { "name": "nocodb-sdk", - "version": "0.204.4", + "version": "0.204.5", "description": "NocoDB SDK", "main": "build/main/index.js", "typings": "build/main/index.d.ts", diff --git a/packages/nocodb-sdk/src/lib/Api.ts b/packages/nocodb-sdk/src/lib/Api.ts index f3effefbb31..da9c4cd1a75 100644 --- a/packages/nocodb-sdk/src/lib/Api.ts +++ b/packages/nocodb-sdk/src/lib/Api.ts @@ -2147,6 +2147,8 @@ export interface ProjectReqType { type?: 'database' | 'documentation' | 'dashboard'; /** List of Linked Database Base IDs (only used for Dashboard Projects so far) */ linked_db_project_ids?: string[]; + /** Base Meta */ + meta?: MetaType; } /** @@ -2184,10 +2186,7 @@ export interface ProjectUpdateReqType { * Model for Base User Request */ export interface ProjectUserReqType { - /** - * Base User Email - * @format email - */ + /** Base User Email */ email: string; /** Base User Role */ roles: @@ -7723,6 +7722,8 @@ export class Api< sortArrJson?: string; /** Used for multiple filter queries */ filterArrJson?: string; + /** Comma separated list of pks */ + pks?: string; }, params: RequestParams = {} ) => @@ -9214,6 +9215,8 @@ export class Api< sortArrJson?: string; /** Used for multiple filter queries */ filterArrJson?: string; + /** Comma separated list of pks */ + pks?: string; }, params: RequestParams = {} ) => @@ -11028,6 +11031,8 @@ export class Api< sortArrJson?: string; /** Used for multiple filter queries */ filterArrJson?: string; + /** Comma separated list of pks */ + pks?: string; }, params: RequestParams = {} ) => diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index f9fcf189a74..8f4dafd4036 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -1,6 +1,6 @@ { "name": "nocodb", - "version": "0.204.4", + "version": "0.204.5", "description": "NocoDB Backend", "main": "dist/bundle.js", "author": { @@ -132,7 +132,7 @@ "mysql2": "^3.9.2", "nanoid": "^3.3.7", "nc-help": "0.3.1", - "nc-lib-gui": "0.204.4", + "nc-lib-gui": "0.204.5", "nc-plugin": "^0.1.3", "ncp": "^2.0.0", "nestjs-kafka": "^1.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abf9f6299c8..3b6cd43a73d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -686,8 +686,8 @@ importers: specifier: 0.3.1 version: 0.3.1(asn1.js@5.4.1)(debug@4.3.4)(knex@2.4.2) nc-lib-gui: - specifier: 0.204.4 - version: 0.204.4 + specifier: 0.204.5 + version: 0.204.5 nc-plugin: specifier: ^0.1.3 version: 0.1.3 @@ -901,7 +901,7 @@ importers: version: 6.3.4 ts-jest: specifier: 29.1.2 - version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.2) + version: 29.1.2(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.2) ts-loader: specifier: ^9.5.1 version: 9.5.1(typescript@5.3.2)(webpack@5.90.3) @@ -971,7 +971,7 @@ importers: version: 5.0.5 ts-jest: specifier: ^29.1.2 - version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.2) + version: 29.1.2(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.2) tsc-alias: specifier: ^1.8.8 version: 1.8.8 @@ -17311,6 +17311,7 @@ packages: /ip@2.0.1: resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} + requiresBuild: true /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -20256,8 +20257,8 @@ packages: - supports-color dev: false - /nc-lib-gui@0.204.4: - resolution: {integrity: sha512-zLTGOpx3s9bPOa5AxHxDflfYdo08OaiYCvgvLnT9+XZSBDw+xCt/HBcvOQQ8TjjNYbg3KISdEkNDeiIt33pLNA==} + /nc-lib-gui@0.204.5: + resolution: {integrity: sha512-n9g9VIcVPadCCdEYpyyMMKBJ/INklLujXHuXe+PhQClN3Ktxcr3ozDENVbnGvCVLaadsImA5nbNlulIgXsJVaw==} dependencies: express: 4.18.3 transitivePeerDependencies: @@ -25009,7 +25010,7 @@ packages: engines: {node: '>=14.0.0'} dev: false - /ts-jest@29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.2): + /ts-jest@29.1.2(@babel/core@7.23.7)(jest@29.7.0)(typescript@5.3.2): resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -25030,7 +25031,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.23.7 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.7.0(@types/node@20.11.25)(ts-node@10.9.2) diff --git a/scripts/pkg-executable/package.json b/scripts/pkg-executable/package.json index 08d223738fe..6ba58986d65 100644 --- a/scripts/pkg-executable/package.json +++ b/scripts/pkg-executable/package.json @@ -33,7 +33,7 @@ "nocodb": "0.204.4" }, "overrides": { - "sqlite3": "5.1.7" + "sqlite3": "5.1.6" }, "devDependencies": { "@mapbox/node-pre-gyp": "^1.0.11" From 953217a59f94b65030a7210cb4aa55129c7c4684 Mon Sep 17 00:00:00 2001 From: Salim B Date: Thu, 14 Mar 2024 14:56:14 +0100 Subject: [PATCH 02/22] Tweak terminology (#7866) --- .../020.getting-started/030.terminologies.md | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/noco-docs/docs/020.getting-started/030.terminologies.md b/packages/noco-docs/docs/020.getting-started/030.terminologies.md index afdc44b5601..d4582965ebd 100644 --- a/packages/noco-docs/docs/020.getting-started/030.terminologies.md +++ b/packages/noco-docs/docs/020.getting-started/030.terminologies.md @@ -30,17 +30,16 @@ The layout below shows the main parts of NocoDB's user interface. | Term | Description | |-----------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Base | A base is a collection of one or more tables, often related and linked to one another. Alternative term `Project` | -| Base Owner | Member who had created base. There can be only one owner for a base & ownership is non-transferable | -| Base member | Base member with specific access permissions. Alternative term `Member` `User` | -| Cell | A cell represents the space created where a column and a row intersect within a grid-like structure. It serves as the fundamental unit for storing data | -| Field | A field or column in a table is a container for values that share the same data type. Alternative term `Column` | -| Modal | In the context of user interfaces, a modal is a type of dialog or overlay that appears on top of the main content or interface and requires user interaction before the user can proceed. Modals are often used to gather user input, display alerts, or confirm actions. They typically "block" the rest of the interface until the user dismisses them, making them a focused and attention-grabbing element | -| Record | A record represents a row in a table. Alternative term `Row` | -| Table | A base is housed in tables, where data is logically arranged into rows and columns. A base can have multiple tables. Alternative term `Model` | -| Term | Description | +| Base | A base is a collection of one or more data sources that each contain one or more tables, often related and linked to one another. Alternative term: `Project` | +| Base owner | Member who created the base. There can be only one owner for a base and ownership is non-transferable. | +| Base member | Base member with specific access permissions. Alternative terms: `Member`, `User` | +| Cell | A cell represents the space created where a column and a row intersect within a grid-like structure. It serves as the fundamental unit for storing data. | +| Field | A field or column in a table is a container for values that share the same data type. Alternative term: `Column` | +| Modal | In the context of user interfaces, a modal is a type of dialog or overlay that appears on top of the main content or interface and requires user interaction before the user can proceed. Modals are often used to gather user input, display alerts, or confirm actions. They typically "block" the rest of the interface until the user dismisses them, making them a focused and attention-grabbing element. | +| Record | A record represents a row in a table. Alternative term: `Row` | +| Table | A table is a matrix where data is logically arranged into rows and columns. A base can have multiple tables. Alternative term: `Model` | | View | A view defines how data within a table is presented and interacted with. Default view type is the grid view; other supported view types include form, gallery, and kanban views. | | Webhook | A webhook is a mechanism that allows one system to send real-time data to another system or application. It enables automated notifications and data synchronization between different services or platforms by triggering predefined actions or events in response to specific events or updates in the source system. | -| Workspace Owner | Member who had created workspace. There can be only one owner for a workspace & ownership is non-transferable | -| Workspace member | Workspace member with specific access permissions. Alternative term `Member` `User` | -| Workspace | A workspace is a collection of one or more bases. It offers collaborative access to bases by enabling you to bring together interconnected tables, views, and various elements into a unified and organized entity | +| Workspace | A workspace is a collection of one or more bases. It offers collaborative access to bases by enabling you to bring together interconnected tables, views, and various elements into a unified and organized entity. | +| Workspace owner | Member who had created the workspace. There can be only one owner for a workspace and ownership is non-transferable. | +| Workspace member | Workspace member with specific access permissions. Alternative terms: `Member`, `User` | From d95b9def0bf662d8b969e9ebc5b1981b61223060 Mon Sep 17 00:00:00 2001 From: navi Date: Thu, 14 Mar 2024 13:57:03 +0000 Subject: [PATCH 03/22] New Crowdin updates (#7863) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Arabic) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Indonesian) * New translations en.json (Persian) * New translations en.json (Thai) * New translations en.json (Croatian) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Bengali, India) --- packages/nc-gui/lang/ar.json | 5 +++-- packages/nc-gui/lang/bn_IN.json | 5 +++-- packages/nc-gui/lang/cs.json | 5 +++-- packages/nc-gui/lang/da.json | 5 +++-- packages/nc-gui/lang/de.json | 5 +++-- packages/nc-gui/lang/es.json | 5 +++-- packages/nc-gui/lang/eu.json | 5 +++-- packages/nc-gui/lang/fa.json | 5 +++-- packages/nc-gui/lang/fi.json | 5 +++-- packages/nc-gui/lang/fr.json | 5 +++-- packages/nc-gui/lang/he.json | 5 +++-- packages/nc-gui/lang/hi.json | 5 +++-- packages/nc-gui/lang/hr.json | 5 +++-- packages/nc-gui/lang/id.json | 5 +++-- packages/nc-gui/lang/it.json | 5 +++-- packages/nc-gui/lang/ja.json | 5 +++-- packages/nc-gui/lang/ko.json | 5 +++-- packages/nc-gui/lang/lv.json | 5 +++-- packages/nc-gui/lang/nl.json | 5 +++-- packages/nc-gui/lang/no.json | 5 +++-- packages/nc-gui/lang/pl.json | 5 +++-- packages/nc-gui/lang/pt.json | 5 +++-- packages/nc-gui/lang/pt_BR.json | 5 +++-- packages/nc-gui/lang/ru.json | 5 +++-- packages/nc-gui/lang/sk.json | 5 +++-- packages/nc-gui/lang/sl.json | 5 +++-- packages/nc-gui/lang/sv.json | 5 +++-- packages/nc-gui/lang/th.json | 5 +++-- packages/nc-gui/lang/tr.json | 5 +++-- packages/nc-gui/lang/uk.json | 5 +++-- packages/nc-gui/lang/vi.json | 5 +++-- packages/nc-gui/lang/zh-Hans.json | 5 +++-- packages/nc-gui/lang/zh-Hant.json | 5 +++-- 33 files changed, 99 insertions(+), 66 deletions(-) diff --git a/packages/nc-gui/lang/ar.json b/packages/nc-gui/lang/ar.json index 9a48203ea86..918e4684a48 100644 --- a/packages/nc-gui/lang/ar.json +++ b/packages/nc-gui/lang/ar.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/bn_IN.json b/packages/nc-gui/lang/bn_IN.json index 2310652475e..63f5789e455 100644 --- a/packages/nc-gui/lang/bn_IN.json +++ b/packages/nc-gui/lang/bn_IN.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/cs.json b/packages/nc-gui/lang/cs.json index b17351cc1bc..f7bbe938226 100644 --- a/packages/nc-gui/lang/cs.json +++ b/packages/nc-gui/lang/cs.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/da.json b/packages/nc-gui/lang/da.json index 0c8684f2bdc..43ef67a4537 100644 --- a/packages/nc-gui/lang/da.json +++ b/packages/nc-gui/lang/da.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/de.json b/packages/nc-gui/lang/de.json index c8046cc3df4..43d7ff0af8b 100644 --- a/packages/nc-gui/lang/de.json +++ b/packages/nc-gui/lang/de.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Name des Arbeitsbereichs ändern", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/es.json b/packages/nc-gui/lang/es.json index 1ec0c7b2647..395635eaee3 100644 --- a/packages/nc-gui/lang/es.json +++ b/packages/nc-gui/lang/es.json @@ -429,7 +429,8 @@ "setDefault": "Establecer por defecto" }, "selectFieldsFromRightPannelToAddHere": "Selecciona los campos del panel derecho para añadirlos aquí", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Seleccionar Año", @@ -681,7 +682,7 @@ "sourceNameRequired": "Se requiere el nombre de la fuente", "changeWsName": "Cambiar el nombre del espacio de trabajo", "pressEnter": "Pulsa Enter", - "newFormLoaded": "El nuevo formulario se cargará después de", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "Nuevo campo", diff --git a/packages/nc-gui/lang/eu.json b/packages/nc-gui/lang/eu.json index 943c06fd571..d5618171d6e 100644 --- a/packages/nc-gui/lang/eu.json +++ b/packages/nc-gui/lang/eu.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/fa.json b/packages/nc-gui/lang/fa.json index 36c17558d6c..d43fc7005db 100644 --- a/packages/nc-gui/lang/fa.json +++ b/packages/nc-gui/lang/fa.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/fi.json b/packages/nc-gui/lang/fi.json index efa2f54cb07..6632cb522c9 100644 --- a/packages/nc-gui/lang/fi.json +++ b/packages/nc-gui/lang/fi.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/fr.json b/packages/nc-gui/lang/fr.json index 3af8a1226e6..43d2542dbbb 100644 --- a/packages/nc-gui/lang/fr.json +++ b/packages/nc-gui/lang/fr.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Appuyez sur Entrée", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/he.json b/packages/nc-gui/lang/he.json index f0ec6f4bdcb..28418a6b8af 100644 --- a/packages/nc-gui/lang/he.json +++ b/packages/nc-gui/lang/he.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/hi.json b/packages/nc-gui/lang/hi.json index fbfbe1f9a60..8ab5171e8cf 100644 --- a/packages/nc-gui/lang/hi.json +++ b/packages/nc-gui/lang/hi.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/hr.json b/packages/nc-gui/lang/hr.json index a31b789de71..1110c31da3c 100644 --- a/packages/nc-gui/lang/hr.json +++ b/packages/nc-gui/lang/hr.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/id.json b/packages/nc-gui/lang/id.json index 09a928fa916..dade1e073a9 100644 --- a/packages/nc-gui/lang/id.json +++ b/packages/nc-gui/lang/id.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/it.json b/packages/nc-gui/lang/it.json index 37f5de219c0..08ca359eb56 100644 --- a/packages/nc-gui/lang/it.json +++ b/packages/nc-gui/lang/it.json @@ -429,7 +429,8 @@ "setDefault": "Imposta default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Nome sorgente obbligatorio", "changeWsName": "Cambia nome area di lavoro", "pressEnter": "Premi Invio", - "newFormLoaded": "Il nuovo form verrà caricato dopo", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "Nuovo campo", diff --git a/packages/nc-gui/lang/ja.json b/packages/nc-gui/lang/ja.json index e28e562d1a9..3e970e8848a 100644 --- a/packages/nc-gui/lang/ja.json +++ b/packages/nc-gui/lang/ja.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/ko.json b/packages/nc-gui/lang/ko.json index 49b74971884..335fc960f8c 100644 --- a/packages/nc-gui/lang/ko.json +++ b/packages/nc-gui/lang/ko.json @@ -429,7 +429,8 @@ "setDefault": "기본값 설정" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "소스 이름이 필요합니다", "changeWsName": "작업 공간 이름 변경", "pressEnter": "Enter를 누르세요", - "newFormLoaded": "새로운 폼이 로드되었습니다.", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/lv.json b/packages/nc-gui/lang/lv.json index 13a8dc188d8..e3ba9665f3f 100644 --- a/packages/nc-gui/lang/lv.json +++ b/packages/nc-gui/lang/lv.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/nl.json b/packages/nc-gui/lang/nl.json index 650c68fbb4f..d3657adf2b7 100644 --- a/packages/nc-gui/lang/nl.json +++ b/packages/nc-gui/lang/nl.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/no.json b/packages/nc-gui/lang/no.json index 9fae7cbf820..672cf3c49cf 100644 --- a/packages/nc-gui/lang/no.json +++ b/packages/nc-gui/lang/no.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/pl.json b/packages/nc-gui/lang/pl.json index e812dd0c614..0c25509d0ad 100644 --- a/packages/nc-gui/lang/pl.json +++ b/packages/nc-gui/lang/pl.json @@ -429,7 +429,8 @@ "setDefault": "Ustaw domyślne" }, "selectFieldsFromRightPannelToAddHere": "Wybierz pole z panelu po prawej stronie aby tutaj dodać", - "noOptionsFound": "Nie znaleziono opcji" + "noOptionsFound": "Nie znaleziono opcji", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Wybierz rok", @@ -681,7 +682,7 @@ "sourceNameRequired": "nazwa źródła jest wymagana", "changeWsName": "Zmień nazwę przestrzeni roboczej", "pressEnter": "Naciśnij Enter", - "newFormLoaded": "Nowy formularz zostanie załadowany po", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "Nowe pole", diff --git a/packages/nc-gui/lang/pt.json b/packages/nc-gui/lang/pt.json index 0b2345522cb..5707b2967cb 100644 --- a/packages/nc-gui/lang/pt.json +++ b/packages/nc-gui/lang/pt.json @@ -429,7 +429,8 @@ "setDefault": "Definir como padrão" }, "selectFieldsFromRightPannelToAddHere": "Seleccione campos do painel direito para adicionar aqui", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Selecionar ano", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/pt_BR.json b/packages/nc-gui/lang/pt_BR.json index 1bbc6e153c9..9c73e1d59d1 100644 --- a/packages/nc-gui/lang/pt_BR.json +++ b/packages/nc-gui/lang/pt_BR.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/ru.json b/packages/nc-gui/lang/ru.json index b0bfc41c592..0fe6ee28fb8 100644 --- a/packages/nc-gui/lang/ru.json +++ b/packages/nc-gui/lang/ru.json @@ -429,7 +429,8 @@ "setDefault": "Установить по умолчанию" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Имя источника обязательно", "changeWsName": "Изменить название рабочего пространства", "pressEnter": "Нажмите Enter", - "newFormLoaded": "Новая форма будет загружена после", + "newFormLoaded": "Loading new form in", "webhook": "Вебхук", "multiField": { "newField": "Новое поле", diff --git a/packages/nc-gui/lang/sk.json b/packages/nc-gui/lang/sk.json index f82ee2e964c..7b5ad0a0053 100644 --- a/packages/nc-gui/lang/sk.json +++ b/packages/nc-gui/lang/sk.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/sl.json b/packages/nc-gui/lang/sl.json index 9c7550fb08b..543e2ea69b9 100644 --- a/packages/nc-gui/lang/sl.json +++ b/packages/nc-gui/lang/sl.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/sv.json b/packages/nc-gui/lang/sv.json index 3871039a79d..701bbbdc450 100644 --- a/packages/nc-gui/lang/sv.json +++ b/packages/nc-gui/lang/sv.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/th.json b/packages/nc-gui/lang/th.json index 67a14851672..9b639013d87 100644 --- a/packages/nc-gui/lang/th.json +++ b/packages/nc-gui/lang/th.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/tr.json b/packages/nc-gui/lang/tr.json index 46ca6876dac..b302a2e3f27 100644 --- a/packages/nc-gui/lang/tr.json +++ b/packages/nc-gui/lang/tr.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/uk.json b/packages/nc-gui/lang/uk.json index 1f58b80be2e..aada1f4aa59 100644 --- a/packages/nc-gui/lang/uk.json +++ b/packages/nc-gui/lang/uk.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/vi.json b/packages/nc-gui/lang/vi.json index bb8b6f95256..f6ca3de2713 100644 --- a/packages/nc-gui/lang/vi.json +++ b/packages/nc-gui/lang/vi.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", diff --git a/packages/nc-gui/lang/zh-Hans.json b/packages/nc-gui/lang/zh-Hans.json index 5a54802e1b9..a472dc3d551 100644 --- a/packages/nc-gui/lang/zh-Hans.json +++ b/packages/nc-gui/lang/zh-Hans.json @@ -429,7 +429,8 @@ "setDefault": "设为默认" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "必须填写源名称", "changeWsName": "更改工作区名称", "pressEnter": "按回车键", - "newFormLoaded": "新表格将在", + "newFormLoaded": "Loading new form in", "webhook": "网络钩子", "multiField": { "newField": "新建字段", diff --git a/packages/nc-gui/lang/zh-Hant.json b/packages/nc-gui/lang/zh-Hant.json index 7cfd258f353..b63b0babeef 100644 --- a/packages/nc-gui/lang/zh-Hant.json +++ b/packages/nc-gui/lang/zh-Hant.json @@ -429,7 +429,8 @@ "setDefault": "Set Default" }, "selectFieldsFromRightPannelToAddHere": "Select fields from right panel to add here", - "noOptionsFound": "No options found" + "noOptionsFound": "No options found", + "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { "selectYear": "Select Year", @@ -681,7 +682,7 @@ "sourceNameRequired": "Source name is required", "changeWsName": "Change Workspace Name", "pressEnter": "Press Enter", - "newFormLoaded": "New form will be loaded after", + "newFormLoaded": "Loading new form in", "webhook": "Webhook", "multiField": { "newField": "New field", From bfd59264e7596b4a33032bbe6ef805d223b761d9 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Thu, 14 Mar 2024 19:33:26 +0530 Subject: [PATCH 04/22] feat(nc-ui): swap pagination shortcuts arrowUp & arrowDown (#7865) --- .../components/smartsheet/grid/usePaginationShortcuts.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/grid/usePaginationShortcuts.ts b/packages/nc-gui/components/smartsheet/grid/usePaginationShortcuts.ts index 9eff4121c41..e9f33f385e3 100644 --- a/packages/nc-gui/components/smartsheet/grid/usePaginationShortcuts.ts +++ b/packages/nc-gui/components/smartsheet/grid/usePaginationShortcuts.ts @@ -56,9 +56,7 @@ const usePaginationShortcuts = ({ if (!e.altKey) return e.preventDefault() - const page = 1 - - await changePageWithLoading(page) + await changePageWithLoading(getTotalPages()) } const onUp = async (e: KeyboardEvent) => { @@ -67,7 +65,7 @@ const usePaginationShortcuts = ({ if (!e.altKey) return e.preventDefault() - await changePageWithLoading(getTotalPages()) + await changePageWithLoading(1) } return { From 872d5b78949b21decea582bff05def4f044924a0 Mon Sep 17 00:00:00 2001 From: IFGGit <162738418+IFGGit@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:20:49 +0200 Subject: [PATCH 05/22] chore(deps): Add integrity for the xlsx tarball (#7835) We are building nocodb using pnpm2nix-nzbr [1], and that library requires all dependencies to have integrities. And it's more secure anyway, since if someone hijacks that website and replaces that tarball with something malicious, pnpm will refuse to use that. [1]: https://github.com/nzbr/pnpm2nix-nzbr --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b6cd43a73d..1104586c553 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27502,7 +27502,7 @@ packages: dev: true '@cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz': - resolution: {tarball: https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz} + resolution: {integrity: sha512-8IfgFctB7fkvqkTGF2MnrDrC6vzE28Wcc1aSbdDQ+4/WFtzfS73YuapbuaPZwGqpR2e0EeDMIrFOJubQVLWFNA==, tarball: https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz} name: xlsx version: 0.19.3 engines: {node: '>=0.8'} From 7dbd824a156efb1f3b1db34c8d91d6860ae095b3 Mon Sep 17 00:00:00 2001 From: Anbarasu Date: Fri, 15 Mar 2024 11:40:07 +0530 Subject: [PATCH 06/22] fix(nocodb): comment update not working for other users (#7873) --- .../middlewares/extract-ids/extract-ids.middleware.ts | 11 +++++++++++ packages/nocodb/src/utils/acl.ts | 2 ++ 2 files changed, 13 insertions(+) diff --git a/packages/nocodb/src/middlewares/extract-ids/extract-ids.middleware.ts b/packages/nocodb/src/middlewares/extract-ids/extract-ids.middleware.ts index 22bbf1bb455..f8f5bce37a7 100644 --- a/packages/nocodb/src/middlewares/extract-ids/extract-ids.middleware.ts +++ b/packages/nocodb/src/middlewares/extract-ids/extract-ids.middleware.ts @@ -11,6 +11,7 @@ import type { NestMiddleware, } from '@nestjs/common'; import { + Audit, Base, Column, Filter, @@ -159,6 +160,16 @@ export class ExtractIdsMiddleware implements NestMiddleware, CanActivate { id: req.query?.fk_model_id, }); req.ncBaseId = model?.base_id; + } else if ( + [ + '/api/v1/db/meta/audits/:auditId/comment', + '/api/v2/meta/audits/:auditId/comment', + ].some((auditPatchPath) => req.route.path === auditPatchPath) && + req.method === 'PATCH' && + req.params.auditId + ) { + const audit = await Audit.get(params.auditId); + req.ncBaseId = audit?.base_id; } // extract base id from query params only if it's userMe endpoint or webhook plugin list else if ( diff --git a/packages/nocodb/src/utils/acl.ts b/packages/nocodb/src/utils/acl.ts index 1501d27e841..09fcc2a89e3 100644 --- a/packages/nocodb/src/utils/acl.ts +++ b/packages/nocodb/src/utils/acl.ts @@ -92,6 +92,7 @@ const permissionScopes = { 'swaggerJson', 'commentList', 'commentsCount', + 'commentUpdate', 'hideAllColumns', 'showAllColumns', 'auditRowUpdate', @@ -197,6 +198,7 @@ const rolePermissions: commentList: true, commentsCount: true, commentRow: true, + commentUpdate: true, }, }, [ProjectRoles.EDITOR]: { From fe02007f5af57404dc1873f356fde0ffe03293b5 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Fri, 15 Mar 2024 12:56:40 +0530 Subject: [PATCH 07/22] Nc fix(nc-gui): select type fields default value update issue (#7864) * fix(nc-gui): select type fields default value update issue * chore(nc-gui): lint * fix(nc-gui): pr review changes #2535 * fix: remove null assertion --------- Co-authored-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- .../dashboard/TreeView/ProjectNode.vue | 2 +- .../smartsheet/column/SelectOptions.vue | 95 +++++++++++++------ 2 files changed, 67 insertions(+), 30 deletions(-) diff --git a/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue b/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue index 44611a4b0a5..b173089da63 100644 --- a/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue +++ b/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue @@ -527,7 +527,7 @@ const projectDelete = () => { v-if="base?.sources?.[0]?.enabled" key="erd" data-testid="nc-sidebar-base-relations" - @click="openErdView(base?.sources?.[0]!)" + @click="openErdView(base?.sources?.[0])" >
diff --git a/packages/nc-gui/components/smartsheet/column/SelectOptions.vue b/packages/nc-gui/components/smartsheet/column/SelectOptions.vue index 111f0751d0a..99ec766c1af 100644 --- a/packages/nc-gui/components/smartsheet/column/SelectOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/SelectOptions.vue @@ -11,6 +11,8 @@ interface Option { id?: string fk_colum_id?: string order?: number + status?: 'remove' + index?: number } const props = defineProps<{ @@ -30,7 +32,7 @@ const { optionsMagic: _optionsMagic } = useNocoEe() const optionsWrapperDomRef = ref() -const options = ref<(Option & { status?: 'remove'; index?: number })[]>([]) +const options = ref([]) const isAddingOption = ref(false) @@ -39,15 +41,14 @@ const OPTIONS_PAGE_COUNT = 20 const loadedOptionAnchor = ref(OPTIONS_PAGE_COUNT) const isReverseLazyLoad = ref(false) -const renderedOptions = ref<(Option & { status?: 'remove'; index?: number })[]>([]) -const savedDefaultOption = ref
From 4c4bd240a83471086b10a32e45e7f955a0315b71 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:26:02 +0000 Subject: [PATCH 08/22] fix: api-snippet-v2 --- packages/nc-gui/components/smartsheet/details/Api.vue | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/details/Api.vue b/packages/nc-gui/components/smartsheet/details/Api.vue index f8683425aa7..d6b2dae3df3 100644 --- a/packages/nc-gui/components/smartsheet/details/Api.vue +++ b/packages/nc-gui/components/smartsheet/details/Api.vue @@ -82,11 +82,7 @@ const selectedClient = ref(langs[0].clients && langs[0].clie const selectedLangName = ref(langs[0].name) const apiUrl = computed( - () => - new URL( - `/api/v1/db/data/noco/${base.value?.id}/${meta.value?.id}/views/${view.value?.id}`, - (appInfo.value && appInfo.value.ncSiteUrl) || '/', - ).href, + () => new URL(`/api/v2/tables/${meta.value?.id}/records`, (appInfo.value && appInfo.value.ncSiteUrl) || '/').href, ) const snippet = computed( From 1048fe90a48afd3be94ccde8f0455ac2b6b7a47f Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Fri, 15 Mar 2024 15:26:03 +0000 Subject: [PATCH 09/22] fix: include viewId as query param --- .../nc-gui/components/smartsheet/details/Api.vue | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/details/Api.vue b/packages/nc-gui/components/smartsheet/details/Api.vue index d6b2dae3df3..efb7197a206 100644 --- a/packages/nc-gui/components/smartsheet/details/Api.vue +++ b/packages/nc-gui/components/smartsheet/details/Api.vue @@ -91,12 +91,15 @@ const snippet = computed( method: 'GET', headers: [{ name: 'xc-auth', value: token.value, comment: 'JWT Auth token' }], url: apiUrl.value, - queryString: Object.entries(queryParams.value || {}).map(([name, value]) => { - return { - name, - value: String(value), - } - }), + queryString: [ + ...Object.entries(queryParams.value || {}).map(([name, value]) => { + return { + name, + value: String(value), + } + }), + { name: 'viewId', value: view.value?.id }, + ], }), ) From f3c626abc3a401c0123970bb7745155f99b2223c Mon Sep 17 00:00:00 2001 From: Anbarasu Date: Sat, 16 Mar 2024 12:12:05 +0530 Subject: [PATCH 10/22] feat(nc-gui): new share ui (#7845) * feat(nc-gui): new share ui * fix(nc-gui): hide view, base tab when opened from base * fix(nc-gui): update prefill form labels * fix(nc-gui): invite user to base * fix(playwright): update share tests * fix(nc-gui): enable shared base edit access in oss * fix(nc-gui): truncate text if overflows * fix(nc-gui): show tooltips if truncated * fix(nc-gui): animate icons * fix(playwright): oss tests fix * fix(nc-gui): review changes * fix(nc-gui): minor changes * fix(nc-gui): update tabs * fix(nc-gui): update translation * fix(nc-gui): update heading size * feat(nc-gui): support sharing any views from share modal * fix(nc-gui): review changes * fix(nc-gui): pr review changes --- .../dlg/share-and-collaborate/ShareBase.vue | 489 ++++++++++++++++-- .../dlg/share-and-collaborate/SharePage.vue | 376 ++++++++------ .../dlg/share-and-collaborate/View.vue | 248 ++++----- .../nc-gui/components/general/CopyUrl.vue | 4 +- .../components/general/ShareProject.vue | 3 +- packages/nc-gui/components/nc/Modal.vue | 4 +- packages/nc-gui/components/nc/Switch.vue | 23 +- packages/nc-gui/components/nc/Tabs.vue | 2 +- .../components/project/ShareBaseDlg.vue | 9 +- packages/nc-gui/components/roles/Badge.vue | 2 +- .../components/workspace/InviteSection.vue | 4 - packages/nc-gui/lang/en.json | 8 +- .../pages/Dashboard/common/Topbar/Share.ts | 38 +- .../pages/Dashboard/common/Topbar/index.ts | 5 +- .../tests/db/features/baseShare.spec.ts | 5 +- 15 files changed, 819 insertions(+), 401 deletions(-) diff --git a/packages/nc-gui/components/dlg/share-and-collaborate/ShareBase.vue b/packages/nc-gui/components/dlg/share-and-collaborate/ShareBase.vue index 3bd06fe17ef..f05f5313d41 100644 --- a/packages/nc-gui/components/dlg/share-and-collaborate/ShareBase.vue +++ b/packages/nc-gui/components/dlg/share-and-collaborate/ShareBase.vue @@ -1,5 +1,8 @@ + + diff --git a/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue b/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue index fafadd37baf..e53e15f81c0 100644 --- a/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue +++ b/packages/nc-gui/components/dlg/share-and-collaborate/SharePage.vue @@ -1,7 +1,7 @@ @@ -459,18 +523,4 @@ watchEffect(() => {}) line-height: 1rem !important; } } - -.nc-modal-share-view-preFillMode { - @apply flex flex-col; - - .ant-radio-wrapper { - @apply !m-0 !flex !items-center w-full px-2 py-1 rounded-lg hover:bg-gray-100; - .ant-radio { - @apply !top-0; - } - .ant-radio + span { - @apply !flex !pl-4; - } - } -} diff --git a/packages/nc-gui/components/dlg/share-and-collaborate/View.vue b/packages/nc-gui/components/dlg/share-and-collaborate/View.vue index dd2742470a6..e3ee76d5db9 100644 --- a/packages/nc-gui/components/dlg/share-and-collaborate/View.vue +++ b/packages/nc-gui/components/dlg/share-and-collaborate/View.vue @@ -1,19 +1,12 @@ - diff --git a/packages/nc-gui/components/roles/Badge.vue b/packages/nc-gui/components/roles/Badge.vue index 8da82c3c193..35da2f77f31 100644 --- a/packages/nc-gui/components/roles/Badge.vue +++ b/packages/nc-gui/components/roles/Badge.vue @@ -13,7 +13,7 @@ const props = withDefaults( { clickable: false, inherit: false, - border: true, + border: false, size: 'sm', }, ) diff --git a/packages/nc-gui/components/workspace/InviteSection.vue b/packages/nc-gui/components/workspace/InviteSection.vue index 48b2fbe87ac..bc01590197c 100644 --- a/packages/nc-gui/components/workspace/InviteSection.vue +++ b/packages/nc-gui/components/workspace/InviteSection.vue @@ -268,10 +268,6 @@ const onRoleChange = (role: keyof typeof RoleLabels) => (inviteData.roles = role @apply rounded; } -.badge-text { - @apply text-[14px] pt-1 text-center; -} - :deep(.ant-select-selection-item) { @apply mt-0.75; } diff --git a/packages/nc-gui/lang/en.json b/packages/nc-gui/lang/en.json index 00857cae811..ce4c83be210 100644 --- a/packages/nc-gui/lang/en.json +++ b/packages/nc-gui/lang/en.json @@ -433,6 +433,7 @@ "surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?" }, "labels": { + "enterMultipleEmails": "Enter multiple E-mails by using commas to separate them", "selectYear": "Select Year", "save": "Save", "cancel": "Cancel", @@ -703,6 +704,9 @@ "clearSelection": "Clear selection" }, "activity": { + "inviteAs": "Invite as", + "toBase": "to base", + "manageAccess": "Manage Access", "addMembers": "Add Members", "enterEmail": "Enter email addresses", "inviteToBase": "Invite to Base", @@ -737,7 +741,7 @@ "outOfSync": "Out of sync", "newSource": "New Data Source", "newWebhook": "New Webhook", - "enablePublicAccess": "Enable Public Access", + "enablePublicAccess": "Enable Public Viewing", "doYouWantToSaveTheChanges": "Do you want to save the changes ?", "editingAccess": "Editing access", "enabledPublicViewing": "Enable Public Viewing", @@ -801,6 +805,8 @@ "invite": "Invite", "inviteMore": "Invite more", "inviteTeam": "Invite Team", + "inviteMembers": "Invite Member(s)", + "inviteUsers": "Invite User(s)", "inviteUser": "Invite User", "inviteToken": "Invite Token", "linkedRecords": "Linked Records", diff --git a/tests/playwright/pages/Dashboard/common/Topbar/Share.ts b/tests/playwright/pages/Dashboard/common/Topbar/Share.ts index bfcfdbfe535..1bc668e9c6d 100644 --- a/tests/playwright/pages/Dashboard/common/Topbar/Share.ts +++ b/tests/playwright/pages/Dashboard/common/Topbar/Share.ts @@ -11,22 +11,21 @@ export class TopbarSharePage extends BasePage { } get() { - return this.rootPage.locator(`.nc-modal-share-collaborate`).locator('.ant-modal-content'); - } - - async clickShareView() { - await this.get().waitFor(); - // collapse header 0: Share Base, 1: Share View - await this.get().locator(`.ant-collapse-header`).nth(1).click(); + return this.rootPage.locator(`.nc-modal-share-collaborate`); } async clickShareProject() { await this.get().locator(`[data-testid="docs-share-dlg-share-base"]`).click(); } + async switchBaseShareTab({ tab }: { tab: 'public' | 'member' }) { + await this.get().getByTestId(`nc-base-share-${tab}`).waitFor({ state: 'visible' }); + await this.get().getByTestId(`nc-base-share-${tab}`).click(); + } + async clickShareViewPublicAccess() { - await expect(this.get().locator(`[data-testid="share-view-toggle"]`)).toHaveCount(1); - await this.get().locator(`[data-testid="share-view-toggle"]`).click(); + await expect(this.get().getByTestId('share-view-toggle')).toHaveCount(1); + await this.get().getByTestId('share-view-toggle').click(); } async clickCopyLink() { @@ -35,7 +34,7 @@ export class TopbarSharePage extends BasePage { async closeModal() { // await this.rootPage.keyboard.press('Escape'); - await this.get().locator('.ant-btn.ant-btn-secondary:has-text("Close")').click(); + await this.get().locator('.ant-btn.ant-btn-secondary:has-text("Finish")').click(); } async clickShareViewWithPassword({ password }: { password: string }) { @@ -48,7 +47,22 @@ export class TopbarSharePage extends BasePage { } async clickShareBase() { - await this.get().locator(`[data-testid="db-share-base"]`).click(); + await this.get().waitFor(); + const shareBase = this.get().getByTestId('nc-share-base-tab'); + + if (await shareBase.isVisible()) { + await shareBase.click(); + } + } + + async clickShareView() { + await this.get().waitFor(); + + const shareView = this.get().getByTestId('nc-share-view-tab'); + + if (await shareView.isVisible()) { + await shareView.click(); + } } async clickShareBasePublicAccess() { @@ -72,6 +86,8 @@ export class TopbarSharePage extends BasePage { async clickShareBaseEditorAccess() { await this.rootPage.waitForTimeout(1000); + await this.switchBaseShareTab({ tab: 'public' }); + const shareBaseSwitch = this.get().locator(`[data-testid="nc-share-base-sub-modal"]`).locator('.ant-switch'); const count = await shareBaseSwitch.count(); diff --git a/tests/playwright/pages/Dashboard/common/Topbar/index.ts b/tests/playwright/pages/Dashboard/common/Topbar/index.ts index d02fd3bddb4..1b2981d8ede 100644 --- a/tests/playwright/pages/Dashboard/common/Topbar/index.ts +++ b/tests/playwright/pages/Dashboard/common/Topbar/index.ts @@ -36,7 +36,7 @@ export class TopbarPage extends BasePage { async getSharedViewUrl(surveyMode = false, password = '', download = false) { await this.clickShare(); - // await this.share.clickShareView(); + await this.share.clickShareView(); await this.share.clickShareViewPublicAccess(); await this.share.clickCopyLink(); if (surveyMode) { @@ -57,6 +57,9 @@ export class TopbarPage extends BasePage { async getSharedBaseUrl({ role, enableSharedBase }: { role: string; enableSharedBase: boolean }) { await this.clickShare(); + await this.share.clickShareBase(); + await this.share.switchBaseShareTab({ tab: 'public' }); + if (enableSharedBase) await this.share.clickShareBasePublicAccess(); if (role === 'editor' && enableSharedBase) { diff --git a/tests/playwright/tests/db/features/baseShare.spec.ts b/tests/playwright/tests/db/features/baseShare.spec.ts index a7426caa176..8879106d08e 100644 --- a/tests/playwright/tests/db/features/baseShare.spec.ts +++ b/tests/playwright/tests/db/features/baseShare.spec.ts @@ -3,7 +3,7 @@ import { DashboardPage } from '../../../pages/Dashboard'; import setup, { NcContext, unsetup } from '../../../setup'; import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar'; import { LoginPage } from '../../../pages/LoginPage'; -import { getDefaultPwd } from '../../../tests/utils/general'; +import { getDefaultPwd } from '../../utils/general'; import { isEE } from '../../../setup/db'; // To be enabled after shared base is implemented @@ -62,9 +62,6 @@ test.describe('Shared base', () => { }); test('#1', async () => { - // close 'Team & Auth' tab - await dashboard.closeTab({ title: 'Team & Auth' }); - let url = ''; // share button visible only if a table is opened await dashboard.treeView.openTable({ title: 'Country' }); From 62414238caac2d11badbb5251fbabf10a6e08133 Mon Sep 17 00:00:00 2001 From: IFGGit <162738418+IFGGit@users.noreply.github.com> Date: Sat, 16 Mar 2024 10:52:07 +0200 Subject: [PATCH 11/22] fix(nc-gui): Hide Rename, Delete, Add record buttons when user doesn't have necessary permissions (#7871) * fix(nc-gui): Remove tableRename, tableDelete from org level role permissions For hiding Rename and Delete buttons in table context menu. * fix(nc-gui): Hide Add record button when user doesn't have dataInsert permission --- .../nc-gui/components/dashboard/TreeView/ProjectNode.vue | 2 +- packages/nc-gui/components/smartsheet/Kanban.vue | 6 +++++- packages/nc-gui/lib/acl.ts | 2 -- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue b/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue index b173089da63..80d9bf86c25 100644 --- a/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue +++ b/packages/nc-gui/components/dashboard/TreeView/ProjectNode.vue @@ -766,7 +766,7 @@ const projectDelete = () => { - +
{{ $t('general.delete') }} diff --git a/packages/nc-gui/components/smartsheet/Kanban.vue b/packages/nc-gui/components/smartsheet/Kanban.vue index 943f9c1c398..f1e210669c7 100644 --- a/packages/nc-gui/components/smartsheet/Kanban.vue +++ b/packages/nc-gui/components/smartsheet/Kanban.vue @@ -513,7 +513,10 @@ const getRowId = (row: RowType) => {
- +
{
+
{{ $t('title.appStore') }}
diff --git a/packages/nc-gui/components/account/License.vue b/packages/nc-gui/components/account/License.vue index cfd1f684b42..9b42bd64b9c 100644 --- a/packages/nc-gui/components/account/License.vue +++ b/packages/nc-gui/components/account/License.vue @@ -36,7 +36,7 @@ loadLicense()