@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 CHANGED
@@ -39,6 +39,12 @@
39
39
  }
40
40
  }
41
41
 
42
+ a.Button--primary,
43
+ a.Button--secondary,
44
+ a.Button--thin {
45
+ font-weight: var(--font-weight-medium);
46
+ }
47
+
42
48
  a.Button--primary,
43
49
  a.Button--secondary {
44
50
  text-decoration: none;
@@ -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
- 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))) {
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
- _this.attachEventListeners = function () {
811
- var _a = _this.props, mouseEvent = _a.mouseEvent, touchEvent = _a.touchEvent;
812
- typeof mouseEvent === 'string' &&
813
- document.addEventListener(mouseEvent, _this.handleEvent);
814
- typeof touchEvent === 'string' &&
815
- document.addEventListener(touchEvent, _this.handleEvent);
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
- 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'
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
- return ClickOutsideListener;
861
- }(React__default["default"].Component));
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deque/cauldron-react",
3
- "version": "6.7.0-canary.2c00ffa4",
3
+ "version": "6.7.0-canary.2d78ed57",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Fully accessible react components library for Deque Cauldron",
6
6
  "homepage": "https://cauldron.dequelabs.com/",