datex-ui 1.0.7 → 1.1.9

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.
package/README.md CHANGED
@@ -9,10 +9,10 @@ A modern, lightweight, and customizable date range picker for TypeScript/JavaScr
9
9
  ## Features
10
10
 
11
11
  - 📅 **Date Range Selection** - Select start and end dates with intuitive interface
12
- - **\*Single Date Mode** - Use as a single date picker
12
+ - 📆 **Single Date Mode** - Use as a single date picker
13
13
  - ⏰ **Time Picker** - Optional time selection with 12/24 hour formats
14
14
  - 🎨 **Customizable Themes** - Built-in themes (Default, Bootstrap, Material) or create your own
15
- - **Inteernationalization** - Built-in Spanish locale with easy customization
15
+ - 🌍 **Internationalization** - Built-in Spanish locale with easy customization
16
16
  - 📱 **Responsive Design** - Works on desktop and mobile devices
17
17
  - 🚀 **Zero Dependencies** - Pure JavaScript/TypeScript implementation
18
18
  - 🎛️ **Predefined Ranges** - Quick selection with common date ranges
@@ -1,9 +1,6 @@
1
1
  /**
2
- * Predefined locales for DateX
2
+ * Predefined locales for Datex date picker
3
3
  */
4
- import type { DateRangePickerLocale } from "../types";
5
- export declare const ENGLISH_LOCALE: DateRangePickerLocale;
6
- export declare const SPANISH_LOCALE: DateRangePickerLocale;
7
- export declare const SPANISH_LOCALE_WITH_TIME: DateRangePickerLocale;
8
- export declare const FRENCH_LOCALE: DateRangePickerLocale;
9
- export declare const GERMAN_LOCALE: DateRangePickerLocale;
4
+ import { DatexLocale } from "../types/datex-types";
5
+ export declare const SPANISH_LOCALE: DatexLocale;
6
+ export declare const SPANISH_LOCALE_WITH_TIME: DatexLocale;
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Predefined themes for DateX
2
+ * Predefined themes for Datex date picker
3
3
  */
4
- import type { DateRangePickerTheme } from "../types";
5
- export declare const DEFAULT_THEME: DateRangePickerTheme;
6
- export declare const BOOTSTRAP_THEME: DateRangePickerTheme;
7
- export declare const MATERIAL_THEME: DateRangePickerTheme;
8
- export declare const DARK_THEME: DateRangePickerTheme;
4
+ import { DatexTheme } from "../types/datex-types";
5
+ export declare const DEFAULT_THEME: DatexTheme;
6
+ export declare const BOOTSTRAP_THEME: DatexTheme;
7
+ export declare const MATERIAL_THEME: DatexTheme;
package/dist/datex.d.ts CHANGED
@@ -1,136 +1,103 @@
1
- export interface DatexTheme {
2
- primaryColor?: string;
3
- secondaryColor?: string;
4
- backgroundColor?: string;
5
- borderColor?: string;
6
- textColor?: string;
7
- hoverColor?: string;
8
- selectedColor?: string;
9
- rangeColor?: string;
10
- todayColor?: string;
11
- disabledColor?: string;
12
- applyButtonColor?: string;
13
- cancelButtonColor?: string;
14
- borderRadius?: string;
15
- fontSize?: string;
16
- fontFamily?: string;
17
- }
18
- export declare const DEFAULT_THEME: DatexTheme;
19
- export declare const BOOTSTRAP_THEME: DatexTheme;
20
- export declare const MATERIAL_THEME: DatexTheme;
21
- export interface DatexOptions {
22
- startDate?: Date;
23
- endDate?: Date;
24
- minDate?: Date | null;
25
- maxDate?: Date | null;
26
- minYear?: number;
27
- maxYear?: number;
28
- maxSpan?: {
29
- days?: number;
30
- } | null;
31
- autoApply?: boolean;
32
- singleDatePicker?: boolean;
33
- showDropdowns?: boolean;
34
- linkedCalendars?: boolean;
35
- autoUpdateInput?: boolean;
36
- alwaysShowCalendars?: boolean;
37
- showCustomRangeLabel?: boolean;
38
- timePicker?: boolean;
39
- timePicker24Hour?: boolean;
40
- timePickerIncrement?: number;
41
- timePickerSeconds?: boolean;
42
- ranges?: Record<string, [Date, Date]>;
43
- opens?: "left" | "right" | "center";
44
- drops?: "up" | "down" | "auto";
45
- locale?: DatexLocale;
46
- buttonClasses?: string;
47
- applyButtonClasses?: string;
48
- cancelButtonClasses?: string;
49
- theme?: DatexTheme;
50
- }
51
- export interface DatexLocale {
52
- format: string;
53
- separator: string;
54
- applyLabel: string;
55
- cancelLabel: string;
56
- customRangeLabel: string;
57
- daysOfWeek: string[];
58
- monthNames: string[];
59
- firstDay: number;
60
- }
61
- export declare const SPANISH_LOCALE: DatexLocale;
62
- export declare const SPANISH_LOCALE_WITH_TIME: DatexLocale;
63
- export type DatexCallback = (startDate: Date, endDate: Date, label?: string) => void;
1
+ /**
2
+ * Datex - Modern Date Range Picker
3
+ * Refactored for better maintainability and clean code principles
4
+ */
5
+ import { ValidationResult, DatexValidation } from "./services/validation-service";
6
+ import { DatexOptions, DatexCallback, DatexTheme } from "./types/datex-types";
7
+ export * from "./types/datex-types";
8
+ export * from "./constants/themes";
9
+ export * from "./constants/locales";
64
10
  export declare class Datex {
65
11
  private element;
66
12
  private container;
67
13
  private options;
68
14
  private locale;
69
- private theme;
70
15
  private callback;
71
16
  private state;
72
- private boundHandlers;
73
- private resizeHandler?;
74
- private scrollHandler?;
75
- private documentClickHandler?;
76
- private documentFocusHandler?;
17
+ private themeService;
18
+ private eventService;
19
+ private positionService;
20
+ private calendarService;
21
+ private validationService;
22
+ private keyboardService;
77
23
  constructor(element: HTMLElement | string, options?: DatexOptions, callback?: DatexCallback);
78
- private applyTheme;
79
- private generateThemeCSS;
80
- setTheme(theme: DatexTheme): void;
81
- refreshTheme(): void;
82
- getCurrentTheme(): DatexTheme;
83
- testDropdowns(): void;
84
- private mergeOptions;
24
+ private resolveElement;
25
+ private mergeWithDefaults;
26
+ private initializeState;
27
+ private initializeServices;
85
28
  private createContainer;
86
- private renderRanges;
87
- private setupEventListeners;
88
- private addEventHandler;
89
- private containerChange;
90
- private containerMouseOver;
91
- private containerMouseLeave;
92
- private containerClick;
93
- private preventBlur;
29
+ private buildContainerTemplate;
30
+ private initializeContainerServices;
31
+ private setupContainerClasses;
32
+ private setupInitialVisibility;
94
33
  show(): void;
95
34
  hide(): void;
96
- private removeDocumentListeners;
97
- private outsideClick;
98
- private outsideFocus;
99
35
  toggle(): void;
36
+ setStartDate(date: Date): void;
37
+ setEndDate(date: Date): void;
38
+ getStartDate(): Date;
39
+ getEndDate(): Date | null;
40
+ setTheme(theme: DatexTheme): void;
41
+ setThemeMode(mode: "light" | "dark" | "auto"): void;
42
+ getThemeMode(): "light" | "dark" | "auto";
43
+ getCurrentThemeMode(): "light" | "dark";
44
+ updateValidation(validation: DatexValidation): void;
45
+ validateDate(date: Date): ValidationResult;
46
+ validateDateRange(startDate: Date, endDate: Date): ValidationResult;
47
+ enableKeyboardNavigation(): void;
48
+ disableKeyboardNavigation(): void;
49
+ setKeyboardFocusedDate(date: Date): void;
50
+ remove(): void;
51
+ private storeOldValues;
52
+ private setupDocumentListeners;
53
+ private removeDocumentListeners;
54
+ private displayContainer;
55
+ private hideContainer;
56
+ private positionContainer;
57
+ private revertIfIncomplete;
58
+ private triggerCallbackIfChanged;
59
+ private roundToIncrement;
60
+ private dispatchShowEvent;
61
+ private dispatchHideEvent;
62
+ private cleanup;
63
+ private handleKeyboardDateSelect;
64
+ private clearSelection;
65
+ private showValidationError;
66
+ private setupEventListeners;
67
+ private setupElementEvents;
68
+ private setupContainerEvents;
69
+ private isInputOrButton;
70
+ private handleContainerClick;
71
+ private handleContainerMouseOver;
72
+ private handleContainerMouseLeave;
73
+ private handleContainerChange;
74
+ private handleOutsideClick;
75
+ private handleOutsideFocus;
76
+ private handleElementChange;
77
+ private parseDateParts;
78
+ private handleKeydown;
79
+ private handleRangeClick;
80
+ private handleApplyClick;
81
+ private handleCancelClick;
82
+ private handlePrevClick;
83
+ private handleNextClick;
84
+ private handleDateClick;
85
+ private handleDateHover;
86
+ private handleMonthYearChange;
87
+ private handleTimeChange;
100
88
  private updateView;
89
+ private updateTimePickerControls;
101
90
  private updateMonthsInView;
102
- private getStartOfMonth;
103
- private getEndOfMonth;
104
- private getStartOfWeek;
105
91
  private updateCalendars;
106
92
  private renderCalendar;
107
- private renderDropdowns;
108
- private getDayClasses;
109
93
  private updateFormInputs;
110
94
  private updateSelectedDisplay;
111
- private renderTimePicker;
112
- private timeChanged;
113
95
  private updateElement;
114
- private move;
115
- private clickRange;
116
- private clickPrev;
117
- private clickNext;
118
- private clickDate;
119
- private hoverDate;
120
- private updateDateClasses;
121
- private clickApply;
122
- private clickCancel;
123
- private monthOrYearChanged;
124
- private elementChanged;
125
- private keydown;
126
- private showCalendars;
127
- private hideCalendars;
96
+ private renderRanges;
128
97
  private calculateChosenLabel;
129
- setStartDate(date: Date): void;
130
- setEndDate(date: Date): void;
131
- getStartDate(): Date;
132
- getEndDate(): Date | null;
133
- remove(): void;
134
- updateRanges(newRanges: Record<string, [Date, Date]>): void;
135
- private dispatchEvent;
98
+ private updateActiveRange;
99
+ private showCalendars;
100
+ private updateDateClasses;
101
+ private applyTimeToDate;
102
+ private createRangeService;
136
103
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,10 @@
1
- import "./datex.scss";
1
+ /**
2
+ * Datex - Modern Date Range Picker
3
+ * Main entry point for the library
4
+ */
2
5
  export { Datex } from "./datex";
3
- export type { DatexOptions, DatexTheme, DatexLocale, DatexCallback, } from "./datex";
4
- export { DEFAULT_THEME, BOOTSTRAP_THEME, MATERIAL_THEME } from "./datex";
5
- export { SPANISH_LOCALE, SPANISH_LOCALE_WITH_TIME } from "./datex";
6
+ export type { DatexOptions, DatexCallback, DatexTheme, DatexLocale, DatexEvents, CalendarState, PickerState, } from "./types/datex-types";
7
+ export type { DatexValidation, ValidationResult, } from "./services/validation-service";
8
+ export { DEFAULT_THEME, BOOTSTRAP_THEME, MATERIAL_THEME, } from "./constants/themes";
9
+ export { SPANISH_LOCALE, SPANISH_LOCALE_WITH_TIME } from "./constants/locales";
10
+ export { formatDate, addMonths, startOfDay, endOfDay, isAfterDate, isBeforeDate, parseDate, isSameDate, isValidDate, getStartOfMonth, } from "./utils/date-utils";