/* global Ext, $App, SystemJS */
const {
replaceExtJSDialogs,
replaceExtJSMessageBarDialog
} = require('../../utils/replaceExtJSWidgets/replaceExtJSWidgets')
const initReplace = () => {
replaceExtJSDialogs()
replaceExtJSMessageBarDialog()
}
SystemJS.set(
'@unitybase/adminui-vue/initExtReplace',
SystemJS.newModule({ initReplace })
)
module.exports = async (Vue) => {
const isExt = typeof window.Ext !== 'undefined'
/**
* Magic link to focus DOM/Ext element with specified id
* @example
<a href="#" data-cmd-type="setFocus" data-elm-id="my-html-element-id">focus other</a>
* @param {object} params
* @param {string} params.elmId
* @param {EventTarget} target
*/
function magicLinkFocusCommand (params, target) {
const extCmp = isExt && $App.viewport.centralPanel.getTabById(params.elmId)
if (extCmp) {
// try Ext
Ext.callback(extCmp.focus, extCmp, [], 100)
} else {
// try DOM
const domElm = document.getElementById(params.elmId)
if (domElm && domElm.focus) domElm.focus()
}
}
if (window.$App && isExt) {
initReplace()
// TODO: (AndreyS) if we get cmdCode on all ubm_navshortcut this is no needed
// UB.connection.on('ubm_navshortcut:changed', (execParams) => {
// if (execParams && execParams.method !== 'delete') {
// UB.core.UBStoreManager.updateNavshortcutCacheForItem(
// execParams.resultData,
// false
// )
// }
// })
}
// NOTE: (AndreyS) we can rewrite this to System module
// Relogin.created calls UB.connection.setRequestAuthParamsFunction to define dialog for auth
const Relogin = require('../../components/relogin/URelogin.vue').default
/**
*
*/
function replaceDefaultRelogin () {
const ReloginConstructor = Vue.extend(Relogin)
const instance = new ReloginConstructor()
const vm = instance.$mount()
document.body.appendChild(vm.$el)
}
// NOTE: (AndreyS) we can rewrite this to System module
// Request2fa.created calls UB.connection.setRequest2faFunction to define dialog for 2fa
const Request2fa =
require('../../components/relogin/URequest2fa.vue').default
/**
*
*/
function replaceDefaultRequest2fa () {
const Request2faConstructor = Vue.extend(Request2fa)
const instance = new Request2faConstructor()
const vm = instance.$mount()
document.body.appendChild(vm.$el)
}
if (window.$App) {
/**
* @param {object} params
*/
function magicLinkAdminUiCommand (params) {
$App.doCommand(params)
}
// INIT MAGIC LINKS
const magicLink = SystemJS.get('@unitybase/adminui-vue').magicLink
magicLink.install()
magicLink.addCommand('setFocus', magicLinkFocusCommand)
magicLink.addCommand('showForm', magicLinkAdminUiCommand)
magicLink.addCommand('showList', magicLinkAdminUiCommand)
magicLink.addCommand('showReport', magicLinkAdminUiCommand)
replaceDefaultRelogin()
replaceDefaultRequest2fa()
const UNavbarDefaultSlot =
require('../../components/navbarSlotDefault/UNavbarDefaultSlot.vue').default
/**
* Additional components can be added to the Sidebar and NavBar using this event
*
* @example
* window.$App.on('applicationReady', () => {
* const SidebarSlotExample = require('./samples/SidebarSlotExample.vue').default
* $App.fireEvent('portal:sidebar:defineSlot', SidebarSlotExample, { some attrs })
*
* const NavBarSlotExample = require('./samples/NavbarSlotExample.vue').default
* $App.fireEvent('portal:navbar:defineSlot', NavBarSlotExample, { some attrs })
* }
* @event 'portal:navbar:defineSlot'
* @memberOf module:@unitybase/adminui-vue
*/
$App.fireEvent('portal:navbar:defineSlot', UNavbarDefaultSlot, {})
// Need for show loader when load scripts, modules, etc.
const loaderService = require('../modules/loaderService')
loaderService.subscribe()
} else {
console.log('window.$App is not defined')
return null
}
}