Skip to content

Commit b26668c

Browse files
docs: bottom sheet (#2735)
* docs: add bottom sheet docs * docs(bottom-sheet): add more sections * chore: update lockfile * refactor: update website css for bottom sheet in dark mode * refactor: docs --------- Co-authored-by: Segun Adebayo <[email protected]>
1 parent eda87f6 commit b26668c

File tree

26 files changed

+1609
-916
lines changed

26 files changed

+1609
-916
lines changed

packages/docs/data/css-vars.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,16 @@
176176
"--slide-item-size": "The calculated size of each slide item"
177177
}
178178
},
179+
"bottom-sheet": {
180+
"Content": {
181+
"--bottom-sheet-translate": "The bottom sheet translate value for the Content",
182+
"--layer-index": "The index of the dismissable in the layer stack",
183+
"--nested-layer-count": "The number of nested bottom-sheets"
184+
},
185+
"Backdrop": {
186+
"--layer-index": "The index of the dismissable in the layer stack"
187+
}
188+
},
179189
"angle-slider": {
180190
"Root": {
181191
"--value": "The current value",

packages/docs/data/data-attr.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@
8686
"data-state": "\"hidden\" | \"visible\""
8787
}
8888
},
89+
"bottom-sheet": {
90+
"Content": {
91+
"data-scope": "bottom-sheet",
92+
"data-part": "content",
93+
"data-state": "\"open\" | \"closed\""
94+
},
95+
"Backdrop": {
96+
"data-scope": "bottom-sheet",
97+
"data-part": "backdrop",
98+
"data-state": "\"open\" | \"closed\""
99+
}
100+
},
89101
"carousel": {
90102
"Root": {
91103
"data-scope": "carousel",

packages/machines/bottom-sheet/src/bottom-sheet.connect.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,36 @@
1+
import { getEventPoint, getEventTarget, isLeftClick } from "@zag-js/dom-query"
12
import type { JSX, NormalizeProps, PropTypes } from "@zag-js/types"
2-
import type { BottomSheetApi, BottomSheetService } from "./bottom-sheet.types"
3+
import { toPx } from "@zag-js/utils"
34
import { parts } from "./bottom-sheet.anatomy"
45
import * as dom from "./bottom-sheet.dom"
5-
import { getEventPoint, getEventTarget, isLeftClick } from "@zag-js/dom-query"
6-
7-
const tap = <T, R>(v: T | null, fn: (v: T) => R): R | undefined => (v != null ? fn(v) : undefined)
6+
import type { BottomSheetApi, BottomSheetService } from "./bottom-sheet.types"
87

98
export function connect<T extends PropTypes>(
109
service: BottomSheetService,
1110
normalize: NormalizeProps<T>,
1211
): BottomSheetApi<T> {
1312
const { state, send, context, scope, prop } = service
1413

14+
const open = state.hasTag("open")
15+
const dragging = state.hasTag("dragging")
16+
const dragOffset = context.get("dragOffset")
17+
18+
const activeSnapPoint = context.get("activeSnapPoint")
19+
const resolvedActiveSnapPoint = context.get("resolvedActiveSnapPoint")
20+
const translate = dragOffset ?? resolvedActiveSnapPoint?.offset
21+
1522
function onPointerDown(event: JSX.PointerEvent<HTMLElement>) {
1623
if (!isLeftClick(event)) return
17-
1824
const target = getEventTarget<HTMLElement>(event)
1925
if (target?.hasAttribute("data-no-drag") || target?.closest("[data-no-drag]")) return
20-
2126
if (state.matches("closing")) return
22-
2327
const point = getEventPoint(event)
2428
send({ type: "POINTER_DOWN", point })
2529
}
2630

27-
const open = state.hasTag("open")
28-
const dragging = state.hasTag("dragging")
29-
30-
const translate = context.get("dragOffset") ?? context.get("resolvedActiveSnapPoint")?.offset
31-
3231
return {
3332
open,
34-
activeSnapPoint: context.get("activeSnapPoint"),
33+
activeSnapPoint,
3534

3635
setOpen(nextOpen) {
3736
const open = state.hasTag("open")
@@ -52,14 +51,14 @@ export function connect<T extends PropTypes>(
5251
id: dom.getContentId(scope),
5352
tabIndex: -1,
5453
role: "dialog",
55-
"aria-modal": "true",
54+
"aria-modal": prop("modal"),
5655
"aria-labelledby": dom.getTitleId(scope),
5756
hidden: !open,
5857
"data-state": open ? "open" : "closed",
5958
style: {
6059
transform: "translate3d(0, var(--bottom-sheet-translate, 0), 0)",
6160
transitionDuration: dragging ? "0s" : undefined,
62-
"--bottom-sheet-translate": tap(translate, (v) => `${v}px`),
61+
"--bottom-sheet-translate": toPx(translate),
6362
willChange: "transform",
6463
},
6564
onPointerDown(event) {

packages/machines/bottom-sheet/src/bottom-sheet.machine.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import { ariaHidden } from "@zag-js/aria-hidden"
12
import { createMachine } from "@zag-js/core"
2-
import type { BottomSheetSchema, ResolvedSnapPoint } from "./bottom-sheet.types"
3-
import type { Point } from "@zag-js/types"
4-
import { addDomEvent, getEventPoint, getEventTarget, raf } from "@zag-js/dom-query"
5-
import * as dom from "./bottom-sheet.dom"
6-
import { resolveSnapPoint } from "./utils/resolve-snap-point"
73
import { trackDismissableElement } from "@zag-js/dismissable"
8-
import { findClosestSnapPoint } from "./utils/find-closest-snap-point"
4+
import { addDomEvent, getEventPoint, getEventTarget, raf } from "@zag-js/dom-query"
95
import { trapFocus } from "@zag-js/focus-trap"
106
import { preventBodyScroll } from "@zag-js/remove-scroll"
11-
import { ariaHidden } from "@zag-js/aria-hidden"
7+
import type { Point } from "@zag-js/types"
8+
import * as dom from "./bottom-sheet.dom"
9+
import type { BottomSheetSchema, ResolvedSnapPoint } from "./bottom-sheet.types"
10+
import { findClosestSnapPoint } from "./utils/find-closest-snap-point"
1211
import { getScrollInfo } from "./utils/get-scroll-info"
12+
import { resolveSnapPoint } from "./utils/resolve-snap-point"
1313

1414
export const machine = createMachine<BottomSheetSchema>({
1515
props({ props, scope }) {

0 commit comments

Comments
 (0)