extend pages result
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { DataSourceResponse, UmbPagedData } from '../index.js';
|
||||
import { Diff } from '@umbraco-cms/backoffice/utils';
|
||||
|
||||
export function extendDataSourcePagedResponseData<
|
||||
ExtendedDataType extends IncomingDataType,
|
||||
IncomingDataType extends object = object,
|
||||
MissingPropsType extends object = Omit<Diff<IncomingDataType, ExtendedDataType>, '$type'>,
|
||||
// Maybe this Omit<..., "$ype"> can be removed, but for now it kept showing up as a difference, though its not a difference on the two types.
|
||||
ToType = IncomingDataType & ExtendedDataType
|
||||
>(
|
||||
response: DataSourceResponse<UmbPagedData<IncomingDataType>>,
|
||||
appendData: MissingPropsType
|
||||
): DataSourceResponse<UmbPagedData<ToType>> {
|
||||
if (response.data === undefined) return response as unknown as DataSourceResponse<UmbPagedData<ToType>>;
|
||||
return {
|
||||
...response,
|
||||
data: {
|
||||
...response.data,
|
||||
items: response.data.items.map((x) => {
|
||||
return { ...x, ...appendData } as unknown as ToType;
|
||||
}),
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,5 @@
|
||||
import { DataSourceResponse } from '../index.js';
|
||||
|
||||
type FilterKeys<T, U> = {
|
||||
[K in keyof T]: K extends keyof U ? never : K;
|
||||
};
|
||||
|
||||
type Diff<U, T> = Pick<T, FilterKeys<T, U>[keyof T]>;
|
||||
import { Diff } from '@umbraco-cms/backoffice/utils';
|
||||
|
||||
export function extendDataSourceResponseData<
|
||||
ExtendedDataType extends IncomingDataType,
|
||||
|
||||
@@ -2,6 +2,7 @@ export * from './collection-data-source.interface.js';
|
||||
export * from './copy-data-source.interface.js';
|
||||
export * from './data-source-response.interface.js';
|
||||
export * from './data-source.interface.js';
|
||||
export * from './extend-data-source-paged-response-data.function.js';
|
||||
export * from './extend-data-source-response-data.function.js';
|
||||
export * from './folder-data-source.interface.js';
|
||||
export * from './item-data-source.interface.js';
|
||||
|
||||
5
src/Umbraco.Web.UI.Client/src/shared/utils/diff.type.ts
Normal file
5
src/Umbraco.Web.UI.Client/src/shared/utils/diff.type.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
type FilterKeys<T, U> = {
|
||||
[K in keyof T]: K extends keyof U ? never : K;
|
||||
};
|
||||
|
||||
export type Diff<U, T> = Pick<T, FilterKeys<T, U>[keyof T]>;
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from './diff.type.js';
|
||||
export * from './generate-umbraco-alias.function.js';
|
||||
export * from './increment-string.function.js';
|
||||
export * from './media-helper.service.js';
|
||||
|
||||
Reference in New Issue
Block a user