react-better-html 1.1.198 → 1.1.199

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/dist/index.mjs CHANGED
@@ -8860,6 +8860,10 @@ var TooltipComponent = forwardRef16(function Tooltip({
8860
8860
  };
8861
8861
  }
8862
8862
  }, [trigger, onClickOutside]);
8863
+ useEffect12(() => {
8864
+ if (!disabled) return;
8865
+ closeTooltip();
8866
+ }, [disabled]);
8863
8867
  useImperativeHandle3(
8864
8868
  ref,
8865
8869
  () => {
@@ -9365,8 +9369,17 @@ Foldable2.box = FoldableComponent.box;
9365
9369
  var Foldable_default = Foldable2;
9366
9370
 
9367
9371
  // src/components/SideMenu.tsx
9368
- import { memo as memo27, useCallback as useCallback16, useEffect as useEffect15, useMemo as useMemo12 } from "react";
9372
+ import { createContext as createContext2, memo as memo27, useCallback as useCallback16, useContext as useContext2, useEffect as useEffect15, useMemo as useMemo12, useState as useState14 } from "react";
9369
9373
  import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
9374
+ var sideMenuContext = createContext2(void 0);
9375
+ var SideMenuContextProvider = sideMenuContext.Provider;
9376
+ var useSideMenuContext = () => {
9377
+ const context = useContext2(sideMenuContext);
9378
+ if (!context) {
9379
+ throw new Error("`useSideMenuContext` must be used within a `<SideMenuContextProvider>` component");
9380
+ }
9381
+ return context;
9382
+ };
9370
9383
  var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundColor, onClick }) {
9371
9384
  const reactRouterDomPlugin2 = usePlugin("react-router-dom");
9372
9385
  if (!reactRouterDomPlugin2) {
@@ -9379,6 +9392,7 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
9379
9392
  const mediaQuery = useMediaQuery();
9380
9393
  const location = reactRouterDomPluginConfig.useLocation();
9381
9394
  const { colorTheme, components, sideMenuIsCollapsed, setSideMenuIsCollapsed } = useBetterHtmlContextInternal();
9395
+ const { activeItem, setActiveItem } = useSideMenuContext();
9382
9396
  const [isOpened, setIsOpened] = useBooleanState();
9383
9397
  const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
9384
9398
  const onClickElement = useCallback16(() => {
@@ -9392,7 +9406,7 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
9392
9406
  item.onClick?.(item);
9393
9407
  }
9394
9408
  }, [onClick, item, isCollapsed]);
9395
- const isActive = item.href ? location.pathname === "/" ? location.pathname === item.href : location.pathname.startsWith(item.href) && item.href !== "/" : false;
9409
+ const isActive = activeItem && item.href && activeItem.href === item.href;
9396
9410
  const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
9397
9411
  const iconSize = 16;
9398
9412
  const paddingBlock = theme2.styles.gap;
@@ -9454,6 +9468,17 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
9454
9468
  )
9455
9469
  }
9456
9470
  );
9471
+ useEffect15(() => {
9472
+ if (!item.href) return;
9473
+ const isActive2 = location.pathname === "/" ? location.pathname === item.href : location.pathname.startsWith(item.href) && item.href !== "/";
9474
+ if (!isActive2) return;
9475
+ setActiveItem(
9476
+ (oldValue) => item.href ? oldValue && oldValue.length > item.href.length ? oldValue : {
9477
+ href: item.href,
9478
+ length: item.href.length
9479
+ } : void 0
9480
+ );
9481
+ }, [location.pathname]);
9457
9482
  useEffect15(() => {
9458
9483
  if (!item.children) return;
9459
9484
  const toBeOpened = item.children.some(
@@ -9461,6 +9486,10 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
9461
9486
  );
9462
9487
  setIsOpened.setState(toBeOpened);
9463
9488
  }, [item]);
9489
+ useEffect15(() => {
9490
+ if (!isCollapsed) return;
9491
+ setIsOpened.setFalse();
9492
+ }, [isCollapsed]);
9464
9493
  const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
9465
9494
  return /* @__PURE__ */ jsxs23(Div_default, { width: "100%", children: [
9466
9495
  item.href ? /* @__PURE__ */ jsx27(LinkComponentTag, { to: item.href, href: item.href, onClick: onClickElement, children: content }) : content,
@@ -9547,11 +9576,19 @@ var SideMenuComponent = function SideMenu({
9547
9576
  const theme2 = useTheme();
9548
9577
  const mediaQuery = useMediaQuery();
9549
9578
  const { components, sideMenuIsCollapsed, setSideMenuIsCollapsed, sideMenuIsOpenMobile, setSideMenuIsOpenMobile } = useBetterHtmlContextInternal();
9579
+ const [activeItem, setActiveItem] = useState14();
9550
9580
  const onClickXButton = useCallback16(() => {
9551
9581
  setSideMenuIsOpenMobile.setFalse();
9552
9582
  }, []);
9553
9583
  const readyItems = useMemo12(() => items.filter((item) => !item.hidden), [items]);
9554
9584
  const readyBottomItems = useMemo12(() => bottomItems?.filter((item) => !item.hidden), [bottomItems]);
9585
+ const contextValue = useMemo12(
9586
+ () => ({
9587
+ activeItem,
9588
+ setActiveItem
9589
+ }),
9590
+ [activeItem]
9591
+ );
9555
9592
  const isCollapsable = collapsable && !mediaQuery.size1000;
9556
9593
  const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
9557
9594
  const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
@@ -9559,7 +9596,7 @@ var SideMenuComponent = function SideMenu({
9559
9596
  const sideMenuCollapsedWidth = theme2.styles.space + theme2.styles.space * 2 + 16 + theme2.styles.space;
9560
9597
  const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
9561
9598
  const logoSize = sideMenuCollapsedWidth - theme2.styles.space * 2;
9562
- return /* @__PURE__ */ jsxs23(
9599
+ return /* @__PURE__ */ jsx27(SideMenuContextProvider, { value: contextValue, children: /* @__PURE__ */ jsxs23(
9563
9600
  Div_default.column,
9564
9601
  {
9565
9602
  position: "fixed",
@@ -9724,7 +9761,7 @@ var SideMenuComponent = function SideMenu({
9724
9761
  absoluteComponent && /* @__PURE__ */ jsx27(Div_default, { position: "absolute", top: 0, left: 0, pointerEvents: "none", zIndex: 2, children: /* @__PURE__ */ jsx27(Div_default, { pointerEvents: "all", children: absoluteComponent }) })
9725
9762
  ]
9726
9763
  }
9727
- );
9764
+ ) });
9728
9765
  };
9729
9766
  SideMenuComponent.pageHolder = function SideMenuPageHolder({ outsideComponent, ...props }) {
9730
9767
  const theme2 = useTheme();