/* eslint no-unused-vars: "off"*/
/**
* VueJS adapter for ui-predicate-core
* @namespace vue
* @since 1.0.0
*/
import Vue from 'vue';
import assign from 'lodash/assign';
import { PredicateCore, UITypes } from 'ui-predicate-core';
import DEFAULT_COMPONENTS from './default-components';
const defaults = {
options: {
/**
* UIPredicate Vue Adapter own default argument component
* @param {Object} [columns=PredicateCore.defaults.columns] columns
* @param {Object} [options=PredicateCore.defaults.options] options
* @param {Object} [ui=PredicateCore.defaults.ui] ui
* @return {Vue.component} the default Vue Component to use as argument specifier
* @see core.defaults.getDefaultArgumentComponent
* @memberof vue.defaults
*/
getDefaultArgumentComponent(columns, options, ui) {
/*
"ui" arg. results from DEFAULT_COMPONENTS
and :ui attribute passed to <ui-predicate>
all merged in UIPredicateCoreVue()
and passed to PredicateCore
*/
return ui[UITypes.ARGUMENT_DEFAULT];
},
},
};
/**
* UIPredicateCore adapter for VueJS
* @param {?dataclasses.CompoundPredicate} [data=PredicateCore.defaults.options.getDefaultData] data
* @param {Object} [columns=PredicateCore.defaults.columns] columns
* @param {Object} [ui=PredicateCore.defaults.ui] ui
* @param {Object} [options=PredicateCore.defaults.options] options
* @return {Promise<core.PredicateCoreAPI>} resolved promise yield a PredicateCoreAPI
* @memberof vue
*/
function UIPredicateCoreVue({ data, columns, ui, options } = {}) {
return PredicateCore({
data,
columns,
ui: assign({}, DEFAULT_COMPONENTS, ui),
options: assign({}, defaults.options, options),
});
}
UIPredicateCoreVue.defaults = defaults;
export { UIPredicateCoreVue };