UIPredicateCoreVue.js

  1. /* eslint no-unused-vars: "off"*/
  2. /**
  3. * VueJS adapter for ui-predicate-core
  4. * @namespace vue
  5. * @since 1.0.0
  6. */
  7. import Vue from 'vue';
  8. import assign from 'lodash/assign';
  9. import { PredicateCore, UITypes } from 'ui-predicate-core';
  10. import DEFAULT_COMPONENTS from './default-components';
  11. const defaults = {
  12. options: {
  13. /**
  14. * UIPredicate Vue Adapter own default argument component
  15. * @param {Object} [columns=PredicateCore.defaults.columns] columns
  16. * @param {Object} [options=PredicateCore.defaults.options] options
  17. * @param {Object} [ui=PredicateCore.defaults.ui] ui
  18. * @return {Vue.component} the default Vue Component to use as argument specifier
  19. * @see core.defaults.getDefaultArgumentComponent
  20. * @memberof vue.defaults
  21. */
  22. getDefaultArgumentComponent(columns, options, ui) {
  23. /*
  24. "ui" arg. results from DEFAULT_COMPONENTS
  25. and :ui attribute passed to <ui-predicate>
  26. all merged in UIPredicateCoreVue()
  27. and passed to PredicateCore
  28. */
  29. return ui[UITypes.ARGUMENT_DEFAULT];
  30. },
  31. },
  32. };
  33. /**
  34. * UIPredicateCore adapter for VueJS
  35. * @param {?dataclasses.CompoundPredicate} [data=PredicateCore.defaults.options.getDefaultData] data
  36. * @param {Object} [columns=PredicateCore.defaults.columns] columns
  37. * @param {Object} [ui=PredicateCore.defaults.ui] ui
  38. * @param {Object} [options=PredicateCore.defaults.options] options
  39. * @return {Promise<core.PredicateCoreAPI>} resolved promise yield a PredicateCoreAPI
  40. * @memberof vue
  41. */
  42. function UIPredicateCoreVue({ data, columns, ui, options } = {}) {
  43. return PredicateCore({
  44. data,
  45. columns,
  46. ui: assign({}, DEFAULT_COMPONENTS, ui),
  47. options: assign({}, defaults.options, options),
  48. });
  49. }
  50. UIPredicateCoreVue.defaults = defaults;
  51. export { UIPredicateCoreVue };