diff --git a/hosting/docker-compose.dev.yaml b/hosting/docker-compose.dev.yaml index 1626d520b6..7906a389fa 100644 --- a/hosting/docker-compose.dev.yaml +++ b/hosting/docker-compose.dev.yaml @@ -6,7 +6,8 @@ services: minio-service: container_name: budi-minio-dev restart: on-failure - image: minio/minio + # Last version that supports the "fs" backend + image: minio/minio:RELEASE.2022-10-24T18-35-07Z volumes: - minio_data:/data ports: diff --git a/packages/bbui/src/Actions/click_outside.js b/packages/bbui/src/Actions/click_outside.js index 9ea247f997..6842b94a32 100644 --- a/packages/bbui/src/Actions/click_outside.js +++ b/packages/bbui/src/Actions/click_outside.js @@ -5,7 +5,7 @@ let clickHandlers = [] * Handle a body click event */ const handleClick = event => { - // Ignore click if needed + // Ignore click if this is an ignored class for (let className of ignoredClasses) { if (event.target.closest(className)) { return @@ -14,9 +14,18 @@ const handleClick = event => { // Process handlers clickHandlers.forEach(handler => { - if (!handler.element.contains(event.target)) { - handler.callback?.(event) + if (handler.element.contains(event.target)) { + return } + + // Ignore clicks for modals, unless the handler is registered from a modal + const sourceInModal = handler.element.closest(".spectrum-Modal") != null + const clickInModal = event.target.closest(".spectrum-Modal") != null + if (clickInModal && !sourceInModal) { + return + } + + handler.callback?.(event) }) } document.documentElement.addEventListener("click", handleClick, true) diff --git a/packages/bbui/src/Actions/position_dropdown.js b/packages/bbui/src/Actions/position_dropdown.js index e89f28a69e..463b69169f 100644 --- a/packages/bbui/src/Actions/position_dropdown.js +++ b/packages/bbui/src/Actions/position_dropdown.js @@ -3,7 +3,6 @@ export default function positionDropdown( { anchor, align, maxWidth, useAnchorWidth } ) { const update = () => { - console.log("update") const anchorBounds = anchor.getBoundingClientRect() const elementBounds = element.getBoundingClientRect() let styles = { diff --git a/packages/bbui/src/Avatar/Avatar.svelte b/packages/bbui/src/Avatar/Avatar.svelte index 136a4fe24b..1e4cefd8ce 100644 --- a/packages/bbui/src/Avatar/Avatar.svelte +++ b/packages/bbui/src/Avatar/Avatar.svelte @@ -58,5 +58,6 @@ overflow: hidden; user-select: none; text-transform: uppercase; + flex-shrink: 0; } diff --git a/packages/bbui/src/Form/Core/TextField.svelte b/packages/bbui/src/Form/Core/TextField.svelte index 0a723c140a..6a64876a2c 100644 --- a/packages/bbui/src/Form/Core/TextField.svelte +++ b/packages/bbui/src/Form/Core/TextField.svelte @@ -112,8 +112,4 @@ .spectrum-Textfield { width: 100%; } - input:disabled { - color: var(--spectrum-global-color-gray-600) !important; - -webkit-text-fill-color: var(--spectrum-global-color-gray-600) !important; - } diff --git a/packages/bbui/src/Table/Table.svelte b/packages/bbui/src/Table/Table.svelte index 5215a7ed8e..19d361c8b1 100644 --- a/packages/bbui/src/Table/Table.svelte +++ b/packages/bbui/src/Table/Table.svelte @@ -33,6 +33,7 @@ export let allowSelectRows export let allowEditRows = true export let allowEditColumns = true + export let allowClickRows = true export let selectedRows = [] export let customRenderers = [] export let disableSorting = false @@ -373,7 +374,7 @@ {/if} {#if sortedRows?.length} {#each sortedRows as row, idx} -
+
{#if showEditColumn}
{/if} -
- {usage.name} -
+ + + {usage.name} + +
- {#if unlimited} - {usage.used} / Unlimited - {:else} - {usage.used} / {usage.total} - {/if} + + + {#if unlimited} + {usage.used} / Unlimited + {:else} + {usage.used} / {usage.total} + {/if} + +
{#if unlimited} @@ -89,13 +95,14 @@ display: flex; flex-direction: row; justify-content: space-between; + align-items: flex-end; margin-bottom: 12px; + gap: var(--spacing-m); } .header-container { display: flex; } - .heading { - margin-top: 3px; - margin-left: 5px; + .nowrap { + white-space: nowrap; } diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index ad1b5ec7f8..001bf43b50 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -104,7 +104,7 @@
userInfoModal.show()}> - Update user information + My profile import Logo from "assets/bb-emblem.svg" import { goto } from "@roxi/routify" + import { organisation } from "stores/portal" -Budibase Logo $goto("./apps")} /> +Budibase Logo $goto("./apps")} +/> diff --git a/packages/builder/src/pages/builder/portal/overview/[appId]/access/_components/AssignmentModal.svelte b/packages/builder/src/pages/builder/portal/overview/[appId]/access/_components/AssignmentModal.svelte index 0cb8085bb0..b3aed56a48 100644 --- a/packages/builder/src/pages/builder/portal/overview/[appId]/access/_components/AssignmentModal.svelte +++ b/packages/builder/src/pages/builder/portal/overview/[appId]/access/_components/AssignmentModal.svelte @@ -14,6 +14,8 @@ export let app export let appUsers = [] + export let showUsers = false + export let showGroups = false const dispatch = createEventDispatcher() const usersFetch = fetchData({ @@ -41,7 +43,8 @@ $: availableGroups = getAvailableGroups($groups, app.appId, search, data) $: valid = data?.length && !data?.some(x => !x.id?.length || !x.role?.length) $: optionSections = { - ...($licensing.groupsEnabled && + ...(showGroups && + $licensing.groupsEnabled && availableGroups.length && { ["User groups"]: { data: availableGroups, @@ -51,13 +54,15 @@ getColour: group => group.color, }, }), - users: { - data: availableUsers, - getLabel: user => user.email, - getValue: user => user._id, - getIcon: user => user.icon, - getColour: user => user.color, - }, + ...(showUsers && { + users: { + data: availableUsers, + getLabel: user => user.email, + getValue: user => user._id, + getIcon: user => user.icon, + getColour: user => user.color, + }, + }), } const addData = async appData => { @@ -139,7 +144,7 @@ addData(data)} @@ -185,7 +190,7 @@ {/if}
- Add email + Add more
diff --git a/packages/builder/src/pages/builder/portal/overview/[appId]/access/index.svelte b/packages/builder/src/pages/builder/portal/overview/[appId]/access/index.svelte index c17efdb075..62c5da12ec 100644 --- a/packages/builder/src/pages/builder/portal/overview/[appId]/access/index.svelte +++ b/packages/builder/src/pages/builder/portal/overview/[appId]/access/index.svelte @@ -36,7 +36,7 @@ }, role: { displayName: "Access", - width: "160px", + width: "150px", borderLeft: true, }, } @@ -50,6 +50,8 @@ let assignmentModal let appGroups let appUsers + let showAddUsers = false + let showAddGroups = false $: app = $overview.selectedApp $: devAppId = app.devId @@ -153,6 +155,18 @@ await usersFetch.refresh() } + const showUsersModal = () => { + showAddUsers = true + showAddGroups = false + assignmentModal.show() + } + + const showGroupsModal = () => { + showAddUsers = false + showAddGroups = true + assignmentModal.show() + } + setContext("roles", { updateRole, removeRole, @@ -178,7 +192,7 @@
Users - +
{/if} - {#if $usersFetch.loaded && $licensing.groupsEnabled && appGroups.length} + {#if $usersFetch.loaded && $licensing.groupsEnabled}
Groups - +
- +