Compare commits

...

5 Commits

Author SHA1 Message Date
João Ferreira
a72f4f7a90 - add only-icon, badge-vertical-bottom usecase; 2025-08-28 15:24:33 +01:00
João Ferreira
291beb32bb - update badge position; 2025-08-28 12:46:54 +01:00
João Ferreira
17e26d3312 - lint.fix 2025-08-27 17:03:48 +01:00
João Ferreira
7692398ca7 Merge branch 'next' into ROU-11804 2025-08-27 16:51:11 +01:00
João Ferreira
92920440fc - define padding space for ionic tab-button;
- guarantee hover and focus occupies the height;
- when has a status-badge the top position should be always the same;
- add example with tab-buttons without label;
2025-08-27 16:47:02 +01:00
2 changed files with 81 additions and 12 deletions

View File

@@ -366,6 +366,63 @@
</div>
</ion-list>
<ion-list id="tab-button-icon-bottom">
<ion-list-header>
<ion-label> Inside Tab Button - Only Icon </ion-label>
</ion-list-header>
<div class="ion-display-flex ion-align-items-center ion-justify-content-around ion-margin">
<ion-tab-bar>
<ion-tab-button href="" tab="tab-one" layout="label-hide">
<ion-icon name="home"></ion-icon>
<ion-badge size="small" vertical="top" color="danger"></ion-badge>
</ion-tab-button>
<ion-tab-button tab="schedule" class="e2eTabTwoButton" layout="label-hide">
<ion-icon name="globe"></ion-icon>
<ion-badge size="small" vertical="top" color="primary">
<ion-icon name="star"></ion-icon>
</ion-badge>
</ion-tab-button>
<ion-tab-button tab="tab-three" layout="label-hide">
<ion-icon name="logo-facebook"></ion-icon>
<ion-badge size="small" vertical="top" color="warning">999</ion-badge>
</ion-tab-button>
<ion-tab-button tab="tab-four" class="e2eTabFourButton" layout="label-hide">
<ion-icon name="chatbox"></ion-icon>
<ion-badge vertical="top" color="success" size="small"></ion-badge>
</ion-tab-button>
</ion-tab-bar>
</div>
<div class="ion-display-flex ion-align-items-center ion-justify-content-around ion-margin">
<ion-tab-bar>
<ion-tab-button href="" tab="tab-one" layout="label-hide">
<ion-icon name="home"></ion-icon>
<ion-badge size="small" vertical="bottom" color="danger"></ion-badge>
</ion-tab-button>
<ion-tab-button tab="schedule" class="e2eTabTwoButton" layout="label-hide">
<ion-icon name="globe"></ion-icon>
<ion-badge size="small" vertical="bottom" color="primary">
<ion-icon name="star"></ion-icon>
</ion-badge>
</ion-tab-button>
<ion-tab-button tab="tab-three" layout="label-hide">
<ion-icon name="logo-facebook"></ion-icon>
<ion-badge size="small" vertical="bottom" color="warning">999</ion-badge>
</ion-tab-button>
<ion-tab-button tab="tab-four" class="e2eTabFourButton" layout="label-hide">
<ion-icon name="chatbox"></ion-icon>
<ion-badge vertical="bottom" color="success" size="small"></ion-badge>
</ion-tab-button>
</ion-tab-bar>
</div>
</ion-list>
<ion-list id="button-top">
<ion-list-header>
<ion-label> Inside Button - Top Placement </ion-label>

View File

@@ -7,6 +7,10 @@
:host {
--focus-ring-color: #{globals.$ion-border-focus-default};
--focus-ring-width: #{globals.$ion-border-radius-025};
--padding-top: #{globals.$ion-space-100};
--padding-end: #{globals.$ion-space-400};
--padding-bottom: #{globals.$ion-space-100};
--padding-start: #{globals.$ion-space-400};
@include globals.typography(globals.$ion-body-action-xs);
@@ -48,6 +52,7 @@
.button-native {
min-width: globals.$ion-scale-1200;
min-height: globals.$ion-scale-1200;
overflow: visible;
@@ -102,22 +107,23 @@
:host ::slotted(ion-badge) {
@include globals.position(null, null, null, calc(50% + globals.$ion-scale-300));
@include globals.transform(translate(-50%, -50%));
}
:host ::slotted(ion-badge.badge-vertical-top) {
@include globals.position(-2px);
@include globals.position(globals.$ion-scale-150);
}
:host ::slotted(ion-badge.badge-vertical-top:empty) {
@include globals.position(calc(globals.$ion-scale-100 * -1));
@include globals.position(globals.$ion-scale-050, null, null, calc(50% + globals.$ion-scale-250));
}
:host ::slotted(ion-badge.badge-vertical-bottom) {
@include globals.position(calc(50% - globals.$ion-scale-200));
:host(.tab-layout-icon-top) ::slotted(ion-badge.badge-vertical-bottom) {
@include globals.position(calc(50% - (globals.$ion-scale-050)));
}
:host ::slotted(ion-badge.badge-vertical-bottom:empty) {
@include globals.position(calc(50% - globals.$ion-scale-100));
:host(.tab-layout-icon-top) ::slotted(ion-badge.badge-vertical-bottom:empty) {
@include globals.position(50%, null, null, calc(50% + globals.$ion-scale-250));
}
:host ::slotted(ion-badge[vertical]:not(:empty)) {
@@ -130,13 +136,19 @@
}
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-top) {
@include globals.position(calc(50% - globals.$ion-scale-100));
}
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom) {
@include globals.position(calc(50% + globals.$ion-scale-100));
}
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom:empty) {
@include globals.position(calc(50% + 14px));
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-top:empty) {
@include globals.position(50%);
}
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom),
:host(.tab-layout-label-hide) ::slotted(ion-badge.badge-vertical-bottom) {
@include globals.position(calc(100% - globals.$ion-scale-100));
}
:host(.tab-layout-icon-bottom) ::slotted(ion-badge.badge-vertical-bottom:empty),
:host(.tab-layout-label-hide) ::slotted(ion-badge.badge-vertical-bottom:empty) {
@include globals.position(calc(100% - globals.$ion-scale-050), null, null, calc(50% + globals.$ion-scale-250));
}