@bagelink/vue 0.0.1147 → 0.0.1155

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 (256) hide show
  1. package/dist/common-C_IH8b5S.cjs +12580 -0
  2. package/dist/common-DoeNgx31.js +12579 -0
  3. package/dist/components/AddressSaerch.vue.d.ts +7 -0
  4. package/dist/components/AddressSaerch.vue.d.ts.map +1 -0
  5. package/dist/components/ComboBox.vue.d.ts +3 -3
  6. package/dist/components/Comments.vue.d.ts +2 -2
  7. package/dist/components/ContactSubmissions.vue.d.ts +2 -2
  8. package/dist/components/DataPreview.vue.d.ts +12 -35
  9. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  10. package/dist/components/DataTable/DataTable.vue.d.ts +1 -1
  11. package/dist/components/DataTable/DataTable.vue.d.ts.map +1 -1
  12. package/dist/components/DataTable/useTableData.d.ts +10 -2
  13. package/dist/components/DataTable/useTableData.d.ts.map +1 -1
  14. package/dist/components/Draggable/Draggable.vue.d.ts +45 -0
  15. package/dist/components/Draggable/Draggable.vue.d.ts.map +1 -0
  16. package/dist/components/Draggable/index.d.ts +5 -0
  17. package/dist/components/Draggable/index.d.ts.map +1 -0
  18. package/dist/components/Draggable/useDraggable.d.ts +31 -0
  19. package/dist/components/Draggable/useDraggable.d.ts.map +1 -0
  20. package/dist/components/Draggable/vDraggable.d.ts +4 -0
  21. package/dist/components/Draggable/vDraggable.d.ts.map +1 -0
  22. package/dist/components/FormSchema.vue.d.ts +4 -5
  23. package/dist/components/LangText.vue.d.ts +2 -2
  24. package/dist/components/ListView.vue.d.ts.map +1 -1
  25. package/dist/components/ModalBglForm.vue.d.ts +20 -21
  26. package/dist/components/PersonPreview.vue.d.ts +4 -5
  27. package/dist/components/PersonPreviewFormkit.vue.d.ts +3 -4
  28. package/dist/components/Popover.vue.d.ts +10 -0
  29. package/dist/components/Popover.vue.d.ts.map +1 -0
  30. package/dist/components/RTXEditor.vue.d.ts +3 -3
  31. package/dist/components/TabbedLayout.vue.d.ts +4 -5
  32. package/dist/components/TableSchema.vue.d.ts +2 -2
  33. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  34. package/dist/components/charts/BarChart.vue.d.ts +2 -2
  35. package/dist/components/form/BagelForm.vue.d.ts.map +1 -1
  36. package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
  37. package/dist/components/form/ItemRef.vue.d.ts +3 -5
  38. package/dist/components/form/ItemRef.vue.d.ts.map +1 -1
  39. package/dist/components/form/MaterialIcon.vue.d.ts +3 -4
  40. package/dist/components/form/PlainInputField.vue.d.ts +3 -3
  41. package/dist/components/form/index.d.ts +0 -1
  42. package/dist/components/form/index.d.ts.map +1 -1
  43. package/dist/components/form/inputs/CurrencyInput.vue.d.ts +3 -3
  44. package/dist/components/form/inputs/DatetimeInput.vue.d.ts +3 -3
  45. package/dist/components/form/inputs/DurationInput.vue.d.ts +3 -3
  46. package/dist/components/form/inputs/DynamicLinkField.vue.d.ts +3 -3
  47. package/dist/components/form/inputs/EmailInput.vue.d.ts +3 -3
  48. package/dist/components/form/inputs/FloatInput.vue.d.ts +3 -3
  49. package/dist/components/form/inputs/IntInput.vue.d.ts +3 -3
  50. package/dist/components/form/inputs/LinkField.vue.d.ts +3 -3
  51. package/dist/components/form/inputs/Password.vue.d.ts +3 -3
  52. package/dist/components/form/inputs/PlainText.vue.d.ts +3 -3
  53. package/dist/components/form/inputs/ReadOnlyInput.vue.d.ts +2 -2
  54. package/dist/components/form/inputs/RichText/Toolbar.vue.d.ts +14 -0
  55. package/dist/components/form/inputs/RichText/Toolbar.vue.d.ts.map +1 -0
  56. package/dist/components/form/inputs/RichText/formatting.d.ts +11 -0
  57. package/dist/components/form/inputs/RichText/formatting.d.ts.map +1 -0
  58. package/dist/components/form/inputs/RichText/richtext-types.d.ts +3 -0
  59. package/dist/components/form/inputs/RichText/richtext-types.d.ts.map +1 -0
  60. package/dist/components/form/inputs/RichText2/Toolbar.vue.d.ts.map +1 -1
  61. package/dist/components/form/inputs/RichText2/index.vue.d.ts +0 -1
  62. package/dist/components/form/inputs/RichText2/index.vue.d.ts.map +1 -1
  63. package/dist/components/form/inputs/RichTextEditor.vue.d.ts +3 -3
  64. package/dist/components/form/inputs/SelectField.vue.d.ts +8 -6
  65. package/dist/components/form/inputs/SelectField.vue.d.ts.map +1 -1
  66. package/dist/components/form/inputs/SelectInput.vue.d.ts +4 -4
  67. package/dist/components/form/inputs/TextArea.vue.d.ts +3 -3
  68. package/dist/components/form/inputs/TextInput.vue.d.ts +1 -1
  69. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  70. package/dist/components/form/inputs/Upload/UploadFile.vue.d.ts +86 -0
  71. package/dist/components/form/inputs/Upload/UploadFile.vue.d.ts.map +1 -0
  72. package/dist/components/formkit/AddressArray.vue.d.ts +2 -2
  73. package/dist/components/formkit/BankDetailsArray.vue.d.ts +2 -2
  74. package/dist/components/formkit/ContactArrayFormKit.vue.d.ts +2 -2
  75. package/dist/components/formkit/FileUploader.vue.d.ts +2 -2
  76. package/dist/components/formkit/MiscFields.vue.d.ts +2 -2
  77. package/dist/components/formkit/Toggle.vue.d.ts +2 -2
  78. package/dist/components/index.d.ts +2 -0
  79. package/dist/components/index.d.ts.map +1 -1
  80. package/dist/components/layout/Layout.vue.d.ts +1 -1
  81. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  82. package/dist/components/sortable/Animation.d.ts +43 -0
  83. package/dist/components/sortable/Animation.d.ts.map +1 -0
  84. package/dist/components/sortable/BrowserInfo.d.ts +7 -0
  85. package/dist/components/sortable/BrowserInfo.d.ts.map +1 -0
  86. package/dist/components/sortable/EventDispatcher.d.ts +13 -0
  87. package/dist/components/sortable/EventDispatcher.d.ts.map +1 -0
  88. package/dist/components/sortable/PluginManager.d.ts +27 -0
  89. package/dist/components/sortable/PluginManager.d.ts.map +1 -0
  90. package/dist/components/sortable/Sortable.d.ts +81 -0
  91. package/dist/components/sortable/Sortable.d.ts.map +1 -0
  92. package/dist/components/sortable/index.d.ts +5 -0
  93. package/dist/components/sortable/index.d.ts.map +1 -0
  94. package/dist/components/sortable/utils.d.ts +49 -0
  95. package/dist/components/sortable/utils.d.ts.map +1 -0
  96. package/dist/components/whatsapp/form/MsgTemplate.vue.d.ts +3 -4
  97. package/dist/components/whatsapp/form/TextVariableExamples.vue.d.ts +2 -2
  98. package/dist/composables/drag-n-drop/useDraggable.d.ts +2 -0
  99. package/dist/composables/drag-n-drop/useDraggable.d.ts.map +1 -0
  100. package/dist/composables/useSchemaField.d.ts +15 -0
  101. package/dist/composables/useSchemaField.d.ts.map +1 -0
  102. package/dist/editor-CUDRLdmS.js +4 -0
  103. package/dist/editor-Cu374vEW.cjs +4 -0
  104. package/dist/editor-a8DSbb6P.js +4 -0
  105. package/dist/editor-xBt_vIha.cjs +4 -0
  106. package/dist/heic2any-8wMqMfB_.js +933 -0
  107. package/dist/heic2any-BrqcNzfV.js +935 -0
  108. package/dist/heic2any-C8KwH72N.cjs +934 -0
  109. package/dist/heic2any-k9wDCKka.cjs +932 -0
  110. package/dist/index-DiG-xM9T.cjs +35016 -0
  111. package/dist/index-nGuSAiY2.js +35017 -0
  112. package/dist/index.cjs +1322 -884
  113. package/dist/index.mjs +1324 -886
  114. package/dist/plugins/drag-n-drop/draggable.d.ts +4 -0
  115. package/dist/plugins/drag-n-drop/draggable.d.ts.map +1 -0
  116. package/dist/plugins/drag-n-drop/droppable.d.ts +4 -0
  117. package/dist/plugins/drag-n-drop/droppable.d.ts.map +1 -0
  118. package/dist/plugins/drag-n-drop/index.d.ts +5 -0
  119. package/dist/plugins/drag-n-drop/index.d.ts.map +1 -0
  120. package/dist/plugins/drag-n-drop/useDraggable.d.ts +8 -0
  121. package/dist/plugins/drag-n-drop/useDraggable.d.ts.map +1 -0
  122. package/dist/plugins/drag-n-drop/useDroppable.d.ts +7 -0
  123. package/dist/plugins/drag-n-drop/useDroppable.d.ts.map +1 -0
  124. package/dist/style.css +186 -208
  125. package/dist/types/materialIcon.d.ts +2 -0
  126. package/dist/types/materialIcon.d.ts.map +1 -0
  127. package/dist/utils/objects.d.ts +0 -1
  128. package/package.json +1 -1
  129. package/src/components/DataPreview.vue +45 -116
  130. package/src/components/DataTable/DataTable.vue +18 -12
  131. package/src/components/DataTable/useTableData.ts +50 -16
  132. package/src/components/Draggable/Draggable.vue +64 -0
  133. package/src/components/Draggable/index.ts +4 -0
  134. package/src/components/Draggable/useDraggable.ts +632 -0
  135. package/src/components/Draggable/vDraggable.ts +17 -0
  136. package/src/components/ListView.vue +6 -2
  137. package/src/components/Pill.vue +1 -1
  138. package/src/components/form/BagelForm.vue +16 -101
  139. package/src/components/form/FieldArray.vue +21 -3
  140. package/src/components/form/index.ts +0 -1
  141. package/src/components/form/inputs/TextInput.vue +5 -5
  142. package/src/components/index.ts +5 -1
  143. package/src/composables/useSchemaField.ts +193 -0
  144. package/src/styles/text.css +15 -11
  145. package/dist/components/Accordion.d.ts +0 -12
  146. package/dist/components/Accordion.d.ts.map +0 -1
  147. package/dist/components/AccordionItem.d.ts +0 -34
  148. package/dist/components/AccordionItem.d.ts.map +0 -1
  149. package/dist/components/Alert.d.ts +0 -34
  150. package/dist/components/Alert.d.ts.map +0 -1
  151. package/dist/components/Avatar.d.ts +0 -36
  152. package/dist/components/Avatar.d.ts.map +0 -1
  153. package/dist/components/Badge.d.ts +0 -22
  154. package/dist/components/Badge.d.ts.map +0 -1
  155. package/dist/components/BglVideo.d.ts +0 -20
  156. package/dist/components/BglVideo.d.ts.map +0 -1
  157. package/dist/components/Btn.d.ts +0 -99
  158. package/dist/components/Btn.d.ts.map +0 -1
  159. package/dist/components/Card.d.ts +0 -39
  160. package/dist/components/Card.d.ts.map +0 -1
  161. package/dist/components/Carousel.d.ts +0 -74
  162. package/dist/components/Carousel.d.ts.map +0 -1
  163. package/dist/components/DataPreview.d.ts +0 -42
  164. package/dist/components/DataPreview.d.ts.map +0 -1
  165. package/dist/components/Drop.vue.d.ts +0 -34
  166. package/dist/components/Drop.vue.d.ts.map +0 -1
  167. package/dist/components/FileUploader.vue.d.ts +0 -60
  168. package/dist/components/FileUploader.vue.d.ts.map +0 -1
  169. package/dist/components/Flag.d.ts +0 -20
  170. package/dist/components/Flag.d.ts.map +0 -1
  171. package/dist/components/ListItem.d.ts +0 -34
  172. package/dist/components/ListItem.d.ts.map +0 -1
  173. package/dist/components/ListView.d.ts +0 -13
  174. package/dist/components/ListView.d.ts.map +0 -1
  175. package/dist/components/MapEmbed.d.ts +0 -3
  176. package/dist/components/MapEmbed.d.ts.map +0 -1
  177. package/dist/components/MaterialIcon.d.ts +0 -26
  178. package/dist/components/MaterialIcon.d.ts.map +0 -1
  179. package/dist/components/Modal.d.ts +0 -46
  180. package/dist/components/Modal.d.ts.map +0 -1
  181. package/dist/components/ModalConfirm.d.ts +0 -24
  182. package/dist/components/ModalConfirm.d.ts.map +0 -1
  183. package/dist/components/ModalForm.d.ts +0 -78
  184. package/dist/components/ModalForm.d.ts.map +0 -1
  185. package/dist/components/NavBar.d.ts +0 -64
  186. package/dist/components/NavBar.d.ts.map +0 -1
  187. package/dist/components/PageTitle.d.ts +0 -24
  188. package/dist/components/PageTitle.d.ts.map +0 -1
  189. package/dist/components/RouterWrapper.d.ts +0 -3
  190. package/dist/components/RouterWrapper.d.ts.map +0 -1
  191. package/dist/components/TableSchema.d.ts +0 -35
  192. package/dist/components/TableSchema.d.ts.map +0 -1
  193. package/dist/components/Title.d.ts +0 -42
  194. package/dist/components/Title.d.ts.map +0 -1
  195. package/dist/components/TopBar.d.ts +0 -12
  196. package/dist/components/TopBar.d.ts.map +0 -1
  197. package/dist/components/dashboard/Lineart.d.ts +0 -20
  198. package/dist/components/dashboard/Lineart.d.ts.map +0 -1
  199. package/dist/components/form/BglField.d.ts +0 -25
  200. package/dist/components/form/BglField.d.ts.map +0 -1
  201. package/dist/components/form/BglForm.d.ts +0 -75
  202. package/dist/components/form/BglForm.d.ts.map +0 -1
  203. package/dist/components/form/inputs/CheckInput.d.ts +0 -56
  204. package/dist/components/form/inputs/CheckInput.d.ts.map +0 -1
  205. package/dist/components/form/inputs/Checkbox.d.ts +0 -16
  206. package/dist/components/form/inputs/Checkbox.d.ts.map +0 -1
  207. package/dist/components/form/inputs/ColorPicker.d.ts +0 -48
  208. package/dist/components/form/inputs/ColorPicker.d.ts.map +0 -1
  209. package/dist/components/form/inputs/DateInput.d.ts +0 -64
  210. package/dist/components/form/inputs/DateInput.d.ts.map +0 -1
  211. package/dist/components/form/inputs/DatePicker.d.ts +0 -33
  212. package/dist/components/form/inputs/DatePicker.d.ts.map +0 -1
  213. package/dist/components/form/inputs/FileUpload.d.ts +0 -108
  214. package/dist/components/form/inputs/FileUpload.d.ts.map +0 -1
  215. package/dist/components/form/inputs/JSONInput.d.ts +0 -53
  216. package/dist/components/form/inputs/JSONInput.d.ts.map +0 -1
  217. package/dist/components/form/inputs/RadioGroup.d.ts +0 -42
  218. package/dist/components/form/inputs/RadioGroup.d.ts.map +0 -1
  219. package/dist/components/form/inputs/RadioPillsInput.d.ts +0 -48
  220. package/dist/components/form/inputs/RadioPillsInput.d.ts.map +0 -1
  221. package/dist/components/form/inputs/RichText.d.ts +0 -20
  222. package/dist/components/form/inputs/RichText.d.ts.map +0 -1
  223. package/dist/components/form/inputs/RichText2/Toolbar.d.ts +0 -22
  224. package/dist/components/form/inputs/RichText2/Toolbar.d.ts.map +0 -1
  225. package/dist/components/form/inputs/RichText2/index.d.ts +0 -24
  226. package/dist/components/form/inputs/RichText2/index.d.ts.map +0 -1
  227. package/dist/components/form/inputs/SelectInput.d.ts +0 -55
  228. package/dist/components/form/inputs/SelectInput.d.ts.map +0 -1
  229. package/dist/components/form/inputs/SignaturePad.d.ts +0 -72
  230. package/dist/components/form/inputs/SignaturePad.d.ts.map +0 -1
  231. package/dist/components/form/inputs/TableField.d.ts +0 -45
  232. package/dist/components/form/inputs/TableField.d.ts.map +0 -1
  233. package/dist/components/form/inputs/TelInput.d.ts +0 -241
  234. package/dist/components/form/inputs/TelInput.d.ts.map +0 -1
  235. package/dist/components/form/inputs/TextInput.d.ts +0 -90
  236. package/dist/components/form/inputs/TextInput.d.ts.map +0 -1
  237. package/dist/components/form/inputs/ToggleInput.d.ts +0 -58
  238. package/dist/components/form/inputs/ToggleInput.d.ts.map +0 -1
  239. package/dist/components/layout/BottomMenu.d.ts +0 -27
  240. package/dist/components/layout/BottomMenu.d.ts.map +0 -1
  241. package/dist/components/layout/Layout.d.ts +0 -58
  242. package/dist/components/layout/Layout.d.ts.map +0 -1
  243. package/dist/components/layout/SidebarMenu.d.ts +0 -38
  244. package/dist/components/layout/SidebarMenu.d.ts.map +0 -1
  245. package/dist/components/layout/TabbedLayout.d.ts +0 -42
  246. package/dist/components/layout/TabbedLayout.d.ts.map +0 -1
  247. package/dist/components/layout/Tabs.d.ts +0 -31
  248. package/dist/components/layout/Tabs.d.ts.map +0 -1
  249. package/dist/components/layout/TabsBody.d.ts +0 -23
  250. package/dist/components/layout/TabsBody.d.ts.map +0 -1
  251. package/dist/components/layout/TabsNav.d.ts +0 -35
  252. package/dist/components/layout/TabsNav.d.ts.map +0 -1
  253. package/dist/styles.css +0 -14073
  254. package/dist/vue.css +0 -14073
  255. package/src/components/form/BglField.vue +0 -132
  256. package/src/components/form/BglForm.vue +0 -157
@@ -4,10 +4,25 @@ import { computed, ref } from 'vue'
4
4
 
5
5
  const NON_DIGIT_REGEX = /[^\d.-]/g
6
6
 
7
+ // Components that should receive their value as a child/slot instead of a prop
8
+ const SLOT_VALUE_COMPONENTS = new Set(['div', 'span', 'p'])
9
+
10
+ // Components that should receive their value as src attribute
11
+ const SRC_VALUE_COMPONENTS = new Set(['img', 'iframe'])
12
+
7
13
  export interface UseTableDataOptions<T> extends Omit<TableDataOptions<T>, 'sortField' | 'sortDirection'> {
8
14
  onSort?: (field: string, direction: SortDirectionsT) => void
9
15
  }
10
16
 
17
+ interface TransformedDataBase {
18
+ [key: `_transformed_${string}`]: any
19
+ [key: `_slot_${string}`]: boolean
20
+ [key: `_src_${string}`]: boolean
21
+ [key: `_original_${string}`]: any
22
+ }
23
+
24
+ type TransformedData<T> = T & TransformedDataBase
25
+
11
26
  export function useTableData<T extends Record<string, any>>(options: UseTableDataOptions<T>) {
12
27
  // Create reactive reference to data prop
13
28
 
@@ -21,19 +36,40 @@ export function useTableData<T extends Record<string, any>>(options: UseTableDat
21
36
  data: options.data.value,
22
37
  }))
23
38
 
24
- function transform(rowData: T): T {
25
- const transformed = { ...rowData }
39
+ function transform(rowData: T): TransformedData<T> {
40
+ const transformed = { ...rowData } as TransformedData<T>
26
41
  const schemaFields = computedSchema.value.filter((f: any) => f.id)
27
42
 
28
43
  for (const field of schemaFields) {
29
- const fieldData = rowData[`${field.id}`]
30
- const newFieldVal = field.transform?.(fieldData, rowData)
31
- ;(transformed as any)[`_transformed_${field.id}`] = newFieldVal
44
+ const fieldId = field.id as keyof T
45
+ const fieldData = rowData[fieldId]
46
+ const transformKey = `_transformed_${String(fieldId)}` as keyof TransformedDataBase
47
+ const slotKey = `_slot_${String(fieldId)}` as keyof TransformedDataBase
48
+ const srcKey = `_src_${String(fieldId)}` as keyof TransformedDataBase
49
+ const originalKey = `_original_${String(fieldId)}` as keyof TransformedDataBase
50
+
51
+ // Store the original value
52
+ ;(transformed as TransformedDataBase)[originalKey] = fieldData
53
+
54
+ // Determine if this component should receive value as slot or src
55
+ const isSlotValueComponent = typeof field.$el === 'string' && SLOT_VALUE_COMPONENTS.has(field.$el)
56
+ const isSrcValueComponent = typeof field.$el === 'string' && SRC_VALUE_COMPONENTS.has(field.$el)
57
+
58
+ ;(transformed as TransformedDataBase)[slotKey] = isSlotValueComponent
59
+ ;(transformed as TransformedDataBase)[srcKey] = isSrcValueComponent
60
+
61
+ if (field.transform) {
62
+ const newFieldVal = field.transform(fieldData, rowData)
63
+ // Store transformed value in _transformed_ key but keep original in the main field
64
+ ;(transformed as TransformedDataBase)[transformKey] = newFieldVal
65
+ } else {
66
+ ;(transformed as TransformedDataBase)[transformKey] = fieldData
67
+ }
32
68
  }
33
69
  return transformed
34
70
  }
35
71
 
36
- const computedSortField = computed(() => `_transformed_${sortField.value}`)
72
+ const computedSortField = computed(() => sortField.value ? `_transformed_${sortField.value}` : '')
37
73
 
38
74
  const computedData = computed(() => {
39
75
  const currentData = options.data.value
@@ -44,29 +80,27 @@ export function useTableData<T extends Record<string, any>>(options: UseTableDat
44
80
  return currentData
45
81
  .map(transform)
46
82
  .sort((a, z) => {
47
- let aValue = (a as any)[computedSortField.value] ?? a[sortField.value] ?? ''
48
- let bValue = (z as any)[computedSortField.value] ?? z[sortField.value] ?? ''
83
+ const aValue = (a as any)[computedSortField.value] ?? ''
84
+ const bValue = (z as any)[computedSortField.value] ?? ''
49
85
 
50
86
  if (isDate(aValue) && isDate(bValue)) {
51
- aValue = new Date(aValue).getTime()
52
- bValue = new Date(bValue).getTime()
87
+ return sortDirection.value === 'ASC'
88
+ ? new Date(aValue).getTime() - new Date(bValue).getTime()
89
+ : new Date(bValue).getTime() - new Date(aValue).getTime()
53
90
  }
54
91
 
55
92
  const numAValue = Number.parseInt(`${aValue}`.replaceAll(NON_DIGIT_REGEX, ''), 10)
56
93
  const numBValue = Number.parseInt(`${bValue}`.replaceAll(NON_DIGIT_REGEX, ''), 10)
57
94
 
58
95
  if (!Number.isNaN(numAValue) && !Number.isNaN(numBValue)) {
59
- if (sortDirection.value === 'ASC') return numAValue - numBValue
60
- return numBValue - numAValue
96
+ return sortDirection.value === 'ASC' ? numAValue - numBValue : numBValue - numAValue
61
97
  }
62
98
 
63
99
  if (typeof aValue === 'string') {
64
- if (sortDirection.value === 'ASC') return aValue.localeCompare(bValue)
65
- return bValue.localeCompare(aValue)
100
+ return sortDirection.value === 'ASC' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue)
66
101
  }
67
102
 
68
- if (sortDirection.value === 'ASC') return aValue < bValue ? -1 : 1
69
- return aValue < bValue ? 1 : -1
103
+ return sortDirection.value === 'ASC' ? (aValue < bValue ? -1 : 1) : (aValue < bValue ? 1 : -1)
70
104
  })
71
105
  })
72
106
 
@@ -0,0 +1,64 @@
1
+ <script lang="ts" setup>
2
+ import { ref, watch, onMounted, nextTick } from 'vue'
3
+ import type { DraggableEvent } from './useDraggable'
4
+ import { useDraggable } from './useDraggable'
5
+
6
+ const props = withDefaults(defineProps<{
7
+ modelValue?: any[]
8
+ group?: string
9
+ handle?: string
10
+ mode?: 'ghost' | 'line'
11
+ disabled?: boolean
12
+ }>(), {
13
+ mode: 'line',
14
+ disabled: false
15
+ })
16
+
17
+ const emit = defineEmits<{
18
+ 'update:modelValue': [value: any[]]
19
+ 'start': [event: MouseEvent]
20
+ 'end': [event: DraggableEvent]
21
+ }>()
22
+
23
+ const dragContainer = ref<HTMLElement>()
24
+
25
+ const { initDraggableContainer } = useDraggable({
26
+ group: props.group,
27
+ handle: props.handle,
28
+ mode: props.mode,
29
+ disabled: props.disabled,
30
+ items: props.modelValue,
31
+ onStart: (event) => { emit('start', event) },
32
+ onEnd: (event: DraggableEvent) => {
33
+ const newList = [...props.modelValue!]
34
+ const [removed] = newList.splice(event.oldIndex, 1)
35
+ newList.splice(event.newIndex, 0, removed)
36
+ emit('update:modelValue', newList)
37
+
38
+ emit('end', event)
39
+ nextTick(() => {
40
+ if (dragContainer.value) {
41
+ initDraggableContainer(dragContainer.value)
42
+ }
43
+ })
44
+ }
45
+ })
46
+
47
+ watch(() => props.modelValue, () => {
48
+ if (dragContainer.value) {
49
+ initDraggableContainer(dragContainer.value)
50
+ }
51
+ }, { deep: true })
52
+
53
+ onMounted(() => {
54
+ if (dragContainer.value) {
55
+ initDraggableContainer(dragContainer.value)
56
+ }
57
+ })
58
+ </script>
59
+
60
+ <template>
61
+ <div ref="dragContainer">
62
+ <slot v-for="(item, index) in modelValue" :key="index" :item="item" :index="index" />
63
+ </div>
64
+ </template>
@@ -0,0 +1,4 @@
1
+ export { default as Draggable } from './Draggable.vue'
2
+ export { useDraggable } from './useDraggable'
3
+ export type { DraggableEvent, DraggableOptions } from './useDraggable'
4
+ export { vDraggable } from './vDraggable'