@colijnit/corecomponents_v12 12.0.15 → 12.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-corecomponents_v12.umd.js +1099 -277
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12.d.ts +9 -8
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/colijnit-corecomponents_v12.js +10 -9
- package/esm2015/lib/components/base/base-input.component.js +40 -20
- package/esm2015/lib/components/carousel-3d/carousel-3d.component.js +313 -0
- package/esm2015/lib/components/carousel-3d/carousel-3d.module.js +19 -0
- package/esm2015/lib/components/carousel-3d/carouselItem.js +54 -0
- package/esm2015/lib/components/co-dialog/co-dialog.component.js +46 -48
- package/esm2015/lib/components/co-dialog/co-dialog.module.js +7 -4
- package/esm2015/lib/components/co-dialog-prompt/co-dialog-prompt.component.js +6 -6
- package/esm2015/lib/components/co-kanban/co-kanban.component.js +8 -7
- package/esm2015/lib/components/co-rich-text-editor/co-rich-text-editor.component.js +2 -2
- package/esm2015/lib/components/collapsible/collapsible.component.js +58 -0
- package/esm2015/lib/components/collapsible/collapsible.module.js +17 -0
- package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +30 -8
- package/esm2015/lib/components/drop-down-list/drop-down.module.js +4 -2
- package/esm2015/lib/components/form/form.component.js +2 -21
- package/esm2015/lib/components/form/form.module.js +4 -4
- package/esm2015/lib/components/grid/base/base-grid.component.js +1 -1
- package/esm2015/lib/components/grid/base/base-selection-grid.component.js +1 -1
- package/esm2015/lib/components/grid/co-grid.component.js +2 -2
- package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +15 -5
- package/esm2015/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.js +6 -14
- package/esm2015/lib/components/input-combo-box/input-combo-box.component.js +24 -29
- package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +10 -7
- package/esm2015/lib/components/input-listbox/input-listbox.component.js +87 -0
- package/esm2015/lib/components/input-listbox/input-listbox.module.js +25 -0
- package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +55 -30
- package/esm2015/lib/components/input-number-picker/input-number-picker.module.js +5 -3
- package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +13 -5
- package/esm2015/lib/components/input-text/input-text.component.js +22 -81
- package/esm2015/lib/components/input-text/input-text.module.js +16 -13
- package/esm2015/lib/components/input-textarea/input-textarea.component.js +62 -0
- package/esm2015/lib/components/input-textarea/input-textarea.module.js +23 -0
- package/esm2015/lib/components/multi-select-list/multi-select-list.component.js +37 -9
- package/esm2015/lib/components/multi-select-list/multi-select-list.module.js +4 -2
- package/esm2015/lib/components/pivot/co-pivot.component.js +2 -2
- package/esm2015/lib/components/simple-grid/simple-grid-column.directive.js +36 -0
- package/esm2015/lib/components/simple-grid/simple-grid.component.js +112 -0
- package/esm2015/lib/components/simple-grid/simple-grid.module.js +24 -0
- package/esm2015/lib/components/validation-error/validation-error.component.js +23 -0
- package/esm2015/lib/components/validation-error/validation-error.module.js +19 -0
- package/esm2015/public-api.js +13 -1
- package/fesm2015/colijnit-corecomponents_v12.js +1176 -337
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/base/base-input.component.d.ts +14 -9
- package/lib/components/button/style/_co-ripple.scss +69 -0
- package/lib/components/button/style/_layout.scss +7 -4
- package/lib/components/button/style/_material-definition.scss +1 -0
- package/lib/components/button/style/_theme.scss +2 -27
- package/lib/components/button/style/material.scss +18 -0
- package/lib/components/button-drop-down/style/_layout.scss +0 -2
- package/lib/components/button-drop-down/style/_theme.scss +0 -2
- package/lib/components/button-drop-down/style/material.scss +1 -0
- package/lib/components/carousel-3d/carousel-3d.component.d.ts +55 -0
- package/lib/components/carousel-3d/carousel-3d.module.d.ts +2 -0
- package/lib/components/carousel-3d/carouselItem.d.ts +13 -0
- package/lib/components/carousel-3d/style/_layout.scss +62 -0
- package/lib/components/carousel-3d/style/_material-definition.scss +6 -0
- package/lib/components/carousel-3d/style/_theme.scss +4 -0
- package/lib/components/carousel-3d/style/material.scss +5 -0
- package/lib/components/co-dialog/co-dialog.component.d.ts +6 -13
- package/lib/components/co-dialog/style/_layout.scss +44 -0
- package/lib/components/co-dialog/style/_material-definition.scss +23 -0
- package/lib/components/co-dialog/style/_theme.scss +24 -0
- package/lib/components/co-dialog/style/material.scss +5 -0
- package/lib/components/co-dialog-prompt/co-dialog-prompt.component.d.ts +2 -2
- package/lib/components/co-kanban/co-kanban.component.d.ts +1 -0
- package/lib/components/co-kanban/style/_layout.scss +48 -0
- package/lib/components/co-kanban/style/_material-definition.scss +25 -0
- package/lib/components/co-kanban/style/_theme.scss +3 -0
- package/lib/components/co-kanban/style/material.scss +14 -0
- package/lib/components/co-rich-text-editor/co-rich-text-editor.component.d.ts +1 -1
- package/lib/components/co-rich-text-editor/style/_layout.scss +0 -2
- package/lib/components/co-rich-text-editor/style/_theme.scss +0 -2
- package/lib/components/co-rich-text-editor/style/material.scss +1 -0
- package/lib/components/co-toggle/co-toggle.component.scss +1 -0
- package/lib/components/collapsible/collapsible.component.d.ts +16 -0
- package/lib/components/collapsible/collapsible.module.d.ts +2 -0
- package/lib/components/collapsible/style/_layout.scss +50 -0
- package/lib/components/collapsible/style/_material-definition.scss +9 -0
- package/lib/components/collapsible/style/_theme.scss +5 -0
- package/lib/components/collapsible/style/material.scss +5 -0
- package/lib/components/drop-down-list/drop-down-list.component.d.ts +12 -2
- package/lib/components/drop-down-list/style/_layout.scss +8 -3
- package/lib/components/drop-down-list/style/_theme.scss +0 -2
- package/lib/components/drop-down-list/style/material.scss +2 -0
- package/lib/components/form/form.component.d.ts +0 -1
- package/lib/components/grid/base/base-selection-grid.component.d.ts +1 -2
- package/lib/components/grid/co-grid.component.d.ts +1 -1
- package/lib/components/grid/style/_layout.scss +0 -2
- package/lib/components/grid/style/_theme.scss +0 -2
- package/lib/components/grid/style/material.scss +1 -0
- package/lib/components/input-checkbox/input-checkbox.component.d.ts +9 -2
- package/lib/components/input-checkbox/style/_layout.scss +0 -2
- package/lib/components/input-checkbox/style/_theme.scss +0 -2
- package/lib/components/input-checkbox/style/material.scss +1 -0
- package/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.d.ts +4 -6
- package/lib/components/input-checkbox-multi-select/style/_layout.scss +0 -2
- package/lib/components/input-checkbox-multi-select/style/_theme.scss +0 -2
- package/lib/components/input-checkbox-multi-select/style/material.scss +1 -0
- package/lib/components/input-combo-box/input-combo-box.component.d.ts +6 -7
- package/lib/components/input-combo-box/style/_layout.scss +10 -3
- package/lib/components/input-combo-box/style/_material-definition.scss +0 -7
- package/lib/components/input-combo-box/style/_theme.scss +0 -2
- package/lib/components/input-combo-box/style/material.scss +9 -0
- package/lib/components/input-date-picker/input-date-picker.component.d.ts +4 -3
- package/lib/components/input-date-picker/style/_layout.scss +4 -3
- package/lib/components/input-date-picker/style/_theme.scss +0 -2
- package/lib/components/input-date-picker/style/material.scss +2 -0
- package/lib/components/input-listbox/input-listbox.component.d.ts +25 -0
- package/lib/components/input-listbox/input-listbox.module.d.ts +2 -0
- package/lib/components/input-listbox/style/_layout.scss +22 -0
- package/lib/components/input-listbox/style/_material-definition.scss +10 -0
- package/lib/components/input-listbox/style/_theme.scss +12 -0
- package/lib/components/input-listbox/style/material.scss +6 -0
- package/lib/components/input-number-picker/input-number-picker.component.d.ts +9 -5
- package/lib/components/input-number-picker/style/_layout.scss +41 -0
- package/lib/components/input-number-picker/style/_material-definition.scss +17 -0
- package/lib/components/input-number-picker/style/_theme.scss +20 -0
- package/lib/components/input-number-picker/style/material.scss +5 -0
- package/lib/components/input-radio-button/input-radio-button.component.d.ts +7 -2
- package/lib/components/input-radio-button/style/_layout.scss +0 -2
- package/lib/components/input-radio-button/style/_theme.scss +0 -2
- package/lib/components/input-radio-button/style/material.scss +1 -0
- package/lib/components/input-search/style/_layout.scss +39 -0
- package/lib/components/input-search/style/_material-definition.scss +6 -0
- package/lib/components/input-search/style/_theme.scss +6 -0
- package/lib/components/input-search/style/material.scss +5 -0
- package/lib/components/input-text/input-text.component.d.ts +6 -30
- package/lib/components/input-text/style/_layout.scss +14 -3
- package/lib/components/input-text/style/_material-definition.scss +4 -3
- package/lib/components/input-text/style/_theme.scss +0 -2
- package/lib/components/input-text/style/material.scss +3 -0
- package/lib/components/input-textarea/input-textarea.component.d.ts +18 -0
- package/lib/components/input-textarea/input-textarea.module.d.ts +2 -0
- package/lib/components/input-textarea/style/_layout.scss +20 -0
- package/lib/components/input-textarea/style/_material-definition.scss +4 -0
- package/lib/components/input-textarea/style/_theme.scss +8 -0
- package/lib/components/input-textarea/style/material.scss +7 -0
- package/lib/components/multi-select-list/multi-select-list.component.d.ts +13 -2
- package/lib/components/multi-select-list/style/_layout.scss +10 -3
- package/lib/components/multi-select-list/style/_theme.scss +0 -2
- package/lib/components/multi-select-list/style/material.scss +2 -0
- package/lib/components/pivot/co-pivot.component.d.ts +2 -2
- package/lib/components/pivot/style/_layout.scss +0 -2
- package/lib/components/pivot/style/_theme.scss +0 -2
- package/lib/components/pivot/style/material.scss +1 -0
- package/lib/components/simple-grid/simple-grid-column.directive.d.ts +18 -0
- package/lib/components/simple-grid/simple-grid.component.d.ts +26 -0
- package/lib/components/simple-grid/simple-grid.module.d.ts +2 -0
- package/lib/components/simple-grid/style/_layout.scss +78 -0
- package/lib/components/simple-grid/style/_material-definition.scss +16 -0
- package/lib/components/simple-grid/style/_theme.scss +15 -0
- package/lib/components/simple-grid/style/material.scss +5 -0
- package/lib/components/validation-error/style/_layout.scss +37 -0
- package/lib/components/validation-error/style/_material-definition.scss +9 -0
- package/lib/components/validation-error/style/_theme.scss +21 -0
- package/lib/components/validation-error/style/material.scss +5 -0
- package/lib/components/validation-error/validation-error.component.d.ts +4 -0
- package/lib/components/validation-error/validation-error.module.d.ts +2 -0
- package/lib/style/_input.mixins.scss +70 -281
- package/lib/style/_variables.scss +2 -0
- package/lib/style/material2/_core.scss +3 -3
- package/lib/style/material2/_material2-scss-barrel.scss +10 -10
- package/package.json +5 -2
- package/public-api.d.ts +12 -0
- package/esm2015/lib/core/enum/float-label-type.enum.js +0 -7
- package/esm2015/lib/core/enum/input-text-type.enum.js +0 -6
- package/esm2015/lib/core/model/numerical-range.js +0 -14
- package/lib/components/co-dialog/co-dialog.component.scss +0 -0
- package/lib/components/drop-down-list/drop-down-list.component.scss +0 -0
- package/lib/components/input-number-picker/input-number-picker.component.scss +0 -49
- package/lib/core/enum/float-label-type.enum.d.ts +0 -5
- package/lib/core/enum/input-text-type.enum.d.ts +0 -4
- package/lib/core/model/numerical-range.d.ts +0 -7
- package/lib/style/_extendables.scss +0 -32
- package/lib/style/_responsiveness.mixins.scss +0 -64
- package/lib/style/_responsiveness.scss +0 -4
- package/lib/style/_transition.mixins.scss +0 -21
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable, Component, Input, HostBinding, NgModule, Optional, SkipSelf, InjectionToken, Directive, ElementRef, NgZone, Inject, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Output, HostListener, Pipe, ViewChild, ChangeDetectorRef, forwardRef, NO_ERRORS_SCHEMA,
|
|
1
|
+
import { Injectable, Component, Input, HostBinding, NgModule, Optional, SkipSelf, InjectionToken, Directive, ElementRef, NgZone, Inject, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Output, HostListener, Pipe, ViewChild, ChangeDetectorRef, ComponentFactoryResolver, ViewContainerRef, forwardRef, NO_ERRORS_SCHEMA, Injector, ApplicationRef, ContentChild, TemplateRef, ContentChildren } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { HttpClientModule } from '@angular/common/http';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
@@ -6,21 +6,27 @@ import { Subject, merge, fromEvent } from 'rxjs';
|
|
|
6
6
|
import { auditTime } from 'rxjs/operators';
|
|
7
7
|
import { __decorate, __awaiter } from 'tslib';
|
|
8
8
|
import { DropDownButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
|
|
9
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
10
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
9
11
|
import { DialogModule } from '@syncfusion/ej2-angular-popups';
|
|
10
12
|
import { KanbanModule } from '@syncfusion/ej2-angular-kanban';
|
|
11
13
|
import { DayService, WeekService, WorkWeekService, MonthService, AgendaService, MonthAgendaService, TimelineViewsService, TimelineMonthService, ScheduleModule } from '@syncfusion/ej2-angular-schedule';
|
|
12
14
|
import { SidebarModule } from '@syncfusion/ej2-angular-navigations';
|
|
13
15
|
import { SwitchModule, CheckBoxModule, RadioButtonModule } from '@syncfusion/ej2-angular-buttons';
|
|
14
16
|
import { FormsModule, NgModel, FormGroup } from '@angular/forms';
|
|
15
|
-
import { CheckBoxSelectionService, DropDownListModule, MultiSelectModule, MultiSelectAllModule, ComboBoxAllModule } from '@syncfusion/ej2-angular-dropdowns';
|
|
17
|
+
import { CheckBoxSelectionService, DropDownListModule, MultiSelectModule, MultiSelectAllModule, ComboBoxAllModule, ListBoxComponent, CheckBoxSelection, ListBoxModule } from '@syncfusion/ej2-angular-dropdowns';
|
|
16
18
|
import { RowDDService, GridModule, PageService, SortService, FilterService, GroupService, ReorderService, ResizeService, ExcelExportService, PdfExportService, EditService, ToolbarService, ColumnChooserService, ColumnMenuService, ContextMenuService } from '@syncfusion/ej2-angular-grids';
|
|
17
19
|
import { enableRipple } from '@syncfusion/ej2-base';
|
|
18
20
|
import { DatePickerModule } from '@syncfusion/ej2-angular-calendars';
|
|
19
|
-
import {
|
|
21
|
+
import { TextBoxAllModule, NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs';
|
|
20
22
|
import { GroupingBarService, GroupingService, ToolbarService as ToolbarService$1, ConditionalFormattingService, FieldListService, NumberFormattingService, PivotViewModule } from '@syncfusion/ej2-angular-pivotview';
|
|
21
23
|
import { OverlayConfig, Overlay } from '@angular/cdk/overlay';
|
|
22
24
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
23
25
|
import { ToolbarService as ToolbarService$2, LinkService, ImageService, HtmlEditorService, RichTextEditorModule } from '@syncfusion/ej2-angular-richtexteditor';
|
|
26
|
+
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
27
|
+
import { PlaneBufferGeometry, Mesh, Vector2, Vector3, PlaneGeometry, MeshPhongMaterial, SpotLight, PerspectiveCamera, Scene, Color, AmbientLight, Fog, WebGLRenderer, Box3 } from 'three';
|
|
28
|
+
import { CSS3DObject, CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer';
|
|
29
|
+
import * as TWEEN from '@tweenjs/tween.js';
|
|
24
30
|
|
|
25
31
|
// @returns true iff given value equals null or equals undefined
|
|
26
32
|
function isNill(value) {
|
|
@@ -2161,70 +2167,66 @@ ButtonDropDownModule.decorators = [
|
|
|
2161
2167
|
|
|
2162
2168
|
class CoDialogComponent {
|
|
2163
2169
|
constructor() {
|
|
2164
|
-
this.
|
|
2170
|
+
this.icons = CoreComponentsIcon;
|
|
2165
2171
|
this.showCloseIcon = true;
|
|
2166
|
-
this.
|
|
2167
|
-
this.
|
|
2168
|
-
this.position = { X: 'center', Y: 'center' };
|
|
2169
|
-
this.modal = true;
|
|
2172
|
+
this.modal = false;
|
|
2173
|
+
this.animation = true;
|
|
2170
2174
|
this.closeClick = new EventEmitter();
|
|
2171
2175
|
this.overlayClick = new EventEmitter();
|
|
2172
|
-
this.onOverlayClick = () => {
|
|
2173
|
-
this.coDialog.hide();
|
|
2174
|
-
this.overlayClick.emit();
|
|
2175
|
-
};
|
|
2176
|
-
this.onCloseClick = () => {
|
|
2177
|
-
this.coDialog.hide();
|
|
2178
|
-
this.closeClick.emit();
|
|
2179
|
-
};
|
|
2180
2176
|
}
|
|
2181
|
-
|
|
2182
|
-
|
|
2177
|
+
showClass() {
|
|
2178
|
+
return true;
|
|
2183
2179
|
}
|
|
2184
|
-
|
|
2185
|
-
this.
|
|
2180
|
+
handleOverlayClick(event) {
|
|
2181
|
+
if (!this.modal) {
|
|
2182
|
+
this.overlayClick.next(event);
|
|
2183
|
+
}
|
|
2186
2184
|
}
|
|
2187
2185
|
}
|
|
2188
2186
|
CoDialogComponent.decorators = [
|
|
2189
2187
|
{ type: Component, args: [{
|
|
2190
2188
|
selector: 'co-dialog',
|
|
2191
2189
|
template: `
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
</ng-template>
|
|
2208
|
-
<ng-template #header>
|
|
2209
|
-
<ng-content select="[header]"></ng-content>
|
|
2210
|
-
</ng-template>
|
|
2211
|
-
</ejs-dialog>
|
|
2190
|
+
<div class="co-dialog-overlay" (click)="handleOverlayClick($event)" [@showHideOverlay]="animation"></div>
|
|
2191
|
+
<div class="co-dialog-wrapper" [@showHideDialog]="animation">
|
|
2192
|
+
<div class="dialog-header">
|
|
2193
|
+
<ng-content select="[header]"></ng-content>
|
|
2194
|
+
<div class="dialog-close-button" *ngIf="showCloseIcon" (click)="closeClick.emit($event)">
|
|
2195
|
+
<co-icon [icon]="icons.Cancel"></co-icon>
|
|
2196
|
+
</div>
|
|
2197
|
+
</div>
|
|
2198
|
+
<div class="dialog-content">
|
|
2199
|
+
<ng-content></ng-content>
|
|
2200
|
+
</div>
|
|
2201
|
+
<div class="dialog-footer">
|
|
2202
|
+
<ng-content select="[footer]"></ng-content>
|
|
2203
|
+
</div>
|
|
2204
|
+
</div>
|
|
2212
2205
|
`,
|
|
2213
|
-
|
|
2214
|
-
|
|
2206
|
+
animations: [
|
|
2207
|
+
trigger('showHideOverlay', [
|
|
2208
|
+
state('*', style({ opacity: 1 })),
|
|
2209
|
+
state('void', style({ opacity: 0 })),
|
|
2210
|
+
transition('void => *', animate(200)),
|
|
2211
|
+
transition('* => void', animate('200ms 200ms'))
|
|
2212
|
+
]),
|
|
2213
|
+
trigger('showHideDialog', [
|
|
2214
|
+
state('*', style({ opacity: 1 })),
|
|
2215
|
+
state('void', style({ opacity: 0 })),
|
|
2216
|
+
transition('void => *', animate('200ms 200ms')),
|
|
2217
|
+
transition('* => void', animate(200))
|
|
2218
|
+
])
|
|
2219
|
+
],
|
|
2220
|
+
encapsulation: ViewEncapsulation.None
|
|
2215
2221
|
},] }
|
|
2216
2222
|
];
|
|
2217
|
-
CoDialogComponent.ctorParameters = () => [];
|
|
2218
2223
|
CoDialogComponent.propDecorators = {
|
|
2219
|
-
coDialog: [{ type: ViewChild, args: ['template',] }],
|
|
2220
|
-
targetElement: [{ type: Input }],
|
|
2221
2224
|
showCloseIcon: [{ type: Input }],
|
|
2222
|
-
width: [{ type: Input }],
|
|
2223
|
-
visible: [{ type: Input }],
|
|
2224
|
-
position: [{ type: Input }],
|
|
2225
2225
|
modal: [{ type: Input }],
|
|
2226
|
+
animation: [{ type: Input }],
|
|
2226
2227
|
closeClick: [{ type: Output }],
|
|
2227
|
-
overlayClick: [{ type: Output }]
|
|
2228
|
+
overlayClick: [{ type: Output }],
|
|
2229
|
+
showClass: [{ type: HostBinding, args: ["class.co-dialog",] }]
|
|
2228
2230
|
};
|
|
2229
2231
|
|
|
2230
2232
|
class CoDialogModule {
|
|
@@ -2232,10 +2234,11 @@ class CoDialogModule {
|
|
|
2232
2234
|
CoDialogModule.decorators = [
|
|
2233
2235
|
{ type: NgModule, args: [{
|
|
2234
2236
|
imports: [
|
|
2235
|
-
|
|
2237
|
+
CommonModule,
|
|
2238
|
+
BrowserAnimationsModule,
|
|
2239
|
+
IconModule
|
|
2236
2240
|
],
|
|
2237
2241
|
declarations: [CoDialogComponent],
|
|
2238
|
-
providers: [],
|
|
2239
2242
|
exports: [CoDialogComponent]
|
|
2240
2243
|
},] }
|
|
2241
2244
|
];
|
|
@@ -2273,11 +2276,11 @@ CoDialogPromptComponent.decorators = [
|
|
|
2273
2276
|
selector: 'co-dialog-prompt',
|
|
2274
2277
|
template: `
|
|
2275
2278
|
<div #coDialogPromptRootContainer class='co-dialog-prompt-root-container'></div>
|
|
2276
|
-
<ejs-dialog #coDialogPrompt
|
|
2277
|
-
[buttons]="buttons"
|
|
2279
|
+
<ejs-dialog #coDialogPrompt
|
|
2280
|
+
[buttons]="buttons"
|
|
2278
2281
|
[header]="header"
|
|
2279
|
-
[content]="content"
|
|
2280
|
-
[showCloseIcon]="showCloseIcon"
|
|
2282
|
+
[content]="content"
|
|
2283
|
+
[showCloseIcon]="showCloseIcon"
|
|
2281
2284
|
[target]="target"
|
|
2282
2285
|
[visible]="visible"
|
|
2283
2286
|
[width]="width"
|
|
@@ -2325,14 +2328,14 @@ class CoKanbanComponent {
|
|
|
2325
2328
|
this.dragStartEvent = new EventEmitter();
|
|
2326
2329
|
this.dragStopEvent = new EventEmitter();
|
|
2327
2330
|
}
|
|
2331
|
+
showClass() {
|
|
2332
|
+
return true;
|
|
2333
|
+
}
|
|
2328
2334
|
ngOnInit() {
|
|
2329
2335
|
}
|
|
2330
2336
|
ngAfterViewInit() {
|
|
2331
2337
|
if (this.columns) {
|
|
2332
|
-
|
|
2333
|
-
this.kanban.columns = this.columns;
|
|
2334
|
-
this.kanban.refreshHeader();
|
|
2335
|
-
}, 1000);
|
|
2338
|
+
this.kanban.columns = this.columns;
|
|
2336
2339
|
}
|
|
2337
2340
|
}
|
|
2338
2341
|
dialogOpen(args) {
|
|
@@ -2394,7 +2397,8 @@ CoKanbanComponent.propDecorators = {
|
|
|
2394
2397
|
cardClickEvent: [{ type: Output }],
|
|
2395
2398
|
cardDoubleClickEvent: [{ type: Output }],
|
|
2396
2399
|
dragStartEvent: [{ type: Output }],
|
|
2397
|
-
dragStopEvent: [{ type: Output }]
|
|
2400
|
+
dragStopEvent: [{ type: Output }],
|
|
2401
|
+
showClass: [{ type: HostBinding, args: ["class.co-kanban",] }]
|
|
2398
2402
|
};
|
|
2399
2403
|
__decorate([
|
|
2400
2404
|
InputBoolean()
|
|
@@ -2609,6 +2613,76 @@ CoToggleModule.decorators = [
|
|
|
2609
2613
|
},] }
|
|
2610
2614
|
];
|
|
2611
2615
|
|
|
2616
|
+
class CollapsibleComponent {
|
|
2617
|
+
constructor(_elementRef) {
|
|
2618
|
+
this._elementRef = _elementRef;
|
|
2619
|
+
this.expandButtonLast = false;
|
|
2620
|
+
this.expanded = false;
|
|
2621
|
+
this.expandedChange = new EventEmitter();
|
|
2622
|
+
}
|
|
2623
|
+
showClass() {
|
|
2624
|
+
return true;
|
|
2625
|
+
}
|
|
2626
|
+
onHostClick(event) {
|
|
2627
|
+
}
|
|
2628
|
+
ngOnDestroy() {
|
|
2629
|
+
this._elementRef = undefined;
|
|
2630
|
+
}
|
|
2631
|
+
focus() {
|
|
2632
|
+
this._elementRef.nativeElement.focus();
|
|
2633
|
+
}
|
|
2634
|
+
changeExpanded() {
|
|
2635
|
+
this.expanded = !this.expanded;
|
|
2636
|
+
this.expandedChange.next(this.expanded);
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
CollapsibleComponent.decorators = [
|
|
2640
|
+
{ type: Component, args: [{
|
|
2641
|
+
selector: "co-collapsible",
|
|
2642
|
+
template: `
|
|
2643
|
+
<div class="collapsible-header" [class.end]="expandButtonLast" (click)="changeExpanded()">
|
|
2644
|
+
<div class="expand-icon-wrapper" [class.expanded]="expanded" *ngIf="!expandButtonLast">
|
|
2645
|
+
<co-icon class="expand-icon" [iconData]="iconData"></co-icon>
|
|
2646
|
+
</div>
|
|
2647
|
+
<div class="collapsible-title" [textContent]="headerTitle"></div>
|
|
2648
|
+
<div class="expand-icon-wrapper" [class.expanded]="expanded" *ngIf="expandButtonLast">
|
|
2649
|
+
<co-icon class="expand-icon" [iconData]="iconData"></co-icon>
|
|
2650
|
+
</div>
|
|
2651
|
+
</div>
|
|
2652
|
+
<div class="collapsible-content" *ngIf="expanded">
|
|
2653
|
+
<ng-content></ng-content>
|
|
2654
|
+
</div>
|
|
2655
|
+
`,
|
|
2656
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2657
|
+
encapsulation: ViewEncapsulation.None
|
|
2658
|
+
},] }
|
|
2659
|
+
];
|
|
2660
|
+
CollapsibleComponent.ctorParameters = () => [
|
|
2661
|
+
{ type: ElementRef }
|
|
2662
|
+
];
|
|
2663
|
+
CollapsibleComponent.propDecorators = {
|
|
2664
|
+
headerTitle: [{ type: Input }],
|
|
2665
|
+
iconData: [{ type: Input }],
|
|
2666
|
+
expandButtonLast: [{ type: Input }],
|
|
2667
|
+
expanded: [{ type: Input }],
|
|
2668
|
+
expandedChange: [{ type: Output }],
|
|
2669
|
+
showClass: [{ type: HostBinding, args: ["class.co-collapsible",] }],
|
|
2670
|
+
onHostClick: [{ type: HostListener, args: ["click", ["$event"],] }]
|
|
2671
|
+
};
|
|
2672
|
+
|
|
2673
|
+
class CollapsibleModule {
|
|
2674
|
+
}
|
|
2675
|
+
CollapsibleModule.decorators = [
|
|
2676
|
+
{ type: NgModule, args: [{
|
|
2677
|
+
imports: [
|
|
2678
|
+
CommonModule,
|
|
2679
|
+
IconModule
|
|
2680
|
+
],
|
|
2681
|
+
declarations: [CollapsibleComponent],
|
|
2682
|
+
exports: [CollapsibleComponent]
|
|
2683
|
+
},] }
|
|
2684
|
+
];
|
|
2685
|
+
|
|
2612
2686
|
class FormInputUserModelChangeListenerService {
|
|
2613
2687
|
constructor() {
|
|
2614
2688
|
// Signal from input-field to change-listener user. Emits (or: should be emitted) each time the end-user has changed the state of a form input's model. Emits model as value.
|
|
@@ -2696,17 +2770,36 @@ function maxStringLengthValidator(length) {
|
|
|
2696
2770
|
};
|
|
2697
2771
|
}
|
|
2698
2772
|
|
|
2773
|
+
class ValidationErrorComponent {
|
|
2774
|
+
showClass() {
|
|
2775
|
+
return true;
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
ValidationErrorComponent.decorators = [
|
|
2779
|
+
{ type: Component, args: [{
|
|
2780
|
+
selector: "co-validation-error",
|
|
2781
|
+
template: `
|
|
2782
|
+
<div class="validation-error-content">
|
|
2783
|
+
<div class="validation-error-message" [textContent]="error"></div>
|
|
2784
|
+
</div>
|
|
2785
|
+
`,
|
|
2786
|
+
animations: [],
|
|
2787
|
+
encapsulation: ViewEncapsulation.None
|
|
2788
|
+
},] }
|
|
2789
|
+
];
|
|
2790
|
+
ValidationErrorComponent.propDecorators = {
|
|
2791
|
+
error: [{ type: Input }],
|
|
2792
|
+
showClass: [{ type: HostBinding, args: ['class.co-validation-error',] }]
|
|
2793
|
+
};
|
|
2794
|
+
|
|
2699
2795
|
/**
|
|
2700
2796
|
* Abstract base class for all concrete form input components that contain a native <input> element. Provides common data and functionality, such as
|
|
2701
2797
|
* adding self as a control to the parent form.
|
|
2702
2798
|
*/
|
|
2703
2799
|
class BaseInputComponent {
|
|
2704
|
-
constructor(changeDetector, formUserChangeListener,
|
|
2705
|
-
// @Optional() protected speechInput?: SpeechInputService,
|
|
2706
|
-
ngZoneWrapper,
|
|
2707
|
-
// @Optional() protected tooltipManager?: AppTooltipDynamicManagerService,
|
|
2708
|
-
elementRef) {
|
|
2800
|
+
constructor(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
2709
2801
|
this.changeDetector = changeDetector;
|
|
2802
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
2710
2803
|
this.formUserChangeListener = formUserChangeListener;
|
|
2711
2804
|
this.ngZoneWrapper = ngZoneWrapper;
|
|
2712
2805
|
this.elementRef = elementRef;
|
|
@@ -2756,6 +2849,7 @@ class BaseInputComponent {
|
|
|
2756
2849
|
}
|
|
2757
2850
|
set model(value) {
|
|
2758
2851
|
this._model = value;
|
|
2852
|
+
this._clearErrorComponent();
|
|
2759
2853
|
}
|
|
2760
2854
|
get model() {
|
|
2761
2855
|
return this._model;
|
|
@@ -2866,7 +2960,6 @@ class BaseInputComponent {
|
|
|
2866
2960
|
return this._myFormInputInstance;
|
|
2867
2961
|
}
|
|
2868
2962
|
get formSubmitted() {
|
|
2869
|
-
return true;
|
|
2870
2963
|
return this.formComponent && this.formComponent.submitted;
|
|
2871
2964
|
}
|
|
2872
2965
|
get hasNoLabel() {
|
|
@@ -2908,6 +3001,16 @@ class BaseInputComponent {
|
|
|
2908
3001
|
get isDestroyed() {
|
|
2909
3002
|
return this._destroyed;
|
|
2910
3003
|
}
|
|
3004
|
+
showValidationError(error) {
|
|
3005
|
+
if (this.validationErrorContainer) {
|
|
3006
|
+
if (this._errorValidationComponent) {
|
|
3007
|
+
this._clearErrorComponent();
|
|
3008
|
+
}
|
|
3009
|
+
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ValidationErrorComponent);
|
|
3010
|
+
this._errorValidationComponent = this.validationErrorContainer.createComponent(componentFactory);
|
|
3011
|
+
this._errorValidationComponent.instance.error = error;
|
|
3012
|
+
}
|
|
3013
|
+
}
|
|
2911
3014
|
ngOnInit() {
|
|
2912
3015
|
this._modelChangeSub = this.modelChange.subscribe((val) => {
|
|
2913
3016
|
this.model = val;
|
|
@@ -2931,6 +3034,7 @@ class BaseInputComponent {
|
|
|
2931
3034
|
}
|
|
2932
3035
|
ngOnDestroy() {
|
|
2933
3036
|
this._destroyed = true;
|
|
3037
|
+
this._clearErrorComponent();
|
|
2934
3038
|
// if (this.tooltipManager && this.elementRef) {
|
|
2935
3039
|
// this.tooltipManager.destroyErrorTooltipOfElement(this.elementRef.nativeElement);
|
|
2936
3040
|
// }
|
|
@@ -3099,6 +3203,15 @@ class BaseInputComponent {
|
|
|
3099
3203
|
this.control.updateValueAndValidity();
|
|
3100
3204
|
}
|
|
3101
3205
|
}
|
|
3206
|
+
_clearErrorComponent() {
|
|
3207
|
+
if (this.validationErrorContainer) {
|
|
3208
|
+
this.validationErrorContainer.clear();
|
|
3209
|
+
if (this._errorValidationComponent) {
|
|
3210
|
+
this._errorValidationComponent.destroy();
|
|
3211
|
+
this._errorValidationComponent = undefined;
|
|
3212
|
+
}
|
|
3213
|
+
}
|
|
3214
|
+
}
|
|
3102
3215
|
// whether this.ngModel.control has safe access
|
|
3103
3216
|
_controlExists() {
|
|
3104
3217
|
return this.ngModel && !!this.control;
|
|
@@ -3167,11 +3280,13 @@ BaseInputComponent.decorators = [
|
|
|
3167
3280
|
];
|
|
3168
3281
|
BaseInputComponent.ctorParameters = () => [
|
|
3169
3282
|
{ type: ChangeDetectorRef },
|
|
3283
|
+
{ type: ComponentFactoryResolver },
|
|
3170
3284
|
{ type: FormInputUserModelChangeListenerService, decorators: [{ type: Optional }] },
|
|
3171
3285
|
{ type: NgZoneWrapperService, decorators: [{ type: Optional }] },
|
|
3172
3286
|
{ type: ElementRef, decorators: [{ type: Optional }] }
|
|
3173
3287
|
];
|
|
3174
3288
|
BaseInputComponent.propDecorators = {
|
|
3289
|
+
validationErrorContainer: [{ type: ViewChild, args: ["validationError", { read: ViewContainerRef },] }],
|
|
3175
3290
|
model: [{ type: Input }],
|
|
3176
3291
|
label: [{ type: Input }],
|
|
3177
3292
|
noValidation: [{ type: Input }],
|
|
@@ -3202,7 +3317,7 @@ BaseInputComponent.propDecorators = {
|
|
|
3202
3317
|
userModelChange: [{ type: Output }],
|
|
3203
3318
|
hiddenChange: [{ type: Output }],
|
|
3204
3319
|
_ngModel: [{ type: ViewChild, args: [NgModel, { static: true },] }],
|
|
3205
|
-
focused: [{ type: HostBinding, args: ["class.focused",] }],
|
|
3320
|
+
focused: [{ type: HostBinding, args: ["class.cc-input-focused",] }],
|
|
3206
3321
|
formInput: [{ type: HostBinding, args: ["class.form-input",] }],
|
|
3207
3322
|
customWidth: [{ type: Input }, { type: HostBinding, args: ["class.custom-width",] }],
|
|
3208
3323
|
noTriangleGraphic: [{ type: Input }],
|
|
@@ -3254,78 +3369,6 @@ __decorate([
|
|
|
3254
3369
|
InputBoolean()
|
|
3255
3370
|
], BaseInputComponent.prototype, "noFormGroupControl", void 0);
|
|
3256
3371
|
|
|
3257
|
-
class DropDownListComponent extends BaseInputComponent {
|
|
3258
|
-
constructor() {
|
|
3259
|
-
super(...arguments);
|
|
3260
|
-
/**
|
|
3261
|
-
* In the form { text: 'name', value: 'id' }
|
|
3262
|
-
* Where 'text' is showing in the dropdown and 'id' used for the model binding
|
|
3263
|
-
*/
|
|
3264
|
-
this.fields = {};
|
|
3265
|
-
}
|
|
3266
|
-
showClass() {
|
|
3267
|
-
return true;
|
|
3268
|
-
}
|
|
3269
|
-
handleValueChanged(value) {
|
|
3270
|
-
if (value !== this.model) {
|
|
3271
|
-
this.modelChange.next(value);
|
|
3272
|
-
}
|
|
3273
|
-
}
|
|
3274
|
-
}
|
|
3275
|
-
DropDownListComponent.decorators = [
|
|
3276
|
-
{ type: Component, args: [{
|
|
3277
|
-
selector: "co-drop-down-list",
|
|
3278
|
-
template: `
|
|
3279
|
-
<ejs-dropdownlist
|
|
3280
|
-
[dataSource]="collection"
|
|
3281
|
-
[value]="model"
|
|
3282
|
-
[fields]="fields"
|
|
3283
|
-
[placeholder]="placeHolder"
|
|
3284
|
-
[cssClass]="'co-drop-down-list'"
|
|
3285
|
-
[readonly]="readonly"
|
|
3286
|
-
[itemTemplate]="itemTemplate"
|
|
3287
|
-
[headerTemplate]="headerTemplate"
|
|
3288
|
-
[valueTemplate]="valueTemplate"
|
|
3289
|
-
(valueChange)="handleValueChanged($event)"
|
|
3290
|
-
>
|
|
3291
|
-
</ejs-dropdownlist>
|
|
3292
|
-
`,
|
|
3293
|
-
providers: [
|
|
3294
|
-
CheckBoxSelectionService,
|
|
3295
|
-
{
|
|
3296
|
-
provide: COMPONENT_INTERFACE_NAME,
|
|
3297
|
-
useExisting: forwardRef(() => DropDownListComponent)
|
|
3298
|
-
}
|
|
3299
|
-
],
|
|
3300
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3301
|
-
encapsulation: ViewEncapsulation.None
|
|
3302
|
-
},] }
|
|
3303
|
-
];
|
|
3304
|
-
DropDownListComponent.propDecorators = {
|
|
3305
|
-
collection: [{ type: Input }],
|
|
3306
|
-
fields: [{ type: Input }],
|
|
3307
|
-
placeHolder: [{ type: Input }],
|
|
3308
|
-
itemTemplate: [{ type: Input }],
|
|
3309
|
-
headerTemplate: [{ type: Input }],
|
|
3310
|
-
valueTemplate: [{ type: Input }],
|
|
3311
|
-
showClass: [{ type: HostBinding, args: ["class.co-drop-down-list",] }]
|
|
3312
|
-
};
|
|
3313
|
-
|
|
3314
|
-
class DropDownModule {
|
|
3315
|
-
}
|
|
3316
|
-
DropDownModule.decorators = [
|
|
3317
|
-
{ type: NgModule, args: [{
|
|
3318
|
-
imports: [
|
|
3319
|
-
BaseModule,
|
|
3320
|
-
CommonModule,
|
|
3321
|
-
DropDownListModule,
|
|
3322
|
-
MultiSelectModule
|
|
3323
|
-
],
|
|
3324
|
-
declarations: [DropDownListComponent],
|
|
3325
|
-
exports: [DropDownListComponent]
|
|
3326
|
-
},] }
|
|
3327
|
-
];
|
|
3328
|
-
|
|
3329
3372
|
// Represents a positional model
|
|
3330
3373
|
class ElementPosition {
|
|
3331
3374
|
constructor(top, right, bottom, left) {
|
|
@@ -3565,33 +3608,15 @@ class FormComponent {
|
|
|
3565
3608
|
for (const errorKey in this.formGroup.controls[controlKey].errors) {
|
|
3566
3609
|
if (this.formGroup.controls[controlKey].errors.hasOwnProperty(errorKey)) {
|
|
3567
3610
|
const error = this.formGroup.controls[controlKey].errors[errorKey];
|
|
3568
|
-
const errorText = this._getValidationErrorText(error);
|
|
3569
|
-
const controlElement = comp.elementRef.nativeElement;
|
|
3570
3611
|
if (controlKey === key) {
|
|
3571
|
-
|
|
3612
|
+
comp.showValidationError(error);
|
|
3572
3613
|
}
|
|
3573
|
-
comp.redErrorBackground = true;
|
|
3574
3614
|
}
|
|
3575
3615
|
}
|
|
3576
3616
|
}
|
|
3577
3617
|
}
|
|
3578
3618
|
}
|
|
3579
3619
|
}
|
|
3580
|
-
_getValidationErrorText(validationError) {
|
|
3581
|
-
return "";
|
|
3582
|
-
if (StringUtils.IsString(validationError)) {
|
|
3583
|
-
// return this._dictionary.get(validationError);
|
|
3584
|
-
}
|
|
3585
|
-
else if (validationError.message) {
|
|
3586
|
-
if (validationError.placeholder) {
|
|
3587
|
-
// see e.g. maxStringLengthValidator, where we return this {message: string, placeholder: string} object shape as validation error obj
|
|
3588
|
-
// return this._dictionary.get(validationError.message, true, validationError.placeholder);
|
|
3589
|
-
}
|
|
3590
|
-
else {
|
|
3591
|
-
// return this._dictionary.get(validationError.message);
|
|
3592
|
-
}
|
|
3593
|
-
}
|
|
3594
|
-
}
|
|
3595
3620
|
_setFirstInvalidElementOnMaster() {
|
|
3596
3621
|
const elements = Array.from(this._componentMap);
|
|
3597
3622
|
const len = elements.length;
|
|
@@ -3627,6 +3652,98 @@ FormComponent.propDecorators = {
|
|
|
3627
3652
|
onEnterKey: [{ type: HostListener, args: ['keyup.enter', ['$event'],] }]
|
|
3628
3653
|
};
|
|
3629
3654
|
|
|
3655
|
+
class DropDownListComponent extends BaseInputComponent {
|
|
3656
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
3657
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
3658
|
+
this.formComponent = formComponent;
|
|
3659
|
+
this.changeDetector = changeDetector;
|
|
3660
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
3661
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
3662
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
3663
|
+
this.elementRef = elementRef;
|
|
3664
|
+
/**
|
|
3665
|
+
* In the form { text: 'name', value: 'id' }
|
|
3666
|
+
* Where 'text' is showing in the dropdown and 'id' used for the model binding
|
|
3667
|
+
*/
|
|
3668
|
+
this.fields = {};
|
|
3669
|
+
super._markAsOnPush();
|
|
3670
|
+
}
|
|
3671
|
+
showClass() {
|
|
3672
|
+
return true;
|
|
3673
|
+
}
|
|
3674
|
+
handleValueChanged(value) {
|
|
3675
|
+
if (value !== this.model) {
|
|
3676
|
+
this.modelChange.next(value);
|
|
3677
|
+
}
|
|
3678
|
+
}
|
|
3679
|
+
}
|
|
3680
|
+
DropDownListComponent.decorators = [
|
|
3681
|
+
{ type: Component, args: [{
|
|
3682
|
+
selector: "co-drop-down-list",
|
|
3683
|
+
template: `
|
|
3684
|
+
<ejs-dropdownlist
|
|
3685
|
+
[dataSource]="collection"
|
|
3686
|
+
[value]="model"
|
|
3687
|
+
[fields]="fields"
|
|
3688
|
+
[placeholder]="placeholder"
|
|
3689
|
+
[readonly]="readonly"
|
|
3690
|
+
[itemTemplate]="itemTemplate"
|
|
3691
|
+
[headerTemplate]="headerTemplate"
|
|
3692
|
+
[valueTemplate]="valueTemplate"
|
|
3693
|
+
[ngModel]="model"
|
|
3694
|
+
(ngModelChange)="modelChange.emit($event)"
|
|
3695
|
+
(valueChange)="handleValueChanged($event)"
|
|
3696
|
+
showClearButton="true"
|
|
3697
|
+
floatLabelType="Auto"
|
|
3698
|
+
>
|
|
3699
|
+
</ejs-dropdownlist>
|
|
3700
|
+
<div class="required-indicator"></div>
|
|
3701
|
+
<ng-template #validationError></ng-template>
|
|
3702
|
+
`,
|
|
3703
|
+
providers: [
|
|
3704
|
+
CheckBoxSelectionService,
|
|
3705
|
+
{
|
|
3706
|
+
provide: COMPONENT_INTERFACE_NAME,
|
|
3707
|
+
useExisting: forwardRef(() => DropDownListComponent)
|
|
3708
|
+
}
|
|
3709
|
+
],
|
|
3710
|
+
encapsulation: ViewEncapsulation.None
|
|
3711
|
+
},] }
|
|
3712
|
+
];
|
|
3713
|
+
DropDownListComponent.ctorParameters = () => [
|
|
3714
|
+
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
3715
|
+
{ type: ChangeDetectorRef },
|
|
3716
|
+
{ type: ComponentFactoryResolver },
|
|
3717
|
+
{ type: FormInputUserModelChangeListenerService },
|
|
3718
|
+
{ type: NgZoneWrapperService },
|
|
3719
|
+
{ type: ElementRef }
|
|
3720
|
+
];
|
|
3721
|
+
DropDownListComponent.propDecorators = {
|
|
3722
|
+
collection: [{ type: Input }],
|
|
3723
|
+
fields: [{ type: Input }],
|
|
3724
|
+
placeholder: [{ type: Input }],
|
|
3725
|
+
itemTemplate: [{ type: Input }],
|
|
3726
|
+
headerTemplate: [{ type: Input }],
|
|
3727
|
+
valueTemplate: [{ type: Input }],
|
|
3728
|
+
showClass: [{ type: HostBinding, args: ["class.co-drop-down-list",] }]
|
|
3729
|
+
};
|
|
3730
|
+
|
|
3731
|
+
class DropDownModule {
|
|
3732
|
+
}
|
|
3733
|
+
DropDownModule.decorators = [
|
|
3734
|
+
{ type: NgModule, args: [{
|
|
3735
|
+
imports: [
|
|
3736
|
+
BaseModule,
|
|
3737
|
+
CommonModule,
|
|
3738
|
+
DropDownListModule,
|
|
3739
|
+
MultiSelectModule,
|
|
3740
|
+
FormsModule
|
|
3741
|
+
],
|
|
3742
|
+
declarations: [DropDownListComponent],
|
|
3743
|
+
exports: [DropDownListComponent]
|
|
3744
|
+
},] }
|
|
3745
|
+
];
|
|
3746
|
+
|
|
3630
3747
|
class FormModule {
|
|
3631
3748
|
}
|
|
3632
3749
|
FormModule.decorators = [
|
|
@@ -4003,9 +4120,15 @@ CoGridModule.decorators = [
|
|
|
4003
4120
|
];
|
|
4004
4121
|
|
|
4005
4122
|
class InputCheckboxComponent extends BaseInputComponent {
|
|
4006
|
-
constructor(formComponent, changeDetector, formUserChangeListener, ngZoneWrapper) {
|
|
4007
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper);
|
|
4123
|
+
constructor(formComponent, iconCacheService, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4124
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4008
4125
|
this.formComponent = formComponent;
|
|
4126
|
+
this.iconCacheService = iconCacheService;
|
|
4127
|
+
this.changeDetector = changeDetector;
|
|
4128
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4129
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
4130
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
4131
|
+
this.elementRef = elementRef;
|
|
4009
4132
|
this.modelChange = new EventEmitter();
|
|
4010
4133
|
}
|
|
4011
4134
|
showClass() {
|
|
@@ -4042,9 +4165,12 @@ InputCheckboxComponent.decorators = [
|
|
|
4042
4165
|
];
|
|
4043
4166
|
InputCheckboxComponent.ctorParameters = () => [
|
|
4044
4167
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
4168
|
+
{ type: IconCacheService },
|
|
4045
4169
|
{ type: ChangeDetectorRef },
|
|
4170
|
+
{ type: ComponentFactoryResolver },
|
|
4046
4171
|
{ type: FormInputUserModelChangeListenerService },
|
|
4047
|
-
{ type: NgZoneWrapperService }
|
|
4172
|
+
{ type: NgZoneWrapperService },
|
|
4173
|
+
{ type: ElementRef }
|
|
4048
4174
|
];
|
|
4049
4175
|
InputCheckboxComponent.propDecorators = {
|
|
4050
4176
|
name: [{ type: Input }],
|
|
@@ -4100,10 +4226,11 @@ AppendPipeModule.decorators = [
|
|
|
4100
4226
|
];
|
|
4101
4227
|
|
|
4102
4228
|
class InputCheckboxMultiSelectComponent extends BaseInputComponent {
|
|
4103
|
-
constructor(formComponent, changeDetector, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4104
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4229
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4230
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4105
4231
|
this.formComponent = formComponent;
|
|
4106
4232
|
this.changeDetector = changeDetector;
|
|
4233
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4107
4234
|
this.formUserChangeListener = formUserChangeListener;
|
|
4108
4235
|
this.ngZoneWrapper = ngZoneWrapper;
|
|
4109
4236
|
this.elementRef = elementRef;
|
|
@@ -4112,16 +4239,6 @@ class InputCheckboxMultiSelectComponent extends BaseInputComponent {
|
|
|
4112
4239
|
showClass() {
|
|
4113
4240
|
return true;
|
|
4114
4241
|
}
|
|
4115
|
-
ngOnDestroy() {
|
|
4116
|
-
this.elementRef = undefined;
|
|
4117
|
-
super.ngOnDestroy();
|
|
4118
|
-
}
|
|
4119
|
-
ngOnInit() {
|
|
4120
|
-
super.ngOnInit();
|
|
4121
|
-
}
|
|
4122
|
-
ngAfterViewInit() {
|
|
4123
|
-
super.ngAfterViewInit();
|
|
4124
|
-
}
|
|
4125
4242
|
}
|
|
4126
4243
|
InputCheckboxMultiSelectComponent.decorators = [
|
|
4127
4244
|
{ type: Component, args: [{
|
|
@@ -4148,6 +4265,7 @@ InputCheckboxMultiSelectComponent.decorators = [
|
|
|
4148
4265
|
InputCheckboxMultiSelectComponent.ctorParameters = () => [
|
|
4149
4266
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
4150
4267
|
{ type: ChangeDetectorRef },
|
|
4268
|
+
{ type: ComponentFactoryResolver },
|
|
4151
4269
|
{ type: FormInputUserModelChangeListenerService },
|
|
4152
4270
|
{ type: NgZoneWrapperService },
|
|
4153
4271
|
{ type: ElementRef }
|
|
@@ -4179,29 +4297,21 @@ InputCheckboxMultiSelectModule.decorators = [
|
|
|
4179
4297
|
];
|
|
4180
4298
|
|
|
4181
4299
|
class InputComboBoxComponent extends BaseInputComponent {
|
|
4182
|
-
constructor(formComponent, changeDetector, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4183
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4300
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4301
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4184
4302
|
this.formComponent = formComponent;
|
|
4185
4303
|
this.changeDetector = changeDetector;
|
|
4304
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4186
4305
|
this.formUserChangeListener = formUserChangeListener;
|
|
4187
4306
|
this.ngZoneWrapper = ngZoneWrapper;
|
|
4188
4307
|
this.elementRef = elementRef;
|
|
4189
4308
|
this.shopPopup = true;
|
|
4309
|
+
this.customHeight = true;
|
|
4190
4310
|
super._markAsOnPush();
|
|
4191
4311
|
}
|
|
4192
4312
|
showClass() {
|
|
4193
4313
|
return true;
|
|
4194
4314
|
}
|
|
4195
|
-
ngOnDestroy() {
|
|
4196
|
-
this.elementRef = undefined;
|
|
4197
|
-
super.ngOnDestroy();
|
|
4198
|
-
}
|
|
4199
|
-
ngOnInit() {
|
|
4200
|
-
super.ngOnInit();
|
|
4201
|
-
}
|
|
4202
|
-
ngAfterViewInit() {
|
|
4203
|
-
super.ngAfterViewInit();
|
|
4204
|
-
}
|
|
4205
4315
|
onFocus() {
|
|
4206
4316
|
if (this.shopPopup && this.model === undefined) {
|
|
4207
4317
|
this.combo.showPopup();
|
|
@@ -4212,41 +4322,44 @@ InputComboBoxComponent.decorators = [
|
|
|
4212
4322
|
{ type: Component, args: [{
|
|
4213
4323
|
selector: "co-input-combo-box",
|
|
4214
4324
|
template: `
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4325
|
+
<ejs-combobox #combo [dataSource]="collection"
|
|
4326
|
+
[fields]="fields"
|
|
4327
|
+
[placeholder]="placeholder"
|
|
4328
|
+
[autofill]="true"
|
|
4329
|
+
[ngModel]="model"
|
|
4330
|
+
(ngModelChange)="modelChange.emit($event)"
|
|
4331
|
+
(focus)="onFocus()"
|
|
4332
|
+
showClearButton="true"
|
|
4333
|
+
floatLabelType="Auto"
|
|
4334
|
+
>
|
|
4335
|
+
</ejs-combobox>
|
|
4336
|
+
<div class="required-indicator"></div>
|
|
4337
|
+
<ng-template #validationError></ng-template>
|
|
4338
|
+
`,
|
|
4227
4339
|
providers: [{
|
|
4228
4340
|
provide: COMPONENT_INTERFACE_NAME,
|
|
4229
4341
|
useExisting: forwardRef(() => InputComboBoxComponent)
|
|
4230
4342
|
}],
|
|
4231
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4232
4343
|
encapsulation: ViewEncapsulation.None
|
|
4233
4344
|
},] }
|
|
4234
4345
|
];
|
|
4235
4346
|
InputComboBoxComponent.ctorParameters = () => [
|
|
4236
4347
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
4237
4348
|
{ type: ChangeDetectorRef },
|
|
4349
|
+
{ type: ComponentFactoryResolver },
|
|
4238
4350
|
{ type: FormInputUserModelChangeListenerService },
|
|
4239
4351
|
{ type: NgZoneWrapperService },
|
|
4240
4352
|
{ type: ElementRef }
|
|
4241
4353
|
];
|
|
4242
4354
|
InputComboBoxComponent.propDecorators = {
|
|
4243
4355
|
combo: [{ type: ViewChild, args: ["combo",] }],
|
|
4244
|
-
|
|
4356
|
+
collection: [{ type: Input }],
|
|
4245
4357
|
fields: [{ type: Input }],
|
|
4246
4358
|
selected: [{ type: Input }],
|
|
4247
4359
|
placeholder: [{ type: Input }],
|
|
4248
4360
|
shopPopup: [{ type: Input }],
|
|
4249
|
-
showClass: [{ type: HostBinding, args: ["class.co-input-combo-box",] }]
|
|
4361
|
+
showClass: [{ type: HostBinding, args: ["class.co-input-combo-box",] }],
|
|
4362
|
+
customHeight: [{ type: HostBinding, args: ["class.custom-height",] }]
|
|
4250
4363
|
};
|
|
4251
4364
|
|
|
4252
4365
|
class InputComboBoxModule {
|
|
@@ -4267,11 +4380,12 @@ InputComboBoxModule.decorators = [
|
|
|
4267
4380
|
];
|
|
4268
4381
|
|
|
4269
4382
|
class InputDatePickerComponent extends BaseInputComponent {
|
|
4270
|
-
constructor(
|
|
4271
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4272
|
-
this.iconCacheService = iconCacheService;
|
|
4383
|
+
constructor(formComponent, iconCacheService, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4384
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4273
4385
|
this.formComponent = formComponent;
|
|
4386
|
+
this.iconCacheService = iconCacheService;
|
|
4274
4387
|
this.changeDetector = changeDetector;
|
|
4388
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4275
4389
|
this.formUserChangeListener = formUserChangeListener;
|
|
4276
4390
|
this.ngZoneWrapper = ngZoneWrapper;
|
|
4277
4391
|
this.elementRef = elementRef;
|
|
@@ -4326,18 +4440,20 @@ InputDatePickerComponent.decorators = [
|
|
|
4326
4440
|
[ngModel]="model"
|
|
4327
4441
|
(ngModelChange)="modelChange.emit($event)"
|
|
4328
4442
|
></ejs-datepicker>
|
|
4443
|
+
<div class="required-indicator"></div>
|
|
4444
|
+
<ng-template #validationError></ng-template>
|
|
4329
4445
|
`,
|
|
4330
4446
|
providers: [{
|
|
4331
4447
|
provide: COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputDatePickerComponent)
|
|
4332
4448
|
}],
|
|
4333
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4334
4449
|
encapsulation: ViewEncapsulation.None
|
|
4335
4450
|
},] }
|
|
4336
4451
|
];
|
|
4337
4452
|
InputDatePickerComponent.ctorParameters = () => [
|
|
4338
|
-
{ type: IconCacheService },
|
|
4339
4453
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
4454
|
+
{ type: IconCacheService },
|
|
4340
4455
|
{ type: ChangeDetectorRef },
|
|
4456
|
+
{ type: ComponentFactoryResolver },
|
|
4341
4457
|
{ type: FormInputUserModelChangeListenerService },
|
|
4342
4458
|
{ type: NgZoneWrapperService },
|
|
4343
4459
|
{ type: ElementRef }
|
|
@@ -4661,132 +4777,65 @@ const NUMBER_INPUTS_KEY_DOWN_WHITE_LIST = [
|
|
|
4661
4777
|
KeyboardCode.NumpadNine
|
|
4662
4778
|
];
|
|
4663
4779
|
|
|
4664
|
-
var InputTextType;
|
|
4665
|
-
(function (InputTextType) {
|
|
4666
|
-
InputTextType["Text"] = "text";
|
|
4667
|
-
InputTextType["Email"] = "email";
|
|
4668
|
-
})(InputTextType || (InputTextType = {}));
|
|
4669
|
-
|
|
4670
|
-
var FloatLabelTypeEnum;
|
|
4671
|
-
(function (FloatLabelTypeEnum) {
|
|
4672
|
-
FloatLabelTypeEnum["Never"] = "Never";
|
|
4673
|
-
FloatLabelTypeEnum["Always"] = "Always";
|
|
4674
|
-
FloatLabelTypeEnum["Auto"] = "Auto";
|
|
4675
|
-
})(FloatLabelTypeEnum || (FloatLabelTypeEnum = {}));
|
|
4676
|
-
|
|
4677
4780
|
class InputTextComponent extends BaseInputComponent {
|
|
4678
|
-
constructor(formComponent, changeDetector, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4679
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4781
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
4782
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
4680
4783
|
this.formComponent = formComponent;
|
|
4681
4784
|
this.changeDetector = changeDetector;
|
|
4785
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4682
4786
|
this.formUserChangeListener = formUserChangeListener;
|
|
4683
4787
|
this.ngZoneWrapper = ngZoneWrapper;
|
|
4684
4788
|
this.elementRef = elementRef;
|
|
4685
|
-
this.
|
|
4789
|
+
this.Icons = CoreComponentsIcon;
|
|
4686
4790
|
this.placeholder = "";
|
|
4687
4791
|
this.type = "text";
|
|
4688
4792
|
this.showClearButton = undefined;
|
|
4689
|
-
this.
|
|
4690
|
-
this.alwaysShowClearIconOnFocus = false;
|
|
4691
|
-
this.noEmailValidation = false;
|
|
4692
|
-
this.extraIconOnFocusOnly = false;
|
|
4693
|
-
this.inputType = InputTextType.Text;
|
|
4694
|
-
this.blur = new EventEmitter();
|
|
4695
|
-
this.inputClick = new EventEmitter();
|
|
4696
|
-
this.extraIconClick = new EventEmitter();
|
|
4697
|
-
this.clearIconClick = new EventEmitter();
|
|
4698
|
-
this.validEmailClick = false;
|
|
4699
|
-
this.Icons = CoreComponentsIcon;
|
|
4793
|
+
this.hasOwnLabel = true;
|
|
4700
4794
|
super._markAsOnPush();
|
|
4701
4795
|
}
|
|
4702
4796
|
showClass() {
|
|
4703
4797
|
return true;
|
|
4704
4798
|
}
|
|
4705
|
-
ngOnDestroy() {
|
|
4706
|
-
this.elementRef = undefined;
|
|
4707
|
-
super.ngOnDestroy();
|
|
4708
|
-
}
|
|
4709
|
-
ngOnInit() {
|
|
4710
|
-
super.ngOnInit();
|
|
4711
|
-
}
|
|
4712
|
-
ngAfterViewInit() {
|
|
4713
|
-
if (this.textBox) {
|
|
4714
|
-
this.changeDetector.detectChanges();
|
|
4715
|
-
}
|
|
4716
|
-
super.ngAfterViewInit();
|
|
4717
|
-
}
|
|
4718
|
-
setSelectionRange(range) {
|
|
4719
|
-
if (range && this.input) {
|
|
4720
|
-
this.input.setSelectionRange(range.lowerBound, range.upperBound);
|
|
4721
|
-
}
|
|
4722
|
-
}
|
|
4723
4799
|
}
|
|
4724
4800
|
InputTextComponent.decorators = [
|
|
4725
4801
|
{ type: Component, args: [{
|
|
4726
|
-
selector: "co-input-text
|
|
4802
|
+
selector: "co-input-text",
|
|
4727
4803
|
template: `
|
|
4728
|
-
<
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
></
|
|
4739
|
-
<ng-content></ng-content>
|
|
4804
|
+
<label [textContent]="placeholder"></label>
|
|
4805
|
+
<input [type]="type"
|
|
4806
|
+
[ngModel]="model"
|
|
4807
|
+
[readonly]="readonly"
|
|
4808
|
+
[required]="required"
|
|
4809
|
+
(ngModelChange)="modelChange.emit($event)"
|
|
4810
|
+
(focus)="focused = true"
|
|
4811
|
+
(blur)="focused = false"
|
|
4812
|
+
>
|
|
4813
|
+
<div class="required-indicator"></div>
|
|
4814
|
+
<ng-template #validationError></ng-template>
|
|
4740
4815
|
`,
|
|
4741
4816
|
providers: [{
|
|
4742
4817
|
provide: COMPONENT_INTERFACE_NAME,
|
|
4743
4818
|
useExisting: forwardRef(() => InputTextComponent)
|
|
4744
4819
|
}],
|
|
4745
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4746
4820
|
encapsulation: ViewEncapsulation.None
|
|
4747
4821
|
},] }
|
|
4748
4822
|
];
|
|
4749
4823
|
InputTextComponent.ctorParameters = () => [
|
|
4750
4824
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
4751
4825
|
{ type: ChangeDetectorRef },
|
|
4826
|
+
{ type: ComponentFactoryResolver },
|
|
4752
4827
|
{ type: FormInputUserModelChangeListenerService },
|
|
4753
4828
|
{ type: NgZoneWrapperService },
|
|
4754
4829
|
{ type: ElementRef }
|
|
4755
4830
|
];
|
|
4756
4831
|
InputTextComponent.propDecorators = {
|
|
4757
|
-
textBox: [{ type: ViewChild, args: [TextBoxComponent,] }],
|
|
4758
|
-
floatLabelType: [{ type: Input }],
|
|
4759
4832
|
placeholder: [{ type: Input }],
|
|
4760
4833
|
type: [{ type: Input }],
|
|
4761
4834
|
showClearButton: [{ type: Input }],
|
|
4762
|
-
cssClass: [{ type: Input }],
|
|
4763
|
-
alwaysShowClearIcon: [{ type: Input }],
|
|
4764
|
-
alwaysShowClearIconOnFocus: [{ type: Input }],
|
|
4765
|
-
noEmailValidation: [{ type: Input }],
|
|
4766
|
-
extraIcon: [{ type: Input }],
|
|
4767
|
-
extraIconOnFocusOnly: [{ type: Input }],
|
|
4768
4835
|
keyDownWhiteList: [{ type: Input }],
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
blur: [{ type: Output }],
|
|
4773
|
-
inputClick: [{ type: Output }],
|
|
4774
|
-
extraIconClick: [{ type: Output }],
|
|
4775
|
-
clearIconClick: [{ type: Output }],
|
|
4776
|
-
showClass: [{ type: HostBinding, args: ["class.co-input-text",] }]
|
|
4777
|
-
};
|
|
4778
|
-
__decorate([
|
|
4779
|
-
InputBoolean()
|
|
4780
|
-
], InputTextComponent.prototype, "alwaysShowClearIcon", void 0);
|
|
4781
|
-
__decorate([
|
|
4782
|
-
InputBoolean()
|
|
4783
|
-
], InputTextComponent.prototype, "alwaysShowClearIconOnFocus", void 0);
|
|
4784
|
-
__decorate([
|
|
4785
|
-
InputBoolean()
|
|
4786
|
-
], InputTextComponent.prototype, "noEmailValidation", void 0);
|
|
4787
|
-
__decorate([
|
|
4788
|
-
InputBoolean()
|
|
4789
|
-
], InputTextComponent.prototype, "extraIconOnFocusOnly", void 0);
|
|
4836
|
+
showClass: [{ type: HostBinding, args: ["class.co-input-text",] }],
|
|
4837
|
+
hasOwnLabel: [{ type: HostBinding, args: ["class.has-own-label",] }]
|
|
4838
|
+
};
|
|
4790
4839
|
|
|
4791
4840
|
// Input values for 'buttonShowMode' of NumberPickerComponent.
|
|
4792
4841
|
var InputNumberPickerButtonShowMode;
|
|
@@ -4798,12 +4847,12 @@ var InputNumberPickerButtonShowMode;
|
|
|
4798
4847
|
|
|
4799
4848
|
// A component that lets users pick a number by increasing and decreasing it with buttons, or by typing.
|
|
4800
4849
|
class InputNumberPickerComponent extends BaseInputComponent {
|
|
4801
|
-
constructor(iconCacheService, _ngZone, changeDetector, formUserChangeListener) {
|
|
4802
|
-
super(changeDetector, formUserChangeListener);
|
|
4850
|
+
constructor(formComponent, iconCacheService, _ngZone, componentFactoryResolver, changeDetector, formUserChangeListener) {
|
|
4851
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener);
|
|
4852
|
+
this.formComponent = formComponent;
|
|
4803
4853
|
this.iconCacheService = iconCacheService;
|
|
4804
4854
|
this._ngZone = _ngZone;
|
|
4805
|
-
this.
|
|
4806
|
-
this.cssClass = "e-outline";
|
|
4855
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
4807
4856
|
this.minusIcon = CoreComponentsIcon.MinusSimple;
|
|
4808
4857
|
this.plusIcon = CoreComponentsIcon.PlusSimple;
|
|
4809
4858
|
// Whether to show buttons 'always', 'onFocusOnly', or 'never'
|
|
@@ -4814,6 +4863,8 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4814
4863
|
this.modelChange = new EventEmitter();
|
|
4815
4864
|
this.myKeyDownWhiteList = NUMBER_INPUTS_KEY_DOWN_WHITE_LIST;
|
|
4816
4865
|
this.numberLogic = new BoundsConstrainedNumberValue();
|
|
4866
|
+
this.minSelected = false;
|
|
4867
|
+
this.plusSelected = false;
|
|
4817
4868
|
this._numberInputHasFocus = false;
|
|
4818
4869
|
this._delayBeforeStartAutoCountMs = 666;
|
|
4819
4870
|
// the 'speed gears' for auto counting
|
|
@@ -4862,6 +4913,9 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4862
4913
|
get hasLabel() {
|
|
4863
4914
|
return !!this.label;
|
|
4864
4915
|
}
|
|
4916
|
+
showClass() {
|
|
4917
|
+
return true;
|
|
4918
|
+
}
|
|
4865
4919
|
ngOnInit() {
|
|
4866
4920
|
this.numberLogic.init(true);
|
|
4867
4921
|
this._updateButtonsShowState();
|
|
@@ -4885,6 +4939,12 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4885
4939
|
}, this._msDoStep);
|
|
4886
4940
|
});
|
|
4887
4941
|
}
|
|
4942
|
+
handleKeyDown(event) {
|
|
4943
|
+
// event.preventDefault();
|
|
4944
|
+
if (this.myKeyDownWhiteList.find((k) => k === event.keyCode) === undefined) {
|
|
4945
|
+
return false;
|
|
4946
|
+
}
|
|
4947
|
+
}
|
|
4888
4948
|
// Note: recursive through setTimeout().
|
|
4889
4949
|
doDecrementAuto() {
|
|
4890
4950
|
this._mayAutoCount = true;
|
|
@@ -4899,6 +4959,8 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4899
4959
|
});
|
|
4900
4960
|
}
|
|
4901
4961
|
stopAutoCounting() {
|
|
4962
|
+
this.minSelected = false;
|
|
4963
|
+
this.plusSelected = false;
|
|
4902
4964
|
this._mayAutoCount = false;
|
|
4903
4965
|
this._stepFactor = this._stepFactors[0];
|
|
4904
4966
|
}
|
|
@@ -4913,6 +4975,11 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4913
4975
|
this.numberLogic.decrement(steps);
|
|
4914
4976
|
}
|
|
4915
4977
|
onPlusMouseDown(event) {
|
|
4978
|
+
if (this.readonly) {
|
|
4979
|
+
event.preventDefault();
|
|
4980
|
+
return;
|
|
4981
|
+
}
|
|
4982
|
+
this.plusSelected = true;
|
|
4916
4983
|
this._markedAsUserTouched = true;
|
|
4917
4984
|
// keeps focus on input text instead of button
|
|
4918
4985
|
event.preventDefault();
|
|
@@ -4927,6 +4994,11 @@ class InputNumberPickerComponent extends BaseInputComponent {
|
|
|
4927
4994
|
}, this._delayBeforeStartAutoCountMs);
|
|
4928
4995
|
}
|
|
4929
4996
|
onMinusMouseDown(event) {
|
|
4997
|
+
if (this.readonly) {
|
|
4998
|
+
event.preventDefault();
|
|
4999
|
+
return;
|
|
5000
|
+
}
|
|
5001
|
+
this.minSelected = true;
|
|
4930
5002
|
this._markedAsUserTouched = true;
|
|
4931
5003
|
// keeps focus on input text instead of button
|
|
4932
5004
|
event.preventDefault();
|
|
@@ -4987,42 +5059,43 @@ InputNumberPickerComponent.decorators = [
|
|
|
4987
5059
|
{ type: Component, args: [{
|
|
4988
5060
|
selector: 'co-input-number-picker',
|
|
4989
5061
|
template: `
|
|
4990
|
-
<
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5062
|
+
<div class="button-wrapper">
|
|
5063
|
+
<co-button *ngIf="showButtons" class="minus-operator circle" [class.select]="minSelected"
|
|
5064
|
+
[disabled]="readonly"
|
|
5065
|
+
[iconData]="iconCacheService.getIcon(minusIcon)"
|
|
5066
|
+
(mousedown)="onMinusMouseDown($event)"
|
|
5067
|
+
(mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
|
|
5068
|
+
</div>
|
|
5069
|
+
<input type="text"
|
|
5070
|
+
[ngModel]="numberLogic.valueAsSting"
|
|
5071
|
+
[readonly]="readonly"
|
|
5072
|
+
[disabled]="disabled"
|
|
5073
|
+
[required]="required"
|
|
5074
|
+
(keydown)="handleKeyDown($event)"/>
|
|
5075
|
+
<div class="button-wrapper">
|
|
5076
|
+
<co-button *ngIf="showButtons" class="plus-operator circle" [class.select]="plusSelected"
|
|
5077
|
+
[disabled]="readonly"
|
|
5078
|
+
[iconData]="iconCacheService.getIcon(plusIcon)"
|
|
5079
|
+
(mousedown)="onPlusMouseDown($event)"
|
|
5080
|
+
(mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
|
|
5081
|
+
</div>
|
|
5008
5082
|
`,
|
|
5009
|
-
encapsulation: ViewEncapsulation.None,
|
|
5010
5083
|
providers: [{
|
|
5011
5084
|
provide: COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputNumberPickerComponent)
|
|
5012
5085
|
}],
|
|
5013
5086
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5014
|
-
styles: ["@font-face{font-family:iOneOpenSans;font-style:normal;font-weight:400;src:url(data:application/font-woff2;charset=utf-8;base64,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) format(\"woff2\")}@font-face{font-family:iOneOpenSans;font-style:normal;font-weight:700;src:url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAEoMABEAAAAAsvQAAEmoAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlgb3mwciAgGYACEVAiBZAmabREICoG9bIGmAAuEFgABNgIkA4gaBCAFg3AHiRYMgVUbx6MlyrZPJQLdAcirqqYMFWybSrzb0XNcyF/ihLvW46DK8HVk/3/CgRwyMsEd0Fqr+hNRVgY9arajpOtc6sFltatZWktF42TeAKonfFd+ejTVw6YnITMiQ1ZGOcL8Tu33M26Et+PEmxLBaRyc4evf0TpyRvnXP+1/Ld0txJO6QWBT+NL3jhZTz6U3gFZr2hftn/5DIJiXFlXqLDLjbejCtpXycJ0ajhMQQIQqgyQsJt54o2GLwMaFjXWSl4Solv/rmZ3dyy+lez+ECC6lU5BXKILRGI3QFFKhcSgU3M/jpr2fBAvBg3jAK1BRY6O2Tq02cyZi3lnnrNedeOERl69+ls7y+euPNQ8lKSyAWRR0ojJQjMvK8x/7Pfu1z32INrPKEApNRJp7cwmFEFU6kaETiv1kof0zQNtsbazKQ4dFCCiZd0TEAGkBbSzAmqiLchW4KSvn8p1L/IrY/nvrj/pz7e1l6l6mEhEWtGrVgfrMu1yEJDv+5BFhizm79yQoEoTDKYyor2sqhKr1daz/b82fmGTzwsNHEPvSfkkNvC2WoElnMF2xWHKyW91MkQEwbK2ptcfx/IQolFkfcvPrDWIxBgIeEpiBGDFdmxXT06a4orzbrvp72m55FOqdNM1g5gPmufyhTpsyrh374/wb0/oTMDolCqADpDYynVH2RRQXqjLVBv7unrXSPQjWsfAEqg6+9DLGxIqciSImAZOImbLUBolxGZ3T+P+vU9+X7LS9Tz8wbN3Gnv2DIYlBTuQAgFZp7+lMDIoLDFbu/d39Sq9HydyJZI3biUKi6MnnMR6EQlchLfb9MrO73/t//syGpBAvRqfANijM7paOqITWI5U8nmOOeB10EBgamgCXATYgxgdOtgH8Wouh+femWqX/4RNDYK16OFvizFoM10jrOVPKKbfGm8hFjf9+o9H90OiFo9jogggBo6oBQTlgqFkSKy26G9Q2Ie6IXGfMWYoaz3XGhmesT12SXXRBeFl+4V6aXJZdEl6QHc9rp/ADPMDvdnppFi9gcRnNebj/WyuzvyvUL2pBqHUrE+FQGDQmQv3u6Z1UVc9utmd20hCqCfYEa2YDixAmRSCJKtwBchPXiWWbyJPnzt07R06clffO3TuhJfP0eNN7922jAsOwBAMa9G+z6e3LxJfTWV5Qdetkg7t+iK/kuIRCXWpBKJxESLymW2ggkZrCv1tSvh8wF4UJIlI6nSJB9nDe3d76iA7tXoX2XX3XUKQbREREQpAQxJUyv7vst/931BzaM07ARcrz+SLn/c1qg5QRXbG2UyQhAiEOCd7tu/szCEO3fmo+YRqOYDrs4v8HRAAlAEBRCHKIUhDELRoSKxYSLxGSLAuSIw9SoATSShWknRpIncGQoUZAECCXrgN81buwFOjDif7VwJzxDayFYASAtgXg91j0zjD46e/+tUAvowAKEIU9tfXnhwtH1bj7UFiqEUCuZRU2PRBfuo+xeKXy/qAQaTOzeUayaQlKIr+0zLI1LwynmYx4TT77ub8J30F/dUyXQL//UhsAknnblmQAzkQbScNFsTF7FEAXZRwEsbFdosUUSCYuuXvN7VaQWMXp3i44bolr+plrpSCUASI4jo6SOsJmYxQgxvuLWoJPvvnup9/+afM+mZIKeaSwvFNwHxXCl38SYZBxetPgkaNxqWhI6ajdHKVEIVANNg5YDQEhCddLkFEAy81QuzAFAhgpiYifBGW1h4gUyHsoKoI03ywPG9UjgL28GYhZAB2L6IfzbraqEdJ8EJFDH1qVq1bdf01LSsasBayVIRGg6NCeIAImCSdKzguCMSL16/N10R6TESQ3+E3bOOu73lyw0BwUfvelCnx5uVxbAa6KwOWTwBA0oYTwgr09OY5jUC7E6OTBtjx9YNBg/LLDvN5Cw3jeZNVOUHhywZ+ZYn7m82ImYIHrgln5/OmJPB7X/0LWizp6fyDaZHlBW/SXPzDIxXLiFfoskRF5UBoqucTXQYXd1o/YJlKMZ9I7UdkKZ51Jb8RkSw6j5kqtZ41VoWPJBA0UEzR6nGvtHE6ZlcRJl8XwZd7C8G/HxAQ0eSYRY2Ng5lWZkltxqf6DALC+9QtQr68knQzMZl3oQYGdTbpMm6jbMmgCXAxorDLSTXOUyGy2wTz9H+ZKLnYhAypmymAGPYa+aVz2IFD2A6CbAfRLE0IUAKAzxgwkls0S7QofVnDaqdVgVZ2/BbQaZRTucPkFDMOz1R7AT0dxnXCC2CmnSJxxhtQFt8k89pTRc8+ZNWhggWwTg40Nw8WFIwApHpKAAEZIBAABCCABAARsrOcRLj6qL1dzEAOQBR9d8BMkFSVwHnpyDLOhC4UgbGqxQcqOmIx9BAW15SZe0hKIN48ISUhJaGgNmgZ6CgRAysh7quCqfDRleOH9cn9dAJlooIRUeViQE605F4lXpqqWIKX9odptHwrCaR5LLL7iFlfWEKnSodpdK8MHF9pps6yX6aASRCRRMuh19kpRWA8or5Wo5IhPc6CWNJ5sE8f/iS9m5YQKwAm1mg18uVP1tpblCpV12mByQfcsssI2b11R2FGvTqRpKzYdViqVWZEpIkwatGTK3CrLEEawHFmkJ7GY/KwGcCyTxDg1vyBgz+AVKLcdagc28U9KiFMfl4G8ouDJjGa8OGZ8mmUxHcM/l5wIovVVb5Qhn4R2TnZ2Hl1rM8JQOdwp0x3Hqh9OzN0NDjGzSXGJZQ76FMkJklKgH59T2YRAp2Wb6k4HO5EiSRzBrCCsyUD2rD5CmwIstgB+h4Xq9Bodua+GCwIgFBb2A+IAlncY2CWYF17DXhKAwx+tQvB67hDAoagN1ENS6kQo4BC4TeCCQ84PjCAXRlFvOrZGiscihUFNBnM18ZuKiTH0DNblwqEtQ24QFgJ4QGOXiZamlYweAeDxMSKtXcPISVL2bxYNw8UmTeDD+lznrgk3AYlGACZ6qDfJAgvssssZDW5p0OjbtmEzWgR/wv+j0BwkBETxX4FbmBix4iXw8CpXpa8xfLY44Iijrrvpoccw5fQqiLEcEe4op5METhN4LByunFsFpTYwbN5WyrlUMKpsVxtyVQDjbVQuQAW7NuxeEAWJs1MRxvDwddgyez8nxKV+LHTlg2vKG89OXo3GJfe9nBiM50ZtT2t4+fF5Opsc7HFQz23Q0wkbFNetX7OHrTKBasbKHBXqbPbRqN9SBRutl1uSzxvoVgf9PJrrFIrChiosRm/iRMBRpN+RiQHJ+ceJZLokITXKudJlJM2QzPYZ5zROnuEQktmtvKSpVp18fwIVWKyOZuUJqz0r5FGgUYfSkKTaQAlDQB7YZHPLlO7b6NVbpLz2sxrncxxFYiCfGGuVgoUSHXI6ixoqtaalyXTwSXN88VLScsPF0fxwTHx6S1xXPQhn0bUcr1JFoHFWuFFEyMuVkipRqILQh7pOLJhrq+TfMRs+DPMvVqRxEJ5LKyAxGMD+Q9CY/eeWthY0yZUqBZhst9cQjnagRrJ+05VipTNxabm7LptF+z+pWz263V1cWjQoWMQm1lMmJyBvGM0qb92f/a5fMpjVDDmwuX3YO7lXPSNVTKOkm+rT2rV6yOQ0QmwjWjWbmPCLzop01eDkGQFb2kVxITDkswXSNwp4mNICeDa40/lI4xqYZgVZVkApHoJJKUdvQFOonERdDT7J6X66sUnK2pekZOhteSiZ9TZ9EkEkpQOA0Nxg9YY9kGfVgur0iEjkMCjF+kmrhTHA7CqRSBK574ighzSee4SlAc6wPsEio0OWQ03384m8LaoPbWnkRlK7arVYL25e8EERoDHWUU1jNAc9kLLnRQMdadpwJvJIF+eAcZUsp+FmYevoEt4ls/QSIjEpKxnV1YzL6PMoxjKJ6vcEDxaFYAp/CNQtzokBRLOM5Ki6INLXomi8LVm3LvSHGUArLDMpNOpCP51xk6zitrLLAER9FjSoMAUo9zEnX0TLCGjwA8PR1GYsL2aJlS0cmLt6FYUOXGhUk9xcqfUF5cVIQ26KmuENhog3W0pyXQnH7CHGiMqqWV6JT0o1/WKnqO1zDtI1K/UAuYyLvDQe14wls3q2ew4LEhIGQiUXujrxrCT4CFLG6WZR9sVCmUV3q9nFRfKN4sEUa5T51Zs2bEf/Niu+3toAYaclCJBaHo0d9XnsSaknfh5P8RGSAK9idDyvKgn6/qSYod5AmUYYKc99DxV4661i771XolEjj08+awXjwMeHo1AQASGMiBhJQg6noEBQUmJT0eMwMBAzMuJiMHhMLDisApGCBMEFC8bn4iLi5kYKEYISKpRAmDBC4aKJxYglESeOVLwEMokS0ZIkEWulFTmvKnJ99SVXbyC5EUZQGGkkufvuE3jgAcxDD7G89ZY8U05yzmLI/tCJhGsLkX6HhZjTa3TkPgcCC4CtcHAfUIRIzjscTfbwgaFoYXtDAbcOf7QKRb8aOp80Mm1gGbKyJGyANeD9FQXYRQvGEAlkpycgdaOMH0MS/EYIITBD2RNaWnzLjHJOhY/OKC4A9CcSw4iCmiahAAxhD6BVBAHY+PwvijCAE0AuCA5HwbIGAeRtrmFxAhLa/jSYiYNsguxo0nrbNPl2jf7iIG4uAKto5hml9FgGSa5PugQcy0V+YGQbB7DthUF7RYTl3oVklAi4ipyJyUXgCxBRckOU0LRjrIJQIuKRD8KFgxNcyFnEvg6XmBzZslnllMi2SOtIK682bKrGop32Lx10unfWi0hv2PRh1ZdINZsaYrWs6oonQ2+7QQYjDSH5hhqONOLpMMpovNFCc42H0gQmEzEmkZvKYAuurSmxzXYKO1Jmp13UdqPto7afxoHUOugQvcNkjjA6yuwkqdOkzqbKBZcoXKFwjdoNOrfo3KZ29xLJ6HlMGj3xlMLzPTV4c97C5n1RYjoUTCdfwFe15WT2908kA6Z/RyNfm414DbdT4vrvoe1mKmaGfkHb++kdmqpHirN49y1G/TsbMSECgg9nZmIAlc4OZASygOOc4CzO5hziEs9poiknKc1cymmSEsxpkpJKDJ3cym3cyu2cUaWMM04YLudmbnJEpoTloLY53XQySySQhFSu4kKu4uqopotObuF84hPpSFwOEhtH4iokJtVRuY6lpda4SVhLMFcRXX1E0Uy4ZoYpsrmES7iEpHXqKH0IhadRUfhySQLYUIgA7tb5lbRHQDSEogNGKXtwThmKhtHP1gKbCVu3/qnY/jnNr8saypkJ2nLqHhMGqAJXa5IE5ftzzgVhgYRvxluByV9sPVcSBmia2TQ2hxi2GtSsbYDofsqm1zNIvwJ5U0/NHVlQd6NPT80n673fvgIT66KtttFE4cQAcQayx8h+1yKbdAB5KU0T3RIZpr2xBKcUARdhcRZrX9nKBvtF0B+2TXbvjPFsQfdDt8ZmeIdB3RmQEiwlSourBMfmDMAskdH5SI2ggk6Uze0hWn+/R31D70zNt0/6YAyWen5PocmKs1cC7bcVp8cBwK2ifjbpTnD/i9uvI+8pMxo9OMNEKBeyo3MvkOGsuDrmcm7i1qjN4ISCI9cmsAA5PoqICN5g6QbDEw8E3mI/j5AEhP1IQz0MQBePKxiX/DYpFIVPO05EQaHWhHcIXAHYHgsFaz/guij0m/BOgCu4mBOcxdmcw7lcRApFJ0rMuYRL2mlVqpCW01xCtKRzCdHKTXJhJ4FmcxnncyHncykXEE+uiSeYJJFKEosh0frHcYYrBpk1RvkflOjWhOyXfxDROoUWa6TSFiyNxQkGv1MiN4f85FZZ1k8ICyXEX4/UsPIgPYaAe57BSAmru4idV+Ny8SAtaDpCUk+KqcEGpnTehP0tVmFP1VJSmDy3MJmMcc+9wKraV1njkQuga6LMDsFKQqMJ1UWG7oI56HKYysw75yrIEcbXr+6SZ5HwNBvs2TCY5WrtLBIFliMCeyVvoJgyvSYeSbN1Kfjd1KiOBcfYets840nJ5gVwTSHkx4Cp4r1gqZfKJ3Ya3Pyvg1g4O4nTN+DgFSXkPbl/0uFuGIKkwNbkOZApiFG8sDloKo+aO7lgqsjNIB1nQfjTGhuamZGU09lSsIdCqJOQueVAIUYh81LbrAdTLfDxBG3nKRZJH9FEE5lTBreUVXXkiAqL8pEa+xE6KCROsRLSbjNMI8U84dLLxAY9SQiieXgtO2r+6ToTrlERyMUSNDara6SCnlAaJDvIzXBQPnK8SqBBPHQQOXmacBM5Jkhh6qIJL0QylF3LRBnR/WzTThv1Dk/62oy59YbxixWUFUcyD+C11mTa6YNWrY7FIMM5jDaaS8zfuRuSLA17SyAccB0PgxaDt2r4CICcvZbQK4HWLuRoqlHYEIXPwfIjqX5hoIRDWwj3OwCkYAtIR+6LgMEBCMWC9YCAS9Y7LCZ9+MCAmGtvMKDn8EerkPjVCPFJndANjEMMY8IEWALnryjAJhkDPaFAZloCEjc3wWWpwydXe4AowLgxMRy8Ip+bc3hV4YlkHHUNBc0jcirqhBwwgCuAThEEYOPzN+lih7DZaCAIBQFy/vI8Zs/tg7Gk9hlptgOhpN8fOzfO8q8sBhJXQqUMFK5sPYfbbUyrGq7eUpiZH7nLNTxjV7fAWuFHWDtGjrtGBSegYuBcGgQhFVYAbMoiosYI3JRNTMMkaFMOCS2z4E25pHQsXH808MjoWbmFHGmsq0G61+7/E/m2gMyPED/Rnp1R8EhT12oUzmN5Ms/k+dzziFD+O6imP2q3EUBwyXGN+IYow9kccRbHOHCcEwZH+xjF5m2NKzY5oEMb4ownfRAxEogBRrRfMwnG8AEjoaoTo1GGDRBNKxzCWe49AVQQtXeChmgQwDu07Q8wGA1z4Kyw9/hMTuTpZRsWHIEl6Ie69GS4GaTPGAki2htcgzrAmjMsBB+vuMhqUALS/NkYw0YZdeFeo2HaQxBPChivHVPqOHQe3uYsW4l6AHz+0Zlhpllmm2OueeZbYKFjEBGCVbLOFllsiaWWWW6FlVZZbRuiFvUEFtAnrQQ0+zuTfcKTDvg3AyRR98Xl3aY0BtaAzWn4lRUAbHeEDPQUgM7uCcA6HKAARkZwSCEq9cflFIMgBFRCxBmtBU3E20t91hcvmtEwBsbM2Jl4JrNkYMmOQmqWt7QIQIURKt6ahKU1dkTGqBjd5nE/HHQGeA2gtYD/yR/3xwV+fRH8emw2mmHjNWMN/a8eXp0DBIBDwFO3gDwBAPLgOWDtdHY7aK/7o+Mv3yFnnLXFEztdsM8ROxz2ygsv7fcegSIgIrmAcNUMWuOYmGUEyw0Rqqn/75UYseLES3TKVqd9dzRsSJYtR54CHq205lWlnfY66Kiz3vqqVqNOvUEGG2KoEU746qQGd+xx10P3PPLNx7DgkzEueeOiz+HAF6+ttS4YvNVoW3BYw+eyTTba7AAuFjYSBw+fkJyUDE1PQ0tHzMLJxi6QwzMBokWIFCWBS610KVJlSpMhS64ShYoUa6NMuQr5Oumui6566ua5Hgbqp78BhuljuCC9nHfOdTdcsxrfmb5mPuGW74fOBm1yryxt2f7cgtXAxr6DSgG6Ydm5yJJoLs1U9OKH/spKZ3mmVV0tCVtx1WTslr2Iu74xOev9SZlBSvX+hR7RgJqA17phiG6VaD+/Be32icb2FKM7+5r8aw3J3T9DJpBl3BNSAu+Bm1wvQFCzKgEBBu11AgmUE763ocSTYqQNNrIGtKolZDfdp1qyFP4d4Vn7qyeMeJLj8uOdoYCYczlGouYMc2TJl0jwXaLX5L+6F1jMBnxQzK1fZA97zxpT9hhIDosZ8EIDDzMmfSokyYqzG1faklUqS1V6xuTOgJS+GgPP9CtlAhnUICjuciNUtrUSSUFTvpCyjLakUMByKaY8qAtFhaZ4KcGv+c2D3igHOctESSQ/+LoYLGE5LaFER9u2cF2j2UiDvrivWy4kYTVtqLYqoDMqIKkVNKoLwQRg6CAtXmv2Sh7UTIEOaqfcZFYq0iMGFQhryjO2Hj/MQKGvSa2hzkpDgdndcCmLgk8KxwQUt57vWf8lWspNIzEAvvGYIRSEhno2VSe/OY26DvgHGnpNoGl2Rl00VsZVS8HSnJWqSQtBGlX8WpFL0AZRgqDFm3WNB5YGBu0z7YXWxmFZBwRbHlFUKpJ51tGhJf+jhA7lZKSNWw90UIa6OY7WG/8IgC7s6Fv37x0haYhb3UGAXXtI7b0FSFfoFNOZpZKr0HrQ2k1ADpgge8+D5IqhuPJfiWWunSXfSR5TogokgxNPskGLLbTBiPSgp75o74kBGHIdhMDVgqg+RrsYCEi3H2jYSVEDzT1WNBL0psiC9N/OziDmoZT/MTizKf6ITo+ZBF0EuFECDwkBn0gQEBlCokBEVIiJBgnRISUG9Ig5dwxWuQSt3Xqg3fkpyFPvwHb9SckIf+j7mNMR1dCPizrDAGIRzb6+zIDJmYJhDGdKpmKGzIj9Nahio5mdFk6jGrtfTY/4UDLw2k3r58iIglnuqxYgavVuwPnstjl89r2SC8Fhad3ND8316mR3wyIHVfcb+rwR0F7Jph/VC9agK1zP2WAAbKI2h2QXPnoteiz8XwDweJ+3w1o9Mc/LFlShFu8ecBOxvUE7pOuVBHs4PDFqlDY9IEiydoJSEwBsgIQ3/NcWL0sd6Z7wsk2TKvZK9lfOysIjAB8UHMXXBIwXLHGVJqNXfp6IKv4I4zg1UEoLXxgkEdHhP4aRx4qO7kuXwwPRl2I4Niq0LjNIniF73LS4UfZRbsObNfooJNqcIdPlaDiOE4rb0NYjuueY8I5KcNNtC4bB5siER6KBXVpKOAPGUW414avuuEeIAEoIZHsLdLdW8OzSDDVj3VkNjCJZNYDHle3rEZcyMKpoE0yGpgHrLhcnOmIpGYPRXumUKixF8p4TT7VKqaO5t8GNOYKlwV4dvcZQPNn7+le4qKOuuF1G9NjdpH69q+AaU4HI0ZS6LbpGU8WkYa7dKDP2tYm7or1pgddn5HO+HuNYmMk3YpyKH3Sme+2mP8IVQGGKeTXczMB3zVQo3XOwrNVt85ly+SJKeZu2uBUHo85W0QDb86+i5cCmOGYIO7XC20K6SlYaHuH2XBwjhbA7HnZZySne6KH72t2U1+fTBQY3XY7p2zwh98L7cQBxHOwUfZBnhwMePgh+gymlpmddUWn+QlgzJoyX0yNCIW0bcUmykLQku6QduZL8QgrlLKIvwYZWGlLeSGVI9ZaI2pD6RhrD22zOVltPlPZCOiXdS9rVK+kvZFDSoyFPsMlHIqYxEAAmHJoCAWDGoTkQABacfUsEWdqj1VkOXjuwBt/cSBwjCNLbS4tqtovC91HYYYdsinAcsOkUIaBzjC9w0V7YNQq7RTHu46ADjwEHngMOvAYceGuAfaKwbxTjB4Mu/Ad0+uDbwIPvAw9+aID9jMJ+RTnod/23di1m0zfswbn+IT/4/G18/mc7g4DvowsALABAGwH8T+cfRnPgf2Nt4LEaBAAA9P4tGTndwPddEYhHz7me+eLqcTAy/urnzyBZ4nXHTDoH82w0KpzBmcx0HoEDlEfED7pEgIdAbgKE01UAzAqjl3cd148K4Zns2BUPGWSpIFNV4zfyyCtS8C/9vN/7tx8q02R97ebpoFW3i1uufU+dot9zzXbey/d7tvnIfWu388J9oIvSWBn4ot88+Mwm6+ZIO22/N7KbZ/NB2ug8aQK3GDbGEN7bra/pmFRpb9lZLpr1gfuOpr7YdfXFDDb5ziGMTR2qYj0p+YH6vitHVRY8PBu52zVejL35Tvu26hW6vVoETShE6k6u7XtJq7vtL33rdf+p3evFK+08jQw4zolvC/Z0pL/R6Np+9ayqtH3t3b8vMVKhizuQy2WmSIjg2Q1XuR7rgcGR+c75GHppGUfK+TLwp3+Q8B3veruMIH4jBHieR1OvciEtYMQY+DinsVp2nWHhhpni0/f8uBZza8HpIyGLtl34xuCLIb5zuWIzIjqvdjQkBddzkGZHugVOIRGbakwmLoR05j8JAkUl+YArbaAWkupFuQxyyLTtgrXcJRC1H223pVqb1Jd46GKzc4qEzXeLb0YlJfoe/RwgsORdQRZSwSQTZ/lhh7uyXBHMJqRQyeavmsXpZloUldPTqgvyvdpq30ISsWp1NFU9g/G8S4YWJJNUJZk33FKAaCC8NIjLznw5/rhEhmNVdHI2P9WMXAatmKRLbzAKQY615UybTyRqz1uxj4Qo8EQDVUZwyujjcz0Qp+oBTsZgdw9z8J4DRgoj7aIcfrcT/abyqt79aBN6Fvh0+j/0tZ8Ursq6b6xuvmhuLJ+Wx/nBW9Yu1wl88UPwdFnmIyUtObVUKt9OhI/KaGVs+5KxVIsE6aX4gzr0nVpXyf4ovCw1dq3O75efvlCFXnYHkVLOJ70hje5p5yoFJmBwIVics+O7HhXGOgzB5sXUpLVQsPJQRtWRqwQCa05vkuKxenvRhkTDJGlOqQH/NMsquwT/MfBnCjNP2/iaHDnm0fQU9k8sXecBzSMFlI/4LQXbb8UwXTh+z5yCS+6ew84t/TVQJun7QZ7WvgDUKRGLUlRz/g7PHq/wtCP8kiBX6bU5jzQBcQ6FAuAz5HbcnfeDNmgKk00xMcDS8vFQi2hzod5nXuRYM1oHC8iBfDqbQ0uqDlpfSZUrbXXl5T6ieg6T0BF8KgaocK9GRb9hML7isS8cuBKjx24TsTSWqGV972uLmcwwNT5Th12rQLI0fUU9G7elK4U0RJ+e8I9lruB9cti4QagkvTaTNsAxkOeF7cCJVB0IyBMBVyTli4TBrZGX5JVep1JdQ4JJP0nvNepFFuhlvyOKdNlRueUz5hd2wfemQ69FpdBzizZV8dTPur5+AfsiWsNjau572MHIarWpTxRig5vO04TdlLhm5bMe600CsWEtq39fh9RnPMSlFCKIdJ2AyPcS+EK1lhFWEh6Wgu+g9Khyvf0YTSCk8aYCqiTzUfY52k51U5zjGfuPivCVCGbuYuCFLnnWm1SlrsO2k0ncIlK0gw5uU7CN/xf3VaBsF7crdXEVXVoZDbul7VLVhhX8zkqTPFH7JuEPjb/A94k19SeD+q9hCbunJl+xwBkkcPT4G0UXs1qQ5yEmFOKXywq+LKu0DpPkwXvl+97aoYQ1v3PwJbV+TQMSpvsYeyBOmDGHKibheba8P+pkLd6YthhyVZ7icSVcnPfcIaFLYxt8FtYMyUymz9HwdXKbS4GSC0wBxAnDSG4cIb2Y0S4NIDhyQfi2MR/MXZm5fFqQ8SHPYXCvWZAEgskrE5yGkHU266r09kheQD10iwodnHOrmkAsAvLaflHzF6Y0rDWs1eOY2nJ/x67Mx0oebPaT+qHPp3SSSUCiEPo+q4Qp4RMqvYst8Bn3AIMf67Iyl036dL+GPUnCrWvoazQ+qasT8KAfieElntUh85kM+ubMDjlMxFScV8AnX1pjaUcOaPDUJGF5Fn4sAMVQPVtBwcuNUXeEa0u7ixtn8BaAr6YasJdTH6jeheW4SrIfOQCAAT05AoSKJOByJTv0oczECkr3LM8Y11Qx/Np0hoqHH55DwQBeaQB1Qn5ZDBVLhM/gDxEpo6JWefc8uNGPkdaM3FafFjb4RGuijT5g2BcYl8r7tv6KAVdx3+fQS7kEeiP7d7Bc2DoR4tgjdO9dPhNqvf3V6z8MdDN7TNH2qsEkL8nbuuS91TsNvtjAixFG5p8p+y30bP4skfvJOqSRwmur/wgX1kTLKykWwPcRzk6R8FW7ow1H0HMqER1X7/EoLKK7TNllIyqe/oTxKhiTo1OghTy9Uz1hLbtvzWucD+s4Z6HUH22cJkb4qf2mKgpcBy53QJf1cxnkOftO2+vHx25FcidrtLKSYKgV678z5vq7pt3wUXly4xeZYL0TlJcGrkdGmpp1SvIa7nvtFzOY5iwvzX1HzXnyblXB3J9kzdMZ9pGwNrh8OI/jXRDTfGpf7xvBGkKloLN/T/8zkUV0EjHFeyW8vScZ2VFmdqJ5SeP8RYHjgqOpFHzfv4bYZ7A525VqPiDtlWZGt2NWZyrEO+wiO+Ta7t9UO21dt9FnphB1V7zvnxjjfozBfMR1vghiKm39j597nEuff9blPx6JDLGeddU7dwkKwx6pIQqFmMwQBDFDISYUlRrDnqLdAifVmOXHzlu9I9FoozpvjfFpg9HutmCweY3onklUc38KPr001XxA0ivJEB6wrotT4v8zwf0wuMieos17q9QN5xqpfsHV6NrLwyqU2lpRmMEKCSERUcMUSnvY72WnM8X84gwWrOCvQBuz9OaWb53fQdU76phqRaBN8yi1+IX+vnXdBMMyt++xsekxGU06VcogDzxeXFk60zM4E7gzY/2bQ/Ga/vCB6fVzJ2dODs3M4t/LTg+5xk+PBtQpmyKY88+7/cfDYYNDvqHhnDvwRkHPwRzepkCn8dyez48aVYpLUqmDgkNEO1K7tZvy6KzJ1mh3WwFyCVH2F9mNPEWLVqOIbeS6tz2dmSYIOlR8NqdprBi8Pxj6RWMZ1QKeKKA1zGi2CTqNzXn+jh4MRlLXqQAvjq3tEerN1fP3+IyHqlv4jSc3Xm0u33SrEJpNlRys470ql65/Jnfms5lpgruZNspm8Zr0Vxf/oP6u8lQCNuXm/GWV39ITT3Wh+RKoogzwPsvRLQsh5SYpD/IPsryivuJ/SUkv3ScGcQiEsky9pKyaQcoV+odC6reMrwZrXvIrZqbw/vxNJw5tzKSm02rdWl9qdOMh/0/LvtL7WXd2tCp74b37HuuQGae/y54/+PGRj8/dzI6P/Hz8531Hb2duoxeM3zvRfAMLPLQdGf1m5JsL9w1EFJX5/Y/M34vOnr1Bv0E/umbTwGAw2vdGfFAT7X2DsPDYUHpquGHNcPrycMOdfzYGULmdn4dLSEa9vXroWE9Uu2tY6fvz2cfJjGikdKgjTtklwinj/LUYgoKgarZ0dFM+4OOMsBcY9U8kS6HCp957llHnFcC/wXRxiY/KD2R0LL52t9FR24yTyjqrjvBcO6Jxp0baYmnvJn/Aw5mwIBHrRp5KFEJzNH0iRY9BkVawBue1yVkkt/IqEajz8ku+wf0vuVOaFEu6TSbG8yVUTSwJf++t9Fx2arjktFovFoOQ5XJpeuZhzhSpukevB4m0WnqlRVAcxCh0PJ1OIqEEnr5CEYfe7JVZ8HU3b+3lsySN6qRI0mMyFUSlDrPAucoGjV4spoHD5TeWe6Dp/4lGzZEd5oA6yZJGJSJhqJUha+XKZiWO/OM1am/IXqiQf7csrllu3OLiO8qKtaKzf0iT8AQpl84WscgkEZvRaM1BLR4zsHhYsOCG0aGy7nJukap69Dplb0pq0PWJ5L1m1aiM05oXk3GpvHsLp8XX70vvM8VNBa76ukD5b5qK5gxCpu2KAU/tOTi8R7sF+S6vqTBcQjWo5crVXGGDMgnK2jUaEJWynauWmPu0cg4Hn8/XAboY990rTXZ2UNNFYC+NI5HL89O30nN+s5VQ9TIgDUsvJ718DtOcQcNXob9uB1TX1nsx+HeUik0Htz3+7Yc3vvz2/szjEtnNXlxB+6aso6PTRNaSGAKpdNE1q6+GnrDkW4ft5b9tLaeynJU38oJVXGtzmGwp+NqJYKjv5UwSneoZzzkWy9ARhrKcPiMmZf89VeaB6x6WH8gYmPwKEHjZ5FjbgpMp24hOZwNRbMb6IZnFjQQOp54g1PWKFD1m9VEZpzU3JuHS6ijUNtzgSEVhNvh3+oUdbLwJbKIe6cxb0rNGIsmVmqPAZ+m/WWA4mqZGloRvGPvj2vfHn9UO/o6deSKVUvVfWrNX5rie01dipzTRQ0WkAGm1qQPKswB8iEdha5txGlZzgYTSKEWbyYWrANM4lG8q4EEcMkcTw+qo6haZWxLcFIsVg7nWpV1OPOV8ZeV/LHpXM8QkYGMkxhfsR+l3VllnkqvVttK51Rx8hQqbyQBe4RKkN+LzfG6KmwbSA+vj6z8tQ5Qgd1tCAGwP+I0FQa7tSsSJaSDVwBTJ5flqN/ANMPY1MLan4WBDKTsFewbYF9d0a/Y9DezurRuoG+yrS9Whj7QfTxyfeGPR5fzdLem29MkX591ehnID99gIV71KgzUA+5iNxV+vLum9v+KHNWP76vfXV83qjH9VvVQ0P/7W3orw4m/pqeHGa8Hoc8SKD8MOf/UytKgR3ZxBFqPQsHSRK1rnblv6q1UmvxJEP2dF8YR0XJWMrNLmq2H6KoRo0rASg8tZYeLzypc+DcSPZqxYopJIIKqsGDrdghmQUIPlLSCMn6FQnyKRP6NQvyAxUQC2TdiuLMdCmc/Tn6UB4TCV1eGm3H/mT7aoMy0tjOf2NlssCTbKG1pbRQMoiL5GQSU1O51hb00VkwYGl0YX/jf+bA12KwOvKEu1q7YOi93aNjLoErAIAbFgdD/l5WFfrY4nqEnxPMrtqOX8rp5ICYMnweOsA8q64Qw29VN05BLn1K7Y7iO7Ew2K7ATp+PTAwYEYcWJqa3sAFERSfG8tEJDw7ygBVyWvWnupfNOZFCJ/kMW6caWBJvBDUkk0zlTuPnHpVKfj9KitlllTQOd0kHWOcHi2//OmZQqQQSSCTDpNxMbjIRZLrMxGZxsv/sX4IbbjkTHOQjcxIIV3iGq3D1LlXohBN2HCGDmBJ3IkiDp9kihy8AgYeeevX53HVIyQyY9XYJ4gc29K6Xi8lMbjSmh4goTG5V148cTkeKf99JitlhlirpfpIbL/b00iDgWoELI/WQSyWNQWyeLenLrWYIB1u10PBBV2lO02CP6GRv+Gf+W6jcYmjCaSKfxntfcNNXLIZHaLzu69Ci5eGYeAz3tXRxhy4iCDS8Isyf3QYyKpb/+/tJ6zIUF6EHgOrZtUrUDhTq8m6DjitfZXTUZR0M86ZBKZ68xfS6fndE4+rMv2SkVVG2b2I8/bECDNV/AsWvuUfDkSe3r16ivM/oI7cNOz8/KQDN5ch4zN92s0vsY6r5hT08RQlgkXdaG0QjJXxinbo8p/qg9W2FdefhFWsBMl3HtENOlMnlbuF3r3aQ9eE7JqJQ57VMISikpGskU0P2QwBiA6yzXWH125squ0bPPKVYly9KovAODzCvTrAPAGmoM62YjOLa0VceGhnn5qkMdQZX0w2LphXl6iSUFTjhhqniqiesHxMPM2wNWB6e32ZgXM6PPexOJs5+f4EssZxfVsoqEBnBmvnpFogAgG16vnELAKmpGononxQggeWHHs/BZWrK6/GqqsNONwZlRbcPDeA3I5nS6XUalgDPHKqfC8c9fNuBX7c5izA7gjm16D44JYJCV7A/5S94q/gnaUEYs1olBBDPJ6qUfQGpq5kqqnuhGrF6QahpcfbVlhNzTnBxp2rBjDxIn1UUrNqN8xOEZ0N/34FI6cTiyuDYNpw2E7McBHKLzopYWfYMgJEkGOSsWlR7dL/K2bfTbMudqfwaKS/WVN34H2T306GmXGYM0cxBVeutlrqZi2/8yvKt5PwYsvL/wBVjpOJCiQrXHp0W2SAJuYHcovbObnLZuvlMGTtiydkeZ+LRmx3UGh7iCR32Sa4Y3psrLsCq+W/loZvEh7F4u9SxlFSBDLkmy3x2m7vDq8sjRZujK8+rLNzbnZyWXxI49ajdrLTVLqxeQ23lw8vHWqNbmYK3w6GZuKJReNizfVgLc3bQLvcBx7+Y2s79atYzzF3oq8pw1je4QdG9cO3tk8TfAbby1R+YPvhwLlA9+vBRRbYU9hQfmCrc9u3fjsxme2wgsUQDdagx77DPIFThaOM2OxIeyK/TksIwbUc7/qlP0u89iRzdli2BTPyC93avtkHNoQkUhyYsF2aX69khuTyRhPfMfVHoxJc8KSjXHw2WL4FVelzLPCUykjY4K/93ULWtdGI5My6TvRiBklFOpSy1V+vxQM3FQq398RlD6fVvrVBhDhRiLdUI9CAWg0zReg9SU725oXNgcbFLOHcMP0hDOENJ+SLvFhIL3IFO9oWdAUbEjm6cikpBKryZ2QLPZWQHrhvsUe9nY7HfZ2CwUAdLjN2NoembHGU7RL4LTt4YVbVilbzP7cZdJcvxnRx5DbtouYvYPcEBGGOVP/mhUVYlXpv1NefEILot+Wqk4FzwZ9Qdj6iQOH4voqYt+ltXqTQr7mjq+JdZO+z5RlZNlfm1mLxvNV9ucOnnuf+SEzwwJKzk/0T5xLnoPI8yjeoc+SnxX0u7u6Tbae3gUBZZdMMS/3k/+59d/y8n9F7n/Ld0Hd9q/cvPATeKs06+WoIuBI6tOpHnVcneieBzxGfNIe3yAcm3/uOH+8//i5jnO7U9VU91qUur/q/my5vVirnu2b4TT4RQg2puXJxUV/LffPdCOFESDWf8GZ+AzeBXkjdjv7Go3nBE96NOE9Xq56d5jBCJeVxun0eOn4YS0eZ2OzBYosWYPqlRoicRrJ0s6a/1t2lu7a8/wHzZ3P99jJvU6IT5Hg/qJZ28GogBtTKrixiAAK0CHORjFILEeZLCHXoXFrY+O4y3UsUus8ftLVUG/HFTtfSBbwtn/c0fn2QCr+5qftw1UOiRwCJTIGUyQXgCIF8+96vkkT0KxXJ4hiGwOS+/WV1lIpikLT+LGQs8GqpIMmGaqvo2m6G7XchYMMqj2zB4pWmv/DJgGYoJT8y4HxkZ9aS9EiAov/bfgtL55uYbHZlnq83K3s+zjxcZ/yl7nCW8+LqXRdpErG6y5hVTVUeNfgcf9r9ckzr6uLmpiG/08IDQO+BKkNWFlZL8FW0/lFMPS2x3VwlpijWLnltRccO1fBt7xxObprJQExa9TtGvP5XGNj7kBg1Okc9fvdmTG3Xwem1MpBvUHe3680GPpVigG9XjGwTqUnWLwUupPNpju9FB7HQXY6qOcZFTV4fE0F47yD4nKQOcGfn6Cyvp/67mjWUYzpepWaaO6PyJvmQM2RwdM6h1JwgVPeuGZNUzknERlt0FfitQQCr6avIhJ1VccOukoiWi2pqHgoZBpvDo8PV5BfPfyLDLkntyZR5rbxqbGeS2Po84EOOFySGjirwRMXElkfuI1EQBnyNqI5EvW/f3z9cBI4tCnxXrVVZUVsYHizkNFenVRCoWifSpOdCCHtcBkMJgF4VdgyGPNv54T+v1XkyhX5uplCvpYKG9zllq3YkfvLBuRrqLu/eydmj5XUfA/LW53+Xym1ZA2pDIiaPp46W4rXUUX8IZf2WkYDnP+zjfOxJbOHuHKWLjm1qe3ee/B4+MV/32Uc15bZBy/WXyzIL8eiyIA8utQaNCCRBhzOg0AbcbSDQQkcLikqsuyVlqKNdtFFKP6pGpQsoql+eL1+EXMtTDhQOOwbOBv7aOz9EQdVtJatGetl3MOO7QiVu/1V3rlUnrRwctGNVV4DP/J9DrSSH6biR77PQUySUjFmkcua8SPf94P8/zkSx+64Fq78YfzI9zmIez46o0efG3MRmBu82f3e5D/5NXIokDcKgpcR483up0mleQty7JdmkEHTD5rUtt+CnqJjwtoYnVMsY8ab3T/RdCPj4A+sfy1ufl3V25Z7683upymG+pRqwJ88ly2lue8Yt+DXF6d9xidymgFk3mIO81jAwjQzrWUWs6s5G2aL4/Q3ZFc9q3o8tcyZtvR6zz4gx4Npdq59/X3hd/tKadKhuZuvt9BpZ6cuKJioK62Wb3t0lau63bL8hm5yU7d0q1NHiLH7dWnP+Z1m/DTxGz+rX78kP/8cZUOr5M/Z+jtTQ48B6OJ/ci5wlgQYwL2vAO0fwI3HJ/JuQi/vf53O0aqe7xUIuIU9wQv04skzWU+QYx6QS/Rz43sOZ+Gv9NZsxu4AWi39sHR+PUh8GuEJvXAsiqliRbG+6CfRCRtOXDPQT48WW/9ZRH/08cvlT/rs3zCtalLNqBi2zEdsv6wcBfiLL5cA5FTJjcLWxOGNRf0u3Ub/HgQty4A/jSeL9v9pey7Qc/3NApp83LC/F45G26kGWVDjI1m/nGu4hXbgzH5coN+PzDjO8WSRZ3kvoKLHOUEFLDFoYBkoYNHovORkeBtJlUn1OymZCVDGcjbOA+7vnlDAEpVet7n/9L5MJ+jfjgnLmkwYxXtccqTnKUklq/wy5i41QP/3ztI9cscx5szL7TayZFnu1L/R7ubAyZfbi+1TjbvVsYD9Z1ersgpX1+qY3+q2sdUtj+tXWR0zuT8MqBH50Pv2lCdbTrrqapdv/e29ucAAkEG1YaSdG2ZcIePS1DPPhn1bbW83YmTiYulxgI7vsMaNDDmR1zSnIhWDPrW1stN8i/pz/WLTiOsYxDzEuiAHs5x1irutiI0biyzDSgEm/J4N+q7tOhRd9AZVe7PsN+LUnoPloRge5HVo2wk4bnRCwArcH5BZ2OnubMOsl3Sm3ck150bZbsTKgthuRHEHkZWIqAAnDSyrDLNT9wrYx6LilYpeZ3BGsXPcKEhcIdwKZWvYawx9eBlUsC1WHwoP5jVWW8ZqbYAWWh1Yp5fdX0YFQIG1F30K1kSRTs6RC6VdojjYRDQg2CEKsTJWopY78DXGVX0gJw3qrBBP5XWXV8xWya/jsBi8HCqRfvISXJAtlBTH7duSGHNlQNEg6RS00uozAYDr6aE7GPDVUjPRQJZKlzNyE1MDhzoK91mfeFHfCFfrU1vGUaamMq0CosC1g4mrqlqyP6CN9nAkRwq13BBBlk2EQCROKUoVyMXuMVSmNFWbSHYoEbSkqb6dhT7P1UepbJrsQVs7AukLmJYsu5ihC0aJG/tdDDCQNVrllrJKM83ZzVr5hZWPCYeLqdpAZ7M9GlKUaBWbuiwrKw02jYQA8JIa+Fq3C9jn/mMXHXQGHRlCfISxJ0VjSVxuWmNAuNZy/MSGRuOisWyDUJaiW6rra1wTJZpb3Kji9N7dfq5/KKuQRO5KhESDlVg0fXV8PU+xz2flnlACkFIaOTYRfRv1W8kkUg/e9fTRHR3cWKa2kaWLylJ6a4mIg76injpvZPsq3eAFvZqZVrcATt8As8zpbvaMisii08MZG3rBWBNYYxYJOtw7qw0oI8yySwrD29+ePiHRwFPB6CoVEDeHDLzhprAKNea4531gscqIcRFe03ywjCNjlqfDSjHrrLL3wTg+Ed8k2gEpBCJ6+Te954oBFCEquNC78SrBfd4YxIhK8GdXC15eB5igoL7+LV/IaxReHIM9Fhf9HuaYFWXhmmWneXjRfPNRdFkmVfEQDRmJbpLoZf3wYlQMLczbYl2M72ltWBp4QXx6qMtaIcQqIcZ502qJVOWQFvpKfDELSBsH9ZNnoNVKlooT8iR5nswT71ON70W8Xk+n60vr82E3XU2XPisLznhB2+WwkfiFWh265URQWZ8A0zEFzlQPqqk581ZNKjQfUaQ2YCHxdzOoLnuEWyry/CxGDQ3CJBGtXa1LKRikNAm83lIcDIb+1NT3GsUL6uPTmDlfXHUXM95mdekycTQBRIP4iJODJx4zERBaTi9wGOuFtjZAMNJtzw+MoFcV9Br+oJ/F787uzr2u62ioR6fx15lB4IHeiGTCK2lsa4DT5PAUDqKpgfKUVaNoH+aOWVGP2ajik9i7PQckeCKRU7QSDy0wkLZmNYSbpGdzNQt7/r1CQbPDrR4pDAhRfvunCDFUWJouZ9qxMoDZCI2WDWMznsswHK2pHBdhSdOAcaTHJ6GqmnU60tBQ0cu+Tc51ElJZj4q+iWWif2LOFtyKfmMVgwgxqkGwSqLKGFywjPRy4TPYTED14SD8xoq9Hjgc9YYsx3KpVbxkYMY/PXCqgQLDGAgKlfc/WckxwkGOCaAVrh5FKwAjDKjLXL+NS4wtzOKVdAqpZKIGdDmM2XI2oIP26KgU0X+zi6w4OZVC+ErWrJF5KGB16i0cj/8uQSTecCMAkgOqz1JLuWL8m6OZ/25mEoH+2fSN+lihSi1aCMgUjVk+xrmogGjofxI+SLGPZwPcxTqjbkGuWfZlmTWC5I6SpjfXgpkcxalHwj1F+hxn7Dy6uE5ix3635VvkX2reXe+ssYFR7+VSD4ToPTAEgBF1WpRljS5v1EF8XMwQluQkzwFuQv1QowjruizrQ71fL8tpOfF5xcti4R6xrNxPRTIMLU4Q/cK6PaOQQuFYQo/I9QRY3+qePKjHz0vD9809e3BTwWXSe/ceSVG0MJzh1ALdqPl2lc8Z4+Jp4BjRqNohwtE59BBoddbDbRJxEU+4pQDRYb/PAcy9FHlWh7khkrb4Lx0WdG73Zqx8Erm9UBwz54uRx9jlU9lQrf0gjq3vRImglfUHCNp0m828PM6j0qjMlJOFfsQ9PEWAW/QG0Vv9pMWgbHLCRKDiAp9bHXLKZ1MfjKdNSITxGimc7MaT1Mqwtj0bcQldisuSl8npBaNYl7hRWH684BYEn0GIPu6qKjKxmC0gVVAGk/wSLydQjNmQFZx6ZszbO9v+2bbMpidOO9sEk9EKS7oDXNIScqMRht2SBc+gt3X2eFaXMXSZRlaj6i4SDvpaAabN5GROpD4rXWaktEy1zWbczHtBWCkK2vT2ns+HpZUZHIAHG2P3YBbtXUiTEklEXC+rXX/rXtL0LIbXKAbI8yCmzFgUXexuHg16CWaY5py5pjdVUanAXtJ4HaCf9FsNyszz4rSaZS7W5k23G9BQbE1B79RiXWz0VnSeATYwYtRZn2O9vbvK1ZvQAaXGkdtqXTOVgGBBc5dtqA6NuuQG1RZPrrmLeTlc6xgR8b2RFK0glS9J3js2mrgm5ivq437HTmf0HVaW6rZZiJtj1HDwdSiKO0c7Ylcg1NlylkXjYk/9QlUGAsSgmqslnsf9AHuYTy4vy6XcKtcpiRwi2g6+2XL9HWo2uWF9IYlrp9PLmA+yAi9Deekfpmuw1gqhBPUDoq2MhrXBnInyl2OdynEbmtMJadDvYS94Tlpx54o3AW1Ze3+UpqPNaD2v02FaTesS7L3eQUEVV7IysZvRik4eg7tTZBzfGu7shRqbYU8uuXSgve2TgY0CxYNkjVWEUKqvxaAVLLuLK1Ng/eaWkzcswG6e+N2TdzAD2+b9wYXJrT6c9AQsOlHbm7WbwoQJOXQXgMW3Jk/6FR5NUR7KcgUl3EXhusWvdaDPN/OIqx1q3EbGMvrjnIVgh4VFlmKKCS+5Yc4CbtSvGQZPOVUD7j6dFHgL/Z7ATjl2zbyidErW2Iy3FZe+kXteXufTYekNvP54zD6JbnjcxNN+lAFvAuPkH4kALd+C/2odzho3zFUVgdgV2Oue5J3oAluYHWYYYLjyJE/qIQ/bvENG2WsvsuSOOEDlW1CLwjvjStRUQGB3alaoNnxP8nHUry6Q10jRYC/gD8M3d4fupNA33/uIsuLRqUs+F3/8M3jnNe3YqY63iny9sVfsgGsefaViTi2I7C7TedwJxDL+HY5q57uYLFlX4S8Agw1kDMgl0GvhAsBKIXgGA32eFchrpKkUBkuIZBFcpBpuB3TR2aJTLJC3HOP9ijObes+7D/v2cA6HaV0BfNDeOR/+/9SQJVSd4o7dSYZgV4bFnwvSOajJVZRlaVUWpTTfwGVqejmn+/qgrJfEUfhPsNdA3abWev8ZRcJZlqfLLetmS0IoxrbsXgMecKQHn14s6Vqds0rKMiqH+/F1Vkjiwcs01qgm0sXObz3zZy2Ytj/y8y7zvSxuxbaVoum6W67U1plBaYXN9O1j4T1Y50bfCS6Li5hu3cabkaF5z1X7Ux3ujMK6X7yZmFn+nxiIUvtH03AQltDtXlGfNhipLRJLxAQ+HhqU7opGFOb+vFzISCt7zT9DQqB44ZlGABTQEEtvxoL0FSy4NVB6mdjxWS0AD7CV13mZf5IUs55KkRD6gNyxg6x7g6W7oBT/3bPW8MBnilsxUDLSdV1oDPLkySG/LkOGyyC/KwqbH0eO4/5YQ+FNJsmUN7VTqSWr04N6MfoRLsolsnqSLCsuO6AvqlBQig4By40CwlDKU9uhB4pU7Czun9T6sTnbdDT5eBQncEix9df5B5hLqbJeHAW+axuV2Eb1DYaFhX/Y4GHoO7Zy4G43mor0NMP0xIoL5emUSpxkIhyP9GBl2IWuxVPVcLacp6fpZFbfAPkghot5yXtpHAXdludJPQaBNkC4IrTU1qgrI5kvVh0H7qORbBV0ouVlgicub3ZlqIgJx9L2GN/gSdOk1ZrLXvpLHE/GoyF1OKNd6vJWEDP3myilj0pCgK76SyR2s9TyDNthJLPWJ9MlIWeZgowU+F1AgeayOveq7xD1ib1OvLAZaRzIYEY/r2uKoN1aYjxLziWCGN7BtsfaZ/+VxQ8y9SOIDdYbjMNGNAS/qIYq4bkknG1a9PAfyRR5lpJd6XQSM/mTU+yvZHywg72CWBqVuKuD0eU6M1txskkyrug3PcEU3nW1hxfJ5zuRwIHmdgQwNRvy1UMlGt/UYgyTuX5ba4QAhjVBsAsgWZgmWHjjm0btYubwwuHopTHcOninK+l8D8mU5HbY8i7JF2vaIBRkCmxYpDymt9RRKcBJ0yLPrSpNN9yeXS02iGJjh/AmiYEqrMOyKlm2WFqjqCaTNJXxr9qz3WS7nKfjdMQLeUNn6uFF8fnuD1Yb1ioIf3EqXhKjOmcLlomwc2sZIXflY8W7SlVBSidNs8gdl7dIhCagYstMvQr/TWoDp1yWr6m3TFzB2FKxh6JAlQTjfnfiexGdTuDLW6eb167gLu7wqiycilWtctCIS7Oa95I4DKzadIsIU2msF6+mYvbejqb9/nQzXfcn/XFdaOE9F0LWDFrfn/UHMV8Jrk8v35CGczEpNWjL+J/KVLftP5KaEdHXX3jSjJHWImhLXP2Gf4t73V6Uw16A84Qv/PsJqfzTRkrhMyxaCZBDDUWIHhq2YGYxazKMtIuMdbxK/xh5tj6wbXDnNDhu1/N6VN0mh5ZwYKQf+1y0JpYBD9Pzja9zCGXUuz7IU5Y3JQnBU6gLHzqmyJ8vorbPtovD8uDVVBFmTWzWtmcbVMkn99z89zckzjxHYRwNn3CzBeSrkhJGmkN4U0jAL9fjIgO9/e5QYpGVV1Kx1yGefVfZng73PP/WEfzniL3nzrO181Z3j23G4LldkQwOduFDEe6YEmZ7SHteMOtVezctqL/eIq9YAOKQvdjPrsDO/uSSK7jtXcpHRNfMfOoy8//Qs7aY/bsgbWYBUg7uDvY47zZl+0pWZA3qqDE54C6xeOzvyVni9XVexbJ1LGZLkmXinU05SLixd9Px4bkiPikIgOzjlwffx6Tqfv2Xzf4D+Jfm0sbH3iqM/9tzDH/cJ0GQhXQYAAS4bysAhGdJrLBnhlQby4AVcCrKnPhe0v97FruYZ+i/vPWSY4UhnnfIgWq1+cPG5AY8Z85CcmF58fVAHFipfk397gTaGceJOu+kQo7YqH64XvAi6g2vfzVH01UfxEArkjXry2bXFoq6Bq8Na3Z+PR1lrweSqjebExven6n2ya0STOMAc83lKEM4IONx6wQH7pcblygglyXE1hiHs/Tr2rlEbH2+CyapxEZqoUfupNmY2MiJ6yFxmOy2320Zug7KzX7c2i2L45WPn9NQeRG3jXywxSzVQdoAkNYe3Kygy3Yq28/HZo5MwaliqDw7rBRjeZE1iqOqaWoBixp0dpEJ8qJSoEACKtABfV4pNN7JhzjS4RctT9T38fcRZMoexi06PVDYYD6jZTAwxySsVnfQo6pVtEOqInOQmEbUvT9T9jq/Atmj1k72TBaphCj1vCcWpbu89EAOn4CmfEckp1Ysa0KdctaEOs0sYM5alo+4WnB+lE9Qn4cHDJEMtULlhiXL3d0KyUDV1pIh3Eze/8cZamhHfHDUE622i7BIkA8SDjlD1jElindUVYoD/wPABwDDgA+VQIOWlZf+ndN4Jhv0LvEv+MeFAZD24MPaSnft0tVYlQbYoxoCMhGKcZRhwTjFmw74NqUGAQFSPeDQiAfAD9CB0PYMUxfgIt1AMASwaGIYW8WufrNCkSmXoU69YfrrradeBmKECxUmDKNUL90xivrdaw00QHf99dc59D36a1kf3XXt9dMMoryXOjYA22nlD1TfWscLEaKn3hN/jgfpwq2rOjVC5BukWm/dDdRZmWqdhSxv0wEjWHptXK2bGO71bh4qQZlCaXXTCbRuu/SBEwYZKkdt1FsRZsx7N9S3WQbuAF33LdVryW3lVnPvoz9jPYUoka0QBgDag8JV33WZCCAFGJzVVZd1sVNXu8xhY9eNw2dO3V1xzXUBAgUJdsNNt9zmusWS0cMv6Y67erpvrt32iCiffqQo0WLEeuChXh6JEy9Boq+SgkOm88H1UavGGlmy1cnxRa76/fNLqZ88+QoUemygwYaEgEGKwoJiJTxaGaq1YUYYabi1RtnLy69UmXJTVag0ms9YY7RRpa12vjmmfdhwxlkrrQoHZGjym0jhDZh+Ig0X8RCJ+IhCAiREIiSOJNLIQkceRZRRRR1NtNFFH0OMTvgVfoPfQSDFeZPpiWxHWI9NwmwdFpKBVHqYmHTQSbJUfJT99hHHbKttTjntogMOOuSwC7GY4CROrCZaFBuhH5rgCIaJ0XydbYgdlwXPFJNMN814HX2SFkecCUhgghIcV9wJSWjCEp6IRCYq0YlJbOISb6ZXnpglwzMvPR19dbFFrV6i8AXa20IeJb6+KVCvVYvzoq3zNxtVOe2NUSKZwlgSHX9SLQ6tUYSivFdDFvf6Oyu3qTHULLZ1DlD+QxdiaOa9jbFslaIdmlNao3F89kSZ4qMkyrTUGJ2btBd33EOwmQSRYI5ggiACTCSYSxAEE9yWClHIyqLkCGWaTGRQCx8S0Qo8GyTugrIIMn8EokWsGi1nL0FiN0+c83IjaFUhk2jWUq5EITKXM/K+5NHC0Gclory9LXJttEV23wiU1xatD2YD1CKZQYXCXGCIq2YvKmQ3Wupo0w2QNVPv6GUUWhdnWnmruhMfXbQY/X8AlZo6u6Pkd3HeB1Ql/u/qQPTPgNxKY+2vAfqNw0l8eHprb+DUOM6m737h69CPE88mxMR2rB7JxvWlYWt8H4iMvRu7N3YeWQ6Vo8772b5xNJkebhyuHC4czoppMf6dYdLBW47DGgGpZakHrr93NMTPdw8YSCX9Nz4HiPLr/PLAfambj7kslX/sxdiNsf3IfGhQVGu5JP9DGPkNQ2lxXx3GUK8DAAA=) format(\"woff2\")}:host{position:relative;display:flex;flex-direction:column;align-items:center!important;justify-content:center!important}:host.horizontal{display:flex;flex-direction:row-reverse}:host.show-buttons-on-focus-only co-button{position:relative;z-index:20;position:absolute!important;margin-left:auto}:host.show-buttons-on-focus-only co-button.plus-operator{top:-38px}:host.show-buttons-on-focus-only co-button.minus-operator{bottom:-38px}:host.has-label input-text ::ng-deep input{position:relative;bottom:2px;text-align:left}:host co-input-text{width:60px}:host co-button{font-size:22px;margin:5px;height:26px;padding:0}\n"]
|
|
5087
|
+
encapsulation: ViewEncapsulation.None
|
|
5015
5088
|
},] }
|
|
5016
5089
|
];
|
|
5017
5090
|
InputNumberPickerComponent.ctorParameters = () => [
|
|
5091
|
+
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
5018
5092
|
{ type: IconCacheService, decorators: [{ type: Inject, args: [IconCacheService,] }] },
|
|
5019
5093
|
{ type: NgZone },
|
|
5094
|
+
{ type: ComponentFactoryResolver },
|
|
5020
5095
|
{ type: ChangeDetectorRef },
|
|
5021
5096
|
{ type: FormInputUserModelChangeListenerService }
|
|
5022
5097
|
];
|
|
5023
5098
|
InputNumberPickerComponent.propDecorators = {
|
|
5024
|
-
floatLabelType: [{ type: Input }],
|
|
5025
|
-
cssClass: [{ type: Input }],
|
|
5026
5099
|
model: [{ type: Input }],
|
|
5027
5100
|
min: [{ type: Input }],
|
|
5028
5101
|
step: [{ type: Input }],
|
|
@@ -5036,12 +5109,29 @@ InputNumberPickerComponent.propDecorators = {
|
|
|
5036
5109
|
modelChange: [{ type: Output }],
|
|
5037
5110
|
inputTextComp: [{ type: ViewChild, args: [InputTextComponent, { static: true },] }],
|
|
5038
5111
|
showButtonsOnFocusOnly: [{ type: HostBinding, args: ["class.show-buttons-on-focus-only",] }],
|
|
5039
|
-
hasLabel: [{ type: HostBinding, args: ["class.has-label",] }]
|
|
5112
|
+
hasLabel: [{ type: HostBinding, args: ["class.has-label",] }],
|
|
5113
|
+
showClass: [{ type: HostBinding, args: ['class.co-input-number-picker',] }]
|
|
5040
5114
|
};
|
|
5041
5115
|
__decorate([
|
|
5042
5116
|
InputBoolean()
|
|
5043
5117
|
], InputNumberPickerComponent.prototype, "noValidation", void 0);
|
|
5044
5118
|
|
|
5119
|
+
class ValidationErrorModule {
|
|
5120
|
+
}
|
|
5121
|
+
ValidationErrorModule.decorators = [
|
|
5122
|
+
{ type: NgModule, args: [{
|
|
5123
|
+
imports: [
|
|
5124
|
+
CommonModule
|
|
5125
|
+
],
|
|
5126
|
+
declarations: [
|
|
5127
|
+
ValidationErrorComponent
|
|
5128
|
+
],
|
|
5129
|
+
exports: [
|
|
5130
|
+
ValidationErrorComponent
|
|
5131
|
+
]
|
|
5132
|
+
},] }
|
|
5133
|
+
];
|
|
5134
|
+
|
|
5045
5135
|
class InputTextModule {
|
|
5046
5136
|
}
|
|
5047
5137
|
InputTextModule.decorators = [
|
|
@@ -5053,13 +5143,15 @@ InputTextModule.decorators = [
|
|
|
5053
5143
|
IconModule,
|
|
5054
5144
|
AppendPipeModule,
|
|
5055
5145
|
TextBoxAllModule,
|
|
5056
|
-
NumericTextBoxModule
|
|
5146
|
+
NumericTextBoxModule,
|
|
5147
|
+
ValidationErrorModule
|
|
5057
5148
|
],
|
|
5058
|
-
|
|
5059
|
-
|
|
5149
|
+
declarations: [
|
|
5150
|
+
InputTextComponent
|
|
5060
5151
|
],
|
|
5061
|
-
|
|
5062
|
-
|
|
5152
|
+
exports: [
|
|
5153
|
+
InputTextComponent
|
|
5154
|
+
]
|
|
5063
5155
|
},] }
|
|
5064
5156
|
];
|
|
5065
5157
|
|
|
@@ -5069,6 +5161,7 @@ InputNumberPickerModule.decorators = [
|
|
|
5069
5161
|
{ type: NgModule, args: [{
|
|
5070
5162
|
imports: [
|
|
5071
5163
|
CommonModule,
|
|
5164
|
+
FormsModule,
|
|
5072
5165
|
ButtonModule,
|
|
5073
5166
|
InputTextModule
|
|
5074
5167
|
],
|
|
@@ -5078,9 +5171,15 @@ InputNumberPickerModule.decorators = [
|
|
|
5078
5171
|
];
|
|
5079
5172
|
|
|
5080
5173
|
class InputRadioButtonComponent extends BaseInputComponent {
|
|
5081
|
-
constructor(formComponent, changeDetector, formUserChangeListener, ngZoneWrapper) {
|
|
5082
|
-
super(changeDetector, formUserChangeListener, ngZoneWrapper);
|
|
5174
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
5175
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
5083
5176
|
this.formComponent = formComponent;
|
|
5177
|
+
this.changeDetector = changeDetector;
|
|
5178
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
5179
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
5180
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
5181
|
+
this.elementRef = elementRef;
|
|
5182
|
+
super._markAsOnPush();
|
|
5084
5183
|
}
|
|
5085
5184
|
showClass() {
|
|
5086
5185
|
return true;
|
|
@@ -5112,8 +5211,10 @@ InputRadioButtonComponent.decorators = [
|
|
|
5112
5211
|
InputRadioButtonComponent.ctorParameters = () => [
|
|
5113
5212
|
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
5114
5213
|
{ type: ChangeDetectorRef },
|
|
5214
|
+
{ type: ComponentFactoryResolver },
|
|
5115
5215
|
{ type: FormInputUserModelChangeListenerService },
|
|
5116
|
-
{ type: NgZoneWrapperService }
|
|
5216
|
+
{ type: NgZoneWrapperService },
|
|
5217
|
+
{ type: ElementRef }
|
|
5117
5218
|
];
|
|
5118
5219
|
InputRadioButtonComponent.propDecorators = {
|
|
5119
5220
|
value: [{ type: Input }],
|
|
@@ -5139,9 +5240,89 @@ InputRadioButtonModule.decorators = [
|
|
|
5139
5240
|
},] }
|
|
5140
5241
|
];
|
|
5141
5242
|
|
|
5243
|
+
class InputTextareaComponent extends BaseInputComponent {
|
|
5244
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
5245
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
5246
|
+
this.formComponent = formComponent;
|
|
5247
|
+
this.changeDetector = changeDetector;
|
|
5248
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
5249
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
5250
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
5251
|
+
this.elementRef = elementRef;
|
|
5252
|
+
this.placeholder = "";
|
|
5253
|
+
this.hasOwnLabel = true;
|
|
5254
|
+
this.customHeight = true;
|
|
5255
|
+
super._markAsOnPush();
|
|
5256
|
+
}
|
|
5257
|
+
showClass() {
|
|
5258
|
+
return true;
|
|
5259
|
+
}
|
|
5260
|
+
}
|
|
5261
|
+
InputTextareaComponent.decorators = [
|
|
5262
|
+
{ type: Component, args: [{
|
|
5263
|
+
selector: "co-input-textarea",
|
|
5264
|
+
template: `
|
|
5265
|
+
<label [textContent]="placeholder"></label>
|
|
5266
|
+
<textarea type="textarea"
|
|
5267
|
+
[ngModel]="model"
|
|
5268
|
+
[readonly]="readonly"
|
|
5269
|
+
[required]="required"
|
|
5270
|
+
(ngModelChange)="modelChange.emit($event)"
|
|
5271
|
+
(focus)="focused = true"
|
|
5272
|
+
(blur)="focused = false"
|
|
5273
|
+
></textarea>
|
|
5274
|
+
<div class="required-indicator"></div>
|
|
5275
|
+
<ng-template #validationError></ng-template>
|
|
5276
|
+
`,
|
|
5277
|
+
providers: [{
|
|
5278
|
+
provide: COMPONENT_INTERFACE_NAME,
|
|
5279
|
+
useExisting: forwardRef(() => InputTextareaComponent)
|
|
5280
|
+
}],
|
|
5281
|
+
encapsulation: ViewEncapsulation.None
|
|
5282
|
+
},] }
|
|
5283
|
+
];
|
|
5284
|
+
InputTextareaComponent.ctorParameters = () => [
|
|
5285
|
+
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
5286
|
+
{ type: ChangeDetectorRef },
|
|
5287
|
+
{ type: ComponentFactoryResolver },
|
|
5288
|
+
{ type: FormInputUserModelChangeListenerService },
|
|
5289
|
+
{ type: NgZoneWrapperService },
|
|
5290
|
+
{ type: ElementRef }
|
|
5291
|
+
];
|
|
5292
|
+
InputTextareaComponent.propDecorators = {
|
|
5293
|
+
placeholder: [{ type: Input }],
|
|
5294
|
+
showClass: [{ type: HostBinding, args: ["class.co-input-textarea",] }],
|
|
5295
|
+
hasOwnLabel: [{ type: HostBinding, args: ["class.has-own-label",] }],
|
|
5296
|
+
customHeight: [{ type: HostBinding, args: ['class.custom-height',] }]
|
|
5297
|
+
};
|
|
5298
|
+
|
|
5299
|
+
class InputTextareaModule {
|
|
5300
|
+
}
|
|
5301
|
+
InputTextareaModule.decorators = [
|
|
5302
|
+
{ type: NgModule, args: [{
|
|
5303
|
+
imports: [
|
|
5304
|
+
CommonModule,
|
|
5305
|
+
FormsModule,
|
|
5306
|
+
ValidationErrorModule
|
|
5307
|
+
],
|
|
5308
|
+
declarations: [
|
|
5309
|
+
InputTextareaComponent
|
|
5310
|
+
],
|
|
5311
|
+
exports: [
|
|
5312
|
+
InputTextareaComponent
|
|
5313
|
+
]
|
|
5314
|
+
},] }
|
|
5315
|
+
];
|
|
5316
|
+
|
|
5142
5317
|
class MultiSelectListComponent extends BaseInputComponent {
|
|
5143
|
-
constructor() {
|
|
5144
|
-
super(
|
|
5318
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
5319
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
5320
|
+
this.formComponent = formComponent;
|
|
5321
|
+
this.changeDetector = changeDetector;
|
|
5322
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
5323
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
5324
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
5325
|
+
this.elementRef = elementRef;
|
|
5145
5326
|
/**
|
|
5146
5327
|
* In the form { text: 'name', value: 'id' }
|
|
5147
5328
|
* Where 'text' is showing in the dropdown and 'id' used for the model binding
|
|
@@ -5149,6 +5330,7 @@ class MultiSelectListComponent extends BaseInputComponent {
|
|
|
5149
5330
|
this.fields = {};
|
|
5150
5331
|
this.showSelectAll = true;
|
|
5151
5332
|
this.mode = "Default";
|
|
5333
|
+
super._markAsOnPush();
|
|
5152
5334
|
}
|
|
5153
5335
|
set showCheckbox(value) {
|
|
5154
5336
|
if (value) {
|
|
@@ -5158,6 +5340,14 @@ class MultiSelectListComponent extends BaseInputComponent {
|
|
|
5158
5340
|
showClass() {
|
|
5159
5341
|
return true;
|
|
5160
5342
|
}
|
|
5343
|
+
handleModelChange(val) {
|
|
5344
|
+
if (Array.isArray(val)) {
|
|
5345
|
+
if (val.length < 1) {
|
|
5346
|
+
val = undefined;
|
|
5347
|
+
}
|
|
5348
|
+
}
|
|
5349
|
+
this.modelChange.next(val);
|
|
5350
|
+
}
|
|
5161
5351
|
}
|
|
5162
5352
|
MultiSelectListComponent.decorators = [
|
|
5163
5353
|
{ type: Component, args: [{
|
|
@@ -5165,10 +5355,9 @@ MultiSelectListComponent.decorators = [
|
|
|
5165
5355
|
template: `
|
|
5166
5356
|
<ejs-multiselect
|
|
5167
5357
|
[dataSource]="collection"
|
|
5168
|
-
[placeholder]="
|
|
5358
|
+
[placeholder]="placeholder"
|
|
5169
5359
|
[value]="model"
|
|
5170
5360
|
[mode]="mode"
|
|
5171
|
-
[cssClass]="'co-multi-select-list'"
|
|
5172
5361
|
[fields]="fields"
|
|
5173
5362
|
[readonly]="readonly"
|
|
5174
5363
|
[itemTemplate]="itemTemplate"
|
|
@@ -5177,8 +5366,12 @@ MultiSelectListComponent.decorators = [
|
|
|
5177
5366
|
[footerTemplate]="footerTemplate"
|
|
5178
5367
|
[selectAllText]="'Select All'"
|
|
5179
5368
|
[showSelectAll]=showSelectAll
|
|
5180
|
-
|
|
5369
|
+
[ngModel]="model"
|
|
5370
|
+
(ngModelChange)="handleModelChange($event)"
|
|
5371
|
+
(valueChange)="handleModelChange($event)"
|
|
5181
5372
|
></ejs-multiselect>
|
|
5373
|
+
<div class="required-indicator"></div>
|
|
5374
|
+
<ng-template #validationError></ng-template>
|
|
5182
5375
|
`,
|
|
5183
5376
|
providers: [
|
|
5184
5377
|
CheckBoxSelectionService,
|
|
@@ -5187,14 +5380,21 @@ MultiSelectListComponent.decorators = [
|
|
|
5187
5380
|
useExisting: forwardRef(() => MultiSelectListComponent)
|
|
5188
5381
|
}
|
|
5189
5382
|
],
|
|
5190
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5191
5383
|
encapsulation: ViewEncapsulation.None
|
|
5192
5384
|
},] }
|
|
5193
5385
|
];
|
|
5386
|
+
MultiSelectListComponent.ctorParameters = () => [
|
|
5387
|
+
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
5388
|
+
{ type: ChangeDetectorRef },
|
|
5389
|
+
{ type: ComponentFactoryResolver },
|
|
5390
|
+
{ type: FormInputUserModelChangeListenerService },
|
|
5391
|
+
{ type: NgZoneWrapperService },
|
|
5392
|
+
{ type: ElementRef }
|
|
5393
|
+
];
|
|
5194
5394
|
MultiSelectListComponent.propDecorators = {
|
|
5195
5395
|
collection: [{ type: Input }],
|
|
5196
5396
|
fields: [{ type: Input }],
|
|
5197
|
-
|
|
5397
|
+
placeholder: [{ type: Input }],
|
|
5198
5398
|
itemTemplate: [{ type: Input }],
|
|
5199
5399
|
headerTemplate: [{ type: Input }],
|
|
5200
5400
|
valueTemplate: [{ type: Input }],
|
|
@@ -5211,7 +5411,8 @@ MultiSelectListModule.decorators = [
|
|
|
5211
5411
|
imports: [
|
|
5212
5412
|
BaseModule,
|
|
5213
5413
|
CommonModule,
|
|
5214
|
-
MultiSelectModule
|
|
5414
|
+
MultiSelectModule,
|
|
5415
|
+
FormsModule
|
|
5215
5416
|
],
|
|
5216
5417
|
declarations: [MultiSelectListComponent],
|
|
5217
5418
|
exports: [MultiSelectListComponent]
|
|
@@ -6629,6 +6830,644 @@ CoRichTextEditorModule.decorators = [
|
|
|
6629
6830
|
},] }
|
|
6630
6831
|
];
|
|
6631
6832
|
|
|
6833
|
+
ListBoxComponent.Inject(CheckBoxSelection);
|
|
6834
|
+
class InputListboxComponent extends BaseInputComponent {
|
|
6835
|
+
constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
6836
|
+
super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
|
|
6837
|
+
this.formComponent = formComponent;
|
|
6838
|
+
this.changeDetector = changeDetector;
|
|
6839
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
6840
|
+
this.formUserChangeListener = formUserChangeListener;
|
|
6841
|
+
this.ngZoneWrapper = ngZoneWrapper;
|
|
6842
|
+
this.elementRef = elementRef;
|
|
6843
|
+
// public set model(value: string[] | number[]) {
|
|
6844
|
+
// this._model = value;
|
|
6845
|
+
// }
|
|
6846
|
+
this.collection = [];
|
|
6847
|
+
this.customHeight = true;
|
|
6848
|
+
this.selectionSettings = { mode: 'Multiple' };
|
|
6849
|
+
super._markAsOnPush();
|
|
6850
|
+
}
|
|
6851
|
+
set singleSelect(value) {
|
|
6852
|
+
if (value) {
|
|
6853
|
+
this.selectionSettings.mode = 'Single';
|
|
6854
|
+
}
|
|
6855
|
+
}
|
|
6856
|
+
set showCheckbox(value) {
|
|
6857
|
+
if (value) {
|
|
6858
|
+
this.selectionSettings.showCheckbox = true;
|
|
6859
|
+
}
|
|
6860
|
+
}
|
|
6861
|
+
set showSelectAll(value) {
|
|
6862
|
+
if (value) {
|
|
6863
|
+
this.selectionSettings.showSelectAll = true;
|
|
6864
|
+
}
|
|
6865
|
+
}
|
|
6866
|
+
showClass() {
|
|
6867
|
+
return true;
|
|
6868
|
+
}
|
|
6869
|
+
}
|
|
6870
|
+
InputListboxComponent.decorators = [
|
|
6871
|
+
{ type: Component, args: [{
|
|
6872
|
+
selector: 'co-input-listbox',
|
|
6873
|
+
template: `
|
|
6874
|
+
<div class="co-input-listbox-header" [textContent]="placeholder"></div>
|
|
6875
|
+
<div class="co-input-listbox-content">
|
|
6876
|
+
<ejs-listbox
|
|
6877
|
+
[ngModel]="value"
|
|
6878
|
+
[dataSource]="collection"
|
|
6879
|
+
[fields]="fields"
|
|
6880
|
+
[selectionSettings]="selectionSettings"
|
|
6881
|
+
(ngModelChange)="modelChange.emit($event)"
|
|
6882
|
+
></ejs-listbox>
|
|
6883
|
+
</div>
|
|
6884
|
+
<div class="required-indicator"></div>
|
|
6885
|
+
<ng-template #validationError></ng-template>
|
|
6886
|
+
`,
|
|
6887
|
+
providers: [{
|
|
6888
|
+
provide: COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputListboxComponent)
|
|
6889
|
+
}],
|
|
6890
|
+
encapsulation: ViewEncapsulation.None
|
|
6891
|
+
},] }
|
|
6892
|
+
];
|
|
6893
|
+
InputListboxComponent.ctorParameters = () => [
|
|
6894
|
+
{ type: FormComponent, decorators: [{ type: Optional }] },
|
|
6895
|
+
{ type: ChangeDetectorRef },
|
|
6896
|
+
{ type: ComponentFactoryResolver },
|
|
6897
|
+
{ type: FormInputUserModelChangeListenerService },
|
|
6898
|
+
{ type: NgZoneWrapperService },
|
|
6899
|
+
{ type: ElementRef }
|
|
6900
|
+
];
|
|
6901
|
+
InputListboxComponent.propDecorators = {
|
|
6902
|
+
placeholder: [{ type: Input }],
|
|
6903
|
+
value: [{ type: Input }],
|
|
6904
|
+
collection: [{ type: Input }],
|
|
6905
|
+
fields: [{ type: Input }],
|
|
6906
|
+
singleSelect: [{ type: Input }],
|
|
6907
|
+
showCheckbox: [{ type: Input }],
|
|
6908
|
+
showSelectAll: [{ type: Input }],
|
|
6909
|
+
showClass: [{ type: HostBinding, args: ['class.co-input-listbox',] }],
|
|
6910
|
+
customHeight: [{ type: HostBinding, args: ['class.custom-height',] }]
|
|
6911
|
+
};
|
|
6912
|
+
|
|
6913
|
+
enableRipple(true);
|
|
6914
|
+
class InputListboxModule {
|
|
6915
|
+
}
|
|
6916
|
+
InputListboxModule.decorators = [
|
|
6917
|
+
{ type: NgModule, args: [{
|
|
6918
|
+
imports: [
|
|
6919
|
+
CommonModule,
|
|
6920
|
+
FormsModule,
|
|
6921
|
+
ListBoxModule
|
|
6922
|
+
],
|
|
6923
|
+
declarations: [
|
|
6924
|
+
InputListboxComponent
|
|
6925
|
+
],
|
|
6926
|
+
exports: [
|
|
6927
|
+
InputListboxComponent
|
|
6928
|
+
]
|
|
6929
|
+
},] }
|
|
6930
|
+
];
|
|
6931
|
+
|
|
6932
|
+
var ColumnAlign;
|
|
6933
|
+
(function (ColumnAlign) {
|
|
6934
|
+
ColumnAlign["Left"] = "left-align";
|
|
6935
|
+
ColumnAlign["Center"] = "center-align";
|
|
6936
|
+
ColumnAlign["Right"] = "right-align";
|
|
6937
|
+
})(ColumnAlign || (ColumnAlign = {}));
|
|
6938
|
+
class SimpleGridColumnDirective {
|
|
6939
|
+
constructor() {
|
|
6940
|
+
this.resizable = true;
|
|
6941
|
+
}
|
|
6942
|
+
set template(template) {
|
|
6943
|
+
if (template) {
|
|
6944
|
+
this._template = template;
|
|
6945
|
+
}
|
|
6946
|
+
}
|
|
6947
|
+
get template() {
|
|
6948
|
+
return this._template;
|
|
6949
|
+
}
|
|
6950
|
+
}
|
|
6951
|
+
SimpleGridColumnDirective._MinManualResizeWidthPx = 50;
|
|
6952
|
+
SimpleGridColumnDirective.decorators = [
|
|
6953
|
+
{ type: Directive, args: [{
|
|
6954
|
+
selector: "co-simple-grid-column"
|
|
6955
|
+
},] }
|
|
6956
|
+
];
|
|
6957
|
+
SimpleGridColumnDirective.propDecorators = {
|
|
6958
|
+
template: [{ type: ContentChild, args: [TemplateRef,] }],
|
|
6959
|
+
headerText: [{ type: Input }],
|
|
6960
|
+
field: [{ type: Input }],
|
|
6961
|
+
textAlign: [{ type: Input }],
|
|
6962
|
+
format: [{ type: Input }],
|
|
6963
|
+
resizable: [{ type: Input }],
|
|
6964
|
+
width: [{ type: Input }]
|
|
6965
|
+
};
|
|
6966
|
+
|
|
6967
|
+
class SimpleGridComponent {
|
|
6968
|
+
constructor() {
|
|
6969
|
+
this.defaultTextAlign = ColumnAlign.Left;
|
|
6970
|
+
this.data = [];
|
|
6971
|
+
this.dragDropEnabled = false;
|
|
6972
|
+
/**
|
|
6973
|
+
* Should component emit drag and drop actions instead of handle
|
|
6974
|
+
* (update collection) by itself
|
|
6975
|
+
*/
|
|
6976
|
+
this.emitDragDrop = false;
|
|
6977
|
+
this.onDrop = new EventEmitter();
|
|
6978
|
+
this.columns = [];
|
|
6979
|
+
}
|
|
6980
|
+
set content(columnComponents) {
|
|
6981
|
+
this.columns = columnComponents.toArray();
|
|
6982
|
+
}
|
|
6983
|
+
showClass() {
|
|
6984
|
+
return true;
|
|
6985
|
+
}
|
|
6986
|
+
handleMouseMove(event) {
|
|
6987
|
+
if (event.buttons === 1 && this._columnForResize) {
|
|
6988
|
+
if (!this._columnForResize.width) {
|
|
6989
|
+
const rect = event.target.parentElement.getBoundingClientRect();
|
|
6990
|
+
this._columnForResize.width = rect.width;
|
|
6991
|
+
}
|
|
6992
|
+
this._columnForResize.width += event.movementX;
|
|
6993
|
+
}
|
|
6994
|
+
}
|
|
6995
|
+
handleMouseUp(event) {
|
|
6996
|
+
this._columnForResize = undefined;
|
|
6997
|
+
}
|
|
6998
|
+
handleSizerMouseDown(event, column) {
|
|
6999
|
+
this._columnForResize = column;
|
|
7000
|
+
}
|
|
7001
|
+
handleCanDragDrop(drag, drop) {
|
|
7002
|
+
return true;
|
|
7003
|
+
}
|
|
7004
|
+
handleDrop(event) {
|
|
7005
|
+
try {
|
|
7006
|
+
const from = event.previousIndex;
|
|
7007
|
+
const to = event.currentIndex;
|
|
7008
|
+
if (from === to) {
|
|
7009
|
+
return;
|
|
7010
|
+
}
|
|
7011
|
+
if (this.emitDragDrop) {
|
|
7012
|
+
this.onDrop.next({ from: from, to: to });
|
|
7013
|
+
}
|
|
7014
|
+
else {
|
|
7015
|
+
moveItemInArray(this.data, from, to);
|
|
7016
|
+
}
|
|
7017
|
+
}
|
|
7018
|
+
catch (e) {
|
|
7019
|
+
console.error(e);
|
|
7020
|
+
}
|
|
7021
|
+
}
|
|
7022
|
+
}
|
|
7023
|
+
SimpleGridComponent.decorators = [
|
|
7024
|
+
{ type: Component, args: [{
|
|
7025
|
+
selector: "co-simple-grid",
|
|
7026
|
+
template: `
|
|
7027
|
+
<div class="simple-grid-column-header-wrapper">
|
|
7028
|
+
<div class="simple-grid-column-header" *ngFor="let column of columns; let index = index"
|
|
7029
|
+
[style.min-width.px]="column.width" [style.max-width.px]="column.width">
|
|
7030
|
+
<div class="simple-grid-column-header-label" [ngClass]="column.textAlign ? column.textAlign : defaultTextAlign"
|
|
7031
|
+
[textContent]="column.headerText"
|
|
7032
|
+
></div>
|
|
7033
|
+
<div *ngIf="column.resizable" class="simple-grid-column-sizer"
|
|
7034
|
+
(mousedown)="handleSizerMouseDown($event, column)"
|
|
7035
|
+
></div>
|
|
7036
|
+
</div>
|
|
7037
|
+
</div>
|
|
7038
|
+
<div cdkDropListGroup class="drop-list-group">
|
|
7039
|
+
<div #dropList cdkDropList cdkDropListOrientation="vertical"
|
|
7040
|
+
class="simple-grid-drag-drop-list"
|
|
7041
|
+
[cdkDropListDisabled]="!dragDropEnabled"
|
|
7042
|
+
[cdkDropListData]="data"
|
|
7043
|
+
[cdkDropListEnterPredicate]="handleCanDragDrop"
|
|
7044
|
+
(cdkDropListDropped)="handleDrop($event)"
|
|
7045
|
+
>
|
|
7046
|
+
<div class="simple-grid-row" *ngFor="let row of data" cdkDrag>
|
|
7047
|
+
<div class="simple-grid-column-cell" *ngFor="let column of columns"
|
|
7048
|
+
[style.min-width.px]="column.width" [style.max-width.px]="column.width">
|
|
7049
|
+
<div class="simple-grid-column-cell-value" [ngClass]="column.textAlign ? column.textAlign : defaultTextAlign">
|
|
7050
|
+
<ng-container *ngIf="column.template">
|
|
7051
|
+
<ng-container [ngTemplateOutlet]="column.template" [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
|
|
7052
|
+
</ng-container>
|
|
7053
|
+
<div *ngIf="!column.template" [textContent]="row[column.field]"></div>
|
|
7054
|
+
</div>
|
|
7055
|
+
<div *ngIf="column.resizable" class="simple-grid-column-sizer-placeholder"></div>
|
|
7056
|
+
</div>
|
|
7057
|
+
</div>
|
|
7058
|
+
</div>
|
|
7059
|
+
</div>
|
|
7060
|
+
`,
|
|
7061
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7062
|
+
encapsulation: ViewEncapsulation.None
|
|
7063
|
+
},] }
|
|
7064
|
+
];
|
|
7065
|
+
SimpleGridComponent.propDecorators = {
|
|
7066
|
+
content: [{ type: ContentChildren, args: [SimpleGridColumnDirective,] }],
|
|
7067
|
+
data: [{ type: Input }],
|
|
7068
|
+
dragDropEnabled: [{ type: Input }],
|
|
7069
|
+
emitDragDrop: [{ type: Input }],
|
|
7070
|
+
onDrop: [{ type: Output }],
|
|
7071
|
+
showClass: [{ type: HostBinding, args: ["class.co-simple-grid",] }],
|
|
7072
|
+
handleMouseMove: [{ type: HostListener, args: ['document:mousemove', ['$event'],] }],
|
|
7073
|
+
handleMouseUp: [{ type: HostListener, args: ['document:mouseup', ['$event'],] }]
|
|
7074
|
+
};
|
|
7075
|
+
|
|
7076
|
+
class SimpleGridModule {
|
|
7077
|
+
}
|
|
7078
|
+
SimpleGridModule.decorators = [
|
|
7079
|
+
{ type: NgModule, args: [{
|
|
7080
|
+
imports: [
|
|
7081
|
+
CommonModule,
|
|
7082
|
+
DragDropModule
|
|
7083
|
+
],
|
|
7084
|
+
declarations: [
|
|
7085
|
+
SimpleGridComponent,
|
|
7086
|
+
SimpleGridColumnDirective
|
|
7087
|
+
],
|
|
7088
|
+
exports: [
|
|
7089
|
+
SimpleGridComponent,
|
|
7090
|
+
SimpleGridColumnDirective
|
|
7091
|
+
]
|
|
7092
|
+
},] }
|
|
7093
|
+
];
|
|
7094
|
+
|
|
7095
|
+
class CarouselItem {
|
|
7096
|
+
constructor(options, index, onClick) {
|
|
7097
|
+
var _a, _b;
|
|
7098
|
+
this._options = options || {};
|
|
7099
|
+
this.index = index;
|
|
7100
|
+
const width = ((_a = this._options.tileSize) === null || _a === void 0 ? void 0 : _a.x) || 0;
|
|
7101
|
+
const height = ((_b = this._options.tileSize) === null || _b === void 0 ? void 0 : _b.y) || 0;
|
|
7102
|
+
this._element = document.createElement('div');
|
|
7103
|
+
// this._element.style.backgroundColor = this._options.tileBackgroundColor;
|
|
7104
|
+
this._element.style.width = width + "px";
|
|
7105
|
+
this._element.style.height = height + "px";
|
|
7106
|
+
this._element.addEventListener("click", () => {
|
|
7107
|
+
if (onClick) {
|
|
7108
|
+
onClick(this.index);
|
|
7109
|
+
}
|
|
7110
|
+
}, false);
|
|
7111
|
+
this.object = new CSS3DObject(this._element);
|
|
7112
|
+
const geometry = new PlaneBufferGeometry(width, height);
|
|
7113
|
+
this.mesh = new Mesh(geometry, options.tileMaterial);
|
|
7114
|
+
this.mesh.castShadow = true;
|
|
7115
|
+
}
|
|
7116
|
+
setPosition(position) {
|
|
7117
|
+
if (this.mesh) {
|
|
7118
|
+
this.mesh.position.copy(position);
|
|
7119
|
+
}
|
|
7120
|
+
if (this.object) {
|
|
7121
|
+
this.object.position.copy(position);
|
|
7122
|
+
}
|
|
7123
|
+
}
|
|
7124
|
+
setContent(content) {
|
|
7125
|
+
if (this._element) {
|
|
7126
|
+
// remove any exising tile content before setting new content
|
|
7127
|
+
while (this._element.lastElementChild) {
|
|
7128
|
+
this._element.removeChild(this._element.lastElementChild);
|
|
7129
|
+
}
|
|
7130
|
+
try {
|
|
7131
|
+
this._element.appendChild(content);
|
|
7132
|
+
}
|
|
7133
|
+
catch (err) {
|
|
7134
|
+
}
|
|
7135
|
+
}
|
|
7136
|
+
}
|
|
7137
|
+
setVisible(visible) {
|
|
7138
|
+
if (this.mesh) {
|
|
7139
|
+
this.mesh.visible = visible;
|
|
7140
|
+
}
|
|
7141
|
+
if (this.object) {
|
|
7142
|
+
this.object.visible = visible;
|
|
7143
|
+
}
|
|
7144
|
+
}
|
|
7145
|
+
}
|
|
7146
|
+
|
|
7147
|
+
class Carousel3dComponent {
|
|
7148
|
+
constructor() {
|
|
7149
|
+
this.cameraHeight = 50;
|
|
7150
|
+
this.shadow = false;
|
|
7151
|
+
this.selectedIndex = 0;
|
|
7152
|
+
this.indexSelected = new EventEmitter();
|
|
7153
|
+
this._cameraZoom = 0;
|
|
7154
|
+
this._backgroundColor = 0xffffff;
|
|
7155
|
+
this._ambientLight = true;
|
|
7156
|
+
this._tileSize = new Vector2();
|
|
7157
|
+
this._tileMargin = 20;
|
|
7158
|
+
this._targetPositions = [];
|
|
7159
|
+
this._tileElements = [];
|
|
7160
|
+
this._tileOffset = 0;
|
|
7161
|
+
this._tiles3D = [];
|
|
7162
|
+
this._planeColor = 0xffffff;
|
|
7163
|
+
this._planeHeight = -46;
|
|
7164
|
+
this._spotLightPosition = new Vector3(0, 250, -200);
|
|
7165
|
+
this._fullCircle = false;
|
|
7166
|
+
this._initialized = false;
|
|
7167
|
+
this._elementsCreated = false;
|
|
7168
|
+
this.canNavigateLeft = false;
|
|
7169
|
+
this.canNavigateRight = false;
|
|
7170
|
+
}
|
|
7171
|
+
set children(children) {
|
|
7172
|
+
this._elementsCreated = false;
|
|
7173
|
+
this._tileElements = children.toArray();
|
|
7174
|
+
this._buildCarousel();
|
|
7175
|
+
}
|
|
7176
|
+
showClass() {
|
|
7177
|
+
return true;
|
|
7178
|
+
}
|
|
7179
|
+
ngAfterViewInit() {
|
|
7180
|
+
this._buildCarousel();
|
|
7181
|
+
}
|
|
7182
|
+
ngOnDestroy() {
|
|
7183
|
+
this.canvasContainer = undefined;
|
|
7184
|
+
this.carouselWrapper = undefined;
|
|
7185
|
+
this._clearScenes();
|
|
7186
|
+
}
|
|
7187
|
+
handleButtonLeftClick() {
|
|
7188
|
+
this._tileOffset -= 1;
|
|
7189
|
+
this._rotate(400);
|
|
7190
|
+
}
|
|
7191
|
+
handleButtonRightClick() {
|
|
7192
|
+
this._tileOffset += 1;
|
|
7193
|
+
this._rotate(400);
|
|
7194
|
+
}
|
|
7195
|
+
_buildCarousel() {
|
|
7196
|
+
if (!this._initialized) {
|
|
7197
|
+
this._init();
|
|
7198
|
+
}
|
|
7199
|
+
if (this._initialized && !this._elementsCreated) {
|
|
7200
|
+
this._createTiles();
|
|
7201
|
+
}
|
|
7202
|
+
this._checkNavigationButtons();
|
|
7203
|
+
}
|
|
7204
|
+
_init() {
|
|
7205
|
+
if (!this.canvasContainer || !this.canvasContainer.nativeElement) {
|
|
7206
|
+
return;
|
|
7207
|
+
}
|
|
7208
|
+
this._initCamera();
|
|
7209
|
+
this._initScene();
|
|
7210
|
+
this._initRenderer();
|
|
7211
|
+
if (this.shadow) {
|
|
7212
|
+
const geometry = new PlaneGeometry(10000, 10000);
|
|
7213
|
+
const material = new MeshPhongMaterial({ color: this._planeColor, shininess: 100 });
|
|
7214
|
+
const plane = new Mesh(geometry, material);
|
|
7215
|
+
plane.receiveShadow = true;
|
|
7216
|
+
plane.rotation.x = -Math.PI / 2;
|
|
7217
|
+
plane.position.y = this._planeHeight;
|
|
7218
|
+
this._scene.add(plane);
|
|
7219
|
+
const spotLight = new SpotLight(0xffffff, 0.5);
|
|
7220
|
+
spotLight.position.copy(this._spotLightPosition);
|
|
7221
|
+
spotLight.castShadow = true;
|
|
7222
|
+
spotLight.shadow.mapSize.width = 512;
|
|
7223
|
+
spotLight.shadow.mapSize.height = 512;
|
|
7224
|
+
spotLight.shadow.camera.near = 50;
|
|
7225
|
+
spotLight.shadow.camera.far = 1200;
|
|
7226
|
+
spotLight.shadow.camera.fov = 30;
|
|
7227
|
+
spotLight.penumbra = 1;
|
|
7228
|
+
this._scene.add(spotLight);
|
|
7229
|
+
}
|
|
7230
|
+
this.carouselWrapper.nativeElement.appendChild(this._rendererCss.domElement);
|
|
7231
|
+
this.canvasContainer.nativeElement.appendChild(this.carouselWrapper.nativeElement);
|
|
7232
|
+
this.canvasContainer.nativeElement.appendChild(this._renderer.domElement);
|
|
7233
|
+
this._render();
|
|
7234
|
+
this._animate();
|
|
7235
|
+
window.addEventListener("resize", () => {
|
|
7236
|
+
this._resizeCanvasToDisplaySize();
|
|
7237
|
+
}, false);
|
|
7238
|
+
this._initialized = true;
|
|
7239
|
+
}
|
|
7240
|
+
_initCamera() {
|
|
7241
|
+
this._camera = new PerspectiveCamera(50, this.canvasContainer.nativeElement.clientWidth / this.canvasContainer.nativeElement.clientHeight, 1, 10000);
|
|
7242
|
+
this._camera.position.z = 600 - this._cameraZoom;
|
|
7243
|
+
this._camera.position.y = this.cameraHeight;
|
|
7244
|
+
this._camera.lookAt(new Vector3());
|
|
7245
|
+
}
|
|
7246
|
+
_initScene() {
|
|
7247
|
+
this._sceneCss = new Scene();
|
|
7248
|
+
this._scene = new Scene();
|
|
7249
|
+
this._scene.background = new Color(this._backgroundColor);
|
|
7250
|
+
if (this._ambientLight) {
|
|
7251
|
+
const light = new AmbientLight(0xaaaaaa); // soft white light
|
|
7252
|
+
this._scene.add(light);
|
|
7253
|
+
this._scene.fog = new Fog(this._backgroundColor, 70, 2500);
|
|
7254
|
+
}
|
|
7255
|
+
}
|
|
7256
|
+
_initRenderer() {
|
|
7257
|
+
this._rendererCss = new CSS3DRenderer();
|
|
7258
|
+
this._rendererCss.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
|
|
7259
|
+
this._rendererCss.domElement.style.position = "absolute";
|
|
7260
|
+
this._renderer = new WebGLRenderer({ antialias: true });
|
|
7261
|
+
this._renderer.setPixelRatio(window.devicePixelRatio);
|
|
7262
|
+
this._renderer.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
|
|
7263
|
+
this._renderer.shadowMap.enabled = true;
|
|
7264
|
+
}
|
|
7265
|
+
_disposeObject(obj) {
|
|
7266
|
+
if (obj instanceof Mesh) {
|
|
7267
|
+
if (obj.geometry) {
|
|
7268
|
+
obj.geometry.dispose();
|
|
7269
|
+
}
|
|
7270
|
+
if (obj.material) {
|
|
7271
|
+
Array.isArray(obj.material) ? obj.material.map(m => m.dispose()) : obj.material.dispose();
|
|
7272
|
+
}
|
|
7273
|
+
obj = undefined;
|
|
7274
|
+
}
|
|
7275
|
+
else {
|
|
7276
|
+
obj.element = undefined;
|
|
7277
|
+
obj = undefined;
|
|
7278
|
+
}
|
|
7279
|
+
}
|
|
7280
|
+
_clearScenes() {
|
|
7281
|
+
const meshes = this._tiles3D.map(t => t.mesh);
|
|
7282
|
+
const cssObjs = this._tiles3D.map(t => t.object);
|
|
7283
|
+
this._scene.remove(...meshes);
|
|
7284
|
+
meshes.map(m => this._disposeObject(m));
|
|
7285
|
+
meshes.length = 0;
|
|
7286
|
+
this._sceneCss.remove(...cssObjs);
|
|
7287
|
+
cssObjs.map(o => this._disposeObject(o));
|
|
7288
|
+
cssObjs.length = 0;
|
|
7289
|
+
this._tiles3D.length = 0;
|
|
7290
|
+
this._targetPositions.length = 0;
|
|
7291
|
+
}
|
|
7292
|
+
_createTiles() {
|
|
7293
|
+
this._clearScenes();
|
|
7294
|
+
this._tileSize.x = this.tileWidth;
|
|
7295
|
+
this._tileSize.y = this.tileHeight;
|
|
7296
|
+
const tileWidth = this._tileSize.x + this._tileMargin;
|
|
7297
|
+
const numItems = Math.max(this._tileElements.length, 20);
|
|
7298
|
+
this._fullCircle = this._tileElements.length >= 20;
|
|
7299
|
+
let angleTileDeg = 360 / numItems;
|
|
7300
|
+
const circumference = numItems * tileWidth;
|
|
7301
|
+
const radius = circumference / (Math.PI * 2);
|
|
7302
|
+
const y = this.shadow ? 75 : 45;
|
|
7303
|
+
const len = numItems;
|
|
7304
|
+
let angleDeg = 90;
|
|
7305
|
+
const position = new Vector3();
|
|
7306
|
+
for (var i = 0; i < len; i++) {
|
|
7307
|
+
const angle = angleDeg * (Math.PI / 180); // Radians
|
|
7308
|
+
const x = radius * Math.cos(angle);
|
|
7309
|
+
const z = -radius + radius * Math.sin(angle);
|
|
7310
|
+
position.set(x, y, z);
|
|
7311
|
+
this._targetPositions.push(position.clone());
|
|
7312
|
+
if (i < this._tileElements.length) {
|
|
7313
|
+
const tile = new CarouselItem({ tileSize: this._tileSize }, i, (idx) => this._rotateTo(idx));
|
|
7314
|
+
tile.setPosition(position);
|
|
7315
|
+
tile.setContent(this._tileElements[i].nativeElement);
|
|
7316
|
+
this._scene.add(tile.mesh);
|
|
7317
|
+
this._sceneCss.add(tile.object);
|
|
7318
|
+
this._tiles3D.push(tile);
|
|
7319
|
+
}
|
|
7320
|
+
angleDeg = angleDeg - angleTileDeg; // CW instead of CCW
|
|
7321
|
+
}
|
|
7322
|
+
this._adjustCameraZoom();
|
|
7323
|
+
this._tileOffset = this.selectedIndex;
|
|
7324
|
+
this._rotate(0);
|
|
7325
|
+
this._render();
|
|
7326
|
+
}
|
|
7327
|
+
_adjustCameraZoom() {
|
|
7328
|
+
if (this._tiles3D.length === 0) {
|
|
7329
|
+
return;
|
|
7330
|
+
}
|
|
7331
|
+
const object = this._tiles3D[0].mesh;
|
|
7332
|
+
// offset = offset || 1.15;
|
|
7333
|
+
// get bounding box of object - this will be used to setup controls and camera
|
|
7334
|
+
const boundingBox = new Box3();
|
|
7335
|
+
boundingBox.setFromObject(object);
|
|
7336
|
+
const center = new Vector3();
|
|
7337
|
+
boundingBox.getCenter(center);
|
|
7338
|
+
const size = new Vector3();
|
|
7339
|
+
boundingBox.getSize(size);
|
|
7340
|
+
// get the max side of the bounding box (fits to width OR height as needed )
|
|
7341
|
+
const maxDim = Math.max(size.x, size.y, size.z);
|
|
7342
|
+
const fov = this._camera.fov * (Math.PI / 180);
|
|
7343
|
+
// let cameraZ = Math.abs(maxDim / 4 * Math.tan(fov * 200));
|
|
7344
|
+
let cameraZ = Math.abs((maxDim / 2) / Math.tan(fov / 2));
|
|
7345
|
+
// cameraZ *= offset; // zoom out a little so that objects don't fill the screen
|
|
7346
|
+
this._camera.position.z = cameraZ;
|
|
7347
|
+
this._camera.lookAt(center);
|
|
7348
|
+
}
|
|
7349
|
+
_checkNavigationButtons() {
|
|
7350
|
+
const currentIdx = this._getSelectedIndex();
|
|
7351
|
+
this.canNavigateLeft = (currentIdx > 0) || this._fullCircle;
|
|
7352
|
+
this.canNavigateRight = (currentIdx < this._tileElements.length - 1) || this._fullCircle;
|
|
7353
|
+
}
|
|
7354
|
+
_animate() {
|
|
7355
|
+
TWEEN.update();
|
|
7356
|
+
setTimeout(() => {
|
|
7357
|
+
this._renderer.setAnimationLoop(() => this._animate());
|
|
7358
|
+
}, 200);
|
|
7359
|
+
}
|
|
7360
|
+
_getSelectedIndex() {
|
|
7361
|
+
return Math.max(0, Math.min(this.selectedIndex, this._tileElements.length - 1));
|
|
7362
|
+
}
|
|
7363
|
+
_rotate(duration) {
|
|
7364
|
+
TWEEN.removeAll();
|
|
7365
|
+
for (let i = 0; i < this._tiles3D.length; i++) {
|
|
7366
|
+
const tile = this._tiles3D[i];
|
|
7367
|
+
if (Math.abs(this._tileOffset) > this._targetPositions.length) { // full circle
|
|
7368
|
+
this._tileOffset = this._tileOffset > 0 ? 1 : -1;
|
|
7369
|
+
}
|
|
7370
|
+
let positionIdx = i - this._tileOffset;
|
|
7371
|
+
if (positionIdx > this._targetPositions.length - 1) {
|
|
7372
|
+
positionIdx = positionIdx - this._targetPositions.length;
|
|
7373
|
+
}
|
|
7374
|
+
else if (positionIdx < 0) {
|
|
7375
|
+
positionIdx = this._targetPositions.length + positionIdx;
|
|
7376
|
+
}
|
|
7377
|
+
const target = this._targetPositions[positionIdx];
|
|
7378
|
+
new TWEEN.Tween(tile.object.position)
|
|
7379
|
+
.to(target, duration)
|
|
7380
|
+
.easing(TWEEN.Easing.Quartic.Out)
|
|
7381
|
+
.start();
|
|
7382
|
+
new TWEEN.Tween(tile.mesh.position)
|
|
7383
|
+
.to(target, duration)
|
|
7384
|
+
.easing(TWEEN.Easing.Quartic.Out)
|
|
7385
|
+
.start();
|
|
7386
|
+
}
|
|
7387
|
+
new TWEEN.Tween()
|
|
7388
|
+
.to({}, duration * 2)
|
|
7389
|
+
.onUpdate(() => {
|
|
7390
|
+
this._render();
|
|
7391
|
+
})
|
|
7392
|
+
.start();
|
|
7393
|
+
this.selectedIndex = this._tileOffset;
|
|
7394
|
+
this._checkNavigationButtons();
|
|
7395
|
+
this.indexSelected.next(this._getSelectedIndex());
|
|
7396
|
+
}
|
|
7397
|
+
_rotateTo(index) {
|
|
7398
|
+
const current = this._getSelectedIndex();
|
|
7399
|
+
this._tileOffset += index - current;
|
|
7400
|
+
this._rotate(800);
|
|
7401
|
+
}
|
|
7402
|
+
_resizeCanvasToDisplaySize() {
|
|
7403
|
+
this._camera.aspect = this.canvasContainer.nativeElement.clientWidth / this.canvasContainer.nativeElement.clientHeight;
|
|
7404
|
+
this._camera.updateProjectionMatrix();
|
|
7405
|
+
this._rendererCss.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
|
|
7406
|
+
this._renderer.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
|
|
7407
|
+
this._render();
|
|
7408
|
+
}
|
|
7409
|
+
_render() {
|
|
7410
|
+
this._rendererCss.render(this._sceneCss, this._camera);
|
|
7411
|
+
this._renderer.render(this._scene, this._camera);
|
|
7412
|
+
}
|
|
7413
|
+
}
|
|
7414
|
+
Carousel3dComponent.decorators = [
|
|
7415
|
+
{ type: Component, args: [{
|
|
7416
|
+
selector: "co-carousel-3d",
|
|
7417
|
+
template: `
|
|
7418
|
+
<div class="carousel-3d-canvas-wrapper" #canvasContainer>
|
|
7419
|
+
<div class="carousel-wrapper" #carouselWrapper>
|
|
7420
|
+
<div class="carousel-navigate-button left">
|
|
7421
|
+
<div class="carousel-navigate-button-wrapper" *ngIf="canNavigateLeft" (click)="handleButtonLeftClick()">
|
|
7422
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512">
|
|
7423
|
+
<path
|
|
7424
|
+
d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>
|
|
7425
|
+
</svg>
|
|
7426
|
+
</div>
|
|
7427
|
+
</div>
|
|
7428
|
+
<div class="carousel-navigate-button right">
|
|
7429
|
+
<div class="carousel-navigate-button-wrapper" *ngIf="canNavigateRight" (click)="handleButtonRightClick()">
|
|
7430
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512">
|
|
7431
|
+
<path
|
|
7432
|
+
d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>
|
|
7433
|
+
</svg>
|
|
7434
|
+
</div>
|
|
7435
|
+
</div>
|
|
7436
|
+
</div>
|
|
7437
|
+
</div>
|
|
7438
|
+
`,
|
|
7439
|
+
encapsulation: ViewEncapsulation.None
|
|
7440
|
+
},] }
|
|
7441
|
+
];
|
|
7442
|
+
Carousel3dComponent.propDecorators = {
|
|
7443
|
+
canvasContainer: [{ type: ViewChild, args: ["canvasContainer", { read: ElementRef },] }],
|
|
7444
|
+
carouselWrapper: [{ type: ViewChild, args: ["carouselWrapper", { read: ElementRef },] }],
|
|
7445
|
+
children: [{ type: ContentChildren, args: ["carouselItem", { read: ElementRef, descendants: true },] }],
|
|
7446
|
+
tileWidth: [{ type: Input }],
|
|
7447
|
+
tileHeight: [{ type: Input }],
|
|
7448
|
+
cameraHeight: [{ type: Input }],
|
|
7449
|
+
shadow: [{ type: Input }],
|
|
7450
|
+
selectedIndex: [{ type: Input }],
|
|
7451
|
+
indexSelected: [{ type: Output }],
|
|
7452
|
+
showClass: [{ type: HostBinding, args: ["class.co-carousel-3d",] }]
|
|
7453
|
+
};
|
|
7454
|
+
|
|
7455
|
+
class Carousel3dModule {
|
|
7456
|
+
}
|
|
7457
|
+
Carousel3dModule.decorators = [
|
|
7458
|
+
{ type: NgModule, args: [{
|
|
7459
|
+
imports: [
|
|
7460
|
+
CommonModule
|
|
7461
|
+
],
|
|
7462
|
+
declarations: [
|
|
7463
|
+
Carousel3dComponent
|
|
7464
|
+
],
|
|
7465
|
+
exports: [
|
|
7466
|
+
Carousel3dComponent
|
|
7467
|
+
]
|
|
7468
|
+
},] }
|
|
7469
|
+
];
|
|
7470
|
+
|
|
6632
7471
|
/*
|
|
6633
7472
|
* Public API Surface of corecomponents
|
|
6634
7473
|
*/
|
|
@@ -6637,5 +7476,5 @@ CoRichTextEditorModule.decorators = [
|
|
|
6637
7476
|
* Generated bundle index. Do not edit.
|
|
6638
7477
|
*/
|
|
6639
7478
|
|
|
6640
|
-
export { ArticleTileComponent, ArticleTileModule, ButtonComponent, ButtonDropDownComponent, ButtonDropDownModule, ButtonModule, COMPONENT_INTERFACE_NAME, CoDialogComponent, CoDialogModule, CoDialogPromptComponent, CoDialogPromptModule, CoGridComponent, CoGridModule, CoKanbanComponent, CoKanbanModule, CoPivotComponent, CoPivotModule, CoRichTextEditorComponent, CoRichTextEditorModule, CoScheduleComponent, CoScheduleModule, CoSidebarComponent, CoSidebarModule, CoToggleComponent, CoToggleModule, CoreComponentsIcon, DropDownListComponent, DropDownModule, FormComponent, FormModule, IconCacheService, IconComponent, IconModule, ImageComponent, ImageModule, InputCheckboxComponent, InputCheckboxModule, InputCheckboxMultiSelectComponent, InputCheckboxMultiSelectModule, InputComboBoxComponent, InputComboBoxModule, InputDatePickerComponent, InputDatePickerModule, InputNumberPickerComponent, InputNumberPickerModule, InputRadioButtonComponent, InputRadioButtonModule, InputTextComponent, InputTextModule, LevelIndicatorComponent, LevelIndicatorModule, MultiSelectListComponent, MultiSelectListModule, PopupButtonsComponent, PopupMessageDisplayComponent, PopupModule, PopupWindowShellComponent, PromptService, TextInputPopupComponent, TileComponent, TileModule, RippleModule as ɵa, MD_RIPPLE_GLOBAL_OPTIONS as ɵb, CoRippleDirective as ɵc, CoViewportRulerService as ɵd, CoScrollDispatcherService as ɵe, CoScrollableDirective as ɵf, StopClickModule as ɵg, StopClickDirective as ɵh, PriceDisplayPipeModule as ɵi, PriceDisplayPipe as ɵj, InputBoolean as ɵk, BaseModule as ɵl, FormInputUserModelChangeListenerService as ɵm, NgZoneWrapperService as ɵn, BaseInputComponent as ɵo,
|
|
7479
|
+
export { ArticleTileComponent, ArticleTileModule, ButtonComponent, ButtonDropDownComponent, ButtonDropDownModule, ButtonModule, COMPONENT_INTERFACE_NAME, Carousel3dComponent, Carousel3dModule, CoDialogComponent, CoDialogModule, CoDialogPromptComponent, CoDialogPromptModule, CoGridComponent, CoGridModule, CoKanbanComponent, CoKanbanModule, CoPivotComponent, CoPivotModule, CoRichTextEditorComponent, CoRichTextEditorModule, CoScheduleComponent, CoScheduleModule, CoSidebarComponent, CoSidebarModule, CoToggleComponent, CoToggleModule, CollapsibleComponent, CollapsibleModule, ColumnAlign, CoreComponentsIcon, DropDownListComponent, DropDownModule, FormComponent, FormMasterService, FormModule, IconCacheService, IconComponent, IconModule, ImageComponent, ImageModule, InputCheckboxComponent, InputCheckboxModule, InputCheckboxMultiSelectComponent, InputCheckboxMultiSelectModule, InputComboBoxComponent, InputComboBoxModule, InputDatePickerComponent, InputDatePickerModule, InputListboxComponent, InputListboxModule, InputNumberPickerComponent, InputNumberPickerModule, InputRadioButtonComponent, InputRadioButtonModule, InputTextComponent, InputTextModule, InputTextareaComponent, InputTextareaModule, LevelIndicatorComponent, LevelIndicatorModule, MultiSelectListComponent, MultiSelectListModule, PopupButtonsComponent, PopupMessageDisplayComponent, PopupModule, PopupWindowShellComponent, PromptService, SimpleGridColumnDirective, SimpleGridComponent, SimpleGridModule, TextInputPopupComponent, TileComponent, TileModule, RippleModule as ɵa, MD_RIPPLE_GLOBAL_OPTIONS as ɵb, CoRippleDirective as ɵc, CoViewportRulerService as ɵd, CoScrollDispatcherService as ɵe, CoScrollableDirective as ɵf, StopClickModule as ɵg, StopClickDirective as ɵh, PriceDisplayPipeModule as ɵi, PriceDisplayPipe as ɵj, InputBoolean as ɵk, BaseModule as ɵl, FormInputUserModelChangeListenerService as ɵm, NgZoneWrapperService as ɵn, BaseInputComponent as ɵo, BaseSelectionGridComponent as ɵp, BaseInlineEditGridComponent as ɵq, BaseToolbarGridComponent as ɵr, BaseGridComponent as ɵs, AppendPipeModule as ɵt, AppendPipe as ɵu, ValidationErrorModule as ɵv, ValidationErrorComponent as ɵw, PopupShowerService as ɵx };
|
|
6641
7480
|
//# sourceMappingURL=colijnit-corecomponents_v12.js.map
|