@samline/drawer 2.0.0 → 2.0.2
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/README.md +1 -2
- package/dist/browser/{components-client-BC8MrVsa.mjs → components-client-CZSt5H60.mjs} +45 -15
- package/dist/{svelte/components-client-BHUFVfXB.js → browser/components-client-DXeaMmfk.js} +45 -15
- package/dist/browser/index.cjs +71 -16
- package/dist/browser/index.js +71 -16
- package/dist/browser/index.mjs +71 -16
- package/dist/{svelte/components-client-BC8MrVsa.mjs → components-client-CZSt5H60.mjs} +45 -15
- package/dist/{browser/components-client-BHUFVfXB.js → components-client-DXeaMmfk.js} +45 -15
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +71 -16
- package/dist/index.mjs +71 -16
- package/dist/react/index.js +77 -23
- package/dist/react/index.mjs +77 -23
- package/dist/{components-client-BC8MrVsa.mjs → svelte/components-client-CZSt5H60.mjs} +45 -15
- package/dist/{vue/components-client-BHUFVfXB.js → svelte/components-client-DXeaMmfk.js} +45 -15
- package/dist/svelte/index.js +71 -16
- package/dist/svelte/index.mjs +71 -16
- package/dist/{components-client-BHUFVfXB.js → vue/components-client-DXeaMmfk.js} +45 -15
- package/dist/vue/{components-client-rq_o2zwK.mjs → components-client-DZfql3-W.mjs} +45 -15
- package/dist/vue/index.d.mts +12 -0
- package/dist/vue/index.d.ts +12 -0
- package/dist/vue/index.js +81 -16
- package/dist/vue/index.mjs +81 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1311,6 +1311,30 @@ function getNextHandleState({ isDragging, preventCycle, shouldCancelInteraction,
|
|
|
1311
1311
|
};
|
|
1312
1312
|
}
|
|
1313
1313
|
|
|
1314
|
+
function isElementLike(target) {
|
|
1315
|
+
const element = target;
|
|
1316
|
+
return Boolean(element && typeof element.getAttribute === 'function' && typeof element.hasAttribute === 'function' && typeof element.closest === 'function');
|
|
1317
|
+
}
|
|
1318
|
+
function getDragTargetMetadata(target) {
|
|
1319
|
+
var _ref;
|
|
1320
|
+
const targetElement = isElementLike(target) ? target : null;
|
|
1321
|
+
const ancestors = [];
|
|
1322
|
+
let element = targetElement;
|
|
1323
|
+
while(element){
|
|
1324
|
+
ancestors.push({
|
|
1325
|
+
scrollHeight: element.scrollHeight,
|
|
1326
|
+
clientHeight: element.clientHeight,
|
|
1327
|
+
scrollTop: element.scrollTop,
|
|
1328
|
+
role: element.getAttribute('role')
|
|
1329
|
+
});
|
|
1330
|
+
element = element.parentElement;
|
|
1331
|
+
}
|
|
1332
|
+
return {
|
|
1333
|
+
targetTagName: (_ref = targetElement == null ? void 0 : targetElement.tagName) != null ? _ref : '',
|
|
1334
|
+
hasNoDragAttribute: (targetElement == null ? void 0 : targetElement.hasAttribute('data-drawer-no-drag')) || Boolean(targetElement == null ? void 0 : targetElement.closest('[data-drawer-no-drag]')),
|
|
1335
|
+
ancestors
|
|
1336
|
+
};
|
|
1337
|
+
}
|
|
1314
1338
|
function getDragPermission({ targetTagName, hasNoDragAttribute, direction, timeSinceOpenMs, swipeAmount, hasHighlightedText, timeSinceLastPreventedMs, scrollLockTimeout, isDraggingInDirection, ancestors }) {
|
|
1315
1339
|
if (targetTagName === 'SELECT' || hasNoDragAttribute) {
|
|
1316
1340
|
return {
|
|
@@ -1473,6 +1497,24 @@ function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRe
|
|
|
1473
1497
|
noBodyStyles,
|
|
1474
1498
|
autoFocus
|
|
1475
1499
|
});
|
|
1500
|
+
React__default.useEffect(()=>{
|
|
1501
|
+
var _drawerRef_current;
|
|
1502
|
+
if (!isOpen || !modal || autoFocus || typeof document === 'undefined') {
|
|
1503
|
+
return;
|
|
1504
|
+
}
|
|
1505
|
+
const activeElement = document.activeElement;
|
|
1506
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
1507
|
+
return;
|
|
1508
|
+
}
|
|
1509
|
+
if (((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.contains(activeElement)) || activeElement.closest('[data-drawer]')) {
|
|
1510
|
+
return;
|
|
1511
|
+
}
|
|
1512
|
+
activeElement.blur();
|
|
1513
|
+
}, [
|
|
1514
|
+
autoFocus,
|
|
1515
|
+
isOpen,
|
|
1516
|
+
modal
|
|
1517
|
+
]);
|
|
1476
1518
|
function getScale() {
|
|
1477
1519
|
return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
|
|
1478
1520
|
}
|
|
@@ -1496,24 +1538,12 @@ function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRe
|
|
|
1496
1538
|
}
|
|
1497
1539
|
function shouldDrag(el, isDraggingInDirection) {
|
|
1498
1540
|
var _window_getSelection;
|
|
1499
|
-
let element = el;
|
|
1500
1541
|
const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
|
|
1501
1542
|
const date = new Date();
|
|
1502
|
-
const ancestors =
|
|
1503
|
-
// Keep climbing up the DOM tree as long as there's a parent
|
|
1504
|
-
while(element){
|
|
1505
|
-
ancestors.push({
|
|
1506
|
-
scrollHeight: element.scrollHeight,
|
|
1507
|
-
clientHeight: element.clientHeight,
|
|
1508
|
-
scrollTop: element.scrollTop,
|
|
1509
|
-
role: element.getAttribute('role')
|
|
1510
|
-
});
|
|
1511
|
-
// Move up to the parent element
|
|
1512
|
-
element = element.parentNode;
|
|
1513
|
-
}
|
|
1543
|
+
const { targetTagName, hasNoDragAttribute, ancestors } = getDragTargetMetadata(el);
|
|
1514
1544
|
const result = getDragPermission({
|
|
1515
|
-
targetTagName
|
|
1516
|
-
hasNoDragAttribute
|
|
1545
|
+
targetTagName,
|
|
1546
|
+
hasNoDragAttribute,
|
|
1517
1547
|
direction,
|
|
1518
1548
|
timeSinceOpenMs: openTime.current ? date.getTime() - openTime.current.getTime() : null,
|
|
1519
1549
|
swipeAmount,
|
|
@@ -1331,6 +1331,30 @@ function getNextHandleState({ isDragging, preventCycle, shouldCancelInteraction,
|
|
|
1331
1331
|
};
|
|
1332
1332
|
}
|
|
1333
1333
|
|
|
1334
|
+
function isElementLike(target) {
|
|
1335
|
+
const element = target;
|
|
1336
|
+
return Boolean(element && typeof element.getAttribute === 'function' && typeof element.hasAttribute === 'function' && typeof element.closest === 'function');
|
|
1337
|
+
}
|
|
1338
|
+
function getDragTargetMetadata(target) {
|
|
1339
|
+
var _ref;
|
|
1340
|
+
const targetElement = isElementLike(target) ? target : null;
|
|
1341
|
+
const ancestors = [];
|
|
1342
|
+
let element = targetElement;
|
|
1343
|
+
while(element){
|
|
1344
|
+
ancestors.push({
|
|
1345
|
+
scrollHeight: element.scrollHeight,
|
|
1346
|
+
clientHeight: element.clientHeight,
|
|
1347
|
+
scrollTop: element.scrollTop,
|
|
1348
|
+
role: element.getAttribute('role')
|
|
1349
|
+
});
|
|
1350
|
+
element = element.parentElement;
|
|
1351
|
+
}
|
|
1352
|
+
return {
|
|
1353
|
+
targetTagName: (_ref = targetElement == null ? void 0 : targetElement.tagName) != null ? _ref : '',
|
|
1354
|
+
hasNoDragAttribute: (targetElement == null ? void 0 : targetElement.hasAttribute('data-drawer-no-drag')) || Boolean(targetElement == null ? void 0 : targetElement.closest('[data-drawer-no-drag]')),
|
|
1355
|
+
ancestors
|
|
1356
|
+
};
|
|
1357
|
+
}
|
|
1334
1358
|
function getDragPermission({ targetTagName, hasNoDragAttribute, direction, timeSinceOpenMs, swipeAmount, hasHighlightedText, timeSinceLastPreventedMs, scrollLockTimeout, isDraggingInDirection, ancestors }) {
|
|
1335
1359
|
if (targetTagName === 'SELECT' || hasNoDragAttribute) {
|
|
1336
1360
|
return {
|
|
@@ -1493,6 +1517,24 @@ function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRe
|
|
|
1493
1517
|
noBodyStyles,
|
|
1494
1518
|
autoFocus
|
|
1495
1519
|
});
|
|
1520
|
+
React__namespace.default.useEffect(()=>{
|
|
1521
|
+
var _drawerRef_current;
|
|
1522
|
+
if (!isOpen || !modal || autoFocus || typeof document === 'undefined') {
|
|
1523
|
+
return;
|
|
1524
|
+
}
|
|
1525
|
+
const activeElement = document.activeElement;
|
|
1526
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
1527
|
+
return;
|
|
1528
|
+
}
|
|
1529
|
+
if (((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.contains(activeElement)) || activeElement.closest('[data-drawer]')) {
|
|
1530
|
+
return;
|
|
1531
|
+
}
|
|
1532
|
+
activeElement.blur();
|
|
1533
|
+
}, [
|
|
1534
|
+
autoFocus,
|
|
1535
|
+
isOpen,
|
|
1536
|
+
modal
|
|
1537
|
+
]);
|
|
1496
1538
|
function getScale() {
|
|
1497
1539
|
return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
|
|
1498
1540
|
}
|
|
@@ -1516,24 +1558,12 @@ function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRe
|
|
|
1516
1558
|
}
|
|
1517
1559
|
function shouldDrag(el, isDraggingInDirection) {
|
|
1518
1560
|
var _window_getSelection;
|
|
1519
|
-
let element = el;
|
|
1520
1561
|
const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
|
|
1521
1562
|
const date = new Date();
|
|
1522
|
-
const ancestors =
|
|
1523
|
-
// Keep climbing up the DOM tree as long as there's a parent
|
|
1524
|
-
while(element){
|
|
1525
|
-
ancestors.push({
|
|
1526
|
-
scrollHeight: element.scrollHeight,
|
|
1527
|
-
clientHeight: element.clientHeight,
|
|
1528
|
-
scrollTop: element.scrollTop,
|
|
1529
|
-
role: element.getAttribute('role')
|
|
1530
|
-
});
|
|
1531
|
-
// Move up to the parent element
|
|
1532
|
-
element = element.parentNode;
|
|
1533
|
-
}
|
|
1563
|
+
const { targetTagName, hasNoDragAttribute, ancestors } = getDragTargetMetadata(el);
|
|
1534
1564
|
const result = getDragPermission({
|
|
1535
|
-
targetTagName
|
|
1536
|
-
hasNoDragAttribute
|
|
1565
|
+
targetTagName,
|
|
1566
|
+
hasNoDragAttribute,
|
|
1537
1567
|
direction,
|
|
1538
1568
|
timeSinceOpenMs: openTime.current ? date.getTime() - openTime.current.getTime() : null,
|
|
1539
1569
|
swipeAmount,
|
package/dist/browser/index.cjs
CHANGED
|
@@ -27869,6 +27869,31 @@ function getNextHandleState({
|
|
|
27869
27869
|
}
|
|
27870
27870
|
|
|
27871
27871
|
// src/runtime/drag-policy.ts
|
|
27872
|
+
function isElementLike(target) {
|
|
27873
|
+
const element = target;
|
|
27874
|
+
return Boolean(
|
|
27875
|
+
element && typeof element.getAttribute === "function" && typeof element.hasAttribute === "function" && typeof element.closest === "function"
|
|
27876
|
+
);
|
|
27877
|
+
}
|
|
27878
|
+
function getDragTargetMetadata(target) {
|
|
27879
|
+
const targetElement = isElementLike(target) ? target : null;
|
|
27880
|
+
const ancestors = [];
|
|
27881
|
+
let element = targetElement;
|
|
27882
|
+
while (element) {
|
|
27883
|
+
ancestors.push({
|
|
27884
|
+
scrollHeight: element.scrollHeight,
|
|
27885
|
+
clientHeight: element.clientHeight,
|
|
27886
|
+
scrollTop: element.scrollTop,
|
|
27887
|
+
role: element.getAttribute("role")
|
|
27888
|
+
});
|
|
27889
|
+
element = element.parentElement;
|
|
27890
|
+
}
|
|
27891
|
+
return {
|
|
27892
|
+
targetTagName: targetElement?.tagName ?? "",
|
|
27893
|
+
hasNoDragAttribute: targetElement?.hasAttribute("data-drawer-no-drag") || Boolean(targetElement?.closest("[data-drawer-no-drag]")),
|
|
27894
|
+
ancestors
|
|
27895
|
+
};
|
|
27896
|
+
}
|
|
27872
27897
|
function getDragPermission({
|
|
27873
27898
|
targetTagName,
|
|
27874
27899
|
hasNoDragAttribute,
|
|
@@ -28049,6 +28074,19 @@ function Root2({
|
|
|
28049
28074
|
noBodyStyles,
|
|
28050
28075
|
autoFocus
|
|
28051
28076
|
});
|
|
28077
|
+
import_react9.default.useEffect(() => {
|
|
28078
|
+
if (!isOpen || !modal || autoFocus || typeof document === "undefined") {
|
|
28079
|
+
return;
|
|
28080
|
+
}
|
|
28081
|
+
const activeElement = document.activeElement;
|
|
28082
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
28083
|
+
return;
|
|
28084
|
+
}
|
|
28085
|
+
if (drawerRef.current?.contains(activeElement) || activeElement.closest("[data-drawer]")) {
|
|
28086
|
+
return;
|
|
28087
|
+
}
|
|
28088
|
+
activeElement.blur();
|
|
28089
|
+
}, [autoFocus, isOpen, modal]);
|
|
28052
28090
|
function getScale() {
|
|
28053
28091
|
return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
|
|
28054
28092
|
}
|
|
@@ -28066,22 +28104,12 @@ function Root2({
|
|
|
28066
28104
|
pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;
|
|
28067
28105
|
}
|
|
28068
28106
|
function shouldDrag(el, isDraggingInDirection) {
|
|
28069
|
-
let element = el;
|
|
28070
28107
|
const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
|
|
28071
28108
|
const date = /* @__PURE__ */ new Date();
|
|
28072
|
-
const ancestors =
|
|
28073
|
-
while (element) {
|
|
28074
|
-
ancestors.push({
|
|
28075
|
-
scrollHeight: element.scrollHeight,
|
|
28076
|
-
clientHeight: element.clientHeight,
|
|
28077
|
-
scrollTop: element.scrollTop,
|
|
28078
|
-
role: element.getAttribute("role")
|
|
28079
|
-
});
|
|
28080
|
-
element = element.parentNode;
|
|
28081
|
-
}
|
|
28109
|
+
const { targetTagName, hasNoDragAttribute, ancestors } = getDragTargetMetadata(el);
|
|
28082
28110
|
const result = getDragPermission({
|
|
28083
|
-
targetTagName
|
|
28084
|
-
hasNoDragAttribute
|
|
28111
|
+
targetTagName,
|
|
28112
|
+
hasNoDragAttribute,
|
|
28085
28113
|
direction,
|
|
28086
28114
|
timeSinceOpenMs: openTime.current ? date.getTime() - openTime.current.getTime() : null,
|
|
28087
28115
|
swipeAmount,
|
|
@@ -28710,6 +28738,17 @@ var Drawer = {
|
|
|
28710
28738
|
};
|
|
28711
28739
|
|
|
28712
28740
|
// src/vanilla/render.tsx
|
|
28741
|
+
var VISUALLY_HIDDEN_STYLE = {
|
|
28742
|
+
position: "absolute",
|
|
28743
|
+
width: "1px",
|
|
28744
|
+
height: "1px",
|
|
28745
|
+
padding: 0,
|
|
28746
|
+
margin: "-1px",
|
|
28747
|
+
overflow: "hidden",
|
|
28748
|
+
clip: "rect(0, 0, 0, 0)",
|
|
28749
|
+
whiteSpace: "nowrap",
|
|
28750
|
+
border: 0
|
|
28751
|
+
};
|
|
28713
28752
|
function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, internalOnReleaseChange) {
|
|
28714
28753
|
const { id: _id, parentId: _parentId, onDragChange, onReleaseChange, ...drawerOptions } = options;
|
|
28715
28754
|
const baseProps = {
|
|
@@ -28738,7 +28777,7 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
|
|
|
28738
28777
|
fadeFromIndex: void 0
|
|
28739
28778
|
};
|
|
28740
28779
|
}
|
|
28741
|
-
function VanillaNode({ value }) {
|
|
28780
|
+
function VanillaNode({ value, dataAttribute }) {
|
|
28742
28781
|
const ref = import_react10.default.useRef(null);
|
|
28743
28782
|
import_react10.default.useEffect(() => {
|
|
28744
28783
|
const element = ref.current;
|
|
@@ -28761,7 +28800,7 @@ function VanillaNode({ value }) {
|
|
|
28761
28800
|
if (value == null) {
|
|
28762
28801
|
return null;
|
|
28763
28802
|
}
|
|
28764
|
-
return /* @__PURE__ */ import_react10.default.createElement("div", { "
|
|
28803
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
|
|
28765
28804
|
}
|
|
28766
28805
|
function VanillaDrawerRenderer({
|
|
28767
28806
|
options,
|
|
@@ -28776,8 +28815,13 @@ function VanillaDrawerRenderer({
|
|
|
28776
28815
|
triggerText,
|
|
28777
28816
|
showHandle,
|
|
28778
28817
|
handleClassName,
|
|
28818
|
+
ariaLabel,
|
|
28819
|
+
ariaLabelledBy,
|
|
28820
|
+
ariaDescribedBy,
|
|
28779
28821
|
title,
|
|
28822
|
+
titleVisuallyHidden,
|
|
28780
28823
|
description,
|
|
28824
|
+
descriptionVisuallyHidden,
|
|
28781
28825
|
content,
|
|
28782
28826
|
overlayClassName,
|
|
28783
28827
|
contentClassName,
|
|
@@ -28785,7 +28829,18 @@ function VanillaDrawerRenderer({
|
|
|
28785
28829
|
} = options;
|
|
28786
28830
|
const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
|
|
28787
28831
|
const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
|
|
28788
|
-
|
|
28832
|
+
const shouldRenderVanillaContent = title != null || description != null || content != null;
|
|
28833
|
+
return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
|
|
28834
|
+
Drawer.Content,
|
|
28835
|
+
{
|
|
28836
|
+
className: contentClassName,
|
|
28837
|
+
"aria-label": title == null ? ariaLabel : void 0,
|
|
28838
|
+
"aria-labelledby": title == null ? ariaLabelledBy : void 0,
|
|
28839
|
+
"aria-describedby": description == null ? ariaDescribedBy : void 0
|
|
28840
|
+
},
|
|
28841
|
+
shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
|
|
28842
|
+
shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
|
|
28843
|
+
)));
|
|
28789
28844
|
}
|
|
28790
28845
|
|
|
28791
28846
|
// src/vanilla/host.tsx
|
package/dist/browser/index.js
CHANGED
|
@@ -27869,6 +27869,31 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
27869
27869
|
}
|
|
27870
27870
|
|
|
27871
27871
|
// src/runtime/drag-policy.ts
|
|
27872
|
+
function isElementLike(target) {
|
|
27873
|
+
const element = target;
|
|
27874
|
+
return Boolean(
|
|
27875
|
+
element && typeof element.getAttribute === "function" && typeof element.hasAttribute === "function" && typeof element.closest === "function"
|
|
27876
|
+
);
|
|
27877
|
+
}
|
|
27878
|
+
function getDragTargetMetadata(target) {
|
|
27879
|
+
const targetElement = isElementLike(target) ? target : null;
|
|
27880
|
+
const ancestors = [];
|
|
27881
|
+
let element = targetElement;
|
|
27882
|
+
while (element) {
|
|
27883
|
+
ancestors.push({
|
|
27884
|
+
scrollHeight: element.scrollHeight,
|
|
27885
|
+
clientHeight: element.clientHeight,
|
|
27886
|
+
scrollTop: element.scrollTop,
|
|
27887
|
+
role: element.getAttribute("role")
|
|
27888
|
+
});
|
|
27889
|
+
element = element.parentElement;
|
|
27890
|
+
}
|
|
27891
|
+
return {
|
|
27892
|
+
targetTagName: targetElement?.tagName ?? "",
|
|
27893
|
+
hasNoDragAttribute: targetElement?.hasAttribute("data-drawer-no-drag") || Boolean(targetElement?.closest("[data-drawer-no-drag]")),
|
|
27894
|
+
ancestors
|
|
27895
|
+
};
|
|
27896
|
+
}
|
|
27872
27897
|
function getDragPermission({
|
|
27873
27898
|
targetTagName,
|
|
27874
27899
|
hasNoDragAttribute,
|
|
@@ -28049,6 +28074,19 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28049
28074
|
noBodyStyles,
|
|
28050
28075
|
autoFocus
|
|
28051
28076
|
});
|
|
28077
|
+
import_react9.default.useEffect(() => {
|
|
28078
|
+
if (!isOpen || !modal || autoFocus || typeof document === "undefined") {
|
|
28079
|
+
return;
|
|
28080
|
+
}
|
|
28081
|
+
const activeElement = document.activeElement;
|
|
28082
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
28083
|
+
return;
|
|
28084
|
+
}
|
|
28085
|
+
if (drawerRef.current?.contains(activeElement) || activeElement.closest("[data-drawer]")) {
|
|
28086
|
+
return;
|
|
28087
|
+
}
|
|
28088
|
+
activeElement.blur();
|
|
28089
|
+
}, [autoFocus, isOpen, modal]);
|
|
28052
28090
|
function getScale() {
|
|
28053
28091
|
return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
|
|
28054
28092
|
}
|
|
@@ -28066,22 +28104,12 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28066
28104
|
pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;
|
|
28067
28105
|
}
|
|
28068
28106
|
function shouldDrag(el, isDraggingInDirection) {
|
|
28069
|
-
let element = el;
|
|
28070
28107
|
const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
|
|
28071
28108
|
const date = /* @__PURE__ */ new Date();
|
|
28072
|
-
const ancestors =
|
|
28073
|
-
while (element) {
|
|
28074
|
-
ancestors.push({
|
|
28075
|
-
scrollHeight: element.scrollHeight,
|
|
28076
|
-
clientHeight: element.clientHeight,
|
|
28077
|
-
scrollTop: element.scrollTop,
|
|
28078
|
-
role: element.getAttribute("role")
|
|
28079
|
-
});
|
|
28080
|
-
element = element.parentNode;
|
|
28081
|
-
}
|
|
28109
|
+
const { targetTagName, hasNoDragAttribute, ancestors } = getDragTargetMetadata(el);
|
|
28082
28110
|
const result = getDragPermission({
|
|
28083
|
-
targetTagName
|
|
28084
|
-
hasNoDragAttribute
|
|
28111
|
+
targetTagName,
|
|
28112
|
+
hasNoDragAttribute,
|
|
28085
28113
|
direction,
|
|
28086
28114
|
timeSinceOpenMs: openTime.current ? date.getTime() - openTime.current.getTime() : null,
|
|
28087
28115
|
swipeAmount,
|
|
@@ -28710,6 +28738,17 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28710
28738
|
};
|
|
28711
28739
|
|
|
28712
28740
|
// src/vanilla/render.tsx
|
|
28741
|
+
var VISUALLY_HIDDEN_STYLE = {
|
|
28742
|
+
position: "absolute",
|
|
28743
|
+
width: "1px",
|
|
28744
|
+
height: "1px",
|
|
28745
|
+
padding: 0,
|
|
28746
|
+
margin: "-1px",
|
|
28747
|
+
overflow: "hidden",
|
|
28748
|
+
clip: "rect(0, 0, 0, 0)",
|
|
28749
|
+
whiteSpace: "nowrap",
|
|
28750
|
+
border: 0
|
|
28751
|
+
};
|
|
28713
28752
|
function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, internalOnReleaseChange) {
|
|
28714
28753
|
const { id: _id, parentId: _parentId, onDragChange, onReleaseChange, ...drawerOptions } = options;
|
|
28715
28754
|
const baseProps = {
|
|
@@ -28738,7 +28777,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28738
28777
|
fadeFromIndex: void 0
|
|
28739
28778
|
};
|
|
28740
28779
|
}
|
|
28741
|
-
function VanillaNode({ value }) {
|
|
28780
|
+
function VanillaNode({ value, dataAttribute }) {
|
|
28742
28781
|
const ref = import_react10.default.useRef(null);
|
|
28743
28782
|
import_react10.default.useEffect(() => {
|
|
28744
28783
|
const element = ref.current;
|
|
@@ -28761,7 +28800,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28761
28800
|
if (value == null) {
|
|
28762
28801
|
return null;
|
|
28763
28802
|
}
|
|
28764
|
-
return /* @__PURE__ */ import_react10.default.createElement("div", { "
|
|
28803
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
|
|
28765
28804
|
}
|
|
28766
28805
|
function VanillaDrawerRenderer({
|
|
28767
28806
|
options,
|
|
@@ -28776,8 +28815,13 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28776
28815
|
triggerText,
|
|
28777
28816
|
showHandle,
|
|
28778
28817
|
handleClassName,
|
|
28818
|
+
ariaLabel,
|
|
28819
|
+
ariaLabelledBy,
|
|
28820
|
+
ariaDescribedBy,
|
|
28779
28821
|
title,
|
|
28822
|
+
titleVisuallyHidden,
|
|
28780
28823
|
description,
|
|
28824
|
+
descriptionVisuallyHidden,
|
|
28781
28825
|
content,
|
|
28782
28826
|
overlayClassName,
|
|
28783
28827
|
contentClassName,
|
|
@@ -28785,7 +28829,18 @@ For more information, see https://radix-ui.com/primitives/docs/components/${titl
|
|
|
28785
28829
|
} = options;
|
|
28786
28830
|
const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
|
|
28787
28831
|
const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
|
|
28788
|
-
|
|
28832
|
+
const shouldRenderVanillaContent = title != null || description != null || content != null;
|
|
28833
|
+
return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
|
|
28834
|
+
Drawer.Content,
|
|
28835
|
+
{
|
|
28836
|
+
className: contentClassName,
|
|
28837
|
+
"aria-label": title == null ? ariaLabel : void 0,
|
|
28838
|
+
"aria-labelledby": title == null ? ariaLabelledBy : void 0,
|
|
28839
|
+
"aria-describedby": description == null ? ariaDescribedBy : void 0
|
|
28840
|
+
},
|
|
28841
|
+
shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
|
|
28842
|
+
shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
|
|
28843
|
+
)));
|
|
28789
28844
|
}
|
|
28790
28845
|
|
|
28791
28846
|
// src/vanilla/host.tsx
|
package/dist/browser/index.mjs
CHANGED
|
@@ -27843,6 +27843,31 @@ function getNextHandleState({
|
|
|
27843
27843
|
}
|
|
27844
27844
|
|
|
27845
27845
|
// src/runtime/drag-policy.ts
|
|
27846
|
+
function isElementLike(target) {
|
|
27847
|
+
const element = target;
|
|
27848
|
+
return Boolean(
|
|
27849
|
+
element && typeof element.getAttribute === "function" && typeof element.hasAttribute === "function" && typeof element.closest === "function"
|
|
27850
|
+
);
|
|
27851
|
+
}
|
|
27852
|
+
function getDragTargetMetadata(target) {
|
|
27853
|
+
const targetElement = isElementLike(target) ? target : null;
|
|
27854
|
+
const ancestors = [];
|
|
27855
|
+
let element = targetElement;
|
|
27856
|
+
while (element) {
|
|
27857
|
+
ancestors.push({
|
|
27858
|
+
scrollHeight: element.scrollHeight,
|
|
27859
|
+
clientHeight: element.clientHeight,
|
|
27860
|
+
scrollTop: element.scrollTop,
|
|
27861
|
+
role: element.getAttribute("role")
|
|
27862
|
+
});
|
|
27863
|
+
element = element.parentElement;
|
|
27864
|
+
}
|
|
27865
|
+
return {
|
|
27866
|
+
targetTagName: targetElement?.tagName ?? "",
|
|
27867
|
+
hasNoDragAttribute: targetElement?.hasAttribute("data-drawer-no-drag") || Boolean(targetElement?.closest("[data-drawer-no-drag]")),
|
|
27868
|
+
ancestors
|
|
27869
|
+
};
|
|
27870
|
+
}
|
|
27846
27871
|
function getDragPermission({
|
|
27847
27872
|
targetTagName,
|
|
27848
27873
|
hasNoDragAttribute,
|
|
@@ -28023,6 +28048,19 @@ function Root2({
|
|
|
28023
28048
|
noBodyStyles,
|
|
28024
28049
|
autoFocus
|
|
28025
28050
|
});
|
|
28051
|
+
import_react9.default.useEffect(() => {
|
|
28052
|
+
if (!isOpen || !modal || autoFocus || typeof document === "undefined") {
|
|
28053
|
+
return;
|
|
28054
|
+
}
|
|
28055
|
+
const activeElement = document.activeElement;
|
|
28056
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
28057
|
+
return;
|
|
28058
|
+
}
|
|
28059
|
+
if (drawerRef.current?.contains(activeElement) || activeElement.closest("[data-drawer]")) {
|
|
28060
|
+
return;
|
|
28061
|
+
}
|
|
28062
|
+
activeElement.blur();
|
|
28063
|
+
}, [autoFocus, isOpen, modal]);
|
|
28026
28064
|
function getScale() {
|
|
28027
28065
|
return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
|
|
28028
28066
|
}
|
|
@@ -28040,22 +28078,12 @@ function Root2({
|
|
|
28040
28078
|
pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;
|
|
28041
28079
|
}
|
|
28042
28080
|
function shouldDrag(el, isDraggingInDirection) {
|
|
28043
|
-
let element = el;
|
|
28044
28081
|
const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
|
|
28045
28082
|
const date = /* @__PURE__ */ new Date();
|
|
28046
|
-
const ancestors =
|
|
28047
|
-
while (element) {
|
|
28048
|
-
ancestors.push({
|
|
28049
|
-
scrollHeight: element.scrollHeight,
|
|
28050
|
-
clientHeight: element.clientHeight,
|
|
28051
|
-
scrollTop: element.scrollTop,
|
|
28052
|
-
role: element.getAttribute("role")
|
|
28053
|
-
});
|
|
28054
|
-
element = element.parentNode;
|
|
28055
|
-
}
|
|
28083
|
+
const { targetTagName, hasNoDragAttribute, ancestors } = getDragTargetMetadata(el);
|
|
28056
28084
|
const result = getDragPermission({
|
|
28057
|
-
targetTagName
|
|
28058
|
-
hasNoDragAttribute
|
|
28085
|
+
targetTagName,
|
|
28086
|
+
hasNoDragAttribute,
|
|
28059
28087
|
direction,
|
|
28060
28088
|
timeSinceOpenMs: openTime.current ? date.getTime() - openTime.current.getTime() : null,
|
|
28061
28089
|
swipeAmount,
|
|
@@ -28684,6 +28712,17 @@ var Drawer = {
|
|
|
28684
28712
|
};
|
|
28685
28713
|
|
|
28686
28714
|
// src/vanilla/render.tsx
|
|
28715
|
+
var VISUALLY_HIDDEN_STYLE = {
|
|
28716
|
+
position: "absolute",
|
|
28717
|
+
width: "1px",
|
|
28718
|
+
height: "1px",
|
|
28719
|
+
padding: 0,
|
|
28720
|
+
margin: "-1px",
|
|
28721
|
+
overflow: "hidden",
|
|
28722
|
+
clip: "rect(0, 0, 0, 0)",
|
|
28723
|
+
whiteSpace: "nowrap",
|
|
28724
|
+
border: 0
|
|
28725
|
+
};
|
|
28687
28726
|
function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, internalOnReleaseChange) {
|
|
28688
28727
|
const { id: _id, parentId: _parentId, onDragChange, onReleaseChange, ...drawerOptions } = options;
|
|
28689
28728
|
const baseProps = {
|
|
@@ -28712,7 +28751,7 @@ function toReactDrawerProps(options, open, onOpenChange, internalOnDragChange, i
|
|
|
28712
28751
|
fadeFromIndex: void 0
|
|
28713
28752
|
};
|
|
28714
28753
|
}
|
|
28715
|
-
function VanillaNode({ value }) {
|
|
28754
|
+
function VanillaNode({ value, dataAttribute }) {
|
|
28716
28755
|
const ref = import_react10.default.useRef(null);
|
|
28717
28756
|
import_react10.default.useEffect(() => {
|
|
28718
28757
|
const element = ref.current;
|
|
@@ -28735,7 +28774,7 @@ function VanillaNode({ value }) {
|
|
|
28735
28774
|
if (value == null) {
|
|
28736
28775
|
return null;
|
|
28737
28776
|
}
|
|
28738
|
-
return /* @__PURE__ */ import_react10.default.createElement("div", { "
|
|
28777
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", { ...dataAttribute ? { [dataAttribute]: "" } : {}, ref });
|
|
28739
28778
|
}
|
|
28740
28779
|
function VanillaDrawerRenderer({
|
|
28741
28780
|
options,
|
|
@@ -28750,8 +28789,13 @@ function VanillaDrawerRenderer({
|
|
|
28750
28789
|
triggerText,
|
|
28751
28790
|
showHandle,
|
|
28752
28791
|
handleClassName,
|
|
28792
|
+
ariaLabel,
|
|
28793
|
+
ariaLabelledBy,
|
|
28794
|
+
ariaDescribedBy,
|
|
28753
28795
|
title,
|
|
28796
|
+
titleVisuallyHidden,
|
|
28754
28797
|
description,
|
|
28798
|
+
descriptionVisuallyHidden,
|
|
28755
28799
|
content,
|
|
28756
28800
|
overlayClassName,
|
|
28757
28801
|
contentClassName,
|
|
@@ -28759,7 +28803,18 @@ function VanillaDrawerRenderer({
|
|
|
28759
28803
|
} = options;
|
|
28760
28804
|
const rootProps = toReactDrawerProps(drawerOptions, open, onOpenChange, onDragChange, onReleaseChange);
|
|
28761
28805
|
const shouldRenderHandle = Boolean(drawerOptions.handleOnly || showHandle);
|
|
28762
|
-
|
|
28806
|
+
const shouldRenderVanillaContent = title != null || description != null || content != null;
|
|
28807
|
+
return /* @__PURE__ */ import_react10.default.createElement(Drawer.Root, { ...rootProps }, triggerText ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Trigger, { asChild: true }, /* @__PURE__ */ import_react10.default.createElement("button", { type: "button", "data-drawer-vanilla-trigger": "" }, triggerText)) : null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Portal, null, /* @__PURE__ */ import_react10.default.createElement(Drawer.Overlay, { className: overlayClassName }), /* @__PURE__ */ import_react10.default.createElement(
|
|
28808
|
+
Drawer.Content,
|
|
28809
|
+
{
|
|
28810
|
+
className: contentClassName,
|
|
28811
|
+
"aria-label": title == null ? ariaLabel : void 0,
|
|
28812
|
+
"aria-labelledby": title == null ? ariaLabelledBy : void 0,
|
|
28813
|
+
"aria-describedby": description == null ? ariaDescribedBy : void 0
|
|
28814
|
+
},
|
|
28815
|
+
shouldRenderHandle ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Handle, { className: handleClassName }) : null,
|
|
28816
|
+
shouldRenderVanillaContent ? /* @__PURE__ */ import_react10.default.createElement("div", { "data-drawer-vanilla-node": "" }, title != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Title, { style: titleVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: title })) : null, description != null ? /* @__PURE__ */ import_react10.default.createElement(Drawer.Description, { style: descriptionVisuallyHidden ? VISUALLY_HIDDEN_STYLE : void 0 }, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: description })) : null, /* @__PURE__ */ import_react10.default.createElement(VanillaNode, { value: content, dataAttribute: "data-drawer-vanilla-body" })) : null
|
|
28817
|
+
)));
|
|
28763
28818
|
}
|
|
28764
28819
|
|
|
28765
28820
|
// src/vanilla/host.tsx
|