Source: input/DrawControlOqt.js

  1. import React, { useMemo } from "react";
  2. import { DrawControlColorOqt, DrawControlResetOqt, DrawControlUndoOqt, processOptions } from "../..";
  3. /**
  4. * Panel de controles del componente DrawOqt, que se mostrara debajo de la pizarra
  5. *
  6. * @name Reactor.Components.Input.DrawControlOqt
  7. * @param {string} [colors = ""]
  8. * Lista de colores disponibles, separados por espacio, Ej.: "black red yellow blue green"
  9. * @param {BooleanString} [undo = "false"]
  10. * Determina si se permite utilizar undo
  11. * @param {BooleanString} [reset = "false"]
  12. * Determina si se permite utilizar un reseteo del lienzo
  13. * @param {JsonString?} div_options
  14. * Propiedades del div raiz
  15. * @param {BooleanString} [debug = "false"]
  16. * Determina si se enviaran a la consola datos de depuración
  17. * @param {HTMLElement?} children
  18. * Body del componente, si no se pasa cuerpo,
  19. * el componente genera un children a partir de las propiedades pasadas en colors, undo y reset
  20. * @class
  21. * @example
  22. <draw name="firma" options='{"brushColor": "blue"}'>
  23. <draw_control colors="#ffffff blue red black" undo="true" reset="true"></draw_control>
  24. </draw>
  25. */
  26. export const DrawControlOqt = ({colors = "", undo = "false", reset = "false", div_options, children}) => {
  27. const colorList = useMemo(() => colors.split(" "), [colors]);
  28. const options = useMemo(()=>{
  29. return processOptions(div_options);
  30. }, [div_options]);
  31. return (
  32. <>
  33. <div className="draw-control" {...options}>
  34. {(!children || children.length === 0) &&
  35. <>
  36. <div className="draw-control-color">
  37. {
  38. colorList.map(color => <DrawControlColorOqt color={color} div_options={{style: {backgroundColor: color}}}/>)
  39. }
  40. </div>
  41. {undo === "true" && <DrawControlUndoOqt div_options={{className: "draw-control-button"}}/>}
  42. {reset === "true" && <DrawControlResetOqt div_options={{className: "draw-control-button"}}/>}
  43. </>
  44. }
  45. {children}
  46. </div>
  47. </>
  48. )
  49. }