@capgo/capacitor-sheets 8.0.13 → 8.0.15
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/svelte/index.js
CHANGED
|
@@ -555,6 +555,8 @@ var defaultAnimation = {
|
|
|
555
555
|
contentMove: true
|
|
556
556
|
};
|
|
557
557
|
var stackRegistry = /* @__PURE__ */ new Map();
|
|
558
|
+
var documentLockDepth = /* @__PURE__ */ new WeakMap();
|
|
559
|
+
var documentLockSnapshot = /* @__PURE__ */ new WeakMap();
|
|
558
560
|
function parseNumber(value) {
|
|
559
561
|
if (value === null) return void 0;
|
|
560
562
|
const parsed = Number.parseInt(value, 10);
|
|
@@ -712,8 +714,6 @@ var SheetController = class {
|
|
|
712
714
|
pointerTravel = null;
|
|
713
715
|
connected = false;
|
|
714
716
|
lockedScroll = false;
|
|
715
|
-
previousBodyOverflow = "";
|
|
716
|
-
previousBodyTouchAction = "";
|
|
717
717
|
inertedElements = /* @__PURE__ */ new Map();
|
|
718
718
|
previousFocus = null;
|
|
719
719
|
hasThemeDimmer = false;
|
|
@@ -726,12 +726,20 @@ var SheetController = class {
|
|
|
726
726
|
const visualViewport = this.root.ownerDocument.defaultView?.visualViewport;
|
|
727
727
|
if (!view) return;
|
|
728
728
|
if (!visualViewport || this.options.nativeFocusScrollPrevention === false) {
|
|
729
|
-
|
|
729
|
+
this.setKeyboardOffset("0em");
|
|
730
730
|
return;
|
|
731
731
|
}
|
|
732
732
|
const layoutHeight = this.root.ownerDocument.documentElement.clientHeight;
|
|
733
733
|
const keyboardOffset = Math.max(0, layoutHeight - visualViewport.height - visualViewport.offsetTop);
|
|
734
|
-
|
|
734
|
+
this.setKeyboardOffset(`${toEm(view, keyboardOffset)}em`);
|
|
735
|
+
};
|
|
736
|
+
handleFocusIn = (event) => {
|
|
737
|
+
if (!this.presented || this.options.nativeFocusScrollPrevention === false) return;
|
|
738
|
+
const target = event.target;
|
|
739
|
+
const content = this.parts.content;
|
|
740
|
+
if (!(target instanceof HTMLElement) || !content?.contains(target)) return;
|
|
741
|
+
if (!["input", "select", "textarea"].includes(target.localName) && !target.isContentEditable) return;
|
|
742
|
+
requestAnimationFrame(() => target.scrollIntoView({ block: "nearest", inline: "nearest" }));
|
|
735
743
|
};
|
|
736
744
|
handleDocumentKeyDown = (event) => {
|
|
737
745
|
if (!this.presented) return;
|
|
@@ -948,6 +956,7 @@ var SheetController = class {
|
|
|
948
956
|
this.previousFocus = this.root.ownerDocument.activeElement;
|
|
949
957
|
this.presented = true;
|
|
950
958
|
this.activeDetent = clamp(options.detent ?? this.resolveInitialDetent(), 1, this.detentOffsetsPx.length - 1);
|
|
959
|
+
this.updateDetentState();
|
|
951
960
|
this.updateDomState(true);
|
|
952
961
|
this.lockPage();
|
|
953
962
|
this.applyInert();
|
|
@@ -971,6 +980,7 @@ var SheetController = class {
|
|
|
971
980
|
const previous = this.activeDetent;
|
|
972
981
|
this.presented = false;
|
|
973
982
|
this.activeDetent = 0;
|
|
983
|
+
this.updateDetentState();
|
|
974
984
|
this.setStatus("exiting");
|
|
975
985
|
dispatch(this.root, "cap-sheet-dismiss", this.getTravelEvent());
|
|
976
986
|
await this.animateTo(this.detentOffsetsPx[0] || this.hiddenOffsetPx, {
|
|
@@ -1009,6 +1019,7 @@ var SheetController = class {
|
|
|
1009
1019
|
}
|
|
1010
1020
|
const previous = this.activeDetent;
|
|
1011
1021
|
this.activeDetent = target;
|
|
1022
|
+
this.updateDetentState();
|
|
1012
1023
|
this.setStatus("settling");
|
|
1013
1024
|
await this.animateTo(this.detentOffsetsPx[target] || 0, {
|
|
1014
1025
|
...this.options.steppingAnimationSettings || {},
|
|
@@ -1280,6 +1291,7 @@ var SheetController = class {
|
|
|
1280
1291
|
view.addEventListener("pointermove", this.handlePointerMove, { passive: false });
|
|
1281
1292
|
view.addEventListener("pointerup", this.handlePointerUp);
|
|
1282
1293
|
view.addEventListener("pointercancel", this.handlePointerUp);
|
|
1294
|
+
view.addEventListener("focusin", this.handleFocusIn);
|
|
1283
1295
|
view.addEventListener("wheel", this.handleWheel, { passive: false });
|
|
1284
1296
|
this.viewListenersElement = view;
|
|
1285
1297
|
}
|
|
@@ -1291,6 +1303,7 @@ var SheetController = class {
|
|
|
1291
1303
|
view.removeEventListener("pointermove", this.handlePointerMove);
|
|
1292
1304
|
view.removeEventListener("pointerup", this.handlePointerUp);
|
|
1293
1305
|
view.removeEventListener("pointercancel", this.handlePointerUp);
|
|
1306
|
+
view.removeEventListener("focusin", this.handleFocusIn);
|
|
1294
1307
|
view.removeEventListener("wheel", this.handleWheel);
|
|
1295
1308
|
this.viewListenersElement = null;
|
|
1296
1309
|
}
|
|
@@ -1323,6 +1336,7 @@ var SheetController = class {
|
|
|
1323
1336
|
content.setAttribute("tabindex", content.getAttribute("tabindex") || "-1");
|
|
1324
1337
|
}
|
|
1325
1338
|
this.root.toggleAttribute("presented", presented);
|
|
1339
|
+
this.updateDetentState();
|
|
1326
1340
|
}
|
|
1327
1341
|
linkAccessibleNames() {
|
|
1328
1342
|
if (!this.parts.content) return;
|
|
@@ -1371,24 +1385,60 @@ var SheetController = class {
|
|
|
1371
1385
|
}
|
|
1372
1386
|
lockPage() {
|
|
1373
1387
|
if (this.lockedScroll) return;
|
|
1374
|
-
const
|
|
1375
|
-
|
|
1376
|
-
|
|
1388
|
+
const doc = this.root.ownerDocument;
|
|
1389
|
+
const documentElement = doc.documentElement;
|
|
1390
|
+
const body = doc.body;
|
|
1391
|
+
const depth = documentLockDepth.get(doc) ?? 0;
|
|
1392
|
+
if (depth === 0) {
|
|
1393
|
+
documentLockSnapshot.set(doc, {
|
|
1394
|
+
htmlOverflow: documentElement.style.overflow,
|
|
1395
|
+
htmlTouchAction: documentElement.style.touchAction,
|
|
1396
|
+
bodyOverflow: body.style.overflow,
|
|
1397
|
+
bodyTouchAction: body.style.touchAction
|
|
1398
|
+
});
|
|
1399
|
+
}
|
|
1400
|
+
documentElement.style.overflow = "hidden";
|
|
1401
|
+
documentElement.style.touchAction = "none";
|
|
1377
1402
|
body.dataset.capSheetScrollLocked = "true";
|
|
1378
1403
|
body.style.overflow = "hidden";
|
|
1379
1404
|
body.style.touchAction = "none";
|
|
1405
|
+
documentLockDepth.set(doc, depth + 1);
|
|
1380
1406
|
this.lockedScroll = true;
|
|
1381
1407
|
}
|
|
1382
1408
|
unlockPage() {
|
|
1383
1409
|
if (!this.lockedScroll) return;
|
|
1384
|
-
const
|
|
1410
|
+
const doc = this.root.ownerDocument;
|
|
1411
|
+
const documentElement = doc.documentElement;
|
|
1412
|
+
const body = doc.body;
|
|
1413
|
+
const depth = Math.max((documentLockDepth.get(doc) ?? 1) - 1, 0);
|
|
1414
|
+
if (depth > 0) {
|
|
1415
|
+
documentLockDepth.set(doc, depth);
|
|
1416
|
+
this.lockedScroll = false;
|
|
1417
|
+
return;
|
|
1418
|
+
}
|
|
1419
|
+
const snapshot = documentLockSnapshot.get(doc);
|
|
1385
1420
|
delete body.dataset.capSheetScrollLocked;
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1421
|
+
documentElement.style.overflow = snapshot?.htmlOverflow ?? "";
|
|
1422
|
+
documentElement.style.touchAction = snapshot?.htmlTouchAction ?? "";
|
|
1423
|
+
body.style.overflow = snapshot?.bodyOverflow ?? "";
|
|
1424
|
+
body.style.touchAction = snapshot?.bodyTouchAction ?? "";
|
|
1425
|
+
documentLockDepth.delete(doc);
|
|
1426
|
+
documentLockSnapshot.delete(doc);
|
|
1390
1427
|
this.lockedScroll = false;
|
|
1391
1428
|
}
|
|
1429
|
+
setKeyboardOffset(value) {
|
|
1430
|
+
const view = this.parts.view;
|
|
1431
|
+
if (!view) return;
|
|
1432
|
+
if (view.style.getPropertyValue("--cap-sheet-keyboard-offset") !== value) {
|
|
1433
|
+
view.style.setProperty("--cap-sheet-keyboard-offset", value);
|
|
1434
|
+
}
|
|
1435
|
+
if (!this.presented) return;
|
|
1436
|
+
requestAnimationFrame(() => {
|
|
1437
|
+
if (!this.presented) return;
|
|
1438
|
+
this.remeasure();
|
|
1439
|
+
this.applyOffset(this.detentOffsetsPx[this.activeDetent] || 0, this.status);
|
|
1440
|
+
});
|
|
1441
|
+
}
|
|
1392
1442
|
applyInert() {
|
|
1393
1443
|
if (this.options.inertOutside === false || !this.parts.view) return;
|
|
1394
1444
|
const body = this.root.ownerDocument.body;
|
|
@@ -1467,6 +1517,12 @@ var SheetController = class {
|
|
|
1467
1517
|
const detail = { activeDetent, previousActiveDetent };
|
|
1468
1518
|
dispatch(this.root, "cap-sheet-active-detent-change", detail);
|
|
1469
1519
|
}
|
|
1520
|
+
updateDetentState() {
|
|
1521
|
+
const activeDetent = String(this.activeDetent);
|
|
1522
|
+
this.root.dataset.activeDetent = activeDetent;
|
|
1523
|
+
if (this.parts.view) this.parts.view.dataset.activeDetent = activeDetent;
|
|
1524
|
+
if (this.parts.content) this.parts.content.dataset.activeDetent = activeDetent;
|
|
1525
|
+
}
|
|
1470
1526
|
registerStack() {
|
|
1471
1527
|
const nextStack = this.options.stack || this.root.closest("cap-sheet-stack")?.id || null;
|
|
1472
1528
|
if (this.stackId === nextStack) return;
|