@privyid/persona 0.3.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 (298) hide show
  1. package/README.md +12 -0
  2. package/dist/components/app/App.vue +29 -0
  3. package/dist/components/avatar/Avatar.vue +144 -0
  4. package/dist/components/avatar/Avatar.vue.d.ts +69 -0
  5. package/dist/components/avatar/assets/avatar.png +0 -0
  6. package/dist/components/avatar/utils/color-hash.d.ts +2 -0
  7. package/dist/components/avatar/utils/color-hash.mjs +22 -0
  8. package/dist/components/avatar/utils/create-image.d.ts +5 -0
  9. package/dist/components/avatar/utils/create-image.mjs +19 -0
  10. package/dist/components/avatar/utils/load-image.d.ts +1 -0
  11. package/dist/components/avatar/utils/load-image.mjs +22 -0
  12. package/dist/components/badge/Badge.vue +185 -0
  13. package/dist/components/badge/Badge.vue.d.ts +28 -0
  14. package/dist/components/badge/assets/images/img-guide-badge.svg +1 -0
  15. package/dist/components/banner/Banner.vue +112 -0
  16. package/dist/components/banner/Banner.vue.d.ts +32 -0
  17. package/dist/components/button/Button.vue +247 -0
  18. package/dist/components/button/Button.vue.d.ts +56 -0
  19. package/dist/components/button-group/ButtonGroup.vue +161 -0
  20. package/dist/components/button-group/ButtonGroup.vue.d.ts +26 -0
  21. package/dist/components/calendar/Calendar.vue +279 -0
  22. package/dist/components/calendar/Calendar.vue.d.ts +141 -0
  23. package/dist/components/calendar/adapter/adapter.d.ts +25 -0
  24. package/dist/components/calendar/adapter/adapter.mjs +8 -0
  25. package/dist/components/calendar/adapter/date.d.ts +2 -0
  26. package/dist/components/calendar/adapter/date.mjs +75 -0
  27. package/dist/components/calendar/adapter/month.d.ts +2 -0
  28. package/dist/components/calendar/adapter/month.mjs +58 -0
  29. package/dist/components/calendar/adapter/year.d.ts +2 -0
  30. package/dist/components/calendar/adapter/year.mjs +58 -0
  31. package/dist/components/caption/Caption.vue +38 -0
  32. package/dist/components/caption/Caption.vue.d.ts +16 -0
  33. package/dist/components/card/Card.vue +247 -0
  34. package/dist/components/card/Card.vue.d.ts +68 -0
  35. package/dist/components/card/CardSection.vue +66 -0
  36. package/dist/components/card/CardSection.vue.d.ts +25 -0
  37. package/dist/components/card/assets/images/img-card-callout-01.svg +1 -0
  38. package/dist/components/chart/Chart.vue +109 -0
  39. package/dist/components/chart/Chart.vue.d.ts +30 -0
  40. package/dist/components/chart/ChartSet.vue +16 -0
  41. package/dist/components/chart/ChartSet.vue.d.ts +12 -0
  42. package/dist/components/chart/ChartVal.vue +24 -0
  43. package/dist/components/chart/ChartVal.vue.d.ts +30 -0
  44. package/dist/components/chart/adapter/adapter.d.ts +7 -0
  45. package/dist/components/chart/adapter/adapter.mjs +3 -0
  46. package/dist/components/chart/adapter/index.d.ts +3 -0
  47. package/dist/components/chart/adapter/index.mjs +10 -0
  48. package/dist/components/chart/adapter/line.d.ts +2 -0
  49. package/dist/components/chart/adapter/line.mjs +63 -0
  50. package/dist/components/chart/adapter/pie.d.ts +2 -0
  51. package/dist/components/chart/adapter/pie.mjs +33 -0
  52. package/dist/components/chart/use-chart.d.ts +2 -0
  53. package/dist/components/chart/use-chart.mjs +9 -0
  54. package/dist/components/checkbox/Checkbox.vue +176 -0
  55. package/dist/components/checkbox/Checkbox.vue.d.ts +88 -0
  56. package/dist/components/checkbox/use-checkbox.d.ts +7 -0
  57. package/dist/components/checkbox/use-checkbox.mjs +37 -0
  58. package/dist/components/datepicker/Datepicker.vue +143 -0
  59. package/dist/components/datepicker/Datepicker.vue.d.ts +88 -0
  60. package/dist/components/dialog/Dialog.vue +75 -0
  61. package/dist/components/dialog/Dialog.vue.d.ts +11 -0
  62. package/dist/components/dialog/DialogFooter.vue +126 -0
  63. package/dist/components/dialog/DialogFooter.vue.d.ts +114 -0
  64. package/dist/components/dialog/index.d.ts +6 -0
  65. package/dist/components/dialog/index.mjs +5 -0
  66. package/dist/components/dialog/use-dialog.d.ts +28 -0
  67. package/dist/components/dialog/use-dialog.mjs +31 -0
  68. package/dist/components/divider/Divider.vue +9 -0
  69. package/dist/components/dot/Dot.vue +83 -0
  70. package/dist/components/dot/Dot.vue.d.ts +18 -0
  71. package/dist/components/dropdown/Dropdown.vue +231 -0
  72. package/dist/components/dropdown/Dropdown.vue.d.ts +113 -0
  73. package/dist/components/dropdown/DropdownItem.vue +44 -0
  74. package/dist/components/dropdown/DropdownItem.vue.d.ts +18 -0
  75. package/dist/components/dropdown/utils/use-focus.d.ts +5 -0
  76. package/dist/components/dropdown/utils/use-focus.mjs +20 -0
  77. package/dist/components/dropdown/utils/use-popper.d.ts +6 -0
  78. package/dist/components/dropdown/utils/use-popper.mjs +32 -0
  79. package/dist/components/dropdown-subitem/DropdownSubitem.vue +168 -0
  80. package/dist/components/dropdown-subitem/DropdownSubitem.vue.d.ts +35 -0
  81. package/dist/components/dropdown-subitem/use-dropdown-subitem.d.ts +12 -0
  82. package/dist/components/dropdown-subitem/use-dropdown-subitem.mjs +1 -0
  83. package/dist/components/filterbar/Filterbar.vue +100 -0
  84. package/dist/components/filterbar/Filterbar.vue.d.ts +33 -0
  85. package/dist/components/filterbar/pinned/Date.vue +99 -0
  86. package/dist/components/filterbar/pinned/Date.vue.d.ts +67 -0
  87. package/dist/components/filterbar/pinned/Multiselect.vue +109 -0
  88. package/dist/components/filterbar/pinned/Multiselect.vue.d.ts +42 -0
  89. package/dist/components/filterbar/pinned/Select.vue +95 -0
  90. package/dist/components/filterbar/pinned/Select.vue.d.ts +42 -0
  91. package/dist/components/filterbar/pinned/Toggle.vue +76 -0
  92. package/dist/components/filterbar/pinned/Toggle.vue.d.ts +57 -0
  93. package/dist/components/filterbar/use-filterbar.d.ts +45 -0
  94. package/dist/components/filterbar/use-filterbar.mjs +7 -0
  95. package/dist/components/global/use-singleton.d.ts +6 -0
  96. package/dist/components/global/use-singleton.mjs +52 -0
  97. package/dist/components/heading/Heading.vue +59 -0
  98. package/dist/components/heading/Heading.vue.d.ts +19 -0
  99. package/dist/components/input/Input.vue +54 -0
  100. package/dist/components/input/Input.vue.d.ts +32 -0
  101. package/dist/components/input/InputGroup.vue +25 -0
  102. package/dist/components/input/use-input.d.ts +5 -0
  103. package/dist/components/input/use-input.mjs +20 -0
  104. package/dist/components/label/Label.vue +221 -0
  105. package/dist/components/label/Label.vue.d.ts +51 -0
  106. package/dist/components/modal/Modal.vue +217 -0
  107. package/dist/components/modal/Modal.vue.d.ts +75 -0
  108. package/dist/components/modal/assets/images/img-modal-banner-sheet.jpg +0 -0
  109. package/dist/components/nav/Nav.vue +324 -0
  110. package/dist/components/nav/Nav.vue.d.ts +73 -0
  111. package/dist/components/nav/NavItem.vue +149 -0
  112. package/dist/components/nav/NavItem.vue.d.ts +47 -0
  113. package/dist/components/nav/NavItemDropdown.vue +56 -0
  114. package/dist/components/nav/NavItemDropdown.vue.d.ts +23 -0
  115. package/dist/components/nav/NavSubItem.vue +137 -0
  116. package/dist/components/nav/NavSubItem.vue.d.ts +26 -0
  117. package/dist/components/overlay/Overlay.vue +61 -0
  118. package/dist/components/overlay/Overlay.vue.d.ts +7 -0
  119. package/dist/components/overlay/assets/icon-white.svg +1 -0
  120. package/dist/components/overlay/use-overlay.d.ts +2 -0
  121. package/dist/components/overlay/use-overlay.mjs +8 -0
  122. package/dist/components/overlay/utils/use-loading.d.ts +4 -0
  123. package/dist/components/overlay/utils/use-loading.mjs +27 -0
  124. package/dist/components/radio/Radio.vue +194 -0
  125. package/dist/components/radio/Radio.vue.d.ts +81 -0
  126. package/dist/components/radio/use-radio.d.ts +3 -0
  127. package/dist/components/radio/use-radio.mjs +17 -0
  128. package/dist/components/select/Select.vue +282 -0
  129. package/dist/components/select/Select.vue.d.ts +110 -0
  130. package/dist/components/select/adapter/adapter.d.ts +16 -0
  131. package/dist/components/select/adapter/adapter.mjs +20 -0
  132. package/dist/components/select/adapter/async-adapter.d.ts +5 -0
  133. package/dist/components/select/adapter/async-adapter.mjs +67 -0
  134. package/dist/components/select/adapter/basic-adapter.d.ts +5 -0
  135. package/dist/components/select/adapter/basic-adapter.mjs +13 -0
  136. package/dist/components/select/adapter/fuzzy-adapter.d.ts +2 -0
  137. package/dist/components/select/adapter/fuzzy-adapter.mjs +24 -0
  138. package/dist/components/select/demo/api/province.d.ts +5 -0
  139. package/dist/components/select/demo/api/province.mjs +138 -0
  140. package/dist/components/select/demo/api/regencies/11.d.ts +6 -0
  141. package/dist/components/select/demo/api/regencies/11.mjs +117 -0
  142. package/dist/components/select/demo/api/regencies/12.d.ts +6 -0
  143. package/dist/components/select/demo/api/regencies/12.mjs +167 -0
  144. package/dist/components/select/demo/api/regencies/13.d.ts +6 -0
  145. package/dist/components/select/demo/api/regencies/13.mjs +97 -0
  146. package/dist/components/select/demo/api/regencies/14.d.ts +6 -0
  147. package/dist/components/select/demo/api/regencies/14.mjs +62 -0
  148. package/dist/components/select/demo/api/regencies/15.d.ts +6 -0
  149. package/dist/components/select/demo/api/regencies/15.mjs +57 -0
  150. package/dist/components/select/demo/api/regencies/16.d.ts +6 -0
  151. package/dist/components/select/demo/api/regencies/16.mjs +87 -0
  152. package/dist/components/select/demo/api/regencies/17.d.ts +6 -0
  153. package/dist/components/select/demo/api/regencies/17.mjs +52 -0
  154. package/dist/components/select/demo/api/regencies/18.d.ts +6 -0
  155. package/dist/components/select/demo/api/regencies/18.mjs +77 -0
  156. package/dist/components/select/demo/api/regencies/19.d.ts +6 -0
  157. package/dist/components/select/demo/api/regencies/19.mjs +37 -0
  158. package/dist/components/select/demo/api/regencies/21.d.ts +6 -0
  159. package/dist/components/select/demo/api/regencies/21.mjs +37 -0
  160. package/dist/components/select/demo/api/regencies/31.d.ts +6 -0
  161. package/dist/components/select/demo/api/regencies/31.mjs +32 -0
  162. package/dist/components/select/demo/api/regencies/32.d.ts +6 -0
  163. package/dist/components/select/demo/api/regencies/32.mjs +137 -0
  164. package/dist/components/select/demo/api/regencies/33.d.ts +6 -0
  165. package/dist/components/select/demo/api/regencies/33.mjs +177 -0
  166. package/dist/components/select/demo/api/regencies/34.d.ts +6 -0
  167. package/dist/components/select/demo/api/regencies/34.mjs +27 -0
  168. package/dist/components/select/demo/api/regencies/35.d.ts +6 -0
  169. package/dist/components/select/demo/api/regencies/35.mjs +192 -0
  170. package/dist/components/select/demo/api/regencies/36.d.ts +6 -0
  171. package/dist/components/select/demo/api/regencies/36.mjs +42 -0
  172. package/dist/components/select/demo/api/regencies/51.d.ts +6 -0
  173. package/dist/components/select/demo/api/regencies/51.mjs +47 -0
  174. package/dist/components/select/demo/api/regencies/52.d.ts +6 -0
  175. package/dist/components/select/demo/api/regencies/52.mjs +52 -0
  176. package/dist/components/select/demo/api/regencies/53.d.ts +6 -0
  177. package/dist/components/select/demo/api/regencies/53.mjs +112 -0
  178. package/dist/components/select/demo/api/regencies/61.d.ts +6 -0
  179. package/dist/components/select/demo/api/regencies/61.mjs +72 -0
  180. package/dist/components/select/demo/api/regencies/62.d.ts +6 -0
  181. package/dist/components/select/demo/api/regencies/62.mjs +72 -0
  182. package/dist/components/select/demo/api/regencies/63.d.ts +6 -0
  183. package/dist/components/select/demo/api/regencies/63.mjs +67 -0
  184. package/dist/components/select/demo/api/regencies/64.d.ts +6 -0
  185. package/dist/components/select/demo/api/regencies/64.mjs +52 -0
  186. package/dist/components/select/demo/api/regencies/65.d.ts +6 -0
  187. package/dist/components/select/demo/api/regencies/65.mjs +27 -0
  188. package/dist/components/select/demo/api/regencies/71.d.ts +6 -0
  189. package/dist/components/select/demo/api/regencies/71.mjs +77 -0
  190. package/dist/components/select/demo/api/regencies/72.d.ts +6 -0
  191. package/dist/components/select/demo/api/regencies/72.mjs +67 -0
  192. package/dist/components/select/demo/api/regencies/73.d.ts +6 -0
  193. package/dist/components/select/demo/api/regencies/73.mjs +122 -0
  194. package/dist/components/select/demo/api/regencies/74.d.ts +6 -0
  195. package/dist/components/select/demo/api/regencies/74.mjs +87 -0
  196. package/dist/components/select/demo/api/regencies/75.d.ts +6 -0
  197. package/dist/components/select/demo/api/regencies/75.mjs +32 -0
  198. package/dist/components/select/demo/api/regencies/76.d.ts +6 -0
  199. package/dist/components/select/demo/api/regencies/76.mjs +32 -0
  200. package/dist/components/select/demo/api/regencies/81.d.ts +6 -0
  201. package/dist/components/select/demo/api/regencies/81.mjs +57 -0
  202. package/dist/components/select/demo/api/regencies/82.d.ts +6 -0
  203. package/dist/components/select/demo/api/regencies/82.mjs +52 -0
  204. package/dist/components/select/demo/api/regencies/91.d.ts +6 -0
  205. package/dist/components/select/demo/api/regencies/91.mjs +67 -0
  206. package/dist/components/select/demo/api/regencies/94.d.ts +6 -0
  207. package/dist/components/select/demo/api/regencies/94.mjs +147 -0
  208. package/dist/components/select/demo/get-region.d.ts +11 -0
  209. package/dist/components/select/demo/get-region.mjs +19 -0
  210. package/dist/components/select/use-select.d.ts +10 -0
  211. package/dist/components/select/use-select.mjs +3 -0
  212. package/dist/components/select/utils/use-on-scroll.d.ts +2 -0
  213. package/dist/components/select/utils/use-on-scroll.mjs +9 -0
  214. package/dist/components/select/utils/use-on-typing.d.ts +3 -0
  215. package/dist/components/select/utils/use-on-typing.mjs +8 -0
  216. package/dist/components/sidebar/Sidebar.vue +92 -0
  217. package/dist/components/sidebar/Sidebar.vue.d.ts +51 -0
  218. package/dist/components/sidebar/SidebarBrand.vue +53 -0
  219. package/dist/components/sidebar/SidebarBrand.vue.d.ts +14 -0
  220. package/dist/components/sidebar/SidebarNav.vue +151 -0
  221. package/dist/components/sidebar/SidebarNav.vue.d.ts +36 -0
  222. package/dist/components/sidebar/assets/images/icon-flag.svg +1 -0
  223. package/dist/components/sidebar/assets/images/logo-privy-icon.svg +1 -0
  224. package/dist/components/sidebar/assets/images/logo-privy.svg +1 -0
  225. package/dist/components/sidebar-menu/SidebarMenu.vue +94 -0
  226. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +43 -0
  227. package/dist/components/sidebar-menu/assets/images/img-flag.svg +1 -0
  228. package/dist/components/sidebar-menu/use-sidebar-menu.d.ts +21 -0
  229. package/dist/components/sidebar-menu/use-sidebar-menu.mjs +3 -0
  230. package/dist/components/signature-draw/SignatureDraw.vue +69 -0
  231. package/dist/components/signature-draw/SignatureDraw.vue.d.ts +82 -0
  232. package/dist/components/signature-draw/SignatureDrawDesktop.vue +152 -0
  233. package/dist/components/signature-draw/SignatureDrawDesktop.vue.d.ts +66 -0
  234. package/dist/components/signature-draw/SignatureDrawMobile.vue +203 -0
  235. package/dist/components/signature-draw/SignatureDrawMobile.vue.d.ts +89 -0
  236. package/dist/components/signature-draw/assets/empty-img.png +0 -0
  237. package/dist/components/signature-draw/utils/canvas.d.ts +35 -0
  238. package/dist/components/signature-draw/utils/canvas.mjs +47 -0
  239. package/dist/components/signature-draw/utils/rotate-image.d.ts +6 -0
  240. package/dist/components/signature-draw/utils/rotate-image.mjs +12 -0
  241. package/dist/components/signature-draw/utils/smooth-line.d.ts +36 -0
  242. package/dist/components/signature-draw/utils/smooth-line.mjs +36 -0
  243. package/dist/components/signature-draw/utils/straight-line.d.ts +8 -0
  244. package/dist/components/signature-draw/utils/straight-line.mjs +22 -0
  245. package/dist/components/signature-draw/utils/use-draw.d.ts +7 -0
  246. package/dist/components/signature-draw/utils/use-draw.mjs +24 -0
  247. package/dist/components/signature-text/SignatureText.vue +104 -0
  248. package/dist/components/signature-text/SignatureText.vue.d.ts +70 -0
  249. package/dist/components/signature-text/sample/sample-signature.png +0 -0
  250. package/dist/components/signature-text/utils/formatter.d.ts +2 -0
  251. package/dist/components/signature-text/utils/formatter.mjs +8 -0
  252. package/dist/components/signature-text/utils/generate-text.d.ts +8 -0
  253. package/dist/components/signature-text/utils/generate-text.mjs +33 -0
  254. package/dist/components/signature-text/utils/load-font.d.ts +1 -0
  255. package/dist/components/signature-text/utils/load-font.mjs +14 -0
  256. package/dist/components/spinner/Spinner.vue +141 -0
  257. package/dist/components/spinner/Spinner.vue.d.ts +2 -0
  258. package/dist/components/spinner/SpinnerRing.vue +28 -0
  259. package/dist/components/spinner/SpinnerRing.vue.d.ts +2 -0
  260. package/dist/components/subheading/Subheading.vue +66 -0
  261. package/dist/components/subheading/Subheading.vue.d.ts +28 -0
  262. package/dist/components/table/Table.vue +257 -0
  263. package/dist/components/table/Table.vue.d.ts +71 -0
  264. package/dist/components/table/use-table.d.ts +23 -0
  265. package/dist/components/table/use-table.mjs +16 -0
  266. package/dist/components/tabs/Tab.vue +28 -0
  267. package/dist/components/tabs/Tab.vue.d.ts +23 -0
  268. package/dist/components/tabs/TabContent.vue +27 -0
  269. package/dist/components/tabs/TabContent.vue.d.ts +14 -0
  270. package/dist/components/tabs/Tabs.vue +194 -0
  271. package/dist/components/tabs/Tabs.vue.d.ts +79 -0
  272. package/dist/components/textarea/Textarea.vue +158 -0
  273. package/dist/components/textarea/Textarea.vue.d.ts +95 -0
  274. package/dist/components/toast/Toast.vue +228 -0
  275. package/dist/components/toast/Toast.vue.d.ts +56 -0
  276. package/dist/components/toast/ToastContainer.vue +63 -0
  277. package/dist/components/toast/ToastContainer.vue.d.ts +15 -0
  278. package/dist/components/toast/use-toast.d.ts +11 -0
  279. package/dist/components/toast/use-toast.mjs +5 -0
  280. package/dist/components/toggle/Toggle.vue +220 -0
  281. package/dist/components/toggle/Toggle.vue.d.ts +104 -0
  282. package/dist/components/truncate/Truncate.vue +75 -0
  283. package/dist/components/truncate/Truncate.vue.d.ts +64 -0
  284. package/dist/components/utils/color.d.ts +12 -0
  285. package/dist/components/utils/color.mjs +10 -0
  286. package/dist/components/utils/value.d.ts +8 -0
  287. package/dist/components/utils/value.mjs +6 -0
  288. package/dist/components/utils/vnode.d.ts +2 -0
  289. package/dist/components/utils/vnode.mjs +15 -0
  290. package/dist/core/index.cjs +75 -0
  291. package/dist/core/index.d.ts +8 -0
  292. package/dist/core/index.mjs +25 -0
  293. package/dist/module.cjs +5 -0
  294. package/dist/module.d.ts +5 -0
  295. package/dist/module.json +5 -0
  296. package/dist/module.mjs +25 -0
  297. package/dist/types.d.ts +6 -0
  298. package/package.json +40 -0
@@ -0,0 +1,194 @@
1
+ <template>
2
+ <label
3
+ data-testid="radio"
4
+ class="radio"
5
+ :class="classNames"
6
+ @click.prevent="toggle">
7
+ <input
8
+ type="radio"
9
+ :value="model"
10
+ :name="name"
11
+ :disabled="disabled || readonly">
12
+ <span class="radio__icon">
13
+ <IconCheck v-if="apperance === 'option'" />
14
+ <svg
15
+ v-else-if="apperance === 'checkbox'"
16
+ width="10"
17
+ height="10"
18
+ viewBox="0 0 14 10"
19
+ fill="none"
20
+ xmlns="http://www.w3.org/2000/svg">
21
+ <path
22
+ fill-rule="evenodd"
23
+ clip-rule="evenodd"
24
+ d="M3.81581 8.48528L5.23002 9.8995L6.64423 8.48528L13.7153 1.41421L12.3011 0L5.23002 7.07107L1.69449 3.53553L0.280273 4.94975L3.81581 8.48528Z"
25
+ fill="white" />
26
+ </svg>
27
+
28
+ <svg
29
+ v-else
30
+ width="10"
31
+ height="10"
32
+ viewBox="0 0 14 14"
33
+ fill="none"
34
+ xmlns="http://www.w3.org/2000/svg">
35
+ <circle
36
+ cx="7"
37
+ cy="7"
38
+ r="6.25"
39
+ fill="white" />
40
+ </svg>
41
+ </span>
42
+ <span class="radio__label">
43
+ <slot />
44
+ </span>
45
+ </label>
46
+ </template>
47
+
48
+ <script>
49
+ import { useVModel } from "./use-radio";
50
+ import IconCheck from "@carbon/icons-vue/lib/checkmark--filled/16";
51
+ import {
52
+ computed,
53
+ defineComponent
54
+ } from "vue-demi";
55
+ export default defineComponent({
56
+ components: { IconCheck },
57
+ props: {
58
+ name: {
59
+ type: String,
60
+ default: ""
61
+ },
62
+ modelValue: {
63
+ type: [
64
+ String,
65
+ Number,
66
+ Boolean,
67
+ Array,
68
+ Object,
69
+ Date
70
+ ],
71
+ default: false
72
+ },
73
+ value: {
74
+ type: [
75
+ String,
76
+ Number,
77
+ Boolean,
78
+ Array,
79
+ Object,
80
+ Date
81
+ ],
82
+ default: true
83
+ },
84
+ checked: {
85
+ type: Boolean,
86
+ default: false
87
+ },
88
+ readonly: {
89
+ type: Boolean,
90
+ default: false
91
+ },
92
+ disabled: {
93
+ type: Boolean,
94
+ default: false
95
+ },
96
+ apperance: {
97
+ type: String,
98
+ default: "radio"
99
+ }
100
+ },
101
+ models: {
102
+ prop: "modelValue",
103
+ event: "update:modelValue"
104
+ },
105
+ emits: ["update:modelValue", "change"],
106
+ setup(props) {
107
+ const model = useVModel(props);
108
+ const classNames = computed(() => {
109
+ const result = [];
110
+ if (model.value)
111
+ result.push("radio--checked");
112
+ if (props.readonly)
113
+ result.push("radio--readonly");
114
+ if (props.disabled)
115
+ result.push("radio--disabled");
116
+ if (props.apperance)
117
+ result.push(`radio--${props.apperance}`);
118
+ return result;
119
+ });
120
+ function toggle() {
121
+ if (!props.disabled && !props.readonly)
122
+ model.value = true;
123
+ }
124
+ return {
125
+ model,
126
+ classNames,
127
+ toggle
128
+ };
129
+ }
130
+ });
131
+ </script>
132
+
133
+ <style lang="postcss">
134
+ .radio {
135
+ @apply inline-flex gap-2 relative cursor-pointer select-none items-baseline;
136
+
137
+ & > input[type="radio"] {
138
+ @apply appearance-none w-0 h-0 opacity-0 absolute;
139
+ }
140
+
141
+ &__icon {
142
+ @apply w-5 h-5 border rounded-full border-secondary-25 inline-flex items-center justify-center bg-white;
143
+
144
+ & > svg {
145
+ @apply w-3;
146
+ }
147
+ }
148
+
149
+ &--disabled {
150
+ @apply opacity-50;
151
+ }
152
+
153
+ &--checked {
154
+ .radio__icon {
155
+ @apply bg-primary-100 border-primary-100;
156
+ }
157
+ }
158
+
159
+ &--checkbox {
160
+ .radio__icon {
161
+ @apply rounded-tn;
162
+ }
163
+ }
164
+
165
+ &--option {
166
+ .radio__icon {
167
+ @apply order-2 border-none invisible bg-transparent;
168
+
169
+ & > svg {
170
+ @apply w-4;
171
+ }
172
+ }
173
+
174
+ .radio__label {
175
+ @apply flex-grow;
176
+ }
177
+
178
+ &.radio--checked {
179
+ .radio__icon {
180
+ @apply text-primary-100 visible;
181
+ }
182
+ }
183
+ }
184
+
185
+ .dropdown__menu & {
186
+ @apply px-3 py-2 cursor-pointer text-body-100 w-full select-none text-left;
187
+
188
+ &:hover,
189
+ &:focus-visible {
190
+ @apply bg-background-75;
191
+ }
192
+ }
193
+ }
194
+ </style>
@@ -0,0 +1,81 @@
1
+ import { PropType } from 'vue-demi';
2
+ export interface ChangedInteface {
3
+ value: any;
4
+ state: boolean;
5
+ }
6
+ declare type ApperanceType = 'radio' | 'checkbox' | 'option';
7
+ declare const _default: import("vue-demi").DefineComponent<{
8
+ name: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ modelValue: {
13
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
14
+ default: boolean;
15
+ };
16
+ value: {
17
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
18
+ default: boolean;
19
+ };
20
+ checked: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ readonly: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ disabled: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ apperance: {
33
+ type: PropType<ApperanceType>;
34
+ default: string;
35
+ };
36
+ }, {
37
+ model: import("vue-demi").WritableComputedRef<boolean>;
38
+ classNames: import("vue-demi").ComputedRef<string[]>;
39
+ toggle: () => void;
40
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("change" | "update:modelValue")[], "change" | "update:modelValue", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
41
+ name: {
42
+ type: StringConstructor;
43
+ default: string;
44
+ };
45
+ modelValue: {
46
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
47
+ default: boolean;
48
+ };
49
+ value: {
50
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
51
+ default: boolean;
52
+ };
53
+ checked: {
54
+ type: BooleanConstructor;
55
+ default: boolean;
56
+ };
57
+ readonly: {
58
+ type: BooleanConstructor;
59
+ default: boolean;
60
+ };
61
+ disabled: {
62
+ type: BooleanConstructor;
63
+ default: boolean;
64
+ };
65
+ apperance: {
66
+ type: PropType<ApperanceType>;
67
+ default: string;
68
+ };
69
+ }>> & {
70
+ onChange?: (...args: any[]) => any;
71
+ "onUpdate:modelValue"?: (...args: any[]) => any;
72
+ }, {
73
+ name: string;
74
+ value: string | number | boolean | unknown[] | Record<string, any> | Date;
75
+ disabled: boolean;
76
+ modelValue: string | number | boolean | unknown[] | Record<string, any> | Date;
77
+ readonly: boolean;
78
+ checked: boolean;
79
+ apperance: ApperanceType;
80
+ }>;
81
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import type { CheckboxProps } from '../checkbox/use-checkbox';
2
+ export declare type RadioProps = Omit<CheckboxProps, 'uncheckedValue'>;
3
+ export declare function useVModel(props: RadioProps): import("vue-demi").WritableComputedRef<boolean>;
@@ -0,0 +1,17 @@
1
+ import { computed, getCurrentInstance } from "vue-demi";
2
+ import { isEqual } from "../utils/value.mjs";
3
+ export function useVModel(props) {
4
+ const { emit } = getCurrentInstance();
5
+ const checked = props.value;
6
+ const model = computed({
7
+ get() {
8
+ return isEqual(props.modelValue, checked) || props.checked;
9
+ },
10
+ set(value) {
11
+ emit("change", value);
12
+ if (value)
13
+ emit("update:modelValue", checked);
14
+ }
15
+ });
16
+ return model;
17
+ }
@@ -0,0 +1,282 @@
1
+ <template>
2
+ <Dropdown
3
+ v-model="isOpen"
4
+ class="select"
5
+ data-testid="select"
6
+ aria-label="select"
7
+ :disabled="disabled"
8
+ :class="classNames">
9
+ <template #activator>
10
+ <Input
11
+ v-model="search"
12
+ data-testid="select-search"
13
+ class="select__search"
14
+ :placeholder="placeholder"
15
+ :disabled="disabled"
16
+ :readonly="readonly"
17
+ @focus="onFocus" />
18
+ <IconArrow class="select__caret" />
19
+ </template>
20
+
21
+ <template v-if="!isLoading && items.length === 0">
22
+ <div
23
+ data-testid="select-no-data"
24
+ class="select__empty">
25
+ <slot name="empty">
26
+ {{ emptyText }}
27
+ </slot>
28
+ </div>
29
+ </template>
30
+
31
+ <template v-else>
32
+ <DropdownItem
33
+ v-for="(item, i) in items"
34
+ :key="i"
35
+ data-testid="select-item"
36
+ :class="{ selected: isSelected(item) }"
37
+ @click="select(item)">
38
+ <div class="select__option">
39
+ <div class="select__option-text">
40
+ <slot
41
+ name="option"
42
+ :is-selected="isSelected(item)"
43
+ :item="item">
44
+ {{ item.text }}
45
+ </slot>
46
+ </div>
47
+ <IconCheck
48
+ class="select__option-checked" />
49
+ </div>
50
+ </DropdownItem>
51
+ </template>
52
+
53
+ <template v-if="isLoading">
54
+ <div
55
+ data-testid="select-loading"
56
+ class="select__loading">
57
+ <IconLoading
58
+ width="14"
59
+ height="14" />
60
+ <slot name="loading">
61
+ {{ loadingText }}
62
+ </slot>
63
+ </div>
64
+ </template>
65
+ </Dropdown>
66
+ </template>
67
+
68
+ <script>
69
+ import Dropdown from "../dropdown/Dropdown.vue";
70
+ import DropdownItem from "../dropdown/DropdownItem.vue";
71
+ import Input from "../input/Input.vue";
72
+ import IconArrow from "@carbon/icons-vue/lib/chevron--down/16";
73
+ import IconCheck from "@carbon/icons-vue/lib/checkmark--filled/16";
74
+ import IconLoading from "../spinner/SpinnerRing.vue";
75
+ import {
76
+ computed,
77
+ defineComponent,
78
+ getCurrentInstance,
79
+ ref,
80
+ watch
81
+ } from "vue-demi";
82
+ import BasicAdapter from "./adapter/basic-adapter";
83
+ import useLoading from "../overlay/utils/use-loading";
84
+ import { isEqual } from "../utils/value";
85
+ import { tryOnMounted } from "@vueuse/shared";
86
+ import { onStartTyping } from "@vueuse/core";
87
+ export default defineComponent({
88
+ components: {
89
+ Dropdown,
90
+ DropdownItem,
91
+ Input,
92
+ IconArrow,
93
+ IconCheck,
94
+ IconLoading
95
+ },
96
+ props: {
97
+ modelValue: {
98
+ type: [
99
+ String,
100
+ Number,
101
+ Boolean,
102
+ Array,
103
+ Object,
104
+ Date
105
+ ],
106
+ default: ""
107
+ },
108
+ selected: {
109
+ type: Object,
110
+ default: () => {
111
+ return {
112
+ text: "",
113
+ value: void 0
114
+ };
115
+ }
116
+ },
117
+ options: {
118
+ type: Array,
119
+ default: () => []
120
+ },
121
+ placeholder: {
122
+ type: String,
123
+ default: ""
124
+ },
125
+ emptyText: {
126
+ type: String,
127
+ default: "No Data"
128
+ },
129
+ loadingText: {
130
+ type: String,
131
+ default: "Loading..."
132
+ },
133
+ adapter: {
134
+ type: Object,
135
+ default: () => BasicAdapter
136
+ },
137
+ disabled: {
138
+ type: Boolean,
139
+ default: false
140
+ },
141
+ readonly: {
142
+ type: Boolean,
143
+ default: false
144
+ }
145
+ },
146
+ models: {
147
+ prop: "modelValue",
148
+ event: "update:modelValue"
149
+ },
150
+ emits: [
151
+ "change",
152
+ "update:modelValue",
153
+ "update:selected",
154
+ "userInput"
155
+ ],
156
+ setup(props, { emit }) {
157
+ const vm = getCurrentInstance();
158
+ const input = ref();
159
+ const keyword = ref("");
160
+ const isOpen = ref(false);
161
+ const isLoading = useLoading({ elapsed: false });
162
+ const context = {
163
+ props,
164
+ keyword,
165
+ isOpen,
166
+ isLoading
167
+ };
168
+ const items = props.adapter.setup(context);
169
+ const model = computed({
170
+ get() {
171
+ return items.value.find((item) => isEqual(item.value, props.modelValue)) ?? {
172
+ text: "",
173
+ value: void 0
174
+ };
175
+ },
176
+ set(selected) {
177
+ emit("change", selected);
178
+ emit("update:modelValue", selected.value);
179
+ emit("update:selected", selected);
180
+ if (isOpen.value)
181
+ emit("userInput", selected);
182
+ }
183
+ });
184
+ const classNames = computed(() => {
185
+ const result = [];
186
+ if (isOpen.value)
187
+ result.push("select--open");
188
+ if (props.disabled)
189
+ result.push("select--disabled");
190
+ if (props.readonly)
191
+ result.push("select--readonly");
192
+ return result;
193
+ });
194
+ const search = computed({
195
+ get() {
196
+ return isOpen.value ? keyword.value : model.value?.text;
197
+ },
198
+ set(value) {
199
+ if (value !== search.value)
200
+ keyword.value = value;
201
+ }
202
+ });
203
+ function select(item) {
204
+ model.value = item;
205
+ }
206
+ function onFocus() {
207
+ if (!props.disabled && !props.readonly)
208
+ isOpen.value = true;
209
+ }
210
+ function isSelected(item) {
211
+ return isEqual(item.value, model.value.value);
212
+ }
213
+ watch(isOpen, (value) => {
214
+ if (!value)
215
+ keyword.value = "";
216
+ }, { flush: "post" });
217
+ onStartTyping(() => {
218
+ if (isOpen.value && input.value && input.value !== document.activeElement)
219
+ input.value.focus();
220
+ });
221
+ tryOnMounted(() => {
222
+ if (vm?.proxy?.$el) {
223
+ input.value = vm.proxy.$el.querySelector(".select__search");
224
+ }
225
+ });
226
+ return {
227
+ classNames,
228
+ model,
229
+ isOpen,
230
+ isLoading,
231
+ search,
232
+ items,
233
+ select,
234
+ onFocus,
235
+ isSelected
236
+ };
237
+ }
238
+ });
239
+ </script>
240
+
241
+ <style lang="postcss">
242
+ .select {
243
+ &__search {
244
+ @apply pr-8 truncate;
245
+ }
246
+
247
+ &__caret {
248
+ @apply absolute right-3 top-0 bottom-0 my-auto transition-transform duration-150 text-secondary-75 pointer-events-none;
249
+ }
250
+
251
+ &__option {
252
+ @apply flex items-center justify-between;
253
+
254
+ &-text {
255
+ @apply flex-grow truncate;
256
+ }
257
+
258
+ &-checked {
259
+ @apply flex-shrink-0 text-primary-100 invisible;
260
+
261
+ .selected & {
262
+ @apply visible;
263
+ }
264
+ }
265
+ }
266
+
267
+ &__empty,
268
+ &__loading {
269
+ @apply px-3 py-2 text-body-100 text-center;
270
+ }
271
+
272
+ &__loading {
273
+ @apply flex justify-center items-center gap-2;
274
+ }
275
+
276
+ &--open {
277
+ .select__caret {
278
+ @apply rotate-180;
279
+ }
280
+ }
281
+ }
282
+ </style>
@@ -0,0 +1,110 @@
1
+ import { PropType } from 'vue-demi';
2
+ import { SelectItem } from './use-select';
3
+ import { Adapter } from './adapter/adapter';
4
+ declare const _default: import("vue-demi").DefineComponent<{
5
+ modelValue: {
6
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
7
+ default: string;
8
+ };
9
+ selected: {
10
+ type: PropType<SelectItem>;
11
+ default: () => {
12
+ text: string;
13
+ value: any;
14
+ };
15
+ };
16
+ options: {
17
+ type: PropType<string[] | SelectItem[]>;
18
+ default: () => any[];
19
+ };
20
+ placeholder: {
21
+ type: StringConstructor;
22
+ default: string;
23
+ };
24
+ emptyText: {
25
+ type: StringConstructor;
26
+ default: string;
27
+ };
28
+ loadingText: {
29
+ type: StringConstructor;
30
+ default: string;
31
+ };
32
+ adapter: {
33
+ type: PropType<Adapter>;
34
+ default: () => Adapter;
35
+ };
36
+ disabled: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ readonly: {
41
+ type: BooleanConstructor;
42
+ default: boolean;
43
+ };
44
+ }, {
45
+ classNames: import("vue-demi").ComputedRef<string[]>;
46
+ model: import("vue-demi").WritableComputedRef<SelectItem>;
47
+ isOpen: import("vue-demi").Ref<boolean>;
48
+ isLoading: import("vue-demi").WritableComputedRef<boolean>;
49
+ search: import("vue-demi").WritableComputedRef<string>;
50
+ items: import("vue-demi").Ref<SelectItem[]>;
51
+ select: (item: SelectItem) => void;
52
+ onFocus: () => void;
53
+ isSelected: (item: SelectItem) => boolean;
54
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("change" | "update:modelValue" | "update:selected" | "userInput")[], "change" | "update:modelValue" | "update:selected" | "userInput", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
55
+ modelValue: {
56
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
57
+ default: string;
58
+ };
59
+ selected: {
60
+ type: PropType<SelectItem>;
61
+ default: () => {
62
+ text: string;
63
+ value: any;
64
+ };
65
+ };
66
+ options: {
67
+ type: PropType<string[] | SelectItem[]>;
68
+ default: () => any[];
69
+ };
70
+ placeholder: {
71
+ type: StringConstructor;
72
+ default: string;
73
+ };
74
+ emptyText: {
75
+ type: StringConstructor;
76
+ default: string;
77
+ };
78
+ loadingText: {
79
+ type: StringConstructor;
80
+ default: string;
81
+ };
82
+ adapter: {
83
+ type: PropType<Adapter>;
84
+ default: () => Adapter;
85
+ };
86
+ disabled: {
87
+ type: BooleanConstructor;
88
+ default: boolean;
89
+ };
90
+ readonly: {
91
+ type: BooleanConstructor;
92
+ default: boolean;
93
+ };
94
+ }>> & {
95
+ onChange?: (...args: any[]) => any;
96
+ "onUpdate:modelValue"?: (...args: any[]) => any;
97
+ "onUpdate:selected"?: (...args: any[]) => any;
98
+ onUserInput?: (...args: any[]) => any;
99
+ }, {
100
+ disabled: boolean;
101
+ modelValue: string | number | boolean | unknown[] | Record<string, any> | Date;
102
+ readonly: boolean;
103
+ options: string[] | SelectItem[];
104
+ placeholder: string;
105
+ selected: SelectItem;
106
+ adapter: Adapter;
107
+ emptyText: string;
108
+ loadingText: string;
109
+ }>;
110
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { Ref } from 'vue-demi';
2
+ import { SelectItem, SelectProps } from '../use-select';
3
+ export interface AdapterContext {
4
+ props: SelectProps;
5
+ keyword: Ref<string>;
6
+ isOpen: Ref<boolean>;
7
+ isLoading: Ref<boolean>;
8
+ }
9
+ export interface Adapter {
10
+ setup: (context: AdapterContext) => Ref<SelectItem[]>;
11
+ }
12
+ /**
13
+ * normalizing props.options to SelectItem[]
14
+ */
15
+ export declare function useOptionsProp(props: Pick<SelectProps, 'options'>): import("vue-demi").ComputedRef<SelectItem[]>;
16
+ export declare function defineAdapter(adapter: Adapter): Adapter;