Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

56 Zeilen
1.6 KiB

  1. import {createElement} from "../../_global/scripts/helpers";
  2. import {createLabel} from "../../atoms/label/LabelComponent";
  3. import {createInputCheckboxRadio} from "../../atoms/input-checkbox-radio/InputCheckboxRadioComponent";
  4. import {createInputText} from "../../atoms/input-text/InputTextComponent";
  5. import {createInputSelect} from "../../atoms/input-select/InputSelectComponent";
  6. import {InputSelectData} from "../../atoms/input-select/InputSelectData";
  7. export const createFormElement = ({
  8. wrapperClasses = 'form-element',
  9. name = 'name',
  10. id = null,
  11. inputType = 'text',
  12. isRequired = false,
  13. placeholder = '',
  14. label = 'Benutzername',
  15. selectOptions = [],
  16. }) => {
  17. const wrapper = createElement('div', wrapperClasses.split(' '));
  18. if (!id || id.length === 0) {
  19. id = name;
  20. }
  21. if (inputType === 'checkbox' || inputType === 'radio') {
  22. wrapper.appendChild(createInputCheckboxRadio({
  23. type: inputType,
  24. isRequired: isRequired,
  25. name: name,
  26. id: id,
  27. }));
  28. }
  29. wrapper.appendChild(createLabel({
  30. forAttribute: id,
  31. isRequired: isRequired,
  32. text: label,
  33. }));
  34. if (inputType === 'select') {
  35. wrapper.appendChild(createInputSelect({
  36. placeholder: placeholder,
  37. isRequired: isRequired,
  38. name: name,
  39. id: id,
  40. options: selectOptions.length > 0 ? selectOptions : InputSelectData,
  41. }));
  42. }
  43. if (['checkbox', 'radio', 'select'].indexOf(inputType) === -1) {
  44. wrapper.appendChild(createInputText({
  45. placeholder: placeholder,
  46. isRequired: isRequired,
  47. name: name,
  48. id: id,
  49. type: inputType,
  50. }));
  51. }
  52. return wrapper;
  53. }