From 2477f4f40b852e08b64a3fcfb01ad00cdc39d641 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 15:39:46 +0000
Subject: [PATCH 01/26] Update click outside handler to handle modals properly
---
packages/bbui/src/Actions/click_outside.js | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
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)
From 034871ebad83081096ee01e7f24248f099dce30b Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 15:41:00 +0000
Subject: [PATCH 02/26] Remove log
---
packages/bbui/src/Actions/position_dropdown.js | 1 -
1 file changed, 1 deletion(-)
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 = {
From e32dc5237ad9157a2a8a5f91be3a609dc4462d5f Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 15:42:59 +0000
Subject: [PATCH 03/26] Fix mobile menu upgrade button not closing menu
---
.../src/pages/builder/portal/_components/MobileMenu.svelte | 2 +-
.../pages/builder/portal/_components/UpgradeButton.svelte | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte b/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
index bfb08f9b36..8baf7609d0 100644
--- a/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
+++ b/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
@@ -38,7 +38,7 @@
{/each}
-
+
diff --git a/packages/builder/src/pages/builder/portal/_components/UpgradeButton.svelte b/packages/builder/src/pages/builder/portal/_components/UpgradeButton.svelte
index 29066b8117..f1d8b5c762 100644
--- a/packages/builder/src/pages/builder/portal/_components/UpgradeButton.svelte
+++ b/packages/builder/src/pages/builder/portal/_components/UpgradeButton.svelte
@@ -7,6 +7,7 @@
{#if $admin.cloud && $auth?.user?.accountPortalAccess}
{
$goto($admin.accountPortalUrl + "/portal/upgrade")
}}
@@ -14,7 +15,11 @@
Upgrade
{:else if !$admin.cloud && $auth.isAdmin}
- $goto("/builder/portal/account/upgrade")}>
+ $goto("/builder/portal/account/upgrade")}
+ on:click
+ >
Upgrade
{/if}
From abd84118d9886568d0fdc7b0ed0a6c4153e3bda9 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 15:52:37 +0000
Subject: [PATCH 04/26] Hide groups page if disabled at tenant level
---
.../src/pages/builder/portal/users/_layout.svelte | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/packages/builder/src/pages/builder/portal/users/_layout.svelte b/packages/builder/src/pages/builder/portal/users/_layout.svelte
index f9c9be94b7..79d749f21c 100644
--- a/packages/builder/src/pages/builder/portal/users/_layout.svelte
+++ b/packages/builder/src/pages/builder/portal/users/_layout.svelte
@@ -2,6 +2,7 @@
import { Page } from "@budibase/bbui"
import { SideNav, SideNavItem, Content } from "components/portal/page"
import { isActive, url } from "@roxi/routify"
+ import { isEnabled, TENANT_FEATURE_FLAGS } from "helpers/featureFlags"
$: wide = $isActive("./users/index") || $isActive("./groups/index")
@@ -15,11 +16,13 @@
url={$url("./users")}
active={$isActive("./users")}
/>
-
+ {#if isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)}
+
+ {/if}
From 5d24fe0a13c1543359eafb0976d73f3cc78be084 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 16:50:43 +0000
Subject: [PATCH 05/26] Centralise menu logic and show full menu on mobile
---
.../portal/_components/MobileMenu.svelte | 38 ++++--
.../src/pages/builder/portal/_layout.svelte | 61 +--------
.../builder/portal/account/_layout.svelte | 35 +----
.../builder/portal/settings/_layout.svelte | 30 +----
.../pages/builder/portal/users/_layout.svelte | 20 +--
.../pages/builder/portal/users/index.svelte | 4 +
packages/builder/src/stores/portal/index.js | 1 +
packages/builder/src/stores/portal/menu.js | 120 ++++++++++++++++++
8 files changed, 179 insertions(+), 130 deletions(-)
create mode 100644 packages/builder/src/pages/builder/portal/users/index.svelte
create mode 100644 packages/builder/src/stores/portal/menu.js
diff --git a/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte b/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
index 8baf7609d0..0077c0acc9 100644
--- a/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
+++ b/packages/builder/src/pages/builder/portal/_components/MobileMenu.svelte
@@ -6,9 +6,9 @@
import UpgradeButton from "./UpgradeButton.svelte"
import { fade } from "svelte/transition"
import Logo from "./Logo.svelte"
+ import { menu } from "stores/portal"
export let visible = false
- export let menu
const dispatch = createEventDispatcher()
@@ -28,13 +28,28 @@
- {#each menu as { title, href }}
-
+ {#each $menu as { title, href, subPages }}
+ {#if !subPages?.length}
+
+ {/if}
+ {/each}
+ {#each $menu as { title, href, subPages }}
+ {#if subPages?.length}
+ {title}
+ {#each subPages as { title, href }}
+
+ {/each}
+ {/if}
{/each}
@@ -47,6 +62,13 @@
.mobile-nav {
display: none;
}
+ .category {
+ color: var(--spectrum-global-color-gray-600);
+ font-size: var(--font-size-s);
+ margin-left: var(--spacing-m);
+ margin-top: 24px;
+ margin-bottom: 4px;
+ }
@media (max-width: 640px) {
.mobile-nav-underlay {
diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte
index 9048502550..8cc5f5c79e 100644
--- a/packages/builder/src/pages/builder/portal/_layout.svelte
+++ b/packages/builder/src/pages/builder/portal/_layout.svelte
@@ -1,9 +1,8 @@
-
-
-
- {#if $admin.cloud && $auth?.user?.accountPortalAccess}
-
- {:else if !$admin.cloud && admin}
-
- {/if}
-
- {#if $auth?.user?.accountPortalAccess && $auth.user.account.stripeCustomerId}
-
- {/if}
+ {#each pages as { title, href }}
+
+ {/each}
diff --git a/packages/builder/src/pages/builder/portal/settings/_layout.svelte b/packages/builder/src/pages/builder/portal/settings/_layout.svelte
index 57410bcaeb..ec26ca5754 100644
--- a/packages/builder/src/pages/builder/portal/settings/_layout.svelte
+++ b/packages/builder/src/pages/builder/portal/settings/_layout.svelte
@@ -1,38 +1,20 @@
-
-
-
- {#if !$admin.cloud}
-
- {/if}
+ {#each pages as { title, href }}
+
+ {/each}
diff --git a/packages/builder/src/pages/builder/portal/users/_layout.svelte b/packages/builder/src/pages/builder/portal/users/_layout.svelte
index 79d749f21c..97de1eeabf 100644
--- a/packages/builder/src/pages/builder/portal/users/_layout.svelte
+++ b/packages/builder/src/pages/builder/portal/users/_layout.svelte
@@ -1,28 +1,20 @@
-
- {#if isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)}
-
- {/if}
+ {#each pages as { title, href }}
+
+ {/each}
diff --git a/packages/builder/src/pages/builder/portal/users/index.svelte b/packages/builder/src/pages/builder/portal/users/index.svelte
new file mode 100644
index 0000000000..4dbb81f7c6
--- /dev/null
+++ b/packages/builder/src/pages/builder/portal/users/index.svelte
@@ -0,0 +1,4 @@
+
diff --git a/packages/builder/src/stores/portal/index.js b/packages/builder/src/stores/portal/index.js
index 81d26b900e..9a27604034 100644
--- a/packages/builder/src/stores/portal/index.js
+++ b/packages/builder/src/stores/portal/index.js
@@ -11,3 +11,4 @@ export { groups } from "./groups"
export { plugins } from "./plugins"
export { backups } from "./backups"
export { overview } from "./overview"
+export { menu } from "./menu"
diff --git a/packages/builder/src/stores/portal/menu.js b/packages/builder/src/stores/portal/menu.js
new file mode 100644
index 0000000000..54ed4bdba8
--- /dev/null
+++ b/packages/builder/src/stores/portal/menu.js
@@ -0,0 +1,120 @@
+import { derived } from "svelte/store"
+import { isEnabled, TENANT_FEATURE_FLAGS } from "helpers/featureFlags"
+import { admin } from "./admin"
+import { auth } from "./auth"
+
+export const menu = derived([admin, auth], ([$admin, $auth]) => {
+ // Standard user and developer pages
+ let menu = [
+ {
+ title: "Apps",
+ href: "/builder/portal/apps",
+ },
+ {
+ title: "Plugins",
+ href: "/builder/portal/plugins",
+ },
+ ]
+
+ // Admin only pages
+ if ($auth.isAdmin) {
+ // Determine user sub pages
+ let userSubPages = [
+ {
+ title: "Users",
+ href: "/builder/portal/users/users",
+ },
+ ]
+ if (isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)) {
+ userSubPages.push({
+ title: "Groups",
+ href: "/builder/portal/users/groups",
+ })
+ }
+
+ // Determine settings sub pages
+ let settingsSubPages = [
+ {
+ title: "Auth",
+ href: "/builder/portal/settings/auth",
+ },
+ {
+ title: "Email",
+ href: "/builder/portal/settings/email",
+ },
+ {
+ title: "Organisation",
+ href: "/builder/portal/settings/organisation",
+ },
+ ]
+ if (!$admin.cloud) {
+ settingsSubPages.push({
+ title: "Version",
+ href: "/builder/portal/settings/version",
+ })
+ }
+
+ menu = [
+ {
+ title: "Apps",
+ href: "/builder/portal/apps",
+ },
+ {
+ title: "Users",
+ href: "/builder/portal/users",
+ subPages: userSubPages,
+ },
+ {
+ title: "Plugins",
+ href: "/builder/portal/plugins",
+ },
+ {
+ title: "Settings",
+ href: "/builder/portal/settings",
+ subPages: settingsSubPages,
+ },
+ ]
+ }
+
+ // Check if allowed access to account section
+ if (
+ isEnabled(TENANT_FEATURE_FLAGS.LICENSING) &&
+ ($auth?.user?.accountPortalAccess || (!$admin.cloud && $auth.isAdmin))
+ ) {
+ // Determine account sub pages
+ let accountSubPages = [
+ {
+ title: "Usage",
+ href: "/builder/portal/account/usage",
+ },
+ ]
+ if ($admin.cloud && $auth?.user?.accountPortalAccess) {
+ accountSubPages.push({
+ title: "Upgrade",
+ href: $admin.accountPortalUrl + "/portal/upgrade",
+ })
+ } else if (!$admin.cloud && admin) {
+ accountSubPages.push({
+ title: "Upgrade",
+ href: "/builder/portal/account/upgrade",
+ })
+ }
+ if (
+ $auth?.user?.accountPortalAccess &&
+ $auth.user.account.stripeCustomerId
+ ) {
+ accountSubPages.push({
+ title: "Billing",
+ href: $admin.accountPortalUrl + "/portal/billing",
+ })
+ }
+
+ menu.push({
+ title: "Account",
+ href: "/builder/portal/account",
+ subPages: accountSubPages,
+ })
+ }
+
+ return menu
+})
From 4e4b074635b477a16c399d4a68fc0156755036a9 Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Thu, 12 Jan 2023 17:04:05 +0000
Subject: [PATCH 06/26] Update app access assignment and fix backups table
---
.../src/pages/builder/apps/index.svelte | 2 +-
.../apps/_components/AcessFilter.svelte | 49 -------------------
.../access/_components/AssignmentModal.svelte | 23 +++++----
.../overview/[appId]/access/index.svelte | 30 +++++++++---
.../overview/[appId]/backups/index.svelte | 2 +-
5 files changed, 40 insertions(+), 66 deletions(-)
delete mode 100644 packages/builder/src/pages/builder/portal/apps/_components/AcessFilter.svelte
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 { PickerDropdown } from "@budibase/bbui"
- import { groups } from "stores/portal"
- import { createEventDispatcher } from "svelte"
-
- const dispatch = createEventDispatcher()
-
- let filter = null
- $: filteredGroups = !filter
- ? $groups
- : $groups.filter(group =>
- group.name?.toLowerCase().includes(filter.toLowerCase())
- )
-
- $: optionSections = {
- groups: {
- data: filteredGroups,
- getLabel: group => group.name,
- getValue: group => group._id,
- getIcon: group => group.icon,
- getColour: group => group.color,
- },
- }
-
- $: onChange = selected => {
- const { detail } = selected
- if (!detail || Object.keys(detail).length == 0) {
- dispatch("change", null)
- return
- }
-
- const groupSelected = $groups.find(x => x._id === detail)
- const appRoleIds = groupSelected?.roles
- ? Object.keys(groupSelected?.roles)
- : []
- dispatch("change", appRoleIds)
- }
-
-
- {
- filter = null
- }}
-/>
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..37143e25c1 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 => {
@@ -185,7 +190,7 @@
{/if}
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..43eea4aaa6 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
- Assign user
+ Assign user
Groups
-
- Assign group
-
+ Assign group
-
+
From 1d9ab4163ff3e75167ddabb9d4805112e7c9568d Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Fri, 13 Jan 2023 08:28:33 +0000
Subject: [PATCH 08/26] Standardise disabled field text colour
---
packages/bbui/src/Form/Core/TextField.svelte | 4 ----
packages/bbui/src/bbui.css | 3 ++-
2 files changed, 2 insertions(+), 5 deletions(-)
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/bbui.css b/packages/bbui/src/bbui.css
index b3213ef694..ef3483d3df 100644
--- a/packages/bbui/src/bbui.css
+++ b/packages/bbui/src/bbui.css
@@ -40,7 +40,6 @@
--rounded-medium: 8px;
--rounded-large: 16px;
-
--font-sans: "Source Sans Pro", -apple-system, BlinkMacSystemFont, Segoe UI, "Inter",
"Helvetica Neue", Arial, "Noto Sans", sans-serif;
--font-accent: "Source Sans Pro", -apple-system, BlinkMacSystemFont, Segoe UI, "Inter",
@@ -92,6 +91,8 @@
--border-light-2: 2px var(--grey-3) solid;
--border-blue: 2px var(--blue) solid;
--border-transparent: 2px transparent solid;
+
+ --spectrum-alias-text-color-disabled: var(--spectrum-global-color-gray-600);
}
a {
From e23f7dde47bc984faabee256141e7d36d9e7f46b Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Fri, 13 Jan 2023 08:28:54 +0000
Subject: [PATCH 09/26] Allow developer users to access users, groups and usage
pages
---
packages/builder/src/stores/portal/menu.js | 75 +++++++++-------------
1 file changed, 29 insertions(+), 46 deletions(-)
diff --git a/packages/builder/src/stores/portal/menu.js b/packages/builder/src/stores/portal/menu.js
index 54ed4bdba8..29fd6144f5 100644
--- a/packages/builder/src/stores/portal/menu.js
+++ b/packages/builder/src/stores/portal/menu.js
@@ -4,35 +4,39 @@ import { admin } from "./admin"
import { auth } from "./auth"
export const menu = derived([admin, auth], ([$admin, $auth]) => {
- // Standard user and developer pages
+ // Determine user sub pages
+ let userSubPages = [
+ {
+ title: "Users",
+ href: "/builder/portal/users/users",
+ },
+ ]
+ if (isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)) {
+ userSubPages.push({
+ title: "Groups",
+ href: "/builder/portal/users/groups",
+ })
+ }
+
+ // Pages that all devs and admins can access
let menu = [
{
title: "Apps",
href: "/builder/portal/apps",
},
+ {
+ title: "Users",
+ href: "/builder/portal/users",
+ subPages: userSubPages,
+ },
{
title: "Plugins",
href: "/builder/portal/plugins",
},
]
- // Admin only pages
+ // Add settings page for admins
if ($auth.isAdmin) {
- // Determine user sub pages
- let userSubPages = [
- {
- title: "Users",
- href: "/builder/portal/users/users",
- },
- ]
- if (isEnabled(TENANT_FEATURE_FLAGS.USER_GROUPS)) {
- userSubPages.push({
- title: "Groups",
- href: "/builder/portal/users/groups",
- })
- }
-
- // Determine settings sub pages
let settingsSubPages = [
{
title: "Auth",
@@ -53,35 +57,15 @@ export const menu = derived([admin, auth], ([$admin, $auth]) => {
href: "/builder/portal/settings/version",
})
}
-
- menu = [
- {
- title: "Apps",
- href: "/builder/portal/apps",
- },
- {
- title: "Users",
- href: "/builder/portal/users",
- subPages: userSubPages,
- },
- {
- title: "Plugins",
- href: "/builder/portal/plugins",
- },
- {
- title: "Settings",
- href: "/builder/portal/settings",
- subPages: settingsSubPages,
- },
- ]
+ menu.push({
+ title: "Settings",
+ href: "/builder/portal/settings",
+ subPages: settingsSubPages,
+ })
}
- // Check if allowed access to account section
- if (
- isEnabled(TENANT_FEATURE_FLAGS.LICENSING) &&
- ($auth?.user?.accountPortalAccess || (!$admin.cloud && $auth.isAdmin))
- ) {
- // Determine account sub pages
+ // Add account page
+ if (isEnabled(TENANT_FEATURE_FLAGS.LICENSING)) {
let accountSubPages = [
{
title: "Usage",
@@ -93,7 +77,7 @@ export const menu = derived([admin, auth], ([$admin, $auth]) => {
title: "Upgrade",
href: $admin.accountPortalUrl + "/portal/upgrade",
})
- } else if (!$admin.cloud && admin) {
+ } else if (!$admin.cloud && $auth.isAdmin) {
accountSubPages.push({
title: "Upgrade",
href: "/builder/portal/account/upgrade",
@@ -108,7 +92,6 @@ export const menu = derived([admin, auth], ([$admin, $auth]) => {
href: $admin.accountPortalUrl + "/portal/billing",
})
}
-
menu.push({
title: "Account",
href: "/builder/portal/account",
From ad4133a77785e21a32ab8d100e2ebebac0d491fe Mon Sep 17 00:00:00 2001
From: Andrew Kingston
Date: Fri, 13 Jan 2023 08:29:18 +0000
Subject: [PATCH 10/26] Allow readonly access to users and groups for developer
users
---
.../pages/builder/portal/account/usage.svelte | 13 ++++--
.../portal/users/groups/[groupId].svelte | 31 ++++++++------
.../RemoveUserTableRenderer.svelte | 5 ++-
.../builder/portal/users/groups/index.svelte | 5 ++-
.../portal/users/users/[userId].svelte | 41 +++++++++++++------
.../RemoveGroupTableRenderer.svelte | 5 ++-
.../builder/portal/users/users/index.svelte | 14 +++++--
7 files changed, 78 insertions(+), 36 deletions(-)
diff --git a/packages/builder/src/pages/builder/portal/account/usage.svelte b/packages/builder/src/pages/builder/portal/account/usage.svelte
index f75b6801fc..c541e66fb1 100644
--- a/packages/builder/src/pages/builder/portal/account/usage.svelte
+++ b/packages/builder/src/pages/builder/portal/account/usage.svelte
@@ -184,10 +184,15 @@
- To upgrade your plan and usage limits visit your
- account.
-
+ To upgrade your plan and usage limits visit your
+ account.
+ Contact your account holder to upgrade your plan.