Skip to content

Commit b4d92c6

Browse files
authored
fix(ie): classList does not support variadic (#19460)
1 parent a28e501 commit b4d92c6

File tree

7 files changed

+29
-23
lines changed

7 files changed

+29
-23
lines changed

angular/src/directives/control-value-accessors/value-accessor.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,16 @@ const getClasses = (element: HTMLElement) => {
7474

7575
const setClasses = (element: HTMLElement, classes: string[]) => {
7676
const classList = element.classList;
77-
78-
classList.remove(
77+
[
7978
'ion-valid',
8079
'ion-invalid',
8180
'ion-touched',
8281
'ion-untouched',
8382
'ion-dirty',
8483
'ion-pristine'
85-
);
86-
classList.add(...classes);
84+
].forEach(c => classList.remove(c));
85+
86+
classes.forEach(c => classList.add(c));
8787
};
8888

8989
const startsWith = (input: string, search: string): boolean => {

angular/src/directives/navigation/stack-controller.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ export class StackController {
230230
const leavingEl = leavingView ? leavingView.element : undefined;
231231
const containerEl = this.containerEl;
232232
if (enteringEl && enteringEl !== leavingEl) {
233-
enteringEl.classList.add('ion-page', 'ion-page-invisible');
233+
enteringEl.classList.add('ion-page');
234+
enteringEl.classList.add('ion-page-invisible');
234235
if (enteringEl.parentElement !== containerEl) {
235236
containerEl.appendChild(enteringEl);
236237
}

core/src/components/tab/tab.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class Tab implements ComponentInterface {
4848
this.active = true;
4949
}
5050

51-
private async prepareLazyLoaded(): Promise<HTMLElement | undefined> {
51+
private prepareLazyLoaded(): Promise<HTMLElement | undefined> {
5252
if (!this.loaded && this.component != null) {
5353
this.loaded = true;
5454
try {
@@ -57,7 +57,7 @@ export class Tab implements ComponentInterface {
5757
console.error(e);
5858
}
5959
}
60-
return undefined;
60+
return Promise.resolve(undefined);
6161
}
6262

6363
render() {

core/src/components/tabs/tabs.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export class Tabs implements NavOutlet {
6666
*/
6767
@Method()
6868
async select(tab: string | HTMLIonTabElement): Promise<boolean> {
69-
const selectedTab = await this.getTab(tab);
69+
const selectedTab = getTab(this.tabs, tab);
7070
if (!this.shouldSwitch(selectedTab)) {
7171
return false;
7272
}
@@ -84,14 +84,7 @@ export class Tabs implements NavOutlet {
8484
*/
8585
@Method()
8686
async getTab(tab: string | HTMLIonTabElement): Promise<HTMLIonTabElement | undefined> {
87-
const tabEl = (typeof tab === 'string')
88-
? this.tabs.find(t => t.tab === tab)
89-
: tab;
90-
91-
if (!tabEl) {
92-
console.error(`tab with id: "${tabEl}" does not exist`);
93-
}
94-
return tabEl;
87+
return getTab(this.tabs, tab);
9588
}
9689

9790
/**
@@ -105,7 +98,7 @@ export class Tabs implements NavOutlet {
10598
/** @internal */
10699
@Method()
107100
async setRouteId(id: string): Promise<RouteWrite> {
108-
const selectedTab = await this.getTab(id);
101+
const selectedTab = getTab(this.tabs, id);
109102
if (!this.shouldSwitch(selectedTab)) {
110103
return { changed: false, element: this.selectedTab };
111104
}
@@ -200,3 +193,14 @@ export class Tabs implements NavOutlet {
200193
);
201194
}
202195
}
196+
197+
const getTab = (tabs: HTMLIonTabElement[], tab: string | HTMLIonTabElement): HTMLIonTabElement | undefined => {
198+
const tabEl = (typeof tab === 'string')
199+
? tabs.find(t => t.tab === tab)
200+
: tab;
201+
202+
if (!tabEl) {
203+
console.error(`tab with id: "${tabEl}" does not exist`);
204+
}
205+
return tabEl;
206+
};

core/src/utils/animation/animation-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export const createKeyframeStylesheet = (keyframeName: string, keyframeRules: st
7777

7878
const stylesheet = (element.ownerDocument || document).createElement('style');
7979
stylesheet.id = keyframeName;
80-
stylesheet.innerHTML = `@keyframes ${keyframeName} { ${keyframeRules} } @keyframes ${keyframeName}-alt { ${keyframeRules} }`;
80+
stylesheet.textContent = `@keyframes ${keyframeName} { ${keyframeRules} } @keyframes ${keyframeName}-alt { ${keyframeRules} }`;
8181

8282
styleContainer.appendChild(stylesheet);
8383

core/src/utils/animation/animation.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -529,8 +529,8 @@ export const createAnimation = () => {
529529
elements.forEach((el: HTMLElement) => {
530530
const elementClassList = el.classList;
531531

532-
elementClassList.add(...addClasses);
533-
elementClassList.remove(...removeClasses);
532+
addClasses.forEach(c => elementClassList.add(c));
533+
removeClasses.forEach(c => elementClassList.remove(c));
534534

535535
for (const property in styles) {
536536
if (styles.hasOwnProperty(property)) {
@@ -578,8 +578,8 @@ export const createAnimation = () => {
578578
elements.forEach((el: HTMLElement) => {
579579
const elementClassList = el.classList;
580580

581-
elementClassList.add(...addClasses);
582-
elementClassList.remove(...removeClasses);
581+
addClasses.forEach(c => elementClassList.add(c));
582+
removeClasses.forEach(c => elementClassList.remove(c));
583583

584584
for (const property in styles) {
585585
if (styles.hasOwnProperty(property)) {

vue/src/components/navigation/ion-vue-router.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ function transition(parent: Vue, props: Props, leavingEl: HTMLElement) {
122122
}
123123

124124
// Add the proper Ionic classes, important for smooth transitions
125-
enteringEl.classList.add('ion-page', 'ion-page-invisible');
125+
enteringEl.classList.add('ion-page');
126+
enteringEl.classList.add('ion-page-invisible');
126127

127128
// Commit to the transition as soon as the Ionic Router Outlet is ready
128129
return ionRouterOutlet.componentOnReady().then((el: HTMLIonRouterOutletElement) => {

0 commit comments

Comments
 (0)