@surdeddd/bottom-sheet 0.4.0 → 0.5.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/dist/{BottomSheetEngine-L05jGZvU.d.ts → BottomSheetEngine-BHjKFtnM.d.ts} +2 -0
- package/dist/{BottomSheetEngine-BJrH7qY3.d.cts → BottomSheetEngine-CqiCz64W.d.cts} +2 -0
- package/dist/element.cjs +120 -13
- package/dist/element.d.cts +1 -1
- package/dist/element.d.ts +1 -1
- package/dist/element.iife.global.js +2 -2
- package/dist/element.js +120 -13
- package/dist/index.cjs +97 -8
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +97 -8
- 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 +1 -1
- package/dist/preact.d.ts +1 -1
- package/dist/qwik.cjs +100 -10
- package/dist/qwik.d.cts +2 -2
- package/dist/qwik.d.ts +2 -2
- package/dist/qwik.js +100 -10
- package/dist/react.cjs +119 -12
- package/dist/react.d.cts +4 -2
- package/dist/react.d.ts +4 -2
- package/dist/react.js +119 -12
- package/dist/solid.cjs +128 -18
- package/dist/solid.d.cts +3 -0
- package/dist/solid.d.ts +3 -0
- package/dist/solid.js +130 -20
- package/dist/solid.source.jsx +106 -12
- package/dist/styles.css +34 -5
- package/dist/svelte-core.cjs +97 -8
- package/dist/svelte-core.js +97 -8
- package/dist/svelte-src/BottomSheet.svelte +15 -13
- package/dist/svelte.cjs +159 -53
- package/dist/svelte.d.cts +1 -0
- package/dist/svelte.d.ts +1 -0
- package/dist/svelte.js +159 -53
- package/dist/vue.cjs +126 -30
- package/dist/vue.js +126 -30
- package/package.json +3 -3
|
@@ -293,6 +293,8 @@ declare class BottomSheetEngine {
|
|
|
293
293
|
};
|
|
294
294
|
setSnapPoints(points: EngineOptions["snapPoints"], allowed?: string[]): void;
|
|
295
295
|
recompute(): void;
|
|
296
|
+
private contentTargets;
|
|
297
|
+
private measureContentExtent;
|
|
296
298
|
private measureFitSize;
|
|
297
299
|
private installFitObserver;
|
|
298
300
|
destroy(): void;
|
|
@@ -293,6 +293,8 @@ declare class BottomSheetEngine {
|
|
|
293
293
|
};
|
|
294
294
|
setSnapPoints(points: EngineOptions["snapPoints"], allowed?: string[]): void;
|
|
295
295
|
recompute(): void;
|
|
296
|
+
private contentTargets;
|
|
297
|
+
private measureContentExtent;
|
|
296
298
|
private measureFitSize;
|
|
297
299
|
private installFitObserver;
|
|
298
300
|
destroy(): void;
|
package/dist/element.cjs
CHANGED
|
@@ -3137,11 +3137,54 @@ var init_BottomSheetEngine = __esm({
|
|
|
3137
3137
|
this.updateAriaSlider();
|
|
3138
3138
|
}
|
|
3139
3139
|
}
|
|
3140
|
+
contentTargets() {
|
|
3141
|
+
const scroller = this.scrollContainer;
|
|
3142
|
+
if (!scroller) return [];
|
|
3143
|
+
const hasSlot = typeof HTMLSlotElement !== "undefined";
|
|
3144
|
+
const out = [];
|
|
3145
|
+
for (const child of Array.from(scroller.children)) {
|
|
3146
|
+
if (hasSlot && child instanceof HTMLSlotElement) {
|
|
3147
|
+
for (const el of child.assignedElements()) out.push(el);
|
|
3148
|
+
} else {
|
|
3149
|
+
out.push(child);
|
|
3150
|
+
}
|
|
3151
|
+
}
|
|
3152
|
+
return out;
|
|
3153
|
+
}
|
|
3154
|
+
measureContentExtent(vertical) {
|
|
3155
|
+
const content = this.scrollContainer;
|
|
3156
|
+
if (!content) return 0;
|
|
3157
|
+
const targets = this.contentTargets();
|
|
3158
|
+
if (targets.length === 0) {
|
|
3159
|
+
return vertical ? content.scrollHeight : content.scrollWidth;
|
|
3160
|
+
}
|
|
3161
|
+
let min = Infinity;
|
|
3162
|
+
let max = -Infinity;
|
|
3163
|
+
for (const el of targets) {
|
|
3164
|
+
const r = el.getBoundingClientRect();
|
|
3165
|
+
if (vertical) {
|
|
3166
|
+
if (r.top < min) min = r.top;
|
|
3167
|
+
if (r.bottom > max) max = r.bottom;
|
|
3168
|
+
} else {
|
|
3169
|
+
if (r.left < min) min = r.left;
|
|
3170
|
+
if (r.right > max) max = r.right;
|
|
3171
|
+
}
|
|
3172
|
+
}
|
|
3173
|
+
if (!isFinite(min) || !isFinite(max) || max <= min) {
|
|
3174
|
+
return vertical ? content.scrollHeight : content.scrollWidth;
|
|
3175
|
+
}
|
|
3176
|
+
let pad = 0;
|
|
3177
|
+
if (typeof getComputedStyle !== "undefined") {
|
|
3178
|
+
const cs = getComputedStyle(content);
|
|
3179
|
+
pad = vertical ? (parseFloat(cs.paddingTop) || 0) + (parseFloat(cs.paddingBottom) || 0) : (parseFloat(cs.paddingLeft) || 0) + (parseFloat(cs.paddingRight) || 0);
|
|
3180
|
+
}
|
|
3181
|
+
return max - min + pad;
|
|
3182
|
+
}
|
|
3140
3183
|
measureFitSize() {
|
|
3141
3184
|
const vertical = layoutAxis(this.mode) === "height";
|
|
3142
3185
|
const handleSize = vertical ? this.handle.offsetHeight : this.handle.offsetWidth;
|
|
3143
3186
|
const content = this.scrollContainer;
|
|
3144
|
-
const natural = content ? handleSize + (vertical
|
|
3187
|
+
const natural = content ? handleSize + this.measureContentExtent(vertical) : handleSize;
|
|
3145
3188
|
if (typeof window === "undefined") return natural;
|
|
3146
3189
|
const viewport = vertical ? window.innerHeight : window.innerWidth;
|
|
3147
3190
|
return viewport > 0 ? Math.min(natural, viewport) : natural;
|
|
@@ -3150,22 +3193,62 @@ var init_BottomSheetEngine = __esm({
|
|
|
3150
3193
|
if (typeof ResizeObserver === "undefined") return;
|
|
3151
3194
|
if (!this.snapPointsRaw.some((p) => p.size === "fit" || p.size === "content"))
|
|
3152
3195
|
return;
|
|
3153
|
-
const targets = [this.handle];
|
|
3154
|
-
if (this.scrollContainer && this.scrollContainer !== this.handle) {
|
|
3155
|
-
targets.push(this.scrollContainer);
|
|
3156
|
-
}
|
|
3157
3196
|
let raf = 0;
|
|
3158
|
-
const
|
|
3197
|
+
const schedule = () => {
|
|
3159
3198
|
if (raf) return;
|
|
3160
3199
|
raf = requestAnimationFrame(() => {
|
|
3161
3200
|
raf = 0;
|
|
3162
3201
|
if (this.destroyed || this.gesture?.isDragging) return;
|
|
3163
3202
|
this.recompute();
|
|
3164
3203
|
});
|
|
3165
|
-
}
|
|
3166
|
-
|
|
3204
|
+
};
|
|
3205
|
+
const ro = new ResizeObserver(schedule);
|
|
3206
|
+
ro.observe(this.handle);
|
|
3207
|
+
const scroller = this.scrollContainer;
|
|
3208
|
+
const observed = /* @__PURE__ */ new Set();
|
|
3209
|
+
const slots = /* @__PURE__ */ new Set();
|
|
3210
|
+
const hasSlot = typeof HTMLSlotElement !== "undefined";
|
|
3211
|
+
const onSlotChange = () => resync();
|
|
3212
|
+
const trackSlots = () => {
|
|
3213
|
+
if (!scroller || !hasSlot) return;
|
|
3214
|
+
for (const child of Array.from(scroller.children)) {
|
|
3215
|
+
if (child instanceof HTMLSlotElement && !slots.has(child)) {
|
|
3216
|
+
child.addEventListener("slotchange", onSlotChange);
|
|
3217
|
+
slots.add(child);
|
|
3218
|
+
}
|
|
3219
|
+
}
|
|
3220
|
+
};
|
|
3221
|
+
const resync = () => {
|
|
3222
|
+
trackSlots();
|
|
3223
|
+
const targets = this.contentTargets();
|
|
3224
|
+
for (const el of observed) {
|
|
3225
|
+
if (!targets.includes(el)) {
|
|
3226
|
+
ro.unobserve(el);
|
|
3227
|
+
observed.delete(el);
|
|
3228
|
+
}
|
|
3229
|
+
}
|
|
3230
|
+
for (const el of targets) {
|
|
3231
|
+
if (!observed.has(el)) {
|
|
3232
|
+
ro.observe(el);
|
|
3233
|
+
observed.add(el);
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
schedule();
|
|
3237
|
+
};
|
|
3238
|
+
let mo;
|
|
3239
|
+
if (scroller) {
|
|
3240
|
+
resync();
|
|
3241
|
+
if (typeof MutationObserver !== "undefined") {
|
|
3242
|
+
mo = new MutationObserver(resync);
|
|
3243
|
+
mo.observe(scroller, { childList: true });
|
|
3244
|
+
}
|
|
3245
|
+
}
|
|
3167
3246
|
this.teardowns.add(() => {
|
|
3168
3247
|
ro.disconnect();
|
|
3248
|
+
mo?.disconnect();
|
|
3249
|
+
for (const slot of slots) {
|
|
3250
|
+
slot.removeEventListener("slotchange", onSlotChange);
|
|
3251
|
+
}
|
|
3169
3252
|
if (raf) cancelAnimationFrame(raf);
|
|
3170
3253
|
});
|
|
3171
3254
|
}
|
|
@@ -3513,6 +3596,9 @@ var init_BottomSheetEngine = __esm({
|
|
|
3513
3596
|
if (this.anchorHost && this.anchorHost !== this.scrimParent) {
|
|
3514
3597
|
this.anchorHost.style.setProperty("--bs-size", `${size}px`);
|
|
3515
3598
|
}
|
|
3599
|
+
if (this.rootEl && this.rootEl !== this.scrimParent && this.rootEl !== this.anchorHost) {
|
|
3600
|
+
this.rootEl.style.setProperty("--bs-size", `${size}px`);
|
|
3601
|
+
}
|
|
3516
3602
|
}
|
|
3517
3603
|
const progress = this.computeProgress(size);
|
|
3518
3604
|
const progressChanged = this.progressWriteSentinel.shouldWrite(
|
|
@@ -3524,6 +3610,9 @@ var init_BottomSheetEngine = __esm({
|
|
|
3524
3610
|
if (this.anchorHost) {
|
|
3525
3611
|
this.anchorHost.style.setProperty("--bs-progress", String(progress));
|
|
3526
3612
|
}
|
|
3613
|
+
if (this.rootEl && this.rootEl !== this.anchorHost) {
|
|
3614
|
+
this.rootEl.style.setProperty("--bs-progress", String(progress));
|
|
3615
|
+
}
|
|
3527
3616
|
}
|
|
3528
3617
|
this.scrim.applyOpacity(progress, progressChanged);
|
|
3529
3618
|
if (progressChanged && this.bus.listenerCount("progress") > 0) {
|
|
@@ -3586,7 +3675,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
3586
3675
|
var baseStyles;
|
|
3587
3676
|
var init_baseStyles = __esm({
|
|
3588
3677
|
"src/web-component/baseStyles.ts"() {
|
|
3589
|
-
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-header-min-height:80px;--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));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-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,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,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,0.12)}.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: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-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;user-select:text;padding:0 16px 16px}.bs-footer{flex:0 0 auto;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-screen{position:absolute;inset:0;pointer-events:none;z-index:var(--bs-z-scrim);background:var(--bs-scrim-color,var(--bs-scrim-color-d));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:
|
|
3678
|
+
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-header-min-height:80px;--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));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-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,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,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,0.12)}.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: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;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:0 16px 16px}.bs-footer{flex:0 0 auto;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));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)}}.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}}`;
|
|
3590
3679
|
}
|
|
3591
3680
|
});
|
|
3592
3681
|
|
|
@@ -3596,7 +3685,7 @@ __export(BottomSheetElement_exports, {
|
|
|
3596
3685
|
BottomSheetElement: () => exports.BottomSheetElement,
|
|
3597
3686
|
defineBottomSheet: () => exports.defineBottomSheet
|
|
3598
3687
|
});
|
|
3599
|
-
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_CLOSE_ON_ROUTE_CHANGE, ATTR_RADIUS, ATTR_MAX_HEIGHT, ATTR_RETURN_FOCUS_TO, ATTR_BACKDROP_COLOR, ATTR_SCRIM_COLOR, ATTR_SNAP, LIVE_ATTRS, isValidSnapPoint, DEFAULT_SNAP_POINTS, parseSnapPoints, VALID_MODES, VALID_ANIMATIONS, parseMode, parseAnimation, parseList, parseDimension, ANCHOR_POSITIONS, ANCHOR_ANIMATIONS, parseAnchorOptions, buildSlot, buildShadowTree, BaseHTMLElement; exports.BottomSheetElement = void 0; exports.defineBottomSheet = void 0;
|
|
3688
|
+
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_CLOSE_ON_ROUTE_CHANGE, ATTR_RADIUS, ATTR_MAX_HEIGHT, ATTR_RETURN_FOCUS_TO, ATTR_BACKDROP_COLOR, ATTR_SCRIM_COLOR, ATTR_SNAP, LIVE_ATTRS, isValidSnapPoint, DEFAULT_SNAP_POINTS, parseSnapPoints, VALID_MODES, VALID_ANIMATIONS, parseMode, parseAnimation, parseList, parseDimension, ANCHOR_POSITIONS, ANCHOR_ANIMATIONS, parseAnchorOptions, buildSlot, buildSlotRegion, buildShadowTree, BaseHTMLElement; exports.BottomSheetElement = void 0; exports.defineBottomSheet = void 0;
|
|
3600
3689
|
var init_BottomSheetElement = __esm({
|
|
3601
3690
|
"src/web-component/BottomSheetElement.ts"() {
|
|
3602
3691
|
init_BottomSheetEngine();
|
|
@@ -3707,6 +3796,19 @@ var init_BottomSheetElement = __esm({
|
|
|
3707
3796
|
slot.name = name;
|
|
3708
3797
|
return slot;
|
|
3709
3798
|
};
|
|
3799
|
+
buildSlotRegion = (name, className) => {
|
|
3800
|
+
const region = document.createElement("div");
|
|
3801
|
+
region.className = className;
|
|
3802
|
+
region.setAttribute("part", name);
|
|
3803
|
+
const slot = buildSlot(name);
|
|
3804
|
+
region.appendChild(slot);
|
|
3805
|
+
const sync = () => {
|
|
3806
|
+
region.hidden = slot.assignedNodes({ flatten: true }).length === 0;
|
|
3807
|
+
};
|
|
3808
|
+
slot.addEventListener("slotchange", sync);
|
|
3809
|
+
sync();
|
|
3810
|
+
return region;
|
|
3811
|
+
};
|
|
3710
3812
|
buildShadowTree = () => {
|
|
3711
3813
|
const root = document.createElement("div");
|
|
3712
3814
|
root.className = "bs-root";
|
|
@@ -3738,7 +3840,7 @@ var init_BottomSheetElement = __esm({
|
|
|
3738
3840
|
handle.setAttribute("role", "slider");
|
|
3739
3841
|
handle.setAttribute("tabindex", "0");
|
|
3740
3842
|
handle.setAttribute("aria-label", "Resize sheet");
|
|
3741
|
-
|
|
3843
|
+
const header = buildSlotRegion("header", "bs-header");
|
|
3742
3844
|
const content = document.createElement("div");
|
|
3743
3845
|
content.className = "bs-content";
|
|
3744
3846
|
content.setAttribute("part", "content");
|
|
@@ -3747,14 +3849,15 @@ var init_BottomSheetElement = __esm({
|
|
|
3747
3849
|
content.setAttribute("aria-label", "Sheet content");
|
|
3748
3850
|
const defaultSlot = document.createElement("slot");
|
|
3749
3851
|
content.appendChild(defaultSlot);
|
|
3852
|
+
const footer = buildSlotRegion("footer", "bs-footer");
|
|
3750
3853
|
const announcer = document.createElement("span");
|
|
3751
3854
|
announcer.className = "bs-sr-announce";
|
|
3752
3855
|
announcer.setAttribute("role", "status");
|
|
3753
3856
|
announcer.setAttribute("aria-live", "polite");
|
|
3754
3857
|
announcer.setAttribute("aria-atomic", "true");
|
|
3755
3858
|
announcer.style.cssText = "position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);";
|
|
3756
|
-
sheet.append(
|
|
3757
|
-
root.append(backdrop, screen, sheet, announcer);
|
|
3859
|
+
sheet.append(handle, header, content, footer);
|
|
3860
|
+
root.append(backdrop, screen, sheet, leftButton, rightButton, announcer);
|
|
3758
3861
|
const fragment = document.createDocumentFragment();
|
|
3759
3862
|
fragment.appendChild(root);
|
|
3760
3863
|
return {
|
|
@@ -3762,7 +3865,9 @@ var init_BottomSheetElement = __esm({
|
|
|
3762
3865
|
refs: {
|
|
3763
3866
|
sheet,
|
|
3764
3867
|
handle,
|
|
3868
|
+
header,
|
|
3765
3869
|
content,
|
|
3870
|
+
footer,
|
|
3766
3871
|
backdrop,
|
|
3767
3872
|
screen,
|
|
3768
3873
|
leftButton,
|
|
@@ -3899,6 +4004,8 @@ var init_BottomSheetElement = __esm({
|
|
|
3899
4004
|
const { sheet, handle, content, backdrop, announcer } = this.refs;
|
|
3900
4005
|
const mode = parseMode(this.getAttribute(ATTR_MODE));
|
|
3901
4006
|
sheet.setAttribute("data-mode", mode);
|
|
4007
|
+
this.refs.leftButton.setAttribute("data-mode", mode);
|
|
4008
|
+
this.refs.rightButton.setAttribute("data-mode", mode);
|
|
3902
4009
|
const focusTrap = this.getAttribute(ATTR_FOCUS_TRAP) === "true";
|
|
3903
4010
|
if (focusTrap) {
|
|
3904
4011
|
sheet.setAttribute("aria-modal", "true");
|
package/dist/element.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BottomSheetEngine, C as CloseReason, A as AnchorOptions, S as ScrimStagesOptions, E as EngineState } from './BottomSheetEngine-
|
|
1
|
+
import { B as BottomSheetEngine, C as CloseReason, A as AnchorOptions, S as ScrimStagesOptions, E as EngineState } from './BottomSheetEngine-CqiCz64W.cjs';
|
|
2
2
|
import './transform-jVfAikE9.cjs';
|
|
3
3
|
|
|
4
4
|
declare const BaseHTMLElement: typeof HTMLElement;
|
package/dist/element.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BottomSheetEngine, C as CloseReason, A as AnchorOptions, S as ScrimStagesOptions, E as EngineState } from './BottomSheetEngine-
|
|
1
|
+
import { B as BottomSheetEngine, C as CloseReason, A as AnchorOptions, S as ScrimStagesOptions, E as EngineState } from './BottomSheetEngine-BHjKFtnM.js';
|
|
2
2
|
import './transform-jVfAikE9.js';
|
|
3
3
|
|
|
4
4
|
declare const BaseHTMLElement: typeof HTMLElement;
|