@privyid/persona 0.27.0 → 1.0.0-rc.2

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 (278) hide show
  1. package/dist/components/accordion/Accordion.vue +27 -38
  2. package/dist/components/accordion/AccordionItem.vue +25 -50
  3. package/dist/components/accordion/AccordionItems.vue +55 -0
  4. package/dist/components/accordion/AccordionItems.vue.d.ts +41 -0
  5. package/dist/components/accordion/index.d.ts +1 -8
  6. package/dist/components/accordion/index.mjs +0 -7
  7. package/dist/components/avatar/Avatar.vue +103 -89
  8. package/dist/components/badge/Badge.vue +28 -28
  9. package/dist/components/banner/Banner.vue +56 -54
  10. package/dist/components/breadcrumbs/Breadcrumb.vue +24 -25
  11. package/dist/components/breadcrumbs/BreadcrumbItem.vue +40 -39
  12. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +26 -28
  13. package/dist/components/button-group/ButtonGroup.vue +31 -28
  14. package/dist/components/calendar/Calendar.vue +262 -229
  15. package/dist/components/camera/Camera.vue +220 -195
  16. package/dist/components/caption/Caption.vue +35 -33
  17. package/dist/components/card/Card.vue +76 -67
  18. package/dist/components/card/CardSection.vue +30 -24
  19. package/dist/components/carousel/Carousel.vue +131 -128
  20. package/dist/components/carousel/CarouselBody.vue +9 -16
  21. package/dist/components/carousel/CarouselItem.vue +2 -7
  22. package/dist/components/chart/Chart.vue +122 -84
  23. package/dist/components/chart/ChartSet.vue +27 -11
  24. package/dist/components/chart/ChartVal.vue +31 -19
  25. package/dist/components/chart/adapter/bubble.d.ts +2 -0
  26. package/dist/components/chart/adapter/bubble.mjs +26 -0
  27. package/dist/components/chart/adapter/index.d.ts +1 -1
  28. package/dist/components/chart/adapter/index.mjs +7 -1
  29. package/dist/components/chart/adapter/line.mjs +9 -6
  30. package/dist/components/chart/adapter/pie.mjs +6 -5
  31. package/dist/components/checkbox/Checkbox.vue +13 -5
  32. package/dist/components/checkbox/index.mjs +0 -1
  33. package/dist/components/collapse/Collapse.vue +53 -58
  34. package/dist/components/contextual-bar/ContextualBar.vue +104 -96
  35. package/dist/components/cropper/Cropper.vue +272 -238
  36. package/dist/components/cropper/index.d.ts +1 -3
  37. package/dist/components/cropper/index.mjs +3 -29
  38. package/dist/components/cropper/utils/use-preview.d.ts +3 -0
  39. package/dist/components/cropper/utils/use-preview.mjs +21 -0
  40. package/dist/components/datepicker/Datepicker.vue +160 -137
  41. package/dist/components/dialog/Dialog.vue +64 -54
  42. package/dist/components/dialog/DialogFooter.vue +88 -74
  43. package/dist/components/dialog/index.d.ts +6 -2
  44. package/dist/components/dialog/index.mjs +26 -14
  45. package/dist/components/divider/Divider.vue +19 -20
  46. package/dist/components/dot/Dot.vue +27 -27
  47. package/dist/components/dropdown/Dropdown.vue +6 -1
  48. package/dist/components/dropdown/DropdownHeader.vue +2 -4
  49. package/dist/components/dropdown/DropdownItem.vue +56 -50
  50. package/dist/components/dropdown-subitem/DropdownSubitem.vue +99 -85
  51. package/dist/components/dropzone/Dropzone.vue +171 -137
  52. package/dist/components/filterbar/Filterbar.vue.d.ts +1 -1
  53. package/dist/components/filterbar/pinned/PinnedDate.vue.d.ts +1 -1
  54. package/dist/components/filterbar/pinned/PinnedMultiselect.vue.d.ts +1 -1
  55. package/dist/components/filterbar/pinned/PinnedSelect.vue.d.ts +3 -3
  56. package/dist/components/filterbar/pinned/PinnedToggle.vue.d.ts +7 -7
  57. package/dist/components/form-group/FormGroup.vue +10 -0
  58. package/dist/components/global/types.d.ts +4 -0
  59. package/dist/components/global/types.mjs +0 -0
  60. package/dist/components/global/use-singleton.d.ts +1 -1
  61. package/dist/components/heading/Heading.vue +38 -37
  62. package/dist/components/input/Input.vue +122 -107
  63. package/dist/components/input/index.mjs +1 -1
  64. package/dist/components/input-color/inputColor.vue +8 -1
  65. package/dist/components/input-file/InputFile.vue +110 -112
  66. package/dist/components/input-group/InputGroup.vue +45 -40
  67. package/dist/components/input-password/InputPassword.vue +68 -25
  68. package/dist/components/input-pin/InputPin.vue +120 -112
  69. package/dist/components/input-range/InputRange.vue +204 -178
  70. package/dist/components/label/Label.vue +54 -52
  71. package/dist/components/list-group/ListGroup.vue +35 -36
  72. package/dist/components/list-group/ListGroupItem.vue +37 -43
  73. package/dist/components/markdown/index.d.ts +3 -3
  74. package/dist/components/markdown/index.mjs +5 -5
  75. package/dist/components/meta.json +11 -5
  76. package/dist/components/modal/Modal.vue +166 -148
  77. package/dist/components/nav/Nav.vue +72 -68
  78. package/dist/components/nav/NavCollapse.vue +28 -40
  79. package/dist/components/nav/NavItem.vue +82 -69
  80. package/dist/components/nav/NavItemDropdown.vue +66 -60
  81. package/dist/components/nav/NavSubItem.vue +57 -52
  82. package/dist/components/navbar/Navbar.vue +69 -67
  83. package/dist/components/navbar/NavbarBrand.vue +7 -10
  84. package/dist/components/navbar/NavbarNav.vue +16 -21
  85. package/dist/components/navbar/NavbarToggle.vue +24 -34
  86. package/dist/components/navbar-menu/NavbarNavMenu.vue +10 -13
  87. package/dist/components/notify/Notify.vue +51 -0
  88. package/dist/components/notify/NotifyGroup.vue +238 -0
  89. package/dist/components/notify/NotifyItem.vue +45 -0
  90. package/dist/components/notify/index.d.ts +20 -0
  91. package/dist/components/notify/index.mjs +18 -0
  92. package/dist/components/overlay/Overlay.vue +24 -25
  93. package/dist/components/page/Page.vue +40 -39
  94. package/dist/components/pagination/Pagination.vue +191 -181
  95. package/dist/components/pdf-helipad/PdfHelipad.vue +1 -2
  96. package/dist/components/pdf-object/PdfObject.vue +281 -254
  97. package/dist/components/pdf-object/PdfObjectAddon.vue +19 -21
  98. package/dist/components/pdf-object/PdfObjectDebugger.vue +34 -42
  99. package/dist/components/pdf-object/PdfObjects.vue +26 -28
  100. package/dist/components/pdf-object/index.d.ts +1 -1
  101. package/dist/components/pdf-object/utils/use-drop.mjs +1 -0
  102. package/dist/components/pdf-text/PdfText.vue +117 -116
  103. package/dist/components/pdf-viewer/PdfError.vue +22 -29
  104. package/dist/components/pdf-viewer/PdfLoading.vue +2 -8
  105. package/dist/components/pdf-viewer/PdfNavigation.vue +29 -52
  106. package/dist/components/pdf-viewer/PdfViewer.vue +180 -151
  107. package/dist/components/popover/Popover.vue +1 -1
  108. package/dist/components/popup/Popup.vue +439 -0
  109. package/dist/components/popup/index.d.ts +32 -0
  110. package/dist/components/popup/index.mjs +21 -0
  111. package/dist/components/progress/Progress.vue +62 -49
  112. package/dist/components/progress/ProgressItem.vue +29 -23
  113. package/dist/components/progress/index.d.ts +2 -0
  114. package/dist/components/progress/index.mjs +0 -0
  115. package/dist/components/progress-indicator/ProgressIndicator.vue +56 -56
  116. package/dist/components/progressbar/Progressbar.vue +52 -53
  117. package/dist/components/radio/Radio.vue +70 -67
  118. package/dist/components/radio/index.d.ts +4 -0
  119. package/dist/components/ringbar/Ringbar.vue +42 -44
  120. package/dist/components/select/Select.vue +21 -1
  121. package/dist/components/select/SelectInput.vue +15 -5
  122. package/dist/components/sidebar/Sidebar.vue +6 -1
  123. package/dist/components/sidebar/SidebarBrand.vue +30 -28
  124. package/dist/components/sidebar/SidebarContent.vue.d.ts +1 -1
  125. package/dist/components/sidebar-menu/SidebarMenu.vue +7 -1
  126. package/dist/components/sidebar-menu/index.d.ts +1 -4
  127. package/dist/components/signature-draw/SignatureDraw.vue +62 -66
  128. package/dist/components/signature-draw/SignatureDrawDesktop.vue +97 -98
  129. package/dist/components/signature-draw/SignatureDrawMobile.vue +123 -118
  130. package/dist/components/signature-text/SignatureText.vue +115 -100
  131. package/dist/components/signature-text/utils/formatter.d.ts +2 -2
  132. package/dist/components/signature-text/utils/load-font.mjs +19 -11
  133. package/dist/components/spinner/Spinner.vue +2 -3
  134. package/dist/components/spinner/SpinnerRing.vue +2 -3
  135. package/dist/components/spinner/SpinnerRinggo.vue +5 -3
  136. package/dist/components/spread/Spread.vue +7 -10
  137. package/dist/components/steps/Step.vue +32 -41
  138. package/dist/components/steps/StepSlider.vue.d.ts +2 -2
  139. package/dist/components/steps/Steps.vue +124 -105
  140. package/dist/components/strengthbar/Strengthbar.vue +49 -52
  141. package/dist/components/subheading/Subheading.vue +42 -39
  142. package/dist/components/table/Table.vue.d.ts +3 -3
  143. package/dist/components/table-flex/TableFlex.vue +2 -2
  144. package/dist/components/table-static/TableStatic.vue +2 -2
  145. package/dist/components/tabs/Tab.vue +8 -0
  146. package/dist/components/tabs/TabContent.vue +42 -59
  147. package/dist/components/tabs/TabContent.vue.d.ts +33 -0
  148. package/dist/components/tabs/Tabs.vue +1 -1
  149. package/dist/components/text/Text.vue +56 -50
  150. package/dist/components/textarea/Textarea.vue +112 -104
  151. package/dist/components/time/Time.vue +257 -0
  152. package/dist/components/time/TimeItem.vue +117 -0
  153. package/dist/components/time/index.d.ts +19 -0
  154. package/dist/components/time/index.mjs +53 -0
  155. package/dist/components/time/utils/index.d.ts +9 -0
  156. package/dist/components/time/utils/index.mjs +82 -0
  157. package/dist/components/timepicker/Timepicker.vue +230 -0
  158. package/dist/components/toast/Toast.vue +200 -285
  159. package/dist/components/toast/index.d.ts +46 -13
  160. package/dist/components/toast/index.mjs +43 -5
  161. package/dist/components/toggle/Toggle.vue +104 -89
  162. package/dist/components/tooltip/Tooltip.vue +84 -86
  163. package/dist/components/tooltip/TooltipContainer.vue +70 -64
  164. package/dist/components/tooltip/index.d.ts +1 -1
  165. package/dist/components/tour/Tour.vue +68 -68
  166. package/dist/components/tour/TourDialog.vue +57 -68
  167. package/dist/components/tour/TourHighlight.vue +32 -31
  168. package/dist/components/truncate/Truncate.vue +50 -59
  169. package/dist/components/utils/base64.mjs +1 -3
  170. package/dist/components/wizard/Wizard.vue +42 -43
  171. package/dist/components/wizard/WizardBody.vue +27 -27
  172. package/dist/components/wizard/WizardHeader.vue.d.ts +1 -1
  173. package/dist/components/wizard/WizardStep.vue +30 -19
  174. package/dist/core/index.d.ts +4 -2
  175. package/dist/core/index.mjs +7 -0
  176. package/dist/module.json +1 -1
  177. package/dist/module.mjs +1 -1
  178. package/dist/types.d.mts +2 -2
  179. package/package.json +21 -21
  180. package/dist/components/avatar/Avatar.vue.d.ts +0 -68
  181. package/dist/components/badge/Badge.vue.d.ts +0 -28
  182. package/dist/components/banner/Banner.vue.d.ts +0 -41
  183. package/dist/components/breadcrumbs/Breadcrumb.vue.d.ts +0 -41
  184. package/dist/components/breadcrumbs/BreadcrumbItem.vue.d.ts +0 -32
  185. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue.d.ts +0 -28
  186. package/dist/components/button-group/ButtonGroup.vue.d.ts +0 -27
  187. package/dist/components/calendar/Calendar.vue.d.ts +0 -194
  188. package/dist/components/camera/Camera.vue.d.ts +0 -95
  189. package/dist/components/caption/Caption.vue.d.ts +0 -37
  190. package/dist/components/card/Card.vue.d.ts +0 -77
  191. package/dist/components/card/CardSection.vue.d.ts +0 -25
  192. package/dist/components/carousel/Carousel.vue.d.ts +0 -111
  193. package/dist/components/carousel/CarouselBody.vue.d.ts +0 -2
  194. package/dist/components/carousel/CarouselItem.vue.d.ts +0 -2
  195. package/dist/components/chart/Chart.vue.d.ts +0 -29
  196. package/dist/components/chart/ChartSet.vue.d.ts +0 -12
  197. package/dist/components/chart/ChartVal.vue.d.ts +0 -30
  198. package/dist/components/collapse/Collapse.vue.d.ts +0 -29
  199. package/dist/components/contextual-bar/ContextualBar.vue.d.ts +0 -82
  200. package/dist/components/cropper/Cropper.vue.d.ts +0 -149
  201. package/dist/components/datepicker/Datepicker.vue.d.ts +0 -154
  202. package/dist/components/dialog/Dialog.vue.d.ts +0 -11
  203. package/dist/components/dialog/DialogFooter.vue.d.ts +0 -115
  204. package/dist/components/divider/Divider.vue.d.ts +0 -16
  205. package/dist/components/dot/Dot.vue.d.ts +0 -28
  206. package/dist/components/dropdown/DropdownHeader.vue.d.ts +0 -2
  207. package/dist/components/dropdown/DropdownItem.vue.d.ts +0 -50
  208. package/dist/components/dropdown-subitem/DropdownSubitem.vue.d.ts +0 -35
  209. package/dist/components/dropzone/Dropzone.vue.d.ts +0 -93
  210. package/dist/components/heading/Heading.vue.d.ts +0 -37
  211. package/dist/components/input/Input.vue.d.ts +0 -90
  212. package/dist/components/input-file/InputFile.vue.d.ts +0 -135
  213. package/dist/components/input-group/InputGroup.vue.d.ts +0 -45
  214. package/dist/components/input-password/InputPassword.vue.d.ts +0 -7
  215. package/dist/components/input-pin/InputPin.vue.d.ts +0 -83
  216. package/dist/components/input-range/InputRange.vue.d.ts +0 -108
  217. package/dist/components/label/Label.vue.d.ts +0 -50
  218. package/dist/components/list-group/ListGroup.vue.d.ts +0 -43
  219. package/dist/components/list-group/ListGroupItem.vue.d.ts +0 -37
  220. package/dist/components/modal/Modal.vue.d.ts +0 -159
  221. package/dist/components/nav/Nav.vue.d.ts +0 -91
  222. package/dist/components/nav/NavCollapse.vue.d.ts +0 -26
  223. package/dist/components/nav/NavItem.vue.d.ts +0 -65
  224. package/dist/components/nav/NavItemDropdown.vue.d.ts +0 -103
  225. package/dist/components/nav/NavSubItem.vue.d.ts +0 -27
  226. package/dist/components/navbar/Navbar.vue.d.ts +0 -57
  227. package/dist/components/navbar/NavbarBrand.vue.d.ts +0 -14
  228. package/dist/components/navbar/NavbarNav.vue.d.ts +0 -19
  229. package/dist/components/navbar/NavbarToggle.vue.d.ts +0 -6
  230. package/dist/components/navbar-menu/NavbarNavMenu.vue.d.ts +0 -16
  231. package/dist/components/overlay/Overlay.vue.d.ts +0 -18
  232. package/dist/components/page/Page.vue.d.ts +0 -39
  233. package/dist/components/pagination/Pagination.vue.d.ts +0 -224
  234. package/dist/components/pdf-object/PdfObject.vue.d.ts +0 -132
  235. package/dist/components/pdf-object/PdfObjectAddon.vue.d.ts +0 -18
  236. package/dist/components/pdf-object/PdfObjectDebugger.vue.d.ts +0 -8
  237. package/dist/components/pdf-object/PdfObjects.vue.d.ts +0 -14
  238. package/dist/components/pdf-text/PdfText.vue.d.ts +0 -169
  239. package/dist/components/pdf-viewer/PdfError.vue.d.ts +0 -26
  240. package/dist/components/pdf-viewer/PdfLoading.vue.d.ts +0 -4
  241. package/dist/components/pdf-viewer/PdfNavigation.vue.d.ts +0 -12
  242. package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +0 -92
  243. package/dist/components/progress/Progress.vue.d.ts +0 -42
  244. package/dist/components/progress/ProgressItem.vue.d.ts +0 -25
  245. package/dist/components/progress-indicator/ProgressIndicator.vue.d.ts +0 -42
  246. package/dist/components/progressbar/Progressbar.vue.d.ts +0 -63
  247. package/dist/components/radio/Radio.vue.d.ts +0 -81
  248. package/dist/components/ringbar/Ringbar.vue.d.ts +0 -66
  249. package/dist/components/sidebar/SidebarBrand.vue.d.ts +0 -36
  250. package/dist/components/signature-draw/SignatureDraw.vue.d.ts +0 -101
  251. package/dist/components/signature-draw/SignatureDrawDesktop.vue.d.ts +0 -83
  252. package/dist/components/signature-draw/SignatureDrawMobile.vue.d.ts +0 -106
  253. package/dist/components/signature-text/SignatureText.vue.d.ts +0 -98
  254. package/dist/components/spinner/Spinner.vue.d.ts +0 -2
  255. package/dist/components/spinner/SpinnerRing.vue.d.ts +0 -2
  256. package/dist/components/spinner/SpinnerRinggo.vue.d.ts +0 -6
  257. package/dist/components/spread/Spread.vue.d.ts +0 -14
  258. package/dist/components/steps/Step.vue.d.ts +0 -33
  259. package/dist/components/steps/Steps.vue.d.ts +0 -84
  260. package/dist/components/strengthbar/Strengthbar.vue.d.ts +0 -45
  261. package/dist/components/subheading/Subheading.vue.d.ts +0 -46
  262. package/dist/components/text/Text.vue.d.ts +0 -57
  263. package/dist/components/textarea/Textarea.vue.d.ts +0 -117
  264. package/dist/components/toast/Toast.vue.d.ts +0 -68
  265. package/dist/components/toast/ToastContainer.vue +0 -171
  266. package/dist/components/toast/ToastContainer.vue.d.ts +0 -24
  267. package/dist/components/toast/ToastRoot.vue +0 -43
  268. package/dist/components/toast/ToastRoot.vue.d.ts +0 -13
  269. package/dist/components/toggle/Toggle.vue.d.ts +0 -113
  270. package/dist/components/tooltip/Tooltip.vue.d.ts +0 -51
  271. package/dist/components/tooltip/TooltipContainer.vue.d.ts +0 -11
  272. package/dist/components/tour/Tour.vue.d.ts +0 -9
  273. package/dist/components/tour/TourDialog.vue.d.ts +0 -108
  274. package/dist/components/tour/TourHighlight.vue.d.ts +0 -15
  275. package/dist/components/truncate/Truncate.vue.d.ts +0 -73
  276. package/dist/components/wizard/Wizard.vue.d.ts +0 -72
  277. package/dist/components/wizard/WizardBody.vue.d.ts +0 -23
  278. package/dist/components/wizard/WizardStep.vue.d.ts +0 -34
@@ -2,34 +2,38 @@
2
2
  <div
3
3
  :class="classNames"
4
4
  data-testid="accordion">
5
- <slot>
6
- <Item
7
- v-for="(item, i) in items"
8
- :key="i"
9
- :title="item.title"
10
- :disabled="item.disabled">
11
- <div class="p-4">
12
- {{ item.content }}
13
- </div>
14
- </Item>
15
- </slot>
5
+ <AccordionItems
6
+ v-model="model"
7
+ :no-caret="noCaret"
8
+ :multiple="multiple">
9
+ <slot>
10
+ <Item
11
+ v-for="(item, i) in items"
12
+ :key="i"
13
+ :title="item.title"
14
+ :disabled="item.disabled">
15
+ <div class="p-4">
16
+ {{ item.content }}
17
+ </div>
18
+ </Item>
19
+ </slot>
20
+ </AccordionItems>
16
21
  </div>
17
22
  </template>
18
23
 
19
24
  <script lang="ts" setup>
20
- import { useVModel } from '@vueuse/core'
21
- import { type AccordionItem, ACCORDION_CONTEXT } from '.'
25
+ import { useVModel } from '../input'
26
+ import { type AccordionItem } from '.'
22
27
  import type { PropType } from 'vue-demi'
23
- import {
24
- computed,
25
- provide,
26
- readonly,
27
- } from 'vue-demi'
28
+ import { computed } from 'vue-demi'
28
29
  import Item from './AccordionItem.vue'
29
-
30
- defineOptions({ name: 'Accordion' })
30
+ import AccordionItems from './AccordionItems.vue'
31
31
 
32
32
  const props = defineProps({
33
+ modelValue: {
34
+ type : [Number, Array] as PropType<number | number[]>,
35
+ default: undefined,
36
+ },
33
37
  multiple: {
34
38
  type : Boolean,
35
39
  default: false,
@@ -42,10 +46,6 @@ const props = defineProps({
42
46
  type : Boolean,
43
47
  default: false,
44
48
  },
45
- modelValue: {
46
- type : String,
47
- default: undefined,
48
- },
49
49
  noCaret: {
50
50
  type : Boolean,
51
51
  default: false,
@@ -56,11 +56,11 @@ const props = defineProps({
56
56
  },
57
57
  })
58
58
 
59
- const emit = defineEmits<{
60
- 'update:modelValue': [string],
59
+ defineEmits<{
60
+ 'update:modelValue': [unknown],
61
61
  }>()
62
62
 
63
- const modelValue = useVModel(props, 'modelValue', emit, { passive: true })
63
+ const model = useVModel(props)
64
64
 
65
65
  const classNames = computed(() => {
66
66
  const result: string[] = ['accordion']
@@ -73,17 +73,6 @@ const classNames = computed(() => {
73
73
 
74
74
  return result
75
75
  })
76
-
77
- function setOpenItem (id: string): void {
78
- modelValue.value = id
79
- }
80
-
81
- provide(ACCORDION_CONTEXT, {
82
- openItem: readonly(modelValue),
83
- multiple: props.multiple,
84
- noCaret : props.noCaret,
85
- setOpenItem,
86
- })
87
76
  </script>
88
77
 
89
78
  <style lang="postcss">
@@ -2,8 +2,7 @@
2
2
  <div
3
3
  :class="classNames"
4
4
  data-testid="accordion-item"
5
- :disabled="disabled"
6
- :data-accordion-item-id="uid">
5
+ :disabled="disabled">
7
6
  <slot
8
7
  name="activator"
9
8
  :toggle="toggle"
@@ -16,7 +15,7 @@
16
15
  {{ title }}
17
16
  </Subheading>
18
17
  <slot
19
- v-if="!hideCaret"
18
+ v-if="!noCaret"
20
19
  name="caret"
21
20
  :expanded="model">
22
21
  <ChevronUp
@@ -31,32 +30,26 @@
31
30
  </div>
32
31
  </slot>
33
32
 
34
- <Collapse
35
- :when="model"
33
+ <p-collapse
34
+ :model-value="model"
36
35
  class="accordion__item__content"
37
36
  data-testid="accordion-item-content">
38
37
  <slot :expanded="model" />
39
- </Collapse>
38
+ </p-collapse>
40
39
  </div>
41
40
  </template>
42
41
 
43
42
  <script lang="ts" setup>
44
- import { useVModel } from '@vueuse/core'
45
- import { ACCORDION_CONTEXT, generateId } from '.'
46
- import {
47
- computed,
48
- inject,
49
- watch,
50
- } from 'vue-demi'
43
+ import { useVModel } from '../input'
44
+ import type { VNode } from 'vue-demi'
45
+ import { computed, watch } from 'vue-demi'
51
46
 
52
47
  import Subheading from '../subheading/Subheading.vue'
53
- import { Collapse } from 'vue-collapsed'
48
+ import pCollapse from '../collapse/Collapse.vue'
54
49
  import ChevronUp from '@privyid/persona-icon/vue/chevron-up/16.vue'
55
50
  import ChevronDown from '@privyid/persona-icon/vue/chevron-down/16.vue'
56
51
 
57
- const uid = generateId(undefined, 'accordion-item')
58
-
59
- const parentData = inject(ACCORDION_CONTEXT)
52
+ defineOptions({ name: 'AccordionItem' })
60
53
 
61
54
  const props = defineProps({
62
55
  modelValue: {
@@ -82,11 +75,7 @@ const emit = defineEmits<{
82
75
  'collapse': [],
83
76
  }>()
84
77
 
85
- const model = useVModel(props, 'modelValue', emit, { passive: true })
86
-
87
- const hideCaret = computed(() => {
88
- return props.noCaret || (parentData?.noCaret)
89
- })
78
+ const model = useVModel(props)
90
79
 
91
80
  const classNames = computed(() => {
92
81
  const result: string[] = ['accordion__item']
@@ -103,32 +92,22 @@ const classNames = computed(() => {
103
92
  })
104
93
 
105
94
  function toggle () {
106
- if (props.disabled)
107
- return
108
-
109
- model.value = !model.value
110
-
111
- if (!model.value && !parentData?.multiple)
112
- parentData?.setOpenItem('')
95
+ if (!props.disabled)
96
+ model.value = !model.value
113
97
  }
114
98
 
115
- watch(
116
- () => parentData?.openItem.value,
117
- () => {
118
- model.value = parentData?.openItem.value === uid.value && !parentData?.multiple
119
- },
120
- )
121
- watch(
122
- () => model.value,
123
- (value) => {
124
- if (value && !parentData?.multiple) parentData?.setOpenItem(uid.value)
125
-
126
- if (value)
127
- emit('expand')
128
- else
129
- emit('collapse')
130
- },
131
- )
99
+ watch(model, (value) => {
100
+ if (value)
101
+ emit('expand')
102
+ else
103
+ emit('collapse')
104
+ })
105
+
106
+ defineSlots<{
107
+ 'activator'(props: { toggle: () => void, expanded: boolean }): VNode[],
108
+ 'caret'(props: { expanded: boolean }): VNode[],
109
+ 'default'(props: { expanded: boolean }): VNode[],
110
+ }>()
132
111
  </script>
133
112
 
134
113
  <style lang="postcss">
@@ -178,9 +157,5 @@ watch(
178
157
  @apply opacity-50;
179
158
  }
180
159
  }
181
-
182
- &__content {
183
- @apply transition-[height] duration-300 ease-out;
184
- }
185
160
  }
186
161
  </style>
@@ -0,0 +1,55 @@
1
+ <script>
2
+ import {
3
+ defineComponent,
4
+ h,
5
+ mergeProps
6
+ } from "vue-demi";
7
+ import { findAllChildren } from "../utils/vnode";
8
+ import pAccordionItem from "./AccordionItem.vue";
9
+ export default defineComponent({
10
+ props: {
11
+ modelValue: {
12
+ type: [Number, Array],
13
+ default: void 0
14
+ },
15
+ multiple: {
16
+ type: Boolean,
17
+ default: false
18
+ },
19
+ noCaret: {
20
+ type: Boolean,
21
+ default: false
22
+ }
23
+ },
24
+ emits: ["update:modelValue"],
25
+ setup(props, { slots, emit }) {
26
+ function setValue(isExpand, i) {
27
+ if (props.multiple) {
28
+ const value = Array.isArray(props.modelValue) ? props.modelValue : [];
29
+ if (isExpand)
30
+ emit("update:modelValue", [...value, i]);
31
+ else
32
+ emit("update:modelValue", value.filter((x) => x !== i));
33
+ } else {
34
+ if (isExpand)
35
+ emit("update:modelValue", i);
36
+ else if (props.modelValue === i)
37
+ emit("update:modelValue");
38
+ }
39
+ }
40
+ return () => {
41
+ const items = findAllChildren(slots.default(), "AccordionItem");
42
+ return items.map((item, i) => {
43
+ const isExpand = props.multiple && Array.isArray(props.modelValue) ? props.modelValue.includes(i) : props.modelValue === i;
44
+ return h(pAccordionItem, mergeProps(item.props, {
45
+ "noCaret": item.props.noCaret ?? props.noCaret,
46
+ "modelValue": isExpand,
47
+ "onUpdate:modelValue": (value) => {
48
+ setValue(value, i);
49
+ }
50
+ }), item.children);
51
+ });
52
+ };
53
+ }
54
+ });
55
+ </script>
@@ -0,0 +1,41 @@
1
+ /**
2
+ * TODO: Migrate this component to script setup after defineRender has been release
3
+ * https://github.com/vuejs/rfcs/discussions/585
4
+ */
5
+ import type { PropType } from 'vue-demi';
6
+ declare const _default: import("vue-demi").DefineComponent<{
7
+ modelValue: {
8
+ type: PropType<number | number[]>;
9
+ default: undefined;
10
+ };
11
+ multiple: {
12
+ type: BooleanConstructor;
13
+ default: boolean;
14
+ };
15
+ noCaret: {
16
+ type: BooleanConstructor;
17
+ default: boolean;
18
+ };
19
+ }, () => import("vue-demi").VNode<import("vue-demi").RendererNode, import("vue-demi").RendererElement, {
20
+ [key: string]: any;
21
+ }>[], unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue-demi").PublicProps, Readonly<import("vue-demi").ExtractPropTypes<{
22
+ modelValue: {
23
+ type: PropType<number | number[]>;
24
+ default: undefined;
25
+ };
26
+ multiple: {
27
+ type: BooleanConstructor;
28
+ default: boolean;
29
+ };
30
+ noCaret: {
31
+ type: BooleanConstructor;
32
+ default: boolean;
33
+ };
34
+ }>> & {
35
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
36
+ }, {
37
+ modelValue: number | number[];
38
+ multiple: boolean;
39
+ noCaret: boolean;
40
+ }, {}>;
41
+ export default _default;
@@ -1,14 +1,7 @@
1
- import { type ComputedRef, type MaybeRefOrGetter, type InjectionKey, type Ref } from 'vue';
2
1
  export interface AccordionItem {
3
2
  title: string;
4
3
  content: string;
5
4
  disabled?: boolean;
5
+ noCaret?: boolean;
6
6
  }
7
- export declare const ACCORDION_CONTEXT: InjectionKey<{
8
- openItem: Readonly<Ref<string | undefined>>;
9
- multiple: boolean;
10
- noCaret: boolean;
11
- setOpenItem: (id: string) => void;
12
- }>;
13
7
  export declare function defineAccordion(items: AccordionItem[]): AccordionItem[];
14
- export declare const generateId: (id?: MaybeRefOrGetter<string | undefined>, suffix?: string) => ComputedRef<string>;
@@ -1,10 +1,3 @@
1
- import {
2
- computed,
3
- toValue
4
- } from "vue";
5
- export const ACCORDION_CONTEXT = Symbol("accordion");
6
1
  export function defineAccordion(items) {
7
2
  return items;
8
3
  }
9
- const getId = (suffix = "") => `${suffix}__${Math.random().toString().slice(2, 8)}`;
10
- export const generateId = (id, suffix) => computed(() => toValue(id) ?? getId(suffix));
@@ -14,103 +14,117 @@
14
14
  </div>
15
15
  </template>
16
16
 
17
- <script>
17
+ <script lang="ts" setup>
18
+ import type { PropType } from 'vue-demi'
18
19
  import {
19
20
  computed,
20
- defineComponent,
21
21
  onMounted,
22
22
  ref,
23
- watch
24
- } from "vue-demi";
23
+ watch,
24
+ } from 'vue-demi'
25
25
  import {
26
26
  createAlias,
27
27
  createSpinner,
28
- dummyAvatar
29
- } from "./utils/create-image";
30
- import loadImage from "./utils/load-image";
31
- export default defineComponent({
32
- props: {
33
- variant: {
34
- type: String,
35
- default: void 0
36
- },
37
- src: {
38
- type: String,
39
- default: void 0
40
- },
41
- fallbackSrc: {
42
- type: String,
43
- default: dummyAvatar()
44
- },
45
- name: {
46
- type: String,
47
- default: void 0
48
- },
49
- size: {
50
- type: String,
51
- default: "md"
52
- },
53
- imgClass: {
54
- type: [
55
- String,
56
- Array,
57
- Object
58
- ],
59
- default: void 0
60
- }
28
+ dummyAvatar,
29
+ } from './utils/create-image'
30
+ import loadImage from './utils/load-image'
31
+ import type { TypeVariant, SizeVariant } from '.'
32
+
33
+ const props = defineProps({
34
+ variant: {
35
+ type : String as PropType<TypeVariant>,
36
+ default: undefined,
61
37
  },
62
- emits: ["imgloaded", "imgerror"],
63
- setup(props, { emit }) {
64
- const imageSrc = ref(createSpinner(50));
65
- const classNames = computed(() => {
66
- const result = ["avatar"];
67
- if (props.size)
68
- result.push(`avatar--${props.size}`);
69
- return result;
70
- });
71
- const type = computed(() => {
72
- if (props.variant)
73
- return props.variant;
74
- if (!props.src && props.name)
75
- return "alias";
76
- return "image";
77
- });
78
- function init() {
79
- if (type.value === "alias")
80
- loadAlias();
81
- else
82
- load();
83
- }
84
- function load() {
85
- imageSrc.value = createSpinner(50);
86
- loadImage(props.src).then(() => {
87
- imageSrc.value = props.src;
88
- emit("imgloaded", props.src);
89
- }).catch((error) => {
90
- imageSrc.value = props.fallbackSrc;
91
- emit("imgerror", error);
92
- });
93
- }
94
- function loadAlias() {
95
- imageSrc.value = createAlias(props.name);
96
- }
97
- watch(() => [
98
- props.src,
99
- props.name,
100
- props.variant
101
- ], () => {
102
- init();
103
- });
104
- onMounted(() => {
105
- init();
106
- });
107
- return {
108
- classNames,
109
- type,
110
- imageSrc
111
- };
112
- }
113
- });
38
+ src: {
39
+ type : String,
40
+ default: undefined,
41
+ },
42
+ fallbackSrc: {
43
+ type : String,
44
+ default: dummyAvatar(),
45
+ },
46
+ name: {
47
+ type : String,
48
+ default: undefined,
49
+ },
50
+ size: {
51
+ type : String as PropType<SizeVariant>,
52
+ default: 'md',
53
+ },
54
+ imgClass: {
55
+ type: [
56
+ String,
57
+ Array,
58
+ Object,
59
+ ],
60
+ default: undefined,
61
+ },
62
+ })
63
+
64
+ const emit = defineEmits<{
65
+ 'imgloaded': [string],
66
+ 'imgerror': [Error],
67
+ }>()
68
+
69
+ const imageSrc = ref(createSpinner(50))
70
+
71
+ const classNames = computed(() => {
72
+ const result: string[] = ['avatar']
73
+
74
+ // eslint-disable-next-line unicorn/explicit-length-check
75
+ if (props.size)
76
+ result.push(`avatar--${props.size}`)
77
+
78
+ return result
79
+ })
80
+
81
+ const type = computed<TypeVariant>(() => {
82
+ if (props.variant)
83
+ return props.variant
84
+
85
+ if (!props.src && props.name)
86
+ return 'alias'
87
+
88
+ return 'image'
89
+ })
90
+
91
+ function init () {
92
+ if (type.value === 'alias')
93
+ loadAlias()
94
+ else
95
+ load()
96
+ }
97
+
98
+ function load () {
99
+ imageSrc.value = createSpinner(50)
100
+
101
+ loadImage(props.src)
102
+ .then(() => {
103
+ imageSrc.value = props.src
104
+
105
+ emit('imgloaded', props.src)
106
+ })
107
+ .catch((error) => {
108
+ imageSrc.value = props.fallbackSrc
109
+ emit('imgerror', error)
110
+ })
111
+ }
112
+
113
+ function loadAlias () {
114
+ imageSrc.value = createAlias(props.name)
115
+ }
116
+
117
+ watch(() => [
118
+ props.src,
119
+ props.name,
120
+ props.variant,
121
+ ], () => {
122
+ init()
123
+ })
124
+
125
+ onMounted(() => {
126
+ init()
127
+ })
114
128
  </script>
115
129
 
116
130
  <style lang="postcss">
@@ -6,34 +6,34 @@
6
6
  </span>
7
7
  </template>
8
8
 
9
- <script>
10
- import {
11
- defineComponent,
12
- computed
13
- } from "vue-demi";
14
- export default defineComponent({
15
- props: {
16
- color: {
17
- type: String,
18
- default: "default"
19
- },
20
- variant: {
21
- type: String,
22
- default: "default"
23
- }
9
+ <script lang="ts" setup>
10
+ import type { PropType } from 'vue-demi'
11
+ import { computed } from 'vue-demi'
12
+ import type { StyleVariant } from '.'
13
+ import type { ColorVariant } from '../button'
14
+
15
+ const props = defineProps({
16
+ color: {
17
+ type : String as PropType<ColorVariant>,
18
+ default: 'default',
24
19
  },
25
- setup(props) {
26
- const classNames = computed(() => {
27
- const result = ["badge"];
28
- if (props.color)
29
- result.push(`badge--${props.color}`);
30
- if (props.variant)
31
- result.push(`badge--variant-${props.variant}`);
32
- return result;
33
- });
34
- return { classNames };
35
- }
36
- });
20
+ variant: {
21
+ type : String as PropType<StyleVariant>,
22
+ default: 'default',
23
+ },
24
+ })
25
+
26
+ const classNames = computed(() => {
27
+ const result: string[] = ['badge']
28
+
29
+ if (props.color)
30
+ result.push(`badge--${props.color}`)
31
+
32
+ if (props.variant)
33
+ result.push(`badge--variant-${props.variant}`)
34
+
35
+ return result
36
+ })
37
37
  </script>
38
38
 
39
39
  <style lang="postcss">
@@ -82,7 +82,7 @@ export default defineComponent({
82
82
 
83
83
  &:not([class^='text-'], [class*='text-']) {
84
84
  @apply text-state-emphasis;
85
- @apply dark:text-dark-state-emphasis dark:text-dark-on-emphasis;
85
+ @apply dark:text-dark-on-emphasis;
86
86
  }
87
87
  }
88
88