@ai-table/grid 0.0.60 → 0.0.62
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/esm2022/grid.component.mjs +17 -5
- package/esm2022/renderer/creations/create-active-cell-border.mjs +3 -3
- package/esm2022/services/event.service.mjs +2 -2
- package/esm2022/utils/visible-range.mjs +4 -4
- package/fesm2022/ai-table-grid.mjs +21 -9
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid.component.d.ts +2 -0
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/utils/visible-range.d.ts.map +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
import { isNumber } from 'lodash';
|
2
|
-
import { AI_TABLE_ROW_HEAD_WIDTH } from '../constants';
|
2
|
+
import { AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_ROW_HEAD_WIDTH } from '../constants';
|
3
3
|
export const getVisibleRangeInfo = (coordinate, scrollState) => {
|
4
4
|
const { scrollTop, scrollLeft } = scrollState;
|
5
5
|
const { rowCount, columnCount, frozenColumnCount } = coordinate;
|
@@ -35,8 +35,8 @@ export const scrollMax = (aiTable, coordinate, visibleColumns) => {
|
|
35
35
|
const scrollMaxWidth = visibleColumns.reduce((pre, cur) => {
|
36
36
|
const index = visibleColumnIndexMap.get(cur._id);
|
37
37
|
return pre + (isNumber(index) ? coordinate.getColumnWidth(index) : 0);
|
38
|
-
}, AI_TABLE_ROW_HEAD_WIDTH);
|
38
|
+
}, AI_TABLE_ROW_HEAD_WIDTH) + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
39
39
|
const scrollMaxHeight = coordinate.getRowOffset(coordinate.rowCount - 1) + 32;
|
40
|
-
return { scrollMaxWidth, scrollMaxHeight };
|
40
|
+
return { scrollMaxWidth: Math.max(scrollMaxWidth, coordinate.containerWidth), scrollMaxHeight };
|
41
41
|
};
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3V0aWxzL3Zpc2libGUtcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJeEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxVQUFzQixFQUFFLFdBQStCLEVBQUUsRUFBRTtJQUMzRixNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUM5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUVoRSxlQUFlO0lBQ2YsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDOUIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLE9BQU87WUFDSCxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuRSxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsZUFBZTtJQUNmLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXhFLE9BQU87WUFDSCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxVQUFVLENBQUM7WUFDN0QsZUFBZSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6RixDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3ZFLE9BQU87UUFDSCxhQUFhO1FBQ2IsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixlQUFlO0tBQ2xCLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFFLFVBQXNCLEVBQUUsY0FBOEIsRUFBRSxFQUFFO0lBQ2xHLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBRXhFLE1BQU0sY0FBYyxHQUNoQixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQy9CLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLCtCQUErQixDQUFDO0lBQ2xFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDcEcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSCwgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQUlUYWJsZSwgQUlUYWJsZUZpZWxkLCBBSVRhYmxlRmllbGRPcHRpb24sIENvb3JkaW5hdGUsIGdldEZpZWxkT3B0aW9uQnlGaWVsZCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZVNjcm9sbFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZVJhbmdlSW5mbyA9IChjb29yZGluYXRlOiBDb29yZGluYXRlLCBzY3JvbGxTdGF0ZTogQUlUYWJsZVNjcm9sbFN0YXRlKSA9PiB7XG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbExlZnQgfSA9IHNjcm9sbFN0YXRlO1xuICAgIGNvbnN0IHsgcm93Q291bnQsIGNvbHVtbkNvdW50LCBmcm96ZW5Db2x1bW5Db3VudCB9ID0gY29vcmRpbmF0ZTtcblxuICAgIC8vIOiOt+WPluimgea4suafk+eahOWeguebtOWPr+ingeWMuuWfn1xuICAgIGNvbnN0IGdldFZlcnRpY2FsUmFuZ2VJbmZvID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gY29vcmRpbmF0ZS5nZXRSb3dTdGFydEluZGV4KHNjcm9sbFRvcCk7XG4gICAgICAgIGNvbnN0IHN0b3BJbmRleCA9IGNvb3JkaW5hdGUuZ2V0Um93U3RvcEluZGV4KHN0YXJ0SW5kZXgsIHNjcm9sbFRvcCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvd1N0YXJ0SW5kZXg6IE1hdGgubWF4KDAsIHN0YXJ0SW5kZXggLSAxKSxcbiAgICAgICAgICAgIHJvd1N0b3BJbmRleDogTWF0aC5tYXgoMCwgTWF0aC5taW4ocm93Q291bnQgLSAxLCBzdG9wSW5kZXggKyAxKSlcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8g6I635Y+W6KaB5riy5p+T55qE5rC05bmz5Y+v6KeB5Yy65Z+fXG4gICAgY29uc3QgZ2V0SG9yaXpvbnRhbFJhbmdlSW5mbyA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uU3RhcnRJbmRleChzY3JvbGxMZWZ0KTtcbiAgICAgICAgY29uc3Qgc3RvcEluZGV4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5TdG9wSW5kZXgoc3RhcnRJbmRleCwgc2Nyb2xsTGVmdCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtblN0YXJ0SW5kZXg6IE1hdGgubWF4KGZyb3plbkNvbHVtbkNvdW50IC0gMSwgc3RhcnRJbmRleCksXG4gICAgICAgICAgICBjb2x1bW5TdG9wSW5kZXg6IE1hdGgubWF4KGZyb3plbkNvbHVtbkNvdW50IC0gMSwgTWF0aC5taW4oY29sdW1uQ291bnQgLSAxLCBzdG9wSW5kZXgpKVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCB7IHJvd1N0YXJ0SW5kZXgsIHJvd1N0b3BJbmRleCB9ID0gZ2V0VmVydGljYWxSYW5nZUluZm8oKTtcbiAgICBjb25zdCB7IGNvbHVtblN0YXJ0SW5kZXgsIGNvbHVtblN0b3BJbmRleCB9ID0gZ2V0SG9yaXpvbnRhbFJhbmdlSW5mbygpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvd1N0YXJ0SW5kZXgsXG4gICAgICAgIHJvd1N0b3BJbmRleCxcbiAgICAgICAgY29sdW1uU3RhcnRJbmRleCxcbiAgICAgICAgY29sdW1uU3RvcEluZGV4XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxNYXggPSAoYWlUYWJsZTogQUlUYWJsZSwgY29vcmRpbmF0ZTogQ29vcmRpbmF0ZSwgdmlzaWJsZUNvbHVtbnM6IEFJVGFibGVGaWVsZFtdKSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG5cbiAgICBjb25zdCBzY3JvbGxNYXhXaWR0aCA9XG4gICAgICAgIHZpc2libGVDb2x1bW5zLnJlZHVjZSgocHJlLCBjdXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChjdXIuX2lkKTtcbiAgICAgICAgICAgIHJldHVybiBwcmUgKyAoaXNOdW1iZXIoaW5kZXgpID8gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChpbmRleCkgOiAwKTtcbiAgICAgICAgfSwgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgpICsgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSDtcbiAgICBjb25zdCBzY3JvbGxNYXhIZWlnaHQgPSBjb29yZGluYXRlLmdldFJvd09mZnNldChjb29yZGluYXRlLnJvd0NvdW50IC0gMSkgKyAzMjtcbiAgICByZXR1cm4geyBzY3JvbGxNYXhXaWR0aDogTWF0aC5tYXgoc2Nyb2xsTWF4V2lkdGgsIGNvb3JkaW5hdGUuY29udGFpbmVyV2lkdGgpLCBzY3JvbGxNYXhIZWlnaHQgfTtcbn07XG4iXX0=
|
@@ -4191,9 +4191,9 @@ const scrollMax = (aiTable, coordinate, visibleColumns) => {
|
|
4191
4191
|
const scrollMaxWidth = visibleColumns.reduce((pre, cur) => {
|
4192
4192
|
const index = visibleColumnIndexMap.get(cur._id);
|
4193
4193
|
return pre + (isNumber(index) ? coordinate.getColumnWidth(index) : 0);
|
4194
|
-
}, AI_TABLE_ROW_HEAD_WIDTH);
|
4194
|
+
}, AI_TABLE_ROW_HEAD_WIDTH) + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
4195
4195
|
const scrollMaxHeight = coordinate.getRowOffset(coordinate.rowCount - 1) + 32;
|
4196
|
-
return { scrollMaxWidth, scrollMaxHeight };
|
4196
|
+
return { scrollMaxWidth: Math.max(scrollMaxWidth, coordinate.containerWidth), scrollMaxHeight };
|
4197
4197
|
};
|
4198
4198
|
|
4199
4199
|
const getMousePosition = (aiTable, x, y, coordinate, fields, context, _targetName) => {
|
@@ -5829,8 +5829,8 @@ const createActiveCellBorder = (config) => {
|
|
5829
5829
|
const currentConfig = {
|
5830
5830
|
x: x + offset + AI_TABLE_OFFSET,
|
5831
5831
|
y: y + AI_TABLE_OFFSET,
|
5832
|
-
width: width -
|
5833
|
-
height: rowHeight -
|
5832
|
+
width: width - AI_TABLE_CELL_BORDER / 2,
|
5833
|
+
height: rowHeight - AI_TABLE_CELL_BORDER / 2,
|
5834
5834
|
strokeWidth: AI_TABLE_CELL_BORDER,
|
5835
5835
|
stroke: colors.primary,
|
5836
5836
|
fillEnabled: false,
|
@@ -9169,7 +9169,7 @@ class AITableGridEventService {
|
|
9169
9169
|
aiTable: aiTable
|
9170
9170
|
},
|
9171
9171
|
panelClass: 'grid-cell-editor',
|
9172
|
-
outsideClosable:
|
9172
|
+
outsideClosable: false,
|
9173
9173
|
hasBackdrop: false,
|
9174
9174
|
manualClosure: true,
|
9175
9175
|
animationDisabled: true,
|
@@ -9728,6 +9728,7 @@ class AITableGrid extends AITableGridBase {
|
|
9728
9728
|
this.isDragSelecting = false;
|
9729
9729
|
this.dragSelectionStart = null;
|
9730
9730
|
this.notifyService = inject(ThyNotifyService);
|
9731
|
+
this.isPopoverOpen = false;
|
9731
9732
|
this.fieldHeadHeight = AI_TABLE_FIELD_HEAD_HEIGHT;
|
9732
9733
|
this.containerRect = signal({ width: 0, height: 0 });
|
9733
9734
|
this.frozenColumnCount = signal(1);
|
@@ -9920,7 +9921,7 @@ class AITableGrid extends AITableGridBase {
|
|
9920
9921
|
context.setPointPosition(curMousePosition);
|
9921
9922
|
}
|
9922
9923
|
else {
|
9923
|
-
|
9924
|
+
this.setDefaultPointPosition();
|
9924
9925
|
}
|
9925
9926
|
this.timer = null;
|
9926
9927
|
if (this.isDragSelecting) {
|
@@ -9998,8 +9999,10 @@ class AITableGrid extends AITableGridBase {
|
|
9998
9999
|
cancelAnimationFrame(this.timer);
|
9999
10000
|
}
|
10000
10001
|
this.timer = requestAnimationFrame(() => {
|
10001
|
-
|
10002
|
-
|
10002
|
+
if (this.isPopoverOpen) {
|
10003
|
+
return;
|
10004
|
+
}
|
10005
|
+
this.setDefaultPointPosition();
|
10003
10006
|
});
|
10004
10007
|
}
|
10005
10008
|
stageContextmenu(e) {
|
@@ -10090,7 +10093,7 @@ class AITableGrid extends AITableGridBase {
|
|
10090
10093
|
y: containerRect.y + fieldGroupRect.y + fieldGroupRect.height
|
10091
10094
|
};
|
10092
10095
|
const editOrigin = this.containerElement().querySelector('.konvajs-content');
|
10093
|
-
this.aiTableGridFieldService.openFieldMenu(this.aiTable, {
|
10096
|
+
const menuRef = this.aiTableGridFieldService.openFieldMenu(this.aiTable, {
|
10094
10097
|
fieldId: fieldId,
|
10095
10098
|
fieldMenus: this.fieldMenus(),
|
10096
10099
|
origin: this.containerElement(),
|
@@ -10098,6 +10101,11 @@ class AITableGrid extends AITableGridBase {
|
|
10098
10101
|
editOrigin: editOrigin,
|
10099
10102
|
editFieldPosition
|
10100
10103
|
});
|
10104
|
+
menuRef.afterClosed().subscribe(() => {
|
10105
|
+
this.isPopoverOpen = false;
|
10106
|
+
this.setDefaultPointPosition();
|
10107
|
+
});
|
10108
|
+
this.isPopoverOpen = true;
|
10101
10109
|
}
|
10102
10110
|
break;
|
10103
10111
|
}
|
@@ -10144,6 +10152,10 @@ class AITableGrid extends AITableGridBase {
|
|
10144
10152
|
this.scrollAction({ deltaX: e.deltaX, deltaY: e.deltaY, shiftKey: e.shiftKey });
|
10145
10153
|
});
|
10146
10154
|
}
|
10155
|
+
setDefaultPointPosition() {
|
10156
|
+
const { context } = this.aiTable;
|
10157
|
+
context.setPointPosition(DEFAULT_POINT_POSITION);
|
10158
|
+
}
|
10147
10159
|
bindScrollBarScroll() {
|
10148
10160
|
fromEvent(this.horizontalBarRef().nativeElement, 'scroll', { passive: true })
|
10149
10161
|
.pipe(takeUntilDestroyed(this.destroyRef))
|