cd-force
Version:
Form creation goodness.
212 lines (203 loc) • 5.76 kB
text/typescript
import { CheckboxControl } from '../models/control-checkbox';
import { DropdownControl } from '../models/control-dropdown';
import { TextboxControl } from '../models/control-textbox';
import { ControlService } from '../models/control.service';
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { CheckboxConfig, CheckboxGroup, CheckboxOption } from '../models/checkbox.model';
import { SingleCheckboxControl } from '../models/singlecheckbox.model';
@Component({
selector: 'app-model-driven',
templateUrl: './model-driven.component.html',
providers: [ControlService]
})
export class ModelDrivenComponent {
controls: any[];
checkboxes: any[];
constructor(service: ControlService) {
this.controls = [
new TextboxControl({
key: 'clientId',
label: 'Client ID',
value: '',
}),
new TextboxControl({
key: 'clientName',
label: 'Client Name',
value: '',
}),
new TextboxControl({
key: 'clientUri',
label: 'Client URI',
value: '',
}),
new TextboxControl({
key: 'logoUri',
label: 'Logo URI',
value: '',
}),
new SingleCheckboxControl({
key: 'requireConsent',
label: 'Require Consent',
value: false
}),
new SingleCheckboxControl({
key: 'allowRememberConsent',
label: 'Allow Remember Consent',
value: false
}),
new TextboxControl({
key: 'redirectUrl',
label: 'Redirect URL',
value: 'http://',
}),
new TextboxControl({
key: 'scopes',
label: 'Scopes',
value: '',
}),
new DropdownControl({
key: 'grantType',
label: 'Grant Type',
options: [
{ key: 'code', value: 'code' },
{ key: 'client_credentials', value: 'client_credentials' },
{ key: 'implicit', value: 'implicit' },
{ key: 'hybrid', value: 'hybrid' }
]
}),
new TextboxControl({
key: 'accessTokenLifetime',
label: 'Access token lifetime',
value: '600',
type: 'number'
}),
new TextboxControl({
key: 'identityTokenLifetime',
label: 'Identity Token Lifetime',
value: '600',
type: 'number'
}),
new TextboxControl({
key: 'authorizationCodeLifetime',
label: 'Authorization Code Lifetime',
value: '600',
type: 'number'
}),
new TextboxControl({
key: 'absoluteRefreshTokenLifetime',
label: 'Absolute Refresh Token Lifetime',
value: '600',
type: 'number'
}),
new TextboxControl({
key: 'slidingRefreshTokenLifetime',
label: 'Sliding Refresh Token Lifetime',
value: '600',
type: 'number'
}),
// refreshTokenUsage
new TextboxControl({
key: 'refreshTokenExpiration',
label: 'Refresh Token Expiration',
value: '600',
type: 'number'
}),
// accesstokentype
new SingleCheckboxControl({
key: 'enableLocalLogin',
label: 'Enable Local Login',
value: true
}),
new SingleCheckboxControl({
key: 'includeJwtId',
label: 'Include JWT ID',
value: false
}),
new SingleCheckboxControl({
key: 'alwaysSendClientClaims',
label: 'Always Send Client Claims',
value: false
}),
new SingleCheckboxControl({
key: 'prefixClientClaims',
label: 'Prefix Client Claims',
value: false
}),
new SingleCheckboxControl({
key: 'allowClientCredentialsOnly',
label: 'Allow Client Credentials Only',
value: false
}),
new SingleCheckboxControl({
key: 'updateAccessTokenOnRefresh',
label: 'Update Access Token On Refresh',
value: false
}),
new SingleCheckboxControl({
key: 'allowAccessToAllScopes',
label: 'Allow Access To All Scopes',
value: false
}),
new SingleCheckboxControl({
key: 'allowAccessToAllGrantTypes',
label: 'Allow Access To All GrantTypes',
value: false
}),
new SingleCheckboxControl({
key: 'logoutSessionRequired',
label: 'Logout Session Required',
value: false
}),
new SingleCheckboxControl({
key: 'requireSignOutPrompt',
label: 'Require Sign Our Prompt',
value: false
}),
new SingleCheckboxControl({
key: 'allowAccessTokensViaBrowser',
label: 'Allow Access Tokens Via Browser',
value: false
}),
new TextboxControl({
key: 'registrationDate',
label: 'Registration Date',
value: '--',
}),
];
this.checkboxes = [
// Fix this if only 1 checkbox is necessary for example.
// {
// key: 'requireConsent',
// label: 'Require Consent',
// options: [
// { label: 'JS', value: true, id: 1222 },
// ]
// },
{
key: 'frameworks',
label: 'Frameworks',
options: [
{ label: 'JS', value: true, id: 1222 },
{ label: 'CSS', value: false, id: 2 }
]
},
{
key: 'watchbrands',
label: 'Watch brands',
options: [
{ label: 'Seiko', value: true, id: 12 },
{ label: 'Rolex', value: false, id: 21 }
]
},
{
key: 'carbrands',
label: 'Car brands',
options: [
{ label: 'BMW', value: true, id: 1 },
{ label: 'Mercedes', value: false, id: 2 }
]
}
];
}
}