UIPredicateCoreVue.js

/* 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 };