simplytest-8.x-4.x-dev/themes/simplytest_theme/react/src/DrupalVersionSelector.js

themes/simplytest_theme/react/src/DrupalVersionSelector.js
import React from 'react';
import {VERSIONS_ENDPOINT} from "./config/const";
import Parser from 'html-react-parser';

class DrupalVersionSelector extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      versions: {},
      value: '',
    };
  }

  componentDidUpdate(prevProps) {
    if (this.props.enabled && prevProps.enabled !== this.props.enabled) {
      // Reset value if project is updated.
      this.props.updateState({ [this.props.name]: null });
      this.getDrupalVersions(this.props.projectMachineName);
    }
  }

  getDrupalVersions(projectMachineName) {
    let url = VERSIONS_ENDPOINT;
    fetch(url.replace('{project}', projectMachineName), {
      //mode: 'no-cors'
    })
      .then(response => response.text())
      .then((response) => {
        this.setState({ versions: JSON.parse(response) });
      }).catch((err) => {
      console.log('fetch', err)
    });
  }

  updateValue = (event) => {
    var value = (event.target.value !== '_none') ? event.target.value : null;
    this.setState({ value: value });
    this.props.updateState({ [this.props.name]: value });
  }

  render() {
    let versions = this.state.versions;
    let version_list = Object.keys(versions).map((key) => {
      let drupal_version = '<option disabled="true">' + key + '</option>';
      let module_versions = Object.keys(versions[key]).map((version) => {
        return '<option value="' + version + '">' + version + '</option>';
      });
      return drupal_version + module_versions.join('');
    });
    return (
      <select className={!this.props.enabled ? 'hidden' : 'visible'} onChange={this.updateValue} value={this.state.value}>
        <option value="_none">Select a Version</option>
        {Parser(version_list.join(''))}
      </select>
    );
  }
}

export default DrupalVersionSelector;

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc