solid-dismiss
Advanced tools
Comparing version 1.1.1 to 1.2.0
@@ -1447,2 +1447,3 @@ import { isServer, insert, template, delegateEvents, addEventListener, effect, setAttribute, classList, createComponent, mergeProps } from 'solid-js/web'; | ||
show = false, | ||
onToggleScrollbar, | ||
onOpen | ||
@@ -1716,2 +1717,3 @@ } = props; | ||
mountEl?.removeChild(containerEl); | ||
runToggleScrollbar(false); | ||
globalState.closedBySetOpen = false; | ||
@@ -1732,11 +1734,22 @@ | ||
const runRemoveScrollbar = open => { | ||
const runToggleScrollbar = open => { | ||
if (onToggleScrollbar) { | ||
if (open) { | ||
if (dismissStack.length > 1) return; | ||
onToggleScrollbar.onRemove(); | ||
} else { | ||
if (dismissStack.length) return; | ||
onToggleScrollbar.onRestore(); | ||
} | ||
return; | ||
} | ||
if (!removeScrollbar) return; | ||
if (dismissStack.length > 1) return; | ||
const el = document.scrollingElement; | ||
if (open) { | ||
const el = document.scrollingElement; | ||
el.style.overflow = "hidden"; | ||
} else { | ||
const el = document.scrollingElement; | ||
el.style.overflow = ""; | ||
@@ -1926,3 +1939,2 @@ } | ||
}); | ||
runRemoveScrollbar(open); | ||
onOpen && onOpen(open, { | ||
@@ -1932,2 +1944,3 @@ uniqueId: state.uniqueId, | ||
}); | ||
runToggleScrollbar(open); | ||
activateLastFocusSentinel(state); | ||
@@ -1941,3 +1954,2 @@ } else { | ||
removeGlobalEvents(); | ||
runRemoveScrollbar(open); | ||
onOpen && onOpen(open, { | ||
@@ -1947,2 +1959,6 @@ uniqueId: state.uniqueId, | ||
}); | ||
if (!props.animation) { | ||
runToggleScrollbar(open); | ||
} | ||
} | ||
@@ -1949,0 +1965,0 @@ }, { |
@@ -24,3 +24,3 @@ import "./browserInfo"; | ||
// stopComponentEventPropagation = false, | ||
show = false, onOpen, } = props; | ||
show = false, onToggleScrollbar, onOpen, } = props; | ||
const state = { | ||
@@ -257,2 +257,3 @@ mount, | ||
mountEl?.removeChild(containerEl); | ||
runToggleScrollbar(false); | ||
globalState.closedBySetOpen = false; | ||
@@ -270,3 +271,16 @@ if (state.menuBtnEls && (overlay || overlayElement)) { | ||
} | ||
const runRemoveScrollbar = (open) => { | ||
const runToggleScrollbar = (open) => { | ||
if (onToggleScrollbar) { | ||
if (open) { | ||
if (dismissStack.length > 1) | ||
return; | ||
onToggleScrollbar.onRemove(); | ||
} | ||
else { | ||
if (dismissStack.length) | ||
return; | ||
onToggleScrollbar.onRestore(); | ||
} | ||
return; | ||
} | ||
if (!removeScrollbar) | ||
@@ -276,8 +290,7 @@ return; | ||
return; | ||
const el = document.scrollingElement; | ||
if (open) { | ||
const el = document.scrollingElement; | ||
el.style.overflow = "hidden"; | ||
} | ||
else { | ||
const el = document.scrollingElement; | ||
el.style.overflow = ""; | ||
@@ -455,4 +468,4 @@ } | ||
}); | ||
runRemoveScrollbar(open); | ||
onOpen && onOpen(open, { uniqueId: state.uniqueId, dismissStack }); | ||
runToggleScrollbar(open); | ||
activateLastFocusSentinel(state); | ||
@@ -467,4 +480,6 @@ } | ||
removeGlobalEvents(); | ||
runRemoveScrollbar(open); | ||
onOpen && onOpen(open, { uniqueId: state.uniqueId, dismissStack }); | ||
if (!props.animation) { | ||
runToggleScrollbar(open); | ||
} | ||
} | ||
@@ -471,0 +486,0 @@ }, { defer: initDefer })); |
@@ -130,2 +130,12 @@ import "./browserInfo"; | ||
/** | ||
* | ||
* Customize the removal of the scrollbar to prevent visual page "jank". | ||
* | ||
* @defaultValue `false` | ||
*/ | ||
onToggleScrollbar?: { | ||
onRemove: () => void; | ||
onRestore: () => void; | ||
}; | ||
/** | ||
* Prevent page interaction when clicking outside to close menuPopup | ||
@@ -132,0 +142,0 @@ * |
{ | ||
"name": "solid-dismiss", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"homepage": "https://aquaductape.github.io/solid-dismiss/", | ||
@@ -5,0 +5,0 @@ "description": "Handles \"click outside\" behavior for popup menu. Closing is triggered by click/focus outside of popup element or pressing \"Escape\" key.", |
@@ -202,2 +202,12 @@ <p> | ||
/** | ||
* | ||
* Customize the removal of the scrollbar to prevent visual page "jank". | ||
* | ||
* @defaultValue `false` | ||
*/ | ||
onToggleScrollbar?: { | ||
onRemove: () => void; | ||
onRestore: () => void; | ||
}; | ||
/** | ||
* Prevent page interaction when clicking outside to close menuPopup | ||
@@ -204,0 +214,0 @@ * |
Sorry, the diff of this file is not supported yet
296091
3991
354