mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-05 22:47:01 +00:00
feat: Improved UI (#6222)
* feat: Improved ui (#6156) * refactor: revert Signed-off-by: Pranav C <pranavxc@gmail.com> feat: shared base Signed-off-by: Pranav C <pranavxc@gmail.com> fix: remove duplicate import statement Signed-off-by: Pranav C <pranavxc@gmail.com> fix: disable starred & license menu Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: fix airtable wait issue Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: enable mysql in ci Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: fix checkbox order for sqlite Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: disable quick tests Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: fix dbType env variable for CI Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: workspace API access error fix Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: enable SQLite CI CD Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: use DB_TYPE env variable Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: enable SQLite UT Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: isHub cleanup Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: add check for EE Timezone spec Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> chore: cleanup Signed-off-by: Pranav C <pranavxc@gmail.com> chore: cleanup Signed-off-by: Pranav C <pranavxc@gmail.com> test: EE check fix Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> chore: test correction Signed-off-by: Pranav C <pranavxc@gmail.com> chore: sync latest changes Signed-off-by: Pranav C <pranavxc@gmail.com> test: set EE=false Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> test: set NC Edition to community in workflow file Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> chore: update sdk build command Signed-off-by: Pranav C <pranavxc@gmail.com> refactor: i18n and other changes Signed-off-by: Pranav C <pranavxc@gmail.com> feat: new ui Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: sync tests Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: lint Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: shared view/base related bugs Signed-off-by: Pranav C <pranavxc@gmail.com> * test: checkbox verification sort order fix Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: fix sqlite reset Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: enable selfhosted runners Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * docs: table ops (draft) Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * Docs: screenshots for table-operations.md * refactor: introduce missing buttons Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: get all fields Signed-off-by: Pranav C <pranavxc@gmail.com> * test: UT fix- new data API response Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: EE is false Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: webhook lookup as string in CE Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * fix: include created_at and updated_at Signed-off-by: Pranav C <pranavxc@gmail.com> * test: fix UT newDataAPI response for PG Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * fix: separate api for webhook related plugins Signed-off-by: Pranav C <pranavxc@gmail.com> * test: msyql filter corrections Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: mysql group by test corrections Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: fix datatype for rating field in groupby spec for pg Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: kanban datatype correction Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: column edit for mysql- rating field Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: misc fixes Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: enable 4 workers Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: enable 2 workers per shard only Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * docs: table CRUD * Rename table-operations.md to table-crud.md * Create column-crud.md * docs: row CRUD * Rename row.md to row-crud.md * docs: project crud * docs: toolbar (skeleton) * refactor: single page UI and bug fixes Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: sync tests playwright Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: add missing dependency Signed-off-by: Pranav C <pranavxc@gmail.com> * feat: single page ui, test corrections Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: tests Signed-off-by: Pranav C <pranavxc@gmail.com> * test: project rename test correction Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: remove only Signed-off-by: Pranav C <pranavxc@gmail.com> * test: remove wrong import statement Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: delete option not visible in project context menu Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: move ws access within isEE() Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: fix groupby * test: groupby fix Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * docs: signup & landing page * docs: project crud * docs: project-crud misc * docs: toolbar fields * docs: toolbar / filters * docs: toolbar / group by * docs: toolbar / sort * docs: toolbar / row height * docs: filters additional options * docs: file re-order Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * docs: add links to column types * docs: code snippets * docs: links * docs: lookup * docs: rollup * docs: formula * docs: primary key * docs: display value * docs: development setup * docs: swagger * fix(nc-gui): encodeURIComponent for row id - closes: #6202 * docs: language * docs: expanded record * docs: import airtable * docs: airtable * docs: webhook * docs: revert file rename Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * docs: account settings * docs: audit * docs: meta management * docs: project settings * docs: shared base * docs: shared view * docs: meta sync * docs: team-auth * docs: views * docs: fix URL * docs: URL corrections * fix: shared base, view related bugs Signed-off-by: Pranav C <pranavxc@gmail.com> * test: EE check for WSaccess Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * test: exclude EE tests Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> * fix: missing project delete closes #6215 Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: merge existing project meta if found closes #6216 Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: merge existing project meta if found closes #6216 Signed-off-by: Pranav C <pranavxc@gmail.com> --------- Signed-off-by: Pranav C <pranavxc@gmail.com> Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> Co-authored-by: Raju Udava <86527202+dstala@users.noreply.github.com> Co-authored-by: DarkPhoenix2704 <anbarasun123@gmail.com> Co-authored-by: Wing-Kam Wong <wingkwong.code@gmail.com> * refactor: docs and other bug fixes Signed-off-by: Pranav C <pranavxc@gmail.com> * feat: populate default project on super admin signup Signed-off-by: Pranav C <pranavxc@gmail.com> * fix: include created project details in signup response if avail, missing Dockerfile Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: use custom function for resolving ts path aliases Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: add missing generate script Signed-off-by: Pranav C <pranavxc@gmail.com> * chore: webpack build correction - ts path resolve Signed-off-by: Pranav C <pranavxc@gmail.com> --------- Signed-off-by: Pranav C <pranavxc@gmail.com> Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> Co-authored-by: mertmit <mertmit99@gmail.com> Co-authored-by: Raju Udava <86527202+dstala@users.noreply.github.com> Co-authored-by: DarkPhoenix2704 <anbarasun123@gmail.com> Co-authored-by: Wing-Kam Wong <wingkwong.code@gmail.com>
This commit is contained in:
@@ -18,7 +18,7 @@ import {
|
||||
useUIPermission,
|
||||
watchDebounced,
|
||||
} from '#imports'
|
||||
import type { User } from '~/lib'
|
||||
import type { User } from '#imports'
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
@@ -32,27 +32,27 @@ const { copy } = useCopy()
|
||||
|
||||
const { isUIAllowed } = useUIPermission()
|
||||
|
||||
const { dashboardUrl } = $(useDashboard())
|
||||
const { dashboardUrl } = useDashboard()
|
||||
|
||||
let users = $ref<null | User[]>(null)
|
||||
const users = ref<null | User[]>(null)
|
||||
|
||||
let selectedUser = $ref<null | User>(null)
|
||||
const selectedUser = ref<null | User>(null)
|
||||
|
||||
let showUserModal = $ref(false)
|
||||
const showUserModal = ref(false)
|
||||
|
||||
let showUserDeleteModal = $ref(false)
|
||||
const showUserDeleteModal = ref(false)
|
||||
|
||||
let isLoading = $ref(false)
|
||||
const isLoading = ref(false)
|
||||
|
||||
let totalRows = $ref(0)
|
||||
const totalRows = ref(0)
|
||||
|
||||
let currentPage = $ref(1)
|
||||
const currentPage = ref(1)
|
||||
|
||||
const currentLimit = $ref(10)
|
||||
const currentLimit = ref(10)
|
||||
|
||||
const searchText = ref<string>('')
|
||||
|
||||
const loadUsers = async (page = currentPage, limit = currentLimit) => {
|
||||
const loadUsers = async (page = currentPage.value, limit = currentLimit.value) => {
|
||||
try {
|
||||
if (!project.value?.id) return
|
||||
|
||||
@@ -66,9 +66,9 @@ const loadUsers = async (page = currentPage, limit = currentLimit) => {
|
||||
} as RequestParams)
|
||||
if (!response.users) return
|
||||
|
||||
totalRows = response.users.pageInfo.totalRows ?? 0
|
||||
totalRows.value = response.users.pageInfo.totalRows ?? 0
|
||||
|
||||
users = response.users.list as User[]
|
||||
users.value = response.users.list as User[]
|
||||
} catch (e: any) {
|
||||
message.error(await extractSdkResponseErrorMsg(e))
|
||||
}
|
||||
@@ -97,38 +97,38 @@ const inviteUser = async (user: User) => {
|
||||
|
||||
const deleteUser = async () => {
|
||||
try {
|
||||
if (!project.value?.id || !selectedUser?.id) return
|
||||
if (!project.value?.id || !selectedUser.value?.id) return
|
||||
|
||||
await api.auth.projectUserRemove(project.value.id, selectedUser.id)
|
||||
await api.auth.projectUserRemove(project.value.id, selectedUser.value.id)
|
||||
|
||||
// Successfully deleted user from project
|
||||
message.success(t('msg.success.userDeletedFromProject'))
|
||||
|
||||
await loadUsers()
|
||||
|
||||
showUserDeleteModal = false
|
||||
showUserDeleteModal.value = false
|
||||
} catch (e: any) {
|
||||
message.error(await extractSdkResponseErrorMsg(e))
|
||||
} finally {
|
||||
showUserDeleteModal = false
|
||||
showUserDeleteModal.value = false
|
||||
}
|
||||
|
||||
$e('a:user:delete')
|
||||
}
|
||||
|
||||
const onEdit = (user: User) => {
|
||||
selectedUser = user
|
||||
showUserModal = true
|
||||
selectedUser.value = user
|
||||
showUserModal.value = true
|
||||
}
|
||||
|
||||
const onInvite = () => {
|
||||
selectedUser = null
|
||||
showUserModal = true
|
||||
selectedUser.value = null
|
||||
showUserModal.value = true
|
||||
}
|
||||
|
||||
const onDelete = (user: User) => {
|
||||
selectedUser = user
|
||||
showUserDeleteModal = true
|
||||
selectedUser.value = user
|
||||
showUserDeleteModal.value = true
|
||||
}
|
||||
|
||||
const resendInvite = async (user: User) => {
|
||||
@@ -150,7 +150,7 @@ const resendInvite = async (user: User) => {
|
||||
const copyInviteUrl = async (user: User) => {
|
||||
if (!user.invite_token) return
|
||||
try {
|
||||
await copy(`${dashboardUrl}#/signup/${user.invite_token}`)
|
||||
await copy(`${dashboardUrl.value}#/signup/${user.invite_token}`)
|
||||
|
||||
// Invite URL copied to clipboard
|
||||
message.success(t('msg.success.inviteURLCopied'))
|
||||
@@ -161,19 +161,19 @@ const copyInviteUrl = async (user: User) => {
|
||||
}
|
||||
|
||||
onBeforeMount(async () => {
|
||||
if (!users) {
|
||||
isLoading = true
|
||||
if (!users.value) {
|
||||
isLoading.value = true
|
||||
|
||||
await loadUsers()
|
||||
|
||||
isLoading = false
|
||||
isLoading.value = false
|
||||
}
|
||||
})
|
||||
|
||||
watchDebounced(
|
||||
searchText,
|
||||
() => {
|
||||
currentPage = 1
|
||||
currentPage.value = 1
|
||||
loadUsers()
|
||||
},
|
||||
{ debounce: 300, maxWait: 600 },
|
||||
@@ -372,7 +372,7 @@ const isSuperAdmin = (user: { main_roles?: string }) => {
|
||||
v-model:page-size="currentLimit"
|
||||
hide-on-single-page
|
||||
class="mt-4"
|
||||
:total="totalRows"
|
||||
:total="+totalRows"
|
||||
show-less-items
|
||||
@change="loadUsers"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user