@plastic-js/tsumiki 0.1.69 → 0.1.71
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.
|
@@ -122,7 +122,7 @@ var bodyClass = css({
|
|
|
122
122
|
flex: 1,
|
|
123
123
|
minHeight: 0,
|
|
124
124
|
overflowY: "auto",
|
|
125
|
-
|
|
125
|
+
overscrollBehavior: "contain"
|
|
126
126
|
});
|
|
127
127
|
var footerClass = css({
|
|
128
128
|
display: "flex",
|
|
@@ -130,6 +130,7 @@ var footerClass = css({
|
|
|
130
130
|
padding: "var(--tsu-container-padding-lg)",
|
|
131
131
|
flexShrink: 0
|
|
132
132
|
});
|
|
133
|
+
var footerSheetClass = css({ paddingBottom: "calc(var(--tsu-container-padding-lg) + env(safe-area-inset-bottom, 0px))" });
|
|
133
134
|
var footerBtnClass = css({
|
|
134
135
|
display: "flex",
|
|
135
136
|
gap: "20px",
|
|
@@ -324,7 +325,7 @@ var Dialog$1 = (props) => {
|
|
|
324
325
|
() => {
|
|
325
326
|
const _el0 = _tmpl4.cloneNode(true);
|
|
326
327
|
insert(_el0, () => footerContent);
|
|
327
|
-
setProp(_el0, "className", () => footerClass);
|
|
328
|
+
setProp(_el0, "className", () => isSheet ? `${footerClass} ${footerSheetClass}` : footerClass);
|
|
328
329
|
return _el0;
|
|
329
330
|
}
|
|
330
331
|
]
|
package/docs/api.md
CHANGED
|
@@ -716,6 +716,8 @@ A free-form presentation layer: a backdrop, an optional drag grabber, and a scro
|
|
|
716
716
|
**Rendered DOM parts:** exactly three — `data-part="backdrop"`, `data-part="grabber"` (only when `draggable`), and `data-part="content"`. With the default `lazyMount: true` + `unmountOnExit: true`, a closed sheet that was never opened renders **zero** nodes; after close it stays mounted only long enough for the exit transition, then unmounts. BottomSheet has no focus trap or Escape-to-close — use [`Dialog`](#dialog) when those are required.
|
|
717
717
|
|
|
718
718
|
> **Design decision:** `content` is a pure container — `display: flex; flex-direction: column` only, with **no padding, no margin, and no scrolling**. Spacing and scrolling are entirely consumer-owned: build your own layout inside `children` (the sheet caps height at `70vh`, so a scrollable section can be a `flex: 1; min-height: 0; overflow-y: auto` child).
|
|
719
|
+
>
|
|
720
|
+
> **Consumer contract:** any scrollable child inside a `BottomSheet` must set `overscroll-behavior: contain` (or `none` if a hard edge is desired). Otherwise, on iOS the rubber-band overscroll at the child's top/bottom chains into the drag-to-dismiss area and shoves the whole sheet.
|
|
719
721
|
|
|
720
722
|
| Prop | Type | Default | Description |
|
|
721
723
|
|---|---|---|---|---|
|
package/package.json
CHANGED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Pagination renders an invisible ellipsis
|
|
2
|
-
|
|
3
|
-
**Status:** Known issue
|
|
4
|
-
**Affects:** `src/components/Pagination.jsx:55`
|
|
5
|
-
|
|
6
|
-
## Problem
|
|
7
|
-
|
|
8
|
-
The `Pages` renderer emits the ellipsis without any content:
|
|
9
|
-
|
|
10
|
-
```jsx
|
|
11
|
-
// src/components/Pagination.jsx:55
|
|
12
|
-
: <ArkPagination.Ellipsis key={i} index={i} className={ellipsisClass} />
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
`ArkPagination.Ellipsis` renders a plain empty `div` (it only spreads
|
|
16
|
-
`getEllipsisProps` — id/data attrs — and never injects text). The tsumiki
|
|
17
|
-
`ellipsisClass` only sizes/colors the box, so the ellipsis shows up as a blank
|
|
18
|
-
gap with no `…` glyph.
|
|
19
|
-
|
|
20
|
-
With enough pages to trigger the collapsed range, the page-number pattern looks
|
|
21
|
-
random and buggy instead of standard, e.g. with 12 total pages and the default
|
|
22
|
-
`boundaryCount = 1` / `siblingCount = 1`:
|
|
23
|
-
|
|
24
|
-
- Page 1: `1 2 3 12` (should be `1 2 3 … 12`)
|
|
25
|
-
- Page 4: `1 4 12` (should be `1 … 4 … 12`)
|
|
26
|
-
- Page 10: `1 10 11 12` (should be `1 … 10 11 12`)
|
|
27
|
-
|
|
28
|
-
Each gap is where the invisible ellipsis box sits.
|
|
29
|
-
|
|
30
|
-
## Fix
|
|
31
|
-
|
|
32
|
-
Pass the glyph as children so the ellipsis is visible:
|
|
33
|
-
|
|
34
|
-
```jsx
|
|
35
|
-
: <ArkPagination.Ellipsis key={i} index={i} className={ellipsisClass}>…</ArkPagination.Ellipsis>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Consider tightening `ellipsisClass` width (e.g. `28px`) so the visible `…` does
|
|
39
|
-
not consume a full button-sized slot.
|
|
40
|
-
|
|
41
|
-
## Secondary note (related UX)
|
|
42
|
-
|
|
43
|
-
Prev/Next reuse `itemClass` (`minWidth: var(--tsu-level-primary-md)`, 40px),
|
|
44
|
-
which is a small tap target. If wider triggers are desired, they need their own
|
|
45
|
-
class, since `Pagination` currently exposes no per-trigger className override.
|