@skyux/inline-form 5.0.0 → 5.0.1
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/bundles/skyux-inline-form.umd.js +74 -84
- package/bundles/skyux-inline-form.umd.js.map +1 -1
- package/documentation.json +34 -29
- package/esm2015/modules/inline-form/animations/slide-dissolve.js +9 -13
- package/esm2015/modules/inline-form/inline-form-adapter.service.js +10 -10
- package/esm2015/modules/inline-form/inline-form.component.js +26 -28
- package/esm2015/modules/inline-form/inline-form.module.js +8 -19
- package/esm2015/modules/inline-form/types/inline-form-button-action.js +1 -1
- package/esm2015/modules/inline-form/types/inline-form-button-config.js +1 -1
- package/esm2015/modules/inline-form/types/inline-form-button-layout.js +1 -1
- package/esm2015/modules/inline-form/types/inline-form-config.js +1 -1
- package/esm2015/modules/shared/sky-inline-form-resources.module.js +21 -12
- package/fesm2015/skyux-inline-form.js +66 -74
- package/fesm2015/skyux-inline-form.js.map +1 -1
- package/package.json +5 -5
package/documentation.json
CHANGED
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"name": "NgModule"
|
|
134
134
|
},
|
|
135
135
|
"arguments": {
|
|
136
|
-
"obj": "{\n declarations: [
|
|
136
|
+
"obj": "{\n declarations: [SkyInlineFormComponent],\n imports: [CommonModule, SkyInlineFormResourcesModule],\n exports: [SkyInlineFormComponent],\n}"
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
],
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
"sources": [
|
|
173
173
|
{
|
|
174
174
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.module.ts",
|
|
175
|
-
"line":
|
|
175
|
+
"line": 14,
|
|
176
176
|
"character": 13
|
|
177
177
|
}
|
|
178
178
|
]
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
"name": "Component"
|
|
195
195
|
},
|
|
196
196
|
"arguments": {
|
|
197
|
-
"obj": "{\n selector: 'sky-inline-form',\n templateUrl: './inline-form.component.html',\n styleUrls: ['./inline-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [
|
|
197
|
+
"obj": "{\n selector: 'sky-inline-form',\n templateUrl: './inline-form.component.html',\n styleUrls: ['./inline-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkyInlineFormAdapterService],\n animations: [skySlideDissolve],\n}"
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
],
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
"sources": [
|
|
209
209
|
{
|
|
210
210
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
211
|
-
"line":
|
|
211
|
+
"line": 105,
|
|
212
212
|
"character": 2
|
|
213
213
|
}
|
|
214
214
|
],
|
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
"sources": [
|
|
302
302
|
{
|
|
303
303
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
304
|
-
"line":
|
|
304
|
+
"line": 99,
|
|
305
305
|
"character": 9
|
|
306
306
|
}
|
|
307
307
|
],
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
"sources": [
|
|
339
339
|
{
|
|
340
340
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
341
|
-
"line":
|
|
341
|
+
"line": 97,
|
|
342
342
|
"character": 9
|
|
343
343
|
}
|
|
344
344
|
],
|
|
@@ -385,7 +385,7 @@
|
|
|
385
385
|
"sources": [
|
|
386
386
|
{
|
|
387
387
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
388
|
-
"line":
|
|
388
|
+
"line": 67,
|
|
389
389
|
"character": 9
|
|
390
390
|
}
|
|
391
391
|
],
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
"sources": [
|
|
422
422
|
{
|
|
423
423
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
424
|
-
"line":
|
|
424
|
+
"line": 51,
|
|
425
425
|
"character": 13
|
|
426
426
|
}
|
|
427
427
|
],
|
|
@@ -500,7 +500,7 @@
|
|
|
500
500
|
"sources": [
|
|
501
501
|
{
|
|
502
502
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
503
|
-
"line":
|
|
503
|
+
"line": 75,
|
|
504
504
|
"character": 13
|
|
505
505
|
}
|
|
506
506
|
],
|
|
@@ -567,7 +567,7 @@
|
|
|
567
567
|
"sources": [
|
|
568
568
|
{
|
|
569
569
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
570
|
-
"line":
|
|
570
|
+
"line": 121,
|
|
571
571
|
"character": 9
|
|
572
572
|
}
|
|
573
573
|
],
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
"sources": [
|
|
611
611
|
{
|
|
612
612
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
613
|
-
"line":
|
|
613
|
+
"line": 117,
|
|
614
614
|
"character": 9
|
|
615
615
|
}
|
|
616
616
|
],
|
|
@@ -647,7 +647,7 @@
|
|
|
647
647
|
"sources": [
|
|
648
648
|
{
|
|
649
649
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
650
|
-
"line":
|
|
650
|
+
"line": 113,
|
|
651
651
|
"character": 9
|
|
652
652
|
}
|
|
653
653
|
],
|
|
@@ -712,7 +712,7 @@
|
|
|
712
712
|
"sources": [
|
|
713
713
|
{
|
|
714
714
|
"fileName": "projects/inline-form/src/modules/inline-form/inline-form.component.ts",
|
|
715
|
-
"line":
|
|
715
|
+
"line": 45,
|
|
716
716
|
"character": 13
|
|
717
717
|
}
|
|
718
718
|
],
|
|
@@ -755,7 +755,7 @@
|
|
|
755
755
|
"sources": [
|
|
756
756
|
{
|
|
757
757
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-button-config.ts",
|
|
758
|
-
"line":
|
|
758
|
+
"line": 10,
|
|
759
759
|
"character": 2
|
|
760
760
|
}
|
|
761
761
|
],
|
|
@@ -784,7 +784,7 @@
|
|
|
784
784
|
"sources": [
|
|
785
785
|
{
|
|
786
786
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-button-config.ts",
|
|
787
|
-
"line":
|
|
787
|
+
"line": 22,
|
|
788
788
|
"character": 2
|
|
789
789
|
}
|
|
790
790
|
],
|
|
@@ -807,7 +807,7 @@
|
|
|
807
807
|
"sources": [
|
|
808
808
|
{
|
|
809
809
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-button-config.ts",
|
|
810
|
-
"line":
|
|
810
|
+
"line": 30,
|
|
811
811
|
"character": 2
|
|
812
812
|
}
|
|
813
813
|
],
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"sources": [
|
|
835
835
|
{
|
|
836
836
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-button-config.ts",
|
|
837
|
-
"line":
|
|
837
|
+
"line": 16,
|
|
838
838
|
"character": 2
|
|
839
839
|
}
|
|
840
840
|
],
|
|
@@ -938,7 +938,7 @@
|
|
|
938
938
|
"sources": [
|
|
939
939
|
{
|
|
940
940
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-config.ts",
|
|
941
|
-
"line":
|
|
941
|
+
"line": 16,
|
|
942
942
|
"character": 2
|
|
943
943
|
}
|
|
944
944
|
],
|
|
@@ -962,7 +962,7 @@
|
|
|
962
962
|
"sources": [
|
|
963
963
|
{
|
|
964
964
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-config.ts",
|
|
965
|
-
"line":
|
|
965
|
+
"line": 20,
|
|
966
966
|
"character": 2
|
|
967
967
|
}
|
|
968
968
|
],
|
|
@@ -989,7 +989,7 @@
|
|
|
989
989
|
"sources": [
|
|
990
990
|
{
|
|
991
991
|
"fileName": "projects/inline-form/src/modules/inline-form/types/inline-form-config.ts",
|
|
992
|
-
"line":
|
|
992
|
+
"line": 8,
|
|
993
993
|
"character": 17
|
|
994
994
|
}
|
|
995
995
|
]
|
|
@@ -1030,40 +1030,45 @@
|
|
|
1030
1030
|
]
|
|
1031
1031
|
},
|
|
1032
1032
|
"codeExamples": [
|
|
1033
|
+
{
|
|
1034
|
+
"fileName": ".eslintrc.json",
|
|
1035
|
+
"filePath": "/projects/inline-form/documentation/code-examples/.eslintrc.json",
|
|
1036
|
+
"rawContents": "{\n \"extends\": [\"../../.eslintrc.json\"],\n \"overrides\": [\n {\n \"files\": [\"*.ts\"],\n \"rules\": {\n \"@angular-eslint/directive-selector\": [\n \"error\",\n {\n \"type\": \"attribute\",\n \"prefix\": \"app\",\n \"style\": \"camelCase\"\n }\n ],\n \"@angular-eslint/component-selector\": [\n \"error\",\n {\n \"type\": \"element\",\n \"prefix\": \"app\",\n \"style\": \"kebab-case\"\n }\n ]\n }\n }\n ]\n}\n"
|
|
1037
|
+
},
|
|
1033
1038
|
{
|
|
1034
1039
|
"fileName": "inline-form-demo.component.html",
|
|
1035
1040
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/basic/inline-form-demo.component.html",
|
|
1036
|
-
"rawContents": "<sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n>\n <table>\n <tr>\n <th
|
|
1041
|
+
"rawContents": "<sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n>\n <table>\n <tr>\n <th>First name:</th>\n <td>\n {{ firstName }}\n </td>\n <td>\n <button\n aria-label=\"Edit\"\n class=\"sky-btn sky-btn-link sky-demo-btn-edit\"\n (click)=\"onInlineFormOpen()\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n </button>\n </td>\n </tr>\n </table>\n</sky-inline-form>\n\n<ng-template #inlineFormTemplate>\n <form novalidate [formGroup]=\"myForm\">\n <div class=\"sky-form-group\">\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"firstNameInput.id\">\n First name\n </label>\n <input\n class=\"sky-form-control\"\n formControlName=\"myFirstName\"\n skyId\n type=\"text\"\n #firstNameInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n </form>\n</ng-template>\n"
|
|
1037
1042
|
},
|
|
1038
1043
|
{
|
|
1039
1044
|
"fileName": "inline-form-demo.component.ts",
|
|
1040
1045
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/basic/inline-form-demo.component.ts",
|
|
1041
|
-
"rawContents": "import {
|
|
1046
|
+
"rawContents": "import { Component, OnInit } from '@angular/core';\n\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\n\nimport {\n SkyInlineFormButtonLayout,\n SkyInlineFormCloseArgs,\n SkyInlineFormConfig,\n} from '@skyux/inline-form';\n\n@Component({\n selector: 'app-inline-form-demo',\n templateUrl: './inline-form-demo.component.html',\n})\nexport class InlineFormDemoComponent implements OnInit {\n public firstName: string = 'Jane';\n\n public myForm: FormGroup;\n\n public inlineFormConfig: SkyInlineFormConfig = {\n buttonLayout: SkyInlineFormButtonLayout.SaveCancel,\n };\n\n public showForm: boolean = false;\n\n constructor(private formBuilder: FormBuilder) {}\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n myFirstName: new FormControl(),\n });\n }\n\n public onInlineFormClose(args: SkyInlineFormCloseArgs): void {\n if (args.reason === 'save') {\n this.firstName = this.myForm.get('myFirstName').value;\n }\n\n this.showForm = false;\n this.myForm.patchValue({\n myFirstName: undefined,\n });\n }\n\n public onInlineFormOpen(): void {\n this.showForm = true;\n this.myForm.patchValue({\n myFirstName: this.firstName,\n });\n }\n}\n"
|
|
1042
1047
|
},
|
|
1043
1048
|
{
|
|
1044
1049
|
"fileName": "inline-form-demo.module.ts",
|
|
1045
1050
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/basic/inline-form-demo.module.ts",
|
|
1046
|
-
"rawContents": "import {
|
|
1051
|
+
"rawContents": "import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SkyIdModule } from '@skyux/core';\n\nimport { SkyInputBoxModule } from '@skyux/forms';\n\nimport { SkyIconModule } from '@skyux/indicators';\n\nimport { SkyInlineFormModule } from '@skyux/inline-form';\n\nimport { InlineFormDemoComponent } from './inline-form-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SkyIconModule,\n SkyIdModule,\n SkyInlineFormModule,\n SkyInputBoxModule,\n ],\n exports: [InlineFormDemoComponent],\n declarations: [InlineFormDemoComponent],\n})\nexport class InlineFormDemoModule {}\n"
|
|
1047
1052
|
},
|
|
1048
1053
|
{
|
|
1049
1054
|
"fileName": "inline-form-demo.component.html",
|
|
1050
1055
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/custom-buttons/inline-form-demo.component.html",
|
|
1051
|
-
"rawContents": "<sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n>\n <table>\n <tr>\n <th
|
|
1056
|
+
"rawContents": "<sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n>\n <table>\n <tr>\n <th>First name:</th>\n <td>\n {{ firstName }}\n </td>\n <td>\n <button\n aria-label=\"Edit\"\n class=\"sky-btn sky-btn-link sky-demo-btn-edit\"\n (click)=\"onInlineFormOpen()\"\n >\n <sky-icon icon=\"pencil\"></sky-icon>\n </button>\n </td>\n </tr>\n </table>\n</sky-inline-form>\n\n<ng-template #inlineFormTemplate>\n <form novalidate [formGroup]=\"myForm\">\n <div class=\"sky-form-group\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"firstNameInput.id\"\n >\n First name\n </label>\n <input\n class=\"sky-form-control\"\n formControlName=\"myFirstName\"\n required\n skyId\n type=\"text\"\n #firstNameInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n </form>\n</ng-template>\n"
|
|
1052
1057
|
},
|
|
1053
1058
|
{
|
|
1054
1059
|
"fileName": "inline-form-demo.component.ts",
|
|
1055
1060
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/custom-buttons/inline-form-demo.component.ts",
|
|
1056
|
-
"rawContents": "import {
|
|
1061
|
+
"rawContents": "import { Component, OnInit } from '@angular/core';\n\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\n\nimport {\n SkyInlineFormButtonLayout,\n SkyInlineFormCloseArgs,\n SkyInlineFormConfig,\n} from '@skyux/inline-form';\n\n@Component({\n selector: 'app-inline-form-demo',\n templateUrl: './inline-form-demo.component.html',\n})\nexport class InlineFormDemoComponent implements OnInit {\n public firstName: string = 'Jane';\n\n public myForm: FormGroup;\n\n public inlineFormConfig: SkyInlineFormConfig = {\n buttonLayout: SkyInlineFormButtonLayout.Custom,\n buttons: [\n {\n action: 'save',\n text: 'Save',\n styleType: 'primary',\n },\n {\n action: 'delete',\n text: 'Delete',\n styleType: 'default',\n },\n {\n action: 'reset',\n text: 'Reset',\n styleType: 'default',\n },\n {\n action: 'cancel',\n text: 'Cancel',\n styleType: 'link',\n },\n ],\n };\n\n public showForm: boolean = false;\n\n constructor(private formBuilder: FormBuilder) {}\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n myFirstName: new FormControl(),\n });\n\n this.myForm.valueChanges.subscribe(() => {\n if (this.inlineFormConfig.buttons[0].disabled !== this.myForm.invalid) {\n this.inlineFormConfig.buttons[0].disabled = this.myForm.invalid;\n this.inlineFormConfig = { ...{}, ...this.inlineFormConfig };\n }\n });\n }\n\n public onInlineFormClose(args: SkyInlineFormCloseArgs): void {\n if (args.reason === 'save') {\n this.firstName = this.myForm.get('myFirstName').value;\n }\n\n this.showForm = false;\n this.myForm.patchValue({\n myFirstName: undefined,\n });\n }\n\n public onInlineFormOpen(): void {\n this.showForm = true;\n this.myForm.patchValue({\n myFirstName: this.firstName,\n });\n }\n}\n"
|
|
1057
1062
|
},
|
|
1058
1063
|
{
|
|
1059
1064
|
"fileName": "inline-form-demo.module.ts",
|
|
1060
1065
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/custom-buttons/inline-form-demo.module.ts",
|
|
1061
|
-
"rawContents": "import {
|
|
1066
|
+
"rawContents": "import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SkyIdModule } from '@skyux/core';\n\nimport { SkyInputBoxModule } from '@skyux/forms';\n\nimport { SkyIconModule } from '@skyux/indicators';\n\nimport { SkyInlineFormModule } from '@skyux/inline-form';\n\nimport { InlineFormDemoComponent } from './inline-form-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SkyIconModule,\n SkyIdModule,\n SkyInlineFormModule,\n SkyInputBoxModule,\n ],\n exports: [InlineFormDemoComponent],\n declarations: [InlineFormDemoComponent],\n})\nexport class InlineFormDemoModule {}\n"
|
|
1062
1067
|
},
|
|
1063
1068
|
{
|
|
1064
1069
|
"fileName": "inline-form-demo.component.html",
|
|
1065
1070
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/repeaters/inline-form-demo.component.html",
|
|
1066
|
-
"rawContents": "<sky-repeater>\n <sky-repeater-item
|
|
1071
|
+
"rawContents": "<sky-repeater>\n <sky-repeater-item\n *ngFor=\"let item of items\"\n [inlineFormConfig]=\"inlineFormConfig\"\n [inlineFormTemplate]=\"inlineFormTemplate\"\n [showInlineForm]=\"activeInlineFormId === item.id\"\n (inlineFormClose)=\"onInlineFormClose($event)\"\n >\n <sky-repeater-item-title class=\"demo-repeater-flex\">\n <div class=\"sky-emphasized\">\n {{ item.title }}\n </div>\n <div>\n <button\n aria-label=\"Edit\"\n class=\"\n sky-btn\n sky-btn-link\n sky-btn-link-inline\n sky-no-focus\n sky-demo-btn-edit\n \"\n type=\"button\"\n (click)=\"showInlineForm(item)\"\n >\n <sky-icon icon=\"pencil\"> </sky-icon>\n </button>\n </div>\n </sky-repeater-item-title>\n\n <sky-repeater-item-content>\n {{ item.note }}\n </sky-repeater-item-content>\n </sky-repeater-item>\n</sky-repeater>\n\n<ng-template #inlineFormTemplate>\n <form novalidate [formGroup]=\"myForm\">\n <div class=\"sky-form-group\">\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"myTitle.id\"> Title </label>\n <input\n class=\"sky-form-control\"\n formControlName=\"title\"\n skyId\n type=\"text\"\n #myTitle=\"skyId\"\n />\n </sky-input-box>\n </div>\n <div class=\"sky-form-group\">\n <sky-input-box>\n <label class=\"sky-control-label\" [for]=\"myNote.id\"> Note </label>\n <input\n class=\"sky-form-control\"\n formControlName=\"note\"\n skyId\n type=\"text\"\n #myNote=\"skyId\"\n />\n </sky-input-box>\n </div>\n </form>\n</ng-template>\n"
|
|
1067
1072
|
},
|
|
1068
1073
|
{
|
|
1069
1074
|
"fileName": "inline-form-demo.component.scss",
|
|
@@ -1073,12 +1078,12 @@
|
|
|
1073
1078
|
{
|
|
1074
1079
|
"fileName": "inline-form-demo.component.ts",
|
|
1075
1080
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/repeaters/inline-form-demo.component.ts",
|
|
1076
|
-
"rawContents": "import {
|
|
1081
|
+
"rawContents": "import { Component, OnInit } from '@angular/core';\n\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\n\nimport {\n SkyInlineFormButtonLayout,\n SkyInlineFormCloseArgs,\n SkyInlineFormConfig,\n} from '@skyux/inline-form';\n\n@Component({\n selector: 'app-inline-form-demo',\n templateUrl: './inline-form-demo.component.html',\n styleUrls: ['./inline-form-demo.component.scss'],\n})\nexport class InlineFormDemoComponent implements OnInit {\n public activeInlineFormId: string;\n\n public inlineFormConfig: SkyInlineFormConfig = {\n buttonLayout: SkyInlineFormButtonLayout.SaveCancel,\n };\n\n public items: any[] = [\n {\n id: '1',\n title: '2019 Spring Gala',\n note: 'Gala for friends and family',\n },\n {\n id: '2',\n title: '2019 Special Winter Event',\n note: 'A special event',\n },\n {\n id: '3',\n title: '2019 Donor Appreciation Event',\n note: 'Event for all donors and families',\n },\n {\n id: '4',\n title: '2020 Spring Gala',\n note: 'Gala for friends and family',\n },\n ];\n\n public myForm: FormGroup;\n\n constructor(private formBuilder: FormBuilder) {}\n\n public ngOnInit(): void {\n this.myForm = this.formBuilder.group({\n id: new FormControl(),\n title: new FormControl(),\n note: new FormControl(),\n });\n }\n\n public showInlineForm(item: any): void {\n this.activeInlineFormId = item.id;\n this.myForm.patchValue({\n note: item.note,\n title: item.title,\n });\n }\n\n public onInlineFormClose(args: SkyInlineFormCloseArgs): void {\n if (args.reason === 'save') {\n const found = this.items.find(\n (item) => item.id === this.activeInlineFormId\n );\n found.note = this.myForm.get('note').value;\n found.title = this.myForm.get('title').value;\n }\n\n this.myForm.patchValue({\n note: undefined,\n title: undefined,\n });\n\n // Close the active form.\n this.activeInlineFormId = undefined;\n }\n}\n"
|
|
1077
1082
|
},
|
|
1078
1083
|
{
|
|
1079
1084
|
"fileName": "inline-form-demo.module.ts",
|
|
1080
1085
|
"filePath": "/projects/inline-form/documentation/code-examples/inline-form/repeaters/inline-form-demo.module.ts",
|
|
1081
|
-
"rawContents": "import {
|
|
1086
|
+
"rawContents": "import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SkyIdModule } from '@skyux/core';\n\nimport { SkyInputBoxModule } from '@skyux/forms';\n\nimport { SkyIconModule } from '@skyux/indicators';\n\nimport { SkyInlineFormModule } from '@skyux/inline-form';\n\nimport { SkyRepeaterModule } from '@skyux/lists';\n\nimport { InlineFormDemoComponent } from './inline-form-demo.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n SkyIconModule,\n SkyIdModule,\n SkyInlineFormModule,\n SkyInputBoxModule,\n SkyRepeaterModule,\n ],\n exports: [InlineFormDemoComponent],\n declarations: [InlineFormDemoComponent],\n})\nexport class InlineFormDemoModule {}\n"
|
|
1082
1087
|
}
|
|
1083
1088
|
]
|
|
1084
1089
|
}
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
import { animate, group, query, style, transition, trigger } from '@angular/animations';
|
|
1
|
+
import { animate, group, query, style, transition, trigger, } from '@angular/animations';
|
|
2
2
|
export const skySlideDissolve = trigger('skySlideDissolve', [
|
|
3
3
|
transition('* <=> *', [
|
|
4
4
|
// Expand animations
|
|
5
5
|
query('.sky-slide-dissolve-last:enter', [
|
|
6
6
|
style({ height: 0, opacity: 0 }),
|
|
7
|
-
animate('200ms ease-in', style({ height: '*', opacity: 0 }))
|
|
7
|
+
animate('200ms ease-in', style({ height: '*', opacity: 0 })),
|
|
8
8
|
], { optional: true }),
|
|
9
9
|
query('.sky-slide-dissolve-last:enter', [
|
|
10
10
|
style({ opacity: 0 }),
|
|
11
|
-
animate('200ms ease-in', style({ opacity: 1 }))
|
|
11
|
+
animate('200ms ease-in', style({ opacity: 1 })),
|
|
12
12
|
], { optional: true }),
|
|
13
13
|
// Collapse animations
|
|
14
14
|
// The expanded content should fade out immediately to prevent
|
|
15
15
|
// any overlap with the read-only content that's returning to the screen.
|
|
16
|
-
query('.sky-slide-dissolve-last:leave', [
|
|
17
|
-
animate('0ms', style({ opacity: 0 }))
|
|
18
|
-
], { optional: true }),
|
|
16
|
+
query('.sky-slide-dissolve-last:leave', [animate('0ms', style({ opacity: 0 }))], { optional: true }),
|
|
19
17
|
group([
|
|
20
18
|
query('.sky-slide-dissolve-first:enter', [
|
|
21
19
|
style({ opacity: 0, height: 0 }),
|
|
22
|
-
animate('100ms ease-in', style({ opacity: 1, height: '*' }))
|
|
20
|
+
animate('100ms ease-in', style({ opacity: 1, height: '*' })),
|
|
23
21
|
], { optional: true }),
|
|
24
|
-
query('.sky-slide-dissolve-last:leave', [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
])
|
|
28
|
-
])
|
|
22
|
+
query('.sky-slide-dissolve-last:leave', [animate('200ms ease-in', style({ height: 0 }))], { optional: true }),
|
|
23
|
+
]),
|
|
24
|
+
]),
|
|
29
25
|
]);
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtZGlzc29sdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmxpbmUtZm9ybS9zcmMvbW9kdWxlcy9pbmxpbmUtZm9ybS9hbmltYXRpb25zL3NsaWRlLWRpc3NvbHZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUE2QixPQUFPLENBQy9ELGtCQUFrQixFQUNsQjtJQUNFLFVBQVUsQ0FBQyxTQUFTLEVBQUU7UUFDcEIsb0JBQW9CO1FBQ3BCLEtBQUssQ0FDSCxnQ0FBZ0MsRUFDaEM7WUFDRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDN0QsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDbkI7UUFDRCxLQUFLLENBQ0gsZ0NBQWdDLEVBQ2hDO1lBQ0UsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEQsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDbkI7UUFFRCxzQkFBc0I7UUFDdEIsOERBQThEO1FBQzlELHlFQUF5RTtRQUN6RSxLQUFLLENBQ0gsZ0NBQWdDLEVBQ2hDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3ZDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNuQjtRQUVELEtBQUssQ0FBQztZQUNKLEtBQUssQ0FDSCxpQ0FBaUMsRUFDakM7Z0JBQ0UsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUM3RCxFQUNELEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNuQjtZQUNELEtBQUssQ0FDSCxnQ0FBZ0MsRUFDaEMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDaEQsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CO1NBQ0YsQ0FBQztLQUNILENBQUM7Q0FDSCxDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGEsXG4gIGdyb3VwLFxuICBxdWVyeSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgY29uc3Qgc2t5U2xpZGVEaXNzb2x2ZTogQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhID0gdHJpZ2dlcihcbiAgJ3NreVNsaWRlRGlzc29sdmUnLFxuICBbXG4gICAgdHJhbnNpdGlvbignKiA8PT4gKicsIFtcbiAgICAgIC8vIEV4cGFuZCBhbmltYXRpb25zXG4gICAgICBxdWVyeShcbiAgICAgICAgJy5za3ktc2xpZGUtZGlzc29sdmUtbGFzdDplbnRlcicsXG4gICAgICAgIFtcbiAgICAgICAgICBzdHlsZSh7IGhlaWdodDogMCwgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMCB9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICAgICAgKSxcbiAgICAgIHF1ZXJ5KFxuICAgICAgICAnLnNreS1zbGlkZS1kaXNzb2x2ZS1sYXN0OmVudGVyJyxcbiAgICAgICAgW1xuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9XG4gICAgICApLFxuXG4gICAgICAvLyBDb2xsYXBzZSBhbmltYXRpb25zXG4gICAgICAvLyBUaGUgZXhwYW5kZWQgY29udGVudCBzaG91bGQgZmFkZSBvdXQgaW1tZWRpYXRlbHkgdG8gcHJldmVudFxuICAgICAgLy8gYW55IG92ZXJsYXAgd2l0aCB0aGUgcmVhZC1vbmx5IGNvbnRlbnQgdGhhdCdzIHJldHVybmluZyB0byB0aGUgc2NyZWVuLlxuICAgICAgcXVlcnkoXG4gICAgICAgICcuc2t5LXNsaWRlLWRpc3NvbHZlLWxhc3Q6bGVhdmUnLFxuICAgICAgICBbYW5pbWF0ZSgnMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKV0sXG4gICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICAgICAgKSxcblxuICAgICAgZ3JvdXAoW1xuICAgICAgICBxdWVyeShcbiAgICAgICAgICAnLnNreS1zbGlkZS1kaXNzb2x2ZS1maXJzdDplbnRlcicsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgICAgICBhbmltYXRlKCcxMDBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH1cbiAgICAgICAgKSxcbiAgICAgICAgcXVlcnkoXG4gICAgICAgICAgJy5za3ktc2xpZGUtZGlzc29sdmUtbGFzdDpsZWF2ZScsXG4gICAgICAgICAgW2FuaW1hdGUoJzIwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogMCB9KSldLFxuICAgICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF1cbik7XG4iXX0=
|
|
@@ -4,15 +4,15 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
const SKY_TABBABLE_SELECTOR = [
|
|
5
5
|
'a[href]',
|
|
6
6
|
'area[href]',
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
"input:not([disabled]):not([tabindex='-1'])",
|
|
8
|
+
"button:not([disabled]):not([tabindex='-1'])",
|
|
9
|
+
"select:not([disabled]):not([tabindex='-1'])",
|
|
10
|
+
"textarea:not([disabled]):not([tabindex='-1'])",
|
|
11
11
|
'iframe',
|
|
12
12
|
'object',
|
|
13
13
|
'embed',
|
|
14
|
-
|
|
15
|
-
'*[contenteditable=true]'
|
|
14
|
+
"*[tabindex]:not([tabindex='-1'])",
|
|
15
|
+
'*[contenteditable=true]',
|
|
16
16
|
].join(', ');
|
|
17
17
|
/* tslint:enable */
|
|
18
18
|
/**
|
|
@@ -54,9 +54,9 @@ export class SkyInlineFormAdapterService {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
SkyInlineFormAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
58
|
-
SkyInlineFormAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
57
|
+
SkyInlineFormAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyInlineFormAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
+
SkyInlineFormAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyInlineFormAdapterService });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyInlineFormAdapterService, decorators: [{
|
|
60
60
|
type: Injectable
|
|
61
61
|
}] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWZvcm0tYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5saW5lLWZvcm0vc3JjL21vZHVsZXMvaW5saW5lLWZvcm0vaW5saW5lLWZvcm0tYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXZELG9CQUFvQjtBQUNwQixNQUFNLHFCQUFxQixHQUFHO0lBQzVCLFNBQVM7SUFDVCxZQUFZO0lBQ1osNENBQTRDO0lBQzVDLDZDQUE2QztJQUM3Qyw2Q0FBNkM7SUFDN0MsK0NBQStDO0lBQy9DLFFBQVE7SUFDUixRQUFRO0lBQ1IsT0FBTztJQUNQLGtDQUFrQztJQUNsQyx5QkFBeUI7Q0FDMUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDYixtQkFBbUI7QUFFbkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sMkJBQTJCO0lBQy9CLGNBQWMsQ0FBQyxvQkFBZ0M7UUFDcEQsTUFBTSxrQkFBa0IsR0FDdEIsb0JBQW9CLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRSxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLE9BQU8sR0FDVCxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUM5QywwQkFBMEIsQ0FDM0IsQ0FBQztZQUNKLElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQWlCO1FBQzdDLE1BQU0sUUFBUSxHQUF1QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzdELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUM3QyxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxPQUFvQjtRQUNwQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUM7UUFDM0UsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUNsQixPQUFPLENBQUMsV0FBVztZQUNuQixPQUFPLENBQUMsWUFBWTtZQUNwQixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUNoQyxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQXdCO1FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7eUhBaERVLDJCQUEyQjs2SEFBM0IsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qIHRzbGludDpkaXNhYmxlICovXG5jb25zdCBTS1lfVEFCQkFCTEVfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJyxcbiAgJ2FyZWFbaHJlZl0nLFxuICBcImlucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSctMSddKVwiLFxuICBcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0nLTEnXSlcIixcbiAgXCJzZWxlY3Q6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pXCIsXG4gIFwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pXCIsXG4gICdpZnJhbWUnLFxuICAnb2JqZWN0JyxcbiAgJ2VtYmVkJyxcbiAgXCIqW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSctMSddKVwiLFxuICAnKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0nLFxuXS5qb2luKCcsICcpO1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5SW5saW5lRm9ybUFkYXB0ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGFwcGx5QXV0b2ZvY3VzKGlubGluZUZvcm1FbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRXaXRoQXV0b2ZvY3VzID1cbiAgICAgIGlubGluZUZvcm1FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2F1dG9mb2N1c10nKTtcblxuICAgIGlmIChpbnB1dFdpdGhBdXRvZm9jdXMpIHtcbiAgICAgIGlucHV0V2l0aEF1dG9mb2N1cy5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZm9jdXNFbDogSFRNTEVsZW1lbnQgPVxuICAgICAgICBpbmxpbmVGb3JtRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgJy5za3ktaW5saW5lLWZvcm0tY29udGVudCdcbiAgICAgICAgKTtcbiAgICAgIGxldCBmb2N1c2FibGVDaGlsZHJlbiA9IHRoaXMubG9hZEZvY3VzYWJsZUNoaWxkcmVuKGZvY3VzRWwpO1xuXG4gICAgICB0aGlzLmZvY3VzRmlyc3RFbGVtZW50KGZvY3VzYWJsZUNoaWxkcmVuKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRGb2N1c2FibGVDaGlsZHJlbihlbGVtOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50W10ge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBBcnJheTxIVE1MRWxlbWVudD4gPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChcbiAgICAgIGVsZW0ucXVlcnlTZWxlY3RvckFsbChTS1lfVEFCQkFCTEVfU0VMRUNUT1IpXG4gICAgKTtcblxuICAgIHJldHVybiBlbGVtZW50cy5maWx0ZXIoKGVsZW1lbnQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZShlbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWaXNpYmxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBjb25zdCBpc0hpZGRlbiA9IHN0eWxlLmRpc3BsYXkgPT09ICdub25lJyB8fCBzdHlsZS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJztcbiAgICBpZiAoaXNIaWRkZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGNvbnN0IGhhc0JvdW5kcyA9ICEhKFxuICAgICAgZWxlbWVudC5vZmZzZXRXaWR0aCB8fFxuICAgICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHxcbiAgICAgIGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGhcbiAgICApO1xuICAgIHJldHVybiBoYXNCb3VuZHM7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzRmlyc3RFbGVtZW50KGxpc3Q6IEFycmF5PEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpc3RbMF0uZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|