From d83193f0c43eda51b524f3bb6ea86397390dd7c2 Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Thu, 10 Jul 2025 14:19:12 -0600 Subject: [PATCH] adjust new select --- apps/web/src/api/asset_interfaces/index.ts | 1 - .../asset_interfaces/organizations/index.ts | 1 - .../organizations/interfaces.ts | 9 -- .../users/ListUsersComponent.tsx | 2 +- .../[userId]/_overview/UserDefaultAccess.tsx | 24 +---- .../SelectDatasetInput.tsx | 2 +- .../security/AccessRoleSelect.stories.tsx | 92 +++++++++++++++++++ .../features/security/AccessRoleSelect.tsx | 26 ++++++ .../security/WorkspaceRestrictions.tsx | 26 ++---- apps/web/src/components/ui/select/Select.tsx | 43 ++++++--- .../ui/select/SelectMultiple.stories.tsx | 2 +- .../components/ui/select/SelectMultiple.tsx | 2 +- .../src/components/ui/select/SelectOld.tsx | 4 +- apps/web/src/components/ui/select/index.ts | 2 +- .../controllers/HomePage/NewChatWarning.tsx | 6 +- apps/web/src/lib/organization/translations.ts | 33 +++++-- 16 files changed, 199 insertions(+), 76 deletions(-) delete mode 100644 apps/web/src/api/asset_interfaces/organizations/index.ts delete mode 100644 apps/web/src/api/asset_interfaces/organizations/interfaces.ts create mode 100644 apps/web/src/components/features/security/AccessRoleSelect.stories.tsx create mode 100644 apps/web/src/components/features/security/AccessRoleSelect.tsx diff --git a/apps/web/src/api/asset_interfaces/index.ts b/apps/web/src/api/asset_interfaces/index.ts index 7d3cb8c59..5c09795f1 100644 --- a/apps/web/src/api/asset_interfaces/index.ts +++ b/apps/web/src/api/asset_interfaces/index.ts @@ -6,7 +6,6 @@ export * from './dataset_groups'; export * from './datasets'; export * from './datasources'; export * from './metric'; -export * from './organizations'; export * from './permission'; export * from './permission_groups'; export * from './search'; diff --git a/apps/web/src/api/asset_interfaces/organizations/index.ts b/apps/web/src/api/asset_interfaces/organizations/index.ts deleted file mode 100644 index 957860982..000000000 --- a/apps/web/src/api/asset_interfaces/organizations/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './interfaces'; diff --git a/apps/web/src/api/asset_interfaces/organizations/interfaces.ts b/apps/web/src/api/asset_interfaces/organizations/interfaces.ts deleted file mode 100644 index bb2c45314..000000000 --- a/apps/web/src/api/asset_interfaces/organizations/interfaces.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { OrganizationRole } from '@buster/server-shared/organization'; - -export const BusterOrganizationRoleLabels: Record = { - workspace_admin: 'Workspace Admin', - data_admin: 'Data Admin', - querier: 'Querier', - restricted_querier: 'Restricted Querier', - viewer: 'Viewer', -}; diff --git a/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/ListUsersComponent.tsx b/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/ListUsersComponent.tsx index 3b0ad6bbf..d8ea40aba 100644 --- a/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/ListUsersComponent.tsx +++ b/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/ListUsersComponent.tsx @@ -32,7 +32,7 @@ export const ListUsersComponent: React.FC<{ dataIndex: 'role', width: 165, render: (role: OrganizationUser['role']) => { - return {OrganizationUserRoleText[role]}; + return {OrganizationUserRoleText[role].title}; } } ], diff --git a/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/[userId]/_overview/UserDefaultAccess.tsx b/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/[userId]/_overview/UserDefaultAccess.tsx index 6acb5084f..4a0c4d35f 100644 --- a/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/[userId]/_overview/UserDefaultAccess.tsx +++ b/apps/web/src/app/app/(settings_layout)/settings/(permissions)/users/[userId]/_overview/UserDefaultAccess.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { BusterOrganizationRoleLabels } from '@/api/asset_interfaces'; import { useUpdateUser } from '@/api/buster_rest/users'; import { Card, @@ -14,6 +13,8 @@ import { Text } from '@/components/ui/typography'; import { useMemoizedFn } from '@/hooks'; import { User } from '@buster/server-shared/user'; import type { OrganizationUser } from '@buster/server-shared/organization'; +import { OrganizationUserRoleText } from '@/lib/organization/translations'; +import { AccessRoleSelect } from '@/components/features/security/AccessRoleSelect'; export const UserDefaultAccess: React.FC<{ user: OrganizationUser; @@ -41,20 +42,6 @@ export const UserDefaultAccess: React.FC<{ ); }; -const accessOptions: SelectItem[] = [ - { label: BusterOrganizationRoleLabels.data_admin, value: 'data_admin' }, - { - label: BusterOrganizationRoleLabels.workspace_admin, - value: 'workspace_admin' - }, - { label: BusterOrganizationRoleLabels.querier, value: 'querier' }, - { - label: BusterOrganizationRoleLabels.restricted_querier, - value: 'restricted_querier' - }, - { label: BusterOrganizationRoleLabels.viewer, value: 'viewer' } -]; - const DefaultAccessCard = React.memo( ({ role, @@ -91,12 +78,7 @@ const DefaultAccessCard = React.memo( : 'Only admins can change access' : undefined }> - onChange(v as OrganizationRole)} + /> + ); +}; diff --git a/apps/web/src/components/features/security/WorkspaceRestrictions.tsx b/apps/web/src/components/features/security/WorkspaceRestrictions.tsx index e689c24ed..e2af92a9f 100644 --- a/apps/web/src/components/features/security/WorkspaceRestrictions.tsx +++ b/apps/web/src/components/features/security/WorkspaceRestrictions.tsx @@ -12,11 +12,12 @@ import type { GetWorkspaceSettingsResponse, UpdateWorkspaceSettingsRequest } from '@buster/server-shared/security'; -import { Select, type SelectItem } from '@/components/ui/select'; -import { type OrganizationRole, OrganizationRoleEnum } from '@buster/server-shared/organization'; -import { OrganizationUserRoleText } from '@/lib/organization/translations'; +import { type SelectItem } from '@/components/ui/select'; +import { type OrganizationRole } from '@buster/server-shared/organization'; import { useGetDatasets } from '@/api/buster_rest/datasets'; import { SelectMultiple } from '@/components/ui/select/SelectMultiple'; +import { AccessRoleSelect } from './AccessRoleSelect'; +import { useMemoizedFn } from '@/hooks'; export const WorkspaceRestrictions = React.memo(() => { const { data: workspaceSettings } = useGetWorkspaceSettings(); @@ -31,7 +32,7 @@ export const WorkspaceRestrictions = React.memo(() => { />, , & { updateWorkspaceSettings: (request: UpdateWorkspaceSettingsRequest) => Promise; }) => { - const items: SelectItem[] = useMemo(() => { - return Object.values(OrganizationRoleEnum).map((role) => ({ - label: OrganizationUserRoleText[role as OrganizationRole], - value: role as OrganizationRole - })); - }, []); - return (
@@ -99,13 +93,11 @@ const DefaultRole = ({ {`Select which default role is assigned to new users`}
-