Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"json-refs": "^3.0.15",
"lodash": "^4.17.15",
"monaco-editor": "^0.49.0",
"ractive": "^1.4.4",
"splitpanes": "^3.1.5",
"vue": "^3.5.0",
"vuetify": "^3.11.0"
Expand Down
10 changes: 5 additions & 5 deletions packages/example/src/components/ExampleAppBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const { smAndUp } = useDisplay();
<v-toolbar-title>
<v-container fill-height fluid class="py-0 pr-0"
><v-row align="center" justify="center">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<JsonFormsLogo
@click="appStore.exampleName = ''"
Expand All @@ -41,7 +41,7 @@ const { smAndUp } = useDisplay();
<v-container fill-height fluid justify-end class="pa-0"
><v-row align="center" no-gutters class="fill-height">
<v-col class="d-flex justify-center align-center" v-if="smAndUp">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-btn-toggle
v-bind="props"
Expand All @@ -67,7 +67,7 @@ const { smAndUp } = useDisplay();
</v-tooltip>
</v-col>
<v-col class="d-flex justify-center align-center" v-if="smAndUp">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-btn-toggle
v-bind="props"
Expand Down Expand Up @@ -102,7 +102,7 @@ const { smAndUp } = useDisplay();
v-if="smAndUp"
></v-divider>
<v-col class="d-flex justify-center align-center">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-btn
icon
Expand All @@ -124,7 +124,7 @@ const { smAndUp } = useDisplay();
<theme-switcher></theme-switcher>
</v-col>
<v-col class="d-flex justify-center align-center">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-btn
icon
Expand Down
57 changes: 48 additions & 9 deletions packages/example/src/components/ExampleSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ const darkModeValue = computed({
<v-row><v-col>Options</v-col></v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.hideRequiredAsterisk"
Expand All @@ -292,7 +292,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.showUnfocusedDescription"
Expand All @@ -306,7 +306,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.restrict"
Expand All @@ -321,7 +321,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.readonly"
Expand All @@ -335,7 +335,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.collapseNewItems"
Expand All @@ -349,7 +349,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.hideArraySummaryValidation"
Expand All @@ -363,7 +363,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.initCollapsed"
Expand All @@ -377,7 +377,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="appStore.jsonforms.config.hideAvatar"
Expand All @@ -391,7 +391,7 @@ const darkModeValue = computed({
</v-row>
<v-row>
<v-col>
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="
Expand All @@ -405,6 +405,45 @@ const darkModeValue = computed({
</v-tooltip>
</v-col>
</v-row>
<v-row>
<v-col>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-combobox
v-model="
appStore.jsonforms.config.filterErrorKeywordsBeforeTouch
"
label="Filter Error Keywords Before Touch"
placeholder="e.g., required, minLength, pattern"
chips
closable-chips
multiple
clearable
v-bind="props"
></v-combobox>
</template>
Hide specific AJV error keywords until the control is touched.
Requires "Enable Filter Errors Before Touch".
</v-tooltip>
</v-col>
</v-row>
<v-row>
<v-col>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-switch
v-model="
appStore.jsonforms.config.allowAdditionalPropertiesIfMissing
"
label="Allow Additional Properties By Default"
v-bind="props"
></v-switch>
</template>
Allow adding additional properties when the schema does not specify
explicitly the addtionalProperties
</v-tooltip>
</v-col>
</v-row>
</v-container>

<v-divider />
Expand Down
2 changes: 1 addition & 1 deletion packages/example/src/components/ThemeSwitcher.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function switchTheme(themeName: string) {
<template>
<v-menu offset-y>
<template v-slot:activator="{ props: menuProps }">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props: tooltipProps }">
<v-btn
icon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,9 @@
"template": {
"type": "string"
},
"lang": {
"type": "string"
},
"elements": {
"$ref": "#/definitions/elements"
},
Expand Down
1 change: 1 addition & 0 deletions packages/example/src/examples/button/uischema.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
{
"type": "TemplateLayout",
"template": "<v-container class='pa-0 ma-0'><v-btn-toggle density='compact' v-tooltip=\"context.uidata.alert ? 'Hide Alert' : 'Show Alert'\" v-model='context.uidata.alert'><v-btn :value='true' :icon='context.uidata.alert ? \"mdi-message-alert\" : \"mdi-message-outline\"'></v-btn></v-btn-toggle><slot name='button'></slot></v-container>",
"lang": "vue",
"elements": [
{
"type": "Button",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<array-layout-renderer v-bind="$props">
<template v-slot:toolbar-elements="actionsProps">
<v-tooltip bottom>
<v-tooltip location="bottom">
<template v-slot:activator="{ props }">
<v-btn
color="primary"
Expand Down
4 changes: 4 additions & 0 deletions packages/example/src/examples/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { input as anyOfSimple } from './anyOf-simple';
import { input as anyOfWithProps } from './anyOf-with-props';
import { input as array } from './array';
import { input as arrayRestrict } from './array-restrict';
import { input as arrayType } from './array-type';
import { input as arrayWithReorder } from './array-with-reorder';
import { input as basic } from './basic';
import { input as basicTypes } from './basic-types';
Expand Down Expand Up @@ -64,6 +65,7 @@ import { input as templateSlot } from './template-slot';
import { input as time } from './time';
import { input as verticalLayout } from './vertical-layout';
import { input as verticalSplitLayout } from './vertical-split-layout';
import { input as vueTemplateLayout } from './vue-template-layout';

export * from './register';

Expand All @@ -77,6 +79,7 @@ export {
anyOfWithProps,
array,
arrayRestrict,
arrayType,
arrayWithReorder,
basic,
basicTypes,
Expand Down Expand Up @@ -134,4 +137,5 @@ export {
time,
verticalLayout,
verticalSplitLayout,
vueTemplateLayout,
};
12 changes: 10 additions & 2 deletions packages/example/src/examples/job/uischema.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
{
"type": "TemplateLayout",
"template": "<v-card class=\"main-form\" flat><slot name=\"toolbar\"></slot><v-container style=\"pa-0\" fluid><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot v-if=\"element.name != 'toolbar'\" :name=\"element.name\"></slot></v-col></v-row></v-container></v-card>",
"lang": "vue",
"elements": [
{
"type": "TemplateLayout",
"template": "<v-toolbar><v-toolbar-title>{{translate('Job Application', 'Job Application')}}</v-toolbar-title><v-toolbar-items class='d-flex align-center'><div v-for=\"element in elements\" :key=\"element.name\"><slot :name=\"element.name\"></slot></div></v-toolbar-items></v-toolbar>",
"lang": "vue",
"name": "toolbar",
"elements": [
{
"type": "TemplateLayout",
"template": "<v-select variant='plain' density='compact' hide-details='true' :model-value='context.locale' @update:modelValue='(value) => context.fireActionEvent(\"changeLang\", {\"lang\": value})' :items='[{\"label\": context.translate(\"static-text.English\", \"English\"), \"value\": \"en\"}, {\"label\": context.translate(\"static-text.Bulgarian\", \"Bulgarian\"), \"value\": \"bg\"}]' item-title='label' item-value='value'></v-select>"
"template": "<v-select variant='plain' density='compact' hide-details='true' :model-value='context.locale' @update:modelValue='(value) => context.fireActionEvent(\"changeLang\", {\"lang\": value})' :items='[{\"label\": context.translate(\"static-text.English\", \"English\"), \"value\": \"en\"}, {\"label\": context.translate(\"static-text.Bulgarian\", \"Bulgarian\"), \"value\": \"bg\"}]' item-title='label' item-value='value'></v-select>",
"lang": "vue"
},
{
"type": "TemplateLayout",
"template": "<v-btn icon @click='() => context.fireActionEvent(\"toggleDarkMode\")'><v-icon>{{ context.vuetify.dark ? 'mdi-weather-sunny' : 'mdi-weather-night' }}</v-icon></v-btn>"
"template": "<v-btn icon @click='() => context.fireActionEvent(\"toggleDarkMode\")'><v-icon>{{ context.vuetify.dark ? 'mdi-weather-sunny' : 'mdi-weather-night' }}</v-icon></v-btn>",
"lang": "vue"
}
]
},
Expand All @@ -27,6 +31,7 @@
{
"type": "TemplateLayout",
"template": "<v-container style=\"pa-0\"><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"lang": "vue",
"elements": [
{
"type": "Template",
Expand All @@ -43,6 +48,7 @@
{
"type": "TemplateLayout",
"template": "<v-container style=\"pa-0\"><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"lang": "vue",
"elements": [
{
"type": "Template",
Expand All @@ -59,6 +65,7 @@
{
"type": "TemplateLayout",
"template": "<v-container style=\"pa-0\"><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"lang": "vue",
"elements": [
{
"type": "Control",
Expand All @@ -75,6 +82,7 @@
{
"type": "TemplateLayout",
"template": "<v-container style=\"pa-0\"><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"lang": "vue",
"elements": [
{
"type": "ListWithDetail",
Expand Down
3 changes: 3 additions & 0 deletions packages/example/src/examples/job/uischemas.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"tester": "(jsonSchema, schemaPath, path) => { return NOT_APPLICABLE; }",
"uischema": {
"type": "TemplateLayout",
"lang": "vue",
"name": "applicant",
"template": "<v-container style=\"pa-0\"><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"elements": [
Expand All @@ -12,6 +13,7 @@
{
"type": "TemplateLayout",
"template": "<v-container class='align-stretch'><v-row><v-col><v-img :src='data.applicant.profilePicture' v-if='data.applicant && data.applicant.profilePicture'></v-img></v-col></v-row><v-row class='mt-auto'><v-col><slot name='upload'></slot></v-col></v-row></v-container>",
"lang": "vue",
"elements": [
{
"type": "Control",
Expand Down Expand Up @@ -154,6 +156,7 @@
"uischema": {
"type": "TemplateLayout",
"name": "jobDetails",
"lang": "vue",
"template": "<v-container><v-row v-for=\"element in elements\" :key=\"element.name\"><v-col><slot :name=\"element.name\"></slot></v-col></v-row></v-container>",
"elements": [
{
Expand Down
Loading