quasar-ui-danx 0.0.11 → 0.0.12
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/package.json +6 -1
- package/src/components/ActionTable/ActionTable.vue +49 -41
- package/src/components/ActionTable/BatchActionMenu.vue +20 -20
- package/src/components/ActionTable/EmptyTableState.vue +5 -5
- package/src/components/ActionTable/Filters/CollapsableFiltersSidebar.vue +11 -11
- package/src/components/ActionTable/Filters/FilterGroupItem.vue +7 -7
- package/src/components/ActionTable/Filters/FilterGroupList.vue +29 -29
- package/src/components/ActionTable/Filters/FilterListToggle.vue +15 -15
- package/src/components/ActionTable/Filters/FilterableField.vue +82 -80
- package/src/components/ActionTable/Filters/index.ts +5 -0
- package/src/components/ActionTable/Form/Fields/BooleanField.vue +13 -13
- package/src/components/ActionTable/Form/Fields/ConfirmPasswordField.vue +11 -11
- package/src/components/ActionTable/Form/Fields/DateField.vue +13 -13
- package/src/components/ActionTable/Form/Fields/DateRangeField.vue +25 -25
- package/src/components/ActionTable/Form/Fields/DateTimeField.vue +21 -21
- package/src/components/ActionTable/Form/Fields/DateTimePicker.vue +23 -23
- package/src/components/ActionTable/Form/Fields/FileUploadButton.vue +31 -31
- package/src/components/ActionTable/Form/Fields/InlineDateTimeField.vue +19 -19
- package/src/components/ActionTable/Form/Fields/IntegerField.vue +7 -7
- package/src/components/ActionTable/Form/Fields/LabelValueBlock.vue +22 -0
- package/src/components/ActionTable/Form/Fields/LabeledInput.vue +19 -19
- package/src/components/ActionTable/Form/Fields/MultiFileField.vue +40 -40
- package/src/components/ActionTable/Form/Fields/MultiKeywordField.vue +23 -23
- package/src/components/ActionTable/Form/Fields/NewPasswordField.vue +10 -10
- package/src/components/ActionTable/Form/Fields/NumberField.vue +29 -29
- package/src/components/ActionTable/Form/Fields/NumberRangeField.vue +33 -33
- package/src/components/ActionTable/Form/Fields/SelectDrawer.vue +36 -36
- package/src/components/ActionTable/Form/Fields/SelectField.vue +66 -66
- package/src/components/ActionTable/Form/Fields/SelectWithChildrenField.vue +23 -23
- package/src/components/ActionTable/Form/Fields/SingleFileField.vue +32 -32
- package/src/components/ActionTable/Form/Fields/TextField.vue +36 -36
- package/src/components/ActionTable/Form/Fields/WysiwygField.vue +16 -16
- package/src/components/ActionTable/Form/Fields/index.ts +23 -23
- package/src/components/ActionTable/Form/RenderedForm.vue +27 -25
- package/src/components/ActionTable/Form/index.ts +2 -0
- package/src/components/ActionTable/TableSummaryRow.vue +33 -33
- package/src/components/ActionTable/index.ts +8 -13
- package/src/components/ActionTable/listActions.ts +340 -339
- package/src/components/ActionTable/listHelpers.ts +74 -0
- package/src/components/ActionTable/tableColumns.ts +56 -56
- package/src/components/DragAndDrop/HandleDraggable.vue +29 -29
- package/src/components/DragAndDrop/ListItemDraggable.vue +10 -10
- package/src/components/DragAndDrop/index.ts +0 -1
- package/src/components/DragAndDrop/listDragAndDrop.ts +1 -1
- package/src/components/Utility/CollapsableSidebar.vue +35 -35
- package/src/components/Utility/ContentDrawer.vue +20 -20
- package/src/components/Utility/Dialogs/ConfirmDialog.vue +55 -55
- package/src/components/Utility/Dialogs/FullScreenDialog.vue +18 -18
- package/src/components/Utility/Dialogs/FullscreenCarouselDialog.vue +105 -0
- package/src/components/Utility/Dialogs/InfoDialog.vue +10 -10
- package/src/components/Utility/Dialogs/InputDialog.vue +13 -13
- package/src/components/Utility/ImagePreview.vue +192 -0
- package/src/components/Utility/Popover/PopoverMenu.vue +64 -0
- package/src/components/Utility/Transitions/StaggeredListTransition.vue +15 -15
- package/src/components/Utility/index.ts +11 -9
- package/src/components/index.ts +1 -1
- package/src/helpers/FileUpload.ts +274 -273
- package/src/helpers/compatibility.ts +45 -45
- package/src/helpers/date.ts +2 -2
- package/src/helpers/download.ts +166 -158
- package/src/helpers/downloadPdf.ts +48 -48
- package/src/helpers/files.ts +42 -42
- package/src/helpers/index.ts +2 -0
- package/src/helpers/multiFileUpload.ts +56 -56
- package/src/helpers/singleFileUpload.ts +49 -49
- package/src/index.esm.js +3 -4
- package/src/svg/FilterIcon.svg +7 -0
- package/src/svg/ImageIcon.svg +30 -0
- package/src/svg/PdfIcon.svg +21 -0
- package/src/svg/PercentIcon.svg +13 -0
- package/src/svg/TrashIcon.svg +15 -0
- package/src/svg/XIcon.svg +18 -0
- package/src/svg/index.ts +8 -0
- package/src/vendor/tinymce-config.ts +1 -0
- package/src/vue-plugin.js +7 -4
- package/tsconfig.json +14 -13
- package/src/components/ActionTable/tableHelpers.ts +0 -83
- package/src/components/DragAndDrop/Icons/index.ts +0 -2
- /package/src/{components/DragAndDrop/Icons → svg}/DragHandleDotsIcon.svg +0 -0
- /package/src/{components/DragAndDrop/Icons → svg}/DragHandleIcon.svg +0 -0
@@ -1,59 +1,59 @@
|
|
1
1
|
<template>
|
2
2
|
<div
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
class="max-w-full relative overflow-auto"
|
4
|
+
:class="{'p-4 border rounded border-gray-medium text-center': !readonly}"
|
5
|
+
@dragover.prevent
|
6
|
+
@drop.prevent="onDrop"
|
7
7
|
>
|
8
8
|
<FieldLabel
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
:field="field"
|
10
|
+
:show-name="showName"
|
11
|
+
class="text-sm font-semibold"
|
12
12
|
/>
|
13
13
|
<div
|
14
|
-
|
15
|
-
|
14
|
+
v-if="!disable && !readonly"
|
15
|
+
class="text-sm mt-2"
|
16
16
|
>
|
17
17
|
<a
|
18
|
-
|
19
|
-
|
18
|
+
class="text-blue-base"
|
19
|
+
@click="$refs.file.click()"
|
20
20
|
>Upload</a>
|
21
21
|
<a
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
v-if="uploadedFile"
|
23
|
+
class="ml-3 text-red-dark"
|
24
|
+
@click="onClear"
|
25
25
|
>Clear</a>
|
26
26
|
<input
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
ref="file"
|
28
|
+
class="hidden"
|
29
|
+
type="file"
|
30
|
+
@change="onFileSelected"
|
31
31
|
/>
|
32
32
|
</div>
|
33
33
|
|
34
34
|
<ImagePreview
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
v-if="!readonly || uploadedFile"
|
36
|
+
class="w-32 cursor-pointer mt-2"
|
37
|
+
:class="{'border border-dashed border-blue-base': !uploadedFile, 'mx-auto': !readonly}"
|
38
|
+
:image="uploadedFile"
|
39
|
+
downloadable
|
40
|
+
@click="!disable && $refs.file.click()"
|
41
41
|
/>
|
42
42
|
<div
|
43
|
-
|
44
|
-
|
43
|
+
v-else-if="readonly"
|
44
|
+
class="py-1"
|
45
45
|
>--
|
46
46
|
</div>
|
47
47
|
</div>
|
48
48
|
</template>
|
49
49
|
|
50
50
|
<script setup>
|
51
|
-
import ImagePreview from
|
52
|
-
import
|
53
|
-
import {
|
54
|
-
import
|
51
|
+
import { ImagePreview } from '@ui/components';
|
52
|
+
import { useSingleFileUpload } from '@ui/helpers/singleFileUpload';
|
53
|
+
import { onMounted } from 'vue';
|
54
|
+
import FieldLabel from './FieldLabel';
|
55
55
|
|
56
|
-
const emit = defineEmits([
|
56
|
+
const emit = defineEmits(['update:model-value']);
|
57
57
|
const props = defineProps({
|
58
58
|
modelValue: {
|
59
59
|
type: [Object, String],
|
@@ -68,7 +68,7 @@ const props = defineProps({
|
|
68
68
|
readonly: Boolean
|
69
69
|
});
|
70
70
|
const { onComplete, onDrop, onFileSelected, uploadedFile, onClear } = useSingleFileUpload();
|
71
|
-
onComplete(() => emit(
|
71
|
+
onComplete(() => emit('update:model-value', uploadedFile.value));
|
72
72
|
|
73
73
|
onMounted(() => {
|
74
74
|
if (props.modelValue) {
|
@@ -1,50 +1,50 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
|
-
<
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
3
|
+
<q-input
|
4
|
+
v-if="!readonly"
|
5
|
+
:data-dusk="'text-field-' + field?.id"
|
6
|
+
:data-testid="'text-field-' + field?.id"
|
7
|
+
:placeholder="field?.placeholder"
|
8
|
+
outlined
|
9
|
+
dense
|
10
|
+
:disable="disabled"
|
11
|
+
:label-slot="!noLabel"
|
12
|
+
:input-class="inputClass"
|
13
|
+
:class="parentClass"
|
14
|
+
stack-label
|
15
|
+
:type="type"
|
16
|
+
:model-value="modelValue"
|
17
|
+
:debounce="debounce"
|
18
|
+
@keydown.enter="$emit('submit')"
|
19
|
+
@update:model-value="$emit('update:model-value', $event)"
|
20
20
|
>
|
21
21
|
<template #label>
|
22
22
|
<FieldLabel
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
:field="field"
|
24
|
+
:label="label"
|
25
|
+
:show-name="showName"
|
26
|
+
:class="labelClass"
|
27
27
|
/>
|
28
28
|
</template>
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
</q-input>
|
30
|
+
<div v-if="readonly">
|
31
|
+
<LabelValueBlock
|
32
|
+
:label="label || field.label"
|
33
|
+
:value="modelValue"
|
34
|
+
/>
|
35
|
+
</div>
|
36
36
|
</div>
|
37
37
|
</template>
|
38
38
|
|
39
39
|
<script setup>
|
40
|
-
import
|
41
|
-
import
|
40
|
+
import FieldLabel from './FieldLabel';
|
41
|
+
import LabelValueBlock from './LabelValueBlock';
|
42
42
|
|
43
|
-
defineEmits([
|
43
|
+
defineEmits(['update:model-value', 'submit']);
|
44
44
|
defineProps({
|
45
45
|
modelValue: {
|
46
46
|
type: [String, Number],
|
47
|
-
default:
|
47
|
+
default: ''
|
48
48
|
},
|
49
49
|
field: {
|
50
50
|
type: Object,
|
@@ -52,7 +52,7 @@ defineProps({
|
|
52
52
|
},
|
53
53
|
type: {
|
54
54
|
type: String,
|
55
|
-
default:
|
55
|
+
default: 'text'
|
56
56
|
},
|
57
57
|
label: {
|
58
58
|
type: String,
|
@@ -60,15 +60,15 @@ defineProps({
|
|
60
60
|
},
|
61
61
|
labelClass: {
|
62
62
|
type: String,
|
63
|
-
default:
|
63
|
+
default: 'text-sm text-gray-shadow'
|
64
64
|
},
|
65
65
|
parentClass: {
|
66
66
|
type: String,
|
67
|
-
default:
|
67
|
+
default: ''
|
68
68
|
},
|
69
69
|
inputClass: {
|
70
70
|
type: String,
|
71
|
-
default:
|
71
|
+
default: ''
|
72
72
|
},
|
73
73
|
noLabel: Boolean,
|
74
74
|
showName: Boolean,
|
@@ -1,34 +1,34 @@
|
|
1
1
|
<template>
|
2
2
|
<div>
|
3
3
|
<FieldLabel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
v-if="!noLabel"
|
5
|
+
:field="field"
|
6
|
+
:show-name="showName"
|
7
|
+
class="text-sm font-semibold text-gray-shadow block mb-2"
|
8
8
|
/>
|
9
9
|
<template v-if="readonly">
|
10
10
|
<div
|
11
|
-
|
12
|
-
|
11
|
+
class="border border-gray-300 rounded-md p-2 bg-gray-100"
|
12
|
+
v-html="modelValue"
|
13
13
|
/>
|
14
14
|
</template>
|
15
15
|
<TinyMceEditor
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
v-else
|
17
|
+
class="mt-2"
|
18
|
+
:api-key="apiKey"
|
19
|
+
:disabled="disable"
|
20
|
+
:model-value="modelValue"
|
21
|
+
@update:model-value="$emit('update:model-value', $event)"
|
22
22
|
/>
|
23
23
|
</div>
|
24
24
|
</template>
|
25
25
|
|
26
26
|
<script setup>
|
27
|
-
import {
|
28
|
-
import {
|
29
|
-
import FieldLabel from
|
27
|
+
import { apiKey } from '@ui/vendor/tinymce-config';
|
28
|
+
import { default as TinyMceEditor } from '@tinymce/tinymce-vue';
|
29
|
+
import FieldLabel from './FieldLabel';
|
30
30
|
|
31
|
-
defineEmits([
|
31
|
+
defineEmits(['update:model-value']);
|
32
32
|
defineProps({
|
33
33
|
modelValue: {
|
34
34
|
type: [String, Number],
|
@@ -1,23 +1,23 @@
|
|
1
|
-
export { default as BooleanField } from "./BooleanField";
|
2
|
-
export { default as ConfirmPasswordField } from "./ConfirmPasswordField";
|
3
|
-
export { default as DateField } from "./DateField";
|
4
|
-
export { default as DateRangeField } from "./DateRangeField";
|
5
|
-
export { default as DateTimeField } from "./DateTimeField";
|
6
|
-
export { default as DateTimePicker } from "./DateTimePicker";
|
7
|
-
export { default as EditableDiv } from "./EditableDiv";
|
8
|
-
export { default as FieldLabel } from "./FieldLabel";
|
9
|
-
export { default as FileUploadButton } from "./FileUploadButton";
|
10
|
-
export { default as InlineDateTimeField } from "./InlineDateTimeField";
|
11
|
-
export { default as IntegerField } from "./IntegerField";
|
12
|
-
export { default as LabeledInput } from "./LabeledInput";
|
13
|
-
export { default as MultiFileField } from "./MultiFileField";
|
14
|
-
export { default as MultiKeywordField } from "./MultiKeywordField";
|
15
|
-
export { default as NewPasswordField } from "./NewPasswordField";
|
16
|
-
export { default as NumberField } from "./NumberField";
|
17
|
-
export { default as NumberRangeField } from "./NumberRangeField";
|
18
|
-
export { default as SelectDrawer } from "./SelectDrawer";
|
19
|
-
export { default as SelectField } from "./SelectField";
|
20
|
-
export { default as SelectWithChildrenField } from "./SelectWithChildrenField";
|
21
|
-
export { default as SingleFileField } from "./SingleFileField";
|
22
|
-
export { default as TextField } from "./TextField";
|
23
|
-
export { default as WysiwygField } from "./WysiwygField";
|
1
|
+
export { default as BooleanField } from "./BooleanField.vue";
|
2
|
+
export { default as ConfirmPasswordField } from "./ConfirmPasswordField.vue";
|
3
|
+
export { default as DateField } from "./DateField.vue";
|
4
|
+
export { default as DateRangeField } from "./DateRangeField.vue";
|
5
|
+
export { default as DateTimeField } from "./DateTimeField.vue";
|
6
|
+
export { default as DateTimePicker } from "./DateTimePicker.vue";
|
7
|
+
export { default as EditableDiv } from "./EditableDiv.vue";
|
8
|
+
export { default as FieldLabel } from "./FieldLabel.vue";
|
9
|
+
export { default as FileUploadButton } from "./FileUploadButton.vue";
|
10
|
+
export { default as InlineDateTimeField } from "./InlineDateTimeField.vue";
|
11
|
+
export { default as IntegerField } from "./IntegerField.vue";
|
12
|
+
export { default as LabeledInput } from "./LabeledInput.vue";
|
13
|
+
export { default as MultiFileField } from "./MultiFileField.vue";
|
14
|
+
export { default as MultiKeywordField } from "./MultiKeywordField.vue";
|
15
|
+
export { default as NewPasswordField } from "./NewPasswordField.vue";
|
16
|
+
export { default as NumberField } from "./NumberField.vue";
|
17
|
+
export { default as NumberRangeField } from "./NumberRangeField.vue";
|
18
|
+
export { default as SelectDrawer } from "./SelectDrawer.vue";
|
19
|
+
export { default as SelectField } from "./SelectField.vue";
|
20
|
+
export { default as SelectWithChildrenField } from "./SelectWithChildrenField.vue";
|
21
|
+
export { default as SingleFileField } from "./SingleFileField.vue";
|
22
|
+
export { default as TextField } from "./TextField.vue";
|
23
|
+
export { default as WysiwygField } from "./WysiwygField.vue";
|
@@ -1,37 +1,39 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="rendered-form">
|
3
3
|
<div
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
v-for="(field, index) in mappedFields"
|
5
|
+
:key="field.id"
|
6
|
+
:class="{ 'mt-4': index > 0 }"
|
7
7
|
>
|
8
8
|
<Component
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
:is="field.component"
|
10
|
+
v-model="fieldValues[field.name]"
|
11
|
+
:field="field"
|
12
|
+
:label="field.label || undefined"
|
13
|
+
:no-label="noLabel"
|
14
|
+
:show-name="showName"
|
15
|
+
:disable="disable"
|
16
|
+
:readonly="readonly"
|
17
|
+
@update:model-value="onInput(field.name, $event)"
|
18
18
|
/>
|
19
19
|
</div>
|
20
20
|
</div>
|
21
21
|
</template>
|
22
22
|
<script setup>
|
23
|
-
import
|
24
|
-
import
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
import { reactive } from 'vue';
|
24
|
+
import {
|
25
|
+
BooleanField,
|
26
|
+
DateField,
|
27
|
+
DateRangeField,
|
28
|
+
IntegerField,
|
29
|
+
MultiFileField,
|
30
|
+
NumberField,
|
31
|
+
SingleFileField,
|
32
|
+
TextField,
|
33
|
+
WysiwygField
|
34
|
+
} from './Fields';
|
33
35
|
|
34
|
-
const emit = defineEmits([
|
36
|
+
const emit = defineEmits(['update:values']);
|
35
37
|
const props = defineProps({
|
36
38
|
values: {
|
37
39
|
type: Object,
|
@@ -63,12 +65,12 @@ const mappedFields = props.fields.map((field) => ({
|
|
63
65
|
placeholder: `Enter ${field.label}`,
|
64
66
|
...field,
|
65
67
|
component: FORM_FIELD_MAP[field.type],
|
66
|
-
default: field.type ===
|
68
|
+
default: field.type === 'BOOLEAN' ? false : ''
|
67
69
|
}));
|
68
70
|
|
69
71
|
const fieldValues = reactive(props.values || {});
|
70
72
|
|
71
73
|
function onInput(key, value) {
|
72
|
-
emit(
|
74
|
+
emit('update:values', { ...fieldValues, [key]: value });
|
73
75
|
}
|
74
76
|
</script>
|
@@ -1,60 +1,60 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
4
|
-
|
2
|
+
<q-tr
|
3
|
+
class="sticky-column-1 transition-all sticky-row"
|
4
|
+
:class="{'!bg-neutral-plus-7': !selectedCount, '!bg-blue-base text-white selected': selectedCount, 'opacity-50': loading}"
|
5
5
|
>
|
6
|
-
<
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
<q-td
|
7
|
+
:colspan="stickyColspan"
|
8
|
+
class="font-bold transition-all"
|
9
|
+
:class="{'!bg-neutral-plus-7 !pl-5': !selectedCount, '!bg-blue-base text-white !pl-4': selectedCount}"
|
10
10
|
>
|
11
11
|
<div class="flex flex-nowrap items-center">
|
12
12
|
<div
|
13
|
-
|
14
|
-
|
13
|
+
v-if="selectedCount"
|
14
|
+
class="flex items-center"
|
15
15
|
>
|
16
16
|
<ClearIcon
|
17
|
-
|
18
|
-
|
17
|
+
class="w-6 mr-3"
|
18
|
+
@click="$emit('clear')"
|
19
19
|
/>
|
20
20
|
{{ fNumber(selectedCount) }} {{ selectedLabel }}
|
21
21
|
</div>
|
22
22
|
<div v-else-if="itemCount">
|
23
23
|
{{ fNumber(itemCount) }} {{ label }}
|
24
24
|
</div>
|
25
|
-
<
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
<q-spinner
|
26
|
+
v-if="loading"
|
27
|
+
class="ml-3"
|
28
|
+
size="18"
|
29
29
|
/>
|
30
30
|
</div>
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
31
|
+
</q-td>
|
32
|
+
<q-td
|
33
|
+
v-for="column in summaryColumns"
|
34
|
+
:key="column.name"
|
35
|
+
:align="column.align || 'left'"
|
36
|
+
>
|
37
|
+
<template v-if="summary">
|
38
|
+
{{ formatValue(column) }}
|
39
|
+
</template>
|
40
|
+
</q-td>
|
41
|
+
</q-tr>
|
42
42
|
</template>
|
43
43
|
<script setup>
|
44
|
-
import {
|
45
|
-
import {
|
46
|
-
import { computed } from
|
44
|
+
import { fNumber } from '@ui/helpers/formats';
|
45
|
+
import { XCircleIcon as ClearIcon } from '@heroicons/vue/solid';
|
46
|
+
import { computed } from 'vue';
|
47
47
|
|
48
|
-
defineEmits([
|
48
|
+
defineEmits(['clear']);
|
49
49
|
const props = defineProps({
|
50
50
|
loading: Boolean,
|
51
51
|
label: {
|
52
52
|
type: String,
|
53
|
-
default:
|
53
|
+
default: 'Rows'
|
54
54
|
},
|
55
55
|
selectedLabel: {
|
56
56
|
type: String,
|
57
|
-
default:
|
57
|
+
default: 'Selected'
|
58
58
|
},
|
59
59
|
selectedCount: {
|
60
60
|
type: Number,
|
@@ -85,7 +85,7 @@ const summaryColumns = computed(() => {
|
|
85
85
|
|
86
86
|
function formatValue(column) {
|
87
87
|
const value = props.summary[column.name];
|
88
|
-
if (value === undefined) return
|
88
|
+
if (value === undefined) return '';
|
89
89
|
|
90
90
|
if (column.format) {
|
91
91
|
return column.format(value);
|
@@ -1,15 +1,10 @@
|
|
1
|
-
export * from "./
|
2
|
-
export * from "
|
1
|
+
export * from "./Filters";
|
2
|
+
export * from "./Form";
|
3
3
|
export * from "./listActions";
|
4
|
+
export * from "./listHelpers";
|
4
5
|
export * from "./tableColumns";
|
5
|
-
export { default as ActionTable } from "./ActionTable";
|
6
|
-
export { default as BatchActionMenu } from "./BatchActionMenu";
|
7
|
-
export {
|
8
|
-
|
9
|
-
} from "
|
10
|
-
export { default as EmptyTableState } from "./EmptyTableState";
|
11
|
-
export { default as FilterGroupList } from "./Filters/FilterGroupList";
|
12
|
-
export { default as FilterListToggle } from "./Filters/FilterListToggle";
|
13
|
-
export { default as RenderComponentColumn } from "./RenderComponentColumn";
|
14
|
-
export { default as RenderedForm } from "./Form/RenderedForm";
|
15
|
-
export { default as TableSummaryRow } from "./TableSummaryRow";
|
6
|
+
export { default as ActionTable } from "./ActionTable.vue";
|
7
|
+
export { default as BatchActionMenu } from "./BatchActionMenu.vue";
|
8
|
+
export { default as EmptyTableState } from "./EmptyTableState.vue";
|
9
|
+
export { default as RenderComponentColumn } from "./RenderComponentColumn.vue";
|
10
|
+
export { default as TableSummaryRow } from "./TableSummaryRow.vue";
|