@baklavue/ui 1.0.0-preview.4 → 1.0.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 (287) hide show
  1. package/dist/accordion/Accordion.vue.d.ts +51 -0
  2. package/dist/accordion/Accordion.vue.d.ts.map +1 -0
  3. package/dist/accordion/accordion.types.d.ts +97 -0
  4. package/dist/accordion/accordion.types.d.ts.map +1 -0
  5. package/dist/accordion/index.d.ts +3 -0
  6. package/dist/accordion/index.d.ts.map +1 -0
  7. package/dist/alert/Alert.vue.d.ts +49 -0
  8. package/dist/alert/Alert.vue.d.ts.map +1 -0
  9. package/dist/alert/alert.types.d.ts +52 -0
  10. package/dist/alert/alert.types.d.ts.map +1 -0
  11. package/dist/alert/index.d.ts +3 -0
  12. package/dist/alert/index.d.ts.map +1 -0
  13. package/dist/badge/Badge.vue.d.ts +22 -0
  14. package/dist/badge/Badge.vue.d.ts.map +1 -0
  15. package/dist/badge/badge.types.d.ts +7 -0
  16. package/dist/badge/badge.types.d.ts.map +1 -0
  17. package/dist/badge/index.d.ts +3 -0
  18. package/dist/badge/index.d.ts.map +1 -0
  19. package/dist/banner/Banner.vue.d.ts +36 -0
  20. package/dist/banner/Banner.vue.d.ts.map +1 -0
  21. package/dist/banner/banner.types.d.ts +70 -0
  22. package/dist/banner/banner.types.d.ts.map +1 -0
  23. package/dist/banner/index.d.ts +3 -0
  24. package/dist/banner/index.d.ts.map +1 -0
  25. package/dist/button/Button.vue.d.ts +36 -0
  26. package/dist/button/Button.vue.d.ts.map +1 -0
  27. package/dist/button/button.types.d.ts +24 -0
  28. package/dist/button/button.types.d.ts.map +1 -0
  29. package/dist/button/index.d.ts +3 -0
  30. package/dist/button/index.d.ts.map +1 -0
  31. package/dist/checkbox/Checkbox.vue.d.ts +39 -0
  32. package/dist/checkbox/Checkbox.vue.d.ts.map +1 -0
  33. package/dist/checkbox/checkbox.types.d.ts +95 -0
  34. package/dist/checkbox/checkbox.types.d.ts.map +1 -0
  35. package/dist/checkbox/index.d.ts +3 -0
  36. package/dist/checkbox/index.d.ts.map +1 -0
  37. package/dist/chip/Chip.vue.d.ts +29 -0
  38. package/dist/chip/Chip.vue.d.ts.map +1 -0
  39. package/dist/chip/chip.types.d.ts +59 -0
  40. package/dist/chip/chip.types.d.ts.map +1 -0
  41. package/dist/chip/index.d.ts +3 -0
  42. package/dist/chip/index.d.ts.map +1 -0
  43. package/dist/datepicker/Datepicker.vue.d.ts +41 -0
  44. package/dist/datepicker/Datepicker.vue.d.ts.map +1 -0
  45. package/dist/datepicker/datepicker.types.d.ts +38 -0
  46. package/dist/datepicker/datepicker.types.d.ts.map +1 -0
  47. package/dist/datepicker/index.d.ts +3 -0
  48. package/dist/datepicker/index.d.ts.map +1 -0
  49. package/dist/dialog/Dialog.vue.d.ts +44 -0
  50. package/dist/dialog/Dialog.vue.d.ts.map +1 -0
  51. package/dist/dialog/dialog.types.d.ts +18 -0
  52. package/dist/dialog/dialog.types.d.ts.map +1 -0
  53. package/dist/dialog/index.d.ts +3 -0
  54. package/dist/dialog/index.d.ts.map +1 -0
  55. package/dist/drawer/Drawer.vue.d.ts +42 -0
  56. package/dist/drawer/Drawer.vue.d.ts.map +1 -0
  57. package/dist/drawer/drawer.types.d.ts +18 -0
  58. package/dist/drawer/drawer.types.d.ts.map +1 -0
  59. package/dist/drawer/index.d.ts +3 -0
  60. package/dist/drawer/index.d.ts.map +1 -0
  61. package/dist/dropdown/Dropdown.vue.d.ts +59 -0
  62. package/dist/dropdown/Dropdown.vue.d.ts.map +1 -0
  63. package/dist/dropdown/dropdown.types.d.ts +92 -0
  64. package/dist/dropdown/dropdown.types.d.ts.map +1 -0
  65. package/dist/dropdown/index.d.ts +3 -0
  66. package/dist/dropdown/index.d.ts.map +1 -0
  67. package/dist/file-upload/FileUpload.vue.d.ts +44 -0
  68. package/dist/file-upload/FileUpload.vue.d.ts.map +1 -0
  69. package/dist/file-upload/file-upload.types.d.ts +76 -0
  70. package/dist/file-upload/file-upload.types.d.ts.map +1 -0
  71. package/dist/file-upload/index.d.ts +3 -0
  72. package/dist/file-upload/index.d.ts.map +1 -0
  73. package/dist/icon/Icon.vue.d.ts +29 -0
  74. package/dist/icon/Icon.vue.d.ts.map +1 -0
  75. package/dist/icon/icon.types.d.ts +23 -0
  76. package/dist/icon/icon.types.d.ts.map +1 -0
  77. package/dist/icon/index.d.ts +3 -0
  78. package/dist/icon/index.d.ts.map +1 -0
  79. package/dist/image/Image.vue.d.ts +30 -0
  80. package/dist/image/Image.vue.d.ts.map +1 -0
  81. package/dist/image/image.types.d.ts +48 -0
  82. package/dist/image/image.types.d.ts.map +1 -0
  83. package/dist/image/index.d.ts +3 -0
  84. package/dist/image/index.d.ts.map +1 -0
  85. package/dist/index.css +474 -0
  86. package/dist/index.d.ts +42 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +2404 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/input/Input.vue.d.ts +39 -0
  91. package/dist/input/Input.vue.d.ts.map +1 -0
  92. package/dist/input/index.d.ts +3 -0
  93. package/dist/input/index.d.ts.map +1 -0
  94. package/dist/input/input.types.d.ts +122 -0
  95. package/dist/input/input.types.d.ts.map +1 -0
  96. package/dist/link/Link.vue.d.ts +38 -0
  97. package/dist/link/Link.vue.d.ts.map +1 -0
  98. package/dist/link/index.d.ts +3 -0
  99. package/dist/link/index.d.ts.map +1 -0
  100. package/dist/link/link.types.d.ts +40 -0
  101. package/dist/link/link.types.d.ts.map +1 -0
  102. package/dist/notification/Notification.vue.d.ts +7 -0
  103. package/dist/notification/Notification.vue.d.ts.map +1 -0
  104. package/dist/notification/index.d.ts +3 -0
  105. package/dist/notification/index.d.ts.map +1 -0
  106. package/dist/notification/notification.types.d.ts +25 -0
  107. package/dist/notification/notification.types.d.ts.map +1 -0
  108. package/dist/pagination/Pagination.vue.d.ts +34 -0
  109. package/dist/pagination/Pagination.vue.d.ts.map +1 -0
  110. package/dist/pagination/index.d.ts +3 -0
  111. package/dist/pagination/index.d.ts.map +1 -0
  112. package/dist/pagination/pagination.types.d.ts +54 -0
  113. package/dist/pagination/pagination.types.d.ts.map +1 -0
  114. package/dist/radio/Radio.vue.d.ts +42 -0
  115. package/dist/radio/Radio.vue.d.ts.map +1 -0
  116. package/dist/radio/index.d.ts +3 -0
  117. package/dist/radio/index.d.ts.map +1 -0
  118. package/dist/radio/radio.types.d.ts +84 -0
  119. package/dist/radio/radio.types.d.ts.map +1 -0
  120. package/dist/scroll-to-top/ScrollToTop.vue.d.ts +14 -0
  121. package/dist/scroll-to-top/ScrollToTop.vue.d.ts.map +1 -0
  122. package/dist/scroll-to-top/index.d.ts +3 -0
  123. package/dist/scroll-to-top/index.d.ts.map +1 -0
  124. package/dist/scroll-to-top/scroll-to-top.types.d.ts +33 -0
  125. package/dist/scroll-to-top/scroll-to-top.types.d.ts.map +1 -0
  126. package/dist/select/Select.vue.d.ts +42 -0
  127. package/dist/select/Select.vue.d.ts.map +1 -0
  128. package/dist/select/index.d.ts +3 -0
  129. package/dist/select/index.d.ts.map +1 -0
  130. package/dist/select/select.types.d.ts +52 -0
  131. package/dist/select/select.types.d.ts.map +1 -0
  132. package/dist/skeleton/Skeleton.vue.d.ts +9 -0
  133. package/dist/skeleton/Skeleton.vue.d.ts.map +1 -0
  134. package/dist/skeleton/index.d.ts +3 -0
  135. package/dist/skeleton/index.d.ts.map +1 -0
  136. package/dist/skeleton/skeleton.types.d.ts +30 -0
  137. package/dist/skeleton/skeleton.types.d.ts.map +1 -0
  138. package/dist/spinner/Spinner.vue.d.ts +8 -0
  139. package/dist/spinner/Spinner.vue.d.ts.map +1 -0
  140. package/dist/spinner/index.d.ts +3 -0
  141. package/dist/spinner/index.d.ts.map +1 -0
  142. package/dist/spinner/spinner.types.d.ts +12 -0
  143. package/dist/spinner/spinner.types.d.ts.map +1 -0
  144. package/dist/split-button/SplitButton.vue.d.ts +25 -0
  145. package/dist/split-button/SplitButton.vue.d.ts.map +1 -0
  146. package/dist/split-button/index.d.ts +3 -0
  147. package/dist/split-button/index.d.ts.map +1 -0
  148. package/dist/split-button/split-button.types.d.ts +19 -0
  149. package/dist/split-button/split-button.types.d.ts.map +1 -0
  150. package/dist/stepper/Stepper.vue.d.ts +30 -0
  151. package/dist/stepper/Stepper.vue.d.ts.map +1 -0
  152. package/dist/stepper/index.d.ts +3 -0
  153. package/dist/stepper/index.d.ts.map +1 -0
  154. package/dist/stepper/stepper.types.d.ts +29 -0
  155. package/dist/stepper/stepper.types.d.ts.map +1 -0
  156. package/dist/switch/Switch.vue.d.ts +32 -0
  157. package/dist/switch/Switch.vue.d.ts.map +1 -0
  158. package/dist/switch/index.d.ts +3 -0
  159. package/dist/switch/index.d.ts.map +1 -0
  160. package/dist/switch/switch.types.d.ts +14 -0
  161. package/dist/switch/switch.types.d.ts.map +1 -0
  162. package/dist/tab/Tab.vue.d.ts +31 -0
  163. package/dist/tab/Tab.vue.d.ts.map +1 -0
  164. package/dist/tab/index.d.ts +3 -0
  165. package/dist/tab/index.d.ts.map +1 -0
  166. package/dist/tab/tab.types.d.ts +17 -0
  167. package/dist/tab/tab.types.d.ts.map +1 -0
  168. package/dist/table/Table.vue.d.ts +181 -0
  169. package/dist/table/Table.vue.d.ts.map +1 -0
  170. package/dist/table/index.d.ts +3 -0
  171. package/dist/table/index.d.ts.map +1 -0
  172. package/dist/table/table.types.d.ts +61 -0
  173. package/dist/table/table.types.d.ts.map +1 -0
  174. package/dist/tag/Tag.vue.d.ts +31 -0
  175. package/dist/tag/Tag.vue.d.ts.map +1 -0
  176. package/dist/tag/index.d.ts +3 -0
  177. package/dist/tag/index.d.ts.map +1 -0
  178. package/dist/tag/tag.types.d.ts +22 -0
  179. package/dist/tag/tag.types.d.ts.map +1 -0
  180. package/dist/textarea/Textarea.vue.d.ts +35 -0
  181. package/dist/textarea/Textarea.vue.d.ts.map +1 -0
  182. package/dist/textarea/index.d.ts +3 -0
  183. package/dist/textarea/index.d.ts.map +1 -0
  184. package/dist/textarea/textarea.types.d.ts +37 -0
  185. package/dist/textarea/textarea.types.d.ts.map +1 -0
  186. package/dist/tooltip/Tooltip.vue.d.ts +33 -0
  187. package/dist/tooltip/Tooltip.vue.d.ts.map +1 -0
  188. package/dist/tooltip/index.d.ts +3 -0
  189. package/dist/tooltip/index.d.ts.map +1 -0
  190. package/dist/tooltip/tooltip.types.d.ts +17 -0
  191. package/dist/tooltip/tooltip.types.d.ts.map +1 -0
  192. package/dist/utils/loadBaklavaResources.d.ts +2 -0
  193. package/dist/utils/loadBaklavaResources.d.ts.map +1 -0
  194. package/package.json +28 -4
  195. package/.releaserc.json +0 -14
  196. package/CHANGELOG.md +0 -56
  197. package/index.ts +0 -1
  198. package/src/accordion/Accordion.vue +0 -206
  199. package/src/accordion/accordion.types.ts +0 -109
  200. package/src/accordion/index.ts +0 -3
  201. package/src/alert/Alert.vue +0 -199
  202. package/src/alert/alert.types.ts +0 -58
  203. package/src/alert/index.ts +0 -2
  204. package/src/badge/Badge.vue +0 -20
  205. package/src/badge/badge.types.ts +0 -7
  206. package/src/badge/index.ts +0 -2
  207. package/src/button/Button.vue +0 -45
  208. package/src/button/button.types.ts +0 -30
  209. package/src/button/index.ts +0 -3
  210. package/src/checkbox/Checkbox.vue +0 -148
  211. package/src/checkbox/checkbox.types.ts +0 -108
  212. package/src/checkbox/index.ts +0 -2
  213. package/src/datepicker/Datepicker.vue +0 -172
  214. package/src/datepicker/datepicker.types.ts +0 -39
  215. package/src/datepicker/index.ts +0 -2
  216. package/src/dialog/Dialog.vue +0 -178
  217. package/src/dialog/dialog.types.ts +0 -17
  218. package/src/dialog/index.ts +0 -2
  219. package/src/drawer/Drawer.vue +0 -162
  220. package/src/drawer/drawer.types.ts +0 -17
  221. package/src/drawer/index.ts +0 -2
  222. package/src/dropdown/Dropdown.vue +0 -231
  223. package/src/dropdown/dropdown.types.ts +0 -110
  224. package/src/dropdown/index.ts +0 -2
  225. package/src/file-upload/FileUpload.vue +0 -440
  226. package/src/file-upload/file-upload.types.ts +0 -89
  227. package/src/file-upload/index.ts +0 -7
  228. package/src/icon/Icon.vue +0 -102
  229. package/src/icon/icon.types.ts +0 -25
  230. package/src/icon/index.ts +0 -2
  231. package/src/image/Image.vue +0 -144
  232. package/src/image/image.types.ts +0 -57
  233. package/src/image/index.ts +0 -3
  234. package/src/index.ts +0 -41
  235. package/src/input/Input.vue +0 -148
  236. package/src/input/index.ts +0 -3
  237. package/src/input/input.types.ts +0 -156
  238. package/src/link/Link.vue +0 -133
  239. package/src/link/index.ts +0 -2
  240. package/src/link/link.types.ts +0 -42
  241. package/src/notification/Notification.vue +0 -57
  242. package/src/notification/index.ts +0 -2
  243. package/src/notification/notification.types.ts +0 -25
  244. package/src/pagination/Pagination.vue +0 -137
  245. package/src/pagination/index.ts +0 -2
  246. package/src/pagination/pagination.types.ts +0 -61
  247. package/src/radio/Radio.vue +0 -205
  248. package/src/radio/index.ts +0 -2
  249. package/src/radio/radio.types.ts +0 -95
  250. package/src/scroll-to-top/ScrollToTop.vue +0 -130
  251. package/src/scroll-to-top/index.ts +0 -2
  252. package/src/scroll-to-top/scroll-to-top.types.ts +0 -42
  253. package/src/select/Select.vue +0 -147
  254. package/src/select/index.ts +0 -2
  255. package/src/select/select.types.ts +0 -53
  256. package/src/skeleton/Skeleton.vue +0 -115
  257. package/src/skeleton/index.ts +0 -2
  258. package/src/skeleton/skeleton.types.ts +0 -33
  259. package/src/spinner/Spinner.vue +0 -49
  260. package/src/spinner/index.ts +0 -2
  261. package/src/spinner/spinner.types.ts +0 -11
  262. package/src/split-button/SplitButton.vue +0 -73
  263. package/src/split-button/index.ts +0 -2
  264. package/src/split-button/split-button.types.ts +0 -19
  265. package/src/stepper/Stepper.vue +0 -100
  266. package/src/stepper/index.ts +0 -2
  267. package/src/stepper/stepper.types.ts +0 -29
  268. package/src/switch/Switch.vue +0 -80
  269. package/src/switch/index.ts +0 -2
  270. package/src/switch/switch.types.ts +0 -13
  271. package/src/tab/Tab.vue +0 -99
  272. package/src/tab/index.ts +0 -2
  273. package/src/tab/tab.types.ts +0 -17
  274. package/src/table/Table.vue +0 -264
  275. package/src/table/index.ts +0 -7
  276. package/src/table/table.types.ts +0 -62
  277. package/src/tag/Tag.vue +0 -83
  278. package/src/tag/index.ts +0 -2
  279. package/src/tag/tag.types.ts +0 -24
  280. package/src/textarea/Textarea.vue +0 -84
  281. package/src/textarea/index.ts +0 -2
  282. package/src/textarea/textarea.types.ts +0 -37
  283. package/src/tooltip/Tooltip.vue +0 -81
  284. package/src/tooltip/index.ts +0 -3
  285. package/src/tooltip/tooltip.types.ts +0 -29
  286. package/src/utils/loadBaklavaResources.ts +0 -24
  287. package/tsconfig.json +0 -28
@@ -1,231 +0,0 @@
1
- <script setup lang="ts">
2
- /**
3
- * Dropdown Component
4
- *
5
- * A Vue UI kit component for Baklava's `bl-dropdown`, `bl-dropdown-group`, and `bl-dropdown-item`
6
- * web components. Can be used in two modes: slot mode (custom content via slots) or items
7
- * mode (declarative menu items with optional grouping).
8
- *
9
- * @component
10
- * @example
11
- * ```vue
12
- * <!-- Basic usage with label and items -->
13
- * <template>
14
- * <BvDropdown label="Actions" :items="menuItems">
15
- * <template #item="{ item }">
16
- * {{ item.caption }}
17
- * </template>
18
- * </BvDropdown>
19
- * </template>
20
- * ```
21
- *
22
- * @example
23
- * ```vue
24
- * <!-- Items mode with groups -->
25
- * <template>
26
- * <BvDropdown label="Menu" :items="groupedItems">
27
- * <template #item="{ item }">
28
- * {{ item.caption }}
29
- * </template>
30
- * </BvDropdown>
31
- * </template>
32
- * ```
33
- *
34
- * @example
35
- * ```vue
36
- * <!-- Programmatic control via ref -->
37
- * <template>
38
- * <BvButton @click="dropdownRef?.open()">Open</BvButton>
39
- * <BvButton @click="dropdownRef?.close()">Close</BvButton>
40
- * <BvDropdown ref="dropdownRef" label="Menu" :items="items">
41
- * <template #item="{ item }">{{ item.caption }}</template>
42
- * </BvDropdown>
43
- * </template>
44
- * ```
45
- */
46
- import { computed, onMounted, ref, watch } from "vue";
47
- import { loadBaklavaResources } from "../utils/loadBaklavaResources";
48
- import type { DropdownItem, DropdownProps } from "./dropdown.types";
49
-
50
- const props = withDefaults(defineProps<DropdownProps>(), {
51
- open: false,
52
- placement: undefined,
53
- disabled: false,
54
- trigger: undefined,
55
- label: "Menu",
56
- variant: undefined,
57
- kind: undefined,
58
- size: undefined,
59
- icon: undefined,
60
- items: undefined,
61
- });
62
-
63
- const emit = defineEmits<{
64
- /** Emitted when visibility changes. Use for two-way binding. */
65
- "update:open": [open: boolean];
66
- /** Emitted when the dropdown is opened. */
67
- open: [];
68
- /** Emitted when the dropdown is closed. */
69
- close: [];
70
- /** Emitted when a dropdown item is clicked (from bl-dropdown-item-click). */
71
- select: [event: CustomEvent];
72
- }>();
73
-
74
- /** Reference to the underlying bl-dropdown element. */
75
- const dropdownRef = ref<HTMLElement | null>(null);
76
-
77
- /** Determines if the component is in items mode (using items prop). */
78
- const isItemsMode = computed(
79
- () => Array.isArray(props.items) && props.items.length > 0,
80
- );
81
-
82
- /** Groups items by groupCaption for rendering bl-dropdown-group. */
83
- const groupedItems = computed(() => {
84
- if (!props.items) return [];
85
- const groups = new Map<
86
- string | undefined,
87
- { item: DropdownItem; index: number }[]
88
- >();
89
- props.items.forEach((item, index) => {
90
- const key = item.groupCaption ?? undefined;
91
- const list = groups.get(key) ?? [];
92
- list.push({ item, index });
93
- groups.set(key, list);
94
- });
95
- return Array.from(groups.entries()).map(([groupCaption, entries]) => ({
96
- groupCaption: groupCaption || undefined,
97
- entries,
98
- }));
99
- });
100
-
101
- /** Handles bl-dropdown-open event. Syncs state and emits. */
102
- const handleOpen = () => {
103
- emit("update:open", true);
104
- emit("open");
105
- };
106
-
107
- /** Handles bl-dropdown-close event. Syncs state and emits. */
108
- const handleClose = () => {
109
- emit("update:open", false);
110
- emit("close");
111
- };
112
-
113
- /** Handles bl-dropdown-item-click from items. Bubbles as select event. */
114
- const handleItemClick = (event: CustomEvent) => {
115
- emit("select", event);
116
- };
117
-
118
- type BlDropdownElement = {
119
- opened?: boolean;
120
- open: () => void;
121
- close: () => void;
122
- };
123
-
124
- function getBlDropdown(el: HTMLElement | null): BlDropdownElement | null {
125
- return el as unknown as BlDropdownElement | null;
126
- }
127
-
128
- /** Syncs props.open to the bl-dropdown element. */
129
- watch(
130
- () => props.open,
131
- (newValue) => {
132
- const blDropdown = getBlDropdown(dropdownRef.value);
133
- if (blDropdown) {
134
- if (newValue && !blDropdown.opened) {
135
- blDropdown.open();
136
- } else if (!newValue && blDropdown.opened) {
137
- blDropdown.close();
138
- }
139
- }
140
- },
141
- { immediate: true },
142
- );
143
-
144
- onMounted(() => {
145
- loadBaklavaResources();
146
-
147
- const blDropdown = getBlDropdown(dropdownRef.value);
148
- if (blDropdown && blDropdown.opened !== props.open) {
149
- if (props.open) {
150
- blDropdown.open();
151
- } else {
152
- blDropdown.close();
153
- }
154
- }
155
- });
156
-
157
- defineExpose({
158
- /** Opens the dropdown programmatically. */
159
- open: () => {
160
- getBlDropdown(dropdownRef.value)?.open();
161
- },
162
- /** Closes the dropdown programmatically. */
163
- close: () => {
164
- getBlDropdown(dropdownRef.value)?.close();
165
- },
166
- /** Toggles the dropdown open/closed state. */
167
- toggle: () => {
168
- const blDropdown = getBlDropdown(dropdownRef.value);
169
- if (blDropdown) {
170
- if (blDropdown.opened) {
171
- blDropdown.close();
172
- } else {
173
- blDropdown.open();
174
- }
175
- }
176
- },
177
- });
178
- </script>
179
-
180
- <template>
181
- <bl-dropdown
182
- ref="dropdownRef"
183
- v-bind="{
184
- label: props.label,
185
- variant: props.variant,
186
- kind: props.kind,
187
- size: props.size,
188
- icon: props.icon,
189
- disabled: props.disabled === true ? true : undefined,
190
- }"
191
- @bl-dropdown-open="handleOpen"
192
- @bl-dropdown-close="handleClose"
193
- >
194
- <!-- Items mode: render bl-dropdown-group and bl-dropdown-item -->
195
- <template v-if="isItemsMode">
196
- <template v-for="(group, gi) in groupedItems" :key="gi">
197
- <bl-dropdown-group
198
- v-if="group.groupCaption"
199
- :caption="group.groupCaption"
200
- >
201
- <bl-dropdown-item
202
- v-for="(entry, ii) in group.entries"
203
- :key="`${gi}-${ii}`"
204
- :icon="entry.item.icon"
205
- :disabled="entry.item.disabled === true"
206
- @bl-dropdown-item-click="handleItemClick"
207
- >
208
- <slot name="item" :item="entry.item" :index="entry.index">
209
- {{ entry.item.caption }}
210
- </slot>
211
- </bl-dropdown-item>
212
- </bl-dropdown-group>
213
- <template v-else>
214
- <bl-dropdown-item
215
- v-for="(entry, ii) in group.entries"
216
- :key="`${gi}-${ii}`"
217
- :icon="entry.item.icon"
218
- :disabled="entry.item.disabled === true"
219
- @bl-dropdown-item-click="handleItemClick"
220
- >
221
- <slot name="item" :item="entry.item" :index="entry.index">
222
- {{ entry.item.caption }}
223
- </slot>
224
- </bl-dropdown-item>
225
- </template>
226
- </template>
227
- </template>
228
- <!-- Slot mode: default slot for custom content -->
229
- <slot v-else />
230
- </bl-dropdown>
231
- </template>
@@ -1,110 +0,0 @@
1
- import type { BaklavaIcon } from "@trendyol/baklava-icons";
2
- import type {
3
- ButtonKind,
4
- ButtonSize,
5
- ButtonVariant,
6
- } from "@trendyol/baklava/dist/components/button/bl-button";
7
-
8
- /**
9
- * Properties for a dropdown item when used in items mode.
10
- *
11
- * @interface DropdownItem
12
- */
13
- export interface DropdownItem {
14
- /**
15
- * The caption text displayed for the item.
16
- */
17
- caption?: string;
18
-
19
- /**
20
- * Icon name for the item. Shows icon with bl-icon component.
21
- */
22
- icon?: BaklavaIcon;
23
-
24
- /**
25
- * Whether the item is disabled.
26
- *
27
- * @default false
28
- */
29
- disabled?: boolean;
30
-
31
- /**
32
- * Optional group caption. Items with the same groupCaption are rendered
33
- * inside a bl-dropdown-group with that caption.
34
- */
35
- groupCaption?: string;
36
-
37
- /**
38
- * Additional custom data for use in the #item scoped slot.
39
- */
40
- [key: string]: unknown;
41
- }
42
-
43
- /**
44
- * Props for the Dropdown component.
45
- *
46
- * When `items` prop is provided, the component acts in items mode using
47
- * bl-dropdown-group and bl-dropdown-item. Otherwise, it uses slots for
48
- * trigger and content.
49
- *
50
- * @interface DropdownProps
51
- */
52
- export interface DropdownProps {
53
- /**
54
- * Whether the dropdown is open.
55
- *
56
- * @default false
57
- */
58
- open?: boolean;
59
-
60
- /**
61
- * Placement of the dropdown popover relative to the trigger.
62
- * Maps to bl-popover placement.
63
- */
64
- placement?: string;
65
-
66
- /**
67
- * Whether the dropdown trigger is disabled.
68
- *
69
- * @default false
70
- */
71
- disabled?: boolean;
72
-
73
- /**
74
- * Reserved for custom trigger configuration.
75
- */
76
- trigger?: string;
77
-
78
- /**
79
- * Label for the built-in dropdown button.
80
- * Used when in items mode or when not using trigger slot.
81
- */
82
- label?: string;
83
-
84
- /**
85
- * Button variant for the built-in dropdown button.
86
- */
87
- variant?: ButtonVariant;
88
-
89
- /**
90
- * Button kind for the built-in dropdown button.
91
- */
92
- kind?: ButtonKind;
93
-
94
- /**
95
- * Button size for the built-in dropdown button.
96
- */
97
- size?: ButtonSize;
98
-
99
- /**
100
- * Icon name for the built-in dropdown button.
101
- */
102
- icon?: string;
103
-
104
- /**
105
- * Array of dropdown items to render when in items mode.
106
- * Each item will be rendered as a bl-dropdown-item (optionally grouped
107
- * via bl-dropdown-group). Content for each item is provided via the #item slot.
108
- */
109
- items?: DropdownItem[];
110
- }
@@ -1,2 +0,0 @@
1
- export { default as BvDropdown } from "./Dropdown.vue";
2
- export type { DropdownProps, DropdownItem } from "./dropdown.types";