@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/react/index.mjs
CHANGED
|
@@ -528,6 +528,8 @@ var defaultAnimation = {
|
|
|
528
528
|
contentMove: true
|
|
529
529
|
};
|
|
530
530
|
var stackRegistry = /* @__PURE__ */ new Map();
|
|
531
|
+
var documentLockDepth = /* @__PURE__ */ new WeakMap();
|
|
532
|
+
var documentLockSnapshot = /* @__PURE__ */ new WeakMap();
|
|
531
533
|
function parseNumber(value) {
|
|
532
534
|
if (value === null) return void 0;
|
|
533
535
|
const parsed = Number.parseInt(value, 10);
|
|
@@ -685,8 +687,6 @@ var SheetController = class {
|
|
|
685
687
|
pointerTravel = null;
|
|
686
688
|
connected = false;
|
|
687
689
|
lockedScroll = false;
|
|
688
|
-
previousBodyOverflow = "";
|
|
689
|
-
previousBodyTouchAction = "";
|
|
690
690
|
inertedElements = /* @__PURE__ */ new Map();
|
|
691
691
|
previousFocus = null;
|
|
692
692
|
hasThemeDimmer = false;
|
|
@@ -699,12 +699,20 @@ var SheetController = class {
|
|
|
699
699
|
const visualViewport = this.root.ownerDocument.defaultView?.visualViewport;
|
|
700
700
|
if (!view) return;
|
|
701
701
|
if (!visualViewport || this.options.nativeFocusScrollPrevention === false) {
|
|
702
|
-
|
|
702
|
+
this.setKeyboardOffset("0em");
|
|
703
703
|
return;
|
|
704
704
|
}
|
|
705
705
|
const layoutHeight = this.root.ownerDocument.documentElement.clientHeight;
|
|
706
706
|
const keyboardOffset = Math.max(0, layoutHeight - visualViewport.height - visualViewport.offsetTop);
|
|
707
|
-
|
|
707
|
+
this.setKeyboardOffset(`${toEm(view, keyboardOffset)}em`);
|
|
708
|
+
};
|
|
709
|
+
handleFocusIn = (event) => {
|
|
710
|
+
if (!this.presented || this.options.nativeFocusScrollPrevention === false) return;
|
|
711
|
+
const target = event.target;
|
|
712
|
+
const content = this.parts.content;
|
|
713
|
+
if (!(target instanceof HTMLElement) || !content?.contains(target)) return;
|
|
714
|
+
if (!["input", "select", "textarea"].includes(target.localName) && !target.isContentEditable) return;
|
|
715
|
+
requestAnimationFrame(() => target.scrollIntoView({ block: "nearest", inline: "nearest" }));
|
|
708
716
|
};
|
|
709
717
|
handleDocumentKeyDown = (event) => {
|
|
710
718
|
if (!this.presented) return;
|
|
@@ -921,6 +929,7 @@ var SheetController = class {
|
|
|
921
929
|
this.previousFocus = this.root.ownerDocument.activeElement;
|
|
922
930
|
this.presented = true;
|
|
923
931
|
this.activeDetent = clamp(options.detent ?? this.resolveInitialDetent(), 1, this.detentOffsetsPx.length - 1);
|
|
932
|
+
this.updateDetentState();
|
|
924
933
|
this.updateDomState(true);
|
|
925
934
|
this.lockPage();
|
|
926
935
|
this.applyInert();
|
|
@@ -944,6 +953,7 @@ var SheetController = class {
|
|
|
944
953
|
const previous = this.activeDetent;
|
|
945
954
|
this.presented = false;
|
|
946
955
|
this.activeDetent = 0;
|
|
956
|
+
this.updateDetentState();
|
|
947
957
|
this.setStatus("exiting");
|
|
948
958
|
dispatch(this.root, "cap-sheet-dismiss", this.getTravelEvent());
|
|
949
959
|
await this.animateTo(this.detentOffsetsPx[0] || this.hiddenOffsetPx, {
|
|
@@ -982,6 +992,7 @@ var SheetController = class {
|
|
|
982
992
|
}
|
|
983
993
|
const previous = this.activeDetent;
|
|
984
994
|
this.activeDetent = target;
|
|
995
|
+
this.updateDetentState();
|
|
985
996
|
this.setStatus("settling");
|
|
986
997
|
await this.animateTo(this.detentOffsetsPx[target] || 0, {
|
|
987
998
|
...this.options.steppingAnimationSettings || {},
|
|
@@ -1253,6 +1264,7 @@ var SheetController = class {
|
|
|
1253
1264
|
view.addEventListener("pointermove", this.handlePointerMove, { passive: false });
|
|
1254
1265
|
view.addEventListener("pointerup", this.handlePointerUp);
|
|
1255
1266
|
view.addEventListener("pointercancel", this.handlePointerUp);
|
|
1267
|
+
view.addEventListener("focusin", this.handleFocusIn);
|
|
1256
1268
|
view.addEventListener("wheel", this.handleWheel, { passive: false });
|
|
1257
1269
|
this.viewListenersElement = view;
|
|
1258
1270
|
}
|
|
@@ -1264,6 +1276,7 @@ var SheetController = class {
|
|
|
1264
1276
|
view.removeEventListener("pointermove", this.handlePointerMove);
|
|
1265
1277
|
view.removeEventListener("pointerup", this.handlePointerUp);
|
|
1266
1278
|
view.removeEventListener("pointercancel", this.handlePointerUp);
|
|
1279
|
+
view.removeEventListener("focusin", this.handleFocusIn);
|
|
1267
1280
|
view.removeEventListener("wheel", this.handleWheel);
|
|
1268
1281
|
this.viewListenersElement = null;
|
|
1269
1282
|
}
|
|
@@ -1296,6 +1309,7 @@ var SheetController = class {
|
|
|
1296
1309
|
content.setAttribute("tabindex", content.getAttribute("tabindex") || "-1");
|
|
1297
1310
|
}
|
|
1298
1311
|
this.root.toggleAttribute("presented", presented);
|
|
1312
|
+
this.updateDetentState();
|
|
1299
1313
|
}
|
|
1300
1314
|
linkAccessibleNames() {
|
|
1301
1315
|
if (!this.parts.content) return;
|
|
@@ -1344,24 +1358,60 @@ var SheetController = class {
|
|
|
1344
1358
|
}
|
|
1345
1359
|
lockPage() {
|
|
1346
1360
|
if (this.lockedScroll) return;
|
|
1347
|
-
const
|
|
1348
|
-
|
|
1349
|
-
|
|
1361
|
+
const doc = this.root.ownerDocument;
|
|
1362
|
+
const documentElement = doc.documentElement;
|
|
1363
|
+
const body = doc.body;
|
|
1364
|
+
const depth = documentLockDepth.get(doc) ?? 0;
|
|
1365
|
+
if (depth === 0) {
|
|
1366
|
+
documentLockSnapshot.set(doc, {
|
|
1367
|
+
htmlOverflow: documentElement.style.overflow,
|
|
1368
|
+
htmlTouchAction: documentElement.style.touchAction,
|
|
1369
|
+
bodyOverflow: body.style.overflow,
|
|
1370
|
+
bodyTouchAction: body.style.touchAction
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
documentElement.style.overflow = "hidden";
|
|
1374
|
+
documentElement.style.touchAction = "none";
|
|
1350
1375
|
body.dataset.capSheetScrollLocked = "true";
|
|
1351
1376
|
body.style.overflow = "hidden";
|
|
1352
1377
|
body.style.touchAction = "none";
|
|
1378
|
+
documentLockDepth.set(doc, depth + 1);
|
|
1353
1379
|
this.lockedScroll = true;
|
|
1354
1380
|
}
|
|
1355
1381
|
unlockPage() {
|
|
1356
1382
|
if (!this.lockedScroll) return;
|
|
1357
|
-
const
|
|
1383
|
+
const doc = this.root.ownerDocument;
|
|
1384
|
+
const documentElement = doc.documentElement;
|
|
1385
|
+
const body = doc.body;
|
|
1386
|
+
const depth = Math.max((documentLockDepth.get(doc) ?? 1) - 1, 0);
|
|
1387
|
+
if (depth > 0) {
|
|
1388
|
+
documentLockDepth.set(doc, depth);
|
|
1389
|
+
this.lockedScroll = false;
|
|
1390
|
+
return;
|
|
1391
|
+
}
|
|
1392
|
+
const snapshot = documentLockSnapshot.get(doc);
|
|
1358
1393
|
delete body.dataset.capSheetScrollLocked;
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1394
|
+
documentElement.style.overflow = snapshot?.htmlOverflow ?? "";
|
|
1395
|
+
documentElement.style.touchAction = snapshot?.htmlTouchAction ?? "";
|
|
1396
|
+
body.style.overflow = snapshot?.bodyOverflow ?? "";
|
|
1397
|
+
body.style.touchAction = snapshot?.bodyTouchAction ?? "";
|
|
1398
|
+
documentLockDepth.delete(doc);
|
|
1399
|
+
documentLockSnapshot.delete(doc);
|
|
1363
1400
|
this.lockedScroll = false;
|
|
1364
1401
|
}
|
|
1402
|
+
setKeyboardOffset(value) {
|
|
1403
|
+
const view = this.parts.view;
|
|
1404
|
+
if (!view) return;
|
|
1405
|
+
if (view.style.getPropertyValue("--cap-sheet-keyboard-offset") !== value) {
|
|
1406
|
+
view.style.setProperty("--cap-sheet-keyboard-offset", value);
|
|
1407
|
+
}
|
|
1408
|
+
if (!this.presented) return;
|
|
1409
|
+
requestAnimationFrame(() => {
|
|
1410
|
+
if (!this.presented) return;
|
|
1411
|
+
this.remeasure();
|
|
1412
|
+
this.applyOffset(this.detentOffsetsPx[this.activeDetent] || 0, this.status);
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1365
1415
|
applyInert() {
|
|
1366
1416
|
if (this.options.inertOutside === false || !this.parts.view) return;
|
|
1367
1417
|
const body = this.root.ownerDocument.body;
|
|
@@ -1440,6 +1490,12 @@ var SheetController = class {
|
|
|
1440
1490
|
const detail = { activeDetent, previousActiveDetent };
|
|
1441
1491
|
dispatch(this.root, "cap-sheet-active-detent-change", detail);
|
|
1442
1492
|
}
|
|
1493
|
+
updateDetentState() {
|
|
1494
|
+
const activeDetent = String(this.activeDetent);
|
|
1495
|
+
this.root.dataset.activeDetent = activeDetent;
|
|
1496
|
+
if (this.parts.view) this.parts.view.dataset.activeDetent = activeDetent;
|
|
1497
|
+
if (this.parts.content) this.parts.content.dataset.activeDetent = activeDetent;
|
|
1498
|
+
}
|
|
1443
1499
|
registerStack() {
|
|
1444
1500
|
const nextStack = this.options.stack || this.root.closest("cap-sheet-stack")?.id || null;
|
|
1445
1501
|
if (this.stackId === nextStack) return;
|