@worktile/theia 15.0.11 → 15.0.13
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/constants/node-types.d.ts +4 -0
- package/editor.component.d.ts +1 -3
- package/esm2020/constants/node-types.mjs +6 -1
- package/esm2020/editor.component.mjs +1 -13
- package/esm2020/plugins/paint-format/paint-format.editor.mjs +3 -3
- package/esm2020/plugins/table/components/table.component.mjs +102 -39
- package/esm2020/plugins/table/components/td/td.component.mjs +8 -7
- package/esm2020/plugins/table/table.types.mjs +2 -2
- package/esm2020/plugins/table/utils/get-grid-columns.mjs +3 -3
- package/esm2020/services/context.service.mjs +30 -8
- package/fesm2015/worktile-theia.mjs +154 -72
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +146 -68
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/table/components/table.component.d.ts +6 -1
- package/plugins/table/components/table.component.scss +1 -2
- package/plugins/table/table.types.d.ts +1 -1
- package/plugins/table/utils/get-grid-columns.d.ts +2 -2
- package/services/context.service.d.ts +14 -3
|
@@ -25,12 +25,10 @@ import * as i8 from 'ngx-tethys/tooltip';
|
|
|
25
25
|
import { ThyTooltipModule } from 'ngx-tethys/tooltip';
|
|
26
26
|
import * as i8$1 from 'ngx-tethys/divider';
|
|
27
27
|
import { ThyDividerComponent, ThyDividerModule } from 'ngx-tethys/divider';
|
|
28
|
-
import * as i2$2 from '@angular/cdk/scrolling';
|
|
29
|
-
import { CdkScrollable, ScrollingModule } from '@angular/cdk/scrolling';
|
|
30
28
|
import { mixinUnsubscribe, MixinBase, ScrollToService } from 'ngx-tethys/core';
|
|
31
29
|
import { isKeyHotkey, isHotkey } from 'is-hotkey';
|
|
32
30
|
import { Subject, fromEvent, timer, combineLatest, Observable, BehaviorSubject, merge, ReplaySubject } from 'rxjs';
|
|
33
|
-
import { takeUntil, debounceTime, take, delay, map as map$1,
|
|
31
|
+
import { takeUntil, debounceTime, take, delay, map as map$1, filter, startWith, distinctUntilChanged, skip, share, mapTo, pairwise } from 'rxjs/operators';
|
|
34
32
|
import * as i5 from 'ngx-tethys/input';
|
|
35
33
|
import { ThyInputModule } from 'ngx-tethys/input';
|
|
36
34
|
import * as i10 from 'ngx-tethys/empty';
|
|
@@ -63,6 +61,8 @@ import * as i7$1 from 'ngx-tethys/input-number';
|
|
|
63
61
|
import { ThyInputNumberModule } from 'ngx-tethys/input-number';
|
|
64
62
|
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
65
63
|
import { PortalInjector, ComponentPortal } from '@angular/cdk/portal';
|
|
64
|
+
import * as i2$2 from '@angular/cdk/scrolling';
|
|
65
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
66
66
|
import { ThyAutocompleteModule } from 'ngx-tethys/autocomplete';
|
|
67
67
|
import { ThyAvatarModule } from 'ngx-tethys/avatar';
|
|
68
68
|
import { ThyDialogModule } from 'ngx-tethys/dialog';
|
|
@@ -215,6 +215,11 @@ var Indents;
|
|
|
215
215
|
Indents["indentRight"] = "indent-right";
|
|
216
216
|
Indents["indentLeft"] = "indent-left";
|
|
217
217
|
})(Indents || (Indents = {}));
|
|
218
|
+
var ScrollDirection;
|
|
219
|
+
(function (ScrollDirection) {
|
|
220
|
+
ScrollDirection[ScrollDirection["X"] = 0] = "X";
|
|
221
|
+
ScrollDirection[ScrollDirection["Y"] = 1] = "Y";
|
|
222
|
+
})(ScrollDirection || (ScrollDirection = {}));
|
|
218
223
|
var MarkTypes;
|
|
219
224
|
(function (MarkTypes) {
|
|
220
225
|
MarkTypes["bold"] = "bold";
|
|
@@ -3156,6 +3161,7 @@ class TheContextService {
|
|
|
3156
3161
|
this.containerScrolled$ = new Subject();
|
|
3157
3162
|
this.uploadingStatus$ = new Subject();
|
|
3158
3163
|
this.containerResized$ = new Subject();
|
|
3164
|
+
this.windowResized$ = new Subject();
|
|
3159
3165
|
this.ngZone.runOutsideAngular(() => {
|
|
3160
3166
|
this.onMouseUp$ = fromEvent(window, `mouseup`).pipe(takeUntil(this.destroy$));
|
|
3161
3167
|
this.onMouseMove$ = fromEvent(window, `mousemove`).pipe(takeUntil(this.destroy$));
|
|
@@ -3166,6 +3172,7 @@ class TheContextService {
|
|
|
3166
3172
|
this.options = options;
|
|
3167
3173
|
this.rebindContainerScroll();
|
|
3168
3174
|
this.bindContainerResize();
|
|
3175
|
+
this.bindWindowResize();
|
|
3169
3176
|
}
|
|
3170
3177
|
rebindContainerScroll() {
|
|
3171
3178
|
this.scrollSubscription?.unsubscribe();
|
|
@@ -3174,16 +3181,33 @@ class TheContextService {
|
|
|
3174
3181
|
this.options.nativeElement.querySelector(this.options.theOptions?.scrollContainer);
|
|
3175
3182
|
if (containerElement) {
|
|
3176
3183
|
this.ngZone.runOutsideAngular(() => {
|
|
3184
|
+
let previousContainerScroll = { x: 0, y: 0 };
|
|
3177
3185
|
this.scrollSubscription = fromEvent(containerElement, 'scroll').subscribe(event => {
|
|
3178
|
-
|
|
3186
|
+
const entires = { event, direction: ScrollDirection.Y };
|
|
3187
|
+
const target = event.target;
|
|
3188
|
+
const [x, y] = [target.scrollLeft, target.scrollTop];
|
|
3189
|
+
if (x !== previousContainerScroll.x) {
|
|
3190
|
+
entires.direction = ScrollDirection.X;
|
|
3191
|
+
}
|
|
3192
|
+
if (y !== previousContainerScroll.y) {
|
|
3193
|
+
entires.direction = ScrollDirection.Y;
|
|
3194
|
+
}
|
|
3195
|
+
previousContainerScroll = { x, y };
|
|
3196
|
+
this.containerScrolled$.next(entires);
|
|
3179
3197
|
});
|
|
3180
3198
|
});
|
|
3181
3199
|
}
|
|
3182
3200
|
}
|
|
3183
3201
|
}
|
|
3184
3202
|
bindContainerResize() {
|
|
3185
|
-
|
|
3186
|
-
|
|
3203
|
+
this.containerResizeObserver = this.elementResize(this.options.nativeElement, this.containerResized$);
|
|
3204
|
+
}
|
|
3205
|
+
bindWindowResize() {
|
|
3206
|
+
this.windowResizeObserver = this.elementResize(document.documentElement, this.windowResized$);
|
|
3207
|
+
}
|
|
3208
|
+
elementResize(element, subject) {
|
|
3209
|
+
let previousContainerRect = element.getBoundingClientRect();
|
|
3210
|
+
const resizeObserver = new ResizeObserver(entires => {
|
|
3187
3211
|
const currentRect = entires[0].contentRect;
|
|
3188
3212
|
const result = { entry: entires[0], widthChanged: false, heightChanged: false };
|
|
3189
3213
|
if (currentRect.width !== previousContainerRect.width) {
|
|
@@ -3193,9 +3217,10 @@ class TheContextService {
|
|
|
3193
3217
|
result.heightChanged = true;
|
|
3194
3218
|
}
|
|
3195
3219
|
previousContainerRect = currentRect;
|
|
3196
|
-
|
|
3220
|
+
subject.next(result);
|
|
3197
3221
|
});
|
|
3198
|
-
|
|
3222
|
+
resizeObserver.observe(element);
|
|
3223
|
+
return resizeObserver;
|
|
3199
3224
|
}
|
|
3200
3225
|
getOptions() {
|
|
3201
3226
|
if (!this.options.width) {
|
|
@@ -3227,7 +3252,9 @@ class TheContextService {
|
|
|
3227
3252
|
this.uploadingStatus$.complete();
|
|
3228
3253
|
this.containerScrolled$?.complete();
|
|
3229
3254
|
this.containerResized$?.complete();
|
|
3230
|
-
this.
|
|
3255
|
+
this.containerResizeObserver?.disconnect();
|
|
3256
|
+
this.windowResized$?.complete();
|
|
3257
|
+
this.windowResizeObserver?.disconnect();
|
|
3231
3258
|
this.scrollSubscription?.unsubscribe();
|
|
3232
3259
|
this.destroy$.next();
|
|
3233
3260
|
this.destroy$.complete();
|
|
@@ -3404,7 +3431,7 @@ const TABLE_INSERT_MASK$1 = 19;
|
|
|
3404
3431
|
const TABLE_BORDER$1 = 1;
|
|
3405
3432
|
const TABLE_PADDING$1 = 8;
|
|
3406
3433
|
const TABLE_CONTROL = 11;
|
|
3407
|
-
const TABLE_NUMBER_COLUMN =
|
|
3434
|
+
const TABLE_NUMBER_COLUMN = 44;
|
|
3408
3435
|
const TableWithStickyRowClass = 'the-table-with-sticky-row';
|
|
3409
3436
|
var FullscreenState;
|
|
3410
3437
|
(function (FullscreenState) {
|
|
@@ -10710,7 +10737,7 @@ const PaintFormatEditor = {
|
|
|
10710
10737
|
const element = EDITOR_TO_ELEMENT.get(editor);
|
|
10711
10738
|
element.classList.add('pointer-paint');
|
|
10712
10739
|
contextService.onMouseUp$
|
|
10713
|
-
.pipe(
|
|
10740
|
+
.pipe(filter(event => element.contains(event.target)), take(1))
|
|
10714
10741
|
.subscribe((event) => {
|
|
10715
10742
|
if (contextService.paintFormatStatus.isActive) {
|
|
10716
10743
|
PaintFormatEditor.formatBrush(editor);
|
|
@@ -12514,10 +12541,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
12514
12541
|
}] });
|
|
12515
12542
|
|
|
12516
12543
|
/**
|
|
12517
|
-
*
|
|
12544
|
+
* 获取标题行网格列宽值
|
|
12518
12545
|
* @param editor
|
|
12519
12546
|
* @param headerRow 标题行
|
|
12520
|
-
* @param
|
|
12547
|
+
* @param cellsWidth
|
|
12521
12548
|
* @returns string
|
|
12522
12549
|
*/
|
|
12523
12550
|
const getGridColumns = (headerRow, cellsWidth) => {
|
|
@@ -12749,6 +12776,11 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
12749
12776
|
this.destroy$ = new Subject();
|
|
12750
12777
|
this.rowControls = [];
|
|
12751
12778
|
this.colControls = [];
|
|
12779
|
+
this.getColControlButtonWidth = () => {
|
|
12780
|
+
let result = 0;
|
|
12781
|
+
result += this.element.options?.numberedColumn ? TABLE_NUMBER_COLUMN : 0;
|
|
12782
|
+
return result;
|
|
12783
|
+
};
|
|
12752
12784
|
}
|
|
12753
12785
|
get columns() {
|
|
12754
12786
|
return this.element && this.element.columns;
|
|
@@ -12779,6 +12811,7 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
12779
12811
|
this.useRowControls();
|
|
12780
12812
|
this.setHeaderCellStyle();
|
|
12781
12813
|
this.setHeaderRowShadow();
|
|
12814
|
+
this.setHeaderRowLeftStyle();
|
|
12782
12815
|
this.cdr.markForCheck();
|
|
12783
12816
|
});
|
|
12784
12817
|
this.getIsInTable();
|
|
@@ -12866,32 +12899,42 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
12866
12899
|
this.cdr.markForCheck();
|
|
12867
12900
|
}
|
|
12868
12901
|
this.setHeaderCellStyle();
|
|
12902
|
+
const { left } = this.nativeElement.getBoundingClientRect();
|
|
12903
|
+
this.tableRectLeft = left;
|
|
12869
12904
|
this.subscribeScrollContainerScroll();
|
|
12870
12905
|
this.contextService.containerResized$.pipe(takeUntil(this.destroy$)).subscribe(result => {
|
|
12871
12906
|
if (result.widthChanged) {
|
|
12872
|
-
this.
|
|
12907
|
+
this.setGridColumnsStyle();
|
|
12908
|
+
this.setStickyRowStyle();
|
|
12873
12909
|
this.bindTableScrollingShadow();
|
|
12874
12910
|
}
|
|
12875
12911
|
});
|
|
12912
|
+
this.contextService.windowResized$.pipe(takeUntil(this.destroy$)).subscribe(result => {
|
|
12913
|
+
if (result.widthChanged) {
|
|
12914
|
+
this.setHeaderRowShadow();
|
|
12915
|
+
this.setHeaderRowLeftStyle();
|
|
12916
|
+
}
|
|
12917
|
+
});
|
|
12876
12918
|
});
|
|
12877
12919
|
}
|
|
12878
12920
|
/* 给标题行的左/右加阴影 */
|
|
12879
12921
|
setHeaderRowShadow() {
|
|
12880
12922
|
// 固定标题行遮盖
|
|
12881
|
-
this.tableWrapper.nativeElement
|
|
12882
|
-
const headerRowRightShadow = this.headerRowRightShadow.nativeElement;
|
|
12883
|
-
const headerRowLeftShadow = this.headerRowLeftShadow.nativeElement;
|
|
12923
|
+
this.renderer.setStyle(this.tableWrapper.nativeElement, 'z-index', this.isStickyTop ? '3' : '0');
|
|
12884
12924
|
if (this.isLeftShadow || this.isRightShadow) {
|
|
12885
12925
|
let { height, top } = this.calcHeaderRowShadow();
|
|
12886
|
-
let { left, width } = this.
|
|
12887
|
-
if (this.isRightShadow) {
|
|
12888
|
-
headerRowRightShadow
|
|
12889
|
-
|
|
12890
|
-
|
|
12926
|
+
let { left, width } = this.nativeElement.getBoundingClientRect();
|
|
12927
|
+
if (this.isRightShadow && this.headerRowRightShadow) {
|
|
12928
|
+
const headerRowRightShadow = this.headerRowRightShadow.nativeElement;
|
|
12929
|
+
this.renderer.setStyle(headerRowRightShadow, 'height', `${height}px`);
|
|
12930
|
+
this.renderer.setStyle(headerRowRightShadow, 'top', `${top}px`);
|
|
12931
|
+
this.renderer.setStyle(headerRowRightShadow, 'left', `${left + width - 8}px`);
|
|
12891
12932
|
}
|
|
12892
|
-
if (this.isLeftShadow) {
|
|
12893
|
-
headerRowLeftShadow
|
|
12894
|
-
|
|
12933
|
+
if (this.isLeftShadow && this.headerRowLeftShadow) {
|
|
12934
|
+
const headerRowLeftShadow = this.headerRowLeftShadow.nativeElement;
|
|
12935
|
+
this.renderer.setStyle(headerRowLeftShadow, 'height', `${height}px`);
|
|
12936
|
+
this.renderer.setStyle(headerRowLeftShadow, 'top', `${top}px`);
|
|
12937
|
+
this.renderer.setStyle(headerRowLeftShadow, 'left', `${left + this.getColControlButtonWidth()}px`);
|
|
12895
12938
|
}
|
|
12896
12939
|
}
|
|
12897
12940
|
}
|
|
@@ -12910,20 +12953,28 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
12910
12953
|
subscribeScrollContainerScroll() {
|
|
12911
12954
|
this.ngZone.runOutsideAngular(() => {
|
|
12912
12955
|
this.contextService.containerScrolled$
|
|
12913
|
-
.pipe(takeUntil(this.destroy$), map$1(
|
|
12914
|
-
|
|
12915
|
-
|
|
12916
|
-
|
|
12917
|
-
|
|
12918
|
-
|
|
12919
|
-
|
|
12920
|
-
|
|
12921
|
-
|
|
12922
|
-
|
|
12923
|
-
|
|
12924
|
-
|
|
12925
|
-
const
|
|
12926
|
-
this.isStickyTop =
|
|
12956
|
+
.pipe(takeUntil(this.destroy$), map$1(entires => {
|
|
12957
|
+
const { event, direction } = entires;
|
|
12958
|
+
if (direction === ScrollDirection.X) {
|
|
12959
|
+
const { left } = this.nativeElement.getBoundingClientRect();
|
|
12960
|
+
this.isScrollX = this.tableRectLeft !== left;
|
|
12961
|
+
this.setHeaderRowLeftStyle();
|
|
12962
|
+
}
|
|
12963
|
+
if (direction === ScrollDirection.Y) {
|
|
12964
|
+
this.scrollContainerTop = event.target.getBoundingClientRect().top;
|
|
12965
|
+
const clientRect = this.theTableElement.nativeElement.getBoundingClientRect();
|
|
12966
|
+
const headerTopHeight = this.isInTable ? -19 : 11;
|
|
12967
|
+
const headerRowHeight = this.calculateRowControls()[0]?.height;
|
|
12968
|
+
const top = clientRect.top + headerTopHeight;
|
|
12969
|
+
this.isStickyTop =
|
|
12970
|
+
top <= this.scrollContainerTop + 8 &&
|
|
12971
|
+
clientRect.bottom - this.scrollContainerTop >= headerRowHeight &&
|
|
12972
|
+
this.freezeRowPipe.transform(this.element, this.headerRow, this.tablePluginOptions);
|
|
12973
|
+
// 标题行内容超过固定高度时移除冻结
|
|
12974
|
+
if (this.isStickyTop) {
|
|
12975
|
+
const maxHeaderRowHeight = (24 + 8) * 11; // 超出 11 行,取消冻结
|
|
12976
|
+
this.isStickyTop = headerRowHeight <= maxHeaderRowHeight;
|
|
12977
|
+
}
|
|
12927
12978
|
}
|
|
12928
12979
|
return this.isStickyTop;
|
|
12929
12980
|
}), distinctUntilChanged())
|
|
@@ -12987,6 +13038,7 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
12987
13038
|
this.setGridColumnsStyle();
|
|
12988
13039
|
this.setStickyRowStyle();
|
|
12989
13040
|
this.setHeaderRowShadow();
|
|
13041
|
+
this.setHeaderRowLeftStyle();
|
|
12990
13042
|
}
|
|
12991
13043
|
setGridColumnsStyle() {
|
|
12992
13044
|
const colControl = this.columnControlsWrapper.nativeElement;
|
|
@@ -13026,6 +13078,7 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
13026
13078
|
const tablePaddingTop = headerRowHeight + 11; // 标题行高 + ctrl btn(11px)高度
|
|
13027
13079
|
this.renderer.setStyle(this.theTableElement.nativeElement, 'padding-top', tablePaddingTop + 'px');
|
|
13028
13080
|
this.renderer.setStyle(rowControlInner, 'padding-top', tablePaddingTop + 'px');
|
|
13081
|
+
this.renderer.setStyle(this.tableRowControlsWrapper.nativeElement, 'z-index', '4');
|
|
13029
13082
|
}
|
|
13030
13083
|
else {
|
|
13031
13084
|
this.renderer.removeClass(this.nativeElement, TableWithStickyRowClass);
|
|
@@ -13034,17 +13087,22 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
13034
13087
|
});
|
|
13035
13088
|
this.renderer.setStyle(this.theTableElement.nativeElement, 'padding-top', null);
|
|
13036
13089
|
this.renderer.setStyle(rowControlInner, 'padding-top', null);
|
|
13090
|
+
this.renderer.setStyle(this.tableRowControlsWrapper.nativeElement, 'z-index', '1');
|
|
13037
13091
|
}
|
|
13038
|
-
|
|
13039
|
-
if (this.initialized) {
|
|
13040
|
-
this.setRowControlButtonStyle(
|
|
13092
|
+
const rowControlButton = this.rowControlsButtonWrapper.first?.nativeElement;
|
|
13093
|
+
if (this.initialized && rowControlButton) {
|
|
13094
|
+
this.setRowControlButtonStyle(rowControlButton);
|
|
13041
13095
|
}
|
|
13042
13096
|
else {
|
|
13043
|
-
setTimeout
|
|
13097
|
+
// setTimeout: 需要等待 rowControls 在 dom 中渲染完毕后才能获取到 rowControlButton
|
|
13098
|
+
setTimeout(() => this.setRowControlButtonStyle(rowControlButton));
|
|
13044
13099
|
}
|
|
13045
13100
|
}
|
|
13046
|
-
setRowControlButtonStyle(
|
|
13047
|
-
const
|
|
13101
|
+
setRowControlButtonStyle(rowControlButton) {
|
|
13102
|
+
const numberedColumn = this.element.options?.numberedColumn;
|
|
13103
|
+
if (!rowControlButton) {
|
|
13104
|
+
rowControlButton = this.rowControlsButtonWrapper.first?.nativeElement;
|
|
13105
|
+
}
|
|
13048
13106
|
if (this.isStickyTop) {
|
|
13049
13107
|
if ((this.isInTable || numberedColumn) && rowControlButton) {
|
|
13050
13108
|
this.renderer.setStyle(rowControlButton, 'top', this.scrollContainerTop + 'px');
|
|
@@ -13239,9 +13297,16 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
13239
13297
|
}
|
|
13240
13298
|
getDefaultCellWidth() {
|
|
13241
13299
|
const tr = this.element.children[0];
|
|
13242
|
-
|
|
13300
|
+
let width = this.elementRef.nativeElement.getBoundingClientRect().width;
|
|
13301
|
+
if (this.rowControlsInner) {
|
|
13302
|
+
width -= this.rowControlsInner.nativeElement.getBoundingClientRect().width;
|
|
13303
|
+
if (this.isCollapsedAndNonReadonly) {
|
|
13304
|
+
// 聚焦之后会向左偏移一个 control(-11),见 .the-table-row-controls-wrapper
|
|
13305
|
+
width += TABLE_CONTROL;
|
|
13306
|
+
}
|
|
13307
|
+
}
|
|
13243
13308
|
return tr.children.map(cell => {
|
|
13244
|
-
return Number((
|
|
13309
|
+
return Number((width / tr.children.length).toFixed(2));
|
|
13245
13310
|
});
|
|
13246
13311
|
}
|
|
13247
13312
|
initializeColumns() {
|
|
@@ -13408,7 +13473,7 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
13408
13473
|
const stickyRows = this.elementRef.nativeElement.querySelectorAll('.the-sticky-row');
|
|
13409
13474
|
const setStickyRowPointerEvents = (pointerEventsStyle) => {
|
|
13410
13475
|
for (const stiRow of stickyRows) {
|
|
13411
|
-
|
|
13476
|
+
this.renderer.setStyle(stiRow, 'pointer-events', pointerEventsStyle);
|
|
13412
13477
|
}
|
|
13413
13478
|
};
|
|
13414
13479
|
let timer;
|
|
@@ -13444,6 +13509,27 @@ class TheTableComponent extends TheBaseElementComponent {
|
|
|
13444
13509
|
}
|
|
13445
13510
|
}
|
|
13446
13511
|
}
|
|
13512
|
+
setHeaderRowLeftStyle() {
|
|
13513
|
+
const stickyRows = this.elementRef.nativeElement.querySelectorAll('.the-sticky-row');
|
|
13514
|
+
const cornerControl = this.cornerControl.nativeElement;
|
|
13515
|
+
const rowControl = this.rowControlsButtonWrapper.first?.nativeElement;
|
|
13516
|
+
const stickyElements = [...stickyRows, cornerControl, rowControl];
|
|
13517
|
+
const { left } = this.nativeElement.getBoundingClientRect();
|
|
13518
|
+
const buffer = this.isInTable ? -TABLE_CONTROL : 0;
|
|
13519
|
+
if (this.isStickyTop && this.isScrollX) {
|
|
13520
|
+
this.setHeaderRowShadow();
|
|
13521
|
+
stickyRows.forEach((element) => {
|
|
13522
|
+
this.renderer.setStyle(element, 'left', `${left + this.getColControlButtonWidth()}px`);
|
|
13523
|
+
});
|
|
13524
|
+
this.renderer.setStyle(cornerControl, 'left', `${left + buffer}px`);
|
|
13525
|
+
rowControl && this.renderer.setStyle(rowControl, 'left', `${left + buffer}px`);
|
|
13526
|
+
}
|
|
13527
|
+
else {
|
|
13528
|
+
stickyElements.forEach((element) => {
|
|
13529
|
+
element && this.renderer.setStyle(element, 'left', null);
|
|
13530
|
+
});
|
|
13531
|
+
}
|
|
13532
|
+
}
|
|
13447
13533
|
trackByFnRowControls(index) {
|
|
13448
13534
|
return index;
|
|
13449
13535
|
}
|
|
@@ -13469,7 +13555,7 @@ TheTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
13469
13555
|
provide: THE_TABLE_COMPONENT_TOKEN,
|
|
13470
13556
|
useExisting: TheTableComponent
|
|
13471
13557
|
}
|
|
13472
|
-
], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }, { propertyName: "columnControlsWrapper", first: true, predicate: ["columnControlsWrapper"], descendants: true, read: ElementRef }, { propertyName: "cornerControl", first: true, predicate: ["cornerControl"], descendants: true, read: ElementRef }, { propertyName: "rowControlsInner", first: true, predicate: ["rowControlsInner"], descendants: true, read: ElementRef }, { propertyName: "headerRowLeftShadow", first: true, predicate: ["headerRowLeftShadow"], descendants: true, read: ElementRef }, { propertyName: "headerRowRightShadow", first: true, predicate: ["headerRowRightShadow"], descendants: true, read: ElementRef }, { propertyName: "colgroup", first: true, predicate: ["colgroup"], descendants: true, read: ElementRef }, { propertyName: "rowControlsButtonWrapper", predicate: ["rowControlsButtonWrapper"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"the-table-container\" theColumnResize>\n <div class=\"the-table-row-controls-wrapper\">\n <div\n class=\"the-table-corner-controls the-sticky-corner-controls\"\n #cornerControl\n [ngClass]=\"{\n visible: !readonly && (isInTable || tableStore.isRightClicking),\n 'control-active': isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-table-corner-controls-insert-row-marker\" *ngIf=\"!headerRow\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\" *ngIf=\"!element.options?.headerColumn\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\" #rowControlsInner>\n <div\n class=\"the-table-row-controls-button-wrap\"\n #rowControlsButtonWrapper\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && (isInTable || tableStore.isRightClicking) && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n class=\"the-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ headerRow && i === 0 ? '' : headerRow ? i : i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-table\" #theTable>\n <colgroup #colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper the-sticky-row\" #columnControlsWrapper>\n <th\n #colControl\n class=\"the-table-col-controls\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMousedown($event, i)\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable || tableStore.isRightClicking\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n [parentElement]=\"colControl\"\n >\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n <div
|
|
13558
|
+
], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }, { propertyName: "tableRowControlsWrapper", first: true, predicate: ["tableRowControlsWrapper"], descendants: true, read: ElementRef }, { propertyName: "columnControlsWrapper", first: true, predicate: ["columnControlsWrapper"], descendants: true, read: ElementRef }, { propertyName: "cornerControl", first: true, predicate: ["cornerControl"], descendants: true, read: ElementRef }, { propertyName: "rowControlsInner", first: true, predicate: ["rowControlsInner"], descendants: true, read: ElementRef }, { propertyName: "headerRowLeftShadow", first: true, predicate: ["headerRowLeftShadow"], descendants: true, read: ElementRef }, { propertyName: "headerRowRightShadow", first: true, predicate: ["headerRowRightShadow"], descendants: true, read: ElementRef }, { propertyName: "colgroup", first: true, predicate: ["colgroup"], descendants: true, read: ElementRef }, { propertyName: "rowControlsButtonWrapper", predicate: ["rowControlsButtonWrapper"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"the-table-container\" theColumnResize>\n <div class=\"the-table-row-controls-wrapper\" #tableRowControlsWrapper>\n <div\n class=\"the-table-corner-controls the-sticky-corner-controls\"\n #cornerControl\n [ngClass]=\"{\n visible: !readonly && (isInTable || tableStore.isRightClicking),\n 'control-active': isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-table-corner-controls-insert-row-marker\" *ngIf=\"!headerRow\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\" *ngIf=\"!element.options?.headerColumn\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\" #rowControlsInner>\n <div\n class=\"the-table-row-controls-button-wrap\"\n #rowControlsButtonWrapper\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && (isInTable || tableStore.isRightClicking) && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n class=\"the-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ headerRow && i === 0 ? '' : headerRow ? i : i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-table\" #theTable>\n <colgroup #colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper the-sticky-row\" #columnControlsWrapper>\n <th\n #colControl\n class=\"the-table-col-controls\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMousedown($event, i)\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable || tableStore.isRightClicking\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n [parentElement]=\"colControl\"\n >\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n <div\n class=\"header-row-shadow header-row-left-shadow\"\n #headerRowLeftShadow\n contenteditable=\"false\"\n *ngIf=\"!element.options?.headerColumn\"\n ></div>\n <div class=\"header-row-shadow header-row-right-shadow\" #headerRowRightShadow contenteditable=\"false\"></div>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "directive", type: TheColumnResizeDirective, selector: "div[theColumnResize]" }, { kind: "component", type: TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: ["type", "at", "tableStore", "parentElement"] }] });
|
|
13473
13559
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheTableComponent, decorators: [{
|
|
13474
13560
|
type: Component,
|
|
13475
13561
|
args: [{ selector: 'the-table, [theTable]', providers: [
|
|
@@ -13489,7 +13575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
13489
13575
|
'[class.the-table-with-sticky-column]': 'freezeColumnPipe.transform(element, tablePluginOptions)',
|
|
13490
13576
|
'[class.the-numberd-table]': 'element?.options?.numberedColumn',
|
|
13491
13577
|
'[class.the-table-selection-hide]': 'tableStore.isCellSelecting || tableStore.isRightClicking'
|
|
13492
|
-
}, template: "<div class=\"the-table-container\" theColumnResize>\n <div class=\"the-table-row-controls-wrapper\">\n <div\n class=\"the-table-corner-controls the-sticky-corner-controls\"\n #cornerControl\n [ngClass]=\"{\n visible: !readonly && (isInTable || tableStore.isRightClicking),\n 'control-active': isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-table-corner-controls-insert-row-marker\" *ngIf=\"!headerRow\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\" *ngIf=\"!element.options?.headerColumn\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\" #rowControlsInner>\n <div\n class=\"the-table-row-controls-button-wrap\"\n #rowControlsButtonWrapper\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && (isInTable || tableStore.isRightClicking) && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n class=\"the-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ headerRow && i === 0 ? '' : headerRow ? i : i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-table\" #theTable>\n <colgroup #colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper the-sticky-row\" #columnControlsWrapper>\n <th\n #colControl\n class=\"the-table-col-controls\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMousedown($event, i)\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable || tableStore.isRightClicking\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n [parentElement]=\"colControl\"\n >\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n <div
|
|
13578
|
+
}, template: "<div class=\"the-table-container\" theColumnResize>\n <div class=\"the-table-row-controls-wrapper\" #tableRowControlsWrapper>\n <div\n class=\"the-table-corner-controls the-sticky-corner-controls\"\n #cornerControl\n [ngClass]=\"{\n visible: !readonly && (isInTable || tableStore.isRightClicking),\n 'control-active': isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-table-corner-controls-insert-row-marker\" *ngIf=\"!headerRow\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\" *ngIf=\"!element.options?.headerColumn\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\" #rowControlsInner>\n <div\n class=\"the-table-row-controls-button-wrap\"\n #rowControlsButtonWrapper\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && (isInTable || tableStore.isRightClicking) && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMousedown($event, control.rowIndex)\"\n class=\"the-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ headerRow && i === 0 ? '' : headerRow ? i : i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-table\" #theTable>\n <colgroup #colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper the-sticky-row\" #columnControlsWrapper>\n <th\n #colControl\n class=\"the-table-col-controls\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n [ngClass]=\"{\n 'control-active': tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMousedown($event, i)\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable || tableStore.isRightClicking\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n [parentElement]=\"colControl\"\n >\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n <div\n class=\"header-row-shadow header-row-left-shadow\"\n #headerRowLeftShadow\n contenteditable=\"false\"\n *ngIf=\"!element.options?.headerColumn\"\n ></div>\n <div class=\"header-row-shadow header-row-right-shadow\" #headerRowRightShadow contenteditable=\"false\"></div>\n </table>\n </div>\n</div>\n" }]
|
|
13493
13579
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: TableCellEventDispatcher }, { type: ColumnResizeNotifierSource }, { type: TableStore }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: TableService }, { type: TheTableContextMenuService }, { type: TableFreezeColumnPipe }, { type: TableFreezeRowPipe }, { type: i0.Renderer2 }, { type: TheContextService }]; }, propDecorators: { tableWrapper: [{
|
|
13494
13580
|
type: ViewChild,
|
|
13495
13581
|
args: ['tableWrapper', { read: ElementRef, static: true }]
|
|
@@ -13499,6 +13585,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
13499
13585
|
}], tbodyElement: [{
|
|
13500
13586
|
type: ViewChild,
|
|
13501
13587
|
args: ['tbody', { read: ElementRef, static: true }]
|
|
13588
|
+
}], tableRowControlsWrapper: [{
|
|
13589
|
+
type: ViewChild,
|
|
13590
|
+
args: ['tableRowControlsWrapper', { read: ElementRef, static: false }]
|
|
13502
13591
|
}], columnControlsWrapper: [{
|
|
13503
13592
|
type: ViewChild,
|
|
13504
13593
|
args: ['columnControlsWrapper', { read: ElementRef, static: false }]
|
|
@@ -14018,16 +14107,16 @@ class TheTdComponent extends TheBaseElementComponent {
|
|
|
14018
14107
|
return this.tableComponent.theTableElement.nativeElement;
|
|
14019
14108
|
}
|
|
14020
14109
|
get scrollableElementTop() {
|
|
14021
|
-
const
|
|
14022
|
-
if (
|
|
14023
|
-
return
|
|
14110
|
+
const containerElement = this.elementRef.nativeElement.closest(this.editor.options?.scrollContainer || DEFAULT_SCROLL_CONTAINER);
|
|
14111
|
+
if (containerElement) {
|
|
14112
|
+
return containerElement.getBoundingClientRect().top;
|
|
14024
14113
|
}
|
|
14025
14114
|
return -window.scrollY;
|
|
14026
14115
|
}
|
|
14027
14116
|
get scrollableElementBottom() {
|
|
14028
|
-
const
|
|
14029
|
-
if (
|
|
14030
|
-
return
|
|
14117
|
+
const containerElement = this.elementRef.nativeElement.closest(this.editor.options?.scrollContainer || DEFAULT_SCROLL_CONTAINER);
|
|
14118
|
+
if (containerElement) {
|
|
14119
|
+
return containerElement.getBoundingClientRect().bottom;
|
|
14031
14120
|
}
|
|
14032
14121
|
return -window.scrollY;
|
|
14033
14122
|
}
|
|
@@ -15772,7 +15861,6 @@ class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
15772
15861
|
}
|
|
15773
15862
|
ngOnInit() {
|
|
15774
15863
|
this.initialize();
|
|
15775
|
-
this.initCdkScroll();
|
|
15776
15864
|
initializeDefaultMenuIcons(this.iconRegistry);
|
|
15777
15865
|
this.theContextService.uploadingStatus$.subscribe(isUploading => {
|
|
15778
15866
|
if (isUploading) {
|
|
@@ -15804,9 +15892,6 @@ class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
15804
15892
|
ngOnDestroy() {
|
|
15805
15893
|
super.ngOnDestroy();
|
|
15806
15894
|
THE_EDITOR_PREVIOUS_SELECTION.delete(this.editor);
|
|
15807
|
-
if (this.cdkScrollable) {
|
|
15808
|
-
this.cdkScrollable.ngOnDestroy();
|
|
15809
|
-
}
|
|
15810
15895
|
}
|
|
15811
15896
|
initialize() {
|
|
15812
15897
|
const defaultPlugins = internalPlugins();
|
|
@@ -15836,13 +15921,6 @@ class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
15836
15921
|
this.visibleQuickInsertPlus = false;
|
|
15837
15922
|
}
|
|
15838
15923
|
}
|
|
15839
|
-
initCdkScroll() {
|
|
15840
|
-
if (this.maxHeight) {
|
|
15841
|
-
this.cdkScrollable = new CdkScrollable(this.theEditableContainer, this.scrollDispatcher, this.ngZone);
|
|
15842
|
-
this.cdkScrollable.ngOnInit();
|
|
15843
|
-
this.theEditableContainer.nativeElement.setAttribute('cdkScrollable', '');
|
|
15844
|
-
}
|
|
15845
|
-
}
|
|
15846
15924
|
initializeOptions() {
|
|
15847
15925
|
if (!this.theOptions) {
|
|
15848
15926
|
this.theOptions = {
|
|
@@ -16324,5 +16402,5 @@ const withTestPlugin = (plugins, initValue) => {
|
|
|
16324
16402
|
* Generated bundle index. Do not edit.
|
|
16325
16403
|
*/
|
|
16326
16404
|
|
|
16327
|
-
export { ALIGN_BLOCK_TYPES, A_TAG_REL_ATTR, AlignEditor, Alignment, BLOCK_DELETE_BACKWARD_TYPES, BackgroundColors, BlockquoteEditor, CLIPBOARD_FORMAT_KEY, CODEMIRROR_PADDING_TOP, CODE_MODES, COMPONENTS, CONTAINER_BLOCKS, CONTROL_KEY, CodeEditor, ColorEditor, Colors, ColumnResizeNotifierSource, DEFAULT_LANGUAGE, DEFAULT_SCROLL_CONTAINER, DISABLED_OPERATE_TYPES, DefaultElementOptions, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition, DefaultPluginMenu, DropdownMode, ELEMENT_UNIQUE_ID, ElementKinds, ErrorCodes, FontSizeTypes, FontSizes, HEADING_TYPES, HeadingEditor, HoveredCellInfo, HrEditor, IS_MAC, ImageEditor, IndentEditor, Indents, InlineCodeEditor, LINK_DEFAULT_TEXT, LIST_BLOCK_TYPES, LayoutTypes, LinkEditor, ListEditor, MarkEditor, MarkProps, MarkTypes, MentionEditor, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE, PLUGIN_COMPONENTS, PluginKeys, PluginMenuIcons, PluginMenuSvgs, Position, QuickInsertEditor, STANDARD_HEADING_TYPES, SpecialBackgroundColor, SpecialTextColor, TAB_SPACE, THE_EDITOR_CONVERSION_HINT_REF, THE_EDITOR_ORIGIN_ANCHOR, THE_EDITOR_POPOVER_REF, THE_EDITOR_PREVIOUS_SELECTION, THE_EDITOR_UUID, THE_INLINE_TOOLBAR_TYPES, THE_LISTBOX_PARENT_GROUP_TOKEN, THE_LISTBOX_PARENT_OPTION_TOKEN, THE_LISTBOX_TOKEN, THE_MODE_PROVIDER, THE_MODE_TOKEN, THE_PLUGIN_MENU_REF, THE_UPLOAD_SERVICE_TOKEN, TableCellEventDispatcher, TableEditor, TableHeaderBackgroundColor, TheBaseElementComponent, TheBaseSuggestion, TheBaseToolbarDropdown, TheBaseToolbarItem, TheContextService, TheDataMode, TheDefaultElementComponent, TheEditor, TheEditorComponent, TheEditorModule, TheImageComponent, TheListboxDirective, TheListboxGroupDirective, TheListboxOptionDirective, TheMode, TheModeConfig, ThePluginMenu, ThePluginMenuComponent, ThePluginMenuItemType, ThePreventDefaultDirective, index$1 as TheQueries, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarGroupComponent, TheToolbarGroupToken, TheToolbarItemComponent, TheToolbarService, index as TheTransforms, TodoItemEditor, ToolbarActionTypes, ToolbarAlignment, ToolbarItemType, ToolbarMoreGroup, VOID_BLOCK_TYPES, VerticalAlignEditor, VerticalAlignment, ZERO_WIDTH_CHAR, autoFocus, base64toBlob, buildPluginMenu, buildPluginMenuItemMap, coercePixelsFromCssValue, combinePlugins, copyNode, copyNodeForSafari, createEmptyParagraph, createMentionPlugin, createPluginFactory, createToolbar, createVerticalAlignPlugin, dataDeserialize, dataSerializing, deleteElementKey, extractFragment, filterTextFormat, flattenDeepPlugins, getColsTotalWidth, getEditorUUID, getElementClassByPrefix, getElementHeight, getElementWidth, getEndBlock, getPlugin, getPluginOptions, getPlugins, getRowsTotalHeight, getStartBlock, getToolbarClass, headingOptions, htmlToTheia, idCreator, inValidTypes, initializeDefaultMenuIcons, internalPlugins, isCleanEmptyParagraph, isDirectionKeydown, isPureEmptyParagraph, mergeArray, mergeDeepPlugins, mergeElementOptions, mergeOptions, nestedStructureByKey, plainToTheia, pluginsByKey, reSelection, recursionNodes, refocus, scrollIntoView, setEditorUUID, useElementStyle, withMention, withTestPlugin, withTheia };
|
|
16405
|
+
export { ALIGN_BLOCK_TYPES, A_TAG_REL_ATTR, AlignEditor, Alignment, BLOCK_DELETE_BACKWARD_TYPES, BackgroundColors, BlockquoteEditor, CLIPBOARD_FORMAT_KEY, CODEMIRROR_PADDING_TOP, CODE_MODES, COMPONENTS, CONTAINER_BLOCKS, CONTROL_KEY, CodeEditor, ColorEditor, Colors, ColumnResizeNotifierSource, DEFAULT_LANGUAGE, DEFAULT_SCROLL_CONTAINER, DISABLED_OPERATE_TYPES, DefaultElementOptions, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition, DefaultPluginMenu, DropdownMode, ELEMENT_UNIQUE_ID, ElementKinds, ErrorCodes, FontSizeTypes, FontSizes, HEADING_TYPES, HeadingEditor, HoveredCellInfo, HrEditor, IS_MAC, ImageEditor, IndentEditor, Indents, InlineCodeEditor, LINK_DEFAULT_TEXT, LIST_BLOCK_TYPES, LayoutTypes, LinkEditor, ListEditor, MarkEditor, MarkProps, MarkTypes, MentionEditor, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE, PLUGIN_COMPONENTS, PluginKeys, PluginMenuIcons, PluginMenuSvgs, Position, QuickInsertEditor, STANDARD_HEADING_TYPES, ScrollDirection, SpecialBackgroundColor, SpecialTextColor, TAB_SPACE, THE_EDITOR_CONVERSION_HINT_REF, THE_EDITOR_ORIGIN_ANCHOR, THE_EDITOR_POPOVER_REF, THE_EDITOR_PREVIOUS_SELECTION, THE_EDITOR_UUID, THE_INLINE_TOOLBAR_TYPES, THE_LISTBOX_PARENT_GROUP_TOKEN, THE_LISTBOX_PARENT_OPTION_TOKEN, THE_LISTBOX_TOKEN, THE_MODE_PROVIDER, THE_MODE_TOKEN, THE_PLUGIN_MENU_REF, THE_UPLOAD_SERVICE_TOKEN, TableCellEventDispatcher, TableEditor, TableHeaderBackgroundColor, TheBaseElementComponent, TheBaseSuggestion, TheBaseToolbarDropdown, TheBaseToolbarItem, TheContextService, TheDataMode, TheDefaultElementComponent, TheEditor, TheEditorComponent, TheEditorModule, TheImageComponent, TheListboxDirective, TheListboxGroupDirective, TheListboxOptionDirective, TheMode, TheModeConfig, ThePluginMenu, ThePluginMenuComponent, ThePluginMenuItemType, ThePreventDefaultDirective, index$1 as TheQueries, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarGroupComponent, TheToolbarGroupToken, TheToolbarItemComponent, TheToolbarService, index as TheTransforms, TodoItemEditor, ToolbarActionTypes, ToolbarAlignment, ToolbarItemType, ToolbarMoreGroup, VOID_BLOCK_TYPES, VerticalAlignEditor, VerticalAlignment, ZERO_WIDTH_CHAR, autoFocus, base64toBlob, buildPluginMenu, buildPluginMenuItemMap, coercePixelsFromCssValue, combinePlugins, copyNode, copyNodeForSafari, createEmptyParagraph, createMentionPlugin, createPluginFactory, createToolbar, createVerticalAlignPlugin, dataDeserialize, dataSerializing, deleteElementKey, extractFragment, filterTextFormat, flattenDeepPlugins, getColsTotalWidth, getEditorUUID, getElementClassByPrefix, getElementHeight, getElementWidth, getEndBlock, getPlugin, getPluginOptions, getPlugins, getRowsTotalHeight, getStartBlock, getToolbarClass, headingOptions, htmlToTheia, idCreator, inValidTypes, initializeDefaultMenuIcons, internalPlugins, isCleanEmptyParagraph, isDirectionKeydown, isPureEmptyParagraph, mergeArray, mergeDeepPlugins, mergeElementOptions, mergeOptions, nestedStructureByKey, plainToTheia, pluginsByKey, reSelection, recursionNodes, refocus, scrollIntoView, setEditorUUID, useElementStyle, withMention, withTestPlugin, withTheia };
|
|
16328
16406
|
//# sourceMappingURL=worktile-theia.mjs.map
|