@winchsa/ui 0.1.4 → 0.1.5
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/forms/ManualDate.vue +1 -1
- package/dist/lang/ar.json +54 -0
- package/dist/lang/en.json +54 -0
- package/dist/types.d.ts +1 -15
- package/dist/utils/client.js +14 -0
- package/dist/utils/client.mjs +14 -0
- package/dist/utils/i18n.d.ts +8 -0
- package/dist/utils/i18n.js +36 -0
- package/dist/utils/i18n.mjs +27 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.mjs +1 -0
- package/dist/utils/toaster.js +5 -8
- package/dist/utils/toaster.mjs +5 -6
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +16 -2
- package/dist/utils/utils.mjs +11 -0
- package/package.json +4 -4
- package/dist/composables/useFormValidation.d.ts +0 -0
- package/dist/composables/useFormValidation.js +0 -1
- package/dist/composables/useFormValidation.mjs +0 -0
- package/dist/styles/@core/scss/template/libs/apex-chart.css +0 -90
- package/dist/styles/@core/scss/template/libs/apex-chart.scss +0 -99
- package/dist/styles/@core/scss/template/libs/shepherd.css +0 -82
- package/dist/styles/@core/scss/template/libs/shepherd.scss +0 -88
- /package/dist/utils/{hijri-date.d.ts → hijriDate.d.ts} +0 -0
- /package/dist/utils/{hijri-date.js → hijriDate.js} +0 -0
- /package/dist/utils/{hijri-date.mjs → hijriDate.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { HijriJS } from "../../utils/
|
|
2
|
+
import { HijriJS } from "../../utils/hijriDate";
|
|
3
3
|
import { computed, ref, watch } from "vue";
|
|
4
4
|
import { useI18n } from "vue-i18n";
|
|
5
5
|
import { VLabel, VIcon, VValidation, VMessages } from "vuetify/components";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"days": {
|
|
3
|
+
"1": "الأحد",
|
|
4
|
+
"2": "الإثنين",
|
|
5
|
+
"3": "الثلاثاء",
|
|
6
|
+
"4": "الأربعاء",
|
|
7
|
+
"5": "الخميس",
|
|
8
|
+
"6": "الجمعة",
|
|
9
|
+
"7": "السبت"
|
|
10
|
+
},
|
|
11
|
+
"days_ranges": {
|
|
12
|
+
"today": "اليوم",
|
|
13
|
+
"week": "أسبوع",
|
|
14
|
+
"yesterday": "أمس",
|
|
15
|
+
"current_month": "الشهر الحالي",
|
|
16
|
+
"previous_month": "الشهر السابق",
|
|
17
|
+
"last_3_months": "آخر 3 شهور",
|
|
18
|
+
"last_6_months": "آخر 6 شهور",
|
|
19
|
+
"current_year": "السنة الحالية",
|
|
20
|
+
"last_2_years": "آخر سنتين",
|
|
21
|
+
"last_3_years": "آخر 3 سنوات"
|
|
22
|
+
},
|
|
23
|
+
"currency": {
|
|
24
|
+
"sr": "ر.س"
|
|
25
|
+
},
|
|
26
|
+
"measurement_units": {
|
|
27
|
+
"km": "كم",
|
|
28
|
+
"km_h": "كم/س"
|
|
29
|
+
},
|
|
30
|
+
"http": {
|
|
31
|
+
"403": "ليس لديك صلاحية لتنفيذ العملية",
|
|
32
|
+
"429": "لقد تخطيت عدد محاولات المسموح به ، الرجاء المحاولة لاحقاً",
|
|
33
|
+
"500": "خلل أثناء تنفيذ العملية"
|
|
34
|
+
},
|
|
35
|
+
"validation": {
|
|
36
|
+
"email": "يجب أن يكون عنوان بريد إلكتروني صحيح ",
|
|
37
|
+
"required": "هذا الحقل مطلوب",
|
|
38
|
+
"confirmed": " كلمة المرور غير متطابق",
|
|
39
|
+
"password_confirmation": "تأكيد كلمة المرور",
|
|
40
|
+
"between": "أدخل رقماً بين {min} و {max}",
|
|
41
|
+
"integer": "يجب أن يكون الحقل عددًا صحيحًا",
|
|
42
|
+
"number": "يجب أن يكون الحقل رقماً ",
|
|
43
|
+
"alphabetic": "يجب أن يكون الحقل أحرف أبجدية",
|
|
44
|
+
"url": "يجب أن يكون الحقل عنوان URL صالحًا",
|
|
45
|
+
"length": "يجب أن يكون الحقل {length} حرفًا",
|
|
46
|
+
"alpha_dash": "غير مسموح بجميع الأحرف",
|
|
47
|
+
"file_size_limit_exceeded": "يجب أن يكون حجم الملف أقل من {size} ميجابايت",
|
|
48
|
+
"file_type_not_allowed": "يجب أن يكون نوع الملف {types}",
|
|
49
|
+
"optional": "اختياري",
|
|
50
|
+
"date": "يجب أن يكون التاريخ {format}",
|
|
51
|
+
"iban": "هذا الحقل يجب ان يتكون من 24 خانة على الأقل ويكون بصيغة الآيبان",
|
|
52
|
+
"invalid": "هذا الحقل غير صحيح"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"days": {
|
|
3
|
+
"1": "Sun",
|
|
4
|
+
"2": "Mon",
|
|
5
|
+
"3": "Tue",
|
|
6
|
+
"4": "Wed",
|
|
7
|
+
"5": "Thu",
|
|
8
|
+
"6": "Fri",
|
|
9
|
+
"7": "Sat"
|
|
10
|
+
},
|
|
11
|
+
"days_ranges": {
|
|
12
|
+
"today": "Today",
|
|
13
|
+
"week": "Week",
|
|
14
|
+
"yesterday": "Yesterday",
|
|
15
|
+
"current_month": "Current month",
|
|
16
|
+
"previous_month": "Previous month",
|
|
17
|
+
"last_3_months": "Last 3 months",
|
|
18
|
+
"last_6_months": "Last 3 months",
|
|
19
|
+
"current_year": "Current year",
|
|
20
|
+
"last_2_years": "Last 2 years",
|
|
21
|
+
"last_3_years": "Last 3 years"
|
|
22
|
+
},
|
|
23
|
+
"currency": {
|
|
24
|
+
"sr": "SAR"
|
|
25
|
+
},
|
|
26
|
+
"measurement_units": {
|
|
27
|
+
"km": "KM",
|
|
28
|
+
"km_h": "KM/H"
|
|
29
|
+
},
|
|
30
|
+
"http": {
|
|
31
|
+
"403": "You do not have permission to perform this operation",
|
|
32
|
+
"429": "You have exceeded the number of attempts allowed, please try again later",
|
|
33
|
+
"500": "An error occurred during the execution of the operation"
|
|
34
|
+
},
|
|
35
|
+
"validation": {
|
|
36
|
+
"email": "The Email field must be a valid email",
|
|
37
|
+
"required": "This field is required",
|
|
38
|
+
"confirmed": "Password does not match",
|
|
39
|
+
"password_confirmation": "Password confirmation",
|
|
40
|
+
"between": "Enter a number between {min} and {max}",
|
|
41
|
+
"integer": "Field must be an integer",
|
|
42
|
+
"number": "Field must be a number",
|
|
43
|
+
"alphabetic": "Field must be alphabetic",
|
|
44
|
+
"url": "Field must be a valid URL",
|
|
45
|
+
"length": "Field must be {length} characters",
|
|
46
|
+
"alpha_dash": "All characters are not allowed",
|
|
47
|
+
"file_size_limit_exceeded": "File size must be less than {size} MB",
|
|
48
|
+
"file_type_not_allowed": "Must be one of the following types: {types}",
|
|
49
|
+
"optional": "Optional",
|
|
50
|
+
"date": "Must be date in format {format}",
|
|
51
|
+
"iban": "This Field Must Consist of at Least 24 Characters and Be in IBAN Format",
|
|
52
|
+
"invalid": "This Field is invalid"
|
|
53
|
+
}
|
|
54
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -204,23 +204,9 @@ export type GridColumn = {
|
|
|
204
204
|
xxl?: string
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
// Suppress intlify type inference errors
|
|
208
|
-
declare module '@intlify/core-base' {
|
|
209
|
-
export interface CoreTranslation {
|
|
210
|
-
[key: string]: any;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Global type augmentation to suppress TS2742 errors
|
|
215
207
|
declare global {
|
|
216
208
|
interface Window {
|
|
217
|
-
|
|
209
|
+
i18n?: any;
|
|
218
210
|
}
|
|
219
211
|
}
|
|
220
212
|
|
|
221
|
-
// Suppress TS2742 errors for vue-i18n
|
|
222
|
-
declare module 'vue-i18n' {
|
|
223
|
-
interface ComposerTranslation {
|
|
224
|
-
(key: string, ...args: any[]): string;
|
|
225
|
-
}
|
|
226
|
-
}
|
package/dist/utils/client.js
CHANGED
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.client = void 0;
|
|
7
7
|
var _ofetch = require("ofetch");
|
|
8
|
+
var _toaster = require("./toaster");
|
|
9
|
+
var _i18n = require("./i18n");
|
|
8
10
|
const clientInstance = _ofetch.ofetch.create({
|
|
9
11
|
credentials: "include"
|
|
10
12
|
});
|
|
@@ -31,6 +33,18 @@ async function apiRequest(method, path, options) {
|
|
|
31
33
|
}),
|
|
32
34
|
...headers
|
|
33
35
|
},
|
|
36
|
+
onResponseError: error => {
|
|
37
|
+
if (error.response.status === 401) {
|
|
38
|
+
localStorage.clear();
|
|
39
|
+
window.location.href = "/login";
|
|
40
|
+
}
|
|
41
|
+
if (error.response.status === 500) {
|
|
42
|
+
(0, _toaster.toaster)().error((0, _i18n.i18n)().global.t("http.500"));
|
|
43
|
+
}
|
|
44
|
+
if (error.response.status === 429) {
|
|
45
|
+
(0, _toaster.toaster)().error((0, _i18n.i18n)().global.t("http.429"));
|
|
46
|
+
}
|
|
47
|
+
},
|
|
34
48
|
...restOptions
|
|
35
49
|
});
|
|
36
50
|
}
|
package/dist/utils/client.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ofetch } from "ofetch";
|
|
2
|
+
import { toaster } from "./toaster.mjs";
|
|
3
|
+
import { i18n } from "./i18n.mjs";
|
|
2
4
|
const clientInstance = ofetch.create({ credentials: "include" });
|
|
3
5
|
async function apiRequest(method, path, options) {
|
|
4
6
|
const baseUrl = import.meta.env.VITE_BASE_API;
|
|
@@ -17,6 +19,18 @@ async function apiRequest(method, path, options) {
|
|
|
17
19
|
...token && { Authorization: `Bearer ${token}` },
|
|
18
20
|
...headers
|
|
19
21
|
},
|
|
22
|
+
onResponseError: (error) => {
|
|
23
|
+
if (error.response.status === 401) {
|
|
24
|
+
localStorage.clear();
|
|
25
|
+
window.location.href = "/login";
|
|
26
|
+
}
|
|
27
|
+
if (error.response.status === 500) {
|
|
28
|
+
toaster().error(i18n().global.t("http.500"));
|
|
29
|
+
}
|
|
30
|
+
if (error.response.status === 429) {
|
|
31
|
+
toaster().error(i18n().global.t("http.429"));
|
|
32
|
+
}
|
|
33
|
+
},
|
|
20
34
|
...restOptions
|
|
21
35
|
});
|
|
22
36
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.i18n = exports.createI18nInstance = void 0;
|
|
7
|
+
var _vueI18n = require("vue-i18n");
|
|
8
|
+
var _en = _interopRequireDefault(require("../lang/en.json"));
|
|
9
|
+
var _ar = _interopRequireDefault(require("../lang/ar.json"));
|
|
10
|
+
var _utils = require("./utils");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
const defaultMessages = {
|
|
13
|
+
en: _en.default,
|
|
14
|
+
ar: _ar.default
|
|
15
|
+
};
|
|
16
|
+
let _i18nInstance = (0, _vueI18n.createI18n)({
|
|
17
|
+
legacy: false,
|
|
18
|
+
locale: "ar",
|
|
19
|
+
fallbackLocale: "ar",
|
|
20
|
+
globalInjection: true,
|
|
21
|
+
messages: defaultMessages
|
|
22
|
+
});
|
|
23
|
+
const i18n = () => _i18nInstance;
|
|
24
|
+
exports.i18n = i18n;
|
|
25
|
+
const createI18nInstance = messages => {
|
|
26
|
+
const mergedMessages = (0, _utils.mergeDeep)(defaultMessages, messages);
|
|
27
|
+
_i18nInstance = (0, _vueI18n.createI18n)({
|
|
28
|
+
legacy: false,
|
|
29
|
+
locale: "ar",
|
|
30
|
+
fallbackLocale: "ar",
|
|
31
|
+
globalInjection: true,
|
|
32
|
+
messages: mergedMessages
|
|
33
|
+
});
|
|
34
|
+
return _i18nInstance;
|
|
35
|
+
};
|
|
36
|
+
exports.createI18nInstance = createI18nInstance;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createI18n } from "vue-i18n";
|
|
2
|
+
import en from "../lang/en.json";
|
|
3
|
+
import ar from "../lang/ar.json";
|
|
4
|
+
import { mergeDeep } from "./utils.mjs";
|
|
5
|
+
const defaultMessages = {
|
|
6
|
+
en,
|
|
7
|
+
ar
|
|
8
|
+
};
|
|
9
|
+
let _i18nInstance = createI18n({
|
|
10
|
+
legacy: false,
|
|
11
|
+
locale: "ar",
|
|
12
|
+
fallbackLocale: "ar",
|
|
13
|
+
globalInjection: true,
|
|
14
|
+
messages: defaultMessages
|
|
15
|
+
});
|
|
16
|
+
export const i18n = () => _i18nInstance;
|
|
17
|
+
export const createI18nInstance = (messages) => {
|
|
18
|
+
const mergedMessages = mergeDeep(defaultMessages, messages);
|
|
19
|
+
_i18nInstance = createI18n({
|
|
20
|
+
legacy: false,
|
|
21
|
+
locale: "ar",
|
|
22
|
+
fallbackLocale: "ar",
|
|
23
|
+
globalInjection: true,
|
|
24
|
+
messages: mergedMessages
|
|
25
|
+
});
|
|
26
|
+
return _i18nInstance;
|
|
27
|
+
};
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -91,6 +91,17 @@ Object.keys(_toaster).forEach(function (key) {
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
});
|
|
94
|
+
var _i18n = require("./i18n");
|
|
95
|
+
Object.keys(_i18n).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _i18n[key]) return;
|
|
98
|
+
Object.defineProperty(exports, key, {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () {
|
|
101
|
+
return _i18n[key];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
94
105
|
var _utils = require("./utils");
|
|
95
106
|
Object.keys(_utils).forEach(function (key) {
|
|
96
107
|
if (key === "default" || key === "__esModule") return;
|
package/dist/utils/index.mjs
CHANGED
package/dist/utils/toaster.js
CHANGED
|
@@ -6,22 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.responseAlert = responseAlert;
|
|
7
7
|
exports.toaster = void 0;
|
|
8
8
|
var _vueSonner = require("vue-sonner");
|
|
9
|
-
var
|
|
9
|
+
var _i18n = require("./i18n");
|
|
10
10
|
const toaster = () => {
|
|
11
|
-
const {
|
|
12
|
-
t
|
|
13
|
-
} = (0, _vueI18n.useI18n)();
|
|
14
11
|
const success = message => {
|
|
15
|
-
_vueSonner.toast.success(message ?? t("success"));
|
|
12
|
+
_vueSonner.toast.success(message ?? (0, _i18n.i18n)().global.t("success"));
|
|
16
13
|
};
|
|
17
14
|
const error = message => {
|
|
18
|
-
_vueSonner.toast.error(message ?? t("error"));
|
|
15
|
+
_vueSonner.toast.error(message ?? (0, _i18n.i18n)().global.t("error"));
|
|
19
16
|
};
|
|
20
17
|
const successLang = message => {
|
|
21
|
-
_vueSonner.toast.success(t(message));
|
|
18
|
+
_vueSonner.toast.success((0, _i18n.i18n)().global.t(message));
|
|
22
19
|
};
|
|
23
20
|
const errorLang = message => {
|
|
24
|
-
_vueSonner.toast.error(t(message));
|
|
21
|
+
_vueSonner.toast.error((0, _i18n.i18n)().global.t(message));
|
|
25
22
|
};
|
|
26
23
|
return {
|
|
27
24
|
success,
|
package/dist/utils/toaster.mjs
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { toast as sonnerToast } from "vue-sonner";
|
|
2
|
-
import {
|
|
2
|
+
import { i18n } from "./i18n.mjs";
|
|
3
3
|
export const toaster = () => {
|
|
4
|
-
const { t } = useI18n();
|
|
5
4
|
const success = (message) => {
|
|
6
|
-
sonnerToast.success(message ?? t("success"));
|
|
5
|
+
sonnerToast.success(message ?? i18n().global.t("success"));
|
|
7
6
|
};
|
|
8
7
|
const error = (message) => {
|
|
9
|
-
sonnerToast.error(message ?? t("error"));
|
|
8
|
+
sonnerToast.error(message ?? i18n().global.t("error"));
|
|
10
9
|
};
|
|
11
10
|
const successLang = (message) => {
|
|
12
|
-
sonnerToast.success(t(message));
|
|
11
|
+
sonnerToast.success(i18n().global.t(message));
|
|
13
12
|
};
|
|
14
13
|
const errorLang = (message) => {
|
|
15
|
-
sonnerToast.error(t(message));
|
|
14
|
+
sonnerToast.error(i18n().global.t(message));
|
|
16
15
|
};
|
|
17
16
|
return {
|
|
18
17
|
success,
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export declare const isEmptyArray: (arr: unknown) => boolean;
|
|
|
6
6
|
export declare const buildFormData: <T>(data: T | T[], excludedKeys?: string[], formData?: FormData, parentKey?: string) => FormData;
|
|
7
7
|
export declare const stripLeadingZero: (mobile: string) => string;
|
|
8
8
|
export declare const cloneObjectDeep: <T>(obj: T) => T;
|
|
9
|
+
export declare const mergeDeep: (target: any, source: any) => any;
|
package/dist/utils/utils.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.stripLeadingZero = exports.isNullOrUndefined = exports.isEmptyArray = exports.isEmpty = exports.generateUniqueId = exports.generateRandomId = exports.cloneObjectDeep = exports.buildFormData = void 0;
|
|
6
|
+
exports.stripLeadingZero = exports.mergeDeep = exports.isNullOrUndefined = exports.isEmptyArray = exports.isEmpty = exports.generateUniqueId = exports.generateRandomId = exports.cloneObjectDeep = exports.buildFormData = void 0;
|
|
7
7
|
const generateRandomId = length => {
|
|
8
8
|
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
9
9
|
let result = "";
|
|
@@ -67,4 +67,18 @@ exports.stripLeadingZero = stripLeadingZero;
|
|
|
67
67
|
const cloneObjectDeep = obj => {
|
|
68
68
|
return JSON.parse(JSON.stringify(obj));
|
|
69
69
|
};
|
|
70
|
-
exports.cloneObjectDeep = cloneObjectDeep;
|
|
70
|
+
exports.cloneObjectDeep = cloneObjectDeep;
|
|
71
|
+
const mergeDeep = (target, source) => {
|
|
72
|
+
const output = {
|
|
73
|
+
...target
|
|
74
|
+
};
|
|
75
|
+
for (const key in source) {
|
|
76
|
+
if (typeof source[key] === "object" && source[key] !== null && !Array.isArray(source[key])) {
|
|
77
|
+
output[key] = mergeDeep(target[key] || {}, source[key]);
|
|
78
|
+
} else {
|
|
79
|
+
output[key] = source[key];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return output;
|
|
83
|
+
};
|
|
84
|
+
exports.mergeDeep = mergeDeep;
|
package/dist/utils/utils.mjs
CHANGED
|
@@ -54,3 +54,14 @@ export const stripLeadingZero = (mobile) => {
|
|
|
54
54
|
export const cloneObjectDeep = (obj) => {
|
|
55
55
|
return JSON.parse(JSON.stringify(obj));
|
|
56
56
|
};
|
|
57
|
+
export const mergeDeep = (target, source) => {
|
|
58
|
+
const output = { ...target };
|
|
59
|
+
for (const key in source) {
|
|
60
|
+
if (typeof source[key] === "object" && source[key] !== null && !Array.isArray(source[key])) {
|
|
61
|
+
output[key] = mergeDeep(target[key] || {}, source[key]);
|
|
62
|
+
} else {
|
|
63
|
+
output[key] = source[key];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return output;
|
|
67
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@winchsa/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -26,22 +26,22 @@
|
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@intlify/unplugin-vue-i18n": "^4.0.0",
|
|
28
28
|
"@tanstack/vue-query": "^5.74.5",
|
|
29
|
-
"@vuepic/vue-datepicker": "^11.0.0",
|
|
30
29
|
"@vueuse/core": "11.3.0",
|
|
31
30
|
"@vueuse/router": "^13.1.0",
|
|
32
31
|
"ofetch": "^1.4.1",
|
|
33
32
|
"vue": "^3.5.13",
|
|
34
33
|
"vue-i18n": "9.14.4",
|
|
35
|
-
"vue-multiselect": "^3.1.0",
|
|
36
34
|
"vue-router": "4.4.5",
|
|
35
|
+
"vue-sonner": "^1.3.0",
|
|
37
36
|
"vue3-perfect-scrollbar": "2.0.0",
|
|
38
37
|
"vuetify": "3.3.12"
|
|
39
38
|
},
|
|
40
39
|
"dependencies": {
|
|
40
|
+
"@vuepic/vue-datepicker": "^11.0.0",
|
|
41
41
|
"cropperjs": "^1.6.2",
|
|
42
42
|
"print-js": "^1.6.0",
|
|
43
43
|
"v-calendar": "^3.1.2",
|
|
44
|
-
"vue-
|
|
44
|
+
"vue-multiselect": "^3.1.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@tanstack/eslint-plugin-query": "^5.73.3",
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
File without changes
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";
|
|
2
|
-
/** if false, disabled buttons will be greyed out */
|
|
3
|
-
/*
|
|
4
|
-
TODO: Add docs on when to use placeholder vs when to use SASS variable
|
|
5
|
-
|
|
6
|
-
Placeholder
|
|
7
|
-
- When we want to keep customization to our self between templates use it
|
|
8
|
-
|
|
9
|
-
Variables
|
|
10
|
-
- When we want to allow customization from both user and our side
|
|
11
|
-
- You can also use variable for consistency (e.g. mx 1 rem should be applied to both vertical nav items and vertical nav header)
|
|
12
|
-
*/
|
|
13
|
-
/*
|
|
14
|
-
❗ Heads up
|
|
15
|
-
==================
|
|
16
|
-
Here we assume we will always use shorthand property which will apply same padding on four side
|
|
17
|
-
This is because this have been used as value of top property by `.popper-content`
|
|
18
|
-
*/
|
|
19
|
-
.v-application .apexcharts-canvasline[stroke=transparent] {
|
|
20
|
-
display: "none";
|
|
21
|
-
}
|
|
22
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip {
|
|
23
|
-
box-shadow: 0 3px 8px rgba(var(--v-shadow-key-umbra-color), 0.14), 0 0 transparent, 0 0 transparent;
|
|
24
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
25
|
-
background: rgb(var(--v-theme-surface));
|
|
26
|
-
}
|
|
27
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title {
|
|
28
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
29
|
-
background: rgb(var(--v-theme-surface));
|
|
30
|
-
font-weight: 500;
|
|
31
|
-
}
|
|
32
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip.apexcharts-theme-light {
|
|
33
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
34
|
-
}
|
|
35
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip.apexcharts-theme-dark {
|
|
36
|
-
color: white;
|
|
37
|
-
}
|
|
38
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-series-group:first-of-type {
|
|
39
|
-
padding-block-end: 0;
|
|
40
|
-
}
|
|
41
|
-
.v-application .apexcharts-canvas .apexcharts-xaxistooltip {
|
|
42
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
43
|
-
background: rgb(var(--v-theme-gray-50));
|
|
44
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
45
|
-
}
|
|
46
|
-
.v-application .apexcharts-canvas .apexcharts-xaxistooltip::after {
|
|
47
|
-
border-block-end-color: rgb(var(--v-theme-gray-50));
|
|
48
|
-
}
|
|
49
|
-
.v-application .apexcharts-canvas .apexcharts-xaxistooltip::before {
|
|
50
|
-
border-block-end-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
51
|
-
}
|
|
52
|
-
.v-application .apexcharts-canvas .apexcharts-yaxistooltip {
|
|
53
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
54
|
-
background: rgb(var(--v-theme-gray-50));
|
|
55
|
-
}
|
|
56
|
-
.v-application .apexcharts-canvas .apexcharts-yaxistooltip::after {
|
|
57
|
-
border-inline-start-color: rgb(var(--v-theme-gray-50));
|
|
58
|
-
}
|
|
59
|
-
.v-application .apexcharts-canvas .apexcharts-yaxistooltip::before {
|
|
60
|
-
border-inline-start-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
61
|
-
}
|
|
62
|
-
.v-application .apexcharts-canvas .apexcharts-xaxistooltip-text,
|
|
63
|
-
.v-application .apexcharts-canvas .apexcharts-yaxistooltip-text {
|
|
64
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
65
|
-
}
|
|
66
|
-
[dir=rtl] .v-application .apexcharts-canvas .apexcharts-yaxis .apexcharts-yaxis-texts-g .apexcharts-yaxis-label {
|
|
67
|
-
text-anchor: start;
|
|
68
|
-
}
|
|
69
|
-
.v-application .apexcharts-canvas .apexcharts-text,
|
|
70
|
-
.v-application .apexcharts-canvas .apexcharts-tooltip-text,
|
|
71
|
-
.v-application .apexcharts-canvas .apexcharts-datalabel-label,
|
|
72
|
-
.v-application .apexcharts-canvas .apexcharts-datalabel,
|
|
73
|
-
.v-application .apexcharts-canvas .apexcharts-xaxistooltip-text,
|
|
74
|
-
.v-application .apexcharts-canvas .apexcharts-yaxistooltip-text,
|
|
75
|
-
.v-application .apexcharts-canvas .apexcharts-legend-text {
|
|
76
|
-
font-family: "Public Sans", sans-serif, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important;
|
|
77
|
-
}
|
|
78
|
-
.v-application .apexcharts-canvas .apexcharts-pie-label {
|
|
79
|
-
fill: white;
|
|
80
|
-
filter: none;
|
|
81
|
-
}
|
|
82
|
-
.v-application .apexcharts-canvas .apexcharts-marker {
|
|
83
|
-
box-shadow: none;
|
|
84
|
-
}
|
|
85
|
-
.v-application .apexcharts-canvas .apexcharts-legend-marker {
|
|
86
|
-
margin-inline-end: 0.3875rem !important;
|
|
87
|
-
}
|
|
88
|
-
[dir=rtl] .v-application .apexcharts-canvas .apexcharts-legend-marker {
|
|
89
|
-
margin-inline-end: 0.75rem !important;
|
|
90
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
@use '../../../../assets/scss/variables/_vuetify.scss' as vuetify;
|
|
2
|
-
@use '../../../../@layouts/styles/mixins' as layoutsMixins;
|
|
3
|
-
@use '../../base/mixins';
|
|
4
|
-
|
|
5
|
-
.v-application .apexcharts-canvas {
|
|
6
|
-
&line[stroke='transparent'] {
|
|
7
|
-
display: 'none';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.apexcharts-tooltip {
|
|
11
|
-
@include mixins.elevation(3);
|
|
12
|
-
|
|
13
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
14
|
-
background: rgb(var(--v-theme-surface));
|
|
15
|
-
|
|
16
|
-
.apexcharts-tooltip-title {
|
|
17
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
18
|
-
background: rgb(var(--v-theme-surface));
|
|
19
|
-
font-weight: 500;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
&.apexcharts-theme-light {
|
|
23
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
&.apexcharts-theme-dark {
|
|
27
|
-
color: white;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.apexcharts-tooltip-series-group:first-of-type {
|
|
31
|
-
padding-block-end: 0;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.apexcharts-xaxistooltip {
|
|
36
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
37
|
-
background: rgb(var(--v-theme-gray-50));
|
|
38
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
39
|
-
|
|
40
|
-
&::after {
|
|
41
|
-
border-block-end-color: rgb(var(--v-theme-gray-50));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
&::before {
|
|
45
|
-
border-block-end-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.apexcharts-yaxistooltip {
|
|
50
|
-
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
51
|
-
background: rgb(var(--v-theme-gray-50));
|
|
52
|
-
|
|
53
|
-
&::after {
|
|
54
|
-
border-inline-start-color: rgb(var(--v-theme-gray-50));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&::before {
|
|
58
|
-
border-inline-start-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.apexcharts-xaxistooltip-text,
|
|
63
|
-
.apexcharts-yaxistooltip-text {
|
|
64
|
-
color: rgba(var(--v-theme-on-background), var(--v-high-emphasis-opacity));
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.apexcharts-yaxis .apexcharts-yaxis-texts-g .apexcharts-yaxis-label {
|
|
68
|
-
@include layoutsMixins.rtl {
|
|
69
|
-
text-anchor: start;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.apexcharts-text,
|
|
74
|
-
.apexcharts-tooltip-text,
|
|
75
|
-
.apexcharts-datalabel-label,
|
|
76
|
-
.apexcharts-datalabel,
|
|
77
|
-
.apexcharts-xaxistooltip-text,
|
|
78
|
-
.apexcharts-yaxistooltip-text,
|
|
79
|
-
.apexcharts-legend-text {
|
|
80
|
-
font-family: vuetify.$body-font-family !important;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.apexcharts-pie-label {
|
|
84
|
-
fill: white;
|
|
85
|
-
filter: none;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.apexcharts-marker {
|
|
89
|
-
box-shadow: none;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.apexcharts-legend-marker {
|
|
93
|
-
margin-inline-end: 0.3875rem !important;
|
|
94
|
-
|
|
95
|
-
@include layoutsMixins.rtl {
|
|
96
|
-
margin-inline-end: 0.75rem !important;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/** if false, disabled buttons will be greyed out */
|
|
2
|
-
.shepherd-button {
|
|
3
|
-
border-radius: 6px;
|
|
4
|
-
block-size: 1.75rem;
|
|
5
|
-
font-size: 0.8125rem;
|
|
6
|
-
font-weight: 500;
|
|
7
|
-
margin-inline-end: 0.75rem;
|
|
8
|
-
padding-block: 0.25rem;
|
|
9
|
-
padding-inline: 1rem;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.shepherd-footer {
|
|
13
|
-
background: rgb(var(--v-theme-background));
|
|
14
|
-
padding-block: 0.5rem 1rem;
|
|
15
|
-
padding-inline: 1rem;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.shepherd-element .shepherd-content .shepherd-header {
|
|
19
|
-
background: rgb(var(--v-theme-background));
|
|
20
|
-
padding-block: 1rem 0;
|
|
21
|
-
padding-inline: 1rem;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.shepherd-element .shepherd-content .shepherd-header .shepherd-title {
|
|
25
|
-
color: rgb(var(--v-theme-on-background));
|
|
26
|
-
font-size: 1.125rem;
|
|
27
|
-
font-weight: 500;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.shepherd-text {
|
|
31
|
-
padding: 1rem;
|
|
32
|
-
background: rgb(var(--v-theme-background));
|
|
33
|
-
color: rgb(var(--v-theme-on-background));
|
|
34
|
-
font-size: 0.9375rem;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.shepherd-cancel-icon {
|
|
38
|
-
color: rgba(var(--v-theme-on-background), var(--v-disabled-opacity)) !important;
|
|
39
|
-
font-size: 1.5rem;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.shepherd-element[data-popper-placement^=bottom] {
|
|
43
|
-
margin-block-start: 0.75rem !important;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.shepherd-element[data-popper-placement^=top] {
|
|
47
|
-
margin-block-end: 0.75rem !important;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.shepherd-element[data-popper-placement^=right] {
|
|
51
|
-
margin-inline-start: 0.75rem !important;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.shepherd-element[data-popper-placement^=left] {
|
|
55
|
-
margin-inline-end: 0.75rem !important;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.shepherd-element[data-popper-placement] .shepherd-arrow::before {
|
|
59
|
-
background: rgb(var(--v-theme-background)) !important;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.shepherd-element {
|
|
63
|
-
border-radius: 6px;
|
|
64
|
-
background: transparent;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.nextBtnClass,
|
|
68
|
-
.nextBtnClass:not(:disabled):hover {
|
|
69
|
-
background: rgb(var(--v-theme-primary));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.backBtnClass,
|
|
73
|
-
.backBtnClass:not(:disabled):hover {
|
|
74
|
-
background: rgba(var(--v-theme-secondary), var(--v-activated-opacity));
|
|
75
|
-
color: rgb(var(--v-theme-secondary));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@media screen and (max-width: 600px) {
|
|
79
|
-
.shepherd-element {
|
|
80
|
-
max-inline-size: 75vw;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
// commented out because it's not used
|
|
2
|
-
// @use 'shepherd.js/dist/css/shepherd.css';
|
|
3
|
-
|
|
4
|
-
@use '../../../../assets/scss/variables/vuetify.scss' as variables;
|
|
5
|
-
|
|
6
|
-
.shepherd-button {
|
|
7
|
-
border-radius: variables.$button-border-radius;
|
|
8
|
-
block-size: 1.75rem;
|
|
9
|
-
font-size: 0.8125rem;
|
|
10
|
-
font-weight: variables.$button-font-weight;
|
|
11
|
-
margin-inline-end: 0.75rem;
|
|
12
|
-
padding-block: 0.25rem;
|
|
13
|
-
padding-inline: 1rem;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.shepherd-footer {
|
|
17
|
-
background: rgb(var(--v-theme-background));
|
|
18
|
-
padding-block: 0.5rem 1rem;
|
|
19
|
-
padding-inline: 1rem;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.shepherd-element .shepherd-content .shepherd-header {
|
|
23
|
-
background: rgb(var(--v-theme-background));
|
|
24
|
-
padding-block: 1rem 0;
|
|
25
|
-
padding-inline: 1rem;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.shepherd-element .shepherd-content .shepherd-header .shepherd-title {
|
|
29
|
-
color: rgb(var(--v-theme-on-background));
|
|
30
|
-
font-size: 1.125rem;
|
|
31
|
-
font-weight: 500;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.shepherd-text {
|
|
35
|
-
padding: 1rem;
|
|
36
|
-
background: rgb(var(--v-theme-background));
|
|
37
|
-
color: rgb(var(--v-theme-on-background));
|
|
38
|
-
font-size: variables.$card-text-font-size;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.shepherd-cancel-icon {
|
|
42
|
-
color: rgba(var(--v-theme-on-background), var(--v-disabled-opacity)) !important;
|
|
43
|
-
font-size: 1.5rem;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.shepherd-element[data-popper-placement^='bottom'] {
|
|
47
|
-
margin-block-start: 0.75rem !important;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.shepherd-element[data-popper-placement^='top'] {
|
|
51
|
-
margin-block-end: 0.75rem !important;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.shepherd-element[data-popper-placement^='right'] {
|
|
55
|
-
margin-inline-start: 0.75rem !important;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.shepherd-element[data-popper-placement^='left'] {
|
|
59
|
-
margin-inline-end: 0.75rem !important;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.shepherd-element[data-popper-placement] {
|
|
63
|
-
.shepherd-arrow::before {
|
|
64
|
-
background: rgb(var(--v-theme-background)) !important;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.shepherd-element {
|
|
69
|
-
border-radius: variables.$card-border-radius;
|
|
70
|
-
background: transparent;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.nextBtnClass,
|
|
74
|
-
.nextBtnClass:not(:disabled):hover {
|
|
75
|
-
background: rgb(var(--v-theme-primary));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.backBtnClass,
|
|
79
|
-
.backBtnClass:not(:disabled):hover {
|
|
80
|
-
background: rgba(var(--v-theme-secondary), var(--v-activated-opacity));
|
|
81
|
-
color: rgb(var(--v-theme-secondary));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@media screen and (max-width: 600px) {
|
|
85
|
-
.shepherd-element {
|
|
86
|
-
max-inline-size: 75vw;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|