Increase support for lower resolutions in the grid UI by using tooltips instead of text for some buttons at low horizontal breakpoints

This commit is contained in:
Andrew Kingston 2023-04-28 11:13:40 +01:00
parent eb86127bbe
commit b07e5095e9
7 changed files with 30 additions and 15 deletions

View File

@ -39,7 +39,7 @@
{#if datasource}
<div>
<ActionButton icon="DataCorrelated" primary quiet on:click={modal.show}>
Define existing relationship
Define relationship
</ActionButton>
</div>
<Modal bind:this={modal}>

View File

@ -3,7 +3,7 @@
import { ActionButton, Popover } from "@budibase/bbui"
import { DefaultColumnWidth } from "../lib/constants"
const { stickyColumn, columns } = getContext("grid")
const { stickyColumn, columns, compact } = getContext("grid")
const smallSize = 120
const mediumSize = DefaultColumnWidth
const largeSize = DefaultColumnWidth * 1.5
@ -59,12 +59,13 @@
on:click={() => (open = !open)}
selected={open}
disabled={!allCols.length}
tooltip={$compact ? "Width" : null}
>
Width
{$compact ? "" : "Width"}
</ActionButton>
</div>
<Popover bind:open {anchor} align="left">
<Popover bind:open {anchor} align={$compact ? "right" : "left"}>
<div class="content">
{#each sizeOptions as option}
<ActionButton

View File

@ -2,7 +2,7 @@
import { getContext } from "svelte"
import { ActionButton, Popover, Toggle } from "@budibase/bbui"
const { columns, stickyColumn } = getContext("grid")
const { columns, stickyColumn, compact } = getContext("grid")
let open = false
let anchor
@ -47,12 +47,13 @@
on:click={() => (open = !open)}
selected={open || anyHidden}
disabled={!$columns.length}
tooltip={$compact ? "Columns" : ""}
>
Columns
{$compact ? "" : "Columns"}
</ActionButton>
</div>
<Popover bind:open {anchor} align="left">
<Popover bind:open {anchor} align={$compact ? "right" : "left"}>
<div class="content">
<div class="columns">
{#if $stickyColumn}

View File

@ -7,7 +7,7 @@
SmallRowHeight,
} from "../lib/constants"
const { rowHeight, columns, table } = getContext("grid")
const { rowHeight, columns, table, compact } = getContext("grid")
const sizeOptions = [
{
label: "Small",
@ -41,12 +41,13 @@
size="M"
on:click={() => (open = !open)}
selected={open}
tooltip={$compact ? "Height" : null}
>
Height
{$compact ? "" : "Height"}
</ActionButton>
</div>
<Popover bind:open {anchor} align="left">
<Popover bind:open {anchor} align={$compact ? "right" : "left"}>
<div class="content">
{#each sizeOptions as option}
<ActionButton

View File

@ -2,7 +2,7 @@
import { getContext } from "svelte"
import { ActionButton, Popover, Select } from "@budibase/bbui"
const { sort, columns, stickyColumn } = getContext("grid")
const { sort, columns, stickyColumn, compact } = getContext("grid")
let open = false
let anchor
@ -90,12 +90,13 @@
on:click={() => (open = !open)}
selected={open}
disabled={!columnOptions.length}
tooltip={$compact ? "Sort" : ""}
>
Sort
{$compact ? "" : "Sort"}
</ActionButton>
</div>
<Popover bind:open {anchor} align="left">
<Popover bind:open {anchor} align={$compact ? "right" : "left"}>
<div class="content">
<Select
placeholder={null}

View File

@ -112,10 +112,10 @@
<AddRowButton />
<AddColumnButton />
<slot name="controls" />
<SortButton />
<HideColumnsButton />
<ColumnWidthButton />
<RowHeightButton />
<HideColumnsButton />
<SortButton />
</div>
<div class="controls-right">
<DeleteButton />
@ -214,6 +214,7 @@
padding: var(--cell-padding);
gap: var(--cell-spacing);
background: var(--background);
z-index: 2;
}
.controls-left,
.controls-right {

View File

@ -2,6 +2,7 @@ import { writable, get, derived } from "svelte/store"
import { tick } from "svelte"
import {
DefaultRowHeight,
GutterWidth,
LargeRowHeight,
MediumRowHeight,
NewRowID,
@ -43,6 +44,8 @@ export const deriveStores = context => {
enrichedRows,
rowLookupMap,
rowHeight,
stickyColumn,
width,
} = context
// Derive the row that contains the selected cell
@ -70,6 +73,7 @@ export const deriveStores = context => {
hoveredRowId.set(null)
}
// Derive the amount of content lines to show in cells depending on row height
const contentLines = derived(rowHeight, $rowHeight => {
if ($rowHeight === LargeRowHeight) {
return 3
@ -79,9 +83,15 @@ export const deriveStores = context => {
return 1
})
// Derive whether we should use the compact UI, depending on width
const compact = derived([stickyColumn, width], ([$stickyColumn, $width]) => {
return ($stickyColumn?.width || 0) + $width + GutterWidth < 1100
})
return {
focusedRow,
contentLines,
compact,
ui: {
actions: {
blur,