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) {