The animation for the accordion feature in the iOS Framework7-vue app seems to be moving at

I am encountering issues with the iOS app while developing both android and iOS apps with Framework7-vue. The Android app functions smoothly, but the iOS app is causing trouble.

One of the features include a popup functionality with an accordion inside for users to view. However, the animation on iOS is extremely slow and unattractive. Despite my attempts and online research, I have not been able to resolve this issue.

Below is the implementation of the app.js and a snippet showcasing the popup. Any suggestions will be greatly appreciated, thank you.

app.js

const questions = {
    questionOne: 'Does the subject have a high CCA?',
    options: {
        yes: 'Yes',
        no: 'No'
    },
    selected: {
        yes: {
            questionTwo: 'High PTH and yes to high CCA',
            options: [
                'PTH > 80pmol/L',
                'PTH < 80pmol but > 50pmol/L and increasing',
                'PTH < 50 but higher than baseline'
            ]
        },
        no: {
            questionTwo: 'PTH > 80pmol/L',
            options: [
                'Refer for surgical parathyroidectomy',
                'Start Cinacalcet if parathyroidectomy is required'
            ]
        }
    }
}

Vue.use(Framework7Vue);

// Page Component Initialization
Vue.component('page-education', {
    template: '#page-education'
});

// Device Ready Event Handling
document.addEventListener('deviceready', () => {
    console.log("DEVICE IS READY!");
}, false)

// Application Init
const mainApp = new Vue({
    el: '#app',
    data: {
        popupOpened: false,
        navBarShowing: true,
        showingGreenCard: false,
        currQuestion: questions.questionOne,
        currOptCount: 2,
        currOptions: questions.options,
        showing: false,
        isShowing: true,
        icon: "<i class='far fa-file-alt'></i>",
        homeIcon: "<i id='sidemenu-icon' class='fas fa-home'></i>",
        pencilIcon: "<i id='sidemenu-icon' class='fas fa-pencil-alt'></i>",
        healthIcon: "<i id='sidemenu-icon' class='fas fa-plus'></i>",
        algIcon: "<i id='sidemenu-icon' class='fas fa-align-justify'></i>",
        dietIcon: "<i id='sidemenu-icon' class='fas fa-utensils'></i>",
        clipIcon: "<i id='sidemenu-icon' class='far fa-clipboard'></i>",
        linkIcon: "<i id='sidemenu-icon' class='fas fa-link'></i>"
    },
    progress: {
        value: 10
    },
    methods: {
        setInlineProgress: function(value) {
            this.value = value;
            const self = this;
            const app = self.$f7;
            app.setProgressbar('#demo-inline-progressbar', this.value);
        },
        toHomeScreen: function() {
            this.$f7.getCurrentView().router.back({ pageName: 'home-page', force: true, refreshPrevious: true });
            this.$f7.closePanel();
        },
        shouldShow: function() {
            this.showing = true;
        },
        generateQuestion: function(answer) {
            this.currQuestion = questions.selected.yes.questionTwo;
            this.optionsOne = 'Yes';
            this.optionTwo = 'No';
            this.shouldShow();
        },
        showPopUp: function(e) {
            this.showingGreenCard = true;
        },
        closePopUp: function() {
            this.showingGreenCard = false;
        },
    },
    
    // Framework7 Initialization Parameters
    framework7: {
        root: '#app',
        material: true,
        routes: [
            {
                path: '/',
                name: 'home'
            },
            ...
        ],
    }
});

Popup Snippet:

<div class="popup-card-four" v-if="mainApp.showingGreenCard">
    <p class="popup-text">Suitable low phosphate foods</p>
    <i id="close-icon" @click="mainApp.closePopUp()" class="far fa-times-circle"></i>
    
    <f7-list class="main-acc-list" accordion-list>
        <f7-list-item id="acc-one-title" accordion-item title="Lower phosphate dairy">
            <f7-accordion-content class="table-wrapper">
                <f7-block >
                    <table class="main-table">
                        ... <!-- Table Content -->
                    </table>
                </f7-block>
            </f7-accordion-content>
        </f7-list-item>
        ... <!-- More List Items -->
    </f7-list>
</div>

Answer №1

The problem was fixed by replacing the framework7-vue accordion component with the standard framework7 HTML accordion component.

It appears that iOS has compatibility issues with framework7-vue components. I hope this solution helps someone else facing similar challenges. Cheers!

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Having trouble finding the right path. Is there an issue with Angular routing?

After successfully creating a simple application, I decided to write test cases for it. My first attempt was to work on the routing part of the application. Check out the code on StackBlitz The routing code snippet is as follows: Main module: export cons ...

The next promise in a promise chain does not wait for the previous promise to resolve

I am completely new to the concept of Promises, but I have read that they are a powerful tool for executing functions one after another through Promise chaining. The code snippet below, under //RUN ON CLICK: CREATE TABLES, makes two AJAX calls - "Create D ...

Effective ways to enable users to upload files in a React Native app

Being in the process of developing a react native app, I am faced with the challenge of allowing users to easily upload files from their mobile devices (pdf, doc, etc). Unfortunately, my search for a suitable native component has proven fruitless. Can anyo ...

Incorporating jQuery ajax requests into divs seamlessly to avoid any page disruptions

When loading numerous ajax calls on a page, the timing of each call varies, resulting in some content loading before the user reaches the top of the page. This may cause the user to miss viewing certain data unless they scroll back up to the top. Below is ...

I am encountering an issue with this code. The objective is to determine the frequency at which a specific word appears in the provided paragraph

function processWords(){ text = document.getElementById("inputText").value; text = text.replace(/(^\s*)|(\s*$)/gi,""); text = text.replace(/[ ]{2,}/gi," "); text = text.replace(/\n /,"&bso ...

Conduct a unit test to verify that a function successfully connects to an API and accurately stores the retrieved data in a variable

Currently, I am working on creating a unit test for my writing and JavaScript code. This area is still challenging for me, so I am in the process of learning how to do it correctly. The specific function I am focusing on makes an API call and then assigns ...

Mysterious dual invocation of setState function in React

My component is designed to display a list of todos like: const todosData = [ { id: 1, text: "Take out the trash", completed: true }, { id: 2, text: "Grocery shopping", completed: false }, ]; ...

Having trouble accessing the vue.js front end after running npm build in combination with the frontend-maven-plugin and spring-boot backend

Inspiration: https://github.com/jonashackt/spring-boot-vuejs I am currently in the process of developing a vue.js frontend paired with a spring-boot backend using the frontend-maven-plugin. The structure of my project is as follows: webapp -> webapp ...

ways to halt a noise once an animation is complete

I don't have much experience with coding in general, but somehow I've made it this far. Now I'm stuck on the final piece of the puzzle. This is related to a Twitch alert that I'm setting up through 'Stream Elements'. The iss ...

Determining the nearest upcoming date from a JSON dataset

Looking to find the nearest date to today from the array "dates". For example, if today is 2011-09-10 -> the next closest date from the JSON file is "2012-12-20" -> $('div').append('date1: ' + dates.date1); For example 2, if tod ...

Utilizing AJAX to define the attributes of an object

As a beginner in OOP, I am trying to create an object using an ajax request. My goal is to retrieve 'responseArray' in JSON format and then manipulate it. function address(adres) { this.address_string = adres; var self = this; $.ajax({ typ ...

Turn off HTML display for Internet Explorer users

I am looking to implement code that will block certain pages for Internet Explorer users, making it accessible only for Google Chrome and Firefox users. Do you have any suggestions on how I can achieve this or if there are existing solutions available? I& ...

Error encountered in react-test-renderer test due to TypeError: Attempting to access properties of an undefined variable, specifically trying to read the 'current

Having trouble with my unit tests using react-test-renderer. Even though the component I'm testing is working fine, the test won't pass. Can someone please help me figure out what I'm doing wrong? Below is the code for the component: // ...

Dynamic height of a fixed-positioned Div

I encountered an issue with a Fixed positioned DIV that has dynamically appended content using jQuery. Once the height of the DIV exceeds the screen size, I am unable to view the contents at the bottom of the DIV without zooming in using the browser' ...

Sending a C# variable to an HTML file

I’m struggling to understand how I can use jQuery to access a variable from C# named sqlReq. My main objective is to be able to input my own SQL data into a PieChart. However, I’m unsure about how to call and define C# SQL requests in HTML or jQuery. ...

Bot in discord.js refuses to exit voice channel

I've been struggling to get my bot to leave the voice channel despite trying multiple methods. Here's what I've attempted in the source code: Discord.VoiceConnection.disconnect(); Although this is the current code, I have also tested: messa ...

Error in vue.js: Unable to call this.$emit as it is not a function

export default { mounted() { setTimeout(function() { this.$emit('onLoad') }, 4000); } } //views/Load.vue I want to redirect to another page after the page has been accessed for 4 seconds. <template> <d ...

Is there a way to bring my popup closer to my button?

Check out my jsfiddle example here: https://jsfiddle.net/annahisenberg/ft10ersb/34/ Currently, I have the following code: <div id="more_options_popup" style={{ left: this.ref.current.offsetLeft - 140 + "px", top: this.ref.current.offsetTo ...

This function appears to have an excessive number of statements, totaling 41 in total

Currently, I am using this controller: .controller('ctrl', function($scope, $rootScope, $timeout, $alert, $location, $tooltip, $popover, BetSlipFactory, AccordionsFactory, AuthFac ...

Displaying the saved MTRC (markdown-to-react-components) content from the database

I currently have data stored in a database that has been produced using the markdown-to-react-components package as MTRC(content).tree What is the best way to render this content? I've experimented with various approaches, such as dangerouslyInsertHT ...