sprintify-ui 0.0.41 → 0.0.42
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/sprintify-ui.es.js +6033 -5518
- package/dist/types/src/components/BaseAutocomplete.vue.d.ts +32 -12
- package/dist/types/src/components/BaseAutocompleteFetch.vue.d.ts +28 -28
- package/dist/types/src/components/BaseBelongsTo.vue.d.ts +35 -35
- package/dist/types/src/components/BaseButtonGroup.vue.d.ts +46 -8
- package/dist/types/src/components/BaseDatePicker.vue.d.ts +18 -9
- package/dist/types/src/components/BaseDateSelect.vue.d.ts +14 -5
- package/dist/types/src/components/BaseField.vue.d.ts +151 -0
- package/dist/types/src/components/BaseFieldI18n.vue.d.ts +93 -0
- package/dist/types/src/components/BaseForm.vue.d.ts +267 -0
- package/dist/types/src/components/BaseFormField.d.ts +81 -0
- package/dist/types/src/components/BaseHasMany.vue.d.ts +31 -31
- package/dist/types/src/components/BaseInput.vue.d.ts +1 -1
- package/dist/types/src/components/BaseInputError.vue.d.ts +48 -0
- package/dist/types/src/components/BaseInputPercent.vue.d.ts +1 -1
- package/dist/types/src/components/BaseLocaleForm.vue.d.ts +420 -0
- package/dist/types/src/components/BaseMediaLibrary.vue.d.ts +46 -24
- package/dist/types/src/components/BaseNumberForm.vue.d.ts +382 -0
- package/dist/types/src/components/BasePassword.vue.d.ts +10 -14
- package/dist/types/src/components/BasePasswordForm.vue.d.ts +365 -0
- package/dist/types/src/components/BaseRadioGroup.vue.d.ts +23 -4
- package/dist/types/src/components/BaseSelect.vue.d.ts +20 -1
- package/dist/types/src/components/BaseSwitch.vue.d.ts +155 -23
- package/dist/types/src/components/BaseTagAutocomplete.vue.d.ts +31 -12
- package/dist/types/src/components/BaseTagAutocompleteFetch.vue.d.ts +20 -20
- package/dist/types/src/components/BaseTextarea.vue.d.ts +9 -0
- package/dist/types/src/components/BaseTextareaAutoresize.vue.d.ts +18 -0
- package/dist/types/src/components/BaseTextareaForm.vue.d.ts +394 -0
- package/dist/types/src/components/index.d.ts +4 -1
- package/dist/types/src/composables/field.d.ts +17 -0
- package/dist/types/src/index.d.ts +3 -0
- package/dist/types/src/types/index.d.ts +11 -0
- package/package.json +4 -1
- package/src/components/BaseAutocomplete.stories.js +56 -51
- package/src/components/BaseAutocomplete.vue +25 -8
- package/src/components/BaseAutocompleteFetch.stories.js +67 -65
- package/src/components/BaseAutocompleteFetch.vue +9 -29
- package/src/components/BaseBelongsTo.stories.js +72 -82
- package/src/components/BaseBelongsTo.vue +10 -11
- package/src/components/BaseButtonGroup.stories.js +11 -10
- package/src/components/BaseButtonGroup.vue +22 -9
- package/src/components/BaseCharacterCounter.stories.js +1 -1
- package/src/components/BaseDatePicker.stories.js +13 -9
- package/src/components/BaseDatePicker.vue +25 -8
- package/src/components/BaseDateSelect.stories.js +15 -9
- package/src/components/BaseDateSelect.vue +20 -8
- package/src/components/BaseField.vue +109 -0
- package/src/components/BaseFieldI18n.stories.js +38 -0
- package/src/components/BaseFieldI18n.vue +162 -0
- package/src/components/BaseFileUploader.stories.js +3 -3
- package/src/components/BaseFileUploader.vue +3 -3
- package/src/components/BaseForm.vue +298 -0
- package/src/components/BaseFormField.ts +117 -0
- package/src/components/BaseHasMany.stories.js +25 -10
- package/src/components/BaseHasMany.vue +9 -9
- package/src/components/BaseInput.stories.js +27 -14
- package/src/components/BaseInput.vue +17 -8
- package/src/components/BaseInputError.vue +7 -0
- package/src/components/BaseInputPercent.stories.js +10 -3
- package/src/components/BaseInputPercent.vue +2 -1
- package/src/components/BaseLocaleForm.vue +142 -0
- package/src/components/BaseMediaLibrary.stories.js +7 -6
- package/src/components/BaseMediaLibrary.vue +32 -31
- package/src/components/BaseMenu.vue +1 -1
- package/src/components/BaseNumberForm.vue +67 -0
- package/src/components/BasePassword.stories.js +9 -4
- package/src/components/BasePassword.vue +49 -44
- package/src/components/BasePasswordForm.vue +59 -0
- package/src/components/BaseRadioGroup.stories.js +9 -8
- package/src/components/BaseRadioGroup.vue +17 -3
- package/src/components/BaseSelect.stories.js +15 -2
- package/src/components/BaseSelect.vue +26 -10
- package/src/components/BaseSwitch.stories.js +7 -0
- package/src/components/BaseSwitch.vue +134 -124
- package/src/components/BaseTagAutocomplete.stories.js +21 -14
- package/src/components/BaseTagAutocomplete.vue +25 -14
- package/src/components/BaseTagAutocompleteFetch.stories.js +37 -21
- package/src/components/BaseTagAutocompleteFetch.vue +5 -5
- package/src/components/BaseTextarea.stories.js +11 -3
- package/src/components/BaseTextarea.vue +20 -6
- package/src/components/BaseTextareaAutoresize.stories.js +11 -2
- package/src/components/BaseTextareaAutoresize.vue +28 -4
- package/src/components/BaseTextareaForm.vue +101 -0
- package/src/components/BaseTimeline.vue +1 -1
- package/src/components/BaseTimelineItem.vue +4 -4
- package/src/components/index.ts +6 -0
- package/src/composables/field.ts +100 -0
- package/src/index.ts +11 -1
- package/src/types/index.ts +12 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
interface Config {
|
|
4
|
+
name: Ref<string | null | undefined>;
|
|
5
|
+
required: Ref<boolean>;
|
|
6
|
+
hasError: Ref<boolean | undefined>;
|
|
7
|
+
emit: any;
|
|
8
|
+
errorType?: string;
|
|
9
|
+
labelClass?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function useField(config: Config) {
|
|
13
|
+
const name = config.name;
|
|
14
|
+
const required = config.required;
|
|
15
|
+
const hasError = config.hasError;
|
|
16
|
+
const emit = config.emit;
|
|
17
|
+
const errorType = config.errorType ?? null;
|
|
18
|
+
const labelClass = config.labelClass ?? null;
|
|
19
|
+
|
|
20
|
+
// Injections
|
|
21
|
+
|
|
22
|
+
const fieldRequired = inject('field:required', ref(false)) as Ref<boolean>;
|
|
23
|
+
const fieldName = inject('field:name', ref('')) as Ref<string>;
|
|
24
|
+
|
|
25
|
+
const fieldOnUpdate = inject('field:onUpdate', () => {
|
|
26
|
+
return;
|
|
27
|
+
}) as () => void;
|
|
28
|
+
|
|
29
|
+
const getErrorMessageByName = inject(
|
|
30
|
+
'form:getErrorMessageByName',
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
(name: string) => {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
) as (name: string) => string | null | undefined;
|
|
36
|
+
|
|
37
|
+
const setErrorType = inject(
|
|
38
|
+
'field:setErrorType',
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
40
|
+
(errorType: string | null) => {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
) as (errorType: string | null) => void;
|
|
44
|
+
|
|
45
|
+
if (errorType) {
|
|
46
|
+
setErrorType(errorType);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const setLabelClass = inject(
|
|
50
|
+
'field:setLabelClass',
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
52
|
+
(labelClass: string | string[]) => {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
) as (errorType: string | string[]) => void;
|
|
56
|
+
|
|
57
|
+
if (labelClass) {
|
|
58
|
+
setLabelClass(labelClass);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const requiredInternal = computed((): boolean => {
|
|
62
|
+
if (required.value) {
|
|
63
|
+
return required.value;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return fieldRequired.value;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const nameInternal = computed((): string => {
|
|
70
|
+
if (name.value) {
|
|
71
|
+
return name.value;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return fieldName.value;
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const errorMessageInternal = computed((): string | null | undefined => {
|
|
78
|
+
return getErrorMessageByName(nameInternal.value);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
const hasErrorInternal = computed((): boolean => {
|
|
82
|
+
if (hasError.value) {
|
|
83
|
+
return hasError.value;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return !!errorMessageInternal.value;
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
function emitUpdate(value: any) {
|
|
90
|
+
emit('update:modelValue', value);
|
|
91
|
+
fieldOnUpdate();
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
requiredInternal,
|
|
95
|
+
nameInternal,
|
|
96
|
+
hasErrorInternal,
|
|
97
|
+
errorMessageInternal,
|
|
98
|
+
emitUpdate,
|
|
99
|
+
};
|
|
100
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import axios, { AxiosInstance } from 'axios';
|
|
|
2
2
|
import { App } from 'vue';
|
|
3
3
|
import * as components from './components';
|
|
4
4
|
import QueryString from 'qs';
|
|
5
|
-
import { createI18n, I18n } from 'vue-i18n';
|
|
5
|
+
import { createI18n, I18n, Locale } from 'vue-i18n';
|
|
6
6
|
import en from '@/lang/en.json';
|
|
7
7
|
import fr from '@/lang/fr.json';
|
|
8
8
|
import { useDialogsStore } from './stores/dialogs';
|
|
@@ -12,12 +12,14 @@ import { useSystemAlertStore } from './stores/systemAlerts';
|
|
|
12
12
|
const messages = { en, fr };
|
|
13
13
|
|
|
14
14
|
import './assets/main.css';
|
|
15
|
+
import { Locales } from './types';
|
|
15
16
|
|
|
16
17
|
export interface Options {
|
|
17
18
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
18
19
|
i18n?: I18n<typeof messages, {}, {}, string, true>;
|
|
19
20
|
http?: AxiosInstance;
|
|
20
21
|
upload_url?: string;
|
|
22
|
+
locales?: Locales;
|
|
21
23
|
formatQueryString?: (params: Record<string, any>) => string;
|
|
22
24
|
parseQueryString?: (params: string) => Record<string, any>;
|
|
23
25
|
}
|
|
@@ -29,6 +31,10 @@ const config = {
|
|
|
29
31
|
messages: { en, fr },
|
|
30
32
|
}),
|
|
31
33
|
http: axios.create(),
|
|
34
|
+
locales: {
|
|
35
|
+
en: 'English',
|
|
36
|
+
fr: 'Français',
|
|
37
|
+
} as Locales,
|
|
32
38
|
upload_url: '/api/upload',
|
|
33
39
|
formatQueryString(params: Record<string, any>) {
|
|
34
40
|
return QueryString.stringify(params, {
|
|
@@ -55,6 +61,10 @@ function install(app: App, options?: Options) {
|
|
|
55
61
|
config.http = options.http;
|
|
56
62
|
}
|
|
57
63
|
|
|
64
|
+
if (options?.locales) {
|
|
65
|
+
config.locales = options.locales;
|
|
66
|
+
}
|
|
67
|
+
|
|
58
68
|
if (options?.upload_url) {
|
|
59
69
|
config.upload_url = options.upload_url;
|
|
60
70
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -4,6 +4,18 @@ import { RouteLocationRaw } from 'vue-router';
|
|
|
4
4
|
import { UploadedFile } from './UploadedFile';
|
|
5
5
|
import { Notification as AppNotification } from './Notification';
|
|
6
6
|
|
|
7
|
+
export type Locales = { [locale: string]: string };
|
|
8
|
+
|
|
9
|
+
export enum Method {
|
|
10
|
+
post = 'post',
|
|
11
|
+
patch = 'patch',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export enum DataFormat {
|
|
15
|
+
json = 'json',
|
|
16
|
+
formData = 'formData',
|
|
17
|
+
}
|
|
18
|
+
|
|
7
19
|
export interface Breadcrumb {
|
|
8
20
|
icon?: string;
|
|
9
21
|
to: RouteLocationRaw;
|