@mozaic-ds/vue 2.13.0 → 2.14.0

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 (90) hide show
  1. package/dist/mozaic-vue.css +1 -1
  2. package/dist/mozaic-vue.d.ts +1088 -378
  3. package/dist/mozaic-vue.js +2662 -1854
  4. package/dist/mozaic-vue.js.map +1 -1
  5. package/dist/mozaic-vue.umd.cjs +5 -5
  6. package/dist/mozaic-vue.umd.cjs.map +1 -1
  7. package/package.json +4 -4
  8. package/src/components/actionlistbox/MActionListbox.spec.ts +53 -59
  9. package/src/components/actionlistbox/MActionListbox.stories.ts +22 -1
  10. package/src/components/actionlistbox/MActionListbox.vue +91 -28
  11. package/src/components/actionlistbox/README.md +15 -0
  12. package/src/components/breadcrumb/MBreadcrumb.vue +5 -0
  13. package/src/components/button/README.md +4 -0
  14. package/src/components/checkbox/README.md +2 -0
  15. package/src/components/divider/README.md +4 -0
  16. package/src/components/iconbutton/MIconButton.stories.ts +12 -0
  17. package/src/components/iconbutton/MIconButton.vue +13 -1
  18. package/src/components/iconbutton/README.md +27 -0
  19. package/src/components/loader/README.md +2 -0
  20. package/src/components/navigationindicator/MNavigationIndicator.spec.ts +152 -0
  21. package/src/components/navigationindicator/MNavigationIndicator.stories.ts +41 -0
  22. package/src/components/navigationindicator/MNavigationIndicator.vue +132 -0
  23. package/src/components/navigationindicator/README.md +37 -0
  24. package/src/components/pageheader/MPageHeader.spec.ts +142 -0
  25. package/src/components/pageheader/MPageHeader.stories.ts +125 -0
  26. package/src/components/pageheader/MPageHeader.vue +133 -0
  27. package/src/components/pageheader/README.md +46 -0
  28. package/src/components/popover/MPopover.spec.ts +106 -0
  29. package/src/components/popover/MPopover.stories.ts +126 -0
  30. package/src/components/popover/MPopover.vue +131 -0
  31. package/src/components/popover/README.md +42 -0
  32. package/src/components/radio/README.md +2 -0
  33. package/src/components/select/MSelect.spec.ts +2 -1
  34. package/src/components/select/MSelect.vue +30 -25
  35. package/src/components/sidebar/MSidebar.const.ts +6 -0
  36. package/src/components/sidebar/MSidebar.spec.ts +110 -0
  37. package/src/components/sidebar/MSidebar.stories.ts +108 -0
  38. package/src/components/sidebar/MSidebar.vue +124 -0
  39. package/src/components/sidebar/README.md +59 -0
  40. package/src/components/sidebar/stories/DefaultCase.stories.vue +120 -0
  41. package/src/components/sidebar/stories/README.md +27 -0
  42. package/src/components/sidebar/stories/WithExpandOnly.stories.vue +112 -0
  43. package/src/components/sidebar/stories/WithProfileInfoOnly.stories.vue +119 -0
  44. package/src/components/sidebar/stories/WithSingleLevel.stories.vue +98 -0
  45. package/src/components/sidebar/use-floating-item.composable.ts +135 -0
  46. package/src/components/sidebar/use-floating-item.spec.ts +251 -0
  47. package/src/components/sidebarexpandableitem/MSidebarExpandableItem.spec.ts +151 -0
  48. package/src/components/sidebarexpandableitem/MSidebarExpandableItem.vue +113 -0
  49. package/src/components/sidebarexpandableitem/README.md +36 -0
  50. package/src/components/sidebarfooter/MSidebarFooter.spec.ts +276 -0
  51. package/src/components/sidebarfooter/MSidebarFooter.vue +201 -0
  52. package/src/components/sidebarfooter/README.md +52 -0
  53. package/src/components/sidebarfooter/_MSidebarFooterMenu.vue +64 -0
  54. package/src/components/sidebarheader/MSidebarHeader.vue +36 -0
  55. package/src/components/sidebarheader/README.md +31 -0
  56. package/src/components/sidebarnavitem/MSidebarNavItem.spec.ts +127 -0
  57. package/src/components/sidebarnavitem/MSidebarNavItem.vue +113 -0
  58. package/src/components/sidebarnavitem/README.md +56 -0
  59. package/src/components/sidebarshortcutitem/MSidebarShortcutItem.spec.ts +59 -0
  60. package/src/components/sidebarshortcutitem/MSidebarShortcutItem.vue +52 -0
  61. package/src/components/sidebarshortcutitem/README.md +32 -0
  62. package/src/components/sidebarshortcuts/MSidebarShortcuts.spec.ts +87 -0
  63. package/src/components/sidebarshortcuts/MSidebarShortcuts.vue +101 -0
  64. package/src/components/sidebarshortcuts/README.md +36 -0
  65. package/src/components/statusbadge/README.md +12 -0
  66. package/src/components/textinput/MTextInput.stories.ts +13 -1
  67. package/src/components/textinput/MTextInput.vue +12 -0
  68. package/src/components/textinput/README.md +3 -1
  69. package/src/components/tile/MTile.spec.ts +61 -0
  70. package/src/components/tile/MTile.stories.ts +102 -0
  71. package/src/components/tile/MTile.vue +68 -0
  72. package/src/components/tile/README.md +19 -0
  73. package/src/components/tileclickable/MTileClickable.spec.ts +130 -0
  74. package/src/components/tileclickable/MTileClickable.stories.ts +60 -0
  75. package/src/components/tileclickable/MTileClickable.vue +106 -0
  76. package/src/components/tileclickable/README.md +30 -0
  77. package/src/components/tileexpandable/MTileExpandable.spec.ts +121 -0
  78. package/src/components/tileexpandable/MTileExpandable.stories.ts +50 -0
  79. package/src/components/tileexpandable/MTileExpandable.vue +131 -0
  80. package/src/components/tileexpandable/README.md +36 -0
  81. package/src/components/tileselectable/MTileSelectable.spec.ts +177 -0
  82. package/src/components/tileselectable/MTileSelectable.stories.ts +55 -0
  83. package/src/components/tileselectable/MTileSelectable.vue +142 -0
  84. package/src/components/tileselectable/README.md +44 -0
  85. package/src/components/toaster/README.md +1 -1
  86. package/src/components/tooltip/MTooltip.vue +5 -0
  87. package/src/components/tooltip/README.md +16 -1
  88. package/src/main.ts +12 -2
  89. package/src/utils/use-is-mobile.composable.ts +20 -0
  90. package/src/utils/use-is-mobile.spec.ts +70 -0
package/src/main.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { default as MAccordionList } from './components/accordionlist/MAccordionList.vue';
2
+ export { default as MAccordionListItem } from './components/accordionlistitem/MAccordionListItem.vue';
2
3
  export { default as MActionBottomBar } from './components/actionbottombar/MActionBottomBar.vue';
3
- export { default as MAvatar } from './components/avatar/MAvatar.vue';
4
4
  export { default as MActionListbox } from './components/actionlistbox/MActionListbox.vue';
5
+ export { default as MAvatar } from './components/avatar/MAvatar.vue';
5
6
  export { default as MBreadcrumb } from './components/breadcrumb/MBreadcrumb.vue';
6
7
  export { default as MBuiltInMenu } from './components/builtinmenu/MBuiltInMenu.vue';
7
8
  export { default as MButton } from './components/button/MButton.vue';
@@ -20,33 +21,42 @@ export { default as MFieldGroup } from './components/fieldgroup/MFieldGroup.vue'
20
21
  export { default as MFileUploader } from './components/fileuploader/MFileUploader.vue';
21
22
  export { default as MFlag } from './components/flag/MFlag.vue';
22
23
  export { default as MIconButton } from './components/iconbutton/MIconButton.vue';
24
+ export { default as MKpiItem } from './components/kpiitem/MKpiItem.vue';
23
25
  export { default as MLinearProgressbarBuffer } from './components/linearprogressbarbuffer/MLinearProgressbarBuffer.vue';
24
26
  export { default as MLinearProgressbarPercentage } from './components/linearprogressbarpercentage/MLinearProgressbarPercentage.vue';
25
27
  export { default as MLink } from './components/link/MLink.vue';
26
28
  export { default as MLoader } from './components/loader/MLoader.vue';
27
29
  export { default as MLoadingOverlay } from './components/loadingoverlay/MLoadingOverlay.vue';
28
30
  export { default as MModal } from './components/modal/MModal.vue';
31
+ export { default as MNavigationIndicator } from './components/navigationindicator/MNavigationIndicator.vue';
29
32
  export { default as MNumberBadge } from './components/numberbadge/MNumberBadge.vue';
30
33
  export { default as MOverlay } from './components/overlay/MOverlay.vue';
34
+ export { default as MPageHeader } from './components/pageheader/MPageHeader.vue';
31
35
  export { default as MPagination } from './components/pagination/MPagination.vue';
32
36
  export { default as MPasswordInput } from './components/passwordinput/MPasswordInput.vue';
33
37
  export { default as MPhoneNumber } from './components/phonenumber/MPhoneNumber.vue';
34
38
  export { default as MPincode } from './components/pincode/MPincode.vue';
39
+ export { default as MPopover } from './components/popover/MPopover.vue';
35
40
  export { default as MQuantitySelector } from './components/quantityselector/MQuantitySelector.vue';
36
41
  export { default as MRadio } from './components/radio/MRadio.vue';
37
42
  export { default as MRadioGroup } from './components/radiogroup/MRadioGroup.vue';
38
43
  export { default as MSegmentedControl } from './components/segmentedcontrol/MSegmentedControl.vue';
39
44
  export { default as MSelect } from './components/select/MSelect.vue';
45
+ export { default as MSidebar } from './components/sidebar/MSidebar.vue';
40
46
  export { default as MStarRating } from './components/starrating/MStarRating.vue';
41
47
  export { default as MStatusBadge } from './components/statusbadge/MStatusBadge.vue';
42
48
  export { default as MStatusDot } from './components/statusdot/MStatusDot.vue';
43
49
  export { default as MStatusMessage } from './components/statusmessage/MStatusMessage.vue';
44
50
  export { default as MStatusNotification } from './components/statusnotification/MStatusNotification.vue';
45
- export { default as MStepperCompact } from './components/steppercompact/MStepperCompact.vue';
46
51
  export { default as MStepperBottomBar } from './components/stepperbottombar/MStepperBottomBar.vue';
52
+ export { default as MStepperCompact } from './components/steppercompact/MStepperCompact.vue';
47
53
  export { default as MStepperInline } from './components/stepperinline/MStepperInline.vue';
48
54
  export { default as MTabs } from './components/tabs/MTabs.vue';
49
55
  export { default as MTag } from './components/tag/MTag.vue';
56
+ export { default as MTile } from './components/tile/MTile.vue';
57
+ export { default as MTileClickable } from './components/tileclickable/MTileClickable.vue';
58
+ export { default as MTileExpandable } from './components/tileexpandable/MTileExpandable.vue';
59
+ export { default as MTileSelectable } from './components/tileselectable/MTileSelectable.vue';
50
60
  export { default as MTextArea } from './components/textarea/MTextArea.vue';
51
61
  export { default as MTextInput } from './components/textinput/MTextInput.vue';
52
62
  export { default as MToaster } from './components/toaster/MToaster.vue';
@@ -0,0 +1,20 @@
1
+ import { ref, onMounted, onUnmounted } from 'vue';
2
+
3
+ export function useIsMobile(breakpoint = 780) {
4
+ const isMobile = ref(false);
5
+
6
+ const update = () => {
7
+ isMobile.value = window.matchMedia(`(max-width: ${breakpoint}px)`).matches;
8
+ };
9
+
10
+ onMounted(() => {
11
+ update();
12
+ window.addEventListener('resize', update);
13
+ });
14
+
15
+ onUnmounted(() => {
16
+ window.removeEventListener('resize', update);
17
+ });
18
+
19
+ return { isMobile };
20
+ }
@@ -0,0 +1,70 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { defineComponent } from 'vue';
3
+ import { mount } from '@vue/test-utils';
4
+ import { useIsMobile } from './use-is-mobile.composable';
5
+
6
+ describe('useIsMobile', () => {
7
+ beforeEach(() => {
8
+ window.matchMedia = vi.fn().mockImplementation((query: string) => ({
9
+ matches: false,
10
+ media: query,
11
+ addEventListener: vi.fn(),
12
+ removeEventListener: vi.fn(),
13
+ }));
14
+ });
15
+
16
+ const createWrapper = (breakpoint?: number) => {
17
+ const component = defineComponent({
18
+ setup() {
19
+ const result = useIsMobile(breakpoint);
20
+ return { isMobile: result.isMobile };
21
+ },
22
+ template: '<div>{{ isMobile }}</div>',
23
+ });
24
+ return mount(component);
25
+ };
26
+
27
+ it('should detect desktop screen', () => {
28
+ const wrapper = createWrapper();
29
+
30
+ expect(wrapper.vm.isMobile).toBe(false);
31
+ });
32
+
33
+ it('should detect mobile screen', () => {
34
+ window.matchMedia = vi.fn().mockReturnValue({
35
+ matches: true,
36
+ media: '',
37
+ addEventListener: vi.fn(),
38
+ removeEventListener: vi.fn(),
39
+ });
40
+
41
+ const wrapper = createWrapper();
42
+
43
+ expect(wrapper.vm.isMobile).toBe(true);
44
+ });
45
+
46
+ it('should use default breakpoint (780px)', () => {
47
+ createWrapper();
48
+
49
+ expect(window.matchMedia).toHaveBeenCalledWith('(max-width: 780px)');
50
+ });
51
+
52
+ it('should accept custom breakpoint', () => {
53
+ createWrapper(1024);
54
+
55
+ expect(window.matchMedia).toHaveBeenCalledWith('(max-width: 1024px)');
56
+ });
57
+
58
+ it('should add and remove event listener', () => {
59
+ const addSpy = vi.spyOn(window, 'addEventListener');
60
+ const removeSpy = vi.spyOn(window, 'removeEventListener');
61
+
62
+ const wrapper = createWrapper();
63
+
64
+ expect(addSpy).toHaveBeenCalledWith('resize', expect.any(Function));
65
+
66
+ wrapper.unmount();
67
+
68
+ expect(removeSpy).toHaveBeenCalledWith('resize', expect.any(Function));
69
+ });
70
+ });