@bootkit/ng0 0.0.0-alpha.10 → 0.0.0-alpha.12

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/common/index.d.ts CHANGED
@@ -39,7 +39,7 @@ declare function flipPlacement(placement: Placement): "start" | "end" | "top" |
39
39
  declare function formatString(str: string, ...args: any[]): string;
40
40
 
41
41
  /** Base class of all menu items */
42
- interface MenuItemBase<DataType = any> {
42
+ interface MenuItem {
43
43
  type: 'group' | 'text' | 'divider';
44
44
  id?: any;
45
45
  disabled?: boolean;
@@ -47,28 +47,12 @@ interface MenuItemBase<DataType = any> {
47
47
  show?: boolean;
48
48
  claim?: ClaimLike;
49
49
  parent?: MenuItem;
50
- data?: DataType;
51
- }
52
- /** Section Menu Item */
53
- interface GroupMenuItem<DataType = any> extends MenuItemBase<DataType> {
54
- type: 'group';
55
- text: string;
50
+ text?: string;
56
51
  expanded?: boolean;
57
52
  icon?: string;
58
- children: Array<MenuItem<DataType>>;
59
- }
60
- /** Text Menu Item */
61
- interface TextMenuItem<DataType = any> extends MenuItemBase<DataType> {
62
- type: 'text';
63
- text: string;
64
- routerLink?: string[];
65
- icon?: string;
66
- }
67
- /** Divider Menu Item */
68
- interface DividerMenuItem<DataType = any> extends MenuItemBase<DataType> {
69
- type: 'divider';
53
+ children?: MenuItem[];
54
+ routerLink?: string | string[];
70
55
  }
71
- type MenuItem<DataType = any> = TextMenuItem<DataType> | DividerMenuItem<DataType> | GroupMenuItem<DataType>;
72
56
 
73
57
  /**
74
58
  * Converts a value to an Observable.
@@ -81,4 +65,4 @@ type MenuItem<DataType = any> = TextMenuItem<DataType> | DividerMenuItem<DataTyp
81
65
  declare function toObservable<T>(value: T | Observable<T> | Promise<T>): Observable<T>;
82
66
 
83
67
  export { RTL, flipPlacement, formatString, toObservable };
84
- export type { Alignment, ClaimLike, ClaimObject, DividerMenuItem, GroupMenuItem, MenuItem, MenuItemBase, Placement, TextMenuItem };
68
+ export type { Alignment, ClaimLike, ClaimObject, MenuItem, Placement };
package/data/index.d.ts CHANGED
@@ -103,14 +103,14 @@ declare abstract class DataSource<T = any> {
103
103
  * DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.
104
104
  * It is used by AsyncDataSource to load data asynchronously.
105
105
  */
106
- type DataLoaderFunction<T = any> = (request: DataRequest) => Observable<DataResult<T>>;
106
+ type DataLoader<T = any> = (request: DataRequest) => Observable<DataResult<T>>;
107
107
  /**
108
108
  * AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.
109
109
  * It is used to fetch data from a remote source, such as an API.
110
110
  */
111
111
  declare class AsyncDataSource extends DataSource {
112
112
  private readonly loader;
113
- constructor(loader: DataLoaderFunction);
113
+ constructor(loader: DataLoader);
114
114
  load(request: DataRequest): Observable<DataResult<any>>;
115
115
  }
116
116
 
@@ -148,7 +148,7 @@ declare function toDataResult<T = any>(dr: DataRequest): (source: Observable<any
148
148
  * It can be an array of data, a function that returns an observable of data,
149
149
  * or an instance of DataSource.
150
150
  */
151
- type DataSourceLike<T = any> = Array<any> | DataLoaderFunction<T> | DataSource<T> | undefined | null;
151
+ type DataSourceLike<T = any> = Array<any> | DataLoader<T> | DataSource<T> | undefined | null;
152
152
  /**
153
153
  * Converts a data source like an array, function, or DataSource into a DataSource instance.
154
154
  * @param source The data source to convert.
@@ -200,4 +200,4 @@ declare enum StandardFilterOperators {
200
200
  }
201
201
 
202
202
  export { ArrayDataSource, AsyncDataSource, DataRequest, DataResult, DataSource, StandardFilterOperators, convertToDataSource, toDataResult };
203
- export type { DataLoaderFunction, DataRequestFilter, DataRequestPage, DataRequestSort, DataSourceLike };
203
+ export type { DataLoader, DataRequestFilter, DataRequestPage, DataRequestSort, DataSourceLike };
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-data.mjs","sources":["../../../projects/ng0/data/data-request.ts","../../../projects/ng0/data/data-result.ts","../../../projects/ng0/data/data-source.ts","../../../projects/ng0/data/async-data-source.ts","../../../projects/ng0/data/types.ts","../../../projects/ng0/data/array-data-source.ts","../../../projects/ng0/data/data-result-operator.ts","../../../projects/ng0/data/bootkit-ng0-data.ts"],"sourcesContent":["/**\r\n * DataRequest class represents a request for data with pagination, filtering, sorting, and field selection.\r\n * It is used to encapsulate the parameters needed to fetch data from a data source.\r\n * It can be used with various data sources such as HTTP services, in-memory arrays, etc.\r\n * \r\n */\r\nexport class DataRequest {\r\n public page?: DataRequestPage;\r\n public filters?: DataRequestFilter[];\r\n public sort?: DataRequestSort;\r\n public select?: string[];\r\n public computeTotal?: boolean;\r\n\r\n constructor(options?: {\r\n page?: DataRequestPage,\r\n filters?: DataRequestFilter[],\r\n sort?: DataRequestSort,\r\n select?: string[],\r\n computeTotal?: boolean,\r\n }) {\r\n this.page = options?.page;\r\n this.filters = options?.filters;\r\n this.sort = options?.sort;\r\n this.select = options?.select;\r\n this.computeTotal = options?.computeTotal;\r\n }\r\n}\r\n\r\n/**\r\n * Represents a data request page.\r\n */\r\nexport interface DataRequestPage {\r\n /**\r\n * Index of the page.\r\n * If zeroBased is true, the index starts from 0.\r\n */\r\n index: number;\r\n\r\n /**\r\n * Size of the page, i.e., number of items in each page.\r\n */\r\n size: number;\r\n\r\n /**\r\n * Indicates if the index is zero-based.\r\n */\r\n zeroBased: boolean;\r\n}\r\n\r\n/**\r\n * Represents a sorting option in a DataRequest.\r\n * @property field The field to sort by.\r\n * @property asc Whether to sort in ascending order.\r\n */\r\nexport interface DataRequestSort {\r\n field: string;\r\n asc?: boolean\r\n}\r\n\r\n/**\r\n * Represents a filter in a DataRequest.\r\n */\r\nexport interface DataRequestFilter {\r\n /**\r\n * The field to filter by.\r\n * It can be a string representing the property name of the data items.\r\n */\r\n field?: string;\r\n\r\n /**\r\n * The value to filter by.\r\n * It can be a string, number, or any other type depending on the field.\r\n */\r\n value?: string;\r\n\r\n /**\r\n * The operator to use for filtering.\r\n * It can be one of the standard filter operators like Contains, StartsWith, EndsWith, Equals, etc.\r\n */\r\n operator?: string;\r\n\r\n /**\r\n * Indicates if the filter is case-sensitive.\r\n * Default is false.\r\n */\r\n caseSensitive?: boolean;\r\n}\r\n\r\n// export enum DataRequestFilterOperator {\r\n// EQ = 0,\r\n// NEQ = 1,\r\n// LT = 2,\r\n// LTE = 3,\r\n// GT = 4,\r\n// GTE = 5,\r\n// LI = 6,\r\n// SW = 7,\r\n// }\r\n","export class DataResult<T = any> {\r\n constructor(\r\n public readonly data: T[],\r\n public readonly total?: number) {\r\n }\r\n}\r\n","import { Observable, Subject } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { signal } from \"@angular/core\";\r\n\r\n/**\r\n * Abstract base class for data sources.\r\n * This class provides a common interface for loading data from various sources.\r\n */\r\nexport abstract class DataSource<T=any> {\r\n protected loading = signal(false);\r\n\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Indicates whether the data source is currently loading data.\r\n */\r\n public isLoading = this.loading.asReadonly();\r\n\r\n /**\r\n * Loads data from the data source.\r\n * @param request The data request object containing pagination, sorting, and filtering information.\r\n */\r\n abstract load(request: DataRequest): Observable<DataResult>;\r\n}\r\n\r\n","import { catchError, Observable, tap } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\n/**\r\n * DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.\r\n * It is used by AsyncDataSource to load data asynchronously.\r\n */\r\nexport type DataLoaderFunction<T=any> = (request: DataRequest) => Observable<DataResult<T>>;\r\n\r\n\r\n/**\r\n * AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.\r\n * It is used to fetch data from a remote source, such as an API.\r\n */\r\nexport class AsyncDataSource extends DataSource {\r\n constructor(private readonly loader: DataLoaderFunction) {\r\n super();\r\n\r\n if (typeof loader !== 'function') {\r\n throw 'Invalid data loader';\r\n }\r\n }\r\n\r\n load(request: DataRequest) {\r\n this.loading.set(true);\r\n\r\n return this.loader(request).pipe(\r\n catchError(err => {\r\n this.loading.set(false);\r\n throw err;\r\n }),\r\n tap(res => {\r\n this.loading.set(false);\r\n })\r\n )\r\n }\r\n}\r\n","import { ArrayDataSource } from \"./array-data-source\";\r\nimport { AsyncDataSource, DataLoaderFunction } from \"./async-data-source\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\n/**\r\n * DataSourceLike is a type that can be used to represent any data source\r\n * that can be used with the table, autocomplete, dropdown and any component that requires data.\r\n * It can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\nexport type DataSourceLike<T = any> = Array<any> | DataLoaderFunction<T> | DataSource<T> | undefined | null;\r\n\r\n\r\n/**\r\n * Converts a data source like an array, function, or DataSource into a DataSource instance.\r\n * @param source The data source to convert.\r\n * @returns A DataSource instance.\r\n */\r\nexport function convertToDataSource<T>(source: DataSourceLike): DataSource<T> {\r\n if (Array.isArray(source)) {\r\n return new ArrayDataSource(source);\r\n } else if (typeof source == 'function') {\r\n return new AsyncDataSource(source);\r\n } else if (source instanceof DataSource) {\r\n return source;\r\n } else if (source === undefined || source === null) {\r\n return new ArrayDataSource([]);\r\n } else {\r\n throw new Error('Invalid source parameter.');\r\n }\r\n}\r\n\r\n/**\r\n * StandardFilterOperators is an enumeration of standard filter operators\r\n * that can be used in data requests to filter data.\r\n * It includes operators like Contains, StartsWith, EndsWith, and Equals.\r\n */\r\nexport enum StandardFilterOperators {\r\n /**\r\n * A filter that matches items that contain the specified value.\r\n */\r\n Contains = 'contains',\r\n\r\n /**\r\n * A filter that matches items that start with the specified value.\r\n */\r\n StartsWith = 'startsWith',\r\n\r\n /**\r\n * A filter that matches items that end with the specified value.\r\n */\r\n EndsWith = 'endsWith',\r\n\r\n /**\r\n * A filter that matches items that are equal to the specified value.\r\n */\r\n Equals = 'equals',\r\n\r\n /**\r\n * A filter that matches items that are not equal to the specified value.\r\n */\r\n NotEquals = 'notEquals',\r\n\r\n /**\r\n * A filter that matches items that are greater than the specified value.\r\n */\r\n GreaterThan = 'greaterThan',\r\n\r\n /**\r\n * A filter that matches items that are greater than or equal to the specified value.\r\n */\r\n GreaterThanOrEqual = 'greaterThanOrEqual',\r\n\r\n /**\r\n * A filter that matches items that are less than the specified value.\r\n */\r\n LessThan = 'lessThan',\r\n\r\n /**\r\n * A filter that matches items that are less than or equal to the specified value.\r\n */\r\n LessThanOrEqual = 'lessThanOrEqual',\r\n\r\n \r\n}","import { delay, of, Subject, tap } from \"rxjs\";\r\nimport { DataRequest, DataRequestFilter } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\nimport { StandardFilterOperators } from \"./types\";\r\n\r\n/**\r\n * An implementation of DataSource that uses an array as the data source.\r\n * This is useful for static data or when you want to manage the data manually.\r\n */\r\nexport class ArrayDataSource extends DataSource {\r\n private _insertSubject = new Subject<{ items: any[] }>();\r\n private _updateSubject = new Subject<{ item: any, index: number }>();\r\n private _removeSubject = new Subject<{ item: any, index: number }>();\r\n\r\n public readonly inserted = this._insertSubject.asObservable();\r\n public readonly removed = this._removeSubject.asObservable();\r\n public readonly updated = this._updateSubject.asObservable();\r\n\r\n constructor(private items: any[]) {\r\n super();\r\n }\r\n\r\n load(request: DataRequest) {\r\n let items: Array<any>;\r\n\r\n if (request.page) {\r\n let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;\r\n items = this.items.slice(startItemIndex, startItemIndex + request.page.size);\r\n } else {\r\n items = [...this.items];\r\n }\r\n\r\n if (Array.isArray(request.filters) && request.filters.length > 0) {\r\n // Apply filters\r\n\r\n request.filters.forEach(filter => {\r\n let filterFunction = getFilterFunction(filter);\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n let item = items[i];\r\n let value = filter.field ? item[filter.field] : item;\r\n if (!filterFunction(value, filter.value)) {\r\n items.splice(i, 1);\r\n i--; // Adjust index after removal\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (request.sort) {\r\n // Apply sorting\r\n }\r\n\r\n let result = new DataResult(items, this.items.length);\r\n\r\n // this._loading = true;\r\n // return of(result).pipe(\r\n // delay(5000),\r\n // tap(x => this._loading = false)\r\n // );\r\n return of(result);\r\n }\r\n\r\n public remove(item: any) {\r\n let index = this.items!.findIndex(x => x === item);\r\n if (index > -1) {\r\n this.items.splice(index, 1);\r\n this._removeSubject.next({ item, index });\r\n }\r\n }\r\n\r\n public insert(...items: any[]) {\r\n this.items.push(items);\r\n this._insertSubject.next({ items });\r\n }\r\n\r\n // public set(items: any[]) {\r\n // this.items = items;\r\n // // this._removeSubject.next(0);\r\n // }\r\n}\r\n\r\nfunction getFilterFunction(filter: DataRequestFilter): (item: any, filter: any) => boolean {\r\n let operator = filter.operator || StandardFilterOperators.Contains;\r\n let caseSensitive = filter.caseSensitive || false;\r\n\r\n if(filter.value === undefined || filter.value === null) {\r\n return (item: any) => true; // No filter applied\r\n }\r\n\r\n switch (filter.operator) {\r\n case StandardFilterOperators.Contains:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.includes(filter) :\r\n (item: string, filter: string) => item.toLowerCase().includes(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.StartsWith:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.startsWith(filter) :\r\n (item: string, filter: string) => item.toLowerCase().startsWith(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.EndsWith:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.endsWith(filter) :\r\n (item: string, filter: string) => item.toLowerCase().endsWith(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.Equals:\r\n if (typeof filter.value === 'string') {\r\n return caseSensitive ?\r\n (item: string, filter: string) => item === filter :\r\n (item: string, filter: string) => item.toLowerCase() === filter.toLowerCase();\r\n } else {\r\n return (item: any, filter: any) => item === filter.value;\r\n }\r\n\r\n default:\r\n throw new Error(`filter operator: ${operator} is not implemented in ArrayDataSource.`);\r\n }\r\n}","import { Observable } from \"rxjs\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataRequest } from \"./data-request\";\r\n\r\nexport function toDataResult<T=any>(dr: DataRequest) {\r\n return function (source: Observable<any>): Observable<DataResult<T>> {\r\n return new Observable(subscriber => {\r\n source.subscribe({\r\n next(event) {\r\n subscriber.next(new DataResult(event));\r\n },\r\n error(error) {\r\n subscriber.error(error);\r\n },\r\n complete() {\r\n subscriber.complete();\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-data.mjs","sources":["../../../projects/ng0/data/data-request.ts","../../../projects/ng0/data/data-result.ts","../../../projects/ng0/data/data-source.ts","../../../projects/ng0/data/async-data-source.ts","../../../projects/ng0/data/types.ts","../../../projects/ng0/data/array-data-source.ts","../../../projects/ng0/data/data-result-operator.ts","../../../projects/ng0/data/bootkit-ng0-data.ts"],"sourcesContent":["/**\r\n * DataRequest class represents a request for data with pagination, filtering, sorting, and field selection.\r\n * It is used to encapsulate the parameters needed to fetch data from a data source.\r\n * It can be used with various data sources such as HTTP services, in-memory arrays, etc.\r\n * \r\n */\r\nexport class DataRequest {\r\n public page?: DataRequestPage;\r\n public filters?: DataRequestFilter[];\r\n public sort?: DataRequestSort;\r\n public select?: string[];\r\n public computeTotal?: boolean;\r\n\r\n constructor(options?: {\r\n page?: DataRequestPage,\r\n filters?: DataRequestFilter[],\r\n sort?: DataRequestSort,\r\n select?: string[],\r\n computeTotal?: boolean,\r\n }) {\r\n this.page = options?.page;\r\n this.filters = options?.filters;\r\n this.sort = options?.sort;\r\n this.select = options?.select;\r\n this.computeTotal = options?.computeTotal;\r\n }\r\n}\r\n\r\n/**\r\n * Represents a data request page.\r\n */\r\nexport interface DataRequestPage {\r\n /**\r\n * Index of the page.\r\n * If zeroBased is true, the index starts from 0.\r\n */\r\n index: number;\r\n\r\n /**\r\n * Size of the page, i.e., number of items in each page.\r\n */\r\n size: number;\r\n\r\n /**\r\n * Indicates if the index is zero-based.\r\n */\r\n zeroBased: boolean;\r\n}\r\n\r\n/**\r\n * Represents a sorting option in a DataRequest.\r\n * @property field The field to sort by.\r\n * @property asc Whether to sort in ascending order.\r\n */\r\nexport interface DataRequestSort {\r\n field: string;\r\n asc?: boolean\r\n}\r\n\r\n/**\r\n * Represents a filter in a DataRequest.\r\n */\r\nexport interface DataRequestFilter {\r\n /**\r\n * The field to filter by.\r\n * It can be a string representing the property name of the data items.\r\n */\r\n field?: string;\r\n\r\n /**\r\n * The value to filter by.\r\n * It can be a string, number, or any other type depending on the field.\r\n */\r\n value?: string;\r\n\r\n /**\r\n * The operator to use for filtering.\r\n * It can be one of the standard filter operators like Contains, StartsWith, EndsWith, Equals, etc.\r\n */\r\n operator?: string;\r\n\r\n /**\r\n * Indicates if the filter is case-sensitive.\r\n * Default is false.\r\n */\r\n caseSensitive?: boolean;\r\n}\r\n\r\n// export enum DataRequestFilterOperator {\r\n// EQ = 0,\r\n// NEQ = 1,\r\n// LT = 2,\r\n// LTE = 3,\r\n// GT = 4,\r\n// GTE = 5,\r\n// LI = 6,\r\n// SW = 7,\r\n// }\r\n","export class DataResult<T = any> {\r\n constructor(\r\n public readonly data: T[],\r\n public readonly total?: number) {\r\n }\r\n}\r\n","import { Observable, Subject } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { signal } from \"@angular/core\";\r\n\r\n/**\r\n * Abstract base class for data sources.\r\n * This class provides a common interface for loading data from various sources.\r\n */\r\nexport abstract class DataSource<T=any> {\r\n protected loading = signal(false);\r\n\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Indicates whether the data source is currently loading data.\r\n */\r\n public isLoading = this.loading.asReadonly();\r\n\r\n /**\r\n * Loads data from the data source.\r\n * @param request The data request object containing pagination, sorting, and filtering information.\r\n */\r\n abstract load(request: DataRequest): Observable<DataResult>;\r\n}\r\n\r\n","import { catchError, Observable, tap } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\n/**\r\n * DataLoader is a function that takes a DataRequest and returns an Observable of DataResult.\r\n * It is used by AsyncDataSource to load data asynchronously.\r\n */\r\nexport type DataLoader<T=any> = (request: DataRequest) => Observable<DataResult<T>>;\r\n\r\n\r\n/**\r\n * AsyncDataSource is a DataSource that loads data asynchronously using a DataLoader function.\r\n * It is used to fetch data from a remote source, such as an API.\r\n */\r\nexport class AsyncDataSource extends DataSource {\r\n constructor(private readonly loader: DataLoader) {\r\n super();\r\n\r\n if (typeof loader !== 'function') {\r\n throw 'Invalid data loader';\r\n }\r\n }\r\n\r\n load(request: DataRequest) {\r\n this.loading.set(true);\r\n\r\n return this.loader(request).pipe(\r\n catchError(err => {\r\n this.loading.set(false);\r\n throw err;\r\n }),\r\n tap(res => {\r\n this.loading.set(false);\r\n })\r\n )\r\n }\r\n}\r\n","import { ArrayDataSource } from \"./array-data-source\";\r\nimport { AsyncDataSource, DataLoader } from \"./async-data-source\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\n/**\r\n * DataSourceLike is a type that can be used to represent any data source\r\n * that can be used with the table, autocomplete, dropdown and any component that requires data.\r\n * It can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\nexport type DataSourceLike<T = any> = Array<any> | DataLoader<T> | DataSource<T> | undefined | null;\r\n\r\n\r\n/**\r\n * Converts a data source like an array, function, or DataSource into a DataSource instance.\r\n * @param source The data source to convert.\r\n * @returns A DataSource instance.\r\n */\r\nexport function convertToDataSource<T>(source: DataSourceLike): DataSource<T> {\r\n if (Array.isArray(source)) {\r\n return new ArrayDataSource(source);\r\n } else if (typeof source == 'function') {\r\n return new AsyncDataSource(source);\r\n } else if (source instanceof DataSource) {\r\n return source;\r\n } else if (source === undefined || source === null) {\r\n return new ArrayDataSource([]);\r\n } else {\r\n throw new Error('Invalid source parameter.');\r\n }\r\n}\r\n\r\n/**\r\n * StandardFilterOperators is an enumeration of standard filter operators\r\n * that can be used in data requests to filter data.\r\n * It includes operators like Contains, StartsWith, EndsWith, and Equals.\r\n */\r\nexport enum StandardFilterOperators {\r\n /**\r\n * A filter that matches items that contain the specified value.\r\n */\r\n Contains = 'contains',\r\n\r\n /**\r\n * A filter that matches items that start with the specified value.\r\n */\r\n StartsWith = 'startsWith',\r\n\r\n /**\r\n * A filter that matches items that end with the specified value.\r\n */\r\n EndsWith = 'endsWith',\r\n\r\n /**\r\n * A filter that matches items that are equal to the specified value.\r\n */\r\n Equals = 'equals',\r\n\r\n /**\r\n * A filter that matches items that are not equal to the specified value.\r\n */\r\n NotEquals = 'notEquals',\r\n\r\n /**\r\n * A filter that matches items that are greater than the specified value.\r\n */\r\n GreaterThan = 'greaterThan',\r\n\r\n /**\r\n * A filter that matches items that are greater than or equal to the specified value.\r\n */\r\n GreaterThanOrEqual = 'greaterThanOrEqual',\r\n\r\n /**\r\n * A filter that matches items that are less than the specified value.\r\n */\r\n LessThan = 'lessThan',\r\n\r\n /**\r\n * A filter that matches items that are less than or equal to the specified value.\r\n */\r\n LessThanOrEqual = 'lessThanOrEqual',\r\n\r\n \r\n}","import { delay, of, Subject, tap } from \"rxjs\";\r\nimport { DataRequest, DataRequestFilter } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\nimport { StandardFilterOperators } from \"./types\";\r\n\r\n/**\r\n * An implementation of DataSource that uses an array as the data source.\r\n * This is useful for static data or when you want to manage the data manually.\r\n */\r\nexport class ArrayDataSource extends DataSource {\r\n private _insertSubject = new Subject<{ items: any[] }>();\r\n private _updateSubject = new Subject<{ item: any, index: number }>();\r\n private _removeSubject = new Subject<{ item: any, index: number }>();\r\n\r\n public readonly inserted = this._insertSubject.asObservable();\r\n public readonly removed = this._removeSubject.asObservable();\r\n public readonly updated = this._updateSubject.asObservable();\r\n\r\n constructor(private items: any[]) {\r\n super();\r\n }\r\n\r\n load(request: DataRequest) {\r\n let items: Array<any>;\r\n\r\n if (request.page) {\r\n let startItemIndex = (request.page.zeroBased ? request.page.index : request.page.index - 1) * request.page.size;\r\n items = this.items.slice(startItemIndex, startItemIndex + request.page.size);\r\n } else {\r\n items = [...this.items];\r\n }\r\n\r\n if (Array.isArray(request.filters) && request.filters.length > 0) {\r\n // Apply filters\r\n\r\n request.filters.forEach(filter => {\r\n let filterFunction = getFilterFunction(filter);\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n let item = items[i];\r\n let value = filter.field ? item[filter.field] : item;\r\n if (!filterFunction(value, filter.value)) {\r\n items.splice(i, 1);\r\n i--; // Adjust index after removal\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (request.sort) {\r\n // Apply sorting\r\n }\r\n\r\n let result = new DataResult(items, this.items.length);\r\n\r\n // this._loading = true;\r\n // return of(result).pipe(\r\n // delay(5000),\r\n // tap(x => this._loading = false)\r\n // );\r\n return of(result);\r\n }\r\n\r\n public remove(item: any) {\r\n let index = this.items!.findIndex(x => x === item);\r\n if (index > -1) {\r\n this.items.splice(index, 1);\r\n this._removeSubject.next({ item, index });\r\n }\r\n }\r\n\r\n public insert(...items: any[]) {\r\n this.items.push(items);\r\n this._insertSubject.next({ items });\r\n }\r\n\r\n // public set(items: any[]) {\r\n // this.items = items;\r\n // // this._removeSubject.next(0);\r\n // }\r\n}\r\n\r\nfunction getFilterFunction(filter: DataRequestFilter): (item: any, filter: any) => boolean {\r\n let operator = filter.operator || StandardFilterOperators.Contains;\r\n let caseSensitive = filter.caseSensitive || false;\r\n\r\n if(filter.value === undefined || filter.value === null) {\r\n return (item: any) => true; // No filter applied\r\n }\r\n\r\n switch (filter.operator) {\r\n case StandardFilterOperators.Contains:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.includes(filter) :\r\n (item: string, filter: string) => item.toLowerCase().includes(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.StartsWith:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.startsWith(filter) :\r\n (item: string, filter: string) => item.toLowerCase().startsWith(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.EndsWith:\r\n return caseSensitive ?\r\n (item: string, filter: string) => item.endsWith(filter) :\r\n (item: string, filter: string) => item.toLowerCase().endsWith(filter.toLowerCase());\r\n\r\n case StandardFilterOperators.Equals:\r\n if (typeof filter.value === 'string') {\r\n return caseSensitive ?\r\n (item: string, filter: string) => item === filter :\r\n (item: string, filter: string) => item.toLowerCase() === filter.toLowerCase();\r\n } else {\r\n return (item: any, filter: any) => item === filter.value;\r\n }\r\n\r\n default:\r\n throw new Error(`filter operator: ${operator} is not implemented in ArrayDataSource.`);\r\n }\r\n}","import { Observable } from \"rxjs\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataRequest } from \"./data-request\";\r\n\r\nexport function toDataResult<T=any>(dr: DataRequest) {\r\n return function (source: Observable<any>): Observable<DataResult<T>> {\r\n return new Observable(subscriber => {\r\n source.subscribe({\r\n next(event) {\r\n subscriber.next(new DataResult(event));\r\n },\r\n error(error) {\r\n subscriber.error(error);\r\n },\r\n complete() {\r\n subscriber.complete();\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bootkit/ng0",
3
- "version": "0.0.0-alpha.10",
3
+ "version": "0.0.0-alpha.12",
4
4
  "description": "Angular+Bootstrap Component Library",
5
5
  "homepage": "https://bootkitlib.github.io/",
6
6
  "author": "BootKit",
@@ -39,14 +39,14 @@
39
39
  "types": "./common/index.d.ts",
40
40
  "default": "./fesm2022/bootkit-ng0-common.mjs"
41
41
  },
42
- "./date": {
43
- "types": "./date/index.d.ts",
44
- "default": "./fesm2022/bootkit-ng0-date.mjs"
45
- },
46
42
  "./data": {
47
43
  "types": "./data/index.d.ts",
48
44
  "default": "./fesm2022/bootkit-ng0-data.mjs"
49
45
  },
46
+ "./date": {
47
+ "types": "./date/index.d.ts",
48
+ "default": "./fesm2022/bootkit-ng0-date.mjs"
49
+ },
50
50
  "./file": {
51
51
  "types": "./file/index.d.ts",
52
52
  "default": "./fesm2022/bootkit-ng0-file.mjs"
@@ -83,14 +83,14 @@
83
83
  "types": "./components/button/index.d.ts",
84
84
  "default": "./fesm2022/bootkit-ng0-components-button.mjs"
85
85
  },
86
- "./components/card": {
87
- "types": "./components/card/index.d.ts",
88
- "default": "./fesm2022/bootkit-ng0-components-card.mjs"
89
- },
90
86
  "./components/code": {
91
87
  "types": "./components/code/index.d.ts",
92
88
  "default": "./fesm2022/bootkit-ng0-components-code.mjs"
93
89
  },
90
+ "./components/card": {
91
+ "types": "./components/card/index.d.ts",
92
+ "default": "./fesm2022/bootkit-ng0-components-card.mjs"
93
+ },
94
94
  "./components/collapse": {
95
95
  "types": "./components/collapse/index.d.ts",
96
96
  "default": "./fesm2022/bootkit-ng0-components-collapse.mjs"
@@ -127,14 +127,14 @@
127
127
  "types": "./components/popover/index.d.ts",
128
128
  "default": "./fesm2022/bootkit-ng0-components-popover.mjs"
129
129
  },
130
- "./components/sidenav": {
131
- "types": "./components/sidenav/index.d.ts",
132
- "default": "./fesm2022/bootkit-ng0-components-sidenav.mjs"
133
- },
134
130
  "./components/stepper": {
135
131
  "types": "./components/stepper/index.d.ts",
136
132
  "default": "./fesm2022/bootkit-ng0-components-stepper.mjs"
137
133
  },
134
+ "./components/sidenav": {
135
+ "types": "./components/sidenav/index.d.ts",
136
+ "default": "./fesm2022/bootkit-ng0-components-sidenav.mjs"
137
+ },
138
138
  "./components/table": {
139
139
  "types": "./components/table/index.d.ts",
140
140
  "default": "./fesm2022/bootkit-ng0-components-table.mjs"