UNPKG

@gravityforms/utils

Version:
86 lines (79 loc) 1.72 kB
import assign from '../data/object-assign'; /** * @module popup * @description Launch a popup with all standard javascript popup options available plus a center method. * It will automatically harvest the url to load from the passed event if a url is not supplied, and has * desirable defaults. * * @since 1.0.0 * * @param {object} opts The options for the popup. * * @requires assign * * @return {void} * * @example * import { popup } from "@gravityforms/utils"; * * function Example() { * const url = 'https://some-place.com/'; * popup( { * url, * specs: { * menubar: 0, * scrollbars: 0, * status: 1, * titlebar: 1, * toolbar: 0, * top: 100, * left: 100, * width: 500, * height: 300, * }, * } ); * } * */ export default function popup( opts = {} ) { const options = assign( { event: null, url: '', center: true, name: '_blank', specs: { menubar: 0, scrollbars: 0, status: 1, titlebar: 1, toolbar: 0, top: 100, left: 100, width: 500, height: 300, }, }, opts ); if ( options.event ) { options.event.preventDefault(); if ( ! options.url.length ) { options.url = options.event.currentTarget.href; } } if ( options.url.length ) { if ( options.center ) { options.specs.top = ( window.screen.height / 2 ) - ( options.specs.height / 2 ); options.specs.left = ( window.screen.width / 2 ) - ( options.specs.width / 2 ); } const specs = []; Object.entries( options.specs ).forEach( ( [ key, val ] ) => { const spec = `${ key }=${ val }`; specs.push( spec ); } ); window.open( options.url, options.name, specs.join() ); } }