%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/11585/cwd/html/ppaobm/vendor/bower-asset/fullcalendar/src/daygrid/ |
Upload File : |
/* A rectangular panel that is absolutely positioned over other content ------------------------------------------------------------------------------------------------------------------------ Options: - className (string) - content (HTML string, element, or element array) - parentEl - top - left - right (the x coord of where the right edge should be. not a "CSS" right) - autoHide (boolean) - show (callback) - hide (callback) */ import { removeElement, createElement, applyStyle, listenBySelector, computeClippingRect, computeRect } from '@fullcalendar/core' export interface PopoverOptions { className?: string content?: (el: HTMLElement) => void parentEl: HTMLElement autoHide?: boolean top?: number left?: number right?: number viewportConstrain?: boolean } export default class Popover { isHidden: boolean = true options: PopoverOptions el: HTMLElement // the container element for the popover. generated by this object margin: number = 10 // the space required between the popover and the edges of the scroll container constructor(options: PopoverOptions) { this.options = options } // Shows the popover on the specified position. Renders it if not already show() { if (this.isHidden) { if (!this.el) { this.render() } this.el.style.display = '' this.position() this.isHidden = false this.trigger('show') } } // Hides the popover, through CSS, but does not remove it from the DOM hide() { if (!this.isHidden) { this.el.style.display = 'none' this.isHidden = true this.trigger('hide') } } // Creates `this.el` and renders content inside of it render() { let options = this.options let el = this.el = createElement('div', { className: 'fc-popover ' + (options.className || ''), style: { top: '0', left: '0' } }) if (typeof options.content === 'function') { options.content(el) } options.parentEl.appendChild(el) // when a click happens on anything inside with a 'fc-close' className, hide the popover listenBySelector(el, 'click', '.fc-close', (ev) => { this.hide() }) if (options.autoHide) { document.addEventListener('mousedown', this.documentMousedown) } } // Triggered when the user clicks *anywhere* in the document, for the autoHide feature documentMousedown = (ev) => { // only hide the popover if the click happened outside the popover if (this.el && !this.el.contains(ev.target)) { this.hide() } } // Hides and unregisters any handlers destroy() { this.hide() if (this.el) { removeElement(this.el) this.el = null } document.removeEventListener('mousedown', this.documentMousedown) } // Positions the popover optimally, using the top/left/right options position() { let options = this.options let el = this.el let elDims = el.getBoundingClientRect() // only used for width,height let origin = computeRect(el.offsetParent) let clippingRect = computeClippingRect(options.parentEl) let top // the "position" (not "offset") values for the popover let left // // compute top and left top = options.top || 0 if (options.left !== undefined) { left = options.left } else if (options.right !== undefined) { left = options.right - elDims.width // derive the left value from the right value } else { left = 0 } // constrain to the view port. if constrained by two edges, give precedence to top/left top = Math.min(top, clippingRect.bottom - elDims.height - this.margin) top = Math.max(top, clippingRect.top + this.margin) left = Math.min(left, clippingRect.right - elDims.width - this.margin) left = Math.max(left, clippingRect.left + this.margin) applyStyle(el, { top: top - origin.top, left: left - origin.left }) } // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. // TODO: better code reuse for this. Repeat code // can kill this??? trigger(name) { if (this.options[name]) { this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)) } } }