{"version":3,"file":"kara-ui-alfa-components-form-input-date-range.mjs","sources":["../../../libs/kara-ui/components/form/input-date-range/input-date-range.component.ts","../../../libs/kara-ui/components/form/input-date-range/input-date-range.component.html","../../../libs/kara-ui/components/form/input-date-range/kara-ui-alfa-components-form-input-date-range.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxMaskDirective } from 'ngx-mask';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { Observable, combineLatest, map } from 'rxjs';\nimport { KBaseInputComponent } from 'kara-ui-alfa/components/form/base';\nimport { KFieldErrorComponent } from 'kara-ui-alfa/components/form/field-error';\nimport { KHintComponent } from 'kara-ui-alfa/components/form/hint';\nimport {\n  KCalendarRangeComponent,\n  KaraDate,\n  KaraRangeDate,\n  disabledItemHandlerMapper,\n} from 'kara-ui-alfa/components/calendar';\nimport { KButtonComponent } from 'kara-ui-alfa/components/button';\nimport { KMaskShadowDirective } from 'kara-ui-alfa/components/form/mask-shadow';\nimport { KInputDateAbstract } from 'kara-ui-alfa/components/form/input-date';\n\nconst SEPARATOR = ' - ';\n\n@Component({\n  selector: 'k-input-date-range',\n  templateUrl: './input-date-range.component.html',\n  styleUrls: ['./input-date-range.component.scss', '../input/input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    KBaseInputComponent,\n    CdkOverlayOrigin,\n    NgxMaskDirective,\n    FormsModule,\n    ReactiveFormsModule,\n    KFieldErrorComponent,\n    KHintComponent,\n    CdkConnectedOverlay,\n    KCalendarRangeComponent,\n    KButtonComponent,\n    KMaskShadowDirective,\n  ],\n})\nexport class KInputDateRangeComponent extends KInputDateAbstract<KaraRangeDate> {\n  override get dateMask(): string | undefined {\n    if (this.monthOnly) {\n      return undefined;\n    }\n\n    const pattern = '00.00.0000';\n\n    return `${pattern}${SEPARATOR}${pattern}`;\n  }\n\n  override get placeholder(): string {\n    if (this.monthOnly) {\n      return `mm.yyyy${SEPARATOR}mm.yyyy`;\n    }\n\n    return `dd.mm.yyyy${SEPARATOR}dd.mm.yyyy`;\n  }\n\n  override onModelChange(value: string): void {\n    if (!value) {\n      this.updateValue(undefined);\n      return;\n    }\n\n    const [fromValue, toValue] = (value ?? '').split(SEPARATOR);\n\n    let fromData = this.parseDate(fromValue);\n    let toData = this.parseDate(toValue);\n\n    if (!fromData || !toData) {\n      return;\n    }\n\n    if (toData && fromData > toData) {\n      const tmp = fromData;\n      fromData = toData;\n      toData = tmp;\n    }\n\n    const from: KaraDate = {\n      year: fromData.getFullYear(),\n      month: fromData.getMonth(),\n      day: fromData.getDate(),\n    };\n\n    const date: KaraRangeDate = {\n      from,\n    };\n\n    if (toData) {\n      const to: KaraDate = {\n        year: toData.getFullYear(),\n        month: toData.getMonth(),\n        day: toData.getDate(),\n      };\n\n      date.to = to;\n    }\n\n    const isDisabled = disabledItemHandlerMapper(this.minDate, this.maxDate, this.disabledItemHandler);\n\n    if (isDisabled(date.from) || (date.to && isDisabled(date.to))) {\n      return;\n    }\n\n    this.updateValue(date);\n  }\n\n  protected override getFormattedDate(date: KaraRangeDate | undefined): Observable<string> {\n    return combineLatest([this.dateConvert(date?.from), this.dateConvert(date?.to)]).pipe(\n      map(([from, to]) => {\n        let result = from;\n\n        if (from) {\n          result += SEPARATOR;\n        }\n\n        result += to;\n\n        return result;\n      }),\n    );\n  }\n\n  public override writeValue(value: KaraRangeDate | undefined): void {\n    const from = value?.from ? this.normalize(value.from) : undefined;\n    const to = value?.to ? this.normalize(value.to) : undefined;\n\n    const newValue = !from\n      ? undefined\n      : {\n          from,\n          to,\n        };\n    super.writeValue(newValue);\n  }\n\n  protected override isSameValue(a: KaraRangeDate | undefined, b: KaraRangeDate | undefined): boolean {\n    return this.isSameDate(a?.from, b?.from) && this.isSameDate(a?.to, b?.to);\n  }\n}\n","<k-input-container\n  #origin=\"cdkOverlayOrigin\"\n  cdkOverlayOrigin\n  [id]=\"id\"\n  [label]=\"label\"\n  [isActive]=\"isFocused || isOpen || !!dateControl.value\"\n  [disabled]=\"disabled\"\n  [isLoading]=\"isLoading\"\n  (mousedown)=\"setFocus($event)\"\n>\n  <div class=\"k-input-shadow-container kui-base-default-medium\">\n    <input\n      #kInput\n      autocomplete=\"off\"\n      type=\"text\"\n      class=\"k-input_input kui-base-default-medium\"\n      [attr.readonly]=\"readonly || monthOnly || undefined\"\n      [class.filled]=\"isFocused || isOpen || dateControl.value\"\n      [class.with-label]=\"label\"\n      [id]=\"id\"\n      [mask]=\"dateMask\"\n      [dropSpecialCharacters]=\"false\"\n      [kMaskShadow]=\"placeholder\"\n      [formControl]=\"dateControl\"\n      (focus)=\"onFocus()\"\n      (blur)=\"onBlur()\"\n    />\n  </div>\n\n  <ng-container ngProjectAs=\"[kuiActions]\">\n    <ng-content select=\"[kuiActions]\"></ng-content>\n\n    @if (!(disabled || readonly) && isFocused && clearButton && dateControl.value) {\n      <button\n        type=\"button\"\n        kButton\n        theme=\"phantom-secondary\"\n        icon=\"dismiss-m\"\n        size=\"M\"\n        [onlyIcon]=\"true\"\n        (click)=\"clearInput($event)\"\n      ></button>\n    }\n    <button\n      type=\"button\"\n      kButton\n      theme=\"phantom-secondary\"\n      icon=\"calendar-m\"\n      size=\"M\"\n      [disabled]=\"disabled || readonly\"\n      [onlyIcon]=\"true\"\n    ></button>\n  </ng-container>\n</k-input-container>\n\n@if (control && control.touched && !disabled) {\n  <k-field-error [control]=\"control?.control\" [errorMessages]=\"errorMessages()\"></k-field-error>\n}\n@if (hint) {\n  <k-hint [disabled]=\"disabled\">{{ hint }}</k-hint>\n}\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayOrigin]=\"origin\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  (detach)=\"close()\"\n>\n  <div #panel class=\"panel\">\n    <k-calendar-range\n      [value]=\"value\"\n      [monthOnly]=\"monthOnly\"\n      [minDate]=\"minDate\"\n      [maxDate]=\"maxDate\"\n      [disabledItemHandler]=\"disabledItemHandler\"\n      (valueChanges)=\"selectDate($event)\"\n    ></k-calendar-range>\n  </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}