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.js
CHANGED
|
@@ -8947,6 +8947,10 @@ var TooltipComponent = (0, import_react27.forwardRef)(function Tooltip({
|
|
|
8947
8947
|
};
|
|
8948
8948
|
}
|
|
8949
8949
|
}, [trigger, onClickOutside]);
|
|
8950
|
+
(0, import_react27.useEffect)(() => {
|
|
8951
|
+
if (!disabled) return;
|
|
8952
|
+
closeTooltip();
|
|
8953
|
+
}, [disabled]);
|
|
8950
8954
|
(0, import_react27.useImperativeHandle)(
|
|
8951
8955
|
ref,
|
|
8952
8956
|
() => {
|
|
@@ -9454,6 +9458,15 @@ var Foldable_default = Foldable2;
|
|
|
9454
9458
|
// src/components/SideMenu.tsx
|
|
9455
9459
|
var import_react30 = require("react");
|
|
9456
9460
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
9461
|
+
var sideMenuContext = (0, import_react30.createContext)(void 0);
|
|
9462
|
+
var SideMenuContextProvider = sideMenuContext.Provider;
|
|
9463
|
+
var useSideMenuContext = () => {
|
|
9464
|
+
const context = (0, import_react30.useContext)(sideMenuContext);
|
|
9465
|
+
if (!context) {
|
|
9466
|
+
throw new Error("`useSideMenuContext` must be used within a `<SideMenuContextProvider>` component");
|
|
9467
|
+
}
|
|
9468
|
+
return context;
|
|
9469
|
+
};
|
|
9457
9470
|
var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ item, backgroundColor, onClick }) {
|
|
9458
9471
|
const reactRouterDomPlugin2 = usePlugin("react-router-dom");
|
|
9459
9472
|
if (!reactRouterDomPlugin2) {
|
|
@@ -9466,10 +9479,12 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9466
9479
|
const mediaQuery = useMediaQuery();
|
|
9467
9480
|
const location = reactRouterDomPluginConfig.useLocation();
|
|
9468
9481
|
const { colorTheme, components, sideMenuIsCollapsed, setSideMenuIsCollapsed } = useBetterHtmlContextInternal();
|
|
9482
|
+
const { activeItem, setActiveItem } = useSideMenuContext();
|
|
9469
9483
|
const [isOpened, setIsOpened] = useBooleanState();
|
|
9470
9484
|
const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
|
|
9471
9485
|
const onClickElement = (0, import_react30.useCallback)(() => {
|
|
9472
9486
|
if (item.disabled) return;
|
|
9487
|
+
setActiveItem(void 0);
|
|
9473
9488
|
if (item.children) {
|
|
9474
9489
|
setSideMenuIsCollapsed.setFalse();
|
|
9475
9490
|
if (isCollapsed) setTimeout(setIsOpened.setTrue, 0.1 * 1e3);
|
|
@@ -9479,7 +9494,7 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9479
9494
|
item.onClick?.(item);
|
|
9480
9495
|
}
|
|
9481
9496
|
}, [onClick, item, isCollapsed]);
|
|
9482
|
-
const isActive =
|
|
9497
|
+
const isActive = activeItem && item.href && activeItem.href === item.href;
|
|
9483
9498
|
const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
|
|
9484
9499
|
const iconSize = 16;
|
|
9485
9500
|
const paddingBlock = theme2.styles.gap;
|
|
@@ -9491,7 +9506,10 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9491
9506
|
const content = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
9492
9507
|
Tooltip_default,
|
|
9493
9508
|
{
|
|
9494
|
-
content: /* @__PURE__ */ (0, import_jsx_runtime28.
|
|
9509
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Div_default.row, { alignItems: "center", gap: theme2.styles.gap, children: [
|
|
9510
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text_default, { whiteSpace: "nowrap", children: item.text }),
|
|
9511
|
+
item.children && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon_default, { name: "chevronDown", color: theme2.colors.textSecondary, size: 14 })
|
|
9512
|
+
] }),
|
|
9495
9513
|
contentPointerEvents: "none",
|
|
9496
9514
|
withArrow: true,
|
|
9497
9515
|
childrenWrapperWidth: "100%",
|
|
@@ -9541,6 +9559,17 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9541
9559
|
)
|
|
9542
9560
|
}
|
|
9543
9561
|
);
|
|
9562
|
+
(0, import_react30.useEffect)(() => {
|
|
9563
|
+
if (!item.href) return;
|
|
9564
|
+
const isActive2 = location.pathname === "/" ? location.pathname === item.href : location.pathname.startsWith(item.href) && item.href !== "/";
|
|
9565
|
+
if (!isActive2) return;
|
|
9566
|
+
setActiveItem(
|
|
9567
|
+
(oldValue) => item.href ? oldValue && oldValue.length > item.href.length ? oldValue : {
|
|
9568
|
+
href: item.href,
|
|
9569
|
+
length: item.href.length
|
|
9570
|
+
} : void 0
|
|
9571
|
+
);
|
|
9572
|
+
}, [location.pathname]);
|
|
9544
9573
|
(0, import_react30.useEffect)(() => {
|
|
9545
9574
|
if (!item.children) return;
|
|
9546
9575
|
const toBeOpened = item.children.some(
|
|
@@ -9548,6 +9577,10 @@ var MenuItemComponent = (0, import_react30.memo)(function MenuItemComponent2({ i
|
|
|
9548
9577
|
);
|
|
9549
9578
|
setIsOpened.setState(toBeOpened);
|
|
9550
9579
|
}, [item]);
|
|
9580
|
+
(0, import_react30.useEffect)(() => {
|
|
9581
|
+
if (!isCollapsed) return;
|
|
9582
|
+
setIsOpened.setFalse();
|
|
9583
|
+
}, [isCollapsed]);
|
|
9551
9584
|
const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
|
|
9552
9585
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Div_default, { width: "100%", children: [
|
|
9553
9586
|
item.href ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(LinkComponentTag, { to: item.href, href: item.href, onClick: onClickElement, children: content }) : content,
|
|
@@ -9634,11 +9667,19 @@ var SideMenuComponent = function SideMenu({
|
|
|
9634
9667
|
const theme2 = useTheme();
|
|
9635
9668
|
const mediaQuery = useMediaQuery();
|
|
9636
9669
|
const { components, sideMenuIsCollapsed, setSideMenuIsCollapsed, sideMenuIsOpenMobile, setSideMenuIsOpenMobile } = useBetterHtmlContextInternal();
|
|
9670
|
+
const [activeItem, setActiveItem] = (0, import_react30.useState)();
|
|
9637
9671
|
const onClickXButton = (0, import_react30.useCallback)(() => {
|
|
9638
9672
|
setSideMenuIsOpenMobile.setFalse();
|
|
9639
9673
|
}, []);
|
|
9640
9674
|
const readyItems = (0, import_react30.useMemo)(() => items.filter((item) => !item.hidden), [items]);
|
|
9641
9675
|
const readyBottomItems = (0, import_react30.useMemo)(() => bottomItems?.filter((item) => !item.hidden), [bottomItems]);
|
|
9676
|
+
const contextValue = (0, import_react30.useMemo)(
|
|
9677
|
+
() => ({
|
|
9678
|
+
activeItem,
|
|
9679
|
+
setActiveItem
|
|
9680
|
+
}),
|
|
9681
|
+
[activeItem]
|
|
9682
|
+
);
|
|
9642
9683
|
const isCollapsable = collapsable && !mediaQuery.size1000;
|
|
9643
9684
|
const isCollapsed = sideMenuIsCollapsed && !mediaQuery.size1000;
|
|
9644
9685
|
const LinkComponentTag = components.button?.tagReplacement?.linkComponent ?? "a";
|
|
@@ -9646,7 +9687,7 @@ var SideMenuComponent = function SideMenu({
|
|
|
9646
9687
|
const sideMenuCollapsedWidth = theme2.styles.space + theme2.styles.space * 2 + 16 + theme2.styles.space;
|
|
9647
9688
|
const readyBackgroundColor = backgroundColor ?? theme2.colors.backgroundContent;
|
|
9648
9689
|
const logoSize = sideMenuCollapsedWidth - theme2.styles.space * 2;
|
|
9649
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
9690
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SideMenuContextProvider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
9650
9691
|
Div_default.column,
|
|
9651
9692
|
{
|
|
9652
9693
|
position: "fixed",
|
|
@@ -9811,7 +9852,7 @@ var SideMenuComponent = function SideMenu({
|
|
|
9811
9852
|
absoluteComponent && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Div_default, { position: "absolute", top: 0, left: 0, pointerEvents: "none", zIndex: 2, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Div_default, { pointerEvents: "all", children: absoluteComponent }) })
|
|
9812
9853
|
]
|
|
9813
9854
|
}
|
|
9814
|
-
);
|
|
9855
|
+
) });
|
|
9815
9856
|
};
|
|
9816
9857
|
SideMenuComponent.pageHolder = function SideMenuPageHolder({ outsideComponent, ...props }) {
|
|
9817
9858
|
const theme2 = useTheme();
|