xmlui 0.11.13 → 0.11.15

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.
@@ -2,7 +2,7 @@ import "./index.css";
2
2
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import React__default, { useRef, useInsertionEffect, useCallback, forwardRef, useState, useEffect, useId, cloneElement, useMemo, useContext, useLayoutEffect, createContext, memo, Fragment as Fragment$1, useReducer, isValidElement, useDeferredValue, createElement, startTransition, useTransition, Children } from "react";
5
- import { b as getDefaultExportFromCjs, l as labelPositionMd, o as orientationOptionMd, v as validationStatusMd, c as alignmentOptionValues, i as isSizeType, d as layoutOptionKeys, L as LinkTargetMd, e as alignmentOptionMd, f as iconPositionMd, h as buttonTypesMd, s as sizeMd, j as buttonThemeMd, k as buttonVariantMd, T as TextVariantElement, V as VariantPropsKeys, m as variantOptionsMd, n as scrollAnchoringValues, p as buttonThemeNames, q as iconPositionNames, r as buttonVariantNames, t as buttonVariantValues, u as triggerPositionNames, w as httpMethodNames, x as orientationOptionValues, y as viewportSizeNames, M as MetadataProvider } from "./metadata-utils-2bsMr4Gd.js";
5
+ import { b as getDefaultExportFromCjs, l as labelPositionMd, o as orientationOptionMd, v as validationStatusMd, c as alignmentOptionValues, i as isSizeType, d as alignmentOptionMd, e as layoutOptionKeys, L as LinkTargetMd, f as iconPositionMd, h as buttonTypesMd, s as sizeMd, j as buttonThemeMd, k as buttonVariantMd, T as TextVariantElement, V as VariantPropsKeys, m as variantOptionsMd, n as scrollAnchoringValues, p as buttonThemeNames, q as iconPositionNames, r as buttonVariantNames, t as buttonVariantValues, u as triggerPositionNames, w as httpMethodNames, x as orientationOptionValues, y as viewportSizeNames, M as MetadataProvider } from "./metadata-utils-BXGJbvlh.js";
6
6
  import require$$0, { flushSync, createPortal } from "react-dom";
7
7
  import yaml from "js-yaml";
8
8
  import { useQuery, useInfiniteQuery, QueryClientProvider, QueryClient } from "@tanstack/react-query";
@@ -1707,11 +1707,11 @@ const chStackComponentRenderer = createComponentRenderer(
1707
1707
  }
1708
1708
  );
1709
1709
  const themeVars$$ = `'{"backgroundColor-ResponsiveBar": "var(--xmlui-backgroundColor-ResponsiveBar)", "padding-ResponsiveBar": "var(--xmlui-padding-ResponsiveBar)", "margin-ResponsiveBar": "var(--xmlui-margin-ResponsiveBar)"}'`;
1710
- const responsiveBar = "_responsiveBar_9ttfw_14";
1711
- const vertical$7 = "_vertical_9ttfw_26";
1712
- const horizontal$6 = "_horizontal_9ttfw_33";
1713
- const visibleItems = "_visibleItems_9ttfw_39";
1714
- const overflowDropdown = "_overflowDropdown_9ttfw_65";
1710
+ const responsiveBar = "_responsiveBar_1euow_14";
1711
+ const vertical$7 = "_vertical_1euow_26";
1712
+ const horizontal$6 = "_horizontal_1euow_33";
1713
+ const visibleItems = "_visibleItems_1euow_39";
1714
+ const overflowDropdown = "_overflowDropdown_1euow_65";
1715
1715
  const styles$1i = {
1716
1716
  themeVars: themeVars$$,
1717
1717
  responsiveBar,
@@ -1721,17 +1721,19 @@ const styles$1i = {
1721
1721
  overflowDropdown
1722
1722
  };
1723
1723
  const themeVars$_ = `'{"backgroundColor-DropdownMenu": "var(--xmlui-backgroundColor-DropdownMenu)", "borderRadius-DropdownMenu": "var(--xmlui-borderRadius-DropdownMenu)", "boxShadow-DropdownMenu": "var(--xmlui-boxShadow-DropdownMenu)", "borderColor-DropdownMenu-content": "var(--xmlui-borderColor-DropdownMenu-content)", "borderWidth-DropdownMenu-content": "var(--xmlui-borderWidth-DropdownMenu-content)", "borderStyle-DropdownMenu-content": "var(--xmlui-borderStyle-DropdownMenu-content)", "minWidth-DropdownMenu": "var(--xmlui-minWidth-DropdownMenu)", "backgroundColor-MenuItem": "var(--xmlui-backgroundColor-MenuItem)", "color-MenuItem": "var(--xmlui-color-MenuItem)", "fontFamily-MenuItem": "var(--xmlui-fontFamily-MenuItem)", "gap-MenuItem": "var(--xmlui-gap-MenuItem)", "fontSize-MenuItem": "var(--xmlui-fontSize-MenuItem)", "paddingVertical-MenuItem": "var(--xmlui-paddingVertical-MenuItem)", "paddingHorizontal-MenuItem": "var(--xmlui-paddingHorizontal-MenuItem)", "backgroundColor-MenuItem--hover": "var(--xmlui-backgroundColor-MenuItem--hover)", "backgroundColor-MenuItem--active": "var(--xmlui-backgroundColor-MenuItem--active)", "backgroundColor-MenuItem--active--hover": "var(--xmlui-backgroundColor-MenuItem--active--hover)", "color-MenuItem--hover": "var(--xmlui-color-MenuItem--hover)", "color-MenuItem--active": "var(--xmlui-color-MenuItem--active)", "color-MenuItem--active--hover": "var(--xmlui-color-MenuItem--active--hover)", "color-MenuItem--disabled": "var(--xmlui-color-MenuItem--disabled)", "marginTop-MenuSeparator": "var(--xmlui-marginTop-MenuSeparator)", "marginBottom-MenuSeparator": "var(--xmlui-marginBottom-MenuSeparator)", "width-MenuSeparator": "var(--xmlui-width-MenuSeparator)", "height-MenuSeparator": "var(--xmlui-height-MenuSeparator)", "color-MenuSeparator": "var(--xmlui-color-MenuSeparator)"}'`;
1724
- const DropdownMenuContent = "_DropdownMenuContent_19u51_14";
1725
- const DropdownMenuSubContent = "_DropdownMenuSubContent_19u51_19";
1726
- const DropdownMenuItem = "_DropdownMenuItem_19u51_29";
1727
- const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_19u51_30";
1728
- const active$3 = "_active_19u51_53";
1729
- const disabled$b = "_disabled_19u51_63";
1730
- const wrapper$m = "_wrapper_19u51_74";
1731
- const DropdownMenuSeparator = "_DropdownMenuSeparator_19u51_78";
1724
+ const DropdownMenuContent = "_DropdownMenuContent_tklrk_14";
1725
+ const compact = "_compact_tklrk_18";
1726
+ const DropdownMenuSubContent = "_DropdownMenuSubContent_tklrk_22";
1727
+ const DropdownMenuItem = "_DropdownMenuItem_tklrk_32";
1728
+ const DropdownMenuSubTrigger = "_DropdownMenuSubTrigger_tklrk_33";
1729
+ const active$3 = "_active_tklrk_56";
1730
+ const disabled$b = "_disabled_tklrk_66";
1731
+ const wrapper$m = "_wrapper_tklrk_81";
1732
+ const DropdownMenuSeparator = "_DropdownMenuSeparator_tklrk_85";
1732
1733
  const styles$1h = {
1733
1734
  themeVars: themeVars$_,
1734
1735
  DropdownMenuContent,
1736
+ compact,
1735
1737
  DropdownMenuSubContent,
1736
1738
  DropdownMenuItem,
1737
1739
  DropdownMenuSubTrigger,
@@ -3389,6 +3391,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
3389
3391
  triggerButtonThemeColor = defaultDropdownMenuProps.triggerButtonThemeColor,
3390
3392
  triggerButtonIcon = defaultDropdownMenuProps.triggerButtonIcon,
3391
3393
  triggerButtonIconPosition = defaultDropdownMenuProps.triggerButtonIconPosition,
3394
+ compact: compact2 = false,
3392
3395
  ...rest
3393
3396
  }, ref) {
3394
3397
  const { root: root2 } = useTheme();
@@ -3493,7 +3496,7 @@ const DropdownMenu = forwardRef(function DropdownMenu2({
3493
3496
  ref: contentRef,
3494
3497
  align: alignment,
3495
3498
  style: style2,
3496
- className: classnames(styles$1h.DropdownMenuContent, className),
3499
+ className: classnames(styles$1h.DropdownMenuContent, className, { [styles$1h.compact]: compact2 }),
3497
3500
  onOpenAutoFocus: (e) => {
3498
3501
  e.preventDefault();
3499
3502
  contentRef.current?.focus();
@@ -3521,7 +3524,8 @@ const MenuItem = forwardRef(function MenuItem2({
3521
3524
  icon: icon2,
3522
3525
  iconPosition = defaultMenuItemProps.iconPosition,
3523
3526
  active: active2 = defaultMenuItemProps.active,
3524
- enabled: enabled2 = true
3527
+ enabled: enabled2 = true,
3528
+ compact: compact2 = false
3525
3529
  }, ref) {
3526
3530
  const iconToStart = iconPosition === "start";
3527
3531
  const context = useDropdownMenuContext();
@@ -3556,7 +3560,8 @@ const MenuItem = forwardRef(function MenuItem2({
3556
3560
  style: style2,
3557
3561
  className: classnames(className, styles$1h.DropdownMenuItem, {
3558
3562
  [styles$1h.active]: active2,
3559
- [styles$1h.disabled]: !enabled2
3563
+ [styles$1h.disabled]: !enabled2,
3564
+ [styles$1h.compact]: compact2
3560
3565
  }),
3561
3566
  ref,
3562
3567
  onClick: handleClick,
@@ -3604,26 +3609,55 @@ const SubMenuItem = forwardRef(function SubMenuItem2({ children, label: label2,
3604
3609
  const MenuSeparator = forwardRef(function MenuSeparator2(props, ref) {
3605
3610
  return /* @__PURE__ */ jsx("div", { ref, className: styles$1h.DropdownMenuSeparator, role: "separator", ...props });
3606
3611
  });
3612
+ const PART_OVERFLOW = "overflow";
3607
3613
  const ResponsiveBarDropdown = ({
3608
3614
  overflowIcon,
3615
+ dropdownText,
3616
+ dropdownAlignment,
3617
+ triggerTemplate,
3609
3618
  children,
3610
- className
3611
- }) => /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(DropdownMenu, { label: "More options", triggerButtonIcon: overflowIcon, children }) });
3619
+ className,
3620
+ onWillOpen,
3621
+ registerComponentApi
3622
+ }) => /* @__PURE__ */ jsx("div", { className, "data-part-id": PART_OVERFLOW, children: /* @__PURE__ */ jsx(
3623
+ DropdownMenu,
3624
+ {
3625
+ label: dropdownText,
3626
+ triggerButtonIcon: overflowIcon,
3627
+ triggerTemplate,
3628
+ alignment: dropdownAlignment,
3629
+ compact: true,
3630
+ onWillOpen,
3631
+ registerComponentApi,
3632
+ children
3633
+ }
3634
+ ) });
3612
3635
  const defaultResponsiveBarProps = {
3613
3636
  overflowIcon: "ellipsisHorizontal:ResponsiveBar",
3637
+ dropdownText: "More options",
3614
3638
  gap: 0,
3615
- orientation: "horizontal"
3639
+ orientation: "horizontal",
3640
+ reverse: false
3616
3641
  };
3617
3642
  const ResponsiveBar = forwardRef(function ResponsiveBar2({
3618
3643
  children,
3644
+ childNodes,
3645
+ renderChildFn,
3619
3646
  overflowIcon = defaultResponsiveBarProps.overflowIcon,
3647
+ dropdownText = defaultResponsiveBarProps.dropdownText,
3648
+ dropdownAlignment,
3649
+ triggerTemplate,
3620
3650
  gap = defaultResponsiveBarProps.gap,
3621
3651
  orientation = defaultResponsiveBarProps.orientation,
3652
+ reverse: reverse2 = defaultResponsiveBarProps.reverse,
3622
3653
  style: style2,
3623
3654
  className,
3624
3655
  onClick,
3656
+ onWillOpen,
3657
+ registerComponentApi,
3625
3658
  ...rest
3626
3659
  }, ref) {
3660
+ const effectiveAlignment = dropdownAlignment ?? (reverse2 ? "start" : "end");
3627
3661
  const containerRef = useRef(null);
3628
3662
  const measurementDropdownRef = useRef(null);
3629
3663
  const isCalculatingRef = useRef(false);
@@ -3631,8 +3665,10 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3631
3665
  const lastChildrenCount = useRef(0);
3632
3666
  useRef(null);
3633
3667
  const layoutCompletedRef = useRef(false);
3668
+ const dropdownApiRef = useRef(null);
3634
3669
  const [isInMeasurementPhase, setIsInMeasurementPhase] = useState(true);
3635
3670
  const [measuredWidths, setMeasuredWidths] = useState([]);
3671
+ const [measuredDropdownSize, setMeasuredDropdownSize] = useState(0);
3636
3672
  const [layout, setLayout] = useState({
3637
3673
  visibleItems: [],
3638
3674
  overflowItems: []
@@ -3644,6 +3680,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3644
3680
  return result;
3645
3681
  }, [children]);
3646
3682
  const childrenCount = childrenArray.length;
3683
+ useEffect(() => {
3684
+ if (registerComponentApi) {
3685
+ registerComponentApi({
3686
+ open: () => {
3687
+ dropdownApiRef.current?.open();
3688
+ },
3689
+ close: () => {
3690
+ dropdownApiRef.current?.close();
3691
+ },
3692
+ hasOverflow: () => {
3693
+ return layout.overflowItems.length > 0;
3694
+ }
3695
+ });
3696
+ }
3697
+ }, [registerComponentApi, layout.overflowItems.length]);
3647
3698
  const measureItems = () => {
3648
3699
  if (!containerRef.current) return;
3649
3700
  const items = [];
@@ -3663,7 +3714,16 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3663
3714
  const rect = item2.getBoundingClientRect();
3664
3715
  return orientation === "horizontal" ? rect.width : rect.height;
3665
3716
  });
3717
+ let dropdownSize = orientation === "horizontal" ? 147 : 47;
3718
+ if (measurementDropdownRef.current) {
3719
+ const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
3720
+ const measuredSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3721
+ if (measuredSize > 0) {
3722
+ dropdownSize = measuredSize;
3723
+ }
3724
+ }
3666
3725
  setMeasuredWidths(measurements);
3726
+ setMeasuredDropdownSize(dropdownSize);
3667
3727
  setIsInMeasurementPhase(false);
3668
3728
  };
3669
3729
  const calculateOverflowLayout = () => {
@@ -3677,7 +3737,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3677
3737
  if (containerSize === 0 || containerSize === lastSize) {
3678
3738
  return;
3679
3739
  }
3680
- console.log(`ResponsiveBar ${orientation}: containerSize=${containerSize}, children=${childrenArray.length}`);
3681
3740
  isCalculatingRef.current = true;
3682
3741
  lastContainerSize.current = containerSize;
3683
3742
  const gapValue = gap;
@@ -3688,25 +3747,23 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3688
3747
  const gapSize = i > 0 ? gapValue : 0;
3689
3748
  totalSize += gapSize + childSize;
3690
3749
  }
3691
- console.log(`Total size needed: ${totalSize}, available: ${containerSize}`);
3692
3750
  let visibleItems2;
3693
3751
  let overflowItems;
3694
3752
  if (totalSize <= containerSize) {
3695
3753
  visibleItems2 = childrenArray;
3696
3754
  overflowItems = [];
3697
3755
  } else {
3698
- let dropdownSize = orientation === "horizontal" ? 147 : 47;
3756
+ let dropdownSize = measuredDropdownSize > 0 ? measuredDropdownSize : orientation === "horizontal" ? 147 : 47;
3699
3757
  const existingDropdown = container2.querySelector(
3700
3758
  `.${styles$1i.overflowDropdown}`
3701
3759
  );
3702
3760
  if (existingDropdown) {
3703
3761
  const dropdownRect = existingDropdown.getBoundingClientRect();
3704
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3705
- } else if (measurementDropdownRef.current) {
3706
- const dropdownRect = measurementDropdownRef.current.getBoundingClientRect();
3707
- dropdownSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3762
+ const currentSize = orientation === "horizontal" ? dropdownRect.width : dropdownRect.height;
3763
+ if (currentSize > 0) {
3764
+ dropdownSize = currentSize;
3765
+ }
3708
3766
  }
3709
- console.log(`Dropdown size: ${dropdownSize}`);
3710
3767
  let accumulatedSize = 0;
3711
3768
  let visibleCount = 0;
3712
3769
  for (let i = 0; i < childrenArray.length; i++) {
@@ -3715,7 +3772,6 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3715
3772
  const gapSize = i > 0 ? gapValue : 0;
3716
3773
  const proposedSize = accumulatedSize + gapSize + childSize;
3717
3774
  const totalSizeWithDropdown = proposedSize + gapValue + dropdownSize;
3718
- console.log(`Item ${i}: size=${childSize}, proposed=${proposedSize}, withDropdown=${totalSizeWithDropdown}`);
3719
3775
  if (totalSizeWithDropdown <= containerSize) {
3720
3776
  accumulatedSize = proposedSize;
3721
3777
  visibleCount++;
@@ -3740,18 +3796,14 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3740
3796
  if (visibleCount >= childrenArray.length) {
3741
3797
  visibleItems2 = childrenArray;
3742
3798
  overflowItems = [];
3743
- console.log(`All items fit, no dropdown needed`);
3744
3799
  } else if (visibleCount === 0) {
3745
3800
  visibleItems2 = childrenArray.slice(0, 1);
3746
3801
  overflowItems = childrenArray.slice(1);
3747
- console.log(`No items fit, forcing one visible: visible=1, overflow=${overflowItems.length}`);
3748
3802
  } else {
3749
3803
  visibleItems2 = childrenArray.slice(0, visibleCount);
3750
3804
  overflowItems = childrenArray.slice(visibleCount);
3751
- console.log(`Split items: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
3752
3805
  }
3753
3806
  }
3754
- console.log(`Final layout: visible=${visibleItems2.length}, overflow=${overflowItems.length}`);
3755
3807
  if (visibleItems2.length !== layout.visibleItems.length || overflowItems.length !== layout.overflowItems.length) {
3756
3808
  setLayout({
3757
3809
  visibleItems: visibleItems2,
@@ -3773,6 +3825,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3773
3825
  lastChildrenCount.current = childrenCount;
3774
3826
  setIsInMeasurementPhase(true);
3775
3827
  setMeasuredWidths([]);
3828
+ setMeasuredDropdownSize(0);
3776
3829
  }
3777
3830
  }, [childrenCount]);
3778
3831
  useEffect(() => {
@@ -3818,7 +3871,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3818
3871
  ...style2,
3819
3872
  gap: `${gap}px`,
3820
3873
  // Gap between visibleItems and overflowDropdown
3821
- flexDirection: orientation === "horizontal" ? "row" : "column",
3874
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column",
3822
3875
  height: orientation === "vertical" ? "100%" : void 0,
3823
3876
  width: orientation === "horizontal" ? "100%" : void 0
3824
3877
  },
@@ -3840,7 +3893,7 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3840
3893
  visibility: "hidden",
3841
3894
  opacity: 0,
3842
3895
  pointerEvents: "none",
3843
- flexDirection: orientation === "horizontal" ? "row" : "column"
3896
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
3844
3897
  },
3845
3898
  children: childrenArray.map((child, index) => /* @__PURE__ */ jsx("div", { children: child }, `item-${index}`))
3846
3899
  }
@@ -3858,7 +3911,13 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3858
3911
  ResponsiveBarDropdown,
3859
3912
  {
3860
3913
  overflowIcon,
3914
+ dropdownText,
3915
+ dropdownAlignment: effectiveAlignment,
3916
+ triggerTemplate,
3861
3917
  className: styles$1i.overflowDropdown,
3918
+ onWillOpen,
3919
+ registerComponentApi: (api) => {
3920
+ },
3862
3921
  children: childrenArray.length > 0 && /* @__PURE__ */ jsx(MenuItem, { children: childrenArray[0] })
3863
3922
  }
3864
3923
  )
@@ -3878,11 +3937,11 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3878
3937
  style: {
3879
3938
  gap: `${gap}px`,
3880
3939
  // Gap between visible items
3881
- flexDirection: orientation === "horizontal" ? "row" : "column"
3940
+ flexDirection: orientation === "horizontal" ? reverse2 ? "row-reverse" : "row" : reverse2 ? "column-reverse" : "column"
3882
3941
  },
3883
3942
  children: childrenArray.map((child, index) => {
3884
3943
  const isVisible = layout.visibleItems.length > 0 ? index < layout.visibleItems.length : true;
3885
- return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "block" : "none" }, children: child }, `item-${index}`);
3944
+ return /* @__PURE__ */ jsx("div", { style: { display: isVisible ? "flex" : "none", alignItems: "stretch" }, children: renderChildFn && childNodes ? renderChildFn(childNodes[index], false) : child }, `item-${index}`);
3886
3945
  })
3887
3946
  }
3888
3947
  ),
@@ -3890,8 +3949,19 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3890
3949
  ResponsiveBarDropdown,
3891
3950
  {
3892
3951
  overflowIcon,
3952
+ dropdownText,
3953
+ dropdownAlignment: effectiveAlignment,
3954
+ triggerTemplate,
3893
3955
  className: styles$1i.overflowDropdown,
3894
- children: layout.overflowItems.map((item2, index) => /* @__PURE__ */ jsx(MenuItem, { children: item2 }, index))
3956
+ onWillOpen,
3957
+ registerComponentApi: (api) => {
3958
+ dropdownApiRef.current = api;
3959
+ },
3960
+ children: layout.overflowItems.map((item2, index) => {
3961
+ const originalIndex = layout.visibleItems.length + index;
3962
+ const renderedChild = renderChildFn && childNodes ? renderChildFn(childNodes[originalIndex], true) : item2;
3963
+ return /* @__PURE__ */ jsx(MenuItem, { compact: true, children: renderedChild }, index);
3964
+ })
3895
3965
  }
3896
3966
  )
3897
3967
  ] })
@@ -3899,6 +3969,21 @@ const ResponsiveBar = forwardRef(function ResponsiveBar2({
3899
3969
  }
3900
3970
  );
3901
3971
  });
3972
+ const ResponsiveBarItem = memo(
3973
+ ({ node, isOverflow, renderChild: renderChild2, layoutContext }) => {
3974
+ const nodeWithContext = useMemo(() => {
3975
+ return {
3976
+ type: "Container",
3977
+ contextVars: {
3978
+ $overflow: isOverflow
3979
+ },
3980
+ children: Array.isArray(node) ? node : [node]
3981
+ };
3982
+ }, [node, isOverflow]);
3983
+ return /* @__PURE__ */ jsx(Fragment, { children: renderChild2(nodeWithContext, layoutContext) });
3984
+ }
3985
+ );
3986
+ ResponsiveBarItem.displayName = "ResponsiveBarItem";
3902
3987
  const COMP$1w = "ResponsiveBar";
3903
3988
  const ResponsiveBarMd = createMetadata({
3904
3989
  status: "stable",
@@ -3916,17 +4001,54 @@ const ResponsiveBarMd = createMetadata({
3916
4001
  valueType: "string",
3917
4002
  defaultValue: defaultResponsiveBarProps.overflowIcon
3918
4003
  },
4004
+ dropdownText: {
4005
+ description: "Text to display in the dropdown trigger button label when items overflow. This text is used for accessibility and appears alongside the overflow icon.",
4006
+ valueType: "string",
4007
+ defaultValue: defaultResponsiveBarProps.dropdownText
4008
+ },
4009
+ dropdownAlignment: {
4010
+ description: "Alignment of the dropdown menu relative to the trigger button. By default, uses 'end' when reverse is false (dropdown on the right/bottom) and 'start' when reverse is true (dropdown on the left/top).",
4011
+ valueType: "string",
4012
+ availableValues: alignmentOptionMd
4013
+ },
4014
+ triggerTemplate: dTriggerTemplate(COMP$1w),
3919
4015
  gap: {
3920
4016
  description: "Gap between child elements in pixels. Controls the spacing between items in the responsive bar layout.",
3921
4017
  valueType: "number",
3922
4018
  defaultValue: defaultResponsiveBarProps.gap
4019
+ },
4020
+ reverse: {
4021
+ description: "Reverses the direction of child elements. In horizontal mode, items are arranged from right to left instead of left to right. In vertical mode, items are arranged from bottom to top instead of top to bottom. The dropdown menu position also adjusts to appear at the start (left/top) instead of the end (right/bottom).",
4022
+ valueType: "boolean",
4023
+ defaultValue: defaultResponsiveBarProps.reverse
3923
4024
  }
3924
4025
  },
3925
4026
  events: {
3926
- click: dClick(COMP$1w)
4027
+ click: dClick(COMP$1w),
4028
+ willOpen: d(
4029
+ `This event fires when the \`${COMP$1w}\` overflow dropdown menu is about to be opened. You can prevent opening the menu by returning \`false\` from the event handler. Otherwise, the menu will open at the end of the event handler like normal.`
4030
+ )
4031
+ },
4032
+ apis: {
4033
+ close: {
4034
+ description: `This method closes the overflow dropdown menu.`,
4035
+ signature: "close(): void"
4036
+ },
4037
+ open: {
4038
+ description: `This method opens the overflow dropdown menu.`,
4039
+ signature: "open(): void"
4040
+ },
4041
+ hasOverflow: {
4042
+ description: `This method returns true if the ResponsiveBar currently has an overflow menu (i.e., some items don't fit and are in the dropdown).`,
4043
+ signature: "hasOverflow(): boolean"
4044
+ }
4045
+ },
4046
+ contextVars: {
4047
+ $overflow: {
4048
+ description: "Boolean indicating whether the child component is displayed in the overflow dropdown menu (true) or visible in the main bar (false).",
4049
+ valueType: "boolean"
4050
+ }
3927
4051
  },
3928
- apis: {},
3929
- contextVars: {},
3930
4052
  themeVars: parseScssVar(styles$1i.themeVars),
3931
4053
  limitThemeVarsToComponent: true,
3932
4054
  defaultThemeVars: {
@@ -3938,16 +4060,43 @@ const ResponsiveBarMd = createMetadata({
3938
4060
  const responsiveBarComponentRenderer = createComponentRenderer(
3939
4061
  COMP$1w,
3940
4062
  ResponsiveBarMd,
3941
- ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler }) => {
4063
+ ({ node, extractValue, renderChild: renderChild2, className, lookupEventHandler, registerComponentApi, layoutContext }) => {
4064
+ const children = Array.isArray(node.children) ? node.children : node.children ? [node.children] : [];
4065
+ const renderChildWithContext = (childNode, isOverflow) => /* @__PURE__ */ jsx(
4066
+ ResponsiveBarItem,
4067
+ {
4068
+ node: childNode,
4069
+ isOverflow,
4070
+ renderChild: renderChild2,
4071
+ layoutContext
4072
+ }
4073
+ );
3942
4074
  return /* @__PURE__ */ jsx(
3943
4075
  ResponsiveBar,
3944
4076
  {
3945
4077
  orientation: extractValue(node.props?.orientation),
3946
4078
  overflowIcon: extractValue(node.props?.overflowIcon),
4079
+ dropdownText: extractValue(node.props?.dropdownText),
4080
+ dropdownAlignment: extractValue(node.props?.dropdownAlignment),
4081
+ triggerTemplate: renderChild2(node.props?.triggerTemplate),
3947
4082
  gap: extractValue(node.props?.gap),
4083
+ reverse: extractValue.asOptionalBoolean(node.props?.reverse),
3948
4084
  onClick: lookupEventHandler("click"),
4085
+ onWillOpen: lookupEventHandler("willOpen"),
4086
+ registerComponentApi,
3949
4087
  className,
3950
- children: renderChild2(node.children)
4088
+ childNodes: children,
4089
+ renderChildFn: renderChildWithContext,
4090
+ children: children.map((child, index) => /* @__PURE__ */ jsx(
4091
+ ResponsiveBarItem,
4092
+ {
4093
+ node: child,
4094
+ isOverflow: false,
4095
+ renderChild: renderChild2,
4096
+ layoutContext
4097
+ },
4098
+ index
4099
+ ))
3951
4100
  }
3952
4101
  );
3953
4102
  }
@@ -15728,20 +15877,22 @@ const avatarComponentRenderer = createComponentRenderer(
15728
15877
  }
15729
15878
  );
15730
15879
  const themeVars$D = `'{"backgroundColor-ContentSeparator": "var(--xmlui-backgroundColor-ContentSeparator)", "thickness-ContentSeparator": "var(--xmlui-thickness-ContentSeparator)", "length-ContentSeparator": "var(--xmlui-length-ContentSeparator)", "marginTop-ContentSeparator": "var(--xmlui-marginTop-ContentSeparator)", "marginBottom-ContentSeparator": "var(--xmlui-marginBottom-ContentSeparator)", "marginVertical-ContentSeparator": "var(--xmlui-marginVertical-ContentSeparator)", "marginLeft-ContentSeparator": "var(--xmlui-marginLeft-ContentSeparator)", "marginRight-ContentSeparator": "var(--xmlui-marginRight-ContentSeparator)", "marginHorizontal-ContentSeparator": "var(--xmlui-marginHorizontal-ContentSeparator)", "paddingTop-ContentSeparator": "var(--xmlui-paddingTop-ContentSeparator)", "paddingBottom-ContentSeparator": "var(--xmlui-paddingBottom-ContentSeparator)", "paddingVertical-ContentSeparator": "var(--xmlui-paddingVertical-ContentSeparator)", "paddingLeft-ContentSeparator": "var(--xmlui-paddingLeft-ContentSeparator)", "paddingRight-ContentSeparator": "var(--xmlui-paddingRight-ContentSeparator)", "paddingHorizontal-ContentSeparator": "var(--xmlui-paddingHorizontal-ContentSeparator)"}'`;
15731
- const separator = "_separator_1r9lf_14";
15732
- const horizontal$3 = "_horizontal_1r9lf_27";
15733
- const vertical$3 = "_vertical_1r9lf_31";
15880
+ const separator = "_separator_hmp7g_14";
15881
+ const horizontal$3 = "_horizontal_hmp7g_27";
15882
+ const stretchToFit = "_stretchToFit_hmp7g_31";
15883
+ const vertical$3 = "_vertical_hmp7g_35";
15734
15884
  const styles$Y = {
15735
15885
  themeVars: themeVars$D,
15736
15886
  separator,
15737
15887
  horizontal: horizontal$3,
15888
+ stretchToFit,
15738
15889
  vertical: vertical$3
15739
15890
  };
15740
15891
  const defaultProps$W = {
15741
15892
  orientation: "horizontal"
15742
15893
  };
15743
15894
  const ContentSeparator = forwardRef(
15744
- ({ orientation = defaultProps$W.orientation, thickness, length, style: style2, className, ...rest }, ref) => {
15895
+ ({ orientation = defaultProps$W.orientation, thickness, length, hasExplicitLength = false, style: style2, className, ...rest }, ref) => {
15745
15896
  const inlineStyles = {};
15746
15897
  if (thickness !== void 0) {
15747
15898
  if (orientation === "horizontal") {
@@ -15766,7 +15917,8 @@ const ContentSeparator = forwardRef(
15766
15917
  styles$Y.separator,
15767
15918
  {
15768
15919
  [styles$Y.horizontal]: orientation === "horizontal",
15769
- [styles$Y.vertical]: orientation === "vertical"
15920
+ [styles$Y.vertical]: orientation === "vertical",
15921
+ [styles$Y.stretchToFit]: !hasExplicitLength
15770
15922
  },
15771
15923
  className
15772
15924
  ),
@@ -15819,12 +15971,16 @@ const contentSeparatorComponentRenderer = createComponentRenderer(
15819
15971
  COMP$1h,
15820
15972
  ContentSeparatorMd,
15821
15973
  ({ node, className, extractValue }) => {
15974
+ const orientation = extractValue(node.props.orientation);
15975
+ const length = extractValue.asSize(node.props.length);
15976
+ const hasExplicitLength = length !== void 0 || orientation === "vertical" && node.props.height !== void 0 || orientation === "horizontal" && node.props.width !== void 0;
15822
15977
  return /* @__PURE__ */ jsx(
15823
15978
  ContentSeparator,
15824
15979
  {
15825
- orientation: extractValue(node.props.orientation),
15980
+ orientation,
15826
15981
  thickness: extractValue.asSize(node.props.thickness),
15827
- length: extractValue.asSize(node.props.length),
15982
+ length,
15983
+ hasExplicitLength,
15828
15984
  className
15829
15985
  }
15830
15986
  );
@@ -22767,14 +22923,18 @@ const Form = forwardRef(function({
22767
22923
  dispatch(formSubmitting());
22768
22924
  try {
22769
22925
  const filteredSubject = validationResult.data;
22770
- const canSubmit = await onWillSubmit?.(filteredSubject);
22771
- if (canSubmit === false) {
22926
+ const willSubmitResult = await onWillSubmit?.(filteredSubject);
22927
+ if (willSubmitResult === false) {
22772
22928
  dispatch(
22773
22929
  backendValidationArrived({ generalValidationResults: [], fieldValidationResults: {} })
22774
22930
  );
22775
22931
  return;
22776
22932
  }
22777
- const result = await onSubmit?.(filteredSubject, {
22933
+ let dataToSubmit = filteredSubject;
22934
+ if (willSubmitResult !== null && willSubmitResult !== void 0 && willSubmitResult !== "" && typeof willSubmitResult === "object" && !Array.isArray(willSubmitResult)) {
22935
+ dataToSubmit = willSubmitResult;
22936
+ }
22937
+ const result = await onSubmit?.(dataToSubmit, {
22778
22938
  passAsDefaultBody: true
22779
22939
  });
22780
22940
  dispatch(formSubmitted());
@@ -24523,7 +24683,7 @@ function ApiInterceptorProvider({
24523
24683
  return;
24524
24684
  }
24525
24685
  void (async () => {
24526
- const { initMock } = await import("./initMock-BuPNXouY.js");
24686
+ const { initMock } = await import("./initMock-C17fxLuA.js");
24527
24687
  const apiInstance2 = await initMock(interceptor);
24528
24688
  setApiInstance(apiInstance2);
24529
24689
  setInitialized(true);
@@ -24540,7 +24700,7 @@ function ApiInterceptorProvider({
24540
24700
  if (process.env.VITE_MOCK_ENABLED) {
24541
24701
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24542
24702
  useWorker ? import("./apiInterceptorWorker-dwrAyq6l.js") : Promise.resolve({ createApiInterceptorWorker: () => null }),
24543
- import("./initMock-BuPNXouY.js")
24703
+ import("./initMock-C17fxLuA.js")
24544
24704
  ]);
24545
24705
  if (interceptor || forceInitialize) {
24546
24706
  const apiInstance2 = await initMock(interceptor || {});
@@ -24577,7 +24737,7 @@ function ApiInterceptorProvider({
24577
24737
  void (async () => {
24578
24738
  const [{ createApiInterceptorWorker }, { initMock }] = await Promise.all([
24579
24739
  import("./apiInterceptorWorker-dwrAyq6l.js"),
24580
- import("./initMock-BuPNXouY.js")
24740
+ import("./initMock-C17fxLuA.js")
24581
24741
  ]);
24582
24742
  const apiInstance2 = await initMock(interceptor);
24583
24743
  await createApiInterceptorWorker(apiInstance2, parentInterceptorWorker);
@@ -28422,7 +28582,7 @@ const FormMd = createMetadata({
28422
28582
  },
28423
28583
  events: {
28424
28584
  willSubmit: d(
28425
- `The form infrastructure fires this event just before the form is submitted. The event argument is the current \`data\` value to be submitted. You can cancel the submission by returning \`false\` from the event handler.`
28585
+ `The form infrastructure fires this event just before the form is submitted. The event argument is the current \`data\` value to be submitted. The return value controls submission behavior: returning \`false\` cancels the submission; returning a plain object submits that object instead; returning \`null\`, \`undefined\`, an empty string, or any non-object value proceeds with normal submission.`
28426
28586
  ),
28427
28587
  submit: d(
28428
28588
  `The form infrastructure fires this event when the form is submitted. The event argument is the current \`data\` value to save.`
@@ -46479,7 +46639,7 @@ function IconProvider({ children }) {
46479
46639
  /* @__PURE__ */ jsx("svg", { style: { display: "none" }, ref: spriteRootRef })
46480
46640
  ] });
46481
46641
  }
46482
- const version = "0.11.13";
46642
+ const version = "0.11.15";
46483
46643
  const miscellaneousUtils = {
46484
46644
  capitalize,
46485
46645
  pluralize: pluralize$1,
@@ -51632,6 +51792,7 @@ const collectedComponentMetadata = {
51632
51792
  RadioGroup: RadioGroupMd,
51633
51793
  RealTimeAdapter: RealTimeAdapterMd,
51634
51794
  Redirect: RedirectMd,
51795
+ ResponsiveBar: ResponsiveBarMd,
51635
51796
  Select: SelectMd,
51636
51797
  SelectionStore: SelectionStoreMd,
51637
51798
  Slider: SliderMd,