@bizapps/design-system-testing 1.12.0 → 1.12.1

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/main.cjs CHANGED
@@ -9430,7 +9430,7 @@ function FloatingSidebar({
9430
9430
  collapsedWidth = DEFAULT_COLLAPSED_WIDTH,
9431
9431
  type = "single",
9432
9432
  openModuleIds: openModulesProp,
9433
- defaultOpenModuleIds = [],
9433
+ defaultOpenModuleIds,
9434
9434
  onOpenModulesChange,
9435
9435
  hideEmptyModules = true,
9436
9436
  activeItemId: activeItemProp,
@@ -9459,9 +9459,16 @@ function FloatingSidebar({
9459
9459
  const isMobile = useIsMobile();
9460
9460
  const baseId = react.useId();
9461
9461
  const [open, setOpen] = useControllableState2(openProp, defaultOpen, onOpenChange);
9462
+ const moduleIdByItemId = react.useMemo(
9463
+ () => new Map(modules.flatMap((module) => module.items.map((item) => [item.id, module.id]))),
9464
+ [modules]
9465
+ );
9466
+ const moduleIdOf = (itemId) => itemId ? moduleIdByItemId.get(itemId) : void 0;
9467
+ const initialActiveModuleId = moduleIdOf(activeItemProp ?? defaultActiveItemId);
9462
9468
  const [rawOpenModuleIds, setOpenModuleIds] = useControllableState2(
9463
9469
  openModulesProp,
9464
- defaultOpenModuleIds,
9470
+ // Without an explicit default, the module of the current page starts open.
9471
+ defaultOpenModuleIds ?? (initialActiveModuleId ? [initialActiveModuleId] : []),
9465
9472
  onOpenModulesChange
9466
9473
  );
9467
9474
  const railWidth = Math.max(MIN_COLLAPSED_WIDTH, collapsedWidth);
@@ -9563,8 +9570,31 @@ function FloatingSidebar({
9563
9570
  document.addEventListener("keydown", onKeyDown);
9564
9571
  return () => document.removeEventListener("keydown", onKeyDown);
9565
9572
  }, [shortcut, toggle, isMobile, mobileOpen, setMobileOpen]);
9573
+ const openModule = (moduleId) => {
9574
+ const opened = rawOpenModuleIds.includes(moduleId);
9575
+ if (type === "multiple") {
9576
+ if (!opened) setOpenModuleIds([...rawOpenModuleIds, moduleId]);
9577
+ } else if (!opened || rawOpenModuleIds.length > 1) {
9578
+ setOpenModuleIds([moduleId]);
9579
+ }
9580
+ };
9581
+ const activeModuleId = moduleIdOf(activeItemId);
9582
+ const syncedActive = react.useRef(`${activeItemId}|${activeModuleId}`);
9583
+ react.useEffect(() => {
9584
+ const key = `${activeItemId}|${activeModuleId}`;
9585
+ if (syncedActive.current === key) return;
9586
+ syncedActive.current = key;
9587
+ if (activeModuleId) openModule(activeModuleId);
9588
+ });
9566
9589
  const selectItem = (item, module, navigates) => {
9567
- if (navigates) setActiveItemId(item.id);
9590
+ if (navigates) {
9591
+ setActiveItemId(item.id);
9592
+ openModule(module.id);
9593
+ if (activeItemProp === void 0) {
9594
+ syncedActive.current = `${item.id}|${moduleIdOf(item.id)}`;
9595
+ }
9596
+ if (queries[module.id]) setQueries((current) => ({ ...current, [module.id]: "" }));
9597
+ }
9568
9598
  setFlyoutId(null);
9569
9599
  if (isMobile) setMobileOpen(false);
9570
9600
  onItemSelect?.(item, module);