diff --git a/charts/budibase/templates/app-service-deployment.yaml b/charts/budibase/templates/app-service-deployment.yaml index 72d9fc93a9..2f8242a030 100644 --- a/charts/budibase/templates/app-service-deployment.yaml +++ b/charts/budibase/templates/app-service-deployment.yaml @@ -158,6 +158,10 @@ spec: {{ end }} - name: CDN_URL value: {{ .Values.globals.cdnUrl }} + {{ if .Values.services.tlsRejectUnauthorized }} + - name: NODE_TLS_REJECT_UNAUTHORIZED + value: {{ .Values.services.tlsRejectUnauthorized }} + {{ end }} image: budibase/apps:{{ .Values.globals.appVersion }} imagePullPolicy: Always diff --git a/charts/budibase/templates/minio-service-deployment.yaml b/charts/budibase/templates/minio-service-deployment.yaml index 144dbe539a..d0a367653d 100644 --- a/charts/budibase/templates/minio-service-deployment.yaml +++ b/charts/budibase/templates/minio-service-deployment.yaml @@ -42,6 +42,7 @@ spec: secretKeyRef: name: {{ template "budibase.fullname" . }} key: objectStoreSecret + image: minio/minio imagePullPolicy: "" livenessProbe: diff --git a/charts/budibase/templates/redis-service-deployment.yaml b/charts/budibase/templates/redis-service-deployment.yaml index d94e4d70f8..5916c6d3f9 100644 --- a/charts/budibase/templates/redis-service-deployment.yaml +++ b/charts/budibase/templates/redis-service-deployment.yaml @@ -60,5 +60,6 @@ spec: - name: redis-data persistentVolumeClaim: claimName: redis-data + status: {} {{- end }} diff --git a/charts/budibase/templates/worker-service-deployment.yaml b/charts/budibase/templates/worker-service-deployment.yaml index df692a0723..5e8578212d 100644 --- a/charts/budibase/templates/worker-service-deployment.yaml +++ b/charts/budibase/templates/worker-service-deployment.yaml @@ -149,6 +149,10 @@ spec: {{ end }} - name: CDN_URL value: {{ .Values.globals.cdnUrl }} + {{ if .Values.services.tlsRejectUnauthorized }} + - name: NODE_TLS_REJECT_UNAUTHORIZED + value: {{ .Values.services.tlsRejectUnauthorized }} + {{ end }} image: budibase/worker:{{ .Values.globals.appVersion }} imagePullPolicy: Always diff --git a/charts/budibase/values.yaml b/charts/budibase/values.yaml index a2a761aa86..2cf2767f12 100644 --- a/charts/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -110,6 +110,7 @@ globals: services: budibaseVersion: latest dns: cluster.local + # tlsRejectUnauthorized: 0 proxy: port: 10000 diff --git a/packages/bbui/src/Modal/ModalContent.svelte b/packages/bbui/src/Modal/ModalContent.svelte index 7d3a8d7c40..eb73e255d5 100644 --- a/packages/bbui/src/Modal/ModalContent.svelte +++ b/packages/bbui/src/Modal/ModalContent.svelte @@ -28,9 +28,9 @@ let loading = false $: confirmDisabled = disabled || loading - async function secondary() { + async function secondary(e) { loading = true - if (!secondaryAction || (await secondaryAction()) !== false) { + if (!secondaryAction || (await secondaryAction(e)) !== false) { hide() } loading = false diff --git a/packages/builder/src/components/backend/DataTable/Table.svelte b/packages/builder/src/components/backend/DataTable/Table.svelte index adc35a333d..7c9b5bcf3d 100644 --- a/packages/builder/src/components/backend/DataTable/Table.svelte +++ b/packages/builder/src/components/backend/DataTable/Table.svelte @@ -4,6 +4,7 @@ import { Table, Modal, Heading, notifications, Layout } from "@budibase/bbui" import { API } from "api" import Spinner from "components/common/Spinner.svelte" + import ConfirmDialog from "components/common/ConfirmDialog.svelte" import DeleteRowsButton from "./buttons/DeleteRowsButton.svelte" import CreateEditRow from "./modals/CreateEditRow.svelte" import CreateEditUser from "./modals/CreateEditUser.svelte" @@ -34,8 +35,8 @@ let editRowModal let editColumnModal let customRenderers = [] + let confirmDelete - $: isInternal = type !== "external" $: isUsersTable = tableId === TableNames.USERS $: data && resetSelectedRows() $: editRowComponent = isUsersTable ? CreateEditUser : CreateEditRow @@ -89,15 +90,17 @@ ) } - const deleteRows = async () => { + const deleteRows = async targetRows => { try { await API.deleteRows({ tableId, - rows: selectedRows, + rows: targetRows, }) - data = data.filter(row => !selectedRows.includes(row)) - notifications.success(`Successfully deleted ${selectedRows.length} rows`) - selectedRows = [] + + const deletedRowIds = targetRows.map(row => row._id) + data = data.filter(row => deletedRowIds.indexOf(row._id)) + + notifications.success(`Successfully deleted ${targetRows.length} rows`) } catch (error) { notifications.error("Error deleting rows") } @@ -133,7 +136,14 @@
{#if !isUsersTable && selectedRows.length > 0} - + { + await deleteRows(rows) + resetSelectedRows() + }} + /> {/if}
@@ -164,8 +174,33 @@ - + { + confirmDelete.show() + }} + row={editableRow} + /> + + { + if (editableRow) { + await deleteRows([editableRow]) + } + editableRow = undefined + }} + onCancel={async () => { + editRow(editableRow) + }} + title="Confirm Deletion" +> + Are you sure you want to delete this row? + + - - {#each tableSchema as [key, meta]} - {#if !meta.autocolumn && meta.type !== FORMULA_TYPE} -
- -
- {/if} - {/each} -
+ + { + dispatch("deleteRows", row) + }} + > + {#each tableSchema as [key, meta]} + {#if !meta.autocolumn && meta.type !== FORMULA_TYPE} +
+ +
+ {/if} + {/each} +
+
diff --git a/packages/client/src/components/Component.svelte b/packages/client/src/components/Component.svelte index e5fe100372..aa03b3ce8a 100644 --- a/packages/client/src/components/Component.svelte +++ b/packages/client/src/components/Component.svelte @@ -479,6 +479,7 @@ definition.name !== "Screenslot" && children.length === 0 && !instance._blockElementHasChildren && + !definition.block && definition.skeleton !== false diff --git a/packages/client/src/components/app/blocks/CardsBlock.svelte b/packages/client/src/components/app/blocks/CardsBlock.svelte index 9c110d7097..5098a3acf4 100644 --- a/packages/client/src/components/app/blocks/CardsBlock.svelte +++ b/packages/client/src/components/app/blocks/CardsBlock.svelte @@ -36,7 +36,6 @@ let dataProviderId let repeaterId let schema - let schemaLoaded = false $: fetchSchema(dataSource) $: enrichedSearchColumns = enrichSearchColumns(searchColumns, schema) @@ -75,138 +74,135 @@ enrichRelationships: true, }) } - schemaLoaded = true } -{#if schemaLoaded} - - - {#if title || enrichedSearchColumns?.length || showTitleButton} + + + {#if title || enrichedSearchColumns?.length || showTitleButton} + + + {#if enrichedSearchColumns?.length} + {#each enrichedSearchColumns as column, idx} + + {/each} + {/if} + {#if showTitleButton} + + {/if} + + + {/if} + + + - - - {#if enrichedSearchColumns?.length} - {#each enrichedSearchColumns as column, idx} - - {/each} - {/if} - {#if showTitleButton} - - {/if} - - - {/if} - - - - + /> - -{/if} + + diff --git a/packages/client/src/components/app/blocks/TableBlock.svelte b/packages/client/src/components/app/blocks/TableBlock.svelte index 392ada138b..0984c901a3 100644 --- a/packages/client/src/components/app/blocks/TableBlock.svelte +++ b/packages/client/src/components/app/blocks/TableBlock.svelte @@ -36,7 +36,6 @@ let newRowSidePanelId let schema let primaryDisplay - let schemaLoaded = false $: fetchSchema(dataSource) $: enrichedSearchColumns = enrichSearchColumns(searchColumns, schema) @@ -89,7 +88,6 @@ enrichRelationships: true, }) } - schemaLoaded = true } const getNormalFields = schema => { @@ -113,162 +111,160 @@ } -{#if schemaLoaded} - - - {#if title || enrichedSearchColumns?.length || showTitleButton} + + + {#if title || enrichedSearchColumns?.length || showTitleButton} + + - - - {#if enrichedSearchColumns?.length} - {#each enrichedSearchColumns as column, idx} - - {/each} - {/if} - {#if showTitleButton} + {#if enrichedSearchColumns?.length} + {#each enrichedSearchColumns as column, idx} - {/if} - + {/each} + {/if} + {#if showTitleButton} + + {/if} - {/if} + + {/if} + + + {#if clickBehaviour === "details"} + - {#if clickBehaviour === "details"} + {/if} + {#if showTitleButton && titleButtonClickBehaviour === "new"} + - - - {/if} - {#if showTitleButton && titleButtonClickBehaviour === "new"} - - - - {/if} - - -{/if} + name="New row form block" + type="formblock" + props={{ + dataSource, + showSaveButton: true, + showDeleteButton: false, + actionType: "Create", + fields: normalFields, + title: "Create Row", + labelPosition: "left", + }} + /> + + {/if} + + diff --git a/packages/client/src/components/app/forms/Form.svelte b/packages/client/src/components/app/forms/Form.svelte index 8950661bd8..e2a6dcf7c5 100644 --- a/packages/client/src/components/app/forms/Form.svelte +++ b/packages/client/src/components/app/forms/Form.svelte @@ -20,7 +20,6 @@ const context = getContext("context") const { API, fetchDatasourceSchema } = getContext("sdk") - let loaded = false let schema let table @@ -49,9 +48,6 @@ // Fetches the form schema from this form's dataSource const fetchSchema = async dataSource => { schema = (await fetchDatasourceSchema(dataSource)) || {} - if (!loaded) { - loaded = true - } } const fetchTable = async dataSource => { @@ -70,21 +66,19 @@ ) -{#if loaded} - {#key resetKey} - - - - {/key} -{/if} +{#key resetKey} + + + +{/key} diff --git a/packages/client/src/stores/derived/currentRole.js b/packages/client/src/stores/derived/currentRole.js index 28287e1ea4..a56b26050c 100644 --- a/packages/client/src/stores/derived/currentRole.js +++ b/packages/client/src/stores/derived/currentRole.js @@ -1,4 +1,5 @@ import { derived } from "svelte/store" +import { Constants } from "@budibase/frontend-core" import { devToolsStore } from "../devTools.js" import { authStore } from "../auth.js" @@ -6,6 +7,10 @@ import { authStore } from "../auth.js" export const currentRole = derived( [devToolsStore, authStore], ([$devToolsStore, $authStore]) => { - return ($devToolsStore.enabled && $devToolsStore.role) || $authStore?.roleId + return ( + ($devToolsStore.enabled && $devToolsStore.role) || + $authStore?.roleId || + Constants.Roles.PUBLIC + ) } )