@osovitny/anatoly 2.14.22 → 2.14.23

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.
@@ -29,6 +29,7 @@ export class UrlSlugComponent extends BaseEditComponent {
29
29
  //Inputs
30
30
  this.title = 'Permalink:';
31
31
  this.isTitleVisible = true;
32
+ this.isButtonVisible = true;
32
33
  //Outputs
33
34
  this.generating = new EventEmitter();
34
35
  }
@@ -38,27 +39,34 @@ export class UrlSlugComponent extends BaseEditComponent {
38
39
  setWatchers() {
39
40
  if (this.watchedControlName) {
40
41
  this.formGroup.get(this.watchedControlName).valueChanges.subscribe(val => {
41
- this.generateUrlSlug();
42
+ let text = this.getFormValue(this.watchedControlName);
43
+ this.generateUrlSlug(text);
42
44
  });
43
45
  }
44
46
  }
45
- generateUrlSlug() {
46
- let name = this.getFormValue(this.watchedControlName);
47
- let slugedText = Utils.slugify(name);
47
+ generateUrlSlug(text) {
48
+ let slugedText = Utils.slugify(text);
48
49
  let event = { urlSlug: slugedText };
49
50
  this.generating.emit(event);
50
51
  this.setFormValue(this.controlName, event.urlSlug);
52
+ this.hrefGo = `${event.urlSlug}`;
53
+ }
54
+ onUrlSlugChange() {
55
+ let text = this.getFormValue(this.controlName);
56
+ this.generateUrlSlug(text);
51
57
  }
52
58
  }
53
59
  UrlSlugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
54
- UrlSlugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UrlSlugComponent, selector: "anatoly-forms-urlslug", inputs: { title: "title", isTitleVisible: "isTitleVisible", controlName: "controlName", controlTitle: "controlTitle", class: "class", watchedControlName: "watchedControlName", urlPrefix: "urlPrefix" }, outputs: { generating: "generating" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (generating)='generateUrlSlug()'/>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: i4.ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
60
+ UrlSlugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UrlSlugComponent, selector: "anatoly-forms-urlslug", inputs: { title: "title", isTitleVisible: "isTitleVisible", isButtonVisible: "isButtonVisible", controlName: "controlName", controlTitle: "controlTitle", class: "class", watchedControlName: "watchedControlName", urlPrefix: "urlPrefix" }, outputs: { generating: "generating" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (keyup)=onUrlSlugChange()/>\r\n <a *ngIf=\"isButtonVisible\" href=\"{{urlPrefix}}{{hrefGo}}\" target=\"_blank\" class=\"btn btn-outline-primary\">Go</a>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: i4.ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
55
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, decorators: [{
56
62
  type: Component,
57
- args: [{ selector: 'anatoly-forms-urlslug', template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (generating)='generateUrlSlug()'/>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n" }]
63
+ args: [{ selector: 'anatoly-forms-urlslug', template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (keyup)=onUrlSlugChange()/>\r\n <a *ngIf=\"isButtonVisible\" href=\"{{urlPrefix}}{{hrefGo}}\" target=\"_blank\" class=\"btn btn-outline-primary\">Go</a>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n" }]
58
64
  }], ctorParameters: function () { return []; }, propDecorators: { title: [{
59
65
  type: Input
60
66
  }], isTitleVisible: [{
61
67
  type: Input
68
+ }], isButtonVisible: [{
69
+ type: Input
62
70
  }], controlName: [{
63
71
  type: Input
64
72
  }], controlTitle: [{
@@ -72,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
72
80
  }], generating: [{
73
81
  type: Output
74
82
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsc2x1Zy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvdWkvZm9ybXMvY29tcG9uZW50cy91cmxzbHVnL3VybHNsdWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3VpL2Zvcm1zL2NvbXBvbmVudHMvdXJsc2x1Zy91cmxzbHVnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsS0FBSztBQUNMLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBTS9DLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUFhckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQWJWLFFBQVE7UUFDQyxVQUFLLEdBQVcsWUFBWSxDQUFDO1FBQzdCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBTy9CLFNBQVM7UUFDQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFJN0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBRXBDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7NkdBckNVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHFVQzNCN0Isa3NCQVVBOzJGRGlCYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsdUJBQXVCOzBFQUt4QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55XHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55XHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAwMiBBdWcgMjAyMlxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBCYXNlRWRpdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvYmFzZS1lZGl0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FuYXRvbHktZm9ybXMtdXJsc2x1ZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VybHNsdWcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcmxTbHVnQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vSW5wdXRzXHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdQZXJtYWxpbms6JztcclxuICBASW5wdXQoKSBpc1RpdGxlVmlzaWJsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgY29udHJvbE5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBjb250cm9sVGl0bGU6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdhdGNoZWRDb250cm9sTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVybFByZWZpeDogc3RyaW5nO1xyXG5cclxuICAvL091dHB1dHNcclxuICBAT3V0cHV0KCkgZ2VuZXJhdGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRXYXRjaGVycygpO1xyXG4gIH1cclxuXHJcbiAgc2V0V2F0Y2hlcnMoKSB7XHJcbiAgICBpZiAodGhpcy53YXRjaGVkQ29udHJvbE5hbWUpIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMud2F0Y2hlZENvbnRyb2xOYW1lKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVVybFNsdWcoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVVybFNsdWcoKSB7XHJcbiAgICBsZXQgbmFtZSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKHRoaXMud2F0Y2hlZENvbnRyb2xOYW1lKTtcclxuICAgIGxldCBzbHVnZWRUZXh0ID0gVXRpbHMuc2x1Z2lmeShuYW1lKTtcclxuICAgIGxldCBldmVudCA9IHsgdXJsU2x1Zzogc2x1Z2VkVGV4dCB9O1xyXG5cclxuICAgIHRoaXMuZ2VuZXJhdGluZy5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSh0aGlzLmNvbnRyb2xOYW1lLCBldmVudC51cmxTbHVnKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJyAgY2xhc3M9XCJkLWZsZXggcGVybWFsaW5rIGZvcm0tZ3JvdXAgeydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKGNvbnRyb2xOYW1lKX0gIHt7Y2xhc3N9fVwiPlxyXG4gIDxsYWJlbCAqbmdJZj0naXNUaXRsZVZpc2libGUnIGNsYXNzPSdjb2wtZm9ybS1sYWJlbCc+IHt7IHRpdGxlIH19IDxzcGFuPiB7eyB1cmxQcmVmaXggfX0gPC9zcGFuPjwvbGFiZWw+XHJcbiAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPSdjb250cm9sTmFtZScgdHlwZT0ndGV4dCcgcGxhY2Vob2xkZXI9J1R5cGUgdXJsIHNsdWcgaGVyZScgY2xhc3M9J2Zvcm0tY29udHJvbCcgKGdlbmVyYXRpbmcpPSdnZW5lcmF0ZVVybFNsdWcoKScvPlxyXG4gIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IFtmb3JtR3JvdXBdPSdmb3JtR3JvdXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1TdWJtaXR0ZWRdPSdmb3JtU3VibWl0dGVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sTmFtZV09J2NvbnRyb2xOYW1lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sVGl0bGVdPSdjb250cm9sVGl0bGUnPlxyXG4gIDwvYW5hdG9seS1pdGVtLXZhbGlkYXRpb24tc3VtbWFyeT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsc2x1Zy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvdWkvZm9ybXMvY29tcG9uZW50cy91cmxzbHVnL3VybHNsdWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3VpL2Zvcm1zL2NvbXBvbmVudHMvdXJsc2x1Zy91cmxzbHVnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsS0FBSztBQUNMLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBTS9DLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUFnQnJEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFkVixRQUFRO1FBQ0MsVUFBSyxHQUFXLFlBQVksQ0FBQztRQUM3QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQU9oQyxTQUFTO1FBQ0MsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBSTdELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFJO1FBQ2xCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzs2R0E5Q1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0IseVdDM0I3Qix5ekJBV0E7MkZEZ0JhLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSx1QkFBdUI7MEVBT3hCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDIgQXVnIDIwMjJcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgQmFzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Jhc2UtZWRpdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbmF0b2x5LWZvcm1zLXVybHNsdWcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cmxzbHVnLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXJsU2x1Z0NvbXBvbmVudCBleHRlbmRzIEJhc2VFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBocmVmR286IHN0cmluZztcclxuXHJcbiAgLy9JbnB1dHNcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ1Blcm1hbGluazonO1xyXG4gIEBJbnB1dCgpIGlzVGl0bGVWaXNpYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpc0J1dHRvblZpc2libGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY29udHJvbFRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSB3YXRjaGVkQ29udHJvbE5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSB1cmxQcmVmaXg6IHN0cmluZztcclxuXHJcbiAgLy9PdXRwdXRzXHJcbiAgQE91dHB1dCgpIGdlbmVyYXRpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0V2F0Y2hlcnMoKTtcclxuICB9XHJcblxyXG4gIHNldFdhdGNoZXJzKCkge1xyXG4gICAgaWYgKHRoaXMud2F0Y2hlZENvbnRyb2xOYW1lKSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLndhdGNoZWRDb250cm9sTmFtZSkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gdGhpcy5nZXRGb3JtVmFsdWUodGhpcy53YXRjaGVkQ29udHJvbE5hbWUpO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVVcmxTbHVnKHRleHQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVXJsU2x1Zyh0ZXh0KSB7XHJcbiAgICBsZXQgc2x1Z2VkVGV4dCA9IFV0aWxzLnNsdWdpZnkodGV4dCk7XHJcbiAgICBsZXQgZXZlbnQgPSB7IHVybFNsdWc6IHNsdWdlZFRleHQgfTtcclxuXHJcbiAgICB0aGlzLmdlbmVyYXRpbmcuZW1pdChldmVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRGb3JtVmFsdWUodGhpcy5jb250cm9sTmFtZSwgIGV2ZW50LnVybFNsdWcpO1xyXG4gICAgdGhpcy5ocmVmR28gPSBgJHtldmVudC51cmxTbHVnfWBcclxuICB9XHJcblxyXG4gIG9uVXJsU2x1Z0NoYW5nZSgpe1xyXG4gICAgbGV0IHRleHQgPSB0aGlzLmdldEZvcm1WYWx1ZSh0aGlzLmNvbnRyb2xOYW1lKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVVcmxTbHVnKHRleHQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPSdmb3JtR3JvdXAnICBjbGFzcz1cImQtZmxleCBwZXJtYWxpbmsgZm9ybS1ncm91cCB7J2hhcy1lcnJvcic6IGlzQ29udHJvbEludmFsaWQoY29udHJvbE5hbWUpfSAge3tjbGFzc319XCI+XHJcbiAgPGxhYmVsICpuZ0lmPSdpc1RpdGxlVmlzaWJsZScgY2xhc3M9J2NvbC1mb3JtLWxhYmVsJz4ge3sgdGl0bGUgfX0gPHNwYW4+IHt7IHVybFByZWZpeCB9fSA8L3NwYW4+PC9sYWJlbD5cclxuICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09J2NvbnRyb2xOYW1lJyB0eXBlPSd0ZXh0JyBwbGFjZWhvbGRlcj0nVHlwZSB1cmwgc2x1ZyBoZXJlJyBjbGFzcz0nZm9ybS1jb250cm9sJyAoa2V5dXApPW9uVXJsU2x1Z0NoYW5nZSgpLz5cclxuICA8YSAqbmdJZj1cImlzQnV0dG9uVmlzaWJsZVwiIGhyZWY9XCJ7e3VybFByZWZpeH19e3tocmVmR299fVwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIj5HbzwvYT5cclxuICA8YW5hdG9seS1pdGVtLXZhbGlkYXRpb24tc3VtbWFyeSBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbE5hbWVdPSdjb250cm9sTmFtZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbFRpdGxlXT0nY29udHJvbFRpdGxlJz5cclxuICA8L2FuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnk+XHJcbjwvZGl2PlxyXG5cclxuIl19
@@ -3884,6 +3884,7 @@ class UrlSlugComponent extends BaseEditComponent {
3884
3884
  //Inputs
3885
3885
  this.title = 'Permalink:';
3886
3886
  this.isTitleVisible = true;
3887
+ this.isButtonVisible = true;
3887
3888
  //Outputs
3888
3889
  this.generating = new EventEmitter();
3889
3890
  }
@@ -3893,27 +3894,34 @@ class UrlSlugComponent extends BaseEditComponent {
3893
3894
  setWatchers() {
3894
3895
  if (this.watchedControlName) {
3895
3896
  this.formGroup.get(this.watchedControlName).valueChanges.subscribe(val => {
3896
- this.generateUrlSlug();
3897
+ let text = this.getFormValue(this.watchedControlName);
3898
+ this.generateUrlSlug(text);
3897
3899
  });
3898
3900
  }
3899
3901
  }
3900
- generateUrlSlug() {
3901
- let name = this.getFormValue(this.watchedControlName);
3902
- let slugedText = Utils.slugify(name);
3902
+ generateUrlSlug(text) {
3903
+ let slugedText = Utils.slugify(text);
3903
3904
  let event = { urlSlug: slugedText };
3904
3905
  this.generating.emit(event);
3905
3906
  this.setFormValue(this.controlName, event.urlSlug);
3907
+ this.hrefGo = `${event.urlSlug}`;
3908
+ }
3909
+ onUrlSlugChange() {
3910
+ let text = this.getFormValue(this.controlName);
3911
+ this.generateUrlSlug(text);
3906
3912
  }
3907
3913
  }
3908
3914
  UrlSlugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3909
- UrlSlugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UrlSlugComponent, selector: "anatoly-forms-urlslug", inputs: { title: "title", isTitleVisible: "isTitleVisible", controlName: "controlName", controlTitle: "controlTitle", class: "class", watchedControlName: "watchedControlName", urlPrefix: "urlPrefix" }, outputs: { generating: "generating" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (generating)='generateUrlSlug()'/>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
3915
+ UrlSlugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UrlSlugComponent, selector: "anatoly-forms-urlslug", inputs: { title: "title", isTitleVisible: "isTitleVisible", isButtonVisible: "isButtonVisible", controlName: "controlName", controlTitle: "controlTitle", class: "class", watchedControlName: "watchedControlName", urlPrefix: "urlPrefix" }, outputs: { generating: "generating" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (keyup)=onUrlSlugChange()/>\r\n <a *ngIf=\"isButtonVisible\" href=\"{{urlPrefix}}{{hrefGo}}\" target=\"_blank\" class=\"btn btn-outline-primary\">Go</a>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.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$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
3910
3916
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, decorators: [{
3911
3917
  type: Component,
3912
- args: [{ selector: 'anatoly-forms-urlslug', template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (generating)='generateUrlSlug()'/>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n" }]
3918
+ args: [{ selector: 'anatoly-forms-urlslug', template: "<div [formGroup]='formGroup' class=\"d-flex permalink form-group {'has-error': isControlInvalid(controlName)} {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'> {{ title }} <span> {{ urlPrefix }} </span></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' (keyup)=onUrlSlugChange()/>\r\n <a *ngIf=\"isButtonVisible\" href=\"{{urlPrefix}}{{hrefGo}}\" target=\"_blank\" class=\"btn btn-outline-primary\">Go</a>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n\r\n" }]
3913
3919
  }], ctorParameters: function () { return []; }, propDecorators: { title: [{
3914
3920
  type: Input
3915
3921
  }], isTitleVisible: [{
3916
3922
  type: Input
3923
+ }], isButtonVisible: [{
3924
+ type: Input
3917
3925
  }], controlName: [{
3918
3926
  type: Input
3919
3927
  }], controlTitle: [{