react-better-html 1.1.198 → 1.1.201-beta
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 +45 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46 -5
- 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,10 +9392,12 @@ 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(() => {
|
|
9385
9399
|
if (item.disabled) return;
|
|
9400
|
+
setActiveItem(void 0);
|
|
9386
9401
|
if (item.children) {
|
|
9387
9402
|
setSideMenuIsCollapsed.setFalse();
|
|
9388
9403
|
if (isCollapsed) setTimeout(setIsOpened.setTrue, 0.1 * 1e3);
|
|
@@ -9392,7 +9407,7 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
|
|
|
9392
9407
|
item.onClick?.(item);
|
|
9393
9408
|
}
|
|
9394
9409
|
}, [onClick, item, isCollapsed]);
|
|
9395
|
-
const isActive =
|
|
9410
|
+
const isActive = activeItem && item.href && activeItem.href === item.href;
|
|
9396
9411
|
const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
|
|
9397
9412
|
const iconSize = 16;
|
|
9398
9413
|
const paddingBlock = theme2.styles.gap;
|
|
@@ -9404,7 +9419,10 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
|
|
|
9404
9419
|
const content = /* @__PURE__ */ jsx27(
|
|
9405
9420
|
Tooltip_default,
|
|
9406
9421
|
{
|
|
9407
|
-
content: /* @__PURE__ */
|
|
9422
|
+
content: /* @__PURE__ */ jsxs23(Div_default.row, { alignItems: "center", gap: theme2.styles.gap, children: [
|
|
9423
|
+
/* @__PURE__ */ jsx27(Text_default, { whiteSpace: "nowrap", children: item.text }),
|
|
9424
|
+
item.children && /* @__PURE__ */ jsx27(Icon_default, { name: "chevronDown", color: theme2.colors.textSecondary, size: 14 })
|
|
9425
|
+
] }),
|
|
9408
9426
|
contentPointerEvents: "none",
|
|
9409
9427
|
withArrow: true,
|
|
9410
9428
|
childrenWrapperWidth: "100%",
|
|
@@ -9454,6 +9472,17 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
|
|
|
9454
9472
|
)
|
|
9455
9473
|
}
|
|
9456
9474
|
);
|
|
9475
|
+
useEffect15(() => {
|
|
9476
|
+
if (!item.href) return;
|
|
9477
|
+
const isActive2 = location.pathname === "/" ? location.pathname === item.href : location.pathname.startsWith(item.href) && item.href !== "/";
|
|
9478
|
+
if (!isActive2) return;
|
|
9479
|
+
setActiveItem(
|
|
9480
|
+
(oldValue) => item.href ? oldValue && oldValue.length > item.href.length ? oldValue : {
|
|
9481
|
+
href: item.href,
|
|
9482
|
+
length: item.href.length
|
|
9483
|
+
} : void 0
|
|
9484
|
+
);
|
|
9485
|
+
}, [location.pathname]);
|
|
9457
9486
|
useEffect15(() => {
|
|
9458
9487
|
if (!item.children) return;
|
|
9459
9488
|
const toBeOpened = item.children.some(
|
|
@@ -9461,6 +9490,10 @@ var MenuItemComponent = memo27(function MenuItemComponent2({ item, backgroundCol
|
|
|
9461
9490
|
);
|
|
9462
9491
|
setIsOpened.setState(toBeOpened);
|
|
9463
9492
|
}, [item]);
|
|
9493
|
+
useEffect15(() => {
|
|
9494
|
+
if (!isCollapsed) return;
|
|
9495
|
+
setIsOpened.setFalse();
|
|
9496
|
+
}, [isCollapsed]);
|
|
9464
9497
|
const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
|
|
9465
9498
|
return /* @__PURE__ */ jsxs23(Div_default, { width: "100%", children: [
|
|
9466
9499
|
item.href ? /* @__PURE__ */ jsx27(LinkComponentTag, { to: item.href, href: item.href, onClick: onClickElement, children: content }) : content,
|
|
@@ -9547,11 +9580,19 @@ var SideMenuComponent = function SideMenu({
|
|
|
9547
9580
|
const theme2 = useTheme();
|
|
9548
9581
|
const mediaQuery = useMediaQuery();
|
|
9549
9582
|
const { components, sideMenuIsCollapsed, setSideMenuIsCollapsed, sideMenuIsOpenMobile, setSideMenuIsOpenMobile } = useBetterHtmlContextInternal();
|
|
9583
|
+
const [activeItem, setActiveItem] = useState14();
|
|
9550
9584
|
const onClickXButton = useCallback16(() => {
|
|
9551
9585
|
setSideMenuIsOpenMobile.setFalse();
|
|
9552
9586
|
}, []);
|
|
9553
9587
|
const readyItems = useMemo12(() => items.filter((item) => !item.hidden), [items]);
|
|
9554
9588
|
const readyBottomItems = useMemo12(() => bottomItems?.filter((item) => !item.hidden), [bottomItems]);
|
|
9589
|
+
const contextValue = useMemo12(
|
|
9590
|
+
() => ({
|
|
9591
|
+
activeItem,
|
|
9592
|
+
setActiveItem
|
|
9593
|
+
}),
|
|
9594
|
+
[activeItem]
|
|
9595
|
+
);
|
|
9555
9596
|
const isCollapsable = collapsable && !mediaQuery.size1000;
|
|
9556
9597
|
const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
|
|
9557
9598
|
const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
|
|
@@ -9559,7 +9600,7 @@ var SideMenuComponent = function SideMenu({
|
|
|
9559
9600
|
const sideMenuCollapsedWidth = theme2.styles.space + theme2.styles.space * 2 + 16 + theme2.styles.space;
|
|
9560
9601
|
const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
|
|
9561
9602
|
const logoSize = sideMenuCollapsedWidth - theme2.styles.space * 2;
|
|
9562
|
-
return /* @__PURE__ */ jsxs23(
|
|
9603
|
+
return /* @__PURE__ */ jsx27(SideMenuContextProvider, { value: contextValue, children: /* @__PURE__ */ jsxs23(
|
|
9563
9604
|
Div_default.column,
|
|
9564
9605
|
{
|
|
9565
9606
|
position: "fixed",
|
|
@@ -9724,7 +9765,7 @@ var SideMenuComponent = function SideMenu({
|
|
|
9724
9765
|
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
9766
|
]
|
|
9726
9767
|
}
|
|
9727
|
-
);
|
|
9768
|
+
) });
|
|
9728
9769
|
};
|
|
9729
9770
|
SideMenuComponent.pageHolder = function SideMenuPageHolder({ outsideComponent, ...props }) {
|
|
9730
9771
|
const theme2 = useTheme();
|