@tekkare/auriga 0.1.23 → 0.1.25

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 CHANGED
@@ -4,5 +4,5 @@
4
4
  "compatibility": {
5
5
  "nuxt": "^3.0.0"
6
6
  },
7
- "version": "0.1.23"
7
+ "version": "0.1.25"
8
8
  }
@@ -18,7 +18,9 @@
18
18
  ]"
19
19
  >
20
20
  {{
21
- del_table.map((elem) => elem).length > 0 ? getAllSelect : empty_msg
21
+ del_table.map((elem) => elem).length > 0
22
+ ? getAllSelect
23
+ : getEmptyMsg
22
24
  }}
23
25
  </span>
24
26
  </arg-simple-label>
@@ -33,7 +35,13 @@
33
35
  <div class="oip_select_complex_header">
34
36
  <h1 class="oip_select_complex_header_title">
35
37
  {{
36
- !!select_placeholder ? `${select_placeholder} select` : "Select "
38
+ !!select_placeholder
39
+ ? `${select_placeholder} ${
40
+ lang === "fr" ? "sélection" : "select"
41
+ }`
42
+ : lang === "fr"
43
+ ? "Sélection"
44
+ : "Select"
37
45
  }}
38
46
  </h1>
39
47
  </div>
@@ -61,30 +69,36 @@
61
69
  </div>
62
70
  </div>
63
71
  </div>
64
- <p v-if="reachMax" class="warning_text">{{ reach_max_msg }}</p>
72
+ <p v-if="reachMax" class="warning_text">{{ getMaxSelectMsg }}</p>
65
73
  <div class="oip_select_complex_all_selection">
66
74
  <div class="oip_select_complex_add_selection">
67
75
  <div class="oip_select_complex_all_title">
68
- <div class="oip_select_complex_all_tittle_left">Available</div>
76
+ <div class="oip_select_complex_all_tittle_left">
77
+ {{ lang === "fr" ? "Disponible" : "Available" }}
78
+ </div>
69
79
  <div
70
80
  v-if="show_select_all"
71
81
  class="oip_select_complex_all_tittle_right add"
72
82
  @click="add_all_element"
73
83
  >
74
- Select all
84
+ {{ lang === "fr" ? "Tout sélectionner" : "Select all" }}
75
85
  </div>
76
86
  <div
77
87
  v-if="max_amount !== null"
78
88
  class="oip_select_complex_all_tittle_right"
79
89
  >
80
- Maximum selection: {{ max_amount }} items
90
+ {{
91
+ lng === "fr"
92
+ ? `Maximum: ${max_amount} éléments`
93
+ : `Maximum: ${max_amount} items`
94
+ }}
81
95
  </div>
82
96
  </div>
83
97
  <div class="oip_search_container">
84
98
  <arg-icon size="20" name="MagnifyingGlass"></arg-icon>
85
99
  <input
86
100
  class="oip_search_name"
87
- :placeholder="search_placeholder"
101
+ :placeholder="getPlaceholderAdd"
88
102
  v-model="searchNameAdd"
89
103
  @input="changeInput"
90
104
  />
@@ -130,25 +144,36 @@
130
144
  </div>
131
145
  </div>
132
146
  </div>
147
+ <div
148
+ class="oip_empty_dropdown"
149
+ v-else-if="filterNameAdd.length === 0"
150
+ >
151
+ <p>{{ getEmptyContentMsg }}</p>
152
+ </div>
133
153
  <div v-else class="oip_select_complex_selection_container">
134
- <arg-data-loader />
154
+ <arg-data-loader
155
+ :text="getLoaderText[0]"
156
+ :sub-text="getLoaderText[1]"
157
+ />
135
158
  </div>
136
159
  </div>
137
160
  <div class="oip_select_complex_del_selection">
138
161
  <div class="oip_select_complex_all_title">
139
- <div class="oip_select_complex_all_tittle_left">Selected</div>
162
+ <div class="oip_select_complex_all_tittle_left">
163
+ {{ lang === "fr" ? "Sélectionné" : "Selected" }}
164
+ </div>
140
165
  <div
141
166
  class="oip_select_complex_all_tittle_right del"
142
167
  @click="del_all_element"
143
168
  >
144
- Clear all
169
+ {{ lang === "fr" ? "Tout effacer" : "Clear all" }}
145
170
  </div>
146
171
  </div>
147
172
  <div class="oip_search_container">
148
173
  <arg-icon size="20" name="MagnifyingGlass"></arg-icon>
149
174
  <input
150
175
  class="oip_search_name"
151
- :placeholder="search_placeholder"
176
+ :placeholder="getPlaceholderDel"
152
177
  v-model="searchNameDel"
153
178
  />
154
179
  <arg-icon
@@ -185,7 +210,9 @@
185
210
  <arg-btn @click="cancel_function()" btnStyle="secondary"
186
211
  >Cancel</arg-btn
187
212
  >
188
- <arg-btn @click="apply_function()" btnStyle="primary">Apply</arg-btn>
213
+ <arg-btn @click="apply_function()" btnStyle="primary">{{
214
+ lang === "fr" ? "Apply" : "Appliquer"
215
+ }}</arg-btn>
189
216
  </div>
190
217
  </div>
191
218
  </div>
@@ -208,7 +235,8 @@ export default defineComponent({
208
235
  components: { argSimpleLabel, argBtn, argIcon, argDataLoader },
209
236
  props: {
210
237
  element_table: { type: Array, required: true },
211
- search_placeholder: { type: String, default: "Search" },
238
+ search_placeholder_add: { type: String, default: null },
239
+ search_placeholder_del: { type: String, default: null },
212
240
  need_apply: { type: Boolean, default: false },
213
241
  select_placeholder: { type: String, required: false },
214
242
  smart_selection_table: {
@@ -228,11 +256,20 @@ export default defineComponent({
228
256
  max_amount: { type: Number, default: null },
229
257
  reach_max_msg: {
230
258
  type: String,
231
- default: "You've reached the maximum amount of items you can select"
259
+ default: null
232
260
  },
233
261
  loading: { type: Boolean, default: false },
234
- empty_msg: { type: String, default: "No selection" },
235
- complex_label: { type: String, required: true }
262
+ empty_msg: { type: String, default: null },
263
+ complex_label: { type: String, required: true },
264
+ lang: {
265
+ type: String,
266
+ default: "en",
267
+ validator: (value) => {
268
+ return ["en", "fr"].includes(value);
269
+ }
270
+ },
271
+ loader_text: { type: Array, default: null },
272
+ empty_content_msg: { type: String, default: null }
236
273
  },
237
274
  emits: ["changeElement", "changeAddInputValue", "update:Selection"],
238
275
  setup(props, { emit }) {
@@ -307,6 +344,42 @@ export default defineComponent({
307
344
  );
308
345
  }
309
346
  );
347
+ const getEmptyMsg = computed(() => {
348
+ if (props.empty_msg === null) {
349
+ return props.lang === "fr" ? "Aucune S\xE9lection" : "No Selection";
350
+ } else
351
+ return props.empty_msg;
352
+ });
353
+ const getLoaderText = computed(() => {
354
+ if (props.loader_text === null) {
355
+ return props.lang === "fr" ? ["Chargement...", "Veuillez patienter"] : ["Loading...", "Please wait"];
356
+ } else
357
+ return props.loader_text;
358
+ });
359
+ const getPlaceholderAdd = computed(() => {
360
+ if (props.search_placeholder_add === null) {
361
+ return props.lang === "fr" ? "Rechercher une option..." : "Search options...";
362
+ } else
363
+ return props.search_placeholder_add;
364
+ });
365
+ const getPlaceholderDel = computed(() => {
366
+ if (props.search_placeholder_del === null) {
367
+ return props.lang === "fr" ? "Rechercher parmis les options selection\xE9es..." : "Search selected options...";
368
+ } else
369
+ return props.search_placeholder_del;
370
+ });
371
+ const getMaxSelectMsg = computed(() => {
372
+ if (props.reach_max_msg === null) {
373
+ return props.lang === "fr" ? "Vous avez atteint le maximum d'\xE9l\xE9ments que vous pouvez s\xE9lectionner'" : "You've reached the maximum amount of items you can select";
374
+ } else
375
+ return props.reach_max_msg;
376
+ });
377
+ const getEmptyContentMsg = computed(() => {
378
+ if (props.empty_content_msg === null) {
379
+ return props.lang === "fr" ? "Aucun contenu n'a \xE9t\xE9 trouv\xE9" : "No content was found";
380
+ } else
381
+ return props.empty_content_msg;
382
+ });
310
383
  const getAllSelect = computed(() => {
311
384
  const fullSelect = del_table.value.map((elem) => elem);
312
385
  let filterFill = ``;
@@ -350,7 +423,7 @@ export default defineComponent({
350
423
  if (isDisplay.value === true) {
351
424
  setTimeout(() => {
352
425
  document?.addEventListener("click", close);
353
- }, 200);
426
+ }, 100);
354
427
  }
355
428
  const elem = document?.getElementById("select_complex");
356
429
  const simpleElem = document?.getElementById("simple_select_complex");
@@ -363,10 +436,8 @@ export default defineComponent({
363
436
  }
364
437
  }
365
438
  function close() {
366
- if (isDisplay.value === true) {
367
- isDisplay.value = false;
368
- document?.removeEventListener("click", close);
369
- }
439
+ isDisplay.value = false;
440
+ document?.removeEventListener("click", close);
370
441
  }
371
442
  function add_element(element) {
372
443
  smart_selection_selected.value = void 0;
@@ -502,7 +573,13 @@ export default defineComponent({
502
573
  cancel_function,
503
574
  change_save_table,
504
575
  getAllSelect,
505
- reachMax
576
+ reachMax,
577
+ getEmptyMsg,
578
+ getLoaderText,
579
+ getPlaceholderAdd,
580
+ getPlaceholderDel,
581
+ getMaxSelectMsg,
582
+ getEmptyContentMsg
506
583
  };
507
584
  }
508
585
  });
@@ -16,9 +16,13 @@ declare const _default: import("vue").DefineComponent<{
16
16
  };
17
17
  required: true;
18
18
  };
19
- search_placeholder: {
19
+ search_placeholder_add: {
20
20
  type: StringConstructor;
21
- default: string;
21
+ default: null;
22
+ };
23
+ search_placeholder_del: {
24
+ type: StringConstructor;
25
+ default: null;
22
26
  };
23
27
  need_apply: {
24
28
  type: BooleanConstructor;
@@ -76,7 +80,7 @@ declare const _default: import("vue").DefineComponent<{
76
80
  };
77
81
  reach_max_msg: {
78
82
  type: StringConstructor;
79
- default: string;
83
+ default: null;
80
84
  };
81
85
  loading: {
82
86
  type: BooleanConstructor;
@@ -84,12 +88,38 @@ declare const _default: import("vue").DefineComponent<{
84
88
  };
85
89
  empty_msg: {
86
90
  type: StringConstructor;
87
- default: string;
91
+ default: null;
88
92
  };
89
93
  complex_label: {
90
94
  type: StringConstructor;
91
95
  required: true;
92
96
  };
97
+ lang: {
98
+ type: StringConstructor;
99
+ default: string;
100
+ validator: (value: string) => boolean;
101
+ };
102
+ loader_text: {
103
+ type: {
104
+ (arrayLength: number): string[];
105
+ (...items: string[]): string[];
106
+ new (arrayLength: number): string[];
107
+ new (...items: string[]): string[];
108
+ isArray(arg: any): arg is any[];
109
+ readonly prototype: any[];
110
+ from<T>(arrayLike: ArrayLike<T>): T[];
111
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
112
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
113
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
114
+ of<T_4>(...items: T_4[]): T_4[];
115
+ readonly [Symbol.species]: ArrayConstructor;
116
+ };
117
+ default: null;
118
+ };
119
+ empty_content_msg: {
120
+ type: StringConstructor;
121
+ default: null;
122
+ };
93
123
  }, {
94
124
  add_table: import("vue").Ref<string[]>;
95
125
  del_table: import("vue").Ref<string[]>;
@@ -120,6 +150,12 @@ declare const _default: import("vue").DefineComponent<{
120
150
  change_save_table: () => void;
121
151
  getAllSelect: import("vue").ComputedRef<string>;
122
152
  reachMax: import("vue").Ref<boolean>;
153
+ getEmptyMsg: import("vue").ComputedRef<string>;
154
+ getLoaderText: import("vue").ComputedRef<string[]>;
155
+ getPlaceholderAdd: import("vue").ComputedRef<string>;
156
+ getPlaceholderDel: import("vue").ComputedRef<string>;
157
+ getMaxSelectMsg: import("vue").ComputedRef<string>;
158
+ getEmptyContentMsg: import("vue").ComputedRef<string>;
123
159
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("changeElement" | "changeAddInputValue" | "update:Selection")[], "changeElement" | "changeAddInputValue" | "update:Selection", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
124
160
  element_table: {
125
161
  type: {
@@ -138,9 +174,13 @@ declare const _default: import("vue").DefineComponent<{
138
174
  };
139
175
  required: true;
140
176
  };
141
- search_placeholder: {
177
+ search_placeholder_add: {
142
178
  type: StringConstructor;
143
- default: string;
179
+ default: null;
180
+ };
181
+ search_placeholder_del: {
182
+ type: StringConstructor;
183
+ default: null;
144
184
  };
145
185
  need_apply: {
146
186
  type: BooleanConstructor;
@@ -198,7 +238,7 @@ declare const _default: import("vue").DefineComponent<{
198
238
  };
199
239
  reach_max_msg: {
200
240
  type: StringConstructor;
201
- default: string;
241
+ default: null;
202
242
  };
203
243
  loading: {
204
244
  type: BooleanConstructor;
@@ -206,19 +246,47 @@ declare const _default: import("vue").DefineComponent<{
206
246
  };
207
247
  empty_msg: {
208
248
  type: StringConstructor;
209
- default: string;
249
+ default: null;
210
250
  };
211
251
  complex_label: {
212
252
  type: StringConstructor;
213
253
  required: true;
214
254
  };
255
+ lang: {
256
+ type: StringConstructor;
257
+ default: string;
258
+ validator: (value: string) => boolean;
259
+ };
260
+ loader_text: {
261
+ type: {
262
+ (arrayLength: number): string[];
263
+ (...items: string[]): string[];
264
+ new (arrayLength: number): string[];
265
+ new (...items: string[]): string[];
266
+ isArray(arg: any): arg is any[];
267
+ readonly prototype: any[];
268
+ from<T>(arrayLike: ArrayLike<T>): T[];
269
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
270
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
271
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
272
+ of<T_4>(...items: T_4[]): T_4[];
273
+ readonly [Symbol.species]: ArrayConstructor;
274
+ };
275
+ default: null;
276
+ };
277
+ empty_content_msg: {
278
+ type: StringConstructor;
279
+ default: null;
280
+ };
215
281
  }>> & {
216
282
  onChangeElement?: ((...args: any[]) => any) | undefined;
217
283
  onChangeAddInputValue?: ((...args: any[]) => any) | undefined;
218
284
  "onUpdate:Selection"?: ((...args: any[]) => any) | undefined;
219
285
  }, {
286
+ lang: string;
220
287
  loading: boolean;
221
- search_placeholder: string;
288
+ search_placeholder_add: string;
289
+ search_placeholder_del: string;
222
290
  need_apply: boolean;
223
291
  smart_selection_table: unknown[];
224
292
  return_value: boolean;
@@ -230,5 +298,7 @@ declare const _default: import("vue").DefineComponent<{
230
298
  max_amount: number;
231
299
  reach_max_msg: string;
232
300
  empty_msg: string;
301
+ loader_text: string[];
302
+ empty_content_msg: string;
233
303
  }, {}>;
234
304
  export default _default;
@@ -15,7 +15,10 @@ export default defineComponent({
15
15
  },
16
16
  lang: {
17
17
  type: String,
18
- default: "en"
18
+ default: "en",
19
+ validator: (value) => {
20
+ return ["en", "fr"].includes(value);
21
+ }
19
22
  },
20
23
  compact: {
21
24
  type: Boolean,
@@ -6,6 +6,7 @@ declare const _default: import("vue").DefineComponent<{
6
6
  lang: {
7
7
  type: StringConstructor;
8
8
  default: string;
9
+ validator: (value: string) => boolean;
9
10
  };
10
11
  compact: {
11
12
  type: BooleanConstructor;
@@ -22,6 +23,7 @@ declare const _default: import("vue").DefineComponent<{
22
23
  lang: {
23
24
  type: StringConstructor;
24
25
  default: string;
26
+ validator: (value: string) => boolean;
25
27
  };
26
28
  compact: {
27
29
  type: BooleanConstructor;
@@ -32,7 +32,7 @@
32
32
  :id="`label_${selected_item}`"
33
33
  >{{
34
34
  selected_item === null || selected_item === undefined
35
- ? empty_msg
35
+ ? getEmptyMsg
36
36
  : selected_item
37
37
  }}</span
38
38
  >
@@ -53,15 +53,23 @@
53
53
  class="oip_search_name"
54
54
  v-model="searchName"
55
55
  @input="changeInput()"
56
- :placeholder="filter_placeholder"
56
+ :placeholder="getPlaceholder"
57
57
  />
58
58
  </div>
59
59
  <!-- List -->
60
- <div class="oip_select_dropdown_selection_container">
60
+ <arg-data-loader
61
+ v-if="loading"
62
+ :text="getLoaderText[0]"
63
+ :sub-text="getLoaderText[1]"
64
+ />
65
+ <div class="oip_empty_dropdown" v-else-if="filterName.length === 0">
66
+ <p>{{ getEmptyContentMsg }}</p>
67
+ </div>
68
+ <div v-else class="oip_select_dropdown_selection_container">
61
69
  <div
62
- class="oip_select_complex_selection_loop"
63
70
  v-for="(element, index) of filterName()"
64
71
  :key="index"
72
+ class="oip_select_complex_selection_loop"
65
73
  :class="values_disabled.includes(index) ? 'disabled_option' : ''"
66
74
  @click="add_element(element, index)"
67
75
  >
@@ -127,9 +135,11 @@
127
135
  import argIcon from "./argIcon.vue";
128
136
  import argTooltip from "./argTooltip.vue";
129
137
  import argSimpleLabel from "./argSimpleLabel.vue";
138
+ import argDataLoader from "./argDataLoader.vue";
130
139
  import {
131
140
  onMounted,
132
141
  ref,
142
+ computed,
133
143
  watch,
134
144
  defineComponent,
135
145
  onUnmounted,
@@ -137,14 +147,13 @@ import {
137
147
  } from "vue";
138
148
  export default defineComponent({
139
149
  name: "argDropdownSelect",
140
- components: { argIcon, argTooltip, argSimpleLabel },
150
+ components: { argIcon, argTooltip, argSimpleLabel, argDataLoader },
141
151
  props: {
142
152
  element_table: { type: Array, required: true },
143
153
  search: { type: Boolean, default: true },
144
154
  filter_placeholder: {
145
155
  type: String,
146
- required: false,
147
- default: "Search options..."
156
+ default: null
148
157
  },
149
158
  close_on_click: { type: Boolean, default: true },
150
159
  default_select: { type: Number, required: false, default: null },
@@ -152,8 +161,18 @@ export default defineComponent({
152
161
  disabled: { type: Boolean, default: false },
153
162
  return_value: { type: Boolean, default: false },
154
163
  values_disabled: { type: Array, default: () => [] },
155
- empty_msg: { type: String, default: "No selection" },
156
- dropdown_label: { type: String, required: true }
164
+ empty_msg: { type: String, default: null },
165
+ dropdown_label: { type: String, required: true },
166
+ loading: { type: Boolean, default: false },
167
+ lang: {
168
+ type: String,
169
+ default: "en",
170
+ validator: (value) => {
171
+ return ["en", "fr"].includes(value);
172
+ }
173
+ },
174
+ loader_text: { type: Array, default: null },
175
+ empty_content_msg: { type: String, default: null }
157
176
  },
158
177
  emits: ["changeElement", "update:Selection", "changeInputValue"],
159
178
  setup(props, { emit }) {
@@ -161,9 +180,14 @@ export default defineComponent({
161
180
  const searchName = ref("");
162
181
  const labelElement = ref();
163
182
  const isEllipsisActive = ref(false);
164
- const table_values = ref(props.element_table);
165
- const selected_item = props.default_select ? ref(props.element_table[props.default_select]) : ref(null);
166
- const selected_number = props.default_select ? ref(props.default_select) : ref(null);
183
+ const table_values = ref([]);
184
+ const selected_item = ref(null);
185
+ const selected_number = ref(null);
186
+ onMounted(() => {
187
+ table_values.value = props.element_table;
188
+ selected_item.value = props.default_select ? props.element_table[props.default_select] : null;
189
+ selected_number.value = props.default_select ? props.default_select : null;
190
+ });
167
191
  watch(
168
192
  () => props.element_table,
169
193
  (new_element_table) => {
@@ -182,6 +206,30 @@ export default defineComponent({
182
206
  }
183
207
  }
184
208
  );
209
+ const getEmptyMsg = computed(() => {
210
+ if (props.empty_msg === null) {
211
+ return props.lang === "fr" ? "Aucune S\xE9lection" : "No Selection";
212
+ } else
213
+ return props.empty_msg;
214
+ });
215
+ const getLoaderText = computed(() => {
216
+ if (props.loader_text === null) {
217
+ return props.lang === "fr" ? ["Chargement...", "Veuillez patienter"] : ["Loading...", "Please wait"];
218
+ } else
219
+ return props.loader_text;
220
+ });
221
+ const getPlaceholder = computed(() => {
222
+ if (props.filter_placeholder === null) {
223
+ return props.lang === "fr" ? "Rechercher une option..." : "Search options...";
224
+ } else
225
+ return props.filter_placeholder;
226
+ });
227
+ const getEmptyContentMsg = computed(() => {
228
+ if (props.empty_content_msg === null) {
229
+ return props.lang === "fr" ? "Aucun contenu n'a \xE9t\xE9 trouv\xE9" : "No content was found";
230
+ } else
231
+ return props.empty_content_msg;
232
+ });
185
233
  function changeInput() {
186
234
  setTimeout(() => {
187
235
  emit("changeInputValue", searchName.value);
@@ -214,10 +262,8 @@ export default defineComponent({
214
262
  }
215
263
  }
216
264
  function closeDropdown() {
217
- if (isDisplay.value === true) {
218
- isDisplay.value = false;
219
- document?.removeEventListener("click", closeDropdown);
220
- }
265
+ isDisplay.value = false;
266
+ document?.removeEventListener("click", closeDropdown);
221
267
  }
222
268
  function filterName() {
223
269
  if (searchName.value !== null) {
@@ -270,7 +316,11 @@ export default defineComponent({
270
316
  closeDropdown,
271
317
  filterName,
272
318
  changeDisplay,
273
- changeInput
319
+ changeInput,
320
+ getEmptyMsg,
321
+ getLoaderText,
322
+ getPlaceholder,
323
+ getEmptyContentMsg
274
324
  };
275
325
  }
276
326
  });
@@ -22,8 +22,7 @@ declare const _default: import("vue").DefineComponent<{
22
22
  };
23
23
  filter_placeholder: {
24
24
  type: StringConstructor;
25
- required: false;
26
- default: string;
25
+ default: null;
27
26
  };
28
27
  close_on_click: {
29
28
  type: BooleanConstructor;
@@ -52,12 +51,42 @@ declare const _default: import("vue").DefineComponent<{
52
51
  };
53
52
  empty_msg: {
54
53
  type: StringConstructor;
55
- default: string;
54
+ default: null;
56
55
  };
57
56
  dropdown_label: {
58
57
  type: StringConstructor;
59
58
  required: true;
60
59
  };
60
+ loading: {
61
+ type: BooleanConstructor;
62
+ default: boolean;
63
+ };
64
+ lang: {
65
+ type: StringConstructor;
66
+ default: string;
67
+ validator: (value: string) => boolean;
68
+ };
69
+ loader_text: {
70
+ type: {
71
+ (arrayLength: number): string[];
72
+ (...items: string[]): string[];
73
+ new (arrayLength: number): string[];
74
+ new (...items: string[]): string[];
75
+ isArray(arg: any): arg is any[];
76
+ readonly prototype: any[];
77
+ from<T>(arrayLike: ArrayLike<T>): T[];
78
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
79
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
80
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
81
+ of<T_4>(...items: T_4[]): T_4[];
82
+ readonly [Symbol.species]: ArrayConstructor;
83
+ };
84
+ default: null;
85
+ };
86
+ empty_content_msg: {
87
+ type: StringConstructor;
88
+ default: null;
89
+ };
61
90
  }, {
62
91
  isDisplay: import("vue").Ref<boolean>;
63
92
  searchName: import("vue").Ref<string>;
@@ -72,6 +101,10 @@ declare const _default: import("vue").DefineComponent<{
72
101
  filterName: () => string[];
73
102
  changeDisplay: () => void;
74
103
  changeInput: () => void;
104
+ getEmptyMsg: import("vue").ComputedRef<string>;
105
+ getLoaderText: import("vue").ComputedRef<string[]>;
106
+ getPlaceholder: import("vue").ComputedRef<string>;
107
+ getEmptyContentMsg: import("vue").ComputedRef<string>;
75
108
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("changeElement" | "update:Selection" | "changeInputValue")[], "changeElement" | "update:Selection" | "changeInputValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
76
109
  element_table: {
77
110
  type: {
@@ -96,8 +129,7 @@ declare const _default: import("vue").DefineComponent<{
96
129
  };
97
130
  filter_placeholder: {
98
131
  type: StringConstructor;
99
- required: false;
100
- default: string;
132
+ default: null;
101
133
  };
102
134
  close_on_click: {
103
135
  type: BooleanConstructor;
@@ -126,20 +158,54 @@ declare const _default: import("vue").DefineComponent<{
126
158
  };
127
159
  empty_msg: {
128
160
  type: StringConstructor;
129
- default: string;
161
+ default: null;
130
162
  };
131
163
  dropdown_label: {
132
164
  type: StringConstructor;
133
165
  required: true;
134
166
  };
167
+ loading: {
168
+ type: BooleanConstructor;
169
+ default: boolean;
170
+ };
171
+ lang: {
172
+ type: StringConstructor;
173
+ default: string;
174
+ validator: (value: string) => boolean;
175
+ };
176
+ loader_text: {
177
+ type: {
178
+ (arrayLength: number): string[];
179
+ (...items: string[]): string[];
180
+ new (arrayLength: number): string[];
181
+ new (...items: string[]): string[];
182
+ isArray(arg: any): arg is any[];
183
+ readonly prototype: any[];
184
+ from<T>(arrayLike: ArrayLike<T>): T[];
185
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
186
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
187
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
188
+ of<T_4>(...items: T_4[]): T_4[];
189
+ readonly [Symbol.species]: ArrayConstructor;
190
+ };
191
+ default: null;
192
+ };
193
+ empty_content_msg: {
194
+ type: StringConstructor;
195
+ default: null;
196
+ };
135
197
  }>> & {
136
198
  onChangeElement?: ((...args: any[]) => any) | undefined;
137
199
  "onUpdate:Selection"?: ((...args: any[]) => any) | undefined;
138
200
  onChangeInputValue?: ((...args: any[]) => any) | undefined;
139
201
  }, {
202
+ lang: string;
203
+ loading: boolean;
140
204
  return_value: boolean;
141
205
  disabled: boolean;
142
206
  empty_msg: string;
207
+ loader_text: string[];
208
+ empty_content_msg: string;
143
209
  search: boolean;
144
210
  filter_placeholder: string;
145
211
  close_on_click: boolean;
@@ -9,8 +9,8 @@
9
9
  <div class="arg_main_layout_section" id="arg_main_layout_section">
10
10
  <slot name="body" />
11
11
  </div>
12
- <argFooter />
13
12
  </div>
13
+ <argFooter />
14
14
  </div>
15
15
  </template>
16
16
  <script>
@@ -23,7 +23,7 @@
23
23
  (nested && selected_nested.length > 0) ||
24
24
  (!nested && selected_items.length > 0)
25
25
  ? getAllSelect
26
- : emptyMsg
26
+ : getEmptyMsg
27
27
  }}
28
28
  </p>
29
29
  </arg-simple-label>
@@ -36,16 +36,24 @@
36
36
  >
37
37
  <!--<div v-if="filter_placeholder" class="oip_select_multiple_title">{{ filter_placeholder }}</div>-->
38
38
  <div v-if="search === true" class="oip_search_container">
39
- <arg-icon size="20" name="MagnifyingGlass"></arg-icon>
39
+ <arg-icon size="20" name="MagnifyingGlass" />
40
40
  <input
41
- class="oip_search_name"
42
41
  v-model="searchName"
42
+ class="oip_search_name"
43
+ :placeholder="getPlaceholder"
43
44
  @input="changeInput()"
44
- placeholder="Search"
45
45
  />
46
46
  </div>
47
+ <arg-data-loader
48
+ v-if="loading"
49
+ :text="getLoaderText[0]"
50
+ :sub-text="getLoaderText[1]"
51
+ />
52
+ <div class="oip_empty_dropdown" v-else-if="filterName.length === 0">
53
+ <p>{{ getEmptyContentMsg }}</p>
54
+ </div>
47
55
  <!-- List -->
48
- <div v-if="!nested" class="oip_select_dropdown_selection_container">
56
+ <div v-else-if="!nested" class="oip_select_dropdown_selection_container">
49
57
  <div
50
58
  v-if="show_all"
51
59
  class="oip_select_complex_selection_loop"
@@ -77,7 +85,7 @@
77
85
  : 'add',
78
86
  ]"
79
87
  >
80
- All
88
+ {{ lang === "fr" ? "Tous" : "All" }}
81
89
  </div>
82
90
  </div>
83
91
  <div :class="show_all ? 'oip_select_multiple_left_margin' : ''">
@@ -210,7 +218,7 @@
210
218
  : 'more',
211
219
  ]"
212
220
  >
213
- All
221
+ {{ lang === "fr" ? "Tous" : "All" }}
214
222
  </div>
215
223
  </div>
216
224
  <div
@@ -293,6 +301,7 @@
293
301
  <script>
294
302
  import argIcon from "./argIcon.vue";
295
303
  import argSimpleLabel from "./argSimpleLabel.vue";
304
+ import argDataLoader from "./argDataLoader.vue";
296
305
  import {
297
306
  onMounted,
298
307
  ref,
@@ -303,12 +312,12 @@ import {
303
312
  } from "vue";
304
313
  export default defineComponent({
305
314
  name: "argMultipleSelect",
306
- components: { argIcon, argSimpleLabel },
315
+ components: { argIcon, argSimpleLabel, argDataLoader },
307
316
  props: {
308
317
  element_table: { type: Array, required: true },
309
318
  nested: { type: Boolean, default: false },
310
319
  search: { type: Boolean, default: true },
311
- filter_placeholder: { type: String, required: false },
320
+ filter_placeholder: { type: String, default: null },
312
321
  show_all: { type: Boolean, default: false },
313
322
  default_select: { type: Array, required: false, default: () => [] },
314
323
  preselection_all: { type: Boolean, default: false },
@@ -316,8 +325,18 @@ export default defineComponent({
316
325
  multiple_columns: { type: Boolean, default: false },
317
326
  options_disable: { type: Array, default: () => [] },
318
327
  show_amount: { type: Boolean, default: true },
319
- emptyMsg: { type: String, default: "No selection" },
320
- multiple_label: { type: String, required: true }
328
+ empty_msg: { type: String, default: null },
329
+ multiple_label: { type: String, required: true },
330
+ loading: { type: Boolean, default: false },
331
+ lang: {
332
+ type: String,
333
+ default: "en",
334
+ validator: (value) => {
335
+ return ["en", "fr"].includes(value);
336
+ }
337
+ },
338
+ loader_text: { type: Array, default: null },
339
+ empty_content_msg: { type: String, default: null }
321
340
  },
322
341
  emits: ["changeElement", "update:Selection", "changeInputValue", "onClose"],
323
342
  setup(props, { emit }) {
@@ -356,6 +375,30 @@ export default defineComponent({
356
375
  selected_items.value = props.default_select;
357
376
  }
358
377
  });
378
+ const getEmptyMsg = computed(() => {
379
+ if (props.empty_msg === null) {
380
+ return props.lang === "fr" ? "Aucune S\xE9lection" : "No Selection";
381
+ } else
382
+ return props.empty_msg;
383
+ });
384
+ const getLoaderText = computed(() => {
385
+ if (props.loader_text === null) {
386
+ return props.lang === "fr" ? ["Chargement...", "Veuillez patienter"] : ["Loading...", "Please wait"];
387
+ } else
388
+ return props.loader_text;
389
+ });
390
+ const getPlaceholder = computed(() => {
391
+ if (props.filter_placeholder === null) {
392
+ return props.lang === "fr" ? "Rechercher une option..." : "Search options...";
393
+ } else
394
+ return props.filter_placeholder;
395
+ });
396
+ const getEmptyContentMsg = computed(() => {
397
+ if (props.empty_content_msg === null) {
398
+ return props.lang === "fr" ? "Aucun contenu n'a \xE9t\xE9 trouv\xE9" : "No content was found";
399
+ } else
400
+ return props.empty_content_msg;
401
+ });
359
402
  const getAllSelect = computed(() => {
360
403
  const fullSelect = props.nested ? selected_nested.value : selected_items.value;
361
404
  let filterFill = ``;
@@ -501,11 +544,9 @@ export default defineComponent({
501
544
  }
502
545
  }
503
546
  function close() {
504
- if (isDisplay.value) {
505
- emit("onClose");
506
- isDisplay.value = false;
507
- document.removeEventListener("click", close);
508
- }
547
+ emit("onClose");
548
+ isDisplay.value = false;
549
+ document.removeEventListener("click", close);
509
550
  }
510
551
  function add_element(element, index) {
511
552
  if (!props.options_disable.includes(index)) {
@@ -719,7 +760,11 @@ export default defineComponent({
719
760
  selected_nested,
720
761
  selected_all,
721
762
  selectedCats,
722
- valueFrom
763
+ valueFrom,
764
+ getEmptyMsg,
765
+ getLoaderText,
766
+ getPlaceholder,
767
+ getEmptyContentMsg
723
768
  };
724
769
  }
725
770
  });
@@ -26,7 +26,7 @@ declare const _default: import("vue").DefineComponent<{
26
26
  };
27
27
  filter_placeholder: {
28
28
  type: StringConstructor;
29
- required: false;
29
+ default: null;
30
30
  };
31
31
  show_all: {
32
32
  type: BooleanConstructor;
@@ -70,14 +70,44 @@ declare const _default: import("vue").DefineComponent<{
70
70
  type: BooleanConstructor;
71
71
  default: boolean;
72
72
  };
73
- emptyMsg: {
73
+ empty_msg: {
74
74
  type: StringConstructor;
75
- default: string;
75
+ default: null;
76
76
  };
77
77
  multiple_label: {
78
78
  type: StringConstructor;
79
79
  required: true;
80
80
  };
81
+ loading: {
82
+ type: BooleanConstructor;
83
+ default: boolean;
84
+ };
85
+ lang: {
86
+ type: StringConstructor;
87
+ default: string;
88
+ validator: (value: string) => boolean;
89
+ };
90
+ loader_text: {
91
+ type: {
92
+ (arrayLength: number): string[];
93
+ (...items: string[]): string[];
94
+ new (arrayLength: number): string[];
95
+ new (...items: string[]): string[];
96
+ isArray(arg: any): arg is any[];
97
+ readonly prototype: any[];
98
+ from<T>(arrayLike: ArrayLike<T>): T[];
99
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
100
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
101
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
102
+ of<T_4>(...items: T_4[]): T_4[];
103
+ readonly [Symbol.species]: ArrayConstructor;
104
+ };
105
+ default: null;
106
+ };
107
+ empty_content_msg: {
108
+ type: StringConstructor;
109
+ default: null;
110
+ };
81
111
  }, {
82
112
  del_all: () => void;
83
113
  del_all_cat: (index: number) => void;
@@ -106,6 +136,10 @@ declare const _default: import("vue").DefineComponent<{
106
136
  selected_all: import("vue").Ref<boolean>;
107
137
  selectedCats: import("vue").Ref<number[]>;
108
138
  valueFrom: import("vue").Ref<never[]>;
139
+ getEmptyMsg: import("vue").ComputedRef<string>;
140
+ getLoaderText: import("vue").ComputedRef<string[]>;
141
+ getPlaceholder: import("vue").ComputedRef<string>;
142
+ getEmptyContentMsg: import("vue").ComputedRef<string>;
109
143
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("onClose" | "changeElement" | "update:Selection" | "changeInputValue")[], "onClose" | "changeElement" | "update:Selection" | "changeInputValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
110
144
  element_table: {
111
145
  type: {
@@ -134,7 +168,7 @@ declare const _default: import("vue").DefineComponent<{
134
168
  };
135
169
  filter_placeholder: {
136
170
  type: StringConstructor;
137
- required: false;
171
+ default: null;
138
172
  };
139
173
  show_all: {
140
174
  type: BooleanConstructor;
@@ -178,29 +212,64 @@ declare const _default: import("vue").DefineComponent<{
178
212
  type: BooleanConstructor;
179
213
  default: boolean;
180
214
  };
181
- emptyMsg: {
215
+ empty_msg: {
182
216
  type: StringConstructor;
183
- default: string;
217
+ default: null;
184
218
  };
185
219
  multiple_label: {
186
220
  type: StringConstructor;
187
221
  required: true;
188
222
  };
223
+ loading: {
224
+ type: BooleanConstructor;
225
+ default: boolean;
226
+ };
227
+ lang: {
228
+ type: StringConstructor;
229
+ default: string;
230
+ validator: (value: string) => boolean;
231
+ };
232
+ loader_text: {
233
+ type: {
234
+ (arrayLength: number): string[];
235
+ (...items: string[]): string[];
236
+ new (arrayLength: number): string[];
237
+ new (...items: string[]): string[];
238
+ isArray(arg: any): arg is any[];
239
+ readonly prototype: any[];
240
+ from<T>(arrayLike: ArrayLike<T>): T[];
241
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
242
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
243
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
244
+ of<T_4>(...items: T_4[]): T_4[];
245
+ readonly [Symbol.species]: ArrayConstructor;
246
+ };
247
+ default: null;
248
+ };
249
+ empty_content_msg: {
250
+ type: StringConstructor;
251
+ default: null;
252
+ };
189
253
  }>> & {
190
254
  onOnClose?: ((...args: any[]) => any) | undefined;
191
255
  onChangeElement?: ((...args: any[]) => any) | undefined;
192
256
  "onUpdate:Selection"?: ((...args: any[]) => any) | undefined;
193
257
  onChangeInputValue?: ((...args: any[]) => any) | undefined;
194
258
  }, {
259
+ lang: string;
260
+ loading: boolean;
195
261
  disabled: boolean;
196
262
  show_amount: boolean;
263
+ empty_msg: string;
264
+ loader_text: string[];
265
+ empty_content_msg: string;
197
266
  search: boolean;
267
+ filter_placeholder: string;
198
268
  default_select: any[];
199
269
  nested: boolean;
200
270
  show_all: boolean;
201
271
  preselection_all: boolean;
202
272
  multiple_columns: boolean;
203
273
  options_disable: unknown[];
204
- emptyMsg: string;
205
274
  }, {}>;
206
275
  export default _default;
@@ -216,6 +216,16 @@ export default defineComponent({
216
216
  margin-top: 0px;
217
217
  }
218
218
 
219
+ .oip_empty_dropdown {
220
+ padding-top: 16px;
221
+ text-align: center;
222
+ font-weight: 400;
223
+ font-size: 14px;
224
+ line-height: 16px;
225
+ font-style: italic;
226
+ color: var(--cool-grey);
227
+ }
228
+
219
229
  .oip_select_complex_selection_loop > svg.add {
220
230
  fill: var(--accent) !important;
221
231
  color: var(--pure-white) !important;
@@ -714,7 +714,6 @@ button {
714
714
  padding: 4px 8px;
715
715
  align-items: center;
716
716
  gap: 8px;
717
- height: 16px;
718
717
  }
719
718
  .oip_tag > svg {
720
719
  cursor: pointer;
@@ -725,31 +724,31 @@ button {
725
724
  background-color: var(--pure-white) !important;
726
725
  color: var(--lavendar-grey) !important;
727
726
  }
728
- .oip_tag.is_red {
727
+ .oip_tag.is_rose {
729
728
  background: rgba(244, 63, 94, 0.1) !important;
730
729
  color: #9f1239;
731
730
  }
732
- .oip_tag.is_pink {
731
+ /*.oip_tag.is_pink {
733
732
  background: rgba(236, 72, 153, 0.1) !important;
734
733
  color: #9d174d;
735
- }
736
- .oip_tag.is_lilac {
734
+ }*/
735
+ .oip_tag.is_fushia {
737
736
  background: rgba(217, 70, 239, 0.1) !important;
738
737
  color: #86198f;
739
738
  }
740
- .oip_tag.is_purple {
739
+ /*.oip_tag.is_purple {
741
740
  background: rgba(168, 85, 247, 0.1) !important;
742
741
  color: #6b21a8;
743
742
  }
744
743
  .oip_tag.is_indigo {
745
744
  background: rgba(139, 92, 246, 0.1) !important;
746
745
  color: #5b21b6;
747
- }
746
+ }*/
748
747
  .oip_tag.is_blue {
749
- background: rgba(99, 102, 241, 0.1) !important;
750
- color: #3730a3;
748
+ background: rgba(59, 130, 246, 0.1) !important;
749
+ color: #1e40af;
751
750
  }
752
- .oip_tag.is_sapphire {
751
+ /*.oip_tag.is_sapphire {
753
752
  background: rgba(14, 165, 233, 0.1) !important;
754
753
  color: #075985;
755
754
  }
@@ -760,69 +759,37 @@ button {
760
759
  .oip_tag.is_teal {
761
760
  background: rgba(20, 184, 166, 0.1) !important;
762
761
  color: #115e59;
763
- }
762
+ }*/
764
763
  .oip_tag.is_emerald {
765
764
  background: rgba(16, 185, 129, 0.1) !important;
766
765
  color: #065f46;
767
766
  }
768
- .oip_tag.is_green {
767
+ /*.oip_tag.is_green {
769
768
  background: rgba(34, 197, 94, 0.1) !important;
770
769
  color: #166534;
771
- }
772
- .oip_tag.is_olive {
770
+ }*/
771
+ .oip_tag.is_lime {
773
772
  background: rgba(132, 204, 22, 0.1) !important;
774
773
  color: #3f6212;
775
774
  }
776
- .oip_tag.is_yellow {
775
+ /*.oip_tag.is_yellow {
777
776
  background: rgba(234, 179, 8, 0.1) !important;
778
777
  color: #854d0e;
779
- }
780
- .oip_tag.is_beige {
778
+ }*/
779
+ .oip_tag.is_amber {
781
780
  background: rgba(245, 158, 11, 0.1) !important;
782
781
  color: #92400e;
783
782
  }
784
- .oip_tag.is_coral {
783
+ /*.oip_tag.is_coral {
785
784
  background: rgba(249, 115, 22, 0.1) !important;
786
785
  color: #9a3412;
787
- }
786
+ }*/
788
787
 
789
- .oip_tag.is_orange {
790
- background: var(--orange) !important;
791
- border: 1px solid var(--orange) !important;
792
- }
793
- .oip_tag.is_lime {
794
- background: var(--lime) !important;
795
- border: 1px solid var(--lime) !important;
796
- }
797
- .oip_tag.is_cyan {
798
- background: var(--cyan) !important;
799
- border: 1px solid var(--cyan) !important;
800
- }
801
- .oip_tag.is_primary {
802
- background: var(--primary) !important;
803
- border: 1px solid var(--primary) !important;
804
- }
805
- .oip_tag.is_accent {
806
- background: var(--accent) !important;
807
- border: 1px solid var(--accent) !important;
808
- }
809
- .oip_tag.is_alert {
810
- background: var(--alert) !important;
811
- border: 1px solid var(--alert) !important;
812
- }
813
- .oip_tag.is_warning {
814
- background: var(--warning) !important;
815
- border: 1px solid var(--warning) !important;
816
- }
817
- .oip_tag.is_success {
818
- background: var(--success) !important;
819
- border: 1px solid var(--success) !important;
820
- }
821
- .oip_tag.is_light_grey {
788
+ .oip_tag.is_gray {
822
789
  background: var(--background) !important;
823
790
  color: var(--independence) !important;
824
791
  }
825
- .oip_tag.is_light_grey svg {
792
+ .oip_tag.is_gray svg {
826
793
  stroke: var(--cool-grey);
827
794
  color: var(--cool-grey);
828
795
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekkare/auriga",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "Aurgia is a UI kit developped by Tekkare",
5
5
  "license": "MIT",
6
6
  "type": "module",