@vc-shell/framework 1.1.82 → 1.1.83
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/CHANGELOG.md +27 -0
- package/core/api/virtocommerce.platform.ts +10457 -0
- package/core/plugins/extension-points/ExtensionSlot.vue +23 -0
- package/core/plugins/extension-points/README.md +406 -0
- package/core/plugins/extension-points/index.ts +8 -0
- package/core/plugins/extension-points/migration-examples.md +613 -0
- package/core/plugins/extension-points/simple-extensions.ts +148 -0
- package/core/plugins/index.ts +1 -0
- package/core/plugins/modularity/loader.ts +2 -2
- package/dist/core/api/virtocommerce.platform.d.ts +2442 -0
- package/dist/core/api/virtocommerce.platform.d.ts.map +1 -0
- package/dist/core/plugins/extension-points/ExtensionSlot.vue.d.ts +6 -0
- package/dist/core/plugins/extension-points/ExtensionSlot.vue.d.ts.map +1 -0
- package/dist/core/plugins/extension-points/index.d.ts +3 -0
- package/dist/core/plugins/extension-points/index.d.ts.map +1 -0
- package/dist/core/plugins/extension-points/simple-extensions.d.ts +29 -0
- package/dist/core/plugins/extension-points/simple-extensions.d.ts.map +1 -0
- package/dist/core/plugins/index.d.ts +1 -0
- package/dist/core/plugins/index.d.ts.map +1 -1
- package/dist/framework.js +5104 -5031
- package/dist/locales/de.json +1 -0
- package/dist/locales/en.json +1 -0
- package/dist/shared/components/notification-template/notification-template.vue.d.ts +8 -1
- package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
- package/dist/shared/composables/useModificationTracker/index.d.ts +5 -0
- package/dist/shared/composables/useModificationTracker/index.d.ts.map +1 -1
- package/dist/shared/pages/LoginPage/components/login/Login.vue.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts +5 -1
- package/dist/ui/components/molecules/vc-form/vc-form.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +10 -5
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
- package/package.json +4 -4
- package/shared/components/notification-template/notification-template.vue +5 -1
- package/shared/composables/useModificationTracker/index.ts +6 -0
- package/shared/pages/LoginPage/components/login/Login.vue +30 -34
- package/ui/components/molecules/vc-form/vc-form.vue +11 -3
- package/ui/components/molecules/vc-select/vc-select.vue +1 -2
|
@@ -2,7 +2,11 @@ declare var __VLS_1: {};
|
|
|
2
2
|
type __VLS_Slots = {} & {
|
|
3
3
|
default?: (props: typeof __VLS_1) => any;
|
|
4
4
|
};
|
|
5
|
-
declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}
|
|
5
|
+
declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
|
+
submit: () => any;
|
|
7
|
+
}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
|
|
8
|
+
onSubmit?: (() => any) | undefined;
|
|
9
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
6
10
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
7
11
|
export default _default;
|
|
8
12
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-form.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-form/vc-form.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vc-form.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-form/vc-form.vue"],"names":[],"mappings":"AAwCA,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAoB/C,QAAA,MAAM,eAAe;;;;iFAMnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAE1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Placement } from "@floating-ui/vue";
|
|
2
2
|
export type OptionProp<T> = ((option: T) => string) | string | undefined;
|
|
3
|
-
export type MaybeArray<T> = T | T[];
|
|
4
3
|
declare const _default: <T, P extends {
|
|
5
4
|
results?: T[];
|
|
6
5
|
totalCount?: number;
|
|
@@ -8,10 +7,13 @@ declare const _default: <T, P extends {
|
|
|
8
7
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
9
8
|
readonly onSearch?: ((inputValue: string) => any) | undefined;
|
|
10
9
|
readonly onClose?: (() => any) | undefined;
|
|
11
|
-
readonly "onUpdate:modelValue"?: ((inputValue:
|
|
10
|
+
readonly "onUpdate:modelValue"?: ((inputValue: string | string[] | (P extends {
|
|
12
11
|
results?: T[];
|
|
13
12
|
totalCount?: number;
|
|
14
|
-
} ? T & (Required<P>["results"] extends infer T_1 ? T_1 extends Required<P>["results"] ? T_1 extends (infer V)[] ? V : never : never : never) : T
|
|
13
|
+
} ? T & (Required<P>["results"] extends infer T_1 ? T_1 extends Required<P>["results"] ? T_1 extends (infer V)[] ? V : never : never : never) : T) | (P extends {
|
|
14
|
+
results?: T[];
|
|
15
|
+
totalCount?: number;
|
|
16
|
+
} ? T & (Required<P>["results"] extends infer T_2 ? T_2 extends Required<P>["results"] ? T_2 extends (infer V)[] ? V : never : never : never) : T)[] | null) => any) | undefined;
|
|
15
17
|
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onClose" | "onUpdate:modelValue" | "onSearch"> & {
|
|
16
18
|
/**
|
|
17
19
|
* Name of select
|
|
@@ -215,10 +217,13 @@ declare const _default: <T, P extends {
|
|
|
215
217
|
}) => any;
|
|
216
218
|
"no-options": (props: any) => any;
|
|
217
219
|
};
|
|
218
|
-
emit: ((evt: "search", inputValue: string) => void) & ((evt: "close") => void) & ((evt: "update:modelValue", inputValue:
|
|
220
|
+
emit: ((evt: "search", inputValue: string) => void) & ((evt: "close") => void) & ((evt: "update:modelValue", inputValue: string | string[] | (P extends {
|
|
221
|
+
results?: T[];
|
|
222
|
+
totalCount?: number;
|
|
223
|
+
} ? T & (Required<P>["results"] extends infer T_3 ? T_3 extends Required<P>["results"] ? T_3 extends (infer V)[] ? V : never : never : never) : T) | (P extends {
|
|
219
224
|
results?: T[];
|
|
220
225
|
totalCount?: number;
|
|
221
|
-
} ? T & (Required<P>["results"] extends infer
|
|
226
|
+
} ? T & (Required<P>["results"] extends infer T_4 ? T_4 extends Required<P>["results"] ? T_4 extends (infer V)[] ? V : never : never : never) : T)[] | null) => void);
|
|
222
227
|
}>) => import("vue").VNode & {
|
|
223
228
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
224
229
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-select.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-select/vc-select.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vc-select.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-select/vc-select.vue"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vc-shell/framework",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.83",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/framework.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -90,9 +90,9 @@
|
|
|
90
90
|
"@fullhuman/postcss-purgecss": "^7.0.2",
|
|
91
91
|
"@laynezh/vite-plugin-lib-assets": "v1.1.0",
|
|
92
92
|
"@types/dompurify": "^3.0.5",
|
|
93
|
-
"@vc-shell/api-client-generator": "^1.1.
|
|
94
|
-
"@vc-shell/config-generator": "^1.1.
|
|
95
|
-
"@vc-shell/ts-config": "^1.1.
|
|
93
|
+
"@vc-shell/api-client-generator": "^1.1.83",
|
|
94
|
+
"@vc-shell/config-generator": "^1.1.83",
|
|
95
|
+
"@vc-shell/ts-config": "^1.1.83",
|
|
96
96
|
"@vitejs/plugin-vue": "^5.2.3",
|
|
97
97
|
"@vue/test-utils": "^2.4.5",
|
|
98
98
|
"cypress-signalr-mock": "^1.5.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="vc-notification-template">
|
|
2
|
+
<div class="vc-notification-template" @click="$emit('click')">
|
|
3
3
|
<div
|
|
4
4
|
class="vc-notification-template__container"
|
|
5
5
|
:class="{
|
|
@@ -38,8 +38,12 @@ export interface Props {
|
|
|
38
38
|
title: string;
|
|
39
39
|
notification: IPushNotification;
|
|
40
40
|
}
|
|
41
|
+
export interface Emits {
|
|
42
|
+
(e: "click"): void;
|
|
43
|
+
}
|
|
41
44
|
|
|
42
45
|
const props = defineProps<Props>();
|
|
46
|
+
const emit = defineEmits<Emits>();
|
|
43
47
|
|
|
44
48
|
const locale = window.navigator.language;
|
|
45
49
|
|
|
@@ -11,6 +11,11 @@ export interface UseModificationTrackerReturn<T> {
|
|
|
11
11
|
* It can be changed directly or through v-model.
|
|
12
12
|
*/
|
|
13
13
|
currentValue: Ref<T>;
|
|
14
|
+
/**
|
|
15
|
+
* Reactive reference to the pristine value.
|
|
16
|
+
* It is a "clean" version representing the original, unmodified state.
|
|
17
|
+
*/
|
|
18
|
+
pristineValue: Ref<T>;
|
|
14
19
|
/**
|
|
15
20
|
* Shows if currentValue has been modified compared to its "pristine" state.
|
|
16
21
|
* Read-only.
|
|
@@ -87,6 +92,7 @@ export function useModificationTracker<T>(initialValueProp: T | Ref<T>): UseModi
|
|
|
87
92
|
|
|
88
93
|
return {
|
|
89
94
|
currentValue,
|
|
95
|
+
pristineValue,
|
|
90
96
|
isModified: computed(() => isModified.value),
|
|
91
97
|
resetModificationState,
|
|
92
98
|
};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<VcForm @submit.prevent="login">
|
|
10
10
|
<Field
|
|
11
11
|
v-slot="{ errorMessage, handleChange, errors }"
|
|
12
|
-
:label="t('LOGIN.FIELDS.LOGIN.LABEL')"
|
|
12
|
+
:label="$t('LOGIN.FIELDS.LOGIN.LABEL')"
|
|
13
13
|
name="username"
|
|
14
14
|
:model-value="form.username"
|
|
15
15
|
rules="required"
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
ref="loginField"
|
|
19
19
|
v-model="form.username"
|
|
20
20
|
class="vc-login-page__input"
|
|
21
|
-
:label="t('LOGIN.FIELDS.LOGIN.LABEL')"
|
|
22
|
-
:placeholder="t('LOGIN.FIELDS.LOGIN.PLACEHOLDER')"
|
|
21
|
+
:label="$t('LOGIN.FIELDS.LOGIN.LABEL')"
|
|
22
|
+
:placeholder="$t('LOGIN.FIELDS.LOGIN.PLACEHOLDER')"
|
|
23
23
|
required
|
|
24
24
|
:error="!!errors.length"
|
|
25
25
|
:error-message="errorMessage"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</Field>
|
|
29
29
|
<Field
|
|
30
30
|
v-slot="{ errorMessage, handleChange, errors }"
|
|
31
|
-
:label="t('LOGIN.FIELDS.PASSWORD.LABEL')"
|
|
31
|
+
:label="$t('LOGIN.FIELDS.PASSWORD.LABEL')"
|
|
32
32
|
name="password"
|
|
33
33
|
:model-value="form.password"
|
|
34
34
|
rules="required"
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
ref="passwordField"
|
|
38
38
|
v-model="form.password"
|
|
39
39
|
class="vc-login-page__input--small"
|
|
40
|
-
:label="t('LOGIN.FIELDS.PASSWORD.LABEL')"
|
|
41
|
-
:placeholder="t('LOGIN.FIELDS.PASSWORD.PLACEHOLDER')"
|
|
40
|
+
:label="$t('LOGIN.FIELDS.PASSWORD.LABEL')"
|
|
41
|
+
:placeholder="$t('LOGIN.FIELDS.PASSWORD.PLACEHOLDER')"
|
|
42
42
|
type="password"
|
|
43
43
|
required
|
|
44
44
|
:error="!!errors.length"
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
</Field>
|
|
50
50
|
|
|
51
51
|
<div
|
|
52
|
-
v-if="!!forgotPassword"
|
|
53
52
|
class="vc-login-page__forgot-password-container"
|
|
54
53
|
>
|
|
55
54
|
<VcButton
|
|
@@ -57,7 +56,7 @@
|
|
|
57
56
|
type="button"
|
|
58
57
|
@click="togglePassRequest"
|
|
59
58
|
>
|
|
60
|
-
{{ t("LOGIN.FORGOT_PASSWORD_BUTTON") }}
|
|
59
|
+
{{ $t("LOGIN.FORGOT_PASSWORD_BUTTON") }}
|
|
61
60
|
</VcButton>
|
|
62
61
|
</div>
|
|
63
62
|
<div class="vc-login-page__button-container">
|
|
@@ -66,7 +65,7 @@
|
|
|
66
65
|
class="vc-login-page__submit-button"
|
|
67
66
|
@click="login"
|
|
68
67
|
>
|
|
69
|
-
{{ t("LOGIN.BUTTON") }}
|
|
68
|
+
{{ $t("LOGIN.BUTTON") }}
|
|
70
69
|
</vc-button>
|
|
71
70
|
</div>
|
|
72
71
|
</VcForm>
|
|
@@ -76,28 +75,31 @@
|
|
|
76
75
|
>
|
|
77
76
|
<div class="vc-login-page__separator-line">
|
|
78
77
|
<!-- TODO add to localization -->
|
|
79
|
-
OR
|
|
78
|
+
{{ $t("LOGIN.OR") }}
|
|
80
79
|
</div>
|
|
81
80
|
|
|
82
81
|
<ExternalProviders :providers="loginProviders" />
|
|
83
82
|
</div>
|
|
84
83
|
|
|
85
|
-
<!--
|
|
86
|
-
<
|
|
87
|
-
v-
|
|
88
|
-
|
|
84
|
+
<!-- Simple extension slot -->
|
|
85
|
+
<div
|
|
86
|
+
v-if="hasComponents"
|
|
87
|
+
class="vc-login-page__separator"
|
|
89
88
|
>
|
|
90
|
-
<div class="vc-login-
|
|
91
|
-
|
|
89
|
+
<div class="vc-login-page__separator-line">
|
|
90
|
+
<!-- TODO add to localization -->
|
|
91
|
+
{{ $t("LOGIN.OR") }}
|
|
92
92
|
</div>
|
|
93
|
-
|
|
93
|
+
|
|
94
|
+
<ExtensionSlot name="login-after-form" />
|
|
95
|
+
</div>
|
|
94
96
|
</template>
|
|
95
97
|
<template v-else>
|
|
96
98
|
<template v-if="!forgotPasswordRequestSent">
|
|
97
|
-
<VcForm
|
|
99
|
+
<VcForm>
|
|
98
100
|
<Field
|
|
99
101
|
v-slot="{ field, errorMessage, handleChange, errors }"
|
|
100
|
-
:label="t('LOGIN.FIELDS.FORGOT_PASSWORD.LABEL')"
|
|
102
|
+
:label="$t('LOGIN.FIELDS.FORGOT_PASSWORD.LABEL')"
|
|
101
103
|
name="loginOrEmail"
|
|
102
104
|
:model-value="forgotPasswordForm.loginOrEmail"
|
|
103
105
|
rules="required|email"
|
|
@@ -107,9 +109,9 @@
|
|
|
107
109
|
ref="forgotPasswordField"
|
|
108
110
|
v-model="forgotPasswordForm.loginOrEmail"
|
|
109
111
|
class="vc-login-page__input"
|
|
110
|
-
:label="t('LOGIN.FIELDS.FORGOT_PASSWORD.LABEL')"
|
|
111
|
-
:placeholder="t('LOGIN.FIELDS.FORGOT_PASSWORD.PLACEHOLDER')"
|
|
112
|
-
:hint="t('LOGIN.RESET_EMAIL_TEXT')"
|
|
112
|
+
:label="$t('LOGIN.FIELDS.FORGOT_PASSWORD.LABEL')"
|
|
113
|
+
:placeholder="$t('LOGIN.FIELDS.FORGOT_PASSWORD.PLACEHOLDER')"
|
|
114
|
+
:hint="$t('LOGIN.RESET_EMAIL_TEXT')"
|
|
113
115
|
required
|
|
114
116
|
:error="!!errors.length"
|
|
115
117
|
:error-message="errorMessage"
|
|
@@ -122,20 +124,20 @@
|
|
|
122
124
|
type="button"
|
|
123
125
|
@click="togglePassRequest"
|
|
124
126
|
>
|
|
125
|
-
{{ t("LOGIN.BACK_BUTTON") }}
|
|
127
|
+
{{ $t("LOGIN.BACK_BUTTON") }}
|
|
126
128
|
</vc-button>
|
|
127
129
|
<vc-button
|
|
128
130
|
:disabled="loading || isDisabled || loadingForgotPassword"
|
|
129
131
|
@click="forgot"
|
|
130
132
|
>
|
|
131
|
-
{{ t("LOGIN.FORGOT_BUTTON") }}
|
|
133
|
+
{{ $t("LOGIN.FORGOT_BUTTON") }}
|
|
132
134
|
</vc-button>
|
|
133
135
|
</div>
|
|
134
136
|
</VcForm>
|
|
135
137
|
</template>
|
|
136
138
|
|
|
137
139
|
<template v-if="requestPassResult.succeeded && forgotPasswordRequestSent">
|
|
138
|
-
<div>{{ t("LOGIN.RESET_EMAIL_SENT") }}</div>
|
|
140
|
+
<div>{{ $t("LOGIN.RESET_EMAIL_SENT") }}</div>
|
|
139
141
|
<div class="vc-login-page__button-container">
|
|
140
142
|
<span
|
|
141
143
|
v-if="$isDesktop.value"
|
|
@@ -145,7 +147,7 @@
|
|
|
145
147
|
:disabled="loading"
|
|
146
148
|
@click="togglePassRequest"
|
|
147
149
|
>
|
|
148
|
-
{{ t("LOGIN.BUTTON_OK") }}
|
|
150
|
+
{{ $t("LOGIN.BUTTON_OK") }}
|
|
149
151
|
</vc-button>
|
|
150
152
|
</div>
|
|
151
153
|
</template>
|
|
@@ -180,7 +182,7 @@ import { ExternalSignInProviderInfo, SignInResult } from "./../../../../../core/
|
|
|
180
182
|
import { useI18n } from "vue-i18n";
|
|
181
183
|
import { default as ExternalProviders } from "./../../../../../shared/components/sign-in/external-providers.vue";
|
|
182
184
|
import { useExternalProvider } from "./../../../../../shared/components/sign-in/useExternalProvider";
|
|
183
|
-
import {
|
|
185
|
+
import { ExtensionSlot, useExtensionSlot } from '../../../../../core/plugins/extension-points';
|
|
184
186
|
|
|
185
187
|
type ForgotPasswordFunc = (args: { loginOrEmail: string }) => Promise<void>;
|
|
186
188
|
|
|
@@ -197,13 +199,13 @@ const router = useRouter();
|
|
|
197
199
|
|
|
198
200
|
const { validateField } = useForm({ validateOnMount: false });
|
|
199
201
|
const { uiSettings, loading: customizationLoading } = useSettings();
|
|
200
|
-
const { t } = useI18n({ useScope: "global" });
|
|
201
202
|
let useLogin;
|
|
202
203
|
const signInResult = ref({ succeeded: true }) as Ref<SignInResult & { status?: number; error?: any }>;
|
|
203
204
|
const requestPassResult = ref<RequestPasswordResult>({ succeeded: true });
|
|
204
205
|
const forgotPasswordRequestSent = ref(false);
|
|
205
206
|
const { signIn, loading, user } = useUserManagement();
|
|
206
207
|
const { getProviders } = useExternalProvider();
|
|
208
|
+
const { hasComponents } = useExtensionSlot('login-after-form');
|
|
207
209
|
|
|
208
210
|
const isLogin = ref(true);
|
|
209
211
|
const isValid = useIsFormValid();
|
|
@@ -213,12 +215,6 @@ const loadingForgotPassword = ref(false);
|
|
|
213
215
|
const loginProviders = ref<ExternalSignInProviderInfo[]>();
|
|
214
216
|
let forgotPassword: ForgotPasswordFunc;
|
|
215
217
|
|
|
216
|
-
const extensionsHelper = inject(extensionsHelperSymbol);
|
|
217
|
-
|
|
218
|
-
const afterLoginFormExtensions = computed(
|
|
219
|
-
(): ExtensionPoint[] => (extensionsHelper?.getOutboundExtensions("login-after-form") as ExtensionPoint[]) || [],
|
|
220
|
-
);
|
|
221
|
-
|
|
222
218
|
if (props.composable && typeof props.composable === "function") {
|
|
223
219
|
useLogin = props.composable;
|
|
224
220
|
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
<script lang="ts" setup></script>
|
|
2
|
-
|
|
3
1
|
<template>
|
|
4
|
-
<form>
|
|
2
|
+
<form @submit.prevent="submit">
|
|
5
3
|
<slot>vc-form</slot>
|
|
6
4
|
</form>
|
|
7
5
|
</template>
|
|
6
|
+
|
|
7
|
+
<script lang="ts" setup>
|
|
8
|
+
const emit = defineEmits<{
|
|
9
|
+
(e: 'submit'): void;
|
|
10
|
+
}>()
|
|
11
|
+
|
|
12
|
+
const submit = () => {
|
|
13
|
+
emit('submit');
|
|
14
|
+
}
|
|
15
|
+
</script>
|
|
@@ -349,7 +349,6 @@ import { useI18n } from "vue-i18n";
|
|
|
349
349
|
import { useKeyboardNavigation } from "../../../../core/composables/useKeyboardNavigation";
|
|
350
350
|
|
|
351
351
|
export type OptionProp<T> = ((option: T) => string) | string | undefined;
|
|
352
|
-
export type MaybeArray<T> = T | T[];
|
|
353
352
|
type FloatingInstanceType = UseFloatingReturn & {
|
|
354
353
|
middlewareData: {
|
|
355
354
|
sameWidthChangeBorders: {
|
|
@@ -572,7 +571,7 @@ const emit = defineEmits<{
|
|
|
572
571
|
* Emitted when the component needs to change the model; Is also used by v-model
|
|
573
572
|
*/
|
|
574
573
|
|
|
575
|
-
"update:modelValue": [inputValue:
|
|
574
|
+
"update:modelValue": [inputValue: Option | Option[] | string | string[] | null];
|
|
576
575
|
/**
|
|
577
576
|
* Emitted when user wants to filter a value
|
|
578
577
|
*/
|