@ai-table/grid 0.1.22 → 0.1.23
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/components/stat-type-menu/stat-type-menu.scss +12 -0
- package/components/stat-type-menu/stat-type-menucomponent.d.ts +17 -0
- package/components/stat-type-menu/stat-type-menucomponent.d.ts.map +1 -0
- package/constants/icon.d.ts +1 -0
- package/constants/icon.d.ts.map +1 -1
- package/constants/table.d.ts +2 -0
- package/constants/table.d.ts.map +1 -1
- package/fesm2022/ai-table-grid.mjs +511 -26
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid.component.d.ts +5 -3
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/renderer/components/field-stat/stat.component.d.ts +73 -0
- package/renderer/components/field-stat/stat.component.d.ts.map +1 -0
- package/renderer/components/field-stat/stats.component.d.ts +9 -0
- package/renderer/components/field-stat/stats.component.d.ts.map +1 -0
- package/renderer/components/fill-handle.component.d.ts +21 -0
- package/renderer/components/fill-handle.component.d.ts.map +1 -0
- package/renderer/creations/create-stats.d.ts +3 -0
- package/renderer/creations/create-stats.d.ts.map +1 -0
- package/renderer/renderer.component.d.ts +4 -1
- package/renderer/renderer.component.d.ts.map +1 -1
- package/services/selection.service.d.ts +1 -1
- package/services/selection.service.d.ts.map +1 -1
- package/types/component-config.d.ts +24 -0
- package/types/component-config.d.ts.map +1 -1
- package/types/grid.d.ts +3 -6
- package/types/grid.d.ts.map +1 -1
- package/utils/drag-fill/drag-fill.d.ts +18 -0
- package/utils/drag-fill/drag-fill.d.ts.map +1 -0
- package/utils/drag-fill/index.d.ts +2 -0
- package/utils/drag-fill/index.d.ts.map +1 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.d.ts.map +1 -1
- package/utils/style.d.ts.map +1 -1
@@ -53,7 +53,7 @@ import { ThySelect, ThySelectModule } from 'ngx-tethys/select';
|
|
53
53
|
import { ThyDot } from 'ngx-tethys/dot';
|
54
54
|
import { ThyIcon } from 'ngx-tethys/icon';
|
55
55
|
import { ThyTag } from 'ngx-tethys/tag';
|
56
|
-
import { ThyDropdownMenuComponent, ThyDropdownMenuGroup, ThyDropdownDirective,
|
56
|
+
import { ThyDropdownAbstractMenu, ThyDropdownMenuItemDirective, ThyDropdownMenuComponent, ThyDropdownMenuGroup, ThyDropdownDirective, ThyDropdownMenuItemIconDirective, ThyDropdownMenuItemNameDirective, ThyDropdownMenuItemExtendIconDirective, ThyDropdownMenuItemMetaDirective } from 'ngx-tethys/dropdown';
|
57
57
|
import { ThySwitch } from 'ngx-tethys/switch';
|
58
58
|
import { of, Subject, fromEvent, debounceTime, mergeWith, animationFrames, filter } from 'rxjs';
|
59
59
|
import { isKeyHotkey } from 'is-hotkey';
|
@@ -2106,6 +2106,7 @@ const AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE = 8; // 字段表列头图标的间距
|
|
2106
2106
|
const AI_TABLE_FIELD_HEAD_MORE = 'AI_TABLE_FIELD_HEAD_MORE'; // 更多图标名称
|
2107
2107
|
const AI_TABLE_FIELD_HEAD_OPACITY_LINE = 'AI_TABLE_FIELD_HEAD_OPACITY_LINE'; // 字段列头透明线
|
2108
2108
|
const AI_TABLE_ROW_DRAG = 'AI_TABLE_ROW_DRAG'; // 行拖拽
|
2109
|
+
const AI_TABLE_FILL_HANDLE = 'AI_TABLE_FILL_HANDLE'; // 填充手柄
|
2109
2110
|
const AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS = '.ai-table-prevent-clear-selection';
|
2110
2111
|
const AI_TABLE_ICON_COMMON_SIZE = 16; // 表格图标的通用尺寸
|
2111
2112
|
const AI_TABLE_CELL = 'AI_TABLE_CELL'; // 单元格标识
|
@@ -2158,6 +2159,7 @@ const AI_TABLE_AUTO_SCROLL_LEFT_THRESHOLD = 40;
|
|
2158
2159
|
const AI_TABLE_AUTO_SCROLL_RIGHT_THRESHOLD = 40;
|
2159
2160
|
const AI_TABLE_AUTO_SCROLL_TOP_THRESHOLD = AI_TABLE_FIELD_HEAD_HEIGHT / 2;
|
2160
2161
|
const AI_TABLE_AUTO_SCROLL_BOTTOM_THRESHOLD = AI_TABLE_FIELD_HEAD_HEIGHT / 2;
|
2162
|
+
const AI_TABLE_FIELD_STAT_HEIGHT = 48; // 字段统计高度
|
2161
2163
|
|
2162
2164
|
const MIN_COLUMN_WIDTH = 80;
|
2163
2165
|
const DBL_CLICK_EDIT_TYPE = [
|
@@ -2220,6 +2222,7 @@ const DepartmentOutlinedPath = `M3 5.5C3 3.567 4.567 2 6.5 2C8.433 2 10 3.567 10
|
|
2220
2222
|
const AttachmentPath = `M9.1773124,11.8057395 C7.96668709,13.0163648 6.00387566,13.0163648 4.79325035,11.8057395 C3.58262505,10.5951142 3.58262505,8.63230278 4.78926443,7.4257012 L8.27628904,3.87217601 C8.50840068,3.63567937 8.88828274,3.63209333 9.12479868,3.86418566 C9.36131462,4.096278 9.36490066,4.47616006 9.13280833,4.712676 L5.64177849,8.27020561 C4.89978234,9.01220177 4.89978234,10.2152152 5.64177849,10.9572114 C6.38377464,11.6992075 7.5867881,11.6992075 8.32878426,10.9572114 L12.2321177,7.05387799 C13.3493901,5.93660552 13.2780395,4.02707269 12.0410949,2.79012806 C10.8041502,1.55318343 8.8946174,1.4818328 7.77734493,2.59910526 L3.72686067,6.64958953 C2.02034367,8.35610653 2.02835883,11.1329242 3.74721224,12.8517776 C5.46606565,14.570631 8.24288334,14.5786462 9.94940034,12.8721292 L13.5980637,9.22346588 C13.8323782,8.98915131 14.2122772,8.98915131 14.4465918,9.22346588 C14.6809064,9.45778046 14.6809064,9.83767945 14.4465918,10.071994 L10.7979285,13.7206573 C8.62168228,15.8969035 5.08507361,15.8866953 2.8986841,13.7003058 C0.712294592,11.5139163 0.702086332,7.97730759 2.87833253,5.8010614 L6.9288168,1.75057713 C8.52947856,0.149915361 11.1976354,0.249612361 12.889623,1.94159992 C14.5816106,3.63358749 14.6813076,6.30174436 13.0806458,7.90240612 L9.1773124,11.8057395 Z`;
|
2221
2223
|
const EditPath = `M2,8.33918294 L10.7095952,0 L15,4.17020474 L6.53816398,13 L2,13 L2,8.33918294 Z M3.2,8.85157902 L3.2,11.8 L6.02608482,11.8 L13.3091776,4.20020516 L10.7033283,1.66736141 L3.2,8.85157902 Z M0,16 L0,14.8 L16,14.8 L16,16 L0,16 Z`;
|
2222
2224
|
const RowDragPath = `M6,3 C6.55228475,3 7,2.55228475 7,2 C7,1.44771525 6.55228475,1 6,1 C5.44771525,1 5,1.44771525 5,2 C5,2.55228475 5.44771525,3 6,3 Z M10,3 C10.5522847,3 11,2.55228475 11,2 C11,1.44771525 10.5522847,1 10,1 C9.44771525,1 9,1.44771525 9,2 C9,2.55228475 9.44771525,3 10,3 Z M6,7 C6.55228475,7 7,6.55228475 7,6 C7,5.44771525 6.55228475,5 6,5 C5.44771525,5 5,5.44771525 5,6 C5,6.55228475 5.44771525,7 6,7 Z M10,7 C10.5522847,7 11,6.55228475 11,6 C11,5.44771525 10.5522847,5 10,5 C9.44771525,5 9,5.44771525 9,6 C9,6.55228475 9.44771525,7 10,7 Z M6,11 C6.55228475,11 7,10.5522847 7,10 C7,9.44771525 6.55228475,9 6,9 C5.44771525,9 5,9.44771525 5,10 C5,10.5522847 5.44771525,11 6,11 Z M10,11 C10.5522847,11 11,10.5522847 11,10 C11,9.44771525 10.5522847,9 10,9 C9.44771525,9 9,9.44771525 9,10 C9,10.5522847 9.44771525,11 10,11 Z M6,15 C6.55228475,15 7,14.5522847 7,14 C7,13.4477153 6.55228475,13 6,13 C5.44771525,13 5,13.4477153 5,14 C5,14.5522847 5.44771525,15 6,15 Z M10,15 C10.5522847,15 11,14.5522847 11,14 C11,13.4477153 10.5522847,13 10,13 C9.44771525,13 9,13.4477153 9,14 C9,14.5522847 9.44771525,15 10,15 Z`;
|
2225
|
+
const AngleDownPath = `M7.97815,11.99732 L7.9728,12.00267 L2.2998,6.33067 L3.1298,5.49967 L7.97807731,10.3479473 L12.8255,5.49967 L13.6565,6.33067 L7.9835,12.00267 L7.97815,11.99732 Z`;
|
2223
2226
|
const IconPathMap = {};
|
2224
2227
|
|
2225
2228
|
const DEFAULT_FONT_SIZE = 14;
|
@@ -3813,6 +3816,9 @@ const handleMouseStyle = (realTargetName, areaType = AITableAreaType.grid, conta
|
|
3813
3816
|
case AI_TABLE_ROW_DRAG: {
|
3814
3817
|
return setMouseStyle('pointer', container);
|
3815
3818
|
}
|
3819
|
+
case AI_TABLE_FILL_HANDLE: {
|
3820
|
+
return setMouseStyle('crosshair', container);
|
3821
|
+
}
|
3816
3822
|
default:
|
3817
3823
|
return setMouseStyle('default', container);
|
3818
3824
|
}
|
@@ -8038,6 +8044,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
8038
8044
|
}]
|
8039
8045
|
}] });
|
8040
8046
|
|
8047
|
+
class AITableFillHandle {
|
8048
|
+
constructor() {
|
8049
|
+
this.config = input.required();
|
8050
|
+
this.hasSelectedCells = computed(() => {
|
8051
|
+
return this.config().aiTable.selection().selectedCells.size > 0;
|
8052
|
+
});
|
8053
|
+
this.readonly = computed(() => {
|
8054
|
+
return this.config().readonly;
|
8055
|
+
});
|
8056
|
+
this.handleConfig = computed(() => {
|
8057
|
+
const { aiTable, coordinate } = this.config();
|
8058
|
+
const selectedCells = Array.from(aiTable.selection().selectedCells);
|
8059
|
+
const lastCell = selectedCells[selectedCells.length - 1];
|
8060
|
+
const [recordId, fieldId] = lastCell.split(':');
|
8061
|
+
const columnIndex = aiTable.context.visibleColumnsIndexMap().get(fieldId);
|
8062
|
+
const columnOffset = coordinate.getColumnOffset(columnIndex);
|
8063
|
+
const columnWidth = coordinate.getColumnWidth(columnIndex);
|
8064
|
+
const rowIndex = aiTable.context.visibleRowsIndexMap().get(recordId);
|
8065
|
+
const rowOffset = coordinate.getRowOffset(rowIndex);
|
8066
|
+
const width = 6;
|
8067
|
+
const height = 6;
|
8068
|
+
return {
|
8069
|
+
x: columnOffset + columnWidth - width / 2 + AI_TABLE_OFFSET,
|
8070
|
+
y: rowOffset + AI_TABLE_ROW_HEIGHT - height + AI_TABLE_CELL_BORDER + AI_TABLE_OFFSET,
|
8071
|
+
width,
|
8072
|
+
height,
|
8073
|
+
fill: Colors.primary,
|
8074
|
+
stroke: Colors.white,
|
8075
|
+
strokeWidth: 2,
|
8076
|
+
zIndex: 20,
|
8077
|
+
name: generateTargetName({
|
8078
|
+
targetName: AI_TABLE_FILL_HANDLE,
|
8079
|
+
fieldId,
|
8080
|
+
recordId
|
8081
|
+
})
|
8082
|
+
};
|
8083
|
+
});
|
8084
|
+
}
|
8085
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFillHandle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
8086
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableFillHandle, isStandalone: true, selector: "ai-table-fill-handle", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
8087
|
+
@if (hasSelectedCells() && !readonly()) {
|
8088
|
+
<ko-rect [config]="handleConfig()"></ko-rect>
|
8089
|
+
}
|
8090
|
+
`, isInline: true, dependencies: [{ 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"] }] }); }
|
8091
|
+
}
|
8092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFillHandle, decorators: [{
|
8093
|
+
type: Component,
|
8094
|
+
args: [{
|
8095
|
+
selector: 'ai-table-fill-handle',
|
8096
|
+
template: `
|
8097
|
+
@if (hasSelectedCells() && !readonly()) {
|
8098
|
+
<ko-rect [config]="handleConfig()"></ko-rect>
|
8099
|
+
}
|
8100
|
+
`,
|
8101
|
+
imports: [KoShape]
|
8102
|
+
}]
|
8103
|
+
}] });
|
8104
|
+
|
8041
8105
|
class AITableCoverCells {
|
8042
8106
|
constructor() {
|
8043
8107
|
this.config = input.required();
|
@@ -8145,6 +8209,256 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
8145
8209
|
}]
|
8146
8210
|
}] });
|
8147
8211
|
|
8212
|
+
const createFieldStats = (config) => {
|
8213
|
+
const { coordinate, columnStartIndex, columnStopIndex, aiTable, actions } = config;
|
8214
|
+
const colors = Colors;
|
8215
|
+
const { columnCount, rowInitSize: fieldHeadHeight } = coordinate;
|
8216
|
+
const fields = aiTable.gridData().fields;
|
8217
|
+
const fieldStats = [];
|
8218
|
+
for (let columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
|
8219
|
+
if (columnIndex > columnCount - 1)
|
8220
|
+
break;
|
8221
|
+
if (columnIndex < 0)
|
8222
|
+
continue;
|
8223
|
+
const field = fields[columnIndex];
|
8224
|
+
if (field == null)
|
8225
|
+
continue;
|
8226
|
+
const x = coordinate.getColumnOffset(columnIndex);
|
8227
|
+
const columnWidth = coordinate.getColumnWidth(columnIndex);
|
8228
|
+
const fieldStat = {
|
8229
|
+
aiTable,
|
8230
|
+
coordinate,
|
8231
|
+
actions,
|
8232
|
+
x,
|
8233
|
+
y: coordinate.containerHeight - AI_TABLE_FIELD_STAT_HEIGHT,
|
8234
|
+
width: columnWidth,
|
8235
|
+
height: fieldHeadHeight,
|
8236
|
+
field,
|
8237
|
+
stroke: columnIndex === 0 ? colors.transparent : undefined
|
8238
|
+
};
|
8239
|
+
fieldStats.push(fieldStat);
|
8240
|
+
}
|
8241
|
+
return fieldStats;
|
8242
|
+
};
|
8243
|
+
|
8244
|
+
class AITableStatTypeMenu extends ThyDropdownAbstractMenu {
|
8245
|
+
constructor() {
|
8246
|
+
super(...arguments);
|
8247
|
+
this.field = input.required();
|
8248
|
+
this.aiTable = input.required();
|
8249
|
+
this.statMenus = input.required();
|
8250
|
+
this.menuClick = output();
|
8251
|
+
}
|
8252
|
+
execute(menu) {
|
8253
|
+
this.menuClick.emit({
|
8254
|
+
menu,
|
8255
|
+
field: this.field()
|
8256
|
+
});
|
8257
|
+
}
|
8258
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableStatTypeMenu, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
8259
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableStatTypeMenu, isStandalone: true, selector: "ai-table-stat-type-menu", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, aiTable: { classPropertyName: "aiTable", publicName: "aiTable", isSignal: true, isRequired: true, transformFunction: null }, statMenus: { classPropertyName: "statMenus", publicName: "statMenus", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { menuClick: "menuClick" }, host: { classAttribute: "stat-type-menu" }, usesInheritance: true, ngImport: i0, template: "@if (field()) {\n @for (menu of statMenus(); track index; let index = $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <span>{{ menu.name }}</span>\n </a>\n }\n}\n", dependencies: [{ kind: "directive", type: ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
8260
|
+
}
|
8261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableStatTypeMenu, decorators: [{
|
8262
|
+
type: Component,
|
8263
|
+
args: [{ selector: 'ai-table-stat-type-menu', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
8264
|
+
class: 'stat-type-menu'
|
8265
|
+
}, imports: [ThyDropdownMenuItemDirective], template: "@if (field()) {\n @for (menu of statMenus(); track index; let index = $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"execute(menu)\">\n <span>{{ menu.name }}</span>\n </a>\n }\n}\n" }]
|
8266
|
+
}] });
|
8267
|
+
|
8268
|
+
class AITableFieldStat {
|
8269
|
+
constructor() {
|
8270
|
+
this.thyPopover = inject(ThyPopover);
|
8271
|
+
this.config = input.required();
|
8272
|
+
this.textOffset = AI_TABLE_CELL_PADDING + AI_TABLE_ICON_COMMON_SIZE + AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE;
|
8273
|
+
this.textMeasure = TextMeasure();
|
8274
|
+
this.availableTextWidth = computed(() => {
|
8275
|
+
const { width } = this.config();
|
8276
|
+
return width - AI_TABLE_ICON_COMMON_SIZE;
|
8277
|
+
});
|
8278
|
+
this.textData = computed(() => {
|
8279
|
+
const fieldName = this.config().field.name.replace(/\r|\n/g, ' ');
|
8280
|
+
this.textMeasure.setFont({ fontSize: DEFAULT_FONT_SIZE });
|
8281
|
+
const { width, height, isOverflow } = this.textMeasure.measureText(fieldName, this.availableTextWidth(), 1);
|
8282
|
+
return {
|
8283
|
+
width: Math.min(width, this.availableTextWidth()),
|
8284
|
+
height,
|
8285
|
+
isOverflow
|
8286
|
+
};
|
8287
|
+
});
|
8288
|
+
this.groupConfig = computed(() => {
|
8289
|
+
return {
|
8290
|
+
x: this.config().x,
|
8291
|
+
y: this.config().y
|
8292
|
+
};
|
8293
|
+
});
|
8294
|
+
this.bgConfig = computed(() => {
|
8295
|
+
const { field, width, height } = this.config();
|
8296
|
+
return {
|
8297
|
+
x: AI_TABLE_OFFSET,
|
8298
|
+
y: AI_TABLE_OFFSET,
|
8299
|
+
name: generateTargetName({
|
8300
|
+
targetName: 'sss',
|
8301
|
+
fieldId: field._id,
|
8302
|
+
mouseStyle: 'pointer'
|
8303
|
+
}),
|
8304
|
+
width: width,
|
8305
|
+
height: height,
|
8306
|
+
fill: Colors.white,
|
8307
|
+
stroke: Colors.gray200,
|
8308
|
+
strokeWidth: 1,
|
8309
|
+
opacity: 1
|
8310
|
+
};
|
8311
|
+
});
|
8312
|
+
this.field = computed(() => {
|
8313
|
+
const { field } = this.config();
|
8314
|
+
return field;
|
8315
|
+
});
|
8316
|
+
this.records = computed(() => {
|
8317
|
+
const { aiTable } = this.config();
|
8318
|
+
return aiTable.records;
|
8319
|
+
});
|
8320
|
+
this.statValue = computed(() => {
|
8321
|
+
const field = this.field();
|
8322
|
+
const records = this.records();
|
8323
|
+
const fieldModel = FieldModelMap[field.type];
|
8324
|
+
const result = fieldModel.getStatFormatValue(field, records());
|
8325
|
+
return result;
|
8326
|
+
});
|
8327
|
+
this.textConfig = computed(() => {
|
8328
|
+
const { field, height, aiTable } = this.config();
|
8329
|
+
const text = this.statValue();
|
8330
|
+
if (text) {
|
8331
|
+
return {
|
8332
|
+
x: this.textOffset,
|
8333
|
+
y: 0,
|
8334
|
+
width: Math.max(this.textData().width, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH),
|
8335
|
+
height: height + 2,
|
8336
|
+
text: this.statValue(),
|
8337
|
+
lineHeight: 1.84
|
8338
|
+
};
|
8339
|
+
}
|
8340
|
+
return null;
|
8341
|
+
});
|
8342
|
+
this.iconConfig = computed(() => {
|
8343
|
+
const { field, width, height } = this.config();
|
8344
|
+
const commonIconOffsetY = (height - AI_TABLE_ACTION_COMMON_SIZE) / 2;
|
8345
|
+
return {
|
8346
|
+
x: width - AI_TABLE_ACTION_COMMON_SIZE,
|
8347
|
+
y: commonIconOffsetY,
|
8348
|
+
data: AngleDownPath,
|
8349
|
+
fill: Colors.gray600,
|
8350
|
+
background: Colors.transparent,
|
8351
|
+
backgroundWidth: AI_TABLE_ACTION_COMMON_SIZE,
|
8352
|
+
backgroundHeight: AI_TABLE_ACTION_COMMON_SIZE,
|
8353
|
+
cornerRadius: 4,
|
8354
|
+
listening: false
|
8355
|
+
};
|
8356
|
+
});
|
8357
|
+
}
|
8358
|
+
clickStat(e) {
|
8359
|
+
e.event.evt.stopPropagation();
|
8360
|
+
const { aiTable, coordinate, field, actions } = this.config();
|
8361
|
+
const statRect = e.event.target.getClientRect();
|
8362
|
+
const fieldGroupRect = e.event.target.getParent()?.getParent()?.getClientRect();
|
8363
|
+
const containerRect = coordinate.container.getBoundingClientRect();
|
8364
|
+
const position = {
|
8365
|
+
x: containerRect.x + statRect.x,
|
8366
|
+
y: containerRect.y + statRect.y + statRect.height - 50
|
8367
|
+
};
|
8368
|
+
const editFieldPosition = {
|
8369
|
+
x: containerRect.x + fieldGroupRect.x - AI_TABLE_CELL_PADDING,
|
8370
|
+
y: containerRect.y + fieldGroupRect.y + fieldGroupRect.height
|
8371
|
+
};
|
8372
|
+
const editOrigin = coordinate.container.querySelector('.konvajs-content');
|
8373
|
+
const fieldModel = FieldModelMap[field.type];
|
8374
|
+
const ref = this.thyPopover.open(AITableStatTypeMenu, {
|
8375
|
+
origin: coordinate.container,
|
8376
|
+
originPosition: position,
|
8377
|
+
placement: 'topLeft',
|
8378
|
+
originActiveClass: undefined,
|
8379
|
+
insideClosable: true,
|
8380
|
+
initialState: {
|
8381
|
+
origin: editOrigin,
|
8382
|
+
position: editFieldPosition,
|
8383
|
+
aiTable,
|
8384
|
+
field,
|
8385
|
+
statMenus: fieldModel.statTypes
|
8386
|
+
// fieldMenus:
|
8387
|
+
}
|
8388
|
+
});
|
8389
|
+
ref.componentInstance.menuClick.subscribe((event) => {
|
8390
|
+
actions.setField({
|
8391
|
+
...event.field,
|
8392
|
+
stat_type: event.menu.type
|
8393
|
+
});
|
8394
|
+
});
|
8395
|
+
}
|
8396
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFieldStat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
8397
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableFieldStat, isStandalone: true, selector: "ai-table-field-stat", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
8398
|
+
<ko-group [config]="groupConfig()">
|
8399
|
+
<ko-rect [config]="bgConfig()" (koClick)="clickStat($event)"></ko-rect>
|
8400
|
+
@if (textConfig()) {
|
8401
|
+
<ko-group>
|
8402
|
+
<ai-table-text [config]="textConfig()!"></ai-table-text>
|
8403
|
+
<ai-table-icon [config]="iconConfig()"></ai-table-icon>
|
8404
|
+
</ko-group>
|
8405
|
+
}
|
8406
|
+
</ko-group>
|
8407
|
+
`, 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: AITableTextComponent, selector: "ai-table-text", inputs: ["config"], outputs: ["koClick", "koMouseMove"] }, { kind: "component", type: AITableIcon, selector: "ai-table-icon", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
8408
|
+
}
|
8409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFieldStat, decorators: [{
|
8410
|
+
type: Component,
|
8411
|
+
args: [{
|
8412
|
+
selector: 'ai-table-field-stat',
|
8413
|
+
template: `
|
8414
|
+
<ko-group [config]="groupConfig()">
|
8415
|
+
<ko-rect [config]="bgConfig()" (koClick)="clickStat($event)"></ko-rect>
|
8416
|
+
@if (textConfig()) {
|
8417
|
+
<ko-group>
|
8418
|
+
<ai-table-text [config]="textConfig()!"></ai-table-text>
|
8419
|
+
<ai-table-icon [config]="iconConfig()"></ai-table-icon>
|
8420
|
+
</ko-group>
|
8421
|
+
}
|
8422
|
+
</ko-group>
|
8423
|
+
`,
|
8424
|
+
imports: [KoContainer, KoShape, AITableTextComponent, AITableIcon],
|
8425
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
8426
|
+
}]
|
8427
|
+
}] });
|
8428
|
+
|
8429
|
+
class AITableFieldStats {
|
8430
|
+
constructor() {
|
8431
|
+
this.config = input.required();
|
8432
|
+
this.statConfigs = computed(() => {
|
8433
|
+
const { coordinate, columnStartIndex } = this.config();
|
8434
|
+
const { frozenColumnCount } = coordinate;
|
8435
|
+
return createFieldStats({
|
8436
|
+
...this.config(),
|
8437
|
+
columnStartIndex: Math.max(columnStartIndex, frozenColumnCount)
|
8438
|
+
});
|
8439
|
+
});
|
8440
|
+
}
|
8441
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFieldStats, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
8442
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AITableFieldStats, isStandalone: true, selector: "ai-table-column-stats", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
8443
|
+
@for (config of statConfigs(); track $index) {
|
8444
|
+
<ai-table-field-stat [config]="config"></ai-table-field-stat>
|
8445
|
+
}
|
8446
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AITableFieldStat, selector: "ai-table-field-stat", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
8447
|
+
}
|
8448
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableFieldStats, decorators: [{
|
8449
|
+
type: Component,
|
8450
|
+
args: [{
|
8451
|
+
selector: 'ai-table-column-stats',
|
8452
|
+
template: `
|
8453
|
+
@for (config of statConfigs(); track $index) {
|
8454
|
+
<ai-table-field-stat [config]="config"></ai-table-field-stat>
|
8455
|
+
}
|
8456
|
+
`,
|
8457
|
+
imports: [AITableFieldStat],
|
8458
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
8459
|
+
}]
|
8460
|
+
}] });
|
8461
|
+
|
8148
8462
|
Konva.pixelRatio = 2;
|
8149
8463
|
class AITableRenderer {
|
8150
8464
|
constructor() {
|
@@ -8229,7 +8543,7 @@ class AITableRenderer {
|
|
8229
8543
|
return {
|
8230
8544
|
clipX: 0,
|
8231
8545
|
clipY: this.coordinate().rowInitSize - 1,
|
8232
|
-
clipWidth: this.frozenAreaWidth(),
|
8546
|
+
clipWidth: this.frozenAreaWidth() + 10,
|
8233
8547
|
clipHeight: this.containerHeight() - this.coordinate().rowInitSize
|
8234
8548
|
};
|
8235
8549
|
});
|
@@ -8262,11 +8576,12 @@ class AITableRenderer {
|
|
8262
8576
|
});
|
8263
8577
|
this.columnHeadOrAddFieldConfig = computed(() => {
|
8264
8578
|
const { columnStartIndex, columnStopIndex } = this.visibleRangeInfo();
|
8265
|
-
const { aiTable, coordinate, readonly, maxFields } = this.config();
|
8579
|
+
const { aiTable, coordinate, readonly, maxFields, actions } = this.config();
|
8266
8580
|
const { pointPosition } = aiTable.context;
|
8267
8581
|
const fields = this.fields();
|
8268
8582
|
return {
|
8269
8583
|
aiTable,
|
8584
|
+
actions,
|
8270
8585
|
coordinate,
|
8271
8586
|
fields,
|
8272
8587
|
columnStartIndex,
|
@@ -8292,6 +8607,23 @@ class AITableRenderer {
|
|
8292
8607
|
maxRecords
|
8293
8608
|
};
|
8294
8609
|
});
|
8610
|
+
this.fillHandleConfig = computed(() => {
|
8611
|
+
return {
|
8612
|
+
aiTable: this.config().aiTable,
|
8613
|
+
coordinate: this.coordinate(),
|
8614
|
+
readonly: this.readonly()
|
8615
|
+
};
|
8616
|
+
});
|
8617
|
+
this.isLastSelectedCellInFrozenColumn = computed(() => {
|
8618
|
+
const { aiTable } = this.config();
|
8619
|
+
const selectedCells = Array.from(aiTable.selection().selectedCells);
|
8620
|
+
if (selectedCells.length === 0)
|
8621
|
+
return false;
|
8622
|
+
const lastCell = selectedCells[selectedCells.length - 1];
|
8623
|
+
const [, fieldId] = lastCell.split(':');
|
8624
|
+
const columnIndex = aiTable.context.visibleColumnsIndexMap().get(fieldId);
|
8625
|
+
return AITable.isFrozenColumn(aiTable, columnIndex);
|
8626
|
+
});
|
8295
8627
|
this.activeCellBorderConfig = computed(() => {
|
8296
8628
|
return createActiveCellBorder(this.cellsConfig());
|
8297
8629
|
});
|
@@ -8338,7 +8670,7 @@ class AITableRenderer {
|
|
8338
8670
|
this.koMouseleave.emit(e);
|
8339
8671
|
}
|
8340
8672
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
8341
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", 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", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($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 @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\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 <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\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: AITableCoverCells, selector: "ai-table-cover-cell", inputs: ["config", "onlyDisplayBorder"] }, { 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 }); }
|
8673
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", 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", koMouseup: "koMouseup", koContextmenu: "koContextmenu", koWheel: "koWheel", koClick: "koClick", koDblclick: "koDblclick", koMouseleave: "koMouseleave" }, ngImport: i0, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($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 @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\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 <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n <ai-table-column-stats [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-stats>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\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: AITableCoverCells, selector: "ai-table-cover-cell", inputs: ["config", "onlyDisplayBorder"] }, { 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"] }, { kind: "component", type: AITableFillHandle, selector: "ai-table-fill-handle", inputs: ["config"] }, { kind: "component", type: AITableFieldStats, selector: "ai-table-column-stats", inputs: ["config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
8342
8674
|
}
|
8343
8675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableRenderer, decorators: [{
|
8344
8676
|
type: Component,
|
@@ -8355,8 +8687,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
8355
8687
|
AITablePlaceholderCells,
|
8356
8688
|
AITableAddField,
|
8357
8689
|
AITableHoverRowHeads,
|
8358
|
-
AITableOtherRows
|
8359
|
-
|
8690
|
+
AITableOtherRows,
|
8691
|
+
AITableFillHandle,
|
8692
|
+
AITableFieldStats
|
8693
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ko-stage\n [config]=\"stageConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($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 @if (!hiddenIndexColumn()) {\n <ai-table-hover-row-heads [config]=\"cellsConfig()\"></ai-table-hover-row-heads>\n }\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 <ai-table-placeholder-cells [config]=\"cellsConfig()\"></ai-table-placeholder-cells>\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-add-field>\n <ai-table-column-stats [config]=\"columnHeadOrAddFieldConfig()\"></ai-table-column-stats>\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"attachGroupConfig()\">\n <ko-group [config]=\"offsetConfig()\">\n @if (activeCellBorderConfig().activeCellBorder) {\n <ko-rect [config]=\"activeCellBorderConfig().activeCellBorder!\"></ko-rect>\n }\n @if (showExpandCellBorder().expandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (!isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n\n <ko-group [config]=\"frozenCoverAttachGroupConfig()\">\n <ko-group [config]=\"offsetYConfig()\">\n <ai-table-cover-cell [config]=\"cellsConfig()\"></ai-table-cover-cell>\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 @if (showExpandCellBorder().frozenExpandCellBorder) {\n <ai-table-cover-cell [config]=\"cellsConfig()\" [onlyDisplayBorder]=\"true\"></ai-table-cover-cell>\n }\n @if (isLastSelectedCellInFrozenColumn()) {\n <ai-table-fill-handle [config]=\"fillHandleConfig()\"></ai-table-fill-handle>\n }\n </ko-group>\n </ko-group>\n </ko-group>\n </ko-layer>\n</ko-stage>\n\n<ng-content></ng-content>\n" }]
|
8360
8694
|
}] });
|
8361
8695
|
|
8362
8696
|
class AITableCellRate extends CoverCellComponent {
|
@@ -8889,6 +9223,106 @@ function aiTableRectConfigToKonvaConfig(rectConfig, options) {
|
|
8889
9223
|
return result;
|
8890
9224
|
}
|
8891
9225
|
|
9226
|
+
function getFillDirection(aiTable, sourceCells, mouseUpRecordId) {
|
9227
|
+
const { startCell: sourceStartCell, endCell: sourceEndCell } = getStartAndEndCell(sourceCells);
|
9228
|
+
const currentRowIndex = aiTable.context.visibleRowsIndexMap().get(mouseUpRecordId);
|
9229
|
+
const sourceStartRowIndex = aiTable.context.visibleRowsIndexMap().get(sourceStartCell[0]);
|
9230
|
+
const sourceEndRowIndex = aiTable.context.visibleRowsIndexMap().get(sourceEndCell[0]);
|
9231
|
+
if (currentRowIndex < sourceStartRowIndex) {
|
9232
|
+
return 'upward';
|
9233
|
+
}
|
9234
|
+
else if (currentRowIndex > sourceEndRowIndex) {
|
9235
|
+
return 'downward';
|
9236
|
+
}
|
9237
|
+
else {
|
9238
|
+
return undefined;
|
9239
|
+
}
|
9240
|
+
}
|
9241
|
+
function dragFillHighlightArea(aiTable, sourceCells, currentRecordId) {
|
9242
|
+
const { startCell: sourceStartCell, endCell: sourceEndCell } = getStartAndEndCell(sourceCells);
|
9243
|
+
const direction = getFillDirection(aiTable, sourceCells, currentRecordId);
|
9244
|
+
const sourceStartCellFieldId = sourceStartCell[1];
|
9245
|
+
const sourceEndCellFieldId = sourceEndCell[1];
|
9246
|
+
let highlightStartCell;
|
9247
|
+
let highlightEndCell;
|
9248
|
+
if (direction === 'downward') {
|
9249
|
+
highlightStartCell = sourceStartCell;
|
9250
|
+
highlightEndCell = [currentRecordId, sourceEndCellFieldId];
|
9251
|
+
}
|
9252
|
+
else if (direction === 'upward') {
|
9253
|
+
highlightStartCell = [currentRecordId, sourceStartCellFieldId];
|
9254
|
+
highlightEndCell = sourceEndCell;
|
9255
|
+
}
|
9256
|
+
else {
|
9257
|
+
highlightStartCell = sourceStartCell;
|
9258
|
+
highlightEndCell = sourceEndCell;
|
9259
|
+
}
|
9260
|
+
return { highlightStartCell, highlightEndCell };
|
9261
|
+
}
|
9262
|
+
function performFill(aiTable, sourceCells, mouseUpRecordId, actions) {
|
9263
|
+
const selectedCells = Array.from(aiTable.selection().selectedCells);
|
9264
|
+
if (sourceCells.size === 0 || selectedCells.length === 0) {
|
9265
|
+
return;
|
9266
|
+
}
|
9267
|
+
const { startCell: sourceStartCell, endCell: sourceEndCell } = getStartAndEndCell(sourceCells);
|
9268
|
+
const visibleRowsIndexMap = aiTable.context.visibleRowsIndexMap();
|
9269
|
+
const sourceStartRowIndex = visibleRowsIndexMap.get(sourceStartCell[0]);
|
9270
|
+
const sourceEndRowIndex = visibleRowsIndexMap.get(sourceEndCell[0]);
|
9271
|
+
const selectedEndCell = selectedCells[selectedCells.length - 1].split(':');
|
9272
|
+
const selectedEndRowIndex = visibleRowsIndexMap.get(selectedEndCell[0]);
|
9273
|
+
let targetStartRowIndex;
|
9274
|
+
let targetEndRowIndex;
|
9275
|
+
const direction = getFillDirection(aiTable, sourceCells, mouseUpRecordId);
|
9276
|
+
if (direction === 'downward') {
|
9277
|
+
targetStartRowIndex = sourceEndRowIndex + 1;
|
9278
|
+
targetEndRowIndex = selectedEndRowIndex;
|
9279
|
+
}
|
9280
|
+
else {
|
9281
|
+
const selectedFirstCell = selectedCells[0].split(':');
|
9282
|
+
const selectedFirstRowIndex = visibleRowsIndexMap.get(selectedFirstCell[0]);
|
9283
|
+
targetStartRowIndex = selectedFirstRowIndex;
|
9284
|
+
targetEndRowIndex = sourceStartRowIndex - 1;
|
9285
|
+
}
|
9286
|
+
const sourceRowCount = sourceEndRowIndex - sourceStartRowIndex + 1;
|
9287
|
+
const sourceRows = [];
|
9288
|
+
const linearRows = aiTable.context.linearRows();
|
9289
|
+
for (let i = sourceStartRowIndex; i <= sourceEndRowIndex; i++) {
|
9290
|
+
sourceRows.push(linearRows[i]._id);
|
9291
|
+
}
|
9292
|
+
const updateData = [];
|
9293
|
+
const fields = AITable.getVisibleFields(aiTable);
|
9294
|
+
const visibleColumnsIndexMap = aiTable.context.visibleColumnsIndexMap();
|
9295
|
+
const recordsMap = aiTable.recordsMap();
|
9296
|
+
const startFieldIndex = visibleColumnsIndexMap.get(sourceStartCell[1]);
|
9297
|
+
const endFieldIndex = visibleColumnsIndexMap.get(sourceEndCell[1]);
|
9298
|
+
for (let index = startFieldIndex; index <= endFieldIndex; index++) {
|
9299
|
+
const fieldId = fields[index]._id;
|
9300
|
+
for (let rowIndex = targetStartRowIndex; rowIndex <= targetEndRowIndex; rowIndex++) {
|
9301
|
+
const targetRecordId = linearRows[rowIndex]._id;
|
9302
|
+
const relativeRowIndex = direction === 'downward' ? rowIndex - targetStartRowIndex : targetEndRowIndex - rowIndex;
|
9303
|
+
const mod = relativeRowIndex % sourceRowCount;
|
9304
|
+
const sourceRowIndex = direction === 'downward' ? mod : sourceRowCount - 1 - mod;
|
9305
|
+
const sourceRecordId = sourceRows[sourceRowIndex];
|
9306
|
+
const sourceValue = recordsMap[sourceRecordId]?.values[fieldId];
|
9307
|
+
updateData.push({
|
9308
|
+
path: [targetRecordId, fieldId],
|
9309
|
+
value: sourceValue
|
9310
|
+
});
|
9311
|
+
}
|
9312
|
+
}
|
9313
|
+
if (updateData.length > 0) {
|
9314
|
+
actions.updateFieldValues(updateData);
|
9315
|
+
}
|
9316
|
+
}
|
9317
|
+
function getStartAndEndCell(selectedCells) {
|
9318
|
+
const selectedCellsArray = Array.from(selectedCells);
|
9319
|
+
const firstCell = selectedCellsArray[0].split(':');
|
9320
|
+
const lastCell = selectedCellsArray[selectedCellsArray.length - 1].split(':');
|
9321
|
+
const startCell = [firstCell[0], firstCell[1]];
|
9322
|
+
const endCell = [lastCell[0], lastCell[1]];
|
9323
|
+
return { startCell, endCell };
|
9324
|
+
}
|
9325
|
+
|
8892
9326
|
class AITableFieldSetting {
|
8893
9327
|
constructor() {
|
8894
9328
|
this.aiEditField = model.required();
|
@@ -9138,7 +9572,7 @@ class AITableGridSelectionService {
|
|
9138
9572
|
this.clearSelection();
|
9139
9573
|
}
|
9140
9574
|
}
|
9141
|
-
selectCells(startCell, endCell) {
|
9575
|
+
selectCells(startCell, endCell, activeCell) {
|
9142
9576
|
const [startRecordId, startFieldId] = startCell;
|
9143
9577
|
const records = this.aiTable.context.linearRows();
|
9144
9578
|
const fields = AITable.getVisibleFields(this.aiTable);
|
@@ -9163,7 +9597,7 @@ class AITableGridSelectionService {
|
|
9163
9597
|
}
|
9164
9598
|
}
|
9165
9599
|
this.clearSelection();
|
9166
|
-
this.setActiveCell(startCell);
|
9600
|
+
this.setActiveCell(activeCell || startCell);
|
9167
9601
|
this.aiTable.selection().selectedCells = selectedCells;
|
9168
9602
|
}
|
9169
9603
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AITableGridSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
@@ -10333,9 +10767,15 @@ class AITableGrid extends AITableGridBase {
|
|
10333
10767
|
constructor() {
|
10334
10768
|
super();
|
10335
10769
|
this.viewContainerRef = inject(ViewContainerRef);
|
10336
|
-
this.isDragSelecting = false;
|
10337
10770
|
this.isDragSelectionAutoScrolling = false;
|
10338
|
-
this.
|
10771
|
+
this.dragSelectState = {
|
10772
|
+
isDragging: false,
|
10773
|
+
startCell: null
|
10774
|
+
};
|
10775
|
+
this.dragFillState = {
|
10776
|
+
isDragging: false,
|
10777
|
+
sourceCells: new Set()
|
10778
|
+
};
|
10339
10779
|
this.notifyService = inject(ThyNotifyService);
|
10340
10780
|
this.scrollControllerService = inject(AITableScrollControllerService);
|
10341
10781
|
this.isPopoverOpen = false;
|
@@ -10623,13 +11063,25 @@ class AITableGrid extends AITableGridBase {
|
|
10623
11063
|
this.setDefaultPointPosition();
|
10624
11064
|
}
|
10625
11065
|
this.timer = null;
|
10626
|
-
if (this.
|
11066
|
+
if (this.dragSelectState.isDragging || this.dragFillState.isDragging) {
|
10627
11067
|
const { fieldId, recordId } = getDetailByTargetName(curMousePosition.realTargetName);
|
10628
11068
|
if (fieldId && recordId) {
|
10629
|
-
|
10630
|
-
|
11069
|
+
let startCell;
|
11070
|
+
let endCell;
|
11071
|
+
let activeCell = null;
|
11072
|
+
if (this.dragFillState.isDragging) {
|
11073
|
+
setMouseStyle('crosshair', this.containerElement());
|
11074
|
+
const { highlightStartCell, highlightEndCell } = dragFillHighlightArea(this.aiTable, this.dragFillState.sourceCells, recordId);
|
11075
|
+
activeCell = this.aiTable.selection().activeCell;
|
11076
|
+
startCell = highlightStartCell;
|
11077
|
+
endCell = highlightEndCell;
|
11078
|
+
}
|
11079
|
+
else {
|
11080
|
+
startCell = this.dragSelectState.startCell;
|
11081
|
+
endCell = [recordId, fieldId];
|
11082
|
+
}
|
10631
11083
|
if (startCell && !!startCell.length) {
|
10632
|
-
this.aiTableGridSelectionService.selectCells(startCell, endCell);
|
11084
|
+
this.aiTableGridSelectionService.selectCells(startCell, endCell, activeCell);
|
10633
11085
|
this.scrollViewToCell(pos, startCell, endCell, this.coordinate(), this.horizontalBarRef(), this.verticalBarRef());
|
10634
11086
|
}
|
10635
11087
|
}
|
@@ -10663,13 +11115,21 @@ class AITableGrid extends AITableGridBase {
|
|
10663
11115
|
case AI_TABLE_CELL:
|
10664
11116
|
if (!recordId || !fieldId)
|
10665
11117
|
return;
|
10666
|
-
const
|
10667
|
-
this.
|
11118
|
+
const startCell = [recordId, fieldId];
|
11119
|
+
this.updateDragSelectState(true, startCell);
|
10668
11120
|
const [expandRecordId, expandFieldId] = this.aiTable.selection().expandCell || [null, null];
|
10669
11121
|
if (expandRecordId !== recordId || expandFieldId !== fieldId) {
|
10670
|
-
this.aiTableGridSelectionService.selectCells(
|
11122
|
+
this.aiTableGridSelectionService.selectCells(startCell);
|
10671
11123
|
}
|
10672
11124
|
return;
|
11125
|
+
case AI_TABLE_FILL_HANDLE:
|
11126
|
+
if (!recordId || !fieldId)
|
11127
|
+
return;
|
11128
|
+
this.updateDragFillState({
|
11129
|
+
isDragging: true,
|
11130
|
+
sourceCells: this.aiTable.selection().selectedCells
|
11131
|
+
});
|
11132
|
+
return;
|
10673
11133
|
case AI_TABLE_ROW_DRAG:
|
10674
11134
|
if (!recordId)
|
10675
11135
|
return;
|
@@ -10696,11 +11156,31 @@ class AITableGrid extends AITableGridBase {
|
|
10696
11156
|
}
|
10697
11157
|
}
|
10698
11158
|
stageMouseup(e) {
|
10699
|
-
this.
|
11159
|
+
this.updateDragSelectState(false, null);
|
11160
|
+
if (this.dragFillState.isDragging) {
|
11161
|
+
this.performFill(e);
|
11162
|
+
}
|
11163
|
+
}
|
11164
|
+
performFill(e) {
|
11165
|
+
const targetName = e.event.target.name();
|
11166
|
+
const gridStage = e.event.currentTarget.getStage();
|
11167
|
+
const pos = gridStage?.getPointerPosition();
|
11168
|
+
if (pos == null) {
|
11169
|
+
this.updateDragFillState({ isDragging: false, sourceCells: new Set() });
|
11170
|
+
return;
|
11171
|
+
}
|
11172
|
+
const { context } = this.aiTable;
|
11173
|
+
const { x, y } = pos;
|
11174
|
+
const curMousePosition = getMousePosition(this.aiTable, x, y, this.coordinate(), AITable.getVisibleFields(this.aiTable), context, targetName);
|
11175
|
+
const { recordId } = getDetailByTargetName(curMousePosition.realTargetName);
|
11176
|
+
if (recordId) {
|
11177
|
+
performFill(this.aiTable, this.dragFillState.sourceCells, recordId, this.actions);
|
11178
|
+
}
|
11179
|
+
this.updateDragFillState({ isDragging: false, sourceCells: new Set() });
|
10700
11180
|
}
|
10701
11181
|
stageMouseleave(e) {
|
10702
11182
|
if (!this.isDragSelectionAutoScrolling) {
|
10703
|
-
this.
|
11183
|
+
this.updateDragSelectState(false, null);
|
10704
11184
|
}
|
10705
11185
|
if (this.timer) {
|
10706
11186
|
cancelAnimationFrame(this.timer);
|
@@ -10882,13 +11362,18 @@ class AITableGrid extends AITableGridBase {
|
|
10882
11362
|
!this.containerElement().contains(e.target) &&
|
10883
11363
|
!e.target.closest(AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS)), takeUntilDestroyed(this.destroyRef))
|
10884
11364
|
.subscribe(() => {
|
10885
|
-
this.
|
11365
|
+
this.updateDragSelectState(false, null);
|
10886
11366
|
this.aiTableGridSelectionService.clearSelection();
|
10887
11367
|
});
|
10888
11368
|
}
|
10889
|
-
|
10890
|
-
this.
|
10891
|
-
|
11369
|
+
updateDragSelectState(isDragging, startCell) {
|
11370
|
+
this.dragSelectState = {
|
11371
|
+
isDragging: isDragging,
|
11372
|
+
startCell: startCell
|
11373
|
+
};
|
11374
|
+
}
|
11375
|
+
updateDragFillState(dragFillState) {
|
11376
|
+
this.dragFillState = dragFillState;
|
10892
11377
|
}
|
10893
11378
|
verticalScroll(e) {
|
10894
11379
|
const { scrollTop } = e.target;
|
@@ -11077,7 +11562,7 @@ class AITableGrid extends AITableGridBase {
|
|
11077
11562
|
this.scrollControllerService.scroll({
|
11078
11563
|
container: containerRect,
|
11079
11564
|
target: position,
|
11080
|
-
direction: isSelectionOnlyOnFrozenColumn ? 'vertical' : 'both',
|
11565
|
+
direction: isSelectionOnlyOnFrozenColumn || this.dragFillState.isDragging ? 'vertical' : 'both',
|
11081
11566
|
scrollableElement: {
|
11082
11567
|
horizontalElement: horizontalBarRef?.nativeElement,
|
11083
11568
|
verticalElement: verticalBarRef?.nativeElement
|
@@ -11112,7 +11597,7 @@ class AITableGrid extends AITableGridBase {
|
|
11112
11597
|
},
|
11113
11598
|
onAutoScrollEnd: () => {
|
11114
11599
|
this.isDragSelectionAutoScrolling = false;
|
11115
|
-
this.
|
11600
|
+
this.updateDragSelectState(false, null);
|
11116
11601
|
}
|
11117
11602
|
});
|
11118
11603
|
}
|
@@ -11130,5 +11615,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
|
|
11130
11615
|
* Generated bundle index. Do not edit.
|
11131
11616
|
*/
|
11132
11617
|
|
11133
|
-
export { AITable, AITableActionIcon, AITableAddField, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCellAttachment, AITableCellLink, AITableCellProgress, AITableCellRate, AITableCellRichText, AITableCells, AITableCheckType, AITableColumnHeads, AITableContextMenu, AITableDomGrid, AITableFieldHead, AITableFieldIcon, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenPlaceholderCells, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableHoverRowHeads, AITableIcon, AITableMemberType, AITableMouseDownType, AITableOtherRows, AITablePlaceholderCells, AITableQueries, AITableRenderer, AITableRowType, AITableSelectAllState, AITableTextComponent, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_AUTO_SCROLL_BOTTOM_THRESHOLD, AI_TABLE_AUTO_SCROLL_LEFT_THRESHOLD, AI_TABLE_AUTO_SCROLL_RIGHT_THRESHOLD, AI_TABLE_AUTO_SCROLL_TOP_THRESHOLD, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EDIT, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_INDEX_FIELD_TEXT, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEAD_WIDTH_AND_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_SCROLL_BAR_SIZE, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AttachmentField, AttachmentPath, CellDrawer, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, CoverCellComponent, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DateField, DepartmentOutlinedPath, Drawer, EditPath, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IconPathMap, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, LinkField, MIN_COLUMN_WIDTH, MemberField, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, NumberField, ProgressField, RateField, RendererContext, RichTextField, RowDragPath, RowHeight, SelectCellEditorComponent, SelectField, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextField, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, aiTableImageConfigToKonvaConfig, aiTableRectConfigToKonvaConfig, aiTableTextConfigToKonvaConfig, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, cellDrawer, clearCells, compareNumber, compareOption, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, drawer, expandCell, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getCoverCell, getDefaultFieldOptions, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptionMap, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getOptionsByFieldAndRecords, getPlaceHolderCellsConfigs, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, graphemeSplitter, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmptyOrNot, isMac, isMeetFilter, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isVirtualKey, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, processPastedValueForSelect, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, toAttachmentFieldValue, toDateFieldValue, toLinkFieldValue, toMemberFieldValue, toNumberFieldValue, toProgressFieldValue, toRateFieldValue, toRichTextFieldValue, toSelectFieldValue, toTextFieldValue, transformToCellText, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
|
11618
|
+
export { AITable, AITableActionIcon, AITableAddField, AITableAreaType, AITableAvatarSize, AITableAvatarType, AITableCellAttachment, AITableCellLink, AITableCellProgress, AITableCellRate, AITableCellRichText, AITableCells, AITableCheckType, AITableColumnHeads, AITableContextMenu, AITableDomGrid, AITableFieldHead, AITableFieldIcon, AITableFieldIsSameOptionPipe, AITableFieldSetting, AITableFrozenCells, AITableFrozenColumnHeads, AITableFrozenPlaceholderCells, AITableGrid, AITableGridEventService, AITableGridFieldService, AITableGridI18nKey, AITableGridSelectionService, AITableHoverRowHeads, AITableIcon, AITableMemberType, AITableMouseDownType, AITableOtherRows, AITablePlaceholderCells, AITableQueries, AITableRenderer, AITableRowType, AITableSelectAllState, AITableTextComponent, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_AUTO_SCROLL_BOTTOM_THRESHOLD, AI_TABLE_AUTO_SCROLL_LEFT_THRESHOLD, AI_TABLE_AUTO_SCROLL_RIGHT_THRESHOLD, AI_TABLE_AUTO_SCROLL_TOP_THRESHOLD, AI_TABLE_BLANK, AI_TABLE_CELL, AI_TABLE_CELL_ACTIVE_BORDER_WIDTH, AI_TABLE_CELL_ADD_ITEM_BUTTON_SIZE, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_ATTACHMENT_FILE, AI_TABLE_CELL_BORDER, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE, AI_TABLE_CELL_DELETE_ITEM_BUTTON_SIZE_OFFSET, AI_TABLE_CELL_EDIT, AI_TABLE_CELL_EMOJI_PADDING, AI_TABLE_CELL_EMOJI_SIZE, AI_TABLE_CELL_FIELD_ITEM_HEIGHT, AI_TABLE_CELL_MAX_ROW_COUNT, AI_TABLE_CELL_MEMBER_ITEM_HEIGHT, AI_TABLE_CELL_MEMBER_ITEM_PADDING, AI_TABLE_CELL_MEMBER_MAX_HEIGHT, AI_TABLE_CELL_MULTI_DOT_RADIUS, AI_TABLE_CELL_MULTI_ITEM_MARGIN_LEFT, AI_TABLE_CELL_MULTI_ITEM_MARGIN_TOP, AI_TABLE_CELL_MULTI_ITEM_MIN_WIDTH, AI_TABLE_CELL_MULTI_PADDING_LEFT, AI_TABLE_CELL_MULTI_PADDING_TOP, AI_TABLE_CELL_PADDING, AI_TABLE_COMMON_FONT_SIZE, AI_TABLE_DEFAULT_COLUMN_WIDTH, AI_TABLE_DOT_RADIUS, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_FIELD_HEAD_TEXT_MIN_WIDTH, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FIELD_MAX_WIDTH, AI_TABLE_FIELD_MIDDLE_WIDTH, AI_TABLE_FIELD_MINI_WIDTH, AI_TABLE_FIELD_MIN_WIDTH, AI_TABLE_FIELD_STAT_HEIGHT, AI_TABLE_FILE_ICON_ITEM_HEIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_FILL_HANDLE, AI_TABLE_GRID_FIELD_SERVICE_MAP, AI_TABLE_ICON_COMMON_SIZE, AI_TABLE_INDEX_FIELD_TEXT, AI_TABLE_MEMBER_AVATAR_SIZE, AI_TABLE_MEMBER_ITEM_AVATAR_MARGIN_RIGHT, AI_TABLE_MEMBER_ITEM_PADDING_RIGHT, AI_TABLE_MIN_TEXT_WIDTH, AI_TABLE_OFFSET, AI_TABLE_OPTION_ITEM_FONT_SIZE, AI_TABLE_OPTION_ITEM_HEIGHT, AI_TABLE_OPTION_ITEM_PADDING, AI_TABLE_OPTION_ITEM_RADIUS, AI_TABLE_PIECE_RADIUS, AI_TABLE_PIECE_WIDTH, AI_TABLE_POPOVER_LEFT_OFFSET, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_PROGRESS_BAR_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_HEIGHT, AI_TABLE_PROGRESS_BAR_POINTER_WIDTH, AI_TABLE_PROGRESS_BAR_RADIUS, AI_TABLE_PROGRESS_TEXT_WIDTH, AI_TABLE_RATE_MAX, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_BLANK_HEIGHT, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_SIZE, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_HEAD_WIDTH_AND_DRAG_ICON_WIDTH, AI_TABLE_ROW_HEIGHT, AI_TABLE_ROW_SELECT_CHECKBOX, AI_TABLE_SCROLL_BAR_PADDING, AI_TABLE_SCROLL_BAR_SIZE, AI_TABLE_TAG_FONT_SIZE, AI_TABLE_TAG_PADDING, AI_TABLE_TEXT_GAP, AbstractEditCellEditor, AddOutlinedPath, AngleDownPath, AttachmentField, AttachmentPath, CellDrawer, Check, Colors, ColumnCalendarFilledPath, ColumnLinkOutlinedPath, ColumnMemberFilledPath, ColumnMultipleFillPath, ColumnNumberFilledPath, ColumnProgressFilledPath, ColumnRatingFilledPath, ColumnRichTextFilledPath, ColumnSelectFilledPath, ColumnTextFilledPath, Coordinate, CoverCellComponent, DBL_CLICK_EDIT_TYPE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_ICON_SHAPE, DEFAULT_ICON_SIZE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE, DEFAULT_TEXT_ALIGN_CENTER, DEFAULT_TEXT_ALIGN_LEFT, DEFAULT_TEXT_ALIGN_RIGHT, DEFAULT_TEXT_DECORATION, DEFAULT_TEXT_ELLIPSIS, DEFAULT_TEXT_FILL, DEFAULT_TEXT_LINE_HEIGHT, DEFAULT_TEXT_LISTENING, DEFAULT_TEXT_MAX_CACHE, DEFAULT_TEXT_MAX_HEIGHT, DEFAULT_TEXT_SCALE, DEFAULT_TEXT_TRANSFORMS_ENABLED, DEFAULT_TEXT_VERTICAL_ALIGN_MIDDLE, DEFAULT_TEXT_VERTICAL_ALIGN_TOP, DEFAULT_TEXT_WRAP, DEFAULT_WRAP_TEXT_MAX_ROW, DateCellEditorComponent, DateField, DepartmentOutlinedPath, Drawer, EditPath, FONT_SIZE_SM, FieldModelMap, GRID_CELL_EDITOR_MAP, IconPathMap, IsSelectRecordPipe, KO_CONTAINER_TOKEN, KoComponent, KoContainer, KoShape, KoShapeTypes, KoStage, LinkCellEditorComponent, LinkField, MIN_COLUMN_WIDTH, MemberField, MemberSettingPipe, MoreStandOutlinedPath, NumberCellEditorComponent, NumberField, ProgressField, RateField, RendererContext, RichTextField, RowDragPath, RowHeight, SelectCellEditorComponent, SelectField, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, StarFill, TextCellEditorComponent, TextField, TextMeasure, Unchecked, UserPipe, WebOutlinedPath, aiTableFragmentAttribute, aiTableImageConfigToKonvaConfig, aiTableRectConfigToKonvaConfig, aiTableTextConfigToKonvaConfig, applyNodeProps, buildClipboardData, buildGridData, buildGridLinearRows, castToString, cellDrawer, clearCells, compareNumber, compareOption, compareString, createAITable, createActiveCellBorder, createCells, createDefaultField, createDefaultFieldName, createListener, dragFillHighlightArea, drawer, expandCell, extractLinkUrl, extractText, generateNewName, generateTargetName, getAvatarBgColor, getAvatarShortName, getCellEditorBorderSpace, getCellHorizontalPosition, getColumnIndicesSizeMap, getCoverCell, getDefaultFieldOptions, getDefaultFieldValue, getDefaultI18nTextByKey, getDetailByTargetName, getEditorBoxOffset, getEditorSpace, getFieldOptionByField, getFieldOptionMap, getFieldOptions, getFieldValue, getFileThumbnailSvgString, getFillDirection, getHoverEditorBoxOffset, getHoverEditorSpace, getI18nTextByKey, getMousePosition, getName, getOptionsByFieldAndRecords, getPlaceHolderCellsConfigs, getStartAndEndCell, getSystemFieldValue, getTargetName, getTextWidth, getVisibleRangeInfo, graphemeSplitter, handleMouseStyle, hasIntersect, idCreator, idsCreator, imageCache, isActiveCell, isArrayField, isCellMatchKeywords, isClipboardReadSupported, isClipboardReadTextSupported, isClipboardWriteSupported, isClipboardWriteTextSupported, isDateFiled, isEmptyOrNot, isMac, isMeetFilter, isNumberFiled, isSameFieldOption, isSelectedField, isSystemField, isVirtualKey, isWindows, isWindowsOS, isWithinFrozenColumnBoundary, performFill, processPastedValueForSelect, readFromClipboard, scrollMax, setMouseStyle, shortIdCreator, shortIdsCreator, stringInclude, textDataCache, toAttachmentFieldValue, toDateFieldValue, toLinkFieldValue, toMemberFieldValue, toNumberFieldValue, toProgressFieldValue, toRateFieldValue, toRichTextFieldValue, toSelectFieldValue, toTextFieldValue, transformToCellText, updatePicture, writeToAITable, writeToClipboard, zhIntlCollator };
|
11134
11619
|
//# sourceMappingURL=ai-table-grid.mjs.map
|