Lead: Liav Nadler ONGOING
Description
A spreadsheet table is a type of data table where users can add and edit numeric data on a grid
Usage & Behaviour
Structure
The table contains a grid of rows and columns
The table may contain:
Header row
Header column (on the left)
Total row (at the bottom)
If the table is higher than its container, a scroll bar will appear. The scroll bar will not affect the header and title rows, if exists
States
A cell can be in one of these states:
State | Example | Comments |
---|---|---|
Normal (Enabled) | ||
Mouseover | ||
Selected | ||
Selected + In Focus | Only one cell can be in focus at any time. By default, the top-left cell is in focus | |
Disabled | ||
No Data | ||
Error | See Field Validation |
Interaction
Clicking a cell:
Sets the focus to the cell
Selects the cell
Deselects all other cells
If the cell contains text - selects the text, allowing the user to edit it
Double clicking a cell is similar to clicking a cell, but if the cell has text in it, it will place the insertion point in the cursor’s location. Currently they are same
Hitting the Enter / Tab key:
Saves the text in the cell (if exists)
Sets the focus to the cell below / to the right of the current cell respectably, while skipping disabled cells. Currently Enter deselects the cell but keeps the focus
If the new cell contains text - selects the text
If the new cell does not contain text - showing the insertion point, allowing the user to enter text
Selecting multiple cells can be done in one of two ways:
Dragging the cursor over a group of cell. In this case the first selected cell gets the focus - currently ExtJS only marks the cell
Clicking cells while holding the Ctrl / Cmd key. In this case the last selected cell gets the focus - currently does not work in ExtJS
Shift to select group of cells - currently does not work in ExtJS
A cell in focus or a group of cells that were selected by dragging will show a special handle at the bottom-right corner of the cell / the selected area (see image) - in ExtJS works only on a single cell
Mouseover the handle will switch the cursor to a cross
Dragging the handle will copy the content of the cell to the target cells
The user can cut, copy and paste cell content using Ctrl / Cmd + X, C and V respectably
Edge Cases
Edge cases may include:
Typing long text in a cell
Typing invalid data in a cell
Deleting mandatory cells
Server error when trying to save cell content
For more information please refer to the Field Validation page
Best Practices
Use a spreadsheet table When it supports another set of data, for example, a graph
Accessibility compliance
<<In general each component should be A11y complied, please follow the 3 guidelines linked below. At the very least we should document that each component is in compliance with each of the 3>>
Focus management
<<How will the component work with keyboard only - without a mouse. Can be reference if written above
We already set a general guidelines described in /wiki/spaces/UX/pages/308969693 >>
Screen reader support
<<Make sure the components support screen reader for content or behaviour where needed - see /wiki/spaces/UX/pages/308248620 >>
Contrast & size compliance
<<Visual designers must comply with the minimal of /wiki/spaces/UX/pages/301498483 for each component>>
Keyboard Operation
<<Explore and describe conventions>>
Design
Zeplin link | Screen thumbnail |
---|---|
<<Zeplin Link>> | <<Screen with 200 width>> |
Code
<<a box containing the code - discuss with Femi>>