smart-webcomponents-angular
Version:
[](https://jqwidgets.com/license/)
1 lines • 57.1 kB
Source Map (JSON)
{"version":3,"file":"smart-webcomponents-angular-form.mjs","sources":["../../form/src/smart.element.ts","../../form/src/smart.form.ts","../../form/src/smart.formcontrol.ts","../../form/src/smart.formgroup.ts","../../form/src/smart.form.module.ts","../../form/src/smart-webcomponents-angular-form.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n Smart: any;\n}\n}\n\n\nimport { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\n@Directive()\nexport class BaseElement {\n constructor(ref: ElementRef) {\n const that = this;\n this.nativeElement = ref.nativeElement as any;\n\n that.nativeElement.onAttached = () => {\n that.onAttach.emit(that.nativeElement);\n }\n\n that.nativeElement.onDetached = () => {\n that.onDetach.emit(that.nativeElement);\n }\n }\n\n @Output() onCreate: EventEmitter<any> = new EventEmitter();\n @Output() onReady: EventEmitter<any> = new EventEmitter();\n @Output() onAttach: EventEmitter<any> = new EventEmitter();\n @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n public nativeElement: any;\n\n public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the license. */\n\t@Input()\n\tget license(): string {\n\t\treturn this.nativeElement ? this.nativeElement.license : undefined;\n\t}\n\tset license(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.license = value : undefined;\n\t}\n\t\n/** @description Sets or gets the language. Used in conjunction with the property messages. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nlet Smart: any;\nif (typeof window !== \"undefined\") {\n\tSmart = window.Smart;\n}\nexport { Smart };\n\n","import { Form } from './../index';\nimport { ControlControlType, ControlLabelPosition, ControlViewMode, FormLabelPosition, Control, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter, QueryList, ContentChildren } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { ControlControlType, ControlLabelPosition, ControlViewMode, FormLabelPosition, Control, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Form } from './../index';\n\n\nimport { FormControlComponent } from './smart.formcontrol';\n\nimport { FormGroupComponent } from './smart.formgroup';\n\n@Directive({\n\texportAs: 'smart-form',\tselector: 'smart-form, [smart-form]'\n})\n\nexport class FormComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\n\tconstructor(ref: ElementRef<Form>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Form;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: Form;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <Form>document.createElement('smart-form');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Sets or gets the form columns. */\n\t@Input()\n\tget columns(): number {\n\t\treturn this.nativeElement ? this.nativeElement.columns : undefined;\n\t}\n\tset columns(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.columns = value : undefined;\n\t}\n\n\t/** @description Sets or gets the form controls. */\n\t@Input()\n\tget controls(): Control[] {\n\t\treturn this.nativeElement ? this.nativeElement.controls : undefined;\n\t}\n\tset controls(value: Control[]) {\n\t\tthis.nativeElement ? this.nativeElement.controls = value : undefined;\n\t}\n\n\t/** @description Sets or Gets the labels position. */\n\t@Input()\n\tget onStatusChanges(): {(value: string): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onStatusChanges : undefined;\n\t}\n\tset onStatusChanges(value: {(value: string): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onStatusChanges = value : undefined;\n\t}\n\n\t/** @description Makes the form readonly. */\n\t@Input()\n\tget onValueChanges(): {(value: any): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onValueChanges : undefined;\n\t}\n\tset onValueChanges(value: {(value: any): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onValueChanges = value : undefined;\n\t}\n\n\t/** @description Shows / hides the colon after the labels. */\n\t@Input()\n\tget labelPosition(): FormLabelPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.labelPosition : undefined;\n\t}\n\tset labelPosition(value: FormLabelPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.labelPosition = value : undefined;\n\t}\n\n\t/** @description Shows / hides validation summary. */\n\t@Input()\n\tget readonly(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.readonly : undefined;\n\t}\n\tset readonly(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.readonly = value : undefined;\n\t}\n\n\t/** @description Gets the Form's state. Each member in the state has { dirty, untouched, disabled } properties. */\n\t@Input()\n\tget showColonAfterLabel(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showColonAfterLabel : undefined;\n\t}\n\tset showColonAfterLabel(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showColonAfterLabel = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form value. */\n\t@Input()\n\tget showSummary(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showSummary : undefined;\n\t}\n\tset showSummary(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showSummary = value : undefined;\n\t}\n\n\t/** @description Automatically validates the form when it is created. */\n\t@Input()\n\tget state(): any {\n\t\treturn this.nativeElement ? this.nativeElement.state : undefined;\n\t}\n\tset state(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.state = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget value(): any {\n\t\treturn this.nativeElement ? this.nativeElement.value : undefined;\n\t}\n\tset value(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.value = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget validateOnLoad(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.validateOnLoad : undefined;\n\t}\n\tset validateOnLoad(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.validateOnLoad = value : undefined;\n\t}\n\n\t/** @description Adds a control to the Form. \n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public addControl(controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addControl(controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addControl(controlOptions);\n });\n }\n }\n\n\t/** @description Gets a control by its name(dataField). \n\t* @param {string} dataField. dataField of a FormControl or FormGroup\n\t* @returns {Control}\n */\n\tpublic async getControl(dataField): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getControl(dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Inserts a control to the Form. \n\t* @param {number} index. Control insert index\n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public insertControl(index: number, controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.insertControl(index, controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.insertControl(index, controlOptions);\n });\n }\n }\n\n\t/** @description Remove a control from the Form. \n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public removeControl(controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeControl(controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeControl(controlOptions);\n });\n }\n }\n\n\t/** @description Submits the form. \n\t* @param {any} submitOptions?. Sets the submit options object. The object may have the following properties: <em>async</em>, <em>action</em>, <em>target</em>, <em>method</em>. <em>async</em> determines whether the form will be submitted asynchronously. <em>action</em> determines the submit url, <em>method</em> sets whether the submit is through 'GET' or 'POST'. <em>target</em> determines the submit target.\n\t*/\n public submit(submitOptions?: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.submit(submitOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.submit(submitOptions);\n });\n }\n }\n\n\t/** @description Clears the form. \n\t*/\n public reset(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.reset();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.reset();\n });\n }\n }\n\n\t/** @description Validates the form. \n\t*/\n public validate(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.validate();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.validate();\n });\n }\n }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { FormControl } from './../index';\nimport { FormControlAction, FormControlAlign, FormControlControlType, FormControlLabelPosition, FormControlViewMode, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { FormControlAction, FormControlAlign, FormControlControlType, FormControlLabelPosition, FormControlViewMode, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { FormControl } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-form-control',\tselector: 'smart-form-control, [smart-form-control]'\n})\n\nexport class FormControlComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<FormControl>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as FormControl;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: FormControl;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <FormControl>document.createElement('smart-form-control');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Gets or Sets the FormControl Action. This property is used when the 'controlType' is 'button' or 'submit' */\n\t@Input()\n\tget action(): FormControlAction | string {\n\t\treturn this.nativeElement ? this.nativeElement.action : undefined;\n\t}\n\tset action(value: FormControlAction | string) {\n\t\tthis.nativeElement ? this.nativeElement.action = value : undefined;\n\t}\n\n\t/** @description Sets or Gets the alignment of the FormControl */\n\t@Input()\n\tget align(): FormControlAlign | string {\n\t\treturn this.nativeElement ? this.nativeElement.align : undefined;\n\t}\n\tset align(value: FormControlAlign | string) {\n\t\tthis.nativeElement ? this.nativeElement.align = value : undefined;\n\t}\n\n\t/** @description HTML Content displayed after the Form Control */\n\t@Input()\n\tget appendHTML(): any {\n\t\treturn this.nativeElement ? this.nativeElement.appendHTML : undefined;\n\t}\n\tset appendHTML(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.appendHTML = value : undefined;\n\t}\n\n\t/** @description JSON object with initialization properties of the UI component. Example: { dataSource: ['item 1', 'item 2', 'item 3'] } will set the dataSource property of the Form control. */\n\t@Input()\n\tget controlOptions(): any {\n\t\treturn this.nativeElement ? this.nativeElement.controlOptions : undefined;\n\t}\n\tset controlOptions(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.controlOptions = value : undefined;\n\t}\n\n\t/** @description The type of the control. */\n\t@Input()\n\tget controlType(): FormControlControlType | string {\n\t\treturn this.nativeElement ? this.nativeElement.controlType : undefined;\n\t}\n\tset controlType(value: FormControlControlType | string) {\n\t\tthis.nativeElement ? this.nativeElement.controlType = value : undefined;\n\t}\n\n\t/** @description Sets the Form Group columns. */\n\t@Input()\n\tget columns(): number {\n\t\treturn this.nativeElement ? this.nativeElement.columns : undefined;\n\t}\n\tset columns(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.columns = value : undefined;\n\t}\n\n\t/** @description Sets the Form control column span. */\n\t@Input()\n\tget columnSpan(): number {\n\t\treturn this.nativeElement ? this.nativeElement.columnSpan : undefined;\n\t}\n\tset columnSpan(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.columnSpan = value : undefined;\n\t}\n\n\t/** @description Sets the Form control data field. The control's inner input's name is set to the dataField value and in the FormGroup it is accessible through the dataField value. */\n\t@Input()\n\tget dataField(): string {\n\t\treturn this.nativeElement ? this.nativeElement.dataField : undefined;\n\t}\n\tset dataField(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.dataField = value : undefined;\n\t}\n\n\t/** @description Sets the Form control disabled mode. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Gets whether the Form control is 'dirty' i.e its value is changed by the user. */\n\t@Input()\n\tget dirty(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.dirty : undefined;\n\t}\n\tset dirty(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.dirty = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form control's info icon's tooltip. */\n\t@Input()\n\tget info(): string {\n\t\treturn this.nativeElement ? this.nativeElement.info : undefined;\n\t}\n\tset info(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.info = value : undefined;\n\t}\n\n\t/** @description Gets whether the Form control is invalid. */\n\t@Input()\n\tget invalid(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.invalid : undefined;\n\t}\n\tset invalid(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.invalid = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form control's label. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form control's label position. */\n\t@Input()\n\tget labelPosition(): FormControlLabelPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.labelPosition : undefined;\n\t}\n\tset labelPosition(value: FormControlLabelPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.labelPosition = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the offset between the label and the control. */\n\t@Input()\n\tget labelOffset(): number {\n\t\treturn this.nativeElement ? this.nativeElement.labelOffset : undefined;\n\t}\n\tset labelOffset(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.labelOffset = value : undefined;\n\t}\n\n\t/** @description FormGroup only(when controlType is set to 'group'). Gets or Sets whether the navigation buttons are displayed. The property has effect when the viewMode property is set. */\n\t@Input()\n\tget labelAlign(): FormControlAlign | string {\n\t\treturn this.nativeElement ? this.nativeElement.labelAlign : undefined;\n\t}\n\tset labelAlign(value: FormControlAlign | string) {\n\t\tthis.nativeElement ? this.nativeElement.labelAlign = value : undefined;\n\t}\n\n\t/** @description FormGroup only(when controlType is set to 'group'). Gets or Sets the next button label. */\n\t@Input()\n\tget nextButtonLabel(): string {\n\t\treturn this.nativeElement ? this.nativeElement.nextButtonLabel : undefined;\n\t}\n\tset nextButtonLabel(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.nextButtonLabel = value : undefined;\n\t}\n\n\t/** @description FormGroup only(when controlType is set to 'group'). Gets or Sets the back button label. */\n\t@Input()\n\tget backButtonLabel(): string {\n\t\treturn this.nativeElement ? this.nativeElement.backButtonLabel : undefined;\n\t}\n\tset backButtonLabel(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.backButtonLabel = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the FormControl placeholder. */\n\t@Input()\n\tget placeholder(): string {\n\t\treturn this.nativeElement ? this.nativeElement.placeholder : undefined;\n\t}\n\tset placeholder(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.placeholder = value : undefined;\n\t}\n\n\t/** @description HTML Content displayed before the Form Control */\n\t@Input()\n\tget prependHTML(): any {\n\t\treturn this.nativeElement ? this.nativeElement.prependHTML : undefined;\n\t}\n\tset prependHTML(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.prependHTML = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form control readonly mode. */\n\t@Input()\n\tget readonly(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.readonly : undefined;\n\t}\n\tset readonly(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.readonly = value : undefined;\n\t}\n\n\t/** @description Gets or Sets whether this field is required. */\n\t@Input()\n\tget required(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.required : undefined;\n\t}\n\tset required(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.required = value : undefined;\n\t}\n\n\t/** @description Gets whether the Form control is not touched by the user. This flag is changed usually on blur, after the user interacted with the Form control */\n\t@Input()\n\tget untouched(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.untouched : undefined;\n\t}\n\tset untouched(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.untouched = value : undefined;\n\t}\n\n\t/** @description Gets or Sets whether colon is displayed after the label. */\n\t@Input()\n\tget showColonAfterLabel(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showColonAfterLabel : undefined;\n\t}\n\tset showColonAfterLabel(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showColonAfterLabel = value : undefined;\n\t}\n\n\t/** @description FormGroup only(when controlType is set to 'group'). Gets or Sets whether the navigation buttons are displayed. The property has effect when the viewMode property is set. */\n\t@Input()\n\tget showButtons(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showButtons : undefined;\n\t}\n\tset showButtons(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showButtons = value : undefined;\n\t}\n\n\t/** @description Sets or Gets the Form control or Form group value. */\n\t@Input()\n\tget value(): any {\n\t\treturn this.nativeElement ? this.nativeElement.value : undefined;\n\t}\n\tset value(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.value = value : undefined;\n\t}\n\n\t/** @description Gets whether the Form control is valid. */\n\t@Input()\n\tget valid(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.valid : undefined;\n\t}\n\tset valid(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.valid = value : undefined;\n\t}\n\n\t/** @description Sets or gets the column's validation rules. The expected value is an Array of Objects. Each object should have a 'type' property that can be set to 'required', 'min', 'max', 'minLength', 'maxLength', 'email', 'null', 'requiredTrue', 'minData', 'maxDate', 'pattern'. The 'value' property should be set, too. For validation rule types 'required', 'requiredTrue' and 'null' you can skip the 'value' property. Optional property is 'message', which determines the error message. */\n\t@Input()\n\tget validationRules(): [] | null {\n\t\treturn this.nativeElement ? this.nativeElement.validationRules : undefined;\n\t}\n\tset validationRules(value: [] | null) {\n\t\tthis.nativeElement ? this.nativeElement.validationRules = value : undefined;\n\t}\n\n\t/** @description FormGroup only(when controlType is set to 'group'). Gets or Sets the form'group view mode. */\n\t@Input()\n\tget viewMode(): FormControlViewMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.viewMode : undefined;\n\t}\n\tset viewMode(value: FormControlViewMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.viewMode = value : undefined;\n\t}\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { FormGroup } from './../index';\nimport { ControlControlType, ControlLabelPosition, ControlViewMode, FormGroupLabelPosition, Control, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { ControlControlType, ControlLabelPosition, ControlViewMode, FormGroupLabelPosition, Control, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { FormGroup } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-form-group',\tselector: 'smart-form-group, [smart-form-group]'\n})\n\nexport class FormGroupComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<FormGroup>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as FormGroup;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: FormGroup;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <FormGroup>document.createElement('smart-form-group');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Sets or gets the form columns. */\n\t@Input()\n\tget columns(): number {\n\t\treturn this.nativeElement ? this.nativeElement.columns : undefined;\n\t}\n\tset columns(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.columns = value : undefined;\n\t}\n\n\t/** @description Sets the Form control data field. The control's inner input's name is set to the dataField value and in the FormGroup it is accessible through the dataField value. */\n\t@Input()\n\tget dataField(): string {\n\t\treturn this.nativeElement ? this.nativeElement.dataField : undefined;\n\t}\n\tset dataField(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.dataField = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form control's label. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description */\n\t@Input()\n\tget controls(): Control[] {\n\t\treturn this.nativeElement ? this.nativeElement.controls : undefined;\n\t}\n\tset controls(value: Control[]) {\n\t\tthis.nativeElement ? this.nativeElement.controls = value : undefined;\n\t}\n\n\t/** @description Sets or Gets the labels position. */\n\t@Input()\n\tget onStatusChanges(): {(value: string): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onStatusChanges : undefined;\n\t}\n\tset onStatusChanges(value: {(value: string): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onStatusChanges = value : undefined;\n\t}\n\n\t/** @description Makes the form readonly. */\n\t@Input()\n\tget onValueChanges(): {(value: any): void} {\n\t\treturn this.nativeElement ? this.nativeElement.onValueChanges : undefined;\n\t}\n\tset onValueChanges(value: {(value: any): void}) {\n\t\tthis.nativeElement ? this.nativeElement.onValueChanges = value : undefined;\n\t}\n\n\t/** @description Shows / hides the colon after the labels. */\n\t@Input()\n\tget labelPosition(): FormGroupLabelPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.labelPosition : undefined;\n\t}\n\tset labelPosition(value: FormGroupLabelPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.labelPosition = value : undefined;\n\t}\n\n\t/** @description Shows / hides validation summary. */\n\t@Input()\n\tget readonly(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.readonly : undefined;\n\t}\n\tset readonly(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.readonly = value : undefined;\n\t}\n\n\t/** @description Gets or Sets the Form value. */\n\t@Input()\n\tget showColonAfterLabel(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showColonAfterLabel : undefined;\n\t}\n\tset showColonAfterLabel(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showColonAfterLabel = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget showSummary(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showSummary : undefined;\n\t}\n\tset showSummary(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showSummary = value : undefined;\n\t}\n\n\t/** @description undefined */\n\t@Input()\n\tget value(): any {\n\t\treturn this.nativeElement ? this.nativeElement.value : undefined;\n\t}\n\tset value(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.value = value : undefined;\n\t}\n\n\t/** @description Adds a control to the Form. \n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public addControl(controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.addControl(controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.addControl(controlOptions);\n });\n }\n }\n\n\t/** @description Gets a control by its name(dataField). \n\t* @param {string} dataField. dataField of a FormControl or FormGroup\n\t* @returns {Control}\n */\n\tpublic async getControl(dataField): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getControl(dataField);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\t/** @description Inserts a control to the Form. \n\t* @param {number} index. Control insert index\n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public insertControl(index: number, controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.insertControl(index, controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.insertControl(index, controlOptions);\n });\n }\n }\n\n\t/** @description Remove a control from the Form. \n\t* @param {any} controlOptions. Control options. The control options description is available in the <em>controls</em> property.\n\t*/\n public removeControl(controlOptions: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.removeControl(controlOptions);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.removeControl(controlOptions);\n });\n }\n }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { FormComponent } from './smart.form';\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { FormControlComponent } from './smart.formcontrol';\nimport { FormGroupComponent } from './smart.formgroup';\n\n@NgModule({\n declarations: [FormComponent, FormControlComponent, FormGroupComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [FormComponent, FormControlComponent, FormGroupComponent]\n})\n\nexport class FormModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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