import QtQuick 2.12
import QtQuick.Controls 2.12 // Dialog

import "qrc:/globals"
import "qrc:/components"

ModalDialog { id: _root
    property var button: null

    /*!
     * \brief   Helper function to position dialog under respected button
     * \param   vButton     - Headerbar icon button to map and place dialog under
     */
    function adjustPosition        ( vButton)  { x = vButton.mapToItem(null, vButton.width, 0).x - width  }

    /*!
     * \brief   Helper function to position and open dialog
     * \param   vButton     - Headerbar icon button
     */
    function openDialog     ( vButton ) {
        button = vButton
        adjustPosition(button)
        open()
    }

    implicitWidth       : contentItem.implicitWidth  + padding * 2 // Auto-size to content
    implicitHeight      : contentItem.implicitHeight + padding * 2
    width               : implicitWidth
    height              : implicitHeight
    padding             : 10
    modal               : false
    closePolicy         : Dialog.CloseOnPressOutside
    y                   : Variables.headerHeight + 5
    backgroundColor     : Colors.offWhite
    showDropShadow      : true

    onImplicitWidthChanged: Qt.callLater(function() { if (button) { adjustPosition(_root.button) } })
}
