@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
87 lines • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const form_query_data_1 = require("./form_query_data");
const common_1 = require("./common");
const schema = {
type: 'object',
properties: {
country: {
type: 'string'
},
selectedCountry: {
type: 'string'
}
}
};
const options = [{ title: 'Australia', value: 'AUS' }, { title: 'Slovakia', value: 'SVK' }];
const controlledOptions = [
{ titles: ['Australia', 'Sydney'], value: 'SYD' },
{ titles: ['Australia', 'Melbourne'], value: 'SYD' },
{ titles: ['New Zealand', 'Christchurch'], title: 'Kiwis', value: 'SYD' }
];
const formDefinition = form_query_data_1.create.stack({
elements: [
form_query_data_1.create.formElement({
props: {
search: 'search',
searchName: 'findCountry',
label: 'Country',
value: { source: 'country' }
},
control: 'Search'
}),
form_query_data_1.create.formElement({
props: {
search: 'search',
searchName: 'Name',
label: 'Country',
value: { source: 'country' }
},
control: 'Search'
}),
form_query_data_1.create.formElement({
props: {
renderTemplate: `<table><tr><td width="100">{0}<!--country--></td><td>{1}<!--city--></td></tr></table>`,
search: 'findCountryWithControl',
label: 'Country With Control',
value: { source: 'country' },
searchName: 'Name'
},
control: 'Search'
})
]
});
const formData = { country: 'AUS' };
describe('Search', function () {
return {
component: common_1.prepareComponent(formDefinition, schema, formData, {
addEditor: true,
handlers: {
search: ({ args: { lookup, value, searchByValue } }) => {
if (lookup === 'findCountry') {
return new Promise(resolve => {
setTimeout(() => {
resolve(options.filter(o => searchByValue ? o.value === value : o.title.indexOf(value) >= 1));
}, 100);
});
}
else {
return new Promise(resolve => {
setTimeout(() => {
resolve(controlledOptions.filter(o => searchByValue ? o.value === value : o.titles[0].indexOf(value) >= 1));
}, 100);
});
}
},
findCountryWithControl: () => {
return new Promise(resolve => {
setTimeout(() => {
resolve(controlledOptions);
}, 100);
});
}
}
})
};
});
//# sourceMappingURL=search_view.test.js.map