Guest User

Untitled

a guest
Dec 15th, 2017
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. import React from 'react';
  2.  
  3. import editor from 'react-bootstrap-table/lib/Editor';
  4.  
  5. // Copied wholesale from react-bootstrap-table, modified where noted
  6. class CustomModalBody extends React.Component {
  7. getFieldValue() {
  8. const newRow = {};
  9. this.props.columns.forEach((column, i) => {
  10. let inputVal;
  11. if (column.autoValue) {
  12. // when you want same auto generate value and not allow edit, example ID field
  13. const time = new Date().getTime();
  14. inputVal = typeof column.autoValue === 'function' ?
  15. column.autoValue() :
  16. (`autovalue-${time}`);
  17. } else if (column.hiddenOnInsert || !column.field) {
  18. inputVal = '';
  19. } else {
  20. // CHANGE: Not using `refs` syntax, omitted the counter.
  21. // Add the counter back if there is risk of duplicate fields.
  22. const dom = this[column.field];
  23. inputVal = dom.value;
  24.  
  25. if (column.editable && column.editable.type === 'checkbox') {
  26. const values = inputVal.split(':');
  27. inputVal = dom.checked ? values[0] : values[1];
  28. } else if (column.customInsertEditor) {
  29. inputVal = inputVal || dom.getFieldValue();
  30. }
  31. }
  32. newRow[column.field] = inputVal;
  33. }, this);
  34. return newRow;
  35. }
  36.  
  37. render() {
  38. const { columns, validateState, ignoreEditable } = this.props;
  39. return (
  40. <div className='modal-body'>
  41. {
  42. columns.map((column, i) => {
  43. const {
  44. editable,
  45. format,
  46. field,
  47. name,
  48. autoValue,
  49. hiddenOnInsert,
  50. customInsertEditor
  51. } = column;
  52.  
  53. const attr = {
  54. // CHANGE: Use function ref instead.
  55. // If using field index above, apply here as well
  56. ref: (ref) => {
  57. this[field] = field === 'name' && ref && ref.instanceRef ? ref.instanceRef : ref;
  58. },
  59. placeholder: editable.placeholder ? editable.placeholder : name
  60. };
  61. let fieldElement;
  62. const defaultValue = editable.defaultValue || undefined;
  63. if (customInsertEditor) {
  64. const { getElement } = customInsertEditor;
  65. fieldElement = getElement(column, attr, 'form-control', ignoreEditable, defaultValue);
  66. }
  67.  
  68. // fieldElement = false, means to use default editor when enable custom editor
  69. // Becasuse some users want to have default editor based on some condition.
  70. if (!customInsertEditor || fieldElement === false) {
  71. fieldElement = editor(editable, attr, format, '', defaultValue, ignoreEditable);
  72. }
  73.  
  74. if (autoValue || hiddenOnInsert || !column.field) {
  75. // when you want same auto generate value
  76. // and not allow edit, for example ID field
  77. return null;
  78. }
  79. const error = validateState[field] ?
  80. (<span className='help-block bg-danger'>{ validateState[field] }</span>) :
  81. null;
  82. return (
  83. <div className='form-group' key={ field }>
  84. <label>{ name }</label>
  85. { fieldElement }
  86. { error }
  87. </div>
  88. );
  89. })
  90. }
  91. </div>
  92. );
  93. }
  94. }
  95.  
  96. export default CustomModalBody;
Add Comment
Please, Sign In to add comment