@keenthemes/ktui 1.0.29 → 1.1.1
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/dist/ktui.js +3942 -8634
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/dist/styles.css +0 -196
- package/lib/cjs/components/datatable/__tests__/pagination-reset.test.js +596 -0
- package/lib/cjs/components/datatable/__tests__/pagination-reset.test.js.map +1 -0
- package/lib/cjs/components/datatable/__tests__/race-conditions.test.js +548 -0
- package/lib/cjs/components/datatable/__tests__/race-conditions.test.js.map +1 -0
- package/lib/cjs/components/datatable/__tests__/setup.js +63 -0
- package/lib/cjs/components/datatable/__tests__/setup.js.map +1 -0
- package/lib/cjs/components/datatable/datatable.js +92 -30
- package/lib/cjs/components/datatable/datatable.js.map +1 -1
- package/lib/cjs/index.js +1 -5
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/components/datatable/__tests__/pagination-reset.test.js +594 -0
- package/lib/esm/components/datatable/__tests__/pagination-reset.test.js.map +1 -0
- package/lib/esm/components/datatable/__tests__/race-conditions.test.js +546 -0
- package/lib/esm/components/datatable/__tests__/race-conditions.test.js.map +1 -0
- package/lib/esm/components/datatable/__tests__/setup.js +58 -0
- package/lib/esm/components/datatable/__tests__/setup.js.map +1 -0
- package/lib/esm/components/datatable/datatable.js +92 -30
- package/lib/esm/components/datatable/datatable.js.map +1 -1
- package/lib/esm/index.js +0 -3
- package/lib/esm/index.js.map +1 -1
- package/package.json +9 -2
- package/src/components/datatable/__tests__/pagination-reset.test.ts +657 -0
- package/src/components/datatable/__tests__/race-conditions.test.ts +455 -0
- package/src/components/datatable/__tests__/setup.ts +67 -0
- package/src/components/datatable/datatable.ts +66 -11
- package/src/components/input/input.css +0 -1
- package/src/components/select/select.css +0 -1
- package/src/components/textarea/textarea.css +0 -1
- package/src/index.ts +0 -4
- package/styles.css +0 -1
- package/lib/cjs/components/datepicker/calendar.js +0 -1061
- package/lib/cjs/components/datepicker/calendar.js.map +0 -1
- package/lib/cjs/components/datepicker/config.js +0 -332
- package/lib/cjs/components/datepicker/config.js.map +0 -1
- package/lib/cjs/components/datepicker/datepicker.js +0 -949
- package/lib/cjs/components/datepicker/datepicker.js.map +0 -1
- package/lib/cjs/components/datepicker/dropdown.js +0 -635
- package/lib/cjs/components/datepicker/dropdown.js.map +0 -1
- package/lib/cjs/components/datepicker/events.js +0 -129
- package/lib/cjs/components/datepicker/events.js.map +0 -1
- package/lib/cjs/components/datepicker/index.js +0 -13
- package/lib/cjs/components/datepicker/index.js.map +0 -1
- package/lib/cjs/components/datepicker/keyboard.js +0 -536
- package/lib/cjs/components/datepicker/keyboard.js.map +0 -1
- package/lib/cjs/components/datepicker/locales.js +0 -78
- package/lib/cjs/components/datepicker/locales.js.map +0 -1
- package/lib/cjs/components/datepicker/templates.js +0 -403
- package/lib/cjs/components/datepicker/templates.js.map +0 -1
- package/lib/cjs/components/datepicker/types.js +0 -23
- package/lib/cjs/components/datepicker/types.js.map +0 -1
- package/lib/cjs/components/datepicker/utils.js +0 -524
- package/lib/cjs/components/datepicker/utils.js.map +0 -1
- package/lib/esm/components/datepicker/calendar.js +0 -1058
- package/lib/esm/components/datepicker/calendar.js.map +0 -1
- package/lib/esm/components/datepicker/config.js +0 -329
- package/lib/esm/components/datepicker/config.js.map +0 -1
- package/lib/esm/components/datepicker/datepicker.js +0 -946
- package/lib/esm/components/datepicker/datepicker.js.map +0 -1
- package/lib/esm/components/datepicker/dropdown.js +0 -632
- package/lib/esm/components/datepicker/dropdown.js.map +0 -1
- package/lib/esm/components/datepicker/events.js +0 -126
- package/lib/esm/components/datepicker/events.js.map +0 -1
- package/lib/esm/components/datepicker/index.js +0 -9
- package/lib/esm/components/datepicker/index.js.map +0 -1
- package/lib/esm/components/datepicker/keyboard.js +0 -533
- package/lib/esm/components/datepicker/keyboard.js.map +0 -1
- package/lib/esm/components/datepicker/locales.js +0 -74
- package/lib/esm/components/datepicker/locales.js.map +0 -1
- package/lib/esm/components/datepicker/templates.js +0 -390
- package/lib/esm/components/datepicker/templates.js.map +0 -1
- package/lib/esm/components/datepicker/types.js +0 -20
- package/lib/esm/components/datepicker/types.js.map +0 -1
- package/lib/esm/components/datepicker/utils.js +0 -508
- package/lib/esm/components/datepicker/utils.js.map +0 -1
- package/src/components/datepicker/calendar.ts +0 -1397
- package/src/components/datepicker/config.ts +0 -368
- package/src/components/datepicker/datepicker.css +0 -7
- package/src/components/datepicker/datepicker.ts +0 -1287
- package/src/components/datepicker/dropdown.ts +0 -757
- package/src/components/datepicker/events.ts +0 -149
- package/src/components/datepicker/index.ts +0 -10
- package/src/components/datepicker/keyboard.ts +0 -646
- package/src/components/datepicker/locales.ts +0 -80
- package/src/components/datepicker/templates.ts +0 -792
- package/src/components/datepicker/types.ts +0 -154
- package/src/components/datepicker/utils.ts +0 -631
|
@@ -1,635 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
4
|
-
* Copyright 2025 by Keenthemes Inc
|
|
5
|
-
*/
|
|
6
|
-
var __extends = (this && this.__extends) || (function () {
|
|
7
|
-
var extendStatics = function (d, b) {
|
|
8
|
-
extendStatics = Object.setPrototypeOf ||
|
|
9
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
10
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
11
|
-
return extendStatics(d, b);
|
|
12
|
-
};
|
|
13
|
-
return function (d, b) {
|
|
14
|
-
if (typeof b !== "function" && b !== null)
|
|
15
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
16
|
-
extendStatics(d, b);
|
|
17
|
-
function __() { this.constructor = d; }
|
|
18
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
19
|
-
};
|
|
20
|
-
})();
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.KTDatepickerDropdown = void 0;
|
|
23
|
-
var core_1 = require("@popperjs/core");
|
|
24
|
-
var dom_1 = require("../../helpers/dom");
|
|
25
|
-
var data_1 = require("../../helpers/data");
|
|
26
|
-
var component_1 = require("../component");
|
|
27
|
-
/**
|
|
28
|
-
* Class to manage focus within the dropdown
|
|
29
|
-
*/
|
|
30
|
-
var FocusManager = /** @class */ (function () {
|
|
31
|
-
function FocusManager(element) {
|
|
32
|
-
this._focusableSelector = 'button:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
33
|
-
this._element = element;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get all visible focusable options
|
|
37
|
-
*/
|
|
38
|
-
FocusManager.prototype.getVisibleOptions = function () {
|
|
39
|
-
return Array.from(this._element.querySelectorAll(this._focusableSelector)).filter(function (el) {
|
|
40
|
-
var element = el;
|
|
41
|
-
return element.offsetParent !== null; // Only visible elements
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Apply focus to an element
|
|
46
|
-
*/
|
|
47
|
-
FocusManager.prototype.applyFocus = function (element) {
|
|
48
|
-
if (element && typeof element.focus === 'function') {
|
|
49
|
-
element.focus();
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Focus next element
|
|
54
|
-
*/
|
|
55
|
-
FocusManager.prototype.focusNext = function () {
|
|
56
|
-
var options = this.getVisibleOptions();
|
|
57
|
-
var currentFocused = document.activeElement;
|
|
58
|
-
var nextIndex = 0;
|
|
59
|
-
if (currentFocused) {
|
|
60
|
-
var currentIndex = options.indexOf(currentFocused);
|
|
61
|
-
nextIndex = currentIndex >= 0 ? (currentIndex + 1) % options.length : 0;
|
|
62
|
-
}
|
|
63
|
-
if (options.length > 0) {
|
|
64
|
-
this.applyFocus(options[nextIndex]);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Focus previous element
|
|
69
|
-
*/
|
|
70
|
-
FocusManager.prototype.focusPrevious = function () {
|
|
71
|
-
var options = this.getVisibleOptions();
|
|
72
|
-
var currentFocused = document.activeElement;
|
|
73
|
-
var prevIndex = options.length - 1;
|
|
74
|
-
if (currentFocused) {
|
|
75
|
-
var currentIndex = options.indexOf(currentFocused);
|
|
76
|
-
prevIndex =
|
|
77
|
-
currentIndex >= 0
|
|
78
|
-
? (currentIndex - 1 + options.length) % options.length
|
|
79
|
-
: prevIndex;
|
|
80
|
-
}
|
|
81
|
-
if (options.length > 0) {
|
|
82
|
-
this.applyFocus(options[prevIndex]);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
/**
|
|
86
|
-
* Scroll element into view
|
|
87
|
-
*/
|
|
88
|
-
FocusManager.prototype.scrollIntoView = function (element) {
|
|
89
|
-
if (element && typeof element.scrollIntoView === 'function') {
|
|
90
|
-
element.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Clean up resources
|
|
95
|
-
*/
|
|
96
|
-
FocusManager.prototype.dispose = function () {
|
|
97
|
-
// Nothing to clean up yet
|
|
98
|
-
};
|
|
99
|
-
return FocusManager;
|
|
100
|
-
}());
|
|
101
|
-
/**
|
|
102
|
-
* Class to manage event listeners
|
|
103
|
-
*/
|
|
104
|
-
var EventManager = /** @class */ (function () {
|
|
105
|
-
function EventManager() {
|
|
106
|
-
this._listeners = new Map();
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Add event listener and track it
|
|
110
|
-
*/
|
|
111
|
-
EventManager.prototype.addListener = function (element, eventType, handler) {
|
|
112
|
-
if (!this._listeners.has(element)) {
|
|
113
|
-
this._listeners.set(element, new Map());
|
|
114
|
-
}
|
|
115
|
-
var elementListeners = this._listeners.get(element);
|
|
116
|
-
if (!elementListeners.has(eventType)) {
|
|
117
|
-
elementListeners.set(eventType, []);
|
|
118
|
-
}
|
|
119
|
-
var handlers = elementListeners.get(eventType);
|
|
120
|
-
element.addEventListener(eventType, handler);
|
|
121
|
-
handlers.push(handler);
|
|
122
|
-
};
|
|
123
|
-
/**
|
|
124
|
-
* Remove all listeners for an element
|
|
125
|
-
*/
|
|
126
|
-
EventManager.prototype.removeAllListeners = function (element) {
|
|
127
|
-
if (this._listeners.has(element)) {
|
|
128
|
-
var elementListeners = this._listeners.get(element);
|
|
129
|
-
elementListeners.forEach(function (handlers, eventType) {
|
|
130
|
-
handlers.forEach(function (handler) {
|
|
131
|
-
element.removeEventListener(eventType, handler);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
this._listeners.delete(element);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
return EventManager;
|
|
138
|
-
}());
|
|
139
|
-
/**
|
|
140
|
-
* Focus trap class to manage keyboard focus within the dropdown
|
|
141
|
-
*/
|
|
142
|
-
var FocusTrap = /** @class */ (function () {
|
|
143
|
-
/**
|
|
144
|
-
* Constructor
|
|
145
|
-
*
|
|
146
|
-
* @param element - Element to trap focus within
|
|
147
|
-
*/
|
|
148
|
-
function FocusTrap(element) {
|
|
149
|
-
this._focusableElements = [];
|
|
150
|
-
this._firstFocusableElement = null;
|
|
151
|
-
this._lastFocusableElement = null;
|
|
152
|
-
this._element = element;
|
|
153
|
-
this._update();
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Update the focusable elements
|
|
157
|
-
*/
|
|
158
|
-
FocusTrap.prototype.update = function () {
|
|
159
|
-
this._update();
|
|
160
|
-
};
|
|
161
|
-
/**
|
|
162
|
-
* Update the list of focusable elements
|
|
163
|
-
*/
|
|
164
|
-
FocusTrap.prototype._update = function () {
|
|
165
|
-
// Get all focusable elements
|
|
166
|
-
var focusableElements = this._element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
167
|
-
// Convert to array and filter out disabled elements
|
|
168
|
-
this._focusableElements = Array.from(focusableElements).filter(function (el) { return !el.hasAttribute('disabled'); });
|
|
169
|
-
// Get first and last focusable elements
|
|
170
|
-
this._firstFocusableElement = this._focusableElements[0] || null;
|
|
171
|
-
this._lastFocusableElement =
|
|
172
|
-
this._focusableElements[this._focusableElements.length - 1] || null;
|
|
173
|
-
};
|
|
174
|
-
/**
|
|
175
|
-
* Handle tab key press to trap focus
|
|
176
|
-
*
|
|
177
|
-
* @param event - Keyboard event
|
|
178
|
-
*/
|
|
179
|
-
FocusTrap.prototype.handleTab = function (event) {
|
|
180
|
-
// If no focusable elements, do nothing
|
|
181
|
-
if (!this._firstFocusableElement || !this._lastFocusableElement) {
|
|
182
|
-
event.preventDefault();
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
var isTabPressed = event.key === 'Tab' || event.keyCode === 9;
|
|
186
|
-
if (!isTabPressed)
|
|
187
|
-
return;
|
|
188
|
-
// Handle Shift+Tab to focus last element when on first
|
|
189
|
-
if (event.shiftKey) {
|
|
190
|
-
if (document.activeElement === this._firstFocusableElement) {
|
|
191
|
-
this._lastFocusableElement.focus();
|
|
192
|
-
event.preventDefault();
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
// Handle Tab to focus first element when on last
|
|
197
|
-
if (document.activeElement === this._lastFocusableElement) {
|
|
198
|
-
this._firstFocusableElement.focus();
|
|
199
|
-
event.preventDefault();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* Focus the first interactive element
|
|
205
|
-
*/
|
|
206
|
-
FocusTrap.prototype.focusFirstElement = function () {
|
|
207
|
-
if (this._firstFocusableElement) {
|
|
208
|
-
this._firstFocusableElement.focus();
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
return FocusTrap;
|
|
212
|
-
}());
|
|
213
|
-
/**
|
|
214
|
-
* KTDatepickerDropdown
|
|
215
|
-
*
|
|
216
|
-
* A specialized dropdown implementation for the KTDatepicker component.
|
|
217
|
-
* This module handles the dropdown functionality for the datepicker component,
|
|
218
|
-
* including positioning, showing/hiding, and keyboard navigation.
|
|
219
|
-
*/
|
|
220
|
-
var KTDatepickerDropdown = /** @class */ (function (_super) {
|
|
221
|
-
__extends(KTDatepickerDropdown, _super);
|
|
222
|
-
/**
|
|
223
|
-
* Constructor
|
|
224
|
-
* @param element The parent element (datepicker wrapper)
|
|
225
|
-
* @param toggleElement The element that triggers the dropdown
|
|
226
|
-
* @param dropdownElement The dropdown content element
|
|
227
|
-
* @param config The configuration options
|
|
228
|
-
*/
|
|
229
|
-
function KTDatepickerDropdown(element, toggleElement, dropdownElement, config) {
|
|
230
|
-
var _this = _super.call(this) || this;
|
|
231
|
-
_this._name = 'datepicker-dropdown';
|
|
232
|
-
// State
|
|
233
|
-
_this._isOpen = false;
|
|
234
|
-
_this._isTransitioning = false;
|
|
235
|
-
_this._popperInstance = null;
|
|
236
|
-
_this._focusTrap = null;
|
|
237
|
-
_this._activeElement = null;
|
|
238
|
-
_this._element = element;
|
|
239
|
-
_this._toggleElement = toggleElement;
|
|
240
|
-
_this._dropdownElement = dropdownElement;
|
|
241
|
-
_this._config = config;
|
|
242
|
-
_this._eventManager = new EventManager();
|
|
243
|
-
_this._focusManager = new FocusManager(dropdownElement);
|
|
244
|
-
_this._setupEventListeners();
|
|
245
|
-
return _this;
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Set up event listeners for the dropdown
|
|
249
|
-
*/
|
|
250
|
-
KTDatepickerDropdown.prototype._setupEventListeners = function () {
|
|
251
|
-
// Toggle click
|
|
252
|
-
this._eventManager.addListener(this._toggleElement, 'click', this._handleToggleClick.bind(this));
|
|
253
|
-
// Keyboard navigation
|
|
254
|
-
this._eventManager.addListener(this._element, 'keydown', this._handleKeyDown.bind(this));
|
|
255
|
-
// Close on outside click
|
|
256
|
-
this._eventManager.addListener(document, 'click', this._handleOutsideClick.bind(this));
|
|
257
|
-
};
|
|
258
|
-
/**
|
|
259
|
-
* Handle toggle element click
|
|
260
|
-
*/
|
|
261
|
-
KTDatepickerDropdown.prototype._handleToggleClick = function (event) {
|
|
262
|
-
event.preventDefault();
|
|
263
|
-
event.stopPropagation();
|
|
264
|
-
this.toggle();
|
|
265
|
-
};
|
|
266
|
-
/**
|
|
267
|
-
* Handle keyboard events
|
|
268
|
-
*/
|
|
269
|
-
KTDatepickerDropdown.prototype._handleKeyDown = function (event) {
|
|
270
|
-
if (!this._isOpen)
|
|
271
|
-
return;
|
|
272
|
-
switch (event.key) {
|
|
273
|
-
case 'Escape':
|
|
274
|
-
event.preventDefault();
|
|
275
|
-
this.close();
|
|
276
|
-
this._toggleElement.focus();
|
|
277
|
-
break;
|
|
278
|
-
case 'ArrowDown':
|
|
279
|
-
event.preventDefault();
|
|
280
|
-
this._focusManager.focusNext();
|
|
281
|
-
break;
|
|
282
|
-
case 'ArrowUp':
|
|
283
|
-
event.preventDefault();
|
|
284
|
-
this._focusManager.focusPrevious();
|
|
285
|
-
break;
|
|
286
|
-
case 'Home':
|
|
287
|
-
event.preventDefault();
|
|
288
|
-
// Focus first visible option
|
|
289
|
-
var firstOption = this._focusManager.getVisibleOptions()[0];
|
|
290
|
-
if (firstOption) {
|
|
291
|
-
this._focusManager.applyFocus(firstOption);
|
|
292
|
-
this._focusManager.scrollIntoView(firstOption);
|
|
293
|
-
}
|
|
294
|
-
break;
|
|
295
|
-
case 'End':
|
|
296
|
-
event.preventDefault();
|
|
297
|
-
// Focus last visible option
|
|
298
|
-
var visibleOptions = this._focusManager.getVisibleOptions();
|
|
299
|
-
var lastOption = visibleOptions[visibleOptions.length - 1];
|
|
300
|
-
if (lastOption) {
|
|
301
|
-
this._focusManager.applyFocus(lastOption);
|
|
302
|
-
this._focusManager.scrollIntoView(lastOption);
|
|
303
|
-
}
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
};
|
|
307
|
-
/**
|
|
308
|
-
* Handle clicks outside the dropdown
|
|
309
|
-
*/
|
|
310
|
-
KTDatepickerDropdown.prototype._handleOutsideClick = function (event) {
|
|
311
|
-
var _a;
|
|
312
|
-
if (!this._isOpen)
|
|
313
|
-
return;
|
|
314
|
-
var target = event.target;
|
|
315
|
-
if (!this._element.contains(target) &&
|
|
316
|
-
!this._dropdownElement.contains(target)) {
|
|
317
|
-
// Before closing, check if a range selection is in progress
|
|
318
|
-
var datepickerElement = this._element.closest('[data-kt-datepicker]');
|
|
319
|
-
if (datepickerElement) {
|
|
320
|
-
// Get the state manager through the calendar instance or directly
|
|
321
|
-
var stateManager = (_a = datepickerElement.instance) === null || _a === void 0 ? void 0 : _a._state;
|
|
322
|
-
if (stateManager) {
|
|
323
|
-
var state = stateManager.getState();
|
|
324
|
-
var config = stateManager.getConfig();
|
|
325
|
-
// If we're in range mode and range selection is in progress, don't close
|
|
326
|
-
if (config.range && state.isRangeSelectionInProgress) {
|
|
327
|
-
console.log('Outside click detected but range selection in progress - keeping dropdown open');
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
this.close();
|
|
333
|
-
}
|
|
334
|
-
};
|
|
335
|
-
/**
|
|
336
|
-
* Set width of dropdown based on toggle element
|
|
337
|
-
*/
|
|
338
|
-
KTDatepickerDropdown.prototype._setDropdownWidth = function () {
|
|
339
|
-
if (!this._dropdownElement || !this._toggleElement)
|
|
340
|
-
return;
|
|
341
|
-
// Get the datepicker configuration
|
|
342
|
-
var datepickerElement = this._element.closest('[data-kt-datepicker]');
|
|
343
|
-
var visibleMonths = 1;
|
|
344
|
-
if (datepickerElement) {
|
|
345
|
-
// Get visible months from config
|
|
346
|
-
var instance = datepickerElement.instance;
|
|
347
|
-
if (instance && instance._config) {
|
|
348
|
-
visibleMonths = instance._config.visibleMonths || 1;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
// Calculate appropriate width based on number of visible months
|
|
352
|
-
if (visibleMonths > 1) {
|
|
353
|
-
// For multiple months, calculate a fixed width per month plus padding and gaps
|
|
354
|
-
var monthWidth = 280; // Fixed width for each month
|
|
355
|
-
var padding = 24; // Left/right padding (p-3 = 0.75rem × 2 × 16px = 24px)
|
|
356
|
-
var spacing = 16 * (visibleMonths - 1); // Gap between months (gap-4 = 1rem × 16px)
|
|
357
|
-
// Limit to showing max 3 months at once for UX (user can scroll to see more)
|
|
358
|
-
var visibleWidth = Math.min(visibleMonths, 3);
|
|
359
|
-
var totalWidth = monthWidth * visibleWidth + spacing + padding;
|
|
360
|
-
// Set fixed width for the dropdown
|
|
361
|
-
this._dropdownElement.style.width = "".concat(totalWidth, "px");
|
|
362
|
-
this._dropdownElement.style.minWidth = "".concat(totalWidth, "px");
|
|
363
|
-
}
|
|
364
|
-
else {
|
|
365
|
-
// For single month, use a fixed width that works well for most calendars
|
|
366
|
-
this._dropdownElement.style.width = '332px'; // 280px calendar width + 24px padding + border
|
|
367
|
-
this._dropdownElement.style.minWidth = '332px';
|
|
368
|
-
}
|
|
369
|
-
};
|
|
370
|
-
/**
|
|
371
|
-
* Initialize the Popper instance for dropdown positioning
|
|
372
|
-
*/
|
|
373
|
-
KTDatepickerDropdown.prototype._initPopper = function () {
|
|
374
|
-
// Destroy existing popper instance if it exists
|
|
375
|
-
this._destroyPopper();
|
|
376
|
-
// Default offset
|
|
377
|
-
var offsetValue = '0, 5';
|
|
378
|
-
// Get configuration options
|
|
379
|
-
var placement = 'bottom-start';
|
|
380
|
-
var strategy = 'absolute';
|
|
381
|
-
var preventOverflow = true;
|
|
382
|
-
var flip = true;
|
|
383
|
-
// Create new popper instance
|
|
384
|
-
this._popperInstance = (0, core_1.createPopper)(this._toggleElement, this._dropdownElement, {
|
|
385
|
-
placement: placement,
|
|
386
|
-
strategy: strategy,
|
|
387
|
-
modifiers: [
|
|
388
|
-
{
|
|
389
|
-
name: 'offset',
|
|
390
|
-
options: {
|
|
391
|
-
offset: this._parseOffset(offsetValue),
|
|
392
|
-
},
|
|
393
|
-
},
|
|
394
|
-
{
|
|
395
|
-
name: 'preventOverflow',
|
|
396
|
-
options: {
|
|
397
|
-
boundary: 'viewport',
|
|
398
|
-
altAxis: preventOverflow,
|
|
399
|
-
},
|
|
400
|
-
},
|
|
401
|
-
{
|
|
402
|
-
name: 'flip',
|
|
403
|
-
options: {
|
|
404
|
-
enabled: flip,
|
|
405
|
-
fallbackPlacements: ['top-start', 'bottom-end', 'top-end'],
|
|
406
|
-
},
|
|
407
|
-
},
|
|
408
|
-
],
|
|
409
|
-
});
|
|
410
|
-
};
|
|
411
|
-
/**
|
|
412
|
-
* Parse offset string into an array of numbers
|
|
413
|
-
*/
|
|
414
|
-
KTDatepickerDropdown.prototype._parseOffset = function (offset) {
|
|
415
|
-
return offset.split(',').map(function (value) { return parseInt(value.trim(), 10); });
|
|
416
|
-
};
|
|
417
|
-
/**
|
|
418
|
-
* Destroy the Popper instance
|
|
419
|
-
*/
|
|
420
|
-
KTDatepickerDropdown.prototype._destroyPopper = function () {
|
|
421
|
-
if (this._popperInstance) {
|
|
422
|
-
this._popperInstance.destroy();
|
|
423
|
-
this._popperInstance = null;
|
|
424
|
-
}
|
|
425
|
-
};
|
|
426
|
-
/**
|
|
427
|
-
* Update dropdown position
|
|
428
|
-
*/
|
|
429
|
-
KTDatepickerDropdown.prototype.updatePosition = function () {
|
|
430
|
-
// Look for the display element rather than using the input directly
|
|
431
|
-
var displayElement = this._element.querySelector('[data-kt-datepicker-display]');
|
|
432
|
-
var triggerElement = displayElement || this._toggleElement;
|
|
433
|
-
if (!triggerElement || !this._dropdownElement)
|
|
434
|
-
return;
|
|
435
|
-
// Reset position styles
|
|
436
|
-
this._dropdownElement.style.top = '';
|
|
437
|
-
this._dropdownElement.style.bottom = '';
|
|
438
|
-
this._dropdownElement.style.left = '';
|
|
439
|
-
this._dropdownElement.style.right = '';
|
|
440
|
-
// Set width before positioning
|
|
441
|
-
this._setDropdownWidth();
|
|
442
|
-
// Get position information
|
|
443
|
-
var triggerRect = triggerElement.getBoundingClientRect();
|
|
444
|
-
var containerRect = this._element.getBoundingClientRect();
|
|
445
|
-
var dropdownRect = this._dropdownElement.getBoundingClientRect();
|
|
446
|
-
var viewportHeight = window.innerHeight;
|
|
447
|
-
var viewportWidth = window.innerWidth;
|
|
448
|
-
// Calculate available space below and above the trigger
|
|
449
|
-
var spaceBelow = viewportHeight - triggerRect.bottom;
|
|
450
|
-
var spaceAbove = triggerRect.top;
|
|
451
|
-
// Calculate if dropdown would overflow horizontally
|
|
452
|
-
var overflowRight = triggerRect.left + dropdownRect.width > viewportWidth;
|
|
453
|
-
// Position dropdown
|
|
454
|
-
this._dropdownElement.style.position = 'absolute';
|
|
455
|
-
// Determine vertical position
|
|
456
|
-
if (spaceBelow >= dropdownRect.height || spaceBelow >= spaceAbove) {
|
|
457
|
-
// Position below the trigger
|
|
458
|
-
this._dropdownElement.style.top = "".concat(triggerRect.height + 5, "px");
|
|
459
|
-
}
|
|
460
|
-
else {
|
|
461
|
-
// Position above the trigger
|
|
462
|
-
this._dropdownElement.style.bottom = "".concat(triggerRect.height + 5, "px");
|
|
463
|
-
}
|
|
464
|
-
// Determine horizontal position - handle potential overflow
|
|
465
|
-
if (overflowRight) {
|
|
466
|
-
// Align with right edge of trigger to prevent overflow
|
|
467
|
-
var rightOffset = Math.max(0, dropdownRect.width - triggerRect.width);
|
|
468
|
-
this._dropdownElement.style.right = "0px";
|
|
469
|
-
}
|
|
470
|
-
else {
|
|
471
|
-
// Align with left edge of trigger
|
|
472
|
-
this._dropdownElement.style.left = "0px";
|
|
473
|
-
}
|
|
474
|
-
};
|
|
475
|
-
/**
|
|
476
|
-
* Toggle the dropdown
|
|
477
|
-
*/
|
|
478
|
-
KTDatepickerDropdown.prototype.toggle = function () {
|
|
479
|
-
if (this._isOpen) {
|
|
480
|
-
this.close();
|
|
481
|
-
}
|
|
482
|
-
else {
|
|
483
|
-
this.open();
|
|
484
|
-
}
|
|
485
|
-
};
|
|
486
|
-
/**
|
|
487
|
-
* Open the dropdown
|
|
488
|
-
*/
|
|
489
|
-
KTDatepickerDropdown.prototype.open = function () {
|
|
490
|
-
var _this = this;
|
|
491
|
-
if (this._isOpen || this._isTransitioning)
|
|
492
|
-
return;
|
|
493
|
-
// Fire before show event
|
|
494
|
-
var beforeShowEvent = new CustomEvent('kt.datepicker.dropdown.show', {
|
|
495
|
-
bubbles: true,
|
|
496
|
-
cancelable: true,
|
|
497
|
-
});
|
|
498
|
-
this._element.dispatchEvent(beforeShowEvent);
|
|
499
|
-
if (beforeShowEvent.defaultPrevented)
|
|
500
|
-
return;
|
|
501
|
-
// Begin opening transition
|
|
502
|
-
this._isTransitioning = true;
|
|
503
|
-
// Set dropdown visibility
|
|
504
|
-
this._dropdownElement.classList.remove('hidden');
|
|
505
|
-
this._dropdownElement.setAttribute('aria-hidden', 'false');
|
|
506
|
-
// Set dropdown width
|
|
507
|
-
this._setDropdownWidth();
|
|
508
|
-
// Make sure the element is visible for transitioning
|
|
509
|
-
dom_1.default.reflow(this._dropdownElement);
|
|
510
|
-
// Apply z-index
|
|
511
|
-
this._dropdownElement.style.zIndex = '1000';
|
|
512
|
-
// Initialize popper for positioning
|
|
513
|
-
this._initPopper();
|
|
514
|
-
// Add active classes
|
|
515
|
-
this._toggleElement.classList.add('ring', 'ring-blue-300');
|
|
516
|
-
this._toggleElement.setAttribute('aria-expanded', 'true');
|
|
517
|
-
// Start transition
|
|
518
|
-
this._dropdownElement.classList.remove('opacity-0', 'translate-y-2');
|
|
519
|
-
this._dropdownElement.classList.add('opacity-100', 'translate-y-0');
|
|
520
|
-
// Handle transition end
|
|
521
|
-
dom_1.default.transitionEnd(this._dropdownElement, function () {
|
|
522
|
-
_this._isTransitioning = false;
|
|
523
|
-
_this._isOpen = true;
|
|
524
|
-
// Focus the first interactive element
|
|
525
|
-
_this._focusFirstInteractiveElement();
|
|
526
|
-
// Fire after show event
|
|
527
|
-
var afterShowEvent = new CustomEvent('kt.datepicker.dropdown.shown', {
|
|
528
|
-
bubbles: true,
|
|
529
|
-
});
|
|
530
|
-
_this._element.dispatchEvent(afterShowEvent);
|
|
531
|
-
});
|
|
532
|
-
};
|
|
533
|
-
/**
|
|
534
|
-
* Focus the first interactive element in the dropdown
|
|
535
|
-
*/
|
|
536
|
-
KTDatepickerDropdown.prototype._focusFirstInteractiveElement = function () {
|
|
537
|
-
// Priority of elements to focus:
|
|
538
|
-
// 1. A "Today" button if available
|
|
539
|
-
// 2. The first day in the current month
|
|
540
|
-
// 3. Any other focusable element
|
|
541
|
-
// Find the Today button using standard DOM selectors
|
|
542
|
-
var todayBtn = null;
|
|
543
|
-
var buttons = this._dropdownElement.querySelectorAll('button');
|
|
544
|
-
for (var i = 0; i < buttons.length; i++) {
|
|
545
|
-
if (buttons[i].textContent && buttons[i].textContent.trim() === 'Today') {
|
|
546
|
-
todayBtn = buttons[i];
|
|
547
|
-
break;
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
if (todayBtn) {
|
|
551
|
-
todayBtn.focus();
|
|
552
|
-
return;
|
|
553
|
-
}
|
|
554
|
-
var currentMonthDay = this._dropdownElement.querySelector('button[data-date]:not(.text-gray-400)');
|
|
555
|
-
if (currentMonthDay) {
|
|
556
|
-
currentMonthDay.focus();
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
var firstOption = this._focusManager.getVisibleOptions()[0];
|
|
560
|
-
if (firstOption) {
|
|
561
|
-
this._focusManager.applyFocus(firstOption);
|
|
562
|
-
}
|
|
563
|
-
};
|
|
564
|
-
/**
|
|
565
|
-
* Close the dropdown
|
|
566
|
-
*/
|
|
567
|
-
KTDatepickerDropdown.prototype.close = function () {
|
|
568
|
-
var _this = this;
|
|
569
|
-
if (!this._isOpen || this._isTransitioning)
|
|
570
|
-
return;
|
|
571
|
-
// Fire before hide event
|
|
572
|
-
var beforeHideEvent = new CustomEvent('kt.datepicker.dropdown.hide', {
|
|
573
|
-
bubbles: true,
|
|
574
|
-
cancelable: true,
|
|
575
|
-
});
|
|
576
|
-
this._element.dispatchEvent(beforeHideEvent);
|
|
577
|
-
if (beforeHideEvent.defaultPrevented)
|
|
578
|
-
return;
|
|
579
|
-
// Begin closing transition
|
|
580
|
-
this._isTransitioning = true;
|
|
581
|
-
// Start transition
|
|
582
|
-
this._dropdownElement.classList.add('opacity-0', 'translate-y-2');
|
|
583
|
-
this._dropdownElement.classList.remove('opacity-100', 'translate-y-0');
|
|
584
|
-
// Handle transition end
|
|
585
|
-
dom_1.default.transitionEnd(this._dropdownElement, function () {
|
|
586
|
-
// Remove active classes
|
|
587
|
-
_this._dropdownElement.classList.add('hidden');
|
|
588
|
-
_this._dropdownElement.setAttribute('aria-hidden', 'true');
|
|
589
|
-
// Reset styles
|
|
590
|
-
_this._dropdownElement.style.opacity = '';
|
|
591
|
-
_this._dropdownElement.style.transform = '';
|
|
592
|
-
_this._dropdownElement.style.zIndex = '';
|
|
593
|
-
// Destroy popper
|
|
594
|
-
_this._destroyPopper();
|
|
595
|
-
// Update state
|
|
596
|
-
_this._isTransitioning = false;
|
|
597
|
-
_this._isOpen = false;
|
|
598
|
-
// Fire after hide event
|
|
599
|
-
var afterHideEvent = new CustomEvent('kt.datepicker.dropdown.hidden', {
|
|
600
|
-
bubbles: true,
|
|
601
|
-
});
|
|
602
|
-
_this._element.dispatchEvent(afterHideEvent);
|
|
603
|
-
});
|
|
604
|
-
};
|
|
605
|
-
/**
|
|
606
|
-
* Check if dropdown is open
|
|
607
|
-
*/
|
|
608
|
-
KTDatepickerDropdown.prototype.isOpen = function () {
|
|
609
|
-
return this._isOpen;
|
|
610
|
-
};
|
|
611
|
-
/**
|
|
612
|
-
* Clean up component
|
|
613
|
-
*/
|
|
614
|
-
KTDatepickerDropdown.prototype.dispose = function () {
|
|
615
|
-
// Destroy popper
|
|
616
|
-
this._destroyPopper();
|
|
617
|
-
// Remove event listeners
|
|
618
|
-
this._eventManager.removeAllListeners(this._element);
|
|
619
|
-
this._eventManager.removeAllListeners(this._toggleElement);
|
|
620
|
-
this._eventManager.removeAllListeners(document);
|
|
621
|
-
// Clean up focus manager
|
|
622
|
-
if (this._focusManager &&
|
|
623
|
-
typeof this._focusManager.dispose === 'function') {
|
|
624
|
-
this._focusManager.dispose();
|
|
625
|
-
}
|
|
626
|
-
// Clean up state
|
|
627
|
-
this._isOpen = false;
|
|
628
|
-
this._isTransitioning = false;
|
|
629
|
-
// Remove data reference
|
|
630
|
-
data_1.default.remove(this._element, this._name);
|
|
631
|
-
};
|
|
632
|
-
return KTDatepickerDropdown;
|
|
633
|
-
}(component_1.default));
|
|
634
|
-
exports.KTDatepickerDropdown = KTDatepickerDropdown;
|
|
635
|
-
//# sourceMappingURL=dropdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../src/components/datepicker/dropdown.ts"],"names":[],"mappings":"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"}
|