You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/components/generic-list/ideation.md
+35-47Lines changed: 35 additions & 47 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,33 +9,31 @@ The generic list (`ix-list` and `ix-list-item`) is a single-column collection fo
9
9
10
10
## 1. Anatomy
11
11
12
-
A list fills the available width of its parent and grows in height to fit its content. The standard item:
12
+
A list item fills the available width of its parent and grows in height to fit its content. The standard item:
13
13
14
-
1. Leading icon
15
-
2. Primary label or title
16
-
3. Supporting description or subtitle
17
-
4. Status label, pill or other supporting content
18
-
5. Actions
14
+
1. Drag indicator
15
+
2. Checkbox
16
+
3. Content with leading icon and label
17
+
4. Actions
18
+
19
+
Lists:
20
+
21
+
1. List items
22
+
2. Separator
19
23
20
24
Multi-line descriptions, notification content, and custom content increase the item height to fit. The default slot places non-interactive custom content after the standard icon, label, and description layout. The `action` slot places trailing interactive controls that do not activate the item.
21
25
22
-
A divider appears within the item boundary. A separator is a distinct content element that adds space between item groups. Keep those concepts separate: use a divider for item delineation and a separator for a meaningful group boundary.
26
+
A divider appears within the item boundary. A separator is a distinct content element that adds space between item groups. Keep those concepts separate: use a divider (property) for item delineation and a separator (separate component) to group list items visually within a list.
23
27
24
28
**Additional information**
25
29
26
30
- The branch implementation renders the list with `role="list"` and items with `role="listitem"`
27
31
28
-
**Open discussion points**
29
-
30
-
- ▶️ `ix-list-separator`-> option or separate component? Any special recommendations?
31
-
- ▶️ What are the standard-item anatomy for status labels and pills?
32
-
- ▶️How do we document the templates?
33
-
34
32
## 2. When to use
35
33
36
34
Use the generic list when:
37
35
38
-
- Content is straightforward, related, and primarily single-column
36
+
- Content is straightforward, related, and primarily single-column -> We typically use single column but can also be multi-column for additional details if focus is not data analysis (use Grid/Table instead).
39
37
- Users need to scan items vertically and possibly activate, select, or reorder them
40
38
- Items need a consistent combination of icon, label, description, status, and actions
41
39
- A lighter alternative to a table is useful for basic data
@@ -59,34 +57,30 @@ Keep the list focused on one item type and one primary purpose. For our software
59
57
- Carbon recommends moving complex, sortable, filterable, or selection-heavy data to a data table
60
58
- Separate list groups may sit side by side when they align to a larger grid, but individual items should remain vertically arranged
61
59
62
-
**Open discussion points**
63
-
64
-
- ▶️ Should we include a formal decision table comparing generic list, grid, tree, event list, and card list?
65
-
- ▶️ Define the maximum content complexity before custom content should become a dedicated component or pattern
66
-
- ▶️ If content is non-interactive and simple text -> should native HTML lists be used?
▶️ Is mixing within a list encouraged / in specific scenarios?
75
-
76
66
## 3. Options
77
67
78
68
### List
79
69
80
70
-**`hasDivider`:**
81
-
82
-
Displays dividers between direct list items. ▶️ when?
71
+
Displays dividers between direct list items. ▶️ when?
83
72
-**`itemGap`:** Sets the space between list items in pixels
84
-
- Use 0 for cotinuous list
85
-
- Use 4 or 8 for light separation
86
-
- Use 12 (default) for strong separation (if item content needs clearer grouping)
73
+
- Use 0 for continuous list
74
+
- Use 4 or 8 for light separation (8px default)
75
+
- Use 12 for strong separation (if item content needs clearer grouping)
87
76
-**`checkbox`:** Sets the default selection-checkbox setting for items that do not define their own setting
88
77
-**`actionOnHover`:** Sets the default behavior for showing action content on hover or focus
89
78
-**`actionSlotAlignment`:** Sets the default vertical alignment of action content to `start` or `center`
79
+
-**`content`:** Is a slot for non-interactive custom content, there are several templates prepared
80
+
- Simple (icon + title): Use for standard list items
81
+
- Advanced (icon + title + description): Use for items with supporting text and status badges
82
+
- Custom: Use to realize e.g. notifications or event lists
83
+
-**`action`:** For interactive controls that do not activate the item; we recommend to use up to four icon buttons, up to two text buttons or a toggle switch
90
84
-**`draggable`:** Enables pointer and keyboard reordering
91
85
-**`dragBehavior`:** Chooses the visual behavior while dragging; supported values are `dynamic` (default) and `separator`
92
86
@@ -112,13 +106,6 @@ Keep the list focused on one item type and one primary purpose. For our software
112
106
- Reserve hover-only actions for supplementary actions; keep essential actions visible or keyboard reachable
113
107
- Use custom content when the standard layout cannot represent the item, not to bypass consistent alignment
114
108
115
-
**Additional discussion points**
116
-
117
-
- ▶️ Is`actionSlotAlignment` a visual option or reserved for advanced layouts?
118
-
- ▶️ Is `itemGap: 12` also default in Figma?
119
-
- ▶️ Are "max 4 icon buttons" and "max 2 buttons" hard limits or design recommendations?
120
-
- ▶️ Confirm the intended label truncation and tooltip behavior; the branch API has no truncation option
121
-
122
109
## 4. Behavior in context
123
110
124
111
- Height of a list item expands with its content
@@ -146,9 +133,10 @@ Keep the list width fluid and allow item height to grow with descriptions, notif
146
133
- List
147
134
- list width as fill or 100% of the parent and the height as hug or content-driven
148
135
- A scrollable list should make overflow discoverable with a scrollbar
136
+
- Height or width of list can be overridden als will show
149
137
- List item
150
-
-▶️ Does text truncate or wrap? (-> long identifiers in industrial contexts)
151
-
-▶️ Tooltips?
138
+
-The title truncates on overflow and shows a tooltip with the full text; if a status badge is shown, the badge is always visible and the title truncates before the badge
139
+
-Height of a list item can be overridden but content doesn't grow (still truncates on one line)
152
140
153
141
### Screen readers and accessible input
154
142
@@ -162,10 +150,6 @@ Use semantic list roles, preserve logical reading order, and provide accessible
162
150
- Element and Material both emphasize responsive layouts, concise content, and predictable item alignment
163
151
- Figma documents reading order as icon, title, label or subtitle, then action
164
152
165
-
**Open discussion points**
166
-
167
-
- ▶️ Validate the exact Tab behavior for custom focusable content in the default slot -> do??
168
-
169
153
## 5. Statuses
170
154
171
155
The component should document these states separately for list items and controls:
@@ -184,17 +168,15 @@ The component should document these states separately for list items and control
184
168
- The action slot can remain persistent or appear on hover/focus depending on `actionOnHover`
185
169
- The Figma edge-case examples include long text, tooltip disclosure, always-visible pills, multi-line content, and scrollbars
186
170
187
-
**Open discussion points**
188
-
189
-
- ▶️ How about loading, error and empty states?
190
-
- ▶️ Is overflow tooltip a component guarantee or an author responsibility?
191
-
192
171
## 6. Other Dos and Don’ts
193
172
194
173
- Do use one consistent item type, alignment, and spacing model within a list
195
174
- Do make essential actions visible and keyboard accessible
175
+
- Do take care of keyboard interaction when using the custom template
176
+
- Do use empty states and spinners for empty or loading lists
196
177
- Don’t use a generic list for multi-column comparison, sorting, filtering, or dense editing, use Grid/Tables instead
197
178
- Don’t hide the only way to complete an essential task behind hover
179
+
- Don't mix list item variants, instead use content to highlight specific items if necessary
198
180
199
181
**Additional information**
200
182
@@ -203,9 +185,15 @@ The component should document these states separately for list items and control
203
185
- Element recommends concise items and responsive behavior in cards, modals, side panels, and similar containers
204
186
- Industrial interfaces may involve glare, high-contrast displays, gloves, and time pressure; validate more than a conventional mouse-and-keyboard path
205
187
206
-
**Open discussion points**
188
+
▶️ Identify representative industrial examples for the final documentation playgrounds -> example image will be added to dos and donts
189
+
190
+
## 7. Related components
207
191
208
-
- ▶️ Identify representative industrial examples for the final documentation playgrounds
0 commit comments