UIPredicateCoreReact.js

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