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 +292 -289
- package/fesm2022/ngxsmk-datepicker.mjs +238 -235
- package/fesm2022/ngxsmk-datepicker.mjs.map +1 -1
- package/package.json +1 -5
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.
|
|
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
|
-
|
|
19
|
-
<img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/2.png" alt="Angular Localization" width="420" />
|
|
20
|
-
|
|
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
|
-
- **
|
|
45
|
-
- **
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
import {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
[
|
|
95
|
-
[
|
|
96
|
-
[
|
|
97
|
-
[
|
|
98
|
-
[
|
|
99
|
-
[
|
|
100
|
-
[
|
|
101
|
-
[
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
118
|
-
| `
|
|
119
|
-
| `
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
| `
|
|
125
|
-
| `
|
|
126
|
-
| `
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
| `
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
--datepicker-primary-
|
|
143
|
-
--datepicker-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
- **
|
|
169
|
-
- **
|
|
170
|
-
- **
|
|
171
|
-
- **
|
|
172
|
-
- **
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
- **
|
|
178
|
-
- **
|
|
179
|
-
- **
|
|
180
|
-
- **
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
โ
|
|
214
|
-
โ โ โโโ
|
|
215
|
-
โ โ โโโ
|
|
216
|
-
โ โ
|
|
217
|
-
โ โโโ
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
-
|
|
231
|
-
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
-
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
- โ
|
|
267
|
-
- โ
|
|
268
|
-
- โ
|
|
269
|
-
- โ
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
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
|
+
|
|
19
|
+
<img src="https://github.com/toozuuu/ngxsmk-datepicker/raw/main/projects/ngxsmk-datepicker/docs/2.png" alt="Angular Localization" width="420" />
|
|
20
|
+
|
|
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
|