quasar-ui-danx 0.3.11 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. package/dist/danx.es.js +172 -167
  2. package/dist/danx.es.js.map +1 -1
  3. package/dist/danx.umd.js +5 -5
  4. package/dist/danx.umd.js.map +1 -1
  5. package/dist/style.css +1 -1
  6. package/package.json +1 -1
  7. package/src/components/ActionTable/ActionMenu.vue +7 -7
  8. package/src/components/ActionTable/ActionTable.vue +33 -29
  9. package/src/components/ActionTable/ActionTableColumn.vue +37 -15
  10. package/src/components/ActionTable/ActionTableHeaderColumn.vue +9 -9
  11. package/src/components/ActionTable/Columns/ColumnListItem.vue +33 -10
  12. package/src/components/ActionTable/Columns/ColumnSettingsDialog.vue +23 -19
  13. package/src/components/ActionTable/Columns/TitleColumnFormat.vue +5 -3
  14. package/src/components/ActionTable/Columns/VisibleColumnsToggleButtons.vue +24 -22
  15. package/src/components/ActionTable/EmptyTableState.vue +4 -2
  16. package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +9 -9
  17. package/src/components/ActionTable/Filters/FilterFieldItem.vue +7 -5
  18. package/src/components/ActionTable/Filters/FilterFieldList.vue +21 -21
  19. package/src/components/ActionTable/Filters/FilterListToggle.vue +13 -10
  20. package/src/components/ActionTable/Filters/FilterToolbarLayout.vue +14 -7
  21. package/src/components/ActionTable/Filters/FilterableField.vue +75 -70
  22. package/src/components/ActionTable/Form/Fields/BooleanField.vue +9 -9
  23. package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +7 -7
  24. package/src/components/ActionTable/Form/Fields/DateField.vue +4 -4
  25. package/src/components/ActionTable/Form/Fields/DateRangeField.vue +9 -9
  26. package/src/components/ActionTable/Form/Fields/DateTimeField.vue +13 -10
  27. package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +36 -14
  28. package/src/components/ActionTable/Form/Fields/EditableDiv.vue +3 -3
  29. package/src/components/ActionTable/Form/Fields/FieldLabel.vue +2 -2
  30. package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +23 -20
  31. package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +10 -10
  32. package/src/components/ActionTable/Form/Fields/IntegerField.vue +6 -6
  33. package/src/components/ActionTable/Form/Fields/LabeledInput.vue +20 -17
  34. package/src/components/ActionTable/Form/Fields/MultiFileField.vue +35 -35
  35. package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +15 -15
  36. package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +4 -4
  37. package/src/components/ActionTable/Form/Fields/NumberField.vue +11 -11
  38. package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +11 -11
  39. package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +38 -33
  40. package/src/components/ActionTable/Form/Fields/SelectField.vue +37 -35
  41. package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +19 -15
  42. package/src/components/ActionTable/Form/Fields/SingleFileField.vue +29 -28
  43. package/src/components/ActionTable/Form/Fields/TextField.vue +22 -22
  44. package/src/components/ActionTable/Form/RenderedForm.vue +5 -1
  45. package/src/components/ActionTable/TableSummaryRow.vue +15 -15
  46. package/src/components/AuditHistory/AuditHistoryItem.vue +12 -6
  47. package/src/components/AuditHistory/AuditHistoryItemValue.vue +6 -6
  48. package/src/components/DragAndDrop/HandleDraggable.vue +21 -21
  49. package/src/components/DragAndDrop/ListItemDraggable.vue +19 -15
  50. package/src/components/PanelsDrawer/PanelsDrawer.vue +18 -11
  51. package/src/components/PanelsDrawer/PanelsDrawerPanels.vue +9 -5
  52. package/src/components/PanelsDrawer/PanelsDrawerTabs.vue +18 -13
  53. package/src/components/Utility/Buttons/ExportButton.vue +5 -1
  54. package/src/components/Utility/Buttons/RefreshButton.vue +2 -2
  55. package/src/components/Utility/Controls/PreviousNextControls.vue +8 -8
  56. package/src/components/Utility/Dialogs/ConfirmDialog.vue +32 -29
  57. package/src/components/Utility/Dialogs/FullScreenDialog.vue +12 -9
  58. package/src/components/Utility/Dialogs/FullscreenCarouselDialog.vue +30 -26
  59. package/src/components/Utility/Dialogs/InfoDialog.vue +25 -22
  60. package/src/components/Utility/Dialogs/InputDialog.vue +7 -7
  61. package/src/components/Utility/Files/FilePreview.vue +64 -47
  62. package/src/components/Utility/Files/SvgImg.vue +7 -4
  63. package/src/components/Utility/Formats/GpsCoordinatesFormat.vue +11 -3
  64. package/src/components/Utility/Layouts/CollapsableSidebar.vue +15 -15
  65. package/src/components/Utility/Layouts/ContentDrawer.vue +8 -8
  66. package/src/components/Utility/Popovers/InteractiveTooltip.vue +7 -7
  67. package/src/components/Utility/Popovers/PopoverMenu.vue +21 -21
  68. package/src/components/Utility/Tabs/BadgeTab.vue +9 -7
  69. package/src/components/Utility/Tools/ActionVnode.vue +5 -5
  70. package/src/components/Utility/Tools/RenderComponent.vue +11 -9
  71. package/src/components/Utility/Transitions/StaggeredListTransition.vue +7 -7
@@ -2,99 +2,104 @@
2
2
  <div>
3
3
  <template v-if="field.type === 'multi-select'">
4
4
  <SelectField
5
- v-if="field.options?.length > 0 || loading"
6
- :model-value="modelValue"
7
- :options="field.options"
8
- multiple
9
- :loading="loading"
10
- :chip-limit="1"
11
- filterable
12
- :placeholder="field.placeholder"
13
- :label="field.label"
14
- @update:model-value="onUpdate"
5
+ v-if="field.options?.length > 0 || loading"
6
+ :model-value="modelValue"
7
+ :options="field.options"
8
+ multiple
9
+ :loading="loading"
10
+ :chip-limit="1"
11
+ filterable
12
+ :placeholder="field.placeholder"
13
+ :label="field.label"
14
+ @update:model-value="onUpdate"
15
15
  />
16
16
  <div
17
- v-else
18
- class="mt-2"
17
+ v-else
18
+ class="mt-2"
19
19
  >
20
- <div class="text-xs font-bold">{{ field.label }}</div>
21
- <div class="text-sm ml-3 py-2">No Available Options</div>
20
+ <div class="text-xs font-bold">
21
+ {{ field.label }}
22
+ </div>
23
+ <div class="text-sm ml-3 py-2">
24
+ No Available Options
25
+ </div>
22
26
  </div>
23
27
  </template>
24
28
 
25
29
  <SelectField
26
- v-else-if="field.type === 'single-select'"
27
- :model-value="modelValue"
28
- :options="field.options"
29
- :placeholder="field.placeholder"
30
- :loading="loading"
31
- :label="field.label"
32
- @update:model-value="onUpdate"
30
+ v-else-if="field.type === 'single-select'"
31
+ :model-value="modelValue"
32
+ :options="field.options"
33
+ :placeholder="field.placeholder"
34
+ :loading="loading"
35
+ :label="field.label"
36
+ @update:model-value="onUpdate"
33
37
  />
34
38
  <DateField
35
- v-else-if="field.type === 'date'"
36
- :model-value="modelValue"
37
- :label="field.label"
38
- class="mt-2"
39
- @update:model-value="onUpdate"
39
+ v-else-if="field.type === 'date'"
40
+ :model-value="modelValue"
41
+ :label="field.label"
42
+ class="mt-2"
43
+ @update:model-value="onUpdate"
40
44
  />
41
45
  <DateRangeField
42
- v-else-if="field.type === 'date-range'"
43
- :model-value="modelValue"
44
- :label="field.label"
45
- :inline="field.inline"
46
- with-time
47
- class="mt-2 reactive"
48
- @update:model-value="onUpdate"
46
+ v-else-if="field.type === 'date-range'"
47
+ :model-value="modelValue"
48
+ :label="field.label"
49
+ :inline="field.inline"
50
+ with-time
51
+ class="mt-2 reactive"
52
+ @update:model-value="onUpdate"
49
53
  />
50
54
  <NumberRangeField
51
- v-else-if="field.type === 'number-range'"
52
- :model-value="modelValue"
53
- :label="field.label"
54
- class="mt-2"
55
- :debounce="1000"
56
- @update:model-value="onUpdate"
55
+ v-else-if="field.type === 'number-range'"
56
+ :model-value="modelValue"
57
+ :label="field.label"
58
+ class="mt-2"
59
+ :debounce="1000"
60
+ @update:model-value="onUpdate"
57
61
  />
58
62
  <NumberRangeField
59
- v-else-if="field.type === 'currency-range'"
60
- :model-value="modelValue"
61
- :label="field.label"
62
- class="mt-2"
63
- :debounce="1000"
64
- currency
65
- @update:model-value="onUpdate"
63
+ v-else-if="field.type === 'currency-range'"
64
+ :model-value="modelValue"
65
+ :label="field.label"
66
+ class="mt-2"
67
+ :debounce="1000"
68
+ currency
69
+ @update:model-value="onUpdate"
66
70
  />
67
71
  <NumberRangeField
68
- v-else-if="field.type === 'percent-range'"
69
- :model-value="modelValue"
70
- :label="field.label"
71
- class="mt-2"
72
- :debounce="1000"
73
- percent
74
- @update:model-value="onUpdate"
72
+ v-else-if="field.type === 'percent-range'"
73
+ :model-value="modelValue"
74
+ :label="field.label"
75
+ class="mt-2"
76
+ :debounce="1000"
77
+ percent
78
+ @update:model-value="onUpdate"
75
79
  />
76
80
  <BooleanField
77
- v-else-if="field.type === 'boolean'"
78
- :field="field"
79
- :model-value="modelValue"
80
- class="mt-2"
81
- label-class="text-xs font-bold"
82
- @update:model-value="onUpdate"
81
+ v-else-if="field.type === 'boolean'"
82
+ :field="field"
83
+ :model-value="modelValue"
84
+ class="mt-2"
85
+ :toggle-indeterminate="field.toggleIndeterminate || false"
86
+ label-class="text-xs font-bold"
87
+ @update:model-value="onUpdate"
83
88
  />
84
89
  <MultiKeywordField
85
- v-else-if="field.type === 'multi-keywords'"
86
- :model-value="modelValue"
87
- :field="field"
88
- @update:model-value="onUpdate"
90
+ v-else-if="field.type === 'multi-keywords'"
91
+ :model-value="modelValue"
92
+ :field="field"
93
+ @update:model-value="onUpdate"
89
94
  />
90
95
  <SelectWithChildrenField
91
- v-else-if="field.type === 'select-with-children'"
92
- :model-value="modelValue"
93
- :options="field.options"
94
- :loading="loading"
95
- :label="field.label"
96
- :placeholder="field.placeholder"
97
- @update:model-value="onUpdate"
96
+ v-else-if="field.type === 'select-with-children'"
97
+ :model-value="modelValue"
98
+ :options="field.options"
99
+ :loading="loading"
100
+ :label="field.label"
101
+ :placeholder="field.placeholder"
102
+ @update:model-value="onUpdate"
98
103
  />
99
104
  <template v-else>
100
105
  Field &quot;{{ field.name }}&quot;: Unknown filter type {{ field.type }}
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <QToggle
3
- :data-testid="'boolean-field-' + field.id"
4
- :model-value="modelValue"
5
- :disable="disable || readonly"
6
- :toggle-indeterminate="toggleIndeterminate"
7
- :indeterminate-value="undefined"
8
- @update:model-value="$emit('update:model-value', $event)"
3
+ :data-testid="'boolean-field-' + field.id"
4
+ :model-value="modelValue || (toggleIndeterminate ? modelValue : false)"
5
+ :disable="disable || readonly"
6
+ :toggle-indeterminate="toggleIndeterminate"
7
+ :indeterminate-value="undefined"
8
+ @update:model-value="$emit('update:model-value', $event)"
9
9
  >
10
10
  <FieldLabel
11
- :field="{...field, label}"
12
- :show-name="showName"
13
- :class="labelClass"
11
+ :field="{...field, label: label || field.label}"
12
+ :show-name="showName"
13
+ :class="labelClass"
14
14
  />
15
15
  </QToggle>
16
16
  </template>
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <LabeledInput
3
- type="password"
4
- v-bind="props"
5
- :name="name"
6
- :model-value="modelValue"
7
- :rules="rules"
8
- @update:model-value="$emit('update:model-value', $event)"
3
+ type="password"
4
+ v-bind="props"
5
+ :name="name"
6
+ :model-value="modelValue"
7
+ :rules="rules"
8
+ @update:model-value="$emit('update:model-value', $event)"
9
9
  />
10
10
  </template>
11
11
 
@@ -43,6 +43,6 @@ const props = defineProps({
43
43
 
44
44
  const rules = [
45
45
  (val) =>
46
- val === props.password || "The password and confirmation do not match"
46
+ val === props.password || "The password and confirmation do not match"
47
47
  ];
48
48
  </script>
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div>
3
3
  <div
4
- v-if="label"
5
- class="font-bold text-xs mb-2"
4
+ v-if="label"
5
+ class="font-bold text-xs mb-2"
6
6
  >
7
7
  {{ label }}
8
8
  </div>
@@ -19,8 +19,8 @@
19
19
  </div>
20
20
  <QPopupProxy>
21
21
  <QDate
22
- v-model="date"
23
- @update:model-value="onSave"
22
+ v-model="date"
23
+ @update:model-value="onSave"
24
24
  />
25
25
  </QPopupProxy>
26
26
  </div>
@@ -1,17 +1,17 @@
1
1
  <template>
2
2
  <div>
3
3
  <div
4
- v-if="label"
5
- class="font-bold text-xs mb-2"
4
+ v-if="label"
5
+ class="font-bold text-xs mb-2"
6
6
  >
7
7
  {{ label }}
8
8
  </div>
9
9
  <template v-if="inline">
10
10
  <QDate
11
- v-model="dateRange"
12
- range
13
- class="reactive"
14
- @update:model-value="onSave"
11
+ v-model="dateRange"
12
+ range
13
+ class="reactive"
14
+ @update:model-value="onSave"
15
15
  />
16
16
  </template>
17
17
  <template v-else>
@@ -28,9 +28,9 @@
28
28
  </div>
29
29
  <QPopupProxy>
30
30
  <QDate
31
- v-model="dateRange"
32
- range
33
- @update:model-value="onSave"
31
+ v-model="dateRange"
32
+ range
33
+ @update:model-value="onSave"
34
34
  />
35
35
  </QPopupProxy>
36
36
  </template>
@@ -1,20 +1,23 @@
1
1
  <template>
2
2
  <div>
3
3
  <QInput
4
- :model-value="fLocalizedDateTime(modelValue)"
5
- :color="color"
6
- class="bg-white rounded overflow-hidden px-2 w-48"
7
- dense
8
- readonly
9
- @click="isShowing = true"
4
+ :model-value="fLocalizedDateTime(modelValue)"
5
+ :color="color"
6
+ class="bg-white rounded overflow-hidden px-2 w-48"
7
+ dense
8
+ readonly
9
+ @click="isShowing = true"
10
10
  >
11
11
  <template #append>
12
- <QIcon name="event" class="cursor-pointer">
12
+ <QIcon
13
+ name="event"
14
+ class="cursor-pointer"
15
+ >
13
16
  <QPopupProxy v-model="isShowing">
14
17
  <DateTimePicker
15
- v-model="dateTime"
16
- @cancel="isShowing = false"
17
- @save="onSave"
18
+ v-model="dateTime"
19
+ @cancel="isShowing = false"
20
+ @save="onSave"
18
21
  />
19
22
  </QPopupProxy>
20
23
  </QIcon>
@@ -1,28 +1,50 @@
1
1
  <template>
2
2
  <QPopupProxy
3
- :model-value="true"
4
- cover
5
- transition-show="scale"
6
- transition-hide="scale"
7
- class="bg-transparent shadow-none flex items-stretch"
3
+ :model-value="true"
4
+ cover
5
+ transition-show="scale"
6
+ transition-hide="scale"
7
+ class="bg-transparent shadow-none flex items-stretch"
8
8
  >
9
- <QDate v-model="dateTime" :mask="mask" :color="color">
9
+ <QDate
10
+ v-model="dateTime"
11
+ :mask="mask"
12
+ :color="color"
13
+ >
10
14
  <div class="flex items-center justify-center">
11
- <div v-if="nullable" class="flex-grow">
12
- <QBtn label="Clear" color="blue-600" flat @click="dateTime = null" />
15
+ <div
16
+ v-if="nullable"
17
+ class="flex-grow"
18
+ >
19
+ <QBtn
20
+ label="Clear"
21
+ color="blue-600"
22
+ flat
23
+ @click="dateTime = null"
24
+ />
13
25
  </div>
14
26
  <div>
15
27
  <QBtn
16
- label="Cancel"
17
- color="blue-600"
18
- flat
19
- @click="$emit('cancel')"
28
+ label="Cancel"
29
+ color="blue-600"
30
+ flat
31
+ @click="$emit('cancel')"
32
+ />
33
+ <QBtn
34
+ label="Set"
35
+ color="blue-600"
36
+ flat
37
+ @click="$emit('save')"
20
38
  />
21
- <QBtn label="Set" color="blue-600" flat @click="$emit('save')" />
22
39
  </div>
23
40
  </div>
24
41
  </QDate>
25
- <QTime v-model="dateTime" :mask="mask" :color="color" class="ml-3" />
42
+ <QTime
43
+ v-model="dateTime"
44
+ :mask="mask"
45
+ :color="color"
46
+ class="ml-3"
47
+ />
26
48
  </QPopupProxy>
27
49
  </template>
28
50
  <script setup>
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div
3
- contenteditable
4
- class="inline-block hover:bg-blue-200 focus:bg-blue-200 transition duration-300 outline-none"
5
- @input="onInput"
3
+ contenteditable
4
+ class="inline-block hover:bg-blue-200 focus:bg-blue-200 transition duration-300 outline-none"
5
+ @input="onInput"
6
6
  >
7
7
  {{ text }}
8
8
  </div>
@@ -5,8 +5,8 @@
5
5
  <template v-if="showName">({{ field?.name }})</template>
6
6
  </slot>
7
7
  <span
8
- v-if="requiredLabel"
9
- class="text-red-900 ml-1 text-xs bottom-1 relative"
8
+ v-if="requiredLabel"
9
+ class="text-red-900 ml-1 text-xs bottom-1 relative"
10
10
  >{{ requiredLabel }}</span>
11
11
  </span>
12
12
  </template>
@@ -1,20 +1,23 @@
1
1
  <template>
2
- <QBtn v-bind="$props" @click="$refs.fileUpload.click()">
2
+ <QBtn
3
+ v-bind="$props"
4
+ @click="$refs.fileUpload.click()"
5
+ >
3
6
  <slot>
4
7
  <PlusIcon class="w-5 mr-2" />
5
8
  {{ text }}
6
9
  </slot>
7
10
 
8
11
  <input
9
- ref="fileUpload"
10
- data-testid="file-upload"
11
- type="file"
12
- :accept="geolocation ? 'image/*;capture=camera' : undefined"
13
- :capture="geolocation ? 'environment' : undefined"
14
- class="hidden"
15
- multiple
16
- @change="onAttachFiles"
17
- />
12
+ ref="fileUpload"
13
+ data-testid="file-upload"
14
+ type="file"
15
+ :accept="geolocation ? 'image/*;capture=camera' : undefined"
16
+ :capture="geolocation ? 'environment' : undefined"
17
+ class="hidden"
18
+ multiple
19
+ @change="onAttachFiles"
20
+ >
18
21
  </QBtn>
19
22
  </template>
20
23
  <script setup>
@@ -58,16 +61,16 @@ function upload() {
58
61
  async function onAttachFiles({ target: { files } }) {
59
62
  emit("uploading", files);
60
63
  let fileUpload = new FileUpload(files)
61
- .onProgress(({ file, progress }) => {
62
- file.progress = progress;
63
- emit("file-progress", file);
64
- })
65
- .onComplete(({ file, uploadedFile }) => {
66
- emit("file-complete", { file, uploadedFile });
67
- })
68
- .onAllComplete(() => {
69
- emit("complete", fileUpload.files);
70
- });
64
+ .onProgress(({ file, progress }) => {
65
+ file.progress = progress;
66
+ emit("file-progress", file);
67
+ })
68
+ .onComplete(({ file, uploadedFile }) => {
69
+ emit("file-complete", { file, uploadedFile });
70
+ })
71
+ .onAllComplete(() => {
72
+ emit("complete", fileUpload.files);
73
+ });
71
74
 
72
75
  if (props.geolocation) {
73
76
  await fileUpload.resolveLocation(props.locationWaitMessage);
@@ -1,22 +1,22 @@
1
1
  <template>
2
2
  <div class="inline-block">
3
3
  <div
4
- class="cursor-pointer py-2 hover:bg-blue-200 flex items-center justify-end"
4
+ class="cursor-pointer py-2 hover:bg-blue-200 flex items-center justify-end"
5
5
  >
6
6
  {{ fLocalizedDateTime(modelValue, { empty: "Never" }) }}
7
7
  <EditIcon class="w-4 font-bold ml-2 text-gray-400" />
8
8
  <QPopupEdit
9
- v-slot="scope"
10
- :model-value="modelValue"
11
- touch-position
12
- :offset="[0, 20]"
13
- class="bg-blue-600 text-white !min-w-0"
9
+ v-slot="scope"
10
+ :model-value="modelValue"
11
+ touch-position
12
+ :offset="[0, 20]"
13
+ class="bg-blue-600 text-white !min-w-0"
14
14
  >
15
15
  <DateTimePicker
16
- v-model="scope.value"
17
- :nullable="nullable"
18
- @save="onSave(scope)"
19
- @cancel="scope.cancel"
16
+ v-model="scope.value"
17
+ :nullable="nullable"
18
+ @save="onSave(scope)"
19
+ @cancel="scope.cancel"
20
20
  />
21
21
  </QPopupEdit>
22
22
  </div>
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <NumberField
3
- :field="field"
4
- :precision="0"
5
- :model-value="modelValue"
6
- :show-name="showName"
7
- @update:model-value="$emit('update:model-value', $event)"
3
+ :field="field"
4
+ :precision="0"
5
+ :model-value="modelValue"
6
+ :show-name="showName"
7
+ @update:model-value="$emit('update:model-value', $event)"
8
8
  />
9
9
  </template>
10
10
 
@@ -15,7 +15,7 @@ defineEmits(["update:model-value"]);
15
15
  defineProps({
16
16
  modelValue: {
17
17
  type: [String, Number],
18
- required: true
18
+ default: null
19
19
  },
20
20
  field: {
21
21
  type: Object,
@@ -1,26 +1,29 @@
1
1
  <template>
2
2
  <div>
3
- <label for="first_name" class="form-label">
3
+ <label
4
+ for="first_name"
5
+ class="form-label"
6
+ >
4
7
  <slot name="label">{{ label }}</slot>
5
8
  </label>
6
9
  <div class="mt-1">
7
10
  <QInput
8
- :model-value="modelValue"
9
- :error-message="error"
10
- :error="!!error"
11
- no-error-icon
12
- outlined
13
- dense
14
- :disable="disabled"
15
- :readonly="disabled"
16
- :type="type"
17
- :name="name"
18
- :placeholder="placeholder || label"
19
- :required="required"
20
- :rules="rules"
21
- :lazy-rules="!!rules"
22
- class="w-full"
23
- @update:model-value="$emit('update:model-value', $event)"
11
+ :model-value="modelValue"
12
+ :error-message="error"
13
+ :error="!!error"
14
+ no-error-icon
15
+ outlined
16
+ dense
17
+ :disable="disabled"
18
+ :readonly="disabled"
19
+ :type="type"
20
+ :name="name"
21
+ :placeholder="placeholder || label"
22
+ :required="required"
23
+ :rules="rules"
24
+ :lazy-rules="!!rules"
25
+ class="w-full"
26
+ @update:model-value="$emit('update:model-value', $event)"
24
27
  />
25
28
  </div>
26
29
  </div>