@privyid/persona 0.17.1 → 0.19.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/Breadcrumb.vue +5 -1
- package/dist/components/breadcrumbs/Breadcrumb.vue.d.ts +1 -1
- package/dist/components/breadcrumbs/BreadcrumbItem.vue +17 -9
- package/dist/components/breadcrumbs/BreadcrumbItem.vue.d.ts +3 -0
- package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +15 -7
- package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue.d.ts +3 -0
- package/dist/components/button/Button.vue +15 -9
- package/dist/components/button/Button.vue.d.ts +16 -6
- 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 +13 -20
- 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 +2 -2
- 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/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/Nav.vue +27 -9
- package/dist/components/nav/NavCollapse.vue +78 -0
- package/dist/components/nav/NavCollapse.vue.d.ts +26 -0
- package/dist/components/nav/NavItem.vue +9 -3
- package/dist/components/nav/NavItem.vue.d.ts +13 -3
- package/dist/components/nav/NavItemDropdown.vue.d.ts +2 -2
- package/dist/components/nav/NavSubItem.vue +35 -19
- package/dist/components/nav/NavSubItem.vue.d.ts +2 -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 +68 -27
- package/dist/components/select/Select.vue.d.ts +34 -6
- 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 +35 -27
- package/dist/components/sidebar/SidebarNav.vue.d.ts +2 -1
- package/dist/components/sidebar-menu/SidebarMenu.vue +82 -71
- package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +5 -8
- package/dist/components/sidebar-menu/index.d.ts +115 -4
- package/dist/components/sidebar-menu/index.mjs +41 -0
- package/dist/components/signature-draw/SignatureDraw.vue +44 -15
- package/dist/components/signature-draw/SignatureDraw.vue.d.ts +3 -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 -13
- package/dist/components/spinner/SpinnerRing.vue +14 -8
- 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 +19 -17
|
@@ -15,9 +15,21 @@
|
|
|
15
15
|
:placeholder="placeholder"
|
|
16
16
|
:disabled="disabled"
|
|
17
17
|
:readonly="readonly"
|
|
18
|
+
:clearable="clearable"
|
|
19
|
+
@clear.prevent="onClear"
|
|
18
20
|
@focus="onFocus">
|
|
19
|
-
<template
|
|
20
|
-
|
|
21
|
+
<template
|
|
22
|
+
v-if="!noCaret"
|
|
23
|
+
#append>
|
|
24
|
+
<slot
|
|
25
|
+
name="caret"
|
|
26
|
+
:is-open="isOpen"
|
|
27
|
+
:toggle="toggleOpen">
|
|
28
|
+
<IconArrow
|
|
29
|
+
class="select__caret"
|
|
30
|
+
data-testid="select-caret-icon"
|
|
31
|
+
@click="toggleOpen" />
|
|
32
|
+
</slot>
|
|
21
33
|
</template>
|
|
22
34
|
</p-input>
|
|
23
35
|
</template>
|
|
@@ -33,11 +45,17 @@
|
|
|
33
45
|
</template>
|
|
34
46
|
|
|
35
47
|
<template v-else>
|
|
48
|
+
<DropdownHeader
|
|
49
|
+
v-if="sectionLabel"
|
|
50
|
+
data-testid="select-label">
|
|
51
|
+
{{ sectionLabel }}
|
|
52
|
+
</DropdownHeader>
|
|
36
53
|
<DropdownItem
|
|
37
54
|
v-for="(item, i) in items"
|
|
38
55
|
:key="i"
|
|
39
56
|
data-testid="select-item"
|
|
40
57
|
:class="{ selected: isSelected(item) }"
|
|
58
|
+
:disabled="Boolean(item.disabled)"
|
|
41
59
|
@click="select(item)">
|
|
42
60
|
<div class="select__option">
|
|
43
61
|
<div class="select__option-text">
|
|
@@ -62,7 +80,7 @@
|
|
|
62
80
|
width="14"
|
|
63
81
|
height="14" />
|
|
64
82
|
<slot name="loading">
|
|
65
|
-
{{ loadingText }}
|
|
83
|
+
<span>{{ loadingText }}</span>
|
|
66
84
|
</slot>
|
|
67
85
|
</div>
|
|
68
86
|
</template>
|
|
@@ -72,9 +90,10 @@
|
|
|
72
90
|
<script>
|
|
73
91
|
import Dropdown from "../dropdown/Dropdown.vue";
|
|
74
92
|
import DropdownItem from "../dropdown/DropdownItem.vue";
|
|
93
|
+
import DropdownHeader from "../dropdown/DropdownHeader.vue";
|
|
75
94
|
import pInput from "../input/Input.vue";
|
|
76
|
-
import IconArrow from "@
|
|
77
|
-
import IconCheck from "@
|
|
95
|
+
import IconArrow from "@privyid/persona-icon/vue/chevron-down/20.vue";
|
|
96
|
+
import IconCheck from "@privyid/persona-icon/vue/checkmark-circle-solid/20.vue";
|
|
78
97
|
import IconLoading from "../spinner/SpinnerRing.vue";
|
|
79
98
|
import {
|
|
80
99
|
computed,
|
|
@@ -83,15 +102,19 @@ import {
|
|
|
83
102
|
ref,
|
|
84
103
|
watch
|
|
85
104
|
} from "vue-demi";
|
|
105
|
+
import { findSelected } from ".";
|
|
86
106
|
import BasicAdapter from "./adapter/basic-adapter";
|
|
87
107
|
import useLoading from "../overlay/utils/use-loading";
|
|
88
108
|
import { isEqual } from "../utils/value";
|
|
89
109
|
import { tryOnMounted } from "@vueuse/shared";
|
|
90
|
-
import {
|
|
110
|
+
import {
|
|
111
|
+
onStartTyping
|
|
112
|
+
} from "@vueuse/core";
|
|
91
113
|
export default defineComponent({
|
|
92
114
|
components: {
|
|
93
115
|
Dropdown,
|
|
94
116
|
DropdownItem,
|
|
117
|
+
DropdownHeader,
|
|
95
118
|
pInput,
|
|
96
119
|
IconArrow,
|
|
97
120
|
IconCheck,
|
|
@@ -107,7 +130,7 @@ export default defineComponent({
|
|
|
107
130
|
Object,
|
|
108
131
|
Date
|
|
109
132
|
],
|
|
110
|
-
default:
|
|
133
|
+
default: void 0
|
|
111
134
|
},
|
|
112
135
|
selected: {
|
|
113
136
|
type: Object,
|
|
@@ -150,9 +173,21 @@ export default defineComponent({
|
|
|
150
173
|
type: Boolean,
|
|
151
174
|
default: false
|
|
152
175
|
},
|
|
176
|
+
clearable: {
|
|
177
|
+
type: Boolean,
|
|
178
|
+
default: false
|
|
179
|
+
},
|
|
153
180
|
size: {
|
|
154
181
|
type: String,
|
|
155
182
|
default: "md"
|
|
183
|
+
},
|
|
184
|
+
sectionLabel: {
|
|
185
|
+
type: String,
|
|
186
|
+
default: void 0
|
|
187
|
+
},
|
|
188
|
+
noCaret: {
|
|
189
|
+
type: Boolean,
|
|
190
|
+
default: false
|
|
156
191
|
}
|
|
157
192
|
},
|
|
158
193
|
models: {
|
|
@@ -178,21 +213,11 @@ export default defineComponent({
|
|
|
178
213
|
isLoading
|
|
179
214
|
};
|
|
180
215
|
const items = props.adapter.setup(context);
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
};
|
|
187
|
-
},
|
|
188
|
-
set(selected) {
|
|
189
|
-
emit("change", selected);
|
|
190
|
-
emit("update:modelValue", selected.value);
|
|
191
|
-
emit("update:selected", selected);
|
|
192
|
-
if (isOpen.value)
|
|
193
|
-
emit("userInput", selected);
|
|
194
|
-
}
|
|
195
|
-
});
|
|
216
|
+
const localModel = ref(findSelected(items.value, props.modelValue));
|
|
217
|
+
const toggleOpen = () => {
|
|
218
|
+
if (!props.disabled && !props.readonly)
|
|
219
|
+
isOpen.value = !isOpen.value;
|
|
220
|
+
};
|
|
196
221
|
const classNames = computed(() => {
|
|
197
222
|
const result = [];
|
|
198
223
|
if (isOpen.value)
|
|
@@ -207,22 +232,36 @@ export default defineComponent({
|
|
|
207
232
|
});
|
|
208
233
|
const search = computed({
|
|
209
234
|
get() {
|
|
210
|
-
return isOpen.value ? keyword.value :
|
|
235
|
+
return isOpen.value ? keyword.value : localModel.value?.text;
|
|
211
236
|
},
|
|
212
237
|
set(value) {
|
|
213
238
|
if (value !== search.value)
|
|
214
239
|
keyword.value = value;
|
|
215
240
|
}
|
|
216
241
|
});
|
|
242
|
+
watch(() => props.modelValue, (value) => {
|
|
243
|
+
localModel.value = findSelected(items.value, value);
|
|
244
|
+
});
|
|
217
245
|
function select(item) {
|
|
218
|
-
|
|
246
|
+
localModel.value = item;
|
|
247
|
+
emit("change", item);
|
|
248
|
+
emit("update:selected", item);
|
|
249
|
+
emit("update:modelValue", item?.value);
|
|
250
|
+
if (isOpen.value)
|
|
251
|
+
emit("userInput", item);
|
|
219
252
|
}
|
|
220
253
|
function onFocus() {
|
|
221
254
|
if (!props.disabled && !props.readonly)
|
|
222
255
|
isOpen.value = true;
|
|
223
256
|
}
|
|
257
|
+
function onClear() {
|
|
258
|
+
if (isOpen.value)
|
|
259
|
+
keyword.value = "";
|
|
260
|
+
else
|
|
261
|
+
select();
|
|
262
|
+
}
|
|
224
263
|
function isSelected(item) {
|
|
225
|
-
return isEqual(item.value,
|
|
264
|
+
return isEqual(item.value, localModel.value?.value);
|
|
226
265
|
}
|
|
227
266
|
watch(isOpen, (value) => {
|
|
228
267
|
if (!value)
|
|
@@ -239,13 +278,14 @@ export default defineComponent({
|
|
|
239
278
|
});
|
|
240
279
|
return {
|
|
241
280
|
classNames,
|
|
242
|
-
model,
|
|
243
281
|
isOpen,
|
|
244
282
|
isLoading,
|
|
245
283
|
search,
|
|
246
284
|
items,
|
|
285
|
+
toggleOpen,
|
|
247
286
|
select,
|
|
248
287
|
onFocus,
|
|
288
|
+
onClear,
|
|
249
289
|
isSelected
|
|
250
290
|
};
|
|
251
291
|
}
|
|
@@ -265,8 +305,9 @@ export default defineComponent({
|
|
|
265
305
|
}
|
|
266
306
|
|
|
267
307
|
&__caret {
|
|
268
|
-
@apply transition-transform duration-150 text-subtle
|
|
308
|
+
@apply transition-transform duration-150 text-subtle;
|
|
269
309
|
@apply dark:text-dark-subtle;
|
|
310
|
+
@apply cursor-pointer;
|
|
270
311
|
}
|
|
271
312
|
|
|
272
313
|
&__option {
|
|
@@ -4,8 +4,8 @@ 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: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
8
|
-
default:
|
|
7
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
8
|
+
default: undefined;
|
|
9
9
|
};
|
|
10
10
|
selected: {
|
|
11
11
|
type: PropType<SelectItem>;
|
|
@@ -46,24 +46,37 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
46
46
|
type: BooleanConstructor;
|
|
47
47
|
default: boolean;
|
|
48
48
|
};
|
|
49
|
+
clearable: {
|
|
50
|
+
type: BooleanConstructor;
|
|
51
|
+
default: boolean;
|
|
52
|
+
};
|
|
49
53
|
size: {
|
|
50
54
|
type: PropType<SizeVariant>;
|
|
51
55
|
default: string;
|
|
52
56
|
};
|
|
57
|
+
sectionLabel: {
|
|
58
|
+
type: StringConstructor;
|
|
59
|
+
default: undefined;
|
|
60
|
+
};
|
|
61
|
+
noCaret: {
|
|
62
|
+
type: BooleanConstructor;
|
|
63
|
+
default: boolean;
|
|
64
|
+
};
|
|
53
65
|
}, {
|
|
54
66
|
classNames: import("vue-demi").ComputedRef<string[]>;
|
|
55
|
-
model: import("vue-demi").WritableComputedRef<SelectItem>;
|
|
56
67
|
isOpen: import("vue-demi").Ref<boolean>;
|
|
57
68
|
isLoading: import("vue-demi").WritableComputedRef<boolean>;
|
|
58
69
|
search: import("vue-demi").WritableComputedRef<string>;
|
|
59
70
|
items: import("vue-demi").Ref<SelectItem[]>;
|
|
60
|
-
|
|
71
|
+
toggleOpen: () => void;
|
|
72
|
+
select: (item?: SelectItem) => void;
|
|
61
73
|
onFocus: () => void;
|
|
74
|
+
onClear: () => void;
|
|
62
75
|
isSelected: (item: SelectItem) => boolean;
|
|
63
76
|
}, 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
77
|
modelValue: {
|
|
65
|
-
type: (StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor
|
|
66
|
-
default:
|
|
78
|
+
type: (NumberConstructor | StringConstructor | ArrayConstructor | ObjectConstructor | BooleanConstructor | DateConstructor)[];
|
|
79
|
+
default: undefined;
|
|
67
80
|
};
|
|
68
81
|
selected: {
|
|
69
82
|
type: PropType<SelectItem>;
|
|
@@ -104,10 +117,22 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
104
117
|
type: BooleanConstructor;
|
|
105
118
|
default: boolean;
|
|
106
119
|
};
|
|
120
|
+
clearable: {
|
|
121
|
+
type: BooleanConstructor;
|
|
122
|
+
default: boolean;
|
|
123
|
+
};
|
|
107
124
|
size: {
|
|
108
125
|
type: PropType<SizeVariant>;
|
|
109
126
|
default: string;
|
|
110
127
|
};
|
|
128
|
+
sectionLabel: {
|
|
129
|
+
type: StringConstructor;
|
|
130
|
+
default: undefined;
|
|
131
|
+
};
|
|
132
|
+
noCaret: {
|
|
133
|
+
type: BooleanConstructor;
|
|
134
|
+
default: boolean;
|
|
135
|
+
};
|
|
111
136
|
}>> & {
|
|
112
137
|
onChange?: ((...args: any[]) => any) | undefined;
|
|
113
138
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
@@ -122,8 +147,11 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
122
147
|
adapter: Adapter;
|
|
123
148
|
options: string[] | SelectItem[];
|
|
124
149
|
placeholder: string;
|
|
150
|
+
noCaret: boolean;
|
|
125
151
|
selected: SelectItem;
|
|
152
|
+
clearable: boolean;
|
|
126
153
|
emptyText: string;
|
|
127
154
|
loadingText: string;
|
|
155
|
+
sectionLabel: string;
|
|
128
156
|
}, {}>;
|
|
129
157
|
export default _default;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface SelectItem {
|
|
2
2
|
text: string;
|
|
3
3
|
value: unknown;
|
|
4
|
+
disabled?: boolean;
|
|
4
5
|
}
|
|
5
6
|
export interface SelectProps {
|
|
6
7
|
modelValue: unknown;
|
|
@@ -8,3 +9,4 @@ export interface SelectProps {
|
|
|
8
9
|
options?: SelectItem[] | string[];
|
|
9
10
|
}
|
|
10
11
|
export declare function defineOptions(options: SelectItem[]): SelectItem[];
|
|
12
|
+
export declare function findSelected(items: SelectItem[], value: unknown): SelectItem;
|
|
@@ -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;
|
|
72
73
|
variant: StyleVariant;
|
|
73
74
|
type: TypeVariant;
|
|
74
|
-
fixed: boolean;
|
|
75
75
|
modelValue: boolean;
|
|
76
76
|
align: AlignVariant;
|
|
77
77
|
toggleable: ToggleableVariant;
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
v-if="title"
|
|
4
4
|
class="sidebar__title"
|
|
5
5
|
data-testid="sidebar-title"
|
|
6
|
-
:class="{
|
|
7
|
-
|
|
6
|
+
:class="{
|
|
7
|
+
'sidebar__title__collapsible': (collapsible && type !== 'narrow'),
|
|
8
|
+
'sidebar__title--collapsed': !isExpand,
|
|
9
|
+
}"
|
|
10
|
+
v-bind="$attrs"
|
|
11
|
+
@click.prevent="toggleExpand">
|
|
8
12
|
<Caption
|
|
9
13
|
weight="bold"
|
|
10
14
|
transform="capitalize">
|
|
@@ -23,17 +27,22 @@
|
|
|
23
27
|
data-testid="sidebar-title-caret"
|
|
24
28
|
class="sidebar__title__caret" />
|
|
25
29
|
</div>
|
|
26
|
-
<
|
|
30
|
+
<Collapse
|
|
27
31
|
v-if="!bottom"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
:model-value="isExpand">
|
|
33
|
+
<Nav
|
|
34
|
+
ref="root"
|
|
35
|
+
class="sidebar__nav"
|
|
36
|
+
:class="{ 'sidebar__nav--collapsed' : !isExpand }"
|
|
37
|
+
data-testid="sidebar-nav"
|
|
38
|
+
vertical
|
|
39
|
+
:title="title"
|
|
40
|
+
:variant="variant"
|
|
41
|
+
:condensed="condensed"
|
|
42
|
+
:align="align">
|
|
43
|
+
<slot />
|
|
44
|
+
</Nav>
|
|
45
|
+
</Collapse>
|
|
37
46
|
<template v-else>
|
|
38
47
|
<div class="sidebar__bottom">
|
|
39
48
|
<Nav
|
|
@@ -55,20 +64,24 @@
|
|
|
55
64
|
import {
|
|
56
65
|
computed,
|
|
57
66
|
defineComponent,
|
|
58
|
-
inject
|
|
67
|
+
inject,
|
|
68
|
+
ref
|
|
59
69
|
} from "vue-demi";
|
|
60
70
|
import Nav from "../nav/Nav.vue";
|
|
61
71
|
import Caption from "../caption/Caption.vue";
|
|
62
72
|
import Text from "../text/Text.vue";
|
|
63
73
|
import { SIDEBAR_SETTINGS } from ".";
|
|
74
|
+
import Collapse from "../collapse/Collapse.vue";
|
|
64
75
|
import IconArrow from "@privyid/persona-icon/vue/chevron-down/16.vue";
|
|
65
76
|
export default defineComponent({
|
|
66
77
|
components: {
|
|
67
78
|
Nav,
|
|
68
79
|
Caption,
|
|
69
80
|
Text,
|
|
70
|
-
IconArrow
|
|
81
|
+
IconArrow,
|
|
82
|
+
Collapse
|
|
71
83
|
},
|
|
84
|
+
inheritAttrs: false,
|
|
72
85
|
props: {
|
|
73
86
|
title: {
|
|
74
87
|
type: String,
|
|
@@ -100,25 +113,24 @@ export default defineComponent({
|
|
|
100
113
|
const variant = settings?.variant;
|
|
101
114
|
const align = settings?.align;
|
|
102
115
|
const type = settings?.type;
|
|
116
|
+
const isExpand = ref(true);
|
|
103
117
|
const classNames = computed(() => {
|
|
104
118
|
const result = [""];
|
|
105
119
|
if (props.bottom)
|
|
106
120
|
result.push("sidebar__nav--bottom");
|
|
107
121
|
return result;
|
|
108
122
|
});
|
|
109
|
-
function
|
|
110
|
-
if (props.collapsible
|
|
111
|
-
|
|
112
|
-
title?.classList.toggle("sidebar__title--collapsed");
|
|
113
|
-
title?.nextElementSibling?.classList.toggle("sidebar__nav--collapsed");
|
|
114
|
-
}
|
|
123
|
+
function toggleExpand() {
|
|
124
|
+
if (props.collapsible)
|
|
125
|
+
isExpand.value = !isExpand.value;
|
|
115
126
|
}
|
|
116
127
|
return {
|
|
128
|
+
isExpand,
|
|
117
129
|
variant,
|
|
118
130
|
align,
|
|
119
131
|
type,
|
|
120
132
|
classNames,
|
|
121
|
-
|
|
133
|
+
toggleExpand
|
|
122
134
|
};
|
|
123
135
|
}
|
|
124
136
|
});
|
|
@@ -138,10 +150,6 @@ export default defineComponent({
|
|
|
138
150
|
.nav__title {
|
|
139
151
|
@apply hidden;
|
|
140
152
|
}
|
|
141
|
-
|
|
142
|
-
&&--collapsed {
|
|
143
|
-
@apply hidden;
|
|
144
|
-
}
|
|
145
153
|
}
|
|
146
154
|
|
|
147
155
|
&&--narrow {
|
|
@@ -213,7 +221,7 @@ export default defineComponent({
|
|
|
213
221
|
@apply relative z-1 flex items-center justify-between -mb-9 px-3 mt-5;
|
|
214
222
|
|
|
215
223
|
&__collapsible {
|
|
216
|
-
@apply cursor-pointer;
|
|
224
|
+
@apply cursor-pointer select-none;
|
|
217
225
|
}
|
|
218
226
|
|
|
219
227
|
&__caret {
|
|
@@ -222,7 +230,7 @@ export default defineComponent({
|
|
|
222
230
|
|
|
223
231
|
&&--collapsed {
|
|
224
232
|
.sidebar__title__caret {
|
|
225
|
-
@apply rotate-0
|
|
233
|
+
@apply rotate-0;
|
|
226
234
|
}
|
|
227
235
|
}
|
|
228
236
|
|
|
@@ -24,11 +24,12 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
24
24
|
default: boolean;
|
|
25
25
|
};
|
|
26
26
|
}, {
|
|
27
|
+
isExpand: import("vue-demi").Ref<boolean>;
|
|
27
28
|
variant: import("../nav").StyleVariant | undefined;
|
|
28
29
|
align: import("../nav").AlignVariant | undefined;
|
|
29
30
|
type: import(".").TypeVariant | undefined;
|
|
30
31
|
classNames: import("vue-demi").ComputedRef<string[]>;
|
|
31
|
-
|
|
32
|
+
toggleExpand: () => void;
|
|
32
33
|
}, 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<{
|
|
33
34
|
title: {
|
|
34
35
|
type: StringConstructor;
|