@aziontech/webkit 1.6.0 → 1.7.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 (136) hide show
  1. package/package.json +35 -1
  2. package/src/components/empty-results-block/empty-results-block.vue +115 -0
  3. package/src/components/empty-results-block/empty-results-block.vue.d.ts +112 -0
  4. package/src/components/empty-results-block/empty-results-block.vue.d.ts.map +1 -0
  5. package/src/components/empty-results-block/package.json +9 -0
  6. package/src/components/resizable-splitter/package.json +9 -0
  7. package/src/components/resizable-splitter/resizable-splitter.vue +282 -0
  8. package/src/components/resizable-splitter/resizable-splitter.vue.d.ts +78 -0
  9. package/src/components/resizable-splitter/resizable-splitter.vue.d.ts.map +1 -0
  10. package/src/core/form/field-group-switch/field-group-switch.vue.d.ts +1 -1
  11. package/src/core/form/field-radio-block/field-radio-block.vue.d.ts +1 -1
  12. package/src/core/form/field-switch-block/field-switch-block.vue.d.ts +1 -1
  13. package/src/core/primevue/accordion/accordion.vue +35 -0
  14. package/src/core/primevue/accordion/accordion.vue.d.ts +49 -0
  15. package/src/core/primevue/accordion/accordion.vue.d.ts.map +1 -0
  16. package/src/core/primevue/accordion/package.json +8 -0
  17. package/src/core/primevue/accordion-tab/accordion-tab.vue +30 -0
  18. package/src/core/primevue/accordion-tab/accordion-tab.vue.d.ts +41 -0
  19. package/src/core/primevue/accordion-tab/accordion-tab.vue.d.ts.map +1 -0
  20. package/src/core/primevue/accordion-tab/package.json +8 -0
  21. package/src/core/primevue/avatar/avatar.vue +47 -0
  22. package/src/core/primevue/avatar/avatar.vue.d.ts +72 -0
  23. package/src/core/primevue/avatar/avatar.vue.d.ts.map +1 -0
  24. package/src/core/primevue/avatar/package.json +1 -0
  25. package/src/core/primevue/badge/badge.vue +35 -0
  26. package/src/core/primevue/badge/badge.vue.d.ts +47 -0
  27. package/src/core/primevue/badge/badge.vue.d.ts.map +1 -0
  28. package/src/core/primevue/badge/package.json +8 -0
  29. package/src/core/primevue/breadcrumb/breadcrumb.vue +32 -0
  30. package/src/core/primevue/breadcrumb/breadcrumb.vue.d.ts +43 -0
  31. package/src/core/primevue/breadcrumb/breadcrumb.vue.d.ts.map +1 -0
  32. package/src/core/primevue/breadcrumb/package.json +1 -0
  33. package/src/core/primevue/button/button.vue +98 -0
  34. package/src/core/primevue/button/button.vue.d.ts +159 -0
  35. package/src/core/primevue/button/button.vue.d.ts.map +1 -0
  36. package/src/core/primevue/button/package.json +8 -0
  37. package/src/core/primevue/card/card.vue +32 -0
  38. package/src/core/primevue/card/card.vue.d.ts +31 -0
  39. package/src/core/primevue/card/card.vue.d.ts.map +1 -0
  40. package/src/core/primevue/card/package.json +1 -0
  41. package/src/core/primevue/carousel/carousel.vue +111 -0
  42. package/src/core/primevue/carousel/carousel.vue.d.ts +170 -0
  43. package/src/core/primevue/carousel/carousel.vue.d.ts.map +1 -0
  44. package/src/core/primevue/carousel/package.json +1 -0
  45. package/src/core/primevue/chip/chip.vue +45 -0
  46. package/src/core/primevue/chip/chip.vue.d.ts +63 -0
  47. package/src/core/primevue/chip/chip.vue.d.ts.map +1 -0
  48. package/src/core/primevue/chip/package.json +1 -0
  49. package/src/core/primevue/column/column.vue +75 -0
  50. package/src/core/primevue/column/column.vue.d.ts +138 -0
  51. package/src/core/primevue/column/column.vue.d.ts.map +1 -0
  52. package/src/core/primevue/column/package.json +1 -0
  53. package/src/core/primevue/datatable/datatable.vue +167 -0
  54. package/src/core/primevue/datatable/datatable.vue.d.ts +311 -0
  55. package/src/core/primevue/datatable/datatable.vue.d.ts.map +1 -0
  56. package/src/core/primevue/datatable/package.json +1 -0
  57. package/src/core/primevue/dialog/dialog.vue +86 -0
  58. package/src/core/primevue/dialog/dialog.vue.d.ts +124 -0
  59. package/src/core/primevue/dialog/dialog.vue.d.ts.map +1 -0
  60. package/src/core/primevue/dialog/package.json +1 -0
  61. package/src/core/primevue/divider/divider.vue +40 -0
  62. package/src/core/primevue/divider/divider.vue.d.ts +56 -0
  63. package/src/core/primevue/divider/divider.vue.d.ts.map +1 -0
  64. package/src/core/primevue/divider/package.json +1 -0
  65. package/src/core/primevue/inline-message/inline-message.vue +31 -0
  66. package/src/core/primevue/inline-message/inline-message.vue.d.ts +43 -0
  67. package/src/core/primevue/inline-message/inline-message.vue.d.ts.map +1 -0
  68. package/src/core/primevue/inline-message/package.json +8 -0
  69. package/src/core/primevue/menu/menu.vue +45 -0
  70. package/src/core/primevue/menu/menu.vue.d.ts +57 -0
  71. package/src/core/primevue/menu/menu.vue.d.ts.map +1 -0
  72. package/src/core/primevue/menu/package.json +1 -0
  73. package/src/core/primevue/message/message.vue +49 -0
  74. package/src/core/primevue/message/message.vue.d.ts +74 -0
  75. package/src/core/primevue/message/message.vue.d.ts.map +1 -0
  76. package/src/core/primevue/message/package.json +8 -0
  77. package/src/core/primevue/overlaypanel/overlaypanel.vue +36 -0
  78. package/src/core/primevue/overlaypanel/overlaypanel.vue.d.ts +47 -0
  79. package/src/core/primevue/overlaypanel/overlaypanel.vue.d.ts.map +1 -0
  80. package/src/core/primevue/overlaypanel/package.json +1 -0
  81. package/src/core/primevue/paginator/package.json +1 -0
  82. package/src/core/primevue/paginator/paginator.vue +65 -0
  83. package/src/core/primevue/paginator/paginator.vue.d.ts +96 -0
  84. package/src/core/primevue/paginator/paginator.vue.d.ts.map +1 -0
  85. package/src/core/primevue/progressbar/package.json +1 -0
  86. package/src/core/primevue/progressbar/progressbar.vue +34 -0
  87. package/src/core/primevue/progressbar/progressbar.vue.d.ts +45 -0
  88. package/src/core/primevue/progressbar/progressbar.vue.d.ts.map +1 -0
  89. package/src/core/primevue/progressspinner/package.json +1 -0
  90. package/src/core/primevue/progressspinner/progressspinner.vue +33 -0
  91. package/src/core/primevue/progressspinner/progressspinner.vue.d.ts +43 -0
  92. package/src/core/primevue/progressspinner/progressspinner.vue.d.ts.map +1 -0
  93. package/src/core/primevue/sidebar/package.json +1 -0
  94. package/src/core/primevue/sidebar/sidebar.vue +69 -0
  95. package/src/core/primevue/sidebar/sidebar.vue.d.ts +100 -0
  96. package/src/core/primevue/sidebar/sidebar.vue.d.ts.map +1 -0
  97. package/src/core/primevue/skeleton/package.json +1 -0
  98. package/src/core/primevue/skeleton/skeleton.vue +51 -0
  99. package/src/core/primevue/skeleton/skeleton.vue.d.ts +76 -0
  100. package/src/core/primevue/skeleton/skeleton.vue.d.ts.map +1 -0
  101. package/src/core/primevue/splitbutton/package.json +1 -0
  102. package/src/core/primevue/splitbutton/splitbutton.vue +77 -0
  103. package/src/core/primevue/splitbutton/splitbutton.vue.d.ts +121 -0
  104. package/src/core/primevue/splitbutton/splitbutton.vue.d.ts.map +1 -0
  105. package/src/core/primevue/steps/package.json +1 -0
  106. package/src/core/primevue/steps/steps.vue +40 -0
  107. package/src/core/primevue/steps/steps.vue.d.ts +57 -0
  108. package/src/core/primevue/steps/steps.vue.d.ts.map +1 -0
  109. package/src/core/primevue/tabmenu/package.json +1 -0
  110. package/src/core/primevue/tabmenu/tabmenu.vue +40 -0
  111. package/src/core/primevue/tabmenu/tabmenu.vue.d.ts +57 -0
  112. package/src/core/primevue/tabmenu/tabmenu.vue.d.ts.map +1 -0
  113. package/src/core/primevue/tabpanel/package.json +1 -0
  114. package/src/core/primevue/tabpanel/tabpanel.vue +35 -0
  115. package/src/core/primevue/tabpanel/tabpanel.vue.d.ts +43 -0
  116. package/src/core/primevue/tabpanel/tabpanel.vue.d.ts.map +1 -0
  117. package/src/core/primevue/tabview/package.json +1 -0
  118. package/src/core/primevue/tabview/tabview.vue +41 -0
  119. package/src/core/primevue/tabview/tabview.vue.d.ts +56 -0
  120. package/src/core/primevue/tabview/tabview.vue.d.ts.map +1 -0
  121. package/src/core/primevue/tag/package.json +8 -0
  122. package/src/core/primevue/tag/tag.vue +43 -0
  123. package/src/core/primevue/tag/tag.vue.d.ts +61 -0
  124. package/src/core/primevue/tag/tag.vue.d.ts.map +1 -0
  125. package/src/core/primevue/timeline/package.json +1 -0
  126. package/src/core/primevue/timeline/timeline.vue +48 -0
  127. package/src/core/primevue/timeline/timeline.vue.d.ts +72 -0
  128. package/src/core/primevue/timeline/timeline.vue.d.ts.map +1 -0
  129. package/src/core/primevue/toast/package.json +1 -0
  130. package/src/core/primevue/toast/toast.vue +38 -0
  131. package/src/core/primevue/toast/toast.vue.d.ts +54 -0
  132. package/src/core/primevue/toast/toast.vue.d.ts.map +1 -0
  133. package/src/core/primevue/toolbar/package.json +1 -0
  134. package/src/core/primevue/toolbar/toolbar.vue +26 -0
  135. package/src/core/primevue/toolbar/toolbar.vue.d.ts +27 -0
  136. package/src/core/primevue/toolbar/toolbar.vue.d.ts.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aziontech/webkit",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Reusable UI components and design system utilities for building Azion web interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -70,6 +70,40 @@
70
70
  "./azion-system-status": "./src/components/azion-system-status/azion-system-status.vue",
71
71
  "./testimonials-carousel": "./src/components/testimonials-carousel/testimonials-carousel.vue",
72
72
  "./client-testimonials-block": "./src/components/client-testimonials-block/client-testimonials-block.vue",
73
+ "./loading-block": "./src/components/loading-block/loading-block.vue",
74
+ "./empty-results-block": "./src/components/empty-results-block/empty-results-block.vue",
75
+ "./resizable-splitter": "./src/components/resizable-splitter/resizable-splitter.vue",
76
+ "./accordion": "./src/core/primevue/accordion/accordion.vue",
77
+ "./accordion-tab": "./src/core/primevue/accordion-tab/accordion-tab.vue",
78
+ "./avatar": "./src/core/primevue/avatar/avatar.vue",
79
+ "./breadcrumb": "./src/core/primevue/breadcrumb/breadcrumb.vue",
80
+ "./button": "./src/core/primevue/button/button.vue",
81
+ "./card": "./src/core/primevue/card/card.vue",
82
+ "./carousel": "./src/core/primevue/carousel/carousel.vue",
83
+ "./chip": "./src/core/primevue/chip/chip.vue",
84
+ "./column": "./src/core/primevue/column/column.vue",
85
+ "./datatable": "./src/core/primevue/datatable/datatable.vue",
86
+ "./dialog": "./src/core/primevue/dialog/dialog.vue",
87
+ "./divider": "./src/core/primevue/divider/divider.vue",
88
+ "./inline-message": "./src/core/primevue/inline-message/inline-message.vue",
89
+ "./menu": "./src/core/primevue/menu/menu.vue",
90
+ "./message": "./src/core/primevue/message/message.vue",
91
+ "./overlaypanel": "./src/core/primevue/overlaypanel/overlaypanel.vue",
92
+ "./paginator": "./src/core/primevue/paginator/paginator.vue",
93
+ "./progressbar": "./src/core/primevue/progressbar/progressbar.vue",
94
+ "./progressspinner": "./src/core/primevue/progressspinner/progressspinner.vue",
95
+ "./sidebar": "./src/core/primevue/sidebar/sidebar.vue",
96
+ "./skeleton": "./src/core/primevue/skeleton/skeleton.vue",
97
+ "./splitbutton": "./src/core/primevue/splitbutton/splitbutton.vue",
98
+ "./steps": "./src/core/primevue/steps/steps.vue",
99
+ "./tabmenu": "./src/core/primevue/tabmenu/tabmenu.vue",
100
+ "./tabpanel": "./src/core/primevue/tabpanel/tabpanel.vue",
101
+ "./tabview": "./src/core/primevue/tabview/tabview.vue",
102
+ "./tag": "./src/core/primevue/tag/tag.vue",
103
+ "./timeline": "./src/core/primevue/timeline/timeline.vue",
104
+ "./toast": "./src/core/primevue/toast/toast.vue",
105
+ "./toolbar": "./src/core/primevue/toolbar/toolbar.vue",
106
+ "./badge": "./src/core/primevue/badge/badge.vue",
73
107
  "./svg/error-403": "./src/svg/error-403/error-403.vue",
74
108
  "./svg/error-404": "./src/svg/error-404/error-404.vue",
75
109
  "./styles/country-flags": "./src/styles/country-flags.css"
@@ -0,0 +1,115 @@
1
+ <script setup>
2
+ import PrimeButton from 'primevue/button'
3
+
4
+ defineOptions({ name: 'empty-results-block' })
5
+
6
+ const emit = defineEmits(['click-to-create'])
7
+
8
+ const props = defineProps({
9
+ title: {
10
+ type: String,
11
+ required: true
12
+ },
13
+ description: {
14
+ type: String,
15
+ required: true
16
+ },
17
+ createButtonLabel: {
18
+ type: String,
19
+ default: ''
20
+ },
21
+ disabledList: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ inTabs: {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ noBorder: {
30
+ type: Boolean,
31
+ default: false
32
+ },
33
+ noShowBorderTop: {
34
+ type: Boolean,
35
+ default: false
36
+ },
37
+ showLearnMoreButton: {
38
+ type: Boolean,
39
+ default: true
40
+ },
41
+ documentationService: {
42
+ type: Function,
43
+ default: null
44
+ },
45
+ pt: {
46
+ type: Object,
47
+ default: () => ({})
48
+ }
49
+ })
50
+
51
+ function openDocumentation() {
52
+ if (props.documentationService) {
53
+ props.documentationService()
54
+ }
55
+ }
56
+
57
+ function handleCreateClick() {
58
+ emit('click-to-create')
59
+ }
60
+ </script>
61
+
62
+ <template>
63
+ <div
64
+ class="flex flex-col justify-center surface-section rounded-md"
65
+ :class="{
66
+ 'mt-4 pb-8': inTabs,
67
+ 'border surface-border': !noBorder,
68
+ 'rounded-t-none': noShowBorderTop
69
+ }"
70
+ >
71
+ <div
72
+ class="min-h-[300px] flex flex-col justify-center gap-5 items-center rounded-md p-8 max-md:p-3"
73
+ :class="pt"
74
+ >
75
+ <slot name="illustration"></slot>
76
+ <div class="flex flex-col gap-2 max-w-4xl">
77
+ <p class="text-center text-color text-lg font-medium leading-7">
78
+ {{ title }}
79
+ </p>
80
+ <p class="text-center text-color-secondary text-base font-normal leading-tight">
81
+ {{ description }}
82
+ </p>
83
+ </div>
84
+ <div class="flex flex-col gap-5 items-center w-full">
85
+ <div class="flex flex-wrap gap-2 justify-center w-full">
86
+ <slot name="extraActionsLeft"></slot>
87
+ <slot name="default">
88
+ <PrimeButton
89
+ v-if="createButtonLabel"
90
+ class="max-md:w-full w-fit"
91
+ severity="secondary"
92
+ :disabled="disabledList"
93
+ icon="pi pi-plus"
94
+ :data-testid="`create_${createButtonLabel}_button`"
95
+ :label="createButtonLabel"
96
+ size="small"
97
+ @click="handleCreateClick"
98
+ />
99
+ </slot>
100
+ <slot name="extraActionsRight"></slot>
101
+ </div>
102
+ <PrimeButton
103
+ v-if="documentationService"
104
+ class="w-fit"
105
+ icon-pos="right"
106
+ icon="pi pi-external-link"
107
+ label="View Documentation"
108
+ link
109
+ size="small"
110
+ @click="openDocumentation"
111
+ />
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </template>
@@ -0,0 +1,112 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
4
+ type __VLS_WithSlots<T, S> = T & (new () => {
5
+ $slots: S;
6
+ });
7
+ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ title: {
9
+ type: StringConstructor;
10
+ required: true;
11
+ };
12
+ description: {
13
+ type: StringConstructor;
14
+ required: true;
15
+ };
16
+ createButtonLabel: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ disabledList: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ inTabs: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ noBorder: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ noShowBorderTop: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ showLearnMoreButton: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ documentationService: {
41
+ type: FunctionConstructor;
42
+ default: null;
43
+ };
44
+ pt: {
45
+ type: ObjectConstructor;
46
+ default: () => {};
47
+ };
48
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
+ "click-to-create": (...args: any[]) => void;
50
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
51
+ title: {
52
+ type: StringConstructor;
53
+ required: true;
54
+ };
55
+ description: {
56
+ type: StringConstructor;
57
+ required: true;
58
+ };
59
+ createButtonLabel: {
60
+ type: StringConstructor;
61
+ default: string;
62
+ };
63
+ disabledList: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ inTabs: {
68
+ type: BooleanConstructor;
69
+ default: boolean;
70
+ };
71
+ noBorder: {
72
+ type: BooleanConstructor;
73
+ default: boolean;
74
+ };
75
+ noShowBorderTop: {
76
+ type: BooleanConstructor;
77
+ default: boolean;
78
+ };
79
+ showLearnMoreButton: {
80
+ type: BooleanConstructor;
81
+ default: boolean;
82
+ };
83
+ documentationService: {
84
+ type: FunctionConstructor;
85
+ default: null;
86
+ };
87
+ pt: {
88
+ type: ObjectConstructor;
89
+ default: () => {};
90
+ };
91
+ }>> & Readonly<{
92
+ "onClick-to-create"?: ((...args: any[]) => any) | undefined;
93
+ }>, {
94
+ pt: Record<string, any>;
95
+ createButtonLabel: string;
96
+ disabledList: boolean;
97
+ inTabs: boolean;
98
+ noBorder: boolean;
99
+ noShowBorderTop: boolean;
100
+ showLearnMoreButton: boolean;
101
+ documentationService: Function;
102
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
103
+ type __VLS_Slots = {
104
+ illustration?: ((props: {}) => any) | undefined;
105
+ } & {
106
+ extraActionsLeft?: ((props: {}) => any) | undefined;
107
+ } & {
108
+ default?: ((props: {}) => any) | undefined;
109
+ } & {
110
+ extraActionsRight?: ((props: {}) => any) | undefined;
111
+ };
112
+ //# sourceMappingURL=empty-results-block.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-results-block.vue.d.ts","sourceRoot":"","sources":["empty-results-block.vue"],"names":[],"mappings":"wBA+YqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AA/CzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA4CG"}
@@ -0,0 +1,9 @@
1
+ {
2
+ "main": "./empty-results-block.vue",
3
+ "module": "./empty-results-block.vue",
4
+ "types": "./empty-results-block.vue.d.ts",
5
+ "browser": {
6
+ "./sfc": "./empty-results-block.vue"
7
+ },
8
+ "sideEffects": ["*.vue"]
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "main": "./resizable-splitter.vue",
3
+ "module": "./resizable-splitter.vue",
4
+ "types": "./resizable-splitter.vue.d.ts",
5
+ "browser": {
6
+ "./sfc": "./resizable-splitter.vue"
7
+ },
8
+ "sideEffects": ["*.vue"]
9
+ }
@@ -0,0 +1,282 @@
1
+ <template>
2
+ <div
3
+ ref="root"
4
+ class="resizable-splitter w-full flex min-h-0 overflow-hidden select-none"
5
+ :class="{ 'flex-col': isHorizontal, 'flex-row': !isHorizontal }"
6
+ @mouseleave="onPointerUp"
7
+ >
8
+ <div
9
+ class="panel-a min-w-0 min-h-0 flex-none"
10
+ :class="{ 'w-full': isHorizontal, 'h-full': !isHorizontal }"
11
+ :style="panelAStyle"
12
+ >
13
+ <slot name="panel-a" />
14
+ </div>
15
+
16
+ <div
17
+ ref="handle"
18
+ class="handle flex items-center justify-center group flex-none"
19
+ :class="handleClass"
20
+ @mousedown.prevent="onPointerDown"
21
+ @touchstart.passive="onPointerDown"
22
+ >
23
+ <div :class="barOuterClass">
24
+ <span :class="barInnerClass"></span>
25
+ </div>
26
+ </div>
27
+
28
+ <div
29
+ class="panel-b flex-1 min-h-0 min-w-0"
30
+ :class="{ 'w-full': isHorizontal, 'h-full': !isHorizontal }"
31
+ :style="panelBStyle"
32
+ >
33
+ <slot name="panel-b" />
34
+ </div>
35
+ </div>
36
+ </template>
37
+
38
+ <script setup>
39
+ import { ref, computed, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'
40
+
41
+ defineOptions({ name: 'resizable-splitter' })
42
+
43
+ const props = defineProps({
44
+ panelSizes: {
45
+ type: Array,
46
+ default: () => [70, 30]
47
+ },
48
+ direction: {
49
+ type: String,
50
+ default: 'horizontal',
51
+ validator: (val) => ['horizontal', 'vertical'].includes(val)
52
+ },
53
+ minSize: {
54
+ type: Array,
55
+ default: () => [10, 10]
56
+ },
57
+ maxSize: {
58
+ type: Array,
59
+ default: () => [95, 95]
60
+ },
61
+ initialTopPanelPercent: {
62
+ type: Number,
63
+ default: null
64
+ },
65
+ initialTopPanelPixels: {
66
+ type: Number,
67
+ default: null
68
+ }
69
+ })
70
+
71
+ const emit = defineEmits(['update:panelSizes', 'resizeend'])
72
+
73
+ const root = ref(null)
74
+ const handle = ref(null)
75
+ const isDragging = ref(false)
76
+ const isHorizontal = computed(() => props.direction === 'horizontal')
77
+ const currentSizes = ref([props.panelSizes[0], props.panelSizes[1]])
78
+ let hasAppliedInitial = false
79
+ let resizeObserver = null
80
+
81
+ watch(
82
+ () => props.panelSizes,
83
+ (val) => {
84
+ if (Array.isArray(val) && val.length === 2) {
85
+ currentSizes.value = [Number(val[0]) || 0, Number(val[1]) || 0]
86
+ }
87
+ },
88
+ { immediate: true, deep: true }
89
+ )
90
+
91
+ const clampPair = (desiredA) => {
92
+ const minA = Number(props.minSize?.[0] ?? 0)
93
+ const minB = Number(props.minSize?.[1] ?? 0)
94
+ const maxA = Number(props.maxSize?.[0] ?? 100)
95
+ const maxB = Number(props.maxSize?.[1] ?? 100)
96
+
97
+ let sizeA = desiredA
98
+ sizeA = Math.min(Math.max(sizeA, minA), Math.min(maxA, 100 - minB))
99
+ let sizeB = 100 - sizeA
100
+
101
+ if (sizeB > maxB) {
102
+ sizeB = maxB
103
+ sizeA = 100 - sizeB
104
+ }
105
+
106
+ if (sizeA < minA) {
107
+ sizeA = minA
108
+ sizeB = 100 - sizeA
109
+ }
110
+
111
+ if (sizeA > maxA) {
112
+ sizeA = maxA
113
+ sizeB = 100 - sizeA
114
+ }
115
+
116
+ if (sizeB < minB) {
117
+ sizeB = minB
118
+ sizeA = 100 - sizeB
119
+ }
120
+
121
+ return [sizeA, sizeB]
122
+ }
123
+
124
+ const panelAStyle = computed(() => {
125
+ if (isHorizontal.value) {
126
+ return { height: `${currentSizes.value[0]}%` }
127
+ }
128
+
129
+ const rect = root.value?.getBoundingClientRect()
130
+ if (!rect) {
131
+ return { width: `${currentSizes.value[0]}%` }
132
+ }
133
+
134
+ const handleW = Number(handle.value?.offsetWidth || 0)
135
+ const contentW = Math.max(rect.width - handleW, 0)
136
+ const totalW = contentW + handleW
137
+ const desiredPx = (currentSizes.value[0] / 100) * totalW
138
+ const widthPx = Math.round(Math.max(0, Math.min(desiredPx, contentW)))
139
+ return { width: `${widthPx}px` }
140
+ })
141
+
142
+ const panelBStyle = computed(() => {
143
+ if (isHorizontal.value) {
144
+ return { height: `${currentSizes.value[1]}%` }
145
+ }
146
+ return {}
147
+ })
148
+
149
+ const handleClass = computed(() => ({
150
+ 'w-full h-6 cursor-row-resize': isHorizontal.value,
151
+ 'h-full w-6 cursor-col-resize': !isHorizontal.value
152
+ }))
153
+
154
+ const barOuterClass = computed(() => ({
155
+ 'w-full h-0.5 group-hover:h-1 bg-[var(--surface-300)] flex justify-center transition-all duration-200 ease-in-out':
156
+ isHorizontal.value,
157
+ 'h-full w-0.5 group-hover:w-1 bg-[var(--surface-300)] flex items-center transition-all duration-200 ease-in-out':
158
+ !isHorizontal.value
159
+ }))
160
+
161
+ const barInnerClass = computed(() => ({
162
+ 'w-6 h-full bg-[var(--surface-500)] transition-colors duration-200 ease-in-out':
163
+ isHorizontal.value,
164
+ 'h-6 w-full bg-[var(--surface-500)] transition-colors duration-200 ease-in-out':
165
+ !isHorizontal.value
166
+ }))
167
+
168
+ let startY = 0
169
+ let startX = 0
170
+ let startHeights = [0, 0]
171
+
172
+ const onPointerDown = (event) => {
173
+ isDragging.value = true
174
+ const point = event.touches ? event.touches[0] : event
175
+ startY = point.clientY || 0
176
+ startX = point.clientX || 0
177
+ startHeights = [currentSizes.value[0], currentSizes.value[1]]
178
+ window.addEventListener('mousemove', onPointerMove)
179
+ window.addEventListener('mouseup', onPointerUp)
180
+ window.addEventListener('touchmove', onPointerMove, { passive: false })
181
+ window.addEventListener('touchend', onPointerUp)
182
+ }
183
+
184
+ const onPointerMove = (event) => {
185
+ if (!isDragging.value || !root.value) return
186
+ const rect = root.value.getBoundingClientRect()
187
+ const point = event.touches ? event.touches[0] : event
188
+ const clientY = point.clientY
189
+ const clientX = point.clientX
190
+ const deltaPx = isHorizontal.value ? clientY - startY : clientX - startX
191
+ const handleW = Number(handle.value?.offsetWidth || 0)
192
+ const totalPx = isHorizontal.value ? rect.height : Math.max(rect.width - handleW, 0)
193
+ const deltaPercent = (deltaPx / totalPx) * 100
194
+ const desiredA = startHeights[0] + deltaPercent
195
+ const [newA, newB] = clampPair(desiredA)
196
+ currentSizes.value = [newA, newB]
197
+ emit('update:panelSizes', [newA, newB])
198
+ }
199
+
200
+ const onPointerUp = async () => {
201
+ if (!isDragging.value) return
202
+ isDragging.value = false
203
+ window.removeEventListener('mousemove', onPointerMove)
204
+ window.removeEventListener('mouseup', onPointerUp)
205
+ window.removeEventListener('touchmove', onPointerMove)
206
+ window.removeEventListener('touchend', onPointerUp)
207
+ await nextTick()
208
+ emit('resizeend', { sizes: [...currentSizes.value] })
209
+ }
210
+
211
+ const applyInitialSizes = async () => {
212
+ await nextTick()
213
+ let desiredA = Number(currentSizes.value[0]) || 0
214
+ const rect = root.value?.getBoundingClientRect()
215
+ const pxVal = props.initialTopPanelPixels
216
+ const pctVal = props.initialTopPanelPercent
217
+ if (pxVal != null && rect) {
218
+ const basis = isHorizontal.value ? rect.height : rect.width
219
+ if (basis > 0) desiredA = (Number(pxVal) / basis) * 100
220
+ } else if (pctVal != null) {
221
+ desiredA = Number(pctVal)
222
+ }
223
+ const [sizeA, sizeB] = clampPair(desiredA)
224
+ currentSizes.value = [sizeA, sizeB]
225
+ emit('update:panelSizes', [sizeA, sizeB])
226
+ emit('resizeend', { sizes: [sizeA, sizeB] })
227
+ hasAppliedInitial = true
228
+ }
229
+
230
+ onMounted(() => {
231
+ applyInitialSizes()
232
+ if ('ResizeObserver' in window && root.value) {
233
+ resizeObserver = new ResizeObserver((entries) => {
234
+ const entry = entries[0]
235
+ const cr = entry?.contentRect
236
+ if (!hasAppliedInitial && cr && (cr.width > 0 || cr.height > 0)) {
237
+ applyInitialSizes()
238
+ }
239
+ })
240
+ resizeObserver.observe(root.value)
241
+ }
242
+ })
243
+
244
+ watch(
245
+ () => props.direction,
246
+ async () => {
247
+ await nextTick()
248
+ applyInitialSizes()
249
+ }
250
+ )
251
+
252
+ watch(
253
+ () => [props.initialTopPanelPercent, props.initialTopPanelPixels],
254
+ async () => {
255
+ await nextTick()
256
+ applyInitialSizes()
257
+ }
258
+ )
259
+
260
+ onBeforeUnmount(() => {
261
+ onPointerUp()
262
+ if (resizeObserver && root.value) {
263
+ const el = root.value
264
+ if (typeof resizeObserver.unobserve === 'function' && el) {
265
+ resizeObserver.unobserve(el)
266
+ }
267
+ if (typeof resizeObserver.disconnect === 'function') {
268
+ resizeObserver.disconnect()
269
+ }
270
+ resizeObserver = null
271
+ }
272
+ })
273
+ </script>
274
+
275
+ <style scoped>
276
+ .resizable-splitter {
277
+ --handle-bg: transparent;
278
+ }
279
+ .handle {
280
+ background: var(--handle-bg);
281
+ }
282
+ </style>
@@ -0,0 +1,78 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
4
+ type __VLS_WithSlots<T, S> = T & (new () => {
5
+ $slots: S;
6
+ });
7
+ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ panelSizes: {
9
+ type: ArrayConstructor;
10
+ default: () => number[];
11
+ };
12
+ direction: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ validator: (val: unknown) => boolean;
16
+ };
17
+ minSize: {
18
+ type: ArrayConstructor;
19
+ default: () => number[];
20
+ };
21
+ maxSize: {
22
+ type: ArrayConstructor;
23
+ default: () => number[];
24
+ };
25
+ initialTopPanelPercent: {
26
+ type: NumberConstructor;
27
+ default: null;
28
+ };
29
+ initialTopPanelPixels: {
30
+ type: NumberConstructor;
31
+ default: null;
32
+ };
33
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
34
+ "update:panelSizes": (...args: any[]) => void;
35
+ resizeend: (...args: any[]) => void;
36
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
37
+ panelSizes: {
38
+ type: ArrayConstructor;
39
+ default: () => number[];
40
+ };
41
+ direction: {
42
+ type: StringConstructor;
43
+ default: string;
44
+ validator: (val: unknown) => boolean;
45
+ };
46
+ minSize: {
47
+ type: ArrayConstructor;
48
+ default: () => number[];
49
+ };
50
+ maxSize: {
51
+ type: ArrayConstructor;
52
+ default: () => number[];
53
+ };
54
+ initialTopPanelPercent: {
55
+ type: NumberConstructor;
56
+ default: null;
57
+ };
58
+ initialTopPanelPixels: {
59
+ type: NumberConstructor;
60
+ default: null;
61
+ };
62
+ }>> & Readonly<{
63
+ "onUpdate:panelSizes"?: ((...args: any[]) => any) | undefined;
64
+ onResizeend?: ((...args: any[]) => any) | undefined;
65
+ }>, {
66
+ panelSizes: unknown[];
67
+ direction: string;
68
+ minSize: unknown[];
69
+ maxSize: unknown[];
70
+ initialTopPanelPercent: number;
71
+ initialTopPanelPixels: number;
72
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
73
+ type __VLS_Slots = {
74
+ 'panel-a'?: ((props: {}) => any) | undefined;
75
+ } & {
76
+ 'panel-b'?: ((props: {}) => any) | undefined;
77
+ };
78
+ //# sourceMappingURL=resizable-splitter.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-splitter.vue.d.ts","sourceRoot":"","sources":["resizable-splitter.vue"],"names":[],"mappings":"wBA0oBqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AAhCzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA6BG"}
@@ -73,8 +73,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
73
73
  }>> & Readonly<{}>, {
74
74
  label: string;
75
75
  disabled: boolean;
76
- inputClass: string;
77
76
  auto: boolean;
77
+ inputClass: string;
78
78
  isCard: boolean;
79
79
  hideSelector: boolean;
80
80
  helpText: string;
@@ -102,8 +102,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
102
102
  onOnRadioChange?: ((...args: any[]) => any) | undefined;
103
103
  }>, {
104
104
  disabled: boolean;
105
- inputValue: string | boolean | Record<string, any>;
106
105
  auto: boolean;
106
+ inputValue: string | boolean | Record<string, any>;
107
107
  isCard: boolean;
108
108
  hideSelector: boolean;
109
109
  isLabel: boolean;
@@ -111,8 +111,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
111
111
  }>, {
112
112
  disabled: boolean;
113
113
  value: boolean;
114
- readonly: boolean;
115
114
  auto: boolean;
115
+ readonly: boolean;
116
116
  isCard: boolean;
117
117
  hideSelector: boolean;
118
118
  isLabel: boolean;