diff --git a/config.js b/config.js index 947e548..260ec0b 100644 --- a/config.js +++ b/config.js @@ -129,6 +129,7 @@ module.exports = { COLOR_BY_CATEGORY: false, COLOR_BY_ASSOCIATION: true, USE_ASSOCIATIONS: true, + USE_FULLSCREEN: true, USE_SOURCES: true, USE_SPOTLIGHTS: false, USE_SHAPES: false, diff --git a/package-lock.json b/package-lock.json index 85b6326..b3f72fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,6 +80,7 @@ "resolve": "1.18.1", "resolve-url-loader": "^3.1.2", "sass-loader": "10.2.1", + "screenfull": "^5.2.0", "semver": "7.3.2", "style-loader": "1.3.0", "supercluster": "^7.1.0", @@ -22138,6 +22139,17 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/scriptjs": { "version": "2.5.9", "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", @@ -43298,6 +43310,11 @@ "ajv-keywords": "^3.5.2" } }, + "screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==" + }, "scriptjs": { "version": "2.5.9", "resolved": "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz", diff --git a/package.json b/package.json index 4eba5e0..6495aae 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "resolve": "1.18.1", "resolve-url-loader": "^3.1.2", "sass-loader": "10.2.1", + "screenfull": "^5.2.0", "semver": "7.3.2", "style-loader": "1.3.0", "supercluster": "^7.1.0", diff --git a/src/common/data/copy.json b/src/common/data/copy.json index d494339..6847064 100644 --- a/src/common/data/copy.json +++ b/src/common/data/copy.json @@ -157,7 +157,9 @@ "shapes": "Shapes", "shapes_label": "Shapes", "explore_by_shapes__title": "Explore events by shape breakdown", - "explore_by_shape__description": "Shapes map to a given type of event that appears on the timeline.

Select the shape marker to toggle this type of event on / off" + "explore_by_shape__description": "Shapes map to a given type of event that appears on the timeline.

Select the shape marker to toggle this type of event on / off", + "fullscreen_enter": "Fullscreen", + "fullscreen_exit": "Exit Fullscreen" }, "timeline": { "labels_title": "Testimonies", diff --git a/src/components/Toolbar.js b/src/components/Toolbar.js index 63da701..d8aaf72 100644 --- a/src/components/Toolbar.js +++ b/src/components/Toolbar.js @@ -21,6 +21,8 @@ import { getCategoryIdxs, getFilterIdx, } from "../common/utilities.js"; +import { ToolbarButton } from "./controls/atoms/ToolbarButton"; +import { FullscreenToggle } from "./controls/FullScreenToggle"; class Toolbar extends React.Component { constructor(props) { @@ -179,20 +181,15 @@ class Toolbar extends React.Component { } renderToolbarTab(_selected, label, iconKey) { - const isActive = this.state._selected === _selected; - const classes = isActive ? "toolbar-tab active" : "toolbar-tab"; - return ( -
{ this.selectTab(_selected); }} - > - {iconKey} -
{label}
-
+ /> ); } @@ -302,6 +299,9 @@ class Toolbar extends React.Component { panels.shapes.icon ) : null} + {features.USE_FULLSCREEN && ( + + )} + ); + } +} diff --git a/src/components/controls/atoms/ToolbarButton.js b/src/components/controls/atoms/ToolbarButton.js new file mode 100644 index 0000000..a8520d9 --- /dev/null +++ b/src/components/controls/atoms/ToolbarButton.js @@ -0,0 +1,12 @@ +export function ToolbarButton({ isActive, iconKey, onClick, label }) { + return ( +
+ {iconKey} +
{label}
+
+ ); +} diff --git a/src/scss/toolbar.scss b/src/scss/toolbar.scss index 39520fa..912c8ba 100644 --- a/src/scss/toolbar.scss +++ b/src/scss/toolbar.scss @@ -228,7 +228,6 @@ display: block; text-align: center; font-size: $xsmall; - margin-top: -2px; letter-spacing: 0.05em; }