@finema/core 1.2.5 → 1.3.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/README.md +88 -94
- package/dist/module.d.mts +3 -3
- package/dist/module.d.ts +3 -3
- package/dist/module.json +1 -1
- package/dist/module.mjs +98 -75
- package/dist/runtime/components/Button/Group.vue +31 -0
- package/dist/runtime/components/Button/index.vue +17 -0
- package/dist/runtime/components/Dialog/index.vue +63 -0
- package/dist/runtime/components/Form/FieldWrapper.vue +10 -0
- package/dist/runtime/components/Form/Fields.vue +41 -0
- package/dist/runtime/components/Form/InputSelect/SelectMenu.vue +11 -0
- package/dist/runtime/components/Form/InputSelect/index.vue +11 -0
- package/dist/runtime/components/Form/InputStatic/index.vue +16 -0
- package/dist/runtime/components/Form/InputStatic/types.d.ts +4 -0
- package/dist/runtime/components/Form/InputStatic/types.mjs +0 -0
- package/dist/runtime/components/Form/InputText/index.vue +28 -0
- package/dist/runtime/components/Form/InputText/types.d.ts +10 -0
- package/dist/runtime/components/Form/InputText/types.mjs +0 -0
- package/dist/runtime/components/Form/InputToggle/index.vue +14 -0
- package/dist/runtime/components/Form/InputToggle/types.d.ts +6 -0
- package/dist/runtime/components/Form/InputToggle/types.mjs +0 -0
- package/dist/runtime/components/Form/index.vue +6 -0
- package/dist/runtime/components/Form/types.d.ts +47 -0
- package/dist/runtime/components/Form/types.mjs +8 -0
- package/dist/runtime/components/Icon.vue +11 -0
- package/dist/runtime/components/Loader.vue +6 -0
- package/dist/runtime/components/Modal/index.vue +145 -0
- package/dist/runtime/components/Slideover/index.vue +109 -0
- package/dist/runtime/components/Table/ColumnImage.vue +13 -0
- package/dist/runtime/components/Table/ColumnNumber.vue +14 -0
- package/dist/runtime/components/Table/index.vue +84 -11
- package/dist/runtime/components/Table/types.d.ts +2 -17
- package/dist/runtime/components/Table/types.mjs +1 -6
- package/dist/runtime/composables/loaderPage.mjs +2 -4
- package/dist/runtime/composables/useConfig.d.ts +3 -0
- package/dist/runtime/composables/useConfig.mjs +9 -0
- package/dist/runtime/composables/useDialog.d.ts +26 -0
- package/dist/runtime/composables/useDialog.mjs +81 -0
- package/dist/runtime/composables/useForm.d.ts +24 -0
- package/dist/runtime/composables/useForm.mjs +44 -0
- package/dist/runtime/composables/useTable.d.ts +0 -2
- package/dist/runtime/composables/useTable.mjs +4 -8
- package/dist/runtime/core.config.d.ts +1 -1
- package/dist/runtime/core.config.mjs +1 -1
- package/dist/runtime/helpers/apiPageHelper.mjs +2 -4
- package/dist/runtime/plugin.mjs +1 -1
- package/dist/runtime/types/common.d.ts +3 -0
- package/dist/runtime/types/config.d.ts +1 -0
- package/dist/runtime/types/config.mjs +0 -0
- package/dist/runtime/ui.config.d.ts +2 -0
- package/dist/runtime/ui.config.mjs +44 -0
- package/dist/runtime/ui.css +14 -0
- package/dist/runtime/utils/ParamHelper.d.ts +2 -2
- package/dist/runtime/utils/StringHelper.mjs +1 -1
- package/dist/runtime/utils/lodash.d.ts +7 -0
- package/dist/runtime/utils/lodash.mjs +1 -0
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +10 -12
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { defineStore } from "pinia";
|
|
2
|
+
import { ref, useWatchFalse } from "#imports";
|
|
3
|
+
export var DialogType = /* @__PURE__ */ ((DialogType2) => {
|
|
4
|
+
DialogType2["ERROR"] = "error";
|
|
5
|
+
DialogType2["INFO"] = "info";
|
|
6
|
+
DialogType2["SUCCESS"] = "success";
|
|
7
|
+
DialogType2["WARNING"] = "warning";
|
|
8
|
+
return DialogType2;
|
|
9
|
+
})(DialogType || {});
|
|
10
|
+
export const useDialog = defineStore("_dialog", () => {
|
|
11
|
+
const isShow = ref(false);
|
|
12
|
+
const meta = ref(void 0);
|
|
13
|
+
const isReject = ref(false);
|
|
14
|
+
const proceed = ref(void 0);
|
|
15
|
+
const cancel = ref(void 0);
|
|
16
|
+
const openDialog = async (payload) => {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
isShow.value = true;
|
|
19
|
+
meta.value = payload;
|
|
20
|
+
proceed.value = resolve;
|
|
21
|
+
cancel.value = reject;
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const closeDialogProceed = () => {
|
|
25
|
+
isShow.value = false;
|
|
26
|
+
meta.value = void 0;
|
|
27
|
+
};
|
|
28
|
+
const closeDialogCancel = () => {
|
|
29
|
+
isShow.value = false;
|
|
30
|
+
meta.value = void 0;
|
|
31
|
+
isReject.value = true;
|
|
32
|
+
};
|
|
33
|
+
const error = async (payload) => {
|
|
34
|
+
return openDialog({
|
|
35
|
+
...payload,
|
|
36
|
+
type: "error" /* ERROR */
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const success = async (payload) => {
|
|
40
|
+
return openDialog({
|
|
41
|
+
...payload,
|
|
42
|
+
type: "success" /* SUCCESS */
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const info = async (payload) => {
|
|
46
|
+
return openDialog({
|
|
47
|
+
...payload,
|
|
48
|
+
type: "info" /* INFO */
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
const warning = async (payload) => {
|
|
52
|
+
return openDialog({
|
|
53
|
+
...payload,
|
|
54
|
+
type: "warning" /* WARNING */
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
useWatchFalse(
|
|
58
|
+
() => isShow.value,
|
|
59
|
+
(val) => {
|
|
60
|
+
if (isReject.value) {
|
|
61
|
+
cancel.value();
|
|
62
|
+
} else {
|
|
63
|
+
proceed.value();
|
|
64
|
+
}
|
|
65
|
+
proceed.value = void 0;
|
|
66
|
+
cancel.value = void 0;
|
|
67
|
+
isReject.value = false;
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
return {
|
|
71
|
+
isShow,
|
|
72
|
+
meta,
|
|
73
|
+
openDialog,
|
|
74
|
+
closeDialogCancel,
|
|
75
|
+
closeDialogProceed,
|
|
76
|
+
error,
|
|
77
|
+
success,
|
|
78
|
+
info,
|
|
79
|
+
warning
|
|
80
|
+
};
|
|
81
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type DefineComponent, type ComputedRef } from 'vue';
|
|
2
|
+
import { type FieldContext, type FieldOptions } from 'vee-validate';
|
|
3
|
+
import { type IFormField } from '#core/components/Form/types';
|
|
4
|
+
export interface IFieldWrapperProps {
|
|
5
|
+
errorMessage?: string;
|
|
6
|
+
label?: string | any;
|
|
7
|
+
className?: any;
|
|
8
|
+
classInner?: any;
|
|
9
|
+
classInputInner?: any;
|
|
10
|
+
isRequired?: boolean;
|
|
11
|
+
isHideLabel?: boolean;
|
|
12
|
+
customErrorMessage?: string | DefineComponent;
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
interface IFieldContext<TValue> extends FieldContext<TValue> {
|
|
16
|
+
isRequired: ComputedRef<boolean>;
|
|
17
|
+
onChange: (e: InputEvent) => void;
|
|
18
|
+
fieldClassName: ComputedRef<any[]>;
|
|
19
|
+
disabled: ComputedRef<boolean>;
|
|
20
|
+
wrapperProps: ComputedRef<IFieldWrapperProps>;
|
|
21
|
+
}
|
|
22
|
+
export declare const useFieldHOC: <TValue = unknown>(newFormProps: IFieldProps, opts?: Partial<FieldOptions<TValue>> | undefined) => IFieldContext<TValue>;
|
|
23
|
+
export declare const createFormFields: (fields: () => IFormField[]) => any;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useField } from "vee-validate";
|
|
2
|
+
import { toTypedSchema } from "@vee-validate/zod";
|
|
3
|
+
import { computed, toRef } from "#imports";
|
|
4
|
+
export const useFieldHOC = (newFormProps, opts) => {
|
|
5
|
+
const field = useField(toRef(newFormProps, "name"), toTypedSchema(newFormProps.rules), {
|
|
6
|
+
form: newFormProps.form,
|
|
7
|
+
...opts
|
|
8
|
+
});
|
|
9
|
+
const isRequired = computed(() => false);
|
|
10
|
+
const onChange = (e) => {
|
|
11
|
+
const target = e.target;
|
|
12
|
+
const newValue = newFormProps.transform ? newFormProps.transform(target.value, field.value, e) : target.value;
|
|
13
|
+
target.value = newValue;
|
|
14
|
+
field.handleChange(newValue);
|
|
15
|
+
};
|
|
16
|
+
const fieldClassName = computed(() => {
|
|
17
|
+
return [
|
|
18
|
+
"form-control peer",
|
|
19
|
+
{
|
|
20
|
+
"input-error": !field.meta.valid && field.meta.dirty,
|
|
21
|
+
"input-success": field.meta.valid && field.meta.dirty
|
|
22
|
+
}
|
|
23
|
+
];
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
...field,
|
|
27
|
+
isRequired,
|
|
28
|
+
onChange,
|
|
29
|
+
fieldClassName,
|
|
30
|
+
disabled: computed(() => newFormProps.isDisabled ?? newFormProps.isReadOnly ?? false),
|
|
31
|
+
wrapperProps: computed(() => ({
|
|
32
|
+
label: newFormProps.label,
|
|
33
|
+
errorMessage: field.errorMessage.value,
|
|
34
|
+
className: newFormProps.class,
|
|
35
|
+
classInner: newFormProps.classInner,
|
|
36
|
+
classInputInner: newFormProps.classInputInner,
|
|
37
|
+
isRequired: isRequired.value,
|
|
38
|
+
isHideLabel: newFormProps.isHideLabel,
|
|
39
|
+
customErrorMessage: newFormProps.customErrorMessage,
|
|
40
|
+
name: newFormProps.name
|
|
41
|
+
}))
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export const createFormFields = (fields) => computed(fields);
|
|
@@ -5,14 +5,12 @@ import { type IColumn, type IRow, type ISimpleTableOptions, type ITableOptions }
|
|
|
5
5
|
export interface IUseTable<T = object> {
|
|
6
6
|
repo: IUsePageLoader<T> | Store<any, any>;
|
|
7
7
|
columns: () => IColumn[];
|
|
8
|
-
rows: (items: T[]) => IRow[];
|
|
9
8
|
options?: (() => Partial<ITableOptions<T>>) | Partial<ITableOptions<T>>;
|
|
10
9
|
}
|
|
11
10
|
export interface IUseSimpleTable<T = object> {
|
|
12
11
|
items: () => T[];
|
|
13
12
|
status?: () => IStatus;
|
|
14
13
|
columns: () => IColumn[];
|
|
15
|
-
rows: (items: T[]) => IRow[];
|
|
16
14
|
options?: (() => Partial<ISimpleTableOptions<T>>) | Partial<ISimpleTableOptions<T>>;
|
|
17
15
|
}
|
|
18
16
|
export declare const useTable: <T = object>(options: IUseTable<T>) => ComputedRef<ITableOptions<T>>;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { get } from "@vueuse/core";
|
|
2
2
|
import { computed, ObjectHelper } from "#imports";
|
|
3
|
-
import {
|
|
4
|
-
import { app } from "#core/core.config";
|
|
5
|
-
import appConfig from "#build/app.config";
|
|
3
|
+
import { useCoreConfig } from "./useConfig.mjs";
|
|
6
4
|
export const useTable = (options) => computed(() => {
|
|
7
5
|
return createTableOptions(
|
|
8
6
|
options.repo,
|
|
9
7
|
options.columns(),
|
|
10
|
-
|
|
8
|
+
get(options.repo.fetchItems),
|
|
11
9
|
typeof options.options === "function" ? options.options() : options.options ?? {}
|
|
12
10
|
);
|
|
13
11
|
});
|
|
14
12
|
export const useSimpleTable = (options) => computed(() => {
|
|
15
|
-
const config =
|
|
13
|
+
const config = useCoreConfig();
|
|
16
14
|
return {
|
|
17
15
|
items: options.items(),
|
|
18
16
|
columns: options.columns(),
|
|
19
|
-
rows: options.rows(options.items()),
|
|
20
17
|
rawData: options.items(),
|
|
21
18
|
status: options.status ? options.status() : ObjectHelper.createStatus(),
|
|
22
19
|
primary: config.default_primary_key,
|
|
@@ -24,12 +21,11 @@ export const useSimpleTable = (options) => computed(() => {
|
|
|
24
21
|
};
|
|
25
22
|
});
|
|
26
23
|
export const createTableOptions = (repo, columns, rows, options) => {
|
|
27
|
-
const config =
|
|
24
|
+
const config = useCoreConfig();
|
|
28
25
|
return {
|
|
29
26
|
rawData: get(repo.fetchItems),
|
|
30
27
|
pageOptions: get(repo.fetchOptions),
|
|
31
28
|
columns,
|
|
32
|
-
rows,
|
|
33
29
|
status: get(repo.fetchStatus),
|
|
34
30
|
deleteStatus: get(repo.deleteStatus),
|
|
35
31
|
primary: get(repo.fetchOptions).primary ?? config.default_primary_key,
|
|
@@ -2,9 +2,7 @@ import { ObjectHelper } from "../utils/ObjectHelper.mjs";
|
|
|
2
2
|
import { ParamHelper } from "#core/utils/ParamHelper";
|
|
3
3
|
import { NewRequester } from "#core/lib/Requester";
|
|
4
4
|
import { _findIndex, _get, _shuffle } from "#core/utils/lodash";
|
|
5
|
-
import {
|
|
6
|
-
import { app } from "#core/core.config";
|
|
7
|
-
import appConfig from "#build/app.config";
|
|
5
|
+
import { useCoreConfig } from "../composables/useConfig.mjs";
|
|
8
6
|
export const apiAddHelper = async (state, onUpdateStatus, onUpdateOptions, onUpdateData, onUpdateItems, data, opts) => {
|
|
9
7
|
onUpdateStatus(ObjectHelper.toLoadingStatus(state().status));
|
|
10
8
|
onUpdateOptions({});
|
|
@@ -90,7 +88,7 @@ export const apiDeleteHelper = async (state, onUpdateStatus, onUpdateOptions, _o
|
|
|
90
88
|
onUpdateStatus(ObjectHelper.toCompleteStatus(state().status));
|
|
91
89
|
};
|
|
92
90
|
export const apiFetchHelper = async (state, onUpdateStatus, onUpdateOptions, onUpdateItems, page, query, opts) => {
|
|
93
|
-
const config =
|
|
91
|
+
const config = useCoreConfig();
|
|
94
92
|
const timestamp = state().options._timestamp;
|
|
95
93
|
if (opts.expire && timestamp) {
|
|
96
94
|
if (timestamp + opts.expire > Date.now()) {
|
package/dist/runtime/plugin.mjs
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type UIComponentList = 'modal' | 'slideover';
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { modal as inheritModal, slideover as inheritSlideover } from "#ui/ui.config";
|
|
2
|
+
export const modal = {
|
|
3
|
+
...inheritModal,
|
|
4
|
+
header: "px-4 py-2 border-b",
|
|
5
|
+
innerWrapper: "p-4",
|
|
6
|
+
size: {
|
|
7
|
+
sm: "sm:max-w-sm",
|
|
8
|
+
md: "sm:max-w-lg",
|
|
9
|
+
lg: "sm:max-w-2xl",
|
|
10
|
+
xl: "sm:max-w-4xl"
|
|
11
|
+
},
|
|
12
|
+
position: {
|
|
13
|
+
top: "flex min-h-full items-end sm:items-start justify-center text-center",
|
|
14
|
+
center: "flex min-h-full items-end sm:items-center justify-center text-center",
|
|
15
|
+
bottom: "flex min-h-full items-end sm:items-end justify-center text-center"
|
|
16
|
+
},
|
|
17
|
+
fixHeightSize: {
|
|
18
|
+
default: "max-h-[calc(100vh-4rem)]",
|
|
19
|
+
sm: "max-h-[256px]",
|
|
20
|
+
md: "max-h-[512px]",
|
|
21
|
+
lg: "max-h-[768px]",
|
|
22
|
+
xl: "max-h-[1024px]"
|
|
23
|
+
},
|
|
24
|
+
default: {
|
|
25
|
+
size: "md",
|
|
26
|
+
position: "center",
|
|
27
|
+
fixHeightSize: "default"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export const slideover = {
|
|
31
|
+
...inheritSlideover,
|
|
32
|
+
bodyWrapper: "p-4",
|
|
33
|
+
size: {
|
|
34
|
+
sm: "w-screen max-w-xs",
|
|
35
|
+
md: "w-screen max-w-md",
|
|
36
|
+
lg: "w-screen max-w-xl",
|
|
37
|
+
xl: "w-screen max-w-2xl",
|
|
38
|
+
half: "w-screen max-w-[calc(100vw/2)]",
|
|
39
|
+
full: "w-screen max-w-full"
|
|
40
|
+
},
|
|
41
|
+
default: {
|
|
42
|
+
size: "md"
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--color-primary-50: 248 248 255;
|
|
3
|
+
--color-primary-100: 232 239 253;
|
|
4
|
+
--color-primary-200: 190 227 248;
|
|
5
|
+
--color-primary-300: 144 205 244;
|
|
6
|
+
--color-primary-400: 99 179 237;
|
|
7
|
+
--color-primary-500: 54 117 251;
|
|
8
|
+
--color-primary-600: 0 104 254;
|
|
9
|
+
--color-primary-700: 43 108 176;
|
|
10
|
+
--color-primary-800: 44 82 130;
|
|
11
|
+
--color-primary-900: 32 36 62;
|
|
12
|
+
--color-primary-950: 32 36 62;
|
|
13
|
+
--color-primary-DEFAULT: 54 117 251;
|
|
14
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type IError } from '../types/common';
|
|
1
|
+
import { type IError, type IGetParams } from '../types/common';
|
|
2
2
|
export declare class ParamHelper {
|
|
3
|
-
static getParams: (opts: IGetParams, reqOptions: IGetParams) => any;
|
|
3
|
+
static getParams: (opts: IGetParams, reqOptions: IGetParams) => Record<string, any> | undefined;
|
|
4
4
|
static getBoolTrue: (bool: any) => boolean;
|
|
5
5
|
static getBoolFalse: (bool: any) => boolean;
|
|
6
6
|
static isNotFoundError: (error: IError | any) => boolean;
|
|
@@ -33,7 +33,7 @@ export class StringHelper {
|
|
|
33
33
|
if (errorData.code !== "INVALID_PARAMS" && !errorData.fields) {
|
|
34
34
|
return msg;
|
|
35
35
|
}
|
|
36
|
-
for (const [
|
|
36
|
+
for (const [, value] of Object.entries(errorData.fields)) {
|
|
37
37
|
msg = value.message;
|
|
38
38
|
}
|
|
39
39
|
return msg;
|
|
@@ -43,6 +43,13 @@ export declare const _map: {
|
|
|
43
43
|
<T_5>(collection: lodash.Dictionary<T_5> | lodash.NumericDictionary<T_5> | null | undefined, iteratee?: string | undefined): any[];
|
|
44
44
|
<T_6>(collection: lodash.Dictionary<T_6> | lodash.NumericDictionary<T_6> | null | undefined, iteratee?: object | undefined): boolean[];
|
|
45
45
|
};
|
|
46
|
+
export declare const _merge: {
|
|
47
|
+
<TObject, TSource>(object: TObject, source: TSource): TObject & TSource;
|
|
48
|
+
<TObject_1, TSource1, TSource2>(object: TObject_1, source1: TSource1, source2: TSource2): TObject_1 & TSource1 & TSource2;
|
|
49
|
+
<TObject_2, TSource1_1, TSource2_1, TSource3>(object: TObject_2, source1: TSource1_1, source2: TSource2_1, source3: TSource3): TObject_2 & TSource1_1 & TSource2_1 & TSource3;
|
|
50
|
+
<TObject_3, TSource1_2, TSource2_2, TSource3_1, TSource4>(object: TObject_3, source1: TSource1_2, source2: TSource2_2, source3: TSource3_1, source4: TSource4): TObject_3 & TSource1_2 & TSource2_2 & TSource3_1 & TSource4;
|
|
51
|
+
(object: any, ...otherArgs: any[]): any;
|
|
52
|
+
};
|
|
46
53
|
export declare const _flatDeep: <T>(array: lodash.ListOfRecursiveArraysOrValues<T> | null | undefined) => lodash.Flat<T>[];
|
|
47
54
|
export declare const _uniq: <T>(array: lodash.List<T> | null | undefined) => T[];
|
|
48
55
|
export declare const _sortBy: {
|
|
@@ -8,6 +8,7 @@ export const _dropRight = lodash.dropRight;
|
|
|
8
8
|
export const _intersection = lodash.intersection;
|
|
9
9
|
export const _set = lodash.set;
|
|
10
10
|
export const _map = lodash.map;
|
|
11
|
+
export const _merge = lodash.merge;
|
|
11
12
|
export const _flatDeep = lodash.flattenDeep;
|
|
12
13
|
export const _uniq = lodash.uniq;
|
|
13
14
|
export const _sortBy = lodash.sortBy;
|
package/dist/types.d.mts
CHANGED
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finema/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"repository": "https://gitlab.finema.co/finema/ui-kit",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Finema Development Team",
|
|
@@ -29,40 +29,38 @@
|
|
|
29
29
|
"lint:fix": "eslint . --fix",
|
|
30
30
|
"test": "vitest run",
|
|
31
31
|
"test:watch": "vitest watch",
|
|
32
|
-
"release": "release-it"
|
|
32
|
+
"release": "release-it",
|
|
33
|
+
"prepare": "husky install"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
36
|
+
"@headlessui/vue": "^1.7.16",
|
|
37
|
+
"@iconify-json/mdi": "^1.1.54",
|
|
38
|
+
"@iconify-json/simple-icons": "^1.1.76",
|
|
35
39
|
"@nuxt/kit": "^3.7.4",
|
|
36
40
|
"@nuxt/ui": "^2.9.0",
|
|
37
41
|
"@pinia/nuxt": "^0.4.11",
|
|
38
42
|
"@vee-validate/nuxt": "^4.11.8",
|
|
43
|
+
"@vee-validate/zod": "^4.11.8",
|
|
39
44
|
"axios": "^1.5.1",
|
|
40
45
|
"dayjs": "^1.11.10",
|
|
41
46
|
"lodash": "^4.17.21",
|
|
42
47
|
"nuxt-security": "^0.14.4",
|
|
43
48
|
"pinia": "^2.1.6",
|
|
44
|
-
"url-join": "^5.0.0"
|
|
49
|
+
"url-join": "^5.0.0",
|
|
50
|
+
"zod": "^3.22.4"
|
|
45
51
|
},
|
|
46
52
|
"devDependencies": {
|
|
53
|
+
"@finema/eslint-config": "^1.2.0",
|
|
47
54
|
"@nuxt/devtools": "latest",
|
|
48
55
|
"@nuxt/eslint-config": "^0.2.0",
|
|
49
56
|
"@nuxt/module-builder": "^0.5.2",
|
|
50
57
|
"@nuxt/schema": "^3.7.4",
|
|
51
58
|
"@nuxt/test-utils": "^3.7.4",
|
|
52
|
-
"@nuxtjs/eslint-config-typescript": "^12.1.0",
|
|
53
59
|
"@release-it/conventional-changelog": "^7.0.2",
|
|
54
60
|
"@types/lodash": "^4.14.199",
|
|
55
61
|
"@types/node": "^18.18.1",
|
|
56
62
|
"changelogen": "^0.5.5",
|
|
57
63
|
"eslint": "^8.50.0",
|
|
58
|
-
"eslint-config-prettier": "^9.0.0",
|
|
59
|
-
"eslint-config-standard-with-typescript": "^39.1.0",
|
|
60
|
-
"eslint-plugin-import": "^2.28.1",
|
|
61
|
-
"eslint-plugin-n": "^16.1.0",
|
|
62
|
-
"eslint-plugin-nuxt": "^4.0.0",
|
|
63
|
-
"eslint-plugin-prettier": "^5.0.0",
|
|
64
|
-
"eslint-plugin-unused-imports": "^3.0.0",
|
|
65
|
-
"eslint-plugin-vue": "^9.17.0",
|
|
66
64
|
"husky": "^8.0.3",
|
|
67
65
|
"lint-staged": "^14.0.1",
|
|
68
66
|
"nuxt": "^3.7.4",
|