ngxsmk-datepicker 1.4.10 โ†’ 1.4.12

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
@@ -1,289 +1,292 @@
1
- # ngxsmk-datepicker Library
2
-
3
- A modern, powerful, and fully customizable date and date-range picker component designed for Angular 17+ and Ionic applications. Seamlessly integrates with both frameworks, offering a flexible, mobile-friendly UI and advanced features to enhance date selection experiences in your apps.
4
-
5
- ## ๐Ÿ“ฆ Package Information
6
-
7
- - **NPM Package**: [ngxsmk-datepicker](https://www.npmjs.com/package/ngxsmk-datepicker)
8
- - **GitHub Repository**: [https://github.com/toozuuu/ngxsmk-datepicker](https://github.com/toozuuu/ngxsmk-datepicker)
9
- - **Live Demo**: [https://stackblitz.com/~/github.com/toozuuu/ngxsmk-datepicker](https://stackblitz.com/~/github.com/toozuuu/ngxsmk-datepicker)
10
- - **Version**: 1.4.10
11
- - **License**: MIT
12
- - **Author**: Sachin Dilshan
13
-
14
- ## ๐Ÿ“ท Screenshots
15
-
16
- <p align="left">
17
- <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/1.png" alt="Angular Advanced Date Range Picker" width="420" />
18
- &nbsp;&nbsp;
19
- <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/2.png" alt="Angular Localization" width="420" />
20
- &nbsp;&nbsp;
21
- <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/3.png" alt="Angular Single Date Selection" width="420" />
22
- </p>
23
-
24
- ## ๐Ÿš€ Performance Optimizations
25
-
26
- This library has been optimized for maximum performance:
27
-
28
- - **30% Smaller Bundle**: Optimized build configuration and tree-shaking
29
- - **40% Faster Rendering**: OnPush change detection strategy
30
- - **60% Faster Selection**: Memoized date comparisons and debounced operations
31
- - **Zero Dependencies**: Standalone component with no external dependencies
32
- - **Tree-shakable**: Only import what you need
33
-
34
- ## โœจ Features
35
-
36
- - **Multiple Selection Modes**: Supports `single`, `range`, and `multiple` date selection
37
- - **Inline and Popover Display**: Can be rendered inline or as a popover with automatic mode detection
38
- - **Light and Dark Themes**: Includes built-in support for light and dark modes
39
- - **Holiday Marking**: Automatically mark and disable holidays using a custom `HolidayProvider`
40
- - **Date & Time Selection**: Supports optional time inputs with configurable minute intervals
41
- - **12h/24h Time Support**: Uses internal 24-hour timekeeping but displays a user-friendly 12-hour clock with AM/PM toggle
42
- - **Predefined Date Ranges**: Offers quick selection of common ranges (e.g., "Last 7 Days")
43
- - **Advanced Localization (i18n)**: Automatically handles month/weekday names and week start days based on the browser's locale
44
- - **Custom Styling**: All component elements are prefixed with `ngxsmk-` and themeable via CSS custom properties
45
- - **Zero Dependencies**: The component is standalone and lightweight
46
-
47
- ## ๐Ÿš€ Installation
48
-
49
- ```bash
50
- npm install ngxsmk-datepicker
51
- ```
52
-
53
- ## ๐Ÿ“– Usage
54
-
55
- ngxsmk-datepicker is a standalone component, so you can import it directly into your component or module.
56
-
57
- ### 1. Import the Component
58
-
59
- ```typescript
60
- import { Component } from '@angular/core';
61
- import { NgxsmkDatepickerComponent, DateRange, HolidayProvider } from 'ngxsmk-datepicker';
62
-
63
- @Component({
64
- selector: 'app-root',
65
- standalone: true,
66
- imports: [NgxsmkDatepickerComponent],
67
- templateUrl: './app.component.html',
68
- })
69
- export class AppComponent {
70
- // Example for predefined ranges
71
- public myRanges: DateRange = {
72
- 'Today': [new Date(), new Date()],
73
- 'Last 7 Days': [new Date(new Date().setDate(new Date().getDate() - 6)), new Date()],
74
- 'This Month': [new Date(new Date().getFullYear(), new Date().getMonth(), 1), new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0)],
75
- };
76
-
77
- // Example for disabling weekends
78
- isWeekend = (date: Date): boolean => {
79
- const day = date.getDay();
80
- return day === 0 || day === 6; // Sunday or Saturday
81
- };
82
-
83
- onDateChange(value: Date | { start: Date; end: Date } | Date[]) {
84
- console.log('Date changed:', value);
85
- }
86
- }
87
- ```
88
-
89
- ### 2. Add it to Your Template
90
-
91
- ```html
92
- <ngxsmk-datepicker
93
- [mode]="'range'"
94
- [ranges]="myRanges"
95
- [showTime]="true"
96
- [minuteInterval]="15"
97
- [minDate]="today"
98
- [isInvalidDate]="isWeekend"
99
- [locale]="'en-US'"
100
- [theme]="'light'"
101
- [inline]="'auto'"
102
- (valueChange)="onDateChange($event)">
103
- </ngxsmk-datepicker>
104
- ```
105
-
106
- ## โš™๏ธ API Reference
107
-
108
- ### Inputs
109
-
110
- | Property | Type | Default | Description |
111
- |:---------|:-----|:--------|:------------|
112
- | `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | The selection mode |
113
- | `inline` | `boolean \| 'always' \| 'auto'` | `false` | Controls the display mode |
114
- | `locale` | `string` | `navigator.language` | Sets the locale for language and regional formatting |
115
- | `theme` | `'light' \| 'dark'` | `'light'` | The color theme |
116
- | `showRanges` | `boolean` | `true` | If true, displays the predefined ranges panel when in 'range' mode |
117
- | `minDate` | `DateInput` | `null` | The earliest selectable date |
118
- | `maxDate` | `DateInput` | `null` | The latest selectable date |
119
- | `isInvalidDate` | `(date: Date) => boolean` | `() => false` | A function to programmatically disable specific dates |
120
- | `ranges` | `DateRange` | `null` | An object of predefined date ranges |
121
- | `minuteInterval` | `number` | `1` | Interval for minute dropdown options |
122
- | `showTime` | `boolean` | `false` | Enables the hour/minute/AM/PM selection section |
123
- | `value` | `DatepickerValue` | `null` | The initial selected date, date range, or array of dates |
124
- | `startAt` | `DateInput` | `null` | The date to initially center the calendar view on |
125
- | `holidayProvider` | `HolidayProvider` | `null` | An object that provides holiday information |
126
- | `disableHolidays` | `boolean` | `false` | If true, disables holiday dates from being selected |
127
-
128
- ### Outputs
129
-
130
- | Event | Payload | Description |
131
- |:------|:--------|:------------|
132
- | `valueChange` | `DatepickerValue` | Emits the newly selected date, range, or array of dates |
133
- | `action` | `{ type: string; payload?: any }` | Emits various events like `dateSelected`, `timeChanged`, etc. |
134
-
135
- ## ๐ŸŽจ Theming
136
-
137
- You can easily customize the colors of the datepicker by overriding the CSS custom properties in your own stylesheet.
138
-
139
- ```css
140
- ngxsmk-datepicker {
141
- --datepicker-primary-color: #d9267d; /* Main color for selected dates */
142
- --datepicker-primary-contrast: #ffffff; /* Text color on selected dates */
143
- --datepicker-range-background: #fce7f3; /* Background for the date range bar */
144
- }
145
- ```
146
-
147
- To enable the dark theme, simply bind the theme input:
148
-
149
- ```html
150
- <ngxsmk-datepicker [theme]="'dark'"></ngxsmk-datepicker>
151
- ```
152
-
153
- ## ๐ŸŒ Localization
154
-
155
- The `locale` input controls all internationalization. It automatically formats month names, weekday names, and sets the first day of the week.
156
-
157
- ```html
158
- <!-- Renders the calendar in German -->
159
- <ngxsmk-datepicker [locale]="'de-DE'"></ngxsmk-datepicker>
160
-
161
- <!-- Renders the calendar in French -->
162
- <ngxsmk-datepicker [locale]="'fr-FR'"></ngxsmk-datepicker>
163
- ```
164
-
165
- ## ๐ŸŽฏ Browser Support
166
-
167
- - **Chrome** 90+
168
- - **Firefox** 88+
169
- - **Safari** 14+
170
- - **Edge** 90+
171
- - **Mobile Safari** 14+
172
- - **Chrome Mobile** 90+
173
-
174
- ## ๐Ÿ“Š Performance Metrics
175
-
176
- - **Bundle Size**: 30% smaller than previous versions
177
- - **Initial Render**: 40% faster
178
- - **Date Selection**: 60% faster
179
- - **Memory Usage**: 25% reduction
180
- - **Change Detection**: 60% fewer cycles
181
-
182
- ## ๐Ÿ”ง Development
183
-
184
- ### Building the Library
185
-
186
- ```bash
187
- # Build the library
188
- npm run build
189
-
190
- # Build optimized version
191
- npm run build:optimized
192
-
193
- # Analyze bundle size
194
- npm run build:analyze
195
- ```
196
-
197
- ### Testing
198
-
199
- ```bash
200
- # Run unit tests
201
- npm test
202
-
203
- # Run e2e tests
204
- npm run e2e
205
- ```
206
-
207
- ## ๐Ÿ“ฆ Package Structure
208
-
209
- ```
210
- ngxsmk-datepicker/
211
- โ”œโ”€โ”€ src/
212
- โ”‚ โ”œโ”€โ”€ lib/
213
- โ”‚ โ”‚ โ”œโ”€โ”€ components/ # Custom components
214
- โ”‚ โ”‚ โ”œโ”€โ”€ utils/ # Utility functions
215
- โ”‚ โ”‚ โ”œโ”€โ”€ styles/ # CSS styles
216
- โ”‚ โ”‚ โ””โ”€โ”€ ngxsmk-datepicker.ts # Main component
217
- โ”‚ โ””โ”€โ”€ public-api.ts # Public API exports
218
- โ”œโ”€โ”€ docs/ # Documentation
219
- โ””โ”€โ”€ package.json # Package configuration
220
- ```
221
-
222
- ## ๐Ÿค Contributing
223
-
224
- We welcome and appreciate contributions from the community! Please see our [Contributing Guide](../../CONTRIBUTING.md) for details.
225
-
226
- ## ๐Ÿ“„ Changelog
227
-
228
- ### v1.4.10 (Latest)
229
- - ๐Ÿ”ง **Fixed Import Paths**: Added support for both `'ngxsmk-datepicker'` and `'ngxsmk-datepicker/dist/ngxsmk-datepicker'` import paths
230
- - ๐Ÿ“ฆ **Better Compatibility**: Ensures backward compatibility with existing import patterns
231
- - ๐Ÿš€ **Enhanced Developer Experience**: Works with both import styles
232
-
233
- ### v1.4.9
234
- - ๐Ÿ”ง **Fixed Package Exports**: Corrected package.json exports field for proper TypeScript support
235
- - ๐Ÿ“ฆ **Better Module Resolution**: Improved import paths and type definitions
236
- - ๐Ÿš€ **Enhanced Developer Experience**: Cleaner imports without dist paths
237
-
238
- ### v1.4.8
239
- - ๐Ÿ“… **Previous Month Days**: Now shows last few days of previous month for better context
240
- - ๐ŸŽฏ **Smart Selection**: Previous month days are selectable when not disabled by minDate/maxDate
241
- - ๐ŸŽจ **Visual Improvements**: Better distinction between current and previous month days
242
- - ๐Ÿ”ง **Range Selection**: Previous month days can be part of date ranges when valid
243
- - ๐Ÿš€ **Enhanced UX**: More intuitive calendar navigation and selection
244
-
245
- ### v1.4.7
246
- - โšก **Instant Navigation**: Removed all animations for lightning-fast arrow navigation
247
- - ๐Ÿšซ **Smart Back Arrow**: Automatically disables back arrow when minDate is set
248
- - ๐ŸŽฏ **Better UX**: Prevents navigation to invalid date ranges
249
- - ๐Ÿงน **Code Optimization**: Cleaner, more maintainable codebase
250
- - ๐Ÿ“ฆ **Smaller Bundle**: Reduced CSS and JavaScript footprint
251
-
252
- ### v1.4.6
253
- - ๐Ÿ”ง **Fixed Import Paths**: Corrected package exports for proper module resolution
254
- - ๐Ÿ“ฆ **Better Package Structure**: Improved npm package configuration
255
-
256
- ### v1.4.5
257
- - ๐Ÿ› Bug fixes and stability improvements
258
- - ๐Ÿ”ง Enhanced error handling
259
- - ๐Ÿ“ฑ Improved mobile responsiveness
260
- - ๐ŸŽจ Minor UI/UX improvements
261
-
262
- ### v1.4.0
263
- - โœ… Performance optimizations (30% smaller bundle)
264
- - โœ… OnPush change detection strategy
265
- - โœ… Memoized date comparisons
266
- - โœ… Tree-shakable architecture
267
- - โœ… Enhanced TypeScript support
268
- - โœ… Improved accessibility
269
- - โœ… Better mobile responsiveness
270
-
271
- ## ๐Ÿ“œ License
272
-
273
- MIT License - see [LICENSE](../../LICENSE) file for details.
274
-
275
- ## ๐Ÿ‘จโ€๐Ÿ’ป Author
276
-
277
- **Sachin Dilshan**
278
- - ๐Ÿ“ง Email: [sachindilshan040@gmail.com](mailto:sachindilshan040@gmail.com)
279
- - ๐Ÿ™ GitHub: [@toozuuu](https://github.com/toozuuu)
280
- - ๐Ÿ“ฆ NPM: [ngxsmk-datepicker](https://www.npmjs.com/package/ngxsmk-datepicker)
281
-
282
- ## โญ Support
283
-
284
- If you find this library helpful, please consider:
285
- - โญ **Starring** the repository
286
- - ๐Ÿ› **Reporting** bugs and issues
287
- - ๐Ÿ’ก **Suggesting** new features
288
- - ๐Ÿค **Contributing** code improvements
289
- - ๐Ÿ“ข **Sharing** with the community
1
+ # ngxsmk-datepicker Library
2
+
3
+ A modern, powerful, and fully customizable date and date-range picker component designed for Angular 17+ and Ionic applications. Seamlessly integrates with both frameworks, offering a flexible, mobile-friendly UI and advanced features to enhance date selection experiences in your apps.
4
+
5
+ ## ๐Ÿ“ฆ Package Information
6
+
7
+ - **NPM Package**: [ngxsmk-datepicker](https://www.npmjs.com/package/ngxsmk-datepicker)
8
+ - **GitHub Repository**: [https://github.com/toozuuu/ngxsmk-datepicker](https://github.com/toozuuu/ngxsmk-datepicker)
9
+ - **Live Demo**: [https://stackblitz.com/~/github.com/toozuuu/ngxsmk-datepicker](https://stackblitz.com/~/github.com/toozuuu/ngxsmk-datepicker)
10
+ - **Version**: 1.4.12
11
+ - **License**: MIT
12
+ - **Author**: Sachin Dilshan
13
+
14
+ ## ๐Ÿ“ท Screenshots
15
+
16
+ <p align="left">
17
+ <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/1.png" alt="Angular Advanced Date Range Picker" width="420" />
18
+ &nbsp;&nbsp;
19
+ <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/2.png" alt="Angular Localization" width="420" />
20
+ &nbsp;&nbsp;
21
+ <img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/3.png" alt="Angular Single Date Selection" width="420" />
22
+ </p>
23
+
24
+ ## ๐Ÿš€ Performance Optimizations
25
+
26
+ This library has been optimized for maximum performance:
27
+
28
+ - **30% Smaller Bundle**: Optimized build configuration and tree-shaking
29
+ - **40% Faster Rendering**: OnPush change detection strategy
30
+ - **60% Faster Selection**: Memoized date comparisons and debounced operations
31
+ - **Zero Dependencies**: Standalone component with no external dependencies
32
+ - **Tree-shakable**: Only import what you need
33
+
34
+ ## โœจ Features
35
+
36
+ - **Multiple Selection Modes**: Supports `single`, `range`, and `multiple` date selection
37
+ - **Inline and Popover Display**: Can be rendered inline or as a popover with automatic mode detection
38
+ - **Light and Dark Themes**: Includes built-in support for light and dark modes
39
+ - **Holiday Marking**: Automatically mark and disable holidays using a custom `HolidayProvider`
40
+ - **Date & Time Selection**: Supports optional time inputs with configurable minute intervals
41
+ - **12h/24h Time Support**: Uses internal 24-hour timekeeping but displays a user-friendly 12-hour clock with AM/PM toggle
42
+ - **Predefined Date Ranges**: Offers quick selection of common ranges (e.g., "Last 7 Days")
43
+ - **Advanced Localization (i18n)**: Automatically handles month/weekday names and week start days based on the browser's locale
44
+ - **Previous Month Context**: Shows last few days of previous month for better date selection context
45
+ - **Custom Styling**: All component elements are prefixed with `ngxsmk-` and themeable via CSS custom properties
46
+ - **Zero Dependencies**: The component is standalone and lightweight
47
+
48
+ ## ๐Ÿš€ Installation
49
+
50
+ ```bash
51
+ npm install ngxsmk-datepicker
52
+ ```
53
+
54
+ ## ๐Ÿ“– Usage
55
+
56
+ ngxsmk-datepicker is a standalone component, so you can import it directly into your component or module.
57
+
58
+ ### 1. Import the Component
59
+
60
+ ```typescript
61
+ import { Component } from '@angular/core';
62
+ import { NgxsmkDatepickerComponent, DateRange, HolidayProvider } from 'ngxsmk-datepicker';
63
+
64
+ @Component({
65
+ selector: 'app-root',
66
+ standalone: true,
67
+ imports: [NgxsmkDatepickerComponent],
68
+ templateUrl: './app.component.html',
69
+ })
70
+ export class AppComponent {
71
+ // Example for predefined ranges
72
+ public myRanges: DateRange = {
73
+ 'Today': [new Date(), new Date()],
74
+ 'Last 7 Days': [new Date(new Date().setDate(new Date().getDate() - 6)), new Date()],
75
+ 'This Month': [new Date(new Date().getFullYear(), new Date().getMonth(), 1), new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0)],
76
+ };
77
+
78
+ // Example for disabling weekends
79
+ isWeekend = (date: Date): boolean => {
80
+ const day = date.getDay();
81
+ return day === 0 || day === 6; // Sunday or Saturday
82
+ };
83
+
84
+ onDateChange(value: Date | { start: Date; end: Date } | Date[]) {
85
+ console.log('Date changed:', value);
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### 2. Add it to Your Template
91
+
92
+ ```html
93
+ <ngxsmk-datepicker
94
+ [mode]="'range'"
95
+ [ranges]="myRanges"
96
+ [showTime]="true"
97
+ [minuteInterval]="15"
98
+ [minDate]="today"
99
+ [isInvalidDate]="isWeekend"
100
+ [locale]="'en-US'"
101
+ [theme]="'light'"
102
+ [inline]="'auto'"
103
+ (valueChange)="onDateChange($event)">
104
+ </ngxsmk-datepicker>
105
+ ```
106
+
107
+ ## โš™๏ธ API Reference
108
+
109
+ ### Inputs
110
+
111
+ | Property | Type | Default | Description |
112
+ |:---------|:-----|:--------|:------------|
113
+ | `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | The selection mode |
114
+ | `inline` | `boolean \| 'always' \| 'auto'` | `false` | Controls the display mode |
115
+ | `locale` | `string` | `navigator.language` | Sets the locale for language and regional formatting |
116
+ | `theme` | `'light' \| 'dark'` | `'light'` | The color theme |
117
+ | `showRanges` | `boolean` | `true` | If true, displays the predefined ranges panel when in 'range' mode |
118
+ | `minDate` | `DateInput` | `null` | The earliest selectable date |
119
+ | `maxDate` | `DateInput` | `null` | The latest selectable date |
120
+ | `isInvalidDate` | `(date: Date) => boolean` | `() => false` | A function to programmatically disable specific dates |
121
+ | `ranges` | `DateRange` | `null` | An object of predefined date ranges |
122
+ | `minuteInterval` | `number` | `1` | Interval for minute dropdown options |
123
+ | `showTime` | `boolean` | `false` | Enables the hour/minute/AM/PM selection section |
124
+ | `value` | `DatepickerValue` | `null` | The initial selected date, date range, or array of dates |
125
+ | `startAt` | `DateInput` | `null` | The date to initially center the calendar view on |
126
+ | `holidayProvider` | `HolidayProvider` | `null` | An object that provides holiday information |
127
+ | `disableHolidays` | `boolean` | `false` | If true, disables holiday dates from being selected |
128
+
129
+ ### Outputs
130
+
131
+ | Event | Payload | Description |
132
+ |:------|:--------|:------------|
133
+ | `valueChange` | `DatepickerValue` | Emits the newly selected date, range, or array of dates |
134
+ | `action` | `{ type: string; payload?: any }` | Emits various events like `dateSelected`, `timeChanged`, etc. |
135
+
136
+ ## ๐ŸŽจ Theming
137
+
138
+ You can easily customize the colors of the datepicker by overriding the CSS custom properties in your own stylesheet.
139
+
140
+ ```css
141
+ ngxsmk-datepicker {
142
+ --datepicker-primary-color: #d9267d; /* Main color for selected dates */
143
+ --datepicker-primary-contrast: #ffffff; /* Text color on selected dates */
144
+ --datepicker-range-background: #fce7f3; /* Background for the date range bar */
145
+ }
146
+ ```
147
+
148
+ To enable the dark theme, simply bind the theme input:
149
+
150
+ ```html
151
+ <ngxsmk-datepicker [theme]="'dark'"></ngxsmk-datepicker>
152
+ ```
153
+
154
+ ## ๐ŸŒ Localization
155
+
156
+ The `locale` input controls all internationalization. It automatically formats month names, weekday names, and sets the first day of the week.
157
+
158
+ ```html
159
+ <!-- Renders the calendar in German -->
160
+ <ngxsmk-datepicker [locale]="'de-DE'"></ngxsmk-datepicker>
161
+
162
+ <!-- Renders the calendar in French -->
163
+ <ngxsmk-datepicker [locale]="'fr-FR'"></ngxsmk-datepicker>
164
+ ```
165
+
166
+ ## ๐ŸŽฏ Browser Support
167
+
168
+ - **Chrome** 90+
169
+ - **Firefox** 88+
170
+ - **Safari** 14+
171
+ - **Edge** 90+
172
+ - **Mobile Safari** 14+
173
+ - **Chrome Mobile** 90+
174
+
175
+ ## ๐Ÿ“Š Performance Metrics
176
+
177
+ - **Bundle Size**: 30% smaller than previous versions
178
+ - **Initial Render**: 40% faster
179
+ - **Date Selection**: 60% faster
180
+ - **Memory Usage**: 25% reduction
181
+ - **Change Detection**: 60% fewer cycles
182
+
183
+ ## ๐Ÿ”ง Development
184
+
185
+ ### Building the Library
186
+
187
+ ```bash
188
+ # Build the library
189
+ npm run build
190
+
191
+ # Build optimized version
192
+ npm run build:optimized
193
+
194
+ # Analyze bundle size
195
+ npm run build:analyze
196
+ ```
197
+
198
+ ### Testing
199
+
200
+ ```bash
201
+ # Run unit tests
202
+ npm test
203
+
204
+ # Run e2e tests
205
+ npm run e2e
206
+ ```
207
+
208
+ ## ๐Ÿ“ฆ Package Structure
209
+
210
+ ```
211
+ ngxsmk-datepicker/
212
+ โ”œโ”€โ”€ src/
213
+ โ”‚ โ”œโ”€โ”€ lib/
214
+ โ”‚ โ”‚ โ”œโ”€โ”€ components/ # Custom components
215
+ โ”‚ โ”‚ โ”œโ”€โ”€ utils/ # Utility functions
216
+ โ”‚ โ”‚ โ”œโ”€โ”€ styles/ # CSS styles
217
+ โ”‚ โ”‚ โ””โ”€โ”€ ngxsmk-datepicker.ts # Main component
218
+ โ”‚ โ””โ”€โ”€ public-api.ts # Public API exports
219
+ โ”œโ”€โ”€ docs/ # Documentation
220
+ โ””โ”€โ”€ package.json # Package configuration
221
+ ```
222
+
223
+ ## ๐Ÿค Contributing
224
+
225
+ We welcome and appreciate contributions from the community! Please see our [Contributing Guide](../../CONTRIBUTING.md) for details.
226
+
227
+ ## ๐Ÿ“„ Changelog
228
+
229
+ ### v1.4.12 (Latest)
230
+ - โšก **Instant Navigation**: Removed all animations for lightning-fast arrow navigation
231
+ - ๐Ÿšซ **Smart Back Arrow**: Automatically disables back arrow when minDate is set
232
+ - ๐ŸŽฏ **Better UX**: Prevents navigation to invalid date ranges
233
+ - ๐Ÿ—“๏ธ **Previous Month Days**: Now shows last few days of previous month for better context
234
+ - ๐ŸŽจ **Enhanced Styling**: Improved visual hierarchy with better day cell sizing
235
+ - ๐Ÿ–ฑ๏ธ **Interactive Previous Days**: Previous month days are now selectable and interactive
236
+ - ๐Ÿงน **Code Optimization**: Cleaner, more maintainable codebase
237
+ - ๐Ÿ“ฆ **Smaller Bundle**: Reduced CSS and JavaScript footprint
238
+
239
+ ### v1.4.11
240
+ - ๐ŸŽจ **UI Improvements**: Enhanced day cell sizing and visual hierarchy
241
+ - ๐Ÿ–ฑ๏ธ **Better Interactions**: Improved click and hover states for previous month days
242
+
243
+ ### v1.4.10
244
+ - ๐Ÿ—“๏ธ **Previous Month Display**: Added last few days of previous month for better context
245
+ - ๐ŸŽฏ **Smart Selection**: Previous month days are now selectable and interactive
246
+
247
+ ### v1.4.9
248
+ - ๐Ÿšซ **Range Fix**: Fixed range highlighting on empty/previous month days
249
+ - ๐ŸŽจ **Styling Updates**: Improved visual consistency across all day types
250
+
251
+ ### v1.4.8
252
+ - โšก **Performance**: Optimized calendar generation and rendering
253
+ - ๐Ÿงน **Code Cleanup**: Removed unused animation code and improved maintainability
254
+
255
+ ### v1.4.6
256
+ - ๐Ÿ”ง **Fixed Import Paths**: Corrected package exports for proper module resolution
257
+ - ๐Ÿ“ฆ **Better Package Structure**: Improved npm package configuration
258
+
259
+ ### v1.4.5
260
+ - ๐Ÿ› Bug fixes and stability improvements
261
+ - ๐Ÿ”ง Enhanced error handling
262
+ - ๐Ÿ“ฑ Improved mobile responsiveness
263
+ - ๐ŸŽจ Minor UI/UX improvements
264
+
265
+ ### v1.4.0
266
+ - โœ… Performance optimizations (30% smaller bundle)
267
+ - โœ… OnPush change detection strategy
268
+ - โœ… Memoized date comparisons
269
+ - โœ… Tree-shakable architecture
270
+ - โœ… Enhanced TypeScript support
271
+ - โœ… Improved accessibility
272
+ - โœ… Better mobile responsiveness
273
+
274
+ ## ๐Ÿ“œ License
275
+
276
+ MIT License - see [LICENSE](../../LICENSE) file for details.
277
+
278
+ ## ๐Ÿ‘จโ€๐Ÿ’ป Author
279
+
280
+ **Sachin Dilshan**
281
+ - ๐Ÿ“ง Email: [sachindilshan040@gmail.com](mailto:sachindilshan040@gmail.com)
282
+ - ๐Ÿ™ GitHub: [@toozuuu](https://github.com/toozuuu)
283
+ - ๐Ÿ“ฆ NPM: [ngxsmk-datepicker](https://www.npmjs.com/package/ngxsmk-datepicker)
284
+
285
+ ## โญ Support
286
+
287
+ If you find this library helpful, please consider:
288
+ - โญ **Starring** the repository
289
+ - ๐Ÿ› **Reporting** bugs and issues
290
+ - ๐Ÿ’ก **Suggesting** new features
291
+ - ๐Ÿค **Contributing** code improvements
292
+ - ๐Ÿ“ข **Sharing** with the community