import { AddReferenceComponent } from './add-reference.component'; import { ButtonComponent } from './button.component'; import { CheckboxComponent } from './checkbox.component'; import { CheckboxesComponent } from './checkboxes.component'; import { FileComponent } from './file.component'; import { hasOwn } from '../shared/utility.functions'; import { Injectable } from '@angular/core'; import { InputComponent } from './input.component'; import { MessageComponent } from './message.component'; import { NoneComponent } from './none.component'; import { NumberComponent } from './number.component'; import { OneOfComponent } from './one-of.component'; import { RadiosComponent } from './radios.component'; import { RootComponent } from './root.component'; import { SectionComponent } from './section.component'; import { SelectComponent } from './select.component'; import { SelectFrameworkComponent } from './select-framework.component'; import { SelectWidgetComponent } from './select-widget.component'; import { SubmitComponent } from './submit.component'; import { TabsComponent } from './tabs.component'; import { TemplateComponent } from './template.component'; import { TextareaComponent } from './textarea.component'; @Injectable() export class WidgetLibraryService { defaultWidget = 'text'; widgetLibrary: any = { // Angular JSON Schema Form administrative widgets 'none': NoneComponent, // Placeholder, for development - displays nothing 'root': RootComponent, // Form root, renders a complete layout 'select-framework': SelectFrameworkComponent, // Applies the selected framework to a specified widget 'select-widget': SelectWidgetComponent, // Displays a specified widget '$ref': AddReferenceComponent, // Button to add a new array item or $ref element // Free-form text HTML 'input' form control widgets 'email': 'text', 'integer': 'number', // Note: 'integer' is not a recognized HTML input type 'number': NumberComponent, 'password': 'text', 'search': 'text', 'tel': 'text', 'text': InputComponent, 'url': 'text', // Controlled text HTML 'input' form control widgets 'color': 'text', 'date': 'text', 'datetime': 'text', 'datetime-local': 'text', 'month': 'text', 'range': 'number', 'time': 'text', 'week': 'text', // Non-text HTML 'input' form control widgets // 'button': not used, use