@aziontech/webkit 0.0.2 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # @aziontech/webkit
2
+
3
+ Reusable UI components and design system utilities for building Azion web interfaces.
4
+
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ npm install @aziontech/webkit
10
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aziontech/webkit",
3
- "version": "0.0.2",
3
+ "version": "1.0.1",
4
4
  "description": "Reusable UI components and design system utilities for building Azion web interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,14 +13,14 @@
13
13
  },
14
14
  "scripts": {
15
15
  "clean": "rm -rf dist/",
16
- "clean:dts": "rm -rf src/core/form/**/*.d.ts src/core/form/**/*.d.ts.map",
16
+ "clean:dts": "rm -rf src/**/*.d.ts src/**/*.d.ts.map",
17
17
  "build:dts": "vue-tsc --declaration --emitDeclarationOnly",
18
- "build": "npm run clean:dts; npm run build:dts",
19
18
  "publish": "npm publish",
20
19
  "pack:dry": "npm pack --dry-run",
21
20
  "format": "prettier --write src/"
22
21
  },
23
22
  "dependencies": {
23
+ "primevue": "3.35.0",
24
24
  "vee-validate": "^4.15.1",
25
25
  "vue-tsc": "^3.2.5"
26
26
  },
@@ -99,10 +99,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
99
99
  }>> & Readonly<{}>, {
100
100
  value: string | boolean | Record<string, any>;
101
101
  disabled: boolean;
102
- isLabel: boolean;
103
102
  auto: boolean;
104
103
  isCard: boolean;
105
104
  hideSelector: boolean;
105
+ isLabel: boolean;
106
106
  binary: boolean;
107
107
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
108
108
  type __VLS_Slots = {
@@ -1 +1 @@
1
- {"version":3,"file":"field-checkbox-block.vue.d.ts","sourceRoot":"","sources":["field-checkbox-block.vue"],"names":[],"mappings":"wBA+UqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AAnDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgDG"}
1
+ {"version":3,"file":"field-checkbox-block.vue.d.ts","sourceRoot":"","sources":["field-checkbox-block.vue"],"names":[],"mappings":"wBA4UqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AAnDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgDG"}
@@ -1,132 +1,9 @@
1
- <template>
2
- <LabelBlock
3
- v-if="props.label"
4
- :for="props.name"
5
- :label="props.label"
6
- :isRequired="$attrs.required"
7
- :data-testid="customTestId.label"
8
- />
9
- <Dropdown
10
- appendTo="self"
11
- :id="name"
12
- :name="props.name"
13
- :loading="loading"
14
- v-model="inputValue"
15
- :options="data"
16
- :optionLabel="props.optionLabel"
17
- :optionDisabled="props.optionDisabled"
18
- :optionValue="props.optionValue"
19
- :optionGroupLabel="props.optionGroupLabel"
20
- :optionGroupChildren="props.optionGroupChildren"
21
- :placeholder="props.placeholder"
22
- :showClear="props.enableClearOption"
23
- @change="emitChange"
24
- @blur="emitBlur"
25
- :class="errorMessage ? 'p-invalid' : ''"
26
- v-bind="$attrs"
27
- class="w-full"
28
- :pt="{
29
- clearIcon: {
30
- 'data-testid': customTestId.clearIcon
31
- },
32
- filterInput: {
33
- class: 'w-full',
34
- 'data-testid': customTestId.filterInput
35
- },
36
- trigger: {
37
- 'data-testid': customTestId.trigger
38
- },
39
- loadingIcon: {
40
- 'data-testid': customTestId.loadingIcon
41
- }
42
- }"
43
- :data-testid="customTestId.dropdown"
44
- :virtualScrollerOptions="VIRTUAL_SCROLLER_CONFIG"
45
- >
46
- <template
47
- v-if="enableCustomLabel"
48
- #value="slotProps"
49
- >
50
- <span
51
- class="flex align-items-center gap-2 max-w-full"
52
- :data-testid="customTestId.value"
53
- >
54
- <i
55
- v-if="showIcon"
56
- :class="`pi ${iconSelected} ${applyIconColor(iconSelected)}`"
57
- ></i>
58
- <span
59
- class="truncate max-w-full"
60
- :title="getLabelBySelectedValue(slotProps.value)"
61
- >
62
- {{ getLabelBySelectedValue(slotProps.value) }}
63
- </span>
64
- </span>
65
- </template>
66
- <template #option="slotProps">
67
- <div class="flex align-items-center gap-2">
68
- <i
69
- v-if="slotProps.option.icon"
70
- :class="`pi ${slotProps.option.icon} ${applyIconColor(slotProps.option.icon)}`"
71
- ></i>
72
- <span
73
- v-else-if="!slotProps.option.icon && showIcon"
74
- class="w-4"
75
- ></span>
76
- <div>{{ slotProps.option.name }}</div>
77
- </div>
78
- </template>
79
-
80
- <template #header>
81
- <div class="p-2 flex">
82
- <div class="p-inputgroup">
83
- <InputText
84
- type="text"
85
- v-model="search"
86
- placeholder="Search"
87
- class="w-full rounded-r-none"
88
- ref="focusSearch"
89
- :data-testid="customTestId.search"
90
- />
91
- <span
92
- class="p-inputgroup-addon"
93
- @click="searchFilter"
94
- >
95
- <i class="pi pi-search"></i>
96
- </span>
97
- </div>
98
- </div>
99
- </template>
100
-
101
- <template #footer>
102
- <slot name="footer" />
103
- </template>
104
- </Dropdown>
105
-
106
- <small
107
- v-if="errorMessage"
108
- :data-testid="customTestId.error"
109
- class="p-error text-xs font-normal leading-tight"
110
- >
111
- {{ errorMessage }}
112
- </small>
113
- <small
114
- class="text-xs text-color-secondary font-normal leading-5"
115
- :data-testid="customTestId.description"
116
- v-if="props.description || hasDescriptionSlot"
117
- >
118
- <slot name="description">
119
- {{ props.description }}
120
- </slot>
121
- </small>
122
- </template>
123
-
124
1
  <script setup>
2
+ import { computed, toRef, useSlots, useAttrs, ref, onMounted, watchEffect, watch, inject } from 'vue'
3
+ import { watchDebounced } from '@vueuse/core'
125
4
  import Dropdown from 'primevue/dropdown'
126
5
  import InputText from 'primevue/inputtext'
127
6
  import { useField } from 'vee-validate'
128
- import { computed, toRef, useSlots, useAttrs, ref, onMounted, watchEffect, watch } from 'vue'
129
- import { watchDebounced } from '@vueuse/core'
130
7
  import LabelBlock from '../label'
131
8
 
132
9
  const props = defineProps({
@@ -208,7 +85,7 @@
208
85
  }
209
86
  })
210
87
 
211
- const emit = defineEmits(['onBlur', 'onChange', 'onSelectOption', 'onAccessDenied'])
88
+ const emit = defineEmits(['onBlur', 'onChange', 'onSelectOption', 'onAccessDenied', 'onLoaded'])
212
89
 
213
90
  const PAGE_INCREMENT = 1
214
91
  const PAGE_SIZE = 100
@@ -231,8 +108,13 @@
231
108
  const disableEmitInit = ref(props.disableEmitFirstRender)
232
109
  const alreadyLoadedData = ref(false)
233
110
 
111
+ const registerAsyncFormChild = inject('registerAsyncFormChild', null)
112
+ const notifyFormChildReady = registerAsyncFormChild?.()
113
+
234
114
  onMounted(async () => {
235
115
  await fetchData()
116
+ notifyFormChildReady?.()
117
+ emit('onLoaded')
236
118
  })
237
119
 
238
120
  const hasDescriptionSlot = !!slots.description
@@ -376,9 +258,9 @@
376
258
  [props.optionLabel]: item.name,
377
259
  [props.optionValue]: item.id,
378
260
  ...props?.moreOptions?.reduce(
379
- (additionalFields, option) => ({
261
+ (additionalFields, fieldKey) => ({
380
262
  ...additionalFields,
381
- [option]: item[option]
263
+ [fieldKey]: item[fieldKey]
382
264
  }),
383
265
  {}
384
266
  )
@@ -480,9 +362,9 @@
480
362
  [props.optionLabel]: results.name,
481
363
  [props.optionValue]: results.id,
482
364
  ...props?.moreOptions?.reduce(
483
- (additionalFields, option) => ({
365
+ (additionalFields, fieldKey) => ({
484
366
  ...additionalFields,
485
- [option]: results[option]
367
+ [fieldKey]: results[fieldKey]
486
368
  }),
487
369
  {}
488
370
  )
@@ -609,11 +491,23 @@
609
491
  loading
610
492
  }
611
493
 
612
- const checkValueInList = (value) => {
613
- const existitemInList = data.value?.some((item) => item[props.optionValue] === value)
494
+ const checkValueInList = async (value) => {
495
+ const isGroupedData =
496
+ data.value.length > 0 &&
497
+ data.value.some((item) => item[props.optionGroupLabel] && item[props.optionGroupChildren])
498
+
499
+ let existsInList = false
500
+
501
+ if (isGroupedData) {
502
+ existsInList = data.value.some((group) =>
503
+ group[props.optionGroupChildren]?.some((item) => item[props.optionValue] === value)
504
+ )
505
+ } else {
506
+ existsInList = data.value?.some((item) => item[props.optionValue] === value)
507
+ }
614
508
 
615
- if (!existitemInList) {
616
- loadSelectedValue(value)
509
+ if (!existsInList) {
510
+ await loadSelectedValue(value)
617
511
  alreadyLoadedData.value = true
618
512
  }
619
513
  }
@@ -629,3 +523,126 @@
629
523
  refreshData
630
524
  })
631
525
  </script>
526
+
527
+ <template>
528
+ <LabelBlock
529
+ v-if="props.label"
530
+ :for="props.name"
531
+ :label="props.label"
532
+ :isRequired="$attrs.required"
533
+ :data-testid="customTestId.label"
534
+ />
535
+ <Dropdown
536
+ appendTo="self"
537
+ :id="name"
538
+ :name="props.name"
539
+ :loading="loading"
540
+ v-model="inputValue"
541
+ :options="data"
542
+ :optionLabel="props.optionLabel"
543
+ :optionDisabled="props.optionDisabled"
544
+ :optionValue="props.optionValue"
545
+ :optionGroupLabel="props.optionGroupLabel"
546
+ :optionGroupChildren="props.optionGroupChildren"
547
+ :placeholder="props.placeholder"
548
+ :showClear="props.enableClearOption"
549
+ @change="emitChange"
550
+ @blur="emitBlur"
551
+ :class="errorMessage ? 'p-invalid' : ''"
552
+ v-bind="$attrs"
553
+ class="w-full"
554
+ :pt="{
555
+ clearIcon: {
556
+ 'data-testid': customTestId.clearIcon
557
+ },
558
+ filterInput: {
559
+ class: 'w-full',
560
+ 'data-testid': customTestId.filterInput
561
+ },
562
+ trigger: {
563
+ 'data-testid': customTestId.trigger
564
+ },
565
+ loadingIcon: {
566
+ 'data-testid': customTestId.loadingIcon
567
+ }
568
+ }"
569
+ :data-testid="customTestId.dropdown"
570
+ :virtualScrollerOptions="VIRTUAL_SCROLLER_CONFIG"
571
+ >
572
+ <template
573
+ v-if="enableCustomLabel"
574
+ #value="slotProps"
575
+ >
576
+ <span
577
+ class="flex align-items-center gap-2 max-w-full"
578
+ :data-testid="customTestId.value"
579
+ >
580
+ <i
581
+ v-if="showIcon"
582
+ :class="`pi ${iconSelected} ${applyIconColor(iconSelected)}`"
583
+ ></i>
584
+ <span
585
+ class="truncate max-w-full"
586
+ :title="getLabelBySelectedValue(slotProps.value)"
587
+ >
588
+ {{ getLabelBySelectedValue(slotProps.value) }}
589
+ </span>
590
+ </span>
591
+ </template>
592
+ <template #option="slotProps">
593
+ <div class="flex align-items-center gap-2">
594
+ <i
595
+ v-if="slotProps.option.icon"
596
+ :class="`pi ${slotProps.option.icon} ${applyIconColor(slotProps.option.icon)}`"
597
+ ></i>
598
+ <span
599
+ v-else-if="!slotProps.option.icon && showIcon"
600
+ class="w-4"
601
+ ></span>
602
+ <div>{{ slotProps.option.name }}</div>
603
+ </div>
604
+ </template>
605
+
606
+ <template #header>
607
+ <div class="p-2 flex">
608
+ <div class="p-inputgroup">
609
+ <InputText
610
+ type="text"
611
+ v-model="search"
612
+ placeholder="Search"
613
+ class="w-full rounded-r-none"
614
+ ref="focusSearch"
615
+ :data-testid="customTestId.search"
616
+ />
617
+ <span
618
+ class="p-inputgroup-addon"
619
+ @click="searchFilter"
620
+ >
621
+ <i class="pi pi-search"></i>
622
+ </span>
623
+ </div>
624
+ </div>
625
+ </template>
626
+
627
+ <template #footer>
628
+ <slot name="footer" />
629
+ </template>
630
+ </Dropdown>
631
+
632
+ <small
633
+ v-if="errorMessage"
634
+ :data-testid="customTestId.error"
635
+ class="p-error text-xs font-normal leading-tight"
636
+ >
637
+ {{ errorMessage }}
638
+ </small>
639
+ <small
640
+ class="text-xs text-color-secondary font-normal leading-5"
641
+ :data-testid="customTestId.description"
642
+ v-if="props.description || hasDescriptionSlot"
643
+ >
644
+ <slot name="description">
645
+ {{ props.description }}
646
+ </slot>
647
+ </small>
648
+ </template>
@@ -88,6 +88,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
88
88
  onChange: (...args: any[]) => void;
89
89
  onSelectOption: (...args: any[]) => void;
90
90
  onAccessDenied: (...args: any[]) => void;
91
+ onLoaded: (...args: any[]) => void;
91
92
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
92
93
  value: {
93
94
  type: (StringConstructor | NumberConstructor)[];
@@ -170,6 +171,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
170
171
  onOnChange?: ((...args: any[]) => any) | undefined;
171
172
  onOnSelectOption?: ((...args: any[]) => any) | undefined;
172
173
  onOnAccessDenied?: ((...args: any[]) => any) | undefined;
174
+ onOnLoaded?: ((...args: any[]) => any) | undefined;
173
175
  }>, {
174
176
  value: string | number;
175
177
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"field-dropdown-lazy-loader.vue.d.ts","sourceRoot":"","sources":["field-dropdown-lazy-loader.vue"],"names":[],"mappings":"wBAu+CqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApFzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiFG"}
1
+ {"version":3,"file":"field-dropdown-lazy-loader.vue.d.ts","sourceRoot":"","sources":["field-dropdown-lazy-loader.vue"],"names":[],"mappings":"wBAwgDqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApFzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiFG"}
@@ -1,101 +1,9 @@
1
- <template>
2
- <LabelBlock
3
- v-if="props.label"
4
- :for="props.name"
5
- :label="props.label"
6
- :isRequired="$attrs.required"
7
- :data-testid="customTestId.label"
8
- />
9
- <MultiSelect
10
- :id="name"
11
- :name="props.name"
12
- :loading="loading"
13
- v-model="inputValue"
14
- :options="data"
15
- :optionLabel="props.optionLabel"
16
- :optionDisabled="props.optionDisabled"
17
- :optionValue="props.optionValue"
18
- :placeholder="props.placeholder"
19
- :showClear="props.enableClearOption"
20
- @change="emitChange"
21
- @blur="emitBlur"
22
- :class="errorMessage ? 'p-invalid' : ''"
23
- v-bind="$attrs"
24
- class="w-full md:w-80"
25
- display="chip"
26
- :pt="{
27
- clearIcon: {
28
- 'data-testid': customTestId.clearIcon
29
- },
30
- filterInput: {
31
- class: 'w-full',
32
- 'data-testid': customTestId.filterInput
33
- },
34
- trigger: {
35
- 'data-testid': customTestId.trigger
36
- },
37
- loadingIcon: {
38
- 'data-testid': customTestId.loadingIcon
39
- }
40
- }"
41
- :data-testid="customTestId.multiselect"
42
- :virtualScrollerOptions="VIRTUAL_SCROLLER_CONFIG"
43
- >
44
- <template
45
- v-if="enableCustomLabel"
46
- #value="slotProps"
47
- >
48
- <span :data-testid="customTestId.value">
49
- {{ getLabelsForSelectedValues(slotProps.value) }}
50
- </span>
51
- </template>
52
- <template #header>
53
- <div class="p-2 flex">
54
- <div class="p-inputgroup">
55
- <InputText
56
- type="text"
57
- v-model="search"
58
- placeholder="Search"
59
- class="w-full rounded-r-none"
60
- ref="focusSearch"
61
- :data-testid="customTestId.search"
62
- />
63
- <span
64
- class="p-inputgroup-addon"
65
- @click="searchFilter"
66
- >
67
- <i class="pi pi-search"></i>
68
- </span>
69
- </div>
70
- </div>
71
- </template>
72
- <template #footer>
73
- <slot name="footer" />
74
- </template>
75
- </MultiSelect>
76
- <small
77
- v-if="errorMessage"
78
- :data-testid="customTestId.error"
79
- class="p-error text-xs font-normal leading-tight"
80
- >
81
- {{ errorMessage }}
82
- </small>
83
- <small
84
- class="text-xs text-color-secondary font-normal leading-5"
85
- :data-testid="customTestId.description"
86
- v-if="props.description || hasDescriptionSlot"
87
- >
88
- <slot name="description">
89
- {{ props.description }}
90
- </slot>
91
- </small>
92
- </template>
93
1
  <script setup>
2
+ import { computed, toRef, useSlots, useAttrs, ref, onMounted, watchEffect, watch } from 'vue'
3
+ import { watchDebounced } from '@vueuse/core'
94
4
  import MultiSelect from 'primevue/multiselect'
95
5
  import InputText from 'primevue/inputtext'
96
6
  import { useField } from 'vee-validate'
97
- import { computed, toRef, useSlots, useAttrs, ref, onMounted, watchEffect, watch } from 'vue'
98
- import { watchDebounced } from '@vueuse/core'
99
7
  import LabelBlock from '../label'
100
8
 
101
9
  const props = defineProps({
@@ -161,7 +69,14 @@
161
69
  }
162
70
  })
163
71
 
164
- const emit = defineEmits(['onBlur', 'onChange', 'onSelectOption', 'onAccessDenied', 'onClear'])
72
+ const emit = defineEmits([
73
+ 'onBlur',
74
+ 'onChange',
75
+ 'onSelectOption',
76
+ 'onAccessDenied',
77
+ 'onClear',
78
+ 'onLoaded'
79
+ ])
165
80
  const PAGE_INCREMENT = 1
166
81
  const PAGE_SIZE = 100
167
82
  const INITIAL_PAGE = 1
@@ -184,6 +99,7 @@
184
99
 
185
100
  onMounted(async () => {
186
101
  await fetchData()
102
+ emit('onLoaded')
187
103
  })
188
104
 
189
105
  const hasDescriptionSlot = !!slots.description
@@ -437,3 +353,97 @@
437
353
  refreshData
438
354
  })
439
355
  </script>
356
+
357
+ <template>
358
+ <LabelBlock
359
+ v-if="props.label"
360
+ :for="props.name"
361
+ :label="props.label"
362
+ :isRequired="$attrs.required"
363
+ :data-testid="customTestId.label"
364
+ />
365
+ <MultiSelect
366
+ :id="name"
367
+ :name="props.name"
368
+ :loading="loading"
369
+ v-model="inputValue"
370
+ :options="data"
371
+ :optionLabel="props.optionLabel"
372
+ :optionDisabled="props.optionDisabled"
373
+ :optionValue="props.optionValue"
374
+ :placeholder="props.placeholder"
375
+ :showClear="props.enableClearOption"
376
+ @change="emitChange"
377
+ @blur="emitBlur"
378
+ :class="errorMessage ? 'p-invalid' : ''"
379
+ v-bind="$attrs"
380
+ class="w-full md:w-80"
381
+ display="chip"
382
+ :pt="{
383
+ clearIcon: {
384
+ 'data-testid': customTestId.clearIcon
385
+ },
386
+ filterInput: {
387
+ class: 'w-full',
388
+ 'data-testid': customTestId.filterInput
389
+ },
390
+ trigger: {
391
+ 'data-testid': customTestId.trigger
392
+ },
393
+ loadingIcon: {
394
+ 'data-testid': customTestId.loadingIcon
395
+ }
396
+ }"
397
+ :data-testid="customTestId.multiselect"
398
+ :virtualScrollerOptions="VIRTUAL_SCROLLER_CONFIG"
399
+ >
400
+ <template
401
+ v-if="enableCustomLabel"
402
+ #value="slotProps"
403
+ >
404
+ <span :data-testid="customTestId.value">
405
+ {{ getLabelsForSelectedValues(slotProps.value) }}
406
+ </span>
407
+ </template>
408
+ <template #header>
409
+ <div class="p-2 flex">
410
+ <div class="p-inputgroup">
411
+ <InputText
412
+ type="text"
413
+ v-model="search"
414
+ placeholder="Search"
415
+ class="w-full rounded-r-none"
416
+ ref="focusSearch"
417
+ :data-testid="customTestId.search"
418
+ />
419
+ <span
420
+ class="p-inputgroup-addon"
421
+ @click="searchFilter"
422
+ >
423
+ <i class="pi pi-search"></i>
424
+ </span>
425
+ </div>
426
+ </div>
427
+ </template>
428
+ <template #footer>
429
+ <slot name="footer" />
430
+ </template>
431
+ </MultiSelect>
432
+ <small
433
+ v-if="errorMessage"
434
+ :data-testid="customTestId.error"
435
+ class="p-error text-xs font-normal leading-tight"
436
+ >
437
+ {{ errorMessage }}
438
+ </small>
439
+ <small
440
+ class="text-xs text-color-secondary font-normal leading-5"
441
+ :data-testid="customTestId.description"
442
+ v-if="props.description || hasDescriptionSlot"
443
+ >
444
+ <slot name="description">
445
+ {{ props.description }}
446
+ </slot>
447
+ </small>
448
+ </template>
449
+
@@ -72,6 +72,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
72
72
  onChange: (...args: any[]) => void;
73
73
  onSelectOption: (...args: any[]) => void;
74
74
  onAccessDenied: (...args: any[]) => void;
75
+ onLoaded: (...args: any[]) => void;
75
76
  onClear: (...args: any[]) => void;
76
77
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
77
78
  value: {
@@ -139,6 +140,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
139
140
  onOnChange?: ((...args: any[]) => any) | undefined;
140
141
  onOnSelectOption?: ((...args: any[]) => any) | undefined;
141
142
  onOnAccessDenied?: ((...args: any[]) => any) | undefined;
143
+ onOnLoaded?: ((...args: any[]) => any) | undefined;
142
144
  onOnClear?: ((...args: any[]) => any) | undefined;
143
145
  }>, {
144
146
  value: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"field-dropdown-multi-select-lazy-loader.vue.d.ts","sourceRoot":"","sources":["field-dropdown-multi-select-lazy-loader.vue"],"names":[],"mappings":"wBAukCqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiEG"}
1
+ {"version":3,"file":"field-dropdown-multi-select-lazy-loader.vue.d.ts","sourceRoot":"","sources":["field-dropdown-multi-select-lazy-loader.vue"],"names":[],"mappings":"wBAylCqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiEG"}
@@ -103,10 +103,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
103
103
  }>, {
104
104
  disabled: boolean;
105
105
  inputValue: string | boolean | Record<string, any>;
106
- isLabel: boolean;
107
106
  auto: boolean;
108
107
  isCard: boolean;
109
108
  hideSelector: boolean;
109
+ isLabel: boolean;
110
110
  binary: boolean;
111
111
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
112
112
  type __VLS_Slots = {
@@ -1 +1 @@
1
- {"version":3,"file":"field-radio-block.vue.d.ts","sourceRoot":"","sources":["field-radio-block.vue"],"names":[],"mappings":"wBA+VqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiDG"}
1
+ {"version":3,"file":"field-radio-block.vue.d.ts","sourceRoot":"","sources":["field-radio-block.vue"],"names":[],"mappings":"wBA4VqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AApDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAiDG"}
@@ -112,10 +112,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
112
112
  value: boolean;
113
113
  disabled: boolean;
114
114
  readonly: boolean;
115
- isLabel: boolean;
116
115
  auto: boolean;
117
116
  isCard: boolean;
118
117
  hideSelector: boolean;
118
+ isLabel: boolean;
119
119
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
120
120
  type __VLS_Slots = {
121
121
  footer?: ((props: {}) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"field-switch-block.vue.d.ts","sourceRoot":"","sources":["field-switch-block.vue"],"names":[],"mappings":"wBA4XqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AAxDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAqDG"}
1
+ {"version":3,"file":"field-switch-block.vue.d.ts","sourceRoot":"","sources":["field-switch-block.vue"],"names":[],"mappings":"wBAyXqB,OAAO,YAAY;;AADxC,4BAA2B,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;qBAEtD,CAAC,EAAE,CAAC;;;AAxDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAqDG"}
@@ -88,13 +88,13 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
88
88
  "onClick-icon"?: ((...args: any[]) => any) | undefined;
89
89
  }>, {
90
90
  value: string;
91
- required: boolean;
92
91
  label: string;
93
92
  placeholder: string;
94
93
  description: string;
95
94
  disabled: boolean;
96
95
  readonly: boolean;
97
96
  icon: string;
97
+ required: boolean;
98
98
  iconPosition: string;
99
99
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
100
100
  //# sourceMappingURL=field-text-icon.vue.d.ts.map