Util::addScript('core', 'unsupported-browser-redirect');
}
+ if ($event->getResponse()->getRenderAs() === TemplateResponse::RENDER_AS_PUBLIC) {
+ Util::addScript('core', 'public');
+ }
+
\OC_Util::addStyle('server', null, true);
if ($event instanceof BeforeLoginTemplateRenderedEvent) {
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#body-public {
- --footer-height: calc(var(--default-line-height) + 2 * var(--default-grid-baseline));;
-
- &:has(.footer__legal-links),
- &:has(.footer__simple-sign-up) {
- --footer-height: calc(2 * var(--default-line-height) + 3 * var(--default-grid-baseline));;
- }
-
- &:has(.footer__legal-links):has(.footer__simple-sign-up) {
- --footer-height: calc(3 * var(--default-line-height) + 3 * var(--default-grid-baseline));
- }
+ --footer-height: calc(2lh + 2 * var(--default-grid-baseline)); // Set the initial value, will be updated programmatically to match the actual height
.header-end {
-
#header-primary-action a {
color: var(--color-primary-element-text);
}
#content {
min-height: var(--body-height, calc(100% - var(--footer-height)));
+ padding-block-end: var(--footer-height);
}
#app-content-vue {
align-items: center;
justify-content: center;
- height: var(--footer-height);
width: calc(100% - 2 * var(--body-container-margin));
margin-inline: var(--body-container-margin);
padding-block: var(--default-grid-baseline);
--- /dev/null
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+const body = document.body
+const footer = document.querySelector('footer')
+let prevHeight = footer?.offsetHeight
+
+const onResize: ResizeObserverCallback = (entries) => {
+ for (const entry of entries) {
+ const height = entry.contentRect.height
+ if (height === prevHeight) {
+ return
+ }
+ prevHeight = height
+ body.style.setProperty('--footer-height', `${height}px`)
+ }
+}
+
+if (footer) {
+ new ResizeObserver(onResize)
+ .observe(footer, {
+ box: 'border-box', // <footer> is border-box
+ })
+}
'legacy-unified-search': path.join(__dirname, 'core/src', 'legacy-unified-search.js'),
'unsupported-browser': path.join(__dirname, 'core/src', 'unsupported-browser.js'),
'unsupported-browser-redirect': path.join(__dirname, 'core/src', 'unsupported-browser-redirect.js'),
+ public: path.join(__dirname, 'core/src', 'public.ts'),
},
dashboard: {
main: path.join(__dirname, 'apps/dashboard/src', 'main.js'),