diff --git a/src/app/app.scss b/src/app/app.scss index b7a30bbb2..5891c94ff 100644 --- a/src/app/app.scss +++ b/src/app/app.scss @@ -680,4 +680,62 @@ canvas[core-chart] { // For some reason, in iOS the pages don't inherit the background-color from ion-app, set it explicitly. .ion-page { background-color: $background-color; +} + +// Embed video responsive classes. +// Taken from https://github.com/twbs/bootstrap/blob/v4-dev/scss/utilities/_embed.scss +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; + + &::before { + display: block; + content: ""; + } + + .embed-responsive-item, + iframe, + embed, + object, + video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + } + + iframe iframe { + width: 100%; + height: 100%; + } +} + +.embed-responsive-21by9 { + &::before { + padding-top: percentage(9 / 21); + } +} + +.embed-responsive-16by9 { + &::before { + padding-top: percentage(9 / 16); + } +} + +.embed-responsive-4by3 { + &::before { + padding-top: percentage(3 / 4); + } +} + +.embed-responsive-1by1 { + &::before { + padding-top: percentage(1 / 1); + } } \ No newline at end of file diff --git a/src/directives/format-text.ts b/src/directives/format-text.ts index f4144e731..48cfb470f 100644 --- a/src/directives/format-text.ts +++ b/src/directives/format-text.ts @@ -470,6 +470,16 @@ export class CoreFormatTextDirective implements OnChanges { if (!iframe.height) { iframe.height = height; } + + // Do the iframe responsive. + if (iframe.parentElement.classList.contains('embed-responsive')) { + iframe.addEventListener('load', () => { + const css = document.createElement('style'); + css.setAttribute('type', 'text/css'); + css.innerHTML = 'iframe {width: 100%;height: 100%;}'; + iframe.contentDocument.head.appendChild(css); + }); + } } } }