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