Skip to content
Snippets Groups Projects
Select Git revision
  • 6b84e92b3d040684c808d215e434780728af2595
  • mui5-annotation-on-video-stable default
  • get_setter_canvasSizeInformations
  • fix-error-div-into-p
  • annotation-on-video-v2
  • detached
  • annotation-on-video-r17
  • mui5
  • mui5-react-18
  • jacob-test
  • annotation-on-video protected
  • master
  • test-antoinev1
  • 20-fetch-thumbnail-on-annotation
  • add-research-field
  • Save
  • add-plugin
  • 14-wip-no-seek-to
  • 14-bug-on-video-time-control
  • 9_wip_videotests
  • _upgrade_material_ui
  • latest-tetras-16
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v3.0.0-rc.7
  • v3.0.0-rc.6
  • v3.0.0-rc.5
  • v3.0.0-rc.4
  • v3.0.0-rc.3
  • v3.0.0-rc.2
  • v3.0.0-rc.1
  • v3.0.0-beta.10
  • v3.0.0-beta.9
  • v3.0.0-beta.8
  • v3.0.0-beta.7
  • v3.0.0-beta.6
  • v3.0.0-beta.5
  • v3.0.0-beta.3
41 results

AttributionPanel.js

Blame
  • user avatar
    Chris Beer authored
    80bc58f3
    History
    AttributionPanel.js 2.54 KiB
    import React, { Component } from 'react';
    import PropTypes from 'prop-types';
    import Typography from '@material-ui/core/Typography';
    import Link from '@material-ui/core/Link';
    import Skeleton from '@material-ui/lab/Skeleton';
    import Img from 'react-image';
    import CompanionWindow from '../containers/CompanionWindow';
    import { LabelValueMetadata } from './LabelValueMetadata';
    import ns from '../config/css-ns';
    import { PluginHook } from './PluginHook';
    
    /**
     * WindowSideBarInfoPanel
     */
    export class AttributionPanel extends Component {
      /**
       * render
       * @return
       */
      render() {
        const {
          manifestLogo,
          requiredStatement,
          rights,
          windowId,
          id,
          classes,
          t,
        } = this.props;
    
        return (
          <CompanionWindow
            title={t('attributionTitle')}
            paperClassName={ns('attribution-panel')}
            windowId={windowId}
            id={id}
          >
            <div className={classes.section}>
              { requiredStatement && (
                <LabelValueMetadata labelValuePairs={requiredStatement} defaultLabel={t('attribution')} />
              )}
              {
                rights && rights.length > 0 && (
                  <>
                    <Typography variant="subtitle2" component="dt">{t('rights')}</Typography>
                    { rights.map(v => (
                      <Typography variant="body1" component="dd">
                        <Link target="_blank" rel="noopener noreferrer" href={v}>
                          {v}
                        </Link>
                      </Typography>
                    )) }
                  </>
                )
              }
            </div>
    
            { manifestLogo && (
              <div className={classes.section}>
                <Img
                  src={[manifestLogo]}
                  alt=""
                  role="presentation"
                  className={classes.logo}
                  unloader={
                    <Skeleton className={classes.placeholder} variant="rect" height={60} width={60} />
                  }
                />
              </div>
            )}
    
            <PluginHook {...this.props} />
          </CompanionWindow>
        );
      }
    }
    
    AttributionPanel.propTypes = {
      classes: PropTypes.objectOf(PropTypes.string),
      id: PropTypes.string.isRequired,
      manifestLogo: PropTypes.string,
      requiredStatement: PropTypes.arrayOf(PropTypes.shape({
        label: PropTypes.string,
        value: PropTypes.string,
      })),
      rights: PropTypes.arrayOf(PropTypes.string),
      t: PropTypes.func,
      windowId: PropTypes.string.isRequired,
    };
    
    AttributionPanel.defaultProps = {
      classes: {},
      manifestLogo: null,
      requiredStatement: null,
      rights: null,
      t: key => key,
    };