@deque/cauldron-react 6.7.0-canary.8f770f32 → 6.7.0-canary.8ff3885e
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.
|
@@ -4,7 +4,23 @@ export interface ClickOutsideListenerProps<T extends HTMLElement = HTMLElement>
|
|
|
4
4
|
onClickOutside: (e: MouseEvent | TouchEvent) => void;
|
|
5
5
|
mouseEvent?: 'mousedown' | 'click' | 'mouseup' | false;
|
|
6
6
|
touchEvent?: 'touchstart' | 'touchend' | false;
|
|
7
|
-
target?: T
|
|
7
|
+
target?: T;
|
|
8
|
+
}
|
|
9
|
+
export default class ClickOutsideListener extends React.Component<ClickOutsideListenerProps> {
|
|
10
|
+
static displayName: string;
|
|
11
|
+
static defaultProps: {
|
|
12
|
+
mouseEvent: string;
|
|
13
|
+
touchEvent: string;
|
|
14
|
+
};
|
|
15
|
+
private nodeRef;
|
|
16
|
+
handleEvent: (event: MouseEvent | TouchEvent) => void;
|
|
17
|
+
componentDidMount(): void;
|
|
18
|
+
componentDidUpdate(prevProps: ClickOutsideListenerProps): void;
|
|
19
|
+
componentWillUnmount(): void;
|
|
20
|
+
private attachEventListeners;
|
|
21
|
+
private removeEventListeners;
|
|
22
|
+
resolveRef: (node: HTMLElement) => void;
|
|
23
|
+
render(): React.FunctionComponentElement<{
|
|
24
|
+
ref: (node: HTMLElement) => void;
|
|
25
|
+
}> | null;
|
|
8
26
|
}
|
|
9
|
-
declare const _default: React.ForwardRefExoticComponent<ClickOutsideListenerProps<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
10
|
-
export default _default;
|
package/lib/index.js
CHANGED
|
@@ -791,55 +791,74 @@ var OptionsMenuWrapper = function (_a) {
|
|
|
791
791
|
return (React__default["default"].createElement("div", tslib.__assign({ className: classNames__default["default"]('OptionsMenu', menuAlignment(align), className) }, other)));
|
|
792
792
|
};
|
|
793
793
|
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
794
|
+
var ClickOutsideListener = /** @class */ (function (_super) {
|
|
795
|
+
tslib.__extends(ClickOutsideListener, _super);
|
|
796
|
+
function ClickOutsideListener() {
|
|
797
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
798
|
+
_this.handleEvent = function (event) {
|
|
799
|
+
var _a = _this, nodeRef = _a.nodeRef, props = _a.props;
|
|
800
|
+
var onClickOutside = props.onClickOutside, target = props.target;
|
|
801
|
+
if (event.defaultPrevented) {
|
|
802
|
+
return;
|
|
803
|
+
}
|
|
804
|
+
var eventTarget = event.target;
|
|
805
|
+
if ((target && !target.contains(eventTarget)) ||
|
|
806
|
+
(nodeRef && !nodeRef.contains(eventTarget))) {
|
|
805
807
|
onClickOutside(event);
|
|
806
808
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
}
|
|
811
|
-
if (childElementRef.current &&
|
|
812
|
-
!childElementRef.current.contains(eventTarget)) {
|
|
813
|
-
onClickOutside(event);
|
|
814
|
-
}
|
|
815
|
-
};
|
|
816
|
-
var resolveRef = function (node) {
|
|
817
|
-
childElementRef.current = node;
|
|
818
|
-
// Ref for this component should pass-through to the child node
|
|
819
|
-
setRef(ref, node);
|
|
820
|
-
// If child has its own ref, we want to update
|
|
821
|
-
// its ref with the newly cloned node
|
|
822
|
-
var childRef = children.ref;
|
|
823
|
-
setRef(childRef, node);
|
|
824
|
-
};
|
|
825
|
-
React.useEffect(function () {
|
|
826
|
-
typeof mouseEvent === 'string' &&
|
|
827
|
-
document.addEventListener(mouseEvent, handleEvent);
|
|
828
|
-
typeof touchEvent === 'string' &&
|
|
829
|
-
document.addEventListener(touchEvent, handleEvent);
|
|
830
|
-
return function () {
|
|
809
|
+
};
|
|
810
|
+
_this.attachEventListeners = function () {
|
|
811
|
+
var _a = _this.props, mouseEvent = _a.mouseEvent, touchEvent = _a.touchEvent;
|
|
831
812
|
typeof mouseEvent === 'string' &&
|
|
832
|
-
document.
|
|
813
|
+
document.addEventListener(mouseEvent, _this.handleEvent);
|
|
833
814
|
typeof touchEvent === 'string' &&
|
|
834
|
-
document.
|
|
815
|
+
document.addEventListener(touchEvent, _this.handleEvent);
|
|
835
816
|
};
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
817
|
+
_this.removeEventListeners = function (mouseEvent, touchEvent) {
|
|
818
|
+
typeof mouseEvent === 'string' &&
|
|
819
|
+
document.removeEventListener(mouseEvent, _this.handleEvent);
|
|
820
|
+
typeof touchEvent === 'string' &&
|
|
821
|
+
document.removeEventListener(touchEvent, _this.handleEvent);
|
|
822
|
+
};
|
|
823
|
+
_this.resolveRef = function (node) {
|
|
824
|
+
_this.nodeRef = node;
|
|
825
|
+
// If child has its own ref, we want to update
|
|
826
|
+
// its ref with the newly cloned node
|
|
827
|
+
var ref = _this.props.children.ref;
|
|
828
|
+
setRef(ref, node);
|
|
829
|
+
};
|
|
830
|
+
return _this;
|
|
831
|
+
}
|
|
832
|
+
ClickOutsideListener.prototype.componentDidMount = function () {
|
|
833
|
+
this.attachEventListeners();
|
|
834
|
+
};
|
|
835
|
+
ClickOutsideListener.prototype.componentDidUpdate = function (prevProps) {
|
|
836
|
+
var _a = this.props, mouseEvent = _a.mouseEvent, touchEvent = _a.touchEvent;
|
|
837
|
+
if (prevProps.mouseEvent !== mouseEvent ||
|
|
838
|
+
prevProps.touchEvent !== touchEvent) {
|
|
839
|
+
this.removeEventListeners(prevProps.mouseEvent, prevProps.touchEvent);
|
|
840
|
+
this.attachEventListeners();
|
|
841
|
+
}
|
|
842
|
+
};
|
|
843
|
+
ClickOutsideListener.prototype.componentWillUnmount = function () {
|
|
844
|
+
var _a = this.props, mouseEvent = _a.mouseEvent, touchEvent = _a.touchEvent;
|
|
845
|
+
this.removeEventListeners(mouseEvent, touchEvent);
|
|
846
|
+
};
|
|
847
|
+
ClickOutsideListener.prototype.render = function () {
|
|
848
|
+
var _a = this, props = _a.props, resolveRef = _a.resolveRef;
|
|
849
|
+
return !props.children
|
|
850
|
+
? null
|
|
851
|
+
: React__default["default"].cloneElement(props.children, {
|
|
852
|
+
ref: resolveRef
|
|
853
|
+
});
|
|
854
|
+
};
|
|
855
|
+
ClickOutsideListener.displayName = 'ClickOutsideListener';
|
|
856
|
+
ClickOutsideListener.defaultProps = {
|
|
857
|
+
mouseEvent: 'click',
|
|
858
|
+
touchEvent: 'touchend'
|
|
859
|
+
};
|
|
860
|
+
return ClickOutsideListener;
|
|
861
|
+
}(React__default["default"].Component));
|
|
843
862
|
|
|
844
863
|
var _a$2 = tslib.__read([38, 40, 9, 13, 32, 27], 6), up = _a$2[0], down$1 = _a$2[1], tab = _a$2[2], enter = _a$2[3], space = _a$2[4], esc = _a$2[5];
|
|
845
864
|
var OptionsMenuList = /** @class */ (function (_super) {
|
|
@@ -945,7 +964,7 @@ var OptionsMenuList = /** @class */ (function (_super) {
|
|
|
945
964
|
// Key event is being handled in componentDidMount
|
|
946
965
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
947
966
|
/* eslint-disable jsx-a11y/role-supports-aria-props */
|
|
948
|
-
return (React__default["default"].createElement(ClickOutsideListener
|
|
967
|
+
return (React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside, mouseEvent: clickOutsideEventActive, touchEvent: clickOutsideEventActive },
|
|
949
968
|
React__default["default"].createElement("ul", tslib.__assign({}, other, { className: classNames__default["default"]('OptionsMenu__list', className), "aria-expanded": show, role: "menu", onClick: handleClick, ref: function (el) {
|
|
950
969
|
_this.menuRef = el;
|
|
951
970
|
if (menuRef) {
|
|
@@ -1293,7 +1312,7 @@ var SideBar = /** @class */ (function (_super) {
|
|
|
1293
1312
|
var _b = this.props, children = _b.children, className = _b.className, show = _b.show; _b.onDismiss; var navProps = _b.navProps, other = tslib.__rest(_b, ["children", "className", "show", "onDismiss", "navProps"]);
|
|
1294
1313
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
1295
1314
|
return (React__default["default"].createElement(React.Fragment, null,
|
|
1296
|
-
React__default["default"].createElement(ClickOutsideListener
|
|
1315
|
+
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1297
1316
|
React__default["default"].createElement("nav", tslib.__assign({}, navProps),
|
|
1298
1317
|
React__default["default"].createElement("ul", tslib.__assign({ className: classNames__default["default"]('SideBar', className, animateClass) }, other, { ref: this.navList, onKeyDown: this.onKeyDown }), children))),
|
|
1299
1318
|
React__default["default"].createElement(Scrim, { show: !wide && show })));
|
|
@@ -1432,7 +1451,7 @@ var Dialog = /** @class */ (function (_super) {
|
|
|
1432
1451
|
escapeDeactivates: false,
|
|
1433
1452
|
fallbackFocus: '.Dialog__heading'
|
|
1434
1453
|
} },
|
|
1435
|
-
React__default["default"].createElement(ClickOutsideListener
|
|
1454
|
+
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1436
1455
|
React__default["default"].createElement("div", tslib.__assign({ role: "dialog", className: classNames__default["default"]('Dialog', className, {
|
|
1437
1456
|
'Dialog--show': show
|
|
1438
1457
|
}), ref: function (el) {
|
|
@@ -3309,7 +3328,7 @@ var TwoColumnPanel = React.forwardRef(function (_a, ref) {
|
|
|
3309
3328
|
allowOutsideClick: true,
|
|
3310
3329
|
fallbackFocus: columnLeftRef.current
|
|
3311
3330
|
}, containerElements: [columnLeftRef.current] }),
|
|
3312
|
-
React__default["default"].createElement(ClickOutsideListener
|
|
3331
|
+
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside, target: columnLeftRef.current }),
|
|
3313
3332
|
isCollapsed ? null : skipLink,
|
|
3314
3333
|
showPanel ? ColumnLeftComponent : null,
|
|
3315
3334
|
ColumnRightComponent)));
|
|
@@ -4126,7 +4145,7 @@ var Popover = React.forwardRef(function (_a, ref) {
|
|
|
4126
4145
|
allowOutsideClick: true,
|
|
4127
4146
|
fallbackFocus: '.Popover__borderLeft'
|
|
4128
4147
|
} },
|
|
4129
|
-
React__default["default"].createElement(ClickOutsideListener
|
|
4148
|
+
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside },
|
|
4130
4149
|
React__default["default"].createElement("div", tslib.__assign({ id: id, className: classNames__default["default"]('Popover', "Popover--".concat(placement), className, {
|
|
4131
4150
|
'Popover--hidden': !show,
|
|
4132
4151
|
'Popover--prompt': variant === 'prompt'
|
|
@@ -4281,7 +4300,7 @@ exports.BreadcrumbItem = BreadcrumbItem;
|
|
|
4281
4300
|
exports.BreadcrumbLink = BreadcrumbLink;
|
|
4282
4301
|
exports.Button = Button;
|
|
4283
4302
|
exports.Checkbox = Checkbox;
|
|
4284
|
-
exports.ClickOutsideListener = ClickOutsideListener
|
|
4303
|
+
exports.ClickOutsideListener = ClickOutsideListener;
|
|
4285
4304
|
exports.Code = Code;
|
|
4286
4305
|
exports.ColumnGroupHeader = ColumnGroupHeader;
|
|
4287
4306
|
exports.ColumnHeader = ColumnHeader;
|
package/package.json
CHANGED