@ramathibodi/nuxt-commons 0.1.74 → 4.0.0
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 +9 -2
- package/dist/module.json +4 -4
- package/dist/module.mjs +4 -4
- package/dist/runtime/bridges/authentication.d.ts +21 -0
- package/dist/runtime/bridges/authentication.js +20 -0
- package/dist/runtime/bridges/graphql.d.ts +17 -0
- package/dist/runtime/bridges/graphql.js +45 -0
- package/dist/runtime/components/Alert.d.vue.ts +3 -0
- package/dist/runtime/components/Alert.vue +17 -26
- package/dist/runtime/components/Alert.vue.d.ts +3 -0
- package/dist/runtime/components/BarcodeReader.d.vue.ts +9 -0
- package/dist/runtime/components/BarcodeReader.vue +56 -81
- package/dist/runtime/components/BarcodeReader.vue.d.ts +9 -0
- package/dist/runtime/components/ExportCSV.d.vue.ts +55 -0
- package/dist/runtime/components/ExportCSV.vue +39 -76
- package/dist/runtime/components/ExportCSV.vue.d.ts +55 -0
- package/dist/runtime/components/FileBtn.d.vue.ts +53 -0
- package/dist/runtime/components/FileBtn.vue +23 -50
- package/dist/runtime/components/FileBtn.vue.d.ts +53 -0
- package/dist/runtime/components/ImportCSV.d.vue.ts +52 -0
- package/dist/runtime/components/ImportCSV.vue +60 -111
- package/dist/runtime/components/ImportCSV.vue.d.ts +52 -0
- package/dist/runtime/components/MrzReader.d.vue.ts +19 -0
- package/dist/runtime/components/MrzReader.vue +69 -109
- package/dist/runtime/components/MrzReader.vue.d.ts +19 -0
- package/dist/runtime/components/SplitterPanel.d.vue.ts +15 -0
- package/dist/runtime/components/SplitterPanel.vue +18 -35
- package/dist/runtime/components/SplitterPanel.vue.d.ts +15 -0
- package/dist/runtime/components/TabsGroup.d.vue.ts +19 -0
- package/dist/runtime/components/TabsGroup.vue +8 -20
- package/dist/runtime/components/TabsGroup.vue.d.ts +19 -0
- package/dist/runtime/components/TextBarcode.d.vue.ts +12 -0
- package/dist/runtime/components/TextBarcode.vue +22 -45
- package/dist/runtime/components/TextBarcode.vue.d.ts +12 -0
- package/dist/runtime/components/device/IdCardButton.d.vue.ts +57 -0
- package/dist/runtime/components/device/IdCardButton.vue +30 -67
- package/dist/runtime/components/device/IdCardButton.vue.d.ts +57 -0
- package/dist/runtime/components/device/IdCardWebSocket.d.vue.ts +55 -0
- package/dist/runtime/components/device/IdCardWebSocket.vue +104 -165
- package/dist/runtime/components/device/IdCardWebSocket.vue.d.ts +55 -0
- package/dist/runtime/components/device/Scanner.d.vue.ts +66 -0
- package/dist/runtime/components/device/Scanner.vue +97 -178
- package/dist/runtime/components/device/Scanner.vue.d.ts +66 -0
- package/dist/runtime/components/dialog/Confirm.d.vue.ts +37 -0
- package/dist/runtime/components/dialog/Confirm.vue +30 -59
- package/dist/runtime/components/dialog/Confirm.vue.d.ts +37 -0
- package/dist/runtime/components/dialog/Host.d.vue.ts +9 -0
- package/dist/runtime/components/dialog/Host.vue +34 -57
- package/dist/runtime/components/dialog/Host.vue.d.ts +9 -0
- package/dist/runtime/components/dialog/Index.d.vue.ts +24 -0
- package/dist/runtime/components/dialog/Index.vue +20 -40
- package/dist/runtime/components/dialog/Index.vue.d.ts +24 -0
- package/dist/runtime/components/dialog/Loading.d.vue.ts +21 -0
- package/dist/runtime/components/dialog/Loading.vue +12 -29
- package/dist/runtime/components/dialog/Loading.vue.d.ts +21 -0
- package/dist/runtime/components/dialog/default/Confirm.d.vue.ts +40 -0
- package/dist/runtime/components/dialog/default/Confirm.vue +29 -62
- package/dist/runtime/components/dialog/default/Confirm.vue.d.ts +40 -0
- package/dist/runtime/components/dialog/default/Loading.d.vue.ts +23 -0
- package/dist/runtime/components/dialog/default/Loading.vue +12 -29
- package/dist/runtime/components/dialog/default/Loading.vue.d.ts +23 -0
- package/dist/runtime/components/dialog/default/Notify.d.vue.ts +23 -0
- package/dist/runtime/components/dialog/default/Notify.vue +19 -48
- package/dist/runtime/components/dialog/default/Notify.vue.d.ts +23 -0
- package/dist/runtime/components/dialog/default/Printing.d.vue.ts +21 -0
- package/dist/runtime/components/dialog/default/Printing.vue +13 -29
- package/dist/runtime/components/dialog/default/Printing.vue.d.ts +21 -0
- package/dist/runtime/components/dialog/default/VerifyUser.d.vue.ts +29 -0
- package/dist/runtime/components/dialog/default/VerifyUser.vue +44 -82
- package/dist/runtime/components/dialog/default/VerifyUser.vue.d.ts +29 -0
- package/dist/runtime/components/document/Form.d.vue.ts +9 -0
- package/dist/runtime/components/document/Form.vue +27 -42
- package/dist/runtime/components/document/Form.vue.d.ts +9 -0
- package/dist/runtime/components/document/TemplateBuilder.d.vue.ts +24 -0
- package/dist/runtime/components/document/TemplateBuilder.vue +154 -194
- package/dist/runtime/components/document/TemplateBuilder.vue.d.ts +24 -0
- package/dist/runtime/components/form/ActionPad.d.vue.ts +114 -0
- package/dist/runtime/components/form/ActionPad.vue +48 -85
- package/dist/runtime/components/form/ActionPad.vue.d.ts +114 -0
- package/dist/runtime/components/form/Birthdate.d.vue.ts +38 -0
- package/dist/runtime/components/form/Birthdate.vue +44 -76
- package/dist/runtime/components/form/Birthdate.vue.d.ts +38 -0
- package/dist/runtime/components/form/CheckboxGroup.d.vue.ts +41 -0
- package/dist/runtime/components/form/CheckboxGroup.vue +34 -64
- package/dist/runtime/components/form/CheckboxGroup.vue.d.ts +41 -0
- package/dist/runtime/components/form/CodeEditor.d.vue.ts +25 -0
- package/dist/runtime/components/form/CodeEditor.vue +18 -36
- package/dist/runtime/components/form/CodeEditor.vue.d.ts +25 -0
- package/dist/runtime/components/form/Date.d.vue.ts +86 -0
- package/dist/runtime/components/form/Date.vue +109 -162
- package/dist/runtime/components/form/Date.vue.d.ts +86 -0
- package/dist/runtime/components/form/DateTime.d.vue.ts +36 -0
- package/dist/runtime/components/form/DateTime.vue +94 -143
- package/dist/runtime/components/form/DateTime.vue.d.ts +36 -0
- package/dist/runtime/components/form/Dialog.d.vue.ts +69 -0
- package/dist/runtime/components/form/Dialog.vue +60 -96
- package/dist/runtime/components/form/Dialog.vue.d.ts +69 -0
- package/dist/runtime/components/form/EditPad.d.vue.ts +113 -0
- package/dist/runtime/components/form/EditPad.vue +49 -85
- package/dist/runtime/components/form/EditPad.vue.d.ts +113 -0
- package/dist/runtime/components/form/File.d.vue.ts +65 -0
- package/dist/runtime/components/form/File.vue +112 -186
- package/dist/runtime/components/form/File.vue.d.ts +65 -0
- package/dist/runtime/components/form/Hidden.d.vue.ts +12 -0
- package/dist/runtime/components/form/Hidden.vue +17 -34
- package/dist/runtime/components/form/Hidden.vue.d.ts +12 -0
- package/dist/runtime/components/form/Iterator.d.vue.ts +279 -0
- package/dist/runtime/components/form/Iterator.vue +162 -252
- package/dist/runtime/components/form/Iterator.vue.d.ts +279 -0
- package/dist/runtime/components/form/Login.d.vue.ts +32 -0
- package/dist/runtime/components/form/Login.vue +23 -55
- package/dist/runtime/components/form/Login.vue.d.ts +32 -0
- package/dist/runtime/components/form/Pad.d.vue.ts +674 -0
- package/dist/runtime/components/form/Pad.vue +166 -265
- package/dist/runtime/components/form/Pad.vue.d.ts +674 -0
- package/dist/runtime/components/form/SignPad.d.vue.ts +62 -0
- package/dist/runtime/components/form/SignPad.vue +80 -126
- package/dist/runtime/components/form/SignPad.vue.d.ts +62 -0
- package/dist/runtime/components/form/System.d.vue.ts +34 -0
- package/dist/runtime/components/form/System.vue +18 -32
- package/dist/runtime/components/form/System.vue.d.ts +34 -0
- package/dist/runtime/components/form/Table.d.vue.ts +221 -0
- package/dist/runtime/components/form/Table.vue +123 -182
- package/dist/runtime/components/form/Table.vue.d.ts +221 -0
- package/dist/runtime/components/form/TableData.d.vue.ts +102 -0
- package/dist/runtime/components/form/TableData.vue +109 -139
- package/dist/runtime/components/form/TableData.vue.d.ts +102 -0
- package/dist/runtime/components/form/Time.d.vue.ts +49 -0
- package/dist/runtime/components/form/Time.vue +64 -99
- package/dist/runtime/components/form/Time.vue.d.ts +49 -0
- package/dist/runtime/components/form/images/Capture.d.vue.ts +96 -0
- package/dist/runtime/components/form/images/Capture.vue +104 -147
- package/dist/runtime/components/form/images/Capture.vue.d.ts +96 -0
- package/dist/runtime/components/form/images/Edit.d.vue.ts +29 -0
- package/dist/runtime/components/form/images/Edit.vue +57 -81
- package/dist/runtime/components/form/images/Edit.vue.d.ts +29 -0
- package/dist/runtime/components/form/images/Field.d.vue.ts +27 -0
- package/dist/runtime/components/form/images/Field.vue +136 -205
- package/dist/runtime/components/form/images/Field.vue.d.ts +27 -0
- package/dist/runtime/components/form/images/Pad.d.vue.ts +13 -0
- package/dist/runtime/components/form/images/Pad.vue +23 -40
- package/dist/runtime/components/form/images/Pad.vue.d.ts +13 -0
- package/dist/runtime/components/label/Date.d.vue.ts +13 -0
- package/dist/runtime/components/label/Date.vue +13 -29
- package/dist/runtime/components/label/Date.vue.d.ts +13 -0
- package/dist/runtime/components/label/DateAgo.d.vue.ts +20 -0
- package/dist/runtime/components/label/DateAgo.vue +43 -75
- package/dist/runtime/components/label/DateAgo.vue.d.ts +20 -0
- package/dist/runtime/components/label/DateCount.d.vue.ts +22 -0
- package/dist/runtime/components/label/DateCount.vue +58 -105
- package/dist/runtime/components/label/DateCount.vue.d.ts +22 -0
- package/dist/runtime/components/label/Field.d.vue.ts +38 -0
- package/dist/runtime/components/label/Field.vue +18 -40
- package/dist/runtime/components/label/Field.vue.d.ts +38 -0
- package/dist/runtime/components/label/FormatMoney.d.vue.ts +12 -0
- package/dist/runtime/components/label/FormatMoney.vue +12 -28
- package/dist/runtime/components/label/FormatMoney.vue.d.ts +12 -0
- package/dist/runtime/components/label/Mask.d.vue.ts +10 -0
- package/dist/runtime/components/label/Mask.vue +21 -38
- package/dist/runtime/components/label/Mask.vue.d.ts +10 -0
- package/dist/runtime/components/label/Object.d.vue.ts +8 -0
- package/dist/runtime/components/label/Object.vue +10 -20
- package/dist/runtime/components/label/Object.vue.d.ts +8 -0
- package/dist/runtime/components/master/Autocomplete.d.vue.ts +70 -0
- package/dist/runtime/components/master/Autocomplete.vue +25 -34
- package/dist/runtime/components/master/Autocomplete.vue.d.ts +70 -0
- package/dist/runtime/components/master/Combobox.d.vue.ts +70 -0
- package/dist/runtime/components/master/Combobox.vue +26 -35
- package/dist/runtime/components/master/Combobox.vue.d.ts +70 -0
- package/dist/runtime/components/master/RadioGroup.d.vue.ts +51 -0
- package/dist/runtime/components/master/RadioGroup.vue +44 -59
- package/dist/runtime/components/master/RadioGroup.vue.d.ts +51 -0
- package/dist/runtime/components/master/Select.d.vue.ts +68 -0
- package/dist/runtime/components/master/Select.vue +25 -34
- package/dist/runtime/components/master/Select.vue.d.ts +68 -0
- package/dist/runtime/components/master/label.d.vue.ts +24 -0
- package/dist/runtime/components/master/label.vue +22 -42
- package/dist/runtime/components/master/label.vue.d.ts +24 -0
- package/dist/runtime/components/model/Autocomplete.d.vue.ts +82 -0
- package/dist/runtime/components/model/Autocomplete.vue +50 -49
- package/dist/runtime/components/model/Autocomplete.vue.d.ts +82 -0
- package/dist/runtime/components/model/Combobox.d.vue.ts +82 -0
- package/dist/runtime/components/model/Combobox.vue +51 -49
- package/dist/runtime/components/model/Combobox.vue.d.ts +82 -0
- package/dist/runtime/components/model/Pad.d.vue.ts +72 -0
- package/dist/runtime/components/model/Pad.vue +50 -65
- package/dist/runtime/components/model/Pad.vue.d.ts +72 -0
- package/dist/runtime/components/model/Select.d.vue.ts +72 -0
- package/dist/runtime/components/model/Select.vue +42 -44
- package/dist/runtime/components/model/Select.vue.d.ts +72 -0
- package/dist/runtime/components/model/Table.d.vue.ts +272 -0
- package/dist/runtime/components/model/Table.vue +121 -145
- package/dist/runtime/components/model/Table.vue.d.ts +272 -0
- package/dist/runtime/components/model/iterator.d.vue.ts +321 -0
- package/dist/runtime/components/model/iterator.vue +148 -183
- package/dist/runtime/components/model/iterator.vue.d.ts +321 -0
- package/dist/runtime/components/model/label.d.vue.ts +26 -0
- package/dist/runtime/components/model/label.vue +25 -43
- package/dist/runtime/components/model/label.vue.d.ts +26 -0
- package/dist/runtime/components/pdf/Print.d.vue.ts +17 -0
- package/dist/runtime/components/pdf/Print.vue +27 -50
- package/dist/runtime/components/pdf/Print.vue.d.ts +17 -0
- package/dist/runtime/components/pdf/View.d.vue.ts +52 -0
- package/dist/runtime/components/pdf/View.vue +58 -95
- package/dist/runtime/components/pdf/View.vue.d.ts +52 -0
- package/dist/runtime/composables/api.js +4 -2
- package/dist/runtime/composables/assetFile.js +4 -2
- package/dist/runtime/composables/dialog.d.ts +1 -1
- package/dist/runtime/composables/document/template.js +3 -3
- package/dist/runtime/composables/document/templateFormTable.js +1 -0
- package/dist/runtime/composables/graphql.d.ts +2 -2
- package/dist/runtime/composables/graphql.js +5 -5
- package/dist/runtime/composables/graphqlModel.d.ts +6 -6
- package/dist/runtime/composables/graphqlModelItem.d.ts +4 -4
- package/dist/runtime/composables/graphqlModelOperation.d.ts +6 -6
- package/dist/runtime/composables/graphqlModelOperation.js +2 -1
- package/dist/runtime/composables/graphqlOperation.js +5 -1
- package/dist/runtime/composables/hostAgentWs.d.ts +1 -1
- package/dist/runtime/composables/lookupListMaster.js +3 -3
- package/dist/runtime/composables/menu.js +2 -2
- package/dist/runtime/composables/userPermission.d.ts +1 -1
- package/dist/runtime/composables/utils/fuzzy.d.ts +2 -1
- package/dist/runtime/labs/Calendar.d.vue.ts +35 -0
- package/dist/runtime/labs/Calendar.vue +47 -75
- package/dist/runtime/labs/Calendar.vue.d.ts +35 -0
- package/dist/runtime/labs/form/EditMobile.d.vue.ts +12 -0
- package/dist/runtime/labs/form/EditMobile.vue +19 -36
- package/dist/runtime/labs/form/EditMobile.vue.d.ts +12 -0
- package/dist/runtime/labs/form/TextFieldMask.d.vue.ts +21 -0
- package/dist/runtime/labs/form/TextFieldMask.vue +19 -25
- package/dist/runtime/labs/form/TextFieldMask.vue.d.ts +21 -0
- package/dist/runtime/plugins/dialogManager.js +2 -2
- package/dist/runtime/plugins/permission.js +3 -3
- package/dist/runtime/types/bridge.d.ts +14 -0
- package/dist/runtime/utils/datetime.js +1 -1
- package/dist/types.d.mts +2 -6
- package/package.json +71 -58
- package/scripts/ci-release.mjs +125 -0
- package/scripts/release-version.mjs +68 -0
- package/scripts/release.mjs +49 -0
- package/dist/module.cjs +0 -5
- package/dist/module.d.ts +0 -8
- package/dist/types.d.ts +0 -7
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FormTable is a schema-driven form field component that binds model data, renders field UI, and emits normalized updates.
|
|
3
|
+
* This doc block is consumed by vue-docgen for generated API documentation.
|
|
4
|
+
*/
|
|
5
|
+
import { VDataTable } from 'vuetify/components/VDataTable';
|
|
6
|
+
import type { FormDialogCallback } from '../../types/formDialog.js';
|
|
7
|
+
import { type PersistSlimProps } from '../../composables/localStorageModel.js';
|
|
8
|
+
interface Props extends /* @vue-ignore */ InstanceType<typeof VDataTable['$props']> {
|
|
9
|
+
title: string;
|
|
10
|
+
noDataText?: string;
|
|
11
|
+
modelValue?: Record<string, any>[];
|
|
12
|
+
modelKey?: string;
|
|
13
|
+
dialogWidth?: string | number;
|
|
14
|
+
dialogMaxWidth?: string | number;
|
|
15
|
+
dialogHeight?: string | number;
|
|
16
|
+
dialogMaxHeight?: string | number;
|
|
17
|
+
dialogFullscreen?: boolean;
|
|
18
|
+
initialData?: Record<string, any>;
|
|
19
|
+
toolbarColor?: string;
|
|
20
|
+
importable?: boolean;
|
|
21
|
+
exportable?: boolean;
|
|
22
|
+
insertable?: boolean;
|
|
23
|
+
searchable?: boolean;
|
|
24
|
+
inputPad?: boolean;
|
|
25
|
+
inputPadOnly?: boolean;
|
|
26
|
+
saveAndStay?: boolean;
|
|
27
|
+
stringFields?: Array<string>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Public props accepted by FormTable.
|
|
31
|
+
* Document each prop field with intent, defaults, and side effects for clear generated docs.
|
|
32
|
+
*/
|
|
33
|
+
type __VLS_Props = Props & PersistSlimProps;
|
|
34
|
+
declare function setSearch(keyword: string): void;
|
|
35
|
+
declare function createItem(item: Record<string, any>, callback?: FormDialogCallback): void;
|
|
36
|
+
declare function updateItem(newItem: Record<string, any>, callback?: FormDialogCallback): void;
|
|
37
|
+
declare function moveUpItem(currentItem: Record<string, any>, callback?: FormDialogCallback): void;
|
|
38
|
+
declare function moveDownItem(currentItem: Record<string, any>, callback?: FormDialogCallback): void;
|
|
39
|
+
declare function moveToItem(currentItem: Record<string, any>, callback?: FormDialogCallback): void;
|
|
40
|
+
declare function deleteItem(deleteItem: Record<string, any>, callback?: FormDialogCallback): Promise<void>;
|
|
41
|
+
declare function openDialog(item?: object): void;
|
|
42
|
+
declare var __VLS_22: {
|
|
43
|
+
items: Record<string, any>[];
|
|
44
|
+
operation: {
|
|
45
|
+
openDialog: typeof openDialog;
|
|
46
|
+
createItem: typeof createItem;
|
|
47
|
+
updateItem: typeof updateItem;
|
|
48
|
+
deleteItem: typeof deleteItem;
|
|
49
|
+
moveUpItem: typeof moveUpItem;
|
|
50
|
+
moveDownItem: typeof moveDownItem;
|
|
51
|
+
moveToItem: typeof moveToItem;
|
|
52
|
+
setSearch: typeof setSearch;
|
|
53
|
+
};
|
|
54
|
+
}, __VLS_48: {}, __VLS_56: {
|
|
55
|
+
items: Record<string, any>[];
|
|
56
|
+
operation: {
|
|
57
|
+
openDialog: typeof openDialog;
|
|
58
|
+
createItem: typeof createItem;
|
|
59
|
+
updateItem: typeof updateItem;
|
|
60
|
+
deleteItem: typeof deleteItem;
|
|
61
|
+
moveUpItem: typeof moveUpItem;
|
|
62
|
+
moveDownItem: typeof moveDownItem;
|
|
63
|
+
moveToItem: typeof moveToItem;
|
|
64
|
+
setSearch: typeof setSearch;
|
|
65
|
+
};
|
|
66
|
+
}, __VLS_69: {
|
|
67
|
+
items: Record<string, any>[];
|
|
68
|
+
operation: {
|
|
69
|
+
openDialog: typeof openDialog;
|
|
70
|
+
createItem: typeof createItem;
|
|
71
|
+
updateItem: typeof updateItem;
|
|
72
|
+
deleteItem: typeof deleteItem;
|
|
73
|
+
moveUpItem: typeof moveUpItem;
|
|
74
|
+
moveDownItem: typeof moveDownItem;
|
|
75
|
+
moveToItem: typeof moveToItem;
|
|
76
|
+
setSearch: typeof setSearch;
|
|
77
|
+
};
|
|
78
|
+
}, __VLS_99: never, __VLS_100: {
|
|
79
|
+
operation: {
|
|
80
|
+
openDialog: typeof openDialog;
|
|
81
|
+
createItem: typeof createItem;
|
|
82
|
+
updateItem: typeof updateItem;
|
|
83
|
+
deleteItem: typeof deleteItem;
|
|
84
|
+
moveUpItem: typeof moveUpItem;
|
|
85
|
+
moveDownItem: typeof moveDownItem;
|
|
86
|
+
moveToItem: typeof moveToItem;
|
|
87
|
+
setSearch: typeof setSearch;
|
|
88
|
+
};
|
|
89
|
+
isReadonly: import("vue").ComputedRef<boolean>;
|
|
90
|
+
isDisabled: import("vue").ComputedRef<boolean>;
|
|
91
|
+
}, __VLS_153: any, __VLS_156: any, __VLS_159: any, __VLS_161: {
|
|
92
|
+
operation: {
|
|
93
|
+
openDialog: typeof openDialog;
|
|
94
|
+
createItem: typeof createItem;
|
|
95
|
+
updateItem: typeof updateItem;
|
|
96
|
+
deleteItem: typeof deleteItem;
|
|
97
|
+
moveUpItem: typeof moveUpItem;
|
|
98
|
+
moveDownItem: typeof moveDownItem;
|
|
99
|
+
moveToItem: typeof moveToItem;
|
|
100
|
+
setSearch: typeof setSearch;
|
|
101
|
+
};
|
|
102
|
+
isReadonly: import("vue").ComputedRef<boolean>;
|
|
103
|
+
isDisabled: import("vue").ComputedRef<boolean>;
|
|
104
|
+
}, __VLS_181: any;
|
|
105
|
+
type __VLS_Slots = {} & {
|
|
106
|
+
[K in NonNullable<typeof __VLS_99>]?: (props: typeof __VLS_100) => any;
|
|
107
|
+
} & {
|
|
108
|
+
header?: (props: typeof __VLS_22) => any;
|
|
109
|
+
} & {
|
|
110
|
+
title?: (props: typeof __VLS_48) => any;
|
|
111
|
+
} & {
|
|
112
|
+
search?: (props: typeof __VLS_56) => any;
|
|
113
|
+
} & {
|
|
114
|
+
toolbarItems?: (props: typeof __VLS_69) => any;
|
|
115
|
+
} & {
|
|
116
|
+
form?: (props: typeof __VLS_153) => any;
|
|
117
|
+
} & {
|
|
118
|
+
formTitle?: (props: typeof __VLS_156) => any;
|
|
119
|
+
} & {
|
|
120
|
+
formAction?: (props: typeof __VLS_159) => any;
|
|
121
|
+
} & {
|
|
122
|
+
inputPad?: (props: typeof __VLS_161) => any;
|
|
123
|
+
} & {
|
|
124
|
+
form?: (props: typeof __VLS_181) => any;
|
|
125
|
+
};
|
|
126
|
+
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
127
|
+
noDataText: string;
|
|
128
|
+
dialogFullscreen: boolean;
|
|
129
|
+
modelKey: string;
|
|
130
|
+
toolbarColor: string;
|
|
131
|
+
importable: boolean;
|
|
132
|
+
exportable: boolean;
|
|
133
|
+
insertable: boolean;
|
|
134
|
+
searchable: boolean;
|
|
135
|
+
inputPad: boolean;
|
|
136
|
+
inputPadOnly: boolean;
|
|
137
|
+
saveAndStay: boolean;
|
|
138
|
+
stringFields: () => never[];
|
|
139
|
+
}>>, {
|
|
140
|
+
errorMessages: import("vue").ComputedRef<(string & string[]) | (readonly string[] & string[]) | undefined>;
|
|
141
|
+
isValid: import("vue").ComputedRef<boolean | null | undefined>;
|
|
142
|
+
reset: () => Promise<void> | undefined;
|
|
143
|
+
resetValidation: () => Promise<void> | undefined;
|
|
144
|
+
validate: () => Promise<string[]> | undefined;
|
|
145
|
+
operation: import("vue").Ref<{
|
|
146
|
+
openDialog: typeof openDialog;
|
|
147
|
+
createItem: typeof createItem;
|
|
148
|
+
updateItem: typeof updateItem;
|
|
149
|
+
deleteItem: typeof deleteItem;
|
|
150
|
+
moveUpItem: typeof moveUpItem;
|
|
151
|
+
moveDownItem: typeof moveDownItem;
|
|
152
|
+
moveToItem: typeof moveToItem;
|
|
153
|
+
setSearch: typeof setSearch;
|
|
154
|
+
}, {
|
|
155
|
+
openDialog: typeof openDialog;
|
|
156
|
+
createItem: typeof createItem;
|
|
157
|
+
updateItem: typeof updateItem;
|
|
158
|
+
deleteItem: typeof deleteItem;
|
|
159
|
+
moveUpItem: typeof moveUpItem;
|
|
160
|
+
moveDownItem: typeof moveDownItem;
|
|
161
|
+
moveToItem: typeof moveToItem;
|
|
162
|
+
setSearch: typeof setSearch;
|
|
163
|
+
} | {
|
|
164
|
+
openDialog: typeof openDialog;
|
|
165
|
+
createItem: typeof createItem;
|
|
166
|
+
updateItem: typeof updateItem;
|
|
167
|
+
deleteItem: typeof deleteItem;
|
|
168
|
+
moveUpItem: typeof moveUpItem;
|
|
169
|
+
moveDownItem: typeof moveDownItem;
|
|
170
|
+
moveToItem: typeof moveToItem;
|
|
171
|
+
setSearch: typeof setSearch;
|
|
172
|
+
}>;
|
|
173
|
+
items: import("vue").Ref<Record<string, any>[], Record<string, any>[]>;
|
|
174
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
175
|
+
"update:modelValue": (...args: any[]) => void;
|
|
176
|
+
"open:dialog": (...args: any[]) => void;
|
|
177
|
+
"close:dialog": (...args: any[]) => void;
|
|
178
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
|
|
179
|
+
noDataText: string;
|
|
180
|
+
dialogFullscreen: boolean;
|
|
181
|
+
modelKey: string;
|
|
182
|
+
toolbarColor: string;
|
|
183
|
+
importable: boolean;
|
|
184
|
+
exportable: boolean;
|
|
185
|
+
insertable: boolean;
|
|
186
|
+
searchable: boolean;
|
|
187
|
+
inputPad: boolean;
|
|
188
|
+
inputPadOnly: boolean;
|
|
189
|
+
saveAndStay: boolean;
|
|
190
|
+
stringFields: () => never[];
|
|
191
|
+
}>>> & Readonly<{
|
|
192
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
193
|
+
"onOpen:dialog"?: ((...args: any[]) => any) | undefined;
|
|
194
|
+
"onClose:dialog"?: ((...args: any[]) => any) | undefined;
|
|
195
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
196
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
197
|
+
declare const _default: typeof __VLS_export;
|
|
198
|
+
export default _default;
|
|
199
|
+
type __VLS_TypePropsToOption<T> = {
|
|
200
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
201
|
+
type: import('vue').PropType<Required<T>[K]>;
|
|
202
|
+
} : {
|
|
203
|
+
type: import('vue').PropType<T[K]>;
|
|
204
|
+
required: true;
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
type __VLS_WithDefaults<P, D> = {
|
|
208
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
209
|
+
default: D[K];
|
|
210
|
+
}> : P[K];
|
|
211
|
+
};
|
|
212
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
213
|
+
new (): {
|
|
214
|
+
$slots: S;
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
218
|
+
[K in keyof T]: T[K];
|
|
219
|
+
} : {
|
|
220
|
+
[K in keyof T as K]: T[K];
|
|
221
|
+
}) & {};
|
|
@@ -1,228 +1,169 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {computed, defineOptions,defineExpose, nextTick, ref, useAttrs, watch, useTemplateRef} from 'vue'
|
|
9
|
-
import {omit} from 'lodash-es'
|
|
10
|
-
import {useDialog} from "../../composables/dialog"
|
|
11
|
-
import type {FormDialogCallback} from '../../types/formDialog'
|
|
12
|
-
import { useLocalStorageModel, type PersistSlimProps } from '../../composables/localStorageModel'
|
|
13
|
-
|
|
1
|
+
<script setup>
|
|
2
|
+
import { VDataTable } from "vuetify/components/VDataTable";
|
|
3
|
+
import { VInput } from "vuetify/components/VInput";
|
|
4
|
+
import { computed, nextTick, ref, useAttrs, watch, useTemplateRef } from "vue";
|
|
5
|
+
import { omit } from "lodash-es";
|
|
6
|
+
import { useDialog } from "../../composables/dialog";
|
|
7
|
+
import { useLocalStorageModel } from "../../composables/localStorageModel";
|
|
14
8
|
defineOptions({
|
|
15
|
-
inheritAttrs: false
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
importable: true,
|
|
50
|
-
exportable: true,
|
|
51
|
-
insertable: true,
|
|
52
|
-
searchable: true,
|
|
53
|
-
inputPad: false,
|
|
54
|
-
inputPadOnly: false,
|
|
55
|
-
saveAndStay: false,
|
|
56
|
-
stringFields: ()=>[],
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Custom events emitted by FormTable.
|
|
61
|
-
* Parents can listen to these events to react to user actions and internal state changes.
|
|
62
|
-
*/
|
|
63
|
-
const emit = defineEmits(['update:modelValue','open:dialog','close:dialog'])
|
|
64
|
-
const attrs = useAttrs()
|
|
9
|
+
inheritAttrs: false
|
|
10
|
+
});
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
title: { type: String, required: true },
|
|
13
|
+
noDataText: { type: String, required: false, default: "\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25" },
|
|
14
|
+
modelValue: { type: Array, required: false },
|
|
15
|
+
modelKey: { type: String, required: false, default: "id" },
|
|
16
|
+
dialogWidth: { type: [String, Number], required: false },
|
|
17
|
+
dialogMaxWidth: { type: [String, Number], required: false },
|
|
18
|
+
dialogHeight: { type: [String, Number], required: false },
|
|
19
|
+
dialogMaxHeight: { type: [String, Number], required: false },
|
|
20
|
+
dialogFullscreen: { type: Boolean, required: false, default: false },
|
|
21
|
+
initialData: { type: Object, required: false },
|
|
22
|
+
toolbarColor: { type: String, required: false, default: "primary" },
|
|
23
|
+
importable: { type: Boolean, required: false, default: true },
|
|
24
|
+
exportable: { type: Boolean, required: false, default: true },
|
|
25
|
+
insertable: { type: Boolean, required: false, default: true },
|
|
26
|
+
searchable: { type: Boolean, required: false, default: true },
|
|
27
|
+
inputPad: { type: Boolean, required: false, default: false },
|
|
28
|
+
inputPadOnly: { type: Boolean, required: false, default: false },
|
|
29
|
+
saveAndStay: { type: Boolean, required: false, default: false },
|
|
30
|
+
stringFields: { type: Array, required: false, default: () => [] },
|
|
31
|
+
persist: { type: Boolean, required: false },
|
|
32
|
+
persistKey: { type: String, required: false },
|
|
33
|
+
persistPrefix: { type: String, required: false },
|
|
34
|
+
persistDebounce: { type: Number, required: false },
|
|
35
|
+
persistClearOnEmpty: { type: Boolean, required: false },
|
|
36
|
+
persistTtl: { type: Number, required: false },
|
|
37
|
+
persistEncrypt: { type: Boolean, required: false },
|
|
38
|
+
persistSecret: { type: String, required: false },
|
|
39
|
+
persistAlwaysHydrate: { type: Boolean, required: false }
|
|
40
|
+
});
|
|
41
|
+
const emit = defineEmits(["update:modelValue", "open:dialog", "close:dialog"]);
|
|
42
|
+
const attrs = useAttrs();
|
|
65
43
|
const plainAttrs = computed(() => {
|
|
66
|
-
return omit(attrs, [
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
useLocalStorageModel(items,props)
|
|
76
|
-
|
|
77
|
-
function setSearch(keyword: string) {
|
|
78
|
-
search.value = keyword
|
|
44
|
+
return omit(attrs, ["modelValue", "onUpdate:modelValue"]);
|
|
45
|
+
});
|
|
46
|
+
const inputRef = useTemplateRef("inputRef");
|
|
47
|
+
const items = ref([]);
|
|
48
|
+
const search = ref();
|
|
49
|
+
const currentItem = ref(void 0);
|
|
50
|
+
useLocalStorageModel(items, props);
|
|
51
|
+
function setSearch(keyword) {
|
|
52
|
+
search.value = keyword;
|
|
79
53
|
}
|
|
80
|
-
|
|
81
|
-
const isDialogOpen = ref<boolean>(false)
|
|
82
|
-
|
|
54
|
+
const isDialogOpen = ref(false);
|
|
83
55
|
watch(() => props.modelValue, (newValue) => {
|
|
84
|
-
if (!Array.isArray(newValue) || !newValue.every(item => typeof item ===
|
|
85
|
-
items.value = []
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
let maxKey = 0
|
|
89
|
-
|
|
56
|
+
if (!Array.isArray(newValue) || !newValue.every((item) => typeof item === "object")) {
|
|
57
|
+
items.value = [];
|
|
58
|
+
} else {
|
|
59
|
+
let maxKey = 0;
|
|
90
60
|
newValue.forEach((item) => {
|
|
91
61
|
if (!item.hasOwnProperty(props.modelKey)) {
|
|
92
|
-
maxKey = Math.max(maxKey, ...newValue.map(i => i[props.modelKey] || 0))
|
|
93
|
-
item[props.modelKey] = maxKey + 1
|
|
62
|
+
maxKey = Math.max(maxKey, ...newValue.map((i) => i[props.modelKey] || 0));
|
|
63
|
+
item[props.modelKey] = maxKey + 1;
|
|
94
64
|
}
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
items.value = newValue
|
|
65
|
+
});
|
|
66
|
+
items.value = newValue;
|
|
98
67
|
}
|
|
99
|
-
}, { immediate: true })
|
|
100
|
-
|
|
68
|
+
}, { immediate: true });
|
|
101
69
|
watch(items, (newValue) => {
|
|
102
|
-
emit(
|
|
103
|
-
}, { deep: true })
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
items.value.push(item)
|
|
111
|
-
|
|
112
|
-
if (callback && callback.setData) callback.setData(item)
|
|
113
|
-
if (callback) callback.done()
|
|
70
|
+
emit("update:modelValue", newValue);
|
|
71
|
+
}, { deep: true });
|
|
72
|
+
function createItem(item, callback) {
|
|
73
|
+
if (items.value.length > 0) item[props.modelKey] = Math.max(...items.value.map((i) => i[props.modelKey] || 0)) + 1;
|
|
74
|
+
else item[props.modelKey] = 1;
|
|
75
|
+
items.value.push(item);
|
|
76
|
+
if (callback && callback.setData) callback.setData(item);
|
|
77
|
+
if (callback) callback.done();
|
|
114
78
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (callback) callback.done()
|
|
79
|
+
function importItems(importItems2, callback) {
|
|
80
|
+
importItems2.forEach((item) => {
|
|
81
|
+
createItem(item);
|
|
82
|
+
});
|
|
83
|
+
if (callback) callback.done();
|
|
121
84
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const index = items.value.findIndex(item => item[props.modelKey] === newItem[props.modelKey])
|
|
125
|
-
|
|
85
|
+
function updateItem(newItem, callback) {
|
|
86
|
+
const index = items.value.findIndex((item) => item[props.modelKey] === newItem[props.modelKey]);
|
|
126
87
|
if (index !== -1) {
|
|
127
|
-
items.value[index] = newItem
|
|
88
|
+
items.value[index] = newItem;
|
|
128
89
|
}
|
|
129
|
-
|
|
130
|
-
if (callback
|
|
131
|
-
if (callback) callback.done()
|
|
90
|
+
if (callback && callback.setData) callback.setData(newItem);
|
|
91
|
+
if (callback) callback.done();
|
|
132
92
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const index = items.value.findIndex(item => item[props.modelKey] === currentItem[props.modelKey])
|
|
136
|
-
|
|
93
|
+
function moveUpItem(currentItem2, callback) {
|
|
94
|
+
const index = items.value.findIndex((item) => item[props.modelKey] === currentItem2[props.modelKey]);
|
|
137
95
|
if (index > 0) {
|
|
138
|
-
const temp = items.value[index - 1]
|
|
139
|
-
items.value[index - 1] = items.value[index]
|
|
140
|
-
items.value[index] = temp
|
|
96
|
+
const temp = items.value[index - 1];
|
|
97
|
+
items.value[index - 1] = items.value[index];
|
|
98
|
+
items.value[index] = temp;
|
|
141
99
|
}
|
|
142
|
-
|
|
143
|
-
if (callback) callback.done()
|
|
100
|
+
if (callback) callback.done();
|
|
144
101
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const index = items.value.findIndex(item => item[props.modelKey] === currentItem[props.modelKey])
|
|
148
|
-
|
|
102
|
+
function moveDownItem(currentItem2, callback) {
|
|
103
|
+
const index = items.value.findIndex((item) => item[props.modelKey] === currentItem2[props.modelKey]);
|
|
149
104
|
if (index >= 0 && index < items.value.length - 1) {
|
|
150
|
-
const temp = items.value[index + 1]
|
|
151
|
-
items.value[index + 1] = items.value[index]
|
|
152
|
-
items.value[index] = temp
|
|
105
|
+
const temp = items.value[index + 1];
|
|
106
|
+
items.value[index + 1] = items.value[index];
|
|
107
|
+
items.value[index] = temp;
|
|
153
108
|
}
|
|
154
|
-
|
|
155
|
-
if (callback) callback.done()
|
|
109
|
+
if (callback) callback.done();
|
|
156
110
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const index = items.value.findIndex(item => item[props.modelKey] === currentItem[props.modelKey]);
|
|
160
|
-
|
|
111
|
+
function moveToItem(currentItem2, callback) {
|
|
112
|
+
const index = items.value.findIndex((item) => item[props.modelKey] === currentItem2[props.modelKey]);
|
|
161
113
|
if (index !== -1) {
|
|
162
114
|
const newPosition = prompt("Enter the new position (0-based index):");
|
|
163
|
-
const parsedPosition = parseInt(
|
|
164
|
-
|
|
115
|
+
const parsedPosition = parseInt(newPosition, 10);
|
|
165
116
|
if (isNaN(parsedPosition) || parsedPosition < 0 || parsedPosition >= items.value.length) {
|
|
166
117
|
alert("Invalid position entered. Please enter a number between 0 and " + (items.value.length - 1));
|
|
167
|
-
return
|
|
118
|
+
return;
|
|
168
119
|
}
|
|
169
|
-
|
|
170
120
|
const [temp] = items.value.splice(index, 1);
|
|
171
|
-
|
|
172
121
|
items.value.splice(parsedPosition, 0, temp);
|
|
173
122
|
}
|
|
174
|
-
|
|
175
123
|
if (callback) callback.done();
|
|
176
124
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const index = items.value.findIndex(item => item[props.modelKey] === deleteItem[props.modelKey])
|
|
180
|
-
|
|
125
|
+
async function deleteItem(deleteItem2, callback) {
|
|
126
|
+
const index = items.value.findIndex((item) => item[props.modelKey] === deleteItem2[props.modelKey]);
|
|
181
127
|
if (index !== -1) {
|
|
182
|
-
let confirm = await useDialog().confirm({message: "Do you want to delete record?"})
|
|
128
|
+
let confirm = await useDialog().confirm({ message: "Do you want to delete record?" });
|
|
183
129
|
if (confirm) {
|
|
184
|
-
items.value.splice(index, 1)
|
|
185
|
-
if (callback) callback.done()
|
|
130
|
+
items.value.splice(index, 1);
|
|
131
|
+
if (callback) callback.done();
|
|
186
132
|
}
|
|
187
133
|
}
|
|
188
134
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (props.inputPadOnly) inputPadRef.value?.setOriginalData(item)
|
|
135
|
+
function openDialog(item) {
|
|
136
|
+
if (props.inputPadOnly) inputPadRef.value?.setOriginalData(item);
|
|
192
137
|
else {
|
|
193
|
-
currentItem.value = item
|
|
138
|
+
currentItem.value = item;
|
|
194
139
|
nextTick(() => {
|
|
195
|
-
isDialogOpen.value = true
|
|
196
|
-
emit(
|
|
197
|
-
})
|
|
140
|
+
isDialogOpen.value = true;
|
|
141
|
+
emit("open:dialog", item);
|
|
142
|
+
});
|
|
198
143
|
}
|
|
199
144
|
}
|
|
200
|
-
const inputPadRef = ref()
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
const errorMessages = computed(()=>{
|
|
209
|
-
return inputRef.value?.errorMessages
|
|
210
|
-
})
|
|
211
|
-
|
|
145
|
+
const inputPadRef = ref();
|
|
146
|
+
const operation = ref({ openDialog, createItem, updateItem, deleteItem, moveUpItem, moveDownItem, moveToItem, setSearch });
|
|
147
|
+
const isValid = computed(() => {
|
|
148
|
+
return inputRef.value?.isValid;
|
|
149
|
+
});
|
|
150
|
+
const errorMessages = computed(() => {
|
|
151
|
+
return inputRef.value?.errorMessages;
|
|
152
|
+
});
|
|
212
153
|
defineExpose({
|
|
213
154
|
errorMessages,
|
|
214
155
|
isValid,
|
|
215
|
-
reset: ()=>inputRef.value?.reset(),
|
|
216
|
-
resetValidation
|
|
217
|
-
validate
|
|
156
|
+
reset: () => inputRef.value?.reset(),
|
|
157
|
+
resetValidation: () => inputRef.value?.resetValidation(),
|
|
158
|
+
validate: () => inputRef.value?.validate(),
|
|
218
159
|
operation,
|
|
219
160
|
items
|
|
220
|
-
})
|
|
161
|
+
});
|
|
221
162
|
</script>
|
|
222
163
|
|
|
223
164
|
<template>
|
|
224
165
|
<v-input v-model="items" v-bind="plainAttrs" ref="inputRef">
|
|
225
|
-
<template #default="{isReadonly,isDisabled}">
|
|
166
|
+
<template #default="{ isReadonly, isDisabled }">
|
|
226
167
|
<v-container fluid class="ma-0 pa-0">
|
|
227
168
|
<v-card>
|
|
228
169
|
<slot
|
|
@@ -234,7 +175,7 @@ defineExpose({
|
|
|
234
175
|
<v-row
|
|
235
176
|
justify="end"
|
|
236
177
|
class="ma-1"
|
|
237
|
-
|
|
178
|
+
density="compact"
|
|
238
179
|
no-gutters
|
|
239
180
|
align="center"
|
|
240
181
|
>
|
|
@@ -299,13 +240,13 @@ defineExpose({
|
|
|
299
240
|
>
|
|
300
241
|
<!-- @ts-ignore -->
|
|
301
242
|
<template
|
|
302
|
-
v-for="(_, name, index) in
|
|
243
|
+
v-for="(_, name, index) in $slots"
|
|
303
244
|
:key="index"
|
|
304
245
|
#[name]="slotData"
|
|
305
246
|
>
|
|
306
247
|
<slot
|
|
307
248
|
:name="name"
|
|
308
|
-
v-bind="
|
|
249
|
+
v-bind="slotData || {}"
|
|
309
250
|
:operation="operation"
|
|
310
251
|
:isReadonly="isReadonly"
|
|
311
252
|
:isDisabled="isDisabled"
|
|
@@ -315,9 +256,9 @@ defineExpose({
|
|
|
315
256
|
v-if="!$slots['item.operation'] && !(isReadonly.value || isDisabled.value)"
|
|
316
257
|
#item.operation="props"
|
|
317
258
|
>
|
|
318
|
-
<v-icon density="compact" :disabled="props.index==0" @click="moveUpItem(props.item)">mdi:mdi-arrow-up-thick</v-icon>
|
|
259
|
+
<v-icon density="compact" :disabled="props.index == 0" @click="moveUpItem(props.item)">mdi:mdi-arrow-up-thick</v-icon>
|
|
319
260
|
<v-icon density="compact" @click="moveToItem(props.item)">fa:fas fa-arrow-right-to-bracket</v-icon>
|
|
320
|
-
<v-icon density="compact" :disabled="props.index==items.length-1" @click="moveDownItem(props.item)">mdi:mdi-arrow-down-thick</v-icon>
|
|
261
|
+
<v-icon density="compact" :disabled="props.index == items.length - 1" @click="moveDownItem(props.item)">mdi:mdi-arrow-down-thick</v-icon>
|
|
321
262
|
</template>
|
|
322
263
|
<template
|
|
323
264
|
v-if="!$slots['item.action'] && !(isReadonly.value || isDisabled.value)"
|