@keenthemes/ktui 1.0.29 → 1.1.0
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 +27 -0
- package/dist/ktui.js +8780 -6199
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/dist/styles.css +2744 -1367
- package/lib/cjs/components/alert/alert.js +1025 -0
- package/lib/cjs/components/alert/alert.js.map +1 -0
- package/lib/cjs/components/alert/index.js +20 -0
- package/lib/cjs/components/alert/index.js.map +1 -0
- package/lib/cjs/components/alert/templates.js +120 -0
- package/lib/cjs/components/alert/templates.js.map +1 -0
- package/lib/cjs/components/alert/types.js +7 -0
- package/lib/cjs/components/alert/types.js.map +1 -0
- package/lib/cjs/components/datepicker/config/config.js +42 -0
- package/lib/cjs/components/datepicker/config/config.js.map +1 -0
- package/lib/cjs/components/datepicker/config/index.js +24 -0
- package/lib/cjs/components/datepicker/config/index.js.map +1 -0
- package/lib/cjs/components/datepicker/config/interfaces.js +7 -0
- package/lib/cjs/components/datepicker/config/interfaces.js.map +1 -0
- package/lib/cjs/components/datepicker/config/types.js +7 -0
- package/lib/cjs/components/datepicker/config/types.js.map +1 -0
- package/lib/cjs/components/datepicker/core/event-manager.js +135 -0
- package/lib/cjs/components/datepicker/core/event-manager.js.map +1 -0
- package/lib/cjs/components/datepicker/core/focus-manager.js +167 -0
- package/lib/cjs/components/datepicker/core/focus-manager.js.map +1 -0
- package/lib/cjs/components/datepicker/core/helpers.js +219 -0
- package/lib/cjs/components/datepicker/core/helpers.js.map +1 -0
- package/lib/cjs/components/datepicker/core/index.js +25 -0
- package/lib/cjs/components/datepicker/core/index.js.map +1 -0
- package/lib/cjs/components/datepicker/core/unified-state-manager.js +394 -0
- package/lib/cjs/components/datepicker/core/unified-state-manager.js.map +1 -0
- package/lib/cjs/components/datepicker/datepicker.js +2066 -763
- package/lib/cjs/components/datepicker/datepicker.js.map +1 -1
- package/lib/cjs/components/datepicker/index.js +19 -8
- package/lib/cjs/components/datepicker/index.js.map +1 -1
- package/lib/cjs/components/datepicker/ui/index.js +23 -0
- package/lib/cjs/components/datepicker/ui/index.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/input/dropdown.js +489 -0
- package/lib/cjs/components/datepicker/ui/input/dropdown.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/input/index.js +23 -0
- package/lib/cjs/components/datepicker/ui/input/index.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/input/segmented-input.js +640 -0
- package/lib/cjs/components/datepicker/ui/input/segmented-input.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/renderers/calendar.js +446 -0
- package/lib/cjs/components/datepicker/ui/renderers/calendar.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/renderers/footer.js +42 -0
- package/lib/cjs/components/datepicker/ui/renderers/footer.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/renderers/header.js +32 -0
- package/lib/cjs/components/datepicker/ui/renderers/header.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/renderers/index.js +25 -0
- package/lib/cjs/components/datepicker/ui/renderers/index.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/renderers/time-picker.js +384 -0
- package/lib/cjs/components/datepicker/ui/renderers/time-picker.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/templates/index.js +22 -0
- package/lib/cjs/components/datepicker/ui/templates/index.js.map +1 -0
- package/lib/cjs/components/datepicker/ui/templates/templates.js +253 -0
- package/lib/cjs/components/datepicker/ui/templates/templates.js.map +1 -0
- package/lib/cjs/components/datepicker/utils/date-formatters.js +88 -0
- package/lib/cjs/components/datepicker/utils/date-formatters.js.map +1 -0
- package/lib/cjs/components/datepicker/utils/date-utils.js +194 -0
- package/lib/cjs/components/datepicker/utils/date-utils.js.map +1 -0
- package/lib/cjs/components/datepicker/utils/index.js +24 -0
- package/lib/cjs/components/datepicker/utils/index.js.map +1 -0
- package/lib/cjs/components/datepicker/utils/time-utils.js +213 -0
- package/lib/cjs/components/datepicker/utils/time-utils.js.map +1 -0
- package/lib/cjs/index.js +6 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/components/alert/alert.js +1022 -0
- package/lib/esm/components/alert/alert.js.map +1 -0
- package/lib/esm/components/alert/index.js +4 -0
- package/lib/esm/components/alert/index.js.map +1 -0
- package/lib/esm/components/alert/templates.js +112 -0
- package/lib/esm/components/alert/templates.js.map +1 -0
- package/lib/esm/components/alert/types.js +6 -0
- package/lib/esm/components/alert/types.js.map +1 -0
- package/lib/esm/components/datepicker/config/config.js +39 -0
- package/lib/esm/components/datepicker/config/config.js.map +1 -0
- package/lib/esm/components/datepicker/config/index.js +8 -0
- package/lib/esm/components/datepicker/config/index.js.map +1 -0
- package/lib/esm/components/datepicker/config/interfaces.js +6 -0
- package/lib/esm/components/datepicker/config/interfaces.js.map +1 -0
- package/lib/esm/components/datepicker/config/types.js +6 -0
- package/lib/esm/components/datepicker/config/types.js.map +1 -0
- package/lib/esm/components/datepicker/core/event-manager.js +133 -0
- package/lib/esm/components/datepicker/core/event-manager.js.map +1 -0
- package/lib/esm/components/datepicker/core/focus-manager.js +164 -0
- package/lib/esm/components/datepicker/core/focus-manager.js.map +1 -0
- package/lib/esm/components/datepicker/core/helpers.js +211 -0
- package/lib/esm/components/datepicker/core/helpers.js.map +1 -0
- package/lib/esm/components/datepicker/core/index.js +9 -0
- package/lib/esm/components/datepicker/core/index.js.map +1 -0
- package/lib/esm/components/datepicker/core/unified-state-manager.js +391 -0
- package/lib/esm/components/datepicker/core/unified-state-manager.js.map +1 -0
- package/lib/esm/components/datepicker/datepicker.js +2065 -763
- package/lib/esm/components/datepicker/datepicker.js.map +1 -1
- package/lib/esm/components/datepicker/index.js +6 -8
- package/lib/esm/components/datepicker/index.js.map +1 -1
- package/lib/esm/components/datepicker/ui/index.js +7 -0
- package/lib/esm/components/datepicker/ui/index.js.map +1 -0
- package/lib/esm/components/datepicker/ui/input/dropdown.js +486 -0
- package/lib/esm/components/datepicker/ui/input/dropdown.js.map +1 -0
- package/lib/esm/components/datepicker/ui/input/index.js +7 -0
- package/lib/esm/components/datepicker/ui/input/index.js.map +1 -0
- package/lib/esm/components/datepicker/ui/input/segmented-input.js +637 -0
- package/lib/esm/components/datepicker/ui/input/segmented-input.js.map +1 -0
- package/lib/esm/components/datepicker/ui/renderers/calendar.js +443 -0
- package/lib/esm/components/datepicker/ui/renderers/calendar.js.map +1 -0
- package/lib/esm/components/datepicker/ui/renderers/footer.js +39 -0
- package/lib/esm/components/datepicker/ui/renderers/footer.js.map +1 -0
- package/lib/esm/components/datepicker/ui/renderers/header.js +29 -0
- package/lib/esm/components/datepicker/ui/renderers/header.js.map +1 -0
- package/lib/esm/components/datepicker/ui/renderers/index.js +9 -0
- package/lib/esm/components/datepicker/ui/renderers/index.js.map +1 -0
- package/lib/esm/components/datepicker/ui/renderers/time-picker.js +381 -0
- package/lib/esm/components/datepicker/ui/renderers/time-picker.js.map +1 -0
- package/lib/esm/components/datepicker/ui/templates/index.js +6 -0
- package/lib/esm/components/datepicker/ui/templates/index.js.map +1 -0
- package/lib/esm/components/datepicker/ui/templates/templates.js +242 -0
- package/lib/esm/components/datepicker/ui/templates/templates.js.map +1 -0
- package/lib/esm/components/datepicker/utils/date-formatters.js +83 -0
- package/lib/esm/components/datepicker/utils/date-formatters.js.map +1 -0
- package/lib/esm/components/datepicker/utils/date-utils.js +184 -0
- package/lib/esm/components/datepicker/utils/date-utils.js.map +1 -0
- package/lib/esm/components/datepicker/utils/index.js +8 -0
- package/lib/esm/components/datepicker/utils/index.js.map +1 -0
- package/lib/esm/components/datepicker/utils/time-utils.js +201 -0
- package/lib/esm/components/datepicker/utils/time-utils.js.map +1 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/index.js.map +1 -1
- package/package.json +12 -3
- package/src/components/alert/alert.css +429 -188
- package/src/components/alert/alert.ts +990 -0
- package/src/components/alert/index.ts +4 -0
- package/src/components/alert/templates.ts +110 -0
- package/src/components/alert/tests/accessibility/aria-roles.test.ts +19 -0
- package/src/components/alert/tests/accessibility/focus-management.test.ts +19 -0
- package/src/components/alert/tests/accessibility/keyboard-nav.test.ts +22 -0
- package/src/components/alert/tests/actions/confirm-cancel.test.ts +122 -0
- package/src/components/alert/tests/actions/input-field.test.ts +180 -0
- package/src/components/alert/tests/alert.basic.test.ts +126 -0
- package/src/components/alert/tests/alert.config.test.ts +75 -0
- package/src/components/alert/tests/alert.templates.test.ts +17 -0
- package/src/components/alert/tests/config/attribute-config.test.ts +94 -0
- package/src/components/alert/tests/config/json-config.test.ts +119 -0
- package/src/components/alert/tests/config/merging.test.ts +89 -0
- package/src/components/alert/tests/dismissal/auto-dismiss.test.ts +96 -0
- package/src/components/alert/tests/dismissal/escape-key-dismiss.test.ts +105 -0
- package/src/components/alert/tests/dismissal/manual-dismiss.test.ts +90 -0
- package/src/components/alert/tests/dismissal/outside-click-dismiss.test.ts +91 -0
- package/src/components/alert/tests/edge-cases/invalid-config.test.ts +19 -0
- package/src/components/alert/tests/edge-cases/multiple-alerts.test.ts +19 -0
- package/src/components/alert/tests/rendering/custom-content.test.ts +81 -0
- package/src/components/alert/tests/rendering/info-alert.test.ts +84 -0
- package/src/components/alert/tests/rendering/success-alert.test.ts +100 -0
- package/src/components/alert/tests/templates/default-templates.test.ts +16 -0
- package/src/components/alert/tests/templates/user-templates.test.ts +16 -0
- package/src/components/alert/types.ts +145 -0
- package/src/components/datepicker/__tests__/datepicker-events.test.ts +356 -0
- package/src/components/datepicker/__tests__/datepicker-init.test.ts +343 -0
- package/src/components/datepicker/__tests__/datepicker-integration.test.ts +435 -0
- package/src/components/datepicker/__tests__/datepicker-timezone.test.ts +220 -0
- package/src/components/datepicker/__tests__/segmented-input-focus.test.ts +380 -0
- package/src/components/datepicker/__tests__/selective-state-updates.test.ts +400 -0
- package/src/components/datepicker/__tests__/state-manager.test.ts +421 -0
- package/src/components/datepicker/__tests__/time-preservation.test.ts +387 -0
- package/src/components/datepicker/config/config.ts +40 -0
- package/src/components/datepicker/config/index.ts +8 -0
- package/src/components/datepicker/config/interfaces.ts +82 -0
- package/src/components/datepicker/config/types.ts +188 -0
- package/src/components/datepicker/core/event-manager.ts +159 -0
- package/src/components/datepicker/core/focus-manager.ts +201 -0
- package/src/components/datepicker/core/helpers.ts +231 -0
- package/src/components/datepicker/core/index.ts +9 -0
- package/src/components/datepicker/core/unified-state-manager.ts +459 -0
- package/src/components/datepicker/datepicker.css +429 -1
- package/src/components/datepicker/datepicker.ts +2538 -1277
- package/src/components/datepicker/index.ts +6 -8
- package/src/components/datepicker/ui/index.ts +7 -0
- package/src/components/datepicker/ui/input/dropdown.ts +552 -0
- package/src/components/datepicker/ui/input/index.ts +7 -0
- package/src/components/datepicker/ui/input/segmented-input.ts +638 -0
- package/src/components/datepicker/ui/renderers/__tests__/calendar-optimizations.test.ts +611 -0
- package/src/components/datepicker/ui/renderers/calendar.ts +530 -0
- package/src/components/datepicker/ui/renderers/footer.ts +43 -0
- package/src/components/datepicker/ui/renderers/header.ts +33 -0
- package/src/components/datepicker/ui/renderers/index.ts +9 -0
- package/src/components/datepicker/ui/renderers/time-picker.ts +438 -0
- package/src/components/datepicker/ui/templates/index.ts +6 -0
- package/src/components/datepicker/ui/templates/templates.ts +306 -0
- package/src/components/datepicker/utils/__tests__/date-formatters.test.ts +160 -0
- package/src/components/datepicker/utils/__tests__/date-utils-keys.test.ts +86 -0
- package/src/components/datepicker/utils/__tests__/date-utils-timezone.test.ts +215 -0
- package/src/components/datepicker/utils/date-formatters.ts +85 -0
- package/src/components/datepicker/utils/date-utils.ts +172 -0
- package/src/components/datepicker/utils/index.ts +8 -0
- package/src/components/datepicker/utils/time-utils.ts +221 -0
- package/src/index.ts +7 -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/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/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/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/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/dropdown.ts +0 -757
- package/src/components/datepicker/events.ts +0 -149
- 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
- package/src/components/select/variants.css +0 -4
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { renderTemplateToDOM, createTemplateRenderer, getTemplateStrings } from '../ui/templates/templates';
|
|
22
|
+
import { SegmentedInput } from '../ui/input/segmented-input';
|
|
23
|
+
import { getTimeSegments } from '../utils/time-utils';
|
|
24
|
+
import { getSegmentOrderFromFormat, normalizeDateToLocalMidnight } from '../utils/date-utils';
|
|
25
|
+
/**
|
|
26
|
+
* Get segments array based on configuration (date + optional time)
|
|
27
|
+
* @param config Datepicker configuration
|
|
28
|
+
* @returns Array of segment types
|
|
29
|
+
*/
|
|
30
|
+
export function getSegmentsForConfig(config) {
|
|
31
|
+
// Determine date segments based on format
|
|
32
|
+
var segments;
|
|
33
|
+
if (config.format && typeof config.format === 'string') {
|
|
34
|
+
// Use format-derived segment order for date parts
|
|
35
|
+
segments = getSegmentOrderFromFormat(config.format);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Default fallback
|
|
39
|
+
segments = ['month', 'day', 'year'];
|
|
40
|
+
}
|
|
41
|
+
// Add time segments if time is enabled
|
|
42
|
+
if (config.enableTime) {
|
|
43
|
+
var timeSegments = getTimeSegments(config.timeGranularity || 'minute');
|
|
44
|
+
segments = __spreadArray(__spreadArray([], segments, true), timeSegments, true);
|
|
45
|
+
// Add AM/PM for 12-hour format
|
|
46
|
+
if (config.timeFormat === '12h') {
|
|
47
|
+
segments.push('ampm');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return segments;
|
|
51
|
+
}
|
|
52
|
+
export function renderSingleSegmentedInputUI(inputWrapperTpl, calendarButtonHtml, config) {
|
|
53
|
+
// Get template renderer with proper configuration
|
|
54
|
+
var templates = getTemplateStrings(config);
|
|
55
|
+
var templateRenderer = createTemplateRenderer(templates);
|
|
56
|
+
// Create the segmented input container using the template system
|
|
57
|
+
var segmentedInputEl = templateRenderer.renderTemplateToElement({
|
|
58
|
+
templateKey: 'segmentedDateInput',
|
|
59
|
+
data: { segments: '' }, // Empty segments initially, will be populated by SegmentedInput
|
|
60
|
+
configClasses: config === null || config === void 0 ? void 0 : config.classes // Pass config classes for proper styling
|
|
61
|
+
});
|
|
62
|
+
var inputWrapperHtml;
|
|
63
|
+
if (typeof inputWrapperTpl === 'function') {
|
|
64
|
+
inputWrapperHtml = inputWrapperTpl({ input: segmentedInputEl.outerHTML, icon: calendarButtonHtml, class: '' });
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
inputWrapperHtml = inputWrapperTpl
|
|
68
|
+
.replace(/{{icon}}/g, calendarButtonHtml)
|
|
69
|
+
.replace(/{{input}}/g, segmentedInputEl.outerHTML)
|
|
70
|
+
.replace(/{{class}}/g, ''); // Replace class placeholder with empty string if no class provided
|
|
71
|
+
}
|
|
72
|
+
var inputWrapperFrag = renderTemplateToDOM(inputWrapperHtml);
|
|
73
|
+
return inputWrapperFrag.firstElementChild;
|
|
74
|
+
}
|
|
75
|
+
export function renderRangeSegmentedInputUI(inputWrapperTpl, rangeTpl, calendarButtonHtml, config) {
|
|
76
|
+
// Get template renderer with proper configuration
|
|
77
|
+
var templates = getTemplateStrings(config);
|
|
78
|
+
var templateRenderer = createTemplateRenderer(templates);
|
|
79
|
+
var inputWrapperHtml;
|
|
80
|
+
if (typeof inputWrapperTpl === 'function') {
|
|
81
|
+
inputWrapperHtml = inputWrapperTpl({ input: '', icon: calendarButtonHtml, class: '' });
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
inputWrapperHtml = inputWrapperTpl
|
|
85
|
+
.replace(/{{icon}}/g, calendarButtonHtml)
|
|
86
|
+
.replace(/{{input}}/g, '')
|
|
87
|
+
.replace(/{{class}}/g, ''); // Replace class placeholder with empty string if no class provided
|
|
88
|
+
}
|
|
89
|
+
var inputWrapperFrag = renderTemplateToDOM(inputWrapperHtml);
|
|
90
|
+
var inputWrapperEl = inputWrapperFrag.firstElementChild;
|
|
91
|
+
// Create containers for start and end segmented inputs using template system
|
|
92
|
+
var startContainer = templateRenderer.renderTemplateToElement({
|
|
93
|
+
templateKey: 'segmentedDateInput',
|
|
94
|
+
data: { segments: '' },
|
|
95
|
+
configClasses: __assign(__assign({}, config === null || config === void 0 ? void 0 : config.classes), { segmentedDateInput: 'kt-segmented-input-start' })
|
|
96
|
+
});
|
|
97
|
+
startContainer.setAttribute('aria-label', 'Start date');
|
|
98
|
+
startContainer.setAttribute('data-kt-datepicker-start-container', '');
|
|
99
|
+
var endContainer = templateRenderer.renderTemplateToElement({
|
|
100
|
+
templateKey: 'segmentedDateInput',
|
|
101
|
+
data: { segments: '' },
|
|
102
|
+
configClasses: __assign(__assign({}, config === null || config === void 0 ? void 0 : config.classes), { segmentedDateInput: 'kt-segmented-input-end' })
|
|
103
|
+
});
|
|
104
|
+
endContainer.setAttribute('aria-label', 'End date');
|
|
105
|
+
endContainer.setAttribute('data-kt-datepicker-end-container', '');
|
|
106
|
+
// Render template with placeholders using template system
|
|
107
|
+
var separator = '–';
|
|
108
|
+
// Render start and end containers using templates
|
|
109
|
+
var startContainerHtml = templateRenderer.renderTemplateString({
|
|
110
|
+
templateKey: 'rangeStartContainer',
|
|
111
|
+
data: {},
|
|
112
|
+
configClasses: config === null || config === void 0 ? void 0 : config.classes
|
|
113
|
+
});
|
|
114
|
+
var endContainerHtml = templateRenderer.renderTemplateString({
|
|
115
|
+
templateKey: 'rangeEndContainer',
|
|
116
|
+
data: {},
|
|
117
|
+
configClasses: config === null || config === void 0 ? void 0 : config.classes
|
|
118
|
+
});
|
|
119
|
+
var rangeHtml;
|
|
120
|
+
if (typeof rangeTpl === 'function') {
|
|
121
|
+
rangeHtml = rangeTpl({
|
|
122
|
+
start: startContainerHtml,
|
|
123
|
+
separator: separator,
|
|
124
|
+
end: endContainerHtml,
|
|
125
|
+
class: ''
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
rangeHtml = rangeTpl
|
|
130
|
+
.replace(/{{start}}/g, startContainerHtml)
|
|
131
|
+
.replace(/{{separator}}/g, separator)
|
|
132
|
+
.replace(/{{end}}/g, endContainerHtml)
|
|
133
|
+
.replace(/{{class}}/g, ''); // Replace class placeholder with empty string if no class provided
|
|
134
|
+
}
|
|
135
|
+
var rangeFrag = renderTemplateToDOM(rangeHtml);
|
|
136
|
+
// Find mount points
|
|
137
|
+
var startMount = rangeFrag.querySelector('[data-kt-datepicker-segmented-start]');
|
|
138
|
+
var endMount = rangeFrag.querySelector('[data-kt-datepicker-segmented-end]');
|
|
139
|
+
if (startMount)
|
|
140
|
+
startMount.replaceWith(startContainer);
|
|
141
|
+
if (endMount)
|
|
142
|
+
endMount.replaceWith(endContainer);
|
|
143
|
+
// Insert the range input UI at the start of the wrapper
|
|
144
|
+
inputWrapperEl.insertBefore(rangeFrag.firstElementChild, inputWrapperEl.firstChild);
|
|
145
|
+
return { inputWrapperEl: inputWrapperEl, startContainer: startContainer, endContainer: endContainer };
|
|
146
|
+
}
|
|
147
|
+
export function instantiateSingleSegmentedInput(container, state, config, onChange) {
|
|
148
|
+
// Use shared utility to determine segments
|
|
149
|
+
var segments = getSegmentsForConfig(config);
|
|
150
|
+
SegmentedInput(container, {
|
|
151
|
+
value: state.selectedDate || state.currentDate || new Date(),
|
|
152
|
+
format: config.format,
|
|
153
|
+
segments: segments,
|
|
154
|
+
disabled: !!config.disabled,
|
|
155
|
+
required: !!config.required,
|
|
156
|
+
readOnly: !!config.readOnly,
|
|
157
|
+
locale: config.locale,
|
|
158
|
+
timeFormat: config.timeFormat,
|
|
159
|
+
onChange: onChange,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
export function instantiateRangeSegmentedInputs(startContainer, endContainer, state, config, onStartChange, onEndChange) {
|
|
163
|
+
var _a, _b;
|
|
164
|
+
// Use shared utility to determine segments (includes time if enabled)
|
|
165
|
+
var segments = getSegmentsForConfig(config);
|
|
166
|
+
SegmentedInput(startContainer, {
|
|
167
|
+
value: ((_a = state.selectedRange) === null || _a === void 0 ? void 0 : _a.start) || new Date(),
|
|
168
|
+
format: config.format,
|
|
169
|
+
segments: segments,
|
|
170
|
+
disabled: !!config.disabled,
|
|
171
|
+
required: !!config.required,
|
|
172
|
+
readOnly: !!config.readOnly,
|
|
173
|
+
locale: config.locale,
|
|
174
|
+
timeFormat: config.timeFormat,
|
|
175
|
+
onChange: onStartChange,
|
|
176
|
+
});
|
|
177
|
+
SegmentedInput(endContainer, {
|
|
178
|
+
value: ((_b = state.selectedRange) === null || _b === void 0 ? void 0 : _b.end) || new Date(),
|
|
179
|
+
format: config.format,
|
|
180
|
+
segments: segments,
|
|
181
|
+
disabled: !!config.disabled,
|
|
182
|
+
required: !!config.required,
|
|
183
|
+
readOnly: !!config.readOnly,
|
|
184
|
+
locale: config.locale,
|
|
185
|
+
timeFormat: config.timeFormat,
|
|
186
|
+
onChange: onEndChange,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
export function updateRangeSelection(selectedRange, date) {
|
|
190
|
+
// Normalize dates to local midnight for date-only comparisons
|
|
191
|
+
var normalizedDate = normalizeDateToLocalMidnight(date);
|
|
192
|
+
if (!selectedRange || (!selectedRange.start && !selectedRange.end)) {
|
|
193
|
+
return { start: normalizedDate, end: null };
|
|
194
|
+
}
|
|
195
|
+
else if (selectedRange.start && !selectedRange.end) {
|
|
196
|
+
var normalizedStart = normalizeDateToLocalMidnight(selectedRange.start);
|
|
197
|
+
if (normalizedDate >= normalizedStart) {
|
|
198
|
+
// Forward selection: new date is after start, becomes end
|
|
199
|
+
return { start: selectedRange.start, end: normalizedDate };
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// Backward selection: new date is before start, swap so start is always earlier
|
|
203
|
+
// The clicked date becomes the actual start, original start becomes end
|
|
204
|
+
return { start: normalizedDate, end: selectedRange.start };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
return { start: normalizedDate, end: null };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/core/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/index.ts - Core module exports
|
|
3
|
+
* Provides core logic components for KTDatepicker
|
|
4
|
+
*/
|
|
5
|
+
export * from './unified-state-manager';
|
|
6
|
+
export * from './event-manager';
|
|
7
|
+
export * from './focus-manager';
|
|
8
|
+
export * from './helpers';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* unified-state-manager.ts - Centralized state management for KTDatepicker
|
|
3
|
+
* Provides single source of truth for all datepicker state with observer pattern
|
|
4
|
+
* for automatic UI synchronization across all components.
|
|
5
|
+
*/
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* KTDatepickerUnifiedStateManager
|
|
19
|
+
*
|
|
20
|
+
* Centralized state management for datepicker with observer pattern.
|
|
21
|
+
* Ensures all UI components automatically sync to state changes.
|
|
22
|
+
*
|
|
23
|
+
* Immediate vs Batched Updates:
|
|
24
|
+
* - Immediate updates: Use for user interactions requiring synchronous event firing
|
|
25
|
+
* (date selection, dropdown open/close). These bypass batching delays.
|
|
26
|
+
* - Batched updates: Use for programmatic changes that don't require immediate
|
|
27
|
+
* user feedback (navigation, initialization). These are batched for performance.
|
|
28
|
+
*/
|
|
29
|
+
var KTDatepickerUnifiedStateManager = /** @class */ (function () {
|
|
30
|
+
function KTDatepickerUnifiedStateManager(config) {
|
|
31
|
+
this._observers = new Set();
|
|
32
|
+
this._batchTimeout = null;
|
|
33
|
+
this._pendingUpdates = {};
|
|
34
|
+
this._isUpdating = false;
|
|
35
|
+
this._lastUpdateSource = 'unknown';
|
|
36
|
+
this._lastChangedProperties = new Set();
|
|
37
|
+
this._config = __assign({ enableValidation: true, enableDebugging: false, enableUpdateBatching: true, batchDelay: 16 }, config);
|
|
38
|
+
this._state = this._getInitialState();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get initial state
|
|
42
|
+
*/
|
|
43
|
+
KTDatepickerUnifiedStateManager.prototype._getInitialState = function () {
|
|
44
|
+
return {
|
|
45
|
+
currentDate: new Date(),
|
|
46
|
+
selectedDate: null,
|
|
47
|
+
selectedRange: null,
|
|
48
|
+
selectedDates: [],
|
|
49
|
+
selectedTime: null,
|
|
50
|
+
timeGranularity: 'minute',
|
|
51
|
+
viewMode: 'days',
|
|
52
|
+
isOpen: false,
|
|
53
|
+
isFocused: false,
|
|
54
|
+
isTransitioning: false,
|
|
55
|
+
isDisabled: false,
|
|
56
|
+
validationErrors: [],
|
|
57
|
+
isValid: true,
|
|
58
|
+
dropdownState: {
|
|
59
|
+
isOpen: false,
|
|
60
|
+
isTransitioning: false,
|
|
61
|
+
isDisabled: false,
|
|
62
|
+
isFocused: false
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get current state (immutable)
|
|
68
|
+
*/
|
|
69
|
+
KTDatepickerUnifiedStateManager.prototype.getState = function () {
|
|
70
|
+
return __assign({}, this._state);
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Get the source of the last state update
|
|
74
|
+
* @returns The source identifier of the last state update
|
|
75
|
+
*/
|
|
76
|
+
KTDatepickerUnifiedStateManager.prototype.getLastUpdateSource = function () {
|
|
77
|
+
return this._lastUpdateSource;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Get the set of properties that changed in the last state update
|
|
81
|
+
* @returns Set of property keys that changed
|
|
82
|
+
*/
|
|
83
|
+
KTDatepickerUnifiedStateManager.prototype.getLastChangedProperties = function () {
|
|
84
|
+
return new Set(this._lastChangedProperties);
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Update state with validation and observer notification
|
|
88
|
+
* @param updates - Partial state updates to apply
|
|
89
|
+
* @param source - Source identifier for debugging
|
|
90
|
+
* @param immediate - If true, bypass batching and apply updates immediately
|
|
91
|
+
*/
|
|
92
|
+
KTDatepickerUnifiedStateManager.prototype.updateState = function (updates, source, immediate) {
|
|
93
|
+
var _this = this;
|
|
94
|
+
if (source === void 0) { source = 'unknown'; }
|
|
95
|
+
if (immediate === void 0) { immediate = false; }
|
|
96
|
+
if (this._isUpdating) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
// If immediate is requested, or batching is disabled, apply updates immediately
|
|
100
|
+
if (immediate || !this._config.enableUpdateBatching) {
|
|
101
|
+
return this._applyUpdates(source, updates);
|
|
102
|
+
}
|
|
103
|
+
// Merge updates with pending updates for batched processing
|
|
104
|
+
this._pendingUpdates = __assign(__assign({}, this._pendingUpdates), updates);
|
|
105
|
+
if (this._batchTimeout) {
|
|
106
|
+
clearTimeout(this._batchTimeout);
|
|
107
|
+
}
|
|
108
|
+
this._batchTimeout = window.setTimeout(function () {
|
|
109
|
+
_this._applyUpdates(source);
|
|
110
|
+
}, this._config.batchDelay);
|
|
111
|
+
return true;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Apply updates to state
|
|
115
|
+
*/
|
|
116
|
+
KTDatepickerUnifiedStateManager.prototype._applyUpdates = function (source, updates) {
|
|
117
|
+
var changes = updates || this._pendingUpdates;
|
|
118
|
+
var oldState = __assign({}, this._state);
|
|
119
|
+
// Create new state with updates
|
|
120
|
+
var newState = __assign(__assign({}, this._state), changes);
|
|
121
|
+
// Validate state if enabled
|
|
122
|
+
if (this._config.enableValidation) {
|
|
123
|
+
var validation = this._validateState(newState);
|
|
124
|
+
if (!validation.isValid) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
newState.validationErrors = validation.errors;
|
|
128
|
+
newState.isValid = validation.isValid;
|
|
129
|
+
}
|
|
130
|
+
// Update state
|
|
131
|
+
this._state = newState;
|
|
132
|
+
this._pendingUpdates = {};
|
|
133
|
+
// Notify observers
|
|
134
|
+
this._notifyObservers(oldState, newState, source, changes);
|
|
135
|
+
return true;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Validate state
|
|
139
|
+
*/
|
|
140
|
+
KTDatepickerUnifiedStateManager.prototype._validateState = function (state) {
|
|
141
|
+
var errors = [];
|
|
142
|
+
// Validate dates
|
|
143
|
+
if (state.selectedDate && isNaN(state.selectedDate.getTime())) {
|
|
144
|
+
errors.push('Invalid selectedDate');
|
|
145
|
+
}
|
|
146
|
+
if (state.currentDate && isNaN(state.currentDate.getTime())) {
|
|
147
|
+
errors.push('Invalid currentDate');
|
|
148
|
+
}
|
|
149
|
+
// Validate range
|
|
150
|
+
if (state.selectedRange) {
|
|
151
|
+
if (state.selectedRange.start && isNaN(state.selectedRange.start.getTime())) {
|
|
152
|
+
errors.push('Invalid range start date');
|
|
153
|
+
}
|
|
154
|
+
if (state.selectedRange.end && isNaN(state.selectedRange.end.getTime())) {
|
|
155
|
+
errors.push('Invalid range end date');
|
|
156
|
+
}
|
|
157
|
+
if (state.selectedRange.start && state.selectedRange.end &&
|
|
158
|
+
state.selectedRange.start > state.selectedRange.end) {
|
|
159
|
+
errors.push('Range start date cannot be after end date');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Validate time
|
|
163
|
+
if (state.selectedTime) {
|
|
164
|
+
if (state.selectedTime.hour < 0 || state.selectedTime.hour > 23) {
|
|
165
|
+
errors.push('Invalid hour value');
|
|
166
|
+
}
|
|
167
|
+
if (state.selectedTime.minute < 0 || state.selectedTime.minute > 59) {
|
|
168
|
+
errors.push('Invalid minute value');
|
|
169
|
+
}
|
|
170
|
+
if (state.selectedTime.second < 0 || state.selectedTime.second > 59) {
|
|
171
|
+
errors.push('Invalid second value');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
isValid: errors.length === 0,
|
|
176
|
+
errors: errors
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Subscribe to state changes
|
|
181
|
+
*/
|
|
182
|
+
KTDatepickerUnifiedStateManager.prototype.subscribe = function (observer) {
|
|
183
|
+
var _this = this;
|
|
184
|
+
this._observers.add(observer);
|
|
185
|
+
// Return unsubscribe function
|
|
186
|
+
return function () {
|
|
187
|
+
_this._observers.delete(observer);
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Compute which properties actually changed between old and new state
|
|
192
|
+
*/
|
|
193
|
+
KTDatepickerUnifiedStateManager.prototype._computeChangedProperties = function (oldState, newState, changes) {
|
|
194
|
+
var _a, _b, _c, _d;
|
|
195
|
+
var changedProperties = new Set();
|
|
196
|
+
// Check each property in the changes object
|
|
197
|
+
for (var key in changes) {
|
|
198
|
+
if (changes.hasOwnProperty(key)) {
|
|
199
|
+
var oldValue = oldState[key];
|
|
200
|
+
var newValue = newState[key];
|
|
201
|
+
// Handle Date objects - compare by time value
|
|
202
|
+
if (oldValue instanceof Date && newValue instanceof Date) {
|
|
203
|
+
if (oldValue.getTime() !== newValue.getTime()) {
|
|
204
|
+
changedProperties.add(key);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Handle arrays - compare by JSON string (for selectedDates)
|
|
208
|
+
else if (Array.isArray(oldValue) && Array.isArray(newValue)) {
|
|
209
|
+
if (JSON.stringify(oldValue.map(function (d) { return d instanceof Date ? d.getTime() : d; })) !==
|
|
210
|
+
JSON.stringify(newValue.map(function (d) { return d instanceof Date ? d.getTime() : d; }))) {
|
|
211
|
+
changedProperties.add(key);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Handle objects (like selectedRange, dropdownState)
|
|
215
|
+
else if (typeof oldValue === 'object' && oldValue !== null &&
|
|
216
|
+
typeof newValue === 'object' && newValue !== null) {
|
|
217
|
+
if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
218
|
+
changedProperties.add(key);
|
|
219
|
+
// Also add nested properties if it's a complex object
|
|
220
|
+
if (key === 'selectedRange') {
|
|
221
|
+
if (((_a = oldValue.start) === null || _a === void 0 ? void 0 : _a.getTime()) !== ((_b = newValue.start) === null || _b === void 0 ? void 0 : _b.getTime()))
|
|
222
|
+
changedProperties.add('selectedRange.start');
|
|
223
|
+
if (((_c = oldValue.end) === null || _c === void 0 ? void 0 : _c.getTime()) !== ((_d = newValue.end) === null || _d === void 0 ? void 0 : _d.getTime()))
|
|
224
|
+
changedProperties.add('selectedRange.end');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Primitive values
|
|
229
|
+
else if (oldValue !== newValue) {
|
|
230
|
+
changedProperties.add(key);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return changedProperties;
|
|
235
|
+
};
|
|
236
|
+
/**
|
|
237
|
+
* Notify all observers of state change
|
|
238
|
+
*/
|
|
239
|
+
KTDatepickerUnifiedStateManager.prototype._notifyObservers = function (oldState, newState, source, changes) {
|
|
240
|
+
if (this._observers.size === 0)
|
|
241
|
+
return;
|
|
242
|
+
// Store the last update source for external queries
|
|
243
|
+
this._lastUpdateSource = source;
|
|
244
|
+
// Compute which properties actually changed
|
|
245
|
+
var changedProperties = this._computeChangedProperties(oldState, newState, changes);
|
|
246
|
+
this._lastChangedProperties = changedProperties; // Store for observers to access
|
|
247
|
+
// Sort observers by priority
|
|
248
|
+
var sortedObservers = Array.from(this._observers).sort(function (a, b) {
|
|
249
|
+
return a.getUpdatePriority() - b.getUpdatePriority();
|
|
250
|
+
});
|
|
251
|
+
var event = {
|
|
252
|
+
oldState: oldState,
|
|
253
|
+
newState: newState,
|
|
254
|
+
source: source,
|
|
255
|
+
timestamp: Date.now(),
|
|
256
|
+
changes: changes,
|
|
257
|
+
changedProperties: changedProperties
|
|
258
|
+
};
|
|
259
|
+
// Notify observers in priority order
|
|
260
|
+
for (var _i = 0, sortedObservers_1 = sortedObservers; _i < sortedObservers_1.length; _i++) {
|
|
261
|
+
var observer = sortedObservers_1[_i];
|
|
262
|
+
try {
|
|
263
|
+
observer.onStateChange(newState, oldState);
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
// Observer error - continue with other observers
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Convenience methods for common state updates
|
|
272
|
+
*/
|
|
273
|
+
/**
|
|
274
|
+
* Set selected date - uses immediate update for synchronous event firing
|
|
275
|
+
*/
|
|
276
|
+
KTDatepickerUnifiedStateManager.prototype.setSelectedDate = function (date, source) {
|
|
277
|
+
if (source === void 0) { source = 'manual'; }
|
|
278
|
+
return this.updateState({ selectedDate: date }, source, true); // immediate
|
|
279
|
+
};
|
|
280
|
+
KTDatepickerUnifiedStateManager.prototype.setSelectedTime = function (time, source) {
|
|
281
|
+
if (source === void 0) { source = 'manual'; }
|
|
282
|
+
return this.updateState({ selectedTime: time }, source);
|
|
283
|
+
};
|
|
284
|
+
KTDatepickerUnifiedStateManager.prototype.setCurrentDate = function (date, source) {
|
|
285
|
+
if (source === void 0) { source = 'manual'; }
|
|
286
|
+
return this.updateState({ currentDate: date }, source);
|
|
287
|
+
};
|
|
288
|
+
/**
|
|
289
|
+
* Set selected range - uses immediate update for synchronous event firing
|
|
290
|
+
*/
|
|
291
|
+
KTDatepickerUnifiedStateManager.prototype.setSelectedRange = function (range, source) {
|
|
292
|
+
if (source === void 0) { source = 'manual'; }
|
|
293
|
+
return this.updateState({ selectedRange: range }, source, true); // immediate
|
|
294
|
+
};
|
|
295
|
+
/**
|
|
296
|
+
* Set selected dates (multi-date) - uses immediate update for synchronous event firing
|
|
297
|
+
*/
|
|
298
|
+
KTDatepickerUnifiedStateManager.prototype.setSelectedDates = function (dates, source) {
|
|
299
|
+
if (source === void 0) { source = 'manual'; }
|
|
300
|
+
return this.updateState({ selectedDates: dates }, source, true); // immediate
|
|
301
|
+
};
|
|
302
|
+
KTDatepickerUnifiedStateManager.prototype.setViewMode = function (mode, source) {
|
|
303
|
+
if (source === void 0) { source = 'manual'; }
|
|
304
|
+
return this.updateState({ viewMode: mode }, source);
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* Set overall open state - uses immediate update for synchronous event firing
|
|
308
|
+
*/
|
|
309
|
+
KTDatepickerUnifiedStateManager.prototype.setOpen = function (isOpen, source) {
|
|
310
|
+
if (source === void 0) { source = 'manual'; }
|
|
311
|
+
return this.updateState({ isOpen: isOpen }, source, true); // immediate
|
|
312
|
+
};
|
|
313
|
+
KTDatepickerUnifiedStateManager.prototype.setFocused = function (isFocused, source) {
|
|
314
|
+
if (source === void 0) { source = 'manual'; }
|
|
315
|
+
return this.updateState({ isFocused: isFocused }, source);
|
|
316
|
+
};
|
|
317
|
+
KTDatepickerUnifiedStateManager.prototype.setDisabled = function (isDisabled, source) {
|
|
318
|
+
if (source === void 0) { source = 'manual'; }
|
|
319
|
+
return this.updateState({ isDisabled: isDisabled }, source);
|
|
320
|
+
};
|
|
321
|
+
KTDatepickerUnifiedStateManager.prototype.setTransitioning = function (isTransitioning, source) {
|
|
322
|
+
if (source === void 0) { source = 'manual'; }
|
|
323
|
+
return this.updateState({ isTransitioning: isTransitioning }, source);
|
|
324
|
+
};
|
|
325
|
+
// Dropdown state methods (consolidated from legacy state manager)
|
|
326
|
+
/**
|
|
327
|
+
* Set dropdown open state - uses immediate update for synchronous event firing
|
|
328
|
+
*/
|
|
329
|
+
KTDatepickerUnifiedStateManager.prototype.setDropdownOpen = function (isOpen, source) {
|
|
330
|
+
if (source === void 0) { source = 'manual'; }
|
|
331
|
+
return this.updateState({
|
|
332
|
+
dropdownState: __assign(__assign({}, this._state.dropdownState), { isOpen: isOpen }),
|
|
333
|
+
isOpen: isOpen // Also update the legacy isOpen field for compatibility
|
|
334
|
+
}, source, true); // immediate
|
|
335
|
+
};
|
|
336
|
+
KTDatepickerUnifiedStateManager.prototype.setDropdownTransitioning = function (isTransitioning, source) {
|
|
337
|
+
if (source === void 0) { source = 'manual'; }
|
|
338
|
+
return this.updateState({
|
|
339
|
+
dropdownState: __assign(__assign({}, this._state.dropdownState), { isTransitioning: isTransitioning })
|
|
340
|
+
}, source);
|
|
341
|
+
};
|
|
342
|
+
KTDatepickerUnifiedStateManager.prototype.setDropdownDisabled = function (isDisabled, source) {
|
|
343
|
+
if (source === void 0) { source = 'manual'; }
|
|
344
|
+
return this.updateState({
|
|
345
|
+
dropdownState: __assign(__assign({}, this._state.dropdownState), { isDisabled: isDisabled })
|
|
346
|
+
}, source);
|
|
347
|
+
};
|
|
348
|
+
KTDatepickerUnifiedStateManager.prototype.setDropdownFocused = function (isFocused, source) {
|
|
349
|
+
if (source === void 0) { source = 'manual'; }
|
|
350
|
+
return this.updateState({
|
|
351
|
+
dropdownState: __assign(__assign({}, this._state.dropdownState), { isFocused: isFocused })
|
|
352
|
+
}, source);
|
|
353
|
+
};
|
|
354
|
+
KTDatepickerUnifiedStateManager.prototype.getDropdownState = function () {
|
|
355
|
+
return __assign({}, this._state.dropdownState);
|
|
356
|
+
};
|
|
357
|
+
KTDatepickerUnifiedStateManager.prototype.isDropdownOpen = function () {
|
|
358
|
+
return this._state.dropdownState.isOpen;
|
|
359
|
+
};
|
|
360
|
+
KTDatepickerUnifiedStateManager.prototype.isDropdownTransitioning = function () {
|
|
361
|
+
return this._state.dropdownState.isTransitioning;
|
|
362
|
+
};
|
|
363
|
+
KTDatepickerUnifiedStateManager.prototype.isDropdownDisabled = function () {
|
|
364
|
+
return this._state.dropdownState.isDisabled;
|
|
365
|
+
};
|
|
366
|
+
KTDatepickerUnifiedStateManager.prototype.isDropdownFocused = function () {
|
|
367
|
+
return this._state.dropdownState.isFocused;
|
|
368
|
+
};
|
|
369
|
+
/**
|
|
370
|
+
* Reset state to initial values
|
|
371
|
+
*/
|
|
372
|
+
KTDatepickerUnifiedStateManager.prototype.reset = function (source) {
|
|
373
|
+
if (source === void 0) { source = 'manual'; }
|
|
374
|
+
var oldState = __assign({}, this._state);
|
|
375
|
+
this._state = this._getInitialState();
|
|
376
|
+
this._notifyObservers(oldState, this._state, source, this._state);
|
|
377
|
+
};
|
|
378
|
+
/**
|
|
379
|
+
* Dispose of state manager
|
|
380
|
+
*/
|
|
381
|
+
KTDatepickerUnifiedStateManager.prototype.dispose = function () {
|
|
382
|
+
this._observers.clear();
|
|
383
|
+
if (this._batchTimeout) {
|
|
384
|
+
clearTimeout(this._batchTimeout);
|
|
385
|
+
this._batchTimeout = null;
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
return KTDatepickerUnifiedStateManager;
|
|
389
|
+
}());
|
|
390
|
+
export { KTDatepickerUnifiedStateManager };
|
|
391
|
+
//# sourceMappingURL=unified-state-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-state-manager.js","sourceRoot":"","sources":["../../../../../src/components/datepicker/core/unified-state-manager.ts"],"names":[],"mappings":"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"}
|