UNPKG

handsontable

Version:

Handsontable is a JavaScript Data Grid available for React, Angular and Vue.

90 lines (87 loc) 3.83 kB
import "core-js/modules/es.error.cause.js"; function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } import { outerHeight, outerWidth, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs"; import TopInlineStartCornerOverlayTable from "../table/topInlineStartCorner.mjs"; import { Overlay } from "./_base.mjs"; import { CLONE_TOP_INLINE_START_CORNER } from "./constants.mjs"; /** * @class TopInlineStartCornerOverlay */ export class TopInlineStartCornerOverlay extends Overlay { /** * @param {Walkontable} wotInstance The Walkontable instance. @TODO refactoring: check if can be deleted. * @param {FacadeGetter} facadeGetter Function which return proper facade. * @param {Settings} wtSettings The Walkontable settings. * @param {DomBindings} domBindings Dom elements bound to the current instance. * @param {TopOverlay} topOverlay The instance of the Top overlay. * @param {InlineStartOverlay} inlineStartOverlay The instance of the InlineStart overlay. */ constructor(wotInstance, facadeGetter, wtSettings, domBindings, topOverlay, inlineStartOverlay) { super(wotInstance, facadeGetter, CLONE_TOP_INLINE_START_CORNER, wtSettings, domBindings); /** * The instance of the Top overlay. * * @type {TopOverlay} */ _defineProperty(this, "topOverlay", void 0); /** * The instance of the InlineStart overlay. * * @type {InlineStartOverlay} */ _defineProperty(this, "inlineStartOverlay", void 0); this.topOverlay = topOverlay; this.inlineStartOverlay = inlineStartOverlay; } /** * Factory method to create a subclass of `Table` that is relevant to this overlay. * * @see Table#constructor * @param {...*} args Parameters that will be forwarded to the `Table` constructor. * @returns {TopInlineStartCornerOverlayTable} */ createTable() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return new TopInlineStartCornerOverlayTable(...args); } /** * Checks if overlay should be fully rendered. * * @returns {boolean} */ shouldBeRendered() { return this.wtSettings.getSetting('shouldRenderTopOverlay') && this.wtSettings.getSetting('shouldRenderInlineStartOverlay'); } /** * Updates the corner overlay position. * * @returns {boolean} */ resetFixedPosition() { this.updateTrimmingContainer(); if (!this.wot.wtTable.holder.parentNode) { // removed from DOM return false; } const overlayRoot = this.clone.wtTable.holder.parentNode; if (this.trimmingContainer === this.domBindings.rootWindow) { const left = this.inlineStartOverlay.getOverlayOffset() * (this.isRtl() ? -1 : 1); const top = this.topOverlay.getOverlayOffset(); setOverlayPosition(overlayRoot, `${left}px`, `${top}px`); } else { resetCssTransform(overlayRoot); } let tableHeight = outerHeight(this.clone.wtTable.TABLE); const tableWidth = outerWidth(this.clone.wtTable.TABLE); if (!this.wot.wtTable.hasDefinedSize()) { tableHeight = 0; } overlayRoot.style.height = `${tableHeight}px`; overlayRoot.style.width = `${tableWidth}px`; return false; } }