diff --git a/packages/builder/src/components/backend/RoleEditor/RoleNode.svelte b/packages/builder/src/components/backend/RoleEditor/RoleNode.svelte
index d7db4b72ba..eda225b604 100644
--- a/packages/builder/src/components/backend/RoleEditor/RoleNode.svelte
+++ b/packages/builder/src/components/backend/RoleEditor/RoleNode.svelte
@@ -45,12 +45,13 @@
}
const saveChanges = async () => {
- flow.updateNodeData(id, {
+ const newData = {
displayName: tempDisplayName,
description: tempDescription,
color: tempColor,
- })
- await roles.save(nodeToRole({ id, data }))
+ }
+ flow.updateNodeData(id, newData)
+ await roles.save(nodeToRole({ id, data: newData }))
}
const doAutoLayout = () => {
@@ -81,7 +82,7 @@
{/if}
{#if data.description}
-
+
{data.description}
{/if}
@@ -169,7 +170,8 @@
.title :global(.spectrum-Icon) {
color: var(--spectrum-global-color-gray-600);
}
- .name {
+ .name,
+ .description {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
diff --git a/packages/builder/src/pages/builder/app/[application]/data/table/[tableId]/index.svelte b/packages/builder/src/pages/builder/app/[application]/data/table/[tableId]/index.svelte
index b9b58cbfce..93ec3d0764 100644
--- a/packages/builder/src/pages/builder/app/[application]/data/table/[tableId]/index.svelte
+++ b/packages/builder/src/pages/builder/app/[application]/data/table/[tableId]/index.svelte
@@ -6,6 +6,7 @@
integrations,
appStore,
rowActions,
+ roles,
} from "stores/builder"
import { themeStore, admin } from "stores/portal"
import { TableNames } from "constants"
@@ -26,16 +27,20 @@
import GridRowActionsButton from "components/backend/DataTable/buttons/grid/GridRowActionsButton.svelte"
import { DB_TYPE_EXTERNAL } from "constants/backend"
- const userSchemaOverrides = {
+ let generateButton
+
+ $: userSchemaOverrides = {
firstName: { displayName: "First name", disabled: true },
lastName: { displayName: "Last name", disabled: true },
email: { displayName: "Email", disabled: true },
- roleId: { displayName: "Role", disabled: true },
status: { displayName: "Status", disabled: true },
+ roleId: {
+ displayName: "Role",
+ type: "role",
+ disabled: true,
+ roles: $roles,
+ },
}
-
- let generateButton
-
$: autoColumnStatus = verifyAutocolumns($tables?.selected)
$: duplicates = Object.values(autoColumnStatus).reduce((acc, status) => {
if (status.length > 1) {
diff --git a/packages/frontend-core/src/components/grid/cells/DataCell.svelte b/packages/frontend-core/src/components/grid/cells/DataCell.svelte
index 5d5f06872d..cd6b61af80 100644
--- a/packages/frontend-core/src/components/grid/cells/DataCell.svelte
+++ b/packages/frontend-core/src/components/grid/cells/DataCell.svelte
@@ -66,7 +66,7 @@
focus: () => api?.focus?.(),
blur: () => api?.blur?.(),
isActive: () => api?.isActive?.() ?? false,
- onKeyDown: (...params) => api?.onKeyDown(...params),
+ onKeyDown: (...params) => api?.onKeyDown?.(...params),
isReadonly: () => readonly,
getType: () => column.schema.type,
getValue: () => row[column.name],
diff --git a/packages/frontend-core/src/components/grid/cells/RoleCell.svelte b/packages/frontend-core/src/components/grid/cells/RoleCell.svelte
new file mode 100644
index 0000000000..b638d0e0e3
--- /dev/null
+++ b/packages/frontend-core/src/components/grid/cells/RoleCell.svelte
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+ {role?.displayName || role?.name || value}
+
+
+
+
diff --git a/packages/frontend-core/src/components/grid/lib/renderers.js b/packages/frontend-core/src/components/grid/lib/renderers.js
index 2e22ee1871..607240b7a2 100644
--- a/packages/frontend-core/src/components/grid/lib/renderers.js
+++ b/packages/frontend-core/src/components/grid/lib/renderers.js
@@ -15,6 +15,7 @@ import AttachmentSingleCell from "../cells/AttachmentSingleCell.svelte"
import BBReferenceCell from "../cells/BBReferenceCell.svelte"
import SignatureCell from "../cells/SignatureCell.svelte"
import BBReferenceSingleCell from "../cells/BBReferenceSingleCell.svelte"
+import RoleCell from "../cells/RoleCell.svelte"
const TypeComponentMap = {
[FieldType.STRING]: TextCell,
@@ -33,6 +34,9 @@ const TypeComponentMap = {
[FieldType.JSON]: JSONCell,
[FieldType.BB_REFERENCE]: BBReferenceCell,
[FieldType.BB_REFERENCE_SINGLE]: BBReferenceSingleCell,
+
+ // Custom types for UI only
+ role: RoleCell,
}
export const getCellRenderer = column => {
return TypeComponentMap[column?.schema?.type] || TextCell
diff --git a/packages/frontend-core/src/components/grid/stores/columns.js b/packages/frontend-core/src/components/grid/stores/columns.js
index 0073754a5d..61d1f41fc8 100644
--- a/packages/frontend-core/src/components/grid/stores/columns.js
+++ b/packages/frontend-core/src/components/grid/stores/columns.js
@@ -145,6 +145,7 @@ export const initialise = context => {
readonly: fieldSchema.readonly,
order: fieldSchema.order ?? oldColumn?.order,
conditions: fieldSchema.conditions,
+ enrichValue: fieldSchema.enrichValue,
}
// Override a few properties for primary display
if (field === primaryDisplay) {