Skip to content
Snippets Groups Projects
Commit bc385413 authored by Jack Reed's avatar Jack Reed Committed by Chris Beer
Browse files

Adds the ability to define a custom jss prefix for better application...

Adds the ability to define a custom jss prefix for better application namespacing and removed css-ns dependency
parent c57bd8b3
No related branches found
No related tags found
No related merge requests found
import React, { Component, lazy, Suspense } from 'react'; import React, { Component, lazy, Suspense } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { import {
ThemeProvider, StylesProvider, createMuiTheme, jssPreset, ThemeProvider, StylesProvider, createMuiTheme, jssPreset, createGenerateClassName,
} from '@material-ui/core/styles'; } from '@material-ui/core/styles';
import Fullscreen from 'react-full-screen'; import Fullscreen from 'react-full-screen';
import { create } from 'jss'; import { create } from 'jss';
...@@ -52,9 +52,13 @@ export class App extends Component { ...@@ -52,9 +52,13 @@ export class App extends Component {
*/ */
render() { render() {
const { const {
isFullscreenEnabled, setWorkspaceFullscreen, theme, translations, classPrefix, isFullscreenEnabled, setWorkspaceFullscreen, theme, translations,
} = this.props; } = this.props;
const generateClassName = createGenerateClassName({
productionPrefix: classPrefix,
});
Object.keys(translations).forEach((lng) => { Object.keys(translations).forEach((lng) => {
this.i18n.addResourceBundle(lng, 'translation', translations[lng], true, true); this.i18n.addResourceBundle(lng, 'translation', translations[lng], true, true);
}); });
...@@ -69,7 +73,10 @@ export class App extends Component { ...@@ -69,7 +73,10 @@ export class App extends Component {
<ThemeProvider <ThemeProvider
theme={createMuiTheme(theme)} theme={createMuiTheme(theme)}
> >
<StylesProvider jss={create({ plugins: [...jssPreset().plugins, rtl()] })}> <StylesProvider
jss={create({ plugins: [...jssPreset().plugins, rtl()] })}
generateClassName={generateClassName}
>
<AuthenticationSender /> <AuthenticationSender />
<AccessTokenSender /> <AccessTokenSender />
<Suspense <Suspense
...@@ -87,6 +94,7 @@ export class App extends Component { ...@@ -87,6 +94,7 @@ export class App extends Component {
} }
App.propTypes = { App.propTypes = {
classPrefix: PropTypes.string,
isFullscreenEnabled: PropTypes.bool, isFullscreenEnabled: PropTypes.bool,
language: PropTypes.string.isRequired, language: PropTypes.string.isRequired,
setWorkspaceFullscreen: PropTypes.func.isRequired, setWorkspaceFullscreen: PropTypes.func.isRequired,
...@@ -96,5 +104,6 @@ App.propTypes = { ...@@ -96,5 +104,6 @@ App.propTypes = {
}; };
App.defaultProps = { App.defaultProps = {
classPrefix: '',
isFullscreenEnabled: false, isFullscreenEnabled: false,
}; };
import { createCssNs } from 'css-ns'; import settings from './settings'
import flatten from 'lodash/flatten';
/** /**
* export ns - sets up css namespacing for everything to be `mirador-` * export ns - sets up css namespacing for everything to be `mirador-`
*/ */
const ns = className => createCssNs({ const ns = classNames => flatten([classNames]).map(
namespace: 'mirador', className => [settings.classPrefix, className].join('-')
})(className); ).join(' ');
export default ns; export default ns;
...@@ -214,6 +214,7 @@ export default { ...@@ -214,6 +214,7 @@ export default {
annotations: { annotations: {
filteredMotivations: ['oa:commenting', 'sc:painting', 'commenting'], filteredMotivations: ['oa:commenting', 'sc:painting', 'commenting'],
}, },
classPrefix: 'mirador',
displayAllAnnotations: false, // Configure if annotations to be displayed on the canvas by default when fetched displayAllAnnotations: false, // Configure if annotations to be displayed on the canvas by default when fetched
resourceHeaders: {}, // Headers to send with IIIF Presentation API resource requests resourceHeaders: {}, // Headers to send with IIIF Presentation API resource requests
translations: { // Translations can be added to inject new languages or override existing labels translations: { // Translations can be added to inject new languages or override existing labels
......
...@@ -13,6 +13,7 @@ import { App } from '../components/App'; ...@@ -13,6 +13,7 @@ import { App } from '../components/App';
*/ */
const mapStateToProps = state => ( const mapStateToProps = state => (
{ {
classPrefix: state.config.classPrefix,
isFullscreenEnabled: state.workspace.isFullscreenEnabled, isFullscreenEnabled: state.workspace.isFullscreenEnabled,
language: state.config.language, language: state.config.language,
theme: getTheme(state), theme: getTheme(state),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment