Skip to content

Commit

Permalink
feat(ui5-dynamic-page): add responsive paddings (#7923)
Browse files Browse the repository at this point in the history
  • Loading branch information
kineticjs authored Nov 28, 2023
1 parent 18cccb2 commit 9670fab
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 15 deletions.
24 changes: 12 additions & 12 deletions packages/fiori/src/DynamicPage.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@

</div>

<div class="{{classes.content}}">
{{#if headerInContent}}
<slot name="headerArea"></slot>
{{/if}}
{{#if headerInContent}}
<slot name="headerArea"></slot>
{{/if}}

{{#unless actionsInTitle}}
<ui5-dynamic-page-header-actions
?snapped="{{headerSnapped}}"
?pinned="{{headerPinned}}"
@ui5-expand-button-click={{onExpandClick}}
@ui5-pin-button-click={{onPinClick}}
></ui5-dynamic-page-header-actions>
{{/unless}}
{{#unless actionsInTitle}}
<ui5-dynamic-page-header-actions
?snapped="{{headerSnapped}}"
?pinned="{{headerPinned}}"
@ui5-expand-button-click={{onExpandClick}}
@ui5-pin-button-click={{onPinClick}}
></ui5-dynamic-page-header-actions>
{{/unless}}

<div class="{{classes.content}}">
<slot></slot>
</div>
</div>
Expand Down
31 changes: 31 additions & 0 deletions packages/fiori/src/DynamicPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
import MediaRange from "@ui5/webcomponents-base/dist/MediaRange.js";
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
import type { Timeout } from "@ui5/webcomponents-base/dist/types.js";
Expand Down Expand Up @@ -42,6 +45,12 @@ const SCROLL_DEBOUNCE_RATE = 0; // ms
class DynamicPage extends UI5Element {
static i18nBundle: I18nBundle;

constructor() {
super();

this._updateMediaRange = this.updateMediaRange.bind(this);
}

static async onDefine() {
DynamicPage.i18nBundle = await getI18nBundle("INIT_PACKAGE_VAR_NAME");
}
Expand All @@ -55,6 +64,15 @@ class DynamicPage extends UI5Element {
@property({ type: Boolean })
showFooter!: boolean;

/**
* Defines the current media query size.
*
* @type {string}
* @private
*/
@property()
mediaRange!: string;

@slot({ "default": true, type: HTMLElement })
content!: HTMLElement[];

Expand All @@ -71,6 +89,15 @@ class DynamicPage extends UI5Element {
iPreviousScrollAmount = 0;
_debounceInterval?: Timeout | null;
showHeaderInStickArea = false;
_updateMediaRange: ResizeObserverCallback;

onEnterDOM() {
ResizeHandler.register(this, this._updateMediaRange);
}

onExitDOM() {
ResizeHandler.deregister(this, this._updateMediaRange);
}

get classes() {
return {
Expand Down Expand Up @@ -167,6 +194,10 @@ class DynamicPage extends UI5Element {
fn();
}, delay);
}

updateMediaRange() {
this.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef()!.offsetWidth);
}
}

DynamicPage.define();
Expand Down
35 changes: 34 additions & 1 deletion packages/fiori/src/themes/DynamicPage.css
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
box-sizing: border-box;
z-index: 1;
opacity: 1;
padding: 0 1rem;
}

:host([show-footer]) .ui5-dynamic-page-content {
Expand All @@ -50,6 +49,9 @@
border: 1px solid;
border-radius: 0.25rem;
background-color: #fff;
box-sizing: border-box;
width: auto;
margin: 0 0.5rem 0.5rem 0.5rem;
}

/* Footer animation */
Expand All @@ -72,4 +74,35 @@
transform: translateY(100%);
opacity: 0;
}
}

::slotted([slot="titleArea"]) {
width: auto;
}

/* Responsive paddings */

:host([media-range="S"]) .ui5-dynamic-page-content,
:host([media-range="S"]) ::slotted([slot="titleArea"]),
:host([media-range="S"]) ::slotted([slot="headerArea"]) {
padding: 0 1rem;
}

:host([media-range="S"]) ::slotted([slot="headerArea"]) {
padding-top: 0.5rem;
}

:host([media-range="M"]) .ui5-dynamic-page-content,
:host([media-range="M"]) ::slotted([slot="titleArea"]),
:host([media-range="M"]) ::slotted([slot="headerArea"]),
:host([media-range="L"]) .ui5-dynamic-page-content,
:host([media-range="L"]) ::slotted([slot="titleArea"]),
:host([media-range="L"]) ::slotted([slot="headerArea"]) {
padding: 0 2rem;
}

:host([media-range="XL"]) .ui5-dynamic-page-content,
:host([media-range="XL"]) ::slotted([slot="titleArea"]),
:host([media-range="XL"]) ::slotted([slot="headerArea"]) {
padding: 0 3rem;
}
4 changes: 2 additions & 2 deletions packages/fiori/src/themes/DynamicPageHeader.css
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
:host {
background: #fff;
padding-top: var(--_ui5_dynamic_page_header_padding_top);
padding-bottom: var(--_ui5_dynamic_page_header_padding_bottom);
display: block;
}

.ui5-dynamic-page-header-root {
background: inherit;
padding-top: var(--_ui5_dynamic_page_header_padding_top);
padding-bottom: var(--_ui5_dynamic_page_header_padding_bottom);
}

0 comments on commit 9670fab

Please sign in to comment.