@privyid/persona 0.21.0 → 0.23.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 (138) hide show
  1. package/dist/components/accordion/Accordion.vue +5 -2
  2. package/dist/components/accordion/AccordionItem.vue +9 -7
  3. package/dist/components/avatar/Avatar.vue.d.ts +2 -2
  4. package/dist/components/badge/Badge.vue +21 -3
  5. package/dist/components/badge/Badge.vue.d.ts +1 -1
  6. package/dist/components/banner/Banner.vue +5 -0
  7. package/dist/components/banner/Banner.vue.d.ts +9 -0
  8. package/dist/components/button/Button.vue +18 -18
  9. package/dist/components/calendar/Calendar.vue.d.ts +2 -2
  10. package/dist/components/calendar/adapter/adapter.d.ts +1 -8
  11. package/dist/components/calendar/adapter/adapter.mjs +0 -10
  12. package/dist/components/calendar/adapter/date.mjs +2 -2
  13. package/dist/components/calendar/adapter/month.mjs +2 -2
  14. package/dist/components/camera/Camera.vue.d.ts +3 -3
  15. package/dist/components/card/Card.vue.d.ts +1 -1
  16. package/dist/components/card/CardSection.vue +1 -0
  17. package/dist/components/card/CardSection.vue.d.ts +1 -1
  18. package/dist/components/carousel/Carousel.vue.d.ts +8 -8
  19. package/dist/components/chart/ChartSet.vue.d.ts +2 -2
  20. package/dist/components/chart/ChartVal.vue.d.ts +4 -4
  21. package/dist/components/checkbox/Checkbox.vue +98 -112
  22. package/dist/components/checkbox/icon/IconCheckbox.vue +13 -0
  23. package/dist/components/checkbox/icon/IconInderteminate.vue +12 -0
  24. package/dist/components/contextual-bar/ContextualBar.vue +67 -19
  25. package/dist/components/contextual-bar/ContextualBar.vue.d.ts +4 -4
  26. package/dist/components/contextual-bar/index.d.ts +1 -1
  27. package/dist/components/cropper/Cropper.vue.d.ts +10 -10
  28. package/dist/components/datepicker/Datepicker.vue +2 -0
  29. package/dist/components/datepicker/Datepicker.vue.d.ts +3 -3
  30. package/dist/components/dialog/Dialog.vue +2 -0
  31. package/dist/components/dialog/index.d.ts +2 -0
  32. package/dist/components/divider/Divider.vue +1 -1
  33. package/dist/components/dot/Dot.vue.d.ts +1 -1
  34. package/dist/components/dropdown/Dropdown.vue +303 -222
  35. package/dist/components/dropdown/DropdownItem.vue +8 -8
  36. package/dist/components/dropdown-subitem/DropdownSubitem.vue.d.ts +1 -1
  37. package/dist/components/dropzone/Dropzone.vue.d.ts +5 -5
  38. package/dist/components/filterbar/pinned/PinnedDate.vue +2 -0
  39. package/dist/components/filterbar/pinned/PinnedDate.vue.d.ts +3 -3
  40. package/dist/components/filterbar/pinned/PinnedMultiselect.vue +10 -6
  41. package/dist/components/filterbar/pinned/PinnedMultiselect.vue.d.ts +1 -1
  42. package/dist/components/filterbar/pinned/PinnedSelect.vue +11 -7
  43. package/dist/components/filterbar/pinned/PinnedSelect.vue.d.ts +4 -4
  44. package/dist/components/filterbar/pinned/PinnedToggle.vue.d.ts +7 -7
  45. package/dist/components/global/store.d.ts +2 -1
  46. package/dist/components/input/Input.vue +16 -5
  47. package/dist/components/input/Input.vue.d.ts +6 -5
  48. package/dist/components/input/index.d.ts +1 -1
  49. package/dist/components/input-file/InputFile.vue.d.ts +5 -5
  50. package/dist/components/input-pin/InputPin.vue.d.ts +3 -3
  51. package/dist/components/input-range/InputRange.vue.d.ts +8 -8
  52. package/dist/components/label/Label.vue +31 -12
  53. package/dist/components/label/Label.vue.d.ts +2 -2
  54. package/dist/components/list-group/ListGroup.vue.d.ts +1 -1
  55. package/dist/components/list-group/ListGroupItem.vue +2 -2
  56. package/dist/components/main/Main.vue +4 -2
  57. package/dist/components/markdown/index.d.ts +6 -1
  58. package/dist/components/markdown/index.mjs +8 -2
  59. package/dist/components/meta.json +135 -0
  60. package/dist/components/modal/Modal.vue +215 -12
  61. package/dist/components/modal/Modal.vue.d.ts +56 -2
  62. package/dist/components/modal/index.d.ts +1 -1
  63. package/dist/components/nav/Nav.vue +5 -1
  64. package/dist/components/nav/Nav.vue.d.ts +1 -1
  65. package/dist/components/nav/NavItem.vue.d.ts +2 -2
  66. package/dist/components/nav/NavItemDropdown.vue.d.ts +3 -3
  67. package/dist/components/nav/NavSubItem.vue +6 -6
  68. package/dist/components/navbar/Navbar.vue.d.ts +1 -1
  69. package/dist/components/navbar/NavbarBrand.vue +1 -1
  70. package/dist/components/pagination/Pagination.vue +9 -0
  71. package/dist/components/pagination/Pagination.vue.d.ts +10 -0
  72. package/dist/components/pdf-helipad/PdfHelipad.vue +101 -85
  73. package/dist/components/pdf-helipad/utils/use-drag.d.ts +2 -7
  74. package/dist/components/pdf-helipad/utils/use-drag.mjs +1 -1
  75. package/dist/components/pdf-object/PdfObject.vue.d.ts +3 -3
  76. package/dist/components/pdf-object/index.d.ts +7 -0
  77. package/dist/components/pdf-object/utils/use-drag.d.ts +1 -0
  78. package/dist/components/pdf-object/utils/use-drag.mjs +1 -1
  79. package/dist/components/pdf-text/PdfText.vue.d.ts +4 -4
  80. package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +6 -6
  81. package/dist/components/progress-indicator/ProgressIndicator.vue.d.ts +2 -2
  82. package/dist/components/progressbar/Progressbar.vue.d.ts +7 -7
  83. package/dist/components/radio/Radio.vue.d.ts +5 -5
  84. package/dist/components/ringbar/Ringbar.vue.d.ts +6 -6
  85. package/dist/components/select/Select.vue +402 -214
  86. package/dist/components/select/SelectInput.vue +102 -0
  87. package/dist/components/select/SelectTags.vue +57 -0
  88. package/dist/components/select/adapter/adapter.d.ts +1 -0
  89. package/dist/components/select/adapter/async-adapter.d.ts +13 -1
  90. package/dist/components/select/adapter/async-adapter.mjs +8 -15
  91. package/dist/components/select/index.d.ts +2 -0
  92. package/dist/components/select/index.mjs +4 -1
  93. package/dist/components/sheet/Sheet.vue +2 -3
  94. package/dist/components/sidebar/Sidebar.vue +101 -116
  95. package/dist/components/sidebar/SidebarBrand.vue +1 -1
  96. package/dist/components/sidebar/SidebarContent.vue +27 -0
  97. package/dist/components/sidebar/SidebarNav.vue +78 -87
  98. package/dist/components/sidebar-menu/SidebarMenu.vue +57 -204
  99. package/dist/components/sidebar-menu/SidebarMenuItem.vue +70 -0
  100. package/dist/components/signature-text/SignatureText.vue.d.ts +5 -5
  101. package/dist/components/steps/StepSlider.vue +2 -2
  102. package/dist/components/steps/Steps.vue.d.ts +2 -2
  103. package/dist/components/strengthbar/Strengthbar.vue.d.ts +9 -9
  104. package/dist/components/table/index.d.ts +5 -8
  105. package/dist/components/table-flex/TableFlex.vue +14 -11
  106. package/dist/components/table-static/TableStatic.vue +131 -119
  107. package/dist/components/table-static/TableStaticRoot.vue +42 -0
  108. package/dist/components/tabs/Tab.vue +13 -15
  109. package/dist/components/tabs/TabContent.vue +64 -23
  110. package/dist/components/tabs/Tabs.vue +93 -75
  111. package/dist/components/text/Text.vue +15 -7
  112. package/dist/components/text/Text.vue.d.ts +11 -2
  113. package/dist/components/text/index.d.ts +1 -0
  114. package/dist/components/textarea/Textarea.vue.d.ts +5 -5
  115. package/dist/components/toggle/Toggle.vue +12 -1
  116. package/dist/components/toggle/Toggle.vue.d.ts +16 -7
  117. package/dist/components/tooltip/index.mjs +1 -1
  118. package/dist/components/tooltip/utils/create-handler.mjs +1 -1
  119. package/dist/components/tour/TourDialog.vue +6 -0
  120. package/dist/components/truncate/Truncate.vue +1 -1
  121. package/dist/components/truncate/Truncate.vue.d.ts +2 -2
  122. package/dist/components/utils/date.d.ts +21 -0
  123. package/dist/components/utils/date.mjs +15 -0
  124. package/dist/components/utils/vnode.mjs +1 -1
  125. package/dist/core/index.d.ts +1 -0
  126. package/dist/core/index.mjs +4 -0
  127. package/dist/module.json +1 -1
  128. package/package.json +17 -17
  129. package/dist/components/checkbox/Checkbox.vue.d.ts +0 -84
  130. package/dist/components/dropdown/Dropdown.vue.d.ts +0 -147
  131. package/dist/components/pdf-helipad/PdfHelipad.vue.d.ts +0 -45
  132. package/dist/components/select/Select.vue.d.ts +0 -157
  133. package/dist/components/sidebar/Sidebar.vue.d.ts +0 -80
  134. package/dist/components/sidebar/SidebarNav.vue.d.ts +0 -66
  135. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +0 -91
  136. package/dist/components/tabs/Tab.vue.d.ts +0 -23
  137. package/dist/components/tabs/TabContent.vue.d.ts +0 -14
  138. package/dist/components/tabs/Tabs.vue.d.ts +0 -80
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- ref="dropdown"
3
+ ref="root"
4
4
  class="dropdown"
5
5
  :class="[{ 'dropdown--open': isOpen, 'dropdown--no-caret' : noCaret }, classNames]"
6
6
  data-testid="dropdown">
@@ -31,254 +31,322 @@
31
31
  </Button>
32
32
  </slot>
33
33
 
34
- <Transition name="fade">
34
+ <Transition
35
+ name="fade"
36
+ :css="!noAnimation"
37
+ @after-enter="$emit('show')"
38
+ @after-leave="$emit('hide')">
35
39
  <div
36
40
  v-show="isOpen && !isHidden"
37
41
  ref="menu"
38
42
  data-testid="dropdown-menu"
39
43
  class="dropdown__menu"
40
44
  :class="[menuClass, containerSize]">
41
- <DropdownGroup
42
- ref="wizard"
43
- class="dropdown__menu__container">
44
- <slot />
45
- </DropdownGroup>
45
+ <div
46
+ v-if="$slots.prepend"
47
+ class="drowdown__menu__prepend">
48
+ <slot name="prepend" />
49
+ </div>
50
+ <div
51
+ ref="menuBody"
52
+ class="dropdown__menu__body">
53
+ <DropdownGroup
54
+ ref="wizard"
55
+ class="dropdown__menu__container">
56
+ <slot />
57
+ </DropdownGroup>
58
+ </div>
59
+ <div
60
+ v-if="$slots.append"
61
+ class="drowdown__menu__append">
62
+ <slot name="append" />
63
+ </div>
46
64
  </div>
47
65
  </Transition>
48
66
  </div>
49
67
  </template>
50
68
 
51
- <script>
69
+ <script lang="ts" setup>
52
70
  import {
53
- defineComponent,
71
+ PropType,
54
72
  provide,
55
73
  watch,
56
74
  toRef,
57
75
  watchEffect,
58
76
  computed,
59
- ref
60
- } from "vue-demi";
77
+ ref,
78
+ VNode,
79
+ } from 'vue-demi'
61
80
  import {
62
- templateRef,
63
81
  onClickOutside,
64
- onKeyStroke
65
- } from "@vueuse/core";
66
- import Button from "../button/Button.vue";
67
- import DropdownGroup from "../dropdown-subitem/DropdownSubitem.vue";
68
- import { useFocus } from "./utils/use-focus";
82
+ onKeyStroke,
83
+ } from '@vueuse/core'
84
+ import Button from '../button/Button.vue'
85
+ import DropdownGroup from '../dropdown-subitem/DropdownSubitem.vue'
86
+ import { useFocus } from './utils/use-focus'
69
87
  import {
88
+ Placement,
70
89
  autoUpdate,
71
90
  computePosition,
72
91
  offset,
73
92
  flip,
74
93
  shift,
75
- hide
76
- } from "@floating-ui/dom";
77
- import { useVModel } from "../input";
78
- import IconArrow from "@privyid/persona-icon/vue/chevron-down/16.vue";
79
- import { DROPDOWN_CONTEXT } from ".";
80
- export default defineComponent({
81
- components: {
82
- Button,
83
- DropdownGroup,
84
- IconArrow
94
+ hide,
95
+ } from '@floating-ui/dom'
96
+ import { useVModel } from '../input'
97
+ import IconArrow from '@privyid/persona-icon/vue/chevron-down/20.vue'
98
+ import type {
99
+ StyleVariant,
100
+ ColorVariant,
101
+ SizeVariant,
102
+ } from '../button'
103
+ import type {
104
+ MenuSizeVariant,
105
+ } from '.'
106
+ import { DROPDOWN_CONTEXT } from '.'
107
+
108
+ type DropdownSubitemElement = InstanceType<typeof DropdownGroup> & HTMLDivElement
109
+
110
+ defineOptions({
111
+ models: {
112
+ prop : 'modelValue',
113
+ event: 'update:modelValue',
85
114
  },
86
- props: {
87
- modelValue: {
88
- type: Boolean,
89
- default: false
90
- },
91
- text: {
92
- type: String,
93
- default: ""
94
- },
95
- placement: {
96
- type: String,
97
- default: "bottom-start"
98
- },
99
- variant: {
100
- type: String,
101
- default: "solid"
102
- },
103
- color: {
104
- type: String,
105
- default: "default"
106
- },
107
- size: {
108
- type: String,
109
- default: "md"
110
- },
111
- icon: {
112
- type: Boolean,
113
- default: false
114
- },
115
- pill: {
116
- type: Boolean,
117
- default: false
118
- },
119
- disabled: {
120
- type: Boolean,
121
- default: false
122
- },
123
- noCaret: {
124
- type: Boolean,
125
- default: false
126
- },
127
- divider: {
128
- type: Boolean,
129
- default: false
130
- },
131
- menuClass: {
132
- type: [
133
- String,
134
- Array,
135
- Object
136
- ],
137
- default: void 0
138
- },
139
- buttonClass: {
140
- type: [
141
- String,
142
- Array,
143
- Object
144
- ],
145
- default: void 0
146
- },
147
- menuSize: {
148
- type: String,
149
- default: "sm"
150
- }
115
+ })
116
+
117
+ const props = defineProps({
118
+ modelValue: {
119
+ type : Boolean,
120
+ default: false,
151
121
  },
152
- models: {
153
- prop: "modelValue",
154
- event: "update:modelValue"
122
+ text: {
123
+ type : String,
124
+ default: '',
155
125
  },
156
- emits: [
157
- "show",
158
- "hide",
159
- "update:modelValue"
160
- ],
161
- setup(props, { emit }) {
162
- const target = templateRef("dropdown");
163
- const menu = templateRef("menu");
164
- const wizard = templateRef("wizard");
165
- const placement = toRef(props, "placement");
166
- const isOpen = useVModel(props);
167
- const isHidden = ref(false);
168
- const { next: nextFocus, prev: prevFocus } = useFocus(menu);
169
- const classNames = computed(() => {
170
- const result = [""];
171
- if (props.divider)
172
- result.push("dropdown--divider");
173
- return result;
174
- });
175
- const containerSize = computed(() => {
176
- const result = [""];
177
- if (props.menuSize)
178
- result.push(`dropdown__menu--${props.menuSize}`);
179
- return result;
180
- });
181
- function toggle() {
182
- if (!props.disabled) {
183
- if (isOpen.value)
184
- close();
185
- else
186
- open();
187
- }
188
- }
189
- function open() {
190
- if (!props.disabled) {
191
- isOpen.value = true;
192
- emit("show");
193
- }
194
- }
195
- function close() {
196
- if (!props.disabled) {
197
- isOpen.value = false;
198
- emit("hide");
199
- }
200
- }
201
- onClickOutside(menu, () => {
202
- if (isOpen.value) {
203
- setTimeout(() => {
204
- close();
205
- });
206
- }
207
- }, { ignore: [target] });
208
- onKeyStroke("Escape", (event) => {
209
- const target2 = event.target;
210
- if (isOpen.value) {
211
- close();
212
- if (typeof target2.blur === "function")
213
- target2.blur();
214
- }
215
- });
216
- onKeyStroke(["ArrowUp"], (event) => {
217
- if (isOpen.value) {
218
- event.preventDefault();
219
- prevFocus();
220
- }
221
- });
222
- onKeyStroke(["ArrowDown"], (event) => {
223
- if (isOpen.value) {
224
- event.preventDefault();
225
- nextFocus();
226
- }
227
- });
228
- onKeyStroke(["Tab"], (event) => {
229
- if (isOpen.value) {
230
- event.preventDefault();
231
- if (event.shiftKey)
232
- prevFocus();
233
- else
234
- nextFocus();
235
- }
236
- });
237
- watchEffect((onCleanup) => {
238
- if (target.value && menu.value) {
239
- const cleanup = autoUpdate(target.value, menu.value, () => {
240
- computePosition(target.value, menu.value, {
241
- strategy: "absolute",
242
- placement: placement.value,
243
- middleware: [
244
- flip(),
245
- shift(),
246
- offset(8),
247
- hide()
248
- ]
249
- }).then(({ x, y, placement: placement2, middlewareData }) => {
250
- if (menu.value) {
251
- menu.value.dataset.popperPlacement = placement2;
252
- menu.value.style.left = `${x || 0}px`;
253
- menu.value.style.top = `${y || 0}px`;
254
- isHidden.value = middlewareData.hide.referenceHidden;
255
- }
256
- });
257
- });
258
- onCleanup(cleanup);
259
- }
260
- }, { flush: "post" });
261
- watch(isOpen, (value) => {
262
- if (!value && wizard.value)
263
- wizard.value.reset();
264
- }, { immediate: true });
265
- provide(DROPDOWN_CONTEXT, {
266
- isOpen,
267
- toggle,
268
- open,
269
- close
270
- });
271
- return {
272
- isOpen,
273
- isHidden,
274
- classNames,
275
- containerSize,
276
- toggle,
277
- open,
278
- close
279
- };
126
+ placement: {
127
+ type : String as PropType<Placement>,
128
+ default: 'bottom-start',
129
+ },
130
+ variant: {
131
+ type : String as PropType<StyleVariant>,
132
+ default: 'solid',
133
+ },
134
+ color: {
135
+ type : String as PropType<ColorVariant>,
136
+ default: 'default',
137
+ },
138
+ size: {
139
+ type : String as PropType<SizeVariant>,
140
+ default: 'md',
141
+ },
142
+ icon: {
143
+ type : Boolean,
144
+ default: false,
145
+ },
146
+ pill: {
147
+ type : Boolean,
148
+ default: false,
149
+ },
150
+ disabled: {
151
+ type : Boolean,
152
+ default: false,
153
+ },
154
+ noCaret: {
155
+ type : Boolean,
156
+ default: false,
157
+ },
158
+ divider: {
159
+ type : Boolean,
160
+ default: false,
161
+ },
162
+ menuClass: {
163
+ type: [
164
+ String,
165
+ Array,
166
+ Object,
167
+ ],
168
+ default: undefined,
169
+ },
170
+ buttonClass: {
171
+ type: [
172
+ String,
173
+ Array,
174
+ Object,
175
+ ],
176
+ default: undefined,
177
+ },
178
+ menuSize: {
179
+ type : String as PropType<MenuSizeVariant>,
180
+ default: 'sm',
181
+ },
182
+ /**
183
+ * For testing only
184
+ */
185
+ noAnimation: {
186
+ type : Boolean,
187
+ default: false,
188
+ },
189
+ })
190
+
191
+ defineEmits<{
192
+ 'show': [],
193
+ 'hide': [],
194
+ 'update:modelValue': [boolean],
195
+ }>()
196
+
197
+ const slots = defineSlots<{
198
+ prepend(): VNode[],
199
+ append(): VNode[],
200
+ }>()
201
+
202
+ const root = ref<HTMLDivElement>()
203
+ const menu = ref<HTMLDivElement>()
204
+ const menuBody = ref<HTMLDivElement>()
205
+ const wizard = ref<DropdownSubitemElement>()
206
+
207
+ const placement = toRef(props, 'placement')
208
+ const isOpen = useVModel(props)
209
+ const isHidden = ref(false)
210
+
211
+ const { next: nextFocus, prev: prevFocus } = useFocus(menuBody)
212
+
213
+ const classNames = computed(() => {
214
+ const result: string[] = ['']
215
+
216
+ if (props.divider)
217
+ result.push('dropdown--divider')
218
+
219
+ return result
220
+ })
221
+
222
+ const containerSize = computed(() => {
223
+ const result: string[] = ['']
224
+
225
+ if (props.menuSize)
226
+ result.push(`dropdown__menu--${props.menuSize}`)
227
+
228
+ if (slots.prepend)
229
+ result.push('dropdown__menu--has-prepend')
230
+
231
+ if (slots.append)
232
+ result.push('dropdown__menu--has-append')
233
+
234
+ return result
235
+ })
236
+
237
+ function toggle () {
238
+ if (!props.disabled) {
239
+ if (isOpen.value)
240
+ close()
241
+ else
242
+ open()
243
+ }
244
+ }
245
+
246
+ function open () {
247
+ if (!props.disabled)
248
+ isOpen.value = true
249
+ }
250
+
251
+ function close () {
252
+ if (!props.disabled)
253
+ isOpen.value = false
254
+ }
255
+
256
+ onClickOutside(menu, () => {
257
+ if (isOpen.value) {
258
+ // Add little delay too prevent race condition with v-model changing
259
+ setTimeout(() => {
260
+ close()
261
+ })
262
+ }
263
+ }, { ignore: [root] })
264
+
265
+ onKeyStroke('Escape', (event) => {
266
+ const target = event.target as HTMLElement
267
+
268
+ if (isOpen.value) {
269
+ close()
270
+
271
+ /* In HappyDOM, blur() is undefined, which shouldn't happen in Real Browser */
272
+ /* c8 ignore next 2 */
273
+ if (typeof target.blur === 'function')
274
+ target.blur()
275
+ }
276
+ })
277
+
278
+ onKeyStroke(['ArrowUp'], (event) => {
279
+ if (isOpen.value) {
280
+ event.preventDefault()
281
+
282
+ prevFocus()
283
+ }
284
+ })
285
+
286
+ onKeyStroke(['ArrowDown'], (event) => {
287
+ if (isOpen.value) {
288
+ event.preventDefault()
289
+
290
+ nextFocus()
291
+ }
292
+ })
293
+
294
+ onKeyStroke(['Tab'], (event) => {
295
+ if (isOpen.value) {
296
+ event.preventDefault()
297
+
298
+ if (event.shiftKey)
299
+ prevFocus()
300
+ else
301
+ nextFocus()
302
+ }
303
+ })
304
+
305
+ watchEffect((onCleanup) => {
306
+ if (root.value && menu.value) {
307
+ const cleanup = autoUpdate(root.value, menu.value, () => {
308
+ computePosition(root.value, menu.value, {
309
+ strategy : 'absolute',
310
+ placement : placement.value,
311
+ middleware: [
312
+ flip(),
313
+ shift(),
314
+ offset(8),
315
+ hide(),
316
+ ],
317
+ }).then(({ x, y, placement, middlewareData }) => {
318
+ if (menu.value) {
319
+ menu.value.dataset.popperPlacement = placement
320
+
321
+ menu.value.style.left = `${x || 0}px`
322
+ menu.value.style.top = `${y || 0}px`
323
+
324
+ isHidden.value = middlewareData.hide.referenceHidden
325
+ }
326
+ })
327
+ })
328
+
329
+ onCleanup(cleanup)
280
330
  }
281
- });
331
+ }, { flush: 'post' })
332
+
333
+ watch(isOpen, (value) => {
334
+ if (!value && wizard.value)
335
+ wizard.value.reset()
336
+ }, { immediate: true })
337
+
338
+ provide(DROPDOWN_CONTEXT, {
339
+ isOpen,
340
+ toggle,
341
+ open,
342
+ close,
343
+ })
344
+
345
+ defineExpose({
346
+ menuBody,
347
+ menu,
348
+ root,
349
+ })
282
350
  </script>
283
351
 
284
352
  <style lang="postcss">
@@ -293,16 +361,29 @@ export default defineComponent({
293
361
  @apply inline-flex;
294
362
 
295
363
  &__menu {
296
- @apply max-h-[var(--p-dropdown-max-height)] border rounded bg-default z-[var(--p-dropdown-z-index)] border-default shadow-xl overflow-x-hidden overflow-y-auto absolute;
364
+ @apply border rounded bg-default z-[var(--p-dropdown-z-index)] border-default shadow-xl absolute flex flex-col overflow-hidden;
297
365
  @apply dark:bg-dark-default dark:border-dark-default;
298
366
 
299
- &__container {
367
+ &__prepend,
368
+ &__append {
369
+ @apply shrink-0;
370
+ }
371
+
372
+ &__body {
373
+ @apply max-h-[var(--p-dropdown-max-height)] overflow-x-hidden overflow-y-auto flex-grow;
374
+ }
375
+
376
+ &:not(&--has-prepend) &__container {
300
377
  > .dropdown__item {
301
378
  &:first-child,
302
379
  .dropdown__subitem:first-child & {
303
380
  @apply rounded-t-sm;
304
381
  }
382
+ }
383
+ }
305
384
 
385
+ &:not(&--has-append) &__container {
386
+ > .dropdown__item {
306
387
  &:last-child,
307
388
  .dropdown__subitem:last-child & {
308
389
  @apply rounded-b-sm;
@@ -70,8 +70,8 @@ export default defineComponent({
70
70
 
71
71
  <style lang="postcss">
72
72
  .dropdown__item {
73
- @apply px-4 py-2 block cursor-pointer text-default w-full select-none text-left;
74
- @apply dark:text-dark-default;
73
+ @apply px-4 py-2 block cursor-pointer text-subtle w-full select-none text-left;
74
+ @apply dark:text-dark-subtle;
75
75
 
76
76
  &:is(a) {
77
77
  @apply no-underline hover:no-underline hover:text-default;
@@ -80,18 +80,18 @@ export default defineComponent({
80
80
 
81
81
  &:hover,
82
82
  &:focus-visible {
83
- @apply bg-default-alpha;
84
- @apply dark:bg-dark-default-alpha;
83
+ @apply bg-default-alpha text-default;
84
+ @apply dark:bg-dark-default-alpha dark:text-dark-default;
85
85
  }
86
86
 
87
87
  &&--active {
88
- @apply bg-default-alpha;
89
- @apply dark:bg-dark-default-alpha cursor-default;
88
+ @apply bg-default-alpha text-default;
89
+ @apply dark:bg-dark-default-alpha cursor-default dark:text-dark-default;
90
90
  }
91
91
 
92
92
  &:disabled {
93
- @apply bg-subtle border-subtle pointer-events-none text-muted;
94
- @apply dark:bg-dark-subtle dark:border-dark-subtle dark:text-dark-muted;
93
+ @apply bg-default/50 border-subtle pointer-events-none text-subtlest;
94
+ @apply dark:bg-dark-default/50 dark:border-dark-subtle dark:text-dark-subtlest;
95
95
  }
96
96
  }
97
97
  </style>
@@ -15,7 +15,7 @@ declare const _default: import("vue-demi").DefineComponent<{
15
15
  back: () => void;
16
16
  reset: () => void;
17
17
  canBack: import("vue-demi").ComputedRef<boolean>;
18
- transition: import("vue-demi").Ref<"none" | "slide-left" | "slide-right">;
18
+ transition: import("vue-demi").Ref<"slide-left" | "slide-right" | "none">;
19
19
  handleOnClick: () => void;
20
20
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "click"[], "click", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
21
21
  text: {
@@ -14,7 +14,7 @@ declare const _default: import("vue-demi").DefineComponent<{
14
14
  default: boolean;
15
15
  };
16
16
  maxlength: {
17
- type: (NumberConstructor | StringConstructor)[];
17
+ type: (StringConstructor | NumberConstructor)[];
18
18
  default: undefined;
19
19
  };
20
20
  accept: {
@@ -39,7 +39,7 @@ declare const _default: import("vue-demi").DefineComponent<{
39
39
  clear: () => void;
40
40
  isDragover: import("vue-demi").Ref<boolean>;
41
41
  isHovered: import("vue-demi").Ref<boolean>;
42
- model: import("vue-demi").Ref<string | string[] | File | File[] | undefined>;
42
+ model: import("vue-demi").Ref<string | string[] | File | File[]>;
43
43
  rawModel: import("vue-demi").Ref<File | File[] | undefined>;
44
44
  onDrop: (event: DragEvent) => void;
45
45
  onChange: (event: Event) => void;
@@ -57,7 +57,7 @@ declare const _default: import("vue-demi").DefineComponent<{
57
57
  default: boolean;
58
58
  };
59
59
  maxlength: {
60
- type: (NumberConstructor | StringConstructor)[];
60
+ type: (StringConstructor | NumberConstructor)[];
61
61
  default: undefined;
62
62
  };
63
63
  accept: {
@@ -77,14 +77,14 @@ declare const _default: import("vue-demi").DefineComponent<{
77
77
  default: boolean;
78
78
  };
79
79
  }>> & {
80
- onCancel?: ((...args: any[]) => any) | undefined;
81
80
  onChange?: ((...args: any[]) => any) | undefined;
82
81
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
82
+ onCancel?: ((...args: any[]) => any) | undefined;
83
83
  }, {
84
84
  modelValue: string | string[] | File | File[];
85
- modelModifiers: ModelModifier;
86
85
  disabled: boolean;
87
86
  readonly: boolean;
87
+ modelModifiers: ModelModifier;
88
88
  multiple: boolean | MultipleType;
89
89
  maxlength: string | number;
90
90
  accept: string;
@@ -92,6 +92,8 @@ export default defineComponent({
92
92
  <style lang="postcss">
93
93
  .filterbar__date {
94
94
  > .dropdown__menu {
95
+ --p-dropdown-max-height: 100%;
96
+
95
97
  @apply min-w-max max-h-min;
96
98
  }
97
99
  }