@botiverse/raft-ui 0.76.0 → 0.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [0.76.1](https://github.com/botiverse/raft-design/compare/v0.76.0...v0.76.1) (2026-11-08)
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- **Select and Combobox lists never scroll sideways**: a Select list reaches into the popup's 4px inset and pads it back, so a `SelectSeparator` meets the popup's edge and stays inside the list, and Select and Combobox lists set `overflow-x-hidden`. ([#1070](https://github.com/botiverse/raft-design/pull/1070))
|
|
6
|
+
- Why: the separator reached 4px past each side of the list, which is the scroller, so the list scrolled sideways by 8px, and a classic scrollbar (Windows) drew a horizontal bar under the runtimes list (Artea, #proj-raft-ui:20a421bd). The list also clipped the line 4px short of the popup's edge.
|
|
7
|
+
- Affects: every Select with a separator, such as the runtime picker's Show installed only row: no sideways scroll, and the line now runs to the popup's border. Options keep their inset. A list action keeps its highlight after it adds items above it, as before.
|
|
8
|
+
- Docs: https://raft-design.botiverse.build/components/scroll-area/
|
|
9
|
+
|
|
1
10
|
## [0.76.0](https://github.com/botiverse/raft-design/compare/v0.75.0...v0.76.0) (2026-11-08)
|
|
2
11
|
|
|
3
12
|
### Changed
|
|
@@ -67,7 +67,7 @@ const combobox = tv({
|
|
|
67
67
|
],
|
|
68
68
|
header: ["flex items-center justify-between px-3", "gap-2 py-1.5 pr-1.5 pl-4"],
|
|
69
69
|
separator: ["h-px shrink-0 border-0", "bg-line-hairline"],
|
|
70
|
-
list: ["max-h-64 overflow-y-auto overscroll-contain", "flex flex-col p-1 scroll-py-1"],
|
|
70
|
+
list: ["max-h-64 overflow-x-hidden overflow-y-auto overscroll-contain", "flex flex-col p-1 scroll-py-1"],
|
|
71
71
|
item: [
|
|
72
72
|
"flex w-full shrink-0 cursor-default select-none items-center justify-between overflow-hidden",
|
|
73
73
|
"text-left outline-none transition-colors",
|
|
@@ -44,7 +44,7 @@ const select = tv({
|
|
|
44
44
|
"rounded-container bg-layer-popover p-1 text-foreground",
|
|
45
45
|
"shadow-float ring-1 ring-line-seam"
|
|
46
46
|
],
|
|
47
|
-
list: ["max-h-64 overflow-y-auto overscroll-contain scroll-py-6", "flex flex-col"],
|
|
47
|
+
list: ["max-h-64 overflow-x-hidden overflow-y-auto overscroll-contain scroll-py-6", "-mx-1 flex flex-col px-1"],
|
|
48
48
|
item: [
|
|
49
49
|
"flex w-full shrink-0 cursor-default select-none items-center justify-between overflow-hidden",
|
|
50
50
|
"text-left outline-none transition-colors",
|
|
@@ -151,7 +151,9 @@ function findActionValue(value) {
|
|
|
151
151
|
* row, the same position then holds another item while focus stays on the row,
|
|
152
152
|
* and the next arrow key starts from the wrong place. Once the list has
|
|
153
153
|
* re-rendered, focus the list and then the row again: the row's focus handler
|
|
154
|
-
* re-reads its position and moves the highlight back to it.
|
|
154
|
+
* re-reads its position and moves the highlight back to it. The list takes
|
|
155
|
+
* focus only for this: it has no tabindex of its own, and Chrome focuses a
|
|
156
|
+
* scroller without one only while its content overflows it.
|
|
155
157
|
*/
|
|
156
158
|
function keepActionHighlighted(event) {
|
|
157
159
|
const target = event.target;
|
|
@@ -160,8 +162,12 @@ function keepActionHighlighted(event) {
|
|
|
160
162
|
if (!row) return;
|
|
161
163
|
requestAnimationFrame(() => {
|
|
162
164
|
if (!row.isConnected || row.hasAttribute("data-highlighted")) return;
|
|
163
|
-
row.closest("[role=\"listbox\"]")
|
|
165
|
+
const list = row.closest("[role=\"listbox\"]");
|
|
166
|
+
const lent = list !== null && !list.hasAttribute("tabindex");
|
|
167
|
+
if (lent) list.tabIndex = -1;
|
|
168
|
+
list?.focus({ preventScroll: true });
|
|
164
169
|
row.focus({ preventScroll: true });
|
|
170
|
+
if (lent) list.removeAttribute("tabindex");
|
|
165
171
|
});
|
|
166
172
|
}
|
|
167
173
|
function Select$1({ chrome = "default", onValueChange, onOpenChange, isItemEqualToValue, itemToStringLabel, itemToStringValue, ...props }) {
|