@wlcm/angular 1.0.1 → 1.1.1

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.
Files changed (32) hide show
  1. package/core/esm2022/index.mjs +4 -1
  2. package/core/esm2022/lib/constants/icon.contants.mjs +11 -0
  3. package/core/esm2022/lib/directives/icon.directive.mjs +29 -0
  4. package/core/esm2022/lib/models/icon.models.mjs +5 -0
  5. package/core/fesm2022/wlcm-angular-core.mjs +52 -13
  6. package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
  7. package/core/index.d.ts +3 -0
  8. package/core/lib/constants/icon.contants.d.ts +4 -0
  9. package/core/lib/directives/icon.directive.d.ts +12 -0
  10. package/core/lib/models/icon.models.d.ts +7 -0
  11. package/forms/esm2022/index.mjs +3 -1
  12. package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +5 -2
  13. package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +12 -10
  14. package/forms/esm2022/lib/forms/components/select/select.component.mjs +50 -15
  15. package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +14 -0
  16. package/forms/esm2022/lib/forms/directives/input.directive.mjs +15 -7
  17. package/forms/esm2022/lib/forms/directives/select-input-binder.directive.mjs +33 -0
  18. package/forms/esm2022/lib/forms/forms.module.mjs +5 -1
  19. package/forms/esm2022/lib/forms/models/input.models.mjs +1 -1
  20. package/forms/fesm2022/wlcm-angular-forms.mjs +203 -116
  21. package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
  22. package/forms/index.d.ts +2 -0
  23. package/forms/lib/forms/components/form-field/form-field.component.d.ts +4 -2
  24. package/forms/lib/forms/components/select/select.component.d.ts +22 -7
  25. package/forms/lib/forms/directives/form-field-prefix.directive.d.ts +5 -0
  26. package/forms/lib/forms/directives/input.directive.d.ts +10 -1
  27. package/forms/lib/forms/directives/select-input-binder.directive.d.ts +5 -0
  28. package/forms/lib/forms/forms.module.d.ts +4 -3
  29. package/forms/lib/forms/models/input.models.d.ts +9 -3
  30. package/package.json +1 -1
  31. package/styles/components/forms/_form-field.scss +6 -0
  32. package/styles/components/forms/_select.scss +11 -21
@@ -1 +1 @@
1
- {"version":3,"file":"wlcm-angular-forms.mjs","sources":["../../../../modules/forms/src/lib/forms/components/error/error.component.ts","../../../../modules/forms/src/lib/forms/components/error/error.component.html","../../../../modules/forms/src/lib/forms/services/form-state-handler.service.ts","../../../../modules/forms/src/lib/forms/constants/form-state-handlers.constants.ts","../../../../modules/forms/src/lib/forms/directives/form-field-custom-container.directive.ts","../../../../modules/forms/src/lib/forms/constants/form-errors.constants.ts","../../../../modules/forms/src/lib/forms/pipes/errors-mapper.pipe.ts","../../../../modules/forms/src/lib/forms/constants/form-elements.constants.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.html","../../../../modules/forms/src/lib/forms/directives/input.directive.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.html","../../../../modules/forms/src/lib/forms/components/select/select.component.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.html","../../../../modules/forms/src/lib/forms/directives/autocomplete.directive.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.html","../../../../modules/forms/src/lib/forms/directives/ac-input-binder.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-suffix.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-hint.directive.ts","../../../../modules/forms/src/lib/forms/forms.module.ts","../../../../modules/forms/src/wlcm-angular-forms.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-error',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-error' },\n templateUrl: './error.component.html',\n styleUrls: ['./error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmErrorComponent {}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FormStateHandlerService implements WlcmForm, WlcmFormControl {\n private readonly _stateChanges$: Subject<void> = new Subject();\n\n readonly stateChanges$: Observable<void> = this._stateChanges$.asObservable();\n\n updateFormState(): void {\n this._stateChanges$.next();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { FormStateHandlerService } from '../services';\n\nexport const WLCM_FORM: InjectionToken<WlcmForm> = new InjectionToken(\n 'WLCM_FORM'\n);\n\nexport const WLCM_FORM_PROVIDER: Provider = {\n provide: WLCM_FORM,\n useClass: FormStateHandlerService,\n};\n\nexport const WLCM_FORM_CONTROL: InjectionToken<WlcmFormControl> =\n new InjectionToken('WLCM_FORM_CONTROL');\n\nexport const WLCM_FORM_CONTROL_PROVIDER: Provider = {\n provide: WLCM_FORM_CONTROL,\n useFactory: () => inject(WLCM_FORM, { optional: true, skipSelf: true }),\n};\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldCustomContainer]',\n standalone: true,\n})\nexport class WlcmFormFieldCustomContainerDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFormErrors } from '../models/form-errors.models';\n\nexport const WLCM_ERRORS: InjectionToken<WlcmFormErrors> = new InjectionToken('WLCM_ERRORS');\n\nexport const WLCM_PRIORITY_ERRORS: InjectionToken<Set<string>> = new InjectionToken('WLCM_PRIORITY_ERRORS', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n","import { ChangeDetectorRef, Inject, Pipe, PipeTransform } from '@angular/core';\nimport { FormControl, ValidationErrors } from '@angular/forms';\nimport { WlcmFormErrorFn, WlcmFormErrors } from '../models/form-errors.models';\nimport {\n WLCM_ERRORS,\n WLCM_PRIORITY_ERRORS,\n} from '../constants/form-errors.constants';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Pipe({\n name: 'errorsMapper',\n standalone: true,\n pure: false,\n})\nexport class ErrorsMapperPipe implements PipeTransform {\n private destroy$: Subject<void> = new Subject();\n\n currentError: string | null = null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(WLCM_ERRORS) private errors: WlcmFormErrors,\n @Inject(WLCM_PRIORITY_ERRORS) private priorityErrors: Set<string>\n ) {}\n\n transform(control: FormControl): string | null {\n this.handleStatusChanges(control);\n\n this.retrieveFirstError(control.errors);\n\n return this.currentError;\n }\n\n private retrieveFirstError(errors: ValidationErrors | null): void {\n if (!errors) return;\n\n Object.keys(errors).forEach(\n (key: string) => !errors[key] && delete errors[key]\n );\n\n const errorsTypes: string[] = Object.getOwnPropertyNames(errors);\n\n const priorityType: string | undefined = errorsTypes.find((type: string) =>\n this.priorityErrors.has(type)\n );\n\n const outputError: string = priorityType || errorsTypes[0];\n\n if (outputError) {\n this.currentError = (this.errors[outputError] as WlcmFormErrorFn)?.(\n errors[outputError]\n );\n }\n }\n\n private handleStatusChanges(control: FormControl): void {\n this.destroy$.next();\n\n control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.retrieveFirstError(control.errors);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","import { ElementRef, InjectionToken } from '@angular/core';\nimport { WlcmInputBinder, WlcmInputGetter } from '../models/input.models';\nimport { WlcmFormField } from '../models/form.models';\n\nexport const WLCM_INPUT: InjectionToken<WlcmInputGetter> = new InjectionToken('WLCM_INPUT');\n\nexport const WLCM_INPUT_BINDER: InjectionToken<WlcmInputBinder> = new InjectionToken('WLCM_INPUT_BINDER');\n\nexport const WLCM_FORM_FIELD: InjectionToken<WlcmFormField> = new InjectionToken('WLCM_FORM_FIELD');\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Inject,\n Optional,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { Validators, AbstractControl, NgControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { Observable, fromEvent, merge } from 'rxjs';\nimport { WlcmErrorComponent } from '../error/error.component';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';\nimport { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';\nimport { WlcmFormControl } from '../../models/form.models';\nimport { WlcmInputGetter } from '../../models/input.models';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-form-field',\n standalone: true,\n imports: [CommonModule, WlcmErrorComponent, ErrorsMapperPipe],\n host: { class: 'wlcm-form-field' },\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },\n ],\n})\nexport class WlcmFormFieldComponent implements AfterViewInit {\n @ContentChild(NgControl, { descendants: true }) private ngControl!: NgControl;\n\n @ContentChild(WLCM_INPUT) private _inputRef?: WlcmInputGetter;\n\n @ContentChild(WlcmFormFieldCustomContainerDirective)\n protected customContainer?: WlcmFormFieldCustomContainerDirective;\n\n @ViewChild('defaultContainer')\n protected defaultContainer?: ElementRef<HTMLElement>;\n\n @HostBinding('class.wlcm-field-focused') get isFocused() {\n return this.inputRef?.nativeElement === document.activeElement;\n }\n\n @HostBinding('class.wlcm-field-required') get isRequired() {\n return this.control?.hasValidator(Validators.required);\n }\n\n @HostBinding('class.wlcm-field-invalid') get isInvalid() {\n return this.control?.invalid;\n }\n\n @HostBinding('class.wlcm-field-touched') get isTouched() {\n return this.control?.touched;\n }\n\n constructor(\n @Optional()\n @Inject(WLCM_FORM_CONTROL)\n private parentFormMember: WlcmFormControl,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.inputRef && !this.customContainer) {\n throw new Error('Input element should be bound to the wlcmInput directive.');\n }\n\n this.handleStateChanges();\n }\n\n focus(): void {\n if (!this.isFocused) {\n this.inputRef?.nativeElement.focus();\n }\n }\n\n get control(): AbstractControl | null {\n return this.ngControl?.control;\n }\n\n get inputContainer(): ElementRef<HTMLElement> {\n return this.customContainer?.elementRef || (this.defaultContainer as ElementRef<HTMLElement>);\n }\n\n private handleStateChanges(): void {\n const events: Observable<unknown>[] = this.controlEvents;\n\n if (this.parentFormMember) {\n events.push(this.parentFormMember.stateChanges$);\n }\n\n merge(...events)\n .pipe(untilDestroyed(this))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n private get inputRef(): ElementRef<HTMLInputElement> | undefined {\n return this._inputRef?.get();\n }\n\n private get controlEvents(): Observable<unknown>[] {\n const events: Observable<unknown>[] = [];\n\n if (this.inputRef) {\n const element: HTMLInputElement = (this.inputRef as ElementRef).nativeElement;\n\n events.push(fromEvent(element, 'focus'), fromEvent(element, 'blur'));\n }\n\n if (this.control) {\n events.push(this.control.statusChanges);\n }\n\n return events;\n }\n}\n","<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { WLCM_INPUT, WLCM_INPUT_BINDER } from '../constants/form-elements.constants';\nimport { WlcmInputBinder } from '../models/input.models';\n\n@Directive({\n selector: '[wlcmInput]',\n host: { class: 'wlcm-form-field-input' },\n providers: [\n {\n provide: WLCM_INPUT,\n useFactory: () => {\n const inputRef: ElementRef<HTMLInputElement> = inject(ElementRef, { self: true });\n\n const binder: WlcmInputBinder | null = inject(WLCM_INPUT_BINDER, { self: true, optional: true });\n\n return { get: () => (binder ? binder.bind() : inputRef) };\n },\n },\n ],\n standalone: true,\n})\nexport class WlcmInputDirective {}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-label',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-label' },\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmLabelComponent {\n @Input() required: boolean = false;\n\n @HostBinding('class.required') get isRequired(): boolean {\n return this.required;\n }\n}\n","<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n Input,\n Optional,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MAT_SELECT_CONFIG, MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { first, fromEvent } from 'rxjs';\nimport { WlcmOption } from '@wlcm/angular/core';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants';\nimport { WlcmFormControl } from '../../models/_index';\n\ntype SelectValue = string[] | string;\n\nconst PANEL_CLASS: string = 'wlcm-select-panel';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-select',\n standalone: true,\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: MAT_SELECT_CONFIG, useValue: { overlayPanelClass: PANEL_CLASS } },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n ],\n})\nexport class WlcmSelectComponent implements ControlValueAccessor {\n @Input() multiple: boolean = false;\n\n @Input() placeholder: string = 'Not selected';\n\n @Input() options: WlcmOption[] = [];\n\n readonly control: FormControl = new FormControl();\n\n private _changed?: (value: WlcmOption) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(WLCM_FORM_CONTROL) private parentFormMember: WlcmFormControl\n ) {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n }\n\n select(event: MatSelectChange): void {\n this._changed?.(event.value);\n\n this._validatorChanged?.();\n }\n\n panelOpened(): void {\n this.handleClickOutside();\n }\n\n writeValue(value: SelectValue): void {\n this.control.setValue(value);\n }\n\n registerOnChange(callback: (value: WlcmOption) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n validate(control: AbstractControl): void {\n this.control.setErrors(control.errors);\n\n if (control.touched) {\n this.control.markAsTouched();\n } else {\n this.control.markAsUntouched();\n }\n }\n\n private handleStateChange(): void {\n this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private handleClickOutside(): void {\n const overlayContainer: HTMLElement | null = document.querySelector(`.cdk-overlay-container:has(.${PANEL_CLASS})`);\n\n const backdrop: HTMLElement | null | undefined = overlayContainer?.querySelector(`.cdk-overlay-backdrop`);\n\n if (backdrop instanceof HTMLElement) {\n fromEvent(backdrop, 'click')\n .pipe(first())\n .subscribe(() => {\n this._touched?.();\n\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n>\n <mat-option *ngFor=\"let option of options\" [value]=\"option.value\">\n {{ option.viewValue }}\n </mat-option>\n</mat-select>\n","import { Directive, EventEmitter, Host, NgZone, Optional, Output } from '@angular/core';\nimport { asyncScheduler, fromEvent, observeOn, takeUntil } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmAutocomplete]',\n standalone: true,\n})\nexport class AutocompleteDirective {\n @Output() panelScrolled: EventEmitter<void> = new EventEmitter();\n\n private _scrollWidth: number = 0;\n\n private _scrollWidthChanged: boolean = false;\n\n constructor(private zone: NgZone, @Host() @Optional() private autocomplete: MatAutocomplete) {\n this.handleOpenEvent();\n }\n\n private handleOpenEvent(): void {\n this.autocomplete.opened\n .pipe(untilDestroyed(this))\n .pipe(observeOn(asyncScheduler))\n .subscribe(() => this.zone.runOutsideAngular(() => this.handleScrolling()));\n }\n\n private handleScrolling(): void {\n const panel: HTMLElement = this.autocomplete.panel.nativeElement;\n\n this.setScrollWidth(panel.scrollWidth);\n\n fromEvent(panel, 'scroll')\n .pipe(takeUntil(this.autocomplete.closed))\n .subscribe(() => {\n if (this._scrollWidth !== panel.scrollWidth) {\n this.setScrollWidth(panel.scrollWidth);\n }\n\n if (panel.scrollWidth * 0.6 <= panel.scrollTop && this._scrollWidthChanged) {\n this.zone.run(() => this.panelScrolled.emit());\n\n this._scrollWidthChanged = false;\n }\n });\n }\n\n private setScrollWidth(width: number): void {\n this._scrollWidth = width;\n\n this._scrollWidthChanged = true;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Input,\n OnInit,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFormFieldComponent } from '../form-field/form-field.component';\nimport { WlcmLabelComponent } from '../label/label.component';\nimport { WlcmInputDirective } from '../../directives/input.directive';\nimport { MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport {\n BehaviorSubject,\n EMPTY,\n Observable,\n Subject,\n asyncScheduler,\n concatMap,\n debounceTime,\n empty,\n filter,\n first,\n observeOn,\n switchMap,\n tap,\n} from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AutocompleteDirective } from '../../directives/autocomplete.directive';\nimport { DEFAULT_QUERY_PARAMS, PaginatedData, QueryParams, WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants';\nimport { WlcmInputGetter } from '../../models/input.models';\nimport { WlcmFormField } from '../../models/form.models';\n\ntype Option = WlcmAutocompleteOption;\n\ntype AutocompleteValue = WlcmAutocompleteOption | string | null;\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n MatAutocompleteModule,\n AutocompleteDirective,\n ReactiveFormsModule,\n WlcmFormFieldComponent,\n WlcmLabelComponent,\n WlcmInputDirective,\n ],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n ],\n})\nexport class WlcmAutocompleteComponent implements OnInit, ControlValueAccessor, Validator, AfterViewInit {\n @Input() pullDataMethod!: (params: QueryParams) => Observable<PaginatedData<Option>>;\n\n @Input() label!: string;\n\n @Input() required: boolean = false;\n\n @Input() placeholder: string = '';\n\n readonly control: FormControl<AutocompleteValue> = new FormControl('');\n\n private readonly _loadMore$: Subject<void> = new Subject();\n\n private readonly _options$: BehaviorSubject<Option[]> = new BehaviorSubject<Option[]>([]);\n\n protected readonly options$: Observable<Option[]> = this._options$.asObservable();\n\n protected readonly closed$: Subject<void> = new Subject();\n\n private queryParams: QueryParams = { ...DEFAULT_QUERY_PARAMS, limit: 15 };\n\n private _changed?: (value: string) => void;\n\n private _touched?: () => void;\n\n private _onValidatorChange?: () => void;\n\n private _paginatedData: PaginatedData<Option> | null = null;\n\n @ViewChild(WLCM_INPUT) public wlcmInput!: WlcmInputGetter;\n\n @ViewChild(MatAutocompleteTrigger) private autocompleteTrigger!: MatAutocompleteTrigger;\n\n constructor(@Inject(WLCM_FORM_FIELD) private formField: WlcmFormField) {\n this.handleLoadMoreEvent();\n this.handleControlValueChanges();\n }\n\n ngOnInit(): void {\n this.loadOptions(this.queryParams).subscribe();\n }\n\n ngAfterViewInit(): void {\n const container: ElementRef = this.formField.inputContainer;\n\n const origin: MatAutocompleteOrigin = new MatAutocompleteOrigin(container);\n\n this.autocompleteTrigger.connectedTo = origin;\n }\n\n displayWith(value: Option | string): string {\n if (value instanceof Object) {\n return value.viewValue;\n }\n\n return value;\n }\n\n loadMore(): void {\n this._loadMore$.next();\n }\n\n writeValue(value: AutocompleteValue): void {\n this.control.setValue(value);\n }\n\n registerOnChange(callback: (value: string) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n blured(): void {\n let closed: Observable<void> = new Observable((observer) => (observer.next(), observer.complete()));\n\n if (this.autocompleteTrigger.panelOpen) {\n closed = this.closed$.pipe(first(), observeOn(asyncScheduler));\n }\n\n closed.subscribe(() => this._touched?.());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!!this.control.value) {\n if (this.control.value instanceof Object) return null;\n\n return { ...control.errors, unselected: true, required: false };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n\n private loadOptions(params: QueryParams): Observable<PaginatedData<Option>> {\n this._options$.next([]);\n\n return this.pullDataMethod({ ...params, page: 1 }).pipe(\n tap((paginatedData: PaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next(paginatedData.data);\n })\n );\n }\n\n private handleLoadMoreEvent(): void {\n this._loadMore$\n .pipe(\n concatMap(() => {\n if (this._paginatedData && this._paginatedData.currPage + 1 <= this._paginatedData.totalPages) {\n this.queryParams.page++;\n\n return this.pullDataMethod(this.queryParams).pipe(\n tap((paginatedData: PaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next([...this._options$.value, ...paginatedData.data]);\n })\n );\n }\n\n return EMPTY;\n })\n )\n .subscribe();\n }\n\n private handleControlValueChanges(): void {\n this.control.valueChanges\n .pipe(debounceTime(200))\n .pipe(untilDestroyed(this))\n .pipe(\n filter((value: AutocompleteValue) => {\n this._onValidatorChange?.();\n\n if (!(value instanceof Object)) return true;\n\n this._changed?.(value.value);\n\n return false;\n })\n )\n .pipe(\n switchMap((value: AutocompleteValue) => {\n return this.loadOptions({ ...this.queryParams, query: value as string });\n })\n )\n .subscribe();\n }\n}\n","<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n (closed)=\"closed$.next()\"\n>\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n</mat-autocomplete>\n","import { Directive, inject } from '@angular/core';\nimport { WlcmAutocompleteComponent } from '../components/autocomplete/autocomplete.component';\nimport { WLCM_INPUT_BINDER } from '../constants';\n\n@Directive({\n standalone: true,\n selector: '[wlcmAcInputBinder]',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const ac: WlcmAutocompleteComponent = inject(WlcmAutocompleteComponent, { self: true });\n\n return { bind: () => ac.wlcmInput?.get() };\n },\n },\n ],\n})\nexport class WlcmAcInputBinderDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldSuffix]',\n standalone: true,\n})\nexport class WlcmFormFieldSuffixDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldHint]',\n host: { class: 'wlcm-hint' },\n standalone: true,\n})\nexport class WlcmFormFieldHintDirective {}\n","import { NgModule, Type } from '@angular/core';\nimport { WlcmFormFieldComponent } from './components/form-field/form-field.component';\nimport { WlcmInputDirective } from './directives/input.directive';\nimport { WlcmLabelComponent } from './components/label/label.component';\nimport { WlcmSelectComponent } from './components/select/select.component';\nimport { WlcmFormFieldCustomContainerDirective } from './directives/form-field-custom-container.directive';\nimport { WlcmAutocompleteComponent } from './components/autocomplete/autocomplete.component';\nimport { WlcmAcInputBinderDirective } from './directives/ac-input-binder.directive';\nimport { WlcmFormFieldSuffixDirective } from './directives/form-field-suffix.directive';\nimport { WlcmFormFieldHintDirective } from './directives/form-field-hint.directive';\n\nconst directives: Type<unknown>[] = [\n WlcmInputDirective,\n WlcmFormFieldCustomContainerDirective,\n WlcmFormFieldSuffixDirective,\n WlcmAcInputBinderDirective,\n WlcmFormFieldHintDirective,\n];\n\nconst components: Type<unknown>[] = [\n WlcmFormFieldComponent,\n WlcmAutocompleteComponent,\n WlcmSelectComponent,\n WlcmLabelComponent,\n];\n\n@NgModule({\n imports: [...components, ...directives],\n exports: [...components, ...directives],\n})\nexport class WlcmFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"wlcm-angular-forms.mjs","sources":["../../../../modules/forms/src/lib/forms/components/error/error.component.ts","../../../../modules/forms/src/lib/forms/components/error/error.component.html","../../../../modules/forms/src/lib/forms/services/form-state-handler.service.ts","../../../../modules/forms/src/lib/forms/constants/form-state-handlers.constants.ts","../../../../modules/forms/src/lib/forms/directives/form-field-custom-container.directive.ts","../../../../modules/forms/src/lib/forms/constants/form-errors.constants.ts","../../../../modules/forms/src/lib/forms/pipes/errors-mapper.pipe.ts","../../../../modules/forms/src/lib/forms/constants/form-elements.constants.ts","../../../../modules/forms/src/lib/forms/directives/form-field-prefix.directive.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.ts","../../../../modules/forms/src/lib/forms/components/form-field/form-field.component.html","../../../../modules/forms/src/lib/forms/directives/input.directive.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.ts","../../../../modules/forms/src/lib/forms/components/label/label.component.html","../../../../modules/forms/src/lib/forms/directives/autocomplete.directive.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.ts","../../../../modules/forms/src/lib/forms/components/autocomplete/autocomplete.component.html","../../../../modules/forms/src/lib/forms/directives/select-input-binder.directive.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.ts","../../../../modules/forms/src/lib/forms/components/select/select.component.html","../../../../modules/forms/src/lib/forms/directives/ac-input-binder.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-suffix.directive.ts","../../../../modules/forms/src/lib/forms/directives/form-field-hint.directive.ts","../../../../modules/forms/src/lib/forms/forms.module.ts","../../../../modules/forms/src/wlcm-angular-forms.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-error',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-error' },\n templateUrl: './error.component.html',\n styleUrls: ['./error.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmErrorComponent {}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FormStateHandlerService implements WlcmForm, WlcmFormControl {\n private readonly _stateChanges$: Subject<void> = new Subject();\n\n readonly stateChanges$: Observable<void> = this._stateChanges$.asObservable();\n\n updateFormState(): void {\n this._stateChanges$.next();\n }\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\nimport { WlcmForm, WlcmFormControl } from '../models/form.models';\nimport { FormStateHandlerService } from '../services';\n\nexport const WLCM_FORM: InjectionToken<WlcmForm> = new InjectionToken(\n 'WLCM_FORM'\n);\n\nexport const WLCM_FORM_PROVIDER: Provider = {\n provide: WLCM_FORM,\n useClass: FormStateHandlerService,\n};\n\nexport const WLCM_FORM_CONTROL: InjectionToken<WlcmFormControl> =\n new InjectionToken('WLCM_FORM_CONTROL');\n\nexport const WLCM_FORM_CONTROL_PROVIDER: Provider = {\n provide: WLCM_FORM_CONTROL,\n useFactory: () => inject(WLCM_FORM, { optional: true, skipSelf: true }),\n};\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldCustomContainer]',\n standalone: true,\n})\nexport class WlcmFormFieldCustomContainerDirective {\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFormErrors } from '../models/form-errors.models';\n\nexport const WLCM_ERRORS: InjectionToken<WlcmFormErrors> = new InjectionToken('WLCM_ERRORS');\n\nexport const WLCM_PRIORITY_ERRORS: InjectionToken<Set<string>> = new InjectionToken('WLCM_PRIORITY_ERRORS', {\n providedIn: 'root',\n factory: () => new Set(),\n});\n","import { ChangeDetectorRef, Inject, Pipe, PipeTransform } from '@angular/core';\nimport { FormControl, ValidationErrors } from '@angular/forms';\nimport { WlcmFormErrorFn, WlcmFormErrors } from '../models/form-errors.models';\nimport {\n WLCM_ERRORS,\n WLCM_PRIORITY_ERRORS,\n} from '../constants/form-errors.constants';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Pipe({\n name: 'errorsMapper',\n standalone: true,\n pure: false,\n})\nexport class ErrorsMapperPipe implements PipeTransform {\n private destroy$: Subject<void> = new Subject();\n\n currentError: string | null = null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(WLCM_ERRORS) private errors: WlcmFormErrors,\n @Inject(WLCM_PRIORITY_ERRORS) private priorityErrors: Set<string>\n ) {}\n\n transform(control: FormControl): string | null {\n this.handleStatusChanges(control);\n\n this.retrieveFirstError(control.errors);\n\n return this.currentError;\n }\n\n private retrieveFirstError(errors: ValidationErrors | null): void {\n if (!errors) return;\n\n Object.keys(errors).forEach(\n (key: string) => !errors[key] && delete errors[key]\n );\n\n const errorsTypes: string[] = Object.getOwnPropertyNames(errors);\n\n const priorityType: string | undefined = errorsTypes.find((type: string) =>\n this.priorityErrors.has(type)\n );\n\n const outputError: string = priorityType || errorsTypes[0];\n\n if (outputError) {\n this.currentError = (this.errors[outputError] as WlcmFormErrorFn)?.(\n errors[outputError]\n );\n }\n }\n\n private handleStatusChanges(control: FormControl): void {\n this.destroy$.next();\n\n control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.retrieveFirstError(control.errors);\n\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","import { ElementRef, InjectionToken } from '@angular/core';\nimport { WlcmInputBinder, WlcmInputGetter } from '../models/input.models';\nimport { WlcmFormField } from '../models/form.models';\n\nexport const WLCM_INPUT: InjectionToken<WlcmInputGetter> = new InjectionToken('WLCM_INPUT');\n\nexport const WLCM_INPUT_BINDER: InjectionToken<WlcmInputBinder> = new InjectionToken('WLCM_INPUT_BINDER');\n\nexport const WLCM_FORM_FIELD: InjectionToken<WlcmFormField> = new InjectionToken('WLCM_FORM_FIELD');\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldPrefix]',\n standalone: true,\n})\nexport class WlcmFormFieldPrefixDirective {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Inject,\n Optional,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { Validators, AbstractControl, NgControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmErrorComponent } from '../error/error.component';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER } from '../../constants/form-state-handlers.constants';\nimport { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ErrorsMapperPipe } from '../../pipes/errors-mapper.pipe';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants/form-elements.constants';\nimport { WlcmFormControl } from '../../models/form.models';\nimport { WlcmFormFieldInput, WlcmInputGetter } from '../../models/input.models';\nimport { Observable, merge } from 'rxjs';\nimport { WlcmFormFieldPrefixDirective } from '../../directives/form-field-prefix.directive';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-form-field',\n standalone: true,\n imports: [CommonModule, WlcmErrorComponent, ErrorsMapperPipe],\n host: { class: 'wlcm-form-field' },\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: WLCM_FORM_FIELD, useExisting: forwardRef(() => WlcmFormFieldComponent) },\n ],\n})\nexport class WlcmFormFieldComponent implements AfterViewInit {\n @ContentChild(NgControl, { descendants: true }) private ngControl!: NgControl;\n\n @ContentChild(WLCM_INPUT) private _inputRef?: WlcmInputGetter;\n\n @ContentChild(WlcmFormFieldPrefixDirective) protected prefix?: WlcmFormFieldPrefixDirective;\n\n @ContentChild(WlcmFormFieldCustomContainerDirective)\n protected customContainer?: WlcmFormFieldCustomContainerDirective;\n\n @ViewChild('defaultContainer')\n protected defaultContainer?: ElementRef<HTMLElement>;\n\n @HostBinding('class.wlcm-field-focused') get isFocused() {\n return this.inputRef?.isFocused();\n }\n\n @HostBinding('class.wlcm-field-required') get isRequired() {\n return this.control?.hasValidator(Validators.required);\n }\n\n @HostBinding('class.wlcm-field-invalid') get isInvalid() {\n return this.control?.invalid;\n }\n\n @HostBinding('class.wlcm-field-touched') get isTouched() {\n return this.control?.touched;\n }\n\n constructor(\n @Optional()\n @Inject(WLCM_FORM_CONTROL)\n private parentFormMember: WlcmFormControl,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.inputRef && !this.customContainer) {\n throw new Error('Input element should be bound to the wlcmInput directive.');\n }\n\n this.handleStateChanges();\n }\n\n focus(): void {\n if (!this.isFocused) this.inputRef?.focus();\n }\n\n get control(): AbstractControl | null {\n return this.ngControl?.control;\n }\n\n get inputContainer(): ElementRef<HTMLElement> {\n return this.customContainer?.elementRef || (this.defaultContainer as ElementRef<HTMLElement>);\n }\n\n private handleStateChanges(): void {\n const events: Observable<unknown>[] = this.controlEvents;\n\n if (this.parentFormMember) {\n events.push(this.parentFormMember.stateChanges$);\n }\n\n merge(...events)\n .pipe(untilDestroyed(this))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n private get inputRef(): WlcmFormFieldInput | undefined {\n return this._inputRef?.get();\n }\n\n private get controlEvents(): Observable<unknown>[] {\n const events: Observable<unknown>[] = [];\n\n if (this.inputRef) {\n events.push(this.inputRef.focus$, this.inputRef.blur$);\n }\n\n if (this.control) {\n events.push(this.control.statusChanges);\n }\n\n return events;\n }\n}\n","<ng-content select=\"wlcm-label\"></ng-content>\n\n<ng-content select=\"[wlcmFormFieldCustomContainer]\"></ng-content>\n\n<div\n class=\"wlcm-field-container\"\n (click)=\"focus()\"\n #defaultContainer\n *ngIf=\"!customContainer\"\n>\n <div class=\"wlcm-field-prefix\" [class.contains-children]=\"prefix\">\n <ng-content select=\"[wlcmFormFieldPrefix]\"></ng-content>\n </div>\n\n <ng-content select=\"[wlcmInput], wlcm-autocomplete\"></ng-content>\n\n <div class=\"wlcm-field-suffix\">\n <ng-content select=\"[wlcmFormFieldSuffix]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"[wlcmFormFieldHint]\"></ng-content>\n\n<div class=\"wlcm-field-error-container\" *ngIf=\"control\">\n <wlcm-error>{{ $any(control) | errorsMapper }}</wlcm-error>\n</div>\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { WLCM_INPUT, WLCM_INPUT_BINDER } from '../constants/form-elements.constants';\nimport { WlcmFormFieldInput, WlcmInputBinder } from '../models/input.models';\nimport { Observable, fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[wlcmInput]',\n host: { class: 'wlcm-form-field-input' },\n providers: [\n {\n provide: WLCM_INPUT,\n useFactory: () => {\n const input: WlcmInputDirective = inject(WlcmInputDirective, { self: true });\n\n const binder: WlcmInputBinder | null = inject(WLCM_INPUT_BINDER, { self: true, optional: true });\n\n return { get: () => (binder ? binder.bind() : input) };\n },\n },\n ],\n standalone: true,\n})\nexport class WlcmInputDirective implements WlcmFormFieldInput {\n constructor(private _elementRef: ElementRef<HTMLInputElement>) {}\n\n focus = (): void => this._elementRef.nativeElement.focus();\n\n isFocused = (): boolean => this._elementRef.nativeElement === document.activeElement;\n\n focus$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'focus');\n\n blur$: Observable<unknown> = fromEvent(this._elementRef.nativeElement, 'blur');\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-label',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-label' },\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmLabelComponent {\n @Input() required: boolean = false;\n\n @HostBinding('class.required') get isRequired(): boolean {\n return this.required;\n }\n}\n","<span class=\"wlcm-label-asterisk\">*</span>\n\n<ng-content></ng-content>\n","import { Directive, EventEmitter, Host, NgZone, Optional, Output } from '@angular/core';\nimport { asyncScheduler, fromEvent, observeOn, takeUntil } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { MatAutocomplete } from '@angular/material/autocomplete';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmAutocomplete]',\n standalone: true,\n})\nexport class AutocompleteDirective {\n @Output() panelScrolled: EventEmitter<void> = new EventEmitter();\n\n private _scrollWidth: number = 0;\n\n private _scrollWidthChanged: boolean = false;\n\n constructor(private zone: NgZone, @Host() @Optional() private autocomplete: MatAutocomplete) {\n this.handleOpenEvent();\n }\n\n private handleOpenEvent(): void {\n this.autocomplete.opened\n .pipe(untilDestroyed(this))\n .pipe(observeOn(asyncScheduler))\n .subscribe(() => this.zone.runOutsideAngular(() => this.handleScrolling()));\n }\n\n private handleScrolling(): void {\n const panel: HTMLElement = this.autocomplete.panel.nativeElement;\n\n this.setScrollWidth(panel.scrollWidth);\n\n fromEvent(panel, 'scroll')\n .pipe(takeUntil(this.autocomplete.closed))\n .subscribe(() => {\n if (this._scrollWidth !== panel.scrollWidth) {\n this.setScrollWidth(panel.scrollWidth);\n }\n\n if (panel.scrollWidth * 0.6 <= panel.scrollTop && this._scrollWidthChanged) {\n this.zone.run(() => this.panelScrolled.emit());\n\n this._scrollWidthChanged = false;\n }\n });\n }\n\n private setScrollWidth(width: number): void {\n this._scrollWidth = width;\n\n this._scrollWidthChanged = true;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Inject,\n Input,\n OnInit,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFormFieldComponent } from '../form-field/form-field.component';\nimport { WlcmLabelComponent } from '../label/label.component';\nimport { WlcmInputDirective } from '../../directives/input.directive';\nimport {\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n MatAutocompleteModule,\n MatAutocompleteOrigin,\n MatAutocompleteTrigger,\n} from '@angular/material/autocomplete';\nimport {\n BehaviorSubject,\n EMPTY,\n Observable,\n Subject,\n asyncScheduler,\n concatMap,\n debounceTime,\n empty,\n filter,\n first,\n observeOn,\n switchMap,\n tap,\n} from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { AutocompleteDirective } from '../../directives/autocomplete.directive';\nimport { DEFAULT_QUERY_PARAMS, PaginatedData, QueryParams, WlcmAutocompleteOption } from '@wlcm/angular/core';\nimport { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants';\nimport { WlcmInputGetter } from '../../models/input.models';\nimport { WlcmFormField } from '../../models/form.models';\n\ntype Option = WlcmAutocompleteOption;\n\ntype AutocompleteValue = WlcmAutocompleteOption | string | null;\n\nconst PANEL_CLASS: string = 'wlcm-autocomplete-panel';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-autocomplete',\n standalone: true,\n imports: [\n CommonModule,\n MatAutocompleteModule,\n AutocompleteDirective,\n ReactiveFormsModule,\n WlcmFormFieldComponent,\n WlcmLabelComponent,\n WlcmInputDirective,\n ],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },\n ],\n})\nexport class WlcmAutocompleteComponent implements OnInit, ControlValueAccessor, Validator, AfterViewInit {\n @Input() pullDataMethod!: (params: QueryParams) => Observable<PaginatedData<Option>>;\n\n @Input() label!: string;\n\n @Input() required: boolean = false;\n\n @Input() placeholder: string = '';\n\n readonly control: FormControl<AutocompleteValue> = new FormControl('');\n\n private readonly _loadMore$: Subject<void> = new Subject();\n\n private readonly _options$: BehaviorSubject<Option[]> = new BehaviorSubject<Option[]>([]);\n\n protected readonly options$: Observable<Option[]> = this._options$.asObservable();\n\n protected readonly closed$: Subject<void> = new Subject();\n\n private queryParams: QueryParams = { ...DEFAULT_QUERY_PARAMS, limit: 15 };\n\n private _changed?: (value: string) => void;\n\n private _touched?: () => void;\n\n private _onValidatorChange?: () => void;\n\n private _paginatedData: PaginatedData<Option> | null = null;\n\n @ViewChild(WLCM_INPUT) public wlcmInput!: WlcmInputGetter;\n\n @ViewChild(MatAutocompleteTrigger) private autocompleteTrigger!: MatAutocompleteTrigger;\n\n constructor(@Inject(WLCM_FORM_FIELD) private formField: WlcmFormField) {\n this.handleLoadMoreEvent();\n this.handleControlValueChanges();\n }\n\n ngOnInit(): void {\n this.loadOptions(this.queryParams).subscribe();\n }\n\n ngAfterViewInit(): void {\n const container: ElementRef = this.formField.inputContainer;\n\n const origin: MatAutocompleteOrigin = new MatAutocompleteOrigin(container);\n\n this.autocompleteTrigger.connectedTo = origin;\n }\n\n displayWith(value: Option | string): string {\n if (value instanceof Object) {\n return value.viewValue;\n }\n\n return value;\n }\n\n loadMore(): void {\n this._loadMore$.next();\n }\n\n writeValue(value: AutocompleteValue): void {\n this.control.setValue(value);\n }\n\n registerOnChange(callback: (value: string) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n return this.control.disable();\n }\n\n this.control.enable();\n }\n\n blured(): void {\n let closed: Observable<void> = new Observable((observer) => (observer.next(), observer.complete()));\n\n if (this.autocompleteTrigger.panelOpen) {\n closed = this.closed$.pipe(first(), observeOn(asyncScheduler));\n }\n\n closed.subscribe(() => this._touched?.());\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!!this.control.value) {\n if (this.control.value instanceof Object) return null;\n\n return { ...control.errors, unselected: true, required: false };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onValidatorChange = fn;\n }\n\n private loadOptions(params: QueryParams): Observable<PaginatedData<Option>> {\n this._options$.next([]);\n\n return this.pullDataMethod({ ...params, page: 1 }).pipe(\n tap((paginatedData: PaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next(paginatedData.data);\n })\n );\n }\n\n private handleLoadMoreEvent(): void {\n this._loadMore$\n .pipe(\n concatMap(() => {\n if (this._paginatedData && this._paginatedData.currPage + 1 <= this._paginatedData.totalPages) {\n this.queryParams.page++;\n\n return this.pullDataMethod(this.queryParams).pipe(\n tap((paginatedData: PaginatedData<Option>) => {\n this._paginatedData = paginatedData;\n\n this._options$.next([...this._options$.value, ...paginatedData.data]);\n })\n );\n }\n\n return EMPTY;\n })\n )\n .subscribe();\n }\n\n private handleControlValueChanges(): void {\n this.control.valueChanges\n .pipe(debounceTime(200))\n .pipe(untilDestroyed(this))\n .pipe(\n filter((value: AutocompleteValue) => {\n this._onValidatorChange?.();\n\n if (!(value instanceof Object)) return true;\n\n this._changed?.(value.value);\n\n return false;\n })\n )\n .pipe(\n switchMap((value: AutocompleteValue) => {\n return this.loadOptions({ ...this.queryParams, query: value as string });\n })\n )\n .subscribe();\n }\n}\n","<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n (closed)=\"closed$.next()\"\n>\n <mat-option *ngFor=\"let option of options$ | async\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n</mat-autocomplete>\n","import { Directive, inject } from '@angular/core';\nimport { WLCM_INPUT_BINDER } from '../constants';\nimport { WlcmSelectComponent } from '../components';\n\n@Directive({\n standalone: true,\n selector: '[wlcmSelectInputBinder]',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const select: WlcmSelectComponent = inject(WlcmSelectComponent, { self: true });\n\n return { bind: () => select };\n },\n },\n ],\n})\nexport class WlcmSelectInputBinderDirective {}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n Optional,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { MAT_SELECT_CONFIG, MatSelect, MatSelectChange, MatSelectModule } from '@angular/material/select';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmIconDirective, WlcmIconName, WlcmOption } from '@wlcm/angular/core';\nimport { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';\nimport { WlcmFormControl, WlcmFormField, WlcmFormFieldInput } from '../../models/_index';\nimport { BehaviorSubject, EMPTY, Observable, first, fromEvent, switchMap } from 'rxjs';\nimport { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\n\ntype SelectValue = string[] | string;\n\nconst PANEL_CLASS: string = 'wlcm-select-panel';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-select',\n standalone: true,\n imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective, WlcmSelectInputBinderDirective],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [WlcmSelectInputBinderDirective],\n providers: [\n WLCM_FORM_CONTROL_PROVIDER,\n { provide: MAT_SELECT_CONFIG, useValue: { overlayPanelClass: PANEL_CLASS } },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },\n ],\n})\nexport class WlcmSelectComponent implements WlcmFormFieldInput, ControlValueAccessor {\n @Input() multiple: boolean = false;\n\n @Input() placeholder: string = 'Not selected';\n\n @Input() options: WlcmOption[] = [];\n\n readonly control: FormControl = new FormControl();\n\n readonly WlcmIconName = WlcmIconName;\n\n private _changed?: (value: WlcmOption) => void;\n\n private _touched?: () => void;\n\n private _validatorChanged?: () => void;\n\n @ViewChild(MatSelect) matSelect!: MatSelect;\n\n private readonly _focusStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n private readonly _blurStream$: BehaviorSubject<Observable<void>> = new BehaviorSubject(EMPTY as Observable<void>);\n\n focus$: Observable<unknown> = this._focusStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n blur$: Observable<unknown> = this._blurStream$.pipe(switchMap((stream: Observable<unknown>) => stream));\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(WLCM_FORM_FIELD) private formField: WlcmFormField,\n @Optional() @Inject(WLCM_FORM_CONTROL) private parentFormMember: WlcmFormControl\n ) {\n if (this.parentFormMember) {\n this.handleStateChange();\n }\n }\n\n ngAfterViewInit(): void {\n const formField: ElementRef<HTMLElement> = this.formField.inputContainer;\n\n if (formField) {\n this.matSelect._preferredOverlayOrigin = new CdkOverlayOrigin(this.formField.inputContainer);\n }\n\n this._focusStream$.next(this.matSelect._openedStream);\n\n this._blurStream$.next(this.matSelect._closedStream);\n }\n\n focus = (): void => this.matSelect.open();\n\n isFocused = (): boolean => this.isOpen;\n\n select(event: MatSelectChange): void {\n this._changed?.(event.value);\n\n this._validatorChanged?.();\n }\n\n openPanel(): void {\n this.matSelect.open();\n }\n\n closePanel(): void {\n this.matSelect.close();\n }\n\n panelOpened(): void {\n this.handleClickOutside();\n }\n\n writeValue(value: SelectValue): void {\n this.control.setValue(value);\n }\n\n registerOnChange(callback: (value: WlcmOption) => void): void {\n this._changed = callback;\n }\n\n registerOnTouched(callback: () => void): void {\n this._touched = callback;\n }\n\n registerOnValidatorChange(callback: () => void): void {\n this._validatorChanged = callback;\n }\n\n validate(control: AbstractControl): void {\n this.control.setErrors(control.errors);\n\n if (control.touched) {\n this.control.markAsTouched();\n } else {\n this.control.markAsUntouched();\n }\n }\n\n get isOpen(): boolean {\n return this.matSelect?.panelOpen ?? false;\n }\n\n private handleStateChange(): void {\n this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n\n private handleClickOutside(): void {\n const overlayContainer: HTMLElement | null = document.querySelector(`.cdk-overlay-container:has(.${PANEL_CLASS})`);\n\n const backdrop: HTMLElement | null | undefined = overlayContainer?.querySelector(`.cdk-overlay-backdrop`);\n\n if (backdrop instanceof HTMLElement) {\n fromEvent(backdrop, 'click')\n .pipe(first())\n .subscribe(() => {\n this._touched?.();\n\n this._validatorChanged?.();\n\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n>\n <mat-option *ngFor=\"let option of options\" [value]=\"option.value\">\n {{ option.viewValue }}\n </mat-option>\n</mat-select>\n\n<ng-container [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"></ng-container>\n","import { Directive, inject } from '@angular/core';\nimport { WlcmAutocompleteComponent } from '../components/autocomplete/autocomplete.component';\nimport { WLCM_INPUT_BINDER } from '../constants';\n\n@Directive({\n standalone: true,\n selector: '[wlcmAcInputBinder]',\n providers: [\n {\n provide: WLCM_INPUT_BINDER,\n useFactory: () => {\n const ac: WlcmAutocompleteComponent = inject(WlcmAutocompleteComponent, { self: true });\n\n return { bind: () => ac.wlcmInput?.get() };\n },\n },\n ],\n})\nexport class WlcmAcInputBinderDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldSuffix]',\n standalone: true,\n})\nexport class WlcmFormFieldSuffixDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[wlcmFormFieldHint]',\n host: { class: 'wlcm-hint' },\n standalone: true,\n})\nexport class WlcmFormFieldHintDirective {}\n","import { NgModule, Type } from '@angular/core';\nimport { WlcmFormFieldComponent } from './components/form-field/form-field.component';\nimport { WlcmInputDirective } from './directives/input.directive';\nimport { WlcmLabelComponent } from './components/label/label.component';\nimport { WlcmSelectComponent } from './components/select/select.component';\nimport { WlcmFormFieldCustomContainerDirective } from './directives/form-field-custom-container.directive';\nimport { WlcmAutocompleteComponent } from './components/autocomplete/autocomplete.component';\nimport { WlcmAcInputBinderDirective } from './directives/ac-input-binder.directive';\nimport { WlcmFormFieldSuffixDirective } from './directives/form-field-suffix.directive';\nimport { WlcmFormFieldHintDirective } from './directives/form-field-hint.directive';\nimport { WlcmFormFieldPrefixDirective } from './directives/form-field-prefix.directive';\n\nconst directives: Type<unknown>[] = [\n WlcmInputDirective,\n WlcmFormFieldCustomContainerDirective,\n WlcmFormFieldSuffixDirective,\n WlcmFormFieldPrefixDirective,\n WlcmAcInputBinderDirective,\n WlcmFormFieldHintDirective,\n];\n\nconst components: Type<unknown>[] = [\n WlcmFormFieldComponent,\n WlcmAutocompleteComponent,\n WlcmSelectComponent,\n WlcmLabelComponent,\n];\n\n@NgModule({\n imports: [...components, ...directives],\n exports: [...components, ...directives],\n})\nexport class WlcmFormsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","PANEL_CLASS","i2","i1.WlcmSelectInputBinderDirective","i3","i4","i5"],"mappings":"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"}
package/forms/index.d.ts CHANGED
@@ -2,6 +2,8 @@ export * from './lib/forms/forms.module';
2
2
  export * from './lib/forms/models/_index';
3
3
  export * from './lib/forms/constants/index';
4
4
  export * from './lib/forms/directives/form-field-custom-container.directive';
5
+ export * from './lib/forms/directives/select-input-binder.directive';
6
+ export * from './lib/forms/directives/form-field-prefix.directive';
5
7
  export * from './lib/forms/directives/form-field-suffix.directive';
6
8
  export * from './lib/forms/directives/form-field-hint.directive';
7
9
  export * from './lib/forms/directives/ac-input-binder.directive';
@@ -2,15 +2,17 @@ import { AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
2
2
  import { AbstractControl } from '@angular/forms';
3
3
  import { WlcmFormFieldCustomContainerDirective } from '../../directives/form-field-custom-container.directive';
4
4
  import { WlcmFormControl } from '../../models/form.models';
5
+ import { WlcmFormFieldPrefixDirective } from '../../directives/form-field-prefix.directive';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class WlcmFormFieldComponent implements AfterViewInit {
7
8
  private parentFormMember;
8
9
  private changeDetectorRef;
9
10
  private ngControl;
10
11
  private _inputRef?;
12
+ protected prefix?: WlcmFormFieldPrefixDirective;
11
13
  protected customContainer?: WlcmFormFieldCustomContainerDirective;
12
14
  protected defaultContainer?: ElementRef<HTMLElement>;
13
- get isFocused(): boolean;
15
+ get isFocused(): boolean | undefined;
14
16
  get isRequired(): boolean | undefined;
15
17
  get isInvalid(): boolean | undefined;
16
18
  get isTouched(): boolean | undefined;
@@ -23,5 +25,5 @@ export declare class WlcmFormFieldComponent implements AfterViewInit {
23
25
  private get inputRef();
24
26
  private get controlEvents();
25
27
  static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFormFieldComponent, [{ optional: true; }, null]>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFormFieldComponent, "wlcm-form-field", never, {}, {}, ["ngControl", "_inputRef", "customContainer"], ["wlcm-label", "[wlcmFormFieldCustomContainer]", "[wlcmInput], wlcm-autocomplete", "[wlcmFormFieldSuffix]", "[wlcmFormFieldHint]"], true, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmFormFieldComponent, "wlcm-form-field", never, {}, {}, ["ngControl", "_inputRef", "prefix", "customContainer"], ["wlcm-label", "[wlcmFormFieldCustomContainer]", "[wlcmFormFieldPrefix]", "[wlcmInput], wlcm-autocomplete", "[wlcmFormFieldSuffix]", "[wlcmFormFieldHint]"], true, never>;
27
29
  }
@@ -1,31 +1,46 @@
1
1
  import { ChangeDetectorRef } from '@angular/core';
2
2
  import { AbstractControl, ControlValueAccessor, FormControl } from '@angular/forms';
3
- import { MatSelectChange } from '@angular/material/select';
4
- import { WlcmOption } from '@wlcm/angular/core';
5
- import { WlcmFormControl } from '../../models/_index';
3
+ import { MatSelect, MatSelectChange } from '@angular/material/select';
4
+ import { WlcmIconName, WlcmOption } from '@wlcm/angular/core';
5
+ import { WlcmFormControl, WlcmFormField, WlcmFormFieldInput } from '../../models/_index';
6
+ import { Observable } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "../../directives/select-input-binder.directive";
7
9
  type SelectValue = string[] | string;
8
- export declare class WlcmSelectComponent implements ControlValueAccessor {
10
+ export declare class WlcmSelectComponent implements WlcmFormFieldInput, ControlValueAccessor {
9
11
  private changeDetectorRef;
12
+ private formField;
10
13
  private parentFormMember;
11
14
  multiple: boolean;
12
15
  placeholder: string;
13
16
  options: WlcmOption[];
14
17
  readonly control: FormControl;
18
+ readonly WlcmIconName: typeof WlcmIconName;
15
19
  private _changed?;
16
20
  private _touched?;
17
21
  private _validatorChanged?;
18
- constructor(changeDetectorRef: ChangeDetectorRef, parentFormMember: WlcmFormControl);
22
+ matSelect: MatSelect;
23
+ private readonly _focusStream$;
24
+ private readonly _blurStream$;
25
+ focus$: Observable<unknown>;
26
+ blur$: Observable<unknown>;
27
+ constructor(changeDetectorRef: ChangeDetectorRef, formField: WlcmFormField, parentFormMember: WlcmFormControl);
28
+ ngAfterViewInit(): void;
29
+ focus: () => void;
30
+ isFocused: () => boolean;
19
31
  select(event: MatSelectChange): void;
32
+ openPanel(): void;
33
+ closePanel(): void;
20
34
  panelOpened(): void;
21
35
  writeValue(value: SelectValue): void;
22
36
  registerOnChange(callback: (value: WlcmOption) => void): void;
23
37
  registerOnTouched(callback: () => void): void;
24
38
  registerOnValidatorChange(callback: () => void): void;
25
39
  validate(control: AbstractControl): void;
40
+ get isOpen(): boolean;
26
41
  private handleStateChange;
27
42
  private handleClickOutside;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<WlcmSelectComponent, [null, { optional: true; }]>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<WlcmSelectComponent, "wlcm-select", never, { "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, true, never>;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmSelectComponent, [null, null, { optional: true; }]>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmSelectComponent, "wlcm-select", never, { "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.WlcmSelectInputBinderDirective; inputs: {}; outputs: {}; }]>;
30
45
  }
31
46
  export {};
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class WlcmFormFieldPrefixDirective {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFormFieldPrefixDirective, never>;
4
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmFormFieldPrefixDirective, "[wlcmFormFieldPrefix]", never, {}, {}, never, never, true, never>;
5
+ }
@@ -1,5 +1,14 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { WlcmFormFieldInput } from '../models/input.models';
3
+ import { Observable } from 'rxjs';
1
4
  import * as i0 from "@angular/core";
2
- export declare class WlcmInputDirective {
5
+ export declare class WlcmInputDirective implements WlcmFormFieldInput {
6
+ private _elementRef;
7
+ constructor(_elementRef: ElementRef<HTMLInputElement>);
8
+ focus: () => void;
9
+ isFocused: () => boolean;
10
+ focus$: Observable<unknown>;
11
+ blur$: Observable<unknown>;
3
12
  static ɵfac: i0.ɵɵFactoryDeclaration<WlcmInputDirective, never>;
4
13
  static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmInputDirective, "[wlcmInput]", never, {}, {}, never, never, true, never>;
5
14
  }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class WlcmSelectInputBinderDirective {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<WlcmSelectInputBinderDirective, never>;
4
+ static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmSelectInputBinderDirective, "[wlcmSelectInputBinder]", never, {}, {}, never, never, true, never>;
5
+ }
@@ -6,10 +6,11 @@ import * as i4 from "./components/label/label.component";
6
6
  import * as i5 from "./directives/input.directive";
7
7
  import * as i6 from "./directives/form-field-custom-container.directive";
8
8
  import * as i7 from "./directives/form-field-suffix.directive";
9
- import * as i8 from "./directives/ac-input-binder.directive";
10
- import * as i9 from "./directives/form-field-hint.directive";
9
+ import * as i8 from "./directives/form-field-prefix.directive";
10
+ import * as i9 from "./directives/ac-input-binder.directive";
11
+ import * as i10 from "./directives/form-field-hint.directive";
11
12
  export declare class WlcmFormsModule {
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFormsModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmFormsModule, never, [typeof i1.WlcmFormFieldComponent, typeof i2.WlcmAutocompleteComponent, typeof i3.WlcmSelectComponent, typeof i4.WlcmLabelComponent, typeof i5.WlcmInputDirective, typeof i6.WlcmFormFieldCustomContainerDirective, typeof i7.WlcmFormFieldSuffixDirective, typeof i8.WlcmAcInputBinderDirective, typeof i9.WlcmFormFieldHintDirective], [typeof i1.WlcmFormFieldComponent, typeof i2.WlcmAutocompleteComponent, typeof i3.WlcmSelectComponent, typeof i4.WlcmLabelComponent, typeof i5.WlcmInputDirective, typeof i6.WlcmFormFieldCustomContainerDirective, typeof i7.WlcmFormFieldSuffixDirective, typeof i8.WlcmAcInputBinderDirective, typeof i9.WlcmFormFieldHintDirective]>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmFormsModule, never, [typeof i1.WlcmFormFieldComponent, typeof i2.WlcmAutocompleteComponent, typeof i3.WlcmSelectComponent, typeof i4.WlcmLabelComponent, typeof i5.WlcmInputDirective, typeof i6.WlcmFormFieldCustomContainerDirective, typeof i7.WlcmFormFieldSuffixDirective, typeof i8.WlcmFormFieldPrefixDirective, typeof i9.WlcmAcInputBinderDirective, typeof i10.WlcmFormFieldHintDirective], [typeof i1.WlcmFormFieldComponent, typeof i2.WlcmAutocompleteComponent, typeof i3.WlcmSelectComponent, typeof i4.WlcmLabelComponent, typeof i5.WlcmInputDirective, typeof i6.WlcmFormFieldCustomContainerDirective, typeof i7.WlcmFormFieldSuffixDirective, typeof i8.WlcmFormFieldPrefixDirective, typeof i9.WlcmAcInputBinderDirective, typeof i10.WlcmFormFieldHintDirective]>;
14
15
  static ɵinj: i0.ɵɵInjectorDeclaration<WlcmFormsModule>;
15
16
  }
@@ -1,7 +1,13 @@
1
- import { ElementRef } from '@angular/core';
1
+ import { Observable } from 'rxjs';
2
2
  export interface WlcmInputGetter {
3
- get: () => ElementRef<HTMLInputElement>;
3
+ get: () => WlcmFormFieldInput;
4
4
  }
5
5
  export interface WlcmInputBinder {
6
- bind: () => ElementRef<HTMLInputElement>;
6
+ bind: () => WlcmFormFieldInput;
7
+ }
8
+ export interface WlcmFormFieldInput {
9
+ focus$: Observable<unknown>;
10
+ blur$: Observable<unknown>;
11
+ isFocused(): boolean;
12
+ focus(): void;
7
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wlcm/angular",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "module": "./index.mjs",
@@ -34,6 +34,12 @@
34
34
  }
35
35
  }
36
36
 
37
+ .wlcm-field-prefix {
38
+ &.contains-children {
39
+ margin-right: 8px;
40
+ }
41
+ }
42
+
37
43
  .wlcm-field-container {
38
44
  display: flex;
39
45
  align-items: center;
@@ -4,39 +4,29 @@
4
4
  @mixin theme($theme-config) {
5
5
  $theme: utils.using-theme($theme_config);
6
6
 
7
- .mat-mdc-autocomplete-panel,
8
- .mat-mdc-select-panel {
7
+ .mat-mdc-select-panel,
8
+ .mat-mdc-autocomplete-panel {
9
9
  padding: 0 !important;
10
- border: 1px solid map-get($theme, focus-field-outline-color);
11
- border-radius: 4px !important;
12
10
  }
13
11
 
14
12
  // Select
15
- .mat-mdc-select-panel {
16
- margin-left: -1px !important;
13
+ .wlcm-select-panel,
14
+ .wlcm-autocomplete-panel {
15
+ border: 1px solid map-get($theme, focus-field-outline-color);
16
+ border-radius: 4px !important;
17
17
  box-shadow: none !important;
18
+ overflow: hidden;
18
19
  }
19
20
 
20
21
  mat-select {
21
- border: 1px solid map-get($theme, field-outline-color);
22
- box-sizing: border-box;
23
- border-radius: 4px;
24
-
25
- &:hover {
26
- border-color: map-get($theme, hover-field-outline-color);
27
- }
28
-
29
- &.focused {
30
- border-color: map-get($theme, focus-field-outline-color);
31
- }
22
+ line-height: 18px !important;
32
23
 
33
- &.ng-invalid.ng-touched {
34
- border-color: map-get($theme, warn-color);
24
+ .mat-mdc-select-arrow-wrapper {
25
+ display: none !important;
35
26
  }
36
27
 
37
28
  .mat-mdc-select-trigger {
38
- height: 30px !important;
39
- padding: 0 8px !important;
29
+ height: 18px !important;
40
30
 
41
31
  .mat-mdc-select-min-line {
42
32
  font-size: 14px;