@surdeddd/bottom-sheet 0.21.2 → 0.22.0
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/README.md +32 -0
- package/dist/{BottomSheetCore-CK_mq14p.d.ts → BottomSheetCore-9i-Uh6T3.d.ts} +4 -1
- package/dist/{BottomSheetCore-BHv6LPmS.d.cts → BottomSheetCore-CQStdVy2.d.cts} +4 -1
- package/dist/{BottomSheetEngine-mmFzIK1Z.d.cts → BottomSheetEngine-CsQWHLNb.d.cts} +1 -1
- package/dist/{BottomSheetEngine-wLn6Q2kA.d.ts → BottomSheetEngine-Dn6h-7gF.d.ts} +1 -1
- package/dist/core.cjs +9 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +9 -1
- package/dist/debug.d.cts +1 -1
- package/dist/debug.d.ts +1 -1
- package/dist/default-features-C3cilcW9.d.ts +11 -0
- package/dist/default-features-DkG9aho0.d.cts +11 -0
- package/dist/element.cjs +84 -4
- package/dist/element.d.cts +2 -2
- package/dist/element.d.ts +2 -2
- package/dist/element.iife.global.js +2 -2
- package/dist/element.js +84 -4
- package/dist/features.cjs +65 -1
- package/dist/features.d.cts +5 -10
- package/dist/features.d.ts +5 -10
- package/dist/features.js +65 -2
- package/dist/{index-juAyT76E.d.cts → index-CVGC5B5D.d.cts} +1 -1
- package/dist/{index-CWKv1Xy4.d.ts → index-CnsJQZp2.d.ts} +1 -1
- package/dist/index.cjs +73 -2
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +73 -2
- package/dist/integrations/formik.d.cts +1 -1
- package/dist/integrations/formik.d.ts +1 -1
- package/dist/integrations/react-hook-form.d.cts +1 -1
- package/dist/integrations/react-hook-form.d.ts +1 -1
- package/dist/preact.d.cts +2 -2
- package/dist/preact.d.ts +2 -2
- package/dist/qwik-lib/index.qwik.cjs +67 -2
- package/dist/qwik-lib/index.qwik.mjs +67 -2
- package/dist/qwik.cjs +74 -2
- package/dist/qwik.d.cts +3 -2
- package/dist/qwik.d.ts +3 -2
- package/dist/qwik.js +74 -2
- package/dist/react.cjs +73 -2
- package/dist/react.d.cts +3 -3
- package/dist/react.d.ts +3 -3
- package/dist/react.js +73 -2
- package/dist/solid.cjs +74 -2
- package/dist/solid.d.cts +4 -0
- package/dist/solid.d.ts +4 -0
- package/dist/solid.js +74 -2
- package/dist/solid.source.jsx +74 -2
- package/dist/styles.css +11 -0
- package/dist/svelte-core.cjs +73 -2
- package/dist/svelte-core.js +73 -2
- package/dist/svelte-src/BottomSheet.svelte +3 -0
- package/dist/svelte.cjs +74 -2
- package/dist/svelte.d.cts +1 -0
- package/dist/svelte.d.ts +1 -0
- package/dist/svelte.js +74 -2
- package/dist/vue.cjs +77 -2
- package/dist/vue.js +77 -2
- package/dist/webgl.d.cts +1 -1
- package/dist/webgl.d.ts +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -250,6 +250,7 @@ type SnapPoint =
|
|
|
250
250
|
| `disableDrag` | `false` | Suppress the drag gesture (imperative snaps still work) |
|
|
251
251
|
| `dragFrom` | `"handle"` | Which regions start a drag: `"handle"`, `"sheet"` (whole sheet), or `"zones"` (only `[data-bs-drag]` subtrees). Defaults to `"sheet"` when no handle is given. `[data-bs-no-drag]` opts a subtree out in every mode. Also `setDragFrom()` / `getDragFrom()` — switching remounts the gesture, no component remount |
|
|
252
252
|
| `dragFromContent` | `true` | Whether a touch gesture on the scroll container drags the sheet; override per snap point with `{ id, size, dragFromContent: false }`. Also `setDragFromContent()` |
|
|
253
|
+
| `fitContentToSnap` | `false` | Keeps the whole scroll container reachable at every snap point, not only the largest. Off by default; see [Content reachable at every snap](#content-reachable-at-every-snap) |
|
|
253
254
|
| `radius` | token default | Corner radius (`string` CSS length or `number` px); also `setRadius()` |
|
|
254
255
|
| `maxHeight` | none | Cap the sheet height. `number` (px) or a string (`"92dvh"`, `"50%"`) re-resolved on viewport / orientation changes |
|
|
255
256
|
| `returnFocusTo` | opener | Focus target on dismiss — an `HTMLElement`, a selector `string`, or a `() => HTMLElement` factory |
|
|
@@ -508,6 +509,37 @@ the order sheets started opening in — a sheet opened while another is still
|
|
|
508
509
|
animating stays on top. If you want a single dim level, pass `backdrop={false}`
|
|
509
510
|
(`:backdrop="false"` in Vue) to the sheets you open on top.
|
|
510
511
|
|
|
512
|
+
### Content reachable at every snap
|
|
513
|
+
|
|
514
|
+
The sheet is always as tall as its largest snap point and is moved with a
|
|
515
|
+
transform; that is what keeps a drag on the compositor. The cost is that below
|
|
516
|
+
the largest snap the bottom of the scroll container sits under the screen edge,
|
|
517
|
+
by exactly `largest snap − current size`. At a half snap you can scroll, but the
|
|
518
|
+
last rows never come into view until the sheet is pulled up.
|
|
519
|
+
|
|
520
|
+
`fitContentToSnap` closes that gap:
|
|
521
|
+
|
|
522
|
+
```tsx
|
|
523
|
+
<BottomSheet snapPoints={points} fitContentToSnap>
|
|
524
|
+
<LongList />
|
|
525
|
+
</BottomSheet>
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
When the sheet settles, the engine writes the hidden amount to
|
|
529
|
+
`--bs-content-inset` and the stylesheet turns it into a spacer at the end of
|
|
530
|
+
`.bs-content`, plus a matching `scroll-padding-bottom` so a focused field
|
|
531
|
+
scrolls into the visible band rather than under the edge. That is one layout per
|
|
532
|
+
settle and none per frame, so the motion stays transform-only. While the sheet
|
|
533
|
+
moves, a list that was scrolled to its very end is held in place on screen
|
|
534
|
+
instead of riding up with the sheet and dropping back at the end.
|
|
535
|
+
|
|
536
|
+
It applies to `bottom` sheets. For a scroll container that is not `.bs-content`,
|
|
537
|
+
or one laid out as a flex row, consume the variable yourself:
|
|
538
|
+
`padding-bottom: var(--bs-content-inset, 0px)`. On the slim core add
|
|
539
|
+
`contentFitFeature()` from `@surdeddd/bottom-sheet/features`. This is unrelated
|
|
540
|
+
to `dragFromContent`, which only decides whether a swipe on the content drags
|
|
541
|
+
the sheet or scrolls the list.
|
|
542
|
+
|
|
511
543
|
### Scrim, blur & high contrast
|
|
512
544
|
|
|
513
545
|
| Token | Default | Region |
|
|
@@ -104,6 +104,7 @@ type EngineOptions = {
|
|
|
104
104
|
dragThreshold?: number;
|
|
105
105
|
dragFrom?: DragFrom;
|
|
106
106
|
dragFromContent?: boolean;
|
|
107
|
+
fitContentToSnap?: boolean;
|
|
107
108
|
rubberBand?: boolean;
|
|
108
109
|
backdropRange?: [number, number];
|
|
109
110
|
screenRange?: [number, number];
|
|
@@ -150,6 +151,7 @@ type EngineFeatureOptions = {
|
|
|
150
151
|
closeOnRouteChange: boolean;
|
|
151
152
|
persistKey?: string;
|
|
152
153
|
autoCollapseAfter?: number;
|
|
154
|
+
fitContentToSnap: boolean;
|
|
153
155
|
};
|
|
154
156
|
type EngineFeatureContext = {
|
|
155
157
|
element: HTMLElement;
|
|
@@ -282,6 +284,7 @@ declare class BottomSheetCore {
|
|
|
282
284
|
private lifecycle;
|
|
283
285
|
private closeOnBack;
|
|
284
286
|
private routedTo;
|
|
287
|
+
private fitContentToSnap;
|
|
285
288
|
private persistent;
|
|
286
289
|
private disableCloseFlag;
|
|
287
290
|
private disableDragFlag;
|
|
@@ -420,4 +423,4 @@ declare class BottomSheetCore {
|
|
|
420
423
|
private handleClose;
|
|
421
424
|
}
|
|
422
425
|
|
|
423
|
-
export { type AnchorOptions as A, BottomSheetCore as B, type CloseReason as C, type
|
|
426
|
+
export { type AnchorOptions as A, BottomSheetCore as B, type CloseReason as C, type EngineFeature as E, type LogicalSheetMode as L, type PhysicalSheetMode as P, type SheetEventMap as S, type TeardownScope as T, type EngineFeatureContext as a, type EngineFeatureOptions as b, type EngineFeatureStage as c, type EngineState as d, type SnapPointDef as e, type SheetMode as f, type EngineOptions as g, type SnapPoint as h, type ScrimStagesOptions as i, type ScrimOverlayPosition as j, type AnchorAnimationPreset as k, type AnchorAnimationSpec as l, type AnchorHandle as m, type AnchorPosition as n, type AnchorState as o, type Plugin as p, SCRIM_PRESETS as q, type ScrimOverlayOptions as r, type ScrimPreset as s, type ScrimPresetConfig as t, type ScrimStageDef as u, type ScrimUpdate as v, type SnapId as w, runAnchorTransition as x };
|
|
@@ -104,6 +104,7 @@ type EngineOptions = {
|
|
|
104
104
|
dragThreshold?: number;
|
|
105
105
|
dragFrom?: DragFrom;
|
|
106
106
|
dragFromContent?: boolean;
|
|
107
|
+
fitContentToSnap?: boolean;
|
|
107
108
|
rubberBand?: boolean;
|
|
108
109
|
backdropRange?: [number, number];
|
|
109
110
|
screenRange?: [number, number];
|
|
@@ -150,6 +151,7 @@ type EngineFeatureOptions = {
|
|
|
150
151
|
closeOnRouteChange: boolean;
|
|
151
152
|
persistKey?: string;
|
|
152
153
|
autoCollapseAfter?: number;
|
|
154
|
+
fitContentToSnap: boolean;
|
|
153
155
|
};
|
|
154
156
|
type EngineFeatureContext = {
|
|
155
157
|
element: HTMLElement;
|
|
@@ -282,6 +284,7 @@ declare class BottomSheetCore {
|
|
|
282
284
|
private lifecycle;
|
|
283
285
|
private closeOnBack;
|
|
284
286
|
private routedTo;
|
|
287
|
+
private fitContentToSnap;
|
|
285
288
|
private persistent;
|
|
286
289
|
private disableCloseFlag;
|
|
287
290
|
private disableDragFlag;
|
|
@@ -420,4 +423,4 @@ declare class BottomSheetCore {
|
|
|
420
423
|
private handleClose;
|
|
421
424
|
}
|
|
422
425
|
|
|
423
|
-
export { type AnchorOptions as A, BottomSheetCore as B, type CloseReason as C, type
|
|
426
|
+
export { type AnchorOptions as A, BottomSheetCore as B, type CloseReason as C, type EngineFeature as E, type LogicalSheetMode as L, type PhysicalSheetMode as P, type SheetEventMap as S, type TeardownScope as T, type EngineFeatureContext as a, type EngineFeatureOptions as b, type EngineFeatureStage as c, type EngineState as d, type SnapPointDef as e, type SheetMode as f, type EngineOptions as g, type SnapPoint as h, type ScrimStagesOptions as i, type ScrimOverlayPosition as j, type AnchorAnimationPreset as k, type AnchorAnimationSpec as l, type AnchorHandle as m, type AnchorPosition as n, type AnchorState as o, type Plugin as p, SCRIM_PRESETS as q, type ScrimOverlayOptions as r, type ScrimPreset as s, type ScrimPresetConfig as t, type ScrimStageDef as u, type ScrimUpdate as v, type SnapId as w, runAnchorTransition as x };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BottomSheetCore,
|
|
1
|
+
import { B as BottomSheetCore, g as EngineOptions } from './BottomSheetCore-CQStdVy2.cjs';
|
|
2
2
|
|
|
3
3
|
declare class BottomSheetEngine extends BottomSheetCore {
|
|
4
4
|
constructor(opts: EngineOptions);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BottomSheetCore,
|
|
1
|
+
import { B as BottomSheetCore, g as EngineOptions } from './BottomSheetCore-9i-Uh6T3.js';
|
|
2
2
|
|
|
3
3
|
declare class BottomSheetEngine extends BottomSheetCore {
|
|
4
4
|
constructor(opts: EngineOptions);
|
package/dist/core.cjs
CHANGED
|
@@ -2604,6 +2604,7 @@ var BottomSheetCore = class {
|
|
|
2604
2604
|
__publicField(this, "lifecycle");
|
|
2605
2605
|
__publicField(this, "closeOnBack");
|
|
2606
2606
|
__publicField(this, "routedTo");
|
|
2607
|
+
__publicField(this, "fitContentToSnap");
|
|
2607
2608
|
__publicField(this, "persistent");
|
|
2608
2609
|
__publicField(this, "disableCloseFlag");
|
|
2609
2610
|
__publicField(this, "disableDragFlag");
|
|
@@ -2717,6 +2718,7 @@ var BottomSheetCore = class {
|
|
|
2717
2718
|
);
|
|
2718
2719
|
this.closeOnBack = resolved.closeOnBack;
|
|
2719
2720
|
this.routedTo = opts.routedTo;
|
|
2721
|
+
this.fitContentToSnap = opts.fitContentToSnap === true;
|
|
2720
2722
|
this.persistent = resolved.persistent;
|
|
2721
2723
|
this.disableCloseFlag = resolved.disableClose;
|
|
2722
2724
|
this.disableDragFlag = resolved.disableDrag;
|
|
@@ -2818,7 +2820,8 @@ var BottomSheetCore = class {
|
|
|
2818
2820
|
closeOnBack: this.closeOnBack,
|
|
2819
2821
|
closeOnRouteChange: this.closeOnRouteChange,
|
|
2820
2822
|
persistKey: this.persistKey,
|
|
2821
|
-
autoCollapseAfter
|
|
2823
|
+
autoCollapseAfter,
|
|
2824
|
+
fitContentToSnap: this.fitContentToSnap
|
|
2822
2825
|
},
|
|
2823
2826
|
isDestroyed: () => this.destroyed,
|
|
2824
2827
|
isDragging: () => this.isDraggingAny(),
|
|
@@ -2870,6 +2873,11 @@ var BottomSheetCore = class {
|
|
|
2870
2873
|
"[BottomSheet] closeOnBack/routedTo/closeOnRouteChange need routeFeature() \u2014 option ignored"
|
|
2871
2874
|
);
|
|
2872
2875
|
}
|
|
2876
|
+
if (this.fitContentToSnap && !names.has("content-fit")) {
|
|
2877
|
+
devWarn(
|
|
2878
|
+
"[BottomSheet] fitContentToSnap needs contentFitFeature() \u2014 option ignored"
|
|
2879
|
+
);
|
|
2880
|
+
}
|
|
2873
2881
|
if (this.persistKey && !names.has("persist")) {
|
|
2874
2882
|
devWarn(
|
|
2875
2883
|
"[BottomSheet] persistKey needs persistFeature() \u2014 snaps will not be saved"
|
package/dist/core.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { B as BottomSheetCore, C as CloseReason,
|
|
2
|
-
export { R as ResolvedSnap } from './index-
|
|
1
|
+
export { B as BottomSheetCore, C as CloseReason, E as EngineFeature, a as EngineFeatureContext, b as EngineFeatureOptions, c as EngineFeatureStage, g as EngineOptions, d as EngineState, S as SheetEventMap, f as SheetMode, w as SnapId, h as SnapPoint, e as SnapPointDef } from './BottomSheetCore-CQStdVy2.cjs';
|
|
2
|
+
export { R as ResolvedSnap } from './index-CVGC5B5D.cjs';
|
|
3
3
|
import './transform-jVfAikE9.cjs';
|
package/dist/core.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { B as BottomSheetCore, C as CloseReason,
|
|
2
|
-
export { R as ResolvedSnap } from './index-
|
|
1
|
+
export { B as BottomSheetCore, C as CloseReason, E as EngineFeature, a as EngineFeatureContext, b as EngineFeatureOptions, c as EngineFeatureStage, g as EngineOptions, d as EngineState, S as SheetEventMap, f as SheetMode, w as SnapId, h as SnapPoint, e as SnapPointDef } from './BottomSheetCore-9i-Uh6T3.js';
|
|
2
|
+
export { R as ResolvedSnap } from './index-CnsJQZp2.js';
|
|
3
3
|
import './transform-jVfAikE9.js';
|
package/dist/core.js
CHANGED
|
@@ -2602,6 +2602,7 @@ var BottomSheetCore = class {
|
|
|
2602
2602
|
__publicField(this, "lifecycle");
|
|
2603
2603
|
__publicField(this, "closeOnBack");
|
|
2604
2604
|
__publicField(this, "routedTo");
|
|
2605
|
+
__publicField(this, "fitContentToSnap");
|
|
2605
2606
|
__publicField(this, "persistent");
|
|
2606
2607
|
__publicField(this, "disableCloseFlag");
|
|
2607
2608
|
__publicField(this, "disableDragFlag");
|
|
@@ -2715,6 +2716,7 @@ var BottomSheetCore = class {
|
|
|
2715
2716
|
);
|
|
2716
2717
|
this.closeOnBack = resolved.closeOnBack;
|
|
2717
2718
|
this.routedTo = opts.routedTo;
|
|
2719
|
+
this.fitContentToSnap = opts.fitContentToSnap === true;
|
|
2718
2720
|
this.persistent = resolved.persistent;
|
|
2719
2721
|
this.disableCloseFlag = resolved.disableClose;
|
|
2720
2722
|
this.disableDragFlag = resolved.disableDrag;
|
|
@@ -2816,7 +2818,8 @@ var BottomSheetCore = class {
|
|
|
2816
2818
|
closeOnBack: this.closeOnBack,
|
|
2817
2819
|
closeOnRouteChange: this.closeOnRouteChange,
|
|
2818
2820
|
persistKey: this.persistKey,
|
|
2819
|
-
autoCollapseAfter
|
|
2821
|
+
autoCollapseAfter,
|
|
2822
|
+
fitContentToSnap: this.fitContentToSnap
|
|
2820
2823
|
},
|
|
2821
2824
|
isDestroyed: () => this.destroyed,
|
|
2822
2825
|
isDragging: () => this.isDraggingAny(),
|
|
@@ -2868,6 +2871,11 @@ var BottomSheetCore = class {
|
|
|
2868
2871
|
"[BottomSheet] closeOnBack/routedTo/closeOnRouteChange need routeFeature() \u2014 option ignored"
|
|
2869
2872
|
);
|
|
2870
2873
|
}
|
|
2874
|
+
if (this.fitContentToSnap && !names.has("content-fit")) {
|
|
2875
|
+
devWarn(
|
|
2876
|
+
"[BottomSheet] fitContentToSnap needs contentFitFeature() \u2014 option ignored"
|
|
2877
|
+
);
|
|
2878
|
+
}
|
|
2871
2879
|
if (this.persistKey && !names.has("persist")) {
|
|
2872
2880
|
devWarn(
|
|
2873
2881
|
"[BottomSheet] persistKey needs persistFeature() \u2014 snaps will not be saved"
|
package/dist/debug.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as EngineState, S as SheetEventMap } from './BottomSheetCore-CQStdVy2.cjs';
|
|
2
2
|
import './transform-jVfAikE9.cjs';
|
|
3
3
|
|
|
4
4
|
type DebugOverlayPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
package/dist/debug.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as EngineState, S as SheetEventMap } from './BottomSheetCore-9i-Uh6T3.js';
|
|
2
2
|
import './transform-jVfAikE9.js';
|
|
3
3
|
|
|
4
4
|
type DebugOverlayPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { E as EngineFeature } from './BottomSheetCore-9i-Uh6T3.js';
|
|
2
|
+
|
|
3
|
+
declare function routeFeature(): EngineFeature;
|
|
4
|
+
declare function persistFeature(): EngineFeature;
|
|
5
|
+
declare function autoCollapseFeature(): EngineFeature;
|
|
6
|
+
declare function contentSwipeFeature(): EngineFeature;
|
|
7
|
+
declare function visualViewportFeature(): EngineFeature;
|
|
8
|
+
|
|
9
|
+
declare function defaultEngineFeatures(): EngineFeature[];
|
|
10
|
+
|
|
11
|
+
export { autoCollapseFeature as a, contentSwipeFeature as c, defaultEngineFeatures as d, persistFeature as p, routeFeature as r, visualViewportFeature as v };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { E as EngineFeature } from './BottomSheetCore-CQStdVy2.cjs';
|
|
2
|
+
|
|
3
|
+
declare function routeFeature(): EngineFeature;
|
|
4
|
+
declare function persistFeature(): EngineFeature;
|
|
5
|
+
declare function autoCollapseFeature(): EngineFeature;
|
|
6
|
+
declare function contentSwipeFeature(): EngineFeature;
|
|
7
|
+
declare function visualViewportFeature(): EngineFeature;
|
|
8
|
+
|
|
9
|
+
declare function defaultEngineFeatures(): EngineFeature[];
|
|
10
|
+
|
|
11
|
+
export { autoCollapseFeature as a, contentSwipeFeature as c, defaultEngineFeatures as d, persistFeature as p, routeFeature as r, visualViewportFeature as v };
|
package/dist/element.cjs
CHANGED
|
@@ -2883,6 +2883,7 @@ var init_BottomSheetCore = __esm({
|
|
|
2883
2883
|
__publicField(this, "lifecycle");
|
|
2884
2884
|
__publicField(this, "closeOnBack");
|
|
2885
2885
|
__publicField(this, "routedTo");
|
|
2886
|
+
__publicField(this, "fitContentToSnap");
|
|
2886
2887
|
__publicField(this, "persistent");
|
|
2887
2888
|
__publicField(this, "disableCloseFlag");
|
|
2888
2889
|
__publicField(this, "disableDragFlag");
|
|
@@ -2996,6 +2997,7 @@ var init_BottomSheetCore = __esm({
|
|
|
2996
2997
|
);
|
|
2997
2998
|
this.closeOnBack = resolved.closeOnBack;
|
|
2998
2999
|
this.routedTo = opts.routedTo;
|
|
3000
|
+
this.fitContentToSnap = opts.fitContentToSnap === true;
|
|
2999
3001
|
this.persistent = resolved.persistent;
|
|
3000
3002
|
this.disableCloseFlag = resolved.disableClose;
|
|
3001
3003
|
this.disableDragFlag = resolved.disableDrag;
|
|
@@ -3097,7 +3099,8 @@ var init_BottomSheetCore = __esm({
|
|
|
3097
3099
|
closeOnBack: this.closeOnBack,
|
|
3098
3100
|
closeOnRouteChange: this.closeOnRouteChange,
|
|
3099
3101
|
persistKey: this.persistKey,
|
|
3100
|
-
autoCollapseAfter
|
|
3102
|
+
autoCollapseAfter,
|
|
3103
|
+
fitContentToSnap: this.fitContentToSnap
|
|
3101
3104
|
},
|
|
3102
3105
|
isDestroyed: () => this.destroyed,
|
|
3103
3106
|
isDragging: () => this.isDraggingAny(),
|
|
@@ -3149,6 +3152,11 @@ var init_BottomSheetCore = __esm({
|
|
|
3149
3152
|
"[BottomSheet] closeOnBack/routedTo/closeOnRouteChange need routeFeature() \u2014 option ignored"
|
|
3150
3153
|
);
|
|
3151
3154
|
}
|
|
3155
|
+
if (this.fitContentToSnap && !names.has("content-fit")) {
|
|
3156
|
+
devWarn(
|
|
3157
|
+
"[BottomSheet] fitContentToSnap needs contentFitFeature() \u2014 option ignored"
|
|
3158
|
+
);
|
|
3159
|
+
}
|
|
3152
3160
|
if (this.persistKey && !names.has("persist")) {
|
|
3153
3161
|
devWarn(
|
|
3154
3162
|
"[BottomSheet] persistKey needs persistFeature() \u2014 snaps will not be saved"
|
|
@@ -4545,6 +4553,73 @@ var init_engine_features = __esm({
|
|
|
4545
4553
|
}
|
|
4546
4554
|
});
|
|
4547
4555
|
|
|
4556
|
+
// src/core/features/content-fit.ts
|
|
4557
|
+
function contentFitFeature() {
|
|
4558
|
+
return {
|
|
4559
|
+
name: "content-fit",
|
|
4560
|
+
install: (ctx) => {
|
|
4561
|
+
const scroller = ctx.scrollContainer;
|
|
4562
|
+
if (!ctx.options.fitContentToSnap || !scroller || typeof window === "undefined") {
|
|
4563
|
+
return;
|
|
4564
|
+
}
|
|
4565
|
+
const sheet = ctx.element;
|
|
4566
|
+
let inset = 0;
|
|
4567
|
+
let unpaddedMax = -1;
|
|
4568
|
+
let top = 0;
|
|
4569
|
+
const hiddenAt = (size) => sheet.dataset.mode === "bottom" ? Math.max(0, ctx.getMaxAxisSize() - size) : 0;
|
|
4570
|
+
const follow = (size) => {
|
|
4571
|
+
if (unpaddedMax < 0) {
|
|
4572
|
+
unpaddedMax = scroller.scrollHeight - scroller.clientHeight - inset;
|
|
4573
|
+
top = scroller.scrollTop;
|
|
4574
|
+
}
|
|
4575
|
+
const limit = Math.max(0, unpaddedMax + hiddenAt(size));
|
|
4576
|
+
if (top > limit) {
|
|
4577
|
+
if (scroller.scrollTop > limit) scroller.scrollTop = limit;
|
|
4578
|
+
top = limit;
|
|
4579
|
+
}
|
|
4580
|
+
};
|
|
4581
|
+
const settle = () => {
|
|
4582
|
+
if (ctx.isDestroyed()) return;
|
|
4583
|
+
const size = ctx.getSize();
|
|
4584
|
+
unpaddedMax = -1;
|
|
4585
|
+
follow(size);
|
|
4586
|
+
inset = hiddenAt(size);
|
|
4587
|
+
sheet.style.setProperty(INSET_VAR, `${inset}px`);
|
|
4588
|
+
unpaddedMax = -1;
|
|
4589
|
+
};
|
|
4590
|
+
const moving = () => ctx.isAnimating() || ctx.isDragging();
|
|
4591
|
+
const whenIdle = () => {
|
|
4592
|
+
if (!moving()) settle();
|
|
4593
|
+
};
|
|
4594
|
+
sheet.setAttribute(FIT_ATTR, "");
|
|
4595
|
+
settle();
|
|
4596
|
+
const offProgress = ctx.on(
|
|
4597
|
+
"progress",
|
|
4598
|
+
(p) => moving() ? follow(p.size) : settle()
|
|
4599
|
+
);
|
|
4600
|
+
const offSnap = ctx.on("snap", settle);
|
|
4601
|
+
const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(whenIdle);
|
|
4602
|
+
observer?.observe(document.documentElement);
|
|
4603
|
+
window.addEventListener("orientationchange", whenIdle);
|
|
4604
|
+
return () => {
|
|
4605
|
+
offProgress();
|
|
4606
|
+
offSnap();
|
|
4607
|
+
observer?.disconnect();
|
|
4608
|
+
window.removeEventListener("orientationchange", whenIdle);
|
|
4609
|
+
sheet.removeAttribute(FIT_ATTR);
|
|
4610
|
+
sheet.style.removeProperty(INSET_VAR);
|
|
4611
|
+
};
|
|
4612
|
+
}
|
|
4613
|
+
};
|
|
4614
|
+
}
|
|
4615
|
+
var INSET_VAR, FIT_ATTR;
|
|
4616
|
+
var init_content_fit = __esm({
|
|
4617
|
+
"src/core/features/content-fit.ts"() {
|
|
4618
|
+
INSET_VAR = "--bs-content-inset";
|
|
4619
|
+
FIT_ATTR = "data-bs-fit-content";
|
|
4620
|
+
}
|
|
4621
|
+
});
|
|
4622
|
+
|
|
4548
4623
|
// src/core/default-features.ts
|
|
4549
4624
|
function defaultEngineFeatures() {
|
|
4550
4625
|
return [
|
|
@@ -4552,12 +4627,14 @@ function defaultEngineFeatures() {
|
|
|
4552
4627
|
visualViewportFeature(),
|
|
4553
4628
|
persistFeature(),
|
|
4554
4629
|
autoCollapseFeature(),
|
|
4555
|
-
routeFeature()
|
|
4630
|
+
routeFeature(),
|
|
4631
|
+
contentFitFeature()
|
|
4556
4632
|
];
|
|
4557
4633
|
}
|
|
4558
4634
|
var init_default_features = __esm({
|
|
4559
4635
|
"src/core/default-features.ts"() {
|
|
4560
4636
|
init_engine_features();
|
|
4637
|
+
init_content_fit();
|
|
4561
4638
|
}
|
|
4562
4639
|
});
|
|
4563
4640
|
|
|
@@ -4582,7 +4659,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
4582
4659
|
var baseStyles;
|
|
4583
4660
|
var init_baseStyles = __esm({
|
|
4584
4661
|
"src/web-component/baseStyles.ts"() {
|
|
4585
|
-
baseStyles = `:where(.bs-root){--bs-surface-d:#ffffff;--bs-surface-border-d:rgba(225,227,237,1);--bs-radius-d:20px;--bs-handle-color-d:rgba(26,22,20,0.3);--bs-handle-width:40px;--bs-handle-height:5px;--bs-z-backdrop:90;--bs-z-sheet:100;--bs-backdrop-color-d:rgba(0,0,0,0.5);--bs-scrim-color-d:transparent;--bs-scrim-blur:0px;--bs-z-scrim:calc(var(--bs-z-sheet) - 1);--bs-size:0px;--bs-progress:0}.bs-backdrop{position:fixed;inset:0;background:var(--bs-backdrop-color,var(--bs-backdrop-color-d));opacity:0;pointer-events:none;z-index:var(--bs-z-backdrop);transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-backdrop,.bs-root[data-animating="true"] .bs-backdrop{transition:none}.bs-sheet{position:fixed;background:var(--bs-surface,var(--bs-surface-d));box-shadow:var(--bs-shadow,var(--bs-shadow-auto,none));--bs-shadow-fade:clamp(0,calc(var(--bs-progress,0) * 8),1);z-index:var(--bs-z-sheet);pointer-events:auto;overflow:hidden;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:contain}.bs-sheet[data-mode="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));padding-bottom:env(safe-area-inset-bottom);--bs-shadow-auto:0 calc(var(--bs-progress,0) * -2px - 3px) calc(var(--bs-progress,0) * 18px + 12px) rgba( 0,0,0,calc(var(--bs-shadow-fade) * (var(--bs-progress,0) * 0.15 + 0.12)) )}.bs-sheet[data-mode="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom:1px solid var(--bs-surface-border,var(--bs-surface-border-d));flex-direction:column-reverse;--bs-shadow-auto:0 3px 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12));padding-top:env(safe-area-inset-top)}.bs-sheet[data-mode="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:3px 0 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12))}.bs-sheet[data-mode="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:-3px 0 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12))}.bs-sheet[data-bs-rest="closed"]{box-shadow:none;visibility:hidden}.bs-sheet[data-bs-webgl="on"],.bs-sheet[data-bs-webgl="on"] .bs-handle,.bs-sheet[data-bs-webgl="on"] .bs-header,.bs-sheet[data-bs-webgl="on"] .bs-footer{background:transparent;box-shadow:none}.bs-sheet[data-mode="left"] .bs-content{padding-right:36px}.bs-sheet[data-mode="right"] .bs-content{padding-left:36px}.bs-handle{flex-shrink:0;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:var(--bs-handle-padding,8px 16px 4px);cursor:grab;touch-action:none;user-select:none;background:var(--bs-surface,var(--bs-surface-d));-webkit-tap-highlight-color:transparent;outline:none;position:relative}.bs-handle:active{cursor:grabbing}.bs-handle:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:var(--bs-radius,var(--bs-radius-d))}.bs-handle::before{content:"";display:block;width:var(--bs-handle-width);height:var(--bs-handle-height);background:var(--bs-handle-color,var(--bs-handle-color-d));border-radius:calc(var(--bs-handle-height) / 2);margin:0 auto 8px;transition:width 0.15s ease,background 0.15s ease,transform 0.15s ease;pointer-events:none}.bs-sheet[data-mode="left"] .bs-handle,.bs-sheet[data-mode="right"] .bs-handle{position:absolute;top:0;bottom:0;width:28px;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;background:var(--bs-surface,var(--bs-surface-d));z-index:1;overflow:hidden}.bs-sheet[data-mode="left"] .bs-handle>*,.bs-sheet[data-mode="right"] .bs-handle>*{display:none}.bs-sheet[data-mode="left"] .bs-handle{right:0;border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="right"] .bs-handle{left:0;border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="left"] .bs-handle::before,.bs-sheet[data-mode="right"] .bs-handle::before{width:var(--bs-handle-height);height:var(--bs-handle-width);margin:0}.bs-sheet:hover .bs-handle::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 15%)}.bs-handle:active::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 35%);transform:scaleX(1.15)}.bs-handle.bs-handle--ticks::after{content:"";display:block;position:absolute;left:50%;bottom:6px;transform:translateX(-50%);width:calc(var(--bs-handle-width) * 2);height:3px;background-image:radial-gradient( circle,var(--bs-handle-color,var(--bs-handle-color-d)) 0 1.5px,transparent 1.6px );background-size:8px 3px;background-repeat:repeat-x;background-position:center;opacity:0;transition:opacity 0.18s ease-out;pointer-events:none}.bs-root[data-dragging="true"] .bs-handle.bs-handle--ticks::after{opacity:0.4}.bs-sheet[data-mode="top"] .bs-handle.bs-handle--ticks::after{bottom:auto;top:6px}.bs-sheet[data-mode="left"] .bs-handle.bs-handle--ticks::after,.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:3px;height:calc(var(--bs-handle-width) * 2);background-size:3px 8px;background-repeat:repeat-y;margin-left:calc(var(--bs-handle-height) + 6px)}.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{margin-left:calc(-1 * (var(--bs-handle-height) + 6px))}.bs-header{flex:0 0 auto;min-height:var(--bs-header-min-height,0px);padding:var(--bs-header-padding,0 16px 8px);background:var(--bs-surface,var(--bs-surface-d))}.bs-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;user-select:text;padding:var(--bs-content-padding,0 16px 16px)}.bs-footer{flex:0 0 auto;padding:var(--bs-footer-padding,12px 16px calc(12px + env(safe-area-inset-bottom)));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));background:var(--bs-surface,var(--bs-surface-d))}.bs-sheet[data-mode="bottom"]:has(.bs-footer:not([hidden]):has(*)){padding-bottom:0}.bs-header:not(:has(*)),.bs-footer:not(:has(*)),.bs-header[hidden],.bs-footer[hidden]{display:none}.bs-screen{position:absolute;inset:0;pointer-events:none;z-index:var(--bs-z-scrim);background:var(--bs-scrim-color,var(--bs-scrim-color-d));backdrop-filter:blur(var(--bs-scrim-blur,0px));-webkit-backdrop-filter:blur(var(--bs-scrim-blur,0px));transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-screen,.bs-root[data-animating="true"] .bs-screen{transition:none}.bs-scrim-overlay{z-index:calc(var(--bs-z-sheet) + 1);pointer-events:none}.bs-button-slot{position:fixed;z-index:calc(var(--bs-z-sheet) + 1);pointer-events:auto}.bs-button-slot[data-side="left"]{left:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-side="right"]{right:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="top"]{bottom:auto;top:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="left"]{left:calc(var(--bs-size,0px) + 12px);right:auto;bottom:auto;top:16px}.bs-button-slot[data-mode="right"]{right:calc(var(--bs-size,0px) + 12px);left:auto;bottom:auto;top:16px}@media (prefers-reduced-motion:reduce){.bs-backdrop,.bs-handle::before,.bs-button-slot[data-side="left"],.bs-button-slot[data-side="right"]{transition:none !important}}@media (prefers-color-scheme:dark){:where(.bs-root){--bs-surface-d:#1a1a1d;--bs-surface-border-d:rgba(255,255,255,0.08);--bs-handle-color-d:rgba(255,255,255,0.45);--bs-shadow-auto:0 -3px 16px rgba(0,0,0,0.5)}}@media (forced-colors:active){.bs-sheet{border:1px solid CanvasText}.bs-handle::before{background:CanvasText;forced-color-adjust:none}.bs-backdrop,.bs-screen{forced-color-adjust:none}}.bs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.ovl-root){--ovl-surface:var(--bs-surface,var(--bs-surface-d,#ffffff));--ovl-surface-border:var(--bs-surface-border,var(--bs-surface-border-d,rgba(0,0,0,0.08)));--ovl-shadow:0 -8px 40px rgba(0,0,0,0.35);--ovl-radius:var(--bs-radius,var(--bs-radius-d,20px));--ovl-backdrop-color:rgba(0,0,0,0.5);--ovl-z-backdrop:200;--ovl-z-panel:201}.ovl-backdrop{position:fixed;inset:0;background:var(--ovl-backdrop-color);opacity:0;pointer-events:none;z-index:var(--ovl-z-backdrop)}.ovl-panel{position:fixed;background:var(--ovl-surface);box-shadow:var(--ovl-shadow);z-index:var(--ovl-z-panel);-webkit-tap-highlight-color:transparent;outline:none;transition:transform 0.32s cubic-bezier(0.29,1.24,0.84,0.99),opacity 0.32s ease-out}.ovl-panel[data-state="open"]{transform:translate3d(0,0,0);opacity:1}@starting-style{.ovl-panel[data-edge="bottom"][data-state="open"]{transform:translate3d(0,100%,0);opacity:0}.ovl-panel[data-edge="top"][data-state="open"]{transform:translate3d(0,-100%,0);opacity:0}.ovl-panel[data-edge="left"][data-state="open"]{transform:translate3d(-100%,0,0);opacity:0}.ovl-panel[data-edge="right"][data-state="open"]{transform:translate3d(100%,0,0);opacity:0}}.ovl-panel[data-edge="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--ovl-radius);border-top-right-radius:var(--ovl-radius);border-top:1px solid var(--ovl-surface-border);padding-bottom:env(safe-area-inset-bottom)}.ovl-panel[data-edge="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-bottom:1px solid var(--ovl-surface-border);padding-top:env(safe-area-inset-top)}.ovl-panel[data-edge="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-right:1px solid var(--ovl-surface-border)}.ovl-panel[data-edge="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--ovl-radius);border-bottom-left-radius:var(--ovl-radius);border-left:1px solid var(--ovl-surface-border)}@media (prefers-reduced-motion:reduce){.ovl-panel,.ovl-backdrop{transition:none !important}}`;
|
|
4662
|
+
baseStyles = `:where(.bs-root){--bs-surface-d:#ffffff;--bs-surface-border-d:rgba(225,227,237,1);--bs-radius-d:20px;--bs-handle-color-d:rgba(26,22,20,0.3);--bs-handle-width:40px;--bs-handle-height:5px;--bs-z-backdrop:90;--bs-z-sheet:100;--bs-backdrop-color-d:rgba(0,0,0,0.5);--bs-scrim-color-d:transparent;--bs-scrim-blur:0px;--bs-z-scrim:calc(var(--bs-z-sheet) - 1);--bs-size:0px;--bs-progress:0}.bs-backdrop{position:fixed;inset:0;background:var(--bs-backdrop-color,var(--bs-backdrop-color-d));opacity:0;pointer-events:none;z-index:var(--bs-z-backdrop);transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-backdrop,.bs-root[data-animating="true"] .bs-backdrop{transition:none}.bs-sheet{position:fixed;background:var(--bs-surface,var(--bs-surface-d));box-shadow:var(--bs-shadow,var(--bs-shadow-auto,none));--bs-shadow-fade:clamp(0,calc(var(--bs-progress,0) * 8),1);z-index:var(--bs-z-sheet);pointer-events:auto;overflow:hidden;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:contain}.bs-sheet[data-mode="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));padding-bottom:env(safe-area-inset-bottom);--bs-shadow-auto:0 calc(var(--bs-progress,0) * -2px - 3px) calc(var(--bs-progress,0) * 18px + 12px) rgba( 0,0,0,calc(var(--bs-shadow-fade) * (var(--bs-progress,0) * 0.15 + 0.12)) )}.bs-sheet[data-mode="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom:1px solid var(--bs-surface-border,var(--bs-surface-border-d));flex-direction:column-reverse;--bs-shadow-auto:0 3px 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12));padding-top:env(safe-area-inset-top)}.bs-sheet[data-mode="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:3px 0 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12))}.bs-sheet[data-mode="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:-3px 0 12px rgba(0,0,0,calc(var(--bs-shadow-fade) * 0.12))}.bs-sheet[data-bs-rest="closed"]{box-shadow:none;visibility:hidden}.bs-sheet[data-bs-webgl="on"],.bs-sheet[data-bs-webgl="on"] .bs-handle,.bs-sheet[data-bs-webgl="on"] .bs-header,.bs-sheet[data-bs-webgl="on"] .bs-footer{background:transparent;box-shadow:none}.bs-sheet[data-mode="left"] .bs-content{padding-right:36px}.bs-sheet[data-mode="right"] .bs-content{padding-left:36px}.bs-handle{flex-shrink:0;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:var(--bs-handle-padding,8px 16px 4px);cursor:grab;touch-action:none;user-select:none;background:var(--bs-surface,var(--bs-surface-d));-webkit-tap-highlight-color:transparent;outline:none;position:relative}.bs-handle:active{cursor:grabbing}.bs-handle:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:var(--bs-radius,var(--bs-radius-d))}.bs-handle::before{content:"";display:block;width:var(--bs-handle-width);height:var(--bs-handle-height);background:var(--bs-handle-color,var(--bs-handle-color-d));border-radius:calc(var(--bs-handle-height) / 2);margin:0 auto 8px;transition:width 0.15s ease,background 0.15s ease,transform 0.15s ease;pointer-events:none}.bs-sheet[data-mode="left"] .bs-handle,.bs-sheet[data-mode="right"] .bs-handle{position:absolute;top:0;bottom:0;width:28px;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;background:var(--bs-surface,var(--bs-surface-d));z-index:1;overflow:hidden}.bs-sheet[data-mode="left"] .bs-handle>*,.bs-sheet[data-mode="right"] .bs-handle>*{display:none}.bs-sheet[data-mode="left"] .bs-handle{right:0;border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="right"] .bs-handle{left:0;border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="left"] .bs-handle::before,.bs-sheet[data-mode="right"] .bs-handle::before{width:var(--bs-handle-height);height:var(--bs-handle-width);margin:0}.bs-sheet:hover .bs-handle::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 15%)}.bs-handle:active::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 35%);transform:scaleX(1.15)}.bs-handle.bs-handle--ticks::after{content:"";display:block;position:absolute;left:50%;bottom:6px;transform:translateX(-50%);width:calc(var(--bs-handle-width) * 2);height:3px;background-image:radial-gradient( circle,var(--bs-handle-color,var(--bs-handle-color-d)) 0 1.5px,transparent 1.6px );background-size:8px 3px;background-repeat:repeat-x;background-position:center;opacity:0;transition:opacity 0.18s ease-out;pointer-events:none}.bs-root[data-dragging="true"] .bs-handle.bs-handle--ticks::after{opacity:0.4}.bs-sheet[data-mode="top"] .bs-handle.bs-handle--ticks::after{bottom:auto;top:6px}.bs-sheet[data-mode="left"] .bs-handle.bs-handle--ticks::after,.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:3px;height:calc(var(--bs-handle-width) * 2);background-size:3px 8px;background-repeat:repeat-y;margin-left:calc(var(--bs-handle-height) + 6px)}.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{margin-left:calc(-1 * (var(--bs-handle-height) + 6px))}.bs-header{flex:0 0 auto;min-height:var(--bs-header-min-height,0px);padding:var(--bs-header-padding,0 16px 8px);background:var(--bs-surface,var(--bs-surface-d))}.bs-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;user-select:text;padding:var(--bs-content-padding,0 16px 16px)}.bs-sheet[data-bs-fit-content] .bs-content{scroll-padding-bottom:var(--bs-content-inset,0px)}.bs-sheet[data-bs-fit-content] .bs-content::after{content:"";display:block;flex:none;height:var(--bs-content-inset,0px)}.bs-footer{flex:0 0 auto;padding:var(--bs-footer-padding,12px 16px calc(12px + env(safe-area-inset-bottom)));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));background:var(--bs-surface,var(--bs-surface-d))}.bs-sheet[data-mode="bottom"]:has(.bs-footer:not([hidden]):has(*)){padding-bottom:0}.bs-header:not(:has(*)),.bs-footer:not(:has(*)),.bs-header[hidden],.bs-footer[hidden]{display:none}.bs-screen{position:absolute;inset:0;pointer-events:none;z-index:var(--bs-z-scrim);background:var(--bs-scrim-color,var(--bs-scrim-color-d));backdrop-filter:blur(var(--bs-scrim-blur,0px));-webkit-backdrop-filter:blur(var(--bs-scrim-blur,0px));transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-screen,.bs-root[data-animating="true"] .bs-screen{transition:none}.bs-scrim-overlay{z-index:calc(var(--bs-z-sheet) + 1);pointer-events:none}.bs-button-slot{position:fixed;z-index:calc(var(--bs-z-sheet) + 1);pointer-events:auto}.bs-button-slot[data-side="left"]{left:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-side="right"]{right:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="top"]{bottom:auto;top:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="left"]{left:calc(var(--bs-size,0px) + 12px);right:auto;bottom:auto;top:16px}.bs-button-slot[data-mode="right"]{right:calc(var(--bs-size,0px) + 12px);left:auto;bottom:auto;top:16px}@media (prefers-reduced-motion:reduce){.bs-backdrop,.bs-handle::before,.bs-button-slot[data-side="left"],.bs-button-slot[data-side="right"]{transition:none !important}}@media (prefers-color-scheme:dark){:where(.bs-root){--bs-surface-d:#1a1a1d;--bs-surface-border-d:rgba(255,255,255,0.08);--bs-handle-color-d:rgba(255,255,255,0.45);--bs-shadow-auto:0 -3px 16px rgba(0,0,0,0.5)}}@media (forced-colors:active){.bs-sheet{border:1px solid CanvasText}.bs-handle::before{background:CanvasText;forced-color-adjust:none}.bs-backdrop,.bs-screen{forced-color-adjust:none}}.bs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.ovl-root){--ovl-surface:var(--bs-surface,var(--bs-surface-d,#ffffff));--ovl-surface-border:var(--bs-surface-border,var(--bs-surface-border-d,rgba(0,0,0,0.08)));--ovl-shadow:0 -8px 40px rgba(0,0,0,0.35);--ovl-radius:var(--bs-radius,var(--bs-radius-d,20px));--ovl-backdrop-color:rgba(0,0,0,0.5);--ovl-z-backdrop:200;--ovl-z-panel:201}.ovl-backdrop{position:fixed;inset:0;background:var(--ovl-backdrop-color);opacity:0;pointer-events:none;z-index:var(--ovl-z-backdrop)}.ovl-panel{position:fixed;background:var(--ovl-surface);box-shadow:var(--ovl-shadow);z-index:var(--ovl-z-panel);-webkit-tap-highlight-color:transparent;outline:none;transition:transform 0.32s cubic-bezier(0.29,1.24,0.84,0.99),opacity 0.32s ease-out}.ovl-panel[data-state="open"]{transform:translate3d(0,0,0);opacity:1}@starting-style{.ovl-panel[data-edge="bottom"][data-state="open"]{transform:translate3d(0,100%,0);opacity:0}.ovl-panel[data-edge="top"][data-state="open"]{transform:translate3d(0,-100%,0);opacity:0}.ovl-panel[data-edge="left"][data-state="open"]{transform:translate3d(-100%,0,0);opacity:0}.ovl-panel[data-edge="right"][data-state="open"]{transform:translate3d(100%,0,0);opacity:0}}.ovl-panel[data-edge="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--ovl-radius);border-top-right-radius:var(--ovl-radius);border-top:1px solid var(--ovl-surface-border);padding-bottom:env(safe-area-inset-bottom)}.ovl-panel[data-edge="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-bottom:1px solid var(--ovl-surface-border);padding-top:env(safe-area-inset-top)}.ovl-panel[data-edge="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-right:1px solid var(--ovl-surface-border)}.ovl-panel[data-edge="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--ovl-radius);border-bottom-left-radius:var(--ovl-radius);border-left:1px solid var(--ovl-surface-border)}@media (prefers-reduced-motion:reduce){.ovl-panel,.ovl-backdrop{transition:none !important}}`;
|
|
4586
4663
|
}
|
|
4587
4664
|
});
|
|
4588
4665
|
|
|
@@ -4679,7 +4756,7 @@ var init_shadow_tree = __esm({
|
|
|
4679
4756
|
});
|
|
4680
4757
|
|
|
4681
4758
|
// src/web-component/attributes.ts
|
|
4682
|
-
var ATTR_SNAP_POINTS, ATTR_ALLOWED, ATTR_INITIAL, ATTR_MODE, ATTR_BACKDROP, ATTR_STYLESHEET, ATTR_ANIMATION, ATTR_FOCUS_TRAP, ATTR_CLOSE_ON_ESCAPE, ATTR_LOCK_BODY_SCROLL, ATTR_SHEET_LABEL, ATTR_STACK_EFFECT, ATTR_PERSISTENT, ATTR_DISABLE_CLOSE, ATTR_DISABLE_DRAG, ATTR_DRAG_FROM, ATTR_DRAG_FROM_CONTENT, ATTR_CLOSE_ON_ROUTE_CHANGE, ATTR_RADIUS, ATTR_MAX_HEIGHT, ATTR_RETURN_FOCUS_TO, ATTR_BACKDROP_COLOR, ATTR_SCRIM_COLOR, ATTR_SNAP, LIVE_ATTRS, OBSERVED_ATTRS, isValidSnapPoint, DEFAULT_SNAP_POINTS, parseSnapPoints, VALID_MODES, VALID_ANIMATIONS, parseMode, parseAnimation, VALID_DRAG_FROM, parseDragFrom, parseList, parseDimension, ANCHOR_POSITIONS, ANCHOR_ANIMATIONS, parseAnchorOptions;
|
|
4759
|
+
var ATTR_SNAP_POINTS, ATTR_ALLOWED, ATTR_INITIAL, ATTR_MODE, ATTR_BACKDROP, ATTR_STYLESHEET, ATTR_ANIMATION, ATTR_FOCUS_TRAP, ATTR_CLOSE_ON_ESCAPE, ATTR_LOCK_BODY_SCROLL, ATTR_SHEET_LABEL, ATTR_STACK_EFFECT, ATTR_PERSISTENT, ATTR_DISABLE_CLOSE, ATTR_DISABLE_DRAG, ATTR_DRAG_FROM, ATTR_DRAG_FROM_CONTENT, ATTR_FIT_CONTENT_TO_SNAP, ATTR_CLOSE_ON_ROUTE_CHANGE, ATTR_RADIUS, ATTR_MAX_HEIGHT, ATTR_RETURN_FOCUS_TO, ATTR_BACKDROP_COLOR, ATTR_SCRIM_COLOR, ATTR_SNAP, LIVE_ATTRS, OBSERVED_ATTRS, isValidSnapPoint, DEFAULT_SNAP_POINTS, parseSnapPoints, VALID_MODES, VALID_ANIMATIONS, parseMode, parseAnimation, VALID_DRAG_FROM, parseDragFrom, parseList, parseDimension, ANCHOR_POSITIONS, ANCHOR_ANIMATIONS, parseAnchorOptions;
|
|
4683
4760
|
var init_attributes = __esm({
|
|
4684
4761
|
"src/web-component/attributes.ts"() {
|
|
4685
4762
|
ATTR_SNAP_POINTS = "snap-points";
|
|
@@ -4699,6 +4776,7 @@ var init_attributes = __esm({
|
|
|
4699
4776
|
ATTR_DISABLE_DRAG = "disable-drag";
|
|
4700
4777
|
ATTR_DRAG_FROM = "drag-from";
|
|
4701
4778
|
ATTR_DRAG_FROM_CONTENT = "drag-from-content";
|
|
4779
|
+
ATTR_FIT_CONTENT_TO_SNAP = "fit-content-to-snap";
|
|
4702
4780
|
ATTR_CLOSE_ON_ROUTE_CHANGE = "close-on-route-change";
|
|
4703
4781
|
ATTR_RADIUS = "radius";
|
|
4704
4782
|
ATTR_MAX_HEIGHT = "max-height";
|
|
@@ -4736,6 +4814,7 @@ var init_attributes = __esm({
|
|
|
4736
4814
|
ATTR_DISABLE_DRAG,
|
|
4737
4815
|
ATTR_DRAG_FROM,
|
|
4738
4816
|
ATTR_DRAG_FROM_CONTENT,
|
|
4817
|
+
ATTR_FIT_CONTENT_TO_SNAP,
|
|
4739
4818
|
ATTR_CLOSE_ON_ROUTE_CHANGE,
|
|
4740
4819
|
ATTR_RADIUS,
|
|
4741
4820
|
ATTR_MAX_HEIGHT,
|
|
@@ -5009,6 +5088,7 @@ var init_BottomSheetElement = __esm({
|
|
|
5009
5088
|
disableDrag: this.getAttribute(ATTR_DISABLE_DRAG) === "true",
|
|
5010
5089
|
dragFrom: parseDragFrom(this.getAttribute(ATTR_DRAG_FROM)),
|
|
5011
5090
|
dragFromContent: this.getAttribute(ATTR_DRAG_FROM_CONTENT) === null ? void 0 : this.getAttribute(ATTR_DRAG_FROM_CONTENT) !== "false",
|
|
5091
|
+
fitContentToSnap: this.hasAttribute(ATTR_FIT_CONTENT_TO_SNAP) && this.getAttribute(ATTR_FIT_CONTENT_TO_SNAP) !== "false",
|
|
5012
5092
|
closeOnRouteChange: this.getAttribute(ATTR_CLOSE_ON_ROUTE_CHANGE) === "true",
|
|
5013
5093
|
radius: parseDimension(this.getAttribute(ATTR_RADIUS)),
|
|
5014
5094
|
maxHeight: parseDimension(this.getAttribute(ATTR_MAX_HEIGHT)),
|
package/dist/element.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BottomSheetEngine } from './BottomSheetEngine-
|
|
2
|
-
import { C as CloseReason, A as AnchorOptions,
|
|
1
|
+
import { B as BottomSheetEngine } from './BottomSheetEngine-CsQWHLNb.cjs';
|
|
2
|
+
import { C as CloseReason, A as AnchorOptions, i as ScrimStagesOptions, d as EngineState } from './BottomSheetCore-CQStdVy2.cjs';
|
|
3
3
|
import './transform-jVfAikE9.cjs';
|
|
4
4
|
|
|
5
5
|
declare const BaseHTMLElement: typeof HTMLElement;
|
package/dist/element.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as BottomSheetEngine } from './BottomSheetEngine-
|
|
2
|
-
import { C as CloseReason, A as AnchorOptions,
|
|
1
|
+
import { B as BottomSheetEngine } from './BottomSheetEngine-Dn6h-7gF.js';
|
|
2
|
+
import { C as CloseReason, A as AnchorOptions, i as ScrimStagesOptions, d as EngineState } from './BottomSheetCore-9i-Uh6T3.js';
|
|
3
3
|
import './transform-jVfAikE9.js';
|
|
4
4
|
|
|
5
5
|
declare const BaseHTMLElement: typeof HTMLElement;
|