diff --git a/packages/frontend-core/src/components/grid/controls/ColumnsSettingButton.svelte b/packages/frontend-core/src/components/grid/controls/ColumnsSettingButton.svelte index 6efaed5d96..2f3b1df405 100644 --- a/packages/frontend-core/src/components/grid/controls/ColumnsSettingButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/ColumnsSettingButton.svelte @@ -2,6 +2,7 @@ import { getContext } from "svelte" import { ActionButton, Popover, Toggle, Icon } from "@budibase/bbui" import { getColumnIcon } from "../lib/utils" + import ToggleActionButtonGroup from "./ToggleActionButtonGroup.svelte" const { columns, datasource, stickyColumn, dispatch } = getContext("grid") @@ -11,8 +12,11 @@ $: anyHidden = $columns.some(col => !col.visible) $: text = getText($columns) - const toggleColumn = async (column, visible) => { - datasource.actions.addSchemaMutation(column.name, { visible }) + const toggleColumn = async (column, permission) => { + const visible = permission !== PERMISSION_OPTIONS.HIDDEN + const readonly = permission === PERMISSION_OPTIONS.READONLY + + datasource.actions.addSchemaMutation(column.name, { visible, readonly }) await datasource.actions.saveSchemaMutations() dispatch(visible ? "show-column" : "hide-column") } @@ -21,6 +25,24 @@ const hidden = columns.filter(col => !col.visible).length return hidden ? `Columns (${hidden})` : "Columns" } + + const PERMISSION_OPTIONS = { + WRITABLE: "writable", + READONLY: "readonly", + HIDDEN: "hidden", + } + + function columnToPermissionOptions(column) { + if (!column.visible) { + return PERMISSION_OPTIONS.HIDDEN + } + + if (column.readonly) { + return PERMISSION_OPTIONS.READONLY + } + + return PERMISSION_OPTIONS.WRITABLE + }