@revolist/vue3-datagrid 3.2.2 → 3.2.6

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.
@@ -33,7 +33,7 @@ module.exports = {
33
33
  extensions: [ '.tsx', '.ts', '.js', '.vue' ],
34
34
  alias: {
35
35
  'vue$': 'vue/dist/vue.esm-bundler.js',
36
- '@revolist/vue-datagrid': path.resolve(__dirname, '../src/vgrid')
36
+ '@revolist/vue-datagrid': path.resolve(__dirname, '../dist/vgrid')
37
37
  }
38
38
  },
39
39
  module: {
@@ -1,364 +1,46 @@
1
1
  import type { JSX } from '@revolist/revogrid';
2
- export declare const RevoGrid: import("vue").DefineComponent<JSX.RevoGrid & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
3
- rowHeaders?: boolean | import("@revolist/revogrid/dist/types/interfaces").RevoGrid.RowHeaders;
4
- frameSize?: number;
5
- rowSize?: number;
6
- colSize?: number;
7
- range?: boolean;
8
- readonly?: boolean;
9
- resize?: boolean;
10
- canFocus?: boolean;
11
- useClipboard?: boolean;
12
- columns?: (import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular | import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnGrouping)[];
13
- source?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
14
- pinnedTopSource?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
15
- pinnedBottomSource?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
16
- rowDefinitions?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.RowDefinition[];
17
- editors?: import("@revolist/revogrid/dist/types/interfaces").Edition.EditorBase;
18
- plugins?: import("@revolist/revogrid/dist/types/interfaces").RevoPlugin.Plugin;
19
- columnTypes?: unknown;
20
- theme?: import("@revolist/revogrid/dist/types/interfaces").ThemeSpace.Theme;
21
- rowClass?: string;
22
- autoSizeColumn?: boolean | import("@revolist/revogrid/dist/types/plugins/autoSizeColumn").AutoSizeColumnConfig;
23
- filter?: boolean | import("@revolist/revogrid/dist/types/plugins/filter/filter.plugin").ColumnFilterConfig;
24
- canMoveColumns?: boolean;
25
- trimmedRows?: unknown;
26
- exporting?: boolean;
27
- grouping?: import("@revolist/revogrid/dist/types/plugins/groupingRow/grouping.row.types").GroupingOptions;
28
- stretch?: string | boolean;
29
- toString?: string;
30
- toLocaleString?: string;
31
- modelValue?: string | boolean;
32
- constructor?: Function;
33
- valueOf?: unknown;
34
- hasOwnProperty?: (v: string | number | symbol) => boolean;
35
- isPrototypeOf?: (v: Object) => boolean;
36
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
37
- onAftercolumnresize?: (event: CustomEvent<Record<string | number, import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular>>) => void;
38
- onAftercolumnsset?: (event: CustomEvent<{
39
- columns: import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection;
40
- order: Record<string | number, "asc" | "desc">;
41
- }>) => void;
42
- onAfteredit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails | import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeRangeSaveDataDetails>) => void;
43
- onAftersourceset?: (event: CustomEvent<{
44
- type: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionRows;
45
- source: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
46
- }>) => void;
47
- onAftertrimmed?: (event: CustomEvent<any>) => void;
48
- onBeforeaange?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.ChangedRange>) => void;
49
- onBeforeautofill?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.ChangedRange>) => void;
50
- onBeforecellfocus?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
51
- onBeforecolumnapplied?: (event: CustomEvent<import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection>) => void;
52
- onBeforecolumnsset?: (event: CustomEvent<import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection>) => void;
53
- onBeforeedit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
54
- onBeforeeditstart?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
55
- onBeforeexport?: (event: CustomEvent<import("@revolist/revogrid/dist/types/plugins/export/types").DataInput>) => void;
56
- onBeforefilterapply?: (event: CustomEvent<{
57
- collection: Record<string | number, {
58
- filter: import("@revolist/revogrid/dist/types/plugins/filter/filter.types").LogicFunction;
59
- type: "none" | "empty" | "notEmpty" | "eq" | "notEq" | "begins" | "contains" | "notContains" | "eqN" | "neqN" | "gt" | "gte" | "lt" | "lte";
60
- value?: any;
61
- }>;
62
- }>) => void;
63
- onBeforefiltertrimmed?: (event: CustomEvent<{
64
- collection: Record<string | number, {
65
- filter: import("@revolist/revogrid/dist/types/plugins/filter/filter.types").LogicFunction;
66
- type: "none" | "empty" | "notEmpty" | "eq" | "notEq" | "begins" | "contains" | "notContains" | "eqN" | "neqN" | "gt" | "gte" | "lt" | "lte";
67
- value?: any;
68
- }>;
69
- itemsToFilter: Record<number, boolean>;
70
- }>) => void;
71
- onBeforefocuslost?: (event: CustomEvent<import("@revolist/revogrid/dist/types/components/revo-grid/viewport.service").FocusedData>) => void;
72
- onBeforerangeedit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeRangeSaveDataDetails>) => void;
73
- onBeforesorting?: (event: CustomEvent<{
74
- column: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular;
75
- order: "asc" | "desc";
76
- additive: boolean;
77
- }>) => void;
78
- onBeforesortingapply?: (event: CustomEvent<{
79
- column: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular;
80
- order: "asc" | "desc";
81
- additive: boolean;
82
- }>) => void;
83
- onBeforesourceset?: (event: CustomEvent<{
84
- type: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionRows;
85
- source: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
86
- }>) => void;
87
- onBeforesourcesortingapply?: (event: CustomEvent<any>) => void;
88
- onBeforetrimmed?: (event: CustomEvent<{
89
- trimmed: Record<number, boolean>;
90
- trimmedType: string;
91
- type: string;
92
- }>) => void;
93
- onHeaderclick?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular>) => void;
94
- onRowdragstart?: (event: CustomEvent<{
95
- pos: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.PositionItem;
96
- text: string;
97
- }>) => void;
98
- onRoworderchanged?: (event: CustomEvent<{
99
- from: number;
100
- to: number;
101
- }>) => void;
102
- onViewportscroll?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortScrollEvent>) => void;
103
- }>, {}>;
104
- export declare const RevogrClipboard: import("vue").DefineComponent<JSX.RevogrClipboard & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
105
- toString?: string;
106
- toLocaleString?: string;
107
- modelValue?: string | boolean;
108
- constructor?: Function;
109
- valueOf?: unknown;
110
- hasOwnProperty?: (v: string | number | symbol) => boolean;
111
- isPrototypeOf?: (v: Object) => boolean;
112
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
113
- onCopyRegion?: (event: CustomEvent<DataTransfer>) => void;
114
- onPasteRegion?: (event: CustomEvent<string[][]>) => void;
115
- }>, {}>;
116
- export declare const RevogrData: import("vue").DefineComponent<JSX.RevogrData & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
117
- rowSelectionStore: any;
118
- viewportRow: any;
119
- viewportCol: any;
120
- dimensionRow: any;
121
- colData: any;
122
- dataStore: any;
123
- } & {
124
- range?: boolean;
125
- readonly?: boolean;
126
- rowClass?: string;
127
- toString?: string;
128
- toLocaleString?: string;
129
- modelValue?: string | boolean;
130
- constructor?: Function;
131
- valueOf?: unknown;
132
- hasOwnProperty?: (v: string | number | symbol) => boolean;
133
- isPrototypeOf?: (v: Object) => boolean;
134
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
135
- canDrag?: boolean;
136
- onDragStartCell?: (event: CustomEvent<MouseEvent>) => void;
137
- }>, {
138
- rowSelectionStore: any;
139
- viewportRow: any;
140
- viewportCol: any;
141
- dimensionRow: any;
142
- colData: any;
143
- dataStore: any;
2
+ export declare const RevoGrid: import("vue").DefineComponent<JSX.RevoGrid & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevoGrid & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
3
+ export declare const RevogrClipboard: import("vue").DefineComponent<JSX.RevogrClipboard & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrClipboard & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
4
+ export declare const RevogrData: import("vue").DefineComponent<JSX.RevogrData & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrData & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
5
+ rowSelectionStore?: any;
6
+ viewportRow?: any;
7
+ viewportCol?: any;
8
+ dimensionRow?: any;
9
+ colData?: any;
10
+ dataStore?: any;
144
11
  }>;
145
- export declare const RevogrEdit: import("vue").DefineComponent<JSX.RevogrEdit & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
146
- toString?: string;
147
- toLocaleString?: string;
148
- modelValue?: string | boolean;
149
- constructor?: Function;
150
- valueOf?: unknown;
151
- hasOwnProperty?: (v: string | number | symbol) => boolean;
152
- isPrototypeOf?: (v: Object) => boolean;
153
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
154
- editCell?: import("@revolist/revogrid/dist/types/interfaces").Edition.EditCell;
155
- column?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular;
156
- editor?: import("@revolist/revogrid/dist/types/interfaces").Edition.EditorBase;
157
- onCellEdit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.SaveDataDetails>) => void;
158
- onCloseEdit?: (event: CustomEvent<boolean>) => void;
159
- }>, {}>;
160
- export declare const RevogrFilterPanel: import("vue").DefineComponent<JSX.RevogrFilterPanel & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
161
- toString?: string;
162
- toLocaleString?: string;
163
- modelValue?: string | boolean;
164
- constructor?: Function;
165
- valueOf?: unknown;
166
- hasOwnProperty?: (v: string | number | symbol) => boolean;
167
- isPrototypeOf?: (v: Object) => boolean;
168
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
169
- uuid?: string;
170
- filterItems?: unknown;
171
- filterTypes?: unknown;
172
- filterNames?: unknown;
173
- filterEntities?: boolean;
174
- filterCaptions?: import("@revolist/revogrid/dist/types/plugins/filter/filter.plugin").FilterCaptions;
175
- disableDynamicFiltering?: boolean;
176
- onFilterChange?: (event: CustomEvent<import("@revolist/revogrid/dist/types/plugins/filter/filter.pop").MultiFilterItem>) => void;
177
- }>, {}>;
178
- export declare const RevogrFocus: import("vue").DefineComponent<JSX.RevogrFocus & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
179
- dimensionRow: any;
180
- selectionStore: any;
181
- dimensionCol: any;
182
- } & {
183
- toString?: string;
184
- toLocaleString?: string;
185
- modelValue?: string | boolean;
186
- constructor?: Function;
187
- valueOf?: unknown;
188
- hasOwnProperty?: (v: string | number | symbol) => boolean;
189
- isPrototypeOf?: (v: Object) => boolean;
190
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
191
- }>, {
192
- dimensionRow: any;
193
- selectionStore: any;
194
- dimensionCol: any;
12
+ export declare const RevogrEdit: import("vue").DefineComponent<JSX.RevogrEdit & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrEdit & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
13
+ export declare const RevogrFilterPanel: import("vue").DefineComponent<JSX.RevogrFilterPanel & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrFilterPanel & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
14
+ export declare const RevogrFocus: import("vue").DefineComponent<JSX.RevogrFocus & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrFocus & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
15
+ dimensionRow?: any;
16
+ selectionStore?: any;
17
+ dimensionCol?: any;
195
18
  }>;
196
- export declare const RevogrHeader: import("vue").DefineComponent<JSX.RevogrHeader & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
197
- viewportCol: any;
198
- selectionStore: any;
199
- dimensionCol: any;
200
- } & {
201
- toString?: string;
202
- toLocaleString?: string;
203
- modelValue?: string | boolean;
204
- constructor?: Function;
205
- valueOf?: unknown;
206
- hasOwnProperty?: (v: string | number | symbol) => boolean;
207
- isPrototypeOf?: (v: Object) => boolean;
208
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
209
- colData?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular[];
210
- parent?: string;
211
- groups?: unknown;
212
- groupingDepth?: number;
213
- canResize?: boolean;
214
- columnFilter?: boolean;
215
- onHeaderdblClick?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.InitialHeaderClick>) => void;
216
- onHeaderresize?: (event: CustomEvent<Record<string, number>>) => void;
217
- onInitialHeaderClick?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.InitialHeaderClick>) => void;
218
- }>, {
219
- viewportCol: any;
220
- selectionStore: any;
221
- dimensionCol: any;
19
+ export declare const RevogrHeader: import("vue").DefineComponent<JSX.RevogrHeader & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrHeader & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
20
+ viewportCol?: any;
21
+ selectionStore?: any;
22
+ dimensionCol?: any;
222
23
  }>;
223
- export declare const RevogrOrderEditor: import("vue").DefineComponent<JSX.RevogrOrderEditor & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
224
- dimensionRow: any;
225
- dataStore: any;
226
- dimensionCol: any;
227
- } & {
228
- toString?: string;
229
- toLocaleString?: string;
230
- modelValue?: string | boolean;
231
- constructor?: Function;
232
- valueOf?: unknown;
233
- hasOwnProperty?: (v: string | number | symbol) => boolean;
234
- isPrototypeOf?: (v: Object) => boolean;
235
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
236
- parent?: HTMLElement;
237
- onInitialRowDropped?: (event: CustomEvent<{
238
- from: number;
239
- to: number;
240
- }>) => void;
241
- onInternalRowDrag?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.PositionItem>) => void;
242
- onInternalRowDragEnd?: (event: CustomEvent<any>) => void;
243
- onInternalRowDragStart?: (event: CustomEvent<{
244
- cell: import("@revolist/revogrid/dist/types/interfaces").Selection.Cell;
245
- text: string;
246
- pos: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.PositionItem;
247
- event: MouseEvent;
248
- }>) => void;
249
- onInternalRowMouseMove?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.Cell>) => void;
250
- }>, {
251
- dimensionRow: any;
252
- dataStore: any;
253
- dimensionCol: any;
24
+ export declare const RevogrOrderEditor: import("vue").DefineComponent<JSX.RevogrOrderEditor & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrOrderEditor & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
25
+ dimensionRow?: any;
26
+ dataStore?: any;
27
+ dimensionCol?: any;
254
28
  }>;
255
- export declare const RevogrOverlaySelection: import("vue").DefineComponent<JSX.RevogrOverlaySelection & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
256
- dimensionRow: any;
257
- colData: any;
258
- dataStore: any;
259
- selectionStore: any;
260
- dimensionCol: any;
261
- } & {
262
- range?: boolean;
263
- readonly?: boolean;
264
- useClipboard?: boolean;
265
- editors?: import("@revolist/revogrid/dist/types/interfaces").Edition.EditorBase;
266
- toString?: string;
267
- toLocaleString?: string;
268
- modelValue?: string | boolean;
269
- constructor?: Function;
270
- valueOf?: unknown;
271
- hasOwnProperty?: (v: string | number | symbol) => boolean;
272
- isPrototypeOf?: (v: Object) => boolean;
273
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
274
- canDrag?: boolean;
275
- lastCell?: import("@revolist/revogrid/dist/types/interfaces").Selection.Cell;
276
- onFocusCell?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.FocusedCells>) => void;
277
- onInternalCellEdit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
278
- onInternalCopy?: (event: CustomEvent<any>) => void;
279
- onInternalFocusCell?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
280
- onInternalPaste?: (event: CustomEvent<any>) => void;
281
- onInternalRangeDataApply?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeRangeSaveDataDetails>) => void;
282
- onInternalSelectionChanged?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.ChangedRange>) => void;
283
- onSetEdit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeEdit>) => void;
284
- onSetRange?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.RangeArea>) => void;
285
- onSetTempRange?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.TempRange>) => void;
286
- }>, {
287
- dimensionRow: any;
288
- colData: any;
289
- dataStore: any;
290
- selectionStore: any;
291
- dimensionCol: any;
29
+ export declare const RevogrOverlaySelection: import("vue").DefineComponent<JSX.RevogrOverlaySelection & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrOverlaySelection & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
30
+ dimensionRow?: any;
31
+ colData?: any;
32
+ dataStore?: any;
33
+ selectionStore?: any;
34
+ dimensionCol?: any;
292
35
  }>;
293
- export declare const RevogrRowHeaders: import("vue").DefineComponent<JSX.RevogrRowHeaders & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
294
- resize?: boolean;
295
- toString?: string;
296
- toLocaleString?: string;
297
- modelValue?: string | boolean;
298
- constructor?: Function;
299
- valueOf?: unknown;
300
- hasOwnProperty?: (v: string | number | symbol) => boolean;
301
- isPrototypeOf?: (v: Object) => boolean;
302
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
303
- height?: number;
304
- dataPorts?: import("@revolist/revogrid/dist/types/components/revo-grid/viewport.interfaces").ViewportData[];
305
- headerProp?: unknown;
306
- uiid?: string;
307
- rowHeaderColumn?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.RowHeaders;
308
- onElementToScroll?: (event: CustomEvent<import("@revolist/revogrid/dist/types/components/revo-grid/viewport.scrolling.service").ElementScroll>) => void;
309
- onScrollViewport?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortScrollEvent>) => void;
310
- }>, {}>;
311
- export declare const RevogrScrollVirtual: import("vue").DefineComponent<JSX.RevogrScrollVirtual & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
312
- viewportStore: any;
313
- dimensionStore: any;
314
- } & {
315
- toString?: string;
316
- toLocaleString?: string;
317
- modelValue?: string | boolean;
318
- constructor?: Function;
319
- valueOf?: unknown;
320
- hasOwnProperty?: (v: string | number | symbol) => boolean;
321
- isPrototypeOf?: (v: Object) => boolean;
322
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
323
- dimension?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionType;
324
- onScrollVirtual?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortScrollEvent>) => void;
325
- }>, {
326
- viewportStore: any;
327
- dimensionStore: any;
36
+ export declare const RevogrRowHeaders: import("vue").DefineComponent<JSX.RevogrRowHeaders & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrRowHeaders & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
37
+ export declare const RevogrScrollVirtual: import("vue").DefineComponent<JSX.RevogrScrollVirtual & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrScrollVirtual & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
38
+ viewportStore?: any;
39
+ dimensionStore?: any;
328
40
  }>;
329
- export declare const RevogrTempRange: import("vue").DefineComponent<JSX.RevogrTempRange & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
330
- dimensionRow: any;
331
- selectionStore: any;
332
- dimensionCol: any;
333
- } & {
334
- toString?: string;
335
- toLocaleString?: string;
336
- modelValue?: string | boolean;
337
- constructor?: Function;
338
- valueOf?: unknown;
339
- hasOwnProperty?: (v: string | number | symbol) => boolean;
340
- isPrototypeOf?: (v: Object) => boolean;
341
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
342
- }>, {
343
- dimensionRow: any;
344
- selectionStore: any;
345
- dimensionCol: any;
41
+ export declare const RevogrTempRange: import("vue").DefineComponent<JSX.RevogrTempRange & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrTempRange & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {
42
+ dimensionRow?: any;
43
+ selectionStore?: any;
44
+ dimensionCol?: any;
346
45
  }>;
347
- export declare const RevogrViewportScroll: import("vue").DefineComponent<JSX.RevogrViewportScroll & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
348
- toString?: string;
349
- toLocaleString?: string;
350
- modelValue?: string | boolean;
351
- constructor?: Function;
352
- valueOf?: unknown;
353
- hasOwnProperty?: (v: string | number | symbol) => boolean;
354
- isPrototypeOf?: (v: Object) => boolean;
355
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
356
- onScrollViewport?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortScrollEvent>) => void;
357
- contentWidth?: number;
358
- contentHeight?: number;
359
- onResizeViewport?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortResizeEvent>) => void;
360
- onScrollchange?: (event: CustomEvent<{
361
- type: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionType;
362
- hasScroll: boolean;
363
- }>) => void;
364
- }>, {}>;
46
+ export declare const RevogrViewportScroll: import("vue").DefineComponent<JSX.RevogrViewportScroll & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<JSX.RevogrViewportScroll & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
package/dist/vgrid.d.ts CHANGED
@@ -1,110 +1,9 @@
1
1
  import { App } from "vue";
2
- export declare const VGrid: import("vue").DefineComponent<import("@revolist/revogrid/dist/types/components").JSX.RevoGrid & import("./vue-component-lib/utils").InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
3
- rowHeaders?: boolean | import("@revolist/revogrid/dist/types/interfaces").RevoGrid.RowHeaders;
4
- frameSize?: number;
5
- rowSize?: number;
6
- colSize?: number;
7
- range?: boolean;
8
- readonly?: boolean;
9
- resize?: boolean;
10
- canFocus?: boolean;
11
- useClipboard?: boolean;
12
- columns?: (import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular | import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnGrouping)[];
13
- source?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
14
- pinnedTopSource?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
15
- pinnedBottomSource?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
16
- rowDefinitions?: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.RowDefinition[];
17
- editors?: import("@revolist/revogrid/dist/types/interfaces").Edition.EditorBase;
18
- plugins?: import("@revolist/revogrid/dist/types/interfaces").RevoPlugin.Plugin;
19
- columnTypes?: unknown;
20
- theme?: import("@revolist/revogrid/dist/types/interfaces").ThemeSpace.Theme;
21
- rowClass?: string;
22
- autoSizeColumn?: boolean | import("@revolist/revogrid/dist/types/plugins/autoSizeColumn").AutoSizeColumnConfig;
23
- filter?: boolean | import("@revolist/revogrid/dist/types/plugins/filter/filter.plugin").ColumnFilterConfig;
24
- canMoveColumns?: boolean;
25
- trimmedRows?: unknown;
26
- exporting?: boolean;
27
- grouping?: import("@revolist/revogrid/dist/types/plugins/groupingRow/grouping.row.types").GroupingOptions;
28
- stretch?: string | boolean;
29
- toString?: string;
30
- toLocaleString?: string;
31
- modelValue?: string | boolean;
32
- constructor?: Function;
33
- valueOf?: unknown;
34
- hasOwnProperty?: (v: string | number | symbol) => boolean;
35
- isPrototypeOf?: (v: Object) => boolean;
36
- propertyIsEnumerable?: (v: string | number | symbol) => boolean;
37
- onAftercolumnresize?: (event: CustomEvent<Record<string | number, import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular>>) => void;
38
- onAftercolumnsset?: (event: CustomEvent<{
39
- columns: import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection;
40
- order: Record<string | number, "asc" | "desc">;
41
- }>) => void;
42
- onAfteredit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails | import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeRangeSaveDataDetails>) => void;
43
- onAftersourceset?: (event: CustomEvent<{
44
- type: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionRows;
45
- source: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
46
- }>) => void;
47
- onAftertrimmed?: (event: CustomEvent<any>) => void;
48
- onBeforeaange?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.ChangedRange>) => void;
49
- onBeforeautofill?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Selection.ChangedRange>) => void;
50
- onBeforecellfocus?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
51
- onBeforecolumnapplied?: (event: CustomEvent<import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection>) => void;
52
- onBeforecolumnsset?: (event: CustomEvent<import("@revolist/revogrid/dist/types/services/column.data.provider").ColumnCollection>) => void;
53
- onBeforeedit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
54
- onBeforeeditstart?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeSaveDataDetails>) => void;
55
- onBeforeexport?: (event: CustomEvent<import("@revolist/revogrid/dist/types/plugins/export/types").DataInput>) => void;
56
- onBeforefilterapply?: (event: CustomEvent<{
57
- collection: Record<string | number, {
58
- filter: import("@revolist/revogrid/dist/types/plugins/filter/filter.types").LogicFunction;
59
- type: "none" | "empty" | "notEmpty" | "eq" | "notEq" | "begins" | "contains" | "notContains" | "eqN" | "neqN" | "gt" | "gte" | "lt" | "lte";
60
- value?: any;
61
- }>;
62
- }>) => void;
63
- onBeforefiltertrimmed?: (event: CustomEvent<{
64
- collection: Record<string | number, {
65
- filter: import("@revolist/revogrid/dist/types/plugins/filter/filter.types").LogicFunction;
66
- type: "none" | "empty" | "notEmpty" | "eq" | "notEq" | "begins" | "contains" | "notContains" | "eqN" | "neqN" | "gt" | "gte" | "lt" | "lte";
67
- value?: any;
68
- }>;
69
- itemsToFilter: Record<number, boolean>;
70
- }>) => void;
71
- onBeforefocuslost?: (event: CustomEvent<import("@revolist/revogrid/dist/types/components/revo-grid/viewport.service").FocusedData>) => void;
72
- onBeforerangeedit?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").Edition.BeforeRangeSaveDataDetails>) => void;
73
- onBeforesorting?: (event: CustomEvent<{
74
- column: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular;
75
- order: "asc" | "desc";
76
- additive: boolean;
77
- }>) => void;
78
- onBeforesortingapply?: (event: CustomEvent<{
79
- column: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular;
80
- order: "asc" | "desc";
81
- additive: boolean;
82
- }>) => void;
83
- onBeforesourceset?: (event: CustomEvent<{
84
- type: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DimensionRows;
85
- source: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.DataType[];
86
- }>) => void;
87
- onBeforesourcesortingapply?: (event: CustomEvent<any>) => void;
88
- onBeforetrimmed?: (event: CustomEvent<{
89
- trimmed: Record<number, boolean>;
90
- trimmedType: string;
91
- type: string;
92
- }>) => void;
93
- onHeaderclick?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnRegular>) => void;
94
- onRowdragstart?: (event: CustomEvent<{
95
- pos: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.PositionItem;
96
- text: string;
97
- }>) => void;
98
- onRoworderchanged?: (event: CustomEvent<{
99
- from: number;
100
- to: number;
101
- }>) => void;
102
- onViewportscroll?: (event: CustomEvent<import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ViewPortScrollEvent>) => void;
103
- }>, {}>;
2
+ export declare const VGrid: import("vue").DefineComponent<import("@revolist/revogrid/dist/types/components").JSX.RevoGrid & import("./vue-component-lib/utils").InputProps<string | number | boolean>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("@revolist/revogrid/dist/types/components").JSX.RevoGrid & import("./vue-component-lib/utils").InputProps<string | number | boolean>>, {}>;
104
3
  export declare const VGridPlugin: {
105
4
  install(app: App): void;
106
5
  };
107
6
  export declare const VGridVueTemplate: (vueConstructor: any) => (h: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.HyperFunc<import("@revolist/revogrid/dist/types/stencil-public-runtime").VNode>, p: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnDataSchemaModel) => JSX.Element;
108
- export declare const VGridVueTemplateConstructor: (vueConstructor: import("vue").DefineComponent<{}, {}, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {}>, {}>, e: HTMLElement, p: Record<string, any>) => any;
7
+ export declare const VGridVueTemplateConstructor: (vueConstructor: import("vue").DefineComponent<{}, {}, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>, e: HTMLElement, p: Record<string, any>) => any;
109
8
  export declare const VGridVueEditor: (vueConstructor: any) => (column: import("@revolist/revogrid/dist/types/interfaces").RevoGrid.ColumnDataSchemaModel, save: Function, close: Function) => import("./vue-editor-adapter").default;
110
9
  export default VGrid;
package/dist/vgrid.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue"),require("@revolist/revogrid/custom-element")):"function"==typeof define&&define.amd?define("VGrid",["vue","@revolist/revogrid/custom-element"],t):"object"==typeof exports?exports.VGrid=t(require("vue"),require("@revolist/revogrid/custom-element")):e.VGrid=t(e.vue,e["@revolist/revogrid/custom-element"])}(self,(function(e,t){return(()=>{"use strict";var r={556:(e,t,r)=>{r.r(t),r.d(t,{VGrid:()=>f,VGridPlugin:()=>m,VGridVueEditor:()=>g,VGridVueTemplate:()=>v,VGridVueTemplateConstructor:()=>b,default:()=>h});var o=r(103),n=r(12);const s="update:modelValue",i=e=>{var t;return(null===(t=e)||void 0===t?void 0:t.split(" "))||[]},l=(e,t,r=[])=>{var o;return[...Array.from((null===(o=e.value)||void 0===o?void 0:o.classList)||[]),...r].filter(((e,r,o)=>!t.has(e)&&o.indexOf(e)===r))},u=((e,t=[],r={})=>{const{modelProp:n,modelUpdateEvent:u}=r,a=(0,o.defineComponent)(((t,{attrs:r,slots:a,emit:d})=>{var c;let f=t[n];const p=(0,o.ref)(),m=new Set(i(r.class)),v=e=>{e.el&&e.el.addEventListener(u.toLowerCase(),(e=>{f=(null==e?void 0:e.target)[n],d(s,f),d(u,e),e.stopImmediatePropagation()}))},b=(0,o.getCurrentInstance)(),g=(null===(c=null==b?void 0:b.appContext)||void 0===c?void 0:c.provides.navManager)?(0,o.inject)("navManager"):void 0;return()=>{i(r.class).forEach((e=>{m.add(e)}));const s=t.onClick;let d=Object.assign(Object.assign({},t),{ref:p,class:l(p,m),onClick:e=>{void 0!==s&&s(e),e.defaultPrevented||(e=>{const{routerLink:r}=t;if(!r)return;const o=Object.keys(t).filter((e=>e.startsWith("router")));if(void 0!==g){let r={event:e};o.forEach((e=>{r[e]=t[e]})),g.navigate(r)}else console.warn("Tried to navigate, but no router was found. Make sure you have mounted Vue Router.")})(e)},onVnodeBeforeMount:u?v:void 0});return n&&(d=Object.assign(Object.assign({},d),{[n]:t.hasOwnProperty("modelValue")?t.modelValue:f})),(0,o.h)(e,d,a.default&&a.default())}}));return a.displayName=e,a.props=[...t,"routerLink"],n&&(a.props.push("modelValue"),a.emits=[s,u]),a})("revo-grid",["rowHeaders","frameSize","rowSize","colSize","range","readonly","resize","canFocus","useClipboard","columns","source","pinnedTopSource","pinnedBottomSource","rowDefinitions","editors","plugins","columnTypes","theme","rowClass","autoSizeColumn","filter","canMoveColumns","trimmedRows","exporting","grouping","stretch","beforeedit","beforerangeedit","afteredit","beforeautofill","beforeaange","roworderchanged","beforesourcesortingapply","beforesortingapply","beforesorting","rowdragstart","headerclick","beforecellfocus","beforefocuslost","beforesourceset","aftersourceset","beforecolumnsset","beforecolumnapplied","aftercolumnsset","beforefilterapply","beforefiltertrimmed","beforetrimmed","aftertrimmed","viewportscroll","beforeexport","beforeeditstart","aftercolumnresize"]),a=(e,t,r)=>{if(!t)return null;let n;(null==t?void 0:t.childNodes.length)&&(n=t.childNodes[0]),n||(n=document.createElement("span"),t.appendChild(n));let s=n._vnode;if(s)for(const e in r)s.component.props[e]=r[e];else{const t=(0,o.createVNode)(e,r);(0,o.render)(t,n)}return s};class d{constructor(e,t,r,o){this.VueEditorConstructor=e,this.column=t,this.save=r,this.close=o,this.element=null,this.editCell=null}componentDidRender(){}disconnectedCallback(){var e;null===(e=this.vueEl)||void 0===e||e.$destroy(),this.vueEl=void 0}render(e){return e("span",{ref:e=>{this.vueEl=a(this.VueEditorConstructor,e,Object.assign(Object.assign({},this.editCell),{column:this.column,save:this.save,close:this.close}))}})}}let c=!1;const f=(0,o.defineAsyncComponent)((()=>new Promise((e=>(!c&&n&&(n.defineCustomElements(),c=!0),e(u))))));let p=!1;const m={install(e){p||(p=!0,e.component("vue-data-grid",f))}},v=e=>(t,r)=>t("span",{ref:t=>a(e,t,r)}),b=a,g=e=>function(t,r,o){return new d(e,t,r,o)},h=f},12:e=>{e.exports=t},103:t=>{t.exports=e}},o={};function n(e){if(o[e])return o[e].exports;var t=o[e]={exports:{}};return r[e](t,t.exports,n),t.exports}return n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(556)})()}));
1
+ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("vue"),require("@revolist/revogrid/custom-element")):"function"==typeof define&&define.amd?define("VGrid",["vue","@revolist/revogrid/custom-element"],o):"object"==typeof exports?exports.VGrid=o(require("vue"),require("@revolist/revogrid/custom-element")):e.VGrid=o(e.vue,e["@revolist/revogrid/custom-element"])}(self,((e,o)=>(()=>{"use strict";var r={239:e=>{e.exports=o},748:o=>{o.exports=e}},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var s=t[e]={exports:{}};return r[e](s,s.exports,n),s.exports}n.d=(e,o)=>{for(var r in o)n.o(o,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{n.r(s),n.d(s,{VGrid:()=>p,VGridPlugin:()=>m,VGridVueEditor:()=>h,VGridVueTemplate:()=>b,VGridVueTemplateConstructor:()=>g,default:()=>y});var e=n(748),o=n(239);const r="update:modelValue",t=Symbol(),i={default:t},l=e=>(null==e?void 0:e.split(" "))||[],a=(e,o,r=[])=>{var t;return[...Array.from((null===(t=e.value)||void 0===t?void 0:t.classList)||[]),...r].filter(((e,r,t)=>!o.has(e)&&t.indexOf(e)===r))},d=((o,n,s=[],d,u,c)=>{void 0!==n&&n();const f=(0,e.defineComponent)(((n,{attrs:s,slots:i,emit:f})=>{var p;let v=n[d];const m=(0,e.ref)(),b=new Set(l(s.class)),g=e=>{e.el&&(Array.isArray(u)?u:[u]).forEach((o=>{e.el.addEventListener(o.toLowerCase(),(e=>{v=(null==e?void 0:e.target)[d],f(r,v),c&&f(c,e)}))}))},h=(0,e.getCurrentInstance)(),y=(null===(p=null==h?void 0:h.appContext)||void 0===p?void 0:p.provides.navManager)?(0,e.inject)("navManager"):void 0;return()=>{v=n[d],l(s.class).forEach((e=>{b.add(e)}));const r=n.onClick;let c={ref:m,class:a(m,b),onClick:e=>{void 0!==r&&r(e),e.defaultPrevented||(e=>{const{routerLink:o}=n;if(o!==t)if(void 0!==y){let o={event:e};for(const e in n){const r=n[e];n.hasOwnProperty(e)&&e.startsWith("router")&&r!==t&&(o[e]=r)}y.navigate(o)}else console.warn("Tried to navigate, but no router was found. Make sure you have mounted Vue Router.")})(e)},onVnodeBeforeMount:u?g:void 0};for(const e in n){const o=n[e];n.hasOwnProperty(e)&&o!==t&&(c[e]=o)}return d&&(n.modelValue!==t?c=Object.assign(Object.assign({},c),{[d]:n.modelValue}):v!==t&&(c=Object.assign(Object.assign({},c),{[d]:v}))),(0,e.h)(o,c,i.default&&i.default())}}));return f.displayName=o,f.props={routerLink:i},s.forEach((e=>{f.props[e]=i})),d&&(f.props.modelValue=i,f.emits=[r,c]),f})("revo-grid",void 0,["rowHeaders","frameSize","rowSize","colSize","range","readonly","resize","canFocus","useClipboard","columns","source","pinnedTopSource","pinnedBottomSource","rowDefinitions","editors","plugins","columnTypes","theme","rowClass","autoSizeColumn","filter","canMoveColumns","trimmedRows","exporting","grouping","stretch","beforeedit","beforerangeedit","afteredit","beforeautofill","beforeaange","roworderchanged","beforesourcesortingapply","beforesortingapply","beforesorting","rowdragstart","headerclick","beforecellfocus","beforefocuslost","beforesourceset","aftersourceset","beforecolumnsset","beforecolumnapplied","aftercolumnsset","beforefilterapply","beforefiltertrimmed","beforetrimmed","aftertrimmed","viewportscroll","beforeexport","beforeeditstart","aftercolumnresize"]),u=(o,r,t)=>{if(!r)return null;let n;(null==r?void 0:r.childNodes.length)&&(n=r.childNodes[0]),n||(n=document.createElement("span"),r.appendChild(n));let s=n._vnode;if(s)for(const e in t)s.component.props[e]=t[e];else{const r=(0,e.createVNode)(o,t);(0,e.render)(r,n)}return s};class c{constructor(e,o,r,t){this.VueEditorConstructor=e,this.column=o,this.save=r,this.close=t,this.element=null,this.editCell=null}componentDidRender(){}disconnectedCallback(){var e;null===(e=this.vueEl)||void 0===e||e.$destroy(),this.vueEl=void 0}render(e){return e("span",{ref:e=>{this.vueEl=u(this.VueEditorConstructor,e,Object.assign(Object.assign({},this.editCell),{column:this.column,save:this.save,close:this.close}))}})}}let f=!1;const p=(0,e.defineAsyncComponent)((()=>new Promise((e=>(!f&&o&&(o.defineCustomElements(),f=!0),e(d))))));let v=!1;const m={install(e){v||(v=!0,e.component("vue-data-grid",p))}},b=e=>(o,r)=>o("span",{ref:o=>u(e,o,r)}),g=u,h=e=>function(o,r,t){return new c(e,o,r,t)},y=p})(),s})()));
@@ -1,9 +1,5 @@
1
- export interface InputProps extends Object {
2
- modelValue: string | boolean;
3
- }
4
- interface ComponentOptions {
5
- modelProp?: string;
6
- modelUpdateEvent?: string;
1
+ export interface InputProps<T> {
2
+ modelValue?: T;
7
3
  }
8
4
  /**
9
5
  * Create a callback to define a Vue component wrapper around a Web Component.
@@ -12,9 +8,13 @@ interface ComponentOptions {
12
8
  * @prop componentProps - An array of properties on the
13
9
  * component. These usually match up with the @Prop definitions
14
10
  * in each component's TSX file.
15
- * @prop componentOptions - An object that defines additional
16
- * options for the component such as router or v-model
17
- * integrations.
11
+ * @prop customElement - An option custom element instance to pass
12
+ * to customElements.define. Only set if `includeImportCustomElements: true` in your config.
13
+ * @prop modelProp - The prop that v-model binds to (i.e. value)
14
+ * @prop modelUpdateEvent - The event that is fired from your Web Component when the value changes (i.e. ionChange)
15
+ * @prop externalModelUpdateEvent - The external event to fire from your Vue component when modelUpdateEvent fires. This is used for ensuring that v-model references have been
16
+ * correctly updated when a user's event callback fires.
18
17
  */
19
- export declare const defineContainer: <Props>(name: string, componentProps?: string[], componentOptions?: ComponentOptions) => import("vue").DefineComponent<Props & InputProps, object, {}, Record<string, import("@vue/reactivity").ComputedGetter<any> | import("vue").WritableComputedOptions<any>>, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<Props & InputProps>>, import("vue").ExtractDefaultPropTypes<Props & InputProps>>;
20
- export {};
18
+ export declare const defineContainer: <Props, VModelType = string | number | boolean>(name: string, defineCustomElement: any, componentProps?: string[], modelProp?: string, modelUpdateEvent?: string, externalModelUpdateEvent?: string) => import("vue").DefineComponent<Props & InputProps<VModelType>, object, {}, import("vue").ComputedOptions, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<Props & InputProps<VModelType> extends infer T ? T extends Props & InputProps<VModelType> ? T extends import("vue").ComponentPropsOptions<{
19
+ [x: string]: unknown;
20
+ }> ? import("vue").ExtractPropTypes<T> : T : never : never>, import("vue").ExtractDefaultPropTypes<Props & InputProps<VModelType>>>;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@revolist/vue3-datagrid",
3
- "version": "3.2.2",
4
- "description": "Vue 3 data grid spreadsheet",
3
+ "version": "3.2.6",
4
+ "description": "Vue 3 DataGrid Spreadsheet",
5
5
  "main": "dist/vgrid.js",
6
+ "types": "dist/vgrid.d.ts",
6
7
  "scripts": {
7
8
  "build": "webpack --config ./.webpack/webpack.config.js --mode production",
8
9
  "serve": "webpack serve --config ./.webpack/webpack.dev.js"
@@ -33,24 +34,24 @@
33
34
  "homepage": "https://github.com/revolist/vue3-datagrid#readme",
34
35
  "license": "MIT",
35
36
  "dependencies": {
36
- "@revolist/revogrid": "^3.2.0",
37
- "@stencil/core": "^2.6.0"
37
+ "@revolist/revogrid": "^3.2.6",
38
+ "@stencil/core": "^2.17.3"
38
39
  },
39
40
  "devDependencies": {
40
- "@vue/compiler-sfc": "^3.0.5",
41
- "clean-webpack-plugin": "^3.0.0",
42
- "css-loader": "^5.0.1",
43
- "html-webpack-plugin": "^4.5.0",
44
- "sass": "^1.53.0",
41
+ "@vue/compiler-sfc": "^3.2.37",
42
+ "clean-webpack-plugin": "^4.0.0",
43
+ "css-loader": "^6.7.1",
44
+ "html-webpack-plugin": "^5.5.0",
45
+ "sass": "^1.54.4",
45
46
  "sass-loader": "^13.0.2",
46
- "style-loader": "^2.0.0",
47
- "ts-loader": "^8.0.6",
48
- "typescript": "^4.0.3",
49
- "vue": "^3.0.5",
50
- "vue-loader": "^16.1.2",
51
- "vue-style-loader": "^4.1.2",
52
- "webpack": "^5.1.3",
53
- "webpack-cli": "^4.1.0",
54
- "webpack-dev-server": "^3.11.0"
47
+ "style-loader": "^3.3.1",
48
+ "ts-loader": "^9.3.1",
49
+ "typescript": "^4.7.4",
50
+ "vue": "^3.2.37",
51
+ "vue-loader": "^17.0.0",
52
+ "vue-style-loader": "^4.1.3",
53
+ "webpack": "^5.74.0",
54
+ "webpack-cli": "^4.10.0",
55
+ "webpack-dev-server": "^4.10.0"
55
56
  }
56
57
  }
package/src/revogrid.ts CHANGED
@@ -8,7 +8,7 @@ import type { JSX } from '@revolist/revogrid';
8
8
 
9
9
 
10
10
 
11
- export const RevoGrid = /*@__PURE__*/ defineContainer<JSX.RevoGrid>('revo-grid', [
11
+ export const RevoGrid = /*@__PURE__*/ defineContainer<JSX.RevoGrid>('revo-grid', undefined, [
12
12
  'rowHeaders',
13
13
  'frameSize',
14
14
  'rowSize',
@@ -64,13 +64,13 @@ export const RevoGrid = /*@__PURE__*/ defineContainer<JSX.RevoGrid>('revo-grid',
64
64
  ]);
65
65
 
66
66
 
67
- export const RevogrClipboard = /*@__PURE__*/ defineContainer<JSX.RevogrClipboard>('revogr-clipboard', [
67
+ export const RevogrClipboard = /*@__PURE__*/ defineContainer<JSX.RevogrClipboard>('revogr-clipboard', undefined, [
68
68
  'copyRegion',
69
69
  'pasteRegion'
70
70
  ]);
71
71
 
72
72
 
73
- export const RevogrData = /*@__PURE__*/ defineContainer<JSX.RevogrData>('revogr-data', [
73
+ export const RevogrData = /*@__PURE__*/ defineContainer<JSX.RevogrData>('revogr-data', undefined, [
74
74
  'readonly',
75
75
  'range',
76
76
  'canDrag',
@@ -85,7 +85,7 @@ export const RevogrData = /*@__PURE__*/ defineContainer<JSX.RevogrData>('revogr-
85
85
  ]);
86
86
 
87
87
 
88
- export const RevogrEdit = /*@__PURE__*/ defineContainer<JSX.RevogrEdit>('revogr-edit', [
88
+ export const RevogrEdit = /*@__PURE__*/ defineContainer<JSX.RevogrEdit>('revogr-edit', undefined, [
89
89
  'editCell',
90
90
  'column',
91
91
  'editor',
@@ -94,7 +94,7 @@ export const RevogrEdit = /*@__PURE__*/ defineContainer<JSX.RevogrEdit>('revogr-
94
94
  ]);
95
95
 
96
96
 
97
- export const RevogrFilterPanel = /*@__PURE__*/ defineContainer<JSX.RevogrFilterPanel>('revogr-filter-panel', [
97
+ export const RevogrFilterPanel = /*@__PURE__*/ defineContainer<JSX.RevogrFilterPanel>('revogr-filter-panel', undefined, [
98
98
  'uuid',
99
99
  'filterItems',
100
100
  'filterTypes',
@@ -106,14 +106,14 @@ export const RevogrFilterPanel = /*@__PURE__*/ defineContainer<JSX.RevogrFilterP
106
106
  ]);
107
107
 
108
108
 
109
- export const RevogrFocus = /*@__PURE__*/ defineContainer<JSX.RevogrFocus>('revogr-focus', [
109
+ export const RevogrFocus = /*@__PURE__*/ defineContainer<JSX.RevogrFocus>('revogr-focus', undefined, [
110
110
  'selectionStore',
111
111
  'dimensionRow',
112
112
  'dimensionCol'
113
113
  ]);
114
114
 
115
115
 
116
- export const RevogrHeader = /*@__PURE__*/ defineContainer<JSX.RevogrHeader>('revogr-header', [
116
+ export const RevogrHeader = /*@__PURE__*/ defineContainer<JSX.RevogrHeader>('revogr-header', undefined, [
117
117
  'viewportCol',
118
118
  'dimensionCol',
119
119
  'selectionStore',
@@ -129,7 +129,7 @@ export const RevogrHeader = /*@__PURE__*/ defineContainer<JSX.RevogrHeader>('rev
129
129
  ]);
130
130
 
131
131
 
132
- export const RevogrOrderEditor = /*@__PURE__*/ defineContainer<JSX.RevogrOrderEditor>('revogr-order-editor', [
132
+ export const RevogrOrderEditor = /*@__PURE__*/ defineContainer<JSX.RevogrOrderEditor>('revogr-order-editor', undefined, [
133
133
  'parent',
134
134
  'dimensionRow',
135
135
  'dimensionCol',
@@ -142,7 +142,7 @@ export const RevogrOrderEditor = /*@__PURE__*/ defineContainer<JSX.RevogrOrderEd
142
142
  ]);
143
143
 
144
144
 
145
- export const RevogrOverlaySelection = /*@__PURE__*/ defineContainer<JSX.RevogrOverlaySelection>('revogr-overlay-selection', [
145
+ export const RevogrOverlaySelection = /*@__PURE__*/ defineContainer<JSX.RevogrOverlaySelection>('revogr-overlay-selection', undefined, [
146
146
  'readonly',
147
147
  'range',
148
148
  'canDrag',
@@ -167,7 +167,7 @@ export const RevogrOverlaySelection = /*@__PURE__*/ defineContainer<JSX.RevogrOv
167
167
  ]);
168
168
 
169
169
 
170
- export const RevogrRowHeaders = /*@__PURE__*/ defineContainer<JSX.RevogrRowHeaders>('revogr-row-headers', [
170
+ export const RevogrRowHeaders = /*@__PURE__*/ defineContainer<JSX.RevogrRowHeaders>('revogr-row-headers', undefined, [
171
171
  'height',
172
172
  'dataPorts',
173
173
  'headerProp',
@@ -179,7 +179,7 @@ export const RevogrRowHeaders = /*@__PURE__*/ defineContainer<JSX.RevogrRowHeade
179
179
  ]);
180
180
 
181
181
 
182
- export const RevogrScrollVirtual = /*@__PURE__*/ defineContainer<JSX.RevogrScrollVirtual>('revogr-scroll-virtual', [
182
+ export const RevogrScrollVirtual = /*@__PURE__*/ defineContainer<JSX.RevogrScrollVirtual>('revogr-scroll-virtual', undefined, [
183
183
  'dimension',
184
184
  'viewportStore',
185
185
  'dimensionStore',
@@ -187,14 +187,14 @@ export const RevogrScrollVirtual = /*@__PURE__*/ defineContainer<JSX.RevogrScrol
187
187
  ]);
188
188
 
189
189
 
190
- export const RevogrTempRange = /*@__PURE__*/ defineContainer<JSX.RevogrTempRange>('revogr-temp-range', [
190
+ export const RevogrTempRange = /*@__PURE__*/ defineContainer<JSX.RevogrTempRange>('revogr-temp-range', undefined, [
191
191
  'selectionStore',
192
192
  'dimensionRow',
193
193
  'dimensionCol'
194
194
  ]);
195
195
 
196
196
 
197
- export const RevogrViewportScroll = /*@__PURE__*/ defineContainer<JSX.RevogrViewportScroll>('revogr-viewport-scroll', [
197
+ export const RevogrViewportScroll = /*@__PURE__*/ defineContainer<JSX.RevogrViewportScroll>('revogr-viewport-scroll', undefined, [
198
198
  'contentWidth',
199
199
  'contentHeight',
200
200
  'scrollViewport',
@@ -1,24 +1,31 @@
1
1
  import { VNode, defineComponent, getCurrentInstance, h, inject, ref, Ref } from 'vue';
2
2
 
3
- export interface InputProps extends Object {
4
- modelValue: string | boolean;
3
+ export interface InputProps<T> {
4
+ modelValue?: T;
5
5
  }
6
6
 
7
7
  const UPDATE_VALUE_EVENT = 'update:modelValue';
8
8
  const MODEL_VALUE = 'modelValue';
9
9
  const ROUTER_LINK_VALUE = 'routerLink';
10
10
  const NAV_MANAGER = 'navManager';
11
- const ROUTER_PROP_REFIX = 'router';
11
+ const ROUTER_PROP_PREFIX = 'router';
12
+
13
+ /**
14
+ * Starting in Vue 3.1.0, all properties are
15
+ * added as keys to the props object, even if
16
+ * they are not being used. In order to correctly
17
+ * account for both value props and v-model props,
18
+ * we need to check if the key exists for Vue <3.1.0
19
+ * and then check if it is not undefined for Vue >= 3.1.0.
20
+ * See https://github.com/vuejs/vue-next/issues/3889
21
+ */
22
+ const EMPTY_PROP = Symbol();
23
+ const DEFAULT_EMPTY_PROP = { default: EMPTY_PROP };
12
24
 
13
25
  interface NavManager<T = any> {
14
26
  navigate: (options: T) => void;
15
27
  }
16
28
 
17
- interface ComponentOptions {
18
- modelProp?: string;
19
- modelUpdateEvent?: string;
20
- }
21
-
22
29
  const getComponentClasses = (classes: unknown) => {
23
30
  return (classes as string)?.split(' ') || [];
24
31
  };
@@ -35,39 +42,56 @@ const getElementClasses = (ref: Ref<HTMLElement | undefined>, componentClasses:
35
42
  * @prop componentProps - An array of properties on the
36
43
  * component. These usually match up with the @Prop definitions
37
44
  * in each component's TSX file.
38
- * @prop componentOptions - An object that defines additional
39
- * options for the component such as router or v-model
40
- * integrations.
45
+ * @prop customElement - An option custom element instance to pass
46
+ * to customElements.define. Only set if `includeImportCustomElements: true` in your config.
47
+ * @prop modelProp - The prop that v-model binds to (i.e. value)
48
+ * @prop modelUpdateEvent - The event that is fired from your Web Component when the value changes (i.e. ionChange)
49
+ * @prop externalModelUpdateEvent - The external event to fire from your Vue component when modelUpdateEvent fires. This is used for ensuring that v-model references have been
50
+ * correctly updated when a user's event callback fires.
41
51
  */
42
- export const defineContainer = <Props>(name: string, componentProps: string[] = [], componentOptions: ComponentOptions = {}) => {
43
- const { modelProp, modelUpdateEvent } = componentOptions;
44
-
52
+ export const defineContainer = <Props, VModelType=string|number|boolean>(
53
+ name: string,
54
+ defineCustomElement: any,
55
+ componentProps: string[] = [],
56
+ modelProp?: string,
57
+ modelUpdateEvent?: string,
58
+ externalModelUpdateEvent?: string
59
+ ) => {
45
60
  /**
46
61
  * Create a Vue component wrapper around a Web Component.
47
62
  * Note: The `props` here are not all properties on a component.
48
63
  * They refer to whatever properties are set on an instance of a component.
49
64
  */
50
- const Container = defineComponent<Props & InputProps>((props, { attrs, slots, emit }) => {
51
- let modelPropValue = (props as any)[modelProp];
65
+
66
+ if (defineCustomElement !== undefined) {
67
+ defineCustomElement();
68
+ }
69
+
70
+ const Container = defineComponent<Props & InputProps<VModelType>>((props: any, { attrs, slots, emit }) => {
71
+ let modelPropValue = props[modelProp];
52
72
  const containerRef = ref<HTMLElement>();
53
73
  const classes = new Set(getComponentClasses(attrs.class));
54
74
  const onVnodeBeforeMount = (vnode: VNode) => {
55
75
  // Add a listener to tell Vue to update the v-model
56
76
  if (vnode.el) {
57
- vnode.el.addEventListener(modelUpdateEvent.toLowerCase(), (e: Event) => {
58
- modelPropValue = (e?.target as any)[modelProp];
59
- emit(UPDATE_VALUE_EVENT, modelPropValue);
60
-
61
- /**
62
- * We need to emit the change event here
63
- * rather than on the web component to ensure
64
- * that any v-model bindings have been updated.
65
- * Otherwise, the developer will listen on the
66
- * native web component, but the v-model will
67
- * not have been updated yet.
68
- */
69
- emit(modelUpdateEvent, e);
70
- e.stopImmediatePropagation();
77
+ const eventsNames = Array.isArray(modelUpdateEvent) ? modelUpdateEvent : [modelUpdateEvent];
78
+ eventsNames.forEach((eventName: string) => {
79
+ vnode.el!.addEventListener(eventName.toLowerCase(), (e: Event) => {
80
+ modelPropValue = (e?.target as any)[modelProp];
81
+ emit(UPDATE_VALUE_EVENT, modelPropValue);
82
+
83
+ /**
84
+ * We need to emit the change event here
85
+ * rather than on the web component to ensure
86
+ * that any v-model bindings have been updated.
87
+ * Otherwise, the developer will listen on the
88
+ * native web component, but the v-model will
89
+ * not have been updated yet.
90
+ */
91
+ if (externalModelUpdateEvent) {
92
+ emit(externalModelUpdateEvent, e);
93
+ }
94
+ });
71
95
  });
72
96
  }
73
97
  };
@@ -76,16 +100,18 @@ export const defineContainer = <Props>(name: string, componentProps: string[] =
76
100
  const hasRouter = currentInstance?.appContext?.provides[NAV_MANAGER];
77
101
  const navManager: NavManager | undefined = hasRouter ? inject(NAV_MANAGER) : undefined;
78
102
  const handleRouterLink = (ev: Event) => {
79
- const { routerLink } = props as any;
80
- if (!routerLink) return;
81
-
82
- const routerProps = Object.keys(props).filter(p => p.startsWith(ROUTER_PROP_REFIX));
103
+ const { routerLink } = props;
104
+ if (routerLink === EMPTY_PROP) return;
83
105
 
84
106
  if (navManager !== undefined) {
85
107
  let navigationPayload: any = { event: ev };
86
- routerProps.forEach(prop => {
87
- navigationPayload[prop] = (props as any)[prop];
88
- });
108
+ for (const key in props) {
109
+ const value = props[key];
110
+ if (props.hasOwnProperty(key) && key.startsWith(ROUTER_PROP_PREFIX) && value !== EMPTY_PROP) {
111
+ navigationPayload[key] = value;
112
+ }
113
+ }
114
+
89
115
  navManager.navigate(navigationPayload);
90
116
  } else {
91
117
  console.warn('Tried to navigate, but no router was found. Make sure you have mounted Vue Router.');
@@ -93,11 +119,13 @@ export const defineContainer = <Props>(name: string, componentProps: string[] =
93
119
  }
94
120
 
95
121
  return () => {
122
+ modelPropValue = props[modelProp];
123
+
96
124
  getComponentClasses(attrs.class).forEach(value => {
97
125
  classes.add(value);
98
126
  });
99
127
 
100
- const oldClick = (props as any).onClick;
128
+ const oldClick = props.onClick;
101
129
  const handleClick = (ev: Event) => {
102
130
  if (oldClick !== undefined) {
103
131
  oldClick(ev);
@@ -107,18 +135,43 @@ export const defineContainer = <Props>(name: string, componentProps: string[] =
107
135
  }
108
136
  }
109
137
 
110
- let propsToAdd = {
111
- ...props,
138
+ let propsToAdd: any = {
112
139
  ref: containerRef,
113
140
  class: getElementClasses(containerRef, classes),
114
141
  onClick: handleClick,
115
142
  onVnodeBeforeMount: (modelUpdateEvent) ? onVnodeBeforeMount : undefined
116
143
  };
117
144
 
145
+ /**
146
+ * We can use Object.entries here
147
+ * to avoid the hasOwnProperty check,
148
+ * but that would require 2 iterations
149
+ * where as this only requires 1.
150
+ */
151
+ for (const key in props) {
152
+ const value = props[key];
153
+ if (props.hasOwnProperty(key) && value !== EMPTY_PROP) {
154
+ propsToAdd[key] = value;
155
+ }
156
+ }
157
+
118
158
  if (modelProp) {
119
- propsToAdd = {
120
- ...propsToAdd,
121
- [modelProp]: props.hasOwnProperty('modelValue') ? props.modelValue : modelPropValue
159
+ /**
160
+ * If form value property was set using v-model
161
+ * then we should use that value.
162
+ * Otherwise, check to see if form value property
163
+ * was set as a static value (i.e. no v-model).
164
+ */
165
+ if (props[MODEL_VALUE] !== EMPTY_PROP) {
166
+ propsToAdd = {
167
+ ...propsToAdd,
168
+ [modelProp]: props[MODEL_VALUE]
169
+ }
170
+ } else if (modelPropValue !== EMPTY_PROP) {
171
+ propsToAdd = {
172
+ ...propsToAdd,
173
+ [modelProp]: modelPropValue
174
+ }
122
175
  }
123
176
  }
124
177
 
@@ -127,10 +180,18 @@ export const defineContainer = <Props>(name: string, componentProps: string[] =
127
180
  });
128
181
 
129
182
  Container.displayName = name;
130
- Container.props = [...componentProps, ROUTER_LINK_VALUE];
183
+
184
+ Container.props = {
185
+ [ROUTER_LINK_VALUE]: DEFAULT_EMPTY_PROP
186
+ };
187
+
188
+ componentProps.forEach(componentProp => {
189
+ Container.props[componentProp] = DEFAULT_EMPTY_PROP;
190
+ });
191
+
131
192
  if (modelProp) {
132
- Container.props.push(MODEL_VALUE);
133
- Container.emits = [UPDATE_VALUE_EVENT, modelUpdateEvent];
193
+ Container.props[MODEL_VALUE] = DEFAULT_EMPTY_PROP;
194
+ Container.emits = [UPDATE_VALUE_EVENT, externalModelUpdateEvent];
134
195
  }
135
196
 
136
197
  return Container;