@coolon/angular-ui-powerups 2.0.0-alpha.5 → 2.0.0-alpha.7
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/CHANGELOG.md +14 -0
- package/bundles/coolon-angular-ui-powerups.umd.js +22 -15
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/esm2015/lib/components/index.js +1 -1
- package/esm2015/lib/components/index.js.map +1 -1
- package/esm2015/lib/components/index.metadata.json +1 -1
- package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
- package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
- package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
- package/esm2015/lib/components/table/column-model.js +12 -9
- package/esm2015/lib/components/table/column-model.js.map +1 -1
- package/esm2015/lib/components/table/column-model.metadata.json +1 -1
- package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
- package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
- package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
- package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
- package/esm2015/lib/components/table/table-model.js +5 -5
- package/esm2015/lib/components/table/table-model.js.map +1 -1
- package/esm2015/lib/components/table/table-model.metadata.json +1 -1
- package/esm5/lib/components/index.js +1 -1
- package/esm5/lib/components/index.js.map +1 -1
- package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
- package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
- package/esm5/lib/components/table/column-model.js +12 -9
- package/esm5/lib/components/table/column-model.js.map +1 -1
- package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
- package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
- package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
- package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
- package/esm5/lib/components/table/table-model.js +5 -5
- package/esm5/lib/components/table/table-model.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +22 -15
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +22 -15
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/index.d.ts +1 -1
- package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
- package/lib/components/table/column-model.d.ts +5 -5
- package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
- package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
- package/lib/components/table/table-model.d.ts +6 -2
- package/package.json +1 -1
- package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
- package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
|
@@ -24,6 +24,7 @@ var CellHeaderPortalRef = /** @class */ (function (_super) {
|
|
|
24
24
|
assert.isTruthy(host);
|
|
25
25
|
host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
|
|
26
26
|
};
|
|
27
|
+
// @Trace()
|
|
27
28
|
CellHeaderPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
|
|
28
29
|
this.initialiseHeader(portalComponent, host.column);
|
|
29
30
|
};
|
|
@@ -49,13 +50,15 @@ var ComponentCellRendererPortalRef = /** @class */ (function (_super) {
|
|
|
49
50
|
ComponentCellRendererPortalRef.prototype.initialiseHost = function (host, columnModel) {
|
|
50
51
|
host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
|
|
51
52
|
};
|
|
53
|
+
// @Trace()
|
|
52
54
|
ComponentCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
|
|
53
55
|
host[PORTAL_RENDERER_COMPONENT] = portalComponent;
|
|
54
|
-
this.updateComponent(portalComponent, host.getRowData());
|
|
56
|
+
this.updateComponent(portalComponent, host.getRowData(), true);
|
|
55
57
|
};
|
|
58
|
+
// @Trace()
|
|
56
59
|
ComponentCellRendererPortalRef.prototype.pushState = function (host) {
|
|
57
60
|
if (host[PORTAL_RENDERER_COMPONENT]) {
|
|
58
|
-
this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
|
|
61
|
+
this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
|
|
59
62
|
}
|
|
60
63
|
};
|
|
61
64
|
return ComponentCellRendererPortalRef;
|
|
@@ -99,6 +102,7 @@ var TemplateCellRendererPortalRef = /** @class */ (function (_super) {
|
|
|
99
102
|
TemplateCellRendererPortalRef.prototype.onPortalAttached = function (host, portalComponent) {
|
|
100
103
|
// don't care
|
|
101
104
|
};
|
|
105
|
+
// @Trace()
|
|
102
106
|
TemplateCellRendererPortalRef.prototype.pushState = function (host) {
|
|
103
107
|
host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
|
|
104
108
|
host.fillCell = this.fillCell;
|
|
@@ -110,4 +114,4 @@ var TemplateCellRendererPortalRef = /** @class */ (function (_super) {
|
|
|
110
114
|
return TemplateCellRendererPortalRef;
|
|
111
115
|
}(CellRendererPortalRef));
|
|
112
116
|
export { TemplateCellRendererPortalRef };
|
|
113
|
-
//# sourceMappingURL=cell-
|
|
117
|
+
//# sourceMappingURL=cell-portal-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-portal-ref.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/cell-portal-ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Trace } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { ColumnModel, RowData } from './column-model';\nimport { EditSession } from './edit-session';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\n\nexport const HEADER_CELL_RENDERER_PORTAL = Symbol('aup-cell-header-renderer-component-ref');\nexport const CELL_RENDERER_PORTAL = Symbol('aup-cell-renderer-component-ref');\nexport const CELL_EDITOR_PORTAL = Symbol('aup-cell-editor-component-ref');\nexport const PORTAL_RENDERER_COMPONENT = Symbol('aup-cell-renderer-portal-component');\nexport const PORTAL_EDITOR_COMPONENT = Symbol('aup-cell-editor-portal-component');\n\n\nexport abstract class CellPortalRef<Row, Host, Portal> {\n constructor() {\n }\n\n abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>)\n\n abstract onPortalAttached(host: Host, portalComponent: Portal);\n}\n\nexport class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellRendererComponent, C> {\n constructor(readonly componentType: ComponentType<C>, readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableHeaderCellRendererComponent, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableHeaderCellRendererComponent, portalComponent: C) {\n this.initialiseHeader(portalComponent, host.column);\n }\n\n}\n\nexport abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {\n abstract pushState(host: TableCellRendererComponent<Row>): void;\n}\n\nexport class ComponentCellRendererPortalRef<Row, Portal> extends CellRendererPortalRef<Row, Portal> {\n\n\n constructor(readonly componentType: ComponentType<Portal>, readonly updateComponent: (component: Portal, rowData: RowData<Row>, firstTime: boolean) => void) {\n super();\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal) {\n host[PORTAL_RENDERER_COMPONENT] = portalComponent;\n this.updateComponent(portalComponent, host.getRowData(), true);\n }\n\n // @Trace()\n pushState(host: TableCellRendererComponent<Row>): void {\n if (host[PORTAL_RENDERER_COMPONENT]) {\n this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);\n }\n }\n\n}\n\nexport class CellEditorPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {\n\n constructor(readonly componentType: ComponentType<Portal>, readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void) {\n super();\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n host[CELL_EDITOR_PORTAL] = new ComponentPortal(this.componentType);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal) {\n host[PORTAL_EDITOR_COMPONENT] = portalComponent;\n this.initialiseEditorSession(portalComponent, host.editSession);\n }\n\n}\n\nexport class TemplateCellRendererPortalRef<Row> extends CellRendererPortalRef<Row, undefined> {\n\n private templateRef: TemplateRef<any>;\n private viewContainer: ViewContainerRef;\n private fillCell: boolean;\n private padChild: boolean;\n\n constructor() {\n super();\n }\n\n public registerPortal(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.templateRef = templateRef;\n this.viewContainer = viewContainer;\n this.fillCell = fillCell;\n this.padChild = padChild;\n }\n\n initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>) {\n assert.isTruthy(host);\n }\n\n // @Trace()\n onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: undefined) {\n // don't care\n }\n\n // @Trace()\n pushState(host: TableCellRendererComponent<Row>): void {\n host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());\n host.fillCell = this.fillCell;\n host.padChild = this.padChild;\n }\n\n private createPortal(data: RowData<Row>) {\n return new TemplatePortal<any>(this.templateRef, this.viewContainer, { ...(data), $implicit: data.row });\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { MultipleSelectionModel } from '@coolon/pectin';
|
|
|
3
3
|
import { assert } from '@coolon/typescript-utilities';
|
|
4
4
|
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
5
5
|
import _ from 'lodash';
|
|
6
|
-
import { CellEditorPortalRef, CellHeaderPortalRef, ComponentCellRendererPortalRef, TemplateCellRendererPortalRef } from './cell-
|
|
6
|
+
import { CellEditorPortalRef, CellHeaderPortalRef, ComponentCellRendererPortalRef, TemplateCellRendererPortalRef } from './cell-portal-ref';
|
|
7
7
|
import { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';
|
|
8
8
|
import { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';
|
|
9
9
|
import { EditRowControls } from './edit-row-controls/edit-row-controls.component';
|
|
@@ -103,24 +103,27 @@ var ColumnModel = /** @class */ (function () {
|
|
|
103
103
|
export { ColumnModel };
|
|
104
104
|
var PropertyColumnModel = /** @class */ (function (_super) {
|
|
105
105
|
__extends(PropertyColumnModel, _super);
|
|
106
|
-
function PropertyColumnModel(property, defaults) {
|
|
107
|
-
var _this = _super.call(this,
|
|
106
|
+
function PropertyColumnModel(id, property, defaults) {
|
|
107
|
+
var _this = _super.call(this, id, defaults) || this;
|
|
108
108
|
_this.property = property;
|
|
109
109
|
_this._format = function (value) { return value; };
|
|
110
110
|
_this.cellRenderer(DefaultCellRendererComponent);
|
|
111
111
|
return _this;
|
|
112
112
|
}
|
|
113
|
-
PropertyColumnModel.prototype.cellRenderer = function (componentType) {
|
|
113
|
+
PropertyColumnModel.prototype.cellRenderer = function (componentType, onComponentInit) {
|
|
114
114
|
var _this = this;
|
|
115
|
-
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData) {
|
|
115
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, function (component, rowData, firstTime) {
|
|
116
|
+
if (firstTime && onComponentInit) {
|
|
117
|
+
onComponentInit(component);
|
|
118
|
+
}
|
|
116
119
|
component.value = _this._format(rowData.row[_this.property]);
|
|
117
120
|
}));
|
|
118
121
|
return this;
|
|
119
122
|
};
|
|
120
|
-
PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser,
|
|
123
|
+
PropertyColumnModel.prototype.cellEditor = function (editor, validatorsOrInitialiser, onComponentInit) {
|
|
121
124
|
var _this = this;
|
|
122
125
|
var validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
123
|
-
var initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser :
|
|
126
|
+
var initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
124
127
|
this.configureCellEditor(new CellEditorPortalRef(editor, function (component, editSession) {
|
|
125
128
|
var formValueModel = editSession.form.pluck(_this.property);
|
|
126
129
|
if (validators) {
|
|
@@ -146,8 +149,8 @@ var PropertyColumnModel = /** @class */ (function (_super) {
|
|
|
146
149
|
export { PropertyColumnModel };
|
|
147
150
|
var ListPropertyColumnModel = /** @class */ (function (_super) {
|
|
148
151
|
__extends(ListPropertyColumnModel, _super);
|
|
149
|
-
function ListPropertyColumnModel(property, defaults) {
|
|
150
|
-
var _this = _super.call(this,
|
|
152
|
+
function ListPropertyColumnModel(id, property, defaults) {
|
|
153
|
+
var _this = _super.call(this, id, defaults) || this;
|
|
151
154
|
_this.property = property;
|
|
152
155
|
_this._format = function (value) { return value.map(function (v) { return v === null || v === void 0 ? void 0 : v.toString(); }).join(', '); };
|
|
153
156
|
_this.cellRenderer(DefaultCellRendererComponent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-model.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/column-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n Command,\n DirtyTrackingForm,\n Form,\n MultipleSelectionModel,\n SelectionModel,\n Types,\n UnaryCommand,\n Validator\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { CellEditorComponent, CellListEditorComponent } from './cell-editors';\nimport {\n CellEditorPortalRef,\n CellHeaderPortalRef,\n CellRendererPortalRef,\n ComponentCellRendererPortalRef,\n TemplateCellRendererPortalRef\n} from './cell-protal-ref';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './edit-row-controls/edit-row-controls.component';\nimport { EditSession } from './edit-session';\nimport { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\n\n\nconst noop = () => {\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\n\n\nexport class ColumnModel<Row> {\n\n private _columnTextProperties: ColumnTextProperties;\n\n private _columnHeaderPortalRef: CellHeaderPortalRef<Row, any>;\n private _cellRendererPortalRef: CellRendererPortalRef<Row, any>;\n private _cellEditorPortalRef: CellEditorPortalRef<Row, any>;\n\n private _selectRowOnClick = undefined;\n\n constructor(readonly columnId: string, private defaults: ColumnModel.Defaults) {\n this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {\n component.headerText = column.getHeaderText();\n });\n }\n\n @Memoize()\n getHeaderText(): string {\n return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\n }\n\n @Memoize()\n getColumnTextProperties(): ColumnTextProperties {\n return this._columnTextProperties || this.defaults.getColumnTextProperties(this);\n }\n\n textProperties(columnTextProperties: ColumnTextProperties): this {\n this._columnTextProperties = columnTextProperties;\n return this;\n }\n\n protected configureHeaderRenderer<C>(config: CellHeaderPortalRef<Row, any>): void {\n this._columnHeaderPortalRef = config;\n }\n\n protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void {\n this._cellRendererPortalRef = config;\n }\n\n protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void {\n this._cellEditorPortalRef = cellEditor;\n }\n\n cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this {\n this.configureHeaderRenderer(new CellHeaderPortalRef<Row, C>(componentType, initialiser));\n return this;\n }\n\n hasEditorPortal() {\n return !!this._cellEditorPortalRef;\n }\n\n attachHeaderCell(host: any) {\n this._columnHeaderPortalRef.initialiseHost(host, this);\n }\n\n attachCell(host: any) {\n this._cellRendererPortalRef.initialiseHost(host, this);\n if (this.hasEditorPortal()) {\n this._cellEditorPortalRef.initialiseHost(host, this);\n }\n }\n\n onHeaderAttached(host: TableHeaderCellRendererComponent, component: any) {\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellRendererPortalRef.onPortalAttached(host, component);\n }\n\n // @Trace()\n onEditorAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellEditorPortalRef.onPortalAttached(host, component);\n }\n\n updatePortalContent(host: TableCellRendererComponent<Row>) {\n this._cellRendererPortalRef.pushState(host);\n }\n\n protected selectRowOnClick(selectOnRowClick: boolean): this {\n this._selectRowOnClick = selectOnRowClick;\n return this;\n }\n\n isRowSelectionEnabled(): boolean | undefined {\n return this._selectRowOnClick;\n }\n\n isRowSelectionExplicitlyEnabled(): boolean {\n return this._selectRowOnClick === true;\n }\n\n isRowSelectionExplicitlyDisabled(): boolean {\n return this._selectRowOnClick === false;\n }\n}\n\nexport namespace ColumnModel {\n export interface Defaults {\n getColumnTextProperties(columnModel: ColumnModel<any>): ColumnTextProperties;\n }\n}\n\nexport interface CellEditorOptions<V, C> { //extends CellRendererOptions<E> {\n validators?: Validator<V>[];\n\n initialiseComponent?(component: C);\n}\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n\n private _format: (value: Row[P]) => any = (value) => value;\n\n constructor(readonly property: P, defaults: ColumnModel.Defaults) {\n super(property.toString(), defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<{ value: Row[P] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validatorsOrInitialiser?: Validator<Row[P]>[] | ((component: E) => void), initialiseComponent?: (component: E) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: E, editSession: EditSession<Row>) => {\n const formValueModel = editSession.form.pluck(this.property);\n if (validators) {\n formValueModel.validateUsing(validators);\n }\n component.valueModel = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Types.ArrayElementType<Row, P>[]) => any = (value) => value.map(v => v?.toString()).join(', ');\n\n constructor(readonly property: P, defaults: ColumnModel.Defaults) {\n super(property.toString(), defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<{ value: Types.ArrayElementType<Row, P>[] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validatorsOrInitialiser?: Validator<Types.ArrayElementType<Row, P>[]>[] | ((component: C) => void), initialiseComponent?: (component: C) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: C, editSession: EditSession<Row>) => {\n const formListModel = editSession.form.pluckList(this.property);\n if (validators) {\n formListModel.validateUsing(validators);\n }\n component.listModel = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n constructor(columnId: string, defaults: ColumnModel.Defaults, private getValue: (row: Row) => V) {\n super(columnId, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<{ value: V }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this.getValue(rowData.row);\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>, defaults: ColumnModel.Defaults) {\n super(columnId, defaults);\n this.cellRenderer(EditRowControls);\n }\n\n cellRenderer(componentType: ComponentType<{ row: Row, editSession: EditSession<Row>, editRowCommand: Command<void> }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.editSession = rowData.editSession;\n component.editRowCommand = rowData.editRowCommand;\n }));\n return this;\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n}\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, defaults: ColumnModel.Defaults) {\n super(columnId, defaults);\n this.configureCellRenderer(this.config);\n }\n\n setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n\n constructor(columnId: string, defaults: ColumnModel.Defaults, private readonly selectionModel: SelectionModel<Row>) {\n super(columnId, defaults);\n this.selectOnRowClick(false);\n if (selectionModel instanceof MultipleSelectionModel) {\n this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {\n component.selectionModel = selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n });\n }\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = selectionModel;\n }));\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n\n isRowSelectionEnabledByDefault(): boolean | undefined {\n return this.isRowSelectionExplicitlyEnabled();\n }\n\n selectOnRowClick(selectOnRowClick: boolean): this {\n // note we're using different method name as the selection column treats this\n // state as the default for all columns.\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n selectRow(row: Row) {\n this.selectionModel.selectCommand.execute(row);\n }\n}\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"column-model.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/column-model.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n Command,\n DirtyTrackingForm,\n Form,\n MultipleSelectionModel,\n SelectionModel,\n Types,\n UnaryCommand,\n Validator\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { CellEditorComponent, CellListEditorComponent } from './cell-editors';\nimport {\n CellEditorPortalRef,\n CellHeaderPortalRef,\n CellRendererPortalRef,\n ComponentCellRendererPortalRef,\n TemplateCellRendererPortalRef\n} from './cell-portal-ref';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { DefaultCellRendererComponent } from './default-cell-renderer/default-cell-renderer.component';\nimport { DefaultHeaderCellRendererComponent } from './default-header-cell-renderer/default-header-cell-renderer.component';\nimport { EditRowControls } from './edit-row-controls/edit-row-controls.component';\nimport { EditSession } from './edit-session';\nimport { SelectCellRendererComponent } from './select-cell-renderer/select-cell-renderer.component';\nimport { SelectHeaderCellRendererComponent } from './select-header-cell-renderer/select-header-cell-renderer.component';\nimport { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';\nimport { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';\n\n\nconst noop = () => {\n};\n\nexport interface RowData<Row> {\n row: Row;\n editSession?: EditSession<Row>;\n editRowCommand: Command<void>;\n}\n\n\nexport class ColumnModel<Row> {\n\n private _columnTextProperties: ColumnTextProperties;\n\n private _columnHeaderPortalRef: CellHeaderPortalRef<Row, any>;\n private _cellRendererPortalRef: CellRendererPortalRef<Row, any>;\n private _cellEditorPortalRef: CellEditorPortalRef<Row, any>;\n\n private _selectRowOnClick = undefined;\n\n constructor(readonly columnId: string, private defaults: ColumnModel.Defaults) {\n this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, (component, column) => {\n component.headerText = column.getHeaderText();\n });\n }\n\n @Memoize()\n getHeaderText(): string {\n return this.getColumnTextProperties()?.headerText() || this.getDefaultHeaderText();\n }\n\n protected getDefaultHeaderText() {\n return this.columnId;\n }\n\n @Memoize()\n getColumnTextProperties(): ColumnTextProperties {\n return this._columnTextProperties || this.defaults.getColumnTextProperties(this);\n }\n\n textProperties(columnTextProperties: ColumnTextProperties): this {\n this._columnTextProperties = columnTextProperties;\n return this;\n }\n\n protected configureHeaderRenderer<C>(config: CellHeaderPortalRef<Row, any>): void {\n this._columnHeaderPortalRef = config;\n }\n\n protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void {\n this._cellRendererPortalRef = config;\n }\n\n protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void {\n this._cellEditorPortalRef = cellEditor;\n }\n\n cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this {\n this.configureHeaderRenderer(new CellHeaderPortalRef<Row, C>(componentType, initialiser));\n return this;\n }\n\n hasEditorPortal() {\n return !!this._cellEditorPortalRef;\n }\n\n attachHeaderCell(host: any) {\n this._columnHeaderPortalRef.initialiseHost(host, this);\n }\n\n attachCell(host: any) {\n this._cellRendererPortalRef.initialiseHost(host, this);\n if (this.hasEditorPortal()) {\n this._cellEditorPortalRef.initialiseHost(host, this);\n }\n }\n\n onHeaderAttached(host: TableHeaderCellRendererComponent, component: any) {\n this._columnHeaderPortalRef.onPortalAttached(host, component);\n }\n\n onRendererAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellRendererPortalRef.onPortalAttached(host, component);\n }\n\n // @Trace()\n onEditorAttached(host: TableCellRendererComponent<Row>, component: any) {\n this._cellEditorPortalRef.onPortalAttached(host, component);\n }\n\n updatePortalContent(host: TableCellRendererComponent<Row>) {\n this._cellRendererPortalRef.pushState(host);\n }\n\n protected selectRowOnClick(selectOnRowClick: boolean): this {\n this._selectRowOnClick = selectOnRowClick;\n return this;\n }\n\n isRowSelectionEnabled(): boolean | undefined {\n return this._selectRowOnClick;\n }\n\n isRowSelectionExplicitlyEnabled(): boolean {\n return this._selectRowOnClick === true;\n }\n\n isRowSelectionExplicitlyDisabled(): boolean {\n return this._selectRowOnClick === false;\n }\n}\n\nexport namespace ColumnModel {\n export interface Defaults {\n getColumnTextProperties(columnModel: ColumnModel<any>): ColumnTextProperties;\n }\n}\n\nexport interface CellEditorOptions<V, C> { //extends CellRendererOptions<E> {\n validators?: Validator<V>[];\n\n initialiseComponent?(component: C);\n}\n\nexport class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {\n\n\n private _format: (value: Row[P]) => any = (value) => value;\n\n constructor(id: string, readonly property: P, defaults: ColumnModel.Defaults) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer<E extends { value: Row[P] }>(componentType: ComponentType<E>, onComponentInit?: (component: E) => void): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {\n if (firstTime && onComponentInit) {\n onComponentInit(component)\n }\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this\n cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validatorsOrInitialiser?: Validator<Row[P]>[] | ((component: E) => void), onComponentInit?: (component: E) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: E, editSession: EditSession<Row>) => {\n const formValueModel = editSession.form.pluck(this.property);\n if (validators) {\n formValueModel.validateUsing(validators);\n }\n component.valueModel = formValueModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Row[P]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {\n\n private _format: (value: Types.ArrayElementType<Row, P>[]) => any = (value) => value.map(v => v?.toString()).join(', ');\n\n constructor(id:string, readonly property: P, defaults: ColumnModel.Defaults) {\n super(id, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<{ value: Types.ArrayElementType<Row, P>[] }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this._format(rowData.row[this.property]);\n }));\n return this;\n }\n\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this\n cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validatorsOrInitialiser?: Validator<Types.ArrayElementType<Row, P>[]>[] | ((component: C) => void), initialiseComponent?: (component: C) => void): this {\n const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;\n const initialiser = _.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;\n\n this.configureCellEditor(new CellEditorPortalRef(editor, (component: C, editSession: EditSession<Row>) => {\n const formListModel = editSession.form.pluckList(this.property);\n if (validators) {\n formListModel.validateUsing(validators);\n }\n component.listModel = formListModel;\n if (initialiser) {\n initialiser(component);\n }\n }));\n return this;\n }\n\n format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this {\n assert.isFunction(formatter);\n this._format = formatter;\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {\n constructor(columnId: string, defaults: ColumnModel.Defaults, private getValue: (row: Row) => V) {\n super(columnId, defaults);\n this.cellRenderer(DefaultCellRendererComponent);\n }\n\n cellRenderer(componentType: ComponentType<{ value: V }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {\n component.value = this.getValue(rowData.row);\n }));\n return this;\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class EditorControlColumnModel<Row> extends ColumnModel<Row> {\n\n constructor(columnId: string, saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>, defaults: ColumnModel.Defaults) {\n super(columnId, defaults);\n this.cellRenderer(EditRowControls);\n }\n\n cellRenderer(componentType: ComponentType<{ row: Row, editSession: EditSession<Row>, editRowCommand: Command<void> }>): this {\n this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.editSession = rowData.editSession;\n component.editRowCommand = rowData.editRowCommand;\n }));\n return this;\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n}\n\nexport class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {\n private readonly config = new TemplateCellRendererPortalRef<Row>();\n\n constructor(columnId: string, defaults: ColumnModel.Defaults) {\n super(columnId, defaults);\n this.configureCellRenderer(this.config);\n }\n\n setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean) {\n this.config.registerPortal(templateRef, viewContainer, fillCell, padChild);\n }\n\n public selectRowOnClick(selectOnRowClick: boolean): this {\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n}\n\nexport class SelectionColumnModel<Row> extends ColumnModel<Row> {\n\n private _enableHeaderControls = true;\n\n constructor(columnId: string, defaults: ColumnModel.Defaults, private readonly selectionModel: SelectionModel<Row>) {\n super(columnId, defaults);\n this.selectOnRowClick(false);\n if (selectionModel instanceof MultipleSelectionModel) {\n this.cellHeaderRenderer(SelectHeaderCellRendererComponent, (component) => {\n component.selectionModel = selectionModel;\n component.enableHeaderControls = this._enableHeaderControls;\n });\n }\n this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectCellRendererComponent, (component, rowData: RowData<Row>) => {\n component.row = rowData.row;\n component.selectionModel = selectionModel;\n }));\n }\n\n protected getDefaultHeaderText(): string {\n return '';\n }\n\n isRowSelectionEnabledByDefault(): boolean | undefined {\n return this.isRowSelectionExplicitlyEnabled();\n }\n\n selectOnRowClick(selectOnRowClick: boolean): this {\n // note we're using different method name as the selection column treats this\n // state as the default for all columns.\n return super.selectRowOnClick(selectOnRowClick);\n }\n\n enableHeaderControls(enable: boolean): this {\n this._enableHeaderControls = enable;\n return this;\n }\n\n selectRow(row: Row) {\n this.selectionModel.selectCommand.execute(row);\n }\n}\n\n\n"]}
|
|
@@ -5,7 +5,7 @@ import { DisposableComponent } from '../../disposable-component';
|
|
|
5
5
|
import { ColumnModel } from '../column-model';
|
|
6
6
|
import { EditSession } from '../edit-session';
|
|
7
7
|
import { TableModel } from '../table-model';
|
|
8
|
-
import { CELL_RENDERER_PORTAL, CELL_EDITOR_PORTAL } from '../cell-
|
|
8
|
+
import { CELL_RENDERER_PORTAL, CELL_EDITOR_PORTAL } from '../cell-portal-ref';
|
|
9
9
|
var TableCellRendererComponent = /** @class */ (function (_super) {
|
|
10
10
|
__extends(TableCellRendererComponent, _super);
|
|
11
11
|
function TableCellRendererComponent() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-cell-renderer.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-cell-renderer/table-cell-renderer.component.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAoC,MAAM,eAAe,CAAC;AAChG,OAAO,EAA0B,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"table-cell-renderer.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-cell-renderer/table-cell-renderer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Portal } from '@angular/cdk/portal';\nimport { Component, HostBinding, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { BooleanValueModelChain, Command, Dsl, HasFocusContext, Trace } from '@coolon/pectin';\nimport { DisposableComponent } from '../../disposable-component';\nimport { CellEditorComponent, CellListEditorComponent } from '../cell-editors';\nimport { ColumnModel, RowData } from '../column-model';\nimport { EditSession } from '../edit-session';\nimport { TableModel } from '../table-model';\nimport { CELL_RENDERER_PORTAL, CELL_EDITOR_PORTAL } from '../cell-portal-ref';\n\n@Component({\n selector: 'aup-table-cell-renderer',\n templateUrl: './table-cell-renderer.component.html',\n styleUrls: ['./table-cell-renderer.component.scss']\n})\nexport class TableCellRendererComponent<Row> extends DisposableComponent implements OnInit, OnChanges {\n\n @Input()\n row: Row;\n\n @Input()\n column: ColumnModel<Row>;\n\n @Input()\n editSession: EditSession<Row>;\n\n @Input()\n tableModel: TableModel<Row>;\n\n private editRowCommand: Command<void>;\n\n [CELL_RENDERER_PORTAL]: Portal<any>;\n [CELL_EDITOR_PORTAL]: Portal<any>;\n\n @HostBinding('class')\n defaultClassNames = 'aup-cell-renderer';\n\n @HostBinding('class.fillCell')\n fillCell = false;\n\n @HostBinding('class.padChild')\n padChild = false;\n\n private firstEditableColumn: BooleanValueModelChain;\n\n constructor() {\n super();\n this.editRowCommand = Command.create(() => {\n this.tableModel.startEditSession(this.row);\n });\n }\n\n ngOnInit(): void {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.firstEditableColumn = chain(this.tableModel.firstEditableColumn).equals(this.column); // this would break if the column changed.\n this.column.attachCell(this);\n }\n\n hasActiveEditor(): boolean {\n return !!this.editSession && !!this.column.hasEditorPortal();\n }\n\n initialiseRenderer(instance: any) {\n this.column.onRendererAttached(this, instance);\n }\n\n initialiseEditor(instance: CellEditorComponent<Row> | CellListEditorComponent<Row>) {\n this.column.onEditorAttached(this, instance);\n if (this.firstEditableColumn.value) {\n // @see https://github.com/angular/components/issues/12070\n setTimeout(() => this.tryAndFocusEditor(instance));\n }\n }\n\n private tryAndFocusEditor(editor: CellEditorComponent<Row> | CellListEditorComponent<Row>) {\n if (editor.requestFocus) {\n editor.requestFocus();\n } else {\n const model = (editor['valueModel'] || editor['listModel']) as HasFocusContext;\n model?.focusContext?.requestFocus();\n }\n }\n\n // @Trace()\n ngOnChanges(changes: SimpleChanges): void {\n this.column.updatePortalContent(this);\n }\n\n getRendererPortal() {\n return this[CELL_RENDERER_PORTAL];\n }\n\n getEditorPortal() {\n return this[CELL_EDITOR_PORTAL];\n }\n\n getRowData(): RowData<Row> {\n return {\n row: this.row,\n editSession: this.editSession,\n editRowCommand: this.editRowCommand\n };\n }\n}\n"]}
|
package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component, HostBinding, Input } from '@angular/core';
|
|
3
3
|
import { ColumnModel } from '../column-model';
|
|
4
|
-
import { HEADER_CELL_RENDERER_PORTAL } from '../cell-
|
|
4
|
+
import { HEADER_CELL_RENDERER_PORTAL } from '../cell-portal-ref';
|
|
5
5
|
var TableHeaderCellRendererComponent = /** @class */ (function () {
|
|
6
6
|
function TableHeaderCellRendererComponent() {
|
|
7
7
|
this.defaultClassNames = 'aup-header-cell-renderer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-header-cell-renderer.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAOjE;IAUE;QAJA,sBAAiB,GAAG,0BAA0B,CAAC;IAK/C,CAAC;IAED,mDAAQ,GAAR;QACE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;IACX,2DAAgB,GAAhB,UAAiB,QAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,oDAAS,GAAT;QACE,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IArBD;QADC,KAAK,EAAE;kCACA,WAAW;oEAAM;IAGzB;QADC,WAAW,CAAC,OAAO,CAAC;;+EAC0B;IANpC,gCAAgC;QAL5C,SAAS,CAAC;YACT,QAAQ,EAAE,gCAAgC;YAC1C,8HAA0D;;SAE3D,CAAC;;OACW,gCAAgC,CAyB5C;IAAD,uCAAC;CAAA,AAzBD,IAyBC;SAzBY,gCAAgC","sourcesContent":["import { Portal } from '@angular/cdk/portal';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { ColumnModel } from '../column-model';\nimport { HEADER_CELL_RENDERER_PORTAL } from '../cell-
|
|
1
|
+
{"version":3,"file":"table-header-cell-renderer.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAOjE;IAUE;QAJA,sBAAiB,GAAG,0BAA0B,CAAC;IAK/C,CAAC;IAED,mDAAQ,GAAR;QACE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;IACX,2DAAgB,GAAhB,UAAiB,QAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,oDAAS,GAAT;QACE,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IArBD;QADC,KAAK,EAAE;kCACA,WAAW;oEAAM;IAGzB;QADC,WAAW,CAAC,OAAO,CAAC;;+EAC0B;IANpC,gCAAgC;QAL5C,SAAS,CAAC;YACT,QAAQ,EAAE,gCAAgC;YAC1C,8HAA0D;;SAE3D,CAAC;;OACW,gCAAgC,CAyB5C;IAAD,uCAAC;CAAA,AAzBD,IAyBC;SAzBY,gCAAgC","sourcesContent":["import { Portal } from '@angular/cdk/portal';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { ColumnModel } from '../column-model';\nimport { HEADER_CELL_RENDERER_PORTAL } from '../cell-portal-ref';\n\n@Component({\n selector: 'aup-table-header-cell-renderer',\n templateUrl: './table-header-cell-renderer.component.html',\n styleUrls: ['./table-header-cell-renderer.component.scss']\n})\nexport class TableHeaderCellRendererComponent implements OnInit {\n\n @Input()\n column: ColumnModel<any>;\n\n @HostBinding('class')\n defaultClassNames = 'aup-header-cell-renderer';\n\n [HEADER_CELL_RENDERER_PORTAL]: Portal<any>;\n\n constructor() {\n }\n\n ngOnInit() {\n this.column.attachHeaderCell(this);\n }\n\n // @Trace()\n initialiseHeader(instance: any) {\n this.column.onHeaderAttached(this, instance);\n }\n\n getPortal() {\n return this[HEADER_CELL_RENDERER_PORTAL];\n }\n}\n"]}
|
|
@@ -101,7 +101,7 @@ var TableModel = /** @class */ (function () {
|
|
|
101
101
|
this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
|
|
102
102
|
this.firstEditableColumn = chain(this.columns).select(function (c) { return c.hasEditorPortal(); }).first();
|
|
103
103
|
this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(function (column) { return column.isRowSelectionExplicitlyEnabled(); }).isGreaterThanOrEqualTo(0);
|
|
104
|
-
this.addRowClass(
|
|
104
|
+
this.addRowClass('enable-hover', function () { return _this.isRowSelectionEnabled(); });
|
|
105
105
|
}
|
|
106
106
|
TableModel_1 = TableModel;
|
|
107
107
|
TableModel.fromList = function (sourceOfTruth, builder) {
|
|
@@ -129,11 +129,11 @@ var TableModel = /** @class */ (function () {
|
|
|
129
129
|
enumerable: true,
|
|
130
130
|
configurable: true
|
|
131
131
|
});
|
|
132
|
-
TableModel.prototype.pluck = function (property) {
|
|
133
|
-
return this.addColumn(new PropertyColumnModel(property, this));
|
|
132
|
+
TableModel.prototype.pluck = function (property, options) {
|
|
133
|
+
return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
|
|
134
134
|
};
|
|
135
|
-
TableModel.prototype.pluckList = function (property) {
|
|
136
|
-
return this.addColumn(new ListPropertyColumnModel(property, this));
|
|
135
|
+
TableModel.prototype.pluckList = function (property, options) {
|
|
136
|
+
return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
|
|
137
137
|
};
|
|
138
138
|
TableModel.prototype.addSelectionColumn = function (selectionModel) {
|
|
139
139
|
assert.isNil(this.selectionColumnModel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-model.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-model.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assert,\n BooleanValueModelChain,\n CanIdentify, DirtyTrackingForm,\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableListModel,\n SelectionModel,\n TrackExternal,\n Types,\n UnaryCommand,\n ValueModelChain\n} from '@coolon/pectin';\nimport {\n ColumnModel,\n CustomTemplateColumnModel,\n CustomValueColumnModel,\n EditorControlColumnModel,\n ListPropertyColumnModel,\n PropertyColumnModel,\n SelectionColumnModel\n} from './column-model';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { EditSession } from './edit-session';\n\n// export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];\n// export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];\n\nclass RowClass<Row> {\n constructor(readonly className: string,\n readonly matches: (row: Row) => boolean) {\n }\n}\n\n/**\n * Example:\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Editable tables\n * @example\n * const saveCommand = UnaryCommand.create((form: Form<Hero>) => {\n * if (form.validate()) {\n * // normal form save stuff\n * return true; // finish editing\n * }\n * return false; // continue editiing\n * }\n * const colorsNames: ListModel<string> = ...;\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\").cellEditor(StringInputComponent); <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.pluck(\"lastName\").cellEditor(StringInputComponent, {\n * validators: [Validator.present(\"We need a last name\")]\n * });\n * table.pluck(\"age\").cellEditor(NumberInputComponent);\n * table.pluck(\"favoriteColor\").cellEditor(SelectInputComponent, {\n * initialiseComponent(component: SelectInputComponent) {\n * selectInput.optionsModel = colorsNames; // <- initialise our component\n * }\n * });\n * table.addEditControls(saveCommand); // <- required to enable editing\n * });\n *\n * Selection models\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * });\n *\n * Custom cell renderers and editors\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"favoriteColor\")\n * .cellHeaderRenderer(CellHeaderRendererComponent, (component, column) => {\n * // configure your component with what ever you need.\n * });\n * .cellRenderer(CellRendererComponent) // <-- interface CellEditor { value: string; }\n * .cellEditor(CellEditorComponent.); // <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * I18n\n * @example\n * [table.yml]\n * table:\n * columns(ColumnTextProperties[]):\n * firstName:\n * headerText: \"First Name\"\n * fullName:\n * headerText: \"Full Name\"\n *\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"favoriteColor\").cellRenderer(...).cellEditor(...);\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n *\n * table.columnTextProperties(I18n.table.columns); // <- configures all columns\n * });\n */\n@TrackExternal.Strategy(new TrackExternal.OneTimeBinding())\nexport class TableModel<Row> {\n\n private readonly _garbage = new GarbageCollector();\n\n private readonly _columns = new MutableListModel<ColumnModel<Row>>();\n private _columnsById: MapModelChain<string, ColumnModel<Row>>;\n private _editorSessions = new MutableListModel<EditSession<Row>>();\n private readonly _rowsBeingEdited: MutableListModel<Row>;\n private readonly rowClassNamePredicates : RowClass<Row>[] = [];\n\n private _columnTextPropertiesLookup: { [columnName: string]: () => ColumnTextProperties };\n\n readonly identityOf: CanIdentify<Row>['identityOf'];\n private saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>;\n private _editorSessionByRowId: MapModelChain<any, EditSession<Row>>;\n\n readonly editing: BooleanValueModelChain;\n readonly dataSource: ListModelChain<Row>;\n readonly firstEditableColumn: ValueModelChain<ColumnModel<Row>>;\n private selectionColumnModel: SelectionColumnModel<Row>;\n private hasColumnsWithRowSelectionExplicitlyEnabled: BooleanValueModelChain;\n\n static fromList<Row>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): TableModel<Row> {\n const model = new TableModel<Row>(sourceOfTruth);\n builder(model);\n return model;\n }\n\n private _createForm: (row: Row) => DirtyTrackingForm<Row> = (row) => new DirtyTrackingForm<Row>();\n\n protected constructor(private sourceOfTruth: ListModel<Row>) {\n this.identityOf = sourceOfTruth.identityOf;\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this._garbage);\n this._columnsById = chain(this._columns).indexBy('columnId');\n this._rowsBeingEdited = new MutableListModel<Row>([], {\n identifiedWith: this.identityOf\n });\n this._editorSessionByRowId = chain(this._editorSessions).indexBy('rowId');\n this.editing = chain(this._editorSessions).count().isGreaterThan(0);\n this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);\n this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();\n this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);\n this.addRowClass(\"enable-hover\", () => this.isRowSelectionEnabled());\n }\n\n get rowsBeingEdited(): ListModel<Row> {\n return this._rowsBeingEdited.readonly;\n }\n\n getTrackByFunction() {\n return (index: number, item: Row) => {\n return this.identityOf ? this.identityOf(item) : index;\n };\n }\n\n get columns(): ListModel<ColumnModel<Row>> {\n return this._columns.readonly;\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P): PropertyColumnModel<Row, P> {\n return this.addColumn(new PropertyColumnModel<Row, P>(property, this));\n }\n\n pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P): ListPropertyColumnModel<Row, P> {\n return this.addColumn(new ListPropertyColumnModel<Row, P>(property, this));\n }\n\n addSelectionColumn(selectionModel: SelectionModel<Row>): SelectionColumnModel<Row> {\n assert.isNil(this.selectionColumnModel);\n this.selectionColumnModel = new SelectionColumnModel<Row>('selection', this, selectionModel);\n return this.addColumn(this.selectionColumnModel);\n }\n\n addEditControls(saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>): EditorControlColumnModel<Row> {\n this.saveCommand = saveCommand;\n return this.addColumn(new EditorControlColumnModel<Row>('editControls', saveCommand, this));\n }\n\n addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V> {\n return this.addColumn(new CustomValueColumnModel<Row, V>(columnId, this, dataAccessor));\n }\n\n addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row> {\n return this.addColumn(new CustomTemplateColumnModel<Row>(columnId, this));\n }\n\n addRowClass(className: string, predicate: (row: Row) => boolean) {\n this.rowClassNamePredicates.push(new RowClass<Row>(className, predicate));\n }\n\n getRowClasses(row: Row):string[] {\n const classNames:string[] = [];\n this.rowClassNamePredicates.forEach(i => {\n if (i.matches(row)) {\n classNames.push(i.className)\n }\n });\n return classNames;\n }\n\n useFormFactory(factory: (row: Row) => DirtyTrackingForm<Row>): this {\n this._createForm = factory;\n return this;\n }\n\n protected addColumn<C extends ColumnModel<Row>>(column: C): C {\n if (this._columnsById.get(column.columnId)) {\n lang.illegalState(`Column with id=${column.columnId} already exists`);\n } else {\n this._columns.push(column);\n }\n return column;\n }\n\n columnTextProperties(columnTextProperties: { [columnName: string]: () => ColumnTextProperties }) {\n this._columnTextPropertiesLookup = columnTextProperties;\n }\n\n getColumnTextProperties(column: ColumnModel<Row>): ColumnTextProperties {\n const factory = this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;\n return factory ? factory() : undefined;\n }\n\n startEditSession(row: Row): EditSession<Row> {\n const rowId = this.identityOf(row);\n if (this._rowsBeingEdited.query().indexOf(row) > -1) {\n return lang.illegalState(`Row with id=${rowId} already being edited`);\n } else {\n const editSession = new EditSession<Row>(rowId, row, this._createForm(row), this.saveCommand);\n const { when } = Dsl.disposeWith(editSession);\n when.valueOf(editSession.liveRowValue).changes((editedValue) => {\n this._rowsBeingEdited.replaceOrPush(editedValue);\n }, { initialValue: 'triggerChangeUnlessNil' });\n\n this._editorSessions.push(editSession);\n editSession.onDispose(() => {\n this._rowsBeingEdited.remove(editSession.liveRowValue.value);\n this._editorSessions.remove(editSession);\n });\n return editSession;\n }\n }\n\n getEditSessionFor(row: Row): EditSession<Row> {\n return this._editorSessionByRowId.get(this.identityOf(row));\n }\n\n cancelAllEditorSessions() {\n this._editorSessions.runInTransaction((draft) => {\n this._rowsBeingEdited.runInTransaction(() => {\n draft.value.forEach(session => session.dispose());\n });\n });\n }\n\n isRowSelectionEnabledFor(column: ColumnModel<Row>): boolean | undefined {\n return this.selectionColumnModel && (column.isRowSelectionEnabled() ?? this.isRowSelectionEnabledByDefault());\n }\n\n isRowSelectionEnabledByDefault(): boolean {\n return this.selectionColumnModel && this.selectionColumnModel.isRowSelectionEnabledByDefault();\n }\n\n isRowSelectionEnabled() {\n return this.hasColumnsWithRowSelectionExplicitlyEnabled.value || this.isRowSelectionEnabledByDefault();\n }\n\n selectRow(row: Row) {\n this.selectionColumnModel?.selectRow(row);\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"table-model.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/table-model.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assert,\n BooleanValueModelChain,\n CanIdentify,\n DirtyTrackingForm,\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n ListModelChain,\n MapModelChain,\n MutableListModel,\n SelectionModel,\n TrackExternal,\n Types,\n UnaryCommand,\n ValueModelChain\n} from '@coolon/pectin';\nimport {\n ColumnModel,\n CustomTemplateColumnModel,\n CustomValueColumnModel,\n EditorControlColumnModel,\n ListPropertyColumnModel,\n PropertyColumnModel,\n SelectionColumnModel\n} from './column-model';\nimport { ColumnTextProperties } from './column-text-properties';\nimport { EditSession } from './edit-session';\n\n// export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];\n// export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];\n\nclass RowClass<Row> {\n constructor(readonly className: string,\n readonly matches: (row: Row) => boolean) {\n }\n}\n\n/**\n * Example:\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * Editable tables\n * @example\n * const saveCommand = UnaryCommand.create((form: Form<Hero>) => {\n * if (form.validate()) {\n * // normal form save stuff\n * return true; // finish editing\n * }\n * return false; // continue editiing\n * }\n * const colorsNames: ListModel<string> = ...;\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"firstName\").cellEditor(StringInputComponent); <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.pluck(\"lastName\").cellEditor(StringInputComponent, {\n * validators: [Validator.present(\"We need a last name\")]\n * });\n * table.pluck(\"age\").cellEditor(NumberInputComponent);\n * table.pluck(\"favoriteColor\").cellEditor(SelectInputComponent, {\n * initialiseComponent(component: SelectInputComponent) {\n * selectInput.optionsModel = colorsNames; // <- initialise our component\n * }\n * });\n * table.addEditControls(saveCommand); // <- required to enable editing\n * });\n *\n * Selection models\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model\n * table.pluck(\"firstName\");\n * table.pluck(\"lastName\");\n * });\n *\n * Custom cell renderers and editors\n * @example\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"favoriteColor\")\n * .cellHeaderRenderer(CellHeaderRendererComponent, (component, column) => {\n * // configure your component with what ever you need.\n * });\n * .cellRenderer(CellRendererComponent) // <-- interface CellEditor { value: string; }\n * .cellEditor(CellEditorComponent.); // <-- interface CellEditor { valueModel: DirtyTrackingForm.ValueModel<string> | ValueModel<string>; }\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n * });\n *\n * I18n\n * @example\n * [table.yml]\n * table:\n * columns(ColumnTextProperties[]):\n * firstName:\n * headerText: \"First Name\"\n * fullName:\n * headerText: \"Full Name\"\n *\n * const model = TableModel.fromList(heroList, table => {\n * table.pluck(\"favoriteColor\").cellRenderer(...).cellEditor(...);\n * table.addCustomColumn(\"fullName\", hero => `${hero.firstName} ${hero.lastName}`);\n *\n * table.columnTextProperties(I18n.table.columns); // <- configures all columns\n * });\n */\n@TrackExternal.Strategy(new TrackExternal.OneTimeBinding())\nexport class TableModel<Row> {\n\n private readonly _garbage = new GarbageCollector();\n\n private readonly _columns = new MutableListModel<ColumnModel<Row>>();\n private _columnsById: MapModelChain<string, ColumnModel<Row>>;\n private _editorSessions = new MutableListModel<EditSession<Row>>();\n private readonly _rowsBeingEdited: MutableListModel<Row>;\n private readonly rowClassNamePredicates: RowClass<Row>[] = [];\n\n private _columnTextPropertiesLookup: { [columnName: string]: () => ColumnTextProperties };\n\n readonly identityOf: CanIdentify<Row>['identityOf'];\n private saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>;\n private _editorSessionByRowId: MapModelChain<any, EditSession<Row>>;\n\n readonly editing: BooleanValueModelChain;\n readonly dataSource: ListModelChain<Row>;\n readonly firstEditableColumn: ValueModelChain<ColumnModel<Row>>;\n private selectionColumnModel: SelectionColumnModel<Row>;\n private hasColumnsWithRowSelectionExplicitlyEnabled: BooleanValueModelChain;\n\n static fromList<Row>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): TableModel<Row> {\n const model = new TableModel<Row>(sourceOfTruth);\n builder(model);\n return model;\n }\n\n private _createForm: (row: Row) => DirtyTrackingForm<Row> = (row) => new DirtyTrackingForm<Row>();\n\n protected constructor(private sourceOfTruth: ListModel<Row>) {\n this.identityOf = sourceOfTruth.identityOf;\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this._garbage);\n this._columnsById = chain(this._columns).indexBy('columnId');\n this._rowsBeingEdited = new MutableListModel<Row>([], {\n identifiedWith: this.identityOf\n });\n this._editorSessionByRowId = chain(this._editorSessions).indexBy('rowId');\n this.editing = chain(this._editorSessions).count().isGreaterThan(0);\n this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);\n this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();\n this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);\n this.addRowClass('enable-hover', () => this.isRowSelectionEnabled());\n }\n\n get rowsBeingEdited(): ListModel<Row> {\n return this._rowsBeingEdited.readonly;\n }\n\n getTrackByFunction() {\n return (index: number, item: Row) => {\n return this.identityOf ? this.identityOf(item) : index;\n };\n }\n\n get columns(): ListModel<ColumnModel<Row>> {\n return this._columns.readonly;\n }\n\n pluck<P extends Types.ValuePropertiesOf<Row>>(property: P, options?: { columnId: string }): PropertyColumnModel<Row, P> {\n return this.addColumn(new PropertyColumnModel<Row, P>(options?.columnId || property.toString(), property, this));\n }\n\n pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P, options?: { columnId: string }): ListPropertyColumnModel<Row, P> {\n return this.addColumn(new ListPropertyColumnModel<Row, P>(options?.columnId || property.toString(), property, this));\n }\n\n addSelectionColumn(selectionModel: SelectionModel<Row>): SelectionColumnModel<Row> {\n assert.isNil(this.selectionColumnModel);\n this.selectionColumnModel = new SelectionColumnModel<Row>('selection', this, selectionModel);\n return this.addColumn(this.selectionColumnModel);\n }\n\n addEditControls(saveCommand: UnaryCommand<DirtyTrackingForm<Row>, boolean>): EditorControlColumnModel<Row> {\n this.saveCommand = saveCommand;\n return this.addColumn(new EditorControlColumnModel<Row>('editControls', saveCommand, this));\n }\n\n addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V> {\n return this.addColumn(new CustomValueColumnModel<Row, V>(columnId, this, dataAccessor));\n }\n\n addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row> {\n return this.addColumn(new CustomTemplateColumnModel<Row>(columnId, this));\n }\n\n addRowClass(className: string, predicate: (row: Row) => boolean) {\n this.rowClassNamePredicates.push(new RowClass<Row>(className, predicate));\n }\n\n getRowClasses(row: Row): string[] {\n const classNames: string[] = [];\n this.rowClassNamePredicates.forEach(i => {\n if (i.matches(row)) {\n classNames.push(i.className);\n }\n });\n return classNames;\n }\n\n useFormFactory(factory: (row: Row) => DirtyTrackingForm<Row>): this {\n this._createForm = factory;\n return this;\n }\n\n protected addColumn<C extends ColumnModel<Row>>(column: C): C {\n if (this._columnsById.get(column.columnId)) {\n lang.illegalState(`Column with id=${column.columnId} already exists`);\n } else {\n this._columns.push(column);\n }\n return column;\n }\n\n columnTextProperties(columnTextProperties: { [columnName: string]: () => ColumnTextProperties }) {\n this._columnTextPropertiesLookup = columnTextProperties;\n }\n\n getColumnTextProperties(column: ColumnModel<Row>): ColumnTextProperties {\n const factory = this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[column.columnId] : undefined;\n return factory ? factory() : undefined;\n }\n\n startEditSession(row: Row): EditSession<Row> {\n const rowId = this.identityOf(row);\n if (this._rowsBeingEdited.query().indexOf(row) > -1) {\n return lang.illegalState(`Row with id=${rowId} already being edited`);\n } else {\n const editSession = new EditSession<Row>(rowId, row, this._createForm(row), this.saveCommand);\n const { when } = Dsl.disposeWith(editSession);\n when.valueOf(editSession.liveRowValue).changes((editedValue) => {\n this._rowsBeingEdited.replaceOrPush(editedValue);\n }, { initialValue: 'triggerChangeUnlessNil' });\n\n this._editorSessions.push(editSession);\n editSession.onDispose(() => {\n this._rowsBeingEdited.remove(editSession.liveRowValue.value);\n this._editorSessions.remove(editSession);\n });\n return editSession;\n }\n }\n\n getEditSessionFor(row: Row): EditSession<Row> {\n return this._editorSessionByRowId.get(this.identityOf(row));\n }\n\n cancelAllEditorSessions() {\n this._editorSessions.runInTransaction((draft) => {\n this._rowsBeingEdited.runInTransaction(() => {\n draft.value.forEach(session => session.dispose());\n });\n });\n }\n\n isRowSelectionEnabledFor(column: ColumnModel<Row>): boolean | undefined {\n return this.selectionColumnModel && (column.isRowSelectionEnabled() ?? this.isRowSelectionEnabledByDefault());\n }\n\n isRowSelectionEnabledByDefault(): boolean {\n return this.selectionColumnModel && this.selectionColumnModel.isRowSelectionEnabledByDefault();\n }\n\n isRowSelectionEnabled() {\n return this.hasColumnsWithRowSelectionExplicitlyEnabled.value || this.isRowSelectionEnabledByDefault();\n }\n\n selectRow(row: Row) {\n this.selectionColumnModel?.selectRow(row);\n }\n}\n\n"]}
|
|
@@ -1089,6 +1089,7 @@ class CellHeaderPortalRef extends CellPortalRef {
|
|
|
1089
1089
|
assert$1.isTruthy(host);
|
|
1090
1090
|
host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
|
|
1091
1091
|
}
|
|
1092
|
+
// @Trace()
|
|
1092
1093
|
onPortalAttached(host, portalComponent) {
|
|
1093
1094
|
this.initialiseHeader(portalComponent, host.column);
|
|
1094
1095
|
}
|
|
@@ -1104,13 +1105,15 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
|
|
|
1104
1105
|
initialiseHost(host, columnModel) {
|
|
1105
1106
|
host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
|
|
1106
1107
|
}
|
|
1108
|
+
// @Trace()
|
|
1107
1109
|
onPortalAttached(host, portalComponent) {
|
|
1108
1110
|
host[PORTAL_RENDERER_COMPONENT] = portalComponent;
|
|
1109
|
-
this.updateComponent(portalComponent, host.getRowData());
|
|
1111
|
+
this.updateComponent(portalComponent, host.getRowData(), true);
|
|
1110
1112
|
}
|
|
1113
|
+
// @Trace()
|
|
1111
1114
|
pushState(host) {
|
|
1112
1115
|
if (host[PORTAL_RENDERER_COMPONENT]) {
|
|
1113
|
-
this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
|
|
1116
|
+
this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
|
|
1114
1117
|
}
|
|
1115
1118
|
}
|
|
1116
1119
|
}
|
|
@@ -1147,6 +1150,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
|
|
|
1147
1150
|
onPortalAttached(host, portalComponent) {
|
|
1148
1151
|
// don't care
|
|
1149
1152
|
}
|
|
1153
|
+
// @Trace()
|
|
1150
1154
|
pushState(host) {
|
|
1151
1155
|
host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
|
|
1152
1156
|
host.fillCell = this.fillCell;
|
|
@@ -1403,21 +1407,24 @@ __decorate([
|
|
|
1403
1407
|
__metadata("design:returntype", Object)
|
|
1404
1408
|
], ColumnModel.prototype, "getColumnTextProperties", null);
|
|
1405
1409
|
class PropertyColumnModel extends ColumnModel {
|
|
1406
|
-
constructor(property, defaults) {
|
|
1407
|
-
super(
|
|
1410
|
+
constructor(id, property, defaults) {
|
|
1411
|
+
super(id, defaults);
|
|
1408
1412
|
this.property = property;
|
|
1409
1413
|
this._format = (value) => value;
|
|
1410
1414
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
1411
1415
|
}
|
|
1412
|
-
cellRenderer(componentType) {
|
|
1413
|
-
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
|
|
1416
|
+
cellRenderer(componentType, onComponentInit) {
|
|
1417
|
+
this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
|
|
1418
|
+
if (firstTime && onComponentInit) {
|
|
1419
|
+
onComponentInit(component);
|
|
1420
|
+
}
|
|
1414
1421
|
component.value = this._format(rowData.row[this.property]);
|
|
1415
1422
|
}));
|
|
1416
1423
|
return this;
|
|
1417
1424
|
}
|
|
1418
|
-
cellEditor(editor, validatorsOrInitialiser,
|
|
1425
|
+
cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
|
|
1419
1426
|
const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
|
|
1420
|
-
const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser :
|
|
1427
|
+
const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
|
|
1421
1428
|
this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
|
|
1422
1429
|
const formValueModel = editSession.form.pluck(this.property);
|
|
1423
1430
|
if (validators) {
|
|
@@ -1440,8 +1447,8 @@ class PropertyColumnModel extends ColumnModel {
|
|
|
1440
1447
|
}
|
|
1441
1448
|
}
|
|
1442
1449
|
class ListPropertyColumnModel extends ColumnModel {
|
|
1443
|
-
constructor(property, defaults) {
|
|
1444
|
-
super(
|
|
1450
|
+
constructor(id, property, defaults) {
|
|
1451
|
+
super(id, defaults);
|
|
1445
1452
|
this.property = property;
|
|
1446
1453
|
this._format = (value) => value.map(v => v === null || v === void 0 ? void 0 : v.toString()).join(', ');
|
|
1447
1454
|
this.cellRenderer(DefaultCellRendererComponent);
|
|
@@ -1657,7 +1664,7 @@ let TableModel = TableModel_1 = class TableModel {
|
|
|
1657
1664
|
this.dataSource = chain(this.sourceOfTruth).replaceAll(this.rowsBeingEdited);
|
|
1658
1665
|
this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();
|
|
1659
1666
|
this.hasColumnsWithRowSelectionExplicitlyEnabled = chain(this._columns).findIndex(column => column.isRowSelectionExplicitlyEnabled()).isGreaterThanOrEqualTo(0);
|
|
1660
|
-
this.addRowClass(
|
|
1667
|
+
this.addRowClass('enable-hover', () => this.isRowSelectionEnabled());
|
|
1661
1668
|
}
|
|
1662
1669
|
static fromList(sourceOfTruth, builder) {
|
|
1663
1670
|
const model = new TableModel_1(sourceOfTruth);
|
|
@@ -1675,11 +1682,11 @@ let TableModel = TableModel_1 = class TableModel {
|
|
|
1675
1682
|
get columns() {
|
|
1676
1683
|
return this._columns.readonly;
|
|
1677
1684
|
}
|
|
1678
|
-
pluck(property) {
|
|
1679
|
-
return this.addColumn(new PropertyColumnModel(property, this));
|
|
1685
|
+
pluck(property, options) {
|
|
1686
|
+
return this.addColumn(new PropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
|
|
1680
1687
|
}
|
|
1681
|
-
pluckList(property) {
|
|
1682
|
-
return this.addColumn(new ListPropertyColumnModel(property, this));
|
|
1688
|
+
pluckList(property, options) {
|
|
1689
|
+
return this.addColumn(new ListPropertyColumnModel((options === null || options === void 0 ? void 0 : options.columnId) || property.toString(), property, this));
|
|
1683
1690
|
}
|
|
1684
1691
|
addSelectionColumn(selectionModel) {
|
|
1685
1692
|
assert.isNil(this.selectionColumnModel);
|