@elderbyte/ngx-starter 18.12.4 → 18.12.6

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 (49) hide show
  1. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +13 -2
  2. package/esm2022/lib/common/selection/selection-model.mjs +4 -3
  3. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -2
  4. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +21 -0
  5. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +24 -0
  6. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +43 -0
  7. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +69 -0
  8. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +117 -0
  9. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +44 -0
  10. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +87 -130
  11. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +41 -0
  12. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +144 -0
  13. package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +93 -0
  14. package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +54 -0
  15. package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +37 -0
  16. package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +10 -0
  17. package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +96 -0
  18. package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +194 -0
  19. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  20. package/fesm2022/elderbyte-ngx-starter.mjs +789 -892
  21. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  22. package/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.d.ts +9 -0
  23. package/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.d.ts +7 -0
  24. package/lib/components/time/elder-interval-picker/controller/interval-controller.d.ts +35 -0
  25. package/lib/components/time/elder-interval-picker/controller/interval-form-controller.d.ts +12 -0
  26. package/lib/components/time/elder-interval-picker/controller/interval-select-controller.d.ts +22 -0
  27. package/lib/components/time/elder-interval-picker/controller/interval-shift-controller.d.ts +13 -0
  28. package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +26 -34
  29. package/lib/components/time/elder-interval-picker/{elder-interval-picker-binding.directive.d.ts → interval-picker-binding/elder-interval-picker-binding.directive.d.ts} +3 -4
  30. package/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +37 -0
  31. package/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.d.ts +46 -0
  32. package/lib/components/time/elder-interval-picker/model/anchor-state.d.ts +20 -0
  33. package/lib/components/time/elder-interval-picker/model/interval-state.d.ts +16 -0
  34. package/lib/components/time/elder-interval-picker/model/smart-shift-state.d.ts +8 -0
  35. package/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.d.ts +30 -0
  36. package/lib/components/time/elder-interval-picker/util/interval-picker-util.d.ts +20 -0
  37. package/lib/components/time/elder-time.module.d.ts +4 -4
  38. package/package.json +1 -1
  39. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +0 -40
  40. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -202
  41. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.mjs +0 -284
  42. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model.mjs +0 -445
  43. package/esm2022/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.mjs +0 -37
  44. package/esm2022/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.mjs +0 -25
  45. package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +0 -55
  46. package/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.d.ts +0 -77
  47. package/lib/components/time/elder-interval-picker/model/interval-picker-model.d.ts +0 -113
  48. package/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.d.ts +0 -7
  49. package/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.d.ts +0 -4
@@ -0,0 +1,9 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ export default class IntervalAnchorController {
3
+ private manager;
4
+ constructor(manager: IntervalPickerStateManager);
5
+ resetAnchor(): void;
6
+ resetAnchorTime(): void;
7
+ setFixedAnchorPointToStartDateTime(): void;
8
+ setFixedAnchorPointToEndDateTime(): void;
9
+ }
@@ -0,0 +1,7 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ export default class IntervalCalendarController {
3
+ private manager;
4
+ constructor(manager: IntervalPickerStateManager);
5
+ setStartDateFromJSDate(date: Date): void;
6
+ setEndDateFromJSDate(date: Date): void;
7
+ }
@@ -0,0 +1,35 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ import IntervalAnchorController from './interval-anchor-controller';
3
+ import IntervalCalendarController from './interval-calendar-controller';
4
+ import IntervalFormController from './interval-form-controller';
5
+ import IntervalSelectController from './interval-select-controller';
6
+ import IntervalShiftController from './interval-shift-controller';
7
+ export default class IntervalController {
8
+ private manager;
9
+ /***************************************************************************
10
+ * *
11
+ * Fields *
12
+ * *
13
+ **************************************************************************/
14
+ private readonly log;
15
+ readonly select: IntervalSelectController;
16
+ readonly shift: IntervalShiftController;
17
+ readonly form: IntervalFormController;
18
+ readonly calendar: IntervalCalendarController;
19
+ readonly anchor: IntervalAnchorController;
20
+ /***************************************************************************
21
+ * *
22
+ * Constructor *
23
+ * *
24
+ **************************************************************************/
25
+ constructor(manager: IntervalPickerStateManager);
26
+ /***************************************************************************
27
+ * *
28
+ * Public API *
29
+ * *
30
+ **************************************************************************/
31
+ clearInterval(): void;
32
+ clearEndTime(): void;
33
+ clearStartTime(): void;
34
+ manualEmit(): void;
35
+ }
@@ -0,0 +1,12 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ export default class IntervalFormController {
3
+ private manager;
4
+ private readonly log;
5
+ constructor(manager: IntervalPickerStateManager);
6
+ setStartDateFromString(htmlString: string): void;
7
+ setEndDateFromString(htmlString: string): void;
8
+ setAnchorDateFromString(htmlString: string): void;
9
+ setAnchorTimeFromString(htmlString: string): void;
10
+ setStartTimeFromString(timeStr: string): void;
11
+ setEndTimeFromString(timeStr: string): void;
12
+ }
@@ -0,0 +1,22 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ export default class IntervalSelectController {
3
+ private manager;
4
+ constructor(manager: IntervalPickerStateManager);
5
+ private refreshAnchor;
6
+ private setSmartShiftState;
7
+ selectCurrentDay(): void;
8
+ selectYesterday(): void;
9
+ selectLastSevenDaysExcludingToday(): void;
10
+ selectLastSevenDaysIncludingToday(): void;
11
+ selectLastThirtyDaysExcludingToday(): void;
12
+ selectLastThirtyDaysIncludingToday(): void;
13
+ selectLast365daysExcludingToday(): void;
14
+ selectLast365daysIncludingToday(): void;
15
+ selectLastFiveMinutes(): void;
16
+ selectLastHour(): void;
17
+ selectLast24Hours(): void;
18
+ selectCurrentWeek(): void;
19
+ selectCurrentMonth(): void;
20
+ selectCurrentQuarter(): void;
21
+ selectCurrentYear(): void;
22
+ }
@@ -0,0 +1,13 @@
1
+ import IntervalPickerStateManager from '../manager/interval-picker-state-manager';
2
+ export default class IntervalShiftController {
3
+ private manager;
4
+ private readonly log;
5
+ constructor(manager: IntervalPickerStateManager);
6
+ shiftDay(days: number): void;
7
+ shiftWeek(weeks: number): void;
8
+ shiftMonth(months: number): void;
9
+ shiftYear(years: number): void;
10
+ shiftMinute(minutes: number): void;
11
+ shiftHour(hours: number): void;
12
+ smartShift(direction?: number): void;
13
+ }
@@ -1,68 +1,60 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
- import { MatCalendar, MatCalendarCellClassFunction } from '@angular/material/datepicker';
3
- import { Interval } from '../../../common/time/interval';
1
+ import { ElementRef } from '@angular/core';
2
+ import { MatCalendar } from '@angular/material/datepicker';
3
+ import { Temporal } from '@js-temporal/polyfill';
4
+ import { Observable } from 'rxjs';
5
+ import { Interval, IsoIntervalStr } from '../../../common/time/interval';
4
6
  import { IntervalInputMode } from '../elder-interval-input/elder-interval-input.component';
5
- import { IntervalPickerModel } from './model/interval-picker-model';
7
+ import IntervalController from './controller/interval-controller';
8
+ import IntervalPickerPresenter from './presenter/interval-picker-presenter';
6
9
  import * as i0 from "@angular/core";
7
- export declare class ElderIntervalPickerComponent implements AfterViewInit, OnDestroy {
8
- model: IntervalPickerModel;
10
+ export declare class ElderIntervalPickerComponent {
9
11
  /***************************************************************************
10
12
  * *
11
13
  * Fields *
12
14
  * *
13
15
  **************************************************************************/
14
16
  private readonly log;
17
+ private readonly manager;
18
+ readonly controller: IntervalController;
19
+ readonly presenter: IntervalPickerPresenter;
20
+ readonly intervalChange: Observable<Interval | IsoIntervalStr | null>;
21
+ autoEmitMode: boolean;
22
+ emitOnChange: boolean;
23
+ emitType: 'interval' | 'iso';
24
+ intervalInputMode: import("@angular/core").InputSignal<IntervalInputMode>;
25
+ showAnchor: import("@angular/core").InputSignal<boolean>;
26
+ anchorReadOnly: import("@angular/core").InputSignal<boolean>;
27
+ externalAnchorDateTime: import("@angular/core").InputSignal<Temporal.PlainDateTime>;
28
+ externalInterval: import("@angular/core").InputSignal<string | Interval>;
15
29
  calendarStart: MatCalendar<Date>;
16
30
  calendarEnd: MatCalendar<Date>;
17
31
  calendarStartElRef: ElementRef;
18
32
  calendarEndElRef: ElementRef;
19
33
  startDateInput: ElementRef;
20
34
  endDateInput: ElementRef;
21
- readonly emitOnChange: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
22
- readonly intervalInputMode: import("@angular/core").InputSignal<IntervalInputMode>;
23
- readonly showAnchor: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
24
- readonly anchorReadOnly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
25
- readonly showResultText: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
26
- readonly showHelpText: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
27
- readonly lastExcludesToday: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
28
- dateChange: EventEmitter<Interval>;
29
35
  private calendarElFocusEventHandler;
30
- set interval(value: Interval);
31
- set anchorDateTime(value: Date);
32
36
  /***************************************************************************
33
37
  * *
34
38
  * Constructor *
35
39
  * *
36
40
  **************************************************************************/
37
- constructor(model: IntervalPickerModel);
41
+ constructor();
38
42
  /***************************************************************************
39
43
  * *
40
44
  * Life Cycle *
41
45
  * *
42
46
  **************************************************************************/
43
- ngAfterViewInit(): void;
47
+ ngOnInit(): void;
44
48
  ngOnDestroy(): void;
45
- /***************************************************************************
46
- * *
47
- * Public API *
48
- * *
49
- **************************************************************************/
50
- setupDateInputCalendarFocusPrevention(): void;
51
- clearStartDateTime(): void;
52
- clearEndDateTime(): void;
53
- clearStartAndEndDateTimes(): void;
54
- handleStartCalendarChange(changedDate: Date): void;
55
- handleEndCalendarChange(changedDate: Date): void;
49
+ ngAfterViewInit(): void;
56
50
  /***************************************************************************
57
51
  * *
58
52
  * Private methods *
59
53
  * *
60
54
  **************************************************************************/
55
+ private setupDateInputCalendarFocusPrevention;
61
56
  private removeEventListeners;
62
- readonly calendarAnchorDateCssClassFn: MatCalendarCellClassFunction<Date>;
63
- private calendarAnchorDateCssClassFnBody;
64
- private updateMatCalendarActiveDate;
65
- private updateMatCalendarTodayDate;
57
+ private tryUpdateMatCalendarActiveDate;
66
58
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderIntervalPickerComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderIntervalPickerComponent, "elder-interval-picker", never, { "emitOnChange": { "alias": "emitOnChange"; "required": false; "isSignal": true; }; "intervalInputMode": { "alias": "intervalInputMode"; "required": false; "isSignal": true; }; "showAnchor": { "alias": "showAnchor"; "required": false; "isSignal": true; }; "anchorReadOnly": { "alias": "anchorReadOnly"; "required": false; "isSignal": true; }; "showResultText": { "alias": "showResultText"; "required": false; "isSignal": true; }; "showHelpText": { "alias": "showHelpText"; "required": false; "isSignal": true; }; "lastExcludesToday": { "alias": "lastExcludesToday"; "required": false; "isSignal": true; }; "interval": { "alias": "interval"; "required": false; }; "anchorDateTime": { "alias": "anchorDateTime"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, true, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderIntervalPickerComponent, "elder-interval-picker", never, { "autoEmitMode": { "alias": "autoEmitMode"; "required": false; }; "emitOnChange": { "alias": "emitOnChange"; "required": false; }; "emitType": { "alias": "emitType"; "required": false; }; "intervalInputMode": { "alias": "intervalInputMode"; "required": false; "isSignal": true; }; "showAnchor": { "alias": "showAnchor"; "required": false; "isSignal": true; }; "anchorReadOnly": { "alias": "anchorReadOnly"; "required": false; "isSignal": true; }; "externalAnchorDateTime": { "alias": "externalAnchorDateTime"; "required": false; "isSignal": true; }; "externalInterval": { "alias": "externalInterval"; "required": false; "isSignal": true; }; }, { "intervalChange": "intervalChange"; }, never, never, true, never>;
68
60
  }
@@ -1,8 +1,7 @@
1
- import { AfterContentInit } from '@angular/core';
2
- import { ElderIntervalInputComponent } from '../../../components/time/elder-interval-input/elder-interval-input.component';
3
- import { ElderIntervalPickerToggleComponent } from './elder-interval-picker-toggle/elder-interval-picker-toggle.component';
1
+ import { ElderIntervalInputComponent } from '../../elder-interval-input/elder-interval-input.component';
2
+ import { ElderIntervalPickerToggleComponent } from '../interval-picker-toggle/elder-interval-picker-toggle.component';
4
3
  import * as i0 from "@angular/core";
5
- export declare class ElderIntervalPickerBindingDirective implements AfterContentInit {
4
+ export declare class ElderIntervalPickerBindingDirective {
6
5
  /***************************************************************************
7
6
  * *
8
7
  * Fields *
@@ -0,0 +1,37 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import { Interval } from '../../../../common/time/interval';
3
+ import { ElderIntervalInputComponent, IntervalInputMode } from '../../elder-interval-input/elder-interval-input.component';
4
+ import { ElderIntervalPickerComponent } from '../elder-interval-picker.component';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ElderIntervalPickerToggleComponent {
7
+ /***************************************************************************
8
+ * *
9
+ * Fields *
10
+ * *
11
+ **************************************************************************/
12
+ connectedIntervalPicker: ElderIntervalPickerComponent;
13
+ private readonly log;
14
+ connectedIntervalInput: ElderIntervalInputComponent;
15
+ readonly intervalInputMode: import("@angular/core").WritableSignal<IntervalInputMode>;
16
+ readonly emitType: import("@angular/core").WritableSignal<"interval" | "iso">;
17
+ readonly externalInterval: import("@angular/core").WritableSignal<Interval>;
18
+ showAnchor: import("@angular/core").InputSignal<boolean>;
19
+ anchorReadOnly: import("@angular/core").InputSignal<boolean>;
20
+ externalAnchorDateTime: import("@angular/core").InputSignal<Temporal.PlainDateTime>;
21
+ disabled: boolean;
22
+ /***************************************************************************
23
+ * *
24
+ * Life Cycle *
25
+ * *
26
+ **************************************************************************/
27
+ ngAfterViewInit(): void;
28
+ /***************************************************************************
29
+ * *
30
+ * Public API *
31
+ * *
32
+ **************************************************************************/
33
+ setConnectedIntervalInput(intervalInput: ElderIntervalInputComponent): void;
34
+ handleIntervalPickerDateChange(interval: any): void;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElderIntervalPickerToggleComponent, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderIntervalPickerToggleComponent, "elder-interval-picker-toggle", never, { "connectedIntervalInput": { "alias": "connectedIntervalInput"; "required": false; }; "showAnchor": { "alias": "showAnchor"; "required": false; "isSignal": true; }; "anchorReadOnly": { "alias": "anchorReadOnly"; "required": false; "isSignal": true; }; "externalAnchorDateTime": { "alias": "externalAnchorDateTime"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
37
+ }
@@ -0,0 +1,46 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import { Observable } from 'rxjs';
3
+ import AnchorState from '../model/anchor-state';
4
+ import IntervalState from '../model/interval-state';
5
+ import SmartShiftState from '../model/smart-shift-state';
6
+ export default class IntervalPickerStateManager {
7
+ /***************************************************************************
8
+ * *
9
+ * Fields *
10
+ * *
11
+ **************************************************************************/
12
+ private readonly log;
13
+ private readonly _anchor;
14
+ private readonly _interval;
15
+ private readonly _smartShift;
16
+ private readonly _intervalChange;
17
+ isInitialized: boolean;
18
+ /***************************************************************************
19
+ * *
20
+ * Constructor *
21
+ * *
22
+ **************************************************************************/
23
+ constructor();
24
+ /***************************************************************************
25
+ * *
26
+ * Properties *
27
+ * *
28
+ **************************************************************************/
29
+ get interval$(): Observable<IntervalState>;
30
+ get anchor$(): Observable<AnchorState>;
31
+ get smartShift$(): Observable<SmartShiftState>;
32
+ get intervalValue(): IntervalState;
33
+ get anchorValue(): AnchorState;
34
+ get smartShiftValue(): SmartShiftState;
35
+ get intervalChange(): Observable<IntervalState>;
36
+ /***************************************************************************
37
+ * *
38
+ * Public API *
39
+ * *
40
+ **************************************************************************/
41
+ setAnchor(anchor: AnchorState): void;
42
+ setExternalAnchor(TemporalDateTime: Temporal.PlainDateTime): void;
43
+ setExternalInterval(interval: IntervalState): void;
44
+ setSmartShift(smartShift: SmartShiftState): void;
45
+ setInterval(interval: IntervalState): void;
46
+ }
@@ -0,0 +1,20 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ export default class AnchorState {
3
+ readonly fixedDate: Temporal.PlainDate;
4
+ readonly fixedTime: Temporal.PlainTime;
5
+ readonly referenceDateTime: Temporal.PlainDateTime;
6
+ constructor(fixedDate: Temporal.PlainDate, fixedTime?: Temporal.PlainTime, referenceDateTime?: Temporal.PlainDateTime);
7
+ static createFromDateTime(dateTime: Temporal.PlainDateTime): AnchorState;
8
+ static createFromJsDate(date: Date): AnchorState;
9
+ static empty(): AnchorState;
10
+ withDate(date: Temporal.PlainDate): AnchorState;
11
+ withTime(time: Temporal.PlainTime): AnchorState;
12
+ withTimeMidnight(): AnchorState;
13
+ withReferenceDateTimeNow(): AnchorState;
14
+ get fixedDateTime(): Temporal.PlainDateTime;
15
+ get isFixed(): boolean;
16
+ get date(): Temporal.PlainDate;
17
+ get time(): Temporal.PlainTime;
18
+ get dateTime(): Temporal.PlainDateTime;
19
+ get isTimeMidnight(): boolean;
20
+ }
@@ -0,0 +1,16 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ export default class IntervalState {
3
+ readonly startDate: Temporal.PlainDate;
4
+ readonly endDate: Temporal.PlainDate;
5
+ readonly startTime?: Temporal.PlainTime;
6
+ readonly endTime?: Temporal.PlainTime;
7
+ constructor(startDate: Temporal.PlainDate, endDate: Temporal.PlainDate, startTime?: Temporal.PlainTime, endTime?: Temporal.PlainTime);
8
+ static createFromDateTimes(startDateTime: Temporal.PlainDateTime, endDateTime: Temporal.PlainDateTime): IntervalState;
9
+ get startDateTime(): Temporal.PlainDateTime;
10
+ get endDateTime(): Temporal.PlainDateTime;
11
+ withStartDate(newStartDate: Temporal.PlainDate): IntervalState;
12
+ withEndDate(newEndDate: Temporal.PlainDate): IntervalState;
13
+ withStartTime(newStartTime: Temporal.PlainTime): IntervalState;
14
+ withEndTime(newEndTime: Temporal.PlainTime): IntervalState;
15
+ withTime(newStartTime: Temporal.PlainTime, newEndTime: Temporal.PlainTime): IntervalState;
16
+ }
@@ -0,0 +1,8 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ export type SmartShiftMode = 'days' | 'weeks' | 'months' | 'quarters' | 'years' | 'time';
3
+ export default class SmartShiftState {
4
+ duration: Temporal.Duration;
5
+ mode: SmartShiftMode;
6
+ constructor(duration: Temporal.Duration, mode: SmartShiftMode);
7
+ static empty(): SmartShiftState;
8
+ }
@@ -0,0 +1,30 @@
1
+ import { Signal } from '@angular/core';
2
+ import { DateRange, MatCalendarCellClassFunction } from '@angular/material/datepicker';
3
+ import { Observable } from 'rxjs';
4
+ import AnchorState from '../model/anchor-state';
5
+ import IntervalState from '../model/interval-state';
6
+ import SmartShiftState from '../model/smart-shift-state';
7
+ export default class IntervalPickerPresenter {
8
+ private readonly intervalState;
9
+ private readonly anchorState;
10
+ private readonly smartShiftState;
11
+ constructor(interval$: Observable<IntervalState>, anchor$: Observable<AnchorState>, smartShift$: Observable<SmartShiftState>);
12
+ readonly startDateHtmlString: Signal<string>;
13
+ readonly endDateHtmlString: Signal<string>;
14
+ readonly anchorDateHtmlString: Signal<string>;
15
+ readonly startTimeHtmlString: Signal<string>;
16
+ readonly endTimeHtmlString: Signal<string>;
17
+ readonly anchorTimeHtmlString: Signal<string>;
18
+ readonly isValidIntervalSet: Signal<boolean>;
19
+ readonly deltaHumanReadable: Signal<string>;
20
+ readonly smartShiftMessage: Signal<string>;
21
+ readonly startDateTimeAsJSDate: Signal<Date>;
22
+ readonly endDateTimeAsJSDate: Signal<Date>;
23
+ readonly dateRangeForCalendar: Signal<DateRange<Date>>;
24
+ readonly isStartTimeSetAndNotMidnight: Signal<boolean>;
25
+ readonly isEndTimeSetAndNotMidnight: Signal<boolean>;
26
+ readonly isFixedAnchorDateSet: Signal<boolean>;
27
+ readonly isAnchorTimeMidnight: Signal<boolean>;
28
+ readonly isAnchorMenuDisabled: Signal<boolean>;
29
+ readonly calendarAnchorDateCssClassFn: MatCalendarCellClassFunction<Date>;
30
+ }
@@ -0,0 +1,20 @@
1
+ import { MatCalendar } from '@angular/material/datepicker';
2
+ import { Temporal } from '@js-temporal/polyfill';
3
+ import { Interval } from '../../../../common/time/interval';
4
+ import IntervalState from '../model/interval-state';
5
+ export default class IntervalPickerUtil {
6
+ static createElderInterval(intervalState: IntervalState): Interval;
7
+ static transformToIntervalState(interval: Interval): IntervalState;
8
+ static createTemporalDateTime(date: Temporal.PlainDate, time: Temporal.PlainTime): Temporal.PlainDateTime;
9
+ static isIntervalEquals(interval1: IntervalState, interval2: IntervalState): boolean;
10
+ static isEquals(x: Temporal.PlainDate | Temporal.PlainTime | Temporal.PlainDateTime, y: Temporal.PlainDate | Temporal.PlainTime | Temporal.PlainDateTime): boolean;
11
+ static isIntervalWithStartAndEnd(interval: IntervalState): boolean;
12
+ static isOpenInterval(interval: IntervalState): boolean;
13
+ static getDeltaHumanReadable(interval: IntervalState): string;
14
+ static getSmartShiftMessage(mode: string, dateInterval: IntervalState): string;
15
+ static isTimeSetAndNotMidnight(time: Temporal.PlainTime): boolean;
16
+ static setMillisecondsToZero(interval: IntervalState): IntervalState;
17
+ static roundUpToSeconds<T extends Temporal.PlainTime | Temporal.PlainDateTime>(time: T): T;
18
+ static updateMatCalendarActiveDate(calendarStart: MatCalendar<Date> | undefined, calendarEnd: MatCalendar<Date> | undefined, startDate: Temporal.PlainDate, endDate: Temporal.PlainDate): void;
19
+ static updateMatCalendarTodayDate(calendarStart: MatCalendar<Date> | undefined, calendarEnd: MatCalendar<Date> | undefined): void;
20
+ }
@@ -17,8 +17,8 @@ import * as i15 from "./elder-local-date-input/elder-local-date-input.component"
17
17
  import * as i16 from "./duration/elder-duration-input/elder-duration-input.component";
18
18
  import * as i17 from "./period/elder-period-input/elder-period-input.component";
19
19
  import * as i18 from "./elder-interval-picker/elder-interval-picker.component";
20
- import * as i19 from "./elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component";
21
- import * as i20 from "./elder-interval-picker/elder-interval-picker-binding.directive";
20
+ import * as i19 from "./elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component";
21
+ import * as i20 from "./elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive";
22
22
  import * as i21 from "./pipes/to-iso-date-string.pipe";
23
23
  export { ElderDateSwitcherComponent } from './elder-date-switcher/elder-date-switcher.component';
24
24
  export { ElderIntervalInputComponent } from './elder-interval-input/elder-interval-input.component';
@@ -28,8 +28,8 @@ export { ElderLocalDateInputComponent } from './elder-local-date-input/elder-loc
28
28
  export { ElderDurationInputComponent } from './duration/elder-duration-input/elder-duration-input.component';
29
29
  export { ElderPeriodInputComponent } from './period/elder-period-input/elder-period-input.component';
30
30
  export { ElderIntervalPickerComponent } from './elder-interval-picker/elder-interval-picker.component';
31
- export { ElderIntervalPickerToggleComponent } from './elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component';
32
- export { ElderIntervalPickerBindingDirective } from './elder-interval-picker/elder-interval-picker-binding.directive';
31
+ export { ElderIntervalPickerToggleComponent } from './elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component';
32
+ export { ElderIntervalPickerBindingDirective } from './elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive';
33
33
  export { ToIsoDateStringPipe } from './pipes/to-iso-date-string.pipe';
34
34
  export declare class ElderTimeModule {
35
35
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderTimeModule, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elderbyte/ngx-starter",
3
- "version": "18.12.4",
3
+ "version": "18.12.6",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^17.0.0 || ^18.0.0",
6
6
  "@angular/common": "^17.0.0 || ^18.0.0",
@@ -1,40 +0,0 @@
1
- import { ContentChild, Directive } from '@angular/core';
2
- import { ElderIntervalInputComponent } from '../../../components/time/elder-interval-input/elder-interval-input.component';
3
- import { ElderIntervalPickerToggleComponent } from './elder-interval-picker-toggle/elder-interval-picker-toggle.component';
4
- import * as i0 from "@angular/core";
5
- export class ElderIntervalPickerBindingDirective {
6
- /***************************************************************************
7
- * *
8
- * Constructor *
9
- * *
10
- **************************************************************************/
11
- constructor() { }
12
- /***************************************************************************
13
- * *
14
- * Life Cycle *
15
- * *
16
- **************************************************************************/
17
- ngAfterContentInit() {
18
- if (!this.intervalInputComponent || !this.intervalPickerToggleComponent) {
19
- console.error('ElderIntervalPickerBindingDirective: Both components are required, IntervalInputComponent and IntervalPickerToggleComponent.');
20
- }
21
- this.intervalInputComponent.isDefaultDatePickerDisabled = true;
22
- this.intervalPickerToggleComponent.registerInputComponent(this.intervalInputComponent);
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: ElderIntervalPickerBindingDirective, isStandalone: true, selector: "[elderIntervalPickerBinding]", queries: [{ propertyName: "intervalInputComponent", first: true, predicate: ElderIntervalInputComponent, descendants: true }, { propertyName: "intervalPickerToggleComponent", first: true, predicate: ElderIntervalPickerToggleComponent, descendants: true }], ngImport: i0 }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerBindingDirective, decorators: [{
28
- type: Directive,
29
- args: [{
30
- selector: '[elderIntervalPickerBinding]',
31
- standalone: true,
32
- }]
33
- }], ctorParameters: () => [], propDecorators: { intervalInputComponent: [{
34
- type: ContentChild,
35
- args: [ElderIntervalInputComponent]
36
- }], intervalPickerToggleComponent: [{
37
- type: ContentChild,
38
- args: [ElderIntervalPickerToggleComponent]
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9lbGRlci1pbnRlcnZhbC1waWNrZXItYmluZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhFQUE4RSxDQUFBO0FBQzFILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHVFQUF1RSxDQUFBOztBQU0xSCxNQUFNLE9BQU8sbUNBQW1DO0lBWTlDOzs7O2dGQUk0RTtJQUU1RSxnQkFBZSxDQUFDO0lBRWhCOzs7O2dGQUk0RTtJQUVyRSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxLQUFLLENBQ1gsOEhBQThILENBQy9ILENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQTtRQUM5RCxJQUFJLENBQUMsNkJBQTZCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDeEYsQ0FBQzs4R0FsQ1UsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsNElBT2hDLDJCQUEyQixnR0FFM0Isa0NBQWtDOzsyRkFUckMsbUNBQW1DO2tCQUovQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjt3REFTQyxzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCO2dCQUd6Qyw2QkFBNkI7c0JBRDVCLFlBQVk7dUJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2VsZGVyLWludGVydmFsLXBpY2tlci10b2dnbGUvZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQnXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlbGRlckludGVydmFsUGlja2VyQmluZGluZ10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsUGlja2VyQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAQ29udGVudENoaWxkKEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudClcbiAgaW50ZXJ2YWxJbnB1dENvbXBvbmVudDogRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50XG4gIEBDb250ZW50Q2hpbGQoRWxkZXJJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudClcbiAgaW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQ6IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnRcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudCB8fCAhdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0VsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nRGlyZWN0aXZlOiBCb3RoIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLCBJbnRlcnZhbElucHV0Q29tcG9uZW50IGFuZCBJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC4nXG4gICAgICApXG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudC5pc0RlZmF1bHREYXRlUGlja2VyRGlzYWJsZWQgPSB0cnVlXG4gICAgdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC5yZWdpc3RlcklucHV0Q29tcG9uZW50KHRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudClcbiAgfVxufVxuIl19