@bitrix24/b24ui-nuxt 0.5.9 → 0.5.10

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 (196) hide show
  1. package/.nuxt/b24ui/navigation-menu.ts +0 -2
  2. package/.nuxt/b24ui/popover.ts +1 -1
  3. package/dist/meta.d.mts +4789 -4897
  4. package/dist/meta.mjs +4789 -4897
  5. package/dist/module.json +5 -5
  6. package/dist/module.mjs +11 -7
  7. package/dist/runtime/components/Advice.vue +47 -54
  8. package/dist/runtime/components/Advice.vue.d.ts +170 -0
  9. package/dist/runtime/components/Alert.vue +71 -96
  10. package/dist/runtime/components/Alert.vue.d.ts +464 -0
  11. package/dist/runtime/components/App.vue +37 -34
  12. package/dist/runtime/components/App.vue.d.ts +23 -0
  13. package/dist/runtime/components/Avatar.vue +69 -81
  14. package/dist/runtime/components/Avatar.vue.d.ts +281 -0
  15. package/dist/runtime/components/AvatarGroup.vue +53 -76
  16. package/dist/runtime/components/AvatarGroup.vue.d.ts +204 -0
  17. package/dist/runtime/components/Badge.vue +83 -83
  18. package/dist/runtime/components/Badge.vue.d.ts +517 -0
  19. package/dist/runtime/components/Button.vue +219 -149
  20. package/dist/runtime/components/Button.vue.d.ts +640 -0
  21. package/dist/runtime/components/ButtonGroup.vue +35 -51
  22. package/dist/runtime/components/ButtonGroup.vue.d.ts +116 -0
  23. package/dist/runtime/components/Calendar.vue +186 -152
  24. package/dist/runtime/components/Calendar.vue.d.ts +437 -0
  25. package/dist/runtime/components/Checkbox.vue +84 -73
  26. package/dist/runtime/components/Checkbox.vue.d.ts +354 -0
  27. package/dist/runtime/components/Chip.vue +59 -74
  28. package/dist/runtime/components/Chip.vue.d.ts +271 -0
  29. package/dist/runtime/components/Collapsible.vue +44 -41
  30. package/dist/runtime/components/Collapsible.vue.d.ts +118 -0
  31. package/dist/runtime/components/Container.vue +18 -27
  32. package/dist/runtime/components/Container.vue.d.ts +27 -0
  33. package/dist/runtime/components/Countdown.vue +198 -378
  34. package/dist/runtime/components/Countdown.vue.d.ts +356 -0
  35. package/dist/runtime/components/DescriptionList.vue +102 -149
  36. package/dist/runtime/components/DescriptionList.vue.d.ts +379 -0
  37. package/dist/runtime/components/DropdownMenu.vue +83 -139
  38. package/dist/runtime/components/DropdownMenu.vue.d.ts +533 -0
  39. package/dist/runtime/components/DropdownMenuContent.vue +137 -81
  40. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +228 -0
  41. package/dist/runtime/components/Form.vue +162 -216
  42. package/dist/runtime/components/Form.vue.d.ts +55 -0
  43. package/dist/runtime/components/FormField.vue +76 -80
  44. package/dist/runtime/components/FormField.vue.d.ts +282 -0
  45. package/dist/runtime/components/Input.vue +160 -179
  46. package/dist/runtime/components/Input.vue.d.ts +755 -0
  47. package/dist/runtime/components/InputMenu.vue +300 -381
  48. package/dist/runtime/components/InputMenu.vue.d.ts +1504 -0
  49. package/dist/runtime/components/InputNumber.vue +178 -175
  50. package/dist/runtime/components/InputNumber.vue.d.ts +658 -0
  51. package/dist/runtime/components/Kbd.vue +33 -45
  52. package/dist/runtime/components/Kbd.vue.d.ts +109 -0
  53. package/dist/runtime/components/Link.vue +179 -173
  54. package/dist/runtime/components/Link.vue.d.ts +129 -0
  55. package/dist/runtime/components/LinkBase.vue +64 -42
  56. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  57. package/dist/runtime/components/Modal.vue +105 -127
  58. package/dist/runtime/components/Modal.vue.d.ts +327 -0
  59. package/dist/runtime/components/ModalDialogClose.vue +4 -8
  60. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  61. package/dist/runtime/components/Navbar.vue +24 -33
  62. package/dist/runtime/components/Navbar.vue.d.ts +101 -0
  63. package/dist/runtime/components/NavbarDivider.vue +24 -33
  64. package/dist/runtime/components/NavbarDivider.vue.d.ts +101 -0
  65. package/dist/runtime/components/NavbarSection.vue +24 -33
  66. package/dist/runtime/components/NavbarSection.vue.d.ts +101 -0
  67. package/dist/runtime/components/NavbarSpacer.vue +24 -33
  68. package/dist/runtime/components/NavbarSpacer.vue.d.ts +101 -0
  69. package/dist/runtime/components/NavigationMenu.vue +152 -216
  70. package/dist/runtime/components/NavigationMenu.vue.d.ts +824 -0
  71. package/dist/runtime/components/OverlayProvider.vue +13 -17
  72. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  73. package/dist/runtime/components/Popover.vue +81 -81
  74. package/dist/runtime/components/Popover.vue.d.ts +147 -0
  75. package/dist/runtime/components/Progress.vue +109 -136
  76. package/dist/runtime/components/Progress.vue.d.ts +592 -0
  77. package/dist/runtime/components/RadioGroup.vue +120 -134
  78. package/dist/runtime/components/RadioGroup.vue.d.ts +723 -0
  79. package/dist/runtime/components/Range.vue +94 -85
  80. package/dist/runtime/components/Range.vue.d.ts +417 -0
  81. package/dist/runtime/components/Select.vue +212 -260
  82. package/dist/runtime/components/Select.vue.d.ts +1200 -0
  83. package/dist/runtime/components/SelectMenu.vue +272 -366
  84. package/dist/runtime/components/SelectMenu.vue.d.ts +1298 -0
  85. package/dist/runtime/components/Separator.vue +61 -71
  86. package/dist/runtime/components/Separator.vue.d.ts +400 -0
  87. package/dist/runtime/components/Sidebar.vue +24 -33
  88. package/dist/runtime/components/Sidebar.vue.d.ts +101 -0
  89. package/dist/runtime/components/SidebarBody.vue +30 -38
  90. package/dist/runtime/components/SidebarBody.vue.d.ts +90 -0
  91. package/dist/runtime/components/SidebarFooter.vue +24 -33
  92. package/dist/runtime/components/SidebarFooter.vue.d.ts +101 -0
  93. package/dist/runtime/components/SidebarHeader.vue +24 -33
  94. package/dist/runtime/components/SidebarHeader.vue.d.ts +101 -0
  95. package/dist/runtime/components/SidebarHeading.vue +24 -33
  96. package/dist/runtime/components/SidebarHeading.vue.d.ts +101 -0
  97. package/dist/runtime/components/SidebarLayout.vue +40 -70
  98. package/dist/runtime/components/SidebarLayout.vue.d.ts +222 -0
  99. package/dist/runtime/components/SidebarSection.vue +24 -33
  100. package/dist/runtime/components/SidebarSection.vue.d.ts +101 -0
  101. package/dist/runtime/components/SidebarSpacer.vue +24 -33
  102. package/dist/runtime/components/SidebarSpacer.vue.d.ts +101 -0
  103. package/dist/runtime/components/Skeleton.vue +17 -22
  104. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  105. package/dist/runtime/components/Slideover.vue +108 -131
  106. package/dist/runtime/components/Slideover.vue.d.ts +360 -0
  107. package/dist/runtime/components/StackedLayout.vue +40 -73
  108. package/dist/runtime/components/StackedLayout.vue.d.ts +192 -0
  109. package/dist/runtime/components/Switch.vue +100 -95
  110. package/dist/runtime/components/Switch.vue.d.ts +587 -0
  111. package/dist/runtime/components/Tabs.vue +83 -105
  112. package/dist/runtime/components/Tabs.vue.d.ts +453 -0
  113. package/dist/runtime/components/Textarea.vue +177 -201
  114. package/dist/runtime/components/Textarea.vue.d.ts +601 -0
  115. package/dist/runtime/components/Toast.vue +94 -105
  116. package/dist/runtime/components/Toast.vue.d.ts +438 -0
  117. package/dist/runtime/components/Toaster.vue +94 -111
  118. package/dist/runtime/components/Toaster.vue.d.ts +219 -0
  119. package/dist/runtime/components/Tooltip.vue +78 -64
  120. package/dist/runtime/components/Tooltip.vue.d.ts +186 -0
  121. package/dist/runtime/components/content/TableWrapper.vue +58 -70
  122. package/dist/runtime/components/content/TableWrapper.vue.d.ts +237 -0
  123. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  124. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  125. package/dist/runtime/composables/useComponentIcons.d.ts +1 -1
  126. package/dist/runtime/composables/useFormField.d.ts +1 -1
  127. package/dist/runtime/prose/A.vue +18 -23
  128. package/dist/runtime/prose/A.vue.d.ts +84 -0
  129. package/dist/runtime/prose/Blockquote.vue +18 -23
  130. package/dist/runtime/prose/Blockquote.vue.d.ts +84 -0
  131. package/dist/runtime/prose/Code.vue +23 -31
  132. package/dist/runtime/prose/Code.vue.d.ts +97 -0
  133. package/dist/runtime/prose/Em.vue +18 -23
  134. package/dist/runtime/prose/Em.vue.d.ts +84 -0
  135. package/dist/runtime/prose/H1.vue +18 -23
  136. package/dist/runtime/prose/H1.vue.d.ts +97 -0
  137. package/dist/runtime/prose/H2.vue +18 -23
  138. package/dist/runtime/prose/H2.vue.d.ts +123 -0
  139. package/dist/runtime/prose/H3.vue +18 -23
  140. package/dist/runtime/prose/H3.vue.d.ts +123 -0
  141. package/dist/runtime/prose/H4.vue +18 -23
  142. package/dist/runtime/prose/H4.vue.d.ts +123 -0
  143. package/dist/runtime/prose/H5.vue +18 -23
  144. package/dist/runtime/prose/H5.vue.d.ts +123 -0
  145. package/dist/runtime/prose/H6.vue +18 -23
  146. package/dist/runtime/prose/H6.vue.d.ts +123 -0
  147. package/dist/runtime/prose/Hr.vue +18 -19
  148. package/dist/runtime/prose/Hr.vue.d.ts +74 -0
  149. package/dist/runtime/prose/Img.vue +18 -23
  150. package/dist/runtime/prose/Img.vue.d.ts +77 -0
  151. package/dist/runtime/prose/Li.vue +18 -23
  152. package/dist/runtime/prose/Li.vue.d.ts +84 -0
  153. package/dist/runtime/prose/Ol.vue +18 -23
  154. package/dist/runtime/prose/Ol.vue.d.ts +84 -0
  155. package/dist/runtime/prose/P.vue +18 -23
  156. package/dist/runtime/prose/P.vue.d.ts +84 -0
  157. package/dist/runtime/prose/Pre.vue +28 -33
  158. package/dist/runtime/prose/Pre.vue.d.ts +117 -0
  159. package/dist/runtime/prose/Strong.vue +18 -23
  160. package/dist/runtime/prose/Strong.vue.d.ts +84 -0
  161. package/dist/runtime/prose/Table.vue +44 -54
  162. package/dist/runtime/prose/Table.vue.d.ts +144 -0
  163. package/dist/runtime/prose/Tbody.vue +18 -23
  164. package/dist/runtime/prose/Tbody.vue.d.ts +84 -0
  165. package/dist/runtime/prose/Td.vue +18 -23
  166. package/dist/runtime/prose/Td.vue.d.ts +84 -0
  167. package/dist/runtime/prose/Th.vue +18 -23
  168. package/dist/runtime/prose/Th.vue.d.ts +84 -0
  169. package/dist/runtime/prose/Thead.vue +18 -23
  170. package/dist/runtime/prose/Thead.vue.d.ts +84 -0
  171. package/dist/runtime/prose/Tr.vue +18 -23
  172. package/dist/runtime/prose/Tr.vue.d.ts +84 -0
  173. package/dist/runtime/prose/Ul.vue +18 -23
  174. package/dist/runtime/prose/Ul.vue.d.ts +84 -0
  175. package/dist/runtime/vue/components/Link.vue +201 -202
  176. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  177. package/dist/runtime/vue/stubs.d.ts +3 -3
  178. package/dist/shared/{b24ui-nuxt.C1lGF53R.mjs → b24ui-nuxt.CS9Lf0os.mjs} +4 -3
  179. package/dist/types.d.mts +3 -5
  180. package/dist/unplugin.mjs +1 -1
  181. package/dist/vite.mjs +1 -1
  182. package/package.json +59 -32
  183. package/dist/meta.cjs +0 -72220
  184. package/dist/meta.d.cts +0 -72218
  185. package/dist/meta.d.ts +0 -72218
  186. package/dist/module.cjs +0 -59
  187. package/dist/module.d.cts +0 -15
  188. package/dist/module.d.ts +0 -15
  189. package/dist/shared/b24ui-nuxt.BVg3rkkG.cjs +0 -7720
  190. package/dist/types.d.ts +0 -7
  191. package/dist/unplugin.cjs +0 -236
  192. package/dist/unplugin.d.cts +0 -33
  193. package/dist/unplugin.d.ts +0 -33
  194. package/dist/vite.cjs +0 -21
  195. package/dist/vite.d.cts +0 -14
  196. package/dist/vite.d.ts +0 -14
@@ -0,0 +1,129 @@
1
+ import type { ButtonHTMLAttributes } from 'vue';
2
+ import type { RouterLinkProps, RouteLocationRaw } from 'vue-router';
3
+ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
4
+ /**
5
+ * Route Location the link should navigate to when clicked on.
6
+ */
7
+ to?: RouteLocationRaw;
8
+ /**
9
+ * An alias for `to`. If used with `to`, `href` will be ignored
10
+ */
11
+ href?: NuxtLinkProps['to'];
12
+ /**
13
+ * Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
14
+ */
15
+ external?: boolean;
16
+ /**
17
+ * Where to display the linked URL as the name for a browsing context.
18
+ */
19
+ target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
20
+ /**
21
+ * A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
22
+ */
23
+ rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
24
+ /**
25
+ * If set to true, no rel attribute will be added to the link
26
+ */
27
+ noRel?: boolean;
28
+ /**
29
+ * A class to apply to links that have been prefetched.
30
+ */
31
+ prefetchedClass?: string;
32
+ /**
33
+ * When enabled will prefetch middleware, layouts and payloads of links in the viewport.
34
+ */
35
+ prefetch?: boolean;
36
+ /**
37
+ * Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
38
+ */
39
+ prefetchOn?: 'visibility' | 'interaction' | Partial<{
40
+ visibility: boolean;
41
+ interaction: boolean;
42
+ }>;
43
+ /**
44
+ * Escape hatch to disable `prefetch` attribute.
45
+ */
46
+ noPrefetch?: boolean;
47
+ }
48
+ export interface LinkProps extends NuxtLinkProps {
49
+ /**
50
+ * The element or component this component should render as when not a link.
51
+ * @defaultValue 'button'
52
+ */
53
+ as?: any;
54
+ /**
55
+ * The type of the button when not a link.
56
+ * @defaultValue 'button'
57
+ */
58
+ type?: ButtonHTMLAttributes['type'];
59
+ disabled?: boolean;
60
+ /** Force the link to be active independent of the current route. */
61
+ active?: boolean;
62
+ /** Will only be active if the current route is an exact match. */
63
+ exact?: boolean;
64
+ /** Allows controlling how the current route query sets the link as active. */
65
+ exactQuery?: boolean | 'partial';
66
+ /** Will only be active if the current route hash is an exact match. */
67
+ exactHash?: boolean;
68
+ /** The class to apply when the link is inactive. */
69
+ inactiveClass?: string;
70
+ custom?: boolean;
71
+ /** When `true`, uses special underlined styling. */
72
+ isAction?: boolean;
73
+ /** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
74
+ raw?: boolean;
75
+ class?: any;
76
+ }
77
+ export interface LinkSlots {
78
+ default(props: {
79
+ active: boolean;
80
+ }): any;
81
+ }
82
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
83
+ as: string;
84
+ type: string;
85
+ ariaCurrentValue: string;
86
+ active: undefined;
87
+ isAction: boolean;
88
+ activeClass: string;
89
+ inactiveClass: string;
90
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkProps>, {
91
+ as: string;
92
+ type: string;
93
+ ariaCurrentValue: string;
94
+ active: undefined;
95
+ isAction: boolean;
96
+ activeClass: string;
97
+ inactiveClass: string;
98
+ }>>> & Readonly<{}>, {
99
+ as: any;
100
+ type: "reset" | "submit" | "button";
101
+ activeClass: string;
102
+ ariaCurrentValue: "page" | "step" | "location" | "date" | "time" | "true" | "false";
103
+ active: boolean;
104
+ inactiveClass: string;
105
+ isAction: boolean;
106
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<LinkSlots> & LinkSlots>;
107
+ export default _default;
108
+ type __VLS_WithDefaults<P, D> = {
109
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
110
+ default: D[K];
111
+ }> : P[K];
112
+ };
113
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
114
+ type __VLS_TypePropsToOption<T> = {
115
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
116
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
117
+ } : {
118
+ type: import('vue').PropType<T[K]>;
119
+ required: true;
120
+ };
121
+ };
122
+ type __VLS_WithTemplateSlots<T, S> = T & {
123
+ new (): {
124
+ $slots: S;
125
+ };
126
+ };
127
+ type __VLS_PrettifyLocal<T> = {
128
+ [K in keyof T]: T[K];
129
+ } & {};
@@ -1,43 +1,65 @@
1
- <script lang="ts">
2
- import type { LinkProps } from '../types'
1
+ <script>
3
2
 
4
- export interface LinkBaseProps {
5
- as?: string
6
- type?: string
7
- disabled?: boolean
8
- onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>
9
- href?: string
10
- navigate?: (e: MouseEvent) => void
11
- target?: LinkProps['target']
12
- rel?: LinkProps['rel']
13
- active?: boolean
14
- isExternal?: boolean
15
- }
16
3
  </script>
17
4
 
18
- <script setup lang="ts">
19
- import { Primitive } from 'reka-ui'
20
-
21
- const props = withDefaults(defineProps<LinkBaseProps>(), {
22
- as: 'button',
23
- type: 'button'
24
- })
25
-
26
- function onClickWrapper(e: MouseEvent) {
5
+ <script setup>
6
+ const props = defineProps({
7
+ as: {
8
+ type: String,
9
+ required: false,
10
+ default: "button"
11
+ },
12
+ type: {
13
+ type: String,
14
+ required: false,
15
+ default: "button"
16
+ },
17
+ disabled: {
18
+ type: Boolean,
19
+ required: false
20
+ },
21
+ onClick: {
22
+ type: [Function, Array],
23
+ required: false
24
+ },
25
+ href: {
26
+ type: String,
27
+ required: false
28
+ },
29
+ navigate: {
30
+ type: Function,
31
+ required: false
32
+ },
33
+ target: {
34
+ type: [String, Object, null],
35
+ required: false
36
+ },
37
+ rel: {
38
+ type: [String, Object, null],
39
+ required: false
40
+ },
41
+ active: {
42
+ type: Boolean,
43
+ required: false
44
+ },
45
+ isExternal: {
46
+ type: Boolean,
47
+ required: false
48
+ }
49
+ });
50
+ function onClickWrapper(e) {
27
51
  if (props.disabled) {
28
- e.stopPropagation()
29
- e.preventDefault()
30
- return
52
+ e.stopPropagation();
53
+ e.preventDefault();
54
+ return;
31
55
  }
32
-
33
56
  if (props.onClick) {
34
57
  for (const onClick of Array.isArray(props.onClick) ? props.onClick : [props.onClick]) {
35
- onClick(e)
58
+ onClick(e);
36
59
  }
37
60
  }
38
-
39
61
  if (props.href && props.navigate && !props.isExternal) {
40
- props.navigate(e)
62
+ props.navigate(e);
41
63
  }
42
64
  }
43
65
  </script>
@@ -45,18 +67,18 @@ function onClickWrapper(e: MouseEvent) {
45
67
  <template>
46
68
  <Primitive
47
69
  v-bind="href ? {
48
- 'as': 'a',
49
- 'href': disabled ? undefined : href,
50
- 'aria-disabled': disabled ? 'true' : undefined,
51
- 'role': disabled ? 'link' : undefined,
52
- 'tabindex': disabled ? -1 : undefined
53
- } : as === 'button' ? {
54
- as,
55
- type,
56
- disabled
57
- } : {
58
- as
59
- }"
70
+ 'as': 'a',
71
+ 'href': disabled ? void 0 : href,
72
+ 'aria-disabled': disabled ? 'true' : void 0,
73
+ 'role': disabled ? 'link' : void 0,
74
+ 'tabindex': disabled ? -1 : void 0
75
+ } : as === 'button' ? {
76
+ as,
77
+ type,
78
+ disabled
79
+ } : {
80
+ as
81
+ }"
60
82
  :rel="rel"
61
83
  :target="target"
62
84
  @click="onClickWrapper"
@@ -0,0 +1,48 @@
1
+ import type { LinkProps } from '../types';
2
+ export interface LinkBaseProps {
3
+ as?: string;
4
+ type?: string;
5
+ disabled?: boolean;
6
+ onClick?: ((e: MouseEvent) => void | Promise<void>) | Array<((e: MouseEvent) => void | Promise<void>)>;
7
+ href?: string;
8
+ navigate?: (e: MouseEvent) => void;
9
+ target?: LinkProps['target'];
10
+ rel?: LinkProps['rel'];
11
+ active?: boolean;
12
+ isExternal?: boolean;
13
+ }
14
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
15
+ as: string;
16
+ type: string;
17
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LinkBaseProps>, {
18
+ as: string;
19
+ type: string;
20
+ }>>> & Readonly<{}>, {
21
+ as: string;
22
+ type: string;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
24
+ default?(_: {}): any;
25
+ }>;
26
+ export default _default;
27
+ type __VLS_WithDefaults<P, D> = {
28
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
29
+ default: D[K];
30
+ }> : P[K];
31
+ };
32
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
33
+ type __VLS_TypePropsToOption<T> = {
34
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
35
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
36
+ } : {
37
+ type: import('vue').PropType<T[K]>;
38
+ required: true;
39
+ };
40
+ };
41
+ type __VLS_WithTemplateSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
46
+ type __VLS_PrettifyLocal<T> = {
47
+ [K in keyof T]: T[K];
48
+ } & {};
@@ -1,140 +1,118 @@
1
- <script lang="ts">
2
- import type { DialogRootProps, DialogRootEmits, DialogContentProps, DialogContentEmits } from 'reka-ui'
3
- import type { VariantProps } from 'tailwind-variants'
4
- import type { AppConfig } from '@nuxt/schema'
5
- import _appConfig from '#build/app.config'
6
- import theme from '#build/b24ui/modal'
7
- import { tv } from '../utils/tv'
8
- import type { ButtonProps, IconComponent } from '../types'
9
- import type { EmitsToProps } from '../types/utils'
10
-
11
- const appConfigModal = _appConfig as AppConfig & { b24ui: { modal: Partial<typeof theme> } }
12
-
13
- const modal = tv({ extend: tv(theme), ...(appConfigModal.b24ui?.modal || {}) })
14
-
15
- type ModalVariants = VariantProps<typeof modal>
16
-
17
- export interface ModalProps extends DialogRootProps {
18
- title?: string
19
- description?: string
20
- /**
21
- * The content of the modal
22
- */
23
- content?: Omit<DialogContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<DialogContentEmits>>
24
- /**
25
- * Render an overlay behind the modal.
26
- * @defaultValue true
27
- */
28
- overlay?: boolean
29
- /**
30
- * Render an overlay blur behind the modal.
31
- * `auto` use `motion-safe`.
32
- * @defaultValue 'auto'
33
- */
34
- overlayBlur?: ModalVariants['overlayBlur']
35
- /**
36
- * Animate the modal when opening or closing.
37
- * @defaultValue true
38
- */
39
- transition?: boolean
40
- /**
41
- * When `true`, the modal will take up the full screen.
42
- * @defaultValue false
43
- */
44
- fullscreen?: boolean
45
- /**
46
- * Render the modal in a portal.
47
- * @defaultValue true
48
- */
49
- portal?: boolean
50
- /**
51
- * Display a close button to dismiss the modal.
52
- * `{ size: 'xs', color: 'link' }`{lang="ts"}
53
- * @defaultValue true
54
- */
55
- close?: boolean | Partial<ButtonProps>
56
- /**
57
- * The icon displayed in the close button.
58
- * @defaultValue icons.close
59
- * @IconComponent
60
- */
61
- closeIcon?: IconComponent
62
- /**
63
- * When `false`, the modal will not close when clicking outside or pressing escape.
64
- * @defaultValue false
65
- */
66
- dismissible?: boolean
67
- /**
68
- * @defaultValue true
69
- */
70
- scrollbarThin?: boolean
71
- class?: any
72
- b24ui?: Partial<typeof modal.slots>
73
- }
74
-
75
- export interface ModalEmits extends DialogRootEmits {
76
- 'after:leave': []
77
- }
78
-
79
- export interface ModalSlots {
80
- default(props: { open: boolean }): any
81
- content(props?: {}): any
82
- header(props?: {}): any
83
- title(props?: {}): any
84
- description(props?: {}): any
85
- close(props: { b24ui: ReturnType<typeof modal> }): any
86
- body(props?: {}): any
87
- footer(props?: {}): any
88
- }
1
+ <script>
2
+ import _appConfig from "#build/app.config";
3
+ import theme from "#build/b24ui/modal";
4
+ import { tv } from "../utils/tv";
5
+ const appConfigModal = _appConfig;
6
+ const modal = tv({ extend: tv(theme), ...appConfigModal.b24ui?.modal || {} });
89
7
  </script>
90
8
 
91
- <script setup lang="ts">
92
- import { computed, toRef } from 'vue'
93
- import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose, VisuallyHidden, useForwardPropsEmits } from 'reka-ui'
94
- import { reactivePick } from '@vueuse/core'
95
- import { useLocale } from '../composables/useLocale'
96
- import icons from '../dictionary/icons'
97
- import B24Button from './Button.vue'
98
-
99
- const props = withDefaults(defineProps<ModalProps>(), {
100
- close: true,
101
- portal: true,
102
- overlay: true,
103
- transition: true,
104
- modal: true,
105
- dismissible: true,
106
- scrollbarThin: true,
107
- overlayBlur: 'auto'
108
- })
109
- const emits = defineEmits<ModalEmits>()
110
- const slots = defineSlots<ModalSlots>()
111
-
112
- const { t } = useLocale()
113
-
114
- const rootProps = useForwardPropsEmits(reactivePick(props, 'open', 'defaultOpen', 'modal'), emits)
115
- const contentProps = toRef(() => props.content)
9
+ <script setup>
10
+ import { computed, toRef } from "vue";
11
+ import { useForwardPropsEmits } from "reka-ui";
12
+ import { reactivePick } from "@vueuse/core";
13
+ import { useLocale } from "../composables/useLocale";
14
+ const props = defineProps({
15
+ title: {
16
+ type: String,
17
+ required: false
18
+ },
19
+ description: {
20
+ type: String,
21
+ required: false
22
+ },
23
+ content: {
24
+ type: Object,
25
+ required: false
26
+ },
27
+ overlay: {
28
+ type: Boolean,
29
+ required: false,
30
+ default: true
31
+ },
32
+ overlayBlur: {
33
+ type: null,
34
+ required: false,
35
+ default: "auto"
36
+ },
37
+ transition: {
38
+ type: Boolean,
39
+ required: false,
40
+ default: true
41
+ },
42
+ fullscreen: {
43
+ type: Boolean,
44
+ required: false
45
+ },
46
+ portal: {
47
+ type: Boolean,
48
+ required: false,
49
+ default: true
50
+ },
51
+ close: {
52
+ type: [Boolean, Object],
53
+ required: false,
54
+ default: true
55
+ },
56
+ closeIcon: {
57
+ type: [Function, Object],
58
+ required: false
59
+ },
60
+ dismissible: {
61
+ type: Boolean,
62
+ required: false,
63
+ default: true
64
+ },
65
+ scrollbarThin: {
66
+ type: Boolean,
67
+ required: false,
68
+ default: true
69
+ },
70
+ class: {
71
+ type: null,
72
+ required: false
73
+ },
74
+ b24ui: {
75
+ type: Object,
76
+ required: false
77
+ },
78
+ open: {
79
+ type: Boolean,
80
+ required: false
81
+ },
82
+ defaultOpen: {
83
+ type: Boolean,
84
+ required: false
85
+ },
86
+ modal: {
87
+ type: Boolean,
88
+ required: false,
89
+ default: true
90
+ }
91
+ });
92
+ const emits = defineEmits(["after:leave", "update:open"]);
93
+ const slots = defineSlots();
94
+ const { t } = useLocale();
95
+ const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen", "modal"), emits);
96
+ const contentProps = toRef(() => props.content);
116
97
  const contentEvents = computed(() => {
117
98
  const events = {
118
- closeAutoFocus: (e: Event) => e.preventDefault()
119
- }
120
-
99
+ closeAutoFocus: (e) => e.preventDefault()
100
+ };
121
101
  if (!props.dismissible) {
122
102
  return {
123
- pointerDownOutside: (e: Event) => e.preventDefault(),
124
- interactOutside: (e: Event) => e.preventDefault(),
125
- escapeKeyDown: (e: Event) => e.preventDefault(),
103
+ pointerDownOutside: (e) => e.preventDefault(),
104
+ interactOutside: (e) => e.preventDefault(),
105
+ escapeKeyDown: (e) => e.preventDefault(),
126
106
  ...events
127
- }
107
+ };
128
108
  }
129
-
130
- return events
131
- })
132
-
109
+ return events;
110
+ });
133
111
  const b24ui = computed(() => modal({
134
112
  transition: props.transition,
135
113
  fullscreen: props.fullscreen,
136
114
  overlayBlur: props.overlayBlur
137
- }))
115
+ }));
138
116
  </script>
139
117
 
140
118
  <template>
@@ -147,7 +125,7 @@ const b24ui = computed(() => modal({
147
125
  <DialogOverlay v-if="overlay" :class="b24ui.overlay({ class: props.b24ui?.overlay })" />
148
126
 
149
127
  <DialogContent :class="b24ui.content({ class: [!slots.default && props.class, props.b24ui?.content] })" v-bind="contentProps" @after-leave="emits('after:leave')" v-on="contentEvents">
150
- <VisuallyHidden v-if="!!slots.content && ((title || !!slots.title) || (description || !!slots.description))">
128
+ <VisuallyHidden v-if="!!slots.content && (title || !!slots.title || (description || !!slots.description))">
151
129
  <DialogTitle v-if="title || !!slots.title">
152
130
  <slot name="title">
153
131
  {{ title }}
@@ -186,7 +164,7 @@ const b24ui = computed(() => modal({
186
164
  size="xs"
187
165
  color="link"
188
166
  :aria-label="t('modal.close')"
189
- v-bind="(typeof close === 'object' ? close as Partial<ButtonProps> : {})"
167
+ v-bind="typeof close === 'object' ? close : {}"
190
168
  :class="b24ui.close({ class: props.b24ui?.close })"
191
169
  />
192
170
  </slot>