angular-slickgrid 4.2.3 → 4.2.6

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 CHANGED
@@ -1,182 +1,181 @@
1
- # Angular-Slickgrid
2
-
3
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
- [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)
5
- [![npm version](https://badge.fury.io/js/angular-slickgrid.svg)](//npmjs.com/package/angular-slickgrid)
6
- [![NPM downloads](https://img.shields.io/npm/dy/angular-slickgrid.svg)](https://npmjs.org/package/angular-slickgrid)
7
-
8
- [![Actions Status](https://github.com/ghiscoding/Angular-Slickgrid/workflows/CI%20Build/badge.svg)](https://github.com/ghiscoding/Angular-Slickgrid/actions)
9
- [![Cypress.io](https://img.shields.io/badge/tested%20with-Cypress-04C38E.svg)](https://www.cypress.io/)
10
- [![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/facebook/jest)
11
- [![codecov](https://codecov.io/gh/ghiscoding/Angular-Slickgrid/branch/master/graph/badge.svg)](https://codecov.io/gh/ghiscoding/Angular-Slickgrid)
12
-
13
- ### Brief introduction
14
- One of the best javascript datagrid [SlickGrid](https://github.com/mleibman/SlickGrid) which was originally developed by @mleibman is now available to Angular. I have used a few datagrids and SlickGrid beats most of them in terms of functionalities and performance (it can easily deal with even a million row). We will be using the [6pac/SlickGrid](https://github.com/6pac/SlickGrid/) fork, it is the most active fork since the original author @mleibman stopped working on his original repo. Also worth knowing that I have contributed a lot to the 6pac/SlickGrid fork for the benefit of Angular-Slickgrid... also a reminder, this is a wrapper of a jQuery lib (SlickGrid) and a big portion of the lib (like Editors, Filters and others) are written in jQuery/JavaScript, so just keep that in mind and it also mean that jQuery is a dependency.
15
-
16
- ### License
17
- [MIT License](LICENSE)
18
-
19
- ### NPM Package
20
- [Angular-Slickgrid on NPM](https://www.npmjs.com/package/angular-slickgrid)
21
-
22
- ### Demo page
23
- `Angular-Slickgrid` works with all `Bootstrap` versions, you can see a demo of each one below. There are also 2 new styling Themes, Material & Salesforce which are also available. You can also use different SVG icons, you may want to look at the [Wiki - SVG Icons](https://github.com/ghiscoding/Angular-Slickgrid/wiki/SVG-Icons)
24
- - [Bootstrap 5 demo](https://ghiscoding.github.io/Angular-Slickgrid) / [examples repo](https://github.com/ghiscoding/angular-slickgrid-demos/tree/master/bootstrap5-demo-with-translate)
25
- - [Bootstrap 4 demo](https://ghiscoding.github.io/angular-slickgrid-demos) / [examples repo](https://github.com/ghiscoding/angular-slickgrid-demos/tree/master/bootstrap4-demo-with-translate)
26
-
27
- #### Working Demo
28
- For a complete & working local demo (30+ examples), you can (and should) clone the [Angular-Slickgrid Demos](https://github.com/ghiscoding/angular-slickgrid-demos) repository to get started. That repo is updated frequently and is used to update the GitHub demo page for both the [Bootstrap 5 demo](https://ghiscoding.github.io/Angular-Slickgrid) and [Bootstrap 4 demo](https://ghiscoding.github.io/angular-slickgrid-demos).
29
- ```bash
30
- git clone https://github.com/ghiscoding/angular-slickgrid-demos
31
- cd bootstrap4-demo-with-translate # or any of the 4 demos
32
- npm install
33
- npm start
34
- ```
35
-
36
- ### Like it? :star: it
37
- You like to use **Angular-Slickgrid**? Be sure to upvote :star:, maybe support me with cafeine :coffee: and feel free to contribute. 👷👷‍♀️
38
-
39
- <a href='https://ko-fi.com/ghiscoding' target='_blank'><img height='32' style='border:0px;height:32px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' />
40
-
41
- ## Latest News & Releases
42
- Check out the [Releases](https://github.com/ghiscoding/Angular-Slickgrid/releases) section for all latest News & Releases.
43
-
44
- ## Angular Compatibility
45
- - version `1.x.x` for Angular 4-6
46
- - version `2.x.x` for Angular 7-11
47
- - version `3.x.x` for Angular 12+ and RxJS 7+ ([migration guide to 3.x](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Migration-to-3.x))
48
- - build `target` got bumped to `ES2018` for modern browser **only**
49
- - IE11 is EOL and **no longer supported**, if you still need to support it stay with version 2.x
50
- - uses new [Slickgrid-Universal](https://github.com/ghiscoding/slickgrid-universal) monorepo
51
- - last version is [v3.3.2](https://github.com/ghiscoding/Angular-Slickgrid/releases/tag/v3.3.2) compatible **only** with Slickgrid-Universal [v0.19.2](https://github.com/ghiscoding/slickgrid-universal/releases/tag/v0.19.2)
52
- - Slickgrid-Universal 1.x versions only works with Angular-Slickgrid 4.x
53
- - version `4.x.x` for Angular 13+, RxJS 7+ and **Ivy ONLY** ([migration guide to 4.x](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Migration-to-4.x))
54
- - for Ivy build only (no more UMD bundle & output >= ES2017), IE is EOL and definitely out of the picture (finally).
55
-
56
- For Angular 12+ see the instructions below - [Angular 12 with WebPack 5 - polyfill issue](https://github.com/ghiscoding/Angular-Slickgrid#angular-12-with-webpack-5---how-to-fix-polyfill-error)
57
-
58
- ### ngx-translate Compatibility
59
-
60
- If you are facing any issues with `ngx-translate` library while building your Angular Project. You need to make sure that `@ngx-translate/core` is part of your dependencies, that is also true even when using a single Locale, that is because it is a `peerDependency` of Angular-Slickgrid. The reason is because, we use `@Optional() TranslateService` in the lib and for that to work, we still need it to be installed, but don't worry it should still be removed by the tree shaking process after a running a production build. See their version compatibility table below
61
-
62
- | Angular Version | @ngx-translate/core |
63
- |-----------------|---------------------|
64
- | 13+ (Ivy only) | 14.x+ |
65
- | 10-13 | 13.x+ |
66
- | 8-9 | 12.x+ |
67
- | 7 | 11.x+ |
68
-
69
- ### Build Warnings (Angular 8+)
70
- You might get warnings about SlickGrid while doing a production build, most of them are fine and the best way to fix them, is to simply remove/ignore the warnings, all you have to do is to add a file named `ngcc.config.js` in your project root (same location as the `angular.json` file) with the following content (you can also see this [commit](https://github.com/ghiscoding/angular-slickgrid-demos/commit/1fe8092bcd2e99ede5ab048f4a7ebe6254e4bee0) which fixes the Angular-Slickgrid-Demos prod build):
71
- ```js
72
- module.exports = {
73
- packages: {
74
- 'angular-slickgrid': {
75
- ignorableDeepImportMatchers: [
76
- /assign-deep/,
77
- /slickgrid\//,
78
- /flatpickr/,
79
- /dequal/,
80
- /jquery-ui\//,
81
- ]
82
- },
83
- }
84
- };
85
- ```
86
- You should also add `Angular-Slickgrid` as an allowed CommonJS dependency to your `angular.json` file to silence the warnings.
87
- ```json
88
- "options": {
89
- "allowedCommonJsDependencies": ["angular-slickgrid"]
90
- }
91
- ```
92
-
93
- ### Angular 12 with WebPack 5 - how to fix polyfill error
94
- Since Angular 12 switched to WebPack 5, you might get some new errors and you will need to add some polyfills manually to get the Excel Builder (Excel Export) to work.
95
-
96
- #### The error you might get
97
-
98
- ```text
99
- BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
100
- This is no longer the case. Verify if you need this module and configure a polyfill for it.
101
- ```
102
-
103
- #### Steps to fix it
104
- 1. `npm install stream-browserify`
105
- 2. Add a path mapping in `tsconfig.json`:
106
- ```
107
- {
108
- ...
109
- "compilerOptions": {
110
- "paths": {
111
- "stream": [ "./node_modules/stream-browserify" ]
112
- },
113
- ```
114
- 3. Add `stream` to `allowedCommonJsDependencies` in `angular.json`:
115
- ```
116
- "options": {
117
- "allowedCommonJsDependencies": [
118
- "assign-deep",
119
- "excel-builder-webpacker",
120
- "jquery-ui",
121
- "stream"
122
- ],
123
- ```
124
-
125
- ### Fully Tested with [Jest](https://jestjs.io/) (Unit Tests) - [Cypress](https://www.cypress.io/) (E2E Tests)
126
- Angular-Slickgrid and Slickgrid-Universal both have **100%** Unit Test Coverage, we are talking about +15,000 lines of code (+3,750 unit tests) that are fully tested with [Jest](https://jestjs.io/). On the UI side, all Angular-Slickgrid Examples are tested with [Cypress](https://www.cypress.io/), there are over +500 Cypress E2E tests.
127
-
128
- ## Installation
129
- Refer to the **[Wiki - HOWTO Step by Step](https://github.com/ghiscoding/angular-slickgrid/wiki/HOWTO---Step-by-Step)** and/or clone the [Angular-Slickgrid Demos](https://github.com/ghiscoding/angular-slickgrid-demos) repository. Please don't open any issue unless you have followed these steps (from the Wiki), and if any of the steps are incorrect or confusing, then please let me know.
130
-
131
- **NOTE:** if you have any question, please consider asking installation and/or general questions on [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=slickgrid)
132
-
133
- #### How to load data with `HttpClient`?
134
- You might notice that all demos are coded with mocked dataset in each of the examples, that is mainly for demo purposes, but you might be wondering how to connect this with an `HttpClient`? Easy... just replace the mocked data, assigned to the `dataset` property, by your `HttpClient` call it and that's it. The `dataset` property can be changed or refreshed at any time, which is why you can use local data and/or connect it to a `Promise` or an `Observable` with `HttpClient` (internally it's just a SETTER that refreshes the grid). See [Example 24](https://ghiscoding.github.io/Angular-Slickgrid/#/gridtabs) for a demo showing how to load a JSON file with `HttpClient`.
135
-
136
- ## Wiki / Documentation
137
- The Wiki is where all the documentation and instructions will go, so please consult the [Angular-Slickgrid - Wiki](https://github.com/ghiscoding/Angular-Slickgrid/wiki) before opening any issues. The [Wiki - HOWTO](https://github.com/ghiscoding/Angular-Slickgrid/wiki/HOWTO---Step-by-Step) is a great place to start with. You can also take a look at the [Demo page](https://ghiscoding.github.io/Angular-Slickgrid), it includes sample for most of the features and it keeps growing (so you might want to consult it whenever a new version comes out).
138
-
139
- ## Main features
140
- You can see some screenshots below and the instructions down below and if that is not enough for you to decide, head over to the [Wiki - Main Features](https://github.com/ghiscoding/Angular-Slickgrid/wiki).
141
-
142
- ## Missing features
143
- What if `Angular-Slickgrid` is missing feature(s) compare to the original core library [6pac/SlickGrid](https://github.com/6pac/SlickGrid/)?
144
-
145
- Fear not, and just simply reference the `SlickGrid` and `DataView` objects, just like in the core lib, those are exposed through Event Emitters. For more info continue reading on [Wiki - SlickGrid & DataView objects](/ghiscoding/Angular-Slickgrid/wiki/SlickGrid-&-DataView-Objects) and [Wiki - Grid & DataView Events](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Grid-&-DataView-Events)
146
-
147
-
148
- ## Screenshots
149
-
150
- Screenshots from the demo app with the `Bootstrap` theme.
151
-
152
- _Note that the styling changed a bit, the best is to simply head over to the [Live Demo](https://ghiscoding.github.io/Angular-Slickgrid) page._
153
-
154
- ### Slickgrid example with Formatters (last column shown is a custom Formatter)
155
-
156
- #### _You can also see the Grid Menu opened (aka hambuger menu)_
157
-
158
- ![Default Slickgrid Example](/screenshots/formatters.png)
159
-
160
- ### Filters and Multi-Column Sort
161
-
162
- ![Filter and Sort](/screenshots/filter_and_sort.png)
163
-
164
- ### Inline Editing
165
-
166
- ![Editors](/screenshots/editors.png)
167
-
168
- ### Pinned (aka frozen) Columns/Rows
169
-
170
- ![Pinned Columns/Rows](/screenshots/frozen.png)
171
-
172
- ### Draggable Grouping & Aggregators
173
-
174
- ![Draggable Grouping](/screenshots/draggable-grouping.png)
175
-
176
- ### Slickgrid Example with Server Side (Filter/Sort/Pagination)
177
- #### Comes with OData & GraphQL support (you can implement custom ones too)
178
-
179
- ![Slickgrid Server Side](/screenshots/pagination.png)
180
-
181
- ### Composite Editor Modal Windows
182
- ![Composite Editor Modal](/screenshots/composite-editor.png)
1
+ # Angular-Slickgrid
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)
5
+ [![npm version](https://badge.fury.io/js/angular-slickgrid.svg)](//npmjs.com/package/angular-slickgrid)
6
+ [![NPM downloads](https://img.shields.io/npm/dy/angular-slickgrid.svg)](https://npmjs.org/package/angular-slickgrid)
7
+
8
+ [![Actions Status](https://github.com/ghiscoding/Angular-Slickgrid/workflows/CI%20Build/badge.svg)](https://github.com/ghiscoding/Angular-Slickgrid/actions)
9
+ [![Cypress.io](https://img.shields.io/badge/tested%20with-Cypress-04C38E.svg)](https://www.cypress.io/)
10
+ [![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/facebook/jest)
11
+ [![codecov](https://codecov.io/gh/ghiscoding/Angular-Slickgrid/branch/master/graph/badge.svg)](https://codecov.io/gh/ghiscoding/Angular-Slickgrid)
12
+
13
+ ### Brief introduction
14
+ One of the best javascript datagrid [SlickGrid](https://github.com/mleibman/SlickGrid) which was originally developed by @mleibman is now available to Angular. I have used a few datagrids and SlickGrid beats most of them in terms of functionalities and performance (it can easily deal with even a million row). We will be using the [6pac/SlickGrid](https://github.com/6pac/SlickGrid/) fork, it is the most active fork since the original author @mleibman stopped working on his original repo. Also worth knowing that I have contributed a lot to the 6pac/SlickGrid fork for the benefit of Angular-Slickgrid... also a reminder, this is a wrapper of a jQuery lib (SlickGrid) and a big portion of the lib (like Editors, Filters and others) are written in jQuery/JavaScript, so just keep that in mind and it also mean that jQuery is a dependency.
15
+
16
+ ### License
17
+ [MIT License](LICENSE)
18
+
19
+ ## Installation
20
+ Refer to the **[Wiki - HOWTO Step by Step](https://github.com/ghiscoding/angular-slickgrid/wiki/HOWTO---Step-by-Step)** and/or clone the [Angular-Slickgrid Demos](https://github.com/ghiscoding/angular-slickgrid-demos) repository. Please consult all Wikis before opening new issues, also consider asking installation and/or general questions on [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=slickgrid) unless you think there's a bug with the library.
21
+
22
+ ```sh
23
+ npm install angular-slickgrid
24
+ ```
25
+
26
+ ### Demo page
27
+ `Angular-Slickgrid` works with all `Bootstrap` versions, you can see a demo of each one below. There are also 2 new styling Themes, Material & Salesforce which are also available. You can also use different SVG icons, you may want to look at the [Wiki - SVG Icons](https://github.com/ghiscoding/Angular-Slickgrid/wiki/SVG-Icons)
28
+ - [Bootstrap 5 demo](https://ghiscoding.github.io/Angular-Slickgrid) / [examples repo](https://github.com/ghiscoding/angular-slickgrid-demos/tree/master/bootstrap5-demo-with-translate)
29
+ - [Bootstrap 4 demo](https://ghiscoding.github.io/angular-slickgrid-demos) / [examples repo](https://github.com/ghiscoding/angular-slickgrid-demos/tree/master/bootstrap4-demo-with-translate)
30
+
31
+ #### Working Demo
32
+ For a complete & working local demo (30+ examples), you can (and should) clone the [Angular-Slickgrid Demos](https://github.com/ghiscoding/angular-slickgrid-demos) repository to get started. That repo is updated frequently and is used to update the GitHub demo page for both the [Bootstrap 5 demo](https://ghiscoding.github.io/Angular-Slickgrid) and [Bootstrap 4 demo](https://ghiscoding.github.io/angular-slickgrid-demos).
33
+ ```bash
34
+ git clone https://github.com/ghiscoding/angular-slickgrid-demos
35
+ cd bootstrap4-demo-with-translate # or any of the 4 demos
36
+ npm install
37
+ npm start
38
+ ```
39
+
40
+ ### Like it? :star: it
41
+ You like to use **Angular-Slickgrid**? Be sure to upvote :star:, maybe support me with cafeine :coffee: and feel free to contribute. 👷👷‍♀️
42
+
43
+ <a href='https://ko-fi.com/ghiscoding' target='_blank'><img height='32' style='border:0px;height:32px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' />
44
+
45
+ ## Latest News & Releases
46
+ Check out the [Releases](https://github.com/ghiscoding/Angular-Slickgrid/releases) section for all latest News & Releases.
47
+
48
+ ## Angular Compatibility
49
+ - version `1.x.x` for Angular 4-6
50
+ - version `2.x.x` for Angular 7-11
51
+ - version `3.x.x` for Angular 12+ and RxJS 7+ ([migration guide to 3.x](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Migration-to-3.x))
52
+ - build `target` got bumped to `ES2018` for modern browser **only**
53
+ - IE11 is EOL and **no longer supported**, if you still need to support it stay with version 2.x
54
+ - uses new [Slickgrid-Universal](https://github.com/ghiscoding/slickgrid-universal) monorepo
55
+ - last version is [v3.3.2](https://github.com/ghiscoding/Angular-Slickgrid/releases/tag/v3.3.2) compatible **only** with Slickgrid-Universal [v0.19.2](https://github.com/ghiscoding/slickgrid-universal/releases/tag/v0.19.2)
56
+ - Slickgrid-Universal 1.x versions only works with Angular-Slickgrid 4.x
57
+ - version `4.x.x` for Angular 13+, RxJS 7+ and **Ivy ONLY** ([migration guide to 4.x](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Migration-to-4.x))
58
+ - for Ivy build only (no more UMD bundle & output >= ES2017), IE is EOL and definitely out of the picture (finally).
59
+
60
+ For Angular 12+ see the instructions below - [Angular 12 with WebPack 5 - polyfill issue](https://github.com/ghiscoding/Angular-Slickgrid#angular-12-with-webpack-5---how-to-fix-polyfill-error)
61
+
62
+ ### ngx-translate Compatibility
63
+
64
+ If you are facing any issues with `ngx-translate` library while building your Angular Project. You need to make sure that `@ngx-translate/core` is part of your dependencies, that is also true even when using a single Locale, that is because it is a `peerDependency` of Angular-Slickgrid. The reason is because, we use `@Optional() TranslateService` in the lib and for that to work, we still need it to be installed, but don't worry it should still be removed by the tree shaking process after a running a production build. See their version compatibility table below
65
+
66
+ | Angular Version | @ngx-translate/core |
67
+ |-----------------|---------------------|
68
+ | 13+ (Ivy only) | 14.x+ |
69
+ | 10-13 | 13.x+ |
70
+ | 8-9 | 12.x+ |
71
+ | 7 | 11.x+ |
72
+
73
+ ### Build Warnings (Angular 8+)
74
+ You might get warnings about SlickGrid while doing a production build, most of them are fine and the best way to fix them, is to simply remove/ignore the warnings, all you have to do is to add a file named `ngcc.config.js` in your project root (same location as the `angular.json` file) with the following content (you can also see this [commit](https://github.com/ghiscoding/angular-slickgrid-demos/commit/1fe8092bcd2e99ede5ab048f4a7ebe6254e4bee0) which fixes the Angular-Slickgrid-Demos prod build):
75
+ ```js
76
+ module.exports = {
77
+ packages: {
78
+ 'angular-slickgrid': {
79
+ ignorableDeepImportMatchers: [
80
+ /assign-deep/,
81
+ /slickgrid\//,
82
+ /flatpickr/,
83
+ /dequal/,
84
+ /jquery-ui\//,
85
+ ]
86
+ },
87
+ }
88
+ };
89
+ ```
90
+ You should also add `Angular-Slickgrid` as an allowed CommonJS dependency to your `angular.json` file to silence the warnings.
91
+ ```json
92
+ "options": {
93
+ "allowedCommonJsDependencies": ["angular-slickgrid"]
94
+ }
95
+ ```
96
+
97
+ ### Angular 12 with WebPack 5 - how to fix polyfill error
98
+ Since Angular 12 switched to WebPack 5, you might get some new errors and you will need to add some polyfills manually to get the Excel Builder (Excel Export) to work.
99
+
100
+ #### The error you might get
101
+
102
+ ```text
103
+ BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
104
+ This is no longer the case. Verify if you need this module and configure a polyfill for it.
105
+ ```
106
+
107
+ #### Steps to fix it
108
+ 1. `npm install stream-browserify`
109
+ 2. Add a path mapping in `tsconfig.json`:
110
+ ```
111
+ {
112
+ ...
113
+ "compilerOptions": {
114
+ "paths": {
115
+ "stream": [ "./node_modules/stream-browserify" ]
116
+ },
117
+ ```
118
+ 3. Add `stream` to `allowedCommonJsDependencies` in `angular.json`:
119
+ ```
120
+ "options": {
121
+ "allowedCommonJsDependencies": [
122
+ "assign-deep",
123
+ "excel-builder-webpacker",
124
+ "jquery-ui",
125
+ "stream"
126
+ ],
127
+ ```
128
+
129
+ ### Fully Tested with [Jest](https://jestjs.io/) (Unit Tests) - [Cypress](https://www.cypress.io/) (E2E Tests)
130
+ Angular-Slickgrid and Slickgrid-Universal both have **100%** Unit Test Coverage, we are talking about +15,000 lines of code (+3,750 unit tests) that are fully tested with [Jest](https://jestjs.io/). On the UI side, all Angular-Slickgrid Examples are tested with [Cypress](https://www.cypress.io/), there are over +500 Cypress E2E tests.
131
+
132
+ #### How to load data with `HttpClient`?
133
+ You might notice that all demos are coded with mocked dataset in each of the examples, that is mainly for demo purposes, but you might be wondering how to connect this with an `HttpClient`? Easy... just replace the mocked data, assigned to the `dataset` property, by your `HttpClient` call it and that's it. The `dataset` property can be changed or refreshed at any time, which is why you can use local data and/or connect it to a `Promise` or an `Observable` with `HttpClient` (internally it's just a SETTER that refreshes the grid). See [Example 24](https://ghiscoding.github.io/Angular-Slickgrid/#/gridtabs) for a demo showing how to load a JSON file with `HttpClient`.
134
+
135
+ ## Wiki / Documentation
136
+ The Wiki is where all the documentation and instructions will go, so please consult the [Angular-Slickgrid - Wiki](https://github.com/ghiscoding/Angular-Slickgrid/wiki) before opening any issues. The [Wiki - HOWTO](https://github.com/ghiscoding/Angular-Slickgrid/wiki/HOWTO---Step-by-Step) is a great place to start with. You can also take a look at the [Demo page](https://ghiscoding.github.io/Angular-Slickgrid), it includes sample for most of the features and it keeps growing (so you might want to consult it whenever a new version comes out).
137
+
138
+ ## Main features
139
+ You can see some screenshots below and the instructions down below and if that is not enough for you to decide, head over to the [Wiki - Main Features](https://github.com/ghiscoding/Angular-Slickgrid/wiki).
140
+
141
+ ## Missing features
142
+ What if `Angular-Slickgrid` is missing feature(s) compare to the original core library [6pac/SlickGrid](https://github.com/6pac/SlickGrid/)?
143
+
144
+ Fear not, you can simply reference the `SlickGrid` and `DataView` objects, just like in the core lib (they are exposed through Custom Events). For more info continue reading on [Wiki - SlickGrid & DataView objects](/ghiscoding/Angular-Slickgrid/wiki/SlickGrid-&-DataView-Objects) and [Wiki - Grid & DataView Events](https://github.com/ghiscoding/Angular-Slickgrid/wiki/Grid-&-DataView-Events)
145
+
146
+
147
+ ## Screenshots
148
+
149
+ Screenshots from the demo app with the `Bootstrap` theme.
150
+
151
+ _Note that the styling changed a bit, the best is to simply head over to the [Live Demo](https://ghiscoding.github.io/Angular-Slickgrid) page._
152
+
153
+ ### Slickgrid example with Formatters (last column shown is a custom Formatter)
154
+
155
+ #### _You can also see the Grid Menu opened (aka hambuger menu)_
156
+
157
+ ![Default Slickgrid Example](/screenshots/formatters.png)
158
+
159
+ ### Filters and Multi-Column Sort
160
+
161
+ ![Filter and Sort](/screenshots/filter_and_sort.png)
162
+
163
+ ### Inline Editing
164
+
165
+ ![Editors](/screenshots/editors.png)
166
+
167
+ ### Pinned (aka frozen) Columns/Rows
168
+
169
+ ![Pinned Columns/Rows](/screenshots/frozen.png)
170
+
171
+ ### Draggable Grouping & Aggregators
172
+
173
+ ![Draggable Grouping](/screenshots/draggable-grouping.png)
174
+
175
+ ### Slickgrid Example with Server Side (Filter/Sort/Pagination)
176
+ #### Comes with OData & GraphQL support (you can implement custom ones too)
177
+
178
+ ![Slickgrid Server Side](/screenshots/pagination.png)
179
+
180
+ ### Composite Editor Modal Windows
181
+ ![Composite Editor Modal](/screenshots/composite-editor.png)
@@ -1127,14 +1127,14 @@ export class AngularSlickgridComponent {
1127
1127
  }
1128
1128
  }
1129
1129
  }
1130
- AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: i1.AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: i2.ContainerService }, { token: i0.ElementRef }, { token: i3.TranslateService, optional: true }, { token: i4.TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
1131
- AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
1130
+ AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: i1.AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: i2.ContainerService }, { token: i0.ElementRef }, { token: i3.TranslateService, optional: true }, { token: i4.TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
1131
+ AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
1132
1132
  // make everything transient (non-singleton)
1133
1133
  AngularUtilService,
1134
1134
  ApplicationRef,
1135
1135
  TranslaterService,
1136
1136
  ], ngImport: i0, template: "<div id=\"slickGridContainer-{{gridId}}\" class=\"gridPane\">\r\n <div attr.id='{{gridId}}' class=\"slickgrid-container\" style=\"width: 100%\">\r\n </div>\r\n</div>" });
1137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
1137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
1138
1138
  type: Component,
1139
1139
  args: [{ selector: 'angular-slickgrid', providers: [
1140
1140
  // make everything transient (non-singleton)
@@ -20,12 +20,12 @@ export class AngularSlickgridModule {
20
20
  };
21
21
  }
22
22
  }
23
- AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
23
+ AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
+ AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
25
25
  TranslateModule], exports: [AngularSlickgridComponent] });
26
- AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
26
+ AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
27
27
  TranslateModule] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
31
  imports: [
@@ -38,9 +38,9 @@ export class AngularUtilService {
38
38
  return componentOutput;
39
39
  }
40
40
  }
41
- AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
42
- AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, decorators: [{
41
+ AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
42
+ AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, decorators: [{
44
44
  type: Injectable
45
45
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
46
46
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhclV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9zZXJ2aWNlcy9hbmd1bGFyVXRpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBNkQsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUdoSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsbUJBQTZDLEVBQzdDLE1BQXNCLEVBQ3RCLFFBQWtCO1FBRmxCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEI7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN4QixDQUFDO0lBRUwsdUdBQXVHO0lBQ3ZHLHNCQUFzQixDQUFDLFNBQWM7UUFDbkMsa0RBQWtEO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDMUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekIsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxpQ0FBaUM7UUFDakMsSUFBSSxPQUFPLENBQUM7UUFDWixNQUFNLE9BQU8sR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQztRQUNoRSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztTQUMvQztRQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQXNCLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsdUdBQXVHO0lBQ3ZHLGlDQUFpQyxDQUFDLFNBQWMsRUFBRSxhQUFxQyxFQUFFLGtCQUFrQixHQUFHLEtBQUs7UUFDakgsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9ELG1EQUFtRDtRQUNuRCxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFO1lBQzlDLElBQUksa0JBQWtCLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRTtnQkFDakQsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDOUI7WUFDRCxhQUFhLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1NBQ3hIO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs7K0dBMUNVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IH0gZnJvbSAnLi4vbW9kZWxzL2FuZ3VsYXJDb21wb25lbnRPdXRwdXQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclV0aWxTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29tcEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7IH1cclxuXHJcbiAgLy8gcmVmIGh0dHBzOi8vaGFja2Vybm9vbi5jb20vYW5ndWxhci1wcm8tdGlwLWhvdy10by1keW5hbWljYWxseS1jcmVhdGUtY29tcG9uZW50cy1pbi1ib2R5LWJhMjAwY2MyODllNlxyXG4gIGNyZWF0ZUFuZ3VsYXJDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IHtcclxuICAgIC8vIENyZWF0ZSBhIGNvbXBvbmVudCByZWZlcmVuY2UgZnJvbSB0aGUgY29tcG9uZW50XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcclxuICAgICAgLmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuXHJcbiAgICAvLyBBdHRhY2ggY29tcG9uZW50IHRvIHRoZSBhcHBSZWYgc28gdGhhdCBpdCdzIGluc2lkZSB0aGUgbmcgY29tcG9uZW50IHRyZWVcclxuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAvLyBHZXQgRE9NIGVsZW1lbnQgZnJvbSBjb21wb25lbnRcclxuICAgIGxldCBkb21FbGVtO1xyXG4gICAgY29uc3Qgdmlld1JlZiA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pO1xyXG4gICAgaWYgKHZpZXdSZWYgJiYgQXJyYXkuaXNBcnJheSh2aWV3UmVmLnJvb3ROb2RlcykgJiYgdmlld1JlZi5yb290Tm9kZXNbMF0pIHtcclxuICAgICAgZG9tRWxlbSA9IHZpZXdSZWYucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGNvbXBvbmVudFJlZiwgZG9tRWxlbWVudDogZG9tRWxlbSBhcyBIVE1MRWxlbWVudCB9O1xyXG4gIH1cclxuXHJcbiAgLy8gcmVmIGh0dHBzOi8vaGFja2Vybm9vbi5jb20vYW5ndWxhci1wcm8tdGlwLWhvdy10by1keW5hbWljYWxseS1jcmVhdGUtY29tcG9uZW50cy1pbi1ib2R5LWJhMjAwY2MyODllNlxyXG4gIGNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbShjb21wb25lbnQ6IGFueSwgdGFyZ2V0RWxlbWVudD86IEhUTUxFbGVtZW50IHwgRWxlbWVudCwgY2xlYXJUYXJnZXRDb250ZW50ID0gZmFsc2UpOiBBbmd1bGFyQ29tcG9uZW50T3V0cHV0IHtcclxuICAgIGNvbnN0IGNvbXBvbmVudE91dHB1dCA9IHRoaXMuY3JlYXRlQW5ndWxhckNvbXBvbmVudChjb21wb25lbnQpO1xyXG5cclxuICAgIC8vIEFwcGVuZCBET00gZWxlbWVudCB0byB0aGUgSFRNTCBlbGVtZW50IHNwZWNpZmllZFxyXG4gICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5hcHBlbmRDaGlsZCkge1xyXG4gICAgICBpZiAoY2xlYXJUYXJnZXRDb250ZW50ICYmIHRhcmdldEVsZW1lbnQuaW5uZXJIVE1MKSB7XHJcbiAgICAgICAgdGFyZ2V0RWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB0YXJnZXRFbGVtZW50LmFwcGVuZENoaWxkKGNvbXBvbmVudE91dHB1dC5kb21FbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29tcG9uZW50T3V0cHV0LmRvbUVsZW1lbnQpOyAvLyB3aGVuIG5vIHRhcmdldCBwcm92aWRlZCwgd2UnbGwgc2ltcGx5IGFkZCBpdCB0byB0aGUgSFRNTCBCb2R5XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbXBvbmVudE91dHB1dDtcclxuICB9XHJcbn1cclxuIl19
@@ -95,9 +95,9 @@ export class BsDropDownService {
95
95
  });
96
96
  }
97
97
  }
98
- BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, deps: [{ token: i1.AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
99
- BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, decorators: [{
98
+ BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, deps: [{ token: i1.AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
99
+ BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, decorators: [{
101
101
  type: Injectable
102
102
  }], ctorParameters: function () { return [{ type: i1.AngularUtilService }]; } });
103
103
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnNEcm9wZG93bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL3NlcnZpY2VzL2JzRHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUEwQjNDLDRCQUE0QjtBQUU1QixNQUFNLE9BQU8saUJBQWlCO0lBSTVCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUksQ0FBQztJQUUvRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRTtZQUMvRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQXFDO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFB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QUFPLENBQUMsRUFBRTtnQ0FDViw2RkFBNkY7NkJBQzlGOzRCQUVELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7NEJBRTFFLG9DQUFvQzs0QkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDOzRCQUVyRCx5QkFBeUI7NEJBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzs0QkFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoQixDQUFDLENBQUMsQ0FBQztxQkFDSjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs4R0EvR1UsaUJBQWlCO2tIQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJVdGlsU2VydmljZSB9IGZyb20gJy4vYW5ndWxhclV0aWwuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgRHJvcERvd25TZXJ2aWNlUGFyYW1zIHtcclxuICAvKiogdGhlIGN1c3RvbSBhY3Rpb24gZm9ybWF0dGVyIGNvbXBvbmVudCB0aGF0IGNvbnRhaW5zIHRoZSBkcm9wZG93biAqL1xyXG4gIGNvbXBvbmVudDogYW55O1xyXG5cclxuICAvKiogaGVscCB0byBnZXQgdGhlIGRhdGEgY29udGV4dCAqL1xyXG4gIGFyZ3M6IGFueTtcclxuXHJcbiAgLyoqIHBhcmVudCBjb250YWluZXIgKi9cclxuICBwYXJlbnQ6IGFueTtcclxuXHJcbiAgLyoqIE9mZnNldCBib3R0b20gd2hlbiB1c2luZyBhIERyb3AgVXAsIGlmIHdlIG5lZWQgdG8gcmVwb3NpdGlvbiB0aGUgZHJvcGRvd24gY29tcG9uZW50ICovXHJcbiAgb2Zmc2V0RHJvcHVwQm90dG9tPzogbnVtYmVyO1xyXG5cclxuICAvKiogT2Zmc2V0IGxlZnQgaWYgd2UgbmVlZCB0byByZXBvc2l0aW9uIHRoZSBkcm9wZG93biBjb21wb25lbnQgKi9cclxuICBvZmZzZXRMZWZ0PzogbnVtYmVyO1xyXG5cclxuICAvKiogT2Zmc2V0IHRvcCBpZiB3ZSBuZWVkIHRvIHJlcG9zaXRpb24gdGhlIGRyb3Bkb3duIGNvbXBvbmVudCAqL1xyXG4gIG9mZnNldFRvcD86IG51bWJlcjtcclxufVxyXG5cclxuLy8gdXNpbmcgZXh0ZXJuYWwgbm9uLXR5cGVkIGpzIGxpYnJhcmllc1xyXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcclxuXHJcbi8vIEJvb3N0cmFwIGRyb3Bkb3duIHNlcnZpY2VcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQnNEcm9wRG93blNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2RvbUNvbnRhaW5lckVsZW1lbnQ6IGFueTtcclxuICBwcml2YXRlIF9kb21FbGVtZW50OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhclV0aWxTZXJ2aWNlOiBBbmd1bGFyVXRpbFNlcnZpY2UpIHsgfVxyXG5cclxuICBnZXQgZG9tRWxlbWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kb21FbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvbUNvbnRhaW5lckVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZG9tQ29udGFpbmVyRWxlbWVudDtcclxuICB9XHJcblxyXG4gIGdldCBncmlkVmlld3BvcnQoKSB7XHJcbiAgICByZXR1cm4gJCgnLnNsaWNrLXZpZXdwb3J0Jyk7XHJcbiAgfVxyXG5cclxuICBkaXNwb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuX2RvbUVsZW1lbnQgJiYgdGhpcy5fZG9tRWxlbWVudC5yZW1vdmUpIHtcclxuICAgICAgdGhpcy5fZG9tRWxlbWVudC5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3BDb250YWluZXJTaG93KCkge1xyXG4gICAgaWYgKHRoaXMuX2RvbUNvbnRhaW5lckVsZW1lbnQgJiYgdGhpcy5fZG9tQ29udGFpbmVyRWxlbWVudC5zaG93KSB7XHJcbiAgICAgIHRoaXMuX2RvbUNvbnRhaW5lckVsZW1lbnQuc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKGRyb3Bkb3duUGFyYW1zOiBEcm9wRG93blNlcnZpY2VQYXJhbXMpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNvbXBvbmVudCwgYXJncywgcGFyZW50LCBvZmZzZXRUb3AsIG9mZnNldExlZnQsIG9mZnNldERyb3B1cEJvdHRvbSB9ID0gZHJvcGRvd25QYXJhbXM7XHJcblxyXG4gICAgICBjb25zdCBjZWxsID0gYXJncy5jZWxsO1xyXG4gICAgICBjb25zdCByb3cgPSBhcmdzLnJvdztcclxuXHJcbiAgICAgIHRoaXMuX2RvbUNvbnRhaW5lckVsZW1lbnQgPSAkKGAjbXlEcm9wLXIke3Jvd30tYyR7Y2VsbH1gKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9kb21Db250YWluZXJFbGVtZW50KSB7XHJcbiAgICAgICAgLy8gaGlkZSB0aGUgZHJvcGRvd24gd2UgY3JlYXRlZCBhcyBhIGZvcm1hdHRlciBDb21wb25lbnQsIHdlJ2xsIHJlZGlzcGxheSBpdCBsYXRlclxyXG4gICAgICAgIGNvbnN0IGNlbGxQb3MgPSB0aGlzLl9kb21Db250YWluZXJFbGVtZW50Lm9mZnNldCgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb21wb25lbnRPdXRwdXQgPSB0aGlzLmFuZ3VsYXJVdGlsU2VydmljZS5jcmVhdGVBbmd1bGFyQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnRPdXRwdXQgJiYgY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZiAmJiBjb21wb25lbnRPdXRwdXQuY29tcG9uZW50UmVmLmluc3RhbmNlO1xyXG5cclxuICAgICAgICBpZiAoY29tcG9uZW50SW5zdGFuY2UpIHtcclxuICAgICAgICAgIGNvbnN0IG15RHJvcElkID0gY29tcG9uZW50SW5zdGFuY2UuZHJvcGRvd25JZCB8fCAnbXlEcm9wJztcclxuICAgICAgICAgIGNvbnN0IGRyb3BEb3duVG9nZ2xlSWQgPSBjb21wb25lbnRJbnN0YW5jZS5kcm9wRG93blRvZ2dsZUlkIHx8ICdkcm9wZG93bk1lbnUxJztcclxuICAgICAgICAgIHRoaXMuX2RvbUVsZW1lbnQgPSAkKGAjJHtteURyb3BJZH1gKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5fZG9tRWxlbWVudCkge1xyXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFueSBwcmV2aW91cyBBY3Rpb24gZHJvcGRvd24gZWxlbWVudHMsIHRvIGF2b2lkIGhhdmluZyBtdWx0aXBsZSBlbGVtZW50IG9mIHRoZSBzYW1lIG9uIHRvcCBvZiBlYWNoIG90aGVyXHJcbiAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gYXNzaWduIHRoZSByb3cgZGF0YSB0byB0aGUgZHJvcGRvd24gY29tcG9uZW50IGluc3RhbmNlXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50SW5zdGFuY2UsIHsgcGFyZW50LCByb3c6IGFyZ3Mucm93LCBkYXRhQ29udGV4dDogYXJncy5ncmlkLmdldERhdGFJdGVtKGFyZ3Mucm93KSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIHVzZSBhIGRlbGF5IHRvIG1ha2Ugc3VyZSBBbmd1bGFyIHJhbiBhdCBsZWFzdCBhIGZ1bGwgY3ljbGUgYW5kIG1ha2Ugc3VyZSBpdCBmaW5pc2hlZCByZW5kZXJpbmcgdGhlIENvbXBvbmVudCBiZWZvcmUgdXNpbmcgaXRcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gY3JlYXRlIGEgbmV3IGRyb3Bkb3duIGVsZW1lbnRcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50ID0gJChjb21wb25lbnRPdXRwdXQuZG9tRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wUG9zID0gKGNlbGxQb3MgJiYgY2VsbFBvcy50b3AgfHwgMCkgKyAzMCArIChvZmZzZXRUb3AgfHwgMCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGVmdFBvcyA9IChjZWxsUG9zICYmIGNlbGxQb3MubGVmdCB8fCAwKSArIChvZmZzZXRMZWZ0IHx8IDApO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2RvbUVsZW1lbnQuYXBwZW5kVG8oJ2JvZHknKTtcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50LmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50LmNzcygndG9wJywgdG9wUG9zKTtcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50LmNzcygnbGVmdCcsIGxlZnRQb3MpO1xyXG4gICAgICAgICAgICAgICQoYCMke215RHJvcElkfWApLmFkZENsYXNzKCdvcGVuJyk7XHJcbiAgICAgICAgICAgICAgJChgIyR7ZHJvcERvd25Ub2dnbGVJZH1gKS5oaWRlKCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGl0IHNob3VsZCBkcm9wIFVwIG9yIERvd25cclxuICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAzNTtcclxuICAgICAgICAgICAgICBjb25zdCBpRWxlbWVudCA9ICQoJy5kcm9wZG93bi1tZW51Jyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgaUVsZW1lbnRXcmFwcGVyID0gaUVsZW1lbnQucGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgaUVsZW1lbnRXcmFwcGVyT2Zmc2V0ID0gaUVsZW1lbnRXcmFwcGVyLm9mZnNldCgpIHx8IHt9O1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlFbGVtZW50V3JhcHBlck9mZnNldFRvcCA9IGlFbGVtZW50V3JhcHBlck9mZnNldC50b3AgfHwgaUVsZW1lbnRXcmFwcGVyICYmIGlFbGVtZW50V3JhcHBlci5sZW5ndGggPiAwICYmIGlFbGVtZW50V3JhcHBlclswXS5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgICAgY29uc3QgaUVsZW1lbnRIZWlnaHQgPSBpRWxlbWVudC5oZWlnaHQoKTtcclxuICAgICAgICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkRHJvcFVwID0gKHdpbmRvd0hlaWdodCAtIGlFbGVtZW50SGVpZ2h0IC0gb2Zmc2V0KSA8IGlFbGVtZW50V3JhcHBlck9mZnNldFRvcDtcclxuICAgICAgICAgICAgICBsZXQgbWVudU1hcmdpblRvcCA9ICcwcHgnO1xyXG4gICAgICAgICAgICAgIGlmIChzaG91bGREcm9wVXApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldEJvdHRvbSA9IG9mZnNldERyb3B1cEJvdHRvbSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgbWVudU1hcmdpblRvcCA9ICctJy5jb25jYXQoYCR7aUVsZW1lbnRIZWlnaHQgKyBvZmZzZXQgKyBvZmZzZXRCb3R0b20gKyA1fWAsICdweCcpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50LmNzcyh7ICdtYXJnaW4tdG9wJzogbWVudU1hcmdpblRvcCB9KTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gc2V0IGRyb3Bkb3duIG1hcmdpbiBsZWZ0IGFjY29yZGluZyB0byB0aGUgZG9jdW1lbnQgd2lkdGhcclxuICAgICAgICAgICAgICBjb25zdCBwYXJlbnRPZmZzZXQgPSBpRWxlbWVudFdyYXBwZXJPZmZzZXQubGVmdDtcclxuICAgICAgICAgICAgICBjb25zdCBsZWZ0TWFyZ2luID0gcGFyZW50T2Zmc2V0IC0gJChkb2N1bWVudCkud2lkdGgoKTtcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50LmNzcyh7ICdtYXJnaW4tbGVmdCc6ICh0aGlzLl9kb21FbGVtZW50LndpZHRoKCkgKyBsZWZ0TWFyZ2luICsgNjApICsgJ3B4JyB9KTtcclxuXHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RvbUVsZW1lbnQuZHJvcGRvd24oJ3Nob3cnKTsgLy8gcmVxdWlyZWQgZm9yIEJvb3RzdHJhcCA0IG9ubHlcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBCb290c3RyYXAgMyB3aWwgdGhyb3cgYW4gZXJyb3Igc2luY2UgdGhhdCBtZXRob2QgZG9lc24ndCBleGlzdCwgd2UgY2FuIHNhZmVseSBkaXNyZWdhcmQgaXRcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuX2RvbUVsZW1lbnQub24oJ2hpZGRlbi5icy5kcm9wZG93bicsICgpID0+IHRoaXMuZHJvcENvbnRhaW5lclNob3coKSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGhpZGUgZHJvcGRvd24gbWVudSBvbiBncmlkIHNjcm9sbFxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZFZpZXdwb3J0Lm9uKCdzY3JvbGwnLCAoKSA9PiB0aGlzLmRpc3Bvc2UoKSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIGhpZGUgb24gZHJvcGRvd24gY2xpY2tcclxuICAgICAgICAgICAgICB0aGlzLl9kb21FbGVtZW50Lm9uKCdjbGljaycsICgpID0+IHRoaXMuZGlzcG9zZSgpKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -21,9 +21,9 @@ export class ContainerService {
21
21
  }
22
22
  }
23
23
  }
24
- ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, decorators: [{
24
+ ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, decorators: [{
27
27
  type: Injectable
28
28
  }], ctorParameters: function () { return []; } });
29
29
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvc2VydmljZXMvY29udGFpbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUczQjtRQUZBLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztJQUV2QixDQUFDO0lBRWpCLEdBQUcsQ0FBVSxHQUFXO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUU7WUFDeEIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsUUFBYTtRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDOzs2R0F0QlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udGFpbmVySW5zdGFuY2UsIENvbnRhaW5lclNlcnZpY2UgYXMgVW5pdmVyc2FsQ29udGFpbmVyU2VydmljZSB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb250YWluZXJTZXJ2aWNlIGltcGxlbWVudHMgVW5pdmVyc2FsQ29udGFpbmVyU2VydmljZSB7XHJcbiAgZGVwZW5kZW5jaWVzOiBDb250YWluZXJJbnN0YW5jZVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIGdldDxUID0gYW55PihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcclxuICAgIGNvbnN0IGRlcGVuZGVuY3kgPSB0aGlzLmRlcGVuZGVuY2llcy5maW5kKGRlcCA9PiBkZXAua2V5ID09PSBrZXkpO1xyXG4gICAgaWYgKGRlcGVuZGVuY3k/Lmluc3RhbmNlKSB7XHJcbiAgICAgIHJldHVybiBkZXBlbmRlbmN5Lmluc3RhbmNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBkaXNwb3NlKCkge1xyXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVySW5zdGFuY2Uoa2V5OiBzdHJpbmcsIGluc3RhbmNlOiBhbnkpIHtcclxuICAgIGNvbnN0IGRlcGVuZGVuY3kgPSB0aGlzLmRlcGVuZGVuY2llcy5zb21lKGRlcCA9PiBkZXAua2V5ID09PSBrZXkpO1xyXG4gICAgaWYgKCFkZXBlbmRlbmN5KSB7XHJcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goeyBrZXksIGluc3RhbmNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -33,9 +33,9 @@ export class TranslaterService {
33
33
  return this.translateService?.instant?.(translationKey || ' ');
34
34
  }
35
35
  }
36
- TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
37
- TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, decorators: [{
36
+ TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
37
+ TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, decorators: [{
39
39
  type: Injectable
40
40
  }], ctorParameters: function () { return [{ type: i1.TranslateService, decorators: [{
41
41
  type: Optional
@@ -62,9 +62,9 @@ class AngularUtilService {
62
62
  return componentOutput;
63
63
  }
64
64
  }
65
- AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
66
- AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, decorators: [{
65
+ AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
66
+ AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, decorators: [{
68
68
  type: Injectable
69
69
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
70
70
 
@@ -162,9 +162,9 @@ class BsDropDownService {
162
162
  });
163
163
  }
164
164
  }
165
- BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, deps: [{ token: AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
166
- BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService });
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, decorators: [{
165
+ BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, deps: [{ token: AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
166
+ BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService });
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, decorators: [{
168
168
  type: Injectable
169
169
  }], ctorParameters: function () { return [{ type: AngularUtilService }]; } });
170
170
 
@@ -189,9 +189,9 @@ class ContainerService {
189
189
  }
190
190
  }
191
191
  }
192
- ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
193
- ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, decorators: [{
192
+ ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
193
+ ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService });
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, decorators: [{
195
195
  type: Injectable
196
196
  }], ctorParameters: function () { return []; } });
197
197
 
@@ -232,9 +232,9 @@ class TranslaterService {
232
232
  return (_b = (_a = this.translateService) === null || _a === void 0 ? void 0 : _a.instant) === null || _b === void 0 ? void 0 : _b.call(_a, translationKey || ' ');
233
233
  }
234
234
  }
235
- TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
236
- TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService });
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, decorators: [{
235
+ TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
236
+ TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService });
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, decorators: [{
238
238
  type: Injectable
239
239
  }], ctorParameters: function () {
240
240
  return [{ type: i1.TranslateService, decorators: [{
@@ -2019,14 +2019,14 @@ class AngularSlickgridComponent {
2019
2019
  }
2020
2020
  }
2021
2021
  }
2022
- AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
2023
- AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
2022
+ AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
2023
+ AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
2024
2024
  // make everything transient (non-singleton)
2025
2025
  AngularUtilService,
2026
2026
  ApplicationRef,
2027
2027
  TranslaterService,
2028
2028
  ], ngImport: i0, template: "<div id=\"slickGridContainer-{{gridId}}\" class=\"gridPane\">\r\n <div attr.id='{{gridId}}' class=\"slickgrid-container\" style=\"width: 100%\">\r\n </div>\r\n</div>" });
2029
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
2029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
2030
2030
  type: Component,
2031
2031
  args: [{ selector: 'angular-slickgrid', providers: [
2032
2032
  // make everything transient (non-singleton)
@@ -2076,12 +2076,12 @@ class AngularSlickgridModule {
2076
2076
  };
2077
2077
  }
2078
2078
  }
2079
- AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2080
- AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
2079
+ AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2080
+ AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
2081
2081
  TranslateModule], exports: [AngularSlickgridComponent] });
2082
- AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
2082
+ AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
2083
2083
  TranslateModule] });
2084
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2084
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2085
2085
  type: NgModule,
2086
2086
  args: [{
2087
2087
  imports: [
@@ -61,9 +61,9 @@ class AngularUtilService {
61
61
  return componentOutput;
62
62
  }
63
63
  }
64
- AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
65
- AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularUtilService, decorators: [{
64
+ AngularUtilService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
65
+ AngularUtilService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularUtilService, decorators: [{
67
67
  type: Injectable
68
68
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; } });
69
69
 
@@ -161,9 +161,9 @@ class BsDropDownService {
161
161
  });
162
162
  }
163
163
  }
164
- BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, deps: [{ token: AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
165
- BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BsDropDownService, decorators: [{
164
+ BsDropDownService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, deps: [{ token: AngularUtilService }], target: i0.ɵɵFactoryTarget.Injectable });
165
+ BsDropDownService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: BsDropDownService, decorators: [{
167
167
  type: Injectable
168
168
  }], ctorParameters: function () { return [{ type: AngularUtilService }]; } });
169
169
 
@@ -188,9 +188,9 @@ class ContainerService {
188
188
  }
189
189
  }
190
190
  }
191
- ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
192
- ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ContainerService, decorators: [{
191
+ ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
192
+ ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService });
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ContainerService, decorators: [{
194
194
  type: Injectable
195
195
  }], ctorParameters: function () { return []; } });
196
196
 
@@ -226,9 +226,9 @@ class TranslaterService {
226
226
  return this.translateService?.instant?.(translationKey || ' ');
227
227
  }
228
228
  }
229
- TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
230
- TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService });
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: TranslaterService, decorators: [{
229
+ TranslaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ TranslaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService });
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TranslaterService, decorators: [{
232
232
  type: Injectable
233
233
  }], ctorParameters: function () { return [{ type: i1.TranslateService, decorators: [{
234
234
  type: Optional
@@ -1982,14 +1982,14 @@ class AngularSlickgridComponent {
1982
1982
  }
1983
1983
  }
1984
1984
  }
1985
- AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
1986
- AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.4", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
1985
+ AngularSlickgridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
1986
+ AngularSlickgridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, providers: [
1987
1987
  // make everything transient (non-singleton)
1988
1988
  AngularUtilService,
1989
1989
  ApplicationRef,
1990
1990
  TranslaterService,
1991
1991
  ], ngImport: i0, template: "<div id=\"slickGridContainer-{{gridId}}\" class=\"gridPane\">\r\n <div attr.id='{{gridId}}' class=\"slickgrid-container\" style=\"width: 100%\">\r\n </div>\r\n</div>" });
1992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
1992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
1993
1993
  type: Component,
1994
1994
  args: [{ selector: 'angular-slickgrid', providers: [
1995
1995
  // make everything transient (non-singleton)
@@ -2037,12 +2037,12 @@ class AngularSlickgridModule {
2037
2037
  };
2038
2038
  }
2039
2039
  }
2040
- AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2041
- AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
2040
+ AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2041
+ AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
2042
2042
  TranslateModule], exports: [AngularSlickgridComponent] });
2043
- AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
2043
+ AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule,
2044
2044
  TranslateModule] });
2045
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2046
2046
  type: NgModule,
2047
2047
  args: [{
2048
2048
  imports: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-slickgrid",
3
- "version": "4.2.3",
3
+ "version": "4.2.6",
4
4
  "description": "Slickgrid components made available in Angular",
5
5
  "keywords": [
6
6
  "angular",
@@ -22,28 +22,28 @@
22
22
  "main": "src/app/modules/angular-slickgrid/index",
23
23
  "private": false,
24
24
  "comments": {
25
- "new-release": "1- build library (ng-packagr), 2- 'prepare-release' (npm script) & publish to npm, typically 'npm publish dist' works if it does not then run script 'pack-lib' and 'npm publish [tar file]'"
25
+ "new-release": "1- build library (ng-packagr), 2- 'prepare-release' (npm script), 3- run script 'pack-lib' and 'npm publish [tar tgz]'"
26
26
  },
27
27
  "funding": {
28
28
  "type": "ko_fi",
29
29
  "url": "https://ko-fi.com/ghiscoding"
30
30
  },
31
31
  "dependencies": {
32
- "@slickgrid-universal/common": "1.3.2",
33
- "@slickgrid-universal/custom-footer-component": "1.3.2",
34
- "@slickgrid-universal/empty-warning-component": "1.3.2",
35
- "@slickgrid-universal/event-pub-sub": "1.3.2",
36
- "@slickgrid-universal/pagination-component": "1.3.2",
37
- "@slickgrid-universal/row-detail-view-plugin": "1.3.2",
38
- "@slickgrid-universal/rxjs-observable": "1.3.2",
32
+ "@slickgrid-universal/common": "~1.3.5",
33
+ "@slickgrid-universal/custom-footer-component": "~1.3.5",
34
+ "@slickgrid-universal/empty-warning-component": "~1.3.5",
35
+ "@slickgrid-universal/event-pub-sub": "~1.3.5",
36
+ "@slickgrid-universal/pagination-component": "~1.3.5",
37
+ "@slickgrid-universal/row-detail-view-plugin": "~1.3.5",
38
+ "@slickgrid-universal/rxjs-observable": "~1.3.5",
39
39
  "@types/dompurify": "^2.3.3",
40
40
  "@types/jquery": "^3.5.14",
41
- "dequal": "^2.0.2",
42
- "dompurify": "^2.3.8",
41
+ "dequal": "^2.0.3",
42
+ "dompurify": "^2.3.10",
43
43
  "font-awesome": "^4.7.0",
44
44
  "jquery": "^3.6.0",
45
45
  "moment-mini": "^2.24.0",
46
- "rxjs": "^7.5.5",
46
+ "rxjs": ">=7.5.0",
47
47
  "tslib": "^2.3.0"
48
48
  },
49
49
  "peerDependencies": {
@@ -54,7 +54,7 @@
54
54
  "npm": ">=6.14.13"
55
55
  },
56
56
  "resolutions": {
57
- "caniuse-lite": "1.0.30001361"
57
+ "caniuse-lite": "1.0.30001373"
58
58
  },
59
59
  "module": "fesm2015/angular-slickgrid.mjs",
60
60
  "es2020": "fesm2020/angular-slickgrid.mjs",