@ngil/form-inputs 0.2.0 → 5.0.0
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/fesm2022/ngil-form-inputs.mjs +82 -227
- package/fesm2022/ngil-form-inputs.mjs.map +1 -1
- package/package.json +6 -8
- package/types/ngil-form-inputs.d.ts +166 -0
- package/esm2022/index.mjs +0 -11
- package/esm2022/lib/components/input/input.component.mjs +0 -55
- package/esm2022/lib/components/overlay/overlay-toggle.directive.mjs +0 -57
- package/esm2022/lib/components/overlay/overlay.component.mjs +0 -106
- package/esm2022/lib/components/select/select.component.mjs +0 -69
- package/esm2022/lib/components/select-options/select-options.component.mjs +0 -58
- package/esm2022/lib/components/textarea/textarea.component.mjs +0 -45
- package/esm2022/lib/components/time-picker/time-picker.component.mjs +0 -65
- package/esm2022/lib/components/time-picker/time-picker.directive.mjs +0 -114
- package/esm2022/lib/components/time-picker/time-picker.model.mjs +0 -2
- package/esm2022/lib/components/time-picker-overlay/picker-toggle.mjs +0 -24
- package/esm2022/lib/components/time-picker-overlay/time-picker-overlay.component.mjs +0 -114
- package/esm2022/lib/directives/number-rotation.directive.mjs +0 -102
- package/esm2022/lib/ngil-ui-form.module.mjs +0 -68
- package/esm2022/ngil-form-inputs.mjs +0 -5
- package/index.d.ts +0 -10
- package/lib/components/input/input.component.d.ts +0 -14
- package/lib/components/overlay/overlay-toggle.directive.d.ts +0 -16
- package/lib/components/overlay/overlay.component.d.ts +0 -22
- package/lib/components/select/select.component.d.ts +0 -16
- package/lib/components/select-options/select-options.component.d.ts +0 -17
- package/lib/components/textarea/textarea.component.d.ts +0 -12
- package/lib/components/time-picker/time-picker.component.d.ts +0 -19
- package/lib/components/time-picker/time-picker.directive.d.ts +0 -28
- package/lib/components/time-picker/time-picker.model.d.ts +0 -5
- package/lib/components/time-picker-overlay/picker-toggle.d.ts +0 -8
- package/lib/components/time-picker-overlay/time-picker-overlay.component.d.ts +0 -26
- package/lib/directives/number-rotation.directive.d.ts +0 -26
- package/lib/ngil-ui-form.module.d.ts +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngil-form-inputs.mjs","sources":["../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/overlay/overlay.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/overlay/overlay.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/overlay/overlay-toggle.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/directives/number-rotation.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/time-picker-overlay.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/ngil-ui-form.module.ts","../../../../../../libs/ngil/ui/form-inputs/src/ngil-form-inputs.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngil-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilInputComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {\r\n @Input() type = 'text';\r\n @Output() changed = new EventEmitter<string | number>();\r\n\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string | number): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string | number): void {\r\n if (this.type === 'number') {\r\n value = +value;\r\n }\r\n this.changed.emit(value);\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"model$ | async as model\">\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n</ng-container>\r\n","import {\r\n FlexibleConnectedPositionStrategy,\r\n GlobalPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { DomPortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-overlay',\r\n templateUrl: './overlay.component.html',\r\n styleUrls: ['./overlay.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class NgilOverlayComponent implements OnDestroy {\r\n @ViewChild('contentWrapper') el?: ElementRef;\r\n @Input() overwriteConfig: Partial<OverlayConfig> = {};\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n private readonly maxHeight = 500;\r\n private overlayRef?: OverlayRef;\r\n\r\n origin?: ElementRef<HTMLInputElement>;\r\n isOpened = false;\r\n\r\n constructor(private readonly overlay: Overlay) {}\r\n\r\n open(): void {\r\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\r\n\r\n const portal = new DomPortal(this.el);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.close();\r\n });\r\n\r\n this.isOpened = true;\r\n }\r\n\r\n private getOverlayConfig(): OverlayConfig {\r\n return {\r\n positionStrategy: this.getStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: this.origin ? 'cdk-overlay-transparent-backdrop' : 'cdk-overlay-dark-backdrop',\r\n panelClass: ['ngil-overlay-panel'],\r\n maxHeight: this.maxHeight,\r\n minWidth: this.origin?.nativeElement.offsetWidth,\r\n ...this.overwriteConfig\r\n };\r\n }\r\n\r\n private getStrategy(): GlobalPositionStrategy | FlexibleConnectedPositionStrategy {\r\n if (!this.origin) {\r\n return this.overlay.position().global().centerHorizontally().centerVertically();\r\n }\r\n\r\n const primaryX = 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = 'top';\r\n const secondaryY = 'bottom';\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY\r\n }\r\n ]);\r\n }\r\n\r\n close(): void {\r\n this.destroy$.next();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = undefined;\r\n this.isOpened = false;\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpened) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<div class=\"ngil-overlay-content\" #contentWrapper>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-select-options',\r\n templateUrl: './select-options.component.html',\r\n styleUrls: ['./select-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgilSelectOptionsComponent<T> implements OnDestroy {\r\n @Input() selectedItems: T | T[] | null = null;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n @Input() multiple = false;\r\n @Input() display = false;\r\n\r\n @Output() itemSelected = new EventEmitter<T | T[]>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n onItemSelected(item: T) {\r\n let newSelection: T | T[];\r\n\r\n if (Array.isArray(this.selectedItems)) {\r\n newSelection = this.selectedItems.includes(item)\r\n ? this.selectedItems.filter(selectedItem => selectedItem !== item)\r\n : [...this.selectedItems, item];\r\n } else if (this.multiple && this.selectedItems) {\r\n newSelection = [this.selectedItems, item];\r\n } else {\r\n newSelection = item;\r\n }\r\n\r\n this.itemSelected.emit(newSelection);\r\n }\r\n\r\n isSelected(item: T) {\r\n if (Array.isArray(this.selectedItems)) {\r\n return this.selectedItems.includes(item);\r\n }\r\n\r\n return item === this.selectedItems;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<div class=\"ngil-dropdown\" *ngIf=\"display\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n <ng-container *ngFor=\"let item of items\">\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input, OnInit } from '@angular/core';\r\nimport { NgilOverlayComponent } from './overlay.component';\r\n\r\n@Directive({\r\n selector: '[ngilOverlayToggle]',\r\n exportAs: 'ngilOverlayToggle'\r\n})\r\nexport class OverlayToggleDirective implements OnInit {\r\n @Input() set ngilOverlayToggle(overlay: NgilOverlayComponent) {\r\n this.overlay = overlay;\r\n }\r\n private overlay: NgilOverlayComponent | undefined;\r\n\r\n @Input() set isOverlayOrigin(isOrigin: boolean) {\r\n this.isOrigin = isOrigin;\r\n this.setOverlayOrigin();\r\n }\r\n private isOrigin = true;\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\r\n\r\n ngOnInit(): void {\r\n this.setOverlayOrigin();\r\n }\r\n\r\n private setOverlayOrigin(): void {\r\n if (this.isOrigin && this.overlay) {\r\n this.overlay.origin = this.elementRef;\r\n } else if (this.overlay) {\r\n this.overlay.origin = undefined;\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event']) onClick = (event: Event): void => {\r\n if (!this.overlay) {\r\n throw new Error(`The overlay is not defined. The overlay component should be provided in the directive input\r\n\r\n <my-element [ngilOverlayToggle]=\"overlay\"></my-element>\r\n <ngil-overlay #overlay>...</ngil-overlay>\r\n `);\r\n }\r\n\r\n if (!this.overlay.isOpened) {\r\n this.overlay.open();\r\n }\r\n\r\n event.stopPropagation();\r\n };\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { NgilOverlayComponent } from '../overlay/overlay.component';\r\n\r\n@Component({\r\n selector: 'ngil-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {\r\n @ViewChild(NgilOverlayComponent) overlay?: NgilOverlayComponent;\r\n @Input() multiple = false;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n\r\n value: T | T[] | null = null;\r\n\r\n get displayValue() {\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(item => (this.displayKey ? item[this.displayKey] : item)).join(',');\r\n }\r\n\r\n if (this.value && this.displayKey) {\r\n return this.value[this.displayKey];\r\n }\r\n\r\n return this.value;\r\n }\r\n\r\n writeValue(value: T): void {\r\n this.value = value;\r\n }\r\n\r\n onItemSelected(item: T | T[]) {\r\n this.value = item;\r\n\r\n if (!this.multiple) {\r\n this.overlay?.close();\r\n }\r\n\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n isArray(item: T | T[]): item is T[] {\r\n return Array.isArray(item);\r\n }\r\n}\r\n","<ng-container *ngIf=\"model$ | async as model\">\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n\r\n <ngil-overlay #overlay>\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n</ng-container>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilTextareaComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string): void {\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"model$ | async as model\">\r\n <div class=\"ngil-textarea\" [class.ngil-textarea--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-textarea__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n\r\n <div class=\"ngil-textarea__field\">\r\n <textarea\r\n class=\"ngil-textarea__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n >\r\n </textarea>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n\r\n <small class=\"ngil-textarea__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\r\nimport { NgilTimePickerOverlayComponent } from './time-picker-overlay.component';\r\n\r\n@Component({\r\n selector: 'ngil-picker-toggle',\r\n templateUrl: 'picker-toggle.html',\r\n styleUrls: ['picker-toggle.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PickerToggleComponent {\r\n @Input() picker: NgilTimePickerOverlayComponent | undefined;\r\n\r\n @HostListener('click', ['$event']) onClick = (event: Event) => {\r\n if (!this.picker?.isOpen) {\r\n this.picker?.open();\r\n }\r\n event.stopPropagation();\r\n };\r\n}\r\n","<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: 'input[ngilNumberRotation]'\r\n})\r\nexport class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() min = 0;\r\n @Input() max = 10;\r\n @Input() buttonUp?: HTMLElement;\r\n @Input() buttonDown?: HTMLElement;\r\n\r\n get length(): number {\r\n return this.max.toString().length;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n this.onKeyDownEvent(event);\r\n };\r\n\r\n @HostListener('input', ['$event'])\r\n onInput = (event: InputEvent): void => {\r\n let value = (event.target as HTMLInputElement).value;\r\n if (+value > this.max) {\r\n value = value.slice(this.length);\r\n }\r\n this.setValue(+value);\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>, private readonly ngControl: NgControl) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.value = this.elementRef.nativeElement.value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.buttonUp?.addEventListener('click', this.onUp);\r\n this.buttonDown?.addEventListener('click', this.onDown);\r\n }\r\n\r\n private onKeyDownEvent(event: KeyboardEvent): void {\r\n if (!this.isKeyValid(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.onUp();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.onDown();\r\n }\r\n }\r\n\r\n private isKeyValid(key: string): boolean {\r\n if (key.length !== 1 || !isNaN(+key)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private onUp = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value + 1);\r\n };\r\n\r\n private onDown = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value - 1);\r\n };\r\n\r\n private setValue(value: number): void {\r\n if (value < this.min) {\r\n this.setInputValue(this.max);\r\n } else if (value > this.max) {\r\n this.setInputValue(this.min);\r\n } else {\r\n this.setInputValue(value);\r\n }\r\n }\r\n\r\n private setInputValue(value: number) {\r\n this.ngControl.control?.setValue(value);\r\n this.elementRef.nativeElement.value = value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.buttonUp?.removeEventListener('click', this.onUp);\r\n this.buttonDown?.removeEventListener('click', this.onDown);\r\n }\r\n}\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: NgilTimePickerComponent,\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NgilTimePickerComponent extends AbstractInputComponent<TimePickerValue> implements AfterViewInit {\r\n private defaultValue: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n\r\n value = '';\r\n formGroup = new FormGroup({\r\n hour: new FormControl<number>(this.defaultValue.hour, { nonNullable: true }),\r\n minute: new FormControl<number>(this.defaultValue.minute, { nonNullable: true }),\r\n second: new FormControl<number>(this.defaultValue.second, { nonNullable: true })\r\n });\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n const value = this.formGroup.getRawValue();\r\n this.onChange({\r\n hour: value.hour ?? this.defaultValue.hour,\r\n minute: value.minute ?? this.defaultValue.minute,\r\n second: value.second ?? this.defaultValue.second\r\n });\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: TimePickerValue): void {\r\n if (value) {\r\n this.formGroup.setValue(\r\n {\r\n ...this.defaultValue,\r\n ...value\r\n },\r\n { emitEvent: false }\r\n );\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngil-time-picker\">\r\n <div class=\"ngil-time-picker__field\">\r\n <button #hourButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"hour\"\r\n [buttonUp]=\"hourButtonUp\"\r\n [buttonDown]=\"hourButtonDown\"\r\n [max]=\"23\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #hourButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #minuteButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"minute\"\r\n [buttonUp]=\"minuteButtonUp\"\r\n [buttonDown]=\"minuteButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #minuteButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #secondButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"second\"\r\n [buttonUp]=\"secondButtonUp\"\r\n [buttonDown]=\"secondButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #secondButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n</form>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 75 50, 25 90, 75\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 25 50, 75 90, 25\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilTimePickerComponent } from '../time-picker/time-picker.component';\r\nimport { TimePickerValue } from '../time-picker/time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker-overlay',\r\n template: ''\r\n})\r\nexport class NgilTimePickerOverlayComponent implements OnDestroy {\r\n origin?: ElementRef<HTMLInputElement>;\r\n valueChanges$ = new Subject<TimePickerValue>();\r\n isOpen = false;\r\n\r\n protected value: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n protected readonly destroy$ = new Subject<void>();\r\n protected contentComponent = NgilTimePickerComponent;\r\n protected componentInstance: undefined | NgilTimePickerComponent;\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(private readonly overlay: Overlay) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n open() {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.getStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n const portal = new ComponentPortal(this.contentComponent);\r\n const componentRef = this.overlayRef.attach(portal);\r\n this.componentInstance = componentRef.instance;\r\n this.componentInstance.writeValue(this.value);\r\n\r\n this.componentInstance.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n const value = this.componentInstance?.formGroup.getRawValue();\r\n this.valueChanges$.next({\r\n hour: value?.hour ?? 0,\r\n minute: value?.minute ?? 0,\r\n second: value?.second ?? 0\r\n });\r\n });\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.close();\r\n });\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n close(): void {\r\n this.destroyOverlay();\r\n }\r\n\r\n private destroyOverlay() {\r\n this.destroy$.next();\r\n this.componentInstance?.ngOnDestroy();\r\n this.overlayRef?.dispose();\r\n this.componentInstance = undefined;\r\n this.overlayRef = undefined;\r\n this.isOpen = false;\r\n }\r\n\r\n setValue(value: TimePickerValue): void {\r\n this.value = value;\r\n\r\n if (this.componentInstance) {\r\n this.componentInstance.writeValue(this.value);\r\n }\r\n }\r\n\r\n private getStrategy() {\r\n const primaryX = 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = 'top';\r\n const secondaryY = 'bottom';\r\n\r\n if (!this.origin) {\r\n return undefined;\r\n }\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY\r\n }\r\n ]);\r\n\r\n return strategy;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output\r\n} from '@angular/core';\r\nimport { AbstractControl, NgControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilInputComponent } from '../input/input.component';\r\nimport { NgilTimePickerOverlayComponent } from '../time-picker-overlay/time-picker-overlay.component';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Directive({\r\n selector: '[ngilTimePicker]'\r\n})\r\nexport class TimePickerDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() picker?: NgilTimePickerOverlayComponent;\r\n\r\n @Output() changed = new EventEmitter<TimePickerValue>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n if (isNaN(+event.key) && event.key !== ':' && event.key.length === 1) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n @HostListener('input', ['$event']) onInput = (event: InputEvent): void => {\r\n const value = this.getTimePickerValue((event.target as HTMLInputElement).value);\r\n this.picker?.setValue({\r\n hour: +value.hour,\r\n minute: +value.minute || 0,\r\n second: +value.second || 0\r\n });\r\n };\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLInputElement>,\r\n @Optional() private readonly inputComponent?: NgilInputComponent,\r\n @Optional() private readonly ngControl?: NgControl\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.ngControl?.control?.setValidators([this.timeValidator()]);\r\n }\r\n\r\n private timeValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = this.getTimePickerValue(control.value);\r\n if (this.itemHasError(value.hour, 23)) {\r\n return {\r\n invalidHour: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.minute, 59)) {\r\n return {\r\n invalidMinute: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.second, 59)) {\r\n return {\r\n invalidSecond: true\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n private itemHasError(value: string, max: number, min = 0) {\r\n if (value && (value.length > 2 || +value > max || +value < min)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getTimePickerValue(value: string | null) {\r\n const split = value?.split(':');\r\n\r\n return {\r\n hour: split ? split[0] : '00',\r\n minute: split ? split[1] : '00',\r\n second: split ? split[2] : '00'\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.picker) {\r\n this.picker.origin = this.elementRef;\r\n this.picker.valueChanges$.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.setInputText(value);\r\n this.changed.emit(value);\r\n });\r\n }\r\n }\r\n\r\n private setInputText(value: TimePickerValue): void {\r\n const text = [this.getItemText(value.hour), this.getItemText(value.minute), this.getItemText(value.second)].join(\r\n ':'\r\n );\r\n this.inputComponent?.control.setValue(text);\r\n this.elementRef.nativeElement.value = text;\r\n this.ngControl?.control?.setValue(text);\r\n }\r\n\r\n private getItemText(value: number) {\r\n return value.toString().padStart(2, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgilInputComponent } from './components/input/input.component';\r\nimport { OverlayToggleDirective } from './components/overlay/overlay-toggle.directive';\r\nimport { NgilOverlayComponent } from './components/overlay/overlay.component';\r\nimport { NgilSelectOptionsComponent } from './components/select-options/select-options.component';\r\nimport { NgilSelectComponent } from './components/select/select.component';\r\nimport { NgilTextareaComponent } from './components/textarea/textarea.component';\r\nimport { PickerToggleComponent } from './components/time-picker-overlay/picker-toggle';\r\nimport { NgilTimePickerOverlayComponent } from './components/time-picker-overlay/time-picker-overlay.component';\r\nimport { NgilTimePickerComponent } from './components/time-picker/time-picker.component';\r\nimport { TimePickerDirective } from './components/time-picker/time-picker.directive';\r\nimport { NumberRotationDirective } from './directives/number-rotation.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, OverlayModule],\r\n declarations: [\r\n NgilInputComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilSelectOptionsComponent,\r\n NgilOverlayComponent,\r\n OverlayToggleDirective\r\n ],\r\n exports: [\r\n NgilInputComponent,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective\r\n ]\r\n})\r\nexport class NgilUiFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i1","i2.NgilSelectOptionsComponent","i3.NgilOverlayComponent","i4.OverlayToggleDirective","i3.NumberRotationDirective","i1.NgilInputComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngil-form-inputs.mjs","sources":["../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/input/input.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select-options/select-options.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/select/select.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/textarea/textarea.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/picker-toggle.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/directives/number-rotation.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.component.html","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker-overlay/time-picker-overlay.component.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/components/time-picker/time-picker.directive.ts","../../../../../../libs/ngil/ui/form-inputs/src/lib/ngil-ui-form.module.ts","../../../../../../libs/ngil/ui/form-inputs/src/ngil-form-inputs.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngil-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilInputComponent),\r\n multi: true\r\n }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {\r\n @Input() type = 'text';\r\n @Output() changed = new EventEmitter<string | number>();\r\n\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string | number): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string | number): void {\r\n if (this.type === 'number') {\r\n value = +value;\r\n }\r\n this.changed.emit(value);\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n }\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-select-options',\r\n templateUrl: './select-options.component.html',\r\n styleUrls: ['./select-options.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class NgilSelectOptionsComponent<T> implements OnDestroy {\r\n @Input() selectedItems: T | T[] | null = null;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n @Input() multiple = false;\r\n @Input() display = false;\r\n\r\n @Output() itemSelected = new EventEmitter<T | T[]>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n onItemSelected(item: T) {\r\n let newSelection: T | T[];\r\n\r\n if (Array.isArray(this.selectedItems)) {\r\n newSelection = this.selectedItems.includes(item)\r\n ? this.selectedItems.filter(selectedItem => selectedItem !== item)\r\n : [...this.selectedItems, item];\r\n } else if (this.multiple && this.selectedItems) {\r\n newSelection = [this.selectedItems, item];\r\n } else {\r\n newSelection = item;\r\n }\r\n\r\n this.itemSelected.emit(newSelection);\r\n }\r\n\r\n isSelected(item: T) {\r\n if (Array.isArray(this.selectedItems)) {\r\n return this.selectedItems.includes(item);\r\n }\r\n\r\n return item === this.selectedItems;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","@if (display) {\r\n <div class=\"ngil-dropdown\" role=\"listbox\" data-test=\"ngil-select-options-list\">\r\n @for (item of items; track item) {\r\n <div\r\n role=\"option\"\r\n class=\"ngil-dropdown__item\"\r\n data-test=\"ngil-select-option\"\r\n [attr.value]=\"item\"\r\n [attr.displayValue]=\"displayKey ? item[displayKey] : item\"\r\n (click)=\"onItemSelected(item)\"\r\n [class.ngil-dropdown__item--selected]=\"isSelected(item)\"\r\n >\r\n {{ displayKey ? item[displayKey] : item }}\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n Optional,\r\n ViewChild,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgilOverlayComponent } from '@ngil/components';\r\nimport { AbstractInputComponent, NgilErrorMessagesService } from '@ngil/form-cva';\r\n\r\n@Component({\r\n selector: 'ngil-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilSelectComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {\r\n @ViewChild(NgilOverlayComponent) overlay?: NgilOverlayComponent;\r\n @Input() multiple = false;\r\n @Input() items: T[] = [];\r\n @Input() displayKey?: keyof T;\r\n\r\n value: T | T[] | null = null;\r\n\r\n get displayValue() {\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(item => (this.displayKey ? item[this.displayKey] : item)).join(',');\r\n }\r\n\r\n if (this.value && this.displayKey) {\r\n return this.value[this.displayKey];\r\n }\r\n\r\n return this.value;\r\n }\r\n\r\n constructor(\r\n private readonly cdr: ChangeDetectorRef,\r\n errorMessagesService: NgilErrorMessagesService,\r\n @Optional() controlContainer?: ControlContainer\r\n ) {\r\n super(errorMessagesService, controlContainer);\r\n }\r\n\r\n writeValue(value: T): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onItemSelected(item: T | T[]) {\r\n this.value = item;\r\n\r\n if (!this.multiple) {\r\n this.overlay?.close();\r\n }\r\n\r\n if (this.onChange) {\r\n this.onChange(this.value);\r\n }\r\n }\r\n\r\n isArray(item: T | T[]): item is T[] {\r\n return Array.isArray(item);\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-select\" [class.ngil-select--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-select__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-select__field\">\r\n <div class=\"ngil-select__field-content\">\r\n <input\r\n class=\"ngil-select__input\"\r\n [value]=\"displayValue\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"$event.preventDefault(); overlay.toggle()\"\r\n [id]=\"formControlName\"\r\n (blur)=\"onBlur()\"\r\n [ngilOverlayToggle]=\"overlay\"\r\n />\r\n </div>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-select__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n <ngil-overlay #overlay [overwriteConfig]=\"{ maxHeight: 500 }\">\r\n <ngil-select-options\r\n ngilOverlay\r\n class=\"ngil-select__dropdown\"\r\n data-test=\"ngil-select-options\"\r\n [display]=\"overlay.isOpened\"\r\n [multiple]=\"multiple\"\r\n [items]=\"items\"\r\n [displayKey]=\"displayKey\"\r\n [selectedItems]=\"value\"\r\n (itemSelected)=\"onItemSelected($event)\"\r\n ></ngil-select-options>\r\n </ngil-overlay>\r\n }\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\r\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ngil-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgilTextareaComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {\r\n control = new FormControl();\r\n\r\n ngAfterViewInit() {\r\n this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.onChangeInput(value);\r\n });\r\n }\r\n\r\n writeValue(value: string): void {\r\n this.control.setValue(value);\r\n }\r\n\r\n onChangeInput(value: string): void {\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n}\r\n","@if (model$ | async; as model) {\r\n <div class=\"ngil-textarea\" [class.ngil-textarea--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-textarea__label\" [for]=\"formControlName\">{{ label }}{{ required ? '*' : '' }}</label>\r\n <div class=\"ngil-textarea__field\">\r\n <textarea\r\n class=\"ngil-textarea__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n >\r\n </textarea>\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <small class=\"ngil-textarea__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n}\r\n","import { ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\r\nimport { NgilTimePickerOverlayComponent } from './time-picker-overlay.component';\r\n\r\n@Component({\r\n selector: 'ngil-picker-toggle',\r\n templateUrl: 'picker-toggle.html',\r\n styleUrls: ['picker-toggle.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class PickerToggleComponent {\r\n @Input() picker: NgilTimePickerOverlayComponent | undefined;\r\n\r\n @HostListener('click', ['$event']) onClick = (event: Event) => {\r\n if (!this.picker?.isOpen) {\r\n this.picker?.open();\r\n }\r\n event.stopPropagation();\r\n };\r\n}\r\n","<button class=\"toggle-button\" type=\"button\">\r\n <svg\r\n class=\"mat-datepicker-toggle-default-icon\"\r\n viewBox=\"0 0 24 24\"\r\n width=\"24px\"\r\n height=\"24px\"\r\n fill=\"currentColor\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"\r\n />\r\n </svg>\r\n</button>\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: 'input[ngilNumberRotation]',\r\n standalone: false\r\n})\r\nexport class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() min = 0;\r\n @Input() max = 10;\r\n @Input() buttonUp?: HTMLElement;\r\n @Input() buttonDown?: HTMLElement;\r\n\r\n get length(): number {\r\n return this.max.toString().length;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n this.onKeyDownEvent(event);\r\n };\r\n\r\n @HostListener('input', ['$event'])\r\n onInput = (event: InputEvent): void => {\r\n let value = (event.target as HTMLInputElement).value;\r\n if (+value > this.max) {\r\n value = value.slice(this.length);\r\n }\r\n this.setValue(+value);\r\n };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLInputElement>, private readonly ngControl: NgControl) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.value = this.elementRef.nativeElement.value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.buttonUp?.addEventListener('click', this.onUp);\r\n this.buttonDown?.addEventListener('click', this.onDown);\r\n }\r\n\r\n private onKeyDownEvent(event: KeyboardEvent): void {\r\n if (!this.isKeyValid(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.onUp();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.onDown();\r\n }\r\n }\r\n\r\n private isKeyValid(key: string): boolean {\r\n if (key.length !== 1 || !isNaN(+key)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private onUp = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value + 1);\r\n };\r\n\r\n private onDown = (): void => {\r\n const value = +this.elementRef.nativeElement.value;\r\n this.setValue(value - 1);\r\n };\r\n\r\n private setValue(value: number): void {\r\n if (value < this.min) {\r\n this.setInputValue(this.max);\r\n } else if (value > this.max) {\r\n this.setInputValue(this.min);\r\n } else {\r\n this.setInputValue(value);\r\n }\r\n }\r\n\r\n private setInputValue(value: number) {\r\n this.ngControl.control?.setValue(value);\r\n this.elementRef.nativeElement.value = value.toString().padStart(this.length, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.buttonUp?.removeEventListener('click', this.onUp);\r\n this.buttonDown?.removeEventListener('click', this.onDown);\r\n }\r\n}\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AbstractInputComponent } from '@ngil/form-cva';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: NgilTimePickerComponent,\r\n multi: true\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class NgilTimePickerComponent extends AbstractInputComponent<TimePickerValue> implements AfterViewInit {\r\n private defaultValue: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n\r\n value = '';\r\n formGroup = new FormGroup({\r\n hour: new FormControl<number>(this.defaultValue.hour, { nonNullable: true }),\r\n minute: new FormControl<number>(this.defaultValue.minute, { nonNullable: true }),\r\n second: new FormControl<number>(this.defaultValue.second, { nonNullable: true })\r\n });\r\n\r\n ngAfterViewInit(): void {\r\n this.listenValueChanges();\r\n }\r\n\r\n protected listenValueChanges(): void {\r\n this.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.onChange) {\r\n const value = this.formGroup.getRawValue();\r\n this.onChange({\r\n hour: value.hour ?? this.defaultValue.hour,\r\n minute: value.minute ?? this.defaultValue.minute,\r\n second: value.second ?? this.defaultValue.second\r\n });\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: TimePickerValue): void {\r\n if (value) {\r\n this.formGroup.setValue(\r\n {\r\n ...this.defaultValue,\r\n ...value\r\n },\r\n { emitEvent: false }\r\n );\r\n } else {\r\n this.formGroup.reset(this.defaultValue, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"formGroup\" class=\"ngil-time-picker\">\r\n <div class=\"ngil-time-picker__field\">\r\n <button #hourButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"hour\"\r\n [buttonUp]=\"hourButtonUp\"\r\n [buttonDown]=\"hourButtonDown\"\r\n [max]=\"23\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #hourButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #minuteButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"minute\"\r\n [buttonUp]=\"minuteButtonUp\"\r\n [buttonDown]=\"minuteButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #minuteButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <span>:</span>\r\n\r\n <div class=\"ngil-time-picker__field\">\r\n <button #secondButtonUp class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowUp\"></ng-container>\r\n </button>\r\n <input\r\n ngilNumberRotation\r\n class=\"ngil-time-picker__input\"\r\n formControlName=\"second\"\r\n [buttonUp]=\"secondButtonUp\"\r\n [buttonDown]=\"secondButtonDown\"\r\n [max]=\"59\"\r\n [min]=\"0\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <button #secondButtonDown class=\"ngil-time-picker__button\">\r\n <ng-container *ngTemplateOutlet=\"arrowDown\"></ng-container>\r\n </button>\r\n </div>\r\n</form>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 75 50, 25 90, 75\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n _ngcontent-vre-c235=\"\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 0 100 100\"\r\n xml:space=\"preserve\"\r\n class=\"ngil-time-picker__arrow\"\r\n >\r\n <polyline\r\n _ngcontent-vre-c235=\"\"\r\n fill=\"none\"\r\n stroke=\"#000000\"\r\n stroke-width=\"10\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n points=\"10, 25 50, 75 90, 25\"\r\n ></polyline>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilTimePickerComponent } from '../time-picker/time-picker.component';\r\nimport { TimePickerValue } from '../time-picker/time-picker.model';\r\n\r\n@Component({\r\n selector: 'ngil-time-picker-overlay',\r\n template: '',\r\n standalone: false\r\n})\r\nexport class NgilTimePickerOverlayComponent implements OnDestroy {\r\n origin?: ElementRef<HTMLInputElement>;\r\n valueChanges$ = new Subject<TimePickerValue>();\r\n isOpen = false;\r\n\r\n protected value: TimePickerValue = { hour: 0, minute: 0, second: 0 };\r\n protected readonly destroy$ = new Subject<void>();\r\n protected contentComponent = NgilTimePickerComponent;\r\n protected componentInstance: undefined | NgilTimePickerComponent;\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(private readonly overlay: Overlay) {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n open() {\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.getStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n const portal = new ComponentPortal(this.contentComponent);\r\n const componentRef = this.overlayRef.attach(portal);\r\n this.componentInstance = componentRef.instance;\r\n this.componentInstance.writeValue(this.value);\r\n\r\n this.componentInstance.formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n const value = this.componentInstance?.formGroup.getRawValue();\r\n this.valueChanges$.next({\r\n hour: value?.hour ?? 0,\r\n minute: value?.minute ?? 0,\r\n second: value?.second ?? 0\r\n });\r\n });\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.close();\r\n });\r\n\r\n this.isOpen = true;\r\n }\r\n\r\n close(): void {\r\n this.destroyOverlay();\r\n }\r\n\r\n private destroyOverlay() {\r\n this.destroy$.next();\r\n this.componentInstance?.ngOnDestroy();\r\n this.overlayRef?.dispose();\r\n this.componentInstance = undefined;\r\n this.overlayRef = undefined;\r\n this.isOpen = false;\r\n }\r\n\r\n setValue(value: TimePickerValue): void {\r\n this.value = value;\r\n\r\n if (this.componentInstance) {\r\n this.componentInstance.writeValue(this.value);\r\n }\r\n }\r\n\r\n private getStrategy() {\r\n const primaryX = 'start';\r\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\r\n const primaryY = 'top';\r\n const secondaryY = 'bottom';\r\n\r\n if (!this.origin) {\r\n return undefined;\r\n }\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.origin)\r\n .withPositions([\r\n {\r\n originX: primaryX,\r\n originY: secondaryY,\r\n overlayX: primaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: primaryX,\r\n originY: primaryY,\r\n overlayX: primaryX,\r\n overlayY: secondaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: secondaryY,\r\n overlayX: secondaryX,\r\n overlayY: primaryY\r\n },\r\n {\r\n originX: secondaryX,\r\n originY: primaryY,\r\n overlayX: secondaryX,\r\n overlayY: secondaryY\r\n }\r\n ]);\r\n\r\n return strategy;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output\r\n} from '@angular/core';\r\nimport { AbstractControl, NgControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgilInputComponent } from '../input/input.component';\r\nimport { NgilTimePickerOverlayComponent } from '../time-picker-overlay/time-picker-overlay.component';\r\nimport { TimePickerValue } from './time-picker.model';\r\n\r\n@Directive({\r\n selector: '[ngilTimePicker]',\r\n standalone: false\r\n})\r\nexport class TimePickerDirective implements AfterViewInit, OnDestroy, OnInit {\r\n @Input() picker?: NgilTimePickerOverlayComponent;\r\n\r\n @Output() changed = new EventEmitter<TimePickerValue>();\r\n\r\n protected readonly destroy$ = new Subject<void>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown = (event: KeyboardEvent): void => {\r\n if (isNaN(+event.key) && event.key !== ':' && event.key.length === 1) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n @HostListener('input', ['$event']) onInput = (event: InputEvent): void => {\r\n this.setPickerValue((event.target as HTMLInputElement).value);\r\n };\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLInputElement>,\r\n @Optional() private readonly inputComponent?: NgilInputComponent,\r\n @Optional() private readonly ngControl?: NgControl\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.ngControl?.control?.setValidators([this.timeValidator()]);\r\n this.setPickerValue(this.ngControl?.control?.value);\r\n }\r\n\r\n private setPickerValue(value?: string) {\r\n const parsedValue = this.getTimePickerValue(value);\r\n this.picker?.setValue({\r\n hour: +parsedValue.hour,\r\n minute: +parsedValue.minute || 0,\r\n second: +parsedValue.second || 0\r\n });\r\n }\r\n\r\n private timeValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = this.getTimePickerValue(control.value);\r\n if (this.itemHasError(value.hour, 23)) {\r\n return {\r\n invalidHour: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.minute, 59)) {\r\n return {\r\n invalidMinute: true\r\n };\r\n }\r\n\r\n if (this.itemHasError(value.second, 59)) {\r\n return {\r\n invalidSecond: true\r\n };\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n\r\n private itemHasError(value: string, max: number, min = 0) {\r\n if (value && (value.length > 2 || +value > max || +value < min)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private getTimePickerValue(value: string | null | undefined) {\r\n const split = value?.split(':');\r\n\r\n return {\r\n hour: split ? split[0] : '00',\r\n minute: split ? split[1] : '00',\r\n second: split ? split[2] : '00'\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.picker) {\r\n this.picker.origin = this.elementRef;\r\n this.picker.valueChanges$.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n this.setInputText(value);\r\n this.changed.emit(value);\r\n });\r\n }\r\n }\r\n\r\n private setInputText(value: TimePickerValue): void {\r\n const text = [this.getItemText(value.hour), this.getItemText(value.minute), this.getItemText(value.second)].join(\r\n ':'\r\n );\r\n this.inputComponent?.control.setValue(text);\r\n this.elementRef.nativeElement.value = text;\r\n this.ngControl?.control?.setValue(text);\r\n }\r\n\r\n private getItemText(value: number) {\r\n return value.toString().padStart(2, '0');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgilOverlayComponent, NgilOverlayToggleDirective } from '@ngil/components';\r\nimport { NgilInputComponent } from './components/input/input.component';\r\nimport { NgilSelectOptionsComponent } from './components/select-options/select-options.component';\r\nimport { NgilSelectComponent } from './components/select/select.component';\r\nimport { NgilTextareaComponent } from './components/textarea/textarea.component';\r\nimport { PickerToggleComponent } from './components/time-picker-overlay/picker-toggle';\r\nimport { NgilTimePickerOverlayComponent } from './components/time-picker-overlay/time-picker-overlay.component';\r\nimport { NgilTimePickerComponent } from './components/time-picker/time-picker.component';\r\nimport { TimePickerDirective } from './components/time-picker/time-picker.directive';\r\nimport { NumberRotationDirective } from './directives/number-rotation.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, ReactiveFormsModule, NgilOverlayToggleDirective, NgilOverlayComponent],\r\n declarations: [\r\n NgilInputComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilSelectOptionsComponent\r\n ],\r\n exports: [\r\n NgilInputComponent,\r\n NgilSelectComponent,\r\n NgilTextareaComponent,\r\n NgilTimePickerComponent,\r\n NgilTimePickerOverlayComponent,\r\n PickerToggleComponent,\r\n NumberRotationDirective,\r\n TimePickerDirective\r\n ]\r\n})\r\nexport class NgilUiFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4.NgilSelectOptionsComponent","i5","takeUntil","i3.NumberRotationDirective","i1.NgilInputComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngil/form-inputs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0"
|
|
6
6
|
},
|
|
@@ -11,20 +11,18 @@
|
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngil/ui/form#readme",
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular/core": "
|
|
15
|
-
"@angular/forms": "
|
|
16
|
-
"@angular/cdk": "
|
|
14
|
+
"@angular/core": ">=17.0.0",
|
|
15
|
+
"@angular/forms": ">=17.0.0",
|
|
16
|
+
"@angular/cdk": ">=17.0.0"
|
|
17
17
|
},
|
|
18
18
|
"module": "fesm2022/ngil-form-inputs.mjs",
|
|
19
|
-
"typings": "
|
|
19
|
+
"typings": "types/ngil-form-inputs.d.ts",
|
|
20
20
|
"exports": {
|
|
21
21
|
"./package.json": {
|
|
22
22
|
"default": "./package.json"
|
|
23
23
|
},
|
|
24
24
|
".": {
|
|
25
|
-
"types": "./
|
|
26
|
-
"esm2022": "./esm2022/ngil-form-inputs.mjs",
|
|
27
|
-
"esm": "./esm2022/ngil-form-inputs.mjs",
|
|
25
|
+
"types": "./types/ngil-form-inputs.d.ts",
|
|
28
26
|
"default": "./fesm2022/ngil-form-inputs.mjs"
|
|
29
27
|
}
|
|
30
28
|
},
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { AfterViewInit, EventEmitter, ChangeDetectorRef, OnDestroy, ElementRef, OnInit } from '@angular/core';
|
|
3
|
+
import * as i11 from '@angular/forms';
|
|
4
|
+
import { FormControl, ControlContainer, FormGroup, NgControl } from '@angular/forms';
|
|
5
|
+
import { AbstractInputComponent, NgilErrorMessagesService } from '@ngil/form-cva';
|
|
6
|
+
import * as i12 from '@ngil/components';
|
|
7
|
+
import { NgilOverlayComponent } from '@ngil/components';
|
|
8
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
9
|
+
import { Subject } from 'rxjs';
|
|
10
|
+
import * as i10 from '@angular/common';
|
|
11
|
+
|
|
12
|
+
declare class NgilInputComponent extends AbstractInputComponent<string | number> implements AfterViewInit {
|
|
13
|
+
type: string;
|
|
14
|
+
changed: EventEmitter<string | number>;
|
|
15
|
+
control: FormControl<any>;
|
|
16
|
+
ngAfterViewInit(): void;
|
|
17
|
+
writeValue(value: string | number): void;
|
|
18
|
+
onChangeInput(value: string | number): void;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilInputComponent, never>;
|
|
20
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilInputComponent, "ngil-input", never, { "type": { "alias": "type"; "required": false; }; }, { "changed": "changed"; }, never, ["[labelPrefix]", "[labelSuffix]", "[prefix]", "[suffix]", "[hint]"], false, never>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare class NgilSelectComponent<T> extends AbstractInputComponent<T | T[]> {
|
|
24
|
+
private readonly cdr;
|
|
25
|
+
overlay?: NgilOverlayComponent;
|
|
26
|
+
multiple: boolean;
|
|
27
|
+
items: T[];
|
|
28
|
+
displayKey?: keyof T;
|
|
29
|
+
value: T | T[] | null;
|
|
30
|
+
get displayValue(): string | T | NonNullable<T>[keyof T] | null;
|
|
31
|
+
constructor(cdr: ChangeDetectorRef, errorMessagesService: NgilErrorMessagesService, controlContainer?: ControlContainer);
|
|
32
|
+
writeValue(value: T): void;
|
|
33
|
+
onItemSelected(item: T | T[]): void;
|
|
34
|
+
isArray(item: T | T[]): item is T[];
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilSelectComponent<any>, [null, null, { optional: true; }]>;
|
|
36
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectComponent<any>, "ngil-select", never, { "multiple": { "alias": "multiple"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; }, {}, never, ["[suffix]"], false, never>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
declare class NgilTextareaComponent extends AbstractInputComponent<string> implements AfterViewInit {
|
|
40
|
+
control: FormControl<any>;
|
|
41
|
+
ngAfterViewInit(): void;
|
|
42
|
+
writeValue(value: string): void;
|
|
43
|
+
onChangeInput(value: string): void;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilTextareaComponent, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilTextareaComponent, "ngil-textarea", never, {}, {}, never, ["[suffix]"], false, never>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface TimePickerValue {
|
|
49
|
+
hour: number;
|
|
50
|
+
minute: number;
|
|
51
|
+
second: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare class NgilTimePickerComponent extends AbstractInputComponent<TimePickerValue> implements AfterViewInit {
|
|
55
|
+
private defaultValue;
|
|
56
|
+
value: string;
|
|
57
|
+
formGroup: FormGroup<{
|
|
58
|
+
hour: FormControl<number>;
|
|
59
|
+
minute: FormControl<number>;
|
|
60
|
+
second: FormControl<number>;
|
|
61
|
+
}>;
|
|
62
|
+
ngAfterViewInit(): void;
|
|
63
|
+
protected listenValueChanges(): void;
|
|
64
|
+
writeValue(value: TimePickerValue): void;
|
|
65
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilTimePickerComponent, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilTimePickerComponent, "ngil-time-picker", never, {}, {}, never, never, false, never>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
declare class NgilTimePickerOverlayComponent implements OnDestroy {
|
|
70
|
+
private readonly overlay;
|
|
71
|
+
origin?: ElementRef<HTMLInputElement>;
|
|
72
|
+
valueChanges$: Subject<TimePickerValue>;
|
|
73
|
+
isOpen: boolean;
|
|
74
|
+
protected value: TimePickerValue;
|
|
75
|
+
protected readonly destroy$: Subject<void>;
|
|
76
|
+
protected contentComponent: typeof NgilTimePickerComponent;
|
|
77
|
+
protected componentInstance: undefined | NgilTimePickerComponent;
|
|
78
|
+
private overlayRef?;
|
|
79
|
+
constructor(overlay: Overlay);
|
|
80
|
+
ngOnDestroy(): void;
|
|
81
|
+
open(): void;
|
|
82
|
+
close(): void;
|
|
83
|
+
private destroyOverlay;
|
|
84
|
+
setValue(value: TimePickerValue): void;
|
|
85
|
+
private getStrategy;
|
|
86
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilTimePickerOverlayComponent, never>;
|
|
87
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilTimePickerOverlayComponent, "ngil-time-picker-overlay", never, {}, {}, never, never, false, never>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare class PickerToggleComponent {
|
|
91
|
+
picker: NgilTimePickerOverlayComponent | undefined;
|
|
92
|
+
onClick: (event: Event) => void;
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PickerToggleComponent, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PickerToggleComponent, "ngil-picker-toggle", never, { "picker": { "alias": "picker"; "required": false; }; }, {}, never, never, false, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
declare class TimePickerDirective implements AfterViewInit, OnDestroy, OnInit {
|
|
98
|
+
private readonly elementRef;
|
|
99
|
+
private readonly inputComponent?;
|
|
100
|
+
private readonly ngControl?;
|
|
101
|
+
picker?: NgilTimePickerOverlayComponent;
|
|
102
|
+
changed: EventEmitter<TimePickerValue>;
|
|
103
|
+
protected readonly destroy$: Subject<void>;
|
|
104
|
+
onKeyDown: (event: KeyboardEvent) => void;
|
|
105
|
+
onInput: (event: InputEvent) => void;
|
|
106
|
+
constructor(elementRef: ElementRef<HTMLInputElement>, inputComponent?: NgilInputComponent | undefined, ngControl?: NgControl | undefined);
|
|
107
|
+
ngOnInit(): void;
|
|
108
|
+
private setPickerValue;
|
|
109
|
+
private timeValidator;
|
|
110
|
+
private itemHasError;
|
|
111
|
+
private getTimePickerValue;
|
|
112
|
+
ngAfterViewInit(): void;
|
|
113
|
+
private setInputText;
|
|
114
|
+
private getItemText;
|
|
115
|
+
ngOnDestroy(): void;
|
|
116
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerDirective, [null, { optional: true; }, { optional: true; }]>;
|
|
117
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TimePickerDirective, "[ngilTimePicker]", never, { "picker": { "alias": "picker"; "required": false; }; }, { "changed": "changed"; }, never, never, false, never>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare class NumberRotationDirective implements AfterViewInit, OnDestroy, OnInit {
|
|
121
|
+
private readonly elementRef;
|
|
122
|
+
private readonly ngControl;
|
|
123
|
+
min: number;
|
|
124
|
+
max: number;
|
|
125
|
+
buttonUp?: HTMLElement;
|
|
126
|
+
buttonDown?: HTMLElement;
|
|
127
|
+
get length(): number;
|
|
128
|
+
onKeyDown: (event: KeyboardEvent) => void;
|
|
129
|
+
onInput: (event: InputEvent) => void;
|
|
130
|
+
constructor(elementRef: ElementRef<HTMLInputElement>, ngControl: NgControl);
|
|
131
|
+
ngOnInit(): void;
|
|
132
|
+
ngAfterViewInit(): void;
|
|
133
|
+
private onKeyDownEvent;
|
|
134
|
+
private isKeyValid;
|
|
135
|
+
private onUp;
|
|
136
|
+
private onDown;
|
|
137
|
+
private setValue;
|
|
138
|
+
private setInputValue;
|
|
139
|
+
ngOnDestroy(): void;
|
|
140
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NumberRotationDirective, never>;
|
|
141
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NumberRotationDirective, "input[ngilNumberRotation]", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "buttonUp": { "alias": "buttonUp"; "required": false; }; "buttonDown": { "alias": "buttonDown"; "required": false; }; }, {}, never, never, false, never>;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
declare class NgilSelectOptionsComponent<T> implements OnDestroy {
|
|
145
|
+
selectedItems: T | T[] | null;
|
|
146
|
+
items: T[];
|
|
147
|
+
displayKey?: keyof T;
|
|
148
|
+
multiple: boolean;
|
|
149
|
+
display: boolean;
|
|
150
|
+
itemSelected: EventEmitter<T | T[]>;
|
|
151
|
+
protected readonly destroy$: Subject<void>;
|
|
152
|
+
onItemSelected(item: T): void;
|
|
153
|
+
isSelected(item: T): boolean;
|
|
154
|
+
ngOnDestroy(): void;
|
|
155
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilSelectOptionsComponent<any>, never>;
|
|
156
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgilSelectOptionsComponent<any>, "ngil-select-options", never, { "selectedItems": { "alias": "selectedItems"; "required": false; }; "items": { "alias": "items"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "display": { "alias": "display"; "required": false; }; }, { "itemSelected": "itemSelected"; }, never, never, false, never>;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
declare class NgilUiFormModule {
|
|
160
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgilUiFormModule, never>;
|
|
161
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgilUiFormModule, [typeof NgilInputComponent, typeof NgilTimePickerComponent, typeof NgilTimePickerOverlayComponent, typeof PickerToggleComponent, typeof NumberRotationDirective, typeof TimePickerDirective, typeof NgilSelectComponent, typeof NgilTextareaComponent, typeof NgilSelectOptionsComponent], [typeof i10.CommonModule, typeof i11.ReactiveFormsModule, typeof i12.NgilOverlayToggleDirective, typeof i12.NgilOverlayComponent], [typeof NgilInputComponent, typeof NgilSelectComponent, typeof NgilTextareaComponent, typeof NgilTimePickerComponent, typeof NgilTimePickerOverlayComponent, typeof PickerToggleComponent, typeof NumberRotationDirective, typeof TimePickerDirective]>;
|
|
162
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgilUiFormModule>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export { NgilInputComponent, NgilSelectComponent, NgilTextareaComponent, NgilTimePickerComponent, NgilTimePickerOverlayComponent, NgilUiFormModule, NumberRotationDirective, PickerToggleComponent, TimePickerDirective };
|
|
166
|
+
export type { TimePickerValue };
|
package/esm2022/index.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './lib/components/input/input.component';
|
|
2
|
-
export * from './lib/components/select/select.component';
|
|
3
|
-
export * from './lib/components/textarea/textarea.component';
|
|
4
|
-
export * from './lib/components/time-picker-overlay/picker-toggle';
|
|
5
|
-
export * from './lib/components/time-picker-overlay/time-picker-overlay.component';
|
|
6
|
-
export * from './lib/components/time-picker/time-picker.component';
|
|
7
|
-
export * from './lib/components/time-picker/time-picker.directive';
|
|
8
|
-
export * from './lib/components/time-picker/time-picker.model';
|
|
9
|
-
export * from './lib/directives/number-rotation.directive';
|
|
10
|
-
export * from './lib/ngil-ui-form.module';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvZm9ybS1pbnB1dHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGltZS1waWNrZXItb3ZlcmxheS9waWNrZXItdG9nZ2xlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90aW1lLXBpY2tlci1vdmVybGF5L3RpbWUtcGlja2VyLW92ZXJsYXkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGltZS1waWNrZXIvdGltZS1waWNrZXIubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL251bWJlci1yb3RhdGlvbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ2lsLXVpLWZvcm0ubW9kdWxlJztcclxuIl19
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
|
|
2
|
-
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { AbstractInputComponent } from '@ngil/form-cva';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
export class NgilInputComponent extends AbstractInputComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.type = 'text';
|
|
12
|
-
this.changed = new EventEmitter();
|
|
13
|
-
this.control = new FormControl();
|
|
14
|
-
}
|
|
15
|
-
ngAfterViewInit() {
|
|
16
|
-
this.control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {
|
|
17
|
-
this.onChangeInput(value);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
writeValue(value) {
|
|
21
|
-
this.control.setValue(value);
|
|
22
|
-
}
|
|
23
|
-
onChangeInput(value) {
|
|
24
|
-
if (this.type === 'number') {
|
|
25
|
-
value = +value;
|
|
26
|
-
}
|
|
27
|
-
this.changed.emit(value);
|
|
28
|
-
if (this.onChange) {
|
|
29
|
-
this.onChange(value);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: NgilInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: NgilInputComponent, selector: "ngil-input", inputs: { type: "type" }, outputs: { changed: "changed" }, providers: [
|
|
34
|
-
{
|
|
35
|
-
provide: NG_VALUE_ACCESSOR,
|
|
36
|
-
useExisting: forwardRef(() => NgilInputComponent),
|
|
37
|
-
multi: true
|
|
38
|
-
}
|
|
39
|
-
], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"model$ | async as model\">\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-input{flex-grow:1;position:relative}:host .ngil-input--error{color:red}:host .ngil-input--error .ngil-input__input{border-color:red}:host .ngil-input__label{display:flex;gap:.5rem}:host .ngil-input__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem}:host .ngil-input__field{display:flex;gap:.5rem;align-items:center}:host .ngil-input__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: NgilInputComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ selector: 'ngil-input', providers: [
|
|
44
|
-
{
|
|
45
|
-
provide: NG_VALUE_ACCESSOR,
|
|
46
|
-
useExisting: forwardRef(() => NgilInputComponent),
|
|
47
|
-
multi: true
|
|
48
|
-
}
|
|
49
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"model$ | async as model\">\r\n <div class=\"ngil-input\" [class.ngil-input--error]=\"!!model.errorMessage\">\r\n <label class=\"ngil-input__label\" [for]=\"formControlName\">\r\n <ng-content select=\"[labelPrefix]\"></ng-content>\r\n <span> {{ label }}{{ required ? '*' : '' }} </span>\r\n <ng-content select=\"[labelSuffix]\"></ng-content>\r\n </label>\r\n\r\n <div class=\"ngil-input__field\">\r\n <ng-content select=\"[prefix]\"></ng-content>\r\n <input\r\n class=\"ngil-input__input\"\r\n [id]=\"formControlName\"\r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [type]=\"type\"\r\n [formControl]=\"control\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <ng-content select=\"[suffix]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[hint]\"></ng-content>\r\n\r\n <small class=\"ngil-input__error-message\">{{ model.errorMessage }}</small>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:flex;width:100%;flex-direction:column;margin:.25rem 0 2rem;min-width:200px}:host .ngil-input{flex-grow:1;position:relative}:host .ngil-input--error{color:red}:host .ngil-input--error .ngil-input__input{border-color:red}:host .ngil-input__label{display:flex;gap:.5rem}:host .ngil-input__input{width:100%;outline:none;border:1px solid black;border-radius:3px;padding:.25rem}:host .ngil-input__field{display:flex;gap:.5rem;align-items:center}:host .ngil-input__error-message{position:absolute;margin:.1rem 0;height:1rem;font-size:85%}\n"] }]
|
|
50
|
-
}], propDecorators: { type: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], changed: [{
|
|
53
|
-
type: Output
|
|
54
|
-
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2lsL3VpL2Zvcm0taW5wdXRzL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25naWwvdWkvZm9ybS1pbnB1dHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBZTNDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxzQkFBdUM7SUFiL0U7O1FBY1csU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNiLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUV4RCxZQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztLQXFCN0I7SUFuQkMsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzs4R0F4QlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsZ0dBVGxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDakQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ3ZCSCxpL0JBMEJBOzsyRkRBYSxrQkFBa0I7a0JBYjlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0SW5wdXRDb21wb25lbnQgfSBmcm9tICdAbmdpbC9mb3JtLWN2YSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmdpbC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdpbElucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ2lsSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdElucHV0Q29tcG9uZW50PHN0cmluZyB8IG51bWJlcj4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSB0eXBlID0gJ3RleHQnO1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXI+KCk7XHJcblxyXG4gIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5vbkNoYW5nZUlucHV0KHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VJbnB1dCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICB2YWx1ZSA9ICt2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cclxuICA8ZGl2IGNsYXNzPVwibmdpbC1pbnB1dFwiIFtjbGFzcy5uZ2lsLWlucHV0LS1lcnJvcl09XCIhIW1vZGVsLmVycm9yTWVzc2FnZVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibmdpbC1pbnB1dF9fbGFiZWxcIiBbZm9yXT1cImZvcm1Db250cm9sTmFtZVwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGFiZWxQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8c3Bhbj4ge3sgbGFiZWwgfX17eyByZXF1aXJlZCA/ICcqJyA6ICcnIH19IDwvc3Bhbj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xhYmVsU3VmZml4XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvbGFiZWw+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm5naWwtaW5wdXRfX2ZpZWxkXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cIm5naWwtaW5wdXRfX2lucHV0XCJcclxuICAgICAgICBbaWRdPVwiZm9ybUNvbnRyb2xOYW1lXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgLz5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoaW50XVwiPjwvbmctY29udGVudD5cclxuXHJcbiAgICA8c21hbGwgY2xhc3M9XCJuZ2lsLWlucHV0X19lcnJvci1tZXNzYWdlXCI+e3sgbW9kZWwuZXJyb3JNZXNzYWdlIH19PC9zbWFsbD5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|