Sha256: 9849d572f3589c44f777f73bebe7d1dea949cb8ac70c7a6ee8f8828dfdbd77b5

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

import React from 'react';
import PropTypes from 'prop-types';
import { observer } from 'mobx-react';
import Box from 'grommet/components/Box';
import Screens from '../screens';
import ScreenInstances from '../screens/instance';

const ScreenView = observer((props) => {
    const { screen: Screen, ...rest } = props;
    return (
        <Screen.component {...rest} screen={Screen} />
    );
});
ScreenView.displayName = 'ScreenView';

@observer
export default class Screen extends React.Component {

    static propTypes = {
        match: PropTypes.shape({
            params: PropTypes.shape({
                screenId: PropTypes.string,
            }),
        }).isRequired,
    }

    componentDidMount() {
        const { screenId } = this.props.match.params;
        if (screenId) {
            const definition = Screens.all.get(screenId);
            if (definition) { definition.display(); }
        }
    }

    render() {
        return (
            <Box
                full
                className="screens-wrapper"
                justify="start"
                align="stretch"
                flex="grow"
            >
                {ScreenInstances.displaying.map(s =>
                    <ScreenView key={s.id} {...this.props.match.params} screen={s} />)}
            </Box>

        );
    }
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hippo-fw-0.9.5 client/hippo/workspace/screen.jsx
hippo-fw-0.9.4 client/hippo/workspace/screen.jsx