@lumx/vue 4.10.0 → 4.11.0-alpha.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.
Files changed (49) hide show
  1. package/_internal/{BqMObS2T.js → BiLpoFMC.js} +49 -45
  2. package/_internal/BiLpoFMC.js.map +1 -0
  3. package/components/alert-dialog/AlertDialog.d.ts +44 -0
  4. package/components/alert-dialog/AlertDialog.stories.d.ts +104 -0
  5. package/components/alert-dialog/index.d.ts +1 -0
  6. package/components/avatar/Avatar.d.ts +1 -1
  7. package/components/chip/SelectionChipGroup.d.ts +30 -0
  8. package/components/chip/SelectionChipGroup.stories.d.ts +66 -0
  9. package/components/chip/Stories/CustomRender.vue.d.ts +2 -0
  10. package/components/chip/Stories/InTextField.vue.d.ts +2 -0
  11. package/components/chip/index.d.ts +1 -0
  12. package/components/combobox/Combobox.test.stories.d.ts +22 -0
  13. package/components/combobox/ComboboxInput.d.ts +30 -6
  14. package/components/combobox/ComboboxList.d.ts +1 -1
  15. package/components/combobox/ComboboxOption.d.ts +1 -1
  16. package/components/combobox/ComboboxOptionAction.d.ts +1 -1
  17. package/components/combobox/ComboboxPopover.d.ts +2 -2
  18. package/components/combobox/ComboboxSection.d.ts +1 -1
  19. package/components/combobox/index.d.ts +8 -7
  20. package/components/dialog/Dialog.d.ts +66 -0
  21. package/components/dialog/Dialog.stories.d.ts +106 -0
  22. package/components/dialog/index.d.ts +2 -0
  23. package/components/expansion-panel/ExpansionPanel.d.ts +1 -1
  24. package/components/flex-box/FlexBox.d.ts +0 -12
  25. package/components/generic-block/GenericBlock.d.ts +1 -1
  26. package/components/list/ListItem.d.ts +1 -1
  27. package/components/list/ListSection.d.ts +1 -1
  28. package/components/popover/Popover.d.ts +1 -1
  29. package/components/popover-dialog/PopoverDialog.d.ts +1 -1
  30. package/components/popover-dialog/PopoverDialog.test.stories.d.ts +1 -1
  31. package/components/thumbnail/Thumbnail.d.ts +1 -1
  32. package/components/toolbar/Toolbar.d.ts +1 -1
  33. package/composables/useAttrFallback.d.ts +28 -0
  34. package/composables/useClassName.d.ts +15 -0
  35. package/composables/useDisableBodyScroll.d.ts +8 -0
  36. package/composables/useRovingTabIndexContainer.d.ts +8 -1
  37. package/composables/useTransitionVisibility.d.ts +11 -0
  38. package/index.d.ts +2 -0
  39. package/index.js +6151 -5491
  40. package/index.js.map +1 -1
  41. package/package.json +5 -4
  42. package/utils/InfiniteScroll/InfiniteScroll.d.ts +7 -0
  43. package/utils/InfiniteScroll/InfiniteScroll.test.stories.d.ts +39 -0
  44. package/utils/InfiniteScroll/index.d.ts +1 -0
  45. package/utils/index.d.ts +1 -0
  46. package/utils/index.js +55 -18
  47. package/utils/index.js.map +1 -1
  48. package/utils/isComponentType.d.ts +6 -0
  49. package/_internal/BqMObS2T.js.map +0 -1
@@ -53,7 +53,8 @@ export declare const Combobox: {
53
53
  onSelect?: (option: {
54
54
  value: string;
55
55
  }) => void;
56
- autoFilter?: boolean;
56
+ filter?: "auto" | "manual" | "off";
57
+ openOnFocus?: boolean;
57
58
  } & {
58
59
  onSelect?: ((option: {
59
60
  value: string;
@@ -64,11 +65,11 @@ export declare const Combobox: {
64
65
  onClear?: ((_event?: MouseEvent | undefined) => any) | undefined;
65
66
  }, import('vue').PublicProps>;
66
67
  /** Listbox container that registers with the combobox handle and tracks loading state. */
67
- List: import('vue').DefineSetupFnComponent<import('./ComboboxList').ComboboxListProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxList').ComboboxListProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "aria-label" | "id" | "aria-busy"> & {
68
+ List: import('vue').DefineSetupFnComponent<import('./ComboboxList').ComboboxListProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxList').ComboboxListProps, "className" | import('@lumx/core/js/types').PropsToOverride | "id" | "children" | "aria-label" | "aria-busy"> & {
68
69
  class?: string;
69
70
  } & {}, import('vue').PublicProps>;
70
71
  /** Selectable option item with filtering and keyboard navigation support. */
71
- Option: import('vue').DefineSetupFnComponent<import('./ComboboxOption').ComboboxOptionProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxOption').ComboboxOptionProps, "className" | import('@lumx/core/js/types').PropsToOverride | "hidden" | "id" | "descriptionId" | "isGrid" | import('@lumx/core/js/components/Combobox/ComboboxOption').ComboboxOptionPropsToOverride> & {
72
+ Option: import('vue').DefineSetupFnComponent<import('./ComboboxOption').ComboboxOptionProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxOption').ComboboxOptionProps, "className" | import('@lumx/core/js/types').PropsToOverride | "id" | "hidden" | "descriptionId" | "isGrid" | import('@lumx/core/js/components/Combobox/ComboboxOption').ComboboxOptionPropsToOverride> & {
72
73
  class?: string;
73
74
  } & {
74
75
  tooltipProps?: Partial<import('../tooltip').TooltipProps>;
@@ -76,7 +77,7 @@ export declare const Combobox: {
76
77
  actionProps?: Record<string, any>;
77
78
  } & {}, import('vue').PublicProps>;
78
79
  /** Secondary action button within a grid-mode option row, rendered as an independent gridcell. */
79
- OptionAction: import('vue').DefineSetupFnComponent<import('./ComboboxOptionAction').ComboboxOptionActionProps, {}, {}, Pick<import('../../utils/VueToJSX').VueToJSXProps<import('@lumx/core/js/components/Combobox/ComboboxOptionAction').ComboboxOptionActionProps>, "isDisabled" | "class"> & {
80
+ OptionAction: import('vue').DefineSetupFnComponent<import('./ComboboxOptionAction').ComboboxOptionActionProps, {}, {}, Pick<import('../../utils/VueToJSX').VueToJSXProps<import('@lumx/core/js/components/Combobox/ComboboxOptionAction').ComboboxOptionActionProps>, "class" | "isDisabled"> & {
80
81
  onClick?: (evt: MouseEvent) => void;
81
82
  } & {}, import('vue').PublicProps>;
82
83
  /** Info button on an option that shows a popover on hover or keyboard highlight. */
@@ -94,11 +95,11 @@ export declare const Combobox: {
94
95
  class?: string;
95
96
  } & {}, import('vue').PublicProps>;
96
97
  /** Floating popover container that auto-binds to the combobox anchor and open/close state. */
97
- Popover: import('vue').DefineSetupFnComponent<import('./ComboboxPopover').ComboboxPopoverProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxPopover').ComboboxPopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "isOpen" | "anchorRef"> & {
98
+ Popover: import('vue').DefineSetupFnComponent<import('./ComboboxPopover').ComboboxPopoverProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxPopover').ComboboxPopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "isOpen" | "children" | "anchorRef"> & {
98
99
  class?: string;
99
- } & Partial<Omit<import('../popover').PopoverProps, "class" | "isOpen" | "onClose" | "anchorRef">> & {}, import('vue').PublicProps>;
100
+ } & Partial<Omit<import('../popover').PopoverProps, "isOpen" | "class" | "onClose" | "anchorRef">> & {}, import('vue').PublicProps>;
100
101
  /** Labelled group of options that auto-hides when all its child options are filtered out. */
101
- Section: import('vue').DefineSetupFnComponent<import('./ComboboxSection').ComboboxSectionProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxSection').ComboboxSectionProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "hidden" | "aria-hidden"> & {
102
+ Section: import('vue').DefineSetupFnComponent<import('./ComboboxSection').ComboboxSectionProps, {}, {}, Omit<import('@lumx/core/js/components/Combobox/ComboboxSection').ComboboxSectionProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "aria-hidden" | "hidden"> & {
102
103
  class?: string;
103
104
  } & {}, import('vue').PublicProps>;
104
105
  /** Displays empty, error, and loading state messages for the combobox list. */
@@ -0,0 +1,66 @@
1
+ import { Ref } from 'vue';
2
+ import { BaseDialogProps, DialogSizes } from '@lumx/core/js/components/Dialog';
3
+ import { GenericProps, HasCloseMode } from '@lumx/core/js/types';
4
+ export type DialogProps = Pick<BaseDialogProps, 'forceFooterDivider' | 'forceHeaderDivider' | 'isLoading'> & HasCloseMode & {
5
+ /** Additional class name. */
6
+ class?: string;
7
+ /** Whether the dialog is open. */
8
+ isOpen?: boolean;
9
+ /** Size variant. */
10
+ size?: DialogSizes;
11
+ /** Z-axis position. */
12
+ zIndex?: number;
13
+ /** Additional props for the dialog container element. */
14
+ dialogProps?: GenericProps;
15
+ /** Reference to the parent element that triggered modal opening (gets focus back on close). */
16
+ parentElement?: HTMLElement;
17
+ /** Element that should receive focus when the dialog opens. By default the first focusable child. */
18
+ focusElement?: HTMLElement;
19
+ /** Reference to the dialog content element. */
20
+ contentRef?: Ref<HTMLDivElement>;
21
+ /** Whether to keep the dialog open on clickaway or escape press. */
22
+ preventAutoClose?: boolean;
23
+ /** Whether to keep the dialog open on escape press. */
24
+ preventCloseOnEscape?: boolean;
25
+ /** Whether to keep the dialog open on clickaway. */
26
+ preventCloseOnClick?: boolean;
27
+ /** Whether to disable body scroll when the dialog is open. */
28
+ disableBodyScroll?: boolean;
29
+ };
30
+ export declare const emitSchema: {
31
+ close: () => boolean;
32
+ visibilityChange: (isVisible: boolean) => boolean;
33
+ };
34
+ declare const Dialog: import('vue').DefineSetupFnComponent<DialogProps, {
35
+ close: () => boolean;
36
+ visibilityChange: (isVisible: boolean) => boolean;
37
+ }, {}, Pick<BaseDialogProps, "forceFooterDivider" | "forceHeaderDivider" | "isLoading"> & HasCloseMode & {
38
+ /** Additional class name. */
39
+ class?: string;
40
+ /** Whether the dialog is open. */
41
+ isOpen?: boolean;
42
+ /** Size variant. */
43
+ size?: DialogSizes;
44
+ /** Z-axis position. */
45
+ zIndex?: number;
46
+ /** Additional props for the dialog container element. */
47
+ dialogProps?: GenericProps;
48
+ /** Reference to the parent element that triggered modal opening (gets focus back on close). */
49
+ parentElement?: HTMLElement;
50
+ /** Element that should receive focus when the dialog opens. By default the first focusable child. */
51
+ focusElement?: HTMLElement;
52
+ /** Reference to the dialog content element. */
53
+ contentRef?: Ref<HTMLDivElement>;
54
+ /** Whether to keep the dialog open on clickaway or escape press. */
55
+ preventAutoClose?: boolean;
56
+ /** Whether to keep the dialog open on escape press. */
57
+ preventCloseOnEscape?: boolean;
58
+ /** Whether to keep the dialog open on clickaway. */
59
+ preventCloseOnClick?: boolean;
60
+ /** Whether to disable body scroll when the dialog is open. */
61
+ disableBodyScroll?: boolean;
62
+ } & {
63
+ onClose?: (() => any) | undefined;
64
+ onVisibilityChange?: ((isVisible: boolean) => any) | undefined;
65
+ }, import('vue').PublicProps>;
66
+ export default Dialog;
@@ -0,0 +1,106 @@
1
+ declare const _default: {
2
+ component: any;
3
+ render: any;
4
+ parameters: {
5
+ chromatic: {
6
+ pauseAnimationAtEnd: boolean;
7
+ delay: number;
8
+ };
9
+ };
10
+ decorators: ((story: any, context: any) => any)[];
11
+ args: Partial<import('@lumx/core/js/components/Dialog').DialogProps>;
12
+ argTypes: {
13
+ size: {
14
+ control: {
15
+ type: "select" | "inline-radio";
16
+ };
17
+ options: ("big" | "tiny" | "regular" | "huge")[];
18
+ mapping: Record<string, "big" | "tiny" | "regular" | "huge"> | undefined;
19
+ };
20
+ onVisibilityChange: {
21
+ action: boolean;
22
+ };
23
+ children: {
24
+ control: boolean;
25
+ };
26
+ closeMode: {
27
+ control: {
28
+ type: "inline-radio";
29
+ };
30
+ options: string[];
31
+ };
32
+ };
33
+ title: string;
34
+ };
35
+ export default _default;
36
+ export declare const Default: {
37
+ args: {
38
+ children: string;
39
+ };
40
+ };
41
+ export declare const Loading: {
42
+ args: {
43
+ isLoading: boolean;
44
+ children: string;
45
+ };
46
+ };
47
+ export declare const WithHeaderFooter: {
48
+ args: {
49
+ header: string;
50
+ footer: string;
51
+ children: string;
52
+ };
53
+ };
54
+ export declare const ForceDivider: {
55
+ args: {
56
+ forceFooterDivider: boolean;
57
+ forceHeaderDivider: boolean;
58
+ header: string;
59
+ footer: string;
60
+ children: string;
61
+ };
62
+ };
63
+ export declare const LongContent: {
64
+ args: {
65
+ children: string;
66
+ header: string;
67
+ footer: string;
68
+ };
69
+ };
70
+ export declare const PreventAutoClose: {
71
+ args: {
72
+ preventAutoClose: boolean;
73
+ children: string;
74
+ };
75
+ };
76
+ export declare const PreventCloseOnEscape: {
77
+ args: {
78
+ preventCloseOnEscape: boolean;
79
+ children: string;
80
+ };
81
+ };
82
+ export declare const PreventCloseOnClick: {
83
+ args: {
84
+ preventCloseOnClick: boolean;
85
+ children: string;
86
+ };
87
+ };
88
+ /**
89
+ * More complex header/footer using Vue named slots
90
+ */
91
+ export declare const WithHeaderFooterChildren: {
92
+ render: () => import("vue/jsx-runtime").JSX.Element;
93
+ };
94
+ /**
95
+ * Dialog needing a confirmation before close using a nested Dialog
96
+ */
97
+ export declare const WithConfirmClose: {
98
+ render: () => import("vue/jsx-runtime").JSX.Element;
99
+ };
100
+ /**
101
+ * Test dialog focus trap (focus is contained inside the dialog) with all kinds of focusable and non-focusable items
102
+ */
103
+ export declare const FocusTrap: {
104
+ tags: string[];
105
+ render: () => import("vue/jsx-runtime").JSX.Element;
106
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Dialog, type DialogProps } from './Dialog';
2
+ export type { DialogSizes } from '@lumx/core/js/components/Dialog';
@@ -23,7 +23,7 @@ declare const ExpansionPanel: import('vue').DefineSetupFnComponent<ExpansionPane
23
23
  open: (event: MouseEvent) => boolean;
24
24
  close: (event: MouseEvent) => boolean;
25
25
  toggleOpen: (shouldOpen: boolean, event: MouseEvent) => boolean;
26
- }, {}, Omit<UIProps, "className" | "footer" | "ref" | "handleClick" | "handleChange" | "handleInput" | "handleKeyPress" | "handleClose" | "handleFocus" | "handleBeforeClick" | "handleAfterClick" | "handleMouseEnter" | "handleMouseLeave" | "handleKeyDown" | "children" | "content" | "IconButton" | "toggleButtonProps" | "handleOpen" | "handleToggleOpen" | "wrapperRef" | "headerProps" | "headerContent" | "dragHandle" | "isChildrenVisible"> & {
26
+ }, {}, Omit<UIProps, "className" | "footer" | "ref" | "handleClick" | "handleChange" | "handleInput" | "handleKeyPress" | "handleClose" | "handleFocus" | "handleBeforeClick" | "handleAfterClick" | "handleMouseEnter" | "handleMouseLeave" | "handleKeyDown" | "wrapperRef" | "content" | "children" | "IconButton" | "toggleButtonProps" | "handleOpen" | "handleToggleOpen" | "headerProps" | "headerContent" | "dragHandle" | "isChildrenVisible"> & {
27
27
  class?: string;
28
28
  } & {
29
29
  /** Props to pass to the toggle button (minus those already set by the ExpansionPanel). */
@@ -3,12 +3,6 @@ import { VueToJSXProps } from '../../utils/VueToJSX';
3
3
  export type FlexBoxProps = VueToJSXProps<UIProps, 'vAlign' | 'hAlign'> & {
4
4
  /** Customize the root element. */
5
5
  as?: string;
6
- /**
7
- * @deprecated please use `class`
8
- * custom class name, used for compatibility when using
9
- * FlexBox as a nested component.
10
- */
11
- className?: string;
12
6
  /** FlexBox vertical alignment */
13
7
  verticalAlign?: UIProps['vAlign'];
14
8
  /** FlexBox horizontal alignment */
@@ -26,12 +20,6 @@ declare const FlexBox: import('vue').DefineSetupFnComponent<FlexBoxProps, {}, {}
26
20
  } & {
27
21
  /** Customize the root element. */
28
22
  as?: string;
29
- /**
30
- * @deprecated please use `class`
31
- * custom class name, used for compatibility when using
32
- * FlexBox as a nested component.
33
- */
34
- className?: string;
35
23
  /** FlexBox vertical alignment */
36
24
  verticalAlign?: UIProps["vAlign"];
37
25
  /** FlexBox horizontal alignment */
@@ -36,7 +36,7 @@ export type GenericBlockProps = VueToJSXProps<UIProps, GenericBlockPropsToOverri
36
36
  * - default slot => The main content displayed.
37
37
  * - `actions` slot => One or more actions to set after the element.
38
38
  */
39
- declare const GenericBlock: import('vue').DefineSetupFnComponent<GenericBlockProps, {}, {}, Omit<UIProps, "className" | "figure" | import('@lumx/core/js/types').PropsToOverride | "actions" | "children" | "hAlign" | "vAlign" | GenericBlockPropsToOverride | "contentProps" | "actionsProps" | "figureProps"> & {
39
+ declare const GenericBlock: import('vue').DefineSetupFnComponent<GenericBlockProps, {}, {}, Omit<UIProps, "className" | "figure" | import('@lumx/core/js/types').PropsToOverride | "children" | "actions" | "hAlign" | "vAlign" | GenericBlockPropsToOverride | "contentProps" | "actionsProps" | "figureProps"> & {
40
40
  class?: string;
41
41
  } & {
42
42
  /** Customize the root element tag. */
@@ -7,7 +7,7 @@ export declare const emitSchema: {
7
7
  };
8
8
  declare const _default: import('vue').DefineSetupFnComponent<ListItemProps, {
9
9
  click: (event: MouseEvent) => boolean;
10
- }, {}, Omit<UIProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "after" | "before" | "linkRef"> & {
10
+ }, {}, Omit<UIProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "before" | "after" | "linkRef"> & {
11
11
  class?: string;
12
12
  } & {
13
13
  onClick?: ((event: MouseEvent) => any) | undefined;
@@ -7,7 +7,7 @@ export type ListSectionProps = VueToJSXProps<UIProps, 'id' | 'Text'>;
7
7
  * @param props Component props.
8
8
  * @return Vue element.
9
9
  */
10
- declare const ListSection: import('vue').DefineSetupFnComponent<ListSectionProps, {}, {}, Omit<UIProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "Text" | "id"> & {
10
+ declare const ListSection: import('vue').DefineSetupFnComponent<ListSectionProps, {}, {}, Omit<UIProps, "className" | import('@lumx/core/js/types').PropsToOverride | "id" | "children" | "Text"> & {
11
11
  class?: string;
12
12
  } & {}, import('vue').PublicProps>;
13
13
  export default ListSection;
@@ -25,7 +25,7 @@ export declare const emitSchema: {
25
25
  };
26
26
  declare const Popover: import('vue').DefineSetupFnComponent<PopoverProps, {
27
27
  close: () => boolean;
28
- }, {}, Omit<CorePopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "isOpen" | "anchorRef" | "boundaryRef" | "focusElement" | "parentElement" | "focusTrapZoneElement"> & {
28
+ }, {}, Omit<CorePopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "isOpen" | "focusElement" | "children" | "parentElement" | "anchorRef" | "boundaryRef" | "focusTrapZoneElement"> & {
29
29
  class?: string;
30
30
  } & {
31
31
  /** Reference to the DOM element used to set the position of the popover. Accepts a Vue Ref for reactive positioning. */
@@ -11,7 +11,7 @@ export declare const emitSchema: {
11
11
  };
12
12
  declare const PopoverDialog: import('vue').DefineSetupFnComponent<PopoverDialogProps, {
13
13
  close: () => boolean;
14
- }, {}, Omit<CorePopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "children" | "isOpen" | "anchorRef" | "boundaryRef" | "focusElement" | "parentElement" | "focusTrapZoneElement"> & {
14
+ }, {}, Omit<CorePopoverProps, "className" | import('@lumx/core/js/types').PropsToOverride | "isOpen" | "focusElement" | "children" | "parentElement" | "anchorRef" | "boundaryRef" | "focusTrapZoneElement"> & {
15
15
  class?: string;
16
16
  } & {
17
17
  anchorRef?: import('vue').Ref<HTMLElement | undefined> | HTMLElement;
@@ -2,7 +2,7 @@ declare const _default: {
2
2
  title: string;
3
3
  component: import('vue').DefineSetupFnComponent<import('../..').PopoverDialogProps, {
4
4
  close: () => boolean;
5
- }, {}, Omit<import('@lumx/core/js/components/Popover').PopoverProps, "className" | import('../..').PropsToOverride | "children" | "isOpen" | "anchorRef" | "boundaryRef" | "focusElement" | "parentElement" | "focusTrapZoneElement"> & {
5
+ }, {}, Omit<import('@lumx/core/js/components/Popover').PopoverProps, "className" | import('../..').PropsToOverride | "isOpen" | "focusElement" | "children" | "parentElement" | "anchorRef" | "boundaryRef" | "focusTrapZoneElement"> & {
6
6
  class?: string;
7
7
  } & {
8
8
  anchorRef?: import('vue').Ref<HTMLElement | undefined> | HTMLElement;
@@ -21,7 +21,7 @@ export { CLASSNAME, COMPONENT_NAME, DEFAULT_PROPS };
21
21
  declare const Thumbnail: import('vue').DefineSetupFnComponent<ThumbnailProps, {
22
22
  click: (event: Event) => boolean;
23
23
  keyPress: (event: Event) => boolean;
24
- }, {}, Omit<Omit<UIProps, "badge" | "fallback" | "loadingState" | "imgRef" | "focusPointStyle" | "disabledStateProps" | "isAnyDisabled">, "className" | import('@lumx/core/js/types').PropsToOverride | "children"> & {
24
+ }, {}, Omit<Omit<UIProps, "isAnyDisabled" | "disabledStateProps" | "badge" | "fallback" | "loadingState" | "imgRef" | "focusPointStyle">, "className" | import('@lumx/core/js/types').PropsToOverride | "children"> & {
25
25
  class?: string;
26
26
  } & {
27
27
  /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */
@@ -2,7 +2,7 @@ import { ToolbarProps as UIProps, CLASSNAME, TOOLBAR_NAME, DEFAULT_PROPS } from
2
2
  import { VueToJSXProps } from '../../utils/VueToJSX';
3
3
  export type ToolbarProps = VueToJSXProps<UIProps, 'label' | 'after' | 'before'>;
4
4
  export { CLASSNAME, TOOLBAR_NAME, DEFAULT_PROPS };
5
- declare const Toolbar: import('vue').DefineSetupFnComponent<ToolbarProps, {}, {}, Omit<UIProps, "className" | "label" | import('@lumx/core/js/types').PropsToOverride | "children" | "after" | "before"> & {
5
+ declare const Toolbar: import('vue').DefineSetupFnComponent<ToolbarProps, {}, {}, Omit<UIProps, "className" | "label" | import('@lumx/core/js/types').PropsToOverride | "children" | "before" | "after"> & {
6
6
  class?: string;
7
7
  } & {}, import('vue').PublicProps>;
8
8
  export default Toolbar;
@@ -0,0 +1,28 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ /**
3
+ * Composable that falls back to an `$attrs` value when the Vue prop is absent.
4
+ *
5
+ * When a core JSX component renders a Vue sub-component, it passes props using React naming
6
+ * conventions (e.g. `className`, `tabIndex`). Since these names are not declared Vue props,
7
+ * they land in `$attrs`. This composable reads the fallback attr and merges it with the
8
+ * corresponding Vue prop value using a caller-supplied merge function (or `??` by default).
9
+ *
10
+ * Usage inside `defineComponent` setup:
11
+ * ```tsx
12
+ * // With default merge (vueProp ?? attrFallback):
13
+ * const tabIndex = useAttrFallback(() => attrs.tabindex, 'tabIndex');
14
+ *
15
+ * // With custom merge function:
16
+ * const className = useAttrFallback(
17
+ * () => props.class,
18
+ * 'className',
19
+ * (vue, fallback) => classNames.join(vue, fallback as string | undefined) || undefined,
20
+ * );
21
+ * ```
22
+ *
23
+ * @param vueProp The Vue prop value (or a getter/ref returning it).
24
+ * @param attrFallback The attribute name to read from `$attrs` as the fallback.
25
+ * @param merge Optional merge function. Defaults to `vueProp ?? attrFallback`.
26
+ * @return Computed ref holding the merged value.
27
+ */
28
+ export declare function useAttrFallback<T>(vueProp: MaybeRefOrGetter<T>, attrFallback: string, merge?: (vuePropValue: T, attrFallbackValue: unknown) => T): ComputedRef<T>;
@@ -0,0 +1,15 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ /**
3
+ * Composable that merges the Vue `class` prop with the `className` attribute (for React compat).
4
+ *
5
+ * Usage inside `defineComponent` setup:
6
+ * ```tsx
7
+ * const className = useClassName(() => props.class);
8
+ * // Then use className.value instead of props.class when forwarding to the core UI:
9
+ * return () => <SomeUI {...props} className={className.value} />;
10
+ * ```
11
+ *
12
+ * @param classProp The Vue `class` prop value (or a getter/ref returning it).
13
+ * @return Computed ref holding the merged class string (or undefined when empty).
14
+ */
15
+ export declare function useClassName(classProp: MaybeRefOrGetter<string | undefined>): ComputedRef<string | undefined>;
@@ -0,0 +1,8 @@
1
+ import { Ref } from 'vue';
2
+ /**
3
+ * Disables body scroll when the dialog is open.
4
+ * Uses @vueuse/core's useScrollLock which sets overflow:hidden on document.body.
5
+ *
6
+ * @param isActive Whether body scroll should be disabled.
7
+ */
8
+ export declare function useDisableBodyScroll(isActive: Ref<boolean>): void;
@@ -16,10 +16,17 @@ export interface UseRovingTabIndexContainerOptions {
16
16
  * Disabled items are skipped during keyboard navigation.
17
17
  */
18
18
  itemDisabledSelector?: string;
19
+ /**
20
+ * Attribute name indicating the selected item (e.g. `'aria-selected'`, `'aria-checked'`).
21
+ * When set, the roving tabindex will keep `tabindex="0"` in sync with the item
22
+ * whose attribute value is `"true"`.
23
+ * Default: `'aria-selected'`.
24
+ */
25
+ itemSelectedAttr?: string;
19
26
  }
20
27
  /**
21
28
  * Vue composable equivalent of React's useRovingTabIndexContainer.
22
29
  * Sets up roving tab index keyboard navigation on a container element.
23
30
  * Automatically tears down when the container is removed or the composable is unmounted.
24
31
  */
25
- export declare function useRovingTabIndexContainer({ containerRef, itemSelector, onItemFocused, direction, itemDisabledSelector, }: UseRovingTabIndexContainerOptions): void;
32
+ export declare function useRovingTabIndexContainer({ containerRef, itemSelector, onItemFocused, direction, itemDisabledSelector, itemSelectedAttr, }: UseRovingTabIndexContainerOptions): void;
@@ -0,0 +1,11 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ /**
3
+ * Returns true if the component is visible, tracking the opacity transition.
4
+ * Keeps the component mounted during the close animation, then unmounts after the timeout.
5
+ *
6
+ * @param isOpen Whether the component intends to be visible or not.
7
+ * @param timeout Duration of the close animation in ms.
8
+ * @param onVisibilityChange Callback called when the visibility changes.
9
+ * @return ComputedRef<boolean> true if the component should be rendered (open or animating closed)
10
+ */
11
+ export declare function useTransitionVisibility(isOpen: Ref<boolean>, timeout: number, onVisibilityChange?: Ref<((isVisible: boolean) => void) | undefined>): ComputedRef<boolean>;
package/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from '@lumx/core/js/constants';
2
2
  export * from '@lumx/core/js/types';
3
+ export * from './components/alert-dialog';
3
4
  export * from './components/avatar';
4
5
  export * from './components/combobox';
5
6
  export * from './components/badge';
6
7
  export * from './components/button';
7
8
  export * from './components/checkbox';
8
9
  export * from './components/chip';
10
+ export * from './components/dialog';
9
11
  export * from './components/divider';
10
12
  export * from './components/drag-handle';
11
13
  export * from './components/expansion-panel';