@linzjs/lui 17.36.8 → 17.36.10

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/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [17.36.10](https://github.com/linz/lui/compare/v17.36.9...v17.36.10) (2023-03-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add common styles to helpers.scss ([#869](https://github.com/linz/lui/issues/869)) ([b29fcb5](https://github.com/linz/lui/commit/b29fcb5cd32400caf24ff9e020302280de692f2a))
7
+
8
+ ## [17.36.9](https://github.com/linz/lui/compare/v17.36.8...v17.36.9) (2023-03-02)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * add toolptip and external selected status in HeaderMenuItemV2 ([#868](https://github.com/linz/lui/issues/868)) ([66478b0](https://github.com/linz/lui/commit/66478b0f2b782ef771defd30355e73a7ca93abcf))
14
+
1
15
  ## [17.36.8](https://github.com/linz/lui/compare/v17.36.7...v17.36.8) (2023-03-01)
2
16
 
3
17
 
@@ -13,18 +13,18 @@ declare const LuiHeaderV2: ({ headingText, size, homeLink, transparent, children
13
13
  declare const LuiHeaderMenuItemV2: React.ForwardRefExoticComponent<ILuiHeaderMenuItem & {
14
14
  children?: ReactNode;
15
15
  iconColor?: string | undefined;
16
- clickOutsideOptions?: {
17
- ignoreClickOutside?: boolean | undefined;
18
- onClickOutside?: (() => void) | undefined;
19
- } | undefined;
20
- escapeOptions?: {
21
- ignoreEscape?: boolean | undefined;
22
- onEscape?: (() => void) | undefined;
23
- } | undefined;
24
16
  /**
25
- * used to overwrite internal selected status
17
+ * allow to control selected status externally,
18
+ * and expect to use onClickOutside and onEscape to handle selected changes
26
19
  */
27
20
  isSelected?: boolean | undefined;
21
+ onClickOutside?: (() => void) | undefined;
22
+ onEscape?: (() => void) | undefined;
23
+ tooltip?: {
24
+ text: string;
25
+ anchorOrigin?: "left" | "right" | undefined;
26
+ theme?: "dark" | "light" | undefined;
27
+ } | undefined;
28
28
  } & React.RefAttributes<HTMLDivElement>>;
29
29
  interface ILuiCloseableHeaderMenuContextV2 {
30
30
  isOpen: () => boolean;
package/dist/index.js CHANGED
@@ -40329,40 +40329,47 @@ var LuiHeaderV2 = function (_a) {
40329
40329
  React__default["default"].createElement("div", { className: "LuiHeaderV2-col" }, children))));
40330
40330
  };
40331
40331
  var LuiHeaderMenuItemV2 = React$1.forwardRef(function (_a, ref) {
40332
- var icon = _a.icon, _b = _a.iconColor, iconColor = _b === void 0 ? '#E2F3F7' : _b, label = _a.label, badge = _a.badge, hide = _a.hide, onClick = _a.onClick, _c = _a["data-testid"], dataTestId = _c === void 0 ? 'menu-item' : _c, _d = _a.clickOutsideOptions, _e = _d === void 0 ? {
40333
- ignoreClickOutside: false
40334
- } : _d, _f = _e.ignoreClickOutside, ignoreClickOutside = _f === void 0 ? false : _f, onClickOutside = _e.onClickOutside, _g = _a.escapeOptions, _h = _g === void 0 ? {
40335
- ignoreEscape: false
40336
- } : _g, _j = _h.ignoreEscape, ignoreEscape = _j === void 0 ? false : _j, onEscape = _h.onEscape, isSelected = _a.isSelected, children = _a.children;
40337
- var _k = React$1.useState(false), selected = _k[0], setSelected = _k[1];
40338
- React$1.useEffect(function () {
40339
- if (isSelected !== undefined) {
40340
- setSelected(isSelected);
40341
- }
40342
- }, [isSelected]);
40343
- // clicking toggle selected
40344
- // escape and click outside unselect
40332
+ var icon = _a.icon, _b = _a.iconColor, iconColor = _b === void 0 ? '#E2F3F7' : _b, label = _a.label, badge = _a.badge, onClick = _a.onClick, _c = _a["data-testid"], dataTestId = _c === void 0 ? 'menu-item' : _c, externalSelected = _a.isSelected, onClickOutside = _a.onClickOutside, onEscape = _a.onEscape, tooltip = _a.tooltip, children = _a.children;
40333
+ var _d = React$1.useState(false), internalSelected = _d[0], setInternalSelected = _d[1];
40334
+ var useInternalSelectedStatus = externalSelected === undefined;
40335
+ // overwrite internalSelected status when externalSelected is provided
40336
+ var selected = useInternalSelectedStatus
40337
+ ? internalSelected
40338
+ : externalSelected;
40339
+ // unselcted when press escape when there is no externalSelected provided
40345
40340
  useEscapeFunction(function () {
40346
- if (!ignoreEscape) {
40347
- setSelected(false);
40341
+ if (useInternalSelectedStatus) {
40342
+ setInternalSelected(false);
40348
40343
  }
40349
40344
  if (onEscape) {
40350
40345
  onEscape();
40351
40346
  }
40352
40347
  });
40353
- var innerItemRef = usePageClickFunction(function () { return setSelected(function (prevSelected) { return !prevSelected; }); }, // toggle selcted
40354
- function () {
40355
- if (!ignoreClickOutside) {
40356
- setSelected(false);
40348
+ var innerItemRef = usePageClickFunction(function () {
40349
+ // toggle selected when there is no externalSelected provided
40350
+ if (useInternalSelectedStatus) {
40351
+ setInternalSelected(function (prevSelected) { return !prevSelected; });
40352
+ }
40353
+ }, function () {
40354
+ // unselcted when press outside when there is no externalSelected provided
40355
+ if (useInternalSelectedStatus) {
40356
+ setInternalSelected(false);
40357
40357
  }
40358
40358
  if (onClickOutside) {
40359
40359
  onClickOutside();
40360
40360
  }
40361
40361
  });
40362
- var menuItemClasses = clsx$1('LuiHeaderV2-menu-item', hide && buildHideClassDict(hide));
40363
40362
  var resolvedIcon = !icon && !label ? 'ic_menu' : icon;
40364
- return (React__default["default"].createElement("div", { className: menuItemClasses, ref: ref },
40363
+ var TooltipElement = function () {
40364
+ if (!tooltip) {
40365
+ return null;
40366
+ }
40367
+ var text = tooltip.text, _a = tooltip.anchorOrigin, anchorOrigin = _a === void 0 ? 'left' : _a, _b = tooltip.theme, theme = _b === void 0 ? 'dark' : _b;
40368
+ return React__default["default"].createElement("span", { className: "tooltip ".concat(anchorOrigin, " ").concat(theme) }, text);
40369
+ };
40370
+ return (React__default["default"].createElement("div", { className: "LuiHeaderV2-menu-item", ref: ref },
40365
40371
  React__default["default"].createElement("div", { ref: innerItemRef, className: clsx$1('LuiHeaderV2-menu-button', { selected: selected }, { unselected: !selected }) },
40372
+ tooltip && React__default["default"].createElement(TooltipElement, null),
40366
40373
  resolvedIcon && (React__default["default"].createElement("div", { className: clsx$1('LuiHeaderV2-menu-icon', {
40367
40374
  clickable: !!onClick
40368
40375
  }), "data-testid": dataTestId, onClick: onClick },