@deque/cauldron-react 6.7.0-canary.2c00ffa4 → 6.7.0-canary.2d78ed57
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/lib/cauldron.css +6 -0
- package/lib/components/ClickOutsideListener/index.d.ts +3 -19
- package/lib/index.js +50 -69
- package/package.json +1 -1
package/lib/cauldron.css
CHANGED
|
@@ -4,23 +4,7 @@ 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
|
|
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;
|
|
7
|
+
target?: T | React.RefObject<T> | React.MutableRefObject<T>;
|
|
26
8
|
}
|
|
9
|
+
declare const _default: React.ForwardRefExoticComponent<ClickOutsideListenerProps<HTMLElement> & React.RefAttributes<HTMLElement>>;
|
|
10
|
+
export default _default;
|
package/lib/index.js
CHANGED
|
@@ -791,74 +791,55 @@ 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
|
-
|
|
805
|
-
if ((target && !target.contains(eventTarget)) ||
|
|
806
|
-
(nodeRef && !nodeRef.contains(eventTarget))) {
|
|
794
|
+
function ClickOutsideListener(_a, ref) {
|
|
795
|
+
var children = _a.children, _b = _a.mouseEvent, mouseEvent = _b === void 0 ? 'click' : _b, _c = _a.touchEvent, touchEvent = _c === void 0 ? 'touchend' : _c, target = _a.target, _d = _a.onClickOutside, onClickOutside = _d === void 0 ? function () { return null; } : _d;
|
|
796
|
+
var childElementRef = React.useRef();
|
|
797
|
+
var handleEvent = function (event) {
|
|
798
|
+
if (event.defaultPrevented) {
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
var eventTarget = event.target;
|
|
802
|
+
if (target && (target instanceof HTMLElement || 'current' in target)) {
|
|
803
|
+
var elementTarget = target instanceof HTMLElement ? target : target.current;
|
|
804
|
+
if (!(elementTarget === null || elementTarget === void 0 ? void 0 : elementTarget.contains(eventTarget))) {
|
|
807
805
|
onClickOutside(event);
|
|
808
806
|
}
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
};
|
|
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();
|
|
807
|
+
// If a target is passed in via a prop, we defer to utilizing that
|
|
808
|
+
// target instead of a child element target
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
if (childElementRef.current &&
|
|
812
|
+
!childElementRef.current.contains(eventTarget)) {
|
|
813
|
+
onClickOutside(event);
|
|
841
814
|
}
|
|
842
815
|
};
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
this
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
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'
|
|
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);
|
|
859
824
|
};
|
|
860
|
-
|
|
861
|
-
|
|
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 () {
|
|
831
|
+
typeof mouseEvent === 'string' &&
|
|
832
|
+
document.removeEventListener(mouseEvent, handleEvent);
|
|
833
|
+
typeof touchEvent === 'string' &&
|
|
834
|
+
document.removeEventListener(touchEvent, handleEvent);
|
|
835
|
+
};
|
|
836
|
+
}, [mouseEvent, touchEvent]);
|
|
837
|
+
return !children
|
|
838
|
+
? null
|
|
839
|
+
: React__default["default"].cloneElement(children, { ref: resolveRef });
|
|
840
|
+
}
|
|
841
|
+
ClickOutsideListener.displayName = 'ClickOutsideListener';
|
|
842
|
+
var ClickOutsideListener$1 = React__default["default"].forwardRef(ClickOutsideListener);
|
|
862
843
|
|
|
863
844
|
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];
|
|
864
845
|
var OptionsMenuList = /** @class */ (function (_super) {
|
|
@@ -964,7 +945,7 @@ var OptionsMenuList = /** @class */ (function (_super) {
|
|
|
964
945
|
// Key event is being handled in componentDidMount
|
|
965
946
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
966
947
|
/* eslint-disable jsx-a11y/role-supports-aria-props */
|
|
967
|
-
return (React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside, mouseEvent: clickOutsideEventActive, touchEvent: clickOutsideEventActive },
|
|
948
|
+
return (React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside, mouseEvent: clickOutsideEventActive, touchEvent: clickOutsideEventActive },
|
|
968
949
|
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) {
|
|
969
950
|
_this.menuRef = el;
|
|
970
951
|
if (menuRef) {
|
|
@@ -1312,7 +1293,7 @@ var SideBar = /** @class */ (function (_super) {
|
|
|
1312
1293
|
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"]);
|
|
1313
1294
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
|
1314
1295
|
return (React__default["default"].createElement(React.Fragment, null,
|
|
1315
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1296
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside },
|
|
1316
1297
|
React__default["default"].createElement("nav", tslib.__assign({}, navProps),
|
|
1317
1298
|
React__default["default"].createElement("ul", tslib.__assign({ className: classNames__default["default"]('SideBar', className, animateClass) }, other, { ref: this.navList, onKeyDown: this.onKeyDown }), children))),
|
|
1318
1299
|
React__default["default"].createElement(Scrim, { show: !wide && show })));
|
|
@@ -1451,7 +1432,7 @@ var Dialog = /** @class */ (function (_super) {
|
|
|
1451
1432
|
escapeDeactivates: false,
|
|
1452
1433
|
fallbackFocus: '.Dialog__heading'
|
|
1453
1434
|
} },
|
|
1454
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
|
|
1435
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: this.handleClickOutside },
|
|
1455
1436
|
React__default["default"].createElement("div", tslib.__assign({ role: "dialog", className: classNames__default["default"]('Dialog', className, {
|
|
1456
1437
|
'Dialog--show': show
|
|
1457
1438
|
}), ref: function (el) {
|
|
@@ -3328,7 +3309,7 @@ var TwoColumnPanel = React.forwardRef(function (_a, ref) {
|
|
|
3328
3309
|
allowOutsideClick: true,
|
|
3329
3310
|
fallbackFocus: columnLeftRef.current
|
|
3330
3311
|
}, containerElements: [columnLeftRef.current] }),
|
|
3331
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside, target: columnLeftRef.current }),
|
|
3312
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside, target: columnLeftRef.current }),
|
|
3332
3313
|
isCollapsed ? null : skipLink,
|
|
3333
3314
|
showPanel ? ColumnLeftComponent : null,
|
|
3334
3315
|
ColumnRightComponent)));
|
|
@@ -4145,7 +4126,7 @@ var Popover = React.forwardRef(function (_a, ref) {
|
|
|
4145
4126
|
allowOutsideClick: true,
|
|
4146
4127
|
fallbackFocus: '.Popover__borderLeft'
|
|
4147
4128
|
} },
|
|
4148
|
-
React__default["default"].createElement(ClickOutsideListener, { onClickOutside: handleClickOutside },
|
|
4129
|
+
React__default["default"].createElement(ClickOutsideListener$1, { onClickOutside: handleClickOutside },
|
|
4149
4130
|
React__default["default"].createElement("div", tslib.__assign({ id: id, className: classNames__default["default"]('Popover', "Popover--".concat(placement), className, {
|
|
4150
4131
|
'Popover--hidden': !show,
|
|
4151
4132
|
'Popover--prompt': variant === 'prompt'
|
|
@@ -4300,7 +4281,7 @@ exports.BreadcrumbItem = BreadcrumbItem;
|
|
|
4300
4281
|
exports.BreadcrumbLink = BreadcrumbLink;
|
|
4301
4282
|
exports.Button = Button;
|
|
4302
4283
|
exports.Checkbox = Checkbox;
|
|
4303
|
-
exports.ClickOutsideListener = ClickOutsideListener;
|
|
4284
|
+
exports.ClickOutsideListener = ClickOutsideListener$1;
|
|
4304
4285
|
exports.Code = Code;
|
|
4305
4286
|
exports.ColumnGroupHeader = ColumnGroupHeader;
|
|
4306
4287
|
exports.ColumnHeader = ColumnHeader;
|
package/package.json
CHANGED