@aziontech/webkit 1.6.0 → 1.7.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 (156) hide show
  1. package/package.json +37 -2
  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-dropdown/field-dropdown.vue +4 -4
  11. package/src/core/form/field-dropdown/field-dropdown.vue.d.ts +3 -3
  12. package/src/core/form/field-group-switch/field-group-switch.vue.d.ts +1 -1
  13. package/src/core/form/field-number/field-number.vue +4 -4
  14. package/src/core/form/field-number/field-number.vue.d.ts +3 -3
  15. package/src/core/form/{field-text-password/field-text-password.vue → field-password/field-password.vue} +4 -4
  16. package/src/core/form/{field-text-password/field-text-password.vue.d.ts → field-password/field-password.vue.d.ts} +4 -4
  17. package/src/core/form/field-password/field-password.vue.d.ts.map +1 -0
  18. package/src/core/form/field-password/package.json +11 -0
  19. package/src/core/form/field-password-strength/field-password-strength.vue +209 -0
  20. package/src/core/form/field-password-strength/field-password-strength.vue.d.ts +175 -0
  21. package/src/core/form/field-password-strength/field-password-strength.vue.d.ts.map +1 -0
  22. package/src/core/form/field-password-strength/package.json +11 -0
  23. package/src/core/form/field-radio-block/field-radio-block.vue.d.ts +1 -1
  24. package/src/core/form/field-switch-block/field-switch-block.vue.d.ts +1 -1
  25. package/src/core/form/field-text/field-text.vue +4 -4
  26. package/src/core/form/field-text/field-text.vue.d.ts +3 -3
  27. package/src/core/form/field-text-area/field-text-area.vue +4 -4
  28. package/src/core/form/field-text-area/field-text-area.vue.d.ts +3 -3
  29. package/src/core/form/field-text-privacy/field-text-privacy.vue +7 -7
  30. package/src/core/form/field-text-privacy/field-text-privacy.vue.d.ts +3 -3
  31. package/src/core/primevue/accordion/accordion.vue +35 -0
  32. package/src/core/primevue/accordion/accordion.vue.d.ts +49 -0
  33. package/src/core/primevue/accordion/accordion.vue.d.ts.map +1 -0
  34. package/src/core/primevue/accordion/package.json +8 -0
  35. package/src/core/primevue/accordion-tab/accordion-tab.vue +30 -0
  36. package/src/core/primevue/accordion-tab/accordion-tab.vue.d.ts +41 -0
  37. package/src/core/primevue/accordion-tab/accordion-tab.vue.d.ts.map +1 -0
  38. package/src/core/primevue/accordion-tab/package.json +8 -0
  39. package/src/core/primevue/avatar/avatar.vue +47 -0
  40. package/src/core/primevue/avatar/avatar.vue.d.ts +72 -0
  41. package/src/core/primevue/avatar/avatar.vue.d.ts.map +1 -0
  42. package/src/core/primevue/avatar/package.json +1 -0
  43. package/src/core/primevue/badge/badge.vue +35 -0
  44. package/src/core/primevue/badge/badge.vue.d.ts +47 -0
  45. package/src/core/primevue/badge/badge.vue.d.ts.map +1 -0
  46. package/src/core/primevue/badge/package.json +8 -0
  47. package/src/core/primevue/breadcrumb/breadcrumb.vue +32 -0
  48. package/src/core/primevue/breadcrumb/breadcrumb.vue.d.ts +43 -0
  49. package/src/core/primevue/breadcrumb/breadcrumb.vue.d.ts.map +1 -0
  50. package/src/core/primevue/breadcrumb/package.json +1 -0
  51. package/src/core/primevue/button/button.vue +98 -0
  52. package/src/core/primevue/button/button.vue.d.ts +159 -0
  53. package/src/core/primevue/button/button.vue.d.ts.map +1 -0
  54. package/src/core/primevue/button/package.json +8 -0
  55. package/src/core/primevue/card/card.vue +32 -0
  56. package/src/core/primevue/card/card.vue.d.ts +31 -0
  57. package/src/core/primevue/card/card.vue.d.ts.map +1 -0
  58. package/src/core/primevue/card/package.json +1 -0
  59. package/src/core/primevue/carousel/carousel.vue +111 -0
  60. package/src/core/primevue/carousel/carousel.vue.d.ts +170 -0
  61. package/src/core/primevue/carousel/carousel.vue.d.ts.map +1 -0
  62. package/src/core/primevue/carousel/package.json +1 -0
  63. package/src/core/primevue/chip/chip.vue +45 -0
  64. package/src/core/primevue/chip/chip.vue.d.ts +63 -0
  65. package/src/core/primevue/chip/chip.vue.d.ts.map +1 -0
  66. package/src/core/primevue/chip/package.json +1 -0
  67. package/src/core/primevue/column/column.vue +75 -0
  68. package/src/core/primevue/column/column.vue.d.ts +138 -0
  69. package/src/core/primevue/column/column.vue.d.ts.map +1 -0
  70. package/src/core/primevue/column/package.json +1 -0
  71. package/src/core/primevue/datatable/datatable.vue +167 -0
  72. package/src/core/primevue/datatable/datatable.vue.d.ts +311 -0
  73. package/src/core/primevue/datatable/datatable.vue.d.ts.map +1 -0
  74. package/src/core/primevue/datatable/package.json +1 -0
  75. package/src/core/primevue/dialog/dialog.vue +86 -0
  76. package/src/core/primevue/dialog/dialog.vue.d.ts +124 -0
  77. package/src/core/primevue/dialog/dialog.vue.d.ts.map +1 -0
  78. package/src/core/primevue/dialog/package.json +1 -0
  79. package/src/core/primevue/divider/divider.vue +40 -0
  80. package/src/core/primevue/divider/divider.vue.d.ts +56 -0
  81. package/src/core/primevue/divider/divider.vue.d.ts.map +1 -0
  82. package/src/core/primevue/divider/package.json +1 -0
  83. package/src/core/primevue/inline-message/inline-message.vue +31 -0
  84. package/src/core/primevue/inline-message/inline-message.vue.d.ts +43 -0
  85. package/src/core/primevue/inline-message/inline-message.vue.d.ts.map +1 -0
  86. package/src/core/primevue/inline-message/package.json +8 -0
  87. package/src/core/primevue/menu/menu.vue +45 -0
  88. package/src/core/primevue/menu/menu.vue.d.ts +57 -0
  89. package/src/core/primevue/menu/menu.vue.d.ts.map +1 -0
  90. package/src/core/primevue/menu/package.json +1 -0
  91. package/src/core/primevue/message/message.vue +49 -0
  92. package/src/core/primevue/message/message.vue.d.ts +74 -0
  93. package/src/core/primevue/message/message.vue.d.ts.map +1 -0
  94. package/src/core/primevue/message/package.json +8 -0
  95. package/src/core/primevue/overlaypanel/overlaypanel.vue +36 -0
  96. package/src/core/primevue/overlaypanel/overlaypanel.vue.d.ts +47 -0
  97. package/src/core/primevue/overlaypanel/overlaypanel.vue.d.ts.map +1 -0
  98. package/src/core/primevue/overlaypanel/package.json +1 -0
  99. package/src/core/primevue/paginator/package.json +1 -0
  100. package/src/core/primevue/paginator/paginator.vue +65 -0
  101. package/src/core/primevue/paginator/paginator.vue.d.ts +96 -0
  102. package/src/core/primevue/paginator/paginator.vue.d.ts.map +1 -0
  103. package/src/core/primevue/progressbar/package.json +1 -0
  104. package/src/core/primevue/progressbar/progressbar.vue +34 -0
  105. package/src/core/primevue/progressbar/progressbar.vue.d.ts +45 -0
  106. package/src/core/primevue/progressbar/progressbar.vue.d.ts.map +1 -0
  107. package/src/core/primevue/progressspinner/package.json +1 -0
  108. package/src/core/primevue/progressspinner/progressspinner.vue +33 -0
  109. package/src/core/primevue/progressspinner/progressspinner.vue.d.ts +43 -0
  110. package/src/core/primevue/progressspinner/progressspinner.vue.d.ts.map +1 -0
  111. package/src/core/primevue/sidebar/package.json +1 -0
  112. package/src/core/primevue/sidebar/sidebar.vue +69 -0
  113. package/src/core/primevue/sidebar/sidebar.vue.d.ts +100 -0
  114. package/src/core/primevue/sidebar/sidebar.vue.d.ts.map +1 -0
  115. package/src/core/primevue/skeleton/package.json +1 -0
  116. package/src/core/primevue/skeleton/skeleton.vue +51 -0
  117. package/src/core/primevue/skeleton/skeleton.vue.d.ts +76 -0
  118. package/src/core/primevue/skeleton/skeleton.vue.d.ts.map +1 -0
  119. package/src/core/primevue/splitbutton/package.json +1 -0
  120. package/src/core/primevue/splitbutton/splitbutton.vue +77 -0
  121. package/src/core/primevue/splitbutton/splitbutton.vue.d.ts +121 -0
  122. package/src/core/primevue/splitbutton/splitbutton.vue.d.ts.map +1 -0
  123. package/src/core/primevue/steps/package.json +1 -0
  124. package/src/core/primevue/steps/steps.vue +40 -0
  125. package/src/core/primevue/steps/steps.vue.d.ts +57 -0
  126. package/src/core/primevue/steps/steps.vue.d.ts.map +1 -0
  127. package/src/core/primevue/tabmenu/package.json +1 -0
  128. package/src/core/primevue/tabmenu/tabmenu.vue +40 -0
  129. package/src/core/primevue/tabmenu/tabmenu.vue.d.ts +57 -0
  130. package/src/core/primevue/tabmenu/tabmenu.vue.d.ts.map +1 -0
  131. package/src/core/primevue/tabpanel/package.json +1 -0
  132. package/src/core/primevue/tabpanel/tabpanel.vue +35 -0
  133. package/src/core/primevue/tabpanel/tabpanel.vue.d.ts +43 -0
  134. package/src/core/primevue/tabpanel/tabpanel.vue.d.ts.map +1 -0
  135. package/src/core/primevue/tabview/package.json +1 -0
  136. package/src/core/primevue/tabview/tabview.vue +41 -0
  137. package/src/core/primevue/tabview/tabview.vue.d.ts +56 -0
  138. package/src/core/primevue/tabview/tabview.vue.d.ts.map +1 -0
  139. package/src/core/primevue/tag/package.json +8 -0
  140. package/src/core/primevue/tag/tag.vue +43 -0
  141. package/src/core/primevue/tag/tag.vue.d.ts +61 -0
  142. package/src/core/primevue/tag/tag.vue.d.ts.map +1 -0
  143. package/src/core/primevue/timeline/package.json +1 -0
  144. package/src/core/primevue/timeline/timeline.vue +48 -0
  145. package/src/core/primevue/timeline/timeline.vue.d.ts +72 -0
  146. package/src/core/primevue/timeline/timeline.vue.d.ts.map +1 -0
  147. package/src/core/primevue/toast/package.json +1 -0
  148. package/src/core/primevue/toast/toast.vue +38 -0
  149. package/src/core/primevue/toast/toast.vue.d.ts +54 -0
  150. package/src/core/primevue/toast/toast.vue.d.ts.map +1 -0
  151. package/src/core/primevue/toolbar/package.json +1 -0
  152. package/src/core/primevue/toolbar/toolbar.vue +26 -0
  153. package/src/core/primevue/toolbar/toolbar.vue.d.ts +27 -0
  154. package/src/core/primevue/toolbar/toolbar.vue.d.ts.map +1 -0
  155. package/src/core/form/field-text-password/field-text-password.vue.d.ts.map +0 -1
  156. package/src/core/form/field-text-password/package.json +0 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aziontech/webkit",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Reusable UI components and design system utilities for building Azion web interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -63,13 +63,48 @@
63
63
  "./field-text": "./src/core/form/field-text/field-text.vue",
64
64
  "./field-text-area": "./src/core/form/field-text-area/field-text-area.vue",
65
65
  "./field-text-icon": "./src/core/form/field-text-icon/field-text-icon.vue",
66
- "./field-text-password": "./src/core/form/field-text-password/field-text-password.vue",
66
+ "./field-password-strength": "./src/core/form/field-password-strength/field-password-strength.vue",
67
+ "./field-password": "./src/core/form/field-password/field-password.vue",
67
68
  "./field-text-privacy": "./src/core/form/field-text-privacy/field-text-privacy.vue",
68
69
  "./label": "./src/core/form/label/label.vue",
69
70
  "./selector-block": "./src/core/selector-block/selector-block.vue",
70
71
  "./azion-system-status": "./src/components/azion-system-status/azion-system-status.vue",
71
72
  "./testimonials-carousel": "./src/components/testimonials-carousel/testimonials-carousel.vue",
72
73
  "./client-testimonials-block": "./src/components/client-testimonials-block/client-testimonials-block.vue",
74
+ "./loading-block": "./src/components/loading-block/loading-block.vue",
75
+ "./empty-results-block": "./src/components/empty-results-block/empty-results-block.vue",
76
+ "./resizable-splitter": "./src/components/resizable-splitter/resizable-splitter.vue",
77
+ "./accordion": "./src/core/primevue/accordion/accordion.vue",
78
+ "./accordion-tab": "./src/core/primevue/accordion-tab/accordion-tab.vue",
79
+ "./avatar": "./src/core/primevue/avatar/avatar.vue",
80
+ "./breadcrumb": "./src/core/primevue/breadcrumb/breadcrumb.vue",
81
+ "./button": "./src/core/primevue/button/button.vue",
82
+ "./card": "./src/core/primevue/card/card.vue",
83
+ "./carousel": "./src/core/primevue/carousel/carousel.vue",
84
+ "./chip": "./src/core/primevue/chip/chip.vue",
85
+ "./column": "./src/core/primevue/column/column.vue",
86
+ "./datatable": "./src/core/primevue/datatable/datatable.vue",
87
+ "./dialog": "./src/core/primevue/dialog/dialog.vue",
88
+ "./divider": "./src/core/primevue/divider/divider.vue",
89
+ "./inline-message": "./src/core/primevue/inline-message/inline-message.vue",
90
+ "./menu": "./src/core/primevue/menu/menu.vue",
91
+ "./message": "./src/core/primevue/message/message.vue",
92
+ "./overlaypanel": "./src/core/primevue/overlaypanel/overlaypanel.vue",
93
+ "./paginator": "./src/core/primevue/paginator/paginator.vue",
94
+ "./progressbar": "./src/core/primevue/progressbar/progressbar.vue",
95
+ "./progressspinner": "./src/core/primevue/progressspinner/progressspinner.vue",
96
+ "./sidebar": "./src/core/primevue/sidebar/sidebar.vue",
97
+ "./skeleton": "./src/core/primevue/skeleton/skeleton.vue",
98
+ "./splitbutton": "./src/core/primevue/splitbutton/splitbutton.vue",
99
+ "./steps": "./src/core/primevue/steps/steps.vue",
100
+ "./tabmenu": "./src/core/primevue/tabmenu/tabmenu.vue",
101
+ "./tabpanel": "./src/core/primevue/tabpanel/tabpanel.vue",
102
+ "./tabview": "./src/core/primevue/tabview/tabview.vue",
103
+ "./tag": "./src/core/primevue/tag/tag.vue",
104
+ "./timeline": "./src/core/primevue/timeline/timeline.vue",
105
+ "./toast": "./src/core/primevue/toast/toast.vue",
106
+ "./toolbar": "./src/core/primevue/toolbar/toolbar.vue",
107
+ "./badge": "./src/core/primevue/badge/badge.vue",
73
108
  "./svg/error-403": "./src/svg/error-403/error-403.vue",
74
109
  "./svg/error-404": "./src/svg/error-404/error-404.vue",
75
110
  "./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"}