Source: pages/common-pages/structured-page.js


import {Mixin}               from '$qui/base/mixwith.js'
import {mix}                 from '$qui/base/mixwith.js'
import StockIcon             from '$qui/icons/stock-icon.js'
import {StructuredViewMixin} from '$qui/views/common-views/common-views.js'

import PageMixin from '../page.js'


/** @lends qui.pages.commonpages.StructuredPageMixin */
const StructuredPageMixin = Mixin((superclass = Object) => {

    /**
     * A mixin that combines {@link qui.views.commonviews.StructuredViewMixin} and {@link qui.pages.PageMixin}.
     * @alias qui.pages.commonpages.StructuredPageMixin
     * @mixin
     * @extends qui.views.commonviews.StructuredViewMixin
     * @mixes qui.pages.PageMixin
     */
    class StructuredPageMixin extends mix(StructuredViewMixin(superclass)).with(PageMixin) {

        /**
         * @constructs
         * @param {...*} args parent class parameters
         */
        constructor({...args} = {}) {
            super(args)
        }

        prepareIcon(icon) {
            /* Popup page views should normally have the default foreground icon color, even on small screens */
            if (this.isPopup() && (icon instanceof StockIcon)) {
                icon = icon.alterDefault({variant: 'foreground'})
            }

            return super.prepareIcon(icon)
        }

    }

    return StructuredPageMixin

})


export default StructuredPageMixin