pukaad-ui-lib 1.282.2 → 1.284.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/json/social-icon.json +76 -76
  3. package/dist/runtime/assets/svg/bell-outline.svg +3 -3
  4. package/dist/runtime/assets/svg/bookmark-solid.svg +2 -2
  5. package/dist/runtime/assets/svg/box.svg +22 -22
  6. package/dist/runtime/assets/svg/camera-plus.svg +9 -9
  7. package/dist/runtime/assets/svg/clock-fading.svg +46 -46
  8. package/dist/runtime/assets/svg/coin.svg +20 -20
  9. package/dist/runtime/assets/svg/empty-document.svg +15 -15
  10. package/dist/runtime/assets/svg/map-location-dot.svg +9 -9
  11. package/dist/runtime/assets/svg/map-pin.svg +6 -6
  12. package/dist/runtime/assets/svg/memsg-circle.svg +7 -7
  13. package/dist/runtime/assets/svg/memsg-fade.svg +5 -5
  14. package/dist/runtime/assets/svg/memsg-logo-outline.svg +3 -3
  15. package/dist/runtime/assets/svg/memsg-square.svg +9 -9
  16. package/dist/runtime/assets/svg/message.svg +3 -3
  17. package/dist/runtime/assets/svg/page-not-found.svg +9 -9
  18. package/dist/runtime/assets/svg/share-from-square.svg +3 -3
  19. package/dist/runtime/assets/svg/share.svg +2 -2
  20. package/dist/runtime/assets/svg/shopping-cart.svg +16 -16
  21. package/dist/runtime/assets/svg/socials/Email.svg +12 -12
  22. package/dist/runtime/assets/svg/socials/Facebook.svg +4 -4
  23. package/dist/runtime/assets/svg/socials/{instagram.svg → Instagram.svg} +14 -14
  24. package/dist/runtime/assets/svg/socials/Line.svg +11 -11
  25. package/dist/runtime/assets/svg/socials/LinkedIn.svg +5 -5
  26. package/dist/runtime/assets/svg/socials/Pinterest.svg +4 -4
  27. package/dist/runtime/assets/svg/socials/SnapChat.svg +5 -5
  28. package/dist/runtime/assets/svg/socials/Threads.svg +12 -12
  29. package/dist/runtime/assets/svg/socials/{Tiktok.svg → TikTok.svg} +6 -6
  30. package/dist/runtime/assets/svg/socials/Tumblr.svg +4 -4
  31. package/dist/runtime/assets/svg/socials/Website.svg +11 -11
  32. package/dist/runtime/assets/svg/socials/{Whatsapp.svg → WhatsApp.svg} +5 -5
  33. package/dist/runtime/assets/svg/socials/X.svg +4 -4
  34. package/dist/runtime/assets/svg/socials/{Youtube.svg → YouTube.svg} +5 -5
  35. package/dist/runtime/assets/svg/tag-empty.svg +25 -25
  36. package/dist/runtime/assets/svg/thumbs-up-regular.svg +9 -9
  37. package/dist/runtime/assets/svg/thumbs-up-solid.svg +2 -2
  38. package/dist/runtime/assets/svg/vector.svg +2 -2
  39. package/dist/runtime/assets/svg/verify.svg +10 -10
  40. package/dist/runtime/assets/svg/write-review.svg +15 -15
  41. package/dist/runtime/components/avatar-profile.vue +29 -29
  42. package/dist/runtime/components/avatar.vue +20 -20
  43. package/dist/runtime/components/button.vue +9 -9
  44. package/dist/runtime/components/card/card-announce2.vue +104 -102
  45. package/dist/runtime/components/card/card-blog.vue +45 -45
  46. package/dist/runtime/components/card/card-place-detail.vue +51 -51
  47. package/dist/runtime/components/card/card-place.vue +28 -28
  48. package/dist/runtime/components/card/card-profile-about.vue +81 -81
  49. package/dist/runtime/components/card/card-profile-header.d.vue.ts +1 -1
  50. package/dist/runtime/components/card/card-profile-header.vue +94 -94
  51. package/dist/runtime/components/card/card-profile-header.vue.d.ts +1 -1
  52. package/dist/runtime/components/card/card-reaction.d.vue.ts +1 -1
  53. package/dist/runtime/components/card/card-reaction.vue +23 -23
  54. package/dist/runtime/components/card/card-reaction.vue.d.ts +1 -1
  55. package/dist/runtime/components/card/card-recommend-blog.vue +42 -42
  56. package/dist/runtime/components/card/card-recommend-place.vue +45 -45
  57. package/dist/runtime/components/card/card-recommend-profile.vue +46 -46
  58. package/dist/runtime/components/card/card-review.vue +57 -57
  59. package/dist/runtime/components/card/card-user-blog.vue +76 -76
  60. package/dist/runtime/components/card/card-user-item.vue +24 -24
  61. package/dist/runtime/components/card/card.vue +29 -29
  62. package/dist/runtime/components/carousel.vue +31 -31
  63. package/dist/runtime/components/chip.vue +10 -10
  64. package/dist/runtime/components/collapse/collapse-multiple.vue +42 -42
  65. package/dist/runtime/components/collapse/collapse.vue +23 -23
  66. package/dist/runtime/components/comment.vue +204 -204
  67. package/dist/runtime/components/data-list.vue +49 -49
  68. package/dist/runtime/components/data-table.vue +131 -131
  69. package/dist/runtime/components/display/display-image-place.d.vue.ts +1 -1
  70. package/dist/runtime/components/display/display-image-place.vue +88 -88
  71. package/dist/runtime/components/display/display-image-place.vue.d.ts +1 -1
  72. package/dist/runtime/components/display/display-image-review.vue +10 -10
  73. package/dist/runtime/components/display/display-image.vue +49 -49
  74. package/dist/runtime/components/display/display-rating-summary.vue +34 -34
  75. package/dist/runtime/components/divider.vue +8 -8
  76. package/dist/runtime/components/draggable.vue +15 -15
  77. package/dist/runtime/components/drawer/drawer-post-blog.vue +111 -96
  78. package/dist/runtime/components/drawer/drawer-post-review.vue +67 -67
  79. package/dist/runtime/components/drawer/drawer-profile-about.vue +52 -52
  80. package/dist/runtime/components/drawer/drawer-profile-network.d.vue.ts +1 -1
  81. package/dist/runtime/components/drawer/drawer-profile-network.vue +136 -136
  82. package/dist/runtime/components/drawer/drawer-profile-network.vue.d.ts +1 -1
  83. package/dist/runtime/components/drawer/drawer-suggest-place/drawer-suggest-place.vue +92 -92
  84. package/dist/runtime/components/drawer/drawer-suggest-place/suggest-place-form.vue +70 -70
  85. package/dist/runtime/components/drawer/drawer-suggest-place/suggest-place-map.vue +5 -5
  86. package/dist/runtime/components/drawer/drawer.vue +24 -24
  87. package/dist/runtime/components/dropdown.vue +8 -8
  88. package/dist/runtime/components/filter/filter-list-chip.vue +10 -10
  89. package/dist/runtime/components/filter/filter-list.vue +17 -17
  90. package/dist/runtime/components/icons.vue +1 -1
  91. package/dist/runtime/components/image/image-cropper.vue +9 -9
  92. package/dist/runtime/components/image/image.vue +27 -27
  93. package/dist/runtime/components/input/input-OTP.vue +27 -27
  94. package/dist/runtime/components/input/input-address.vue +147 -147
  95. package/dist/runtime/components/input/input-autocomplete.d.vue.ts +2 -2
  96. package/dist/runtime/components/input/input-autocomplete.vue +80 -80
  97. package/dist/runtime/components/input/input-autocomplete.vue.d.ts +2 -2
  98. package/dist/runtime/components/input/input-birth-date.vue +20 -20
  99. package/dist/runtime/components/input/input-checkbox.vue +17 -17
  100. package/dist/runtime/components/input/input-combobox.vue +100 -100
  101. package/dist/runtime/components/input/input-comment.vue +6 -6
  102. package/dist/runtime/components/input/input-content.vue +32 -32
  103. package/dist/runtime/components/input/input-date-opening.vue +96 -96
  104. package/dist/runtime/components/input/input-date-picker.vue +102 -102
  105. package/dist/runtime/components/input/input-email.vue +9 -9
  106. package/dist/runtime/components/input/input-file.vue +125 -125
  107. package/dist/runtime/components/input/input-link.vue +35 -35
  108. package/dist/runtime/components/input/input-media.vue +36 -36
  109. package/dist/runtime/components/input/input-password.vue +43 -43
  110. package/dist/runtime/components/input/input-phone.vue +11 -11
  111. package/dist/runtime/components/input/input-profile-name.vue +10 -10
  112. package/dist/runtime/components/input/input-radio.vue +55 -55
  113. package/dist/runtime/components/input/input-rating.vue +13 -13
  114. package/dist/runtime/components/input/input-recaptcha.vue +19 -19
  115. package/dist/runtime/components/input/input-search.vue +71 -71
  116. package/dist/runtime/components/input/input-select-province.vue +94 -94
  117. package/dist/runtime/components/input/input-select-tag.vue +51 -51
  118. package/dist/runtime/components/input/input-select.vue +52 -52
  119. package/dist/runtime/components/input/input-slider.vue +19 -19
  120. package/dist/runtime/components/input/input-switch.vue +25 -25
  121. package/dist/runtime/components/input/input-tag.vue +145 -145
  122. package/dist/runtime/components/input/input-text-field.vue +90 -90
  123. package/dist/runtime/components/input/input-textarea.vue +58 -58
  124. package/dist/runtime/components/label/label-announce-time.vue +9 -9
  125. package/dist/runtime/components/label/label-card-atom.vue +8 -8
  126. package/dist/runtime/components/list/list-menu.vue +13 -13
  127. package/dist/runtime/components/loading.vue +8 -8
  128. package/dist/runtime/components/modal/modal-2FA-generate.vue +48 -48
  129. package/dist/runtime/components/modal/modal-2FA.vue +28 -28
  130. package/dist/runtime/components/modal/modal-account-disabled-alert.vue +33 -33
  131. package/dist/runtime/components/modal/modal-account-disabled-confirmed.vue +32 -32
  132. package/dist/runtime/components/modal/modal-account-disabled-reason.vue +45 -45
  133. package/dist/runtime/components/modal/modal-account-disabled.vue +9 -9
  134. package/dist/runtime/components/modal/modal-display-image.vue +38 -38
  135. package/dist/runtime/components/modal/modal-email-OTP.vue +32 -32
  136. package/dist/runtime/components/modal/modal-forgot-password.vue +9 -9
  137. package/dist/runtime/components/modal/modal-media-view.vue +12 -12
  138. package/dist/runtime/components/modal/modal-password-confirmed.vue +30 -30
  139. package/dist/runtime/components/modal/modal-password-new.vue +34 -17
  140. package/dist/runtime/components/modal/modal-password-verify.vue +13 -13
  141. package/dist/runtime/components/modal/modal-personal-card-ID.vue +167 -167
  142. package/dist/runtime/components/modal/modal-phone-OTP.vue +49 -49
  143. package/dist/runtime/components/modal/modal-profile-edit.vue +71 -69
  144. package/dist/runtime/components/modal/modal-province-domain.vue +23 -23
  145. package/dist/runtime/components/modal/modal-report.vue +47 -47
  146. package/dist/runtime/components/modal/modal-review-detail.vue +118 -118
  147. package/dist/runtime/components/modal/modal-secure.d.vue.ts +1 -1
  148. package/dist/runtime/components/modal/modal-secure.vue +7 -7
  149. package/dist/runtime/components/modal/modal-secure.vue.d.ts +1 -1
  150. package/dist/runtime/components/modal/modal-share.vue +20 -20
  151. package/dist/runtime/components/modal/modal-user-account-search.vue +69 -69
  152. package/dist/runtime/components/modal/modal.vue +27 -27
  153. package/dist/runtime/components/pagination.vue +47 -47
  154. package/dist/runtime/components/picker/picker-image-cover-profile.vue +80 -80
  155. package/dist/runtime/components/picker/picker-image-profile.vue +102 -102
  156. package/dist/runtime/components/picker/picker-option-menu/picker-option-menu-user.vue +18 -18
  157. package/dist/runtime/components/picker/picker-option-menu/picker-option-menu.vue +26 -26
  158. package/dist/runtime/components/profile-cover.vue +80 -80
  159. package/dist/runtime/components/progress-bar.vue +9 -9
  160. package/dist/runtime/components/read-more-text.vue +1 -1
  161. package/dist/runtime/components/tab_old.vue +78 -78
  162. package/dist/runtime/components/table.vue +79 -79
  163. package/dist/runtime/components/tooltip.vue +12 -12
  164. package/dist/runtime/components/ui/accordion/Accordion.vue +3 -3
  165. package/dist/runtime/components/ui/accordion/AccordionContent.vue +9 -9
  166. package/dist/runtime/components/ui/accordion/AccordionItem.vue +8 -8
  167. package/dist/runtime/components/ui/accordion/AccordionTrigger.vue +16 -16
  168. package/dist/runtime/components/ui/alert/Alert.vue +7 -7
  169. package/dist/runtime/components/ui/alert/AlertDescription.vue +6 -6
  170. package/dist/runtime/components/ui/alert/AlertTitle.vue +6 -6
  171. package/dist/runtime/components/ui/alert-dialog/AlertDialog.vue +3 -3
  172. package/dist/runtime/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  173. package/dist/runtime/components/ui/alert-dialog/AlertDialogCancel.vue +6 -6
  174. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.d.vue.ts +4 -4
  175. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.vue +13 -13
  176. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +4 -4
  177. package/dist/runtime/components/ui/alert-dialog/AlertDialogDescription.vue +7 -7
  178. package/dist/runtime/components/ui/alert-dialog/AlertDialogFooter.vue +6 -6
  179. package/dist/runtime/components/ui/alert-dialog/AlertDialogHeader.vue +6 -6
  180. package/dist/runtime/components/ui/alert-dialog/AlertDialogTitle.vue +7 -7
  181. package/dist/runtime/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  182. package/dist/runtime/components/ui/avatar/Avatar.vue +6 -6
  183. package/dist/runtime/components/ui/avatar/AvatarFallback.vue +7 -7
  184. package/dist/runtime/components/ui/avatar/AvatarImage.vue +7 -7
  185. package/dist/runtime/components/ui/badge/Badge.vue +7 -7
  186. package/dist/runtime/components/ui/breadcrumb/Breadcrumb.vue +7 -7
  187. package/dist/runtime/components/ui/breadcrumb/BreadcrumbEllipsis.vue +11 -11
  188. package/dist/runtime/components/ui/breadcrumb/BreadcrumbItem.vue +6 -6
  189. package/dist/runtime/components/ui/breadcrumb/BreadcrumbLink.vue +8 -8
  190. package/dist/runtime/components/ui/breadcrumb/BreadcrumbList.vue +6 -6
  191. package/dist/runtime/components/ui/breadcrumb/BreadcrumbPage.vue +9 -9
  192. package/dist/runtime/components/ui/breadcrumb/BreadcrumbSeparator.vue +10 -10
  193. package/dist/runtime/components/ui/button/Button.vue +8 -8
  194. package/dist/runtime/components/ui/calendar/Calendar.vue +128 -128
  195. package/dist/runtime/components/ui/calendar/CalendarCell.vue +7 -7
  196. package/dist/runtime/components/ui/calendar/CalendarCellTrigger.vue +7 -7
  197. package/dist/runtime/components/ui/calendar/CalendarGrid.vue +7 -7
  198. package/dist/runtime/components/ui/calendar/CalendarGridBody.vue +6 -6
  199. package/dist/runtime/components/ui/calendar/CalendarGridHead.vue +6 -6
  200. package/dist/runtime/components/ui/calendar/CalendarGridRow.vue +6 -6
  201. package/dist/runtime/components/ui/calendar/CalendarHeadCell.vue +7 -7
  202. package/dist/runtime/components/ui/calendar/CalendarHeader.vue +7 -7
  203. package/dist/runtime/components/ui/calendar/CalendarHeading.vue +10 -10
  204. package/dist/runtime/components/ui/calendar/CalendarNextButton.vue +9 -9
  205. package/dist/runtime/components/ui/calendar/CalendarPrevButton.vue +9 -9
  206. package/dist/runtime/components/ui/card/Card.vue +8 -8
  207. package/dist/runtime/components/ui/card/CardAction.vue +6 -6
  208. package/dist/runtime/components/ui/card/CardContent.vue +6 -6
  209. package/dist/runtime/components/ui/card/CardDescription.vue +6 -6
  210. package/dist/runtime/components/ui/card/CardFooter.vue +6 -6
  211. package/dist/runtime/components/ui/card/CardHeader.vue +6 -6
  212. package/dist/runtime/components/ui/card/CardTitle.vue +6 -6
  213. package/dist/runtime/components/ui/carousel/Carousel.vue +10 -10
  214. package/dist/runtime/components/ui/carousel/CarouselContent.vue +12 -12
  215. package/dist/runtime/components/ui/carousel/CarouselItem.vue +8 -8
  216. package/dist/runtime/components/ui/carousel/CarouselNext.vue +13 -13
  217. package/dist/runtime/components/ui/carousel/CarouselPrevious.vue +13 -13
  218. package/dist/runtime/components/ui/checkbox/Checkbox.vue +8 -8
  219. package/dist/runtime/components/ui/command/Command.vue +7 -7
  220. package/dist/runtime/components/ui/command/CommandDialog.vue +11 -11
  221. package/dist/runtime/components/ui/command/CommandEmpty.vue +16 -16
  222. package/dist/runtime/components/ui/command/CommandGroup.vue +16 -16
  223. package/dist/runtime/components/ui/command/CommandInput.vue +13 -13
  224. package/dist/runtime/components/ui/command/CommandItem.vue +11 -11
  225. package/dist/runtime/components/ui/command/CommandList.vue +9 -9
  226. package/dist/runtime/components/ui/command/CommandSeparator.vue +7 -7
  227. package/dist/runtime/components/ui/command/CommandShortcut.vue +6 -6
  228. package/dist/runtime/components/ui/dialog/Dialog.vue +3 -3
  229. package/dist/runtime/components/ui/dialog/DialogClose.vue +3 -3
  230. package/dist/runtime/components/ui/dialog/DialogContent.d.vue.ts +4 -4
  231. package/dist/runtime/components/ui/dialog/DialogContent.vue +26 -26
  232. package/dist/runtime/components/ui/dialog/DialogContent.vue.d.ts +4 -4
  233. package/dist/runtime/components/ui/dialog/DialogDescription.vue +7 -7
  234. package/dist/runtime/components/ui/dialog/DialogFooter.vue +6 -6
  235. package/dist/runtime/components/ui/dialog/DialogHeader.vue +6 -6
  236. package/dist/runtime/components/ui/dialog/DialogOverlay.vue +7 -7
  237. package/dist/runtime/components/ui/dialog/DialogScrollContent.d.vue.ts +4 -4
  238. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue +20 -20
  239. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue.d.ts +4 -4
  240. package/dist/runtime/components/ui/dialog/DialogTitle.vue +7 -7
  241. package/dist/runtime/components/ui/dialog/DialogTrigger.vue +3 -3
  242. package/dist/runtime/components/ui/dropdown-menu/DropdownMenu.vue +6 -6
  243. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +12 -12
  244. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.d.vue.ts +2 -2
  245. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue +10 -10
  246. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +2 -2
  247. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuGroup.vue +6 -6
  248. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue +9 -9
  249. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuLabel.vue +8 -8
  250. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +6 -6
  251. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +16 -16
  252. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSeparator.vue +5 -5
  253. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuShortcut.vue +6 -6
  254. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  255. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.d.vue.ts +4 -4
  256. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue +7 -7
  257. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +4 -4
  258. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +8 -8
  259. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuTrigger.vue +6 -6
  260. package/dist/runtime/components/ui/form/FormControl.vue +8 -8
  261. package/dist/runtime/components/ui/form/FormDescription.vue +7 -7
  262. package/dist/runtime/components/ui/form/FormItem.vue +3 -3
  263. package/dist/runtime/components/ui/form/FormLabel.vue +8 -8
  264. package/dist/runtime/components/ui/form/FormMessage.vue +7 -7
  265. package/dist/runtime/components/ui/input/Input.vue +7 -7
  266. package/dist/runtime/components/ui/input-group/InputGroup.vue +7 -7
  267. package/dist/runtime/components/ui/input-group/InputGroupAddon.vue +9 -9
  268. package/dist/runtime/components/ui/input-group/InputGroupButton.vue +8 -8
  269. package/dist/runtime/components/ui/input-group/InputGroupInput.vue +5 -5
  270. package/dist/runtime/components/ui/input-group/InputGroupText.vue +5 -5
  271. package/dist/runtime/components/ui/input-group/InputGroupTextarea.vue +4 -4
  272. package/dist/runtime/components/ui/label/Label.vue +7 -7
  273. package/dist/runtime/components/ui/native-select/NativeSelect.vue +19 -19
  274. package/dist/runtime/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  275. package/dist/runtime/components/ui/native-select/NativeSelectOption.vue +3 -3
  276. package/dist/runtime/components/ui/pagination/Pagination.vue +8 -8
  277. package/dist/runtime/components/ui/pagination/PaginationContent.vue +8 -8
  278. package/dist/runtime/components/ui/pagination/PaginationEllipsis.vue +10 -10
  279. package/dist/runtime/components/ui/pagination/PaginationFirst.vue +10 -10
  280. package/dist/runtime/components/ui/pagination/PaginationItem.vue +7 -7
  281. package/dist/runtime/components/ui/pagination/PaginationLast.vue +10 -10
  282. package/dist/runtime/components/ui/pagination/PaginationNext.vue +10 -10
  283. package/dist/runtime/components/ui/pagination/PaginationPrevious.vue +10 -10
  284. package/dist/runtime/components/ui/pin-input/PinInput.vue +7 -7
  285. package/dist/runtime/components/ui/pin-input/PinInputGroup.vue +7 -7
  286. package/dist/runtime/components/ui/pin-input/PinInputSeparator.vue +3 -3
  287. package/dist/runtime/components/ui/pin-input/PinInputSlot.vue +5 -5
  288. package/dist/runtime/components/ui/popover/Popover.vue +7 -7
  289. package/dist/runtime/components/ui/popover/PopoverAnchor.vue +6 -6
  290. package/dist/runtime/components/ui/popover/PopoverContent.d.vue.ts +4 -4
  291. package/dist/runtime/components/ui/popover/PopoverContent.vue +9 -9
  292. package/dist/runtime/components/ui/popover/PopoverContent.vue.d.ts +4 -4
  293. package/dist/runtime/components/ui/popover/PopoverTrigger.vue +6 -6
  294. package/dist/runtime/components/ui/scroll-area/ScrollArea.vue +14 -14
  295. package/dist/runtime/components/ui/scroll-area/ScrollBar.vue +10 -10
  296. package/dist/runtime/components/ui/select/Select.vue +7 -7
  297. package/dist/runtime/components/ui/select/SelectContent.d.vue.ts +2 -2
  298. package/dist/runtime/components/ui/select/SelectContent.vue +10 -10
  299. package/dist/runtime/components/ui/select/SelectContent.vue.d.ts +2 -2
  300. package/dist/runtime/components/ui/select/SelectGroup.vue +6 -6
  301. package/dist/runtime/components/ui/select/SelectItem.vue +17 -17
  302. package/dist/runtime/components/ui/select/SelectItemText.vue +6 -6
  303. package/dist/runtime/components/ui/select/SelectLabel.vue +6 -6
  304. package/dist/runtime/components/ui/select/SelectScrollDownButton.vue +9 -9
  305. package/dist/runtime/components/ui/select/SelectScrollUpButton.vue +9 -9
  306. package/dist/runtime/components/ui/select/SelectSeparator.vue +5 -5
  307. package/dist/runtime/components/ui/select/SelectTrigger.vue +11 -11
  308. package/dist/runtime/components/ui/select/SelectValue.vue +6 -6
  309. package/dist/runtime/components/ui/separator/Separator.vue +5 -5
  310. package/dist/runtime/components/ui/sheet/Sheet.vue +3 -3
  311. package/dist/runtime/components/ui/sheet/SheetClose.vue +3 -3
  312. package/dist/runtime/components/ui/sheet/SheetContent.d.vue.ts +4 -4
  313. package/dist/runtime/components/ui/sheet/SheetContent.vue +26 -26
  314. package/dist/runtime/components/ui/sheet/SheetContent.vue.d.ts +4 -4
  315. package/dist/runtime/components/ui/sheet/SheetDescription.vue +7 -7
  316. package/dist/runtime/components/ui/sheet/SheetFooter.vue +6 -6
  317. package/dist/runtime/components/ui/sheet/SheetHeader.vue +6 -6
  318. package/dist/runtime/components/ui/sheet/SheetOverlay.vue +7 -7
  319. package/dist/runtime/components/ui/sheet/SheetTitle.vue +7 -7
  320. package/dist/runtime/components/ui/sheet/SheetTrigger.vue +3 -3
  321. package/dist/runtime/components/ui/skeleton/Skeleton.vue +4 -4
  322. package/dist/runtime/components/ui/spinner/Spinner.vue +6 -6
  323. package/dist/runtime/components/ui/table/Table.vue +5 -5
  324. package/dist/runtime/components/ui/table/TableBody.vue +6 -6
  325. package/dist/runtime/components/ui/table/TableCaption.vue +6 -6
  326. package/dist/runtime/components/ui/table/TableCell.vue +6 -6
  327. package/dist/runtime/components/ui/table/TableEmpty.vue +15 -15
  328. package/dist/runtime/components/ui/table/TableFooter.vue +6 -6
  329. package/dist/runtime/components/ui/table/TableHead.vue +6 -6
  330. package/dist/runtime/components/ui/table/TableHeader.vue +6 -6
  331. package/dist/runtime/components/ui/table/TableRow.vue +6 -6
  332. package/dist/runtime/components/ui/tabs/Tabs.vue +8 -8
  333. package/dist/runtime/components/ui/tabs/TabsContent.vue +7 -7
  334. package/dist/runtime/components/ui/tabs/TabsList.vue +7 -7
  335. package/dist/runtime/components/ui/tabs/TabsTrigger.vue +7 -7
  336. package/dist/runtime/components/ui/textarea/Textarea.vue +5 -5
  337. package/dist/runtime/components/ui/tooltip/Tooltip.vue +7 -7
  338. package/dist/runtime/components/ui/tooltip/TooltipContent.vue +13 -13
  339. package/dist/runtime/components/ui/tooltip/TooltipProvider.vue +3 -3
  340. package/dist/runtime/components/ui/tooltip/TooltipTrigger.vue +6 -6
  341. package/dist/runtime/components/video.vue +2 -2
  342. package/dist/runtime/geo/README.md +87 -87
  343. package/dist/runtime/geo/postal_codes.json +5569 -5569
  344. package/package.json +2 -2
@@ -1,233 +1,233 @@
1
1
  <template>
2
- <div class="flex flex-col gap-[16px] w-full">
3
- <div class="flex gap-[8px] items-center">
4
- <div class="font-title-medium-prominent">ความคิดเห็น</div>
5
- <div class="font-title-medium text-gray">
6
- {{ $convert.convertNumber(resolvedCommentCount) }}
7
- </div>
8
- </div>
9
-
10
- <div class="flex flex-col gap-[16px]">
11
- <div class="flex gap-[8px] w-full">
12
- <Avatar :size="30" :src="currentUser.avatar" />
13
- <div ref="mainInputRef" contenteditable="true"
14
- class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
15
- data-placeholder="เพิ่มความคิดเห็น" @focus="isShowMainActions = true" @input="onMainCommentInput"
16
- @keydown.enter.exact.prevent="onSendComment" @keydown.shift.enter.prevent="onInsertLineBreak" />
17
- </div>
18
- <div v-if="isShowMainActions" class="flex justify-end gap-[8px]">
19
- <Button variant="outline" class="w-[56px]" @click="onCancelComment">
20
- ยกเลิก
21
- </Button>
22
- <Button color="primary" class="w-[56px]" :disabled="!mainCommentInput" @click="onSendComment">
23
- ส่ง
24
- </Button>
25
- </div>
26
- </div>
27
- <div v-for="cmt in resolvedComments" :key="cmt.id" class="flex flex-col gap-[16px] w-full">
28
- <div class="flex flex-col gap-[4px] w-full">
29
- <div class="flex gap-[8px]" @mouseenter="hoveredId = cmt.id" @mouseleave="hoveredId = null">
30
- <Avatar :size="30" :src="cmt.user.avatar" class="cursor-pointer" @click="onViewProfileComment(cmt.user.id)" />
31
- <template v-if="editingId === cmt.id">
32
- <div class="flex-1 flex flex-col gap-[4px]">
33
- <div :ref="(el) => setEditInputRef(el, cmt.id)" contenteditable="true"
34
- class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white"
35
- @input="onEditInput($event, cmt.id)" @keydown.enter.exact.prevent="onSendEdit(cmt, 'comment')"
36
- @keydown.shift.enter.prevent="onInsertLineBreak" />
37
- <div class="flex justify-end gap-[8px]">
38
- <Button variant="outline" class="w-[56px]" @click="onCancelEdit">
39
- ยกเลิก
40
- </Button>
41
- <Button color="primary" class="w-[56px]" :disabled="!editTextMap[cmt.id]"
42
- @click="onSendEdit(cmt, 'comment')">
43
- ส่ง
44
- </Button>
45
- </div>
46
- </div>
47
- </template>
48
- <template v-else>
49
- <div class="flex flex-col gap-[4px] bg-bright p-[8px] rounded-lg">
50
- <div class="font-body-large-prominent cursor-pointer" @click="onViewProfileComment(cmt.user.id)">
51
- {{ cmt.user.name }}
52
- </div>
2
+ <div class="flex flex-col gap-[16px] w-full">
3
+ <div class="flex gap-[8px] items-center">
4
+ <div class="font-title-medium-prominent">ความคิดเห็น</div>
5
+ <div class="font-title-medium text-gray">
6
+ {{ $convert.convertNumber(resolvedCommentCount) }}
7
+ </div>
8
+ </div>
9
+
10
+ <div class="flex flex-col gap-[16px]">
11
+ <div class="flex gap-[8px] w-full">
12
+ <Avatar :size="30" :src="currentUser.avatar" />
13
+ <div ref="mainInputRef" contenteditable="true"
14
+ class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
15
+ data-placeholder="เพิ่มความคิดเห็น" @focus="isShowMainActions = true" @input="onMainCommentInput"
16
+ @keydown.enter.exact.prevent="onSendComment" @keydown.shift.enter.prevent="onInsertLineBreak" />
17
+ </div>
18
+ <div v-if="isShowMainActions" class="flex justify-end gap-[8px]">
19
+ <Button variant="outline" class="w-[56px]" @click="onCancelComment">
20
+ ยกเลิก
21
+ </Button>
22
+ <Button color="primary" class="w-[56px]" :disabled="!mainCommentInput" @click="onSendComment">
23
+ ส่ง
24
+ </Button>
25
+ </div>
26
+ </div>
27
+ <div v-for="cmt in resolvedComments" :key="cmt.id" class="flex flex-col gap-[16px] w-full">
28
+ <div class="flex flex-col gap-[4px] w-full">
29
+ <div class="flex gap-[8px]" @mouseenter="hoveredId = cmt.id" @mouseleave="hoveredId = null">
30
+ <Avatar :size="30" :src="cmt.user.avatar" class="cursor-pointer" @click="onViewProfileComment(cmt.user.id)" />
31
+ <template v-if="editingId === cmt.id">
32
+ <div class="flex-1 flex flex-col gap-[4px]">
33
+ <div :ref="(el) => setEditInputRef(el, cmt.id)" contenteditable="true"
34
+ class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white"
35
+ @input="onEditInput($event, cmt.id)" @keydown.enter.exact.prevent="onSendEdit(cmt, 'comment')"
36
+ @keydown.shift.enter.prevent="onInsertLineBreak" />
37
+ <div class="flex justify-end gap-[8px]">
38
+ <Button variant="outline" class="w-[56px]" @click="onCancelEdit">
39
+ ยกเลิก
40
+ </Button>
41
+ <Button color="primary" class="w-[56px]" :disabled="!editTextMap[cmt.id]"
42
+ @click="onSendEdit(cmt, 'comment')">
43
+ ส่ง
44
+ </Button>
45
+ </div>
46
+ </div>
47
+ </template>
48
+ <template v-else>
49
+ <div class="flex flex-col gap-[4px] bg-bright p-[8px] rounded-lg">
50
+ <div class="font-body-large-prominent cursor-pointer" @click="onViewProfileComment(cmt.user.id)">
51
+ {{ cmt.user.name }}
52
+ </div>
53
53
  <div :ref="
54
54
  (el) => registerContentRef(el, `comment-${cmt.id}`)
55
- " class="font-body-large whitespace-pre-wrap">
55
+ " class="font-body-large whitespace-pre-wrap">
56
56
  <template v-if="
57
57
  isContentExpanded(`comment-${cmt.id}`) || !isContentOverflowing(`comment-${cmt.id}`)
58
- ">
59
- {{ normalizeContent(cmt.content) }}
60
- </template>
61
- <template v-else>
62
- {{ getTruncatedText(`comment-${cmt.id}`) }}...<span class="text-primary cursor-pointer"
63
- @click="toggleContentExpand(`comment-${cmt.id}`)">
64
- ดูเพิ่มเติม
65
- </span>
66
- </template>
67
- </div>
68
- </div>
58
+ ">
59
+ {{ normalizeContent(cmt.content) }}
60
+ </template>
61
+ <template v-else>
62
+ {{ getTruncatedText(`comment-${cmt.id}`) }}...<span class="text-primary cursor-pointer"
63
+ @click="toggleContentExpand(`comment-${cmt.id}`)">
64
+ ดูเพิ่มเติม
65
+ </span>
66
+ </template>
67
+ </div>
68
+ </div>
69
69
  <div class="self-center transition-opacity" :class="
70
70
  isMenuVisible(cmt.id) ? 'opacity-100' : 'opacity-0 pointer-events-none'
71
- ">
72
- <PickerOptionMenu horizontal variant="ghost" circle size="icon-sm" icon-size="20"
73
- :items="getCommentMenuItems(cmt)" :open="openMenuId === cmt.id"
74
- @update:open="(v) => openMenuId = v ? cmt.id : null" />
75
- </div>
76
- </template>
77
- </div>
78
- <div class="pl-[38px] flex gap-[16px] text-gray">
79
- <div class="font-body-large">
80
- {{ convertDateTorelativeText(cmt.created_at) }}
81
- </div>
82
- <div class="flex gap-[4px] items-center cursor-pointer" @click="onToggleLikeComment(cmt)">
71
+ ">
72
+ <PickerOptionMenu horizontal variant="ghost" circle size="icon-sm" icon-size="20"
73
+ :items="getCommentMenuItems(cmt)" :open="openMenuId === cmt.id"
74
+ @update:open="(v) => openMenuId = v ? cmt.id : null" />
75
+ </div>
76
+ </template>
77
+ </div>
78
+ <div class="pl-[38px] flex gap-[16px] text-gray">
79
+ <div class="font-body-large">
80
+ {{ convertDateTorelativeText(cmt.created_at) }}
81
+ </div>
82
+ <div class="flex gap-[4px] items-center cursor-pointer" @click="onToggleLikeComment(cmt)">
83
83
  <Icon :name="
84
84
  cmt.is_liked ? 'pukaad:thumbs-up-solid' : 'pukaad:thumbs-up-regular'
85
- " :class="[cmt.is_liked && 'text-primary']" size="20" />
86
- <div v-if="cmt.like_count > 0" :class="[cmt.is_liked && 'text-primary']">
87
- {{ $convert.convertNumber(cmt.like_count) }}
88
- </div>
89
- </div>
90
- <div class="font-body-large cursor-pointer" @click="onReplyComment(cmt.id, cmt.user)">
91
- ตอบกลับ
92
- </div>
93
- </div>
94
- <div v-if="getHiddenCount(cmt) > 0" class="pl-[38px] flex flex-col gap-[16px]">
95
- <Button variant="text" class="justify-start text-primary h-auto gap-[4px] w-fit"
96
- @click="onToggleReplyComment(cmt.id)">
97
- <div class="font-body-large">
98
- การตอบกลับ
99
- {{ $convert.convertNumber(getHiddenCount(cmt)) }}
100
- รายการ
101
- </div>
85
+ " :class="[cmt.is_liked && 'text-primary']" size="20" />
86
+ <div v-if="cmt.like_count > 0" :class="[cmt.is_liked && 'text-primary']">
87
+ {{ $convert.convertNumber(cmt.like_count) }}
88
+ </div>
89
+ </div>
90
+ <div class="font-body-large cursor-pointer" @click="onReplyComment(cmt.id, cmt.user)">
91
+ ตอบกลับ
92
+ </div>
93
+ </div>
94
+ <div v-if="getHiddenCount(cmt) > 0" class="pl-[38px] flex flex-col gap-[16px]">
95
+ <Button variant="text" class="justify-start text-primary h-auto gap-[4px] w-fit"
96
+ @click="onToggleReplyComment(cmt.id)">
97
+ <div class="font-body-large">
98
+ การตอบกลับ
99
+ {{ $convert.convertNumber(getHiddenCount(cmt)) }}
100
+ รายการ
101
+ </div>
102
102
  <Icon :name="
103
103
  openedComments.includes(cmt.id) ? 'lucide:chevron-up' : 'lucide:chevron-down'
104
- " />
105
- </Button>
106
- </div>
107
- </div>
108
- <div v-if="replyingToId === cmt.id" class="flex flex-col gap-[16px]">
109
- <div class="flex gap-[8px] w-full">
110
- <Avatar :size="30" :src="currentUser.avatar" />
111
- <div class="flex-1">
112
- <div :ref="(el) => setReplyInputRef(el, cmt.id)" contenteditable="true"
113
- class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
114
- data-placeholder="เขียนการตอบกลับ..." @input="onReplyInput($event, cmt.id)"
115
- @keydown.enter.exact.prevent="onSendReplyComment(cmt)" @keydown.shift.enter.prevent="onInsertLineBreak" />
116
- </div>
117
- </div>
118
- <div class="flex justify-end gap-[8px]">
119
- <Button variant="outline" class="w-[56px]" @click="onCancelReplyComment">
120
- ยกเลิก
121
- </Button>
122
- <Button color="primary" class="w-[68px]" :disabled="!replyTextMap[cmt.id]" @click="onSendReplyComment(cmt)">
123
- ตอบกลับ
124
- </Button>
125
- </div>
126
- </div>
104
+ " />
105
+ </Button>
106
+ </div>
107
+ </div>
108
+ <div v-if="replyingToId === cmt.id" class="flex flex-col gap-[16px]">
109
+ <div class="flex gap-[8px] w-full">
110
+ <Avatar :size="30" :src="currentUser.avatar" />
111
+ <div class="flex-1">
112
+ <div :ref="(el) => setReplyInputRef(el, cmt.id)" contenteditable="true"
113
+ class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
114
+ data-placeholder="เขียนการตอบกลับ..." @input="onReplyInput($event, cmt.id)"
115
+ @keydown.enter.exact.prevent="onSendReplyComment(cmt)" @keydown.shift.enter.prevent="onInsertLineBreak" />
116
+ </div>
117
+ </div>
118
+ <div class="flex justify-end gap-[8px]">
119
+ <Button variant="outline" class="w-[56px]" @click="onCancelReplyComment">
120
+ ยกเลิก
121
+ </Button>
122
+ <Button color="primary" class="w-[68px]" :disabled="!replyTextMap[cmt.id]" @click="onSendReplyComment(cmt)">
123
+ ตอบกลับ
124
+ </Button>
125
+ </div>
126
+ </div>
127
127
  <div v-if="cmt.reply.length > 0" v-show="
128
128
  openedComments.includes(cmt.id) || cmt.reply.some((r) => pinnedReplyIds.has(r.id))
129
- " class="pl-[38px] flex flex-col gap-[16px]">
130
- <div v-for="reply in cmt.reply" v-show="isReplyVisible(cmt, reply)" :key="reply.id"
131
- class="flex flex-col gap-[16px]">
132
- <div class="flex flex-col gap-[4px]">
133
- <div class="flex gap-[8px]" @mouseenter="hoveredId = reply.id" @mouseleave="hoveredId = null">
134
- <Avatar :size="30" :src="reply.user.avatar" class="cursor-pointer"
135
- @click="onViewProfileComment(reply.user.id)" />
136
- <template v-if="editingId === reply.id">
137
- <div class="flex-1 flex flex-col gap-[4px]">
138
- <div :ref="(el) => setEditInputRef(el, reply.id)" contenteditable="true"
139
- class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white"
140
- @input="onEditInput($event, reply.id)" @keydown.enter.exact.prevent="onSendEdit(reply, 'reply')"
141
- @keydown.shift.enter.prevent="onInsertLineBreak" />
142
- <div class="flex justify-end gap-[8px]">
143
- <Button variant="outline" class="w-[56px]" @click="onCancelEdit">
144
- ยกเลิก
145
- </Button>
146
- <Button color="primary" class="w-[56px]" :disabled="!editTextMap[reply.id]"
147
- @click="onSendEdit(reply, 'reply')">
148
- ส่ง
149
- </Button>
150
- </div>
151
- </div>
152
- </template>
153
- <template v-else>
154
- <div class="flex flex-col bg-bright p-[8px] rounded-lg gap-[4px]">
155
- <div class="font-body-large-prominent cursor-pointer" @click="onViewProfileComment(reply.user.id)">
156
- {{ reply.user.name }}
157
- </div>
129
+ " class="pl-[38px] flex flex-col gap-[16px]">
130
+ <div v-for="reply in cmt.reply" v-show="isReplyVisible(cmt, reply)" :key="reply.id"
131
+ class="flex flex-col gap-[16px]">
132
+ <div class="flex flex-col gap-[4px]">
133
+ <div class="flex gap-[8px]" @mouseenter="hoveredId = reply.id" @mouseleave="hoveredId = null">
134
+ <Avatar :size="30" :src="reply.user.avatar" class="cursor-pointer"
135
+ @click="onViewProfileComment(reply.user.id)" />
136
+ <template v-if="editingId === reply.id">
137
+ <div class="flex-1 flex flex-col gap-[4px]">
138
+ <div :ref="(el) => setEditInputRef(el, reply.id)" contenteditable="true"
139
+ class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white"
140
+ @input="onEditInput($event, reply.id)" @keydown.enter.exact.prevent="onSendEdit(reply, 'reply')"
141
+ @keydown.shift.enter.prevent="onInsertLineBreak" />
142
+ <div class="flex justify-end gap-[8px]">
143
+ <Button variant="outline" class="w-[56px]" @click="onCancelEdit">
144
+ ยกเลิก
145
+ </Button>
146
+ <Button color="primary" class="w-[56px]" :disabled="!editTextMap[reply.id]"
147
+ @click="onSendEdit(reply, 'reply')">
148
+ ส่ง
149
+ </Button>
150
+ </div>
151
+ </div>
152
+ </template>
153
+ <template v-else>
154
+ <div class="flex flex-col bg-bright p-[8px] rounded-lg gap-[4px]">
155
+ <div class="font-body-large-prominent cursor-pointer" @click="onViewProfileComment(reply.user.id)">
156
+ {{ reply.user.name }}
157
+ </div>
158
158
  <div :ref="
159
159
  (el) => registerContentRef(
160
160
  el,
161
161
  `reply-${reply.id}`
162
162
  )
163
- " class="font-body-large whitespace-pre-wrap">
163
+ " class="font-body-large whitespace-pre-wrap">
164
164
  <template v-if="
165
165
  isContentExpanded(`reply-${reply.id}`) || !isContentOverflowing(`reply-${reply.id}`)
166
- "><span v-if="reply.reply_to" @click="onViewProfileComment(reply.reply_to.id)"
167
- class="text-primary cursor-pointer mr-1">{{ reply.reply_to.name }}</span>{{
168
- normalizeContent(reply.content) }}</template>
169
- <template v-else><span v-if="reply.reply_to" @click="onViewProfileComment(reply.reply_to.id)"
170
- class="text-primary cursor-pointer mr-1">{{ reply.reply_to.name }}</span>{{
171
- getTruncatedText(`reply-${reply.id}`) }}...<span class="text-primary cursor-pointer"
172
- @click="toggleContentExpand(`reply-${reply.id}`)">ดูเพิ่มเติม</span></template>
173
- </div>
174
- </div>
166
+ "><span v-if="reply.reply_to" @click="onViewProfileComment(reply.reply_to.id)"
167
+ class="text-primary cursor-pointer mr-1">{{ reply.reply_to.name }}</span>{{
168
+ normalizeContent(reply.content) }}</template>
169
+ <template v-else><span v-if="reply.reply_to" @click="onViewProfileComment(reply.reply_to.id)"
170
+ class="text-primary cursor-pointer mr-1">{{ reply.reply_to.name }}</span>{{
171
+ getTruncatedText(`reply-${reply.id}`) }}...<span class="text-primary cursor-pointer"
172
+ @click="toggleContentExpand(`reply-${reply.id}`)">ดูเพิ่มเติม</span></template>
173
+ </div>
174
+ </div>
175
175
  <div class="self-center transition-opacity" :class="
176
176
  isMenuVisible(reply.id) ? 'opacity-100' : 'opacity-0 pointer-events-none'
177
- ">
178
- <PickerOptionMenu horizontal variant="ghost" circle size="icon-xs" icon-size="20"
177
+ ">
178
+ <PickerOptionMenu horizontal variant="ghost" circle size="icon-xs" icon-size="20"
179
179
  :items="getReplyMenuItems(reply)" :open="openMenuId === reply.id" @update:open="
180
180
  (v) => openMenuId = v ? reply.id : null
181
- " />
182
- </div>
183
- </template>
184
- </div>
185
- <div class="pl-[38px] flex gap-[16px] text-gray">
186
- <div class="font-body-large">
187
- {{ convertDateTorelativeText(reply.created_at) }}
188
- </div>
189
- <div class="flex gap-[4px] items-center cursor-pointer" @click="onToggleLikeReplyComment(reply)">
181
+ " />
182
+ </div>
183
+ </template>
184
+ </div>
185
+ <div class="pl-[38px] flex gap-[16px] text-gray">
186
+ <div class="font-body-large">
187
+ {{ convertDateTorelativeText(reply.created_at) }}
188
+ </div>
189
+ <div class="flex gap-[4px] items-center cursor-pointer" @click="onToggleLikeReplyComment(reply)">
190
190
  <Icon :name="
191
191
  reply.is_liked ? 'pukaad:thumbs-up-solid' : 'pukaad:thumbs-up-regular'
192
- " :class="[reply.is_liked && 'text-primary']" size="20" />
193
- <div v-if="reply.like_count > 0" :class="[reply.is_liked && 'text-primary']">
194
- {{ $convert.convertNumber(reply.like_count) }}
195
- </div>
196
- </div>
197
- <div class="font-body-large cursor-pointer" @click="onReplyComment(reply.id, reply.user)">
198
- ตอบกลับ
199
- </div>
200
- </div>
201
- </div>
202
- <div v-if="replyingToId === reply.id" class="flex flex-col gap-[16px]">
203
- <div class="flex gap-[8px] w-full">
204
- <Avatar :size="30" :src="currentUser.avatar" />
205
- <div class="flex-1">
206
- <div :ref="(el) => setReplyInputRef(el, reply.id)" contenteditable="true"
207
- class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
208
- data-placeholder="เขียนการตอบกลับ..." @input="onReplyInput($event, reply.id)"
209
- @keydown.enter.exact.prevent="onSendReplyComment(cmt)"
210
- @keydown.shift.enter.prevent="onInsertLineBreak" />
211
- </div>
212
- </div>
213
- <div class="flex justify-end gap-[8px]">
214
- <Button variant="outline" class="w-[56px]" @click="onCancelReplyComment">
215
- ยกเลิก
216
- </Button>
217
- <Button color="primary" class="w-[68px]" :disabled="!replyTextMap[reply.id]"
218
- @click="onSendReplyComment(cmt)">
219
- ตอบกลับ
220
- </Button>
221
- </div>
222
- </div>
223
- </div>
224
- </div>
225
- </div>
226
- <!-- Loading indicator for pagination -->
227
- <div v-if="fetchFn && paginationState.loading" class="flex justify-center py-4">
228
- <Icon name="lucide:loader-2" class="animate-spin h-5 w-5 text-primary" />
229
- </div>
230
- </div>
192
+ " :class="[reply.is_liked && 'text-primary']" size="20" />
193
+ <div v-if="reply.like_count > 0" :class="[reply.is_liked && 'text-primary']">
194
+ {{ $convert.convertNumber(reply.like_count) }}
195
+ </div>
196
+ </div>
197
+ <div class="font-body-large cursor-pointer" @click="onReplyComment(reply.id, reply.user)">
198
+ ตอบกลับ
199
+ </div>
200
+ </div>
201
+ </div>
202
+ <div v-if="replyingToId === reply.id" class="flex flex-col gap-[16px]">
203
+ <div class="flex gap-[8px] w-full">
204
+ <Avatar :size="30" :src="currentUser.avatar" />
205
+ <div class="flex-1">
206
+ <div :ref="(el) => setReplyInputRef(el, reply.id)" contenteditable="true"
207
+ class="w-full min-h-[36px] px-[12px] py-[5px] rounded-md border border-mercury font-body-large focus:outline-none focus:ring-2 focus:ring-primary break-words bg-white empty:before:content-[attr(data-placeholder)] empty:before:text-gray"
208
+ data-placeholder="เขียนการตอบกลับ..." @input="onReplyInput($event, reply.id)"
209
+ @keydown.enter.exact.prevent="onSendReplyComment(cmt)"
210
+ @keydown.shift.enter.prevent="onInsertLineBreak" />
211
+ </div>
212
+ </div>
213
+ <div class="flex justify-end gap-[8px]">
214
+ <Button variant="outline" class="w-[56px]" @click="onCancelReplyComment">
215
+ ยกเลิก
216
+ </Button>
217
+ <Button color="primary" class="w-[68px]" :disabled="!replyTextMap[reply.id]"
218
+ @click="onSendReplyComment(cmt)">
219
+ ตอบกลับ
220
+ </Button>
221
+ </div>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ <!-- Loading indicator for pagination -->
227
+ <div v-if="fetchFn && paginationState.loading" class="flex justify-center py-4">
228
+ <Icon name="lucide:loader-2" class="animate-spin h-5 w-5 text-primary" />
229
+ </div>
230
+ </div>
231
231
  </template>
232
232
 
233
233
  <script setup>
@@ -21,58 +21,58 @@ const page = defineModel("page", { type: Number, ...{
21
21
  </script>
22
22
 
23
23
  <template>
24
- <div class="bg-white rounded-lg flex flex-col">
25
- <!-- List Container -->
26
- <div
27
- class="flex-1 overflow-auto"
24
+ <div class="bg-white rounded-lg flex flex-col">
25
+ <!-- List Container -->
26
+ <div
27
+ class="flex-1 overflow-auto"
28
28
  :style="{
29
29
  height: props.fullHeight ? '100%' : props.height ? `${props.height}px` : 'auto',
30
30
  maxHeight: props.maxHeight ? `${props.maxHeight}px` : void 0
31
- }"
32
- >
33
- <ShadTable>
34
- <slot name="body" :items="props.items">
35
- <ShadTableBody>
36
- <template v-if="props.items.length > 0">
37
- <ShadTableRow
38
- v-for="(item, index) in props.items"
39
- :key="index"
40
- class="cursor-pointer"
41
- @click="emit('click-row', item, index)"
42
- >
43
- <ShadTableCell class="w-full">
44
- <slot name="item" :item="item" :index="index">
45
- {{ item }}
46
- </slot>
47
- </ShadTableCell>
48
- </ShadTableRow>
49
- </template>
50
-
51
- <!-- Empty State -->
52
- <template v-else>
53
- <slot name="empty">
54
- <ShadTableEmpty :colspan="1">
55
- <slot name="empty-content" />
56
- </ShadTableEmpty>
57
- </slot>
58
- </template>
59
- </ShadTableBody>
60
- </slot>
61
- </ShadTable>
62
- </div>
63
-
64
- <!-- Pagination -->
65
- <div
66
- v-if="props.items.length > 0 && !props.disabledPagination"
67
- class="p-4 flex justify-center items-center border-t"
68
- >
69
- <Pagination
70
- :totalPage="props.totalPage"
71
- v-model="page"
31
+ }"
32
+ >
33
+ <ShadTable>
34
+ <slot name="body" :items="props.items">
35
+ <ShadTableBody>
36
+ <template v-if="props.items.length > 0">
37
+ <ShadTableRow
38
+ v-for="(item, index) in props.items"
39
+ :key="index"
40
+ class="cursor-pointer"
41
+ @click="emit('click-row', item, index)"
42
+ >
43
+ <ShadTableCell class="w-full">
44
+ <slot name="item" :item="item" :index="index">
45
+ {{ item }}
46
+ </slot>
47
+ </ShadTableCell>
48
+ </ShadTableRow>
49
+ </template>
50
+
51
+ <!-- Empty State -->
52
+ <template v-else>
53
+ <slot name="empty">
54
+ <ShadTableEmpty :colspan="1">
55
+ <slot name="empty-content" />
56
+ </ShadTableEmpty>
57
+ </slot>
58
+ </template>
59
+ </ShadTableBody>
60
+ </slot>
61
+ </ShadTable>
62
+ </div>
63
+
64
+ <!-- Pagination -->
65
+ <div
66
+ v-if="props.items.length > 0 && !props.disabledPagination"
67
+ class="p-4 flex justify-center items-center border-t"
68
+ >
69
+ <Pagination
70
+ :totalPage="props.totalPage"
71
+ v-model="page"
72
72
  @change-item-per-page="
73
73
  (val) => emit('change-item-per-page', val)
74
- "
75
- />
76
- </div>
77
- </div>
74
+ "
75
+ />
76
+ </div>
77
+ </div>
78
78
  </template>