asksuite-citrus 0.2.0 → 0.3.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.
@@ -0,0 +1,22 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-skeleton-loader";
4
+ export class SkeletonComponent {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ this.barsHeight = 100;
8
+ }
9
+ get barsCount() {
10
+ const height = this.elementRef.nativeElement.clientHeight;
11
+ return Math.round(height / this.barsHeight) || 1;
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SkeletonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SkeletonComponent, selector: "ask-skeleton", inputs: { barsHeight: "barsHeight" }, ngImport: i0, template: "<ngx-skeleton-loader\n data-testid=\"skeleton-loader\"\n class=\"skeleton-component\"\n [count]=\"barsCount\"\n appearance=\"line\"\n animation=\"progress\"\n [theme]=\"{\n 'border-radius': '5px',\n height: barsHeight+'px',\n margin: 0,\n display: 'block',\n }\"\n></ngx-skeleton-loader>\n", styles: [":host{display:block}.skeleton-component{display:flex;gap:10px;flex-direction:column;height:100%}\n"], dependencies: [{ kind: "component", type: i1.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }] }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SkeletonComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'ask-skeleton', template: "<ngx-skeleton-loader\n data-testid=\"skeleton-loader\"\n class=\"skeleton-component\"\n [count]=\"barsCount\"\n appearance=\"line\"\n animation=\"progress\"\n [theme]=\"{\n 'border-radius': '5px',\n height: barsHeight+'px',\n margin: 0,\n display: 'block',\n }\"\n></ngx-skeleton-loader>\n", styles: [":host{display:block}.skeleton-component{display:flex;gap:10px;flex-direction:column;height:100%}\n"] }]
19
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { barsHeight: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNrc3VpdGUtY2l0cnVzL3NyYy9saWIvY29tcG9uZW50cy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc2tzdWl0ZS1jaXRydXMvc3JjL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPN0QsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFvQixVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUY5QyxlQUFVLEdBQUcsR0FBRyxDQUFDO0lBRWdDLENBQUM7SUFFM0QsSUFBYyxTQUFTO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0FSVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwwRkNQOUIsc1RBYUE7OzJGRE5hLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjO2lHQUtmLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Fzay1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NrZWxldG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNrZWxldG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYmFyc0hlaWdodCA9IDEwMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIHByb3RlY3RlZCBnZXQgYmFyc0NvdW50KCk6IG51bWJlciB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGhlaWdodCAvIHRoaXMuYmFyc0hlaWdodCkgfHwgMTtcbiAgfVxufVxuIiwiPG5neC1za2VsZXRvbi1sb2FkZXJcbiAgZGF0YS10ZXN0aWQ9XCJza2VsZXRvbi1sb2FkZXJcIlxuICBjbGFzcz1cInNrZWxldG9uLWNvbXBvbmVudFwiXG4gIFtjb3VudF09XCJiYXJzQ291bnRcIlxuICBhcHBlYXJhbmNlPVwibGluZVwiXG4gIGFuaW1hdGlvbj1cInByb2dyZXNzXCJcbiAgW3RoZW1lXT1cIntcbiAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgIGhlaWdodDogYmFyc0hlaWdodCsncHgnLFxuICAgIG1hcmdpbjogMCxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICB9XCJcbj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4iXX0=
@@ -14,6 +14,7 @@ export * from './lib/components/checkbox/checkbox.component';
14
14
  export * from './lib/components/chips/chips.component';
15
15
  export * from './lib/components/date-picker/date-picker.component';
16
16
  export * from './lib/components/date-picker/date-picker-calendar/date-picker-calendar.component';
17
+ export * from './lib/components/skeleton/skeleton.component';
17
18
  // Directives
18
19
  export * from './lib/directives/ask-dropdown.directive';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQTtBQUN0RCxjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLGtFQUFrRSxDQUFBO0FBQ2hGLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsb0RBQW9ELENBQUE7QUFDbEUsY0FBYyxrRkFBa0YsQ0FBQTtBQUVoRyxhQUFhO0FBQ2IsY0FBYyx5Q0FBeUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXNrc3VpdGUtY2l0cnVzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNrc3VpdGUtY2l0cnVzLm1vZHVsZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLWNvbnRhaW5lci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoaXBzL2NoaXBzLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci1jYWxlbmRhci9kYXRlLXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnXG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvYXNrLWRyb3Bkb3duLmRpcmVjdGl2ZSdcbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fza3N1aXRlLWNpdHJ1cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsOEJBQThCLENBQUM7QUFFN0MsYUFBYTtBQUNiLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQTtBQUN0RCxjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsb0NBQW9DLENBQUE7QUFDbEQsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLGtFQUFrRSxDQUFBO0FBQ2hGLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsb0RBQW9ELENBQUE7QUFDbEUsY0FBYyxrRkFBa0YsQ0FBQTtBQUNoRyxjQUFjLDhDQUE4QyxDQUFBO0FBRTVELGFBQWE7QUFDYixjQUFjLHlDQUF5QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhc2tzdWl0ZS1jaXRydXNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc2tzdWl0ZS1jaXRydXMubW9kdWxlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYm94L2JveC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kcm9wZG93bi1jb250YWluZXIvZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hpcHMvY2hpcHMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLWNhbGVuZGFyL2RhdGUtcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50J1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2Fzay1kcm9wZG93bi5kaXJlY3RpdmUnXG4iXX0=
@@ -14,6 +14,8 @@ import { ScrollingModule } from '@angular/cdk/scrolling';
14
14
  import moment from 'moment';
15
15
  import * as i4$1 from '@ngx-translate/core';
16
16
  import { TranslateModule } from '@ngx-translate/core';
17
+ import * as i1$3 from 'ngx-skeleton-loader';
18
+ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
17
19
 
18
20
  class ButtonComponent {
19
21
  constructor() {
@@ -686,9 +688,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
686
688
  args: ["window:mousedown", ['$event']]
687
689
  }] } });
688
690
 
689
- const asDate = (inMoment) => {
690
- return inMoment.utc(true).toDate();
691
- };
691
+ var PeriodLabel;
692
+ (function (PeriodLabel) {
693
+ PeriodLabel["TODAY"] = "TODAY";
694
+ PeriodLabel["YESTERDAY"] = "YESTERDAY";
695
+ PeriodLabel["LAST_7_DAYS"] = "LAST_7_DAYS";
696
+ PeriodLabel["LAST_30_DAYS"] = "LAST_30_DAYS";
697
+ PeriodLabel["THIS_MONTH"] = "THIS_MONTH";
698
+ PeriodLabel["LAST_QUARTER"] = "LAST_QUARTER";
699
+ PeriodLabel["CUSTOM_PERIOD"] = "CUSTOM_PERIOD";
700
+ })(PeriodLabel || (PeriodLabel = {}));
701
+ const DEFAULT_DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ';
702
+ const formatFrom = (from) => from.startOf('day').format(DEFAULT_DATE_FORMAT);
703
+ const formatTo = (from) => from.endOf('day').format(DEFAULT_DATE_FORMAT);
692
704
  class DatePickerCalendarComponent {
693
705
  constructor() {
694
706
  this.isRange = false;
@@ -727,15 +739,15 @@ class DatePickerCalendarComponent {
727
739
  }
728
740
  isFirstSelectedDay(day) {
729
741
  if (this.isRange) {
730
- return day.timestamp === this.innerDate.from?.timestamp;
742
+ return day.formatted === this.innerDate.from?.formatted;
731
743
  }
732
- return this.innerDate.timestamp === day.timestamp;
744
+ return this.innerDate.formatted === day.formatted;
733
745
  }
734
746
  isLastSelectedDay(day) {
735
747
  if (this.isRange) {
736
- return day.timestamp === (this.innerDate.to?.timestamp || this.innerDate.from?.timestamp);
748
+ return day.formatted === (this.innerDate.to?.formatted || this.innerDate.from?.formatted);
737
749
  }
738
- return this.innerDate.timestamp === day.timestamp;
750
+ return this.innerDate.formatted === day.formatted;
739
751
  }
740
752
  ngOnInit() {
741
753
  this.assignInitialValues();
@@ -746,9 +758,9 @@ class DatePickerCalendarComponent {
746
758
  const receivedDate = this.date;
747
759
  if (receivedDate.from && receivedDate.to) {
748
760
  this.innerDate = {
749
- from: this.getDayFromDate(receivedDate.from),
750
- to: this.getDayFromDate(receivedDate.to),
751
- label: receivedDate.label || 'CUSTOM_PERIOD'
761
+ from: this.getDayFromString(receivedDate.from),
762
+ to: this.getDayFromString(receivedDate.to),
763
+ label: PeriodLabel[receivedDate.label || 'CUSTOM_PERIOD'].toString()
752
764
  };
753
765
  }
754
766
  else {
@@ -759,7 +771,7 @@ class DatePickerCalendarComponent {
759
771
  this.displayDate = moment.unix(this.innerDate.from?.timestamp || (Date.now() / 1000));
760
772
  }
761
773
  else {
762
- this.innerDate = this.getDayFromDate(this.date);
774
+ this.innerDate = this.getDayFromString(this.date);
763
775
  this.displayDate = moment.unix(this.innerDate.timestamp);
764
776
  }
765
777
  this.firstDayOfWeek = this.displayDate.clone().startOf('week').day();
@@ -828,14 +840,15 @@ class DatePickerCalendarComponent {
828
840
  timestamp: day.unix(),
829
841
  day: day.format('D'),
830
842
  month: day.month(),
831
- weekDay: day.day()
843
+ weekDay: day.day(),
844
+ formatted: day.format(DEFAULT_DATE_FORMAT),
832
845
  };
833
846
  }
834
- getDayFromDate(date) {
835
- return this.getDayFromMoment(moment(date).utc(false));
847
+ getDayFromString(date) {
848
+ return this.getDayFromMoment(moment(date));
836
849
  }
837
850
  getDateFromDay(day) {
838
- return moment.unix(day.timestamp).startOf('day').toDate();
851
+ return moment.unix(day.timestamp).startOf('day').format(DEFAULT_DATE_FORMAT);
839
852
  }
840
853
  incrementMonth(amount) {
841
854
  this.displayDate.add(amount, 'month');
@@ -878,17 +891,17 @@ class DatePickerCalendarComponent {
878
891
  }
879
892
  emitRange(range) {
880
893
  const newRange = {};
881
- newRange.label = 'CUSTOM_PERIOD';
894
+ newRange.label = PeriodLabel.CUSTOM_PERIOD;
882
895
  if (range.from) {
883
896
  newRange.from = this.getDateFromDay(range.from);
884
897
  if (range.to)
885
- newRange.to = asDate(moment.unix(range.to.timestamp).endOf('day'));
898
+ newRange.to = formatTo(moment.unix(range.to.timestamp));
886
899
  }
887
900
  this.dateChange.emit(newRange);
888
901
  }
889
902
  handleSingleSelect(momentDate) {
890
903
  this.innerDate = this.getDayFromMoment(momentDate);
891
- this.dateChange.emit(asDate(momentDate));
904
+ this.dateChange.emit(momentDate.format(DEFAULT_DATE_FORMAT));
892
905
  }
893
906
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DatePickerCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
894
907
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DatePickerCalendarComponent, selector: "ask-date-picker-calendar", inputs: { isRange: "isRange", date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div class=\"date-picker-calendar-container\">\n <header class=\"month-selector\">\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(-1)\">\n <span class=\"material-icons icon\">chevron_left</span>\n </button>\n\n <span class=\"month-year-display\" data-testid=\"month-year-display\">{{ month }} {{ year }}</span>\n\n <button type=\"button\" class=\"selector-button\" (click)=\"incrementMonth(1)\">\n <span class=\"material-icons icon\">chevron_right</span>\n </button>\n </header>\n\n <main class=\"calendar\">\n <div class=\"week-days-header\">\n <span class=\"week-day\" *ngFor=\"let weekDay of weekDays\">{{ weekDay.name }}</span>\n </div>\n\n <div class=\"days-block\" data-testid=\"days-block\">\n <span\n *ngFor=\"let day of days\"\n (click)=\"selectDate(day.timestamp)\"\n [ngClass]=\"{\n 'day': true,\n 'another-month': monthNumber != day.month,\n 'selected': isDaySelected(day),\n 'first': isFirstSelectedDay(day),\n 'last': isLastSelectedDay(day),\n }\"\n >\n {{ day.day }}\n </span>\n </div>\n </main>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.date-picker-calendar-container{display:flex;flex-direction:column;padding:16px;width:320px;-webkit-user-select:none;user-select:none}.month-selector{display:flex;align-items:center;justify-content:space-between;padding:4px;background-color:var(--secondary-background);border-radius:4px;text-transform:capitalize}.month-selector>.month-year-display{font-size:.75rem;color:var(--font-color-100);font-weight:500}.selector-button{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background-color:var(--primary-background);box-shadow:0 1px 2px #2a304229;outline:none;border:none;border-radius:4px;cursor:pointer}.selector-button>.icon{color:var(--font-color-100);font-size:18px}.calendar{display:flex;flex-direction:column;padding:16px 32px}.week-days-header{display:grid;grid-template-rows:auto;grid-template-columns:repeat(7,auto);place-items:center;padding-bottom:8px;border-bottom:1px solid #E4E7EB}.week-days-header>.week-day{display:flex;align-items:center;justify-content:center;font-size:.75rem;line-height:1rem;width:100%;color:var(--font-color-100)}.days-block{display:grid;grid-template-rows:repeat(6,auto);grid-template-columns:repeat(7,auto);place-items:center;row-gap:4px;color:var(--font-color-200);padding-top:4px}.days-block>.day{display:flex;align-items:center;justify-content:center;text-align:center;font-size:.75rem;line-height:1rem;width:100%;height:31px;border-radius:99999px;transition:.2s background-color,.2s color,.2s font-weight}.days-block>.day.another-month{color:var(--font-color-300)}.days-block>.day.selected,.days-block>.day:hover{color:#ff5724;background-color:#ff57241a;cursor:pointer}.days-block>.day.selected{border-radius:0;font-weight:500}.days-block>.day.selected.first{border-top-left-radius:99999px;border-bottom-left-radius:99999px}.days-block>.day.selected.last{border-top-right-radius:99999px;border-bottom-right-radius:99999px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
@@ -904,71 +917,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
904
917
  type: Output
905
918
  }] } });
906
919
 
920
+ const VALUE_ACCESSOR = {
921
+ provide: NG_VALUE_ACCESSOR,
922
+ multi: true,
923
+ useExisting: forwardRef(() => DatePickerComponent),
924
+ };
907
925
  class DatePickerComponent {
908
926
  constructor() {
909
927
  this.periods = [
910
- { label: 'TODAY', getRange: () => ({ from: asDate(moment().startOf('day')), to: asDate(moment().endOf('day')) }), selected: false },
911
- { label: 'YESTERDAY', getRange: () => ({ from: asDate(moment().subtract(1, 'day').startOf('day')), to: asDate(moment().subtract(1, 'day').endOf('day')) }), selected: false },
912
- { label: 'LAST_7_DAYS', getRange: () => ({ from: asDate(moment().subtract(1, 'week').startOf('day')), to: asDate(moment().endOf('day')) }), selected: false },
913
- { label: 'LAST_30_DAYS', getRange: () => ({ from: asDate(moment().subtract(30, 'days').startOf('day')), to: asDate(moment().endOf('day')) }), selected: false },
914
- { label: 'THIS_MONTH', getRange: () => ({ from: asDate(moment().startOf('month')), to: asDate(moment().endOf('month')) }), selected: false },
915
- { label: 'LAST_QUARTER', getRange: () => ({ from: asDate(moment().subtract(3, 'months').startOf('day')), to: asDate(moment().endOf('month')) }), selected: false },
916
- { label: 'CUSTOM_PERIOD', getRange: () => ({}), isCustomRange: true, selected: false },
928
+ { label: PeriodLabel.TODAY, getRange: () => ({ from: formatFrom(moment()), to: formatTo(moment()) }), selected: false },
929
+ { label: PeriodLabel.YESTERDAY, getRange: () => ({ from: formatFrom(moment().subtract(1, 'day')), to: formatTo(moment().subtract(1, 'day')) }), selected: false },
930
+ { label: PeriodLabel.LAST_7_DAYS, getRange: () => ({ from: formatFrom(moment().subtract(1, 'week')), to: formatTo(moment()) }), selected: false },
931
+ { label: PeriodLabel.LAST_30_DAYS, getRange: () => ({ from: formatFrom(moment().subtract(30, 'days')), to: formatTo(moment()) }), selected: false },
932
+ { label: PeriodLabel.THIS_MONTH, getRange: () => ({ from: formatFrom(moment().startOf('month')), to: formatTo(moment().endOf('month')) }), selected: false },
933
+ { label: PeriodLabel.LAST_QUARTER, getRange: () => ({ from: formatFrom(moment().subtract(3, 'months')), to: formatTo(moment().endOf('month')) }), selected: false },
934
+ { label: PeriodLabel.CUSTOM_PERIOD, getRange: () => ({}), isCustomRange: true, selected: false },
917
935
  ];
918
- this.date = new Date();
936
+ this.date = moment().format();
919
937
  this.isRange = false;
920
938
  this.dateChange = new EventEmitter();
921
939
  this.close = new EventEmitter();
922
940
  this.isCustomRange = false;
941
+ this.onChange = (value) => { };
942
+ this.onTouch = () => { };
923
943
  }
924
944
  get from() {
925
- if (this.date instanceof Date) {
945
+ if (!this.isRange) {
926
946
  return;
927
947
  }
928
948
  return this.date.from;
929
949
  }
930
950
  get to() {
931
- if (this.date instanceof Date) {
951
+ if (!this.isRange) {
932
952
  return;
933
953
  }
934
954
  return this.date.to;
935
955
  }
936
956
  get dateDisplay() {
937
- const from = this.from ? moment(this.from).utc(false).format('L') : '';
938
- const to = this.to ? moment(this.to).utc(false).format('L') : '';
957
+ const from = this.from ? moment(this.from).format('L') : '';
958
+ const to = this.to ? moment(this.to).format('L') : '';
939
959
  return `${from} ${to ? '- ' + to : ''}`;
940
960
  }
941
961
  ngOnInit() {
942
962
  }
943
963
  selectPeriod(period) {
944
- this.periods.forEach(period => period.selected = false);
964
+ this.periods.forEach((period) => period.selected = false);
945
965
  this.date = period.getRange();
946
966
  this.date.label = period.label;
947
967
  this.isCustomRange = period.isCustomRange || false;
948
968
  period.selected = true;
949
969
  if (!this.isCustomRange) {
950
- this.writeValue();
970
+ this.emitValue();
951
971
  }
952
972
  }
953
973
  handleDateChange(value) {
954
974
  this.date = value;
955
975
  if (!this.isRange) {
956
- this.writeValue();
976
+ this.emitValue();
957
977
  }
958
978
  }
959
- writeValue() {
979
+ emitValue() {
960
980
  this.dateChange.emit(this.date);
981
+ this.onChange(this.date);
961
982
  this.close.emit();
962
983
  }
963
984
  handleCancelClick() {
964
985
  this.close.emit();
965
986
  }
987
+ getPeriodOrDefault(periodName, defaultPeriodName = PeriodLabel.TODAY) {
988
+ return this.periods.find(p => p.label === periodName) ||
989
+ this.periods.find(p => p.label === defaultPeriodName);
990
+ }
991
+ checkPeriodShouldBeSelectedByValue() {
992
+ if (!this.isRange) {
993
+ return;
994
+ }
995
+ this.periods.forEach((period) => period.selected = false);
996
+ const period = this.periods.find(p => p.label === this.date?.label);
997
+ if (!period) {
998
+ return;
999
+ }
1000
+ period.selected = true;
1001
+ this.isCustomRange = period.isCustomRange || false;
1002
+ }
1003
+ writeValue(value) {
1004
+ if (this.isRange) {
1005
+ const valueRange = value;
1006
+ if (valueRange.label && valueRange.label !== PeriodLabel.CUSTOM_PERIOD) {
1007
+ const period = this.getPeriodOrDefault(valueRange.label)?.getRange() || {};
1008
+ this.date = { ...period, label: valueRange.label };
1009
+ }
1010
+ else if (valueRange.from && valueRange.to) {
1011
+ this.date = { from: valueRange.from, to: valueRange.to, label: PeriodLabel.CUSTOM_PERIOD };
1012
+ }
1013
+ this.checkPeriodShouldBeSelectedByValue();
1014
+ }
1015
+ else {
1016
+ this.date = value;
1017
+ }
1018
+ }
1019
+ registerOnChange(fn) {
1020
+ this.onChange = fn;
1021
+ }
1022
+ registerOnTouched(fn) {
1023
+ this.onTouch = fn;
1024
+ }
966
1025
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
967
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DatePickerComponent, selector: "ask-date-picker", inputs: { date: "date", isRange: "isRange" }, outputs: { dateChange: "dateChange", close: "close" }, ngImport: i0, template: "<div class=\"date-picker-container\">\n <main class=\"main-content\">\n <div\n class=\"periods-list\"\n *ngIf=\"isRange\"\n [ngClass]=\"{ 'show-divider': isCustomRange }\"\n >\n <button\n *ngFor=\"let period of periods\"\n type=\"button\"\n class=\"period\"\n [ngClass]=\"{ 'selected': period.selected }\"\n (click)=\"selectPeriod(period)\"\n >\n {{ period.label | translate }}\n </button>\n </div>\n\n <ask-date-picker-calendar\n *ngIf=\"!isRange || (isRange && isCustomRange)\"\n [date]=\"date\"\n (dateChange)=\"handleDateChange($event)\"\n [isRange]=\"isRange\"\n ></ask-date-picker-calendar>\n </main>\n\n <footer class=\"footer\" *ngIf=\"isCustomRange && isRange\">\n <div class=\"date-display\">{{ dateDisplay }}</div>\n\n <div class=\"button-tray\">\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'secondary'\"\n (click)=\"handleCancelClick()\"\n >\n {{ 'CANCEL' | translate }}\n </ask-button>\n\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'primary'\"\n (click)=\"writeValue()\"\n >\n {{ 'APPLY' | translate }}\n </ask-button>\n </div>\n </footer>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.date-picker-container{display:flex;flex-direction:column}.main-content{display:flex}.periods-list{display:flex;flex-direction:column;justify-content:start;gap:4px;padding:8px 0}.periods-list.show-divider{border-right:1px solid var(--divider-background)}.periods-list>.period{padding:8px 16px;color:var(--font-color-200);background:none;border:none;outline:none;cursor:pointer;transition:color .2s,background-color .2s;text-align:start}.periods-list>.period:hover,.periods-list>.period.selected{background-color:var(--hover-background)}.periods-list>.period:active,.periods-list>.period.selected{color:#ff5724}.footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--divider-background)}.footer>.button-tray{display:flex;gap:16px}.date-display{display:flex;font-size:.875rem;color:var(--font-color-200);gap:4px}.date-display>.date{width:79px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "ask-button", inputs: ["label", "size", "type", "rounded", "disabled", "labelSide"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: DatePickerCalendarComponent, selector: "ask-date-picker-calendar", inputs: ["isRange", "date"], outputs: ["dateChange"] }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] }); }
1026
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DatePickerComponent, selector: "ask-date-picker", inputs: { date: "date", isRange: "isRange" }, outputs: { dateChange: "dateChange", close: "close" }, providers: [VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"date-picker-container\">\n <main class=\"main-content\">\n <div\n class=\"periods-list\"\n *ngIf=\"isRange\"\n [ngClass]=\"{ 'show-divider': isCustomRange }\"\n >\n <button\n *ngFor=\"let period of periods\"\n type=\"button\"\n class=\"period\"\n [ngClass]=\"{ 'selected': period.selected }\"\n (click)=\"selectPeriod(period)\"\n >\n {{ period.label.toString() | translate }}\n </button>\n </div>\n\n <ask-date-picker-calendar\n *ngIf=\"!isRange || (isRange && isCustomRange)\"\n [date]=\"date\"\n (dateChange)=\"handleDateChange($event)\"\n [isRange]=\"isRange\"\n ></ask-date-picker-calendar>\n </main>\n\n <footer class=\"footer\" *ngIf=\"isCustomRange && isRange\">\n <div class=\"date-display\">{{ dateDisplay }}</div>\n\n <div class=\"button-tray\">\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'secondary'\"\n (click)=\"handleCancelClick()\"\n >\n {{ 'CANCEL' | translate }}\n </ask-button>\n\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'primary'\"\n (click)=\"emitValue()\"\n >\n {{ 'APPLY' | translate }}\n </ask-button>\n </div>\n </footer>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.date-picker-container{display:flex;flex-direction:column}.main-content{display:flex}.periods-list{display:flex;flex-direction:column;justify-content:start;gap:4px;padding:8px 0}.periods-list.show-divider{border-right:1px solid var(--divider-background)}.periods-list>.period{padding:8px 16px;color:var(--font-color-200);background:none;border:none;outline:none;cursor:pointer;transition:color .2s,background-color .2s;text-align:start}.periods-list>.period:hover,.periods-list>.period.selected{background-color:var(--hover-background)}.periods-list>.period:active,.periods-list>.period.selected{color:#ff5724}.footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--divider-background)}.footer>.button-tray{display:flex;gap:16px}.date-display{display:flex;font-size:.875rem;color:var(--font-color-200);gap:4px}.date-display>.date{width:79px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "ask-button", inputs: ["label", "size", "type", "rounded", "disabled", "labelSide"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: DatePickerCalendarComponent, selector: "ask-date-picker-calendar", inputs: ["isRange", "date"], outputs: ["dateChange"] }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] }); }
968
1027
  }
969
1028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DatePickerComponent, decorators: [{
970
1029
  type: Component,
971
- args: [{ selector: 'ask-date-picker', template: "<div class=\"date-picker-container\">\n <main class=\"main-content\">\n <div\n class=\"periods-list\"\n *ngIf=\"isRange\"\n [ngClass]=\"{ 'show-divider': isCustomRange }\"\n >\n <button\n *ngFor=\"let period of periods\"\n type=\"button\"\n class=\"period\"\n [ngClass]=\"{ 'selected': period.selected }\"\n (click)=\"selectPeriod(period)\"\n >\n {{ period.label | translate }}\n </button>\n </div>\n\n <ask-date-picker-calendar\n *ngIf=\"!isRange || (isRange && isCustomRange)\"\n [date]=\"date\"\n (dateChange)=\"handleDateChange($event)\"\n [isRange]=\"isRange\"\n ></ask-date-picker-calendar>\n </main>\n\n <footer class=\"footer\" *ngIf=\"isCustomRange && isRange\">\n <div class=\"date-display\">{{ dateDisplay }}</div>\n\n <div class=\"button-tray\">\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'secondary'\"\n (click)=\"handleCancelClick()\"\n >\n {{ 'CANCEL' | translate }}\n </ask-button>\n\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'primary'\"\n (click)=\"writeValue()\"\n >\n {{ 'APPLY' | translate }}\n </ask-button>\n </div>\n </footer>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.date-picker-container{display:flex;flex-direction:column}.main-content{display:flex}.periods-list{display:flex;flex-direction:column;justify-content:start;gap:4px;padding:8px 0}.periods-list.show-divider{border-right:1px solid var(--divider-background)}.periods-list>.period{padding:8px 16px;color:var(--font-color-200);background:none;border:none;outline:none;cursor:pointer;transition:color .2s,background-color .2s;text-align:start}.periods-list>.period:hover,.periods-list>.period.selected{background-color:var(--hover-background)}.periods-list>.period:active,.periods-list>.period.selected{color:#ff5724}.footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--divider-background)}.footer>.button-tray{display:flex;gap:16px}.date-display{display:flex;font-size:.875rem;color:var(--font-color-200);gap:4px}.date-display>.date{width:79px}\n"] }]
1030
+ args: [{ selector: 'ask-date-picker', providers: [VALUE_ACCESSOR], template: "<div class=\"date-picker-container\">\n <main class=\"main-content\">\n <div\n class=\"periods-list\"\n *ngIf=\"isRange\"\n [ngClass]=\"{ 'show-divider': isCustomRange }\"\n >\n <button\n *ngFor=\"let period of periods\"\n type=\"button\"\n class=\"period\"\n [ngClass]=\"{ 'selected': period.selected }\"\n (click)=\"selectPeriod(period)\"\n >\n {{ period.label.toString() | translate }}\n </button>\n </div>\n\n <ask-date-picker-calendar\n *ngIf=\"!isRange || (isRange && isCustomRange)\"\n [date]=\"date\"\n (dateChange)=\"handleDateChange($event)\"\n [isRange]=\"isRange\"\n ></ask-date-picker-calendar>\n </main>\n\n <footer class=\"footer\" *ngIf=\"isCustomRange && isRange\">\n <div class=\"date-display\">{{ dateDisplay }}</div>\n\n <div class=\"button-tray\">\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'secondary'\"\n (click)=\"handleCancelClick()\"\n >\n {{ 'CANCEL' | translate }}\n </ask-button>\n\n <ask-button\n [size]=\"'xsmall'\"\n [type]=\"'primary'\"\n (click)=\"emitValue()\"\n >\n {{ 'APPLY' | translate }}\n </ask-button>\n </div>\n </footer>\n</div>\n", styles: [":root{--asksuite-orange: #FF5724;--white: #FFF;--grey-50: #F5F7FA;--grey-100: #E4E7EB;--grey-200: #CBD2D9;--grey-300: #9AA5B1;--grey-400: #7B8794;--grey-500: #616E7C;--grey-600: #52606D;--grey-700: #3E4C59;--grey-800: #2A3042;--grey-900: #1F2933;--yellow-50: #FFF8E2;--yellow-200: #FFECB3;--success-green: #4BAF50;--warning-yellow: #FFC107;--error-red: #E8453E;--shadow: rgba(42, 48, 66, .1607843137);--lightblue-tag: #CDF9F3;--lavender-tag: #D4DAF3;--green-tag: #CEEEAA;--pink-tag: #FBC5FF;--orange-tag: #FED5C9;--purple-tag: #DDBFE5;--yellow-tag: #FFE0B2;--blue-tag: #B2E5FD;--brown-tag: #EFC89C;--whatsapp-green: #68B35D;--facebook-blue: #0084FF;--instagram-pink: #D53E91;--google-blue: #345DC8;--telegram-blue: #34AADF;--telephone-yellow: #FECB00;--primary-background: #FFF;--secondary-background: #EFF3F8;--hover-background: #F5F7FA;--divider-background: #E4E7EB;--font-color-100: #2A3042;--font-color-200: #616E7C;--font-color-300: #9AA5B1}:root{--font-default: $font-default;--font-code: $font-code}:root{--font-xs: $font-xs;--font-sm: $font-sm;--font-md: $font-md;--font-lg: $font-lg;--font-xl: $font-xl;--font-xxl: $font-xxl}:root{--font-weight-regular: $font-weight-regular;--font-weight-medium: $font-weight-medium}:root{--radii-px: $radii-px;--radii-xs: $radii-xs;--radii-sm: $radii-sm;--radii-md: $radii-md;--radii-lg: $radii-lg;--radii-full: $radii-full}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,button,select,textarea{font-family:Inter,sans-serif;font-weight:400}input{font-size:1rem}.date-picker-container{display:flex;flex-direction:column}.main-content{display:flex}.periods-list{display:flex;flex-direction:column;justify-content:start;gap:4px;padding:8px 0}.periods-list.show-divider{border-right:1px solid var(--divider-background)}.periods-list>.period{padding:8px 16px;color:var(--font-color-200);background:none;border:none;outline:none;cursor:pointer;transition:color .2s,background-color .2s;text-align:start}.periods-list>.period:hover,.periods-list>.period.selected{background-color:var(--hover-background)}.periods-list>.period:active,.periods-list>.period.selected{color:#ff5724}.footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--divider-background)}.footer>.button-tray{display:flex;gap:16px}.date-display{display:flex;font-size:.875rem;color:var(--font-color-200);gap:4px}.date-display>.date{width:79px}\n"] }]
972
1031
  }], propDecorators: { date: [{
973
1032
  type: Input
974
1033
  }], isRange: [{
@@ -979,6 +1038,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
979
1038
  type: Output
980
1039
  }] } });
981
1040
 
1041
+ class SkeletonComponent {
1042
+ constructor(elementRef) {
1043
+ this.elementRef = elementRef;
1044
+ this.barsHeight = 100;
1045
+ }
1046
+ get barsCount() {
1047
+ const height = this.elementRef.nativeElement.clientHeight;
1048
+ return Math.round(height / this.barsHeight) || 1;
1049
+ }
1050
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SkeletonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1051
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SkeletonComponent, selector: "ask-skeleton", inputs: { barsHeight: "barsHeight" }, ngImport: i0, template: "<ngx-skeleton-loader\n data-testid=\"skeleton-loader\"\n class=\"skeleton-component\"\n [count]=\"barsCount\"\n appearance=\"line\"\n animation=\"progress\"\n [theme]=\"{\n 'border-radius': '5px',\n height: barsHeight+'px',\n margin: 0,\n display: 'block',\n }\"\n></ngx-skeleton-loader>\n", styles: [":host{display:block}.skeleton-component{display:flex;gap:10px;flex-direction:column;height:100%}\n"], dependencies: [{ kind: "component", type: i1$3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }] }); }
1052
+ }
1053
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SkeletonComponent, decorators: [{
1054
+ type: Component,
1055
+ args: [{ selector: 'ask-skeleton', template: "<ngx-skeleton-loader\n data-testid=\"skeleton-loader\"\n class=\"skeleton-component\"\n [count]=\"barsCount\"\n appearance=\"line\"\n animation=\"progress\"\n [theme]=\"{\n 'border-radius': '5px',\n height: barsHeight+'px',\n margin: 0,\n display: 'block',\n }\"\n></ngx-skeleton-loader>\n", styles: [":host{display:block}.skeleton-component{display:flex;gap:10px;flex-direction:column;height:100%}\n"] }]
1056
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { barsHeight: [{
1057
+ type: Input
1058
+ }] } });
1059
+
982
1060
  class AsksuiteCitrusModule {
983
1061
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AsksuiteCitrusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
984
1062
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: AsksuiteCitrusModule, declarations: [ButtonComponent,
@@ -992,13 +1070,14 @@ class AsksuiteCitrusModule {
992
1070
  ChipsComponent,
993
1071
  CheckboxComponent,
994
1072
  DatePickerComponent,
995
- DatePickerCalendarComponent], imports: [CommonModule,
1073
+ DatePickerCalendarComponent,
1074
+ SkeletonComponent], imports: [CommonModule,
996
1075
  FormsModule,
997
1076
  ReactiveFormsModule,
998
1077
  CdkOverlayOrigin,
999
1078
  CdkConnectedOverlay,
1000
1079
  OverlayModule,
1001
- ScrollingModule, i4$1.TranslateModule], exports: [ButtonComponent,
1080
+ ScrollingModule, i4$1.TranslateModule, NgxSkeletonLoaderModule], exports: [ButtonComponent,
1002
1081
  InputComponent,
1003
1082
  SelectComponent,
1004
1083
  BoxComponent,
@@ -1009,13 +1088,15 @@ class AsksuiteCitrusModule {
1009
1088
  ChipsComponent,
1010
1089
  CheckboxComponent,
1011
1090
  DatePickerComponent,
1012
- DatePickerCalendarComponent] }); }
1091
+ DatePickerCalendarComponent,
1092
+ SkeletonComponent] }); }
1013
1093
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AsksuiteCitrusModule, imports: [CommonModule,
1014
1094
  FormsModule,
1015
1095
  ReactiveFormsModule,
1016
1096
  OverlayModule,
1017
1097
  ScrollingModule,
1018
- TranslateModule.forChild()] }); }
1098
+ TranslateModule.forChild(),
1099
+ NgxSkeletonLoaderModule] }); }
1019
1100
  }
1020
1101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AsksuiteCitrusModule, decorators: [{
1021
1102
  type: NgModule,
@@ -1033,6 +1114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
1033
1114
  CheckboxComponent,
1034
1115
  DatePickerComponent,
1035
1116
  DatePickerCalendarComponent,
1117
+ SkeletonComponent,
1036
1118
  ],
1037
1119
  imports: [
1038
1120
  CommonModule,
@@ -1042,7 +1124,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
1042
1124
  CdkConnectedOverlay,
1043
1125
  OverlayModule,
1044
1126
  ScrollingModule,
1045
- TranslateModule.forChild()
1127
+ TranslateModule.forChild(),
1128
+ NgxSkeletonLoaderModule,
1046
1129
  ],
1047
1130
  exports: [
1048
1131
  ButtonComponent,
@@ -1056,8 +1139,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
1056
1139
  ChipsComponent,
1057
1140
  CheckboxComponent,
1058
1141
  DatePickerComponent,
1059
- DatePickerCalendarComponent
1060
- ]
1142
+ DatePickerCalendarComponent,
1143
+ SkeletonComponent,
1144
+ ],
1061
1145
  }]
1062
1146
  }] });
1063
1147
 
@@ -1069,5 +1153,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
1069
1153
  * Generated bundle index. Do not edit.
1070
1154
  */
1071
1155
 
1072
- export { AskDropdownDirective, AsksuiteCitrusModule, AutocompleteComponent, AvatarComponent, AvatarStatus, BoxComponent, ButtonComponent, CheckboxComponent, ChipsComponent, DatePickerCalendarComponent, DatePickerComponent, DropdownContainerComponent, InputComponent, SelectComponent, asDate };
1156
+ export { AskDropdownDirective, AsksuiteCitrusModule, AutocompleteComponent, AvatarComponent, AvatarStatus, BoxComponent, ButtonComponent, CheckboxComponent, ChipsComponent, DEFAULT_DATE_FORMAT, DatePickerCalendarComponent, DatePickerComponent, DropdownContainerComponent, InputComponent, PeriodLabel, SelectComponent, SkeletonComponent, formatFrom, formatTo };
1073
1157
  //# sourceMappingURL=asksuite-citrus.mjs.map