UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

78 lines (70 loc) 1.94 kB
import React, {Component} from 'react' import classNames from 'classnames/bind' import Field from 'components/field' import {show_popover, dismiss_popover} from '../actions/display' import store from '../common/store' import auto_bind from 'common/auto_bind' import {color} from '../common/constants' const cx = classNames.bind(require('../styles/field.scss')) class PopoverField extends Component { constructor(props) { super(props) auto_bind(this) } show_popover() { const {popover_component, popover_fill_screen, name} = this.props store.dispatch(show_popover( popover_component, this.get_popover_props(), name, popover_fill_screen, )) } get_popover_props() { const {on_save, ...props} = this.props.popover_props return { ...props, on_save(...args) { store.dispatch(dismiss_popover()) on_save(...args) }, } } render() { const {editable, value, placeholder} = this.props return ( <Field {...this.props} category="popover" className={cx({'field_editable': editable})} > <div key={'display'} className={cx('field__display', {'field__display_empty': value.length == 0})} onClick={editable ? this.show_popover : null} > <div className={cx('field__label', {'field__label_filled': value})}> {value.length == 0 ? ( placeholder || <span>&hellip;</span> ) : value} {value.length > 85 ? ( <div className={cx('field__comment-ellipsis')}>&hellip;</div> ) : null} </div> </div> </Field> ) } } PopoverField.defaultProps = { name: "", show_label: true, display_only: false, ellipsis: false, editable: true, value: "", popover_component: null, popover_props: {}, placeholder: "", } export default PopoverField