@tekkare/auriga 0.2.56 → 0.2.57
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/module.json +1 -1
- package/dist/runtime/components/argComplexSelect.vue +15 -4
- package/dist/runtime/components/argDropdownSelect.vue +15 -4
- package/dist/runtime/components/argExportXLSX.vue +23 -0
- package/dist/runtime/components/argExportXLSX.vue.d.ts +18 -0
- package/dist/runtime/components/argModal.vue +13 -3
- package/dist/runtime/components/argModal.vue.d.ts +9 -0
- package/dist/runtime/components/argMultipleSelect.vue +14 -1
- package/dist/runtime/components/argToolModal.vue +289 -0
- package/dist/runtime/components/argToolModal.vue.d.ts +149 -0
- package/dist/runtime/components/argToolbarContent.vue.d.ts +1 -1
- package/dist/runtime/components/locales/en.json +4 -1
- package/dist/runtime/components/locales/es.json +4 -1
- package/dist/runtime/components/locales/fr.json +4 -1
- package/dist/runtime/components/locales/jp.json +4 -1
- package/package.json +2 -1
package/dist/module.json
CHANGED
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
class="complex_input"
|
|
87
87
|
:placeholder="getPlaceholderAdd"
|
|
88
88
|
v-model="searchNameAdd"
|
|
89
|
-
|
|
89
|
+
id="complex_search_input"
|
|
90
90
|
/>
|
|
91
91
|
<div
|
|
92
92
|
v-if="searchNameAdd.length > 0"
|
|
@@ -294,6 +294,7 @@ export default defineComponent({
|
|
|
294
294
|
const hoverRemove = ref(null);
|
|
295
295
|
const reachMax = ref(false);
|
|
296
296
|
const getLeft = ref("0");
|
|
297
|
+
const searchBar = ref();
|
|
297
298
|
const langData = ref(null);
|
|
298
299
|
async function setLang() {
|
|
299
300
|
const jsonFiles = import.meta.glob("./locales/*.json");
|
|
@@ -328,7 +329,16 @@ export default defineComponent({
|
|
|
328
329
|
function openInfo() {
|
|
329
330
|
emit("openInfo");
|
|
330
331
|
}
|
|
332
|
+
function debounce(func, delay) {
|
|
333
|
+
let debounceTimer;
|
|
334
|
+
return function(...args) {
|
|
335
|
+
clearTimeout(debounceTimer);
|
|
336
|
+
debounceTimer = window.setTimeout(() => func.apply(this, args), delay);
|
|
337
|
+
};
|
|
338
|
+
}
|
|
331
339
|
onMounted(() => {
|
|
340
|
+
searchBar.value = document.getElementById("complex_search_input");
|
|
341
|
+
searchBar.value?.addEventListener("input", debounce(changeInput, 500));
|
|
332
342
|
del_table.value = Object.assign([], [...new Set(props.already_selected)]);
|
|
333
343
|
add_table.value = Object.assign(
|
|
334
344
|
[],
|
|
@@ -349,6 +359,9 @@ export default defineComponent({
|
|
|
349
359
|
}
|
|
350
360
|
}
|
|
351
361
|
});
|
|
362
|
+
onUnmounted(() => {
|
|
363
|
+
searchBar.value?.removeEventListener("input", debounce(changeInput, 300));
|
|
364
|
+
});
|
|
352
365
|
watch(
|
|
353
366
|
() => props.element_table,
|
|
354
367
|
(new_element_table) => {
|
|
@@ -477,9 +490,7 @@ export default defineComponent({
|
|
|
477
490
|
return del_table.value;
|
|
478
491
|
});
|
|
479
492
|
function changeInput() {
|
|
480
|
-
|
|
481
|
-
emit("changeAddInputValue", searchNameAdd.value);
|
|
482
|
-
}, 500);
|
|
493
|
+
emit("changeAddInputValue", searchNameAdd.value);
|
|
483
494
|
}
|
|
484
495
|
function isInViewport(el) {
|
|
485
496
|
const rect = el.getBoundingClientRect();
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
<input
|
|
62
62
|
class="oip_search_name"
|
|
63
63
|
v-model="searchName"
|
|
64
|
-
|
|
64
|
+
id="dropdown_search_input"
|
|
65
65
|
:placeholder="getPlaceholder"
|
|
66
66
|
/>
|
|
67
67
|
<div
|
|
@@ -195,6 +195,7 @@ export default defineComponent({
|
|
|
195
195
|
const selected_item = ref(null);
|
|
196
196
|
const selected_number = ref(null);
|
|
197
197
|
const getSepPositions = ref([]);
|
|
198
|
+
const searchBar = ref();
|
|
198
199
|
const langData = ref(null);
|
|
199
200
|
async function setLang() {
|
|
200
201
|
const jsonFiles = import.meta.glob("./locales/*.json");
|
|
@@ -217,7 +218,16 @@ export default defineComponent({
|
|
|
217
218
|
function openInfo() {
|
|
218
219
|
emit("openInfo");
|
|
219
220
|
}
|
|
221
|
+
function debounce(func, delay) {
|
|
222
|
+
let debounceTimer;
|
|
223
|
+
return function(...args) {
|
|
224
|
+
clearTimeout(debounceTimer);
|
|
225
|
+
debounceTimer = window.setTimeout(() => func.apply(this, args), delay);
|
|
226
|
+
};
|
|
227
|
+
}
|
|
220
228
|
onMounted(() => {
|
|
229
|
+
searchBar.value = document.getElementById("dropdown_search_input");
|
|
230
|
+
searchBar.value?.addEventListener("input", debounce(changeInput, 500));
|
|
221
231
|
table_values.value = props.element_table;
|
|
222
232
|
selected_item.value = props.default_select !== null ? props.element_table[props.default_select] : null;
|
|
223
233
|
selected_number.value = props.default_select !== null ? props.default_select : null;
|
|
@@ -231,6 +241,9 @@ export default defineComponent({
|
|
|
231
241
|
});
|
|
232
242
|
}
|
|
233
243
|
});
|
|
244
|
+
onUnmounted(() => {
|
|
245
|
+
searchBar.value?.removeEventListener("input", debounce(changeInput, 300));
|
|
246
|
+
});
|
|
234
247
|
watch(
|
|
235
248
|
() => props.element_table,
|
|
236
249
|
(new_element_table) => {
|
|
@@ -306,9 +319,7 @@ export default defineComponent({
|
|
|
306
319
|
return props.empty_content_msg;
|
|
307
320
|
});
|
|
308
321
|
function changeInput() {
|
|
309
|
-
|
|
310
|
-
emit("changeInputValue", searchName.value);
|
|
311
|
-
}, 500);
|
|
322
|
+
emit("changeInputValue", searchName.value);
|
|
312
323
|
}
|
|
313
324
|
function checkActiveEllipsis() {
|
|
314
325
|
if (labelElement.value !== null) {
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
import argBtn from "./argBtn.vue";
|
|
76
76
|
import writeXlsxFile from "write-excel-file";
|
|
77
77
|
import { ref, defineComponent } from "vue";
|
|
78
|
+
import posthog from "posthog-js";
|
|
78
79
|
export default defineComponent({
|
|
79
80
|
name: "ArgExportXLSX",
|
|
80
81
|
components: { argBtn },
|
|
@@ -129,6 +130,14 @@ export default defineComponent({
|
|
|
129
130
|
validator: (value) => {
|
|
130
131
|
return ["en", "fr"].includes(value);
|
|
131
132
|
}
|
|
133
|
+
},
|
|
134
|
+
posthogKey: {
|
|
135
|
+
type: String,
|
|
136
|
+
default: null
|
|
137
|
+
},
|
|
138
|
+
posthogHost: {
|
|
139
|
+
type: String,
|
|
140
|
+
default: null
|
|
132
141
|
}
|
|
133
142
|
},
|
|
134
143
|
setup(props) {
|
|
@@ -142,6 +151,20 @@ export default defineComponent({
|
|
|
142
151
|
}
|
|
143
152
|
);
|
|
144
153
|
await props.beforeExport();
|
|
154
|
+
if (props.posthogHost !== null && props.posthogKey !== null) {
|
|
155
|
+
const eventName = "Download Excel";
|
|
156
|
+
const eventProps = {
|
|
157
|
+
title: `${props.exportName}-from_${currentDate}`
|
|
158
|
+
};
|
|
159
|
+
try {
|
|
160
|
+
posthog.capture(eventName, eventProps);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
console.warn(
|
|
163
|
+
"PostHog not initialized or event capture failed.",
|
|
164
|
+
error
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
145
168
|
if ((props.actualAmount !== null && props.actualAmount > props.limit || props.actualAmount === null && props.tabs.some((tab) => tab.data.length > props.limit)) && canLaunchDownload.value === false) {
|
|
146
169
|
openModal();
|
|
147
170
|
}
|
|
@@ -72,6 +72,14 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
72
72
|
default: string;
|
|
73
73
|
validator: (value: string) => boolean;
|
|
74
74
|
};
|
|
75
|
+
posthogKey: {
|
|
76
|
+
type: StringConstructor;
|
|
77
|
+
default: null;
|
|
78
|
+
};
|
|
79
|
+
posthogHost: {
|
|
80
|
+
type: StringConstructor;
|
|
81
|
+
default: null;
|
|
82
|
+
};
|
|
75
83
|
}, {
|
|
76
84
|
launchDownload: () => Promise<void>;
|
|
77
85
|
isLoading: import("vue").Ref<boolean>;
|
|
@@ -127,6 +135,14 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
127
135
|
default: string;
|
|
128
136
|
validator: (value: string) => boolean;
|
|
129
137
|
};
|
|
138
|
+
posthogKey: {
|
|
139
|
+
type: StringConstructor;
|
|
140
|
+
default: null;
|
|
141
|
+
};
|
|
142
|
+
posthogHost: {
|
|
143
|
+
type: StringConstructor;
|
|
144
|
+
default: null;
|
|
145
|
+
};
|
|
130
146
|
}>>, {
|
|
131
147
|
lang: string;
|
|
132
148
|
style: string;
|
|
@@ -137,5 +153,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
137
153
|
exportName: string;
|
|
138
154
|
limit: number;
|
|
139
155
|
actualAmount: number;
|
|
156
|
+
posthogKey: string;
|
|
157
|
+
posthogHost: string;
|
|
140
158
|
}, {}>;
|
|
141
159
|
export default _default;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
2
|
+
<div
|
|
3
|
+
:class="[
|
|
4
|
+
'arg_modal_container',
|
|
5
|
+
open ? 'arg_modal_open' : '',
|
|
6
|
+
isSource ? 'set-width' : '',
|
|
7
|
+
]"
|
|
8
|
+
>
|
|
9
|
+
<div v-show="open" class="arg_modal" :class="isSource ? 'row' : 'col'">
|
|
4
10
|
<slot />
|
|
5
11
|
</div>
|
|
6
12
|
</div>
|
|
@@ -16,10 +22,14 @@ export default defineComponent({
|
|
|
16
22
|
open: {
|
|
17
23
|
type: Boolean,
|
|
18
24
|
default: false
|
|
25
|
+
},
|
|
26
|
+
isSource: {
|
|
27
|
+
type: Boolean,
|
|
28
|
+
default: false
|
|
19
29
|
}
|
|
20
30
|
}
|
|
21
31
|
});
|
|
22
32
|
</script>
|
|
23
33
|
<style scoped>
|
|
24
|
-
.arg_modal_container{align-items:center;background-color:transparent;bottom:0;display:flex;height:0;justify-content:center;left:0;opacity:0;position:fixed;transition:all .35s ease;width:0}.arg_modal_open{background-color:rgba(0,0,0,.4);height:100vh;opacity:1;width:100%;z-index:99}.arg_modal{align-items:flex-start;background:var(--base-white,#fff);border-radius:
|
|
34
|
+
.arg_modal_container{align-items:center;background-color:transparent;bottom:0;display:flex;flex-direction:column;height:0;justify-content:center;left:0;opacity:0;position:fixed;transition:all .35s ease;width:0}.arg_modal_open{background-color:rgba(0,0,0,.4);height:100vh;opacity:1;width:100%;z-index:99}.arg_modal{align-items:flex-start;background:var(--base-white,#fff);border-radius:12px;display:flex;flex-shrink:0;height:100%;width:100%}.arg_modal.row{flex-direction:row;max-height:711px;max-width:1014px}.arg_modal.col{flex-direction:column;max-height:663px;max-width:966px;padding:24px}.arg_modal_open.set-width{padding:0 15%;width:70%}
|
|
25
35
|
</style>
|
|
@@ -3,12 +3,21 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
3
3
|
type: BooleanConstructor;
|
|
4
4
|
default: boolean;
|
|
5
5
|
};
|
|
6
|
+
isSource: {
|
|
7
|
+
type: BooleanConstructor;
|
|
8
|
+
default: boolean;
|
|
9
|
+
};
|
|
6
10
|
}, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
7
11
|
open: {
|
|
8
12
|
type: BooleanConstructor;
|
|
9
13
|
default: boolean;
|
|
10
14
|
};
|
|
15
|
+
isSource: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
11
19
|
}>>, {
|
|
12
20
|
open: boolean;
|
|
21
|
+
isSource: boolean;
|
|
13
22
|
}, {}>;
|
|
14
23
|
export default _default;
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
v-model="searchName"
|
|
50
50
|
class="oip_search_name"
|
|
51
51
|
:placeholder="getPlaceholder"
|
|
52
|
-
|
|
52
|
+
id="multiple_search_input"
|
|
53
53
|
/>
|
|
54
54
|
<div
|
|
55
55
|
v-if="searchName.length > 0"
|
|
@@ -381,6 +381,7 @@ export default defineComponent({
|
|
|
381
381
|
const selectedCats = ref([]);
|
|
382
382
|
const valueFrom = ref([]);
|
|
383
383
|
const element_table_copy = ref([]);
|
|
384
|
+
const searchBar = ref();
|
|
384
385
|
const langData = ref(null);
|
|
385
386
|
async function setLang() {
|
|
386
387
|
const jsonFiles = import.meta.glob("./locales/*.json");
|
|
@@ -429,7 +430,16 @@ export default defineComponent({
|
|
|
429
430
|
}
|
|
430
431
|
}
|
|
431
432
|
);
|
|
433
|
+
function debounce(func, delay) {
|
|
434
|
+
let debounceTimer;
|
|
435
|
+
return function(...args) {
|
|
436
|
+
clearTimeout(debounceTimer);
|
|
437
|
+
debounceTimer = window.setTimeout(() => func.apply(this, args), delay);
|
|
438
|
+
};
|
|
439
|
+
}
|
|
432
440
|
onMounted(() => {
|
|
441
|
+
searchBar.value = document.getElementById("multiple_search_input");
|
|
442
|
+
searchBar.value?.addEventListener("input", debounce(changeInput, 500));
|
|
433
443
|
element_table_copy.value = props.element_table;
|
|
434
444
|
if (props.preselection_all) {
|
|
435
445
|
add_all();
|
|
@@ -437,6 +447,9 @@ export default defineComponent({
|
|
|
437
447
|
selected_items.value = props.default_select;
|
|
438
448
|
}
|
|
439
449
|
});
|
|
450
|
+
onUnmounted(() => {
|
|
451
|
+
searchBar.value?.removeEventListener("input", debounce(changeInput, 300));
|
|
452
|
+
});
|
|
440
453
|
const getEmptyMsg = computed(() => {
|
|
441
454
|
if (props.empty_msg === null) {
|
|
442
455
|
return langData.value?.empty;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<arg-modal :open="infoOpen" is-source @click.stop>
|
|
3
|
+
<div class="tool_modal_sidebar">
|
|
4
|
+
<div class="oip_list v-start gap-8 p-16">
|
|
5
|
+
<div class="search_input">
|
|
6
|
+
<arg-icon name="MagnifyingGlass" color="var(--medium)" size="20" />
|
|
7
|
+
<input
|
|
8
|
+
v-model="searchSources"
|
|
9
|
+
class="input_style"
|
|
10
|
+
placeholder="Search here..."
|
|
11
|
+
id="tool_modal_search"
|
|
12
|
+
/>
|
|
13
|
+
</div>
|
|
14
|
+
<div v-for="(menu, index) in toolbarArray" :key="index">
|
|
15
|
+
<div
|
|
16
|
+
class="oip_row v-center space-between full menu"
|
|
17
|
+
:class="[
|
|
18
|
+
menu.name === trueActiveMenu && activeSub === null
|
|
19
|
+
? 'active'
|
|
20
|
+
: '',
|
|
21
|
+
menu.sub && menu.name === trueActiveMenu ? 'mb-8' : '',
|
|
22
|
+
]"
|
|
23
|
+
@click="selectMenu(menu)"
|
|
24
|
+
>
|
|
25
|
+
<div class="oip_row v-center gap-8">
|
|
26
|
+
<arg-icon :name="menu.icon" size="20" color="var(--dark)" />
|
|
27
|
+
<p>{{ menu.name }}</p>
|
|
28
|
+
</div>
|
|
29
|
+
<arg-icon
|
|
30
|
+
v-if="menu.sub"
|
|
31
|
+
name="CaretDown"
|
|
32
|
+
size="12"
|
|
33
|
+
color="var(--dark)"
|
|
34
|
+
class="icon_animate"
|
|
35
|
+
:class="menu.name === trueActiveMenu ? 'rotate' : ''"
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
<div
|
|
39
|
+
v-if="menu.sub"
|
|
40
|
+
class="oip_list v-start gap-8 sub_content"
|
|
41
|
+
:class="menu.name === trueActiveMenu ? 'open' : 'closed'"
|
|
42
|
+
>
|
|
43
|
+
<div
|
|
44
|
+
v-for="(subMenu, subIndex) in menu.sub"
|
|
45
|
+
:key="subIndex"
|
|
46
|
+
@click="selectSub(subMenu, menu.sub)"
|
|
47
|
+
class="sub_menu"
|
|
48
|
+
:class="subMenu === activeSub ? 'active' : ''"
|
|
49
|
+
>
|
|
50
|
+
<p>{{ subMenu }}</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="tool_modal_content">
|
|
57
|
+
<div class="tool_content_header">
|
|
58
|
+
<div class="oip_row v-center gap-16">
|
|
59
|
+
<div v-if="haveNav" class="action" @click="navigateTo(-1)">
|
|
60
|
+
<arg-icon
|
|
61
|
+
name="CaretLeft"
|
|
62
|
+
:color="showNext ? 'var(--darkest)' : 'var(--medium)'"
|
|
63
|
+
size="20"
|
|
64
|
+
/>
|
|
65
|
+
</div>
|
|
66
|
+
<div v-if="haveNav" @click="navigateTo(1)" class="action">
|
|
67
|
+
<arg-icon
|
|
68
|
+
name="CaretRight"
|
|
69
|
+
:color="showPrev ? 'var(--darkest)' : 'var(--medium)'"
|
|
70
|
+
size="20"
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
<p class="tool_content_title">{{ trueActiveMenu }}</p>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="action" @click="close()">
|
|
76
|
+
<arg-icon name="X" color="var(--darkest)" size="20" />
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
<div ref="displayContent" class="tool_content_display">
|
|
80
|
+
<p class="oip_heading">
|
|
81
|
+
{{ activeSub === null ? trueActiveMenu : activeSub }}
|
|
82
|
+
</p>
|
|
83
|
+
<!-- <p v-if="trueActiveMenu === 'Sources'" class="oip_body">
|
|
84
|
+
{{ langData?.providerText }}
|
|
85
|
+
</p> -->
|
|
86
|
+
<slot
|
|
87
|
+
:name="
|
|
88
|
+
activeSub === null
|
|
89
|
+
? trueActiveMenu?.replace(' ', '_')
|
|
90
|
+
: activeSub?.replace(' ', '_')
|
|
91
|
+
"
|
|
92
|
+
/>
|
|
93
|
+
</div>
|
|
94
|
+
<slot v-if="showSourceTable" name="sourceTable" />
|
|
95
|
+
</div>
|
|
96
|
+
</arg-modal>
|
|
97
|
+
</template>
|
|
98
|
+
|
|
99
|
+
<script>
|
|
100
|
+
import {
|
|
101
|
+
onMounted,
|
|
102
|
+
ref,
|
|
103
|
+
onBeforeMount,
|
|
104
|
+
defineComponent,
|
|
105
|
+
watch,
|
|
106
|
+
computed,
|
|
107
|
+
onUnmounted
|
|
108
|
+
} from "vue";
|
|
109
|
+
import argIcon from "./argIcon.vue";
|
|
110
|
+
import argModal from "./argModal.vue";
|
|
111
|
+
export default defineComponent({
|
|
112
|
+
name: "argToolModal",
|
|
113
|
+
components: { argIcon, argModal },
|
|
114
|
+
props: {
|
|
115
|
+
open: {
|
|
116
|
+
type: Boolean,
|
|
117
|
+
default: true
|
|
118
|
+
},
|
|
119
|
+
activeMenu: {
|
|
120
|
+
type: String,
|
|
121
|
+
required: true
|
|
122
|
+
},
|
|
123
|
+
toolbarArray: {
|
|
124
|
+
type: Array,
|
|
125
|
+
default: () => [
|
|
126
|
+
{ name: "Tips", icon: "Lightbulb" },
|
|
127
|
+
{ name: "Sources", icon: "Database" },
|
|
128
|
+
{ name: "Info", icon: "Info" }
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
sourceArray: {
|
|
132
|
+
type: Array,
|
|
133
|
+
default: () => []
|
|
134
|
+
},
|
|
135
|
+
lang: {
|
|
136
|
+
type: String,
|
|
137
|
+
default: "en",
|
|
138
|
+
validator: (value) => {
|
|
139
|
+
return ["en", "fr", "es", "jp"].includes(value);
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
showSourceTable: {
|
|
143
|
+
type: Boolean,
|
|
144
|
+
default: false
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
emits: ["update:Open", "update:Menu", "changeInputValue"],
|
|
148
|
+
setup(props, { emit }) {
|
|
149
|
+
const trueActiveMenu = ref(props.activeMenu);
|
|
150
|
+
const activeSub = ref(null);
|
|
151
|
+
const infoOpen = ref(props.open);
|
|
152
|
+
const searchSources = ref("");
|
|
153
|
+
const searchBar = ref();
|
|
154
|
+
const navIndex = ref(0);
|
|
155
|
+
const displayContent = ref(null);
|
|
156
|
+
const langData = ref("Close");
|
|
157
|
+
async function setLang() {
|
|
158
|
+
const jsonFiles = import.meta.glob("./locales/*.json");
|
|
159
|
+
for (const path in jsonFiles) {
|
|
160
|
+
if (path.split("/")[2].includes(props.lang)) {
|
|
161
|
+
const json = await jsonFiles[path]();
|
|
162
|
+
langData.value = json.sourceModal;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const haveNav = computed(() => {
|
|
167
|
+
return props.toolbarArray.find((a) => a.name === trueActiveMenu.value)?.sub;
|
|
168
|
+
});
|
|
169
|
+
function selectMenu(item) {
|
|
170
|
+
trueActiveMenu.value = item.name;
|
|
171
|
+
activeSub.value = null;
|
|
172
|
+
navIndex.value = 0;
|
|
173
|
+
displayContent.value?.scrollTo({
|
|
174
|
+
top: 0,
|
|
175
|
+
behavior: "smooth"
|
|
176
|
+
});
|
|
177
|
+
emit("update:Menu", trueActiveMenu.value);
|
|
178
|
+
}
|
|
179
|
+
const showPrev = computed(() => {
|
|
180
|
+
return navIndex.value < props.toolbarArray[props.toolbarArray.findIndex((a) => a.name === trueActiveMenu.value)]?.sub.length;
|
|
181
|
+
});
|
|
182
|
+
const showNext = computed(() => {
|
|
183
|
+
return navIndex.value > 0;
|
|
184
|
+
});
|
|
185
|
+
function navigateTo(index) {
|
|
186
|
+
if (!(navIndex.value === 0 && index < 0) && !(navIndex.value >= props.toolbarArray[props.toolbarArray.findIndex(
|
|
187
|
+
(a) => a.name === trueActiveMenu.value
|
|
188
|
+
)]?.sub.length && index > 0)) {
|
|
189
|
+
navIndex.value += index;
|
|
190
|
+
if (navIndex.value > 0) {
|
|
191
|
+
selectSub(
|
|
192
|
+
props.toolbarArray[props.toolbarArray.findIndex(
|
|
193
|
+
(a) => a.name === trueActiveMenu.value
|
|
194
|
+
)]?.sub[navIndex.value - 1]
|
|
195
|
+
);
|
|
196
|
+
} else {
|
|
197
|
+
activeSub.value = null;
|
|
198
|
+
console.log(displayContent.value);
|
|
199
|
+
displayContent.value?.scrollTo({
|
|
200
|
+
top: 0,
|
|
201
|
+
behavior: "smooth"
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function selectSub(item, subArray) {
|
|
207
|
+
activeSub.value = item;
|
|
208
|
+
if (subArray) {
|
|
209
|
+
navIndex.value = subArray.indexOf(item) + 1;
|
|
210
|
+
}
|
|
211
|
+
emit("update:Menu", activeSub.value);
|
|
212
|
+
}
|
|
213
|
+
onBeforeMount(async () => {
|
|
214
|
+
setLang();
|
|
215
|
+
});
|
|
216
|
+
watch(
|
|
217
|
+
() => props.lang,
|
|
218
|
+
() => {
|
|
219
|
+
setLang();
|
|
220
|
+
}
|
|
221
|
+
);
|
|
222
|
+
watch(
|
|
223
|
+
() => props.open,
|
|
224
|
+
(new_info_open) => {
|
|
225
|
+
infoOpen.value = new_info_open;
|
|
226
|
+
emit("update:Open", infoOpen.value);
|
|
227
|
+
}
|
|
228
|
+
);
|
|
229
|
+
watch(
|
|
230
|
+
() => props.activeMenu,
|
|
231
|
+
(new_active_menu) => {
|
|
232
|
+
trueActiveMenu.value = new_active_menu;
|
|
233
|
+
}
|
|
234
|
+
);
|
|
235
|
+
watch(
|
|
236
|
+
() => infoOpen.value,
|
|
237
|
+
() => {
|
|
238
|
+
if (infoOpen.value) {
|
|
239
|
+
setTimeout(() => {
|
|
240
|
+
document.addEventListener("click", close);
|
|
241
|
+
}, 500);
|
|
242
|
+
} else
|
|
243
|
+
document.removeEventListener("click", close);
|
|
244
|
+
}
|
|
245
|
+
);
|
|
246
|
+
function debounce(func, delay) {
|
|
247
|
+
let debounceTimer;
|
|
248
|
+
return function(...args) {
|
|
249
|
+
clearTimeout(debounceTimer);
|
|
250
|
+
debounceTimer = window.setTimeout(() => func.apply(this, args), delay);
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
onMounted(() => {
|
|
254
|
+
searchBar.value = document.getElementById("tool_modal_input");
|
|
255
|
+
searchBar.value?.addEventListener("input", debounce(changeInput, 500));
|
|
256
|
+
trueActiveMenu.value = props.activeMenu;
|
|
257
|
+
});
|
|
258
|
+
onUnmounted(() => {
|
|
259
|
+
searchBar.value?.removeEventListener("input", debounce(changeInput, 300));
|
|
260
|
+
});
|
|
261
|
+
function changeInput() {
|
|
262
|
+
emit("changeInputValue", searchSources.value);
|
|
263
|
+
}
|
|
264
|
+
function close() {
|
|
265
|
+
infoOpen.value = false;
|
|
266
|
+
emit("update:Open", infoOpen.value);
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
infoOpen,
|
|
270
|
+
trueActiveMenu,
|
|
271
|
+
close,
|
|
272
|
+
langData,
|
|
273
|
+
selectMenu,
|
|
274
|
+
searchSources,
|
|
275
|
+
activeSub,
|
|
276
|
+
selectSub,
|
|
277
|
+
haveNav,
|
|
278
|
+
navigateTo,
|
|
279
|
+
showNext,
|
|
280
|
+
showPrev,
|
|
281
|
+
displayContent
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
</script>
|
|
286
|
+
|
|
287
|
+
<style scoped>
|
|
288
|
+
.tool_modal_sidebar{align-self:stretch;background:var(--demi-fond);border-bottom-left-radius:12px;border-right:1px solid var(--light);border-top-left-radius:12px;flex-shrink:0;height:100%;max-width:200px;overflow-y:scroll;position:relative;width:30%}.p-16{padding:16px}.menu,.sub_menu{align-self:stretch;border-radius:4px;cursor:pointer;display:flex;flex-shrink:0}.menu{padding:8px}.sub_menu{padding:8px 8px 8px 35px}.full{align-self:stretch}.menu:not(.active):hover p{color:var(--darkest)!important}.menu:not(.active):hover svg{color:var(--primary)!important}.menu.active,.sub_menu.active{background:rgba(33,118,255,.1)!important}.tool_modal_content{align-items:flex-start;align-self:stretch;display:flex;flex:1 0 0;flex-direction:column}.tool_content_header{align-items:center;align-self:stretch;border-bottom:1px solid var(--light);display:flex;gap:8px;justify-content:space-between;padding:16px 24px}.tool_content_title{font-size:14px;font-style:normal;font-weight:700;line-height:160%}.action{align-items:center;border-radius:4px;cursor:pointer;display:flex;justify-content:center;padding:6px}.action:hover{background:var(--lightest)!important}.tool_content_display{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:24px;overflow-y:scroll;padding:24px}.tool_content_display::-webkit-scrollbar,.tool_modal_sidebar::-webkit-scrollbar{height:5px;width:5px}.tool_content_display::-webkit-scrollbar-thumb,.tool_modal_sidebar::-webkit-scrollbar-thumb{background:var(--medium);border-radius:12px!important}.tool_content_display::-webkit-scrollbar-thumb:hover,.tool_modal_sidebar::-webkit-scrollbar-thumb:hover{background:var(--medium)!important}.search_input{align-items:center;align-self:stretch;background:var(--demi-fond);border:1px solid var(--light);border-radius:8px;display:flex;flex-shrink:0;gap:8px;padding:8px 12px;position:sticky;top:16px}.input_style{background:transparent;width:100%}.input_style,.input_style:focus-visible{border:none;outline:none}.input_style::-moz-placeholder{color:var(--medium)}.input_style::placeholder{color:var(--medium)}.menu p,.sub_menu p{color:var(--dark);font-size:14px;font-style:normal;font-weight:400;line-height:160%}svg.icon_animate{transition:transform .3s}svg.icon_animate.rotate{transform:rotate(180deg)}.mb-8{margin-bottom:8px}.sub_content{transition:max-height .3s,opacity .3s}.sub_content.open{max-height:5000px;opacity:1}.sub_content.closed{max-height:0;opacity:0;overflow:hidden}
|
|
289
|
+
</style>
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
interface provider {
|
|
2
|
+
providerName: string;
|
|
3
|
+
sources: source[];
|
|
4
|
+
}
|
|
5
|
+
interface source {
|
|
6
|
+
sourceName: string;
|
|
7
|
+
sourceCountry: string;
|
|
8
|
+
}
|
|
9
|
+
interface menu {
|
|
10
|
+
name: string;
|
|
11
|
+
icon: string;
|
|
12
|
+
sub?: string[];
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("vue").DefineComponent<{
|
|
15
|
+
open: {
|
|
16
|
+
type: BooleanConstructor;
|
|
17
|
+
default: boolean;
|
|
18
|
+
};
|
|
19
|
+
activeMenu: {
|
|
20
|
+
type: StringConstructor;
|
|
21
|
+
required: true;
|
|
22
|
+
};
|
|
23
|
+
toolbarArray: {
|
|
24
|
+
type: {
|
|
25
|
+
(arrayLength: number): menu[];
|
|
26
|
+
(...items: menu[]): menu[];
|
|
27
|
+
new (arrayLength: number): menu[];
|
|
28
|
+
new (...items: menu[]): menu[];
|
|
29
|
+
isArray(arg: any): arg is any[];
|
|
30
|
+
readonly prototype: any[];
|
|
31
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
32
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
33
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
34
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
35
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
36
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
37
|
+
};
|
|
38
|
+
default: () => {
|
|
39
|
+
name: string;
|
|
40
|
+
icon: string;
|
|
41
|
+
}[];
|
|
42
|
+
};
|
|
43
|
+
sourceArray: {
|
|
44
|
+
type: {
|
|
45
|
+
(arrayLength: number): provider[];
|
|
46
|
+
(...items: provider[]): provider[];
|
|
47
|
+
new (arrayLength: number): provider[];
|
|
48
|
+
new (...items: provider[]): provider[];
|
|
49
|
+
isArray(arg: any): arg is any[];
|
|
50
|
+
readonly prototype: any[];
|
|
51
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
52
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
53
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
54
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
55
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
56
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
57
|
+
};
|
|
58
|
+
default: () => never[];
|
|
59
|
+
};
|
|
60
|
+
lang: {
|
|
61
|
+
type: StringConstructor;
|
|
62
|
+
default: string;
|
|
63
|
+
validator: (value: string) => boolean;
|
|
64
|
+
};
|
|
65
|
+
showSourceTable: {
|
|
66
|
+
type: BooleanConstructor;
|
|
67
|
+
default: boolean;
|
|
68
|
+
};
|
|
69
|
+
}, {
|
|
70
|
+
infoOpen: import("vue").Ref<boolean>;
|
|
71
|
+
trueActiveMenu: import("vue").Ref<any>;
|
|
72
|
+
close: () => void;
|
|
73
|
+
langData: import("vue").Ref<any>;
|
|
74
|
+
selectMenu: (item: menu) => void;
|
|
75
|
+
searchSources: import("vue").Ref<string>;
|
|
76
|
+
activeSub: import("vue").Ref<any>;
|
|
77
|
+
selectSub: (item: string, subArray?: string[]) => void;
|
|
78
|
+
haveNav: import("vue").ComputedRef<string[] | undefined>;
|
|
79
|
+
navigateTo: (index: number) => void;
|
|
80
|
+
showNext: import("vue").ComputedRef<boolean>;
|
|
81
|
+
showPrev: import("vue").ComputedRef<boolean>;
|
|
82
|
+
displayContent: import("vue").Ref<HTMLDivElement | null>;
|
|
83
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("changeInputValue" | "update:Menu" | "update:Open")[], "changeInputValue" | "update:Menu" | "update:Open", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
84
|
+
open: {
|
|
85
|
+
type: BooleanConstructor;
|
|
86
|
+
default: boolean;
|
|
87
|
+
};
|
|
88
|
+
activeMenu: {
|
|
89
|
+
type: StringConstructor;
|
|
90
|
+
required: true;
|
|
91
|
+
};
|
|
92
|
+
toolbarArray: {
|
|
93
|
+
type: {
|
|
94
|
+
(arrayLength: number): menu[];
|
|
95
|
+
(...items: menu[]): menu[];
|
|
96
|
+
new (arrayLength: number): menu[];
|
|
97
|
+
new (...items: menu[]): menu[];
|
|
98
|
+
isArray(arg: any): arg is any[];
|
|
99
|
+
readonly prototype: any[];
|
|
100
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
101
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
102
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
103
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
104
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
105
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
106
|
+
};
|
|
107
|
+
default: () => {
|
|
108
|
+
name: string;
|
|
109
|
+
icon: string;
|
|
110
|
+
}[];
|
|
111
|
+
};
|
|
112
|
+
sourceArray: {
|
|
113
|
+
type: {
|
|
114
|
+
(arrayLength: number): provider[];
|
|
115
|
+
(...items: provider[]): provider[];
|
|
116
|
+
new (arrayLength: number): provider[];
|
|
117
|
+
new (...items: provider[]): provider[];
|
|
118
|
+
isArray(arg: any): arg is any[];
|
|
119
|
+
readonly prototype: any[];
|
|
120
|
+
from<T>(arrayLike: ArrayLike<T>): T[];
|
|
121
|
+
from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
|
|
122
|
+
from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
|
|
123
|
+
from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
|
|
124
|
+
of<T_4>(...items: T_4[]): T_4[];
|
|
125
|
+
readonly [Symbol.species]: ArrayConstructor;
|
|
126
|
+
};
|
|
127
|
+
default: () => never[];
|
|
128
|
+
};
|
|
129
|
+
lang: {
|
|
130
|
+
type: StringConstructor;
|
|
131
|
+
default: string;
|
|
132
|
+
validator: (value: string) => boolean;
|
|
133
|
+
};
|
|
134
|
+
showSourceTable: {
|
|
135
|
+
type: BooleanConstructor;
|
|
136
|
+
default: boolean;
|
|
137
|
+
};
|
|
138
|
+
}>> & {
|
|
139
|
+
onChangeInputValue?: ((...args: any[]) => any) | undefined;
|
|
140
|
+
"onUpdate:Menu"?: ((...args: any[]) => any) | undefined;
|
|
141
|
+
"onUpdate:Open"?: ((...args: any[]) => any) | undefined;
|
|
142
|
+
}, {
|
|
143
|
+
lang: string;
|
|
144
|
+
open: boolean;
|
|
145
|
+
toolbarArray: menu[];
|
|
146
|
+
sourceArray: provider[];
|
|
147
|
+
showSourceTable: boolean;
|
|
148
|
+
}, {}>;
|
|
149
|
+
export default _default;
|
|
@@ -189,5 +189,8 @@
|
|
|
189
189
|
"emptyTitle": "No content found for your search",
|
|
190
190
|
"emptySub": "Change or empty your search"
|
|
191
191
|
},
|
|
192
|
-
"close": "Close"
|
|
192
|
+
"close": "Close",
|
|
193
|
+
"sourceModal": {
|
|
194
|
+
"providerText": "This document lists all the sources consulted and used in the development of our application. Each source is accompanied by an explanation detailing its specific contribution to the project. The aim of this documentation work is to ensure complete traceability of references, and to guarantee the integrity and quality of the information used."
|
|
195
|
+
}
|
|
193
196
|
}
|
|
@@ -188,5 +188,8 @@
|
|
|
188
188
|
"emptyTitle": "No se ha encontrado contenido para su búsqueda",
|
|
189
189
|
"emptySub": "Modificar o vaciar la búsqueda"
|
|
190
190
|
},
|
|
191
|
-
"close": "Cerrar"
|
|
191
|
+
"close": "Cerrar",
|
|
192
|
+
"sourceModal": {
|
|
193
|
+
"providerText": "Este documento enumera todas las fuentes consultadas y utilizadas en el desarrollo de nuestra aplicación. Cada fuente va acompañada de una explicación en la que se detalla su contribución específica al proyecto. El objetivo de este trabajo de documentación es asegurar la trazabilidad completa de las referencias y garantizar la integridad y calidad de la información utilizada."
|
|
194
|
+
}
|
|
192
195
|
}
|
|
@@ -188,5 +188,8 @@
|
|
|
188
188
|
"emptyTitle": "Aucun contenu trouvé pour votre recherche",
|
|
189
189
|
"emptySub": "Veuillez retirer ou changer votre recherche"
|
|
190
190
|
},
|
|
191
|
-
"close": "Fermer"
|
|
191
|
+
"close": "Fermer",
|
|
192
|
+
"sourceModal": {
|
|
193
|
+
"providerText": "Ce document répertorie toutes les sources consultées et utilisées dans le cadre du développement de notre application. Chaque source est accompagnée d'une explication détaillant sa contribution spécifique au projet. L'objectif de ce travail de documentation est d'assurer une traçabilité complète des références, et de garantir l'intégrité et la qualité des informations utilisées."
|
|
194
|
+
}
|
|
192
195
|
}
|
|
@@ -188,5 +188,8 @@
|
|
|
188
188
|
"emptyTitle": "表示できるものがありません",
|
|
189
189
|
"emptySub": "検索条件を変更または空にする"
|
|
190
190
|
},
|
|
191
|
-
"close": "閉じる"
|
|
191
|
+
"close": "閉じる",
|
|
192
|
+
"sourceModal": {
|
|
193
|
+
"providerText": "この文書には、私たちのアプリケーションの開発において参照され、使用されたすべての情報源が記載されています。各出典元には、プロジェクトに対する具体的な貢献を詳述する説明が付されています。この文書化の目的は、参考文献の完全なトレーサビリティを確保し、使用された情報の完全性と品質を保証することです。"
|
|
194
|
+
}
|
|
192
195
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekkare/auriga",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.57",
|
|
4
4
|
"description": "Aurgia is a UI kit developped by Tekkare",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"@vueuse/integrations": "^10.10.0",
|
|
40
40
|
"apexcharts": "^3.43.0",
|
|
41
41
|
"fuse.js": "^6.6.2",
|
|
42
|
+
"posthog-js": "^1.161.3",
|
|
42
43
|
"save": "^2.9.0",
|
|
43
44
|
"vue-apexcharts": "^1.6.2",
|
|
44
45
|
"vue-svg-map": "^1.2.0",
|