@mozaic-ds/vue 2.13.1 → 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 +844 -224
  3. package/dist/mozaic-vue.js +2473 -1809
  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 +8 -0
  89. package/src/utils/use-is-mobile.composable.ts +20 -0
  90. package/src/utils/use-is-mobile.spec.ts +70 -0
@@ -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
+ });