@ai-table/grid 0.0.15 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +2 -2
- package/esm2022/grid.component.mjs +11 -9
- package/esm2022/renderer/components/add-field-column.component.mjs +29 -18
- package/esm2022/renderer/components/field-head.component.mjs +5 -5
- package/esm2022/renderer/components/frozen-heads.component.mjs +3 -3
- package/esm2022/renderer/components/heads.component.mjs +1 -1
- package/esm2022/renderer/creations/create-cells.mjs +4 -4
- package/esm2022/renderer/creations/create-heads.mjs +1 -1
- package/esm2022/renderer/drawers/add-row-layout-drawer.mjs +4 -4
- package/esm2022/renderer/drawers/cell-drawer.mjs +4 -1
- package/esm2022/renderer/drawers/layout-drawer.mjs +12 -10
- package/esm2022/renderer/drawers/record-row-layout-drawer.mjs +16 -7
- package/esm2022/renderer/renderer.component.mjs +7 -10
- package/esm2022/services/field.service.mjs +4 -7
- package/esm2022/types/component-config.mjs +1 -1
- package/esm2022/types/field.mjs +1 -1
- package/fesm2022/ai-table-grid.mjs +80 -59
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid.component.d.ts +1 -1
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/renderer/components/add-field-column.component.d.ts +3 -6
- package/renderer/components/add-field-column.component.d.ts.map +1 -1
- package/renderer/components/frozen-heads.component.d.ts +2 -2
- package/renderer/components/heads.component.d.ts +2 -2
- package/renderer/creations/create-heads.d.ts +2 -2
- package/renderer/drawers/add-row-layout-drawer.d.ts +1 -1
- package/renderer/drawers/add-row-layout-drawer.d.ts.map +1 -1
- package/renderer/drawers/cell-drawer.d.ts.map +1 -1
- package/renderer/drawers/layout-drawer.d.ts +2 -2
- package/renderer/drawers/layout-drawer.d.ts.map +1 -1
- package/renderer/drawers/record-row-layout-drawer.d.ts.map +1 -1
- package/renderer/renderer.component.d.ts +1 -1
- package/renderer/renderer.component.d.ts.map +1 -1
- package/services/field.service.d.ts.map +1 -1
- package/types/component-config.d.ts +8 -1
- package/types/component-config.d.ts.map +1 -1
- package/types/field.d.ts +1 -1
- package/types/field.d.ts.map +1 -1
@@ -1252,7 +1252,7 @@ class SelectCellEditorComponent extends AbstractEditCellEditor {
|
|
1252
1252
|
}
|
1253
1253
|
updateValue(value) {
|
1254
1254
|
if (!value) {
|
1255
|
-
const value = this.isMultiple ? this.modelValue : [this.modelValue];
|
1255
|
+
const value = this.isMultiple ? this.modelValue : (this.modelValue && [this.modelValue]) || [];
|
1256
1256
|
this.updateFieldValue.emit({
|
1257
1257
|
value: value,
|
1258
1258
|
path: [this.record()._id, this.field()._id]
|
@@ -1681,8 +1681,8 @@ class AITableGridFieldService {
|
|
1681
1681
|
return this.thyPopover.open(component, {
|
1682
1682
|
origin,
|
1683
1683
|
originPosition: position,
|
1684
|
-
manualClosure: true,
|
1685
1684
|
placement: 'bottomLeft',
|
1685
|
+
originActiveClass: undefined,
|
1686
1686
|
initialState: {
|
1687
1687
|
aiTable,
|
1688
1688
|
aiEditField: field,
|
@@ -1696,13 +1696,10 @@ class AITableGridFieldService {
|
|
1696
1696
|
origin,
|
1697
1697
|
originPosition: position,
|
1698
1698
|
placement: 'bottomLeft',
|
1699
|
-
originActiveClass:
|
1700
|
-
hasBackdrop: false,
|
1701
|
-
insideClosable: true,
|
1702
|
-
outsideClosable: true,
|
1699
|
+
originActiveClass: undefined,
|
1703
1700
|
initialState: {
|
1704
1701
|
origin: editOrigin,
|
1705
|
-
position: options.
|
1702
|
+
position: options.editFieldPosition,
|
1706
1703
|
aiTable,
|
1707
1704
|
fieldId,
|
1708
1705
|
fieldMenus
|
@@ -3190,33 +3187,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
3190
3187
|
|
3191
3188
|
class AITableAddField {
|
3192
3189
|
constructor() {
|
3193
|
-
this.
|
3194
|
-
this.fields = input.required();
|
3195
|
-
this.columnStopIndex = input.required();
|
3190
|
+
this.config = input.required();
|
3196
3191
|
this.btnWidth = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
3197
3192
|
this.x = computed(() => {
|
3198
|
-
const lastColumnWidth = this.
|
3199
|
-
const lastColumnOffset = this.
|
3193
|
+
const lastColumnWidth = this.config().coordinate.getColumnWidth(this.config().columnStopIndex);
|
3194
|
+
const lastColumnOffset = this.config().coordinate.getColumnOffset(this.config().columnStopIndex);
|
3200
3195
|
return lastColumnWidth + lastColumnOffset;
|
3201
3196
|
});
|
3202
3197
|
this.rectConfig = computed(() => {
|
3198
|
+
const { targetName } = this.config().pointPosition;
|
3199
|
+
const fill = targetName === AI_TABLE_FIELD_ADD_BUTTON ? Colors.gray80 : Colors.white;
|
3203
3200
|
return {
|
3204
3201
|
name: generateTargetName({
|
3205
3202
|
targetName: AI_TABLE_FIELD_ADD_BUTTON,
|
3206
|
-
fieldId: this.
|
3203
|
+
fieldId: this.config().fields[this.config().columnStopIndex]._id,
|
3207
3204
|
mouseStyle: 'pointer'
|
3208
3205
|
}),
|
3209
3206
|
x: AI_TABLE_OFFSET,
|
3210
3207
|
y: AI_TABLE_OFFSET,
|
3211
|
-
width: this.
|
3212
|
-
|
3208
|
+
width: this.config().coordinate.containerWidth - this.x() < this.btnWidth
|
3209
|
+
? this.btnWidth
|
3210
|
+
: this.config().coordinate.containerWidth - this.x(),
|
3211
|
+
height: this.config().coordinate.rowInitSize,
|
3213
3212
|
stroke: Colors.gray200,
|
3214
3213
|
strokeWidth: 1,
|
3215
|
-
listening: true
|
3214
|
+
listening: true,
|
3215
|
+
fill
|
3216
3216
|
};
|
3217
3217
|
});
|
3218
3218
|
this.addIconConfig = computed(() => {
|
3219
|
-
const offsetY = (this.
|
3219
|
+
const offsetY = (this.config().coordinate.rowInitSize - AI_TABLE_ICON_COMMON_SIZE) / 2;
|
3220
3220
|
return {
|
3221
3221
|
x: AI_TABLE_CELL_PADDING,
|
3222
3222
|
y: offsetY,
|
@@ -3227,10 +3227,14 @@ class AITableAddField {
|
|
3227
3227
|
});
|
3228
3228
|
}
|
3229
3229
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableAddField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
3230
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AITableAddField, isStandalone: true, selector: "ai-table-add-field", inputs: {
|
3230
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AITableAddField, isStandalone: true, selector: "ai-table-add-field", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
3231
3231
|
<ko-group [config]="{ x: x() }">
|
3232
|
-
<ko-
|
3233
|
-
|
3232
|
+
<ko-group>
|
3233
|
+
<ko-rect [config]="rectConfig()"></ko-rect>
|
3234
|
+
</ko-group>
|
3235
|
+
<ko-group>
|
3236
|
+
<ai-table-icon [config]="addIconConfig()"></ai-table-icon>
|
3237
|
+
</ko-group>
|
3234
3238
|
</ko-group>
|
3235
3239
|
`, isInline: true, dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableIcon, selector: "ai-table-icon", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
3236
3240
|
}
|
@@ -3240,12 +3244,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
3240
3244
|
selector: 'ai-table-add-field',
|
3241
3245
|
template: `
|
3242
3246
|
<ko-group [config]="{ x: x() }">
|
3243
|
-
<ko-
|
3244
|
-
|
3247
|
+
<ko-group>
|
3248
|
+
<ko-rect [config]="rectConfig()"></ko-rect>
|
3249
|
+
</ko-group>
|
3250
|
+
<ko-group>
|
3251
|
+
<ai-table-icon [config]="addIconConfig()"></ai-table-icon>
|
3252
|
+
</ko-group>
|
3245
3253
|
</ko-group>
|
3246
3254
|
`,
|
3247
3255
|
standalone: true,
|
3248
|
-
imports: [KoContainer,
|
3256
|
+
imports: [KoContainer, KoShape, AITableIcon],
|
3249
3257
|
changeDetection: ChangeDetectionStrategy.OnPush
|
3250
3258
|
}]
|
3251
3259
|
}] });
|
@@ -4223,23 +4231,25 @@ class Layout extends Drawer {
|
|
4223
4231
|
get isLast() {
|
4224
4232
|
return this.columnIndex === this.columnCount - 1;
|
4225
4233
|
}
|
4226
|
-
renderAddFieldBlank() {
|
4227
|
-
const width = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
4228
|
-
const y = this.y;
|
4234
|
+
renderAddFieldBlank({ style, isHoverRow }) {
|
4229
4235
|
const rowHeight = this.rowHeight;
|
4236
|
+
const fill = style?.fill || (isHoverRow ? this.colors.gray80 : this.colors.transparent);
|
4237
|
+
const addFieldBlankX = this.x + this.columnWidth + AI_TABLE_OFFSET;
|
4230
4238
|
this.rect({
|
4231
|
-
x:
|
4232
|
-
y: y
|
4233
|
-
width: this.containerWidth -
|
4234
|
-
|
4235
|
-
|
4239
|
+
x: addFieldBlankX,
|
4240
|
+
y: this.y + AI_TABLE_OFFSET,
|
4241
|
+
width: this.containerWidth - addFieldBlankX < AI_TABLE_FIELD_ADD_BUTTON_WIDTH
|
4242
|
+
? AI_TABLE_FIELD_ADD_BUTTON_WIDTH
|
4243
|
+
: this.containerWidth - addFieldBlankX,
|
4244
|
+
height: rowHeight,
|
4245
|
+
fill
|
4236
4246
|
});
|
4237
4247
|
}
|
4238
4248
|
}
|
4239
4249
|
|
4240
4250
|
class AddRowLayout extends Layout {
|
4241
|
-
renderAddFieldBlank() {
|
4242
|
-
super.renderAddFieldBlank();
|
4251
|
+
renderAddFieldBlank({ isHoverRow }) {
|
4252
|
+
super.renderAddFieldBlank({ isHoverRow });
|
4243
4253
|
const rowHeight = this.rowHeight;
|
4244
4254
|
const defaultWidth = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
4245
4255
|
const width = this.containerWidth - this.x < defaultWidth ? defaultWidth : this.containerWidth - this.x;
|
@@ -4308,7 +4318,7 @@ class AddRowLayout extends Layout {
|
|
4308
4318
|
isHoverRow
|
4309
4319
|
});
|
4310
4320
|
}
|
4311
|
-
this.renderAddFieldBlank();
|
4321
|
+
this.renderAddFieldBlank({ isHoverRow });
|
4312
4322
|
}
|
4313
4323
|
renderCommonCell({ isHoverRow }) {
|
4314
4324
|
if (this.isFirst || this.isLast)
|
@@ -4652,6 +4662,9 @@ class CellDrawer extends Drawer {
|
|
4652
4662
|
if (!isValid || transformValue.length === 0) {
|
4653
4663
|
return;
|
4654
4664
|
}
|
4665
|
+
if (!transformValue[0]) {
|
4666
|
+
console.warn(`single select field unexpected value: ${transformValue[0]}`);
|
4667
|
+
}
|
4655
4668
|
const isOperating = isActive;
|
4656
4669
|
const item = field.settings.options?.find((option) => option._id === transformValue[0]);
|
4657
4670
|
const itemName = item?.text || '';
|
@@ -4968,22 +4981,31 @@ class RecordRowLayout extends Layout {
|
|
4968
4981
|
}
|
4969
4982
|
}
|
4970
4983
|
// 尾列
|
4971
|
-
renderLastCell({ style }) {
|
4984
|
+
renderLastCell({ style, isHoverRow }) {
|
4972
4985
|
if (!this.isLast || this.isFirst)
|
4973
4986
|
return;
|
4974
4987
|
const { fill, stroke } = style;
|
4975
|
-
const columnWidth = this.columnWidth;
|
4976
|
-
const width = columnWidth;
|
4977
4988
|
const colors = AITable.getColors();
|
4978
4989
|
// 背景、边框
|
4979
4990
|
this.rect({
|
4980
4991
|
x: this.x,
|
4981
4992
|
y: this.y,
|
4982
|
-
width,
|
4993
|
+
width: this.columnWidth,
|
4983
4994
|
height: this.rowHeight,
|
4984
4995
|
fill: fill || colors.white,
|
4985
4996
|
stroke: stroke || colors.gray200
|
4986
4997
|
});
|
4998
|
+
// 延伸到 FIELD_ADD_BUTTON
|
4999
|
+
super.renderAddFieldBlank({ style, isHoverRow });
|
5000
|
+
const rowHeight = this.rowHeight;
|
5001
|
+
const startX = this.x + this.columnWidth;
|
5002
|
+
const lineWidth = this.containerWidth - startX < AI_TABLE_FIELD_ADD_BUTTON_WIDTH ? AI_TABLE_FIELD_ADD_BUTTON_WIDTH : this.containerWidth - startX;
|
5003
|
+
this.line({
|
5004
|
+
x: startX,
|
5005
|
+
y: this.y,
|
5006
|
+
points: [0, rowHeight, lineWidth, rowHeight],
|
5007
|
+
stroke: this.colors.gray200
|
5008
|
+
});
|
4987
5009
|
}
|
4988
5010
|
// 绘制中间的普通单元格
|
4989
5011
|
renderCommonCell({ style }) {
|
@@ -5005,7 +5027,7 @@ class RecordRowLayout extends Layout {
|
|
5005
5027
|
const { row, style, isCheckedRow, isHoverRow } = config;
|
5006
5028
|
this.renderFirstCell({ row, style, isCheckedRow, isHoverRow });
|
5007
5029
|
this.renderCommonCell({ style });
|
5008
|
-
this.renderLastCell({ style });
|
5030
|
+
this.renderLastCell({ style, isHoverRow });
|
5009
5031
|
}
|
5010
5032
|
}
|
5011
5033
|
const recordRowLayout = new RecordRowLayout();
|
@@ -5047,8 +5069,8 @@ const createCells = (config) => {
|
|
5047
5069
|
const row = context.linearRows()[rowIndex];
|
5048
5070
|
const { _id: recordId, type } = row;
|
5049
5071
|
const y = coordinate.getRowOffset(rowIndex) + AI_TABLE_OFFSET;
|
5050
|
-
const { rowIndex: pointRowIndex,
|
5051
|
-
const isHover = pointRowIndex === rowIndex
|
5072
|
+
const { rowIndex: pointRowIndex, targetName } = context.pointPosition();
|
5073
|
+
const isHover = pointRowIndex === rowIndex;
|
5052
5074
|
switch (type) {
|
5053
5075
|
case AITableRowType.add: {
|
5054
5076
|
const isHoverRow = isHover && targetName === AI_TABLE_ROW_ADD_BUTTON;
|
@@ -5346,11 +5368,11 @@ class AITableFieldHead {
|
|
5346
5368
|
targetName: AI_TABLE_FIELD_HEAD_MORE,
|
5347
5369
|
fieldId: field._id
|
5348
5370
|
}),
|
5349
|
-
x: width -
|
5371
|
+
x: width - AI_TABLE_ACTION_COMMON_SIZE,
|
5350
5372
|
y: commonIconOffsetY,
|
5351
5373
|
data: MoreStandOutlinedPath,
|
5352
5374
|
fill: isHoverIcon ? Colors.primary : Colors.gray600,
|
5353
|
-
background:
|
5375
|
+
background: Colors.transparent,
|
5354
5376
|
backgroundWidth: AI_TABLE_ACTION_COMMON_SIZE,
|
5355
5377
|
backgroundHeight: AI_TABLE_ACTION_COMMON_SIZE,
|
5356
5378
|
cornerRadius: 4
|
@@ -5388,7 +5410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
5388
5410
|
</ko-group>
|
5389
5411
|
`,
|
5390
5412
|
standalone: true,
|
5391
|
-
imports: [KoContainer,
|
5413
|
+
imports: [KoContainer, KoShape, AITableFieldIcon, AITableText, AITableIcon],
|
5392
5414
|
changeDetection: ChangeDetectionStrategy.OnPush
|
5393
5415
|
}]
|
5394
5416
|
}] });
|
@@ -5573,7 +5595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
5573
5595
|
<ko-rect [config]="headBgConfig()"></ko-rect>
|
5574
5596
|
`,
|
5575
5597
|
standalone: true,
|
5576
|
-
imports: [
|
5598
|
+
imports: [KoShape, AITableFieldHead, AITableIcon, KoContainer],
|
5577
5599
|
changeDetection: ChangeDetectionStrategy.OnPush
|
5578
5600
|
}]
|
5579
5601
|
}] });
|
@@ -5939,8 +5961,7 @@ class AITableRenderer {
|
|
5939
5961
|
return this.coordinate().getColumnOffset(this.visibleRangeInfo().columnStopIndex);
|
5940
5962
|
});
|
5941
5963
|
this.cellGroupClipWidth = computed(() => {
|
5942
|
-
|
5943
|
-
return Math.min(this.containerWidth() - this.frozenAreaWidth(), AI_TABLE_FIELD_ADD_BUTTON_WIDTH + this.lastColumnOffset() + this.lastColumnWidth() - scrollLeft - this.frozenAreaWidth());
|
5964
|
+
return this.containerWidth() - this.frozenAreaWidth();
|
5944
5965
|
});
|
5945
5966
|
this.stageConfig = computed(() => {
|
5946
5967
|
const { isScrolling } = this.scrollState();
|
@@ -6001,7 +6022,7 @@ class AITableRenderer {
|
|
6001
6022
|
offsetY: scrollTop
|
6002
6023
|
};
|
6003
6024
|
});
|
6004
|
-
this.
|
6025
|
+
this.columnHeadOrAddFieldConfig = computed(() => {
|
6005
6026
|
const { columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
|
6006
6027
|
const { aiTable, coordinate } = this.config();
|
6007
6028
|
const { pointPosition } = aiTable.context;
|
@@ -6045,7 +6066,7 @@ class AITableRenderer {
|
|
6045
6066
|
this.koDblclick.emit(e);
|
6046
6067
|
}
|
6047
6068
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
6048
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"
|
6069
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AITableRenderer, isStandalone: true, selector: "ai-table-renderer", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { koMousemove: "koMousemove", koMousedown: "koMousedown", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field\n [config]=\"columnHeadOrAddFieldConfig()\"\n ></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: KoContainer, selector: "ko-layer, ko-fastlayer, ko-group" }, { kind: "component", type: KoStage, selector: "ko-stage", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: KoShape, selector: "ko-shape, ko-circle, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow, ko-transformer", inputs: ["config"], outputs: ["koMouseover", "koMousemove", "koMouseout", "koMouseenter", "koMouseleave", "koMousedown", "koMouseup", "koWheel", "koContextmenu", "koClick", "koDblclick", "koTouchstart", "koTouchmove", "koTouchend", "koTap", "koDbltap", "koDragstart", "koDragmove", "koDragend"] }, { kind: "component", type: AITableColumnHeads, selector: "ai-table-column-heads", inputs: ["config"] }, { kind: "component", type: AITableFrozenColumnHeads, selector: "ai-table-frozen-column-heads", inputs: ["config"] }, { kind: "component", type: AITableCells, selector: "ai-table-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenCells, selector: "ai-table-frozen-cells", inputs: ["config"] }, { kind: "component", type: AITableFrozenPlaceholderCells, selector: "ai-table-frozen-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITablePlaceholderCells, selector: "ai-table-placeholder-cells", inputs: ["config"] }, { kind: "component", type: AITableAddField, selector: "ai-table-add-field", inputs: ["config"] }, { kind: "component", type: AITableHoverRowHeads, selector: "ai-table-hover-row-heads", inputs: ["config"] }, { kind: "component", type: AITableOtherRows, selector: "ai-table-other-rows", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
6049
6070
|
}
|
6050
6071
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableRenderer, decorators: [{
|
6051
6072
|
type: Component,
|
@@ -6053,8 +6074,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
6053
6074
|
KoContainer,
|
6054
6075
|
KoStage,
|
6055
6076
|
KoShape,
|
6056
|
-
AITableIcon,
|
6057
|
-
AITableFieldHead,
|
6058
6077
|
AITableColumnHeads,
|
6059
6078
|
AITableFrozenColumnHeads,
|
6060
6079
|
AITableCells,
|
@@ -6064,14 +6083,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
6064
6083
|
AITableAddField,
|
6065
6084
|
AITableHoverRowHeads,
|
6066
6085
|
AITableOtherRows
|
6067
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"
|
6086
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n>\n <ko-layer>\n <ko-group [config]=\"gridGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-frozen-cells [config]=\"cellsConfig()\"></ai-table-frozen-cells>\n <ai-table-other-rows [config]=\"cellsConfig()\"></ai-table-other-rows>\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n <ai-table-frozen-placeholder-cells [config]=\"cellsConfig()\"></ai-table-frozen-placeholder-cells>\n </ko-group>\n\n <ko-group>\n <ai-table-frozen-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-frozen-column-heads>\n </ko-group>\n\n <ko-group [config]=\"commonGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-cells [config]=\"cellsConfig()\"></ai-table-cells>\n </ko-group>\n\n <ko-group [config]=\"offsetXConfig()\">\n <ai-table-column-heads [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-heads>\n <ai-table-add-field\n [config]=\"columnHeadOrAddFieldConfig()\"\n ></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n @if (activeCellBorderConfig().frozenActiveCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().frozenActiveCellBorder!\"></ko-rect>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
|
6068
6087
|
}] });
|
6069
6088
|
|
6070
6089
|
class AITableGrid extends AITableGridBase {
|
6071
6090
|
constructor() {
|
6072
6091
|
super();
|
6073
6092
|
this.fieldHeadHeight = AI_TABLE_FIELD_HEAD_HEIGHT;
|
6074
|
-
this.ADD_BUTTON_WIDTH = AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
6075
6093
|
this.containerRect = signal({ width: 0, height: 0 });
|
6076
6094
|
this.hasContainerRect = computed(() => {
|
6077
6095
|
return this.containerRect().width > 0 && this.containerRect().height > 0;
|
@@ -6120,6 +6138,9 @@ class AITableGrid extends AITableGridBase {
|
|
6120
6138
|
this.scrollTotalHeight = computed(() => {
|
6121
6139
|
return Math.max(this.coordinate().totalHeight, this.containerRect().height - this.fieldHeadHeight);
|
6122
6140
|
});
|
6141
|
+
this.scrollbarWidth = computed(() => {
|
6142
|
+
return this.coordinate().totalWidth + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
6143
|
+
});
|
6123
6144
|
this.scrollAction = (options) => {
|
6124
6145
|
if (this.timer) {
|
6125
6146
|
cancelAnimationFrame(this.timer);
|
@@ -6276,8 +6297,8 @@ class AITableGrid extends AITableGridBase {
|
|
6276
6297
|
x: containerRect.x + moreRect.x,
|
6277
6298
|
y: containerRect.y + moreRect.y + moreRect.height
|
6278
6299
|
};
|
6279
|
-
const
|
6280
|
-
x:
|
6300
|
+
const editFieldPosition = {
|
6301
|
+
x: containerRect.x + fieldGroupRect.x - AI_TABLE_CELL_PADDING,
|
6281
6302
|
y: containerRect.y + fieldGroupRect.y + fieldGroupRect.height
|
6282
6303
|
};
|
6283
6304
|
const editOrigin = this.containerElement().querySelector('.konvajs-content');
|
@@ -6287,7 +6308,7 @@ class AITableGrid extends AITableGridBase {
|
|
6287
6308
|
origin: this.containerElement(),
|
6288
6309
|
position,
|
6289
6310
|
editOrigin: editOrigin,
|
6290
|
-
|
6311
|
+
editFieldPosition
|
6291
6312
|
});
|
6292
6313
|
}
|
6293
6314
|
return;
|
@@ -6361,7 +6382,7 @@ class AITableGrid extends AITableGridBase {
|
|
6361
6382
|
containerResizeListener() {
|
6362
6383
|
this.resizeObserver = new ResizeObserver(() => {
|
6363
6384
|
const containerWidth = this.containerElement().offsetWidth;
|
6364
|
-
const totalWidth = this.coordinate().totalWidth +
|
6385
|
+
const totalWidth = this.coordinate().totalWidth + AI_TABLE_FIELD_ADD_BUTTON_WIDTH;
|
6365
6386
|
this.setContainerRect();
|
6366
6387
|
if (containerWidth >= totalWidth) {
|
6367
6388
|
this.aiTable.context.setScrollState({ scrollLeft: 0 });
|
@@ -6414,13 +6435,13 @@ class AITableGrid extends AITableGridBase {
|
|
6414
6435
|
}
|
6415
6436
|
}
|
6416
6437
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
6417
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", host: { classAttribute: "ai-table-grid" }, providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "verticalBarRef", first: true, predicate: ["verticalBar"], descendants: true, isSignal: true }, { propertyName: "horizontalBarRef", first: true, predicate: ["horizontalBar"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n >\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"
|
6438
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AITableGrid, isStandalone: true, selector: "ai-table-grid", host: { classAttribute: "ai-table-grid" }, providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "verticalBarRef", first: true, predicate: ["verticalBar"], descendants: true, isSignal: true }, { propertyName: "horizontalBarRef", first: true, predicate: ["horizontalBar"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n >\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n</div>\n", dependencies: [{ kind: "component", type: AITableRenderer, selector: "ai-table-renderer", inputs: ["config"], outputs: ["koMousemove", "koMousedown", "koWheel", "koClick", "koDblclick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
6418
6439
|
}
|
6419
6440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableGrid, decorators: [{
|
6420
6441
|
type: Component,
|
6421
6442
|
args: [{ selector: 'ai-table-grid', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
6422
6443
|
class: 'ai-table-grid'
|
6423
|
-
}, imports: [AITableRenderer], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n >\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"
|
6444
|
+
}, imports: [AITableRenderer], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n >\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n</div>\n" }]
|
6424
6445
|
}], ctorParameters: () => [] });
|
6425
6446
|
|
6426
6447
|
/**
|