Skip to content

Instantly share code, notes, and snippets.

@darotar
darotar / LocalStorage.js
Created June 21, 2018 05:47
NoveltyLabel - компонент лейбла, отображаемого для пользователя рядом с новым функционалом в сервисе. Как только пользователь кликает по новому функционалу, либо переходит на нужную ссылку, информация сохраняется в localStorage и лейбл более не отображается
export default class LocalStorage {
static get(name) {
return localStorage[name] ? JSON.parse(localStorage[name]) : undefined;
}
static set(name, value) {
localStorage[name] = JSON.stringify(value);
}
static delete(name) {
@darotar
darotar / ElementsGroup.js
Created June 21, 2018 06:02
RadioGroup enterprise reusable component
import React from 'react';
import classnames from 'classnames/bind';
import PropTypes from 'prop-types';
import style from './style.less';
const cn = classnames.bind(style);
class ElementsGroup extends React.Component {
getStyle = (i) => {
@darotar
darotar / UserVoiceBubble.js
Created June 21, 2018 06:09
Bubble for user voting about new service design
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames/bind';
import FirmFlagService from './../../services/FirmFlagServiсe';
import style from './style..less';
const cn = classnames.bind(style);
class UserVoiceBubble extends Component {
constructor(props) {
@darotar
darotar / SuccessTableStore.js
Created June 21, 2018 06:18
Example of Mobx table operations store
import { observable, action } from 'mobx';
import OperationTablesService from '../services/OperationTablesService';
import storage from '../helpers/storage';
class SuccessTableStore {
filter = storage.get('filter');
pageCount = 20;
@observable operations = [];
@observable totalCount = 0;
@observable tableCount = 0;
@darotar
darotar / SearchInput.js
Created June 21, 2018 06:23
Example of searching input React Native component
import React, {Component} from 'react';
import SearchIcon from '../../icons/search-icon';
import {
SearchInputView,
IconContainer,
InputView,
StyledInput,
StyledText
} from './styles';
@darotar
darotar / email-phone-form.js
Created June 21, 2018 06:29
Examle of React Native multi-part registration form
import React, { Component } from 'react';
import { reduxForm, Field } from 'redux-form';
import PropTypes from 'prop-types';
import {Title, Input, Button} from '../../../elements';
import {
Description,
StyledTitle,
DescriptionWrapper,
Container
@darotar
darotar / App.js
Created June 21, 2018 06:33
Example of working with styled-css-grid library
import React, { PureComponent } from 'react';
import { Grid } from 'styled-css-grid';
import styled from 'styled-components';
import { theme } from 'utils';
import { Header, Content } from 'components';
const Container = styled.div`
padding: ${({ padding }) => padding ? `${padding}px` : '0'} 200px;
`;

FE Code Review Check-list

  • trackBy attribute for template loops

@darotar
darotar / ListAdapter.js
Created February 15, 2021 11:25
ListAdapter
/* The function takes some set of data (preferable structural types), and assuming some
* default expectations of output (in my case, fields to be 'text' and 'value - returns back adapter structure */
/* Used GOF Patterns - Adapter and Strategy */
export default function adaptToList(data = [], textField = '', valueField = '') {
if (!data.length) {
return [];
}
fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
let mut map: HashMap<i32, i32> = HashMap::new();
for (i, num) in nums.iter().enumerate() {
let complement: i32 = target - nums[i];
let i_i32 = i as i32;
if map.contains_key(&complement) {
let map_complement = *map.get(&complement).unwrap();