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

Provide a more enhanced api to customize createGenerateClassName for implementations

parent 500164dd
No related branches found
No related tags found
No related merge requests found
...@@ -39,7 +39,9 @@ ...@@ -39,7 +39,9 @@
<script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script> <script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script>
<script type="text/javascript"> <script type="text/javascript">
var miradorInstance = Mirador.viewer({ var miradorInstance = Mirador.viewer({
classPrefix: 'one', createGenerateClassNameOptions: {
seed: 'one'
},
id: 'instanceOne', id: 'instanceOne',
windows: [{ windows: [{
manifestId: 'https://iiif.bodleian.ox.ac.uk/iiif/manifest/e800b13a-6699-49ae-9bc2-c9b8c35b7a25.json', manifestId: 'https://iiif.bodleian.ox.ac.uk/iiif/manifest/e800b13a-6699-49ae-9bc2-c9b8c35b7a25.json',
...@@ -49,14 +51,18 @@ ...@@ -49,14 +51,18 @@
} }
}); });
var miradorInstance = Mirador.viewer({ var miradorInstance = Mirador.viewer({
classPrefix: 'two', createGenerateClassNameOptions: {
seed: 'two'
},
id: 'instanceTwo', id: 'instanceTwo',
windows: [{ windows: [{
manifestId: 'https://candra.dhii.jp/iiif/blackjacky/b001/manifest.json', manifestId: 'https://candra.dhii.jp/iiif/blackjacky/b001/manifest.json',
}] }]
}); });
var miradorInstance = Mirador.viewer({ var miradorInstance = Mirador.viewer({
classPrefix: 'three', createGenerateClassNameOptions: {
seed: 'three'
},
id: 'instanceThree', id: 'instanceThree',
windows: [{ windows: [{
manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843', manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
......
...@@ -81,13 +81,12 @@ export class AppProviders extends Component { ...@@ -81,13 +81,12 @@ export class AppProviders extends Component {
/** */ /** */
render() { render() {
const { const {
children, classPrefix, isFullscreenEnabled, setWorkspaceFullscreen, theme, translations, children, createGenerateClassNameOptions, isFullscreenEnabled,
setWorkspaceFullscreen, theme, translations,
dndManager, dndManager,
} = this.props; } = this.props;
const generateClassName = createGenerateClassName({ const generateClassName = createGenerateClassName(createGenerateClassNameOptions);
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);
...@@ -121,7 +120,7 @@ export class AppProviders extends Component { ...@@ -121,7 +120,7 @@ export class AppProviders extends Component {
AppProviders.propTypes = { AppProviders.propTypes = {
children: PropTypes.node, children: PropTypes.node,
classPrefix: PropTypes.string, createGenerateClassNameOptions: PropTypes.object, // eslint-disable-line react/forbid-prop-types
dndManager: PropTypes.object, // eslint-disable-line react/forbid-prop-types dndManager: PropTypes.object, // eslint-disable-line react/forbid-prop-types
isFullscreenEnabled: PropTypes.bool, isFullscreenEnabled: PropTypes.bool,
language: PropTypes.string.isRequired, language: PropTypes.string.isRequired,
...@@ -132,7 +131,7 @@ AppProviders.propTypes = { ...@@ -132,7 +131,7 @@ AppProviders.propTypes = {
AppProviders.defaultProps = { AppProviders.defaultProps = {
children: null, children: null,
classPrefix: '', createGenerateClassNameOptions: {},
dndManager: undefined, dndManager: undefined,
isFullscreenEnabled: false, isFullscreenEnabled: false,
}; };
...@@ -4,7 +4,10 @@ import flatten from 'lodash/flatten'; ...@@ -4,7 +4,10 @@ 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 = classNames => flatten([classNames]).map( const ns = classNames => flatten([classNames]).map(
className => [settings.classPrefix, className].join('-') className => [
settings.createGenerateClassNameOptions.productionPrefix,
className,
].join('-')
).join(' '); ).join(' ');
export default ns; export default ns;
...@@ -234,7 +234,9 @@ export default { ...@@ -234,7 +234,9 @@ export default {
htmlSanitizationRuleSet: 'iiif', // See src/lib/htmlRules.js for acceptable values htmlSanitizationRuleSet: 'iiif', // See src/lib/htmlRules.js for acceptable values
filteredMotivations: ['oa:commenting', 'oa:tagging', 'sc:painting', 'commenting', 'tagging'], filteredMotivations: ['oa:commenting', 'oa:tagging', 'sc:painting', 'commenting', 'tagging'],
}, },
classPrefix: 'mirador', createGenerateClassNameOptions: { // Options passed directly to createGenerateClassName in Material-UI https://material-ui.com/styles/api/#creategenerateclassname-options-class-name-generator
productionPrefix: 'mirador',
},
requests: { requests: {
preprocessors: [ // Functions that receive HTTP requests and manipulate them (e.g. to add headers) preprocessors: [ // Functions that receive HTTP requests and manipulate them (e.g. to add headers)
// (url, options) => (url.match('info.json') && { ...options, myCustomThing: 'blah' }) // (url, options) => (url.match('info.json') && { ...options, myCustomThing: 'blah' })
......
...@@ -12,7 +12,7 @@ import { AppProviders } from '../components/AppProviders'; ...@@ -12,7 +12,7 @@ import { AppProviders } from '../components/AppProviders';
*/ */
const mapStateToProps = state => ( const mapStateToProps = state => (
{ {
classPrefix: getConfig(state).classPrefix, createGenerateClassNameOptions: getConfig(state).createGenerateClassNameOptions,
isFullscreenEnabled: getFullScreenEnabled(state), isFullscreenEnabled: getFullScreenEnabled(state),
language: getConfig(state).language, language: getConfig(state).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