{"version":3,"file":"sebgroup-green-angular-src-lib-datepicker.mjs","sources":["../../../../libs/angular/src/lib/datepicker/datepicker.component.ts","../../../../libs/angular/src/lib/datepicker/datepicker.component.html","../../../../libs/angular/src/lib/datepicker/datepicker.module.ts","../../../../libs/angular/src/lib/datepicker/sebgroup-green-angular-src-lib-datepicker.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core'\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  ValidatorFn,\n} from '@angular/forms'\nimport { endOfDay, startOfDay } from 'date-fns'\n\nimport { randomId } from '@sebgroup/green-angular/src/lib/shared'\nimport { GdsDatepicker } from '@sebgroup/green-core/components/datepicker/datepicker.component.js'\nimport * as DatepickerTransStyles from '@sebgroup/green-core/components/datepicker/datepicker.trans.styles.js'\n\nexport interface Attributes {\n  id?: string\n  role?: string\n  style?: CSSStyleDeclaration\n  tabIndex?: number\n}\n\nexport interface ElementProps {\n  attributes: Attributes\n  classes: string[]\n}\n\nexport interface DatepickerOptions {\n  label?: string\n  currentDate?: Date | string\n  selectedDate?: Date | string\n  showWeeks?: boolean\n  minDate?: Date\n  maxDate?: Date\n  dateFormat?: string\n  onChange?: (selectedDate: Date) => void\n}\n\n/**\n * @deprecated\n * NggDatepicker is deprecated in favor of GdsDatepicker found in the Core package\n * https://storybook.seb.io/latest/core/?path=/docs/components-datepicker--docs\n */\n@Component({\n  selector: 'ngg-datepicker',\n  templateUrl: 'datepicker.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: NggDatepickerComponent,\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class NggDatepickerComponent\n  implements ControlValueAccessor, AfterViewInit\n{\n  @Input() size?: 'small' | 'medium'\n  @Input() hideLabel?: boolean\n  @Input() disabledWeekends?: boolean\n  @Input() disabledDates?: Date[]\n\n  @Input()\n  get options(): DatepickerOptions {\n    return <DatepickerOptions>this._options\n  }\n  set options(value: DatepickerOptions) {\n    this._options = value\n  }\n\n  get showWeekNumbers(): boolean {\n    return this.options?.showWeeks ?? false\n  }\n\n  get dateFormat(): string {\n    return this.options?.dateFormat ?? 'y-m-d'\n  }\n\n  @Input()\n  get value(): string | Date | undefined {\n    return this._value\n  }\n  set value(newValue: string | Date | undefined) {\n    if (typeof newValue === 'string') {\n      newValue = new Date(newValue)\n    }\n    if (newValue !== this._value) {\n      this._value = newValue || undefined\n    }\n  }\n\n  @Input() id?: string = randomId()\n  @Input() label?: string\n  @Input() isValid: boolean | null = null\n  @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>()\n\n  onChangeFn?: (value: any) => void\n  onTouchedFn?: any\n\n  _value: Date | undefined\n  private _options?: DatepickerOptions\n\n  get min(): Date | undefined {\n    const minDate = this.options?.minDate\n    return minDate ? minDate : new Date(new Date().getFullYear() - 10, 0, 1)\n  }\n\n  get max(): Date | undefined {\n    const maxDate = this.options?.maxDate\n    return maxDate ? maxDate : new Date(new Date().getFullYear() + 10, 0, 1)\n  }\n\n  constructor(private _cdr: ChangeDetectorRef) {\n    GdsDatepicker.define()\n    DatepickerTransStyles.register()\n  }\n\n  writeValue(value: any): void {\n    this.value = value\n    this._cdr.detectChanges()\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeFn = fn\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedFn = fn\n  }\n\n  onDateChange(evt: Event) {\n    const target = evt.target as GdsDatepicker\n\n    this.value = target.value\n\n    this.valueChange.emit(target.value)\n    this.onChangeFn && this.onChangeFn(target.value)\n  }\n\n  ngAfterViewInit(): void {\n    this._cdr.detectChanges()\n  }\n}\n\nexport function dateValidator(dates?: { min?: Date; max?: Date }): ValidatorFn {\n  return (control: AbstractControl): ValidationErrors | null => {\n    const value = control.value\n    if (!value) {\n      return null\n    }\n    const newDate = new Date(value)\n    const isValidDate = !isNaN(newDate.getTime())\n    if (!isValidDate) {\n      return { validDate: true }\n    }\n\n    const validMinDate = dates?.min ? newDate >= startOfDay(dates.min) : true\n    const validMaxDate = dates?.max ? newDate <= endOfDay(dates.max) : true\n\n    if (!validMinDate && dates?.min) {\n      return {\n        validDate: {\n          minDate: startOfDay(dates.min),\n          actualDate: newDate,\n        },\n      }\n    }\n    if (!validMaxDate && dates?.max) {\n      return {\n        validDate: {\n          maxDate: endOfDay(dates.max),\n          actualDate: newDate,\n        },\n      }\n    }\n\n    return null\n  }\n}\n","<div class=\"form-group\">\n  <gds-datepicker\n    *nggCoreElement\n    [attr.id]=\"id\"\n    [label]=\"label\"\n    [value]=\"value\"\n    (change)=\"onDateChange($event)\"\n    [invalid]=\"isValid === false\"\n    [min]=\"min\"\n    [max]=\"max\"\n    [showWeekNumbers]=\"showWeekNumbers\"\n    [dateformat]=\"dateFormat\"\n    [size]=\"size === 'small' ? 'small' : 'large'\"\n    [hideLabel]=\"hideLabel\"\n    [disabledWeekends]=\"disabledWeekends\"\n    [disabledDates]=\"disabledDates\"\n  >\n    <span slot=\"message\">\n      <ng-content select=\"[data-form-info]\"></ng-content>\n    </span>\n  </gds-datepicker>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\n\nimport {\n  NggCoreWrapperModule,\n  SCOPE_RESOLVER,\n} from '@sebgroup/green-angular/src/lib/shared'\nimport { getScopedTagName } from '@sebgroup/green-core/scoping'\nimport { NggDatepickerComponent } from './datepicker.component'\n\n/**\n * @deprecated\n * NggDatepicker is deprecated in favor of GdsDatepicker found in the Core package\n * https://storybook.seb.io/latest/core/?path=/docs/components-datepicker--docs\n */\n@NgModule({\n  declarations: [NggDatepickerComponent],\n  imports: [CommonModule, NggCoreWrapperModule],\n  exports: [NggDatepickerComponent],\n  providers: [\n    {\n      provide: SCOPE_RESOLVER,\n      useValue: { getScopedTagName },\n    },\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NggDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AA6CA;;;;AAIG;MAcU,sBAAsB,CAAA;AAQjC,IAAA,IACI,OAAO,GAAA;QACT,OAA0B,IAAI,CAAC,QAAQ;IACzC;IACA,IAAI,OAAO,CAAC,KAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,KAAK;IACzC;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,OAAO;IAC5C;AAEA,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IACA,IAAI,KAAK,CAAC,QAAmC,EAAA;AAC3C,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC/B;AACA,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,SAAS;QACrC;IACF;AAaA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;QACrC,OAAO,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E;AAEA,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;QACrC,OAAO,OAAO,GAAG,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E;AAEA,IAAA,WAAA,CAAoB,IAAuB,EAAA;QAAvB,IAAA,CAAA,IAAI,GAAJ,IAAI;QArBf,IAAA,CAAA,EAAE,GAAY,QAAQ,EAAE;QAExB,IAAA,CAAA,OAAO,GAAmB,IAAI;AACpB,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO;QAmBzE,aAAa,CAAC,MAAM,EAAE;QACtB,qBAAqB,CAAC,QAAQ,EAAE;IAClC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,YAAY,CAAC,GAAU,EAAA;AACrB,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAuB;AAE1C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QAEzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IAClD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC3B;+GAvFW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAVtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3DH,ynBAsBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDyCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,SAAA,EAEf;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,sBAAwB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,ynBAAA,EAAA;sFAKR,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAGG,OAAO,EAAA,CAAA;sBADV;gBAiBG,KAAK,EAAA,CAAA;sBADR;gBAaQ,EAAE,EAAA,CAAA;sBAAV;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACkB,WAAW,EAAA,CAAA;sBAA7B;;AAkDG,SAAU,aAAa,CAAC,KAAkC,EAAA;IAC9D,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QAC3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;QAC5B;QAEA,MAAM,YAAY,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;QACzE,MAAM,YAAY,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;AAEvE,QAAA,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,GAAG,EAAE;YAC/B,OAAO;AACL,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,oBAAA,UAAU,EAAE,OAAO;AACpB,iBAAA;aACF;QACH;AACA,QAAA,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE,GAAG,EAAE;YAC/B,OAAO;AACL,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5B,oBAAA,UAAU,EAAE,OAAO;AACpB,iBAAA;aACF;QACH;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AACH;;AEjLA;;;;AAIG;MAaU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAXf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,oBAAoB,aAClC,sBAAsB,CAAA,EAAA,CAAA,CAAA;AASrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,SAAA,EARnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,EAAE,gBAAgB,EAAE;AAC/B,aAAA;SACF,EAAA,OAAA,EAAA,CAPS,YAAY,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAUjC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;oBAC7C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,cAAc;4BACvB,QAAQ,EAAE,EAAE,gBAAgB,EAAE;AAC/B,yBAAA;AACF,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;AC1BD;;AAEG;;;;"}