@ai-table/grid 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,4 +29,4 @@ export class AITableGridFieldService {
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AITableGridFieldService, decorators: [{
30
30
  type: Injectable
31
31
  }], ctorParameters: () => [{ type: i1.ThyPopover }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3NlcnZpY2VzL2ZpZWxkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFHcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHM0QsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxPQUFPLEVBQW9DLENBQUM7QUFHL0YsTUFBTSxPQUFPLHVCQUF1QjtJQUdoQyxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxpQkFBaUIsQ0FBQyxhQUF3QztRQUN0RCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBcUMsRUFBRSxPQUFnQixFQUFFLFdBQXlDLEVBQUUsUUFBaUI7UUFDbkksTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsSUFBSSwwQkFBMEIsQ0FBQztRQUN4RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTLEVBQUUsWUFBWTtZQUN2QixZQUFZLEVBQUU7Z0JBQ1YsT0FBTztnQkFDUCxXQUFXO2dCQUNYLFFBQVE7YUFDWDtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBckJRLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgTW9kZWxTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVGaWVsZCwgQUlUYWJsZUZpZWxkcyB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IgfSBmcm9tICcuLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEFJRmllbGRDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQID0gbmV3IFdlYWtNYXA8QUlUYWJsZSwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2U+KCk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB7XG4gICAgYWlGaWVsZENvbmZpZzogQUlGaWVsZENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3Zlcikge31cblxuICAgIGluaXRBSUZpZWxkQ29uZmlnKGFpRmllbGRDb25maWc6IEFJRmllbGRDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5haUZpZWxkQ29uZmlnID0gYWlGaWVsZENvbmZpZztcbiAgICB9XG5cbiAgICBlZGl0RmllbGRQcm9wZXJ0eShvcmlnaW46IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxhbnk+LCBhaVRhYmxlOiBBSVRhYmxlLCBhaUVkaXRGaWVsZDogV3JpdGFibGVTaWduYWw8QUlUYWJsZUZpZWxkPiwgaXNVcGRhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5haUZpZWxkQ29uZmlnPy5maWVsZFByb3BlcnR5RWRpdG9yID8/IEFJVGFibGVGaWVsZFByb3BlcnR5RWRpdG9yO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXIub3Blbihjb21wb25lbnQsIHtcbiAgICAgICAgICAgIG9yaWdpbjogb3JpZ2luLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgYWlUYWJsZSxcbiAgICAgICAgICAgICAgICBhaUVkaXRGaWVsZCxcbiAgICAgICAgICAgICAgICBpc1VwZGF0ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL3NlcnZpY2VzL2ZpZWxkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLE9BQU8sRUFBb0MsQ0FBQztBQUcvRixNQUFNLE9BQU8sdUJBQXVCO0lBR2hDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTlDLGlCQUFpQixDQUFDLGFBQXdDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFxQyxFQUFFLE9BQWdCLEVBQUUsV0FBeUIsRUFBRSxRQUFpQjtRQUNuSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLG1CQUFtQixJQUFJLDBCQUEwQixDQUFDO1FBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QixNQUFNLEVBQUUsTUFBTTtZQUNkLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLFlBQVksRUFBRTtnQkFDVixPQUFPO2dCQUNQLFdBQVc7Z0JBQ1gsUUFBUTthQUNYO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FyQlEsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IEFJVGFibGUsIEFJVGFibGVGaWVsZCB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3IgfSBmcm9tICcuLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEFJRmllbGRDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQID0gbmV3IFdlYWtNYXA8QUlUYWJsZSwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2U+KCk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB7XG4gICAgYWlGaWVsZENvbmZpZzogQUlGaWVsZENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3Zlcikge31cblxuICAgIGluaXRBSUZpZWxkQ29uZmlnKGFpRmllbGRDb25maWc6IEFJRmllbGRDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5haUZpZWxkQ29uZmlnID0gYWlGaWVsZENvbmZpZztcbiAgICB9XG5cbiAgICBlZGl0RmllbGRQcm9wZXJ0eShvcmlnaW46IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxhbnk+LCBhaVRhYmxlOiBBSVRhYmxlLCBhaUVkaXRGaWVsZDogQUlUYWJsZUZpZWxkLCBpc1VwZGF0ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmFpRmllbGRDb25maWc/LmZpZWxkUHJvcGVydHlFZGl0b3IgPz8gQUlUYWJsZUZpZWxkUHJvcGVydHlFZGl0b3I7XG4gICAgICAgIHRoaXMudGh5UG9wb3Zlci5vcGVuKGNvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBvcmlnaW4sXG4gICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBhaVRhYmxlLFxuICAgICAgICAgICAgICAgIGFpRWRpdEZpZWxkLFxuICAgICAgICAgICAgICAgIGlzVXBkYXRlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i1$2 from '@angular/common';
2
2
  import { NgIf, NgTemplateOutlet, NgForOf, NgClass, CommonModule, NgComponentOutlet } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { signal, input, inject, computed, Component, ChangeDetectionStrategy, Input, HostListener, ElementRef, Renderer2, model, booleanAttribute, Injectable, Pipe, DestroyRef, output, NgZone } from '@angular/core';
4
+ import { signal, computed, inject, Component, ChangeDetectionStrategy, Input, HostListener, ElementRef, Renderer2, input, model, booleanAttribute, Injectable, Pipe, DestroyRef, output, NgZone } from '@angular/core';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import * as i1 from '@angular/forms';
7
7
  import { FormsModule } from '@angular/forms';
@@ -236,6 +236,18 @@ function createAITable(records, fields) {
236
236
  selectedFields: new Map(),
237
237
  selectedCells: new Map()
238
238
  }),
239
+ recordsMap: computed(() => {
240
+ return records().reduce((object, item) => {
241
+ object[item._id] = item;
242
+ return object;
243
+ }, {});
244
+ }),
245
+ fieldsMap: computed(() => {
246
+ return fields().reduce((object, item) => {
247
+ object[item._id] = item;
248
+ return object;
249
+ }, {});
250
+ }),
239
251
  onChange: () => { },
240
252
  apply: (action) => {
241
253
  aiTable.actions.push(action);
@@ -539,8 +551,12 @@ const Actions = {
539
551
 
540
552
  class AbstractEditCellEditor {
541
553
  constructor() {
542
- this.field = input.required();
543
- this.record = input.required();
554
+ this.field = computed(() => {
555
+ return this.aiTable.fieldsMap()[this.fieldId];
556
+ });
557
+ this.record = computed(() => {
558
+ return this.aiTable.recordsMap()[this.recordId];
559
+ });
544
560
  this.thyPopoverRef = inject((ThyPopoverRef));
545
561
  }
546
562
  ngOnInit() {
@@ -555,7 +571,7 @@ class AbstractEditCellEditor {
555
571
  this.thyPopoverRef?.close();
556
572
  }
557
573
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AbstractEditCellEditor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
558
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AbstractEditCellEditor, isStandalone: true, selector: "abstract-edit-cell", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, record: { classPropertyName: "record", publicName: "record", isSignal: true, isRequired: true, transformFunction: null }, aiTable: { classPropertyName: "aiTable", publicName: "aiTable", isSignal: false, isRequired: true, transformFunction: null } }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
574
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AbstractEditCellEditor, isStandalone: true, selector: "abstract-edit-cell", inputs: { aiTable: "aiTable", fieldId: "fieldId", recordId: "recordId" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
559
575
  }
560
576
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AbstractEditCellEditor, decorators: [{
561
577
  type: Component,
@@ -568,6 +584,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
568
584
  }], propDecorators: { aiTable: [{
569
585
  type: Input,
570
586
  args: [{ required: true }]
587
+ }], fieldId: [{
588
+ type: Input,
589
+ args: [{ required: true }]
590
+ }], recordId: [{
591
+ type: Input,
592
+ args: [{ required: true }]
571
593
  }] } });
572
594
 
573
595
  class DateCellEditorComponent extends AbstractEditCellEditor {
@@ -1041,7 +1063,7 @@ const EditFieldPropertyItem = {
1041
1063
  icon: 'edit',
1042
1064
  exec: (aiTable, field, origin) => {
1043
1065
  const fieldService = AI_TABLE_GRID_FIELD_SERVICE_MAP.get(aiTable);
1044
- const copyField = signal(JSON.parse(JSON.stringify(field())));
1066
+ const copyField = JSON.parse(JSON.stringify(field()));
1045
1067
  origin && fieldService?.editFieldProperty(origin, aiTable, copyField, true);
1046
1068
  }
1047
1069
  };
@@ -1213,12 +1235,6 @@ const GRID_CELL_EDITOR_MAP = {
1213
1235
  [AITableFieldType.progress]: ProgressEditorComponent
1214
1236
  };
1215
1237
 
1216
- function getRecordOrField(value, _id) {
1217
- return computed(() => {
1218
- return value().find((item) => item._id === _id);
1219
- });
1220
- }
1221
-
1222
1238
  class AITableGridEventService {
1223
1239
  constructor() {
1224
1240
  this.dblClickEvent$ = new Subject();
@@ -1271,9 +1287,7 @@ class AITableGridEventService {
1271
1287
  const { x, y, width, height } = cellDom.getBoundingClientRect();
1272
1288
  const fieldId = cellDom.getAttribute('fieldId');
1273
1289
  const recordId = cellDom.getAttribute('recordId');
1274
- const field = getRecordOrField(this.aiTable.fields, fieldId);
1275
- const record = getRecordOrField(this.aiTable.records, recordId);
1276
- const component = this.getEditorComponent(field().type);
1290
+ const component = this.getEditorComponent(this.aiTable.fieldsMap()[fieldId].type);
1277
1291
  const ref = this.thyPopover.open(component, {
1278
1292
  origin: cellDom,
1279
1293
  originPosition: {
@@ -1288,8 +1302,8 @@ class AITableGridEventService {
1288
1302
  offset: -(height + 4),
1289
1303
  minWidth: width,
1290
1304
  initialState: {
1291
- field: field,
1292
- record: record,
1305
+ fieldId: fieldId,
1306
+ recordId: recordId,
1293
1307
  aiTable: this.aiTable
1294
1308
  },
1295
1309
  panelClass: 'grid-cell-editor',
@@ -1451,7 +1465,7 @@ class AITableGrid {
1451
1465
  this.aiTableGridSelectionService.toggleSelectAll(checked);
1452
1466
  }
1453
1467
  addField(gridColumnBlank) {
1454
- const field = signal(createDefaultField(this.aiTable, AITableFieldType.text));
1468
+ const field = createDefaultField(this.aiTable, AITableFieldType.text);
1455
1469
  this.aiTableGridFieldService.editFieldProperty(gridColumnBlank, this.aiTable, field, false);
1456
1470
  }
1457
1471
  subscribeEvents() {
@@ -1543,5 +1557,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
1543
1557
  * Generated bundle index. Do not edit.
1544
1558
  */
1545
1559
 
1546
- export { AITableFieldPropertyEditor, AITableFieldType, AITableGrid, AITableQueries, AITableSelectOptionStyle, AITableStatType, ActionName, Actions, DBL_CLICK_EDIT_TYPE, DEFAULT_COLUMN_WIDTH, DateCellEditorComponent, DefaultFieldMenus, DividerMenuItem, EditFieldPropertyItem, ExecuteType, FLUSHING, FieldOptions, IsSelectRecordPipe, LinkCellEditorComponent, MIN_COLUMN_WIDTH, MOUSEOVER_EDIT_TYPE, MemberSettingPipe, NumberCellEditorComponent, ProgressEditorComponent, RatingCellEditorComponent, RemoveFieldItem, RowHeight, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, TextCellEditorComponent, UserPipe, createAITable, createDefaultField, createDefaultFieldName, getDefaultFieldValue, getDefaultRecord, getFieldOptionByField, getRecordOrField, idCreator, isPathEqual, isSameFieldOption };
1560
+ export { AITableFieldPropertyEditor, AITableFieldType, AITableGrid, AITableQueries, AITableSelectOptionStyle, AITableStatType, ActionName, Actions, DBL_CLICK_EDIT_TYPE, DEFAULT_COLUMN_WIDTH, DateCellEditorComponent, DefaultFieldMenus, DividerMenuItem, EditFieldPropertyItem, ExecuteType, FLUSHING, FieldOptions, IsSelectRecordPipe, LinkCellEditorComponent, MIN_COLUMN_WIDTH, MOUSEOVER_EDIT_TYPE, MemberSettingPipe, NumberCellEditorComponent, ProgressEditorComponent, RatingCellEditorComponent, RemoveFieldItem, RowHeight, SelectOptionComponent, SelectOptionPipe, SelectOptionsPipe, SelectSettingPipe, TextCellEditorComponent, UserPipe, createAITable, createDefaultField, createDefaultFieldName, getDefaultFieldValue, getDefaultRecord, getFieldOptionByField, idCreator, isPathEqual, isSameFieldOption };
1547
1561
  //# sourceMappingURL=ai-table-grid.mjs.map