UNPKG

handsontable

Version:

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

113 lines (108 loc) 4.48 kB
"use strict"; exports.__esModule = true; require("core-js/modules/es.array.push.js"); var _event = _interopRequireDefault(require("../event")); var _overlays = _interopRequireDefault(require("../overlays")); var _overlay = require("../overlay"); var _settings = _interopRequireDefault(require("../settings")); var _master = _interopRequireDefault(require("../table/master")); var _viewport = _interopRequireDefault(require("../viewport")); var _base = _interopRequireDefault(require("./_base")); var _manager = require("../selection/manager"); var _object = require("../../../../helpers/object"); var _element = require("../../../../helpers/dom/element"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * @class Walkontable */ class Walkontable extends _base.default { /** * @param {HTMLTableElement} table Main table. * @param {SettingsPure} settings The Walkontable settings. */ constructor(table, settings) { super(table, new _settings.default(settings)); const facadeGetter = this.wtSettings.getSetting('facade', this); // todo rethink. I would like to have no access to facade from the internal scope. this.wtTable = new _master.default(this.getTableDao(), facadeGetter, this.domBindings, this.wtSettings); this.wtViewport = new _viewport.default(this.getViewportDao(), this.domBindings, this.wtSettings, this.eventManager, this.wtTable); this.selectionManager = new _manager.SelectionManager(this.wtSettings.getSetting('selections')); this.wtEvent = new _event.default(facadeGetter, this.domBindings, this.wtSettings, this.eventManager, this.wtTable, this.selectionManager); this.wtOverlays = new _overlays.default( // TODO create DAO and remove reference to the Walkontable instance. this, facadeGetter, this.domBindings, this.wtSettings, this.eventManager, this.wtTable); this.exportSettingsAsClassNames(); this.findOriginalHeaders(); } /** * Export settings as class names added to the parent element of the table. */ exportSettingsAsClassNames() { const toExport = { rowHeaders: 'htRowHeaders', columnHeaders: 'htColumnHeaders' }; const allClassNames = []; const newClassNames = []; (0, _object.objectEach)(toExport, (className, key) => { if (this.wtSettings.getSetting(key).length) { newClassNames.push(className); } allClassNames.push(className); }); (0, _element.removeClass)(this.wtTable.wtRootElement.parentNode, allClassNames); (0, _element.addClass)(this.wtTable.wtRootElement.parentNode, newClassNames); } /** * Gets the overlay instance by its name. * * @param {'inline_start'|'top'|'top_inline_start_corner'|'bottom'|'bottom_inline_start_corner'} overlayName The overlay name. * @returns {Overlay | null} */ getOverlayByName(overlayName) { var _this$wtOverlays; if (!_overlay.CLONE_TYPES.includes(overlayName)) { return null; } const camelCaseOverlay = overlayName.replace(/_([a-z])/g, match => match[1].toUpperCase()); return (_this$wtOverlays = this.wtOverlays[`${camelCaseOverlay}Overlay`]) !== null && _this$wtOverlays !== void 0 ? _this$wtOverlays : null; } /** * @returns {ViewportDao} */ getViewportDao() { const wot = this; return { get wot() { return wot; }, get topOverlayTrimmingContainer() { return wot.wtOverlays.topOverlay.trimmingContainer; }, get inlineStartOverlayTrimmingContainer() { return wot.wtOverlays.inlineStartOverlay.trimmingContainer; }, get topScrollPosition() { return wot.wtOverlays.topOverlay.getScrollPosition(); }, get topParentOffset() { return wot.wtOverlays.topOverlay.getTableParentOffset(); }, get inlineStartScrollPosition() { return wot.wtOverlays.inlineStartOverlay.getScrollPosition(); }, get inlineStartParentOffset() { return wot.wtOverlays.inlineStartOverlay.getTableParentOffset(); }, get topOverlay() { return wot.wtOverlays.topOverlay; // TODO refactoring: move outside dao, use IOC }, get inlineStartOverlay() { return wot.wtOverlays.inlineStartOverlay; // TODO refactoring: move outside dao, use IOC }, get bottomOverlay() { return wot.wtOverlays.bottomOverlay; // TODO refactoring: move outside dao, use IOC } }; } } exports.default = Walkontable;