@capgo/capacitor-sheets 8.0.14 → 8.0.16
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/angular/index.js +68 -12
- package/dist/angular/index.js.map +1 -1
- package/dist/angular/index.mjs +68 -12
- package/dist/angular/index.mjs.map +1 -1
- package/dist/{chunk-AXGC7BLW.mjs → chunk-75SRJO4V.mjs} +69 -13
- package/dist/chunk-75SRJO4V.mjs.map +1 -0
- package/dist/{components-STHKYCFN.mjs → components-6FNKBOX7.mjs} +2 -2
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +69 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/react/index.js +68 -12
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +68 -12
- package/dist/react/index.mjs.map +1 -1
- package/dist/solid/index.js +68 -12
- package/dist/solid/index.js.map +1 -1
- package/dist/solid/index.mjs +68 -12
- package/dist/solid/index.mjs.map +1 -1
- package/dist/svelte/index.js +68 -12
- package/dist/svelte/index.js.map +1 -1
- package/dist/svelte/index.mjs +68 -12
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/vue/index.js +68 -12
- package/dist/vue/index.js.map +1 -1
- package/dist/vue/index.mjs +68 -12
- package/dist/vue/index.mjs.map +1 -1
- package/docs/screenshots/issue-38-detached-spacing-simulator.webp +0 -0
- package/docs/screenshots/issue-38-keyboard-sheet-simulator.webp +0 -0
- package/docs/screenshots/issue-38-long-sheet-safe-area-simulator.webp +0 -0
- package/docs/screenshots/issue-38-page-from-bottom-simulator.webp +0 -0
- package/docs/screenshots/issue-38-page-right-simulator.webp +0 -0
- package/docs/screenshots/issue-38-persistent-expanded-simulator.webp +0 -0
- package/docs/screenshots/issue-38-persistent-mini-simulator.webp +0 -0
- package/package.json +2 -2
- package/dist/chunk-AXGC7BLW.mjs.map +0 -1
- /package/dist/{components-STHKYCFN.mjs.map → components-6FNKBOX7.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -711,7 +711,7 @@ function tween(start, end, progress) {
|
|
|
711
711
|
const next = startValue + (endValue - startValue) * progress;
|
|
712
712
|
return `${next}${unit}`;
|
|
713
713
|
}
|
|
714
|
-
var defaultOptions, defaultAnimation, stackRegistry, unitlessInsetPattern, safeAreaEdges, SheetController;
|
|
714
|
+
var defaultOptions, defaultAnimation, stackRegistry, documentLockDepth, documentLockSnapshot, unitlessInsetPattern, safeAreaEdges, SheetController;
|
|
715
715
|
var init_sheet_controller = __esm({
|
|
716
716
|
"src/core/sheet-controller.ts"() {
|
|
717
717
|
"use strict";
|
|
@@ -742,6 +742,8 @@ var init_sheet_controller = __esm({
|
|
|
742
742
|
contentMove: true
|
|
743
743
|
};
|
|
744
744
|
stackRegistry = /* @__PURE__ */ new Map();
|
|
745
|
+
documentLockDepth = /* @__PURE__ */ new WeakMap();
|
|
746
|
+
documentLockSnapshot = /* @__PURE__ */ new WeakMap();
|
|
745
747
|
unitlessInsetPattern = /^-?(?:\d+(?:\.\d+)?|\.\d+)$/;
|
|
746
748
|
safeAreaEdges = ["top", "bottom", "left", "right"];
|
|
747
749
|
SheetController = class {
|
|
@@ -763,8 +765,6 @@ var init_sheet_controller = __esm({
|
|
|
763
765
|
pointerTravel = null;
|
|
764
766
|
connected = false;
|
|
765
767
|
lockedScroll = false;
|
|
766
|
-
previousBodyOverflow = "";
|
|
767
|
-
previousBodyTouchAction = "";
|
|
768
768
|
inertedElements = /* @__PURE__ */ new Map();
|
|
769
769
|
previousFocus = null;
|
|
770
770
|
hasThemeDimmer = false;
|
|
@@ -777,12 +777,20 @@ var init_sheet_controller = __esm({
|
|
|
777
777
|
const visualViewport = this.root.ownerDocument.defaultView?.visualViewport;
|
|
778
778
|
if (!view) return;
|
|
779
779
|
if (!visualViewport || this.options.nativeFocusScrollPrevention === false) {
|
|
780
|
-
|
|
780
|
+
this.setKeyboardOffset("0em");
|
|
781
781
|
return;
|
|
782
782
|
}
|
|
783
783
|
const layoutHeight = this.root.ownerDocument.documentElement.clientHeight;
|
|
784
784
|
const keyboardOffset = Math.max(0, layoutHeight - visualViewport.height - visualViewport.offsetTop);
|
|
785
|
-
|
|
785
|
+
this.setKeyboardOffset(`${toEm(view, keyboardOffset)}em`);
|
|
786
|
+
};
|
|
787
|
+
handleFocusIn = (event) => {
|
|
788
|
+
if (!this.presented || this.options.nativeFocusScrollPrevention === false) return;
|
|
789
|
+
const target = event.target;
|
|
790
|
+
const content = this.parts.content;
|
|
791
|
+
if (!(target instanceof HTMLElement) || !content?.contains(target)) return;
|
|
792
|
+
if (!["input", "select", "textarea"].includes(target.localName) && !target.isContentEditable) return;
|
|
793
|
+
requestAnimationFrame(() => target.scrollIntoView({ block: "nearest", inline: "nearest" }));
|
|
786
794
|
};
|
|
787
795
|
handleDocumentKeyDown = (event) => {
|
|
788
796
|
if (!this.presented) return;
|
|
@@ -999,6 +1007,7 @@ var init_sheet_controller = __esm({
|
|
|
999
1007
|
this.previousFocus = this.root.ownerDocument.activeElement;
|
|
1000
1008
|
this.presented = true;
|
|
1001
1009
|
this.activeDetent = clamp(options.detent ?? this.resolveInitialDetent(), 1, this.detentOffsetsPx.length - 1);
|
|
1010
|
+
this.updateDetentState();
|
|
1002
1011
|
this.updateDomState(true);
|
|
1003
1012
|
this.lockPage();
|
|
1004
1013
|
this.applyInert();
|
|
@@ -1022,6 +1031,7 @@ var init_sheet_controller = __esm({
|
|
|
1022
1031
|
const previous = this.activeDetent;
|
|
1023
1032
|
this.presented = false;
|
|
1024
1033
|
this.activeDetent = 0;
|
|
1034
|
+
this.updateDetentState();
|
|
1025
1035
|
this.setStatus("exiting");
|
|
1026
1036
|
dispatch(this.root, "cap-sheet-dismiss", this.getTravelEvent());
|
|
1027
1037
|
await this.animateTo(this.detentOffsetsPx[0] || this.hiddenOffsetPx, {
|
|
@@ -1060,6 +1070,7 @@ var init_sheet_controller = __esm({
|
|
|
1060
1070
|
}
|
|
1061
1071
|
const previous = this.activeDetent;
|
|
1062
1072
|
this.activeDetent = target;
|
|
1073
|
+
this.updateDetentState();
|
|
1063
1074
|
this.setStatus("settling");
|
|
1064
1075
|
await this.animateTo(this.detentOffsetsPx[target] || 0, {
|
|
1065
1076
|
...this.options.steppingAnimationSettings || {},
|
|
@@ -1331,6 +1342,7 @@ var init_sheet_controller = __esm({
|
|
|
1331
1342
|
view.addEventListener("pointermove", this.handlePointerMove, { passive: false });
|
|
1332
1343
|
view.addEventListener("pointerup", this.handlePointerUp);
|
|
1333
1344
|
view.addEventListener("pointercancel", this.handlePointerUp);
|
|
1345
|
+
view.addEventListener("focusin", this.handleFocusIn);
|
|
1334
1346
|
view.addEventListener("wheel", this.handleWheel, { passive: false });
|
|
1335
1347
|
this.viewListenersElement = view;
|
|
1336
1348
|
}
|
|
@@ -1342,6 +1354,7 @@ var init_sheet_controller = __esm({
|
|
|
1342
1354
|
view.removeEventListener("pointermove", this.handlePointerMove);
|
|
1343
1355
|
view.removeEventListener("pointerup", this.handlePointerUp);
|
|
1344
1356
|
view.removeEventListener("pointercancel", this.handlePointerUp);
|
|
1357
|
+
view.removeEventListener("focusin", this.handleFocusIn);
|
|
1345
1358
|
view.removeEventListener("wheel", this.handleWheel);
|
|
1346
1359
|
this.viewListenersElement = null;
|
|
1347
1360
|
}
|
|
@@ -1374,6 +1387,7 @@ var init_sheet_controller = __esm({
|
|
|
1374
1387
|
content.setAttribute("tabindex", content.getAttribute("tabindex") || "-1");
|
|
1375
1388
|
}
|
|
1376
1389
|
this.root.toggleAttribute("presented", presented);
|
|
1390
|
+
this.updateDetentState();
|
|
1377
1391
|
}
|
|
1378
1392
|
linkAccessibleNames() {
|
|
1379
1393
|
if (!this.parts.content) return;
|
|
@@ -1422,24 +1436,60 @@ var init_sheet_controller = __esm({
|
|
|
1422
1436
|
}
|
|
1423
1437
|
lockPage() {
|
|
1424
1438
|
if (this.lockedScroll) return;
|
|
1425
|
-
const
|
|
1426
|
-
|
|
1427
|
-
|
|
1439
|
+
const doc = this.root.ownerDocument;
|
|
1440
|
+
const documentElement = doc.documentElement;
|
|
1441
|
+
const body = doc.body;
|
|
1442
|
+
const depth = documentLockDepth.get(doc) ?? 0;
|
|
1443
|
+
if (depth === 0) {
|
|
1444
|
+
documentLockSnapshot.set(doc, {
|
|
1445
|
+
htmlOverflow: documentElement.style.overflow,
|
|
1446
|
+
htmlTouchAction: documentElement.style.touchAction,
|
|
1447
|
+
bodyOverflow: body.style.overflow,
|
|
1448
|
+
bodyTouchAction: body.style.touchAction
|
|
1449
|
+
});
|
|
1450
|
+
}
|
|
1451
|
+
documentElement.style.overflow = "hidden";
|
|
1452
|
+
documentElement.style.touchAction = "none";
|
|
1428
1453
|
body.dataset.capSheetScrollLocked = "true";
|
|
1429
1454
|
body.style.overflow = "hidden";
|
|
1430
1455
|
body.style.touchAction = "none";
|
|
1456
|
+
documentLockDepth.set(doc, depth + 1);
|
|
1431
1457
|
this.lockedScroll = true;
|
|
1432
1458
|
}
|
|
1433
1459
|
unlockPage() {
|
|
1434
1460
|
if (!this.lockedScroll) return;
|
|
1435
|
-
const
|
|
1461
|
+
const doc = this.root.ownerDocument;
|
|
1462
|
+
const documentElement = doc.documentElement;
|
|
1463
|
+
const body = doc.body;
|
|
1464
|
+
const depth = Math.max((documentLockDepth.get(doc) ?? 1) - 1, 0);
|
|
1465
|
+
if (depth > 0) {
|
|
1466
|
+
documentLockDepth.set(doc, depth);
|
|
1467
|
+
this.lockedScroll = false;
|
|
1468
|
+
return;
|
|
1469
|
+
}
|
|
1470
|
+
const snapshot = documentLockSnapshot.get(doc);
|
|
1436
1471
|
delete body.dataset.capSheetScrollLocked;
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1472
|
+
documentElement.style.overflow = snapshot?.htmlOverflow ?? "";
|
|
1473
|
+
documentElement.style.touchAction = snapshot?.htmlTouchAction ?? "";
|
|
1474
|
+
body.style.overflow = snapshot?.bodyOverflow ?? "";
|
|
1475
|
+
body.style.touchAction = snapshot?.bodyTouchAction ?? "";
|
|
1476
|
+
documentLockDepth.delete(doc);
|
|
1477
|
+
documentLockSnapshot.delete(doc);
|
|
1441
1478
|
this.lockedScroll = false;
|
|
1442
1479
|
}
|
|
1480
|
+
setKeyboardOffset(value) {
|
|
1481
|
+
const view = this.parts.view;
|
|
1482
|
+
if (!view) return;
|
|
1483
|
+
if (view.style.getPropertyValue("--cap-sheet-keyboard-offset") !== value) {
|
|
1484
|
+
view.style.setProperty("--cap-sheet-keyboard-offset", value);
|
|
1485
|
+
}
|
|
1486
|
+
if (!this.presented) return;
|
|
1487
|
+
requestAnimationFrame(() => {
|
|
1488
|
+
if (!this.presented) return;
|
|
1489
|
+
this.remeasure();
|
|
1490
|
+
this.applyOffset(this.detentOffsetsPx[this.activeDetent] || 0, this.status);
|
|
1491
|
+
});
|
|
1492
|
+
}
|
|
1443
1493
|
applyInert() {
|
|
1444
1494
|
if (this.options.inertOutside === false || !this.parts.view) return;
|
|
1445
1495
|
const body = this.root.ownerDocument.body;
|
|
@@ -1518,6 +1568,12 @@ var init_sheet_controller = __esm({
|
|
|
1518
1568
|
const detail = { activeDetent, previousActiveDetent };
|
|
1519
1569
|
dispatch(this.root, "cap-sheet-active-detent-change", detail);
|
|
1520
1570
|
}
|
|
1571
|
+
updateDetentState() {
|
|
1572
|
+
const activeDetent = String(this.activeDetent);
|
|
1573
|
+
this.root.dataset.activeDetent = activeDetent;
|
|
1574
|
+
if (this.parts.view) this.parts.view.dataset.activeDetent = activeDetent;
|
|
1575
|
+
if (this.parts.content) this.parts.content.dataset.activeDetent = activeDetent;
|
|
1576
|
+
}
|
|
1521
1577
|
registerStack() {
|
|
1522
1578
|
const nextStack = this.options.stack || this.root.closest("cap-sheet-stack")?.id || null;
|
|
1523
1579
|
if (this.stackId === nextStack) return;
|