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.js +40 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +41 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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 =
|
|
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();
|