@carbon-labs/wc-date-picker 0.2.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.
Files changed (156) hide show
  1. package/LICENSE +201 -0
  2. package/es/__stories__/date-picker.stories.d.ts +949 -0
  3. package/es/components/date-picker/calendar-renderer.d.ts +147 -0
  4. package/es/components/date-picker/calendar-renderer.js +406 -0
  5. package/es/components/date-picker/calendar-renderer.js.map +1 -0
  6. package/es/components/date-picker/date-picker-input-skeleton.d.ts +34 -0
  7. package/es/components/date-picker/date-picker-input-skeleton.js +77 -0
  8. package/es/components/date-picker/date-picker-input-skeleton.js.map +1 -0
  9. package/es/components/date-picker/date-picker-input.d.ts +539 -0
  10. package/es/components/date-picker/date-picker-input.js +413 -0
  11. package/es/components/date-picker/date-picker-input.js.map +1 -0
  12. package/es/components/date-picker/date-picker.d.ts +977 -0
  13. package/es/components/date-picker/date-picker.js +1047 -0
  14. package/es/components/date-picker/date-picker.js.map +1 -0
  15. package/es/components/date-picker/date-picker.scss.js +6 -0
  16. package/es/components/date-picker/date-picker.scss.js.map +1 -0
  17. package/es/components/date-picker/defs.d.ts +45 -0
  18. package/es/components/date-picker/defs.js +51 -0
  19. package/es/components/date-picker/defs.js.map +1 -0
  20. package/es/index.d.ts +10 -0
  21. package/es/index.js +5 -0
  22. package/es/index.js.map +1 -0
  23. package/es/state-machine/actions.d.ts +35 -0
  24. package/es/state-machine/actions.js +860 -0
  25. package/es/state-machine/actions.js.map +1 -0
  26. package/es/state-machine/adapters/web-component-adapter.d.ts +142 -0
  27. package/es/state-machine/adapters/web-component-adapter.js +269 -0
  28. package/es/state-machine/adapters/web-component-adapter.js.map +1 -0
  29. package/es/state-machine/effects.d.ts +35 -0
  30. package/es/state-machine/effects.js +92 -0
  31. package/es/state-machine/effects.js.map +1 -0
  32. package/es/state-machine/guards.d.ts +41 -0
  33. package/es/state-machine/guards.js +143 -0
  34. package/es/state-machine/guards.js.map +1 -0
  35. package/es/state-machine/index.d.ts +12 -0
  36. package/es/state-machine/machine.d.ts +92 -0
  37. package/es/state-machine/machine.js +272 -0
  38. package/es/state-machine/machine.js.map +1 -0
  39. package/es/state-machine/states.d.ts +89 -0
  40. package/es/state-machine/states.js +105 -0
  41. package/es/state-machine/states.js.map +1 -0
  42. package/es/state-machine/temporal-utils.d.ts +203 -0
  43. package/es/state-machine/temporal-utils.js +128 -0
  44. package/es/state-machine/temporal-utils.js.map +1 -0
  45. package/es/state-machine/types.d.ts +163 -0
  46. package/es/temp-imports/.storybook/templates/with-layer.d.ts +26 -0
  47. package/es/temp-imports/globals/decorators/carbon-element.d.ts +45 -0
  48. package/es/temp-imports/globals/decorators/carbon-element.js +63 -0
  49. package/es/temp-imports/globals/decorators/carbon-element.js.map +1 -0
  50. package/es/temp-imports/globals/decorators/host-listener.d.ts +17 -0
  51. package/es/temp-imports/globals/decorators/host-listener.js +62 -0
  52. package/es/temp-imports/globals/decorators/host-listener.js.map +1 -0
  53. package/es/temp-imports/globals/internal/collection-helpers.d.ts +41 -0
  54. package/es/temp-imports/globals/internal/handle.d.ts +16 -0
  55. package/es/temp-imports/globals/internal/icon-loader-utils.d.ts +31 -0
  56. package/es/temp-imports/globals/internal/icon-loader-utils.js +69 -0
  57. package/es/temp-imports/globals/internal/icon-loader-utils.js.map +1 -0
  58. package/es/temp-imports/globals/internal/icon-loader.d.ts +28 -0
  59. package/es/temp-imports/globals/internal/icon-loader.js +43 -0
  60. package/es/temp-imports/globals/internal/icon-loader.js.map +1 -0
  61. package/es/temp-imports/globals/mixins/focus.d.ts +369 -0
  62. package/es/temp-imports/globals/mixins/focus.js +38 -0
  63. package/es/temp-imports/globals/mixins/focus.js.map +1 -0
  64. package/es/temp-imports/globals/mixins/form.d.ts +379 -0
  65. package/es/temp-imports/globals/mixins/form.js +49 -0
  66. package/es/temp-imports/globals/mixins/form.js.map +1 -0
  67. package/es/temp-imports/globals/mixins/host-listener.d.ts +387 -0
  68. package/es/temp-imports/globals/mixins/host-listener.js +76 -0
  69. package/es/temp-imports/globals/mixins/host-listener.js.map +1 -0
  70. package/es/temp-imports/globals/mixins/on.d.ts +9 -0
  71. package/es/temp-imports/globals/mixins/on.js +19 -0
  72. package/es/temp-imports/globals/mixins/on.js.map +1 -0
  73. package/es/temp-imports/globals/settings.d.ts +13 -0
  74. package/es/temp-imports/globals/settings.js +76 -0
  75. package/es/temp-imports/globals/settings.js.map +1 -0
  76. package/es/temp-imports/globals/shared-enums.d.ts +19 -0
  77. package/es/temp-imports/globals/shared-enums.js +23 -0
  78. package/es/temp-imports/globals/shared-enums.js.map +1 -0
  79. package/lib/__stories__/date-picker.stories.d.ts +949 -0
  80. package/lib/components/date-picker/calendar-renderer.d.ts +147 -0
  81. package/lib/components/date-picker/calendar-renderer.js +408 -0
  82. package/lib/components/date-picker/calendar-renderer.js.map +1 -0
  83. package/lib/components/date-picker/date-picker-input-skeleton.d.ts +34 -0
  84. package/lib/components/date-picker/date-picker-input-skeleton.js +79 -0
  85. package/lib/components/date-picker/date-picker-input-skeleton.js.map +1 -0
  86. package/lib/components/date-picker/date-picker-input.d.ts +539 -0
  87. package/lib/components/date-picker/date-picker-input.js +422 -0
  88. package/lib/components/date-picker/date-picker-input.js.map +1 -0
  89. package/lib/components/date-picker/date-picker.d.ts +977 -0
  90. package/lib/components/date-picker/date-picker.js +1049 -0
  91. package/lib/components/date-picker/date-picker.js.map +1 -0
  92. package/lib/components/date-picker/date-picker.scss.js +10 -0
  93. package/lib/components/date-picker/date-picker.scss.js.map +1 -0
  94. package/lib/components/date-picker/defs.d.ts +45 -0
  95. package/lib/components/date-picker/defs.js +56 -0
  96. package/lib/components/date-picker/defs.js.map +1 -0
  97. package/lib/index.d.ts +10 -0
  98. package/lib/index.js +8 -0
  99. package/lib/index.js.map +1 -0
  100. package/lib/state-machine/actions.d.ts +35 -0
  101. package/lib/state-machine/actions.js +864 -0
  102. package/lib/state-machine/actions.js.map +1 -0
  103. package/lib/state-machine/adapters/web-component-adapter.d.ts +142 -0
  104. package/lib/state-machine/adapters/web-component-adapter.js +271 -0
  105. package/lib/state-machine/adapters/web-component-adapter.js.map +1 -0
  106. package/lib/state-machine/effects.d.ts +35 -0
  107. package/lib/state-machine/effects.js +96 -0
  108. package/lib/state-machine/effects.js.map +1 -0
  109. package/lib/state-machine/guards.d.ts +41 -0
  110. package/lib/state-machine/guards.js +147 -0
  111. package/lib/state-machine/guards.js.map +1 -0
  112. package/lib/state-machine/index.d.ts +12 -0
  113. package/lib/state-machine/machine.d.ts +92 -0
  114. package/lib/state-machine/machine.js +274 -0
  115. package/lib/state-machine/machine.js.map +1 -0
  116. package/lib/state-machine/states.d.ts +89 -0
  117. package/lib/state-machine/states.js +105 -0
  118. package/lib/state-machine/states.js.map +1 -0
  119. package/lib/state-machine/temporal-utils.d.ts +203 -0
  120. package/lib/state-machine/temporal-utils.js +136 -0
  121. package/lib/state-machine/temporal-utils.js.map +1 -0
  122. package/lib/state-machine/types.d.ts +163 -0
  123. package/lib/temp-imports/.storybook/templates/with-layer.d.ts +26 -0
  124. package/lib/temp-imports/globals/decorators/carbon-element.d.ts +45 -0
  125. package/lib/temp-imports/globals/decorators/carbon-element.js +65 -0
  126. package/lib/temp-imports/globals/decorators/carbon-element.js.map +1 -0
  127. package/lib/temp-imports/globals/decorators/host-listener.d.ts +17 -0
  128. package/lib/temp-imports/globals/decorators/host-listener.js +66 -0
  129. package/lib/temp-imports/globals/decorators/host-listener.js.map +1 -0
  130. package/lib/temp-imports/globals/internal/collection-helpers.d.ts +41 -0
  131. package/lib/temp-imports/globals/internal/handle.d.ts +16 -0
  132. package/lib/temp-imports/globals/internal/icon-loader-utils.d.ts +31 -0
  133. package/lib/temp-imports/globals/internal/icon-loader-utils.js +72 -0
  134. package/lib/temp-imports/globals/internal/icon-loader-utils.js.map +1 -0
  135. package/lib/temp-imports/globals/internal/icon-loader.d.ts +28 -0
  136. package/lib/temp-imports/globals/internal/icon-loader.js +45 -0
  137. package/lib/temp-imports/globals/internal/icon-loader.js.map +1 -0
  138. package/lib/temp-imports/globals/mixins/focus.d.ts +369 -0
  139. package/lib/temp-imports/globals/mixins/focus.js +42 -0
  140. package/lib/temp-imports/globals/mixins/focus.js.map +1 -0
  141. package/lib/temp-imports/globals/mixins/form.d.ts +379 -0
  142. package/lib/temp-imports/globals/mixins/form.js +53 -0
  143. package/lib/temp-imports/globals/mixins/form.js.map +1 -0
  144. package/lib/temp-imports/globals/mixins/host-listener.d.ts +387 -0
  145. package/lib/temp-imports/globals/mixins/host-listener.js +80 -0
  146. package/lib/temp-imports/globals/mixins/host-listener.js.map +1 -0
  147. package/lib/temp-imports/globals/mixins/on.d.ts +9 -0
  148. package/lib/temp-imports/globals/mixins/on.js +23 -0
  149. package/lib/temp-imports/globals/mixins/on.js.map +1 -0
  150. package/lib/temp-imports/globals/settings.d.ts +13 -0
  151. package/lib/temp-imports/globals/settings.js +79 -0
  152. package/lib/temp-imports/globals/settings.js.map +1 -0
  153. package/lib/temp-imports/globals/shared-enums.d.ts +19 -0
  154. package/lib/temp-imports/globals/shared-enums.js +23 -0
  155. package/lib/temp-imports/globals/shared-enums.js.map +1 -0
  156. package/package.json +44 -0
@@ -0,0 +1,147 @@
1
+ 'use strict';
2
+
3
+ var states = require('./states.js');
4
+ var temporalUtils = require('./temporal-utils.js');
5
+
6
+ /**
7
+ * Copyright IBM Corp. 2026
8
+ *
9
+ * This source code is licensed under the Apache-2.0 license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ /**
13
+ * Check if the component is interactive (not disabled or readonly)
14
+ *
15
+ * @param {DatePickerContext} context - The current context
16
+ * @returns {boolean} True if interactive
17
+ */
18
+ const isInteractive = (context) => {
19
+ return !context.isDisabled && !context.isReadonly;
20
+ };
21
+ /**
22
+ * Check if component is in range mode
23
+ *
24
+ * @param {DatePickerContext} context - The current context
25
+ * @returns {boolean} True if in range mode
26
+ */
27
+ const isRangeMode = (context) => {
28
+ return context.mode === 'range';
29
+ };
30
+ /**
31
+ * Guards for state transitions
32
+ */
33
+ const guards = {
34
+ [states.DatePickerState.IDLE]: {},
35
+ [states.DatePickerState.FOCUSED]: {
36
+ INPUT_FOCUS: isInteractive,
37
+ },
38
+ [states.DatePickerState.CALENDAR_OPEN]: {
39
+ CALENDAR_OPEN: isInteractive,
40
+ CALENDAR_ICON_CLICK: isInteractive,
41
+ TAB_KEY: isInteractive,
42
+ },
43
+ [states.DatePickerState.SELECTING_START]: {
44
+ /**
45
+ * Guard for calendar open in range mode
46
+ *
47
+ * @param {DatePickerContext} context - The current context
48
+ * @returns {boolean} True if allowed
49
+ */
50
+ CALENDAR_OPEN: (context) => isInteractive(context) && isRangeMode(context),
51
+ },
52
+ [states.DatePickerState.SELECTING_END]: {
53
+ /**
54
+ * Guard for range start selection
55
+ *
56
+ * @param {DatePickerContext} context - The current context
57
+ * @param {DatePickerEvent} event - The event
58
+ * @returns {boolean} True if allowed
59
+ */
60
+ RANGE_START_SELECT: (context, event) => {
61
+ if (!isInteractive(context) || !isRangeMode(context)) {
62
+ return false;
63
+ }
64
+ const payload = event.payload;
65
+ if (!(payload === null || payload === void 0 ? void 0 : payload.date)) {
66
+ return false;
67
+ }
68
+ return temporalUtils.isDateInRange(payload.date, context.minDate, context.maxDate);
69
+ },
70
+ },
71
+ [states.DatePickerState.DATE_SELECTED]: {
72
+ /**
73
+ * Guard for date selection
74
+ *
75
+ * @param {DatePickerContext} context - The current context
76
+ * @param {DatePickerEvent} event - The event
77
+ * @returns {boolean} True if allowed
78
+ */
79
+ DATE_SELECT: (context, event) => {
80
+ if (!isInteractive(context)) {
81
+ return false;
82
+ }
83
+ const payload = event.payload;
84
+ if (!(payload === null || payload === void 0 ? void 0 : payload.date)) {
85
+ return false;
86
+ }
87
+ return temporalUtils.isDateInRange(payload.date, context.minDate, context.maxDate);
88
+ },
89
+ /**
90
+ * Guard for range end selection
91
+ *
92
+ * @param {DatePickerContext} context - The current context
93
+ * @param {DatePickerEvent} event - The event
94
+ * @returns {boolean} True if allowed
95
+ */
96
+ RANGE_END_SELECT: (context, event) => {
97
+ if (!isInteractive(context) || !isRangeMode(context)) {
98
+ return false;
99
+ }
100
+ const payload = event.payload;
101
+ if (!(payload === null || payload === void 0 ? void 0 : payload.date)) {
102
+ return false;
103
+ }
104
+ // Must have a start date selected
105
+ if (!context.startDate) {
106
+ return false;
107
+ }
108
+ return temporalUtils.isDateInRange(payload.date, context.minDate, context.maxDate);
109
+ },
110
+ },
111
+ [states.DatePickerState.DISABLED]: {},
112
+ [states.DatePickerState.READONLY]: {},
113
+ [states.DatePickerState.ERROR]: {},
114
+ };
115
+ /**
116
+ * Get guard for a specific state and event
117
+ *
118
+ * @param {DatePickerState} state - The current state
119
+ * @param {string} eventType - The event type
120
+ * @returns {StateGuard | undefined} The guard function or undefined
121
+ */
122
+ function getGuard(state, eventType) {
123
+ var _a;
124
+ return (_a = guards[state]) === null || _a === void 0 ? void 0 : _a[eventType];
125
+ }
126
+ /**
127
+ * Check if a transition is guarded and allowed
128
+ *
129
+ * @param {DatePickerState} state - The current state
130
+ * @param {string} eventType - The event type
131
+ * @param {DatePickerContext} context - The current context
132
+ * @param {DatePickerEvent} event - The event
133
+ * @returns {boolean} True if guard passes
134
+ */
135
+ function checkGuard(state, eventType, context, event) {
136
+ const guard = getGuard(state, eventType);
137
+ if (!guard) {
138
+ return true; // No guard means transition is allowed
139
+ }
140
+ return guard(context, event);
141
+ }
142
+ // Made with Bob
143
+
144
+ exports.checkGuard = checkGuard;
145
+ exports.getGuard = getGuard;
146
+ exports.guards = guards;
147
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sources":["../../../state-machine/guards.ts"],"sourcesContent":[null],"names":["DatePickerState","isDateInRange"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export { DatePickerStateMachine } from './machine';
8
+ export { DatePickerState, DatePickerEvent } from './states';
9
+ export { guards, getGuard, checkGuard } from './guards';
10
+ export { actions, getAction, executeAction } from './actions';
11
+ export { effects, getEffect, executeEffect } from './effects';
12
+ export type { DatePickerContext, DatePickerMode, InputType, DateSelectPayload, InputFocusPayload, KeyboardPayload, ValueChangePayload, ValidationErrorPayload, DatePickerEvent as DatePickerEventType, StateTransition, StateGuard, StateAction, SideEffect, TransitionListener, StateConfig, TransitionMap, } from './types';
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { DatePickerState } from './states';
8
+ import type { DatePickerContext, TransitionListener } from './types';
9
+ /**
10
+ * Date picker state machine
11
+ * Manages state transitions and context updates for the date picker
12
+ */
13
+ export declare class DatePickerStateMachine {
14
+ private currentState;
15
+ private context;
16
+ private listeners;
17
+ /**
18
+ * Create a new date picker state machine
19
+ *
20
+ * @param {Partial<DatePickerContext>} initialContext - Initial context values
21
+ */
22
+ constructor(initialContext?: Partial<DatePickerContext>);
23
+ /**
24
+ * Create initial context with defaults
25
+ *
26
+ * @param {Partial<DatePickerContext>} partial - Partial context to merge with defaults
27
+ * @returns Complete context object
28
+ */
29
+ private createInitialContext;
30
+ /**
31
+ * Send an event to the state machine
32
+ * This is the primary method for triggering state transitions
33
+ *
34
+ * @param {string} eventType - The type of event to send
35
+ * @param {any} payload - Optional event payload
36
+ * @returns The updated context
37
+ */
38
+ send(eventType: string, payload?: any): DatePickerContext;
39
+ /**
40
+ * Get the current state
41
+ *
42
+ * @returns The current state
43
+ */
44
+ getState(): DatePickerState;
45
+ /**
46
+ * Get the current context
47
+ *
48
+ * @returns A copy of the current context
49
+ */
50
+ getContext(): DatePickerContext;
51
+ /**
52
+ * Update context directly (use sparingly)
53
+ *
54
+ * @param {Partial<DatePickerContext>} updates - Partial context updates
55
+ * @returns The updated context
56
+ */
57
+ updateContext(updates: Partial<DatePickerContext>): DatePickerContext;
58
+ /**
59
+ * Subscribe to state transitions
60
+ *
61
+ * @param {TransitionListener} listener - Function to call on each transition
62
+ * @returns Unsubscribe function
63
+ */
64
+ subscribe(listener: TransitionListener): () => void;
65
+ /**
66
+ * Check if a transition is valid from the current state
67
+ *
68
+ * @param {string} eventType - The event type to check
69
+ * @returns True if the transition is valid
70
+ */
71
+ canTransition(eventType: string): boolean;
72
+ /**
73
+ * Get the next state for a given event
74
+ *
75
+ * @param {DatePickerState} from - Current state
76
+ * @param {DatePickerEvent} event - The event
77
+ * @returns Next state or null if no transition exists
78
+ */
79
+ private getNextState;
80
+ /**
81
+ * Notify all listeners of a state transition
82
+ *
83
+ * @param {StateTransition} transition - The state transition
84
+ */
85
+ private notifyListeners;
86
+ /**
87
+ * Reset the state machine to initial state
88
+ *
89
+ * @param {Partial<DatePickerContext>} initialContext - Optional new initial context
90
+ */
91
+ reset(initialContext?: Partial<DatePickerContext>): void;
92
+ }
@@ -0,0 +1,274 @@
1
+ 'use strict';
2
+
3
+ var states = require('./states.js');
4
+ var guards = require('./guards.js');
5
+ var actions = require('./actions.js');
6
+ var effects = require('./effects.js');
7
+
8
+ /**
9
+ * Copyright IBM Corp. 2026
10
+ *
11
+ * This source code is licensed under the Apache-2.0 license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ */
14
+ /**
15
+ * State transition configuration
16
+ * Maps the current state + event type to the next state
17
+ */
18
+ const stateTransitions = {
19
+ [states.DatePickerState.IDLE]: {
20
+ [states.DatePickerEvent.INPUT_FOCUS]: states.DatePickerState.FOCUSED,
21
+ [states.DatePickerEvent.CALENDAR_ICON_CLICK]: states.DatePickerState.CALENDAR_OPEN,
22
+ [states.DatePickerEvent.DISABLE]: states.DatePickerState.DISABLED,
23
+ [states.DatePickerEvent.SET_READONLY]: states.DatePickerState.READONLY,
24
+ },
25
+ [states.DatePickerState.FOCUSED]: {
26
+ [states.DatePickerEvent.INPUT_BLUR]: states.DatePickerState.IDLE,
27
+ [states.DatePickerEvent.CALENDAR_OPEN]: states.DatePickerState.CALENDAR_OPEN,
28
+ [states.DatePickerEvent.DISABLE]: states.DatePickerState.DISABLED,
29
+ },
30
+ [states.DatePickerState.CALENDAR_OPEN]: {
31
+ [states.DatePickerEvent.DATE_SELECT]: states.DatePickerState.DATE_SELECTED,
32
+ [states.DatePickerEvent.RANGE_START_SELECT]: states.DatePickerState.SELECTING_END,
33
+ [states.DatePickerEvent.OUTSIDE_CLICK]: states.DatePickerState.IDLE,
34
+ [states.DatePickerEvent.ESCAPE_KEY]: states.DatePickerState.FOCUSED,
35
+ [states.DatePickerEvent.TAB_KEY]: states.DatePickerState.IDLE,
36
+ [states.DatePickerEvent.CALENDAR_CLOSE]: states.DatePickerState.FOCUSED,
37
+ [states.DatePickerEvent.PREV_MONTH]: states.DatePickerState.CALENDAR_OPEN,
38
+ [states.DatePickerEvent.NEXT_MONTH]: states.DatePickerState.CALENDAR_OPEN,
39
+ [states.DatePickerEvent.PREV_YEAR]: states.DatePickerState.CALENDAR_OPEN,
40
+ [states.DatePickerEvent.NEXT_YEAR]: states.DatePickerState.CALENDAR_OPEN,
41
+ [states.DatePickerEvent.GO_TO_TODAY]: states.DatePickerState.CALENDAR_OPEN,
42
+ // Keyboard navigation
43
+ [states.DatePickerEvent.ARROW_UP]: states.DatePickerState.CALENDAR_OPEN,
44
+ [states.DatePickerEvent.ARROW_DOWN]: states.DatePickerState.CALENDAR_OPEN,
45
+ [states.DatePickerEvent.ARROW_LEFT]: states.DatePickerState.CALENDAR_OPEN,
46
+ [states.DatePickerEvent.ARROW_RIGHT]: states.DatePickerState.CALENDAR_OPEN,
47
+ [states.DatePickerEvent.PAGE_UP]: states.DatePickerState.CALENDAR_OPEN,
48
+ [states.DatePickerEvent.PAGE_DOWN]: states.DatePickerState.CALENDAR_OPEN,
49
+ [states.DatePickerEvent.HOME_KEY]: states.DatePickerState.CALENDAR_OPEN,
50
+ [states.DatePickerEvent.END_KEY]: states.DatePickerState.CALENDAR_OPEN,
51
+ // ENTER_KEY is handled by guards - will dispatch DATE_SELECT or RANGE_START_SELECT
52
+ },
53
+ [states.DatePickerState.SELECTING_START]: {
54
+ [states.DatePickerEvent.RANGE_START_SELECT]: states.DatePickerState.SELECTING_END,
55
+ [states.DatePickerEvent.OUTSIDE_CLICK]: states.DatePickerState.IDLE,
56
+ [states.DatePickerEvent.ESCAPE_KEY]: states.DatePickerState.FOCUSED,
57
+ },
58
+ [states.DatePickerState.SELECTING_END]: {
59
+ [states.DatePickerEvent.RANGE_END_SELECT]: states.DatePickerState.DATE_SELECTED,
60
+ [states.DatePickerEvent.RANGE_START_SELECT]: states.DatePickerState.SELECTING_END,
61
+ [states.DatePickerEvent.OUTSIDE_CLICK]: states.DatePickerState.IDLE,
62
+ [states.DatePickerEvent.ESCAPE_KEY]: states.DatePickerState.FOCUSED,
63
+ [states.DatePickerEvent.TAB_KEY]: states.DatePickerState.IDLE,
64
+ // Keyboard navigation
65
+ [states.DatePickerEvent.ARROW_UP]: states.DatePickerState.SELECTING_END,
66
+ [states.DatePickerEvent.ARROW_DOWN]: states.DatePickerState.SELECTING_END,
67
+ [states.DatePickerEvent.ARROW_LEFT]: states.DatePickerState.SELECTING_END,
68
+ [states.DatePickerEvent.ARROW_RIGHT]: states.DatePickerState.SELECTING_END,
69
+ [states.DatePickerEvent.PAGE_UP]: states.DatePickerState.SELECTING_END,
70
+ [states.DatePickerEvent.PAGE_DOWN]: states.DatePickerState.SELECTING_END,
71
+ [states.DatePickerEvent.HOME_KEY]: states.DatePickerState.SELECTING_END,
72
+ [states.DatePickerEvent.END_KEY]: states.DatePickerState.SELECTING_END,
73
+ [states.DatePickerEvent.ENTER_KEY]: states.DatePickerState.DATE_SELECTED,
74
+ [states.DatePickerEvent.PREV_MONTH]: states.DatePickerState.SELECTING_END,
75
+ [states.DatePickerEvent.NEXT_MONTH]: states.DatePickerState.SELECTING_END,
76
+ },
77
+ [states.DatePickerState.DATE_SELECTED]: {
78
+ [states.DatePickerEvent.CALENDAR_CLOSE]: states.DatePickerState.IDLE,
79
+ [states.DatePickerEvent.INPUT_FOCUS]: states.DatePickerState.FOCUSED,
80
+ },
81
+ [states.DatePickerState.DISABLED]: {
82
+ [states.DatePickerEvent.ENABLE]: states.DatePickerState.IDLE,
83
+ },
84
+ [states.DatePickerState.READONLY]: {
85
+ [states.DatePickerEvent.UNSET_READONLY]: states.DatePickerState.IDLE,
86
+ },
87
+ [states.DatePickerState.ERROR]: {
88
+ [states.DatePickerEvent.VALUE_CHANGE]: states.DatePickerState.IDLE,
89
+ [states.DatePickerEvent.CLEAR_ERROR]: states.DatePickerState.IDLE,
90
+ },
91
+ };
92
+ /**
93
+ * Date picker state machine
94
+ * Manages state transitions and context updates for the date picker
95
+ */
96
+ class DatePickerStateMachine {
97
+ /**
98
+ * Create a new date picker state machine
99
+ *
100
+ * @param {Partial<DatePickerContext>} initialContext - Initial context values
101
+ */
102
+ constructor(initialContext = {}) {
103
+ this.listeners = new Set();
104
+ this.currentState = states.DatePickerState.IDLE;
105
+ this.context = this.createInitialContext(initialContext);
106
+ }
107
+ /**
108
+ * Create initial context with defaults
109
+ *
110
+ * @param {Partial<DatePickerContext>} partial - Partial context to merge with defaults
111
+ * @returns Complete context object
112
+ */
113
+ createInitialContext(partial) {
114
+ return {
115
+ mode: 'single',
116
+ value: '',
117
+ startDate: null,
118
+ endDate: null,
119
+ isOpen: false,
120
+ isFocused: false,
121
+ isDisabled: false,
122
+ isReadonly: false,
123
+ isInvalid: false,
124
+ lastFocusedInput: null,
125
+ minDate: null,
126
+ maxDate: null,
127
+ dateFormat: 'm/d/Y',
128
+ allowInput: true,
129
+ closeOnSelect: true,
130
+ viewDate: null,
131
+ focusedDate: null,
132
+ ...partial,
133
+ };
134
+ }
135
+ /**
136
+ * Send an event to the state machine
137
+ * This is the primary method for triggering state transitions
138
+ *
139
+ * @param {string} eventType - The type of event to send
140
+ * @param {any} payload - Optional event payload
141
+ * @returns The updated context
142
+ */
143
+ send(eventType, payload) {
144
+ const event = {
145
+ type: eventType,
146
+ payload,
147
+ timestamp: Date.now(),
148
+ };
149
+ const nextState = this.getNextState(this.currentState, event);
150
+ if (!nextState) {
151
+ // No valid transition, return current context
152
+ return this.context;
153
+ }
154
+ // Check guards
155
+ if (!guards.checkGuard(nextState, event.type, this.context, event)) {
156
+ return this.context;
157
+ }
158
+ // Execute actions to update context
159
+ // Actions are defined for the current state, not the next state
160
+ const contextUpdates = actions.executeAction(this.currentState, event.type, this.context, event);
161
+ const newContext = {
162
+ ...this.context,
163
+ ...contextUpdates,
164
+ };
165
+ // Create a transition object
166
+ const stateTransition = {
167
+ from: this.currentState,
168
+ to: nextState,
169
+ event,
170
+ context: newContext,
171
+ };
172
+ // Update state
173
+ this.currentState;
174
+ this.currentState = nextState;
175
+ this.context = newContext;
176
+ // Execute side effects
177
+ effects.executeEffect(nextState, event.type, this.context, event);
178
+ // Notify listeners
179
+ this.notifyListeners(stateTransition);
180
+ return this.context;
181
+ }
182
+ /**
183
+ * Get the current state
184
+ *
185
+ * @returns The current state
186
+ */
187
+ getState() {
188
+ return this.currentState;
189
+ }
190
+ /**
191
+ * Get the current context
192
+ *
193
+ * @returns A copy of the current context
194
+ */
195
+ getContext() {
196
+ return { ...this.context };
197
+ }
198
+ /**
199
+ * Update context directly (use sparingly)
200
+ *
201
+ * @param {Partial<DatePickerContext>} updates - Partial context updates
202
+ * @returns The updated context
203
+ */
204
+ updateContext(updates) {
205
+ this.context = {
206
+ ...this.context,
207
+ ...updates,
208
+ };
209
+ return this.context;
210
+ }
211
+ /**
212
+ * Subscribe to state transitions
213
+ *
214
+ * @param {TransitionListener} listener - Function to call on each transition
215
+ * @returns Unsubscribe function
216
+ */
217
+ subscribe(listener) {
218
+ this.listeners.add(listener);
219
+ return () => this.listeners.delete(listener);
220
+ }
221
+ /**
222
+ * Check if a transition is valid from the current state
223
+ *
224
+ * @param {string} eventType - The event type to check
225
+ * @returns True if the transition is valid
226
+ */
227
+ canTransition(eventType) {
228
+ const event = { type: eventType, timestamp: Date.now() };
229
+ const nextState = this.getNextState(this.currentState, event);
230
+ if (!nextState) {
231
+ return false;
232
+ }
233
+ return guards.checkGuard(nextState, eventType, this.context, event);
234
+ }
235
+ /**
236
+ * Get the next state for a given event
237
+ *
238
+ * @param {DatePickerState} from - Current state
239
+ * @param {DatePickerEvent} event - The event
240
+ * @returns Next state or null if no transition exists
241
+ */
242
+ getNextState(from, event) {
243
+ const transitions = stateTransitions[from];
244
+ if (!transitions) {
245
+ return null;
246
+ }
247
+ const nextState = transitions[event.type];
248
+ if (!nextState) {
249
+ return null;
250
+ }
251
+ return nextState;
252
+ }
253
+ /**
254
+ * Notify all listeners of a state transition
255
+ *
256
+ * @param {StateTransition} transition - The state transition
257
+ */
258
+ notifyListeners(transition) {
259
+ this.listeners.forEach((listener) => listener(transition));
260
+ }
261
+ /**
262
+ * Reset the state machine to initial state
263
+ *
264
+ * @param {Partial<DatePickerContext>} initialContext - Optional new initial context
265
+ */
266
+ reset(initialContext) {
267
+ this.currentState = states.DatePickerState.IDLE;
268
+ this.context = this.createInitialContext(initialContext || {});
269
+ }
270
+ }
271
+ // Made with Bob
272
+
273
+ exports.DatePickerStateMachine = DatePickerStateMachine;
274
+ //# sourceMappingURL=machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine.js","sources":["../../../state-machine/machine.ts"],"sourcesContent":[null],"names":["DatePickerState","DatePickerEventEnum","checkGuard","executeAction","executeEffect"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Date picker state machine states
9
+ */
10
+ export declare enum DatePickerState {
11
+ /**
12
+ * Initial state - calendar closed, no focus
13
+ */
14
+ IDLE = "idle",
15
+ /**
16
+ * Input has focus, calendar closed
17
+ */
18
+ FOCUSED = "focused",
19
+ /**
20
+ * Calendar dropdown is open
21
+ */
22
+ CALENDAR_OPEN = "calendar_open",
23
+ /**
24
+ * User is selecting the start date (range mode)
25
+ */
26
+ SELECTING_START = "selecting_start",
27
+ /**
28
+ * User is selecting the end date (range mode)
29
+ */
30
+ SELECTING_END = "selecting_end",
31
+ /**
32
+ * Date(s) have been selected
33
+ */
34
+ DATE_SELECTED = "date_selected",
35
+ /**
36
+ * Component is disabled
37
+ */
38
+ DISABLED = "disabled",
39
+ /**
40
+ * Component is read-only
41
+ */
42
+ READONLY = "readonly",
43
+ /**
44
+ * Component is in an error state
45
+ */
46
+ ERROR = "error"
47
+ }
48
+ /**
49
+ * Date picker events
50
+ */
51
+ export declare enum DatePickerEvent {
52
+ INPUT_FOCUS = "INPUT_FOCUS",
53
+ INPUT_BLUR = "INPUT_BLUR",
54
+ INPUT_CHANGE = "INPUT_CHANGE",
55
+ CALENDAR_ICON_CLICK = "CALENDAR_ICON_CLICK",
56
+ CALENDAR_OPEN = "CALENDAR_OPEN",
57
+ CALENDAR_CLOSE = "CALENDAR_CLOSE",
58
+ PREV_MONTH = "PREV_MONTH",
59
+ NEXT_MONTH = "NEXT_MONTH",
60
+ PREV_YEAR = "PREV_YEAR",
61
+ NEXT_YEAR = "NEXT_YEAR",
62
+ GO_TO_TODAY = "GO_TO_TODAY",
63
+ DATE_SELECT = "DATE_SELECT",
64
+ RANGE_START_SELECT = "RANGE_START_SELECT",
65
+ RANGE_END_SELECT = "RANGE_END_SELECT",
66
+ OUTSIDE_CLICK = "OUTSIDE_CLICK",
67
+ ESCAPE_KEY = "ESCAPE_KEY",
68
+ TAB_KEY = "TAB_KEY",
69
+ SHIFT_TAB_KEY = "SHIFT_TAB_KEY",
70
+ ENTER_KEY = "ENTER_KEY",
71
+ ARROW_UP = "ARROW_UP",
72
+ ARROW_DOWN = "ARROW_DOWN",
73
+ ARROW_LEFT = "ARROW_LEFT",
74
+ ARROW_RIGHT = "ARROW_RIGHT",
75
+ PAGE_UP = "PAGE_UP",
76
+ PAGE_DOWN = "PAGE_DOWN",
77
+ HOME_KEY = "HOME_KEY",
78
+ END_KEY = "END_KEY",
79
+ DISABLE = "DISABLE",
80
+ ENABLE = "ENABLE",
81
+ SET_READONLY = "SET_READONLY",
82
+ UNSET_READONLY = "UNSET_READONLY",
83
+ VALUE_CHANGE = "VALUE_CHANGE",
84
+ VALIDATION_ERROR = "VALIDATION_ERROR",
85
+ CLEAR_ERROR = "CLEAR_ERROR",
86
+ SET_MIN_DATE = "SET_MIN_DATE",
87
+ SET_MAX_DATE = "SET_MAX_DATE",
88
+ SET_DATE_FORMAT = "SET_DATE_FORMAT"
89
+ }