mirror of https://github.com/nocodb/nocodb
Pranav C
2 years ago
4 changed files with 2 additions and 157 deletions
@ -1,23 +0,0 @@
|
||||
<script setup lang="ts"> |
||||
import { OpenNewRecordFormHookInj, inject } from '#imports' |
||||
|
||||
const isLocked = inject(IsLockedInj) |
||||
|
||||
const openNewRecordFormHook = inject(OpenNewRecordFormHookInj)! |
||||
|
||||
const onClick = () => { |
||||
if (!isLocked?.value) openNewRecordFormHook.trigger() |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<a-tooltip placement="bottom"> |
||||
<template #title> {{ $t('activity.addRow') }} </template> |
||||
<div :class="{ 'group': !isLocked, 'disabled-ring': isLocked }" class="nc-add-row flex align-center"> |
||||
<MdiPlusOutline |
||||
:class="{ 'cursor-pointer text-gray-500 group-hover:(text-primary) ': !isLocked, 'disabled': isLocked }" |
||||
@click="onClick" |
||||
/> |
||||
</div> |
||||
</a-tooltip> |
||||
</template> |
@ -1,116 +0,0 @@
|
||||
<script lang="ts" setup> |
||||
import { message } from 'ant-design-vue' |
||||
import { computed, useSmartsheetStoreOrThrow } from '#imports' |
||||
import { extractSdkResponseErrorMsg } from '~/utils' |
||||
import MdiLockOutlineIcon from '~icons/mdi/lock-outline' |
||||
import MdiAccountIcon from '~icons/mdi/account' |
||||
import MdiAccountGroupIcon from '~icons/mdi/account-group' |
||||
|
||||
enum LockType { |
||||
Personal = 'personal', |
||||
Locked = 'locked', |
||||
Collaborative = 'collaborative', |
||||
} |
||||
|
||||
const { view, $api } = useSmartsheetStoreOrThrow() |
||||
|
||||
const { $e } = useNuxtApp() |
||||
|
||||
async function changeLockType(type: LockType) { |
||||
$e('a:grid:lockmenu', { lockType: type }) |
||||
|
||||
if (type === 'personal') { |
||||
return message.info('Coming soon') |
||||
} |
||||
try { |
||||
;(view.value as any).lock_type = type |
||||
$api.dbView.update(view.value.id as string, { |
||||
lock_type: type, |
||||
}) |
||||
|
||||
message.success(`Successfully Switched to ${type} view`) |
||||
} catch (e: any) { |
||||
message.error(await extractSdkResponseErrorMsg(e)) |
||||
} |
||||
} |
||||
|
||||
const Icon = computed(() => { |
||||
switch ((view.value as any)?.lock_type) { |
||||
case LockType.Personal: |
||||
return MdiAccountIcon |
||||
case LockType.Locked: |
||||
return MdiLockOutlineIcon |
||||
case LockType.Collaborative: |
||||
default: |
||||
return MdiAccountGroupIcon |
||||
} |
||||
}) |
||||
</script> |
||||
|
||||
<template> |
||||
<a-dropdown max-width="350" :trigger="['click']"> |
||||
<div class="nc-sidebar-right-item hover:after:bg-indigo-500 group nc-sidebar-lock-menu"> |
||||
<Icon class="cursor-pointer group-hover:(!text-white)" /> |
||||
</div> |
||||
|
||||
<template #overlay> |
||||
<div class="min-w-[350px] max-w-[500px] shadow bg-white"> |
||||
<div> |
||||
<div class="nc-menu-item" @click="changeLockType(LockType.Collaborative)"> |
||||
<div> |
||||
<MdiCheck v-if="!view?.lock_type || view?.lock_type === LockType.Collaborative" /> |
||||
<span v-else /> |
||||
<div> |
||||
<MdiAccountGroupIcon /> |
||||
Collaborative view |
||||
<div class="nc-subtitle">Collaborators with edit permissions or higher can change the view configuration.</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="nc-menu-item" @click="changeLockType(LockType.Locked)"> |
||||
<div> |
||||
<MdiCheck v-if="view.lock_type === LockType.Locked" /> |
||||
<span v-else /> |
||||
<div> |
||||
<MdiLockOutlineIcon /> |
||||
Locked View |
||||
<div class="nc-subtitle">No one can edit the view configuration until it is unlocked.</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="nc-menu-item" @click="changeLockType(LockType.Personal)"> |
||||
<div> |
||||
<MdiCheck v-if="view.lock_type === LockType.Personal" /> |
||||
<span v-else /> |
||||
<div> |
||||
<MdiAccountIcon /> |
||||
Personal view |
||||
<div class="nc-subtitle"> |
||||
Only you can edit the view configuration. Other collaborators’ personal views are hidden by default. |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
</a-dropdown> |
||||
</template> |
||||
|
||||
<style scoped> |
||||
.nc-menu-item > div { |
||||
@apply grid grid-cols-[30px,auto] gap-2 p-2 items-center; |
||||
} |
||||
|
||||
.nc-menu-item > div > svg { |
||||
align-self: center; |
||||
} |
||||
|
||||
.nc-menu-option > :first-child { |
||||
@apply self-center; |
||||
} |
||||
|
||||
.nc-subtitle { |
||||
@apply font-size-sm font-weight-light; |
||||
} |
||||
</style> |
@ -1,17 +0,0 @@
|
||||
<script setup lang="ts"> |
||||
import { ReloadViewDataHookInj, inject } from '#imports' |
||||
|
||||
const reloadHook = inject(ReloadViewDataHookInj)! |
||||
|
||||
const onClick = () => reloadHook.trigger() |
||||
</script> |
||||
|
||||
<template> |
||||
<a-tooltip placement="bottom"> |
||||
<template #title> {{ $t('general.reload') }} </template> |
||||
|
||||
<div class="group flex align-center"> |
||||
<MdiReload class="cursor-pointer text-gray-500 group-hover:(text-primary)" @click="onClick" /> |
||||
</div> |
||||
</a-tooltip> |
||||
</template> |
Loading…
Reference in new issue