@jobber/components 4.45.4 → 4.45.6-fix-data-l.0

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.
@@ -22,7 +22,6 @@ var useFocusTrap = require('@jobber/hooks/useFocusTrap');
22
22
  var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
23
23
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
24
24
  var ReactDOM = require('react-dom');
25
- var foundation = require('@jobber/design/foundation');
26
25
  var Checkbox = require('../Checkbox-eac63b7f.js');
27
26
  var reactRouterDom = require('react-router-dom');
28
27
  var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
@@ -394,9 +393,14 @@ function DataListActionsMenu({ visible = false, position, onRequestClose, childr
394
393
  useRefocusOnActivator.useRefocusOnActivator(visible);
395
394
  const focusTrapRef = useFocusTrap.useFocusTrap(visible);
396
395
  useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
397
- return ReactDOM.createPortal(React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef },
396
+ return ReactDOM.createPortal(React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef, onClick: handleClick },
398
397
  React__default["default"].createElement(framerMotion.motion.div, { role: "menu", ref: setRef, variants: variants$1, initial: "hidden", animate: "visible", exit: "hidden", transition: { duration: TRANSITION_DELAY_IN_SECONDS }, className: styles$6.menu, style: getPositionCssVars(), onClick: onRequestClose }, children),
399
398
  React__default["default"].createElement("button", { className: styles$6.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))), document.body);
399
+ function handleClick(event) {
400
+ // Prevent menu from firing the parent's onClick event when it is nested
401
+ // within a clickable list item
402
+ event.stopPropagation();
403
+ }
400
404
  function getPositionCssVars() {
401
405
  const { posX, posY } = getPosition();
402
406
  return {
@@ -410,7 +414,7 @@ function DataListActionsMenu({ visible = false, position, onRequestClose, childr
410
414
  const { x, y } = position;
411
415
  const xIsOffScreen = x + width > window.innerWidth;
412
416
  const yIsOffScreen = y + height > window.innerHeight;
413
- const xOffSet = x + width - window.innerWidth + foundation.tokens["space-base"];
417
+ const xOffSet = x + width - window.innerWidth + design.tokens["space-base"];
414
418
  const yOffSet = y + height - window.innerHeight;
415
419
  const newPosX = Math.floor(xIsOffScreen ? x - xOffSet : x);
416
420
  const newPosY = Math.floor(yIsOffScreen ? y - yOffSet : y);
@@ -428,6 +432,9 @@ function DataListItemActionsOverflow({ actions, }) {
428
432
  React__default["default"].createElement(Button.Button, { icon: "more", ariaLabel: "More actions", type: "secondary", variation: "subtle", onClick: handleMoreClick })),
429
433
  React__default["default"].createElement(DataListActionsMenu, { visible: showMenu, position: menuPosition, onRequestClose: handleClose }, actions)));
430
434
  function handleMoreClick(event) {
435
+ // Prevent firing the parent's onClick event when it is nested
436
+ // within a clickable list item
437
+ event.stopPropagation();
431
438
  setShowMenu(true);
432
439
  const rect = event.currentTarget.getBoundingClientRect();
433
440
  const posX = rect.x;
@@ -520,7 +527,15 @@ function DataListItemClickableInternal({ onClick, url, to, children, }) {
520
527
  return (React__default["default"].createElement("a", { className: styles$e.listItemClickable, href: href, onClick: handleClick }, children));
521
528
  }
522
529
  if (onClick) {
523
- return (React__default["default"].createElement("button", { className: styles$e.listItemClickable, onClick: handleClick }, children));
530
+ return (
531
+ // A button can be nested within the list item. To prevent a button inside
532
+ // button error, we need to manually declare a div to be a button
533
+ React__default["default"].createElement("div", { role: "button", tabIndex: 0, className: styles$e.listItemClickable, onClick: handleClick, onKeyDown: e => {
534
+ if (e.key === "Enter" || e.key === " ") {
535
+ e.preventDefault();
536
+ handleClick();
537
+ }
538
+ } }, children));
524
539
  }
525
540
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
526
541
  function handleClick() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.45.4",
3
+ "version": "4.45.6-fix-data-l.0+ee94d52f",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@jobber/design": "^0.45.0",
23
- "@jobber/formatters": "*",
23
+ "@jobber/formatters": "^0.2.2",
24
24
  "@jobber/hooks": "^2.4.0",
25
25
  "@popperjs/core": "^2.0.6",
26
26
  "@std-proposal/temporal": "0.0.1",
@@ -84,5 +84,5 @@
84
84
  "> 1%",
85
85
  "IE 10"
86
86
  ],
87
- "gitHead": "58229de1e3ea0c47e84fe6d4168f81e4f388a362"
87
+ "gitHead": "ee94d52f9a0384925470c39abfd044c9dbc0eac3"
88
88
  }