Skip to content

Commit 02d8b2c

Browse files
committed
Adapt vue-vuetify to Vue 3 and Vuetify 3
- switch to @jsonforms/vue - import Vuetify components from 'vuetify/components' instead of 'vuetify/lib' - replace 'VExpansionPanelHeader/Content' with 'VExpansionPanelTitle/Text' - replace 'VTabsItem/s' with 'VWindow/Item' - replace 'VSimpleTable' with 'VTable' - replace ':value' and '@input' with 'model-value' and '@update:model-value' - replace ':item-text' with ':item-title' for lists - remove date/time pickers - remove mask integration including mask renderer - remove ListWithDetail renderer for now - adapt DisabledIconFocus for Vue 3 - replace outdated rollup-plugin-styles with rollup-plugin-css-only - update rollup-plugin-typescript2 - adapt Vue target
1 parent ac363c2 commit 02d8b2c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+238
-260
lines changed

packages/vue-vuetify/.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = {
88
'eslint:recommended',
99
'@vue/typescript/recommended',
1010
'@vue/prettier',
11-
'@vue/prettier/@typescript-eslint',
11+
'@vue/eslint-config-prettier',
1212
],
1313
parserOptions: {
1414
ecmaVersion: 2020,

packages/vue-vuetify/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@
8282
"rimraf": "^4.4.1",
8383
"rollup": "^3.20.2",
8484
"rollup-plugin-cleanup": "^3.2.1",
85-
"rollup-plugin-styles": "^4.0.0",
86-
"rollup-plugin-typescript2": "^0.30.0",
85+
"rollup-plugin-css-only": "^4.3.0",
86+
"rollup-plugin-typescript2": "^0.34.1",
8787
"rollup-plugin-visualizer": "^5.5.2",
8888
"rollup-plugin-vue": "^6.0.0",
8989
"typescript": "~4.5.5",

packages/vue-vuetify/rollup.config.mjs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import typescript from 'rollup-plugin-typescript2';
44
import resolve from '@rollup/plugin-node-resolve';
55
import cleanup from 'rollup-plugin-cleanup';
66
import { visualizer } from 'rollup-plugin-visualizer';
7-
import styles from 'rollup-plugin-styles';
7+
import css from 'rollup-plugin-css-only';
88

99
import packageJson from './package.json' assert { type: 'json' };
1010

@@ -14,7 +14,7 @@ const baseConfig = {
1414
...Object.keys(packageJson.dependencies),
1515
...Object.keys(packageJson.peerDependencies),
1616
/^lodash\/.*/,
17-
'vuetify/lib',
17+
'vuetify/components',
1818
'@mdi/font',
1919
/^dayjs\/.*/,
2020
],
@@ -33,8 +33,8 @@ const buildFormats = [
3333
resolve({
3434
extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
3535
}),
36-
styles({
37-
mode: ['extract'],
36+
css({
37+
output: `${packageJson.module.split('/')[1].split('.')[0]}.esm.css`,
3838
}),
3939
vue({
4040
css: false,
@@ -70,8 +70,8 @@ const buildFormats = [
7070
resolve({
7171
extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
7272
}),
73-
styles({
74-
mode: ['extract'],
73+
css({
74+
output: `${packageJson.module.split('/')[1].split('.')[0]}.cjs.css`,
7575
}),
7676
vue({
7777
css: false,
@@ -95,6 +95,7 @@ const buildFormats = [
9595
babelHelpers: 'bundled',
9696
}),
9797
cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx', 'vue'] }),
98+
css(),
9899
],
99100
},
100101
];

packages/vue-vuetify/shims-vuetify.d.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

packages/vue-vuetify/src/additional/LabelRenderer.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import {
2121
rendererProps,
2222
RendererProps,
2323
useJsonFormsLabel,
24-
} from '@jsonforms/vue2';
25-
import { VLabel } from 'vuetify/lib';
24+
} from '@jsonforms/vue';
25+
import { VLabel } from 'vuetify/components';
2626
import { useVuetifyLabel } from '../util';
2727
2828
const labelRenderer = defineComponent({

packages/vue-vuetify/src/additional/ListWithDetailRenderer.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ import {
210210
rendererProps,
211211
RendererProps,
212212
useJsonFormsArrayControl,
213-
} from '@jsonforms/vue2';
213+
} from '@jsonforms/vue';
214214
import { useVuetifyArrayControl } from '../util';
215215
import {
216216
VList,
@@ -232,10 +232,10 @@ import {
232232
VSpacer,
233233
VExpansionPanels,
234234
VExpansionPanel,
235-
VExpansionPanelHeader,
236-
VExpansionPanelContent,
235+
VExpansionPanelTitle,
236+
VExpansionPanelText,
237237
VVirtualScroll,
238-
} from 'vuetify/lib';
238+
} from 'vuetify/components';
239239
import { ValidationIcon, ValidationBadge } from '../controls/components/index';
240240
import { ErrorObject } from 'ajv';
241241
@@ -261,8 +261,8 @@ const controlRenderer = defineComponent({
261261
VSpacer,
262262
VExpansionPanels,
263263
VExpansionPanel,
264-
VExpansionPanelHeader,
265-
VExpansionPanelContent,
264+
VExpansionPanelTitle,
265+
VExpansionPanelText,
266266
VContainer,
267267
VVirtualScroll,
268268
ValidationIcon,
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
export { default as LabelRenderer } from './LabelRenderer.vue';
2-
export { default as ListWithDetailRenderer } from './ListWithDetailRenderer.vue';
2+
// export { default as ListWithDetailRenderer } from './ListWithDetailRenderer.vue';
33

44
import { entry as labelRendererEntry } from './LabelRenderer.vue';
5-
import { entry as listWithDetailRendererEntry } from './ListWithDetailRenderer.vue';
5+
// import { entry as listWithDetailRendererEntry } from './ListWithDetailRenderer.vue';
66

77
export const additionalRenderers = [
88
labelRendererEntry,
9-
listWithDetailRendererEntry,
9+
// listWithDetailRendererEntry,
1010
];

packages/vue-vuetify/src/complex/AllOfRenderer.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import {
4848
rendererProps,
4949
RendererProps,
5050
useJsonFormsAllOfControl,
51-
} from '@jsonforms/vue2';
51+
} from '@jsonforms/vue';
5252
import { defineComponent } from 'vue';
5353
import { useVuetifyControl } from '../util';
5454
import { CombinatorProperties } from './components';

packages/vue-vuetify/src/complex/AnyOfRenderer.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
</v-tab>
1616
</v-tabs>
1717

18-
<v-tabs-items v-model="selectedIndex">
19-
<v-tab-item
18+
<v-window v-model="selectedIndex">
19+
<v-window-item
2020
v-for="(anyOfRenderInfo, anyOfIndex) in anyOfRenderInfos"
2121
:key="`${control.path}-${anyOfIndex}`"
2222
>
@@ -29,8 +29,8 @@
2929
:cells="control.cells"
3030
:enabled="control.enabled"
3131
/>
32-
</v-tab-item>
33-
</v-tabs-items>
32+
</v-window-item>
33+
</v-window>
3434
</div>
3535
</template>
3636

@@ -48,8 +48,8 @@ import {
4848
rendererProps,
4949
RendererProps,
5050
useJsonFormsAnyOfControl,
51-
} from '@jsonforms/vue2';
52-
import { VTabs, VTab, VTabsItems, VTabItem } from 'vuetify/lib';
51+
} from '@jsonforms/vue';
52+
import { VTabs, VTab, VWindow, VWindowItem } from 'vuetify/components';
5353
import { defineComponent, ref } from 'vue';
5454
import { useVuetifyControl } from '../util';
5555
import { CombinatorProperties } from './components';
@@ -61,8 +61,8 @@ const controlRenderer = defineComponent({
6161
CombinatorProperties,
6262
VTabs,
6363
VTab,
64-
VTabsItems,
65-
VTabItem,
64+
VWindow,
65+
VWindowItem,
6666
},
6767
props: {
6868
...rendererProps<ControlElement>(),

packages/vue-vuetify/src/complex/ArrayControlRenderer.vue

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<v-card-text>
4141
<v-container justify-space-around align-content-center>
4242
<v-row justify="center">
43-
<v-simple-table class="array-container flex">
43+
<v-table class="array-container flex">
4444
<thead v-if="control.schema.type === 'object'">
4545
<tr>
4646
<th
@@ -158,7 +158,7 @@
158158
</td>
159159
</tr>
160160
</tbody>
161-
</v-simple-table>
161+
</v-table>
162162
</v-row>
163163
</v-container>
164164
<v-container v-if="dataLength === 0" :class="styles.arrayList.noData">
@@ -189,7 +189,7 @@ import {
189189
rendererProps,
190190
useJsonFormsArrayControl,
191191
RendererProps,
192-
} from '@jsonforms/vue2';
192+
} from '@jsonforms/vue';
193193
import { useVuetifyArrayControl } from '../util';
194194
import {
195195
VCard,
@@ -205,8 +205,8 @@ import {
205205
VBtn,
206206
VAvatar,
207207
VSpacer,
208-
VSimpleTable,
209-
} from 'vuetify/lib';
208+
VTable,
209+
} from 'vuetify/components';
210210
import { ValidationIcon, ValidationBadge } from '../controls/components/index';
211211
212212
const controlRenderer = defineComponent({
@@ -229,7 +229,7 @@ const controlRenderer = defineComponent({
229229
VContainer,
230230
ValidationIcon,
231231
ValidationBadge,
232-
VSimpleTable,
232+
VTable,
233233
},
234234
props: {
235235
...rendererProps<ControlElement>(),
@@ -305,21 +305,21 @@ export const entry: JsonFormsRendererRegistryEntry = {
305305
</script>
306306

307307
<style scoped>
308-
.fixed-cell {
308+
/* .fixed-cell {
309309
width: 150px;
310310
height: 50px;
311311
padding-left: 0 !important;
312312
padding-right: 0 !important;
313313
text-align: center;
314-
}
314+
} */
315315
316-
.fixed-cell-small {
316+
/* .fixed-cell-small {
317317
width: 50px;
318318
height: 50px;
319319
padding-left: 0 !important;
320320
padding-right: 0 !important;
321321
text-align: center;
322-
}
322+
} */
323323
324324
.array-container tbody tr td {
325325
border-bottom: none !important;

0 commit comments

Comments
 (0)