quasar-ui-danx 0.3.11 → 0.3.13
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/danx.es.js +5978 -5901
- package/dist/danx.es.js.map +1 -1
- package/dist/danx.umd.js +5 -5
- package/dist/danx.umd.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/ActionTable/ActionMenu.vue +7 -7
- package/src/components/ActionTable/ActionTable.vue +55 -31
- package/src/components/ActionTable/ActionTableColumn.vue +37 -15
- package/src/components/ActionTable/ActionTableHeaderColumn.vue +9 -9
- package/src/components/ActionTable/Columns/ColumnListItem.vue +33 -10
- package/src/components/ActionTable/Columns/ColumnSettingsDialog.vue +23 -19
- package/src/components/ActionTable/Columns/TitleColumnFormat.vue +5 -3
- package/src/components/ActionTable/Columns/VisibleColumnsToggleButtons.vue +24 -22
- package/src/components/ActionTable/EmptyTableState.vue +4 -2
- package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +17 -9
- package/src/components/ActionTable/Filters/FilterFieldItem.vue +7 -5
- package/src/components/ActionTable/Filters/FilterFieldList.vue +21 -21
- package/src/components/ActionTable/Filters/FilterListToggle.vue +13 -10
- package/src/components/ActionTable/Filters/FilterToolbarLayout.vue +14 -7
- package/src/components/ActionTable/Filters/FilterableField.vue +75 -70
- package/src/components/ActionTable/Form/Fields/BooleanField.vue +9 -9
- package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +7 -7
- package/src/components/ActionTable/Form/Fields/DateField.vue +4 -4
- package/src/components/ActionTable/Form/Fields/DateRangeField.vue +10 -12
- package/src/components/ActionTable/Form/Fields/DateTimeField.vue +13 -10
- package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +36 -14
- package/src/components/ActionTable/Form/Fields/EditableDiv.vue +3 -3
- package/src/components/ActionTable/Form/Fields/FieldLabel.vue +2 -2
- package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +23 -20
- package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +10 -10
- package/src/components/ActionTable/Form/Fields/IntegerField.vue +6 -6
- package/src/components/ActionTable/Form/Fields/LabeledInput.vue +20 -17
- package/src/components/ActionTable/Form/Fields/MultiFileField.vue +35 -35
- package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +15 -15
- package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +4 -4
- package/src/components/ActionTable/Form/Fields/NumberField.vue +11 -11
- package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +11 -11
- package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +38 -33
- package/src/components/ActionTable/Form/Fields/SelectField.vue +37 -35
- package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +19 -15
- package/src/components/ActionTable/Form/Fields/SingleFileField.vue +29 -28
- package/src/components/ActionTable/Form/Fields/TextField.vue +22 -22
- package/src/components/ActionTable/Form/RenderedForm.vue +5 -1
- package/src/components/ActionTable/Layouts/ActionTableLayout.vue +1 -1
- package/src/components/ActionTable/TableSummaryRow.vue +15 -15
- package/src/components/ActionTable/listControls.ts +378 -383
- package/src/components/AuditHistory/AuditHistoryItem.vue +12 -6
- package/src/components/AuditHistory/AuditHistoryItemValue.vue +6 -6
- package/src/components/DragAndDrop/HandleDraggable.vue +21 -21
- package/src/components/DragAndDrop/ListItemDraggable.vue +19 -15
- package/src/components/PanelsDrawer/PanelsDrawer.vue +18 -11
- package/src/components/PanelsDrawer/PanelsDrawerPanels.vue +9 -5
- package/src/components/PanelsDrawer/PanelsDrawerTabs.vue +18 -13
- package/src/components/Utility/Buttons/ExportButton.vue +5 -1
- package/src/components/Utility/Buttons/RefreshButton.vue +2 -2
- package/src/components/Utility/Controls/PreviousNextControls.vue +8 -8
- package/src/components/Utility/Dialogs/ConfirmDialog.vue +32 -29
- package/src/components/Utility/Dialogs/FullScreenDialog.vue +12 -9
- package/src/components/Utility/Dialogs/FullscreenCarouselDialog.vue +30 -26
- package/src/components/Utility/Dialogs/InfoDialog.vue +25 -22
- package/src/components/Utility/Dialogs/InputDialog.vue +7 -7
- package/src/components/Utility/Files/FilePreview.vue +64 -47
- package/src/components/Utility/Files/SvgImg.vue +7 -4
- package/src/components/Utility/Formats/GpsCoordinatesFormat.vue +11 -3
- package/src/components/Utility/Layouts/CollapsableSidebar.vue +16 -16
- package/src/components/Utility/Layouts/ContentDrawer.vue +8 -8
- package/src/components/Utility/Popovers/InteractiveTooltip.vue +7 -7
- package/src/components/Utility/Popovers/PopoverMenu.vue +21 -21
- package/src/components/Utility/Tabs/BadgeTab.vue +9 -7
- package/src/components/Utility/Tools/ActionVnode.vue +5 -5
- package/src/components/Utility/Tools/RenderComponent.vue +11 -9
- package/src/components/Utility/Transitions/StaggeredListTransition.vue +7 -7
- package/src/styles/quasar-reset.scss +63 -19
- package/src/styles/themes/danx/action-table.scss +19 -0
- package/src/styles/themes/danx/index.scss +1 -0
@@ -1,19 +1,26 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="w-full flex justify-end items-center flex-nowrap border-b">
|
3
3
|
<FilterListToggle
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
:show-filters="showFilters"
|
5
|
+
:filter="filter"
|
6
|
+
class="border-r p-4 flex-shrink-0"
|
7
|
+
@update:show-filters="onFilter"
|
8
|
+
@update:filter="$emit('update:filter', $event)"
|
9
9
|
/>
|
10
10
|
|
11
11
|
<div class="flex-grow">
|
12
12
|
<slot />
|
13
13
|
</div>
|
14
14
|
|
15
|
-
<div
|
16
|
-
|
15
|
+
<div
|
16
|
+
v-if="$slots['right-side']"
|
17
|
+
class="flex justify-end items-stretch flex-nowrap p-4"
|
18
|
+
>
|
19
|
+
<QSeparator
|
20
|
+
v-if="$slots['default']"
|
21
|
+
vertical
|
22
|
+
class="mx-4 h-10 self-center"
|
23
|
+
/>
|
17
24
|
<slot name="right-side" />
|
18
25
|
</div>
|
19
26
|
</div>
|
@@ -2,99 +2,104 @@
|
|
2
2
|
<div>
|
3
3
|
<template v-if="field.type === 'multi-select'">
|
4
4
|
<SelectField
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
18
|
-
|
17
|
+
v-else
|
18
|
+
class="mt-2"
|
19
19
|
>
|
20
|
-
<div class="text-xs font-bold">
|
21
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
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 "{{ field.name }}": Unknown filter type {{ field.type }}
|
@@ -1,16 +1,16 @@
|
|
1
1
|
<template>
|
2
2
|
<QToggle
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
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
|
-
|
5
|
-
|
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
|
-
|
23
|
-
|
22
|
+
v-model="date"
|
23
|
+
@update:model-value="onSave"
|
24
24
|
/>
|
25
25
|
</QPopupProxy>
|
26
26
|
</div>
|
@@ -1,17 +1,14 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
|
-
<div
|
4
|
-
|
5
|
-
class="font-bold text-xs mb-2"
|
6
|
-
>
|
7
|
-
{{ label }}
|
3
|
+
<div class="mb-2">
|
4
|
+
<FieldLabel :label="label" />
|
8
5
|
</div>
|
9
6
|
<template v-if="inline">
|
10
7
|
<QDate
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
v-model="dateRange"
|
9
|
+
range
|
10
|
+
class="reactive"
|
11
|
+
@update:model-value="onSave"
|
15
12
|
/>
|
16
13
|
</template>
|
17
14
|
<template v-else>
|
@@ -28,9 +25,9 @@
|
|
28
25
|
</div>
|
29
26
|
<QPopupProxy>
|
30
27
|
<QDate
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
v-model="dateRange"
|
29
|
+
range
|
30
|
+
@update:model-value="onSave"
|
34
31
|
/>
|
35
32
|
</QPopupProxy>
|
36
33
|
</template>
|
@@ -41,6 +38,7 @@
|
|
41
38
|
import { CalendarIcon as DateIcon } from "@heroicons/vue/outline";
|
42
39
|
import { computed, ref, watch } from "vue";
|
43
40
|
import { fDate, parseQDate, parseQDateTime } from "../../../../helpers";
|
41
|
+
import FieldLabel from "./FieldLabel";
|
44
42
|
|
45
43
|
const emit = defineEmits(["update:model-value"]);
|
46
44
|
const props = defineProps({
|
@@ -1,20 +1,23 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
3
|
<QInput
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
12
|
+
<QIcon
|
13
|
+
name="event"
|
14
|
+
class="cursor-pointer"
|
15
|
+
>
|
13
16
|
<QPopupProxy v-model="isShowing">
|
14
17
|
<DateTimePicker
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
9
|
+
<QDate
|
10
|
+
v-model="dateTime"
|
11
|
+
:mask="mask"
|
12
|
+
:color="color"
|
13
|
+
>
|
10
14
|
<div class="flex items-center justify-center">
|
11
|
-
<div
|
12
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
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
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
9
|
-
|
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
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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
|
-
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
18
|
+
default: null
|
19
19
|
},
|
20
20
|
field: {
|
21
21
|
type: Object,
|
@@ -1,26 +1,29 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
|
-
<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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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>
|