@js-smart/ng-kit 18.0.2 → 18.0.4
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 +84 -102
- package/esm2022/lib/components/alert/alert.component.mjs +3 -3
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/lib/components/buttons/base-button/base-button.component.mjs +5 -5
- package/esm2022/lib/components/buttons/bs-link-button/bs-link-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/delete-button/delete-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/edit-bs-button/edit-bs-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/edit-button/edit-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/excel-export-button/excel-export-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/manage-button/manage-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/pdf-export-button/pdf-export-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/primary-button/primary-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/save-primary-button/save-primary-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/search-button/search-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/success-button/success-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/view-button/view-button.component.mjs +3 -3
- package/esm2022/lib/components/buttons/view-primary-button/view-primary-button.component.mjs +3 -3
- package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.component.mjs +3 -3
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.service.mjs +3 -3
- package/esm2022/lib/components/ngx-spinner/safe-html.pipe.mjs +3 -3
- package/esm2022/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.mjs +3 -3
- package/esm2022/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.mjs +3 -3
- package/esm2022/lib/components/spinner/spinner.component.mjs +3 -3
- package/esm2022/lib/directives/ngx-print.directive.mjs +3 -3
- package/esm2022/lib/directives/prevent-multiple-clicks.directive.mjs +3 -3
- package/esm2022/lib/pipes/type-of.pipe.mjs +3 -3
- package/esm2022/lib/services/mat-snack-bar.service.mjs +3 -3
- package/esm2022/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.mjs +3 -3
- package/fesm2022/js-smart-ng-kit.mjs +88 -88
- package/fesm2022/js-smart-ng-kit.mjs.map +1 -1
- package/lib/components/buttons/base-button/base-button.component.d.ts +2 -4
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# NGX Smart utilities
|
|
2
|
+
|
|
2
3
|
Reusable Angular components built with Angular Material and Bootstrap 5.x, Utility classes/functions for Date, Form and String operations
|
|
3
4
|
|
|
4
5
|
<p align="center">
|
|
@@ -9,21 +10,28 @@ Reusable Angular components built with Angular Material and Bootstrap 5.x, Utili
|
|
|
9
10
|
</p>
|
|
10
11
|
|
|
11
12
|
### Installation
|
|
13
|
+
|
|
12
14
|
Install the library
|
|
15
|
+
|
|
13
16
|
```shell
|
|
14
17
|
npm install @js-smart/ng-kit
|
|
15
18
|
```
|
|
16
|
-
and use it as shown below in each section
|
|
17
19
|
|
|
20
|
+
and use it as shown below in each section
|
|
18
21
|
|
|
19
22
|
### Technologies
|
|
23
|
+
|
|
20
24
|
1. Angular 17+
|
|
21
25
|
2. Bootstrap 5+ (if applicable)
|
|
22
26
|
|
|
23
27
|
## Auto Complete
|
|
28
|
+
|
|
24
29
|
Reusable Auto Complete that extends Mat Auto Complete component
|
|
30
|
+
|
|
25
31
|
### Demo
|
|
32
|
+
|
|
26
33
|
https://main--js-smart-ng-kit.netlify.app/autocomplete-demo
|
|
34
|
+
|
|
27
35
|
### Usage
|
|
28
36
|
|
|
29
37
|
The library has one `autocomplete` component. To use the Auto Complete component, add the following code to the HTML page
|
|
@@ -53,10 +61,10 @@ The library has one `autocomplete` component. To use the Auto Complete component
|
|
|
53
61
|
Then define form group instances and object array (cities) and names (for string array)
|
|
54
62
|
|
|
55
63
|
```typescript
|
|
56
|
-
// Define objects
|
|
64
|
+
// Define objects
|
|
57
65
|
cities = [{id: 1001, location: 'New York'}, {id: 1002, location: 'Boston'}, {id: 1001, location: 'Washington DC'}];
|
|
58
66
|
|
|
59
|
-
// Define Form Groups
|
|
67
|
+
// Define Form Groups
|
|
60
68
|
inputFormGroup = this.fb.group({
|
|
61
69
|
autocomplete: ['']
|
|
62
70
|
})
|
|
@@ -69,6 +77,7 @@ displayFn(object: any): string {
|
|
|
69
77
|
```
|
|
70
78
|
|
|
71
79
|
If you are using strings rather than objects, do not provide `bindLabel`, `bindValue` and `displayWith` inputs. See below sample
|
|
80
|
+
|
|
72
81
|
```
|
|
73
82
|
<!-- Auto Complete with Strings -->
|
|
74
83
|
<form [formGroup]="inputFormGroup">
|
|
@@ -82,85 +91,90 @@ If you are using strings rather than objects, do not provide `bindLabel`, `bindV
|
|
|
82
91
|
</form>
|
|
83
92
|
```
|
|
84
93
|
|
|
85
|
-
|
|
86
94
|
### Auto Complete API
|
|
87
95
|
|
|
88
96
|
#### List of selectors that can be used to select the component(s)
|
|
89
97
|
|
|
90
|
-
|
|
|
91
|
-
|
|
92
|
-
| autocomplete, lib-autocomplete |
|
|
93
|
-
|
|
98
|
+
| AutoComplete Selector |
|
|
99
|
+
|--------------------------------|
|
|
100
|
+
| autocomplete, lib-autocomplete |
|
|
94
101
|
|
|
95
102
|
#### Properties
|
|
96
103
|
|
|
97
|
-
| Property
|
|
98
|
-
|
|
99
|
-
| inputFormGroup
|
|
100
|
-
| label
|
|
101
|
-
| placeHolder
|
|
102
|
-
| appearance
|
|
103
|
-
| classes
|
|
104
|
-
| bindLabel |
|
|
105
|
-
| bindValue |
|
|
106
|
-
| displayWith
|
|
107
|
-
| required
|
|
108
|
-
| data
|
|
109
|
-
|
|
104
|
+
| Property | Description | Type | Default Value |
|
|
105
|
+
|----------------|---------------------------------------------------------------------------------------------------------------------------|-------------------|---------------|
|
|
106
|
+
| inputFormGroup | Input Form Group | FormGroup | |
|
|
107
|
+
| label | Label of the AutoComplete | string | |
|
|
108
|
+
| placeHolder | PlaceHolder of the AutoComplete | string | |
|
|
109
|
+
| appearance | Appearance of the AutoComplete, defaults to `fill` | string | fill |
|
|
110
|
+
| classes | List of CSS classes that need to applied to autocomplete | string | |
|
|
111
|
+
| bindLabel | Applies only to AutoComplete with Objects. Attribute of the Object whose value would be shown when searching for data | string | id |
|
|
112
|
+
| bindValue | Applies only to AutoComplete with Objects. Attribute of the Object whose value would be used for search. Defaults to `ID` | string | id |
|
|
113
|
+
| displayWith | Applies only to AutoComplete with Objects. A function used to show display value in Input | boolean | false |
|
|
114
|
+
| required | Provide `true` if AutoComplete is required, otherwise provide `false` | boolean | false |
|
|
115
|
+
| data | List of Objects or String values that need to be bind and searched for | any[] or string[] | false |
|
|
110
116
|
|
|
111
117
|
## Alert
|
|
118
|
+
|
|
112
119
|
Reusable alert component created with Bootstrap 5+ and Angular 17+
|
|
120
|
+
|
|
113
121
|
### Auto Complete API
|
|
114
|
-
#### List of selectors that can be used to select the component
|
|
115
122
|
|
|
116
|
-
|
|
117
|
-
| ----------- |
|
|
118
|
-
| alert,lib-alert |
|
|
123
|
+
#### List of selectors that can be used to select the component
|
|
119
124
|
|
|
125
|
+
| Selector |
|
|
126
|
+
|-----------------|
|
|
127
|
+
| alert,lib-alert |
|
|
120
128
|
|
|
121
129
|
#### Properties
|
|
122
130
|
|
|
123
|
-
| Property
|
|
124
|
-
|
|
125
|
-
| dismissible |
|
|
126
|
-
| dismissOnTimeout
|
|
127
|
-
| dismissTimeout
|
|
128
|
-
| isOpen
|
|
129
|
-
| type
|
|
131
|
+
| Property | Description | Type | Default Value |
|
|
132
|
+
|------------------|------------------------------------------------------------------------------------------------------------|------------------|---------------|
|
|
133
|
+
| dismissible | If set, displays an inline "Close" button | boolean | false |
|
|
134
|
+
| dismissOnTimeout | If set, dismisses the alert after Dismiss Timeout | boolean | true |
|
|
135
|
+
| dismissTimeout | Number in milliseconds, after which alert will be closed | string or number | 5000 |
|
|
136
|
+
| isOpen | Is alert visible | boolean | false |
|
|
137
|
+
| type | Alert type. Provides one of four bootstrap supported contextual classes: success, info, warning and danger | string | info |
|
|
130
138
|
|
|
131
139
|
## Spinner
|
|
140
|
+
|
|
132
141
|
Reusable Spinner component created with Bootstrap 5.x and Angular 17.x
|
|
133
142
|
|
|
134
143
|
### Demo
|
|
144
|
+
|
|
135
145
|
https://main--js-smart-ng-kit.netlify.app/alert-demo
|
|
146
|
+
|
|
136
147
|
### API
|
|
137
|
-
#### List of selectors that can be used to select the component
|
|
138
148
|
|
|
139
|
-
|
|
140
|
-
| ----------- |
|
|
141
|
-
| spinner,lib-spinner |
|
|
149
|
+
#### List of selectors that can be used to select the component
|
|
142
150
|
|
|
151
|
+
| Selector |
|
|
152
|
+
|---------------------|
|
|
153
|
+
| spinner,lib-spinner |
|
|
143
154
|
|
|
144
155
|
#### Properties
|
|
145
156
|
|
|
146
|
-
| Property
|
|
147
|
-
|
|
148
|
-
| bootstrapSpinner
|
|
149
|
-
| diameter
|
|
150
|
-
| color
|
|
151
|
-
| strokeWidth |
|
|
157
|
+
| Property | Description | Type | Default Value |
|
|
158
|
+
|------------------|----------------------------------------------|--------------------------|---------------|
|
|
159
|
+
| bootstrapSpinner | Use Boostrap Spinner. Default `true` | boolean | false |
|
|
160
|
+
| diameter | Diameter of the Angular Material spinner | boolean | true |
|
|
161
|
+
| color | Color of the Angular Material spinner | string or `ThemePalette` | 5000 |
|
|
162
|
+
| strokeWidth | Stroke Width of the Angular Material spinner | boolean | false |
|
|
152
163
|
|
|
153
164
|
## Print
|
|
165
|
+
|
|
154
166
|
Angular (2++) directive that prints HTML section
|
|
167
|
+
|
|
155
168
|
### Usage
|
|
169
|
+
|
|
156
170
|
Import the main module `NgxPrintModule` :
|
|
157
171
|
|
|
158
|
-
|
|
172
|
+
```js
|
|
159
173
|
import {NgxPrintModule} from '@js-smart/print';
|
|
160
174
|
|
|
161
175
|
@NgModule({
|
|
162
|
-
|
|
163
|
-
|
|
176
|
+
...
|
|
177
|
+
imports:
|
|
164
178
|
[NgxPrintModule, ...],
|
|
165
179
|
...
|
|
166
180
|
})
|
|
@@ -174,23 +188,22 @@ export class YourAppModule {
|
|
|
174
188
|
- Assuming you want to print the following HTML section:
|
|
175
189
|
|
|
176
190
|
```html
|
|
177
|
-
|
|
178
191
|
<div>
|
|
179
|
-
|
|
192
|
+
<!--Your html stuff that you want to print-->
|
|
180
193
|
</div>
|
|
181
|
-
<button>print</button>
|
|
182
|
-
|
|
194
|
+
<button>print</button>
|
|
195
|
+
<!--Your relevant print button-->
|
|
183
196
|
```
|
|
184
197
|
|
|
185
|
-
- Now, what you have to do is tagging your
|
|
198
|
+
- Now, what you have to do is tagging your _wanted-to-print_ section by an `id` attribute, then link that `id` to a
|
|
186
199
|
directive parameter in your button :
|
|
187
200
|
|
|
188
201
|
```html
|
|
189
|
-
|
|
202
|
+
<!--
|
|
190
203
|
1)- Add an ID here
|
|
191
204
|
-->
|
|
192
205
|
<div id="print-section">
|
|
193
|
-
|
|
206
|
+
<!--Your html stuff that you want to print-->
|
|
194
207
|
</div>
|
|
195
208
|
|
|
196
209
|
<!--
|
|
@@ -198,7 +211,6 @@ export class YourAppModule {
|
|
|
198
211
|
3)- Affect your ID to printSectionId
|
|
199
212
|
-->
|
|
200
213
|
<button printSectionId="print-section" ngxPrint>print</button>
|
|
201
|
-
|
|
202
214
|
```
|
|
203
215
|
|
|
204
216
|
### Optional properties
|
|
@@ -207,38 +219,22 @@ export class YourAppModule {
|
|
|
207
219
|
button `printTitle`:
|
|
208
220
|
|
|
209
221
|
```html
|
|
210
|
-
|
|
211
222
|
<div id="print-section">
|
|
212
|
-
|
|
213
|
-
<!-- ... -->
|
|
214
|
-
|
|
223
|
+
<!-- ... -->
|
|
215
224
|
</div>
|
|
216
225
|
|
|
217
|
-
<button
|
|
218
|
-
printTitle="MyTitle"
|
|
219
|
-
printSectionId="print-section"
|
|
220
|
-
ngxPrint>print
|
|
221
|
-
</button>
|
|
222
|
-
|
|
226
|
+
<button printTitle="MyTitle" printSectionId="print-section" ngxPrint>print</button>
|
|
223
227
|
```
|
|
224
228
|
|
|
225
229
|
- Also, would you like to customize the printing window style sheet (CSS) ? Hence you can do so by adding infinite
|
|
226
230
|
styles to another attribute called `printStyle`:
|
|
227
231
|
|
|
228
232
|
```html
|
|
229
|
-
|
|
230
233
|
<div id="print-section">
|
|
231
|
-
|
|
232
|
-
<!-- ... -->
|
|
233
|
-
|
|
234
|
+
<!-- ... -->
|
|
234
235
|
</div>
|
|
235
236
|
|
|
236
|
-
<button
|
|
237
|
-
[printStyle]="{h1 : {'color': 'red'}, h2 : {'border': 'solid 1px'}}"
|
|
238
|
-
printSectionId="print-section"
|
|
239
|
-
ngxPrint>print
|
|
240
|
-
</button>
|
|
241
|
-
|
|
237
|
+
<button [printStyle]="{h1 : {'color': 'red'}, h2 : {'border': 'solid 1px'}}" printSectionId="print-section" ngxPrint>print</button>
|
|
242
238
|
```
|
|
243
239
|
|
|
244
240
|
Here some simple styles were added to every `h1` & `h2` tags within the `div` where `print-section` is tagged to
|
|
@@ -247,50 +243,36 @@ its `id` attribute.
|
|
|
247
243
|
- If you would like to use your existing CSS with media print you can add the `useExistingCss` attribute:
|
|
248
244
|
|
|
249
245
|
```html
|
|
250
|
-
|
|
251
246
|
<div id="print-section">
|
|
252
|
-
|
|
253
|
-
<!-- ... -->
|
|
254
|
-
|
|
247
|
+
<!-- ... -->
|
|
255
248
|
</div>
|
|
256
249
|
|
|
257
|
-
<button
|
|
258
|
-
[useExistingCss]="true"
|
|
259
|
-
printSectionId="print-section"
|
|
260
|
-
ngxPrint>print
|
|
261
|
-
</button>
|
|
262
|
-
|
|
250
|
+
<button [useExistingCss]="true" printSectionId="print-section" ngxPrint>print</button>
|
|
263
251
|
```
|
|
264
252
|
|
|
265
253
|
- If you want to customize the printing window style sheet (CSS) by importing the css provided in assets/css
|
|
266
254
|
use `styleSheetFile`:
|
|
267
255
|
|
|
268
256
|
```html
|
|
269
|
-
|
|
270
257
|
<div id="print-section">
|
|
271
|
-
|
|
272
|
-
<!-- ... -->
|
|
273
|
-
|
|
258
|
+
<!-- ... -->
|
|
274
259
|
</div>
|
|
275
260
|
|
|
276
|
-
<button
|
|
277
|
-
styleSheetFile="assets/css/custom1.css,assets/css/custom2.css"
|
|
278
|
-
printSectionId="print-section"
|
|
279
|
-
ngxPrint>print
|
|
280
|
-
</button>
|
|
281
|
-
|
|
261
|
+
<button styleSheetFile="assets/css/custom1.css,assets/css/custom2.css" printSectionId="print-section" ngxPrint>print</button>
|
|
282
262
|
```
|
|
263
|
+
|
|
283
264
|
### Publish library to NPM
|
|
265
|
+
|
|
284
266
|
1. Build the library
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
267
|
+
```shell
|
|
268
|
+
nx build ng-kit
|
|
269
|
+
```
|
|
288
270
|
2. If the NPM token is not configured, open `~/.npmrc` and add the following line:
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
271
|
+
```shell
|
|
272
|
+
//registry.npmjs.org/:_authToken=<your npm token>
|
|
273
|
+
```
|
|
292
274
|
3. Then navigate to `dist` directory anf publish the library to NPM. If prompted, enter the 2fa auth code from the Authenticator app.
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
275
|
+
```shell
|
|
276
|
+
cd dist/libs/ng-kit && npm publish --tag latest
|
|
277
|
+
```
|
|
296
278
|
For beta releases use tag `--tag beta`
|
|
@@ -85,10 +85,10 @@ export class AlertComponent {
|
|
|
85
85
|
openAlert() {
|
|
86
86
|
this.open.set(true);
|
|
87
87
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
88
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AlertComponent, isStandalone: true, selector: "lib-alert, alert", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, dismissOnTimeout: { classPropertyName: "dismissOnTimeout", publicName: "dismissOnTimeout", isSignal: true, isRequired: false, transformFunction: null }, dismissTimeout: { classPropertyName: "dismissTimeout", publicName: "dismissTimeout", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (open()) {\n\t<div class=\"row {{ class() }}\">\n\t\t<div class=\"col-xs-12 col-sm-12 col-md-auto mx-auto\">\n\t\t\t<div class=\"alert alert-{{ type() }} alert-dismissible alert_div\" role=\"alert\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t@if (dismissible()) {\n\t\t\t\t\t<button (click)=\"closeAlert()\" aria-label=\"Close\" class=\"btn-close\" data-bs-dismiss=\"alert\" type=\"button\"></button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n", styles: [".alert_div{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
90
90
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AlertComponent, decorators: [{
|
|
92
92
|
type: Component,
|
|
93
93
|
args: [{ selector: 'lib-alert, alert', standalone: true, imports: [CommonModule], template: "@if (open()) {\n\t<div class=\"row {{ class() }}\">\n\t\t<div class=\"col-xs-12 col-sm-12 col-md-auto mx-auto\">\n\t\t\t<div class=\"alert alert-{{ type() }} alert-dismissible alert_div\" role=\"alert\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t\t@if (dismissible()) {\n\t\t\t\t\t<button (click)=\"closeAlert()\" aria-label=\"Close\" class=\"btn-close\" data-bs-dismiss=\"alert\" type=\"button\"></button>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n}\n", styles: [".alert_div{display:flex;align-items:center;justify-content:center}\n"] }]
|
|
94
94
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
@@ -144,10 +144,10 @@ export class AutocompleteComponent {
|
|
|
144
144
|
emitSelectedValue($event) {
|
|
145
145
|
this.onSelectionChange.emit($event.source.value);
|
|
146
146
|
}
|
|
147
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
147
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AutocompleteComponent, isStandalone: true, selector: "autocomplete, lib-autocomplete", inputs: { inputFormGroup: { classPropertyName: "inputFormGroup", publicName: "inputFormGroup", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeHolder: { classPropertyName: "placeHolder", publicName: "placeHolder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange" }, viewQueries: [{ propertyName: "inputAutoComplete", first: true, predicate: ["inputAutoComplete"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"inputFormGroup\">\n\t<mat-form-field appearance=\"fill\" class=\"{{ classes() }}\">\n\t\t<mat-label>{{ label() }}</mat-label>\n\t\t<input\n\t\t\t#inputAutoComplete\n\t\t\t#trigger=\"matAutocompleteTrigger\"\n\t\t\t[matAutocomplete]=\"auto\"\n\t\t\t[placeholder]=\"placeHolder()\"\n\t\t\t[required]=\"required()\"\n\t\t\tformControlName=\"autocomplete\"\n\t\t\tmatInput\n\t\t\ttype=\"text\" />\n\n\t\t<div matSuffix style=\"display: flex\">\n\t\t\t@if (!!inputFormGroup.get('autocomplete')?.value) {\n\t\t\t\t<button (click)=\"clearInput($event)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t\t<mat-icon>clear</mat-icon>\n\t\t\t\t</button>\n\t\t\t}\n\t\t\t<button (click)=\"openOrClosePanel($event, trigger)\" aria-label=\"Clear\" mat-icon-button type=\"button\">\n\t\t\t\t<mat-icon>{{ arrowIconSubject.getValue() }}</mat-icon>\n\t\t\t</button>\n\t\t</div>\n\n\t\t<mat-autocomplete\n\t\t\t#auto=\"matAutocomplete\"\n\t\t\t(closed)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t(opened)=\"arrowIconSubject.next('arrow_drop_up')\"\n\t\t\t(optionSelected)=\"arrowIconSubject.next('arrow_drop_down')\"\n\t\t\t[displayWith]=\"displayFn\">\n\t\t\t@for (option of filteredOptions | async; track option[bindValue()]) {\n\t\t\t\t<mat-option (onSelectionChange)=\"emitSelectedValue($event)\" [value]=\"option\">\n\t\t\t\t\t@if ((option | typeOf) === 'string') {\n\t\t\t\t\t\t<ng-container>{{ option }}</ng-container>\n\t\t\t\t\t} @else if ((option | typeOf) === 'object') {\n\t\t\t\t\t\t<ng-container>{{ option[bindLabel()] }}</ng-container>\n\t\t\t\t\t}\n\t\t\t\t</mat-option>\n\t\t\t}\n\t\t</mat-autocomplete>\n\t</mat-form-field>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TypeOfPipe, name: "typeOf" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
149
149
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
151
151
|
type: Component,
|
|
152
152
|
args: [{ selector: 'autocomplete, lib-autocomplete', standalone: true, imports: [
|
|
153
153
|
ReactiveFormsModule,
|
|
@@ -169,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
169
169
|
}, {
|
|
170
170
|
type: Optional
|
|
171
171
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFZLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMscUJBQXFCLEVBQXlCLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0YsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRTFDOzs7OztHQUtHO0FBZ0JILE1BQU0sT0FBTyxxQkFBcUI7SUEwRWpDLFlBQW9CLEtBQXdCO1FBQXhCLFVBQUss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QUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixTQUFTO3FCQUNUO3NGQU8rQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUtyQixjQUFjO3NCQUF0QixLQUFLO2dCQW1DZSxXQUFXO3NCQUEvQixLQUFLOztzQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIG91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Rm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7TWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7VHlwZU9mUGlwZX0gZnJvbSAnLi4vLi4vcGlwZXMvdHlwZS1vZi5waXBlJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFJldXNhYmxlIEF1dG8gQ29tcGxldGUgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBNYXRBdXRvQ29tcGxldGUgdG8gc2hvdyBDbGVhciBpY29uIGFuZCBBcnJvdyBidXR0b25zXG4gKlxuICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuICogQHNpbmNlIDEyLjAuMFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhdXRvY29tcGxldGUsIGxpYi1hdXRvY29tcGxldGUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcblx0XHRUeXBlT2ZQaXBlLFxuXHRcdE1hdEZvcm1GaWVsZE1vZHVsZSxcblx0XHRNYXRBdXRvY29tcGxldGVNb2R1bGUsXG5cdFx0TWF0SW5wdXRNb2R1bGUsXG5cdFx0TWF0QnV0dG9uTW9kdWxlLFxuXHRcdE1hdEljb25Nb2R1bGUsXG5cdFx0QXN5bmNQaXBlLFxuXHRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudENoZWNrZWQge1xuXHQvKipcblx0ICogR2V0cyByZWZlcmVuY2UgaW5wdXRBdXRvQ29tcGxldGUgSFRNTCBhdHRyaWJ1dGVcblx0ICovXG5cdEBWaWV3Q2hpbGQoJ2lucHV0QXV0b0NvbXBsZXRlJykgaW5wdXRBdXRvQ29tcGxldGUhOiBFbGVtZW50UmVmO1xuXG5cdC8qKlxuXHQgKiBJbnB1dCBmb3JtIGdyb3VwIG9mIHRoZSBhdXRvIGNvbXBsZXRlXG5cdCAqL1xuXHRASW5wdXQoKSBpbnB1dEZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcblxuXHQvKipcblx0ICogTGFiZWwgb2YgdGhlIEF1dG9Db21wbGV0ZVxuXHQgKi9cblx0bGFiZWwgPSBpbnB1dCgnJyk7XG5cblx0LyoqXG5cdCAqIFBsYWNlaG9sZGVyIG9mIHRoZSBBdXRvQ29tcGxldGVcblx0ICovXG5cdHBsYWNlSG9sZGVyID0gaW5wdXQoJycpO1xuXG5cdC8qKlxuXHQgKiBBcHBlYXJhbmNlIG9mIHRoZSBBdXRvQ29tcGxldGUsIGRlZmF1bHRzIHRvIGBmaWxsYFxuXHQgKi9cblx0YXBwZWFyYW5jZSA9IGlucHV0KCdmaWxsJyk7XG5cblx0LyoqXG5cdCAqIExpc3Qgb2YgQ1NTIGNsYXNzZXMgdGhhdCBuZWVkIHRvIGFwcGxpZWQgdG8gYXV0b2NvbXBsZXRlXG5cdCAqL1xuXHRjbGFzc2VzID0gaW5wdXQoJycpO1xuXG5cdC8qKlxuXHQgKiBBdHRyaWJ1dGUgb2YgdGhlIE9iamVjdCB3aG9zZSB2YWx1ZSB3b3VsZCBiZSBzaG93biB3aGVuIHNlYXJjaGluZyBmb3IgZGF0YS4gRGVmYXVsdHMgdG8gYElEYFxuXHQgKi9cblx0YmluZExhYmVsID0gaW5wdXQoJycpO1xuXG5cdC8qKlxuXHQgKiBBdHRyaWJ1dGUgb2YgdGhlIE9iamVjdCB3aG9zZSB2YWx1ZSB3b3VsZCBiZSB1c2VkIGZvciBzZWFyY2hcblx0ICovXG5cdGJpbmRWYWx1ZSA9IGlucHV0KCdpZCcpO1xuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0aGF0IG1hcHMgYW4gb3B0aW9uJ3MgY29udHJvbCB2YWx1ZSB0byBpdHMgZGlzcGxheSB2YWx1ZSBpbiB0aGUgdHJpZ2dlci5cblx0ICovXG5cdEBJbnB1dCgpIEBPcHRpb25hbCgpIGRpc3BsYXlXaXRoOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIGlmIHRoZSBhdXRvY29tcGxldGUgaXMgcmVxdWlyZWQuIERlZmF1bHQgaXMgbm90IHJlcXVpcmVkLlxuXHQgKi9cblx0cmVxdWlyZWQgPSBpbnB1dChmYWxzZSk7XG5cblx0LyoqXG5cdCAqIExpc3Qgb2YgT2JqZWN0cyB0aGF0IG5lZWQgdG8gYmUgYmluZCBhbmQgc2VhcmNoZWQgZm9yXG5cdCAqL1xuXHRkYXRhID0gaW5wdXQ8c3RyaW5nW10gfCBhbnlbXT4oKTtcblxuXHQvKipcblx0ICogRW1pdCBzZWxlY3RlZCB2YWx1ZSBvbiBzZWxlY3Rpb24gY2hhbmdlc1xuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMy4wLjNcblx0ICovXG5cdG9uU2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcblxuXHQvKipcblx0ICogQmVoYXZpb3JTdWJqZWN0IHRoYXQgc2hvd3MgdGhlIGN1cnJlbnQgYWN0aXZlIGFycm93IGljb25cblx0ICovXG5cdGFycm93SWNvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCdhcnJvd19kcm9wX2Rvd24nKTtcblxuXHQvKipcblx0ICogRmlsdGVyZWQgb3B0aW9ucyB3aGVuIHVzZXJcblx0ICovXG5cdGZpbHRlcmVkT3B0aW9uczogT2JzZXJ2YWJsZTxhbnlbXSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cblx0bmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZmluZSBhdXRvY29tcGxldGUgc2VhcmNoIGZpbHRlciBvbiBzZWFyY2ggdGV4dCBjaGFuZ2VzXG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmlucHV0Rm9ybUdyb3VwPy5nZXQoJ2F1dG9jb21wbGV0ZScpPy52YWx1ZUNoYW5nZXMucGlwZShcblx0XHRcdHN0YXJ0V2l0aCgnJyksXG5cdFx0XHRtYXAoKHZhbHVlKSA9PiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogdmFsdWUgIT09IG51bGwgPyB2YWx1ZVt0aGlzLmJpbmRMYWJlbCgpXSA6ICcnKSksXG5cdFx0XHRtYXAoXG5cdFx0XHRcdChwcm9wZXJ0eU5hbWUpID0+XG5cdFx0XHRcdFx0dGhpcy5kYXRhKCk/LmZpbHRlcigob3B0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZydcblx0XHRcdFx0XHRcdFx0PyBvcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwcm9wZXJ0eU5hbWUudG9Mb3dlckNhc2UoKSkgPT09IDBcblx0XHRcdFx0XHRcdFx0OiBvcHRpb25bdGhpcy5iaW5kTGFiZWwoKV0/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwcm9wZXJ0eU5hbWUudG9Mb3dlckNhc2UoKSkgPT09IDA7XG5cdFx0XHRcdFx0fSkgPz8gdGhpcy5kYXRhKCk/LnNsaWNlKCksXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdHRoaXMuZGlzcGxheUZuID0gdGhpcy5kaXNwbGF5Rm4uYmluZCh0aGlzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciBpbnB1dCBhbmQgUmVzZXQgYXV0b2NvbXBsZXRlIGZvcm0gY29udHJvbFxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdGNsZWFySW5wdXQoZXZ0OiBhbnkpOiB2b2lkIHtcblx0XHRldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5pbnB1dEZvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZScpPy5yZXNldCgpO1xuXHRcdHRoaXMuaW5wdXRBdXRvQ29tcGxldGU/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPcGVuIG9yIENsb3NlIHBhbmVsXG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0b3Blbk9yQ2xvc2VQYW5lbChldnQ6IGFueSwgdHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xuXHRcdGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRpZiAodHJpZ2dlci5wYW5lbE9wZW4pIHRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuXHRcdGVsc2UgdHJpZ2dlci5vcGVuUGFuZWwoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5IGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBzaG93IHRoZSB2YWx1ZXNcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqL1xuXHRkaXNwbGF5Rm4ob2JqZWN0OiBhbnkpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmRpc3BsYXlXaXRoICE9PSB1bmRlZmluZWQgJiYgdGhpcy5kaXNwbGF5V2l0aCAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5kaXNwbGF5V2l0aCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dGhpcy5kaXNwbGF5Rm4gPSB0aGlzLmRpc3BsYXlXaXRoLmJpbmQodGhpcyk7XG5cdFx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5V2l0aChvYmplY3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHJldHVybiBvYmplY3Q7XG5cdFx0XHRyZXR1cm4gb2JqZWN0ICYmIG9iamVjdFt0aGlzLmJpbmRMYWJlbCgpXSA/IG9iamVjdFt0aGlzLmJpbmRMYWJlbCgpXSA6ICcnO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0IHNlbGVjdGVkIHZhbHVlXG5cdCAqIEBwYXJhbSAkZXZlbnQgLSBFdmVudCBlbWl0dGVkIGJ5IGF1dG9jb21wbGV0ZVxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMy4wLjNcblx0ICovXG5cdGVtaXRTZWxlY3RlZFZhbHVlKCRldmVudDogTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlKSB7XG5cdFx0dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudC5zb3VyY2UudmFsdWUpO1xuXHR9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiaW5wdXRGb3JtR3JvdXBcIj5cblx0PG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJ7eyBjbGFzc2VzKCkgfX1cIj5cblx0XHQ8bWF0LWxhYmVsPnt7IGxhYmVsKCkgfX08L21hdC1sYWJlbD5cblx0XHQ8aW5wdXRcblx0XHRcdCNpbnB1dEF1dG9Db21wbGV0ZVxuXHRcdFx0I3RyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcblx0XHRcdFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG5cdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXIoKVwiXG5cdFx0XHRbcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG5cdFx0XHRmb3JtQ29udHJvbE5hbWU9XCJhdXRvY29tcGxldGVcIlxuXHRcdFx0bWF0SW5wdXRcblx0XHRcdHR5cGU9XCJ0ZXh0XCIgLz5cblxuXHRcdDxkaXYgbWF0U3VmZml4IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxuXHRcdFx0QGlmICghIWlucHV0Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlJyk/LnZhbHVlKSB7XG5cdFx0XHRcdDxidXR0b24gKGNsaWNrKT1cImNsZWFySW5wdXQoJGV2ZW50KVwiIGFyaWEtbGFiZWw9XCJDbGVhclwiIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+XG5cdFx0XHRcdFx0PG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHR9XG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJvcGVuT3JDbG9zZVBhbmVsKCRldmVudCwgdHJpZ2dlcilcIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiPlxuXHRcdFx0XHQ8bWF0LWljb24+e3sgYXJyb3dJY29uU3ViamVjdC5nZXRWYWx1ZSgpIH19PC9tYXQtaWNvbj5cblx0XHRcdDwvYnV0dG9uPlxuXHRcdDwvZGl2PlxuXG5cdFx0PG1hdC1hdXRvY29tcGxldGVcblx0XHRcdCNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcblx0XHRcdChjbG9zZWQpPVwiYXJyb3dJY29uU3ViamVjdC5uZXh0KCdhcnJvd19kcm9wX2Rvd24nKVwiXG5cdFx0XHQob3BlbmVkKT1cImFycm93SWNvblN1YmplY3QubmV4dCgnYXJyb3dfZHJvcF91cCcpXCJcblx0XHRcdChvcHRpb25TZWxlY3RlZCk9XCJhcnJvd0ljb25TdWJqZWN0Lm5leHQoJ2Fycm93X2Ryb3BfZG93bicpXCJcblx0XHRcdFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cblx0XHRcdEBmb3IgKG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luYzsgdHJhY2sgb3B0aW9uW2JpbmRWYWx1ZSgpXSkge1xuXHRcdFx0XHQ8bWF0LW9wdGlvbiAob25TZWxlY3Rpb25DaGFuZ2UpPVwiZW1pdFNlbGVjdGVkVmFsdWUoJGV2ZW50KVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cblx0XHRcdFx0XHRAaWYgKChvcHRpb24gfCB0eXBlT2YpID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lcj57eyBvcHRpb24gfX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHR9IEBlbHNlIGlmICgob3B0aW9uIHwgdHlwZU9mKSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXI+e3sgb3B0aW9uW2JpbmRMYWJlbCgpXSB9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9tYXQtb3B0aW9uPlxuXHRcdFx0fVxuXHRcdDwvbWF0LWF1dG9jb21wbGV0ZT5cblx0PC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuIl19
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQTBCLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRTVDOzs7OztHQUtHO0FBZ0JILE1BQU0sT0FBTyxxQkFBcUI7SUEwRWpDLFlBQW9CLEtBQXdCO1FBQXhCLFVBQUss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QUFVO3dCQUNWLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixTQUFTO3FCQUNUO3NGQU8rQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUtyQixjQUFjO3NCQUF0QixLQUFLO2dCQW1DZSxXQUFXO3NCQUEvQixLQUFLOztzQkFBSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIG91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgVHlwZU9mUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3R5cGUtb2YucGlwZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBSZXVzYWJsZSBBdXRvIENvbXBsZXRlIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgTWF0QXV0b0NvbXBsZXRlIHRvIHNob3cgQ2xlYXIgaWNvbiBhbmQgQXJyb3cgYnV0dG9uc1xuICpcbiAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcbiAqIEBzaW5jZSAxMi4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYXV0b2NvbXBsZXRlLCBsaWItYXV0b2NvbXBsZXRlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1xuXHRcdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdFx0VHlwZU9mUGlwZSxcblx0XHRNYXRGb3JtRmllbGRNb2R1bGUsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdE1hdElucHV0TW9kdWxlLFxuXHRcdE1hdEJ1dHRvbk1vZHVsZSxcblx0XHRNYXRJY29uTW9kdWxlLFxuXHRcdEFzeW5jUGlwZSxcblx0XSxcblx0dGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblx0LyoqXG5cdCAqIEdldHMgcmVmZXJlbmNlIGlucHV0QXV0b0NvbXBsZXRlIEhUTUwgYXR0cmlidXRlXG5cdCAqL1xuXHRAVmlld0NoaWxkKCdpbnB1dEF1dG9Db21wbGV0ZScpIGlucHV0QXV0b0NvbXBsZXRlITogRWxlbWVudFJlZjtcblxuXHQvKipcblx0ICogSW5wdXQgZm9ybSBncm91cCBvZiB0aGUgYXV0byBjb21wbGV0ZVxuXHQgKi9cblx0QElucHV0KCkgaW5wdXRGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG5cblx0LyoqXG5cdCAqIExhYmVsIG9mIHRoZSBBdXRvQ29tcGxldGVcblx0ICovXG5cdGxhYmVsID0gaW5wdXQoJycpO1xuXG5cdC8qKlxuXHQgKiBQbGFjZWhvbGRlciBvZiB0aGUgQXV0b0NvbXBsZXRlXG5cdCAqL1xuXHRwbGFjZUhvbGRlciA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXBwZWFyYW5jZSBvZiB0aGUgQXV0b0NvbXBsZXRlLCBkZWZhdWx0cyB0byBgZmlsbGBcblx0ICovXG5cdGFwcGVhcmFuY2UgPSBpbnB1dCgnZmlsbCcpO1xuXG5cdC8qKlxuXHQgKiBMaXN0IG9mIENTUyBjbGFzc2VzIHRoYXQgbmVlZCB0byBhcHBsaWVkIHRvIGF1dG9jb21wbGV0ZVxuXHQgKi9cblx0Y2xhc3NlcyA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXR0cmlidXRlIG9mIHRoZSBPYmplY3Qgd2hvc2UgdmFsdWUgd291bGQgYmUgc2hvd24gd2hlbiBzZWFyY2hpbmcgZm9yIGRhdGEuIERlZmF1bHRzIHRvIGBJRGBcblx0ICovXG5cdGJpbmRMYWJlbCA9IGlucHV0KCcnKTtcblxuXHQvKipcblx0ICogQXR0cmlidXRlIG9mIHRoZSBPYmplY3Qgd2hvc2UgdmFsdWUgd291bGQgYmUgdXNlZCBmb3Igc2VhcmNoXG5cdCAqL1xuXHRiaW5kVmFsdWUgPSBpbnB1dCgnaWQnKTtcblxuXHQvKipcblx0ICogRnVuY3Rpb24gdGhhdCBtYXBzIGFuIG9wdGlvbidzIGNvbnRyb2wgdmFsdWUgdG8gaXRzIGRpc3BsYXkgdmFsdWUgaW4gdGhlIHRyaWdnZXIuXG5cdCAqL1xuXHRASW5wdXQoKSBAT3B0aW9uYWwoKSBkaXNwbGF5V2l0aDogKCh2YWx1ZTogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgYXV0b2NvbXBsZXRlIGlzIHJlcXVpcmVkLiBEZWZhdWx0IGlzIG5vdCByZXF1aXJlZC5cblx0ICovXG5cdHJlcXVpcmVkID0gaW5wdXQoZmFsc2UpO1xuXG5cdC8qKlxuXHQgKiBMaXN0IG9mIE9iamVjdHMgdGhhdCBuZWVkIHRvIGJlIGJpbmQgYW5kIHNlYXJjaGVkIGZvclxuXHQgKi9cblx0ZGF0YSA9IGlucHV0PHN0cmluZ1tdIHwgYW55W10+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXQgc2VsZWN0ZWQgdmFsdWUgb24gc2VsZWN0aW9uIGNoYW5nZXNcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTMuMC4zXG5cdCAqL1xuXHRvblNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG5cblx0LyoqXG5cdCAqIEJlaGF2aW9yU3ViamVjdCB0aGF0IHNob3dzIHRoZSBjdXJyZW50IGFjdGl2ZSBhcnJvdyBpY29uXG5cdCAqL1xuXHRhcnJvd0ljb25TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnYXJyb3dfZHJvcF9kb3duJyk7XG5cblx0LyoqXG5cdCAqIEZpbHRlcmVkIG9wdGlvbnMgd2hlbiB1c2VyXG5cdCAqL1xuXHRmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG5cdG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcblx0XHR0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmUgYXV0b2NvbXBsZXRlIHNlYXJjaCBmaWx0ZXIgb24gc2VhcmNoIHRleHQgY2hhbmdlc1xuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5pbnB1dEZvcm1Hcm91cD8uZ2V0KCdhdXRvY29tcGxldGUnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXG5cdFx0XHRzdGFydFdpdGgoJycpLFxuXHRcdFx0bWFwKCh2YWx1ZSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHZhbHVlICE9PSBudWxsID8gdmFsdWVbdGhpcy5iaW5kTGFiZWwoKV0gOiAnJykpLFxuXHRcdFx0bWFwKFxuXHRcdFx0XHQocHJvcGVydHlOYW1lKSA9PlxuXHRcdFx0XHRcdHRoaXMuZGF0YSgpPy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnXG5cdFx0XHRcdFx0XHRcdD8gb3B0aW9uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJvcGVydHlOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAwXG5cdFx0XHRcdFx0XHRcdDogb3B0aW9uW3RoaXMuYmluZExhYmVsKCldPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJvcGVydHlOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAwO1xuXHRcdFx0XHRcdH0pID8/IHRoaXMuZGF0YSgpPy5zbGljZSgpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblx0XHR0aGlzLmRpc3BsYXlGbiA9IHRoaXMuZGlzcGxheUZuLmJpbmQodGhpcyk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgaW5wdXQgYW5kIFJlc2V0IGF1dG9jb21wbGV0ZSBmb3JtIGNvbnRyb2xcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTIuMC4wXG5cdCAqL1xuXHRjbGVhcklucHV0KGV2dDogYW55KTogdm9pZCB7XG5cdFx0ZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuaW5wdXRGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGUnKT8ucmVzZXQoKTtcblx0XHR0aGlzLmlucHV0QXV0b0NvbXBsZXRlPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbiBvciBDbG9zZSBwYW5lbFxuXHQgKlxuXHQgKiBAYXV0aG9yIFBhdmFuIEt1bWFyIEphZGRhXG5cdCAqIEBzaW5jZSAxMi4wLjBcblx0ICovXG5cdG9wZW5PckNsb3NlUGFuZWwoZXZ0OiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcblx0XHRldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0aWYgKHRyaWdnZXIucGFuZWxPcGVuKSB0cmlnZ2VyLmNsb3NlUGFuZWwoKTtcblx0XHRlbHNlIHRyaWdnZXIub3BlblBhbmVsKCk7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGxheSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gc2hvdyB0aGUgdmFsdWVzXG5cdCAqXG5cdCAqIEBhdXRob3IgUGF2YW4gS3VtYXIgSmFkZGFcblx0ICogQHNpbmNlIDEyLjAuMFxuXHQgKi9cblx0ZGlzcGxheUZuKG9iamVjdDogYW55KTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5kaXNwbGF5V2l0aCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGlzcGxheVdpdGggIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGlzcGxheVdpdGggPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuZGlzcGxheUZuID0gdGhpcy5kaXNwbGF5V2l0aC5iaW5kKHRoaXMpO1xuXHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheVdpdGgob2JqZWN0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnKSByZXR1cm4gb2JqZWN0O1xuXHRcdFx0cmV0dXJuIG9iamVjdCAmJiBvYmplY3RbdGhpcy5iaW5kTGFiZWwoKV0gPyBvYmplY3RbdGhpcy5iaW5kTGFiZWwoKV0gOiAnJztcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRW1pdCBzZWxlY3RlZCB2YWx1ZVxuXHQgKiBAcGFyYW0gJGV2ZW50IC0gRXZlbnQgZW1pdHRlZCBieSBhdXRvY29tcGxldGVcblx0ICpcblx0ICogQGF1dGhvciBQYXZhbiBLdW1hciBKYWRkYVxuXHQgKiBAc2luY2UgMTMuMC4zXG5cdCAqL1xuXHRlbWl0U2VsZWN0ZWRWYWx1ZSgkZXZlbnQ6IE1hdE9wdGlvblNlbGVjdGlvbkNoYW5nZSkge1xuXHRcdHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQuc291cmNlLnZhbHVlKTtcblx0fVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImlucHV0Rm9ybUdyb3VwXCI+XG5cdDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIGNsYXNzPVwie3sgY2xhc3NlcygpIH19XCI+XG5cdFx0PG1hdC1sYWJlbD57eyBsYWJlbCgpIH19PC9tYXQtbGFiZWw+XG5cdFx0PGlucHV0XG5cdFx0XHQjaW5wdXRBdXRvQ29tcGxldGVcblx0XHRcdCN0cmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG5cdFx0XHRbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuXHRcdFx0W3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyKClcIlxuXHRcdFx0W3JlcXVpcmVkXT1cInJlcXVpcmVkKClcIlxuXHRcdFx0Zm9ybUNvbnRyb2xOYW1lPVwiYXV0b2NvbXBsZXRlXCJcblx0XHRcdG1hdElucHV0XG5cdFx0XHR0eXBlPVwidGV4dFwiIC8+XG5cblx0XHQ8ZGl2IG1hdFN1ZmZpeCBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cblx0XHRcdEBpZiAoISFpbnB1dEZvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZScpPy52YWx1ZSkge1xuXHRcdFx0XHQ8YnV0dG9uIChjbGljayk9XCJjbGVhcklucHV0KCRldmVudClcIiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiPlxuXHRcdFx0XHRcdDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwib3Blbk9yQ2xvc2VQYW5lbCgkZXZlbnQsIHRyaWdnZXIpXCIgYXJpYS1sYWJlbD1cIkNsZWFyXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIj5cblx0XHRcdFx0PG1hdC1pY29uPnt7IGFycm93SWNvblN1YmplY3QuZ2V0VmFsdWUoKSB9fTwvbWF0LWljb24+XG5cdFx0XHQ8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblxuXHRcdDxtYXQtYXV0b2NvbXBsZXRlXG5cdFx0XHQjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG5cdFx0XHQoY2xvc2VkKT1cImFycm93SWNvblN1YmplY3QubmV4dCgnYXJyb3dfZHJvcF9kb3duJylcIlxuXHRcdFx0KG9wZW5lZCk9XCJhcnJvd0ljb25TdWJqZWN0Lm5leHQoJ2Fycm93X2Ryb3BfdXAnKVwiXG5cdFx0XHQob3B0aW9uU2VsZWN0ZWQpPVwiYXJyb3dJY29uU3ViamVjdC5uZXh0KCdhcnJvd19kcm9wX2Rvd24nKVwiXG5cdFx0XHRbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XG5cdFx0XHRAZm9yIChvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmM7IHRyYWNrIG9wdGlvbltiaW5kVmFsdWUoKV0pIHtcblx0XHRcdFx0PG1hdC1vcHRpb24gKG9uU2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3RlZFZhbHVlKCRldmVudClcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG5cdFx0XHRcdFx0QGlmICgob3B0aW9uIHwgdHlwZU9mKSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXI+e3sgb3B0aW9uIH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0fSBAZWxzZSBpZiAoKG9wdGlvbiB8IHR5cGVPZikgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyPnt7IG9wdGlvbltiaW5kTGFiZWwoKV0gfX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvbWF0LW9wdGlvbj5cblx0XHRcdH1cblx0XHQ8L21hdC1hdXRvY29tcGxldGU+XG5cdDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ export class BaseButtonComponent {
|
|
|
5
5
|
/**
|
|
6
6
|
* Is search in progress and loading the data
|
|
7
7
|
*/
|
|
8
|
-
this.loading = input(false);
|
|
8
|
+
this.loading = input(false, { transform: (value) => value ?? false });
|
|
9
9
|
/**
|
|
10
10
|
* Is button disabled
|
|
11
11
|
*/
|
|
@@ -59,14 +59,14 @@ export class BaseButtonComponent {
|
|
|
59
59
|
*/
|
|
60
60
|
this.onBlur = output();
|
|
61
61
|
}
|
|
62
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
63
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: BaseButtonComponent, isStandalone: true, selector: "ng-component", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null }, dataCy: { classPropertyName: "dataCy", publicName: "dataCy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: ``, isInline: true }); }
|
|
64
64
|
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseButtonComponent, decorators: [{
|
|
66
66
|
type: Component,
|
|
67
67
|
args: [{
|
|
68
68
|
standalone: true,
|
|
69
69
|
template: ``,
|
|
70
70
|
}]
|
|
71
71
|
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL2Jhc2UtYnV0dG9uL2Jhc2UtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXpELE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFLQzs7V0FFRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBMEIsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdEY7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWpDOzs7Ozs7V0FNRztRQUNILFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQzs7V0FFRztRQUNILFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJCOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2Qjs7V0FFRztRQUNILFVBQUssR0FBRyxLQUFLLEVBQTBCLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsV0FBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5Qjs7V0FFRztRQUNILFlBQU8sR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUUvQjs7V0FFRztRQUNILFlBQU8sR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUUvQjs7V0FFRztRQUNILFdBQU0sR0FBRyxNQUFNLEVBQWMsQ0FBQztLQUM5Qjs4R0FyRVksbUJBQW1CO2tHQUFuQixtQkFBbUIsMjNDQUZyQixFQUFFOzsyRkFFQSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VCdXR0b25Db21wb25lbnQge1xuXHQvKipcblx0ICogIElzIHNlYXJjaCBpbiBwcm9ncmVzcyBhbmQgbG9hZGluZyB0aGUgZGF0YVxuXHQgKi9cblx0bG9hZGluZyA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2YWx1ZSA/PyBmYWxzZSB9KTtcblxuXHQvKipcblx0ICogIElzIGJ1dHRvbiBkaXNhYmxlZFxuXHQgKi9cblx0ZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cblx0LyoqXG5cdCAqIFR5cGUgb2YgdGhlIGJ1dHRvbi4gRm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiBTZWUgQm9vdFN0cmFwIGRvY3MgZm9yIG1vcmUgaW5mb3JtYXRpb25cblx0ICogPHByZT5cblx0ICogICAxLiBidXR0b25cblx0ICogICAyLiBzdWJtaXRcblx0ICogPC9wcmU+XG5cdCAqL1xuXHR0eXBlID0gaW5wdXQoJ2J1dHRvbicpO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHNob3dzIHdoZW4gYWN0aW9uIGluIFByb2dyZXNzXG5cdCAqL1xuXHRsb2FkaW5nTGFiZWwgPSBpbnB1dCgnU2F2aW5nLi4uJyk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2hvd3Mgd2hlbiBEZWxldGUgaXMgbm90IGluIHByb2dyZXNzXG5cdCAqL1xuXHRsYWJlbCA9IGlucHV0KCdTYXZlJyk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2hvd3MgdGhlIGljb24uIE90aGVyd2lzZSwgc2hvd3MgZGVsZXRlIGljb25cblx0ICovXG5cdGljb24gPSBpbnB1dCgnc2F2ZScpO1xuXG5cdC8qKlxuXHQgKiBJZiBzZXQsIHNob3dzIG1hdGVyaWFsIGljb24gb3RoZXJ3aXNlIGhpZGVzIHRoZSBpY29uc1xuXHQgKi9cblx0c2hvd0ljb24gPSBpbnB1dCh0cnVlKTtcblxuXHQvKipcblx0ICogSWYgc2V0LCBzZXRzIHRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uXG5cdCAqL1xuXHRzdHlsZSA9IGlucHV0PGFueSB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cblx0LyoqXG5cdCAqIElmIHNldCwgc2V0cyB0aGUgY2xhc3Mgb2YgdGhlIGJ1dHRvblxuXHQgKi9cblx0Y2xhc3NlcyA9IGlucHV0KCdidG4nKTtcblxuXHQvKipcblx0ICogSWYgc2V0LCBzZXRzIHRoZSBkYXRhLWN5IGF0dHJpYnV0ZSBmb3IgdGhlIGJ1dHRvblxuXHQgKi9cblx0ZGF0YUN5ID0gaW5wdXQoJ3NhdmUtYnV0dG9uJyk7XG5cblx0LyoqXG5cdCAqICBPdXRwdXQgZXZlbnQgd2hlbiBidXR0b24gaXMgY2xpY2tlZFxuXHQgKi9cblx0b25DbGljayA9IG91dHB1dDxNb3VzZUV2ZW50PigpO1xuXG5cdC8qKlxuXHQgKiAgT3V0cHV0IGV2ZW50IHdoZW4gYnV0dG9uIGlzIGZvY3VzZWRcblx0ICovXG5cdG9uRm9jdXMgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oKTtcblxuXHQvKipcblx0ICogT3V0cHV0IGV2ZW50IHdoZW4gYnV0dG9uIGlzIGJsdXJyZWRcblx0ICovXG5cdG9uQmx1ciA9IG91dHB1dDxGb2N1c0V2ZW50PigpO1xufVxuIl19
|
|
@@ -12,8 +12,8 @@ export class BsLinkButtonComponent extends BaseButtonComponent {
|
|
|
12
12
|
this.icon = input('search');
|
|
13
13
|
this.classes = input('btn text-primary');
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsLinkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: BsLinkButtonComponent, isStandalone: true, selector: "bs-link-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
17
17
|
<a
|
|
18
18
|
type="{{ type() }}"
|
|
19
19
|
class="{{ classes() }}"
|
|
@@ -30,7 +30,7 @@ export class BsLinkButtonComponent extends BaseButtonComponent {
|
|
|
30
30
|
</a>
|
|
31
31
|
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsLinkButtonComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: 'bs-link-button', standalone: true, imports: [MatButton, MatIcon, EditSolidSvgComponent, MatAnchor, NgStyle], template: `
|
|
36
36
|
<a
|
|
@@ -14,8 +14,8 @@ export class DeleteButtonComponent extends BaseButtonComponent {
|
|
|
14
14
|
this.icon = input('delete');
|
|
15
15
|
this.classes = input('delete-button');
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DeleteButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: DeleteButtonComponent, isStandalone: true, selector: "delete-button", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
19
19
|
<button
|
|
20
20
|
mat-raised-button
|
|
21
21
|
class="btn {{ classes() }}"
|
|
@@ -36,7 +36,7 @@ export class DeleteButtonComponent extends BaseButtonComponent {
|
|
|
36
36
|
</button>
|
|
37
37
|
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DeleteButtonComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
41
|
args: [{ selector: 'delete-button', standalone: true, imports: [MatButtonModule, MatIconModule, NgStyle], template: `
|
|
42
42
|
<button
|
|
@@ -13,8 +13,8 @@ export class EditBsButtonComponent extends BaseButtonComponent {
|
|
|
13
13
|
this.label = input('Edit');
|
|
14
14
|
this.classes = input('text-primary');
|
|
15
15
|
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: EditBsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: EditBsButtonComponent, isStandalone: true, selector: "edit-bs-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
18
18
|
<button
|
|
19
19
|
color="primary"
|
|
20
20
|
type="{{ type() }}"
|
|
@@ -32,7 +32,7 @@ export class EditBsButtonComponent extends BaseButtonComponent {
|
|
|
32
32
|
</button>
|
|
33
33
|
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: EditSolidSvgComponent, selector: "edit-solid-svg" }] }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: EditBsButtonComponent, decorators: [{
|
|
36
36
|
type: Component,
|
|
37
37
|
args: [{ selector: 'edit-bs-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, EditSolidSvgComponent], template: `
|
|
38
38
|
<button
|