@one-grid-core/angular 0.5.0 → 0.5.2
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/README.md +3 -0
- package/esm2022/lib/components/one-grid-body/one-grid-body.component.mjs +32 -10
- package/esm2022/lib/core/instants/one-grid-api.class.mjs +60 -1
- package/esm2022/lib/core/models/one-grid-types.model.mjs +1 -1
- package/esm2022/lib/core/services/one-grid-row.service.mjs +10 -1
- package/fesm2022/one-grid-core-angular.mjs +99 -9
- package/fesm2022/one-grid-core-angular.mjs.map +1 -1
- package/lib/components/one-grid-body/one-grid-body.component.d.ts +10 -0
- package/lib/core/instants/one-grid-api.class.d.ts +13 -1
- package/lib/core/models/one-grid-types.model.d.ts +19 -0
- package/lib/core/services/one-grid-row.service.d.ts +7 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWdyaWQtdHlwZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmUtZ3JpZC9zcmMvbGliL2NvcmUvbW9kZWxzL29uZS1ncmlkLXR5cGVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBPbmVHcmlkQXBpIH0gZnJvbSBcIi4uL2luc3RhbnRzL29uZS1ncmlkLWFwaS5jbGFzc1wiO1xuaW1wb3J0IHR5cGUgeyBPbmVSb3dOb2RlIH0gZnJvbSBcIi4uL2luc3RhbnRzL29uZS1yb3ctbm9kZS5jbGFzc1wiO1xuaW1wb3J0IHR5cGUgeyBPbmVDb2x1bW5EZWYsIE9uZUdyb3VwQ29sdW1uRGVmIH0gZnJvbSBcIi4vb25lLWNvbHVtbi1kZWYtdHlwZXMubW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgUm93U2VsZWN0aW9uTW9kZSB9IGZyb20gXCIuL29uZS1ldmVudC10eXBlcy5tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBPbmVEZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tIFwiLi9vbmUtbWFzdGVyLWRldGFpbC5tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBPbmVDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tIFwiLi9vbmUtdHJlZS1kYXRhLm1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIE9uZUdyaWRUeXBlID0gJ3NpbXBsZScgfCAnbWFzdGVyJyB8ICdkZXRhaWwnIHwgJ3RyZWUnIHwgbnVsbDtcblxuLyoqXG4gKiBFdmVyeXRoaW5nIGBPbmVHcmlkQXBpLmluaXRgIG5lZWRzIHRvIHN0YW5kIGEgZ3JpZCB1cC5cbiAqXG4gKiBBbiBvcHRpb25zIG9iamVjdCByYXRoZXIgdGhhbiBhIHBvc2l0aW9uYWwgbGlzdDogdGhlIHByZXZpb3VzIHNpZ25hdHVyZSB0b29rXG4gKiB0ZW4gcG9zaXRpb25hbCBhcmd1bWVudHMsIGZvdXIgb2YgdGhlbSBvcHRpb25hbCBhbmQgdHdvIG9mIHRoZW0gYm9vbGVhbnMsIHNvXG4gKiBhIGNhbGwgc2l0ZSB3YXMgdW5yZWFkYWJsZSBhbmQgYWRkaW5nIGFuIG9wdGlvbiBtZWFudCB0b3VjaGluZyBldmVyeSBjYWxsZXIuXG4gKlxuICogYE9uZUdyaWRDb21wb25lbnRgIGNhbGxzIHRoaXMgZnJvbSBgbmdPbkluaXRgLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbmVHcmlkSW5pdE9wdGlvbnM8VCA9IGFueT4ge1xuICAgIC8qKiBXaGljaCByb2xlIHRoaXMgaW5zdGFuY2UgcGxheXMuIGBPbmVHcmlkQ29tcG9uZW50YCBkZXJpdmVzIGl0IGZyb20gaXRzIGlucHV0cy4gKi9cbiAgICBncmlkVHlwZTogT25lR3JpZFR5cGU7XG4gICAgLyoqIENvbHVtbiBkZWZpbml0aW9ucywgYmVmb3JlIGBkZWZhdWx0Q29sdW1uRGVmYCBpcyBtZXJnZWQgaW4uICovXG4gICAgY29sdW1uRGVmczogT25lQ29sdW1uRGVmPFQ+W107XG4gICAgLyoqIE1lcmdlZCBpbnRvIGV2ZXJ5IGNvbHVtbiBkZWZpbml0aW9uLiAqL1xuICAgIGRlZmF1bHRDb2x1bW5EZWY/OiBPbmVDb2x1bW5EZWY8VD47XG4gICAgLyoqIEhlYWRlciBncm91cHMuIENvbHVtbnMgam9pbiBvbmUgYnkgYGdyb3VwSWRgLiAqL1xuICAgIGdyb3VwQ29sdW1uRGVmcz86IE9uZUdyb3VwQ29sdW1uRGVmW107XG4gICAgLyoqIFBhc3NlZCB0byByZW5kZXJlcnMsIGdldHRlcnMgYW5kIHByZWRpY2F0ZXM7IGBjb21wb25lbnRQYXJlbnQuZ2V0Um93SWRgIGlzIHJlYWQgZnJvbSBpdC4gKi9cbiAgICBjb250ZXh0PzogYW55O1xuICAgIC8qKiBgbnVsbGAgZGlzYWJsZXMgcm93IHNlbGVjdGlvbiBlbnRpcmVseS4gUmVhZCBvbmNlLCBoZXJlLiAqL1xuICAgIHJvd1NlbGVjdGlvbj86IFJvd1NlbGVjdGlvbk1vZGU7XG4gICAgLyoqIFR1cm5zIG9uIHRoZSBuZXN0ZWQgZGV0YWlsIGdyaWQuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGB0cmVlRGF0YWAuICovXG4gICAgbWFzdGVyRGV0YWlsPzogYm9vbGVhbjtcbiAgICAvKiogRGV0YWlsIGdyaWQgb3B0aW9ucyBwbHVzIGBnZXREZXRhaWxSb3dEYXRhYC4gUmVxdWlyZWQgd2hlbiBgbWFzdGVyRGV0YWlsYCBpcyBvbi4gKi9cbiAgICBkZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXM/OiBPbmVEZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXM7XG4gICAgLyoqIFJlbmRlciBhIGNvbXBvbmVudCBpbiB0aGUgZGV0YWlsIGFyZWEgaW5zdGVhZCBvZiBhIG5lc3RlZCBncmlkLiAqL1xuICAgIGRldGFpbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxPbmVDZWxsUmVuZGVyZXJDb21wb25lbnQ+O1xuICAgIC8qKiBUdXJucyBvbiBoaWVyYXJjaGljYWwgcm93IGJ1aWxkaW5nLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgbWFzdGVyRGV0YWlsYC4gKi9cbiAgICB0cmVlRGF0YT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25lR3JpZFJlYWR5RXZlbnQ8VCA9IGFueT4ge1xuICAgIGFwaTogT25lR3JpZEFwaTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVHcmlkUm93QWN0aW9uRXZlbnQ8VCA9IGFueT4ge1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgZGF0YTogVDtcbiAgICBhcGk/OiBPbmVHcmlkQXBpPFQ+O1xuICAgIGNvbHVtbj86IE9uZUNvbHVtbkRlZjtcbiAgICBub2RlOiBPbmVSb3dOb2RlPFQ+O1xuICAgIG1hc3Rlck5vZGU/OiBPbmVSb3dOb2RlPFQ+O1xuICAgIGdyaWRUeXBlPzogT25lR3JpZFR5cGU7XG4gICAgc2VsZWN0ZWQ/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWdyaWQtdHlwZXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmUtZ3JpZC9zcmMvbGliL2NvcmUvbW9kZWxzL29uZS1ncmlkLXR5cGVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBPbmVHcmlkQXBpIH0gZnJvbSBcIi4uL2luc3RhbnRzL29uZS1ncmlkLWFwaS5jbGFzc1wiO1xuaW1wb3J0IHR5cGUgeyBPbmVSb3dOb2RlIH0gZnJvbSBcIi4uL2luc3RhbnRzL29uZS1yb3ctbm9kZS5jbGFzc1wiO1xuaW1wb3J0IHR5cGUgeyBPbmVDb2x1bW5EZWYsIE9uZUdyb3VwQ29sdW1uRGVmIH0gZnJvbSBcIi4vb25lLWNvbHVtbi1kZWYtdHlwZXMubW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgUm93U2VsZWN0aW9uTW9kZSB9IGZyb20gXCIuL29uZS1ldmVudC10eXBlcy5tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBPbmVEZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tIFwiLi9vbmUtbWFzdGVyLWRldGFpbC5tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBPbmVDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tIFwiLi9vbmUtdHJlZS1kYXRhLm1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIE9uZUdyaWRUeXBlID0gJ3NpbXBsZScgfCAnbWFzdGVyJyB8ICdkZXRhaWwnIHwgJ3RyZWUnIHwgbnVsbDtcblxuLyoqXG4gKiBFdmVyeXRoaW5nIGBPbmVHcmlkQXBpLmluaXRgIG5lZWRzIHRvIHN0YW5kIGEgZ3JpZCB1cC5cbiAqXG4gKiBBbiBvcHRpb25zIG9iamVjdCByYXRoZXIgdGhhbiBhIHBvc2l0aW9uYWwgbGlzdDogdGhlIHByZXZpb3VzIHNpZ25hdHVyZSB0b29rXG4gKiB0ZW4gcG9zaXRpb25hbCBhcmd1bWVudHMsIGZvdXIgb2YgdGhlbSBvcHRpb25hbCBhbmQgdHdvIG9mIHRoZW0gYm9vbGVhbnMsIHNvXG4gKiBhIGNhbGwgc2l0ZSB3YXMgdW5yZWFkYWJsZSBhbmQgYWRkaW5nIGFuIG9wdGlvbiBtZWFudCB0b3VjaGluZyBldmVyeSBjYWxsZXIuXG4gKlxuICogYE9uZUdyaWRDb21wb25lbnRgIGNhbGxzIHRoaXMgZnJvbSBgbmdPbkluaXRgLiBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbmVHcmlkSW5pdE9wdGlvbnM8VCA9IGFueT4ge1xuICAgIC8qKiBXaGljaCByb2xlIHRoaXMgaW5zdGFuY2UgcGxheXMuIGBPbmVHcmlkQ29tcG9uZW50YCBkZXJpdmVzIGl0IGZyb20gaXRzIGlucHV0cy4gKi9cbiAgICBncmlkVHlwZTogT25lR3JpZFR5cGU7XG4gICAgLyoqIENvbHVtbiBkZWZpbml0aW9ucywgYmVmb3JlIGBkZWZhdWx0Q29sdW1uRGVmYCBpcyBtZXJnZWQgaW4uICovXG4gICAgY29sdW1uRGVmczogT25lQ29sdW1uRGVmPFQ+W107XG4gICAgLyoqIE1lcmdlZCBpbnRvIGV2ZXJ5IGNvbHVtbiBkZWZpbml0aW9uLiAqL1xuICAgIGRlZmF1bHRDb2x1bW5EZWY/OiBPbmVDb2x1bW5EZWY8VD47XG4gICAgLyoqIEhlYWRlciBncm91cHMuIENvbHVtbnMgam9pbiBvbmUgYnkgYGdyb3VwSWRgLiAqL1xuICAgIGdyb3VwQ29sdW1uRGVmcz86IE9uZUdyb3VwQ29sdW1uRGVmW107XG4gICAgLyoqIFBhc3NlZCB0byByZW5kZXJlcnMsIGdldHRlcnMgYW5kIHByZWRpY2F0ZXM7IGBjb21wb25lbnRQYXJlbnQuZ2V0Um93SWRgIGlzIHJlYWQgZnJvbSBpdC4gKi9cbiAgICBjb250ZXh0PzogYW55O1xuICAgIC8qKiBgbnVsbGAgZGlzYWJsZXMgcm93IHNlbGVjdGlvbiBlbnRpcmVseS4gUmVhZCBvbmNlLCBoZXJlLiAqL1xuICAgIHJvd1NlbGVjdGlvbj86IFJvd1NlbGVjdGlvbk1vZGU7XG4gICAgLyoqIFR1cm5zIG9uIHRoZSBuZXN0ZWQgZGV0YWlsIGdyaWQuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGB0cmVlRGF0YWAuICovXG4gICAgbWFzdGVyRGV0YWlsPzogYm9vbGVhbjtcbiAgICAvKiogRGV0YWlsIGdyaWQgb3B0aW9ucyBwbHVzIGBnZXREZXRhaWxSb3dEYXRhYC4gUmVxdWlyZWQgd2hlbiBgbWFzdGVyRGV0YWlsYCBpcyBvbi4gKi9cbiAgICBkZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXM/OiBPbmVEZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXM7XG4gICAgLyoqIFJlbmRlciBhIGNvbXBvbmVudCBpbiB0aGUgZGV0YWlsIGFyZWEgaW5zdGVhZCBvZiBhIG5lc3RlZCBncmlkLiAqL1xuICAgIGRldGFpbFJlbmRlcmVyQ29tcG9uZW50PzogVHlwZTxPbmVDZWxsUmVuZGVyZXJDb21wb25lbnQ+O1xuICAgIC8qKiBUdXJucyBvbiBoaWVyYXJjaGljYWwgcm93IGJ1aWxkaW5nLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgbWFzdGVyRGV0YWlsYC4gKi9cbiAgICB0cmVlRGF0YT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25lR3JpZFJlYWR5RXZlbnQ8VCA9IGFueT4ge1xuICAgIGFwaTogT25lR3JpZEFwaTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmVHcmlkUm93QWN0aW9uRXZlbnQ8VCA9IGFueT4ge1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgZGF0YTogVDtcbiAgICBhcGk/OiBPbmVHcmlkQXBpPFQ+O1xuICAgIGNvbHVtbj86IE9uZUNvbHVtbkRlZjtcbiAgICBub2RlOiBPbmVSb3dOb2RlPFQ+O1xuICAgIG1hc3Rlck5vZGU/OiBPbmVSb3dOb2RlPFQ+O1xuICAgIGdyaWRUeXBlPzogT25lR3JpZFR5cGU7XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uZUdyaWRHZXRSb3dJZFBhcmFtczxUID0gYW55PiB7XG4gICAgZGF0YTogVDtcbiAgICByb3dJbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uZVNvcnRNb2RlbDxUID0gYW55PiB7XG4gIGNvbElkOiAga2V5b2YgVDtcbiAgc29ydDogJ2FzYycgfCAnZGVzYyc7XG59XG5cbi8qKlxuICogT25lIGJhdGNoIG9mIHJvdyBjaGFuZ2VzIGZvciBgYXBpLmFwcGx5VHJhbnNhY3Rpb25gIOKAlCB0aGUgd2F5IHRvIGFwcGVuZCxcbiAqIHBhdGNoIG9yIGRyb3Agcm93cyB3aXRob3V0IHJlYmluZGluZyB0aGUgd2hvbGUgZGF0YXNldCBmcm9tIHRoZSBob3N0LlxuICpcbiAqIFJvd3MgYXJlIG1hdGNoZWQgYnkgaWQsIHNvIGEgdHJhbnNhY3Rpb24gcmVxdWlyZXMgYVxuICogYGNvbnRleHQuY29tcG9uZW50UGFyZW50LmdldFJvd0lkYC4gU2VsZWN0aW9uIGFuZCBleHBhbnNpb24gc3Vydml2ZSwgdGhlXG4gKiBhY3RpdmUgc29ydCBhbmQgZmlsdGVycyByZS1hcHBseSwgYW5kIG9uIHRyZWUgZGF0YSBgcmVtb3ZlYCByZWFjaGVzIGFueVxuICogZGVwdGggd2hpbGUgYGFkZFRvUGFyZW50SWRgIHBsYWNlcyBhZGRlZCByb3dzIHVuZGVyIGFuIGV4aXN0aW5nIHBhcmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbmVSb3dUcmFuc2FjdGlvbjxUID0gYW55PiB7XG4gIC8qKiBSb3dzIHRvIGFwcGVuZCDigJQgYXQgdGhlIHJvb3QsIG9yIHVuZGVyIGBhZGRUb1BhcmVudElkYC4gKi9cbiAgYWRkPzogVFtdO1xuICAvKiogUm93IGlkIG9mIHRoZSBwYXJlbnQgdGhlIGFkZGVkIHJvd3MgZ28gdW5kZXIgKHRyZWUgZGF0YSBvbmx5KS4gKi9cbiAgYWRkVG9QYXJlbnRJZD86IHN0cmluZztcbiAgLyoqIFJlcGxhY2VtZW50IHJvd3MsIG1hdGNoZWQgdG8gZXhpc3Rpbmcgcm93cyBieSBpZC4gKi9cbiAgdXBkYXRlPzogVFtdO1xuICAvKiogUm93cyAob3Igcm93IGlkcykgdG8gZHJvcCwgYXQgYW55IGRlcHRoLiAqL1xuICByZW1vdmU/OiAoVCB8IHN0cmluZylbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmlkUm93RGF0YSB7XG4gIHJvd0lkOiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTsgLy8gZmxleGlibGUgZXh0cmEgZmllbGRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZFJvd0RhdGFPcGVyYXRpb248VCBleHRlbmRzIEdyaWRSb3dEYXRhID0gR3JpZFJvd0RhdGE+IHtcbiAgLyoqXG4gICAqIE1vdmUgYSByb3cgZnJvbSBvbmUgaW5kZXggdG8gYW5vdGhlclxuICAgKiBAcGFyYW0gc291cmNlSW5kZXggLSB0aGUgY3VycmVudCBpbmRleCBvZiB0aGUgcm93XG4gICAqIEBwYXJhbSB0YXJnZXRJbmRleCAtIHRoZSBuZXcgaW5kZXggdG8gbW92ZSB0b1xuICAgKi9cbiAgbW92ZVJvdyhzb3VyY2VJbmRleDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogUmVtb3ZlIGEgcm93IGJ5IGl0cyB1bmlxdWUgSURcbiAgICogQHBhcmFtIHJvd0lkIC0gdGhlIElEIG9mIHRoZSByb3cgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVSb3cocm93SWQ6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEluc2VydCBhIG5ldyByb3cgYXQgdGhlIGdpdmVuIGluZGV4XG4gICAqIEBwYXJhbSByb3cgLSB0aGUgcm93IGRhdGFcbiAgICogQHBhcmFtIGluZGV4IC0gd2hlcmUgdG8gaW5zZXJ0XG4gICAqL1xuICBpbnNlcnRSb3cocm93OiBULCBpbmRleDogbnVtYmVyKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -20,10 +20,19 @@ export class OneGridRowService {
|
|
|
20
20
|
}
|
|
21
21
|
return uuidv4();
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* The row's id, or null when it cannot be known — no id function, or one
|
|
25
|
+
* that answers nothing for this row. Unlike `generateRowId` this never
|
|
26
|
+
* mints an id, which is what row matching (transactions) needs: a minted
|
|
27
|
+
* id matches nothing and must not pretend otherwise.
|
|
28
|
+
*/
|
|
29
|
+
resolveRowId(data) {
|
|
30
|
+
return this._getRowId?.({ data, rowIndex: -1 }) ?? null;
|
|
31
|
+
}
|
|
23
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OneGridRowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
33
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OneGridRowService }); }
|
|
25
34
|
}
|
|
26
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OneGridRowService, decorators: [{
|
|
27
36
|
type: Injectable
|
|
28
37
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLWdyaWQtcm93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmUtZ3JpZC9zcmMvbGliL2NvcmUvc2VydmljZXMvb25lLWdyaWQtcm93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHcEMsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUdZLGNBQVMsR0FBOEMsSUFBSSxDQUFDO0tBaUN2RTtJQS9CRzs7T0FFRztJQUNJLGFBQWEsQ0FBQyxRQUFtRDtRQUVwRSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhLENBQUMsSUFBUyxFQUFFLFFBQWdCO1FBRTVDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWpCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzFELENBQUM7UUFFRCxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxJQUFTO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVELENBQUM7K0dBbENRLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT25lR3JpZEdldFJvd0lkUGFyYW1zIH0gZnJvbSAnLi4vbW9kZWxzL29uZS1ncmlkLXR5cGVzLm1vZGVsJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT25lR3JpZFJvd1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBfZ2V0Um93SWQ6IChwYXJhbXM6IE9uZUdyaWRHZXRSb3dJZFBhcmFtcykgPT4gc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFNldCBSb3cgSWQgRnVuY2l0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0R2V0Um93SWRGbihnZXRSb3dJZDogKHBhcmFtczogT25lR3JpZEdldFJvd0lkUGFyYW1zKSA9PiBzdHJpbmcpIHtcblxuICAgICAgICB0aGlzLl9nZXRSb3dJZCA9IGdldFJvd0lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIFVuaXF1ZSBSb3cgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2VuZXJhdGVSb3dJZChkYXRhOiBhbnksIHJvd0luZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgICAgIGlmICh0aGlzLl9nZXRSb3dJZCkge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Um93SWQoeyBkYXRhLCByb3dJbmRleCB9KSA/PyB1dWlkdjQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1dWlkdjQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcm93J3MgaWQsIG9yIG51bGwgd2hlbiBpdCBjYW5ub3QgYmUga25vd24g4oCUIG5vIGlkIGZ1bmN0aW9uLCBvciBvbmVcbiAgICAgKiB0aGF0IGFuc3dlcnMgbm90aGluZyBmb3IgdGhpcyByb3cuIFVubGlrZSBgZ2VuZXJhdGVSb3dJZGAgdGhpcyBuZXZlclxuICAgICAqIG1pbnRzIGFuIGlkLCB3aGljaCBpcyB3aGF0IHJvdyBtYXRjaGluZyAodHJhbnNhY3Rpb25zKSBuZWVkczogYSBtaW50ZWRcbiAgICAgKiBpZCBtYXRjaGVzIG5vdGhpbmcgYW5kIG11c3Qgbm90IHByZXRlbmQgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXNvbHZlUm93SWQoZGF0YTogYW55KTogc3RyaW5nIHwgbnVsbCB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJvd0lkPy4oeyBkYXRhLCByb3dJbmRleDogLTEgfSkgPz8gbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1014,6 +1014,15 @@ class OneGridRowService {
|
|
|
1014
1014
|
}
|
|
1015
1015
|
return v4();
|
|
1016
1016
|
}
|
|
1017
|
+
/**
|
|
1018
|
+
* The row's id, or null when it cannot be known — no id function, or one
|
|
1019
|
+
* that answers nothing for this row. Unlike `generateRowId` this never
|
|
1020
|
+
* mints an id, which is what row matching (transactions) needs: a minted
|
|
1021
|
+
* id matches nothing and must not pretend otherwise.
|
|
1022
|
+
*/
|
|
1023
|
+
resolveRowId(data) {
|
|
1024
|
+
return this._getRowId?.({ data, rowIndex: -1 }) ?? null;
|
|
1025
|
+
}
|
|
1017
1026
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OneGridRowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1018
1027
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OneGridRowService }); }
|
|
1019
1028
|
}
|
|
@@ -1496,6 +1505,65 @@ class OneGridApi {
|
|
|
1496
1505
|
updateRowData(rowData) {
|
|
1497
1506
|
this.rebuildRows(rowData, false);
|
|
1498
1507
|
}
|
|
1508
|
+
/**
|
|
1509
|
+
* Apply a batch of row changes without the host rebinding the dataset:
|
|
1510
|
+
* append rows (at the root, or under a parent by id on tree data), replace
|
|
1511
|
+
* rows by id, drop rows at any depth. Selection and expansion survive —
|
|
1512
|
+
* this is `updateRowData` fed from the grid's own current rows, so the
|
|
1513
|
+
* host keeps no parallel copy to reconcile.
|
|
1514
|
+
*
|
|
1515
|
+
* Requires a stable `context.componentParent.getRowId`: rows are matched by
|
|
1516
|
+
* id, and without an id function there is nothing to match on — the
|
|
1517
|
+
* transaction is refused with a warning rather than half-applied.
|
|
1518
|
+
*/
|
|
1519
|
+
applyTransaction(transaction) {
|
|
1520
|
+
if (this._destroyed || !transaction)
|
|
1521
|
+
return;
|
|
1522
|
+
const sample = transaction.update?.[0] ?? transaction.add?.[0]
|
|
1523
|
+
?? (transaction.remove ?? []).find(entry => typeof entry !== 'string');
|
|
1524
|
+
if (sample !== undefined && this.rowService.resolveRowId(sample) === null) {
|
|
1525
|
+
console.warn('[one-grid] applyTransaction needs context.componentParent.getRowId — rows are matched by id. Nothing was applied.');
|
|
1526
|
+
return;
|
|
1527
|
+
}
|
|
1528
|
+
const removeIds = new Set((transaction.remove ?? []).map(entry => typeof entry === 'string' ? entry : this.rowService.resolveRowId(entry)));
|
|
1529
|
+
const updates = new Map((transaction.update ?? []).map(data => [this.rowService.resolveRowId(data), data]));
|
|
1530
|
+
const childrenField = this.treeDataChildrenField;
|
|
1531
|
+
// Row grouping folds flat rows itself, so the transaction operates on the
|
|
1532
|
+
// leaves and re-groups; a parent target would name a synthetic group row,
|
|
1533
|
+
// which is not a place data can live.
|
|
1534
|
+
const grouping = this._rowGroupFields.length > 0;
|
|
1535
|
+
const addToParentId = grouping ? undefined : transaction.addToParentId;
|
|
1536
|
+
if (grouping && transaction.addToParentId) {
|
|
1537
|
+
console.warn('[one-grid] applyTransaction: addToParentId is ignored under row grouping — groups are synthetic. Rows were added at the root.');
|
|
1538
|
+
}
|
|
1539
|
+
// Copy-on-write over the grid's own current rows: the node graph carries
|
|
1540
|
+
// the data, so the host's original arrays are never mutated and untouched
|
|
1541
|
+
// branches keep their object identity for the node-reuse path.
|
|
1542
|
+
const applyTo = (rows) => rows
|
|
1543
|
+
.filter(data => !removeIds.has(this.rowService.resolveRowId(data)))
|
|
1544
|
+
.map(data => {
|
|
1545
|
+
const id = this.rowService.resolveRowId(data);
|
|
1546
|
+
let next = updates.get(id) ?? data;
|
|
1547
|
+
if (this.treeData && childrenField) {
|
|
1548
|
+
const children = next[childrenField];
|
|
1549
|
+
const rebuilt = children ? applyTo(children) : undefined;
|
|
1550
|
+
const withAdded = id != null && id === addToParentId
|
|
1551
|
+
? [...(rebuilt ?? []), ...(transaction.add ?? [])]
|
|
1552
|
+
: rebuilt;
|
|
1553
|
+
if (withAdded !== children)
|
|
1554
|
+
next = { ...next, [childrenField]: withAdded ?? [] };
|
|
1555
|
+
}
|
|
1556
|
+
return next;
|
|
1557
|
+
});
|
|
1558
|
+
const currentRows = grouping
|
|
1559
|
+
? this._rowNodes.filter(node => node.leaf).map(node => node.data)
|
|
1560
|
+
: this._rowNodes.filter(node => !node.parent).map(node => node.data);
|
|
1561
|
+
let roots = applyTo(currentRows);
|
|
1562
|
+
if (transaction.add?.length && !addToParentId) {
|
|
1563
|
+
roots = [...roots, ...transaction.add];
|
|
1564
|
+
}
|
|
1565
|
+
this.rebuildRows(roots, false);
|
|
1566
|
+
}
|
|
1499
1567
|
/**
|
|
1500
1568
|
* The one row-loading path. `setRowData` and `updateRowData` differed only in
|
|
1501
1569
|
* whether they cleared the state services first, so everything else — build,
|
|
@@ -4654,6 +4722,24 @@ class OneGridBodyComponent {
|
|
|
4654
4722
|
* MAX_BUFFER_PX keeps roughly twenty rows of overscan either side instead.
|
|
4655
4723
|
*/
|
|
4656
4724
|
this.MAX_BUFFER_PX = 600;
|
|
4725
|
+
/**
|
|
4726
|
+
* Params for a component cell renderer.
|
|
4727
|
+
*
|
|
4728
|
+
* The cell params, plus whatever the column declared in
|
|
4729
|
+
* `cellRendererParams` — a field that exists precisely so a renderer can be
|
|
4730
|
+
* configured per column, and that nothing had ever forwarded to it. Column
|
|
4731
|
+
* config goes first so the grid's own fields win a name collision.
|
|
4732
|
+
*/
|
|
4733
|
+
/**
|
|
4734
|
+
* Cached per cell, keyed on the identities that mean "this cell changed":
|
|
4735
|
+
* its cellStates object (replaced on every edit and state refresh) and its
|
|
4736
|
+
* data object. Building a fresh object per call — which a template method
|
|
4737
|
+
* does per change-detection pass — made the renderer directive see "params
|
|
4738
|
+
* changed" every pass and re-run the component's oneInit each time. A
|
|
4739
|
+
* renderer whose oneInit touched grid state (a custom tree expander is the
|
|
4740
|
+
* classic case) then re-triggered change detection and looped forever.
|
|
4741
|
+
*/
|
|
4742
|
+
this.rendererParamsCache = new Map();
|
|
4657
4743
|
// ---------------------------------------------------------------------------
|
|
4658
4744
|
// Cell navigation
|
|
4659
4745
|
//
|
|
@@ -4723,6 +4809,8 @@ class OneGridBodyComponent {
|
|
|
4723
4809
|
*/
|
|
4724
4810
|
this.subscriptions.add(this.eventService.addEventListener('columnChanged', (payload) => {
|
|
4725
4811
|
this.columnDefs = [...payload.columns];
|
|
4812
|
+
// Params carry the columnDef, so a column change invalidates them all.
|
|
4813
|
+
this.rendererParamsCache.clear();
|
|
4726
4814
|
this.cellRenderer = this.columnDefs.some(col => col.cellRendererComponent);
|
|
4727
4815
|
this.rowWidth = this.columnDefs.reduce((sum, col) => sum + resolveColumnWidth(col), 0);
|
|
4728
4816
|
// A column change can alter the width left for flex columns (a hide, a
|
|
@@ -4738,6 +4826,9 @@ class OneGridBodyComponent {
|
|
|
4738
4826
|
// The full post-filter count, reported before the page slice is taken,
|
|
4739
4827
|
// so the host's paging totals see everything.
|
|
4740
4828
|
this.rowCountChanged.emit(allNodes?.length ?? 0);
|
|
4829
|
+
// New rows, new renderer params — and removed rows leave no stale
|
|
4830
|
+
// cache entries behind.
|
|
4831
|
+
this.rendererParamsCache.clear();
|
|
4741
4832
|
const nodes = this.api.pageNodes(allNodes);
|
|
4742
4833
|
setTimeout(() => {
|
|
4743
4834
|
this.viewport?.checkViewportSize();
|
|
@@ -4766,6 +4857,7 @@ class OneGridBodyComponent {
|
|
|
4766
4857
|
* Listen Pinned Row Data Changed Event
|
|
4767
4858
|
*/
|
|
4768
4859
|
this.subscriptions.add(this.eventService.addEventListener('pinnedRowDataChanged', ({ side, nodes }) => {
|
|
4860
|
+
this.rendererParamsCache.clear();
|
|
4769
4861
|
if (side === 'top') {
|
|
4770
4862
|
this.pinnedTopNodes = nodes;
|
|
4771
4863
|
}
|
|
@@ -5348,16 +5440,14 @@ class OneGridBodyComponent {
|
|
|
5348
5440
|
cellParams(node, column) {
|
|
5349
5441
|
return this.cellService.cellParams(column, node);
|
|
5350
5442
|
}
|
|
5351
|
-
/**
|
|
5352
|
-
* Params for a component cell renderer.
|
|
5353
|
-
*
|
|
5354
|
-
* The cell params, plus whatever the column declared in
|
|
5355
|
-
* `cellRendererParams` — a field that exists precisely so a renderer can be
|
|
5356
|
-
* configured per column, and that nothing had ever forwarded to it. Column
|
|
5357
|
-
* config goes first so the grid's own fields win a name collision.
|
|
5358
|
-
*/
|
|
5359
5443
|
rendererParams(node, column) {
|
|
5360
|
-
|
|
5444
|
+
const key = getCellKey(node.rowId, column.field ?? column.id ?? '');
|
|
5445
|
+
const cached = this.rendererParamsCache.get(key);
|
|
5446
|
+
if (cached && cached.states === node.cellStates && cached.data === node.data)
|
|
5447
|
+
return cached.params;
|
|
5448
|
+
const params = { ...(column?.cellRendererParams ?? {}), ...this.cellParams(node, column) };
|
|
5449
|
+
this.rendererParamsCache.set(key, { states: node.cellStates, data: node.data, params });
|
|
5450
|
+
return params;
|
|
5361
5451
|
}
|
|
5362
5452
|
/**
|
|
5363
5453
|
* `aria-rowindex` is 1-based over the whole grid, not over what is rendered.
|