@privyid/persona 0.16.0 → 0.17.1

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 (94) hide show
  1. package/dist/components/avatar/Avatar.vue.d.ts +3 -3
  2. package/dist/components/button/Button.vue.d.ts +3 -3
  3. package/dist/components/card/Card.vue +8 -5
  4. package/dist/components/card/Card.vue.d.ts +1 -1
  5. package/dist/components/carousel/Carousel.vue +197 -0
  6. package/dist/components/carousel/Carousel.vue.d.ts +111 -0
  7. package/dist/components/carousel/CarouselBody.vue +25 -0
  8. package/dist/components/carousel/CarouselBody.vue.d.ts +2 -0
  9. package/dist/components/carousel/CarouselItem.vue +15 -0
  10. package/dist/components/carousel/CarouselItem.vue.d.ts +2 -0
  11. package/dist/components/carousel/index.d.ts +4 -0
  12. package/dist/components/carousel/index.mjs +1 -0
  13. package/dist/components/chart/ChartSet.vue.d.ts +2 -2
  14. package/dist/components/chart/ChartVal.vue.d.ts +4 -4
  15. package/dist/components/checkbox/Checkbox.vue +2 -2
  16. package/dist/components/checkbox/Checkbox.vue.d.ts +6 -6
  17. package/dist/components/contextual-bar/ContextualBar.vue.d.ts +3 -3
  18. package/dist/components/cropper/Cropper.vue.d.ts +10 -10
  19. package/dist/components/cropper/utils/use-ratio.d.ts +1 -1
  20. package/dist/components/cropper/utils/use-ratio.mjs +2 -2
  21. package/dist/components/datepicker/Datepicker.vue +1 -0
  22. package/dist/components/dropdown/Dropdown.vue +23 -7
  23. package/dist/components/dropdown/Dropdown.vue.d.ts +16 -6
  24. package/dist/components/dropdown/DropdownHeader.vue +35 -0
  25. package/dist/components/dropdown/DropdownHeader.vue.d.ts +2 -0
  26. package/dist/components/dropzone/Dropzone.vue.d.ts +2 -2
  27. package/dist/components/filterbar/pinned/PinnedSelect.vue.d.ts +2 -2
  28. package/dist/components/filterbar/pinned/PinnedToggle.vue.d.ts +6 -6
  29. package/dist/components/form-group/FormGroup.vue +16 -5
  30. package/dist/components/input/Input.vue +4 -3
  31. package/dist/components/input/Input.vue.d.ts +6 -6
  32. package/dist/components/input/index.mjs +1 -1
  33. package/dist/components/input-file/InputFile.vue.d.ts +4 -4
  34. package/dist/components/input-group/InputGroup.vue.d.ts +1 -1
  35. package/dist/components/input-password/InputPassword.vue +5 -5
  36. package/dist/components/input-pin/InputPin.vue +3 -3
  37. package/dist/components/input-pin/InputPin.vue.d.ts +5 -5
  38. package/dist/components/input-range/InputRange.vue.d.ts +7 -7
  39. package/dist/components/label/Label.vue.d.ts +2 -2
  40. package/dist/components/list-group/ListGroup.vue +51 -0
  41. package/dist/components/list-group/ListGroup.vue.d.ts +25 -0
  42. package/dist/components/list-group/ListGroupItem.vue +94 -0
  43. package/dist/components/list-group/ListGroupItem.vue.d.ts +37 -0
  44. package/dist/components/list-group/index.d.ts +1 -0
  45. package/dist/components/list-group/index.mjs +0 -0
  46. package/dist/components/main/Main.vue +44 -44
  47. package/dist/components/modal/Modal.vue.d.ts +3 -3
  48. package/dist/components/nav/Nav.vue.d.ts +1 -1
  49. package/dist/components/nav/NavItem.vue +1 -1
  50. package/dist/components/nav/NavItem.vue.d.ts +2 -2
  51. package/dist/components/nav/NavItemDropdown.vue +6 -1
  52. package/dist/components/nav/NavItemDropdown.vue.d.ts +13 -4
  53. package/dist/components/navbar/Navbar.vue +2 -1
  54. package/dist/components/navbar/Navbar.vue.d.ts +1 -1
  55. package/dist/components/pdf-object/PdfObject.vue.d.ts +3 -3
  56. package/dist/components/pdf-text/PdfText.vue.d.ts +4 -4
  57. package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +7 -7
  58. package/dist/components/progress-indicator/ProgressIndicator.vue +125 -0
  59. package/dist/components/progress-indicator/ProgressIndicator.vue.d.ts +42 -0
  60. package/dist/components/radio/Radio.vue +2 -2
  61. package/dist/components/radio/Radio.vue.d.ts +4 -4
  62. package/dist/components/select/Select.vue +9 -6
  63. package/dist/components/select/Select.vue.d.ts +3 -3
  64. package/dist/components/sidebar/Sidebar.vue.d.ts +1 -1
  65. package/dist/components/sidebar-menu/SidebarMenu.vue +139 -2
  66. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +32 -2
  67. package/dist/components/sidebar-menu/index.d.ts +3 -0
  68. package/dist/components/signature-draw/SignatureDraw.vue +5 -6
  69. package/dist/components/signature-draw/SignatureDraw.vue.d.ts +0 -1
  70. package/dist/components/signature-text/SignatureText.vue.d.ts +6 -6
  71. package/dist/components/steps/StepSlider.vue +6 -8
  72. package/dist/components/steps/StepSlider.vue.d.ts +9 -0
  73. package/dist/components/steps/Steps.vue +28 -9
  74. package/dist/components/steps/Steps.vue.d.ts +30 -2
  75. package/dist/components/steps/index.d.ts +2 -0
  76. package/dist/components/strengthbar/Strengthbar.vue.d.ts +9 -9
  77. package/dist/components/tabs/Tabs.vue.d.ts +1 -1
  78. package/dist/components/text/Text.vue +4 -2
  79. package/dist/components/textarea/Textarea.vue +1 -1
  80. package/dist/components/textarea/Textarea.vue.d.ts +7 -7
  81. package/dist/components/toast/Toast.vue +18 -9
  82. package/dist/components/toast/ToastContainer.vue +116 -31
  83. package/dist/components/toast/ToastContainer.vue.d.ts +18 -3
  84. package/dist/components/toast/ToastRoot.vue +45 -0
  85. package/dist/components/toast/ToastRoot.vue.d.ts +13 -0
  86. package/dist/components/toast/index.d.ts +1 -0
  87. package/dist/components/toast/index.mjs +3 -3
  88. package/dist/components/toggle/Toggle.vue.d.ts +6 -6
  89. package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
  90. package/dist/components/tour/TourDialog.vue.d.ts +2 -2
  91. package/dist/components/truncate/Truncate.vue.d.ts +4 -4
  92. package/dist/module.json +1 -1
  93. package/dist/module.mjs +1 -0
  94. package/package.json +6 -6
@@ -0,0 +1,42 @@
1
+ import { StyleValue, PropType } from 'vue-demi';
2
+ import { DirectionVariant } from '../steps';
3
+ declare const _default: import("vue-demi").DefineComponent<{
4
+ modelValue: {
5
+ type: NumberConstructor;
6
+ default: number;
7
+ };
8
+ direction: {
9
+ type: PropType<DirectionVariant>;
10
+ default: string;
11
+ };
12
+ length: {
13
+ type: (StringConstructor | NumberConstructor)[];
14
+ default: number;
15
+ };
16
+ }, {
17
+ nums: import("vue-demi").ComputedRef<number>;
18
+ setValue: (value: number) => void;
19
+ activeStyle: import("vue-demi").ComputedRef<StyleValue>;
20
+ classNames: import("vue-demi").ComputedRef<string[]>;
21
+ }, 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<{
22
+ modelValue: {
23
+ type: NumberConstructor;
24
+ default: number;
25
+ };
26
+ direction: {
27
+ type: PropType<DirectionVariant>;
28
+ default: string;
29
+ };
30
+ length: {
31
+ type: (StringConstructor | NumberConstructor)[];
32
+ default: number;
33
+ };
34
+ }>> & {
35
+ onChange?: ((...args: any[]) => any) | undefined;
36
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
37
+ }, {
38
+ length: string | number;
39
+ modelValue: number;
40
+ direction: DirectionVariant;
41
+ }, {}>;
42
+ export default _default;
@@ -288,8 +288,8 @@ export default defineComponent({
288
288
 
289
289
  &:hover,
290
290
  &:focus-visible {
291
- @apply bg-subtle;
292
- @apply dark:bg-dark-subtle;
291
+ @apply bg-default-alpha;
292
+ @apply dark:bg-dark-default-alpha;
293
293
  }
294
294
  }
295
295
  }
@@ -10,11 +10,11 @@ declare const _default: import("vue-demi").DefineComponent<{
10
10
  default: string;
11
11
  };
12
12
  modelValue: {
13
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
13
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
14
14
  default: boolean;
15
15
  };
16
16
  value: {
17
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
17
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
18
18
  default: boolean;
19
19
  };
20
20
  checked: {
@@ -43,11 +43,11 @@ declare const _default: import("vue-demi").DefineComponent<{
43
43
  default: string;
44
44
  };
45
45
  modelValue: {
46
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
46
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
47
47
  default: boolean;
48
48
  };
49
49
  value: {
50
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
50
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
51
51
  default: boolean;
52
52
  };
53
53
  checked: {
@@ -7,7 +7,7 @@
7
7
  :disabled="disabled"
8
8
  :class="classNames">
9
9
  <template #activator>
10
- <Input
10
+ <p-input
11
11
  v-model="search"
12
12
  data-testid="select-search"
13
13
  class="select__search"
@@ -15,8 +15,11 @@
15
15
  :placeholder="placeholder"
16
16
  :disabled="disabled"
17
17
  :readonly="readonly"
18
- @focus="onFocus" />
19
- <IconArrow class="select__caret" />
18
+ @focus="onFocus">
19
+ <template #append>
20
+ <IconArrow class="select__caret" />
21
+ </template>
22
+ </p-input>
20
23
  </template>
21
24
 
22
25
  <template v-if="!isLoading && items.length === 0">
@@ -69,7 +72,7 @@
69
72
  <script>
70
73
  import Dropdown from "../dropdown/Dropdown.vue";
71
74
  import DropdownItem from "../dropdown/DropdownItem.vue";
72
- import Input from "../input/Input.vue";
75
+ import pInput from "../input/Input.vue";
73
76
  import IconArrow from "@carbon/icons-vue/lib/chevron--down/16";
74
77
  import IconCheck from "@carbon/icons-vue/lib/checkmark--filled/16";
75
78
  import IconLoading from "../spinner/SpinnerRing.vue";
@@ -89,7 +92,7 @@ export default defineComponent({
89
92
  components: {
90
93
  Dropdown,
91
94
  DropdownItem,
92
- Input,
95
+ pInput,
93
96
  IconArrow,
94
97
  IconCheck,
95
98
  IconLoading
@@ -262,7 +265,7 @@ export default defineComponent({
262
265
  }
263
266
 
264
267
  &__caret {
265
- @apply absolute right-3 top-0 bottom-0 my-auto transition-transform duration-150 text-subtle pointer-events-none;
268
+ @apply transition-transform duration-150 text-subtle pointer-events-none;
266
269
  @apply dark:text-dark-subtle;
267
270
  }
268
271
 
@@ -4,7 +4,7 @@ import { Adapter } from './adapter/adapter';
4
4
  import { SizeVariant } from '../button';
5
5
  declare const _default: import("vue-demi").DefineComponent<{
6
6
  modelValue: {
7
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
7
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
8
8
  default: string;
9
9
  };
10
10
  selected: {
@@ -62,7 +62,7 @@ declare const _default: import("vue-demi").DefineComponent<{
62
62
  isSelected: (item: SelectItem) => boolean;
63
63
  }, 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<{
64
64
  modelValue: {
65
- type: (NumberConstructor | StringConstructor | BooleanConstructor | ObjectConstructor | DateConstructor | ArrayConstructor)[];
65
+ type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor | NumberConstructor)[];
66
66
  default: string;
67
67
  };
68
68
  selected: {
@@ -114,8 +114,8 @@ declare const _default: import("vue-demi").DefineComponent<{
114
114
  "onUpdate:selected"?: ((...args: any[]) => any) | undefined;
115
115
  onUserInput?: ((...args: any[]) => any) | undefined;
116
116
  }, {
117
- size: SizeVariant;
118
117
  error: boolean;
118
+ size: SizeVariant;
119
119
  modelValue: string | number | boolean | Record<string, any> | unknown[] | Date;
120
120
  disabled: boolean;
121
121
  readonly: boolean;
@@ -69,9 +69,9 @@ declare const _default: import("vue-demi").DefineComponent<{
69
69
  }>> & {
70
70
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
71
71
  }, {
72
- fixed: boolean;
73
72
  variant: StyleVariant;
74
73
  type: TypeVariant;
74
+ fixed: boolean;
75
75
  modelValue: boolean;
76
76
  align: AlignVariant;
77
77
  toggleable: ToggleableVariant;
@@ -18,8 +18,116 @@
18
18
  :bottom="menu.bottom"
19
19
  :condensed="menu.condensed"
20
20
  :collapsible="menu.collapsible">
21
+ <!-- IF: Menu has maxlength -->
22
+ <template
23
+ v-if="menu.maxLength">
24
+ <template
25
+ v-for="(item, i) in menu.items?.slice(0, menu.maxLength)"
26
+ :key="i">
27
+ <NavSubItem
28
+ v-if="item.submenu"
29
+ data-testid="sidebar-submenu"
30
+ :text="item.label"
31
+ :collapsible="item.collapsible">
32
+ <template #icon>
33
+ <template v-if="item.icon && typeof item.icon === 'string'">
34
+ <img
35
+ :src="item.icon"
36
+ alt="icon-menu">
37
+ </template>
38
+ <template v-else-if="item.icon">
39
+ <component :is="item.icon" />
40
+ </template>
41
+ </template>
42
+ <SidebarNav :condensed="menu.condensed">
43
+ <NavItem
44
+ v-for="(submenu, x) in item.submenu"
45
+ :key="x"
46
+ :href="submenu.url">
47
+ {{ submenu.label }}
48
+ </NavItem>
49
+ </SidebarNav>
50
+ </NavSubItem>
51
+ <NavItem
52
+ v-else
53
+ :href="item.url"
54
+ :class="{ 'nav__item--no-label' : !item.label, 'nav__item--no-icon' : !item.icon }">
55
+ <template
56
+ #icon>
57
+ <template v-if="item.icon && typeof item.icon === 'string'">
58
+ <img
59
+ :src="item.icon"
60
+ alt="icon-menu">
61
+ </template>
62
+ <template v-else-if="item.icon">
63
+ <component :is="item.icon" />
64
+ </template>
65
+ </template>
66
+ {{ item.label }}
67
+ </NavItem>
68
+ </template>
69
+ <NavItem
70
+ v-if="menu.maxLength"
71
+ data-testid="sidebar-toggle"
72
+ @click.prevent="toggle">
73
+ <template #icon>
74
+ <IconLess v-if="expand" />
75
+ <IconMore v-else />
76
+ </template>
77
+ {{ expand ? showLessText : showMoreText }}
78
+ </NavItem>
79
+ <div v-show="expand">
80
+ <template
81
+ v-for="(item, i) in menu.items?.slice(menu.maxLength, menu.items.length)"
82
+ :key="i">
83
+ <NavSubItem
84
+ v-if="item.submenu"
85
+ :text="item.label"
86
+ :collapsible="item.collapsible">
87
+ <template #icon>
88
+ <template v-if="item.icon && typeof item.icon === 'string'">
89
+ <img
90
+ :src="item.icon"
91
+ alt="icon-menu">
92
+ </template>
93
+ <template v-else-if="item.icon">
94
+ <component :is="item.icon" />
95
+ </template>
96
+ </template>
97
+ <SidebarNav :condensed="menu.condensed">
98
+ <NavItem
99
+ v-for="(submenu, x) in item.submenu"
100
+ :key="x"
101
+ :href="submenu.url">
102
+ {{ submenu.label }}
103
+ </NavItem>
104
+ </SidebarNav>
105
+ </NavSubItem>
106
+ <NavItem
107
+ v-else
108
+ :href="item.url"
109
+ :class="{ 'nav__item--no-label' : !item.label, 'nav__item--no-icon' : !item.icon }">
110
+ <template
111
+ #icon>
112
+ <template v-if="item.icon && typeof item.icon === 'string'">
113
+ <img
114
+ :src="item.icon"
115
+ alt="icon-menu">
116
+ </template>
117
+ <template v-else-if="item.icon">
118
+ <component :is="item.icon" />
119
+ </template>
120
+ </template>
121
+ {{ item.label }}
122
+ </NavItem>
123
+ </template>
124
+ </div>
125
+ </template>
126
+ <!-- ENDIF -->
127
+
21
128
  <template
22
129
  v-for="(item, i) in menu.items"
130
+ v-else
23
131
  :key="i">
24
132
  <NavSubItem
25
133
  v-if="item.submenu"
@@ -72,17 +180,24 @@
72
180
  </template>
73
181
 
74
182
  <script>
75
- import { defineComponent } from "vue-demi";
183
+ import {
184
+ defineComponent,
185
+ ref
186
+ } from "vue-demi";
76
187
  import Sidebar from "../sidebar/Sidebar.vue";
77
188
  import SidebarNav from "../sidebar/SidebarNav.vue";
78
189
  import NavItem from "../nav/NavItem.vue";
79
190
  import NavSubItem from "../nav/NavSubItem.vue";
191
+ import IconMore from "@privyid/persona-icon/vue/chevron-down/16.vue";
192
+ import IconLess from "@privyid/persona-icon/vue/chevron-up/16.vue";
80
193
  export default defineComponent({
81
194
  components: {
82
195
  Sidebar,
83
196
  SidebarNav,
84
197
  NavItem,
85
- NavSubItem
198
+ NavSubItem,
199
+ IconMore,
200
+ IconLess
86
201
  },
87
202
  props: {
88
203
  menus: {
@@ -108,7 +223,29 @@ export default defineComponent({
108
223
  toggleable: {
109
224
  type: String,
110
225
  default: void 0
226
+ },
227
+ length: {
228
+ type: [Number, String],
229
+ default: void 0
230
+ },
231
+ showMoreText: {
232
+ type: String,
233
+ default: "More"
234
+ },
235
+ showLessText: {
236
+ type: String,
237
+ default: "Less"
238
+ }
239
+ },
240
+ setup() {
241
+ const expand = ref(false);
242
+ function toggle() {
243
+ expand.value = !expand.value;
111
244
  }
245
+ return {
246
+ expand,
247
+ toggle
248
+ };
112
249
  }
113
250
  });
114
251
  </script>
@@ -28,7 +28,22 @@ declare const _default: import("vue-demi").DefineComponent<{
28
28
  type: PropType<ToggleableVariant>;
29
29
  default: undefined;
30
30
  };
31
- }, unknown, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
31
+ length: {
32
+ type: (StringConstructor | NumberConstructor)[];
33
+ default: undefined;
34
+ };
35
+ showMoreText: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ showLessText: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ };
43
+ }, {
44
+ expand: import("vue-demi").Ref<boolean>;
45
+ toggle: () => void;
46
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
32
47
  menus: {
33
48
  type: PropType<Menu[]>;
34
49
  default: () => never[];
@@ -53,12 +68,27 @@ declare const _default: import("vue-demi").DefineComponent<{
53
68
  type: PropType<ToggleableVariant>;
54
69
  default: undefined;
55
70
  };
71
+ length: {
72
+ type: (StringConstructor | NumberConstructor)[];
73
+ default: undefined;
74
+ };
75
+ showMoreText: {
76
+ type: StringConstructor;
77
+ default: string;
78
+ };
79
+ showLessText: {
80
+ type: StringConstructor;
81
+ default: string;
82
+ };
56
83
  }>>, {
57
- fixed: boolean;
84
+ length: string | number;
58
85
  type: TypeVariant;
86
+ fixed: boolean;
59
87
  align: AlignVariant;
60
88
  toggleable: ToggleableVariant;
61
89
  sticky: boolean;
62
90
  menus: Menu[];
91
+ showMoreText: string;
92
+ showLessText: string;
63
93
  }, {}>;
64
94
  export default _default;
@@ -4,12 +4,14 @@ export interface SubMenu {
4
4
  name: string;
5
5
  label: string;
6
6
  url: string;
7
+ access?: string | string[];
7
8
  }
8
9
  export interface MenuItem {
9
10
  name: string;
10
11
  label?: string;
11
12
  url: string;
12
13
  icon?: string | Component;
14
+ access?: string | string[];
13
15
  collapsible?: boolean;
14
16
  submenu?: SubMenu[];
15
17
  }
@@ -22,5 +24,6 @@ export interface Menu {
22
24
  condensed?: boolean;
23
25
  items?: MenuItem[];
24
26
  align?: AlignVariant;
27
+ maxLength?: number;
25
28
  }
26
29
  export declare function defineMenu(menus: Menu[]): Menu[];
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <component
3
3
  :is="view"
4
- v-model="model"
4
+ :model-value="modelValue"
5
5
  :model-modifiers="modelModifiers"
6
6
  :width="width"
7
7
  :height="height"
@@ -9,7 +9,8 @@
9
9
  :placeholder="placeholder"
10
10
  :reset-label="resetLabel"
11
11
  :open-draw-label="openDrawLabel"
12
- :close-draw-label="closeDrawLabel" />
12
+ :close-draw-label="closeDrawLabel"
13
+ @update:model-value="$emit('update:modelValue', $event)" />
13
14
  </template>
14
15
 
15
16
  <script>
@@ -18,7 +19,6 @@ import {
18
19
  computed,
19
20
  defineComponent
20
21
  } from "vue-demi";
21
- import { useVModel } from "../input";
22
22
  import SignatureDrawMobile from "./SignatureDrawMobile.vue";
23
23
  import SignatureDrawDesktop from "./SignatureDrawDesktop.vue";
24
24
  export default defineComponent({
@@ -65,13 +65,12 @@ export default defineComponent({
65
65
  event: "update:modelValue"
66
66
  },
67
67
  emits: ["update:modelValue"],
68
- setup(props) {
69
- const model = useVModel(props);
68
+ setup() {
70
69
  const isDesktop = useMediaQuery("(min-width: 768px)");
71
70
  const view = computed(() => {
72
71
  return isDesktop.value ? SignatureDrawDesktop : SignatureDrawMobile;
73
72
  });
74
- return { view, model };
73
+ return { view };
75
74
  }
76
75
  });
77
76
  </script>
@@ -42,7 +42,6 @@ declare const _default: import("vue-demi").DefineComponent<{
42
42
  };
43
43
  }, {
44
44
  view: import("vue-demi").ComputedRef<any>;
45
- model: import("vue-demi").Ref<string | File>;
46
45
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
47
46
  modelValue: {
48
47
  type: (StringConstructor | {
@@ -25,11 +25,11 @@ declare const _default: import("vue-demi").DefineComponent<{
25
25
  default: string;
26
26
  };
27
27
  maxwords: {
28
- type: (NumberConstructor | StringConstructor)[];
28
+ type: (StringConstructor | NumberConstructor)[];
29
29
  default: number;
30
30
  };
31
31
  maxlength: {
32
- type: (NumberConstructor | StringConstructor)[];
32
+ type: (StringConstructor | NumberConstructor)[];
33
33
  default: number;
34
34
  };
35
35
  font: {
@@ -68,11 +68,11 @@ declare const _default: import("vue-demi").DefineComponent<{
68
68
  default: string;
69
69
  };
70
70
  maxwords: {
71
- type: (NumberConstructor | StringConstructor)[];
71
+ type: (StringConstructor | NumberConstructor)[];
72
72
  default: number;
73
73
  };
74
74
  maxlength: {
75
- type: (NumberConstructor | StringConstructor)[];
75
+ type: (StringConstructor | NumberConstructor)[];
76
76
  default: number;
77
77
  };
78
78
  font: {
@@ -84,13 +84,13 @@ declare const _default: import("vue-demi").DefineComponent<{
84
84
  default: string;
85
85
  };
86
86
  }>>, {
87
- color: string;
88
87
  text: string;
88
+ color: string;
89
89
  modelValue: string | File;
90
90
  modelModifiers: ModelModifier;
91
- font: string;
92
91
  width: number;
93
92
  height: number;
93
+ font: string;
94
94
  maxlength: string | number;
95
95
  maxwords: string | number;
96
96
  }, {}>;
@@ -3,9 +3,7 @@ import {
3
3
  defineComponent,
4
4
  h,
5
5
  KeepAlive,
6
- ref,
7
- Transition,
8
- watch
6
+ Transition
9
7
  } from "vue-demi";
10
8
  import { findAllChildren } from "../utils/vnode";
11
9
  export default defineComponent({
@@ -17,20 +15,20 @@ export default defineComponent({
17
15
  keepAlive: {
18
16
  type: Boolean,
19
17
  default: false
18
+ },
19
+ transition: {
20
+ type: String,
21
+ default: "slide-left"
20
22
  }
21
23
  },
22
24
  setup(props, { slots }) {
23
- const transition = ref("slide-left");
24
- watch(() => props.active, (value, old) => {
25
- transition.value = value > old ? "slide-left" : "slide-right";
26
- });
27
25
  return () => {
28
26
  const step = findAllChildren(slots.default(), "Step").at(props.active);
29
27
  const body = () => {
30
28
  return props.keepAlive ? h(KeepAlive, () => h(step, { key: props.active })) : h(step, { key: props.active });
31
29
  };
32
30
  return h(Transition, {
33
- name: transition.value,
31
+ name: props.transition,
34
32
  mode: "out-in"
35
33
  }, body);
36
34
  };
@@ -7,6 +7,10 @@ declare const _default: import("vue-demi").DefineComponent<{
7
7
  type: BooleanConstructor;
8
8
  default: boolean;
9
9
  };
10
+ transition: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
10
14
  }, () => import("vue-demi").VNode<import("vue-demi").RendererNode, import("vue-demi").RendererElement, {
11
15
  [key: string]: any;
12
16
  }>, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
@@ -18,8 +22,13 @@ declare const _default: import("vue-demi").DefineComponent<{
18
22
  type: BooleanConstructor;
19
23
  default: boolean;
20
24
  };
25
+ transition: {
26
+ type: StringConstructor;
27
+ default: string;
28
+ };
21
29
  }>>, {
22
30
  active: number;
31
+ transition: string;
23
32
  keepAlive: boolean;
24
33
  }, {}>;
25
34
  export default _default;
@@ -3,8 +3,9 @@
3
3
  class="steps"
4
4
  data-testid="steps">
5
5
  <StepSlider
6
- :active="model - 1"
7
- :keep-alive="keepAlive">
6
+ :active="step - 1"
7
+ :keep-alive="keepAlive"
8
+ :transition="transition">
8
9
  <slot />
9
10
  </StepSlider>
10
11
  </div>
@@ -38,6 +39,18 @@ export default defineComponent({
38
39
  type: Boolean,
39
40
  default: false
40
41
  },
42
+ direction: {
43
+ type: String,
44
+ default: "horizontal"
45
+ },
46
+ loop: {
47
+ type: Boolean,
48
+ default: false
49
+ },
50
+ animation: {
51
+ type: String,
52
+ default: "slide"
53
+ },
41
54
  onBeforePrev: {
42
55
  type: Function,
43
56
  default: () => true
@@ -60,15 +73,16 @@ export default defineComponent({
60
73
  const onNextHooks = ref([props.onBeforeNext]);
61
74
  const onPrevHooks = ref([props.onBeforePrev]);
62
75
  const model = useVModel(props);
76
+ const transition = ref(props.direction === "vertical" ? "slide-top" : "slide-left");
63
77
  const total = computed(() => {
64
78
  return findAllChildren(slots.default(), "Step").length;
65
79
  });
66
80
  const step = useClamp(model, 1, total);
67
81
  const canNext = computed(() => {
68
- return model.value <= total.value;
82
+ return props.loop || model.value <= total.value;
69
83
  });
70
84
  const canPrev = computed(() => {
71
- return model.value > 1;
85
+ return props.loop || model.value > 1;
72
86
  });
73
87
  async function next() {
74
88
  if (canNext.value)
@@ -81,10 +95,12 @@ export default defineComponent({
81
95
  async function toStep(to) {
82
96
  const from = model.value;
83
97
  const hooks = to > from ? onNextHooks.value : onPrevHooks.value;
84
- if (await runAllHooks(hooks, to, from)) {
85
- if (to <= total.value)
86
- step.value = to;
87
- else
98
+ const toIndex = props.loop ? ((to - 1) % total.value + total.value) % total.value + 1 : to;
99
+ if (await runAllHooks(hooks, toIndex, from)) {
100
+ if (toIndex <= total.value) {
101
+ transition.value = to > from ? props.direction === "vertical" ? `${props.animation}-top` : `${props.animation}-left` : props.direction === "vertical" ? `${props.animation}-bottom` : `${props.animation}-right`;
102
+ step.value = toIndex;
103
+ } else
88
104
  await props.onFinished();
89
105
  }
90
106
  }
@@ -99,7 +115,10 @@ export default defineComponent({
99
115
  onPrevHooks,
100
116
  onNextHooks
101
117
  });
102
- return { model };
118
+ return {
119
+ transition,
120
+ step
121
+ };
103
122
  }
104
123
  });
105
124
  </script>