@genesis-community/golden-layout 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +24 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/ts/config/config.js +870 -0
- package/dist/cjs/ts/config/config.js.map +1 -0
- package/dist/cjs/ts/config/resolved-config.js +477 -0
- package/dist/cjs/ts/config/resolved-config.js.map +1 -0
- package/dist/cjs/ts/container/component-container.js +412 -0
- package/dist/cjs/ts/container/component-container.js.map +1 -0
- package/dist/cjs/ts/controls/browser-popout.js +298 -0
- package/dist/cjs/ts/controls/browser-popout.js.map +1 -0
- package/dist/cjs/ts/controls/drag-proxy.js +221 -0
- package/dist/cjs/ts/controls/drag-proxy.js.map +1 -0
- package/dist/cjs/ts/controls/drag-source.js +149 -0
- package/dist/cjs/ts/controls/drag-source.js.map +1 -0
- package/dist/cjs/ts/controls/drop-target-indicator.js +31 -0
- package/dist/cjs/ts/controls/drop-target-indicator.js.map +1 -0
- package/dist/cjs/ts/controls/header-button.js +34 -0
- package/dist/cjs/ts/controls/header-button.js.map +1 -0
- package/dist/cjs/ts/controls/header.js +366 -0
- package/dist/cjs/ts/controls/header.js.map +1 -0
- package/dist/cjs/ts/controls/splitter.js +42 -0
- package/dist/cjs/ts/controls/splitter.js.map +1 -0
- package/dist/cjs/ts/controls/tab.js +262 -0
- package/dist/cjs/ts/controls/tab.js.map +1 -0
- package/dist/cjs/ts/controls/tabs-container.js +236 -0
- package/dist/cjs/ts/controls/tabs-container.js.map +1 -0
- package/dist/cjs/ts/controls/transition-indicator.js +64 -0
- package/dist/cjs/ts/controls/transition-indicator.js.map +1 -0
- package/dist/cjs/ts/errors/external-error.js +46 -0
- package/dist/cjs/ts/errors/external-error.js.map +1 -0
- package/dist/cjs/ts/errors/internal-error.js +38 -0
- package/dist/cjs/ts/errors/internal-error.js.map +1 -0
- package/dist/cjs/ts/golden-layout.js +299 -0
- package/dist/cjs/ts/golden-layout.js.map +1 -0
- package/dist/cjs/ts/items/component-item.js +190 -0
- package/dist/cjs/ts/items/component-item.js.map +1 -0
- package/dist/cjs/ts/items/component-parentable-item.js +18 -0
- package/dist/cjs/ts/items/component-parentable-item.js.map +1 -0
- package/dist/cjs/ts/items/content-item.js +414 -0
- package/dist/cjs/ts/items/content-item.js.map +1 -0
- package/dist/cjs/ts/items/ground-item.js +352 -0
- package/dist/cjs/ts/items/ground-item.js.map +1 -0
- package/dist/cjs/ts/items/row-or-column.js +609 -0
- package/dist/cjs/ts/items/row-or-column.js.map +1 -0
- package/dist/cjs/ts/items/stack.js +841 -0
- package/dist/cjs/ts/items/stack.js.map +1 -0
- package/dist/cjs/ts/layout-manager.js +1618 -0
- package/dist/cjs/ts/layout-manager.js.map +1 -0
- package/dist/cjs/ts/utils/config-minifier.js +218 -0
- package/dist/cjs/ts/utils/config-minifier.js.map +1 -0
- package/dist/cjs/ts/utils/dom-constants.js +3 -0
- package/dist/cjs/ts/utils/dom-constants.js.map +1 -0
- package/dist/cjs/ts/utils/drag-listener.js +132 -0
- package/dist/cjs/ts/utils/drag-listener.js.map +1 -0
- package/dist/cjs/ts/utils/event-emitter.js +201 -0
- package/dist/cjs/ts/utils/event-emitter.js.map +1 -0
- package/dist/cjs/ts/utils/event-hub.js +135 -0
- package/dist/cjs/ts/utils/event-hub.js.map +1 -0
- package/dist/cjs/ts/utils/i18n-strings.js +74 -0
- package/dist/cjs/ts/utils/i18n-strings.js.map +1 -0
- package/dist/cjs/ts/utils/jquery-legacy.js +15 -0
- package/dist/cjs/ts/utils/jquery-legacy.js.map +1 -0
- package/dist/cjs/ts/utils/style-constants.js +11 -0
- package/dist/cjs/ts/utils/style-constants.js.map +1 -0
- package/dist/cjs/ts/utils/types.js +94 -0
- package/dist/cjs/ts/utils/types.js.map +1 -0
- package/dist/cjs/ts/utils/utils.js +211 -0
- package/dist/cjs/ts/utils/utils.js.map +1 -0
- package/dist/cjs/ts/virtual-layout.js +247 -0
- package/dist/cjs/ts/virtual-layout.js.map +1 -0
- package/dist/css/goldenlayout-base.css +319 -0
- package/dist/css/themes/goldenlayout-borderless-dark-theme.css +136 -0
- package/dist/css/themes/goldenlayout-dark-theme.css +139 -0
- package/dist/css/themes/goldenlayout-light-theme.css +129 -0
- package/dist/css/themes/goldenlayout-soda-theme.css +126 -0
- package/dist/css/themes/goldenlayout-translucent-theme.css +152 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/ts/config/config.js +864 -0
- package/dist/esm/ts/config/config.js.map +1 -0
- package/dist/esm/ts/config/resolved-config.js +474 -0
- package/dist/esm/ts/config/resolved-config.js.map +1 -0
- package/dist/esm/ts/container/component-container.js +408 -0
- package/dist/esm/ts/container/component-container.js.map +1 -0
- package/dist/esm/ts/controls/browser-popout.js +294 -0
- package/dist/esm/ts/controls/browser-popout.js.map +1 -0
- package/dist/esm/ts/controls/drag-proxy.js +217 -0
- package/dist/esm/ts/controls/drag-proxy.js.map +1 -0
- package/dist/esm/ts/controls/drag-source.js +145 -0
- package/dist/esm/ts/controls/drag-source.js.map +1 -0
- package/dist/esm/ts/controls/drop-target-indicator.js +27 -0
- package/dist/esm/ts/controls/drop-target-indicator.js.map +1 -0
- package/dist/esm/ts/controls/header-button.js +30 -0
- package/dist/esm/ts/controls/header-button.js.map +1 -0
- package/dist/esm/ts/controls/header.js +362 -0
- package/dist/esm/ts/controls/header.js.map +1 -0
- package/dist/esm/ts/controls/splitter.js +38 -0
- package/dist/esm/ts/controls/splitter.js.map +1 -0
- package/dist/esm/ts/controls/tab.js +258 -0
- package/dist/esm/ts/controls/tab.js.map +1 -0
- package/dist/esm/ts/controls/tabs-container.js +232 -0
- package/dist/esm/ts/controls/tabs-container.js.map +1 -0
- package/dist/esm/ts/controls/transition-indicator.js +60 -0
- package/dist/esm/ts/controls/transition-indicator.js.map +1 -0
- package/dist/esm/ts/errors/external-error.js +38 -0
- package/dist/esm/ts/errors/external-error.js.map +1 -0
- package/dist/esm/ts/errors/internal-error.js +31 -0
- package/dist/esm/ts/errors/internal-error.js.map +1 -0
- package/dist/esm/ts/golden-layout.js +295 -0
- package/dist/esm/ts/golden-layout.js.map +1 -0
- package/dist/esm/ts/items/component-item.js +186 -0
- package/dist/esm/ts/items/component-item.js.map +1 -0
- package/dist/esm/ts/items/component-parentable-item.js +14 -0
- package/dist/esm/ts/items/component-parentable-item.js.map +1 -0
- package/dist/esm/ts/items/content-item.js +410 -0
- package/dist/esm/ts/items/content-item.js.map +1 -0
- package/dist/esm/ts/items/ground-item.js +348 -0
- package/dist/esm/ts/items/ground-item.js.map +1 -0
- package/dist/esm/ts/items/row-or-column.js +605 -0
- package/dist/esm/ts/items/row-or-column.js.map +1 -0
- package/dist/esm/ts/items/stack.js +837 -0
- package/dist/esm/ts/items/stack.js.map +1 -0
- package/dist/esm/ts/layout-manager.js +1614 -0
- package/dist/esm/ts/layout-manager.js.map +1 -0
- package/dist/esm/ts/utils/config-minifier.js +215 -0
- package/dist/esm/ts/utils/config-minifier.js.map +1 -0
- package/dist/esm/ts/utils/dom-constants.js +2 -0
- package/dist/esm/ts/utils/dom-constants.js.map +1 -0
- package/dist/esm/ts/utils/drag-listener.js +128 -0
- package/dist/esm/ts/utils/drag-listener.js.map +1 -0
- package/dist/esm/ts/utils/event-emitter.js +197 -0
- package/dist/esm/ts/utils/event-emitter.js.map +1 -0
- package/dist/esm/ts/utils/event-hub.js +131 -0
- package/dist/esm/ts/utils/event-hub.js.map +1 -0
- package/dist/esm/ts/utils/i18n-strings.js +71 -0
- package/dist/esm/ts/utils/i18n-strings.js.map +1 -0
- package/dist/esm/ts/utils/jquery-legacy.js +11 -0
- package/dist/esm/ts/utils/jquery-legacy.js.map +1 -0
- package/dist/esm/ts/utils/style-constants.js +8 -0
- package/dist/esm/ts/utils/style-constants.js.map +1 -0
- package/dist/esm/ts/utils/types.js +91 -0
- package/dist/esm/ts/utils/types.js.map +1 -0
- package/dist/esm/ts/utils/utils.js +191 -0
- package/dist/esm/ts/utils/utils.js.map +1 -0
- package/dist/esm/ts/virtual-layout.js +243 -0
- package/dist/esm/ts/virtual-layout.js.map +1 -0
- package/dist/img/lm_close_black.png +0 -0
- package/dist/img/lm_close_tab_white.png +0 -0
- package/dist/img/lm_close_white.png +0 -0
- package/dist/img/lm_maximise_black.png +0 -0
- package/dist/img/lm_maximise_white.png +0 -0
- package/dist/img/lm_minimize_black.png +0 -0
- package/dist/img/lm_minimize_white.png +0 -0
- package/dist/img/lm_popin_black.png +0 -0
- package/dist/img/lm_popin_white.png +0 -0
- package/dist/img/lm_popout_black.png +0 -0
- package/dist/img/lm_popout_white.png +0 -0
- package/dist/less/goldenlayout-base.less +422 -0
- package/dist/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
- package/dist/less/themes/goldenlayout-dark-theme.less +233 -0
- package/dist/less/themes/goldenlayout-light-theme.less +223 -0
- package/dist/less/themes/goldenlayout-soda-theme.less +211 -0
- package/dist/less/themes/goldenlayout-translucent-theme.less +237 -0
- package/dist/scss/goldenlayout-base.scss +422 -0
- package/dist/scss/themes/_goldenlayout-var-theme.scss +232 -0
- package/dist/types/golden-layout-untrimmed.d.ts +3428 -0
- package/dist/types/index.d.ts +2246 -0
- package/dist/types/tsdoc-metadata.json +11 -0
- package/package.json +107 -0
- package/src/TOOLCHAIN.md +54 -0
- package/src/img/lm_close_black.png +0 -0
- package/src/img/lm_close_tab_white.png +0 -0
- package/src/img/lm_close_white.png +0 -0
- package/src/img/lm_maximise_black.png +0 -0
- package/src/img/lm_maximise_white.png +0 -0
- package/src/img/lm_minimize_black.png +0 -0
- package/src/img/lm_minimize_white.png +0 -0
- package/src/img/lm_popin_black.png +0 -0
- package/src/img/lm_popin_white.png +0 -0
- package/src/img/lm_popout_black.png +0 -0
- package/src/img/lm_popout_white.png +0 -0
- package/src/index.ts +21 -0
- package/src/less/goldenlayout-base.less +422 -0
- package/src/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
- package/src/less/themes/goldenlayout-dark-theme.less +233 -0
- package/src/less/themes/goldenlayout-light-theme.less +223 -0
- package/src/less/themes/goldenlayout-soda-theme.less +211 -0
- package/src/less/themes/goldenlayout-translucent-theme.less +237 -0
- package/src/scss/goldenlayout-base.scss +422 -0
- package/src/scss/themes/_goldenlayout-var-theme.scss +232 -0
- package/src/ts/config/config.ts +1283 -0
- package/src/ts/config/resolved-config.ts +621 -0
- package/src/ts/container/component-container.ts +500 -0
- package/src/ts/controls/browser-popout.ts +325 -0
- package/src/ts/controls/drag-proxy.ts +259 -0
- package/src/ts/controls/drag-source.ts +167 -0
- package/src/ts/controls/drop-target-indicator.ts +35 -0
- package/src/ts/controls/header-button.ts +39 -0
- package/src/ts/controls/header.ts +483 -0
- package/src/ts/controls/splitter.ts +50 -0
- package/src/ts/controls/tab.ts +293 -0
- package/src/ts/controls/tabs-container.ts +281 -0
- package/src/ts/controls/transition-indicator.ts +78 -0
- package/src/ts/errors/external-error.ts +39 -0
- package/src/ts/errors/internal-error.ts +34 -0
- package/src/ts/golden-layout.ts +365 -0
- package/src/ts/items/component-item.ts +252 -0
- package/src/ts/items/component-parentable-item.ts +16 -0
- package/src/ts/items/content-item.ts +513 -0
- package/src/ts/items/ground-item.ts +404 -0
- package/src/ts/items/row-or-column.ts +707 -0
- package/src/ts/items/stack.ts +975 -0
- package/src/ts/layout-manager.ts +1862 -0
- package/src/ts/utils/config-minifier.ts +235 -0
- package/src/ts/utils/dom-constants.ts +44 -0
- package/src/ts/utils/drag-listener.ts +178 -0
- package/src/ts/utils/event-emitter.ts +275 -0
- package/src/ts/utils/event-hub.ts +163 -0
- package/src/ts/utils/i18n-strings.ts +96 -0
- package/src/ts/utils/jquery-legacy.ts +12 -0
- package/src/ts/utils/style-constants.ts +6 -0
- package/src/ts/utils/types.ts +145 -0
- package/src/ts/utils/utils.ts +206 -0
- package/src/ts/virtual-layout.ts +328 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { ComponentItemConfig as ConfigComponentItemConfig } from '../config/config'; // remove alias in version 3
|
|
2
|
+
import { ResolvedRowOrColumnItemConfig } from "../config/resolved-config";
|
|
3
|
+
import { UnexpectedNullError } from '../errors/internal-error';
|
|
4
|
+
import { ComponentItem } from '../items/component-item';
|
|
5
|
+
import { GroundItem } from '../items/ground-item';
|
|
6
|
+
import { DragListener } from '../utils/drag-listener';
|
|
7
|
+
import { DragProxy } from './drag-proxy';
|
|
8
|
+
/**
|
|
9
|
+
* Allows for any DOM item to create a component on drag
|
|
10
|
+
* start to be dragged into the Layout
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export class DragSource {
|
|
14
|
+
/** @internal */
|
|
15
|
+
constructor(
|
|
16
|
+
/** @internal */
|
|
17
|
+
_layoutManager,
|
|
18
|
+
/** @internal */
|
|
19
|
+
_element,
|
|
20
|
+
/** @internal */
|
|
21
|
+
_extraAllowableChildTargets,
|
|
22
|
+
/** @internal @deprecated replace with componentItemConfigOrFtn in version 3 */
|
|
23
|
+
_componentTypeOrFtn,
|
|
24
|
+
/** @internal @deprecated remove in version 3 */
|
|
25
|
+
_componentState,
|
|
26
|
+
/** @internal @deprecated remove in version 3 */
|
|
27
|
+
_title,
|
|
28
|
+
/** @internal @deprecated remove in version 3 */
|
|
29
|
+
_id) {
|
|
30
|
+
this._layoutManager = _layoutManager;
|
|
31
|
+
this._element = _element;
|
|
32
|
+
this._extraAllowableChildTargets = _extraAllowableChildTargets;
|
|
33
|
+
this._componentTypeOrFtn = _componentTypeOrFtn;
|
|
34
|
+
this._componentState = _componentState;
|
|
35
|
+
this._title = _title;
|
|
36
|
+
this._id = _id;
|
|
37
|
+
this._dragListener = null;
|
|
38
|
+
this._dummyGroundContainer = document.createElement('div');
|
|
39
|
+
const dummyRootItemConfig = ResolvedRowOrColumnItemConfig.createDefault('row');
|
|
40
|
+
this._dummyGroundContentItem = new GroundItem(this._layoutManager, dummyRootItemConfig, this._dummyGroundContainer);
|
|
41
|
+
this.createDragListener();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Disposes of the drag listeners so the drag source is not usable any more.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
destroy() {
|
|
48
|
+
this.removeDragListener();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Called initially and after every drag
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
createDragListener() {
|
|
55
|
+
this.removeDragListener();
|
|
56
|
+
this._dragListener = new DragListener(this._element, this._extraAllowableChildTargets);
|
|
57
|
+
this._dragListener.on('dragStart', (x, y) => this.onDragStart(x, y));
|
|
58
|
+
this._dragListener.on('dragStop', () => this.onDragStop());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Callback for the DragListener's dragStart event
|
|
62
|
+
*
|
|
63
|
+
* @param x - The x position of the mouse on dragStart
|
|
64
|
+
* @param y - The x position of the mouse on dragStart
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
onDragStart(x, y) {
|
|
68
|
+
var _a;
|
|
69
|
+
const type = 'component';
|
|
70
|
+
let dragSourceItemConfig;
|
|
71
|
+
if (typeof this._componentTypeOrFtn === "function") {
|
|
72
|
+
const ftnDragSourceItemConfig = this._componentTypeOrFtn();
|
|
73
|
+
// If the componentType property exists, then it is already a ComponentItemConfig so nothing to do
|
|
74
|
+
if (DragSource.isDragSourceComponentItemConfig(ftnDragSourceItemConfig)) {
|
|
75
|
+
dragSourceItemConfig = {
|
|
76
|
+
type,
|
|
77
|
+
componentState: ftnDragSourceItemConfig.state,
|
|
78
|
+
componentType: ftnDragSourceItemConfig.type,
|
|
79
|
+
title: (_a = ftnDragSourceItemConfig.title) !== null && _a !== void 0 ? _a : this._title,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
dragSourceItemConfig = ftnDragSourceItemConfig;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
dragSourceItemConfig = {
|
|
88
|
+
type,
|
|
89
|
+
componentState: this._componentState,
|
|
90
|
+
componentType: this._componentTypeOrFtn,
|
|
91
|
+
title: this._title,
|
|
92
|
+
id: this._id,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Create a dummy ContentItem only for drag purposes
|
|
96
|
+
// All ContentItems (except for GroundItem) need a parent. When dragging, the parent is not used.
|
|
97
|
+
// Instead of allowing null parents (as Javascript version did), use a temporary dummy GroundItem parent and add ContentItem to that
|
|
98
|
+
// If this does not work, need to create alternative GroundItem class
|
|
99
|
+
const resolvedItemConfig = ConfigComponentItemConfig.resolve(dragSourceItemConfig, false);
|
|
100
|
+
const componentItem = new ComponentItem(this._layoutManager, resolvedItemConfig, this._dummyGroundContentItem);
|
|
101
|
+
this._dummyGroundContentItem.contentItems.push(componentItem);
|
|
102
|
+
if (this._dragListener === null) {
|
|
103
|
+
throw new UnexpectedNullError('DSODSD66746');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const dragProxy = new DragProxy(x, y, this._dragListener, this._layoutManager, componentItem, this._dummyGroundContentItem);
|
|
107
|
+
const transitionIndicator = this._layoutManager.transitionIndicator;
|
|
108
|
+
if (transitionIndicator === null) {
|
|
109
|
+
throw new UnexpectedNullError('DSODST66746');
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
transitionIndicator.transitionElements(this._element, dragProxy.element);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** @internal */
|
|
117
|
+
onDragStop() {
|
|
118
|
+
// if (this._dummyGroundContentItem === undefined) {
|
|
119
|
+
// throw new UnexpectedUndefinedError('DSODSDRU08116');
|
|
120
|
+
// } else {
|
|
121
|
+
// this._dummyGroundContentItem._$destroy
|
|
122
|
+
// this._dummyGroundContentItem = undefined;
|
|
123
|
+
// }
|
|
124
|
+
this.createDragListener();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Called after every drag and when the drag source is being disposed of.
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
130
|
+
removeDragListener() {
|
|
131
|
+
if (this._dragListener !== null) {
|
|
132
|
+
this._dragListener.destroy();
|
|
133
|
+
this._dragListener = null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** @public */
|
|
138
|
+
(function (DragSource) {
|
|
139
|
+
/** @deprecated remove in version 3 */
|
|
140
|
+
function isDragSourceComponentItemConfig(config) {
|
|
141
|
+
return !("componentType" in config);
|
|
142
|
+
}
|
|
143
|
+
DragSource.isDragSourceComponentItemConfig = isDragSourceComponentItemConfig;
|
|
144
|
+
})(DragSource || (DragSource = {}));
|
|
145
|
+
//# sourceMappingURL=drag-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drag-source.js","sourceRoot":"","sources":["../../../../src/ts/controls/drag-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { numberToPixels, setElementDisplayVisibility } from '../utils/utils';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export class DropTargetIndicator {
|
|
4
|
+
constructor() {
|
|
5
|
+
// Maybe use container instead of Document Body?
|
|
6
|
+
this._element = document.createElement('div');
|
|
7
|
+
this._element.classList.add("lm_dropTargetIndicator" /* DomConstants.ClassName.DropTargetIndicator */);
|
|
8
|
+
const innerElement = document.createElement('div');
|
|
9
|
+
innerElement.classList.add("lm_inner" /* DomConstants.ClassName.Inner */);
|
|
10
|
+
this._element.appendChild(innerElement);
|
|
11
|
+
document.body.appendChild(this._element);
|
|
12
|
+
}
|
|
13
|
+
destroy() {
|
|
14
|
+
this._element.remove();
|
|
15
|
+
}
|
|
16
|
+
highlightArea(area, margin) {
|
|
17
|
+
this._element.style.left = numberToPixels(area.x1 + margin);
|
|
18
|
+
this._element.style.top = numberToPixels(area.y1 + margin);
|
|
19
|
+
this._element.style.width = numberToPixels(area.x2 - area.x1 - margin);
|
|
20
|
+
this._element.style.height = numberToPixels(area.y2 - area.y1 - margin);
|
|
21
|
+
this._element.style.display = 'block';
|
|
22
|
+
}
|
|
23
|
+
hide() {
|
|
24
|
+
setElementDisplayVisibility(this._element, false);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=drop-target-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drop-target-indicator.js","sourceRoot":"","sources":["../../../../src/ts/controls/drop-target-indicator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7E,gBAAgB;AAChB,MAAM,OAAO,mBAAmB;IAG5B;QACI,gDAAgD;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,2EAA4C,CAAC;QACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,YAAY,CAAC,SAAS,CAAC,GAAG,+CAA8B,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAExC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAoB,EAAE,MAAc;QAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI;QACA,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
export class HeaderButton {
|
|
3
|
+
constructor(_header, label, cssClass, _pushEvent) {
|
|
4
|
+
this._header = _header;
|
|
5
|
+
this._pushEvent = _pushEvent;
|
|
6
|
+
this._clickEventListener = (ev) => this.onClick(ev);
|
|
7
|
+
this._touchStartEventListener = (ev) => this.onTouchStart(ev);
|
|
8
|
+
this._element = document.createElement('div');
|
|
9
|
+
this._element.classList.add(cssClass);
|
|
10
|
+
this._element.title = label;
|
|
11
|
+
this._header.on('destroy', () => this.destroy());
|
|
12
|
+
this._element.addEventListener('click', this._clickEventListener, { passive: true });
|
|
13
|
+
this._element.addEventListener('touchstart', this._touchStartEventListener, { passive: true });
|
|
14
|
+
this._header.controlsContainerElement.appendChild(this._element);
|
|
15
|
+
}
|
|
16
|
+
get element() { return this._element; }
|
|
17
|
+
destroy() {
|
|
18
|
+
var _a;
|
|
19
|
+
this._element.removeEventListener('click', this._clickEventListener);
|
|
20
|
+
this._element.removeEventListener('touchstart', this._touchStartEventListener);
|
|
21
|
+
(_a = this._element.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this._element);
|
|
22
|
+
}
|
|
23
|
+
onClick(ev) {
|
|
24
|
+
this._pushEvent(ev);
|
|
25
|
+
}
|
|
26
|
+
onTouchStart(ev) {
|
|
27
|
+
this._pushEvent(ev);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=header-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-button.js","sourceRoot":"","sources":["../../../../src/ts/controls/header-button.ts"],"names":[],"mappings":"AAEA,gBAAgB;AAChB,MAAM,OAAO,YAAY;IAOrB,YAAoB,OAAe,EAAE,KAAa,EAAE,QAAgB,EAAU,UAAkC;QAA5F,YAAO,GAAP,OAAO,CAAQ;QAA2C,eAAU,GAAV,UAAU,CAAwB;QALxG,wBAAmB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,6BAAwB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAKzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAVD,IAAI,OAAO,KAAkB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAYpD,OAAO;;QACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC/E,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEO,OAAO,CAAC,EAAc;QAC1B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,EAAc;QAC/B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;CACJ"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { UnexpectedUndefinedError } from '../errors/internal-error';
|
|
2
|
+
import { EventEmitter } from '../utils/event-emitter';
|
|
3
|
+
import { Side } from '../utils/types';
|
|
4
|
+
import { numberToPixels, setElementDisplayVisibility } from '../utils/utils';
|
|
5
|
+
import { HeaderButton } from './header-button';
|
|
6
|
+
import { TabsContainer } from './tabs-container';
|
|
7
|
+
/**
|
|
8
|
+
* This class represents a header above a Stack ContentItem.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export class Header extends EventEmitter {
|
|
12
|
+
/** @internal */
|
|
13
|
+
constructor(
|
|
14
|
+
/** @internal */
|
|
15
|
+
_layoutManager,
|
|
16
|
+
/** @internal */
|
|
17
|
+
_parent, settings,
|
|
18
|
+
/** @internal */
|
|
19
|
+
_configClosable,
|
|
20
|
+
/** @internal */
|
|
21
|
+
_getActiveComponentItemEvent, closeEvent,
|
|
22
|
+
/** @internal */
|
|
23
|
+
_popoutEvent,
|
|
24
|
+
/** @internal */
|
|
25
|
+
_maximiseToggleEvent,
|
|
26
|
+
/** @internal */
|
|
27
|
+
_clickEvent,
|
|
28
|
+
/** @internal */
|
|
29
|
+
_touchStartEvent,
|
|
30
|
+
/** @internal */
|
|
31
|
+
_componentRemoveEvent,
|
|
32
|
+
/** @internal */
|
|
33
|
+
_componentFocusEvent,
|
|
34
|
+
/** @internal */
|
|
35
|
+
_componentDragStartEvent) {
|
|
36
|
+
super();
|
|
37
|
+
this._layoutManager = _layoutManager;
|
|
38
|
+
this._parent = _parent;
|
|
39
|
+
this._configClosable = _configClosable;
|
|
40
|
+
this._getActiveComponentItemEvent = _getActiveComponentItemEvent;
|
|
41
|
+
this._popoutEvent = _popoutEvent;
|
|
42
|
+
this._maximiseToggleEvent = _maximiseToggleEvent;
|
|
43
|
+
this._clickEvent = _clickEvent;
|
|
44
|
+
this._touchStartEvent = _touchStartEvent;
|
|
45
|
+
this._componentRemoveEvent = _componentRemoveEvent;
|
|
46
|
+
this._componentFocusEvent = _componentFocusEvent;
|
|
47
|
+
this._componentDragStartEvent = _componentDragStartEvent;
|
|
48
|
+
/** @internal */
|
|
49
|
+
this._clickListener = (ev) => this.onClick(ev);
|
|
50
|
+
/** @internal */
|
|
51
|
+
this._touchStartListener = (ev) => this.onTouchStart(ev);
|
|
52
|
+
/** @internal */
|
|
53
|
+
this._rowColumnClosable = true;
|
|
54
|
+
/** @internal */
|
|
55
|
+
this._closeButton = null;
|
|
56
|
+
/** @internal */
|
|
57
|
+
this._popoutButton = null;
|
|
58
|
+
this._tabsContainer = new TabsContainer(this._layoutManager, (item) => this.handleTabInitiatedComponentRemoveEvent(item), (item) => this.handleTabInitiatedComponentFocusEvent(item), (x, y, dragListener, item) => this.handleTabInitiatedDragStartEvent(x, y, dragListener, item), () => this.processTabDropdownActiveChanged());
|
|
59
|
+
this._show = settings.show;
|
|
60
|
+
this._popoutEnabled = settings.popoutEnabled;
|
|
61
|
+
this._popoutLabel = settings.popoutLabel;
|
|
62
|
+
this._maximiseEnabled = settings.maximiseEnabled;
|
|
63
|
+
this._maximiseLabel = settings.maximiseLabel;
|
|
64
|
+
this._minimiseEnabled = settings.minimiseEnabled;
|
|
65
|
+
this._minimiseLabel = settings.minimiseLabel;
|
|
66
|
+
this._closeEnabled = settings.closeEnabled;
|
|
67
|
+
this._closeLabel = settings.closeLabel;
|
|
68
|
+
this._tabDropdownEnabled = settings.tabDropdownEnabled;
|
|
69
|
+
this._tabDropdownLabel = settings.tabDropdownLabel;
|
|
70
|
+
this.setSide(settings.side);
|
|
71
|
+
this._canRemoveComponent = this._configClosable;
|
|
72
|
+
this._element = document.createElement('section');
|
|
73
|
+
this._element.classList.add("lm_header" /* DomConstants.ClassName.Header */);
|
|
74
|
+
this._controlsContainerElement = document.createElement('section');
|
|
75
|
+
this._controlsContainerElement.classList.add("lm_controls" /* DomConstants.ClassName.Controls */);
|
|
76
|
+
this._element.appendChild(this._tabsContainer.element);
|
|
77
|
+
this._element.appendChild(this._controlsContainerElement);
|
|
78
|
+
this._element.appendChild(this._tabsContainer.dropdownElement);
|
|
79
|
+
this._element.addEventListener('click', this._clickListener, { passive: true });
|
|
80
|
+
this._element.addEventListener('touchstart', this._touchStartListener, { passive: true });
|
|
81
|
+
this._documentMouseUpListener = () => this._tabsContainer.hideAdditionalTabsDropdown();
|
|
82
|
+
globalThis.document.addEventListener('mouseup', this._documentMouseUpListener, { passive: true });
|
|
83
|
+
this._tabControlOffset = this._layoutManager.layoutConfig.settings.tabControlOffset;
|
|
84
|
+
if (this._tabDropdownEnabled) {
|
|
85
|
+
this._tabDropdownButton = new HeaderButton(this, this._tabDropdownLabel, "lm_tabdropdown" /* DomConstants.ClassName.TabDropdown */, () => this._tabsContainer.showAdditionalTabsDropdown());
|
|
86
|
+
}
|
|
87
|
+
if (this._popoutEnabled) {
|
|
88
|
+
this._popoutButton = new HeaderButton(this, this._popoutLabel, "lm_popout" /* DomConstants.ClassName.Popout */, () => this.handleButtonPopoutEvent());
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Maximise control - set the component to the full size of the layout
|
|
92
|
+
*/
|
|
93
|
+
if (this._maximiseEnabled) {
|
|
94
|
+
this._maximiseButton = new HeaderButton(this, this._maximiseLabel, "lm_maximise" /* DomConstants.ClassName.Maximise */, (ev) => this.handleButtonMaximiseToggleEvent(ev));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Close button
|
|
98
|
+
*/
|
|
99
|
+
if (this._configClosable) {
|
|
100
|
+
this._closeButton = new HeaderButton(this, this._closeLabel, "lm_close" /* DomConstants.ClassName.Close */, () => closeEvent());
|
|
101
|
+
}
|
|
102
|
+
this.processTabDropdownActiveChanged();
|
|
103
|
+
}
|
|
104
|
+
// /** @internal */
|
|
105
|
+
// private _activeComponentItem: ComponentItem | null = null; // only used to identify active tab
|
|
106
|
+
get show() { return this._show; }
|
|
107
|
+
get side() { return this._side; }
|
|
108
|
+
get leftRightSided() { return this._leftRightSided; }
|
|
109
|
+
get layoutManager() { return this._layoutManager; }
|
|
110
|
+
get parent() { return this._parent; }
|
|
111
|
+
get tabs() { return this._tabsContainer.tabs; }
|
|
112
|
+
get lastVisibleTabIndex() { return this._tabsContainer.lastVisibleTabIndex; }
|
|
113
|
+
get element() { return this._element; }
|
|
114
|
+
get tabsContainerElement() { return this._tabsContainer.element; }
|
|
115
|
+
get controlsContainerElement() { return this._controlsContainerElement; }
|
|
116
|
+
/**
|
|
117
|
+
* Destroys the entire header
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
120
|
+
destroy() {
|
|
121
|
+
this.emit('destroy');
|
|
122
|
+
this._popoutEvent = undefined;
|
|
123
|
+
this._maximiseToggleEvent = undefined;
|
|
124
|
+
this._clickEvent = undefined;
|
|
125
|
+
this._touchStartEvent = undefined;
|
|
126
|
+
this._componentRemoveEvent = undefined;
|
|
127
|
+
this._componentFocusEvent = undefined;
|
|
128
|
+
this._componentDragStartEvent = undefined;
|
|
129
|
+
this._tabsContainer.destroy();
|
|
130
|
+
globalThis.document.removeEventListener('mouseup', this._documentMouseUpListener);
|
|
131
|
+
this._element.remove();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Creates a new tab and associates it with a contentItem
|
|
135
|
+
* @param index - The position of the tab
|
|
136
|
+
* @internal
|
|
137
|
+
*/
|
|
138
|
+
createTab(componentItem, index) {
|
|
139
|
+
this._tabsContainer.createTab(componentItem, index);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Finds a tab based on the contentItem its associated with and removes it.
|
|
143
|
+
* Cannot remove tab if it has the active ComponentItem
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
removeTab(componentItem) {
|
|
147
|
+
this._tabsContainer.removeTab(componentItem);
|
|
148
|
+
}
|
|
149
|
+
/** @internal */
|
|
150
|
+
processActiveComponentChanged(newActiveComponentItem) {
|
|
151
|
+
this._tabsContainer.processActiveComponentChanged(newActiveComponentItem);
|
|
152
|
+
this.updateTabSizes();
|
|
153
|
+
}
|
|
154
|
+
/** @internal */
|
|
155
|
+
setSide(value) {
|
|
156
|
+
this._side = value;
|
|
157
|
+
this._leftRightSided = [Side.right, Side.left].includes(this._side);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Programmatically set closability.
|
|
161
|
+
* @param value - Whether to enable/disable closability.
|
|
162
|
+
* @returns Whether the action was successful
|
|
163
|
+
* @internal
|
|
164
|
+
*/
|
|
165
|
+
setRowColumnClosable(value) {
|
|
166
|
+
this._rowColumnClosable = value;
|
|
167
|
+
this.updateClosability();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Updates the header's closability. If a stack/header is able
|
|
171
|
+
* to close, but has a non closable component added to it, the stack is no
|
|
172
|
+
* longer closable until all components are closable.
|
|
173
|
+
* @internal
|
|
174
|
+
*/
|
|
175
|
+
updateClosability() {
|
|
176
|
+
let isClosable;
|
|
177
|
+
if (!this._configClosable) {
|
|
178
|
+
isClosable = false;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
if (!this._rowColumnClosable) {
|
|
182
|
+
isClosable = false;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
isClosable = true;
|
|
186
|
+
const len = this.tabs.length;
|
|
187
|
+
for (let i = 0; i < len; i++) {
|
|
188
|
+
const tab = this._tabsContainer.tabs[i];
|
|
189
|
+
const item = tab.componentItem;
|
|
190
|
+
if (!item.isClosable) {
|
|
191
|
+
isClosable = false;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (this._closeButton !== null) {
|
|
198
|
+
setElementDisplayVisibility(this._closeButton.element, isClosable);
|
|
199
|
+
}
|
|
200
|
+
if (this._popoutButton !== null) {
|
|
201
|
+
setElementDisplayVisibility(this._popoutButton.element, isClosable);
|
|
202
|
+
}
|
|
203
|
+
this._canRemoveComponent = isClosable || this._tabsContainer.tabCount > 1;
|
|
204
|
+
}
|
|
205
|
+
/** @internal */
|
|
206
|
+
applyFocusedValue(value) {
|
|
207
|
+
if (value) {
|
|
208
|
+
this._element.classList.add("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this._element.classList.remove("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/** @internal */
|
|
215
|
+
processMaximised() {
|
|
216
|
+
if (this._maximiseButton === undefined) {
|
|
217
|
+
throw new UnexpectedUndefinedError('HPMAX16997');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this._maximiseButton.element.setAttribute('title', this._minimiseLabel);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/** @internal */
|
|
224
|
+
processMinimised() {
|
|
225
|
+
if (this._maximiseButton === undefined) {
|
|
226
|
+
throw new UnexpectedUndefinedError('HPMIN16997');
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
this._maximiseButton.element.setAttribute('title', this._maximiseLabel);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Pushes the tabs to the tab dropdown if the available space is not sufficient
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
updateTabSizes() {
|
|
237
|
+
if (this._tabsContainer.tabCount > 0) {
|
|
238
|
+
const headerHeight = this._show ? this._layoutManager.layoutConfig.dimensions.headerHeight : 0;
|
|
239
|
+
if (this._leftRightSided) {
|
|
240
|
+
this._element.style.height = '';
|
|
241
|
+
this._element.style.width = numberToPixels(headerHeight);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
this._element.style.width = '';
|
|
245
|
+
this._element.style.height = numberToPixels(headerHeight);
|
|
246
|
+
}
|
|
247
|
+
let availableWidth;
|
|
248
|
+
if (this._leftRightSided) {
|
|
249
|
+
availableWidth = this._element.offsetHeight - this._controlsContainerElement.offsetHeight - this._tabControlOffset;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
availableWidth = this._element.offsetWidth - this._controlsContainerElement.offsetWidth - this._tabControlOffset;
|
|
253
|
+
}
|
|
254
|
+
this._tabsContainer.updateTabSizes(availableWidth, this._getActiveComponentItemEvent());
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/** @internal */
|
|
258
|
+
handleTabInitiatedComponentRemoveEvent(componentItem) {
|
|
259
|
+
if (this._canRemoveComponent) {
|
|
260
|
+
if (this._componentRemoveEvent === undefined) {
|
|
261
|
+
throw new UnexpectedUndefinedError('HHTCE22294');
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this._componentRemoveEvent(componentItem);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/** @internal */
|
|
269
|
+
handleTabInitiatedComponentFocusEvent(componentItem) {
|
|
270
|
+
if (this._componentFocusEvent === undefined) {
|
|
271
|
+
throw new UnexpectedUndefinedError('HHTAE22294');
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
this._componentFocusEvent(componentItem);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/** @internal */
|
|
278
|
+
handleTabInitiatedDragStartEvent(x, y, dragListener, componentItem) {
|
|
279
|
+
if (!this._canRemoveComponent) {
|
|
280
|
+
dragListener.cancelDrag();
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
if (this._componentDragStartEvent === undefined) {
|
|
284
|
+
throw new UnexpectedUndefinedError('HHTDSE22294');
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
this._componentDragStartEvent(x, y, dragListener, componentItem);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/** @internal */
|
|
292
|
+
processTabDropdownActiveChanged() {
|
|
293
|
+
if (this._tabDropdownButton !== undefined) {
|
|
294
|
+
setElementDisplayVisibility(this._tabDropdownButton.element, this._tabsContainer.dropdownActive);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** @internal */
|
|
298
|
+
handleButtonPopoutEvent() {
|
|
299
|
+
if (this._layoutManager.layoutConfig.settings.popoutWholeStack) {
|
|
300
|
+
if (this._popoutEvent === undefined) {
|
|
301
|
+
throw new UnexpectedUndefinedError('HHBPOE17834');
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
this._popoutEvent();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
const activeComponentItem = this._getActiveComponentItemEvent();
|
|
309
|
+
if (activeComponentItem) {
|
|
310
|
+
activeComponentItem.popout();
|
|
311
|
+
}
|
|
312
|
+
// else: if the stack is empty there won't be an active item (and nothing to popout)
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/** @internal */
|
|
316
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
317
|
+
handleButtonMaximiseToggleEvent(ev) {
|
|
318
|
+
if (this._maximiseToggleEvent === undefined) {
|
|
319
|
+
throw new UnexpectedUndefinedError('HHBMTE16834');
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
this._maximiseToggleEvent();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Invoked when the header's background is clicked (not it's tabs or controls)
|
|
327
|
+
* @internal
|
|
328
|
+
*/
|
|
329
|
+
onClick(event) {
|
|
330
|
+
if (event.target === this._element) {
|
|
331
|
+
this.notifyClick(event);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Invoked when the header's background is touched (not it's tabs or controls)
|
|
336
|
+
* @internal
|
|
337
|
+
*/
|
|
338
|
+
onTouchStart(event) {
|
|
339
|
+
if (event.target === this._element) {
|
|
340
|
+
this.notifyTouchStart(event);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/** @internal */
|
|
344
|
+
notifyClick(ev) {
|
|
345
|
+
if (this._clickEvent === undefined) {
|
|
346
|
+
throw new UnexpectedUndefinedError('HNHC46834');
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
this._clickEvent(ev);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/** @internal */
|
|
353
|
+
notifyTouchStart(ev) {
|
|
354
|
+
if (this._touchStartEvent === undefined) {
|
|
355
|
+
throw new UnexpectedUndefinedError('HNHTS46834');
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
this._touchStartEvent(ev);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/ts/controls/header.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DragListener } from '../utils/drag-listener';
|
|
2
|
+
import { numberToPixels } from '../utils/utils';
|
|
3
|
+
/** @internal */
|
|
4
|
+
export class Splitter {
|
|
5
|
+
constructor(_isVertical, _size, grabSize) {
|
|
6
|
+
this._isVertical = _isVertical;
|
|
7
|
+
this._size = _size;
|
|
8
|
+
this._grabSize = grabSize < this._size ? this._size : grabSize;
|
|
9
|
+
this._element = document.createElement('div');
|
|
10
|
+
this._element.classList.add("lm_splitter" /* DomConstants.ClassName.Splitter */);
|
|
11
|
+
const dragHandleElement = document.createElement('div');
|
|
12
|
+
dragHandleElement.classList.add("lm_drag_handle" /* DomConstants.ClassName.DragHandle */);
|
|
13
|
+
const handleExcessSize = this._grabSize - this._size;
|
|
14
|
+
const handleExcessPos = handleExcessSize / 2;
|
|
15
|
+
if (this._isVertical) {
|
|
16
|
+
dragHandleElement.style.top = numberToPixels(-handleExcessPos);
|
|
17
|
+
dragHandleElement.style.height = numberToPixels(this._size + handleExcessSize);
|
|
18
|
+
this._element.classList.add("lm_vertical" /* DomConstants.ClassName.Vertical */);
|
|
19
|
+
this._element.style.height = numberToPixels(this._size);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
dragHandleElement.style.left = numberToPixels(-handleExcessPos);
|
|
23
|
+
dragHandleElement.style.width = numberToPixels(this._size + handleExcessSize);
|
|
24
|
+
this._element.classList.add("lm_horizontal" /* DomConstants.ClassName.Horizontal */);
|
|
25
|
+
this._element.style.width = numberToPixels(this._size);
|
|
26
|
+
}
|
|
27
|
+
this._element.appendChild(dragHandleElement);
|
|
28
|
+
this._dragListener = new DragListener(this._element, [dragHandleElement]);
|
|
29
|
+
}
|
|
30
|
+
get element() { return this._element; }
|
|
31
|
+
destroy() {
|
|
32
|
+
this._element.remove();
|
|
33
|
+
}
|
|
34
|
+
on(eventName, callback) {
|
|
35
|
+
this._dragListener.on(eventName, callback);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=splitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../../src/ts/controls/splitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,gBAAgB;AAChB,MAAM,OAAO,QAAQ;IAQjB,YAAoB,WAAoB,EAAU,KAAa,EAAE,QAAgB;QAA7D,gBAAW,GAAX,WAAW,CAAS;QAAU,UAAK,GAAL,KAAK,CAAQ;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE/D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,qDAAiC,CAAC;QAC7D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,iBAAiB,CAAC,SAAS,CAAC,GAAG,0DAAmC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,MAAM,eAAe,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;YAC/D,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,qDAAiC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3D;aAAM;YACH,iBAAiB,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;YAChE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,yDAAmC,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IA5BD,IAAI,OAAO,KAAqB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IA8BvD,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,EAAE,CAA8C,SAAY,EAAE,QAAkC;QAC5F,IAAI,CAAC,aAAa,CAAC,EAAE,CAAI,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;CACJ"}
|