ngx-antd-json-schema-form
v1.0.8
Published
JSON form schema using ant-design and prismjs
Downloads
21
Maintainers
Readme
ngx-antd-json-schema-form
JSON schema form with ant-design and prsimjs
This plugin uses ng-zorro-antd and prismjs
Demo: https://bhavinpatel04.github.io/ngx-antd-json-schema-form/
Features
Emits the new updated schema when the form value changes
Installation
Install the plugin from npm:
npm install ngx-antd-json-schema-form --save
import NgxAntdJsonSchemaFormModule in your module:
...
import { FormsModule } from '@angular/forms';
import { NgxAntdJsonSchemaFormModule } from 'ngx-antd-json-schema-form';
import { AppComponent } from "./app.component";
@NgModule({
imports: [... , FormsModule, NgxAntdJsonSchemaFormModule],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
Add Styles in angular.json
:
...
"assets": [...],
"styles": [
"node_modules/ng-zorro-antd/ng-zorro-antd.min.css",
"node_modules/prismjs/themes/prism.css",
"src/styles.scss"
],
...
Usage example
The component using this library should have
encapsulation: ViewEncapsulation.None
Html:
<ngx-antd-json-schema-form [(schema)]="schema" [settings]="settings" (submit)="submit($event)">
</ngx-antd-json-schema-form>
Typescript:
schema: [
{
key: "input",
label: "input",
type: "input",
required: true,
value: ""
},
{
key: "input-hidden",
label: "input-hidden",
type: "input",
required: true,
hidden: true,
value: "blah-blah"
},
{
key: "checkbox",
label: "checkbox",
type: "checkbox",
required: true,
value: true
},
{
key: "radio",
label: "radio",
type: "radio",
required: true,
value: "yes",
options: [
{
label: "Yes",
value: "yes"
},
{
label: "No",
value: "No"
}
] as FormOption[]
},
{
key: "radio-button",
label: "radio-button",
type: "radio-button",
required: false,
value: false,
options: [
{
label: "Yes",
value: true
},
{
label: "No",
value: false
}
] as FormOption[]
},
{
key: "select",
label: "select",
type: "select",
options: [
{
label: "Option 1",
value: "1"
},
{
label: "Option 2",
value: "2"
}
] as FormOption[],
value: "1"
},
{
key: "textarea",
label: "textarea",
type: "textarea",
required: true,
value: ""
},
{
key: "prism",
label: "prism",
type: "prism",
language: "typescript",
required: true,
value:
'[\n {\n "name": "user_id",\n "isPii": false,\n },\n {\n "name": "user_name",\n "isPii": true,\n }\n]',
disabled: true,
fieldClass: "prism-class"
},
{
key: "icon",
label: "icon",
type: "icon",
required: false,
value: "any value, does not matter",
disabled: false,
icon: {
type: "check-circle",
theme: "fill",
class: "form-icon-class"
} as FormIcon
}
] as FormItem[];
settings: FormSettings = {
fieldClass: "field-class"
};
Options
| Option | Type | Description | | -------- | ------------ | ----------- | | schema | FormItem[] | json schema | | settings | FormSettings | settings |
Item Options
| Option | Type | Description | | ------------- | ------------ | ---------------- | | key | string | key | | label | string | label | | type | string | type | | placeholder | string | placeholder | | options | FormOption[] | Array of options | | disabled | boolean | disabled | | readonly | boolean | readonly | | value | string | value | | required | boolean | required | | language | string | language | | nzGutter | number | nzGutter | | itemClass | string | itemClass | | nzSpanLabel | number | nzSpanLabel | | labelClass | string | labelClass | | nzSpanControl | number | nzSpanControl | | fieldClass | string | fieldClass |
Settings
| Setting | Type | Default | Description | | ------------- | ------ | ------- | ---------------------------------------------- | | nzGutter | number | 8 | nzGutter attr of ng-zorro-antd | | itemClass | string | '' | class for the item | | nzSpanLabel | number | 8 | nzSpan attr of ng-zorro-antd for label | | labelClass | string | '' | class for the item-label | | nzSpanControl | number | 16 | nzSpan attr of ng-zorro-antd for control-field | | fieldClass | string | '' | class for the control-field |
License
MIT