Spaces:
Sleeping
Sleeping
classifieur
/
frontend
/node_modules
/@pmmmwh
/react-refresh-webpack-plugin
/overlay
/components
/PageHeader.js
const Spacer = require('./Spacer.js'); | |
const theme = require('../theme.js'); | |
/** | |
* @typedef {Object} PageHeaderProps | |
* @property {string} [message] | |
* @property {string} title | |
* @property {string} [topOffset] | |
*/ | |
/** | |
* The header of the overlay. | |
* @param {Document} document | |
* @param {HTMLElement} root | |
* @param {PageHeaderProps} props | |
* @returns {void} | |
*/ | |
function PageHeader(document, root, props) { | |
const pageHeaderContainer = document.createElement('div'); | |
pageHeaderContainer.style.background = '#' + theme.dimgrey; | |
pageHeaderContainer.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.3)'; | |
pageHeaderContainer.style.color = '#' + theme.white; | |
pageHeaderContainer.style.left = '0'; | |
pageHeaderContainer.style.right = '0'; | |
pageHeaderContainer.style.padding = '1rem 1.5rem'; | |
pageHeaderContainer.style.paddingLeft = 'max(1.5rem, env(safe-area-inset-left))'; | |
pageHeaderContainer.style.paddingRight = 'max(1.5rem, env(safe-area-inset-right))'; | |
pageHeaderContainer.style.position = 'fixed'; | |
pageHeaderContainer.style.top = props.topOffset || '0'; | |
const title = document.createElement('h3'); | |
title.innerText = props.title; | |
title.style.color = '#' + theme.red; | |
title.style.fontSize = '1.125rem'; | |
title.style.lineHeight = '1.3'; | |
title.style.margin = '0'; | |
pageHeaderContainer.appendChild(title); | |
if (props.message) { | |
title.style.margin = '0 0 0.5rem'; | |
const message = document.createElement('span'); | |
message.innerText = props.message; | |
message.style.color = '#' + theme.white; | |
message.style.wordBreak = 'break-word'; | |
pageHeaderContainer.appendChild(message); | |
} | |
root.appendChild(pageHeaderContainer); | |
// This has to run after appending elements to root | |
// because we need to actual mounted height. | |
Spacer(document, root, { | |
space: pageHeaderContainer.offsetHeight.toString(10), | |
}); | |
} | |
module.exports = PageHeader; | |