@privyid/persona 0.17.1 → 0.18.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.
- package/dist/components/avatar/utils/create-image.mjs +1 -1
- package/dist/components/banner/Banner.vue +3 -3
- package/dist/components/breadcrumbs/BreadcrumbItem.vue +1 -1
- package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +1 -1
- package/dist/components/button/Button.vue +24 -11
- package/dist/components/button/Button.vue.d.ts +19 -9
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/calendar/Calendar.vue +8 -4
- package/dist/components/camera/Camera.vue +3 -3
- package/dist/components/card/Card.vue +9 -3
- package/dist/components/card/Card.vue.d.ts +1 -1
- package/dist/components/carousel/Carousel.vue.d.ts +6 -6
- package/dist/components/chart/ChartSet.vue.d.ts +2 -2
- package/dist/components/chart/ChartVal.vue.d.ts +4 -4
- package/dist/components/checkbox/Checkbox.vue.d.ts +6 -6
- package/dist/components/checkbox/index.mjs +1 -1
- package/dist/components/collapse/Collapse.vue +12 -1
- package/dist/components/contextual-bar/ContextualBar.vue +1 -1
- package/dist/components/contextual-bar/ContextualBar.vue.d.ts +2 -2
- package/dist/components/cropper/Cropper.vue +4 -4
- package/dist/components/cropper/Cropper.vue.d.ts +8 -8
- package/dist/components/datepicker/Datepicker.vue +19 -4
- package/dist/components/datepicker/Datepicker.vue.d.ts +10 -0
- package/dist/components/dropdown/Dropdown.vue +1 -1
- package/dist/components/dropdown/Dropdown.vue.d.ts +4 -4
- package/dist/components/dropdown/DropdownItem.vue +10 -0
- package/dist/components/dropdown/DropdownItem.vue.d.ts +9 -0
- package/dist/components/dropdown/utils/use-focus.d.ts +1 -1
- package/dist/components/dropdown/utils/use-focus.mjs +2 -2
- package/dist/components/dropdown-subitem/DropdownSubitem.vue +2 -2
- package/dist/components/dropzone/Dropzone.vue.d.ts +2 -2
- package/dist/components/filterbar/pinned/PinnedDate.vue +4 -7
- package/dist/components/filterbar/pinned/PinnedMultiselect.vue +4 -7
- package/dist/components/filterbar/pinned/PinnedSelect.vue +5 -7
- package/dist/components/filterbar/pinned/PinnedSelect.vue.d.ts +2 -2
- package/dist/components/filterbar/pinned/PinnedToggle.vue.d.ts +6 -6
- package/dist/components/form-group/FormGroup.vue +1 -1
- package/dist/components/global/router.d.ts +2 -1
- package/dist/components/input/Input.vue +22 -4
- package/dist/components/input/Input.vue.d.ts +22 -2
- package/dist/components/input/index.d.ts +1 -0
- package/dist/components/input/index.mjs +5 -0
- package/dist/components/input/utils/accept.d.ts +26 -0
- package/dist/components/input/utils/accept.mjs +81 -0
- package/dist/components/input-file/InputFile.vue.d.ts +3 -3
- package/dist/components/input-password/InputPassword.vue +4 -1
- package/dist/components/input-password/InputPassword.vue.d.ts +7 -3
- package/dist/components/input-pin/InputPin.vue +45 -30
- package/dist/components/input-pin/InputPin.vue.d.ts +26 -7
- package/dist/components/input-pin/index.d.ts +6 -0
- package/dist/components/input-pin/index.mjs +3 -0
- package/dist/components/input-range/InputRange.vue +5 -5
- package/dist/components/input-range/InputRange.vue.d.ts +6 -6
- package/dist/components/label/Label.vue +1 -1
- package/dist/components/label/Label.vue.d.ts +1 -1
- package/dist/components/list-group/ListGroup.vue +25 -0
- package/dist/components/list-group/ListGroup.vue.d.ts +18 -0
- package/dist/components/modal/Modal.vue +5 -2
- package/dist/components/modal/Modal.vue.d.ts +2 -2
- package/dist/components/nav/NavItem.vue +19 -6
- package/dist/components/nav/NavItem.vue.d.ts +6 -3
- package/dist/components/nav/NavItemDropdown.vue.d.ts +1 -1
- package/dist/components/navbar/Navbar.vue.d.ts +1 -1
- package/dist/components/navbar/NavbarToggle.vue +2 -2
- package/dist/components/pagination/Pagination.vue +2 -2
- package/dist/components/pagination/Pagination.vue.d.ts +1 -1
- package/dist/components/pdf-text/PdfText.vue.d.ts +1 -1
- package/dist/components/pdf-viewer/PdfNavigation.vue +4 -4
- package/dist/components/pdf-viewer/PdfViewer.vue +1 -2
- package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +4 -4
- package/dist/components/progress-indicator/ProgressIndicator.vue.d.ts +2 -2
- package/dist/components/radio/Radio.vue +1 -1
- package/dist/components/radio/Radio.vue.d.ts +4 -4
- package/dist/components/select/Select.vue +54 -27
- package/dist/components/select/Select.vue.d.ts +23 -5
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.mjs +4 -0
- package/dist/components/sidebar/Sidebar.vue.d.ts +1 -1
- package/dist/components/sidebar/SidebarNav.vue +2 -0
- package/dist/components/sidebar-menu/SidebarMenu.vue +68 -48
- package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +3 -3
- package/dist/components/sidebar-menu/index.d.ts +95 -2
- package/dist/components/sidebar-menu/index.mjs +41 -0
- package/dist/components/signature-draw/SignatureDrawMobile.vue +3 -7
- package/dist/components/signature-text/SignatureText.vue.d.ts +5 -5
- package/dist/components/spinner/Spinner.vue +28 -12
- package/dist/components/spinner/SpinnerRing.vue +14 -7
- package/dist/components/spinner/SpinnerRinggo.vue +62 -0
- package/dist/components/spinner/SpinnerRinggo.vue.d.ts +6 -0
- package/dist/components/steps/Step.vue +3 -0
- package/dist/components/steps/Step.vue.d.ts +1 -0
- package/dist/components/steps/Steps.vue +1 -0
- package/dist/components/steps/index.d.ts +2 -0
- package/dist/components/steps/index.mjs +1 -0
- package/dist/components/strengthbar/Strengthbar.vue.d.ts +9 -9
- package/dist/components/table/Table.vue +2 -2
- package/dist/components/tabs/Tabs.vue +4 -2
- package/dist/components/textarea/Textarea.vue +10 -1
- package/dist/components/textarea/Textarea.vue.d.ts +16 -4
- package/dist/components/toast/Toast.vue +5 -5
- package/dist/components/toast/ToastContainer.vue +6 -6
- package/dist/components/toggle/Toggle.vue +1 -1
- package/dist/components/toggle/Toggle.vue.d.ts +6 -6
- package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
- package/dist/components/tooltip/TooltipContainer.vue +18 -3
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/index.mjs +29 -4
- package/dist/components/tooltip/utils/parse-bindings.d.ts +2 -1
- package/dist/components/tooltip/utils/parse-bindings.mjs +2 -0
- package/dist/components/tour/TourDialog.vue +1 -1
- package/dist/components/tour/TourDialog.vue.d.ts +1 -1
- package/dist/components/truncate/Truncate.vue +9 -1
- package/dist/components/truncate/Truncate.vue.d.ts +11 -2
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.mjs +7 -1
- package/dist/module.json +1 -1
- package/package.json +14 -14
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { PropType } from 'vue-demi';
|
|
2
|
+
import { SizeVariant } from '../button';
|
|
2
3
|
declare const _default: import("vue-demi").DefineComponent<{
|
|
3
4
|
modelValue: {
|
|
4
5
|
type: PropType<Date | [Date, Date]>;
|
|
5
6
|
default: undefined;
|
|
6
7
|
};
|
|
8
|
+
size: {
|
|
9
|
+
type: PropType<SizeVariant>;
|
|
10
|
+
default: string;
|
|
11
|
+
};
|
|
7
12
|
start: {
|
|
8
13
|
type: DateConstructor;
|
|
9
14
|
default: undefined;
|
|
@@ -68,6 +73,10 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
68
73
|
type: PropType<Date | [Date, Date]>;
|
|
69
74
|
default: undefined;
|
|
70
75
|
};
|
|
76
|
+
size: {
|
|
77
|
+
type: PropType<SizeVariant>;
|
|
78
|
+
default: string;
|
|
79
|
+
};
|
|
71
80
|
start: {
|
|
72
81
|
type: DateConstructor;
|
|
73
82
|
default: undefined;
|
|
@@ -127,6 +136,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
127
136
|
"onUpdate:end"?: ((...args: any[]) => any) | undefined;
|
|
128
137
|
}, {
|
|
129
138
|
error: boolean;
|
|
139
|
+
size: SizeVariant;
|
|
130
140
|
start: Date;
|
|
131
141
|
end: Date;
|
|
132
142
|
min: Date;
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
hide
|
|
76
76
|
} from "@floating-ui/dom";
|
|
77
77
|
import { useVModel } from "../input";
|
|
78
|
-
import IconArrow from "@
|
|
78
|
+
import IconArrow from "@privyid/persona-icon/vue/chevron-down/16.vue";
|
|
79
79
|
import { DROPDOWN_CONTEXT } from ".";
|
|
80
80
|
export default defineComponent({
|
|
81
81
|
components: {
|
|
@@ -67,7 +67,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
67
67
|
toggle: () => void;
|
|
68
68
|
open: () => void;
|
|
69
69
|
close: () => void;
|
|
70
|
-
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("
|
|
70
|
+
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("show" | "update:modelValue" | "hide")[], "show" | "update:modelValue" | "hide", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
|
|
71
71
|
modelValue: {
|
|
72
72
|
type: BooleanConstructor;
|
|
73
73
|
default: boolean;
|
|
@@ -131,10 +131,10 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
131
131
|
}, {
|
|
132
132
|
variant: StyleVariant;
|
|
133
133
|
size: SizeVariant;
|
|
134
|
-
text: string;
|
|
135
|
-
pill: boolean;
|
|
136
|
-
color: ColorVariant;
|
|
137
134
|
icon: boolean;
|
|
135
|
+
color: ColorVariant;
|
|
136
|
+
pill: boolean;
|
|
137
|
+
text: string;
|
|
138
138
|
modelValue: boolean;
|
|
139
139
|
disabled: boolean;
|
|
140
140
|
placement: Placement;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
class="dropdown__item"
|
|
6
6
|
:class="classNames"
|
|
7
7
|
:href="href"
|
|
8
|
+
:disabled="disabled"
|
|
8
9
|
@click="handleOnClick">
|
|
9
10
|
<slot>
|
|
10
11
|
{{ text }}
|
|
@@ -32,6 +33,10 @@ export default defineComponent({
|
|
|
32
33
|
active: {
|
|
33
34
|
type: Boolean,
|
|
34
35
|
default: false
|
|
36
|
+
},
|
|
37
|
+
disabled: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
default: false
|
|
35
40
|
}
|
|
36
41
|
},
|
|
37
42
|
emits: ["click"],
|
|
@@ -83,5 +88,10 @@ export default defineComponent({
|
|
|
83
88
|
@apply bg-default-alpha;
|
|
84
89
|
@apply dark:bg-dark-default-alpha cursor-default;
|
|
85
90
|
}
|
|
91
|
+
|
|
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;
|
|
95
|
+
}
|
|
86
96
|
}
|
|
87
97
|
</style>
|
|
@@ -12,6 +12,10 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
12
12
|
type: BooleanConstructor;
|
|
13
13
|
default: boolean;
|
|
14
14
|
};
|
|
15
|
+
disabled: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
15
19
|
}, {
|
|
16
20
|
handleOnClick: (event: Event) => void;
|
|
17
21
|
classNames: import("vue-demi").ComputedRef<string[]>;
|
|
@@ -29,11 +33,16 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
29
33
|
type: BooleanConstructor;
|
|
30
34
|
default: boolean;
|
|
31
35
|
};
|
|
36
|
+
disabled: {
|
|
37
|
+
type: BooleanConstructor;
|
|
38
|
+
default: boolean;
|
|
39
|
+
};
|
|
32
40
|
}>> & {
|
|
33
41
|
onClick?: ((...args: any[]) => any) | undefined;
|
|
34
42
|
}, {
|
|
35
43
|
href: string;
|
|
36
44
|
active: boolean;
|
|
37
45
|
text: string;
|
|
46
|
+
disabled: boolean;
|
|
38
47
|
}, {}>;
|
|
39
48
|
export default _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { clamp } from "lodash-es";
|
|
2
2
|
import { focusable } from "tabbable";
|
|
3
|
-
export function useFocus(target,
|
|
3
|
+
export function useFocus(target, loop = true) {
|
|
4
4
|
function travel(step) {
|
|
5
5
|
const elements = focusable(target.value);
|
|
6
6
|
const index = elements.indexOf(document.activeElement);
|
|
7
|
-
const nextIndex =
|
|
7
|
+
const nextIndex = loop ? (index + step) % elements.length : clamp(index + step, 0, elements.length - 1);
|
|
8
8
|
const targetFocus = elements.at(nextIndex);
|
|
9
9
|
if (targetFocus !== void 0)
|
|
10
10
|
targetFocus.focus();
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
|
|
51
51
|
<script>
|
|
52
52
|
import DropdownItem from "../dropdown/DropdownItem.vue";
|
|
53
|
-
import IconNext from "@
|
|
54
|
-
import IconBack from "@
|
|
53
|
+
import IconNext from "@privyid/persona-icon/vue/chevron-right/16.vue";
|
|
54
|
+
import IconBack from "@privyid/persona-icon/vue/arrow-left/16.vue";
|
|
55
55
|
import {
|
|
56
56
|
defineComponent,
|
|
57
57
|
inject,
|
|
@@ -14,7 +14,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
14
14
|
default: boolean;
|
|
15
15
|
};
|
|
16
16
|
maxlength: {
|
|
17
|
-
type: (
|
|
17
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
18
18
|
default: undefined;
|
|
19
19
|
};
|
|
20
20
|
accept: {
|
|
@@ -57,7 +57,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
57
57
|
default: boolean;
|
|
58
58
|
};
|
|
59
59
|
maxlength: {
|
|
60
|
-
type: (
|
|
60
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
61
61
|
default: undefined;
|
|
62
62
|
};
|
|
63
63
|
accept: {
|
|
@@ -9,12 +9,9 @@
|
|
|
9
9
|
<template #button-content>
|
|
10
10
|
{{ value ? value : schema.label }}
|
|
11
11
|
</template>
|
|
12
|
-
<
|
|
13
|
-
class="px-4 pt-4 pb-1"
|
|
14
|
-
weight="medium"
|
|
15
|
-
overline>
|
|
12
|
+
<DropdownHeader>
|
|
16
13
|
{{ schema.label }}
|
|
17
|
-
</
|
|
14
|
+
</DropdownHeader>
|
|
18
15
|
|
|
19
16
|
<Calendar
|
|
20
17
|
v-model="model"
|
|
@@ -31,15 +28,15 @@ import {
|
|
|
31
28
|
defineComponent,
|
|
32
29
|
ref
|
|
33
30
|
} from "vue-demi";
|
|
34
|
-
import Subheading from "../../subheading/Subheading.vue";
|
|
35
31
|
import Calendar from "../../calendar/Calendar.vue";
|
|
36
32
|
import Dropdown from "../../dropdown/Dropdown.vue";
|
|
33
|
+
import DropdownHeader from "../../dropdown/DropdownHeader.vue";
|
|
37
34
|
import { useVModel } from "../../input";
|
|
38
35
|
import { isDate, format as formatDate } from "date-fns";
|
|
39
36
|
export default defineComponent({
|
|
40
37
|
components: {
|
|
41
|
-
Subheading,
|
|
42
38
|
Dropdown,
|
|
39
|
+
DropdownHeader,
|
|
43
40
|
Calendar
|
|
44
41
|
},
|
|
45
42
|
props: {
|
|
@@ -22,12 +22,9 @@
|
|
|
22
22
|
</template>
|
|
23
23
|
</template>
|
|
24
24
|
|
|
25
|
-
<
|
|
26
|
-
class="px-4 pt-4 pb-1"
|
|
27
|
-
weight="medium"
|
|
28
|
-
overline>
|
|
25
|
+
<DropdownHeader>
|
|
29
26
|
{{ schema.label }}
|
|
30
|
-
</
|
|
27
|
+
</DropdownHeader>
|
|
31
28
|
<template
|
|
32
29
|
v-for="(item, i) in items"
|
|
33
30
|
:key="i">
|
|
@@ -48,8 +45,8 @@ import {
|
|
|
48
45
|
ref
|
|
49
46
|
} from "vue-demi";
|
|
50
47
|
import Badge from "../../badge/Badge.vue";
|
|
51
|
-
import Subheading from "../../subheading/Subheading.vue";
|
|
52
48
|
import Dropdown from "../../dropdown/Dropdown.vue";
|
|
49
|
+
import DropdownHeader from "../../dropdown/DropdownHeader.vue";
|
|
53
50
|
import Checkbox from "../../checkbox/Checkbox.vue";
|
|
54
51
|
import { useOptionsProp } from "../../select/adapter/adapter";
|
|
55
52
|
import { useVModel } from "../../input";
|
|
@@ -57,8 +54,8 @@ import { isEqual } from "../../utils/value";
|
|
|
57
54
|
export default defineComponent({
|
|
58
55
|
components: {
|
|
59
56
|
Badge,
|
|
60
|
-
Subheading,
|
|
61
57
|
Dropdown,
|
|
58
|
+
DropdownHeader,
|
|
62
59
|
Checkbox
|
|
63
60
|
},
|
|
64
61
|
props: {
|
|
@@ -10,12 +10,10 @@
|
|
|
10
10
|
<template #button-content>
|
|
11
11
|
{{ selected ? selected.text : schema.label }}
|
|
12
12
|
</template>
|
|
13
|
-
<
|
|
14
|
-
class="px-4 pt-4 pb-1"
|
|
15
|
-
weight="medium"
|
|
16
|
-
overline>
|
|
13
|
+
<DropdownHeader>
|
|
17
14
|
{{ schema.label }}
|
|
18
|
-
</
|
|
15
|
+
</DropdownHeader>
|
|
16
|
+
|
|
19
17
|
<template
|
|
20
18
|
v-for="(item, i) in items"
|
|
21
19
|
:key="i">
|
|
@@ -36,16 +34,16 @@ import {
|
|
|
36
34
|
defineComponent,
|
|
37
35
|
ref
|
|
38
36
|
} from "vue-demi";
|
|
39
|
-
import Subheading from "../../subheading/Subheading.vue";
|
|
40
37
|
import Dropdown from "../../dropdown/Dropdown.vue";
|
|
38
|
+
import DropdownHeader from "../../dropdown/DropdownHeader.vue";
|
|
41
39
|
import Radio from "../../radio/Radio.vue";
|
|
42
40
|
import { useOptionsProp } from "../../select/adapter/adapter";
|
|
43
41
|
import { useVModel } from "../../input";
|
|
44
42
|
import { isEqual } from "../../utils/value";
|
|
45
43
|
export default defineComponent({
|
|
46
44
|
components: {
|
|
47
|
-
Subheading,
|
|
48
45
|
Dropdown,
|
|
46
|
+
DropdownHeader,
|
|
49
47
|
Radio
|
|
50
48
|
},
|
|
51
49
|
props: {
|
|
@@ -11,7 +11,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
11
11
|
default: () => never[];
|
|
12
12
|
};
|
|
13
13
|
modelValue: {
|
|
14
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
14
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
15
15
|
default: undefined;
|
|
16
16
|
};
|
|
17
17
|
}, {
|
|
@@ -30,7 +30,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
30
30
|
default: () => never[];
|
|
31
31
|
};
|
|
32
32
|
modelValue: {
|
|
33
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
33
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
34
34
|
default: undefined;
|
|
35
35
|
};
|
|
36
36
|
}>> & {
|
|
@@ -6,15 +6,15 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
6
6
|
required: true;
|
|
7
7
|
};
|
|
8
8
|
modelValue: {
|
|
9
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
9
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
10
10
|
default: boolean;
|
|
11
11
|
};
|
|
12
12
|
value: {
|
|
13
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
13
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
14
14
|
default: boolean;
|
|
15
15
|
};
|
|
16
16
|
uncheckedValue: {
|
|
17
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
17
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
18
18
|
default: boolean;
|
|
19
19
|
};
|
|
20
20
|
checked: {
|
|
@@ -30,15 +30,15 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
30
30
|
required: true;
|
|
31
31
|
};
|
|
32
32
|
modelValue: {
|
|
33
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
33
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
34
34
|
default: boolean;
|
|
35
35
|
};
|
|
36
36
|
value: {
|
|
37
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
37
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
38
38
|
default: boolean;
|
|
39
39
|
};
|
|
40
40
|
uncheckedValue: {
|
|
41
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
41
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
42
42
|
default: boolean;
|
|
43
43
|
};
|
|
44
44
|
checked: {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
</template>
|
|
43
43
|
|
|
44
44
|
<script>
|
|
45
|
-
import IconInfo from "@
|
|
45
|
+
import IconInfo from "@privyid/persona-icon/vue/information-circle-solid/20.vue";
|
|
46
46
|
import pCaption from "../caption/Caption.vue";
|
|
47
47
|
import { pTooltip } from "../tooltip";
|
|
48
48
|
import { computed, defineComponent } from "vue-demi";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RouteLocationRaw } from 'vue-router';
|
|
1
2
|
/**
|
|
2
3
|
* Universal router which compatible in many enviroment
|
|
3
4
|
*/
|
|
@@ -5,7 +6,7 @@ interface RouterCompat {
|
|
|
5
6
|
/**
|
|
6
7
|
* redirect to URL
|
|
7
8
|
*/
|
|
8
|
-
toURL: (url:
|
|
9
|
+
toURL: (url: RouteLocationRaw) => unknown | Promise<unknown>;
|
|
9
10
|
/**
|
|
10
11
|
* Get current URL
|
|
11
12
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="input"
|
|
4
|
+
:class="containerClass"
|
|
4
5
|
data-testid="input-container">
|
|
5
6
|
<span
|
|
6
7
|
v-if="$slots.prepend"
|
|
@@ -14,7 +15,8 @@
|
|
|
14
15
|
:disabled="disabled"
|
|
15
16
|
:readonly="readonly"
|
|
16
17
|
:class="classNames"
|
|
17
|
-
v-bind="$attrs"
|
|
18
|
+
v-bind="$attrs"
|
|
19
|
+
@beforeinput="checkOnInput(accept, $event)">
|
|
18
20
|
<IconClear
|
|
19
21
|
v-show="(clearable && model)"
|
|
20
22
|
class="input__clear"
|
|
@@ -35,8 +37,11 @@ import {
|
|
|
35
37
|
inject
|
|
36
38
|
} from "vue-demi";
|
|
37
39
|
import { useVModel } from ".";
|
|
38
|
-
import IconClear from "@
|
|
40
|
+
import IconClear from "@privyid/persona-icon/vue/close-circle-solid/20.vue";
|
|
39
41
|
import { INPUTGROUP_SETTING } from "../input-group";
|
|
42
|
+
import {
|
|
43
|
+
checkOnInput
|
|
44
|
+
} from "./utils/accept";
|
|
40
45
|
export default defineComponent({
|
|
41
46
|
components: { IconClear },
|
|
42
47
|
inheritAttrs: false,
|
|
@@ -64,6 +69,18 @@ export default defineComponent({
|
|
|
64
69
|
clearable: {
|
|
65
70
|
type: Boolean,
|
|
66
71
|
default: false
|
|
72
|
+
},
|
|
73
|
+
containerClass: {
|
|
74
|
+
type: [
|
|
75
|
+
String,
|
|
76
|
+
Array,
|
|
77
|
+
Object
|
|
78
|
+
],
|
|
79
|
+
default: void 0
|
|
80
|
+
},
|
|
81
|
+
accept: {
|
|
82
|
+
type: String,
|
|
83
|
+
default: void 0
|
|
67
84
|
}
|
|
68
85
|
},
|
|
69
86
|
models: {
|
|
@@ -102,7 +119,8 @@ export default defineComponent({
|
|
|
102
119
|
return {
|
|
103
120
|
classNames,
|
|
104
121
|
model,
|
|
105
|
-
clear
|
|
122
|
+
clear,
|
|
123
|
+
checkOnInput
|
|
106
124
|
};
|
|
107
125
|
}
|
|
108
126
|
});
|
|
@@ -155,7 +173,7 @@ export default defineComponent({
|
|
|
155
173
|
}
|
|
156
174
|
|
|
157
175
|
.input__clear {
|
|
158
|
-
@apply text-default/30 cursor-pointer hover:text-danger z-
|
|
176
|
+
@apply text-default/30 cursor-pointer hover:text-danger z-[2];
|
|
159
177
|
@apply dark:text-dark-default/30 hover:dark:text-dark-danger;
|
|
160
178
|
}
|
|
161
179
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { PropType } from 'vue-demi';
|
|
2
2
|
import { SizeVariant } from '../button';
|
|
3
|
+
import { AcceptVariant, checkOnInput } from './utils/accept';
|
|
3
4
|
declare const _default: import("vue-demi").DefineComponent<{
|
|
4
5
|
modelValue: {
|
|
5
|
-
type: (
|
|
6
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
6
7
|
default: undefined;
|
|
7
8
|
};
|
|
8
9
|
size: {
|
|
@@ -25,13 +26,22 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
25
26
|
type: BooleanConstructor;
|
|
26
27
|
default: boolean;
|
|
27
28
|
};
|
|
29
|
+
containerClass: {
|
|
30
|
+
type: (StringConstructor | ArrayConstructor | ObjectConstructor)[];
|
|
31
|
+
default: undefined;
|
|
32
|
+
};
|
|
33
|
+
accept: {
|
|
34
|
+
type: PropType<AcceptVariant>;
|
|
35
|
+
default: undefined;
|
|
36
|
+
};
|
|
28
37
|
}, {
|
|
29
38
|
classNames: import("vue-demi").ComputedRef<string[]>;
|
|
30
39
|
model: import("vue-demi").Ref<string | number | undefined>;
|
|
31
40
|
clear: (event: MouseEvent) => void;
|
|
41
|
+
checkOnInput: typeof checkOnInput;
|
|
32
42
|
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("update:modelValue" | "clear")[], "update:modelValue" | "clear", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
|
|
33
43
|
modelValue: {
|
|
34
|
-
type: (
|
|
44
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
35
45
|
default: undefined;
|
|
36
46
|
};
|
|
37
47
|
size: {
|
|
@@ -54,6 +64,14 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
54
64
|
type: BooleanConstructor;
|
|
55
65
|
default: boolean;
|
|
56
66
|
};
|
|
67
|
+
containerClass: {
|
|
68
|
+
type: (StringConstructor | ArrayConstructor | ObjectConstructor)[];
|
|
69
|
+
default: undefined;
|
|
70
|
+
};
|
|
71
|
+
accept: {
|
|
72
|
+
type: PropType<AcceptVariant>;
|
|
73
|
+
default: undefined;
|
|
74
|
+
};
|
|
57
75
|
}>> & {
|
|
58
76
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
59
77
|
onClear?: ((...args: any[]) => any) | undefined;
|
|
@@ -63,6 +81,8 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
63
81
|
modelValue: string | number;
|
|
64
82
|
disabled: boolean;
|
|
65
83
|
readonly: boolean;
|
|
84
|
+
accept: AcceptVariant;
|
|
66
85
|
clearable: boolean;
|
|
86
|
+
containerClass: string | Record<string, any> | unknown[];
|
|
67
87
|
}, {}>;
|
|
68
88
|
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LiteralUnion } from 'type-fest';
|
|
2
|
+
export declare const AcceptPresets: {
|
|
3
|
+
readonly num: string;
|
|
4
|
+
readonly numeric: string;
|
|
5
|
+
readonly digit: string;
|
|
6
|
+
readonly alpha: string;
|
|
7
|
+
readonly 'alpha-num': string;
|
|
8
|
+
readonly 'alpha-num-space': string;
|
|
9
|
+
readonly 'alpha-num-space-symbol': string;
|
|
10
|
+
readonly 'alpha-numeric': string;
|
|
11
|
+
readonly 'alpha-numeric-space': string;
|
|
12
|
+
readonly 'alpha-numeric-space-symbol': string;
|
|
13
|
+
readonly 'alpha-space': string;
|
|
14
|
+
readonly 'alpha-space-symbol': string;
|
|
15
|
+
readonly 'num-space': string;
|
|
16
|
+
readonly 'num-space-symbol': string;
|
|
17
|
+
readonly 'numeric-space': string;
|
|
18
|
+
readonly 'numeric-space-symbol': string;
|
|
19
|
+
readonly 'non-numeric': string;
|
|
20
|
+
readonly 'non-alpha': string;
|
|
21
|
+
readonly text: string;
|
|
22
|
+
};
|
|
23
|
+
export type AcceptVariant = LiteralUnion<keyof typeof AcceptPresets, string>;
|
|
24
|
+
export declare function isAccepted(accept: AcceptVariant | undefined, text: string): boolean;
|
|
25
|
+
export declare function removeUnaccepted(accept: AcceptVariant | undefined, text: string): string;
|
|
26
|
+
export declare function checkOnInput(accept: AcceptVariant | undefined, event: Event): void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const ALPHA = "A-Za-z";
|
|
2
|
+
const NUMERIC = "\\d";
|
|
3
|
+
const SPACE = "\\s";
|
|
4
|
+
const SYMBOL = "!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-";
|
|
5
|
+
const REGEX_ALPHA = `${ALPHA}`;
|
|
6
|
+
const REGEX_NUMERIC = `${NUMERIC}`;
|
|
7
|
+
const REGEX_ALPHA_NUMERIC = `${ALPHA}${NUMERIC}`;
|
|
8
|
+
const REGEX_ALPHA_NUMERIC_SPACE = `${ALPHA}${NUMERIC}${SPACE}`;
|
|
9
|
+
const REGEX_ALPHA_NUMERIC_SPACE_SYMBOL = `${ALPHA}${NUMERIC}${SPACE}${SYMBOL}`;
|
|
10
|
+
const REGEX_ALPHA_SPACE = `${ALPHA}${SPACE}`;
|
|
11
|
+
const REGEX_ALPHA_SPACE_SYMBOL = `${ALPHA}${SPACE}${SYMBOL}`;
|
|
12
|
+
const REGEX_NUMERIC_SPACE = `${NUMERIC}${SPACE}`;
|
|
13
|
+
const REGEX_NUMERIC_SPACE_SYMBOL = `${NUMERIC}${SPACE}${SYMBOL}`;
|
|
14
|
+
export const AcceptPresets = {
|
|
15
|
+
"num": REGEX_NUMERIC,
|
|
16
|
+
"numeric": REGEX_NUMERIC,
|
|
17
|
+
"digit": REGEX_NUMERIC,
|
|
18
|
+
"alpha": REGEX_ALPHA,
|
|
19
|
+
"alpha-num": REGEX_ALPHA_NUMERIC,
|
|
20
|
+
"alpha-num-space": REGEX_ALPHA_NUMERIC_SPACE,
|
|
21
|
+
"alpha-num-space-symbol": REGEX_ALPHA_NUMERIC_SPACE_SYMBOL,
|
|
22
|
+
"alpha-numeric": REGEX_ALPHA_NUMERIC,
|
|
23
|
+
"alpha-numeric-space": REGEX_ALPHA_NUMERIC_SPACE,
|
|
24
|
+
"alpha-numeric-space-symbol": REGEX_ALPHA_NUMERIC_SPACE_SYMBOL,
|
|
25
|
+
"alpha-space": REGEX_ALPHA_SPACE,
|
|
26
|
+
"alpha-space-symbol": REGEX_ALPHA_SPACE_SYMBOL,
|
|
27
|
+
"num-space": REGEX_NUMERIC_SPACE,
|
|
28
|
+
"num-space-symbol": REGEX_NUMERIC_SPACE_SYMBOL,
|
|
29
|
+
"numeric-space": REGEX_NUMERIC_SPACE,
|
|
30
|
+
"numeric-space-symbol": REGEX_NUMERIC_SPACE_SYMBOL,
|
|
31
|
+
"non-numeric": REGEX_ALPHA_SPACE_SYMBOL,
|
|
32
|
+
"non-alpha": REGEX_NUMERIC_SPACE_SYMBOL,
|
|
33
|
+
"text": REGEX_ALPHA_NUMERIC_SPACE_SYMBOL
|
|
34
|
+
};
|
|
35
|
+
export function isAccepted(accept, text) {
|
|
36
|
+
if (!accept)
|
|
37
|
+
return true;
|
|
38
|
+
try {
|
|
39
|
+
const regexStr = AcceptPresets[accept.toLowerCase()] ?? accept;
|
|
40
|
+
const regex = new RegExp(`^[${regexStr}]+$`);
|
|
41
|
+
return regex.test(text);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
if (import.meta.env.DEV)
|
|
44
|
+
console.error(error);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function removeUnaccepted(accept, text) {
|
|
49
|
+
if (!accept)
|
|
50
|
+
return text;
|
|
51
|
+
try {
|
|
52
|
+
const regexStr = AcceptPresets[accept.toLowerCase()] ?? accept;
|
|
53
|
+
const regex = new RegExp(`[^${regexStr}]+`, "g");
|
|
54
|
+
return text.replaceAll(regex, "");
|
|
55
|
+
} catch (error) {
|
|
56
|
+
if (import.meta.env.DEV)
|
|
57
|
+
console.error(error);
|
|
58
|
+
return text;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function checkOnInput(accept, event) {
|
|
62
|
+
if (event.data && !isAccepted(accept, event.data)) {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
if (event.inputType === "insertFromPaste") {
|
|
65
|
+
const target = event.target;
|
|
66
|
+
const oldValue = target.value;
|
|
67
|
+
const value = removeUnaccepted(accept, event.data);
|
|
68
|
+
const ss = target.selectionStart;
|
|
69
|
+
const se = target.selectionEnd;
|
|
70
|
+
const nextValue = `${oldValue.slice(0, ss)}${value}${oldValue.slice(se)}`;
|
|
71
|
+
try {
|
|
72
|
+
target.value = nextValue;
|
|
73
|
+
target.dispatchEvent(new InputEvent("input"));
|
|
74
|
+
target.setSelectionRange(value.length + ss, value.length + ss);
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (import.meta.env.DEV)
|
|
77
|
+
console.error(error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -15,7 +15,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
15
15
|
default: boolean;
|
|
16
16
|
};
|
|
17
17
|
maxlength: {
|
|
18
|
-
type: (
|
|
18
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
19
19
|
default: undefined;
|
|
20
20
|
};
|
|
21
21
|
accept: {
|
|
@@ -73,7 +73,7 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
73
73
|
default: boolean;
|
|
74
74
|
};
|
|
75
75
|
maxlength: {
|
|
76
|
-
type: (
|
|
76
|
+
type: (NumberConstructor | StringConstructor)[];
|
|
77
77
|
default: undefined;
|
|
78
78
|
};
|
|
79
79
|
accept: {
|
|
@@ -124,8 +124,8 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
124
124
|
disabled: boolean;
|
|
125
125
|
readonly: boolean;
|
|
126
126
|
modelModifiers: ModelModifier;
|
|
127
|
-
multiple: boolean | MultipleType;
|
|
128
127
|
placeholder: string;
|
|
128
|
+
multiple: boolean | MultipleType;
|
|
129
129
|
maxlength: string | number;
|
|
130
130
|
accept: string;
|
|
131
131
|
clearOnCancel: boolean;
|
|
@@ -19,7 +19,10 @@
|
|
|
19
19
|
import pInput from "../input/Input.vue";
|
|
20
20
|
import IconShow from "@privyid/persona-icon/vue/view/20.vue";
|
|
21
21
|
import IconHide from "@privyid/persona-icon/vue/view-off/20.vue";
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
ref,
|
|
24
|
+
defineComponent
|
|
25
|
+
} from "vue-demi";
|
|
23
26
|
export default defineComponent({
|
|
24
27
|
components: {
|
|
25
28
|
pInput,
|