New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@codastic/react-positioning-portal

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codastic/react-positioning-portal - npm Package Compare versions

Comparing version 0.3.2 to 0.4.0

5

CHANGELOG.md
### v0.4.0 / 2021-09-01 09:33:49
- Fix root scroll parent handling on window (i: Mario Volke, r: Korbinian Fritsch, c: [f994082](https://github.com/codastic/react-positioning-portal/commit/f994082))
- Fix handleClickOutside for nested Positioning Portals (i: Korbinian Fritsch, r: Mario Volke, c: [1fc41af](https://github.com/codastic/react-positioning-portal/commit/1fc41af))
### v0.3.2 / 2020-05-11 12:13:44

@@ -3,0 +8,0 @@

3

lib/components/PositioningPortal.d.ts

@@ -44,3 +44,3 @@ import * as React from 'react';

shouldRender: boolean;
scrollParents: HTMLElement[];
scrollParents: Array<HTMLElement | Window>;
strategy?: Strategy;

@@ -70,2 +70,3 @@ }

private onClose;
private markClickEvent;
private preRenderPortal;

@@ -72,0 +73,0 @@ private finalRenderPortal;

@@ -77,3 +77,3 @@ import { createElement, Fragment, cloneElement, createRef, Component, useState } from 'react';

if (!element || element.tagName === DEFAULT_SCROLL_PARENT) {
return __spreadArrays(scrollParents, [window.document.body]);
return __spreadArrays(scrollParents, [window]);
}

@@ -138,2 +138,3 @@ return getScrollParents(element.parentElement, isScrollParent(element) ? __spreadArrays(scrollParents, [element]) : scrollParents);

};
var EVENT_CONTEXT_KEY = 'PositioningPortal-context';
var PositioningPortal = /** @class */ (function (_super) {

@@ -178,2 +179,5 @@ __extends(PositioningPortal, _super);

}
if ((event[EVENT_CONTEXT_KEY] || []).includes(_this)) {
return;
}
var parentDom = findDOMNode(_this);

@@ -218,2 +222,7 @@ if (parentDom && parentDom.contains(event.target)) {

};
_this.markClickEvent = function (event) {
event.nativeEvent[EVENT_CONTEXT_KEY] = __spreadArrays((event.nativeEvent[EVENT_CONTEXT_KEY] || []), [
_this
]);
};
_this.preRenderPortal = function () {

@@ -315,3 +324,4 @@ return new Promise(function (resolve) {

ref: _this.portalRef,
style: __assign(__assign({}, portalStyle), ((portalElement && portalElement.props.style) || {}))
style: __assign(__assign({}, portalStyle), ((portalElement && portalElement.props.style) || {})),
onClick: _this.markClickEvent
}, renderProps(portalContent, {

@@ -318,0 +328,0 @@ close: _this.close,

@@ -44,3 +44,3 @@ import * as React from 'react';

shouldRender: boolean;
scrollParents: HTMLElement[];
scrollParents: Array<HTMLElement | Window>;
strategy?: Strategy;

@@ -70,2 +70,3 @@ }

private onClose;
private markClickEvent;
private preRenderPortal;

@@ -72,0 +73,0 @@ private finalRenderPortal;

@@ -81,3 +81,3 @@ 'use strict';

if (!element || element.tagName === DEFAULT_SCROLL_PARENT) {
return __spreadArrays(scrollParents, [window.document.body]);
return __spreadArrays(scrollParents, [window]);
}

@@ -142,2 +142,3 @@ return getScrollParents(element.parentElement, isScrollParent(element) ? __spreadArrays(scrollParents, [element]) : scrollParents);

};
var EVENT_CONTEXT_KEY = 'PositioningPortal-context';
var PositioningPortal = /** @class */ (function (_super) {

@@ -182,2 +183,5 @@ __extends(PositioningPortal, _super);

}
if ((event[EVENT_CONTEXT_KEY] || []).includes(_this)) {
return;
}
var parentDom = ReactDOM.findDOMNode(_this);

@@ -222,2 +226,7 @@ if (parentDom && parentDom.contains(event.target)) {

};
_this.markClickEvent = function (event) {
event.nativeEvent[EVENT_CONTEXT_KEY] = __spreadArrays((event.nativeEvent[EVENT_CONTEXT_KEY] || []), [
_this
]);
};
_this.preRenderPortal = function () {

@@ -319,3 +328,4 @@ return new Promise(function (resolve) {

ref: _this.portalRef,
style: __assign(__assign({}, portalStyle), ((portalElement && portalElement.props.style) || {}))
style: __assign(__assign({}, portalStyle), ((portalElement && portalElement.props.style) || {})),
onClick: _this.markClickEvent
}, renderProps(portalContent, {

@@ -322,0 +332,0 @@ close: _this.close,

@@ -1,2 +0,1 @@

export declare function getScrollParent(element: HTMLElement): HTMLElement;
export default function getScrollParents(element: HTMLElement, scrollParents?: HTMLElement[]): HTMLElement[];
export default function getScrollParents(element: HTMLElement, scrollParents?: Array<HTMLElement | Window>): Array<HTMLElement | Window>;

@@ -1,2 +0,1 @@

export declare function getScrollParent(element: HTMLElement): HTMLElement;
export default function getScrollParents(element: HTMLElement, scrollParents?: HTMLElement[]): HTMLElement[];
export default function getScrollParents(element: HTMLElement, scrollParents?: Array<HTMLElement | Window>): Array<HTMLElement | Window>;
{
"name": "@codastic/react-positioning-portal",
"version": "0.3.2",
"version": "0.4.0",
"description": "The positioning portal is a low level React component to build all kinds of absolutely positioned flyouts which are anchored to another element in the viewport. This can be used to create dropdowns, tooltips, context menus, etc.",

@@ -5,0 +5,0 @@ "scripts": {

@@ -12,18 +12,8 @@ const DEFAULT_SCROLL_PARENT = 'BODY';

export function getScrollParent(element: HTMLElement): HTMLElement {
if (!element || element.tagName === DEFAULT_SCROLL_PARENT) {
return window.document.body;
}
if (isScrollParent(element)) {
return element;
}
return getScrollParent(element.parentElement);
}
export default function getScrollParents(
element: HTMLElement,
scrollParents: HTMLElement[] = []
): HTMLElement[] {
scrollParents: Array<HTMLElement | Window> = []
): Array<HTMLElement | Window> {
if (!element || element.tagName === DEFAULT_SCROLL_PARENT) {
return [...scrollParents, window.document.body];
return [...scrollParents, window];
}

@@ -30,0 +20,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc