feat: use dropdown menu for base create options instead of modal

This commit is contained in:
Ramesh Mane
2026-01-22 10:31:54 +00:00
parent 74dc117bbc
commit 845d0e11b6
10 changed files with 254 additions and 238 deletions

View File

@@ -12,6 +12,8 @@ const { isUIAllowed } = useRoles()
const { orgRoles, workspaceRoles } = useRoles()
const { baseCreateMode } = storeToRefs(useBases())
const baseStore = useBase()
const { isSharedBase } = storeToRefs(baseStore)
@@ -22,30 +24,28 @@ const baseCreateDlg = ref(false)
const size = computed(() => props.size || 'small')
const centered = computed(() => props.centered ?? true)
onMounted(() => {
baseCreateMode.value = NcBaseCreateMode.FROM_SCRATCH
})
</script>
<template>
<NcButton
v-if="isUIAllowed('baseCreate', { roles: workspaceRoles ?? orgRoles }) && !isSharedBase"
v-e="['c:base:create']"
type="text"
:size="size"
:centered="centered"
full-width
@click="baseCreateDlg = true"
>
<NcButton v-if="isUIAllowed('baseCreate', { roles: workspaceRoles ?? orgRoles }) && !isSharedBase"
v-e="['c:base:create']" type="text" :size="size" :centered="centered" full-width @click="baseCreateDlg = true">
<slot>
<div class="flex items-center gap-2 w-full">
<GeneralIcon icon="ncPlusCircleSolid" />
<div class="flex flex-1">{{ $t('title.createBase') }}</div>
<div class="px-1 flex-none text-bodySmBold !leading-[18px] text-nc-content-gray-subtle bg-nc-bg-gray-medium rounded">
<div
class="px-1 flex-none text-bodySmBold !leading-[18px] text-nc-content-gray-subtle bg-nc-bg-gray-medium rounded">
{{ renderAltOrOptlKey(true) }} D
</div>
</div>
</slot>
<WorkspaceCreateProjectDlg v-model="baseCreateDlg" />
<WorkspaceCreateProjectDlg v-model="baseCreateDlg" :default-base-create-mode="baseCreateMode" />
</NcButton>
</template>