UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

693 lines (655 loc) 25.8 kB
import * as i2 from '@angular/platform-browser'; import { BrowserTransferStateModule } from '@angular/platform-browser'; import * as i0 from '@angular/core'; import { PLATFORM_ID, Component, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core'; import DxForm from 'devextreme/ui/form'; import * as i1 from 'devextreme-angular/core'; import { DxComponent, DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper, DxIntegrationModule, DxTemplateModule } from 'devextreme-angular/core'; import { DxiItemComponent, DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule } from 'devextreme-angular/ui/nested'; /*! * devextreme-angular * Version: 22.1.14 * Build date: Mon Apr 29 2024 * * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file in the root of the project for details. * * https://github.com/DevExpress/devextreme-angular */ /** * The Form UI component represents fields of a data object as a collection of label-editor pairs. These pairs can be arranged in several groups, tabs and columns. */ class DxFormComponent extends DxComponent { constructor(elementRef, ngZone, templateHost, _watcherHelper, _idh, optionHost, transferState, platformId) { super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId); this._watcherHelper = _watcherHelper; this._idh = _idh; this._createEventEmitters([ { subscribe: 'contentReady', emit: 'onContentReady' }, { subscribe: 'disposing', emit: 'onDisposing' }, { subscribe: 'editorEnterKey', emit: 'onEditorEnterKey' }, { subscribe: 'fieldDataChanged', emit: 'onFieldDataChanged' }, { subscribe: 'initialized', emit: 'onInitialized' }, { subscribe: 'optionChanged', emit: 'onOptionChanged' }, { emit: 'accessKeyChange' }, { emit: 'activeStateEnabledChange' }, { emit: 'alignItemLabelsChange' }, { emit: 'alignItemLabelsInAllGroupsChange' }, { emit: 'colCountChange' }, { emit: 'colCountByScreenChange' }, { emit: 'customizeItemChange' }, { emit: 'disabledChange' }, { emit: 'elementAttrChange' }, { emit: 'focusStateEnabledChange' }, { emit: 'formDataChange' }, { emit: 'heightChange' }, { emit: 'hintChange' }, { emit: 'hoverStateEnabledChange' }, { emit: 'itemsChange' }, { emit: 'labelLocationChange' }, { emit: 'labelModeChange' }, { emit: 'minColWidthChange' }, { emit: 'optionalMarkChange' }, { emit: 'readOnlyChange' }, { emit: 'requiredMarkChange' }, { emit: 'requiredMessageChange' }, { emit: 'rtlEnabledChange' }, { emit: 'screenByWidthChange' }, { emit: 'scrollingEnabledChange' }, { emit: 'showColonAfterLabelChange' }, { emit: 'showOptionalMarkChange' }, { emit: 'showRequiredMarkChange' }, { emit: 'showValidationSummaryChange' }, { emit: 'tabIndexChange' }, { emit: 'validationGroupChange' }, { emit: 'visibleChange' }, { emit: 'widthChange' } ]); this._idh.setHost(this); optionHost.setHost(this); } /** * Specifies the shortcut key that sets focus on the UI component. */ get accessKey() { return this._getOption('accessKey'); } set accessKey(value) { this._setOption('accessKey', value); } /** * Specifies whether the UI component changes its visual state as a result of user interaction. */ get activeStateEnabled() { return this._getOption('activeStateEnabled'); } set activeStateEnabled(value) { this._setOption('activeStateEnabled', value); } /** * Specifies whether all item labels are aligned. Applies only to labels outside their editors (see labelMode). */ get alignItemLabels() { return this._getOption('alignItemLabels'); } set alignItemLabels(value) { this._setOption('alignItemLabels', value); } /** * Specifies whether item labels in all groups are aligned. Applies only to labels outside their editors (see labelMode). */ get alignItemLabelsInAllGroups() { return this._getOption('alignItemLabelsInAllGroups'); } set alignItemLabelsInAllGroups(value) { this._setOption('alignItemLabelsInAllGroups', value); } /** * The count of columns in the form layout. */ get colCount() { return this._getOption('colCount'); } set colCount(value) { this._setOption('colCount', value); } /** * Specifies dependency between the screen factor and the count of columns in the form layout. */ get colCountByScreen() { return this._getOption('colCountByScreen'); } set colCountByScreen(value) { this._setOption('colCountByScreen', value); } /** * Specifies a function that customizes a form item after it has been created. */ get customizeItem() { return this._getOption('customizeItem'); } set customizeItem(value) { this._setOption('customizeItem', value); } /** * Specifies whether the UI component responds to user interaction. */ get disabled() { return this._getOption('disabled'); } set disabled(value) { this._setOption('disabled', value); } /** * Specifies the global attributes to be attached to the UI component's container element. */ get elementAttr() { return this._getOption('elementAttr'); } set elementAttr(value) { this._setOption('elementAttr', value); } /** * Specifies whether the UI component can be focused using keyboard navigation. */ get focusStateEnabled() { return this._getOption('focusStateEnabled'); } set focusStateEnabled(value) { this._setOption('focusStateEnabled', value); } /** * Provides the Form's data. Gets updated every time form fields change. */ get formData() { return this._getOption('formData'); } set formData(value) { this._setOption('formData', value); } /** * Specifies the UI component's height. */ get height() { return this._getOption('height'); } set height(value) { this._setOption('height', value); } /** * Specifies text for a hint that appears when a user pauses on the UI component. */ get hint() { return this._getOption('hint'); } set hint(value) { this._setOption('hint', value); } /** * Specifies whether the UI component changes its state when a user pauses on it. */ get hoverStateEnabled() { return this._getOption('hoverStateEnabled'); } set hoverStateEnabled(value) { this._setOption('hoverStateEnabled', value); } /** * Holds an array of form items. */ get items() { return this._getOption('items'); } set items(value) { this._setOption('items', value); } /** * Specifies the location of a label against the editor. Applies only to labels outside their editors (see labelMode). */ get labelLocation() { return this._getOption('labelLocation'); } set labelLocation(value) { this._setOption('labelLocation', value); } /** * Specifies a display mode for item labels. */ get labelMode() { return this._getOption('labelMode'); } set labelMode(value) { this._setOption('labelMode', value); } /** * The minimum column width used for calculating column count in the form layout. Applies only if colCount property is 'auto'. */ get minColWidth() { return this._getOption('minColWidth'); } set minColWidth(value) { this._setOption('minColWidth', value); } /** * The text displayed for optional fields. Applies only if showOptionalMark is true. */ get optionalMark() { return this._getOption('optionalMark'); } set optionalMark(value) { this._setOption('optionalMark', value); } /** * Specifies whether all editors on the form are read-only. Applies only to non-templated items. */ get readOnly() { return this._getOption('readOnly'); } set readOnly(value) { this._setOption('readOnly', value); } /** * The text displayed for required fields. */ get requiredMark() { return this._getOption('requiredMark'); } set requiredMark(value) { this._setOption('requiredMark', value); } /** * Specifies the message that is shown for end-users if a required field value is not specified. */ get requiredMessage() { return this._getOption('requiredMessage'); } set requiredMessage(value) { this._setOption('requiredMessage', value); } /** * Switches the UI component to a right-to-left representation. */ get rtlEnabled() { return this._getOption('rtlEnabled'); } set rtlEnabled(value) { this._setOption('rtlEnabled', value); } /** * Specifies a function that categorizes screens by their width. */ get screenByWidth() { return this._getOption('screenByWidth'); } set screenByWidth(value) { this._setOption('screenByWidth', value); } /** * A Boolean value specifying whether to enable or disable form scrolling. */ get scrollingEnabled() { return this._getOption('scrollingEnabled'); } set scrollingEnabled(value) { this._setOption('scrollingEnabled', value); } /** * Specifies whether a colon is displayed at the end of form labels. Applies only to labels outside their editors (see labelMode). */ get showColonAfterLabel() { return this._getOption('showColonAfterLabel'); } set showColonAfterLabel(value) { this._setOption('showColonAfterLabel', value); } /** * Specifies whether or not the optional mark is displayed for optional fields. */ get showOptionalMark() { return this._getOption('showOptionalMark'); } set showOptionalMark(value) { this._setOption('showOptionalMark', value); } /** * Specifies whether or not the required mark is displayed for required fields. */ get showRequiredMark() { return this._getOption('showRequiredMark'); } set showRequiredMark(value) { this._setOption('showRequiredMark', value); } /** * Specifies whether or not the total validation summary is displayed on the form. */ get showValidationSummary() { return this._getOption('showValidationSummary'); } set showValidationSummary(value) { this._setOption('showValidationSummary', value); } /** * Specifies the number of the element when the Tab key is used for navigating. */ get tabIndex() { return this._getOption('tabIndex'); } set tabIndex(value) { this._setOption('tabIndex', value); } /** * Gives a name to the internal validation group. */ get validationGroup() { return this._getOption('validationGroup'); } set validationGroup(value) { this._setOption('validationGroup', value); } /** * Specifies whether the UI component is visible. */ get visible() { return this._getOption('visible'); } set visible(value) { this._setOption('visible', value); } /** * Specifies the UI component's width. */ get width() { return this._getOption('width'); } set width(value) { this._setOption('width', value); } get itemsChildren() { return this._getOption('items'); } set itemsChildren(value) { this.setChildren('items', value); } _createInstance(element, options) { return new DxForm(element, options); } ngOnDestroy() { this._destroyWidget(); } ngOnChanges(changes) { super.ngOnChanges(changes); this.setupChanges('items', changes); } setupChanges(prop, changes) { if (!(prop in this._optionsToUpdate)) { this._idh.setup(prop, changes); } } ngDoCheck() { this._idh.doCheck('items'); this._watcherHelper.checkWatchers(); super.ngDoCheck(); super.clearChangedOptions(); } _setOption(name, value) { let isSetup = this._idh.setupSingle(name, value); let isChanged = this._idh.getChanges(name, value) !== null; if (isSetup || isChanged) { super._setOption(name, value); } } } /** @nocollapse */ DxFormComponent.ɵfac = function DxFormComponent_Factory(t) { return new (t || DxFormComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.DxTemplateHost), i0.ɵɵdirectiveInject(i1.WatcherHelper), i0.ɵɵdirectiveInject(i1.IterableDifferHelper), i0.ɵɵdirectiveInject(i1.NestedOptionHost), i0.ɵɵdirectiveInject(i2.TransferState), i0.ɵɵdirectiveInject(PLATFORM_ID)); }; /** @nocollapse */ DxFormComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DxFormComponent, selectors: [["dx-form"]], contentQueries: function DxFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, DxiItemComponent, 4); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsChildren = _t); } }, inputs: { accessKey: "accessKey", activeStateEnabled: "activeStateEnabled", alignItemLabels: "alignItemLabels", alignItemLabelsInAllGroups: "alignItemLabelsInAllGroups", colCount: "colCount", colCountByScreen: "colCountByScreen", customizeItem: "customizeItem", disabled: "disabled", elementAttr: "elementAttr", focusStateEnabled: "focusStateEnabled", formData: "formData", height: "height", hint: "hint", hoverStateEnabled: "hoverStateEnabled", items: "items", labelLocation: "labelLocation", labelMode: "labelMode", minColWidth: "minColWidth", optionalMark: "optionalMark", readOnly: "readOnly", requiredMark: "requiredMark", requiredMessage: "requiredMessage", rtlEnabled: "rtlEnabled", screenByWidth: "screenByWidth", scrollingEnabled: "scrollingEnabled", showColonAfterLabel: "showColonAfterLabel", showOptionalMark: "showOptionalMark", showRequiredMark: "showRequiredMark", showValidationSummary: "showValidationSummary", tabIndex: "tabIndex", validationGroup: "validationGroup", visible: "visible", width: "width" }, outputs: { onContentReady: "onContentReady", onDisposing: "onDisposing", onEditorEnterKey: "onEditorEnterKey", onFieldDataChanged: "onFieldDataChanged", onInitialized: "onInitialized", onOptionChanged: "onOptionChanged", accessKeyChange: "accessKeyChange", activeStateEnabledChange: "activeStateEnabledChange", alignItemLabelsChange: "alignItemLabelsChange", alignItemLabelsInAllGroupsChange: "alignItemLabelsInAllGroupsChange", colCountChange: "colCountChange", colCountByScreenChange: "colCountByScreenChange", customizeItemChange: "customizeItemChange", disabledChange: "disabledChange", elementAttrChange: "elementAttrChange", focusStateEnabledChange: "focusStateEnabledChange", formDataChange: "formDataChange", heightChange: "heightChange", hintChange: "hintChange", hoverStateEnabledChange: "hoverStateEnabledChange", itemsChange: "itemsChange", labelLocationChange: "labelLocationChange", labelModeChange: "labelModeChange", minColWidthChange: "minColWidthChange", optionalMarkChange: "optionalMarkChange", readOnlyChange: "readOnlyChange", requiredMarkChange: "requiredMarkChange", requiredMessageChange: "requiredMessageChange", rtlEnabledChange: "rtlEnabledChange", screenByWidthChange: "screenByWidthChange", scrollingEnabledChange: "scrollingEnabledChange", showColonAfterLabelChange: "showColonAfterLabelChange", showOptionalMarkChange: "showOptionalMarkChange", showRequiredMarkChange: "showRequiredMarkChange", showValidationSummaryChange: "showValidationSummaryChange", tabIndexChange: "tabIndexChange", validationGroupChange: "validationGroupChange", visibleChange: "visibleChange", widthChange: "widthChange" }, features: [i0.ɵɵProvidersFeature([ DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function DxFormComponent_Template(rf, ctx) { }, encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DxFormComponent, [{ type: Component, args: [{ selector: 'dx-form', template: '', providers: [ DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper ] }] }], function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.IterableDifferHelper }, { type: i1.NestedOptionHost }, { type: i2.TransferState }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }]; }, { accessKey: [{ type: Input }], activeStateEnabled: [{ type: Input }], alignItemLabels: [{ type: Input }], alignItemLabelsInAllGroups: [{ type: Input }], colCount: [{ type: Input }], colCountByScreen: [{ type: Input }], customizeItem: [{ type: Input }], disabled: [{ type: Input }], elementAttr: [{ type: Input }], focusStateEnabled: [{ type: Input }], formData: [{ type: Input }], height: [{ type: Input }], hint: [{ type: Input }], hoverStateEnabled: [{ type: Input }], items: [{ type: Input }], labelLocation: [{ type: Input }], labelMode: [{ type: Input }], minColWidth: [{ type: Input }], optionalMark: [{ type: Input }], readOnly: [{ type: Input }], requiredMark: [{ type: Input }], requiredMessage: [{ type: Input }], rtlEnabled: [{ type: Input }], screenByWidth: [{ type: Input }], scrollingEnabled: [{ type: Input }], showColonAfterLabel: [{ type: Input }], showOptionalMark: [{ type: Input }], showRequiredMark: [{ type: Input }], showValidationSummary: [{ type: Input }], tabIndex: [{ type: Input }], validationGroup: [{ type: Input }], visible: [{ type: Input }], width: [{ type: Input }], onContentReady: [{ type: Output }], onDisposing: [{ type: Output }], onEditorEnterKey: [{ type: Output }], onFieldDataChanged: [{ type: Output }], onInitialized: [{ type: Output }], onOptionChanged: [{ type: Output }], accessKeyChange: [{ type: Output }], activeStateEnabledChange: [{ type: Output }], alignItemLabelsChange: [{ type: Output }], alignItemLabelsInAllGroupsChange: [{ type: Output }], colCountChange: [{ type: Output }], colCountByScreenChange: [{ type: Output }], customizeItemChange: [{ type: Output }], disabledChange: [{ type: Output }], elementAttrChange: [{ type: Output }], focusStateEnabledChange: [{ type: Output }], formDataChange: [{ type: Output }], heightChange: [{ type: Output }], hintChange: [{ type: Output }], hoverStateEnabledChange: [{ type: Output }], itemsChange: [{ type: Output }], labelLocationChange: [{ type: Output }], labelModeChange: [{ type: Output }], minColWidthChange: [{ type: Output }], optionalMarkChange: [{ type: Output }], readOnlyChange: [{ type: Output }], requiredMarkChange: [{ type: Output }], requiredMessageChange: [{ type: Output }], rtlEnabledChange: [{ type: Output }], screenByWidthChange: [{ type: Output }], scrollingEnabledChange: [{ type: Output }], showColonAfterLabelChange: [{ type: Output }], showOptionalMarkChange: [{ type: Output }], showRequiredMarkChange: [{ type: Output }], showValidationSummaryChange: [{ type: Output }], tabIndexChange: [{ type: Output }], validationGroupChange: [{ type: Output }], visibleChange: [{ type: Output }], widthChange: [{ type: Output }], itemsChildren: [{ type: ContentChildren, args: [DxiItemComponent] }] }); })(); class DxFormModule { } /** @nocollapse */ DxFormModule.ɵfac = function DxFormModule_Factory(t) { return new (t || DxFormModule)(); }; /** @nocollapse */ DxFormModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: DxFormModule }); /** @nocollapse */ DxFormModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ imports: [[ DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxIntegrationModule, DxTemplateModule, BrowserTransferStateModule ], DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxTemplateModule] }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DxFormModule, [{ type: NgModule, args: [{ imports: [ DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxIntegrationModule, DxTemplateModule, BrowserTransferStateModule ], declarations: [ DxFormComponent ], exports: [ DxFormComponent, DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxTemplateModule ] }] }], null, null); })(); (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DxFormModule, { declarations: [DxFormComponent], imports: [DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxIntegrationModule, DxTemplateModule, BrowserTransferStateModule], exports: [DxFormComponent, DxoColCountByScreenModule, DxiItemModule, DxoLabelModule, DxiValidationRuleModule, DxoTabPanelOptionsModule, DxiTabModule, DxoButtonOptionsModule, DxTemplateModule] }); })(); /** * Generated bundle index. Do not edit. */ export { DxFormComponent, DxFormModule }; //# sourceMappingURL=devextreme-angular-ui-form.js.map