@linzjs/lui 17.36.7 → 17.36.9

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.9](https://github.com/linz/lui/compare/v17.36.8...v17.36.9) (2023-03-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add toolptip and external selected status in HeaderMenuItemV2 ([#868](https://github.com/linz/lui/issues/868)) ([66478b0](https://github.com/linz/lui/commit/66478b0f2b782ef771defd30355e73a7ca93abcf))
7
+
8
+ ## [17.36.8](https://github.com/linz/lui/compare/v17.36.7...v17.36.8) (2023-03-01)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * adjust style for non sticky HeaderV2 and drawer ([#866](https://github.com/linz/lui/issues/866)) ([deeae2e](https://github.com/linz/lui/commit/deeae2e4de4d44a3ee80dcf0e2a7862dec52043c))
14
+
1
15
  ## [17.36.7](https://github.com/linz/lui/compare/v17.36.6...v17.36.7) (2023-02-28)
2
16
 
3
17
 
@@ -13,6 +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
+ /**
17
+ * allow to control selected status externally,
18
+ * and expect to use onClickOutside and onEscape to handle selected changes
19
+ */
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;
16
28
  } & React.RefAttributes<HTMLDivElement>>;
17
29
  interface ILuiCloseableHeaderMenuContextV2 {
18
30
  isOpen: () => boolean;
package/dist/index.js CHANGED
@@ -40317,7 +40317,8 @@ var LuiHeaderV2 = function (_a) {
40317
40317
  LuiHeaderV2: true,
40318
40318
  'LuiHeaderV2-transparent': transparent,
40319
40319
  'LuiHeaderV2-small': size === 'small',
40320
- 'LuiHeaderV2-sticky': sticky
40320
+ 'LuiHeaderV2-sticky': sticky,
40321
+ 'LuiHeaderV2-non-sticky': !sticky
40321
40322
  }) },
40322
40323
  React__default["default"].createElement("div", { className: "LuiHeaderV2-row" },
40323
40324
  React__default["default"].createElement("div", { className: "LuiHeaderV2-col" },
@@ -40328,17 +40329,47 @@ var LuiHeaderV2 = function (_a) {
40328
40329
  React__default["default"].createElement("div", { className: "LuiHeaderV2-col" }, children))));
40329
40330
  };
40330
40331
  var LuiHeaderMenuItemV2 = React$1.forwardRef(function (_a, ref) {
40331
- 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, children = _a.children;
40332
- var _d = React$1.useState(false), selected = _d[0], setSelected = _d[1];
40333
- // clicking toggle selected
40334
- // escape and click outside unselect
40335
- useEscapeFunction(function () { return setSelected(false); });
40336
- var innerItemRef = usePageClickFunction(function () { return setSelected(function (prevSelected) { return !prevSelected; }); }, // toggle selcted
40337
- function () { return setSelected(false); });
40338
- var menuItemClasses = clsx$1('LuiHeaderV2-menu-item', hide && buildHideClassDict(hide));
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
40340
+ useEscapeFunction(function () {
40341
+ if (useInternalSelectedStatus) {
40342
+ setInternalSelected(false);
40343
+ }
40344
+ if (onEscape) {
40345
+ onEscape();
40346
+ }
40347
+ });
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
+ }
40358
+ if (onClickOutside) {
40359
+ onClickOutside();
40360
+ }
40361
+ });
40339
40362
  var resolvedIcon = !icon && !label ? 'ic_menu' : icon;
40340
- 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 },
40341
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),
40342
40373
  resolvedIcon && (React__default["default"].createElement("div", { className: clsx$1('LuiHeaderV2-menu-icon', {
40343
40374
  clickable: !!onClick
40344
40375
  }), "data-testid": dataTestId, onClick: onClick },
@@ -40490,10 +40521,9 @@ var LuiDrawerMenuV2 = function (_a) {
40490
40521
  }
40491
40522
  }, [open, hasStickyHeader]);
40492
40523
  return (React__default["default"].createElement(LuiCloseableHeaderMenuItemV2, __assign$3({}, closeableMenuProps),
40493
- React__default["default"].createElement("div", { className: clsx$1({
40494
- 'LuiHeaderMenuV2-drawer': true,
40524
+ React__default["default"].createElement("div", { className: clsx$1('LuiHeaderMenuV2-drawer', {
40495
40525
  'LuiHeaderMenuV2-drawer-closed': !open
40496
- }), "data-testid": 'drawer', "aria-hidden": !open }, children)));
40526
+ }, { sticky: hasStickyHeader }, { 'non-sticky': !hasStickyHeader }), "data-testid": 'drawer', "aria-hidden": !open }, children)));
40497
40527
  };
40498
40528
  var LuiDropdownMenuV2 = function (_a) {
40499
40529
  var restOfProps = __rest$1(_a, []);