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 { PredicateCore } from 'ui-predicate-core';
  8. const merge = require('lodash/merge');
  9. import Vue from 'vue';
  10. const defaults = {
  11. options: {
  12. /**
  13. * UIPredicate Vue Adapter own default argument component
  14. * @param {Object} columns specified columns
  15. * @param {Object} [options=PredicateCore.defaults.options] PredicateCore available options
  16. * @return {Vue.component} the default Vue Component to use as argument specifier
  17. * @see core.defaults.getDefaultArgumentComponent
  18. * @memberof vue.defaults
  19. */
  20. getDefaultArgumentComponent(columns, options) {
  21. return Vue.component('default-argument-component', {
  22. methods: {
  23. _onChange({ target: { value: newValue } }) {
  24. this.$emit('change', newValue);
  25. },
  26. },
  27. props: {
  28. value: {
  29. type: null,
  30. required: true,
  31. },
  32. },
  33. template:
  34. '<div><input type="text" @change="_onChange" :value="value"></div>',
  35. });
  36. },
  37. },
  38. };
  39. /**
  40. * UIPredicateCore adapter for VueJS
  41. * @param {?dataclasses.CompoundPredicate} [data=PredicateCore.defaults.options.getDefaultData] data
  42. * @param {Object} [columns=PredicateCore.defaults.columns] columns
  43. * @param {Object} [options=PredicateCore.defaults.options] options
  44. * @return {Promise<core.PredicateCoreAPI>} resolved promise yield a PredicateCoreAPI
  45. * @memberof vue
  46. */
  47. function UIPredicateCoreVue({ data, columns, options } = {}) {
  48. const _options = merge(defaults.options, options);
  49. return PredicateCore({
  50. data,
  51. columns,
  52. options: _options,
  53. });
  54. }
  55. UIPredicateCoreVue.defaults = defaults;
  56. module.exports = { UIPredicateCoreVue };