@sumaris-net/ngx-components 18.22.18 → 18.22.20
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/doc/changelog.md +3 -0
- package/esm2022/src/app/core/table/async-table.class.mjs +39 -5
- package/esm2022/src/app/core/table/table.class.mjs +4 -4
- package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +41 -7
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/table/async-table.class.d.ts +23 -2
- package/src/app/core/table/table.class.d.ts +1 -1
- package/src/app/shared/services/entity-service.class.d.ts +1 -1
- package/src/assets/manifest.json +1 -1
|
@@ -33,4 +33,4 @@ export function toLoadResult(res) {
|
|
|
33
33
|
export function isEntityService(service) {
|
|
34
34
|
return service && service.load && service.save && service.delete;
|
|
35
35
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4SUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBSSxJQUFtQixFQUFFLElBQW1CO0lBQ3pFLE9BQU87UUFDTCxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0tBQ3ZGLENBQUM7QUFDSixDQUFDO0FBR0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUksR0FBd0I7SUFDdEQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEdBQW9CLENBQUM7SUFDdEMsK0JBQStCO0lBQy9CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFDO0lBQzNDLE9BQU8sR0FBb0IsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBUSxPQUFZO0lBQ2pELE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcG9sbG9DYWNoZSwgRmV0Y2hQb2xpY3ksIE11dGF0aW9uVXBkYXRlckZuLCBNdXRhdGlvblVwZGF0ZXJGdW5jdGlvbiwgV2F0Y2hRdWVyeUZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnV0aWxzJztcbmltcG9ydCB7IE11dGF0aW9uQmFzZU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFBhZ2Uge1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICBzb3J0Qnk/OiBzdHJpbmc7XG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBGZXRjaE1vcmVGbjxSLCBWID0gRW1wdHlPYmplY3Q+ID0gKHZhcmlhYmxlcz86IFYpID0+IFByb21pc2U8Uj47XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBMb2FkUmVzdWx0PFQ+IHtcbiAgZGF0YTogVFtdO1xuICB0b3RhbD86IG51bWJlcjtcbiAgZXJyb3JzPzogYW55W107XG4gIGZldGNoTW9yZT86IEZldGNoTW9yZUZuPExvYWRSZXN1bHQ8VD4+O1xufVxuXG5leHBvcnQgdHlwZSBTdWdnZXN0Rm48VCwgRiwgUiA9IFRbXSB8IExvYWRSZXN1bHQ8VD4+ID0gKFxuICB2YWx1ZTogYW55LFxuICBmaWx0ZXI/OiBGLFxuICBzb3J0Qnk/OiBzdHJpbmcgfCBrZXlvZiBULFxuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgb3B0cz86IHtcbiAgICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzaXplPzogbnVtYmVyO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfVxuKSA9PiBQcm9taXNlPFI+O1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU3VnZ2VzdFNlcnZpY2U8VCwgRj4ge1xuICBzdWdnZXN0OiBTdWdnZXN0Rm48VCwgRj47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnM8VCA9IGFueSwgViA9IGFueT4ge1xuICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICB0cmFzaD86IGJvb2xlYW47XG4gIHRvRW50aXR5PzogYm9vbGVhbiB8ICgoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IFQpO1xuICBxdWVyeT86IGFueTtcbiAgdmFyaWFibGVzPzogVjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlV2F0Y2hPcHRpb25zPFQgPSBhbnksIFYgPSBhbnk+IHtcbiAgcXVlcnk/OiBhbnk7XG4gIHZhcmlhYmxlcz86IFY7XG4gIGZldGNoUG9saWN5PzogV2F0Y2hRdWVyeUZldGNoUG9saWN5O1xuICB0cmFzaD86IGJvb2xlYW47XG4gIHRvRW50aXR5PzogYm9vbGVhbiB8ICgoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IFQpO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlTGlzdGVuQ2hhbmdlc09wdGlvbnM8VCA9IGFueSwgViA9IGFueT4ge1xuICBxdWVyeT86IGFueTtcbiAgdmFyaWFibGVzPzogVjtcbiAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gIGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7XG4gIHRvRW50aXR5PzogYm9vbGVhbiB8ICgoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpID0+IFQpO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5U2VydmljZVNhdmVPcHRpb25zPFQgPSBhbnksIFYgPSBhbnk+IHtcbiAgcXVlcnk/OiBhbnk7XG4gIHZhcmlhYmxlcz86IFY7XG4gIHJlZmV0Y2hRdWVyaWVzPzogTXV0YXRpb25CYXNlT3B0aW9uczxUPlsncmVmZXRjaFF1ZXJpZXMnXTtcbiAgYXdhaXRSZWZldGNoUXVlcmllcz86IGJvb2xlYW47XG4gIHVwZGF0ZT86IE11dGF0aW9uVXBkYXRlckZuPHsgZGF0YTogYW55IH0+IHwgTXV0YXRpb25VcGRhdGVyRnVuY3Rpb248eyBkYXRhOiBhbnkgfSwgViwgYW55LCBBcG9sbG9DYWNoZTx7IGRhdGE6IGFueSB9Pj47XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEVudGl0eVNlcnZpY2VEZWxldGVPcHRpb25zPFQgPSBhbnksIFYgPSBhbnk+IGV4dGVuZHMgT21pdDxFbnRpdHlTZXJ2aWNlU2F2ZU9wdGlvbnM8VCwgVj4sICdxdWVyeSc+IHtcbiAgbXV0YXRpb24/OiBhbnk7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJRW50aXR5U2VydmljZTxcbiAgVCxcbiAgSUQgPSBhbnksXG4gIExPID0gRW50aXR5U2VydmljZUxvYWRPcHRpb25zPFQ+LFxuICBTTyA9IEVudGl0eVNlcnZpY2VTYXZlT3B0aW9uczxUPixcbiAgRE8gPSBFbnRpdHlTZXJ2aWNlRGVsZXRlT3B0aW9uczxUPixcbj4ge1xuICBsb2FkKGlkOiBJRCwgb3B0cz86IExPKTogUHJvbWlzZTxUPjtcblxuICBjYW5Vc2VyV3JpdGUoZGF0YTogVCwgb3B0cz86IGFueSk6IGJvb2xlYW47XG5cbiAgc2F2ZShkYXRhOiBULCBvcHRzPzogU08pOiBQcm9taXNlPFQ+O1xuXG4gIGRlbGV0ZShkYXRhOiBULCBvcHRzPzogRE8pOiBQcm9taXNlPGFueT47XG5cbiAgbGlzdGVuQ2hhbmdlcyhpZDogSUQsIG9wdHM/OiBhbnkpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM8VCA9IGFueSwgViA9IGFueT4gZXh0ZW5kcyBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnM8VCwgVj4ge1xuICB3aXRoVG90YWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zPFQgPSBhbnksIFYgPSBhbnk+IGV4dGVuZHMgRW50aXR5U2VydmljZVdhdGNoT3B0aW9uczxULCBWPiB7XG4gIHdpdGhUb3RhbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFbnRpdGllc1NlcnZpY2VTYXZlT3B0aW9uczxUID0gYW55LCBWID0gYW55PiBleHRlbmRzIEVudGl0eVNlcnZpY2VTYXZlT3B0aW9uczxULCBWPiB7fVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRW50aXRpZXNTZXJ2aWNlRGVsZXRlT3B0aW9uczxUID0gYW55LCBWID0gYW55PiBleHRlbmRzIEVudGl0eVNlcnZpY2VEZWxldGVPcHRpb25zPFQsIFY+IHt9XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJRW50aXRpZXNTZXJ2aWNlPFxuICBULFxuICBGLFxuICBPIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zPFQ+LFxuICBTTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVNhdmVPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlU2F2ZU9wdGlvbnM8VD4sXG4gIERPIGV4dGVuZHMgRW50aXRpZXNTZXJ2aWNlRGVsZXRlT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZURlbGV0ZU9wdGlvbnM8VD4sXG4+IHtcbiAgLy8gVE9ETyBjaGFuZ2UgdG8gcmVxdWlyZWQgKGluIGEgZnV0dXJlIHZlcnNpb24pXG4gIHJlYWRvbmx5IGRlZmF1bHRGZXRjaFBvbGljeT86IFdhdGNoUXVlcnlGZXRjaFBvbGljeTtcblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPEY+LCBvcHRpb25zPzogTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj47XG5cbiAgLy8gVE9ET1xuICAvKndhdGNoUGFnZShcbiAgICBwYWdlOiBQYWdlPFQ+LFxuICAgIGZpbHRlcj86IEYsXG4gICAgb3B0aW9ucz86IE9cbiAgKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PFQ+PjsqL1xuXG4gIHNhdmVBbGwoZGF0YTogVFtdLCBvcHRzPzogU08pOiBQcm9taXNlPFRbXT47XG5cbiAgZGVsZXRlQWxsKGRhdGE6IFRbXSwgb3B0cz86IERPKTogUHJvbWlzZTxhbnk+O1xuXG4gIGFzRmlsdGVyKGZpbHRlcjogUGFydGlhbDxGPik6IEY7XG59XG5cbmV4cG9ydCB0eXBlIExvYWRSZXN1bHRCeVBhZ2VGbjxUPiA9IChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyKSA9PiBQcm9taXNlPExvYWRSZXN1bHQ8VD4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnRpdHlGdWxsU2VydmljZTxULCBJRCwgRiwgTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyAmIEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucz5cbiAgZXh0ZW5kcyBJRW50aXR5U2VydmljZTxULCBJRCwgTz4sXG4gICAgSUVudGl0aWVzU2VydmljZTxULCBGLCBPPiB7fVxuXG4vKipcbiAqIE1lcmdlcyB0d28gTG9hZFJlc3VsdCBvYmplY3RzIGludG8gYSBzaW5nbGUgTG9hZFJlc3VsdCBvYmplY3QgYnkgY29tYmluaW5nIHRoZWlyIGRhdGEgYXJyYXlzIGFuZCBzdW1taW5nIHRoZWlyIHRvdGFsIGNvdW50cy5cbiAqXG4gKiBAcGFyYW0ge0xvYWRSZXN1bHQ8VD59IHJlczEgLSBUaGUgZmlyc3QgTG9hZFJlc3VsdCBvYmplY3QgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge0xvYWRSZXN1bHQ8VD59IHJlczIgLSBUaGUgc2Vjb25kIExvYWRSZXN1bHQgb2JqZWN0IHRvIG1lcmdlLlxuICogQHJldHVybiB7TG9hZFJlc3VsdDxUPn0gQSBuZXcgTG9hZFJlc3VsdCBvYmplY3QgY29udGFpbmluZyB0aGUgY29tYmluZWQgZGF0YSBhbmQgdG90YWwgY291bnQgZnJvbSBib3RoIGlucHV0IG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxvYWRSZXN1bHQ8VD4ocmVzMTogTG9hZFJlc3VsdDxUPiwgcmVzMjogTG9hZFJlc3VsdDxUPik6IExvYWRSZXN1bHQ8VD4ge1xuICByZXR1cm4ge1xuICAgIGRhdGE6IChyZXMxLmRhdGEgfHwgW10pLmNvbmNhdCguLi5yZXMyLmRhdGEpLFxuICAgIHRvdGFsOiAocmVzMS50b3RhbCB8fCByZXMxLmRhdGE/Lmxlbmd0aCB8fCAwKSArIChyZXMyLnRvdGFsIHx8IHJlczIuZGF0YT8ubGVuZ3RoIHx8IDApLFxuICB9O1xufVxuXG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgaXRlbXMgb3IgYW4gYWxyZWFkeSBzdHJ1Y3R1cmVkIExvYWRSZXN1bHQgb2JqZWN0XG4gKiBpbnRvIGEgTG9hZFJlc3VsdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtUW10gfCBMb2FkUmVzdWx0PFQ+fSByZXMgLSBUaGUgaW5wdXQgd2hpY2ggY2FuIGVpdGhlciBiZSBhblxuICogYXJyYXkgb2YgaXRlbXMgb3IgYSBMb2FkUmVzdWx0IG9iamVjdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2FkUmVzdWx0PFQ+fSBSZXR1cm5zIGEgTG9hZFJlc3VsdCBvYmplY3QuIElmIHRoZSBpbnB1dCBpc1xuICogYW4gYXJyYXksIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEgTG9hZFJlc3VsdCBvYmplY3Qgd2l0aCB0aGUgZGF0YSBwcm9wZXJ0eVxuICogY29udGFpbmluZyB0aGUgYXJyYXkuIElmIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGEgTG9hZFJlc3VsdCwgaXQgaXMgcmV0dXJuZWQgYXMgaXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0xvYWRSZXN1bHQ8VD4ocmVzOiBUW10gfCBMb2FkUmVzdWx0PFQ+KTogTG9hZFJlc3VsdDxUPiB7XG4gIGlmICghcmVzKSByZXR1cm4gcmVzIGFzIExvYWRSZXN1bHQ8VD47XG4gIC8vIENvbnZlcnQgVFtdID0+IExvYWRSZXN1bHQ8VD5cbiAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkgcmV0dXJuIHtkYXRhOiByZXN9O1xuICByZXR1cm4gcmVzIGFzIExvYWRSZXN1bHQ8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VudGl0eVNlcnZpY2U8VCwgSUQ+KHNlcnZpY2U6IGFueSk6IHNlcnZpY2UgaXMgSUVudGl0eVNlcnZpY2U8VCwgSUQ+IHtcbiAgcmV0dXJuIHNlcnZpY2UgJiYgc2VydmljZS5sb2FkICYmIHNlcnZpY2Uuc2F2ZSAmJiBzZXJ2aWNlLmRlbGV0ZTtcbn1cbiJdfQ==
|
|
@@ -38553,7 +38553,7 @@ class AppTable {
|
|
|
38553
38553
|
if (previousRow.id === -1 && previousRow.validator?.invalid && !previousRow.validator?.dirty) {
|
|
38554
38554
|
this.deleteNewRow(event, previousRow);
|
|
38555
38555
|
// Wait deletion is done, then edit previous row (by id, because of reloading)
|
|
38556
|
-
this.waitIdle().then(() => this.
|
|
38556
|
+
this.waitIdle().then(() => this.editOrAddRowById(event, row.id, { focusColumn }));
|
|
38557
38557
|
return true;
|
|
38558
38558
|
}
|
|
38559
38559
|
// If cannot confirm previous row
|
|
@@ -38595,7 +38595,7 @@ class AppTable {
|
|
|
38595
38595
|
}
|
|
38596
38596
|
// Edit next row
|
|
38597
38597
|
const nextRowId = row.id + 1;
|
|
38598
|
-
this.
|
|
38598
|
+
this.editOrAddRowById(event, nextRowId, { focusColumn });
|
|
38599
38599
|
return true;
|
|
38600
38600
|
}
|
|
38601
38601
|
/**
|
|
@@ -39611,7 +39611,7 @@ class AppTable {
|
|
|
39611
39611
|
this.registerSubscription(this.sort.sortChange.pipe(filter(() => !this.sort.disabled)).subscribe(() => (this.paginator.pageIndex = 0)));
|
|
39612
39612
|
}
|
|
39613
39613
|
}
|
|
39614
|
-
async
|
|
39614
|
+
async editOrAddRowById(event, id, opts) {
|
|
39615
39615
|
if (id < 0)
|
|
39616
39616
|
return;
|
|
39617
39617
|
if (id >= this.visibleRowCount) {
|
|
@@ -41378,6 +41378,12 @@ class AppAsyncTable {
|
|
|
41378
41378
|
// Add row
|
|
41379
41379
|
return this.addRow(event, undefined /* insertAt: use default */, opts);
|
|
41380
41380
|
}
|
|
41381
|
+
/**
|
|
41382
|
+
* Same as confirmAndUp(), but using the next focused row. Should be call by the action column components
|
|
41383
|
+
* @param event
|
|
41384
|
+
* @param row
|
|
41385
|
+
* @param opts
|
|
41386
|
+
*/
|
|
41381
41387
|
async confirmAndBackward(event, row, opts) {
|
|
41382
41388
|
const focusColumn = opts?.focusColumn ?? this.lastUserColumn;
|
|
41383
41389
|
// Deleting edited row, if empty and not dirty
|
|
@@ -41386,8 +41392,8 @@ class AppAsyncTable {
|
|
|
41386
41392
|
await this.deleteNewRow(event, editingRow);
|
|
41387
41393
|
}
|
|
41388
41394
|
// Wait deletion is done, then edit previous row (by id, because of reloading)
|
|
41389
|
-
await this.waitIdle();
|
|
41390
|
-
await this.
|
|
41395
|
+
await this.waitIdle(opts);
|
|
41396
|
+
await this.editOrAddRowById(event, row.id, { focusColumn });
|
|
41391
41397
|
return true;
|
|
41392
41398
|
}
|
|
41393
41399
|
// Edit row, focusing at the end
|
|
@@ -41407,7 +41413,35 @@ class AppAsyncTable {
|
|
|
41407
41413
|
return false;
|
|
41408
41414
|
}
|
|
41409
41415
|
// Edit next row
|
|
41410
|
-
await this.
|
|
41416
|
+
await this.editOrAddRowById(event, row.id + 1, { focusColumn });
|
|
41417
|
+
return true;
|
|
41418
|
+
}
|
|
41419
|
+
/**
|
|
41420
|
+
* Confirms the current row and moves the focus to the upper row.
|
|
41421
|
+
* Typical usage is inside a <input type="number">, with `(keyup.arrowUp)="confirmAndUp(event, row, {focusColumn: columnName})"`
|
|
41422
|
+
* Same as confirmAndBackward, but on the current row.
|
|
41423
|
+
*
|
|
41424
|
+
*
|
|
41425
|
+
* @param {Event} [event] - The event associated with the confirmation and update action.
|
|
41426
|
+
* @param {AsyncTableElement} [row] - The current row object.
|
|
41427
|
+
* @param {Object} [opts] - Options.
|
|
41428
|
+
* @param {string} [opts.focusColumn] - The column to focus on the upper row; defaults to the current focus column
|
|
41429
|
+
* @return {Promise<boolean>} A promise that resolves to a boolean indicating the success of the navigation.
|
|
41430
|
+
*/
|
|
41431
|
+
async confirmAndUp(event, row, opts) {
|
|
41432
|
+
const focusColumn = opts?.focusColumn ?? this.focusColumn;
|
|
41433
|
+
// Deleting edited row, if empty and not dirty
|
|
41434
|
+
if (this.dataSource.hasSomeEditingRow()) {
|
|
41435
|
+
for (const editingRow of this.dataSource.getEditingRows().filter((row) => row.id === -1 && row.invalid && !row.dirty)) {
|
|
41436
|
+
await this.deleteNewRow(event, editingRow);
|
|
41437
|
+
}
|
|
41438
|
+
// Wait deletion is done, then edit previous row (by id, because of reloading)
|
|
41439
|
+
await this.waitIdle(opts);
|
|
41440
|
+
await this.editOrAddRowById(event, row.id - 1, { focusColumn });
|
|
41441
|
+
return true;
|
|
41442
|
+
}
|
|
41443
|
+
// Edit row, focusing at the end
|
|
41444
|
+
await this.editRow(event, row, { focusColumn });
|
|
41411
41445
|
return true;
|
|
41412
41446
|
}
|
|
41413
41447
|
/**
|
|
@@ -42401,7 +42435,7 @@ class AppAsyncTable {
|
|
|
42401
42435
|
this.registerSubscription(this.sort.sortChange.pipe(filter(() => !this.sort.disabled)).subscribe(() => (this.paginator.pageIndex = 0)));
|
|
42402
42436
|
}
|
|
42403
42437
|
}
|
|
42404
|
-
async
|
|
42438
|
+
async editOrAddRowById(event, id, opts) {
|
|
42405
42439
|
if (id < 0)
|
|
42406
42440
|
return;
|
|
42407
42441
|
if (id >= this.visibleRowCount) {
|