mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
7.7 KiB
188 lines
7.7 KiB
<template> |
|
<div> |
|
<slot :click="() => (settingsModal = true)"> |
|
<v-icon class="mx-2" @click="settingsModal = true"> mdi-cog-outline </v-icon> |
|
</slot> |
|
<v-dialog v-model="settingsModal" width="90%" overlay-opacity=".9" transition="dialog-bottom-transition"> |
|
<v-card width="100%" min-height="350px"> |
|
<div class="d-flex"> |
|
<v-navigation-drawer v-if="settingsModal" left permanent height="90vh" class="backgroundColor1"> |
|
<div class="advance-menu"> |
|
<v-list |
|
v-if="_isUIAllowed('treeViewProjectSettings')" |
|
dense |
|
:class="{ 'advanced-border': overShieldIcon }" |
|
> |
|
<v-list-item> |
|
<v-list-item-title> |
|
<!-- Settings --> |
|
<span class="body-2 font-weight-medium grey--text text-uppercase caption">{{ |
|
$t('activity.settings') |
|
}}</span> |
|
</v-list-item-title> |
|
</v-list-item> |
|
<v-list-item-group v-model="activePage" color="x-active" mandatory> |
|
<v-tooltip bottom> |
|
<template #activator="{ on }"> |
|
<v-list-item |
|
v-t="['c:settings:team-auth']" |
|
value="roles" |
|
dense |
|
class="body-2 nc-settings-teamauth" |
|
v-on="on" |
|
> |
|
<v-list-item-icon> |
|
<v-icon small> mdi-account-group </v-icon> |
|
</v-list-item-icon> |
|
<!-- Team & Auth --> |
|
<v-list-item-title> |
|
<span |
|
:class="{ |
|
'font-weight-medium': activePage === 'roles', |
|
'font-weight-regular': activePage !== 'roles', |
|
}" |
|
>{{ $t('title.teamAndAuth') }}</span |
|
> |
|
</v-list-item-title> |
|
</v-list-item> |
|
</template> |
|
<!-- Roles & Users Management --> |
|
{{ $t('title.rolesUserMgmt') }} |
|
</v-tooltip> |
|
|
|
<template v-if="_isUIAllowed('treeViewProjectSettings')"> |
|
<v-tooltip bottom> |
|
<template #activator="{ on }"> |
|
<v-list-item |
|
v-t="['c:settings:appstore']" |
|
dense |
|
class="body-2 nc-settings-appstore" |
|
value="appStore" |
|
v-on="on" |
|
> |
|
<v-list-item-icon> |
|
<v-icon small> mdi-storefront-outline </v-icon> |
|
</v-list-item-icon> |
|
<!-- App Store --> |
|
<v-list-item-title> |
|
<span |
|
:class="{ |
|
'font-weight-medium': activePage === 'appStore', |
|
'font-weight-regular': activePage !== 'appStore', |
|
}" |
|
>{{ $t('title.appStore') }}</span |
|
> |
|
</v-list-item-title> |
|
</v-list-item> |
|
</template> |
|
<!-- App Store --> |
|
{{ $t('title.appStore') }} |
|
</v-tooltip> |
|
|
|
<v-tooltip bottom> |
|
<template #activator="{ on }"> |
|
<v-list-item |
|
v-t="['c:settings:proj-metadata']" |
|
dense |
|
class="body-2 nc-settings-projmeta" |
|
value="disableOrEnableModel" |
|
v-on="on" |
|
> |
|
<v-list-item-icon> |
|
<v-icon small> mdi-table-multiple </v-icon> |
|
</v-list-item-icon> |
|
<!-- Project Metadata --> |
|
<v-list-item-title> |
|
<span |
|
:class="{ |
|
'font-weight-medium': activePage === 'disableOrEnableModel', |
|
'font-weight-regular': activePage !== 'disableOrEnableModel', |
|
}" |
|
>{{ $t('title.projMeta') }}</span |
|
> |
|
</v-list-item-title> |
|
</v-list-item> |
|
</template> |
|
<!-- Meta Management --> |
|
{{ $t('title.metaMgmt') }} |
|
</v-tooltip> |
|
|
|
<v-tooltip bottom> |
|
<template #activator="{ on }"> |
|
<v-list-item |
|
v-t="['c:settings:audit']" |
|
dense |
|
class="body-2 nc-settings-audit" |
|
value="audit" |
|
v-on="on" |
|
> |
|
<v-list-item-icon> |
|
<v-icon small> mdi-notebook-outline </v-icon> |
|
</v-list-item-icon> |
|
<!-- Project Metadata --> |
|
<v-list-item-title> |
|
<span |
|
:class="{ |
|
'font-weight-medium': activePage === 'audit', |
|
'font-weight-regular': activePage !== 'audit', |
|
}" |
|
>{{ $t('title.audit') }}</span |
|
> |
|
</v-list-item-title> |
|
</v-list-item> |
|
</template> |
|
<!-- Meta Management --> |
|
{{ $t('title.auditLogs') }} |
|
</v-tooltip> |
|
</template> |
|
</v-list-item-group> |
|
</v-list> |
|
</div> |
|
</v-navigation-drawer> |
|
<v-container class="flex-grow-1 py-9 px-15" style="max-height: 90vh; overflow-y: auto"> |
|
<div v-if="activePage === 'audit'" style="height: 100%"> |
|
<audit-tab /> |
|
</div> |
|
<div v-else-if="activePage === 'meta'"> |
|
<xc-meta /> |
|
</div> |
|
<div v-else-if="activePage === 'roles'"> |
|
<auth-tab v-if="_isUIAllowed('team-auth')" /> |
|
</div> |
|
<div v-else-if="activePage === 'disableOrEnableModel'"> |
|
<disable-or-enable-models v-if="_isUIAllowed('project-metadata')" /> |
|
</div> |
|
<app-store v-else /> |
|
</v-container> |
|
</div> |
|
</v-card> |
|
</v-dialog> |
|
</div> |
|
</template> |
|
|
|
<script> |
|
import AppStore from '~/components/project/AppStore'; |
|
import DisableOrEnableModels from '~/components/project/projectMetadata/DisableOrEnableModels'; |
|
import AuthTab from '~/components/AuthTab'; |
|
import XcMeta from '~/components/project/settings/XcMeta'; |
|
import AuditTab from '~/components/project/AuditTab'; |
|
import ImportFromAirtable from '~/components/import/ImportFromAirtable'; |
|
|
|
export default { |
|
name: 'SettingsModal', |
|
components: { ImportFromAirtable, AuditTab, XcMeta, AuthTab, DisableOrEnableModels, AppStore }, |
|
data: () => ({ |
|
settingsModal: false, |
|
activePage: 'role', |
|
improtFromAirtableModal: false, |
|
}), |
|
}; |
|
</script> |
|
|
|
<style scoped lang="scss"> |
|
::v-deep { |
|
.v-list-item__icon { |
|
margin-right: 0 !important; |
|
} |
|
} |
|
</style>
|
|
|