Skip to content

Commit

Permalink
Work for #3390: implement json editor tab
Browse files Browse the repository at this point in the history
  • Loading branch information
dk981234 committed Sep 1, 2022
1 parent 1bacd0c commit 5ae1574
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 7 deletions.
3 changes: 2 additions & 1 deletion packages/survey-creator-angular/angular.json
Expand Up @@ -67,7 +67,8 @@
"./example/angular-ui/src/testCafe"
],
"styles": [
"./example/angular-ui/src/styles.scss"
"./example/angular-ui/node_modules/survey-core/defaultV2.css",
"./example/angular-ui/node_modules/survey-creator-core/survey-creator-core.css"
],
"scripts": []
},
Expand Down
11 changes: 6 additions & 5 deletions packages/survey-creator-angular/package.json
Expand Up @@ -24,6 +24,7 @@
"devDependencies": {
"@angular-devkit/build-angular": "~13.2.5",
"@angular/animations": "~13.0.0",
"@angular/cdk": "~13.0.0",
"@angular/cli": "~13.0.3",
"@angular/common": "~13.0.0",
"@angular/compiler": "~13.0.0",
Expand All @@ -33,7 +34,7 @@
"@angular/platform-browser": "~13.0.0",
"@angular/platform-browser-dynamic": "~13.0.0",
"@angular/router": "~13.0.0",
"@angular/cdk": "~13.0.0",
"@types/ace": "0.0.44",
"@types/jasmine": "~3.10.0",
"@types/node": "^12.20.43",
"jasmine": "^4.1.0",
Expand All @@ -47,12 +48,12 @@
"ng-packagr": "^13.0.0",
"rxjs": "~7.4.0",
"standard-version": "^8.0.1",
"tslib": "^2.3.0",
"typescript": "~4.4.3",
"zone.js": "~0.11.4",
"survey-angular-ui": "../../../survey-library/build/survey-angular-ui",
"survey-core": "../../../survey-library/build/survey-core",
"survey-creator-core": "../survey-creator-core/build",
"survey-angular-ui": "../../../survey-library/build/survey-angular-ui"
"tslib": "^2.3.0",
"typescript": "~4.4.3",
"zone.js": "~0.11.4"
},
"scripts": {
"build": "ng build",
Expand Down
4 changes: 3 additions & 1 deletion packages/survey-creator-angular/src/angular-ui.module.ts
Expand Up @@ -13,9 +13,11 @@ import { SidebarComponent } from "./side-bar/side-bar.component";
import { SidebarTabComponent } from "./side-bar/side-bar-tab.component";
import { ObjectSelectorComponent } from "./property-panel/object-selector.component";
import { PropertyGridComponent } from "./property-panel/property-grid.component";
import { TextareaJsonEditorComponent } from "./tabs/json/json-editor-textarea.component";
import { AceJsonEditorComponent } from "./tabs/json/json-editor-ace.component";

@NgModule({
declarations: [CreatorComponent, DesignerTabComponent, SvgBundleComponent, TabbledMenuComponent, TabbedMenuItemComponent, TabbedMenuItemWrapperComponent, SidebarComponent, SidebarTabComponent, ObjectSelectorComponent, PropertyGridComponent],
declarations: [CreatorComponent, DesignerTabComponent, SvgBundleComponent, TabbledMenuComponent, TabbedMenuItemComponent, TabbedMenuItemWrapperComponent, SidebarComponent, SidebarTabComponent, ObjectSelectorComponent, PropertyGridComponent, TextareaJsonEditorComponent, AceJsonEditorComponent],
imports: [
CommonModule, FormsModule, SurveyAngularModule
],
Expand Down
@@ -0,0 +1,7 @@
<ng-template #template>
<div class="svc-creator-tab__content">
<div class="svc-json-editor-tab__content">
<div class="svc-json-editor-tab__ace-editor" #inputEl></div>
</div>
</div>
</ng-template>
@@ -0,0 +1,25 @@

import { AceJsonEditorModel, TabJsonEditorAcePlugin } from "survey-creator-core";
import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
import { AngularComponentFactory, BaseAngular } from "survey-angular-ui";

@Component({
selector: "svc-tab-json-editor-ace",
templateUrl: "./json-editor-ace.component.html",
styles: [":host { display: none; }"]
})
export class AceJsonEditorComponent extends BaseAngular<AceJsonEditorModel> implements AfterViewInit {
@Input() model!: AceJsonEditorModel;
@ViewChild("inputEl") inputEl!: ElementRef<HTMLElement>;
protected getModel(): AceJsonEditorModel {
return this.model;
}

public ngAfterViewInit(): void {
//todo fix ts
this.model.init((<any>window).ace.edit(
this.inputEl.nativeElement
));
}
}
AngularComponentFactory.Instance.registerComponent("svc-tab-json-editor-ace", AceJsonEditorComponent);
@@ -0,0 +1,21 @@
<ng-template #template>
<div class="svc-creator-tab__content">
<div class="svc-json-editor-tab__content">
<textarea class="svc-json-editor-tab__content-area"
[attr.aria-label]="model.ariaLabel"
[disabled]="model.readOnly"
[value]="model.text"
(change)="onChange($event)"
(keydown)="model.checkKey(model, $event)">
</textarea>
<button type="button" *ngIf="model.userFriendlyErrors.length !== 0" class="svc-json-editor-tab__errros_button"
(click)="model.toggleErrors">{{model.errorButtonText}}</button>
<ng-container *ngIf="model.canShowErrors">
<div class="svc-json-editor-tab__content-errors" *ngFor="let error of model.userFriendlyErrors">
<span><b>Error:</b></span>
<span>{{error}}</span>
</div>
</ng-container>
</div>
</div>
</ng-template>
@@ -0,0 +1,25 @@
import { TabJsonEditorTextareaPlugin, TextareaJsonEditorModel } from "survey-creator-core";
import { Component, Input, OnInit } from "@angular/core";
import { AngularComponentFactory, BaseAngular } from "survey-angular-ui";

@Component({
selector: "svc-tab-json-editor-textarea",
templateUrl: "./json-editor-textarea.component.html",
styles: [":host { display: none; }"]
})
export class TextareaJsonEditorComponent extends BaseAngular<TextareaJsonEditorModel> implements OnInit {
@Input() model!: TextareaJsonEditorModel;
protected getModel(): TextareaJsonEditorModel {
return this.model;
}

public onChange(event: any): void {
this.model.text = event.target.value;
}

public override ngOnInit(): void {
this.model.canShowErrors = false;
super.ngOnInit();
}
}
AngularComponentFactory.Instance.registerComponent("svc-tab-json-editor-textarea", TextareaJsonEditorComponent);

0 comments on commit 5ae1574

Please sign in to comment.