Browse Source

feat: Integrated table with mobile and fixed column not loading issue in mobile

pull/6474/head
Muhammed Mustafa 1 year ago
parent
commit
ef78705aa9
  1. 14
      packages/nc-gui/components/smartsheet/Toolbar.vue
  2. 16
      packages/nc-gui/components/smartsheet/grid/Table.vue
  3. 7
      packages/nc-gui/components/smartsheet/toolbar/ColumnFilterMenu.vue
  4. 7
      packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
  5. 1
      packages/nc-gui/components/smartsheet/toolbar/GroupByMenu.vue
  6. 2
      packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue
  7. 7
      packages/nc-gui/components/smartsheet/toolbar/SortListMenu.vue
  8. 1
      packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue

14
packages/nc-gui/components/smartsheet/Toolbar.vue

@ -34,19 +34,19 @@ const isViewSidebarAvailable = computed(
<a-skeleton-input :active="true" class="!w-44 !h-4 ml-2 !rounded overflow-hidden" /> <a-skeleton-input :active="true" class="!w-44 !h-4 ml-2 !rounded overflow-hidden" />
</template> </template>
<template v-else> <template v-else>
<template v-if="!isMobileMode"> <LazySmartsheetToolbarMappedBy v-if="isMap" />
<LazySmartsheetToolbarMappedBy v-if="isMap" />
<LazySmartsheetToolbarFieldsMenu v-if="isGrid || isGallery || isKanban || isMap" :show-system-fields="false" /> <LazySmartsheetToolbarFieldsMenu v-if="isGrid || isGallery || isKanban || isMap" :show-system-fields="false" />
<LazySmartsheetToolbarStackedBy v-if="isKanban" /> <LazySmartsheetToolbarStackedBy v-if="isKanban" />
<LazySmartsheetToolbarColumnFilterMenu v-if="isGrid || isGallery || isKanban || isMap" /> <LazySmartsheetToolbarColumnFilterMenu v-if="isGrid || isGallery || isKanban || isMap" />
<LazySmartsheetToolbarGroupByMenu v-if="isGrid" /> <LazySmartsheetToolbarGroupByMenu v-if="isGrid" />
<LazySmartsheetToolbarSortListMenu v-if="isGrid || isGallery || isKanban" /> <LazySmartsheetToolbarSortListMenu v-if="isGrid || isGallery || isKanban" />
<template v-if="!isMobileMode">
<LazySmartsheetToolbarRowHeight v-if="isGrid" /> <LazySmartsheetToolbarRowHeight v-if="isGrid" />
<!-- <LazySmartsheetToolbarQrScannerButton v-if="isMobileMode && (isGrid || isKanban || isGallery)" /> --> <!-- <LazySmartsheetToolbarQrScannerButton v-if="isMobileMode && (isGrid || isKanban || isGallery)" /> -->

16
packages/nc-gui/components/smartsheet/grid/Table.vue

@ -121,6 +121,8 @@ const reloadViewDataHook = inject(ReloadViewDataHookInj, createEventHook())
const openNewRecordFormHook = inject(OpenNewRecordFormHookInj, createEventHook()) const openNewRecordFormHook = inject(OpenNewRecordFormHookInj, createEventHook())
useViewColumns(view, meta, () => reloadViewDataHook.trigger())
const { isMobileMode } = useGlobal() const { isMobileMode } = useGlobal()
const scrollParent = inject(ScrollParentInj, ref<undefined>()) const scrollParent = inject(ScrollParentInj, ref<undefined>())
@ -1196,14 +1198,18 @@ const expandAndLooseFocus = (row: Row, col: Record<string, any>) => {
@xcresized="resizingCol = null" @xcresized="resizingCol = null"
> >
<div class="w-full h-full flex items-center"> <div class="w-full h-full flex items-center">
<LazySmartsheetHeaderVirtualCell v-if="isVirtualCol(col)" :column="col" :hide-menu="readOnly" /> <LazySmartsheetHeaderVirtualCell
<LazySmartsheetHeaderCell v-else :column="col" :hide-menu="readOnly" /> v-if="isVirtualCol(col)"
:column="col"
:hide-menu="readOnly || isMobileMode"
/>
<LazySmartsheetHeaderCell v-else :column="col" :hide-menu="readOnly || isMobileMode" />
</div> </div>
</th> </th>
<th <th
v-if="isAddingColumnAllowed" v-if="isAddingColumnAllowed"
v-e="['c:column:add']" v-e="['c:column:add']"
class="cursor-pointer !border-0 relative" class="cursor-pointer !border-0 relative !sm:hidden"
:style="{ :style="{
borderWidth: '0px !important', borderWidth: '0px !important',
}" }"
@ -1322,7 +1328,7 @@ const expandAndLooseFocus = (row: Row, col: Record<string, any>) => {
<LazySmartsheetRow v-for="(row, rowIndex) of dataRef" ref="rowRefs" :key="rowIndex" :row="row"> <LazySmartsheetRow v-for="(row, rowIndex) of dataRef" ref="rowRefs" :key="rowIndex" :row="row">
<template #default="{ state }"> <template #default="{ state }">
<tr <tr
class="nc-grid-row" class="nc-grid-row !sm:h-14"
:style="{ height: rowHeight ? `${rowHeight * 1.8}rem` : `1.8rem` }" :style="{ height: rowHeight ? `${rowHeight * 1.8}rem` : `1.8rem` }"
:data-testid="`grid-row-${rowIndex}`" :data-testid="`grid-row-${rowIndex}`"
> >
@ -1454,7 +1460,7 @@ const expandAndLooseFocus = (row: Row, col: Record<string, any>) => {
<tr <tr
v-if="isAddingEmptyRowAllowed && !isGroupBy" v-if="isAddingEmptyRowAllowed && !isGroupBy"
v-e="['c:row:add:grid-bottom']" v-e="['c:row:add:grid-bottom']"
class="text-left nc-grid-add-new-cell cursor-pointer group relative z-3" class="text-left nc-grid-add-new-cell cursor-pointer group relative z-3 sm:hidden"
:class="{ :class="{
'!border-r-2 !border-r-gray-100': visibleColLength === 1, '!border-r-2 !border-r-gray-100': visibleColLength === 1,
}" }"

7
packages/nc-gui/components/smartsheet/toolbar/ColumnFilterMenu.vue

@ -54,7 +54,12 @@ useMenuCloseOnEsc(open)
</script> </script>
<template> <template>
<NcDropdown v-model:visible="open" :trigger="['click']" overlay-class-name="nc-dropdown-filter-menu nc-toolbar-dropdown"> <NcDropdown
v-model:visible="open"
:trigger="['click']"
overlay-class-name="nc-dropdown-filter-menu nc-toolbar-dropdown"
class="!sm:hidden"
>
<div :class="{ 'nc-active-btn': filtersLength }"> <div :class="{ 'nc-active-btn': filtersLength }">
<a-button v-e="['c:filter']" class="nc-filter-menu-btn nc-toolbar-btn txt-sm" :disabled="isLocked"> <a-button v-e="['c:filter']" class="nc-filter-menu-btn nc-toolbar-btn txt-sm" :disabled="isLocked">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">

7
packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue

@ -286,7 +286,12 @@ useMenuCloseOnEsc(open)
</script> </script>
<template> <template>
<NcDropdown v-model:visible="open" :trigger="['click']" overlay-class-name="nc-dropdown-fields-menu nc-toolbar-dropdown"> <NcDropdown
v-model:visible="open"
:trigger="['click']"
overlay-class-name="nc-dropdown-fields-menu nc-toolbar-dropdown"
class="!sm:hidden"
>
<div :class="{ 'nc-active-btn': numberOfHiddenFields }"> <div :class="{ 'nc-active-btn': numberOfHiddenFields }">
<a-button v-e="['c:fields']" class="nc-fields-menu-btn nc-toolbar-btn" :disabled="isLocked"> <a-button v-e="['c:fields']" class="nc-fields-menu-btn nc-toolbar-btn" :disabled="isLocked">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">

1
packages/nc-gui/components/smartsheet/toolbar/GroupByMenu.vue

@ -151,6 +151,7 @@ watch(open, () => {
v-model:visible="open" v-model:visible="open"
offset-y offset-y
:trigger="['click']" :trigger="['click']"
class="!sm:hidden"
overlay-class-name="nc-dropdown-group-by-menu nc-toolbar-dropdown" overlay-class-name="nc-dropdown-group-by-menu nc-toolbar-dropdown"
> >
<div :class="{ 'nc-active-btn': groupedByColumnIds?.length }"> <div :class="{ 'nc-active-btn': groupedByColumnIds?.length }">

2
packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue

@ -76,7 +76,7 @@ const handleChange = () => {
</script> </script>
<template> <template>
<a-dropdown v-if="!IsPublic" v-model:visible="mappedByDropdown" :trigger="['click']"> <a-dropdown v-if="!IsPublic" v-model:visible="mappedByDropdown" :trigger="['click']" class="!sm:hidden">
<div class="nc-map-btn"> <div class="nc-map-btn">
<a-button v-e="['c:map:change-grouping-field']" class="nc-map-stacked-by-menu-btn nc-toolbar-btn" :disabled="isLocked"> <a-button v-e="['c:map:change-grouping-field']" class="nc-map-stacked-by-menu-btn nc-toolbar-btn" :disabled="isLocked">
<div class="flex items-center gap-1"> <div class="flex items-center gap-1">

7
packages/nc-gui/components/smartsheet/toolbar/SortListMenu.vue

@ -106,7 +106,12 @@ watch(open, () => {
</script> </script>
<template> <template>
<NcDropdown v-model:visible="open" :trigger="['click']" overlay-class-name="nc-dropdown-sort-menu nc-toolbar-dropdown"> <NcDropdown
v-model:visible="open"
:trigger="['click']"
class="!sm:hidden"
overlay-class-name="nc-dropdown-sort-menu nc-toolbar-dropdown"
>
<div :class="{ 'nc-active-btn': sorts?.length }"> <div :class="{ 'nc-active-btn': sorts?.length }">
<a-button v-e="['c:sort']" class="nc-sort-menu-btn nc-toolbar-btn" :disabled="isLocked"> <a-button v-e="['c:sort']" class="nc-sort-menu-btn nc-toolbar-btn" :disabled="isLocked">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">

1
packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue

@ -110,6 +110,7 @@ const handleChange = () => {
v-model:visible="open" v-model:visible="open"
:trigger="['click']" :trigger="['click']"
overlay-class-name="nc-dropdown-kanban-stacked-by-menu" overlay-class-name="nc-dropdown-kanban-stacked-by-menu"
class="!sm:hidden"
> >
<div class="nc-kanban-btn"> <div class="nc-kanban-btn">
<a-button <a-button

Loading…
Cancel
Save