| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- * UI Modals
- */
-
- 'use strict';
-
- (function () {
- // Animation Dropdown
- const animationDropdown = document.querySelector('#animation-dropdown'),
- animationModal = document.querySelector('#animationModal');
- if (animationDropdown) {
- animationDropdown.onchange = function () {
- animationModal.classList = '';
- animationModal.classList.add('modal', 'animate__animated', this.value);
- };
- }
-
- // On hiding modal, remove iframe video/audio to stop playing
- const youTubeModal = document.querySelector('#youTubeModal'),
- youTubeModalVideo = youTubeModal.querySelector('iframe');
- youTubeModal.addEventListener('hidden.bs.modal', function () {
- youTubeModalVideo.setAttribute('src', '');
- });
-
- // Function to get and auto play youTube video
- const autoPlayYouTubeModal = function () {
- const modalTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="modal"]'));
- modalTriggerList.map(function (modalTriggerEl) {
- modalTriggerEl.onclick = function () {
- const theModal = this.getAttribute('data-bs-target'),
- videoSRC = this.getAttribute('data-theVideo'),
- videoSRCauto = `${videoSRC}?autoplay=1`,
- modalVideo = document.querySelector(`${theModal} iframe`);
- if (modalVideo) {
- modalVideo.setAttribute('src', videoSRCauto);
- }
- };
- });
- };
-
- // Calling function on load
- autoPlayYouTubeModal();
-
- // Onboarding modal carousel height animation
- document.querySelectorAll('.carousel').forEach(carousel => {
- carousel.addEventListener('slide.bs.carousel', event => {
- // Ensure next slide exists
- if (!event.relatedTarget) {
- console.error('Next slide not found');
- return;
- }
- // Use requestAnimationFrame to wait for render
- requestAnimationFrame(() => {
- // Force reflow
- void event.relatedTarget.offsetHeight;
- const nextHeight = Math.max(
- event.relatedTarget.offsetHeight,
- event.relatedTarget.scrollHeight,
- event.relatedTarget.getBoundingClientRect().height
- );
- const carouselParent = carousel.querySelector('.active.carousel-item').parentElement;
- // Animate only if we have valid heights
- if (nextHeight > 0 && carouselParent) {
- carouselParent.animate([{ height: carouselParent.offsetHeight + 'px' }, { height: nextHeight + 'px' }], {
- duration: 500,
- easing: 'ease',
- fill: 'forwards'
- });
- }
- });
- });
- });
- })();
|