delta-component
Version:
embeddable react component
131 lines (115 loc) • 4.19 kB
JavaScript
import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
// TODO: https://github.yandex-team.ru/lego/islands/pull/2304
import { decl } from 'islands/common.blocks/i-bem/i-bem.react.js';
import Bem from 'bem-react-core';
import ReactDOM from 'react-dom';
import $ from 'jquery';
import uniqid from 'uniqid';
import actions from '../../redux/actions';
import Header from 'b:header2';
import 'b:header2 e:logo m:size=m t:css';
import 'b:logo m:name=ys-ru-86x35|ys-en-87x35 t:css';
import Button from 'b:button2 m:theme=normal|action m:size=m';
import Select from 'b:select2 m:type=radio';
import { transportFabric } from '../../../modules/transport';
const logoName = process.env.BEM_LANG === 'ru' ? 'ys-ru-86x35' : 'ys-en-87x35';
const LANGUAGES = [
'python',
'c_cpp',
'golang',
'java',
'javascript',
'sql',
'csharp',
'kotlin',
'plain_text',
'ruby',
'rust',
'objectivec',
'swift',
'xml',
'json',
'jsx',
'css',
'http',
'yaml',
'scala',
'perl',
'php',
].sort();
export default decl({
block: 'head',
onCreateTableButtonClick: function() {
const id = uniqid();
const documentString = 'epad/page/' + id;
const transport = transportFabric('epad', `${window.location.protocol}//${global.location.host}`, documentString);
transport.createDocument(documentString, '').then(
document => {
console.log('create doc success ', document.toString());
location.href = '/page/' + documentString;
},
error => {
console.log('create doc error ', error)
}
);
},
onLangChange: function(value) {
this.props.setLang(value[0]);
},
content() {
console.log('content');
return (
<Header>
<Header.Main>
<Header.Logo name={logoName} size="m" url="//ya.ru" service="Delta"/>
<Header.Left>
{this.props.hasPlain ? <Select
{...{
theme: "normal",
type: "radio",
key: "сreate-grid",
size: "m",
val: this.props.lang,
items: LANGUAGES.map(function(lang) {
return {
val: lang,
text: lang
};
}),
onChange: this.onLangChange.bind(this)
}}
>
</Select> : ''}
</Header.Left>
<Header.Right>
Вы пользуетесь <a href="https://wiki.yandex-team.ru/delta/dev/early-version-about/" target="_blank">бета-версией</a>.
О некорректном поведении, пожалуйста, пишите на рассылку <a href="mailto:delta-dev@yandex-team.ru">tools@</a>.
<Button
{...{
theme: "action",
key: "сreate-grid",
size: "m",
onClick: this.onCreateTableButtonClick.bind(this)
}}
>Создать
</Button>
</Header.Right>
</Header.Main>
</Header>
);
}
}, head => {
const mapStateToProps = (state) => {
let hasPlain = state.plain !== null;
return {
lang: state.lang,
hasPlain: hasPlain
};
}
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({ ...actions }, dispatch);;
}
return connect(mapStateToProps, mapDispatchToProps)(head);
});