@pg-labs-incubator/cobweb 0.0.0-stage → 0.0.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/LICENSE +163 -0
- package/README.md +82 -2
- package/package.json +111 -3
- package/src/action/action.yaml +291 -0
- package/src/action/button-group.yaml +56 -0
- package/src/action/button.yaml +239 -0
- package/src/action/split-button.yaml +87 -0
- package/src/color/color.yaml +181 -0
- package/src/color/palette.yaml +147 -0
- package/src/container/card.yaml +170 -0
- package/src/container/corner-radius.yaml +50 -0
- package/src/container/elevation.yaml +19 -0
- package/src/design.yaml +41 -0
- package/src/feedback/feedback.yaml +225 -0
- package/src/icon/icon-font.yaml +28 -0
- package/src/icon/icon.yaml +31 -0
- package/src/input/date-picker.yaml +144 -0
- package/src/input/date-range-input.yaml +162 -0
- package/src/input/range-slider.yaml +161 -0
- package/src/input/select.yaml +230 -0
- package/src/input/slider.yaml +172 -0
- package/src/input/text-field.yaml +240 -0
- package/src/input/time-picker.yaml +220 -0
- package/src/motion/motion.yaml +371 -0
- package/src/navigation/app-bar.yaml +147 -0
- package/src/navigation/navigation.yaml +339 -0
- package/src/navigation/scroll.yaml +23 -0
- package/src/navigation/search.yaml +112 -0
- package/src/navigation/tabs.yaml +144 -0
- package/src/navigation/toolbar.yaml +130 -0
- package/src/selection/checkbox.yaml +162 -0
- package/src/selection/chip.yaml +219 -0
- package/src/selection/radio.yaml +125 -0
- package/src/selection/segmented-group.yaml +11 -0
- package/src/selection/segmented.yaml +69 -0
- package/src/selection/switch.yaml +209 -0
- package/src/spacing/measurement.yaml +80 -0
- package/src/state/state.yaml +38 -0
- package/src/surface/surface.yaml +483 -0
- package/src/text/line-height.yaml +144 -0
- package/src/text/typeface.yaml +31 -0
- package/src/text/typescale.yaml +726 -0
- package/target/esbuild/action/action.css +1 -0
- package/target/esbuild/action/base.jsx +1 -0
- package/target/esbuild/action/button.jsx +17 -0
- package/target/esbuild/action/fab-menu-context.jsx +1 -0
- package/target/esbuild/action/fab-menu.jsx +15 -0
- package/target/esbuild/action/fab.jsx +7 -0
- package/target/esbuild/action/group.jsx +22 -0
- package/target/esbuild/action/icon-button.jsx +5 -0
- package/target/esbuild/action/index.jsx +1 -0
- package/target/esbuild/action/split-button.jsx +12 -0
- package/target/esbuild/color/contrast.jsx +1 -0
- package/target/esbuild/color/dynamic.jsx +1 -0
- package/target/esbuild/color/hct.jsx +1 -0
- package/target/esbuild/color/index.css +1 -0
- package/target/esbuild/color/index.jsx +1 -0
- package/target/esbuild/color/palette.jsx +1 -0
- package/target/esbuild/color/scheme.jsx +1 -0
- package/target/esbuild/color/temperature.jsx +1 -0
- package/target/esbuild/container/card.css +1 -0
- package/target/esbuild/container/card.jsx +1 -0
- package/target/esbuild/container/elevation-shadow.css +1 -0
- package/target/esbuild/container/elevation-shadow.jsx +1 -0
- package/target/esbuild/container/index.jsx +1 -0
- package/target/esbuild/dom/client.jsx +1 -0
- package/target/esbuild/dom/index.jsx +1 -0
- package/target/esbuild/dom/server.jsx +1 -0
- package/target/esbuild/dom/types.jsx +1 -0
- package/target/esbuild/feedback/badge.jsx +15 -0
- package/target/esbuild/feedback/feedback.css +1 -0
- package/target/esbuild/feedback/focus.jsx +1 -0
- package/target/esbuild/feedback/index.jsx +1 -0
- package/target/esbuild/feedback/loading.jsx +7 -0
- package/target/esbuild/feedback/observe.jsx +1 -0
- package/target/esbuild/feedback/progress.jsx +35 -0
- package/target/esbuild/feedback/snackbar.jsx +23 -0
- package/target/esbuild/feedback/tooltip.jsx +24 -0
- package/target/esbuild/icon/icon.css +1 -0
- package/target/esbuild/icon/icon.jsx +1 -0
- package/target/esbuild/icon/index.jsx +1 -0
- package/target/esbuild/index.css +1 -0
- package/target/esbuild/index.jsx +1 -0
- package/target/esbuild/input/autocomplete.jsx +5 -0
- package/target/esbuild/input/base.jsx +4 -0
- package/target/esbuild/input/date-picker.css +1 -0
- package/target/esbuild/input/date-picker.jsx +104 -0
- package/target/esbuild/input/date-range-input.css +1 -0
- package/target/esbuild/input/date-time.jsx +21 -0
- package/target/esbuild/input/index.css +1 -0
- package/target/esbuild/input/index.jsx +1 -0
- package/target/esbuild/input/paired-input.jsx +1 -0
- package/target/esbuild/input/picker-dialog.css +1 -0
- package/target/esbuild/input/picker-dialog.jsx +14 -0
- package/target/esbuild/input/select.css +1 -0
- package/target/esbuild/input/select.jsx +63 -0
- package/target/esbuild/input/slider.css +1 -0
- package/target/esbuild/input/slider.jsx +51 -0
- package/target/esbuild/input/text-field.css +1 -0
- package/target/esbuild/input/text-field.jsx +67 -0
- package/target/esbuild/input/time-picker.css +1 -0
- package/target/esbuild/input/time-picker.jsx +29 -0
- package/target/esbuild/motion/frame.jsx +1 -0
- package/target/esbuild/motion/index.css +1 -0
- package/target/esbuild/motion/index.jsx +1 -0
- package/target/esbuild/motion/material.jsx +1 -0
- package/target/esbuild/motion/motion.jsx +1 -0
- package/target/esbuild/motion/spring.jsx +1 -0
- package/target/esbuild/motion/transition.css +1 -0
- package/target/esbuild/motion/transition.jsx +1 -0
- package/target/esbuild/motion/velocity.jsx +1 -0
- package/target/esbuild/navigation/app-bar.jsx +51 -0
- package/target/esbuild/navigation/base.jsx +1 -0
- package/target/esbuild/navigation/drawer.jsx +25 -0
- package/target/esbuild/navigation/index.jsx +1 -0
- package/target/esbuild/navigation/navigation.css +1 -0
- package/target/esbuild/navigation/navigation.jsx +29 -0
- package/target/esbuild/navigation/scroll.jsx +1 -0
- package/target/esbuild/navigation/search.jsx +29 -0
- package/target/esbuild/navigation/tabs.jsx +7 -0
- package/target/esbuild/navigation/toolbar.jsx +23 -0
- package/target/esbuild/selection/base.jsx +1 -0
- package/target/esbuild/selection/checkbox.jsx +14 -0
- package/target/esbuild/selection/chip.jsx +23 -0
- package/target/esbuild/selection/index.jsx +1 -0
- package/target/esbuild/selection/radio.jsx +9 -0
- package/target/esbuild/selection/segmented.jsx +15 -0
- package/target/esbuild/selection/selection.css +1 -0
- package/target/esbuild/selection/switch.jsx +14 -0
- package/target/esbuild/shape/corner-rounding.jsx +1 -0
- package/target/esbuild/shape/cubic.jsx +1 -0
- package/target/esbuild/shape/index.jsx +1 -0
- package/target/esbuild/shape/material-shapes.jsx +1 -0
- package/target/esbuild/shape/morph.jsx +1 -0
- package/target/esbuild/shape/path.jsx +1 -0
- package/target/esbuild/shape/point.jsx +1 -0
- package/target/esbuild/shape/rounded-polygon.jsx +1 -0
- package/target/esbuild/shape/shapes.jsx +1 -0
- package/target/esbuild/spacing/index.jsx +1 -0
- package/target/esbuild/state/component.css +1 -0
- package/target/esbuild/state/component.jsx +1 -0
- package/target/esbuild/state/controller.jsx +1 -0
- package/target/esbuild/state/index.jsx +1 -0
- package/target/esbuild/state/ripple.jsx +1 -0
- package/target/esbuild/state/state.jsx +1 -0
- package/target/esbuild/state/style.jsx +1 -0
- package/target/esbuild/surface/carousel-layout.jsx +1 -0
- package/target/esbuild/surface/carousel.css +1 -0
- package/target/esbuild/surface/carousel.jsx +10 -0
- package/target/esbuild/surface/dialog.jsx +35 -0
- package/target/esbuild/surface/divider.jsx +1 -0
- package/target/esbuild/surface/drag.jsx +1 -0
- package/target/esbuild/surface/gestures.css +1 -0
- package/target/esbuild/surface/gestures.jsx +7 -0
- package/target/esbuild/surface/index.css +1 -0
- package/target/esbuild/surface/index.jsx +1 -0
- package/target/esbuild/surface/interactive.jsx +1 -0
- package/target/esbuild/surface/list-patterns.jsx +26 -0
- package/target/esbuild/surface/list.css +1 -0
- package/target/esbuild/surface/list.jsx +9 -0
- package/target/esbuild/surface/menu.css +1 -0
- package/target/esbuild/surface/menu.jsx +12 -0
- package/target/esbuild/surface/scaffold.jsx +47 -0
- package/target/esbuild/surface/sheet.jsx +21 -0
- package/target/esbuild/surface/side-sheet.jsx +17 -0
- package/target/esbuild/surface/slots.jsx +1 -0
- package/target/esbuild/surface/surface.css +1 -0
- package/target/esbuild/surface/surface.jsx +1 -0
- package/target/esbuild/text/index.css +1 -0
- package/target/esbuild/text/index.jsx +1 -0
- package/target/esbuild/text/text.css +1 -0
- package/target/esbuild/text/text.jsx +3 -0
- package/target/esbuild/text/typography.css +1 -0
- package/target/esbuild/text/typography.jsx +1 -0
- package/target/esbuild/util/box-side.jsx +1 -0
- package/target/esbuild/util/debug.jsx +1 -0
- package/target/esbuild/util/dom.jsx +1 -0
- package/target/esbuild/util/event.jsx +1 -0
- package/target/esbuild/util/index.jsx +1 -0
- package/target/esbuild/util/preconditions.jsx +1 -0
- package/target/esbuild/util/reactive.jsx +1 -0
- package/target/tsc/action/action.css.d.ts +3 -0
- package/target/tsc/action/base.d.ts +211 -0
- package/target/tsc/action/button.d.ts +126 -0
- package/target/tsc/action/fab-menu-context.d.ts +16 -0
- package/target/tsc/action/fab-menu.d.ts +112 -0
- package/target/tsc/action/fab.d.ts +98 -0
- package/target/tsc/action/group.d.ts +166 -0
- package/target/tsc/action/icon-button.d.ts +79 -0
- package/target/tsc/action/index.d.ts +24 -0
- package/target/tsc/action/split-button.d.ts +78 -0
- package/target/tsc/color/contrast.d.ts +48 -0
- package/target/tsc/color/dynamic.d.ts +203 -0
- package/target/tsc/color/hct.d.ts +114 -0
- package/target/tsc/color/index.css.d.ts +3 -0
- package/target/tsc/color/index.d.ts +23 -0
- package/target/tsc/color/palette.d.ts +30 -0
- package/target/tsc/color/scheme.d.ts +446 -0
- package/target/tsc/color/temperature.d.ts +24 -0
- package/target/tsc/container/card.css.d.ts +3 -0
- package/target/tsc/container/card.d.ts +110 -0
- package/target/tsc/container/elevation-shadow.css.d.ts +3 -0
- package/target/tsc/container/elevation-shadow.d.ts +23 -0
- package/target/tsc/container/index.d.ts +44 -0
- package/target/tsc/dom/client.d.ts +387 -0
- package/target/tsc/dom/index.d.ts +93 -0
- package/target/tsc/dom/server.d.ts +65 -0
- package/target/tsc/dom/types.d.ts +134 -0
- package/target/tsc/feedback/badge.d.ts +116 -0
- package/target/tsc/feedback/feedback.css.d.ts +3 -0
- package/target/tsc/feedback/focus.d.ts +20 -0
- package/target/tsc/feedback/index.d.ts +17 -0
- package/target/tsc/feedback/loading.d.ts +194 -0
- package/target/tsc/feedback/observe.d.ts +75 -0
- package/target/tsc/feedback/progress.d.ts +281 -0
- package/target/tsc/feedback/snackbar.d.ts +398 -0
- package/target/tsc/feedback/tooltip.d.ts +326 -0
- package/target/tsc/icon/icon.css.d.ts +3 -0
- package/target/tsc/icon/icon.d.ts +69 -0
- package/target/tsc/icon/index.d.ts +13 -0
- package/target/tsc/index.css.d.ts +3 -0
- package/target/tsc/index.d.ts +7 -0
- package/target/tsc/input/autocomplete.d.ts +119 -0
- package/target/tsc/input/base.d.ts +282 -0
- package/target/tsc/input/date-picker.css.d.ts +3 -0
- package/target/tsc/input/date-picker.d.ts +351 -0
- package/target/tsc/input/date-range-input.css.d.ts +3 -0
- package/target/tsc/input/date-time.d.ts +171 -0
- package/target/tsc/input/index.css.d.ts +3 -0
- package/target/tsc/input/index.d.ts +27 -0
- package/target/tsc/input/paired-input.d.ts +435 -0
- package/target/tsc/input/picker-dialog.css.d.ts +3 -0
- package/target/tsc/input/picker-dialog.d.ts +84 -0
- package/target/tsc/input/select.css.d.ts +3 -0
- package/target/tsc/input/select.d.ts +267 -0
- package/target/tsc/input/slider.css.d.ts +3 -0
- package/target/tsc/input/slider.d.ts +372 -0
- package/target/tsc/input/text-field.css.d.ts +3 -0
- package/target/tsc/input/text-field.d.ts +415 -0
- package/target/tsc/input/time-picker.css.d.ts +3 -0
- package/target/tsc/input/time-picker.d.ts +212 -0
- package/target/tsc/motion/frame.d.ts +36 -0
- package/target/tsc/motion/index.css.d.ts +3 -0
- package/target/tsc/motion/index.d.ts +34 -0
- package/target/tsc/motion/material.d.ts +110 -0
- package/target/tsc/motion/motion.d.ts +235 -0
- package/target/tsc/motion/spring.d.ts +223 -0
- package/target/tsc/motion/transition.css.d.ts +3 -0
- package/target/tsc/motion/transition.d.ts +597 -0
- package/target/tsc/motion/velocity.d.ts +54 -0
- package/target/tsc/navigation/app-bar.d.ts +473 -0
- package/target/tsc/navigation/base.d.ts +320 -0
- package/target/tsc/navigation/drawer.d.ts +301 -0
- package/target/tsc/navigation/index.d.ts +25 -0
- package/target/tsc/navigation/navigation.css.d.ts +3 -0
- package/target/tsc/navigation/navigation.d.ts +537 -0
- package/target/tsc/navigation/scroll.d.ts +218 -0
- package/target/tsc/navigation/search.d.ts +332 -0
- package/target/tsc/navigation/tabs.d.ts +497 -0
- package/target/tsc/navigation/toolbar.d.ts +248 -0
- package/target/tsc/selection/base.d.ts +100 -0
- package/target/tsc/selection/checkbox.d.ts +194 -0
- package/target/tsc/selection/chip.d.ts +358 -0
- package/target/tsc/selection/index.d.ts +21 -0
- package/target/tsc/selection/radio.d.ts +198 -0
- package/target/tsc/selection/segmented.d.ts +333 -0
- package/target/tsc/selection/selection.css.d.ts +3 -0
- package/target/tsc/selection/switch.d.ts +165 -0
- package/target/tsc/shape/corner-rounding.d.ts +36 -0
- package/target/tsc/shape/cubic.d.ts +215 -0
- package/target/tsc/shape/index.d.ts +35 -0
- package/target/tsc/shape/material-shapes.d.ts +176 -0
- package/target/tsc/shape/morph.d.ts +91 -0
- package/target/tsc/shape/path.d.ts +177 -0
- package/target/tsc/shape/point.d.ts +165 -0
- package/target/tsc/shape/rounded-polygon.d.ts +289 -0
- package/target/tsc/shape/shapes.d.ts +76 -0
- package/target/tsc/spacing/index.d.ts +19 -0
- package/target/tsc/state/component.css.d.ts +3 -0
- package/target/tsc/state/component.d.ts +276 -0
- package/target/tsc/state/controller.d.ts +257 -0
- package/target/tsc/state/index.d.ts +19 -0
- package/target/tsc/state/ripple.d.ts +50 -0
- package/target/tsc/state/state.d.ts +129 -0
- package/target/tsc/state/style.d.ts +22 -0
- package/target/tsc/surface/carousel-layout.d.ts +212 -0
- package/target/tsc/surface/carousel.css.d.ts +3 -0
- package/target/tsc/surface/carousel.d.ts +231 -0
- package/target/tsc/surface/dialog.d.ts +580 -0
- package/target/tsc/surface/divider.d.ts +92 -0
- package/target/tsc/surface/drag.d.ts +92 -0
- package/target/tsc/surface/gestures.css.d.ts +3 -0
- package/target/tsc/surface/gestures.d.ts +292 -0
- package/target/tsc/surface/index.css.d.ts +3 -0
- package/target/tsc/surface/index.d.ts +29 -0
- package/target/tsc/surface/interactive.d.ts +22 -0
- package/target/tsc/surface/list-patterns.d.ts +384 -0
- package/target/tsc/surface/list.css.d.ts +3 -0
- package/target/tsc/surface/list.d.ts +340 -0
- package/target/tsc/surface/menu.css.d.ts +3 -0
- package/target/tsc/surface/menu.d.ts +590 -0
- package/target/tsc/surface/scaffold.d.ts +337 -0
- package/target/tsc/surface/sheet.d.ts +384 -0
- package/target/tsc/surface/side-sheet.d.ts +183 -0
- package/target/tsc/surface/slots.d.ts +21 -0
- package/target/tsc/surface/surface.css.d.ts +3 -0
- package/target/tsc/surface/surface.d.ts +192 -0
- package/target/tsc/text/index.css.d.ts +3 -0
- package/target/tsc/text/index.d.ts +18 -0
- package/target/tsc/text/text.css.d.ts +3 -0
- package/target/tsc/text/text.d.ts +94 -0
- package/target/tsc/text/typography.css.d.ts +3 -0
- package/target/tsc/text/typography.d.ts +82 -0
- package/target/tsc/util/box-side.d.ts +76 -0
- package/target/tsc/util/debug.d.ts +20 -0
- package/target/tsc/util/dom.d.ts +35 -0
- package/target/tsc/util/event.d.ts +93 -0
- package/target/tsc/util/index.d.ts +12 -0
- package/target/tsc/util/preconditions.d.ts +79 -0
- package/target/tsc/util/reactive.d.ts +36 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import type { JSX } from "solid-js";
|
|
2
|
+
import type { DomProps } from "..";
|
|
3
|
+
/**
|
|
4
|
+
* DOM properties shared by navigation elements.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam E - native function element type
|
|
7
|
+
*/
|
|
8
|
+
export type NavigationElementProps<E extends HTMLElement = HTMLElement> = DomProps<E, JSX.HTMLAttributes<E>>;
|
|
9
|
+
/**
|
|
10
|
+
* Callback invoked after a destination or tab is activated.
|
|
11
|
+
*
|
|
12
|
+
* @param value - value of the activated destination or tab
|
|
13
|
+
* @param event - event which activated the destination or tab
|
|
14
|
+
*/
|
|
15
|
+
export type NavigationChangeHandler = (value: string, event: Event) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Callback invoked when a component requests a new open or expanded state.
|
|
18
|
+
*
|
|
19
|
+
* @param open - requested state
|
|
20
|
+
* @param event - event which requested the state
|
|
21
|
+
*/
|
|
22
|
+
export type NavigationOpenChangeHandler = (open: boolean, event: Event) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Orientation of a navigation composite.
|
|
25
|
+
*/
|
|
26
|
+
export type NavigationOrientation = "horizontal" | "vertical";
|
|
27
|
+
/**
|
|
28
|
+
* Tab activation behavior.
|
|
29
|
+
*
|
|
30
|
+
* | Mode | Behavior |
|
|
31
|
+
* | ------------- | -------------------------------------------------------------------- |
|
|
32
|
+
* | `"automatic"` | Moving focus to a tab, including with the arrow keys, activates it. |
|
|
33
|
+
* | `"manual"` | The arrow keys only move focus; Enter, Space, or a click activates. |
|
|
34
|
+
*/
|
|
35
|
+
export type TabActivationMode = "automatic" | "manual";
|
|
36
|
+
/**
|
|
37
|
+
* Handlers of a {@link DismissDrag | dismiss drag}.
|
|
38
|
+
*
|
|
39
|
+
* A dismiss drag moves a surface from its open position towards its dismissed position at the
|
|
40
|
+
* inline start edge. The drag reports its offset as a fraction of the distance between the two
|
|
41
|
+
* positions, positive towards the dismissed position, relative to where the drag started.
|
|
42
|
+
*/
|
|
43
|
+
export interface DismissDragHandlers {
|
|
44
|
+
/**
|
|
45
|
+
* Start a drag once a press moved horizontally beyond the touch slop.
|
|
46
|
+
*
|
|
47
|
+
* @param event - `pointerdown` event of the press
|
|
48
|
+
* @returns distance, in pixels, between the open and the dismissed position, or `null` to
|
|
49
|
+
* decline the drag
|
|
50
|
+
*/
|
|
51
|
+
begin(event: PointerEvent): number | null;
|
|
52
|
+
/**
|
|
53
|
+
* Follow the pointer.
|
|
54
|
+
*
|
|
55
|
+
* @param offset - dragged fraction of the distance towards the dismissed position
|
|
56
|
+
*/
|
|
57
|
+
update(offset: number): void;
|
|
58
|
+
/**
|
|
59
|
+
* Release the drag.
|
|
60
|
+
*
|
|
61
|
+
* @param offset - dragged fraction of the distance towards the dismissed position
|
|
62
|
+
* @param velocity - release velocity towards the dismissed position, in fractions of the
|
|
63
|
+
* distance per second
|
|
64
|
+
* @param event - event which ended the drag
|
|
65
|
+
*/
|
|
66
|
+
end(offset: number, velocity: number, event: PointerEvent): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve JSX slots in authored property order before the containing markup is allocated.
|
|
70
|
+
*
|
|
71
|
+
* Server rendering evaluates property getters lazily, in the order a renderer reads them. A
|
|
72
|
+
* component wrapper calls this before its renderer so both server and client construct slot
|
|
73
|
+
* content in authored order, before the component's own elements, which keeps hydration keys
|
|
74
|
+
* aligned and the hydrated slot nodes owned by their component.
|
|
75
|
+
*
|
|
76
|
+
* @typeParam P - component properties type
|
|
77
|
+
* @param props - component properties
|
|
78
|
+
* @param children - controller-provided children, or `undefined` to use `props.children`
|
|
79
|
+
* @param keys - JSX slot properties, besides `children`, to resolve
|
|
80
|
+
* @returns properties whose slots are cached, reactive resolved content
|
|
81
|
+
*/
|
|
82
|
+
export declare function resolveNavigationSlots<P extends object>(props: P, children: JSX.Element, keys: readonly string[]): P & {
|
|
83
|
+
children: JSX.Element;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Create an element id which is unique within its document.
|
|
87
|
+
*
|
|
88
|
+
* The id is derived from Solid's owner-scoped {@link solid-js#createUniqueId | unique id}, which
|
|
89
|
+
* server rendering and hydration produce identically when components construct ids in the same
|
|
90
|
+
* order. When `value` is specified, a sanitized form of it is included for readability; it does
|
|
91
|
+
* **not** contribute to uniqueness, so equal values in different components still produce
|
|
92
|
+
* distinct ids.
|
|
93
|
+
*
|
|
94
|
+
* @param prefix - id prefix, such as `"cw-search-input"`
|
|
95
|
+
* @param value - optional value included in the id
|
|
96
|
+
* @returns unique element id
|
|
97
|
+
*/
|
|
98
|
+
export declare function uniqueId(prefix: string, value?: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* Resolve the selected value of a selection composite.
|
|
101
|
+
*
|
|
102
|
+
* The controlled `value` takes precedence over its `selectedValue` alias, which takes precedence
|
|
103
|
+
* over the initial `defaultValue`. A key which is present with an `undefined` value still takes
|
|
104
|
+
* precedence, since it denotes a controlled composite without a selection.
|
|
105
|
+
*
|
|
106
|
+
* @param props - composite properties
|
|
107
|
+
* @returns selected value, if any
|
|
108
|
+
*
|
|
109
|
+
* @remarks
|
|
110
|
+
* This reads properties in the caller's tracking context.
|
|
111
|
+
*/
|
|
112
|
+
export declare function selectedValueOf(props: {
|
|
113
|
+
value?: string;
|
|
114
|
+
selectedValue?: string;
|
|
115
|
+
defaultValue?: string;
|
|
116
|
+
}): string | undefined;
|
|
117
|
+
/**
|
|
118
|
+
* Test whether an element is disabled.
|
|
119
|
+
*
|
|
120
|
+
* An element is disabled when it matches `:disabled`, which includes form controls within a
|
|
121
|
+
* disabled `fieldset`, has a `disabled` attribute, or has `aria-disabled="true"`.
|
|
122
|
+
*
|
|
123
|
+
* @param elem - element to test
|
|
124
|
+
* @returns `true` if, and only if, `elem` is disabled
|
|
125
|
+
*/
|
|
126
|
+
export declare function isDisabledElement(elem: Element): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Test whether a control and its ancestors participate in rendered, interactive content.
|
|
129
|
+
*
|
|
130
|
+
* This reads the computed style of `element` and its ancestors. Callers performing several tests
|
|
131
|
+
* in one synchronous read phase pass a shared `visibility` cache so each ancestor is read at most
|
|
132
|
+
* once.
|
|
133
|
+
*
|
|
134
|
+
* @param element - control to test
|
|
135
|
+
* @param visibility - optional cache shared within one synchronous read phase
|
|
136
|
+
* @returns `false` if, and only if, the control or an ancestor is `hidden`, `inert`, not
|
|
137
|
+
* displayed, or invisible
|
|
138
|
+
*/
|
|
139
|
+
export declare function isVisibleElement(element: HTMLElement, visibility?: Map<HTMLElement, boolean>): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Register a modal surface, in opening order, with its owner document.
|
|
142
|
+
*
|
|
143
|
+
* Registered layers and the document's top-layer elements form one stack, ordered by when each
|
|
144
|
+
* was registered or opened. {@link isTopModalLayer} uses this order to decide which surface owns
|
|
145
|
+
* focus containment and keyboard dismissal.
|
|
146
|
+
*
|
|
147
|
+
* Register a surface once it is connected: an element rendered from a template belongs to the
|
|
148
|
+
* template's document until it is inserted.
|
|
149
|
+
*
|
|
150
|
+
* @param root - modal surface in its owner document
|
|
151
|
+
* @returns cleanup function which releases this registration
|
|
152
|
+
*/
|
|
153
|
+
export declare function registerModalLayer(root: Element): () => void;
|
|
154
|
+
/**
|
|
155
|
+
* Test whether a registered modal surface owns focus and keyboard dismissal in its document.
|
|
156
|
+
*
|
|
157
|
+
* Registered surfaces within the top layer, such as dialog-based surfaces, take precedence over
|
|
158
|
+
* registered in-page surfaces, such as drawers; within each group, the most recently registered
|
|
159
|
+
* surface owns modality. An unregistered top-layer element which can own modality takes it away
|
|
160
|
+
* from `root` only when it opened *after* `root` was registered. Manual and hint popovers never
|
|
161
|
+
* take modality away, so an open tooltip does not disable a newer drawer.
|
|
162
|
+
*
|
|
163
|
+
* @param root - previously registered modal surface
|
|
164
|
+
* @returns `true` if, and only if, `root` owns modality
|
|
165
|
+
*/
|
|
166
|
+
export declare function isTopModalLayer(root: Element): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Test whether a value is an element, in any realm.
|
|
169
|
+
*
|
|
170
|
+
* Unlike `instanceof HTMLElement`, this also accepts elements of adopted documents and frames.
|
|
171
|
+
*
|
|
172
|
+
* @param value - value to test
|
|
173
|
+
* @returns `true` if, and only if, `value` is an element node
|
|
174
|
+
*/
|
|
175
|
+
export declare function isElementNode(value: unknown): value is HTMLElement;
|
|
176
|
+
/**
|
|
177
|
+
* Test whether a value is an `a` element, in any realm.
|
|
178
|
+
*
|
|
179
|
+
* @param value - value to test
|
|
180
|
+
* @returns `true` if, and only if, `value` is an `a` element
|
|
181
|
+
*/
|
|
182
|
+
export declare function isAnchorElement(value: unknown): value is HTMLAnchorElement;
|
|
183
|
+
/**
|
|
184
|
+
* Test whether a value is a `button` element, in any realm.
|
|
185
|
+
*
|
|
186
|
+
* @param value - value to test
|
|
187
|
+
* @returns `true` if, and only if, `value` is a `button` element
|
|
188
|
+
*/
|
|
189
|
+
export declare function isButtonElement(value: unknown): value is HTMLButtonElement;
|
|
190
|
+
/**
|
|
191
|
+
* Server renderer supplier of client builds.
|
|
192
|
+
*
|
|
193
|
+
* Component definitions select their server renderer with
|
|
194
|
+
* `isServer ? () => renderServer : unreachableServerRender`. Bundlers fold the constant `isServer`
|
|
195
|
+
* and drop server-only rendering code from client builds; client components never invoke the
|
|
196
|
+
* supplier.
|
|
197
|
+
*
|
|
198
|
+
* @returns never
|
|
199
|
+
* @throws {@link Error} always
|
|
200
|
+
*/
|
|
201
|
+
export declare function unreachableServerRender(): never;
|
|
202
|
+
/**
|
|
203
|
+
* Test whether a click on a link asks the browser for a native alternate activation.
|
|
204
|
+
*
|
|
205
|
+
* Secondary buttons and modifier keys open links in new tabs or windows, or download them. Such
|
|
206
|
+
* activations keep their native behavior and do not select the destination.
|
|
207
|
+
*
|
|
208
|
+
* @param event - click event
|
|
209
|
+
* @param elem - activated element
|
|
210
|
+
* @returns `true` if, and only if, `elem` is a link activated with a modifier or secondary button
|
|
211
|
+
*/
|
|
212
|
+
export declare function isAlternateLinkActivation(event: MouseEvent, elem: Element): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Prevent keyboard activation of a disabled link.
|
|
215
|
+
*
|
|
216
|
+
* Disabled links cannot use the native `disabled` attribute; this cancels Enter and Space so the
|
|
217
|
+
* browser does not follow them.
|
|
218
|
+
*
|
|
219
|
+
* @param event - keyboard event dispatched to `elem`
|
|
220
|
+
* @param elem - element receiving the event
|
|
221
|
+
*/
|
|
222
|
+
export declare function preventDisabledLinkKey(event: KeyboardEvent, elem: Element | null): void;
|
|
223
|
+
/**
|
|
224
|
+
* Resolve the window which owns a node.
|
|
225
|
+
*
|
|
226
|
+
* @param node - node, or document, to resolve the window of
|
|
227
|
+
* @returns owner window, or `undefined` when the node has no browsing context
|
|
228
|
+
*/
|
|
229
|
+
export declare function ownerWindow(node: Node | null): (Window & typeof globalThis) | undefined;
|
|
230
|
+
/**
|
|
231
|
+
* Read the computed style of an element using its own realm.
|
|
232
|
+
*
|
|
233
|
+
* @param element - element to read the computed style of
|
|
234
|
+
* @returns live computed style declaration
|
|
235
|
+
*/
|
|
236
|
+
export declare function computedStyleOf(element: Element): CSSStyleDeclaration;
|
|
237
|
+
/**
|
|
238
|
+
* Resolve the `MutationObserver` constructor of the realm which owns a node.
|
|
239
|
+
*
|
|
240
|
+
* @param node - node to resolve the constructor for
|
|
241
|
+
* @returns constructor, or `undefined` when the realm does not support mutation observers
|
|
242
|
+
*/
|
|
243
|
+
export declare function mutationObserverOf(node: Node): typeof MutationObserver | undefined;
|
|
244
|
+
/**
|
|
245
|
+
* Invoke a callback once a transition of an element's property completes.
|
|
246
|
+
*
|
|
247
|
+
* The callback runs on a `transitionend` event of the element for any of `properties`. List a
|
|
248
|
+
* logical property together with its physical counterpart, such as `inline-size` and `width`,
|
|
249
|
+
* since browsers may report the transition of a logical property under either name. When the
|
|
250
|
+
* property does not transition, the callback runs synchronously. When a transition is expected
|
|
251
|
+
* but its event is not delivered, for example because the element stopped rendering, the callback
|
|
252
|
+
* runs after the computed transition time plus {@link TRANSITION_GRACE_MSEC}.
|
|
253
|
+
*
|
|
254
|
+
* @param elem - element whose transition is awaited
|
|
255
|
+
* @param properties - names of the transitioned property
|
|
256
|
+
* @param callback - function invoked at most once
|
|
257
|
+
* @returns function which cancels a pending callback
|
|
258
|
+
*/
|
|
259
|
+
export declare function afterTransition(elem: HTMLElement, properties: readonly string[], callback: () => void): () => void;
|
|
260
|
+
/**
|
|
261
|
+
* Collect the enabled, focusable actions which belong directly to a toolbar.
|
|
262
|
+
*
|
|
263
|
+
* Actions within a nested toolbar belong to that toolbar. Native controls remain candidates after
|
|
264
|
+
* roving focus assigns them `tabindex="-1"`; a custom action with an authored negative tab index
|
|
265
|
+
* is excluded unless `includeControllerAssigned` is `true`.
|
|
266
|
+
*
|
|
267
|
+
* @param root - toolbar element
|
|
268
|
+
* @param includeControllerAssigned - include custom actions whose tab index the toolbar assigned
|
|
269
|
+
* @returns actions in document order
|
|
270
|
+
*/
|
|
271
|
+
export declare function directActionableChildren(root: Element, includeControllerAssigned?: boolean): HTMLElement[];
|
|
272
|
+
/**
|
|
273
|
+
* Invoke callback aliases, invoking each distinct callback once.
|
|
274
|
+
*
|
|
275
|
+
* Aliases such as `onChange`, `onValueChange`, and `onSelectedChange` frequently reference the
|
|
276
|
+
* same function; this invokes such a function once, in the order of its first occurrence.
|
|
277
|
+
*
|
|
278
|
+
* @typeParam T - callback type
|
|
279
|
+
* @param callbacks - callbacks to invoke, possibly `undefined`
|
|
280
|
+
* @param args - arguments to invoke each callback with
|
|
281
|
+
*/
|
|
282
|
+
export declare function dedupeCallbacks<T extends (...args: never[]) => void>(callbacks: readonly (T | undefined)[], ...args: Parameters<T>): void;
|
|
283
|
+
/**
|
|
284
|
+
* Decide whether a released dismiss drag settles at the dismissed position.
|
|
285
|
+
*
|
|
286
|
+
* A fling at least `velocityThreshold` fast settles in its direction. A slower release settles
|
|
287
|
+
* at the dismissed position if, and only if, it is beyond {@link POSITIONAL_THRESHOLD}, or at it
|
|
288
|
+
* while moving towards the dismissed position.
|
|
289
|
+
*
|
|
290
|
+
* @param fraction - fraction of the distance from the open position to the dismissed position
|
|
291
|
+
* @param velocity - release velocity towards the dismissed position, in fractions per second
|
|
292
|
+
* @param velocityThreshold - minimum speed of a fling, in fractions per second
|
|
293
|
+
* @returns `true` if, and only if, the drag settles at the dismissed position
|
|
294
|
+
*/
|
|
295
|
+
export declare function isDismissedAt(fraction: number, velocity: number, velocityThreshold: number): boolean;
|
|
296
|
+
/**
|
|
297
|
+
* Horizontal drag which moves a surface towards its dismissed position at the inline start edge.
|
|
298
|
+
*
|
|
299
|
+
* The drag starts once the primary pointer moved horizontally beyond the {@link DRAG_SLOP_PX |
|
|
300
|
+
* touch slop}; a press which moves vertically first is left to scrolling. While dragging, the
|
|
301
|
+
* pointer is captured, its positions feed a {@link ../surface/drag#DragVelocity | velocity
|
|
302
|
+
* estimator}, and the click which would follow the release is suppressed. Elements using a
|
|
303
|
+
* dismiss drag set `touch-action: pan-y`, so the browser does not claim horizontal movement.
|
|
304
|
+
*/
|
|
305
|
+
export declare class DismissDrag {
|
|
306
|
+
#private;
|
|
307
|
+
/**
|
|
308
|
+
* Construct a new dismiss drag.
|
|
309
|
+
*
|
|
310
|
+
* @param handlers - drag handlers
|
|
311
|
+
*/
|
|
312
|
+
constructor(handlers: DismissDragHandlers);
|
|
313
|
+
/**
|
|
314
|
+
* Attach the drag to an element, or detach it.
|
|
315
|
+
*
|
|
316
|
+
* @param elem - element receiving the drag, or `null` to detach
|
|
317
|
+
*/
|
|
318
|
+
attach(elem: HTMLElement | null): void;
|
|
319
|
+
}
|
|
320
|
+
export { deferAfterDelegatedCancellation } from "../util/event";
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import type { JSX } from "solid-js";
|
|
2
|
+
import type { DomComponent, FunctionElement, StyleElement } from "..";
|
|
3
|
+
import type { NavigationChangeHandler, NavigationElementProps, NavigationOpenChangeHandler } from "./base";
|
|
4
|
+
import { DomController } from "../dom/client";
|
|
5
|
+
import "../container/elevation-shadow.css";
|
|
6
|
+
import "./navigation.css";
|
|
7
|
+
/**
|
|
8
|
+
* Navigation drawer presentation.
|
|
9
|
+
*
|
|
10
|
+
* | Variant | Presentation |
|
|
11
|
+
* | --------------- | --------------------------------------------------------------------- |
|
|
12
|
+
* | `"modal"` | Slides over the content, which is covered by a scrim and made inert. |
|
|
13
|
+
* | `"dismissible"` | Slides in beside the content, pushing it toward the end edge. |
|
|
14
|
+
* | `"permanent"` | Always shown beside the content. |
|
|
15
|
+
*/
|
|
16
|
+
export type NavigationDrawerVariant = "dismissible" | "modal" | "permanent";
|
|
17
|
+
/**
|
|
18
|
+
* Properties of a navigation drawer.
|
|
19
|
+
*/
|
|
20
|
+
export type NavigationDrawerProps = NavigationElementProps<HTMLElement> & {
|
|
21
|
+
/**
|
|
22
|
+
* Drawer presentation.
|
|
23
|
+
*
|
|
24
|
+
* @defaultValue `"modal"`
|
|
25
|
+
*/
|
|
26
|
+
variant?: NavigationDrawerVariant | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Alias for {@link NavigationDrawerProps.variant | `variant`}.
|
|
29
|
+
*/
|
|
30
|
+
mode?: NavigationDrawerVariant | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Controlled open state of a modal or dismissible drawer.
|
|
33
|
+
*
|
|
34
|
+
* When this key is present, the drawer opens and closes only when this value changes;
|
|
35
|
+
* dismissal requests are reported through {@link NavigationDrawerProps.onOpenChange |
|
|
36
|
+
* `onOpenChange`}.
|
|
37
|
+
*/
|
|
38
|
+
open?: boolean | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Initial open state of an uncontrolled modal or dismissible drawer.
|
|
41
|
+
*
|
|
42
|
+
* @defaultValue `false`
|
|
43
|
+
*/
|
|
44
|
+
defaultOpen?: boolean | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Drawer content; `children` are used when this is omitted.
|
|
47
|
+
*/
|
|
48
|
+
drawerContent?: JSX.Element;
|
|
49
|
+
/**
|
|
50
|
+
* Headline shown above the drawer content.
|
|
51
|
+
*/
|
|
52
|
+
headline?: JSX.Element;
|
|
53
|
+
/**
|
|
54
|
+
* Application content beside or behind the drawer.
|
|
55
|
+
*/
|
|
56
|
+
content?: JSX.Element;
|
|
57
|
+
/**
|
|
58
|
+
* Accessible name of a modal drawer's scrim, which dismisses the drawer.
|
|
59
|
+
*
|
|
60
|
+
* @defaultValue `"Close navigation menu"`
|
|
61
|
+
*/
|
|
62
|
+
scrimLabel?: string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Callback invoked when the drawer requests a new open state.
|
|
65
|
+
*
|
|
66
|
+
* @param open - requested state, `false` for a dismissal request
|
|
67
|
+
* @param event - event which requested the state
|
|
68
|
+
*/
|
|
69
|
+
onOpenChange?: NavigationOpenChangeHandler | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Allow Escape and scrim clicks to dismiss the drawer.
|
|
72
|
+
*
|
|
73
|
+
* @defaultValue `true`
|
|
74
|
+
*/
|
|
75
|
+
dismissible?: boolean | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Controlled value of the selected destination.
|
|
78
|
+
*
|
|
79
|
+
* When any of `value`, `selectedValue`, or `defaultValue` is present, the drawer coordinates
|
|
80
|
+
* the selection of the {@link ./navigation#NavigationDrawerItem | destinations} within it, as
|
|
81
|
+
* a navigation rail does; otherwise, each destination keeps its own `selected` state.
|
|
82
|
+
*/
|
|
83
|
+
value?: string | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Alias for {@link NavigationDrawerProps.value | `value`}.
|
|
86
|
+
*/
|
|
87
|
+
selectedValue?: string | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Initial value of the selected destination of an uncontrolled, selecting drawer.
|
|
90
|
+
*/
|
|
91
|
+
defaultValue?: string | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Callback invoked after a destination of a selecting drawer is activated.
|
|
94
|
+
*
|
|
95
|
+
* Distinct callbacks run in `onChange`, `onValueChange`, `onSelectedChange` order; identical
|
|
96
|
+
* references run once.
|
|
97
|
+
*/
|
|
98
|
+
onChange?: NavigationChangeHandler | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Alias for {@link NavigationDrawerProps.onChange | `onChange`}.
|
|
101
|
+
*/
|
|
102
|
+
onValueChange?: NavigationChangeHandler | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Alias for {@link NavigationDrawerProps.onChange | `onChange`}.
|
|
105
|
+
*/
|
|
106
|
+
onSelectedChange?: NavigationChangeHandler | undefined;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Properties of a labelled group of destinations within a navigation drawer.
|
|
110
|
+
*/
|
|
111
|
+
export type NavigationDrawerSectionProps = NavigationElementProps<HTMLDivElement> & {
|
|
112
|
+
/**
|
|
113
|
+
* Section label, which names the group.
|
|
114
|
+
*/
|
|
115
|
+
label?: JSX.Element;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Client controller of a navigation drawer.
|
|
119
|
+
*
|
|
120
|
+
* # Elements
|
|
121
|
+
*
|
|
122
|
+
* | Element | Description |
|
|
123
|
+
* | ---------------------------------- | ------------------------------------------------- |
|
|
124
|
+
* | `div.cw-NavigationDrawer` | Style element; lays out the panel and content. |
|
|
125
|
+
* | `nav.cw-NavigationDrawer-panel` | Function element containing the drawer content. |
|
|
126
|
+
* | `div.cw-NavigationDrawer-headline` | {@link NavigationDrawerProps.headline} slot. |
|
|
127
|
+
* | `div.cw-NavigationDrawer-items` | Drawer content, which scrolls below the headline. |
|
|
128
|
+
* | `button.cw-NavigationDrawer-scrim` | Scrim of a modal drawer, which dismisses it. |
|
|
129
|
+
* | `div.cw-NavigationDrawer-content` | {@link NavigationDrawerProps.content} slot. |
|
|
130
|
+
*
|
|
131
|
+
* The panel fills the height of the drawer, but at most the height of the viewport, and stays in
|
|
132
|
+
* view while the page scrolls, as the sheet of a `ModalNavigationDrawer` fills the window: drawer
|
|
133
|
+
* content taller than the panel scrolls below the fixed headline.
|
|
134
|
+
*
|
|
135
|
+
* # Motion
|
|
136
|
+
*
|
|
137
|
+
* A registered progress property of the root moves the panel, fades the scrim, and pushes the
|
|
138
|
+
* content of a dismissible drawer. Opening uses the default spatial spring and closing the fast
|
|
139
|
+
* effects spring, as `ModalNavigationDrawer` does; the panel is hidden once closing completes. A
|
|
140
|
+
* drawer reopened while closing moves back open from where its motion is.
|
|
141
|
+
*
|
|
142
|
+
* An open modal drawer follows a horizontal drag of its panel or scrim towards the start edge. On
|
|
143
|
+
* release, it settles open or dismissed with the positional and velocity thresholds of Compose's
|
|
144
|
+
* `NavigationDrawer` (half the drawer width, 400dp per second), continuing the release velocity
|
|
145
|
+
* with the default spatial spring.
|
|
146
|
+
*
|
|
147
|
+
* # Modality
|
|
148
|
+
*
|
|
149
|
+
* While open, a modal drawer registers itself as a {@link ./base#registerModalLayer | modal
|
|
150
|
+
* layer}, makes the content inert, moves focus to its first focusable element, contains Tab
|
|
151
|
+
* focus within the panel and scrim, and dismisses on Escape. Once it closes, focus returns to the
|
|
152
|
+
* element focused before it opened: the content is live as soon as the drawer closes, and the
|
|
153
|
+
* panel and scrim are inert while they leave, so focus and presses reach the content during the
|
|
154
|
+
* closing motion.
|
|
155
|
+
*/
|
|
156
|
+
export declare class NavigationDrawerController extends DomController<NavigationDrawerProps> {
|
|
157
|
+
#private;
|
|
158
|
+
/**
|
|
159
|
+
* Construct a new drawer controller.
|
|
160
|
+
*
|
|
161
|
+
* @param props - component properties
|
|
162
|
+
*/
|
|
163
|
+
constructor(props: NavigationDrawerProps);
|
|
164
|
+
/**
|
|
165
|
+
* Apply local properties to component state and styling.
|
|
166
|
+
*
|
|
167
|
+
* @see {@link ../dom/client#DomController.applyComponentProps}
|
|
168
|
+
*/
|
|
169
|
+
protected applyComponentProps(): void;
|
|
170
|
+
/**
|
|
171
|
+
* Handle style element replacement before the controller reference is updated.
|
|
172
|
+
*
|
|
173
|
+
* @param curr - new style element, or `null` when absent
|
|
174
|
+
* @see {@link ../dom/client#DomController.onStyleElementChanged}
|
|
175
|
+
*/
|
|
176
|
+
protected onStyleElementChanged(curr: StyleElement | null): void;
|
|
177
|
+
/**
|
|
178
|
+
* Handle function element replacement before the controller reference is updated.
|
|
179
|
+
*
|
|
180
|
+
* @param curr - new function element, or `null` when absent
|
|
181
|
+
* @see {@link ../dom/client#DomController.onFunctionElementChanged}
|
|
182
|
+
*/
|
|
183
|
+
protected onFunctionElementChanged(curr: FunctionElement<NavigationDrawerProps> | null): void;
|
|
184
|
+
/**
|
|
185
|
+
* Release the modal layer, document listeners, pending motion, drag, and selection.
|
|
186
|
+
*
|
|
187
|
+
* @see {@link ../dom/client#DomController.onControllerCleanup}
|
|
188
|
+
*/
|
|
189
|
+
protected onControllerCleanup(): void;
|
|
190
|
+
/**
|
|
191
|
+
* Render the component's element tree.
|
|
192
|
+
*
|
|
193
|
+
* The tree is static: presentation is applied by {@link
|
|
194
|
+
* NavigationDrawerController.applyComponentProps}. The headline, drawer content, and content
|
|
195
|
+
* slots are reactive content.
|
|
196
|
+
*
|
|
197
|
+
* @param children - nested component children, possibly an accessor
|
|
198
|
+
* @param funcRef - callback receiving the native function element
|
|
199
|
+
* @returns rendered component elements
|
|
200
|
+
* @see {@link ../dom/client#DomController.render}
|
|
201
|
+
*/
|
|
202
|
+
protected render(children: JSX.Element, funcRef?: (element: HTMLElement) => void): JSX.Element;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Material navigation drawer.
|
|
206
|
+
*
|
|
207
|
+
* A navigation drawer presents destinations in a 360px panel at the start edge. A {@link
|
|
208
|
+
* NavigationDrawerVariant | modal} drawer slides over the application content, which it covers
|
|
209
|
+
* with a scrim; a dismissible drawer slides in beside the content; a permanent drawer is always
|
|
210
|
+
* shown. Material 3 Expressive recommends an expanded {@link ./navigation#NavigationRail |
|
|
211
|
+
* navigation rail} for new layouts.
|
|
212
|
+
*
|
|
213
|
+
* # States
|
|
214
|
+
*
|
|
215
|
+
* The drawer has controlled and uncontrolled open states; see {@link NavigationDrawerProps}. A
|
|
216
|
+
* drawer which is requested open has the `cw-NavigationDrawer-open` class; a closing drawer stays
|
|
217
|
+
* shown until its motion completes. A drawer with a `value`, `selectedValue`, or `defaultValue`
|
|
218
|
+
* coordinates the selection of its destinations.
|
|
219
|
+
*
|
|
220
|
+
* # Design
|
|
221
|
+
*
|
|
222
|
+
* The drawer is designed through the [`cw-Navigation`](./navigation.yaml) component design
|
|
223
|
+
* attribute (`drawer` roles), following `NavigationDrawerTokens`. Use {@link
|
|
224
|
+
* NavigationDrawerSection} to group destinations under a section label.
|
|
225
|
+
*
|
|
226
|
+
* # Accessibility
|
|
227
|
+
*
|
|
228
|
+
* The panel is a `nav` landmark; name it with `attr:aria-label`. See {@link
|
|
229
|
+
* NavigationDrawerController} for the modal focus behavior.
|
|
230
|
+
*
|
|
231
|
+
* @param props - component properties
|
|
232
|
+
* @returns rendered component elements
|
|
233
|
+
*/
|
|
234
|
+
export declare const NavigationDrawer: DomComponent<NavigationDrawerProps>;
|
|
235
|
+
/**
|
|
236
|
+
* Modal navigation drawer, which covers the content with a scrim and dismisses on Escape.
|
|
237
|
+
*
|
|
238
|
+
* @param props - component properties
|
|
239
|
+
* @returns rendered component elements
|
|
240
|
+
* @see {@link NavigationDrawer}
|
|
241
|
+
*/
|
|
242
|
+
export declare const ModalNavigationDrawer: DomComponent<NavigationDrawerProps>;
|
|
243
|
+
/**
|
|
244
|
+
* Dismissible navigation drawer, which slides in beside the content and pushes it.
|
|
245
|
+
*
|
|
246
|
+
* @param props - component properties
|
|
247
|
+
* @returns rendered component elements
|
|
248
|
+
* @see {@link NavigationDrawer}
|
|
249
|
+
*/
|
|
250
|
+
export declare const DismissibleNavigationDrawer: DomComponent<NavigationDrawerProps>;
|
|
251
|
+
/**
|
|
252
|
+
* Permanent navigation drawer, which is always shown beside the content.
|
|
253
|
+
*
|
|
254
|
+
* @param props - component properties
|
|
255
|
+
* @returns rendered component elements
|
|
256
|
+
* @see {@link NavigationDrawer}
|
|
257
|
+
*/
|
|
258
|
+
export declare const PermanentNavigationDrawer: DomComponent<NavigationDrawerProps>;
|
|
259
|
+
/**
|
|
260
|
+
* Client controller of a navigation drawer section.
|
|
261
|
+
*
|
|
262
|
+
* The section is a `group` named by its label, when it has one.
|
|
263
|
+
*/
|
|
264
|
+
export declare class NavigationDrawerSectionController extends DomController<NavigationDrawerSectionProps> {
|
|
265
|
+
#private;
|
|
266
|
+
/**
|
|
267
|
+
* Construct a new section controller.
|
|
268
|
+
*
|
|
269
|
+
* @param props - component properties
|
|
270
|
+
*/
|
|
271
|
+
constructor(props: NavigationDrawerSectionProps);
|
|
272
|
+
/**
|
|
273
|
+
* Apply local properties to component state and styling.
|
|
274
|
+
*
|
|
275
|
+
* @see {@link ../dom/client#DomController.applyComponentProps}
|
|
276
|
+
*/
|
|
277
|
+
protected applyComponentProps(): void;
|
|
278
|
+
/**
|
|
279
|
+
* Render the component's element tree.
|
|
280
|
+
*
|
|
281
|
+
* @param children - nested component children, possibly an accessor
|
|
282
|
+
* @returns rendered component elements
|
|
283
|
+
* @see {@link ../dom/client#DomController.render}
|
|
284
|
+
*/
|
|
285
|
+
protected render(children: JSX.Element): JSX.Element;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Labelled group of destinations within a navigation drawer.
|
|
289
|
+
*
|
|
290
|
+
* A section shows its label in the drawer's headline style and is separated from preceding drawer
|
|
291
|
+
* content by a divider, as the Material 3 navigation drawer anatomy specifies.
|
|
292
|
+
*
|
|
293
|
+
* # Design
|
|
294
|
+
*
|
|
295
|
+
* Sections are designed through the [`cw-Navigation`](./navigation.yaml) component design
|
|
296
|
+
* attribute (`drawer` headline and divider roles).
|
|
297
|
+
*
|
|
298
|
+
* @param props - component properties
|
|
299
|
+
* @returns rendered component elements
|
|
300
|
+
*/
|
|
301
|
+
export declare const NavigationDrawerSection: DomComponent<NavigationDrawerSectionProps>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Material 3 navigation and navigation-adjacent components.
|
|
3
|
+
*
|
|
4
|
+
* This barrel keeps the public navigation surface together while implementations are split by
|
|
5
|
+
* interaction family. Native links, buttons, search inputs, and landmarks are used throughout;
|
|
6
|
+
* composite controls implement their keyboard behavior in their respective client controllers.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import "./navigation.css";
|
|
11
|
+
export type { NavigationChangeHandler, NavigationElementProps, NavigationOpenChangeHandler, NavigationOrientation, TabActivationMode } from "./base";
|
|
12
|
+
export type { TabListProps, TabPanelProps, TabProps, TabsProps } from "./tabs";
|
|
13
|
+
export type { NavigationContainerProps, NavigationItemProps } from "./navigation";
|
|
14
|
+
export type { NavigationDrawerProps, NavigationDrawerSectionProps, NavigationDrawerVariant } from "./drawer";
|
|
15
|
+
export type { AppBarItemProps, AppBarLayoutProps, BottomAppBarProps, TopAppBarProps, TopAppBarScrollBehavior, TopAppBarVariant } from "./app-bar";
|
|
16
|
+
export type { FloatingToolbarExitDirection, FloatingToolbarItemProps, FloatingToolbarProps } from "./toolbar";
|
|
17
|
+
export type { SearchAppBarProps, SearchBarProps } from "./search";
|
|
18
|
+
export type { ScrollbarProps, ScrollFieldProps } from "./scroll";
|
|
19
|
+
export { LeadingIconTab, PrimaryTabRow, SecondaryTabRow, Tab, TabController, TabList, TabListController, TabPanel, TabPanelController, TabRow, Tabs, TabsController } from "./tabs";
|
|
20
|
+
export { NavigationBar, FlexibleNavigationBar, NavigationBarItem, NavigationController, NavigationDrawerItem, NavigationItem, NavigationItemController, NavigationRail, NavigationRailItem, ShortNavigationBar, ShortNavigationBarItem, WideNavigationRailItem, WideNavigationRail } from "./navigation";
|
|
21
|
+
export { DismissibleNavigationDrawer, ModalNavigationDrawer, NavigationDrawer, NavigationDrawerController, NavigationDrawerSection, NavigationDrawerSectionController, PermanentNavigationDrawer } from "./drawer";
|
|
22
|
+
export { AppBarColumn, AppBarItem, AppBarLayoutController, AppBarRow, BottomAppBar, BottomAppBarController, CenterAlignedTopAppBar, LargeFlexibleTopAppBar, LargeTopAppBar, MediumFlexibleTopAppBar, MediumTopAppBar, SmallTopAppBar, TopAppBar, TopAppBarController, TwoRowsTopAppBar } from "./app-bar";
|
|
23
|
+
export { DockedToolbar, FloatingToolbar, FloatingToolbarController, FloatingToolbarItem, HorizontalFloatingToolbar, VerticalFloatingToolbar } from "./toolbar";
|
|
24
|
+
export { DockedSearchBar, SearchAppBar, SearchBar, SearchBarController, SearchView } from "./search";
|
|
25
|
+
export { HorizontalScrollbar, Scrollbar, ScrollbarController, ScrollField, ScrollFieldController, VerticalScrollbar } from "./scroll";
|