diff --git a/apps/desktop/public/icons/database/hbase.svg b/apps/desktop/public/icons/database/hbase.svg new file mode 100644 index 0000000000..1e0df2e379 --- /dev/null +++ b/apps/desktop/public/icons/database/hbase.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index f212f52c40..7897735d53 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -299,6 +299,7 @@ interface DataGridProps { totalRowCount?: number; totalRowCountIsExact?: boolean; paginationTotalRowCount?: number; + paginationEnabled?: boolean; totalRowCountLoading?: boolean; loading?: boolean; cacheKey?: string; @@ -319,6 +320,7 @@ const props = withDefaults(defineProps(), { // Vue casts absent Boolean props to false unless a default is explicit. // Regular grids have exact totals; document stores opt into lower-bound totals. totalRowCountIsExact: true, + paginationEnabled: true, // Omitted row-action limits must keep normal table-data editing. allowInsertRows: undefined, allowDeleteRows: undefined, @@ -461,7 +463,7 @@ const compactColumnHeaderActions = computed(() => settingsStore.editorSettings.c const dataGridRenderMode = computed(() => settingsStore.editorSettings.dataGridRenderMode); const dataGridSearchMode = computed(() => settingsStore.editorSettings.dataGridSearchMode); const compactDataGridToolbar = computed(() => dataGridTopbarWidth.value > 0 && dataGridTopbarWidth.value < DATA_GRID_COMPACT_TOPBAR_WIDTH); -const infiniteScrollEnabled = computed(() => settingsStore.editorSettings.infiniteScroll); +const infiniteScrollEnabled = computed(() => props.paginationEnabled && settingsStore.editorSettings.infiniteScroll); const infiniteScrollMaxRows = computed(() => settingsStore.editorSettings.infiniteScrollMaxRows); const expandedCellEditor = ref<{ rowId: number; col: number } | null>(null); @@ -9178,6 +9180,7 @@ const gridContextMenuItems = computed(() => { (); +withDefaults( + defineProps<{ + paginationEnabled?: boolean; + selectionSummary: { cellCount: number; rowCount: number } | null; + selectionSummarySumText: string; + loading: boolean; + infiniteScrollEnabled: boolean; + infiniteScrollAllLoaded: boolean; + pageSize: number; + pageSizeMenuItems: LightDropdownItem[]; + exportMenuItems: LightDropdownItem[]; + currentPage: number; + canGoNextPage: boolean; + canJumpLastPage: boolean; + }>(), + { paginationEnabled: true }, +); const customPageSizeInput = defineModel("customPageSizeInput", { default: "" }); @@ -47,10 +51,10 @@ const emit = defineEmits<{ -