@lynx-js/genui 0.0.1-rc.0 → 0.0.2
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/a2ui/README.md +777 -100
- package/a2ui/dist/catalog/Button/{index.js → index.jsx} +12 -8
- package/a2ui/dist/catalog/Button/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Card/{index.js → index.jsx} +5 -4
- package/a2ui/dist/catalog/Card/index.jsx.map +1 -0
- package/a2ui/dist/catalog/CheckBox/{index.js → index.jsx} +11 -6
- package/a2ui/dist/catalog/CheckBox/index.jsx.map +1 -0
- package/a2ui/dist/catalog/ChoicePicker/catalog.json +265 -0
- package/a2ui/dist/catalog/ChoicePicker/index.d.ts +56 -0
- package/a2ui/dist/catalog/ChoicePicker/index.jsx +98 -0
- package/a2ui/dist/catalog/ChoicePicker/index.jsx.map +1 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.d.ts +13 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.js +80 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.js.map +1 -0
- package/a2ui/dist/catalog/Column/{index.js → index.jsx} +13 -14
- package/a2ui/dist/catalog/Column/index.jsx.map +1 -0
- package/a2ui/dist/catalog/DateTimeInput/catalog.json +165 -0
- package/a2ui/dist/catalog/DateTimeInput/index.d.ts +43 -0
- package/a2ui/dist/catalog/DateTimeInput/index.jsx +258 -0
- package/a2ui/dist/catalog/DateTimeInput/index.jsx.map +1 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.d.ts +53 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.js +248 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.js.map +1 -0
- package/a2ui/dist/catalog/Divider/index.jsx +7 -0
- package/a2ui/dist/catalog/Divider/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Icon/catalog.json +173 -2
- package/a2ui/dist/catalog/Icon/index.d.ts +2 -2
- package/a2ui/dist/catalog/Icon/{index.js → index.jsx} +4 -3
- package/a2ui/dist/catalog/Icon/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Image/catalog.json +1 -17
- package/a2ui/dist/catalog/Image/index.d.ts +1 -3
- package/a2ui/dist/catalog/Image/index.jsx +21 -0
- package/a2ui/dist/catalog/Image/index.jsx.map +1 -0
- package/a2ui/dist/catalog/LineChart/{index.js → index.jsx} +53 -16
- package/a2ui/dist/catalog/LineChart/{index.js.map → index.jsx.map} +1 -1
- package/a2ui/dist/catalog/List/{index.js → index.jsx} +9 -6
- package/a2ui/dist/catalog/List/{index.js.map → index.jsx.map} +1 -1
- package/a2ui/dist/catalog/Modal/{index.js → index.jsx} +18 -9
- package/a2ui/dist/catalog/Modal/index.jsx.map +1 -0
- package/a2ui/dist/catalog/PieChart/{index.js → index.jsx} +41 -15
- package/a2ui/dist/catalog/PieChart/{index.js.map → index.jsx.map} +1 -1
- package/a2ui/dist/catalog/RadioGroup/{index.js → index.jsx} +18 -5
- package/a2ui/dist/catalog/RadioGroup/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Row/{index.js → index.jsx} +10 -7
- package/a2ui/dist/catalog/Row/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Slider/{index.js → index.jsx} +22 -7
- package/a2ui/dist/catalog/Slider/{index.js.map → index.jsx.map} +1 -1
- package/a2ui/dist/catalog/Tabs/index.jsx +40 -0
- package/a2ui/dist/catalog/Tabs/index.jsx.map +1 -0
- package/a2ui/dist/catalog/Text/catalog.json +6 -2
- package/a2ui/dist/catalog/Text/index.d.ts +1 -1
- package/a2ui/dist/catalog/Text/index.jsx +16 -0
- package/a2ui/dist/catalog/Text/index.jsx.map +1 -0
- package/a2ui/dist/catalog/TextField/{index.js → index.jsx} +8 -5
- package/a2ui/dist/catalog/TextField/{index.js.map → index.jsx.map} +1 -1
- package/a2ui/dist/catalog/index.d.ts +21 -17
- package/a2ui/dist/catalog/index.js +2067 -20
- package/a2ui/dist/catalog/index.js.map +1 -1
- package/a2ui/dist/index.d.ts +1 -1
- package/a2ui/dist/index.js +1 -1
- package/a2ui/dist/index.js.map +1 -1
- package/a2ui/dist/react/A2UI.d.ts +1 -1
- package/a2ui/dist/react/{A2UI.js → A2UI.jsx} +6 -5
- package/a2ui/dist/react/{A2UI.js.map → A2UI.jsx.map} +1 -1
- package/a2ui/dist/react/{A2UIProvider.js → A2UIProvider.jsx} +2 -3
- package/a2ui/dist/react/{A2UIProvider.js.map → A2UIProvider.jsx.map} +1 -1
- package/a2ui/dist/react/A2UIRenderer.d.ts +1 -0
- package/a2ui/dist/react/{A2UIRenderer.js → A2UIRenderer.jsx} +36 -24
- package/a2ui/dist/react/A2UIRenderer.jsx.map +1 -0
- package/a2ui/dist/react/index.d.ts +3 -3
- package/a2ui/dist/react/index.js +2 -2
- package/a2ui/dist/react/index.js.map +1 -1
- package/a2ui/dist/react/useA2UIContext.d.ts +1 -1
- package/a2ui/dist/react/useA2UIContext.js +1 -1
- package/a2ui/dist/react/useA2UIContext.js.map +1 -1
- package/a2ui/dist/react/useAction.js +2 -1
- package/a2ui/dist/react/useAction.js.map +1 -1
- package/a2ui/dist/react/useChecks.js +7 -2
- package/a2ui/dist/react/useChecks.js.map +1 -1
- package/a2ui/dist/react/useDataBinding.d.ts +1 -1
- package/a2ui/dist/react/useDataBinding.js +24 -48
- package/a2ui/dist/react/useDataBinding.js.map +1 -1
- package/a2ui/dist/store/MessageProcessor.js +7 -19
- package/a2ui/dist/store/MessageProcessor.js.map +1 -1
- package/a2ui/dist/store/SignalStore.d.ts +2 -0
- package/a2ui/dist/store/SignalStore.js +5 -0
- package/a2ui/dist/store/SignalStore.js.map +1 -1
- package/a2ui/dist/store/index.d.ts +3 -1
- package/a2ui/dist/store/index.js +3 -1
- package/a2ui/dist/store/index.js.map +1 -1
- package/a2ui/dist/store/resolveDynamic.d.ts +9 -0
- package/a2ui/dist/store/resolveDynamic.js +88 -0
- package/a2ui/dist/store/resolveDynamic.js.map +1 -0
- package/a2ui/dist/store/resolveFunctionCall.d.ts +2 -4
- package/a2ui/dist/store/resolveFunctionCall.js +24 -82
- package/a2ui/dist/store/resolveFunctionCall.js.map +1 -1
- package/a2ui/dist/store/signalResolution.d.ts +4 -0
- package/a2ui/dist/store/signalResolution.js +25 -0
- package/a2ui/dist/store/signalResolution.js.map +1 -0
- package/a2ui/dist/store/utils.d.ts +7 -0
- package/a2ui/dist/store/utils.js +24 -0
- package/a2ui/dist/store/utils.js.map +1 -0
- package/a2ui/dist/tsconfig.build.tsbuildinfo +1 -1
- package/a2ui/styles/catalog/ChoicePicker.css +157 -0
- package/a2ui/styles/catalog/DateTimeInput.css +375 -0
- package/a2ui/styles/catalog/Icon.css +1 -1
- package/a2ui/styles/catalog/Modal.css +1 -0
- package/a2ui/styles/catalog/Text.css +13 -17
- package/a2ui/styles/theme.css +2 -1
- package/a2ui-catalog-extractor/README.md +23 -15
- package/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js +0 -1
- package/a2ui-catalog-extractor/dist/tsconfig.build.tsbuildinfo +1 -1
- package/a2ui-prompt/README.md +1 -2
- package/a2ui-prompt/dist/index.js +138 -104
- package/cli/bin/cli.js +5 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -1
- package/a2ui/dist/catalog/Button/index.js.map +0 -1
- package/a2ui/dist/catalog/Card/index.js.map +0 -1
- package/a2ui/dist/catalog/CheckBox/index.js.map +0 -1
- package/a2ui/dist/catalog/Column/index.js.map +0 -1
- package/a2ui/dist/catalog/Divider/index.js +0 -8
- package/a2ui/dist/catalog/Divider/index.js.map +0 -1
- package/a2ui/dist/catalog/Icon/index.js.map +0 -1
- package/a2ui/dist/catalog/Image/index.js +0 -30
- package/a2ui/dist/catalog/Image/index.js.map +0 -1
- package/a2ui/dist/catalog/Modal/index.js.map +0 -1
- package/a2ui/dist/catalog/RadioGroup/index.js.map +0 -1
- package/a2ui/dist/catalog/Row/index.js.map +0 -1
- package/a2ui/dist/catalog/Tabs/index.js +0 -32
- package/a2ui/dist/catalog/Tabs/index.js.map +0 -1
- package/a2ui/dist/catalog/Text/index.js +0 -27
- package/a2ui/dist/catalog/Text/index.js.map +0 -1
- package/a2ui/dist/react/A2UIRenderer.js.map +0 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@lynx-js/react/jsx-runtime";
|
|
2
1
|
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
3
2
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
4
3
|
// LICENSE file in the root directory of this source tree.
|
|
5
|
-
import {
|
|
6
|
-
import { NodeRenderer } from '../../react/A2UIRenderer.js';
|
|
4
|
+
import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
|
|
7
5
|
import { useDataBinding } from '../../react/useDataBinding.js';
|
|
8
6
|
import '../../../styles/catalog/Column.css';
|
|
9
7
|
const buildChild = (surface, childId, dataContextPath, childPath, key = childId) => {
|
|
@@ -30,26 +28,27 @@ export function Column(props) {
|
|
|
30
28
|
? children
|
|
31
29
|
: undefined;
|
|
32
30
|
const [columnData, , fullPath] = useDataBinding(template ? { path: template.path } : undefined, surface, dataContextPath, []);
|
|
33
|
-
const childList =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
return (Array.isArray(columnData) ? columnData : []).map((item, index) => {
|
|
31
|
+
const childList = Array.isArray(children)
|
|
32
|
+
? children.map((childId) => buildChild(surface, childId, dataContextPath))
|
|
33
|
+
: (Array.isArray(columnData) ? columnData : []).map((item, index) => {
|
|
38
34
|
const key = item && typeof item === 'object' && 'key' in item
|
|
39
35
|
? String(item['key'])
|
|
40
36
|
: `${index}`;
|
|
41
37
|
const itemPath = `${fullPath}/${index}`;
|
|
42
38
|
return buildChild(surface, template?.componentId ?? '', dataContextPath, itemPath, key);
|
|
43
39
|
});
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
return (<view className={`column alignment-${align} distribution-${justify}`}>
|
|
41
|
+
{childList.map((item) => {
|
|
46
42
|
if (!item)
|
|
47
43
|
return null;
|
|
48
44
|
const weight = item.component.weight;
|
|
49
45
|
if (typeof weight === 'number' && weight > 0) {
|
|
50
|
-
return (
|
|
46
|
+
return (<view key={item.key} className={`column-weighted-item column-weighted-item-${weight}`} style={{ flex: `${weight} ${weight} 0`, minHeight: 0 }}>
|
|
47
|
+
<NodeRenderer component={item.component} surface={surface}/>
|
|
48
|
+
</view>);
|
|
51
49
|
}
|
|
52
|
-
return (
|
|
53
|
-
})
|
|
50
|
+
return (<NodeRenderer key={item.key} component={item.component} surface={surface}/>);
|
|
51
|
+
})}
|
|
52
|
+
</view>);
|
|
54
53
|
}
|
|
55
|
-
//# sourceMappingURL=index.
|
|
54
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/catalog/Column/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"DateTimeInput": {
|
|
3
|
+
"properties": {
|
|
4
|
+
"value": {
|
|
5
|
+
"oneOf": [
|
|
6
|
+
{
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"path": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"required": [
|
|
17
|
+
"path"
|
|
18
|
+
],
|
|
19
|
+
"additionalProperties": false
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"description": "The current date/time value. Typically bound to a data path."
|
|
23
|
+
},
|
|
24
|
+
"label": {
|
|
25
|
+
"oneOf": [
|
|
26
|
+
{
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "object",
|
|
31
|
+
"properties": {
|
|
32
|
+
"path": {
|
|
33
|
+
"type": "string"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"required": [
|
|
37
|
+
"path"
|
|
38
|
+
],
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "object",
|
|
43
|
+
"properties": {
|
|
44
|
+
"call": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
},
|
|
47
|
+
"args": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"additionalProperties": true
|
|
50
|
+
},
|
|
51
|
+
"returnType": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"enum": [
|
|
54
|
+
"string",
|
|
55
|
+
"number",
|
|
56
|
+
"boolean",
|
|
57
|
+
"object",
|
|
58
|
+
"array",
|
|
59
|
+
"any",
|
|
60
|
+
"void"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": [
|
|
65
|
+
"call",
|
|
66
|
+
"args"
|
|
67
|
+
],
|
|
68
|
+
"additionalProperties": false
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"description": "The text label for the input field."
|
|
72
|
+
},
|
|
73
|
+
"enableDate": {
|
|
74
|
+
"type": "boolean",
|
|
75
|
+
"description": "Whether to show the date picker."
|
|
76
|
+
},
|
|
77
|
+
"enableTime": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"description": "Whether to show the time picker."
|
|
80
|
+
},
|
|
81
|
+
"outputFormat": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Format string for the output value. Supports YYYY, MM, DD, HH, and mm."
|
|
84
|
+
},
|
|
85
|
+
"min": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"description": "Minimum allowed date/time value."
|
|
88
|
+
},
|
|
89
|
+
"max": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "Maximum allowed date/time value."
|
|
92
|
+
},
|
|
93
|
+
"checks": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"items": {
|
|
96
|
+
"type": "object",
|
|
97
|
+
"properties": {
|
|
98
|
+
"condition": {
|
|
99
|
+
"oneOf": [
|
|
100
|
+
{
|
|
101
|
+
"type": "boolean"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"type": "object",
|
|
105
|
+
"properties": {
|
|
106
|
+
"path": {
|
|
107
|
+
"type": "string"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"required": [
|
|
111
|
+
"path"
|
|
112
|
+
],
|
|
113
|
+
"additionalProperties": false
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"type": "object",
|
|
117
|
+
"properties": {
|
|
118
|
+
"call": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
},
|
|
121
|
+
"args": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"additionalProperties": true
|
|
124
|
+
},
|
|
125
|
+
"returnType": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"enum": [
|
|
128
|
+
"string",
|
|
129
|
+
"number",
|
|
130
|
+
"boolean",
|
|
131
|
+
"object",
|
|
132
|
+
"array",
|
|
133
|
+
"any",
|
|
134
|
+
"void"
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"required": [
|
|
139
|
+
"call",
|
|
140
|
+
"args"
|
|
141
|
+
],
|
|
142
|
+
"additionalProperties": false
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"description": "The condition that indicates whether the check passes."
|
|
146
|
+
},
|
|
147
|
+
"message": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"description": "The error message to display if the check fails."
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"required": [
|
|
153
|
+
"condition",
|
|
154
|
+
"message"
|
|
155
|
+
],
|
|
156
|
+
"additionalProperties": false
|
|
157
|
+
},
|
|
158
|
+
"description": "A list of checks to perform."
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"required": [
|
|
162
|
+
"value"
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { GenericComponentProps } from '../../store/types.js';
|
|
2
|
+
import '../../../styles/catalog/DateTimeInput.css';
|
|
3
|
+
/**
|
|
4
|
+
* @a2uiCatalog DateTimeInput
|
|
5
|
+
*/
|
|
6
|
+
export interface DateTimeInputProps extends GenericComponentProps {
|
|
7
|
+
/** The current date/time value. Typically bound to a data path. */
|
|
8
|
+
value: string | {
|
|
9
|
+
path: string;
|
|
10
|
+
};
|
|
11
|
+
/** The text label for the input field. */
|
|
12
|
+
label?: string | {
|
|
13
|
+
path: string;
|
|
14
|
+
} | {
|
|
15
|
+
call: string;
|
|
16
|
+
args: Record<string, unknown>;
|
|
17
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
18
|
+
};
|
|
19
|
+
/** Whether to show the date picker. */
|
|
20
|
+
enableDate?: boolean;
|
|
21
|
+
/** Whether to show the time picker. */
|
|
22
|
+
enableTime?: boolean;
|
|
23
|
+
/** Format string for the output value. Supports YYYY, MM, DD, HH, and mm. */
|
|
24
|
+
outputFormat?: string;
|
|
25
|
+
/** Minimum allowed date/time value. */
|
|
26
|
+
min?: string;
|
|
27
|
+
/** Maximum allowed date/time value. */
|
|
28
|
+
max?: string;
|
|
29
|
+
/** A list of checks to perform. */
|
|
30
|
+
checks?: Array<{
|
|
31
|
+
/** The condition that indicates whether the check passes. */
|
|
32
|
+
condition: boolean | {
|
|
33
|
+
path: string;
|
|
34
|
+
} | {
|
|
35
|
+
call: string;
|
|
36
|
+
args: Record<string, unknown>;
|
|
37
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
38
|
+
};
|
|
39
|
+
/** The error message to display if the check fails. */
|
|
40
|
+
message: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
export declare function DateTimeInput(props: DateTimeInputProps): import('@lynx-js/react').ReactNode;
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
import { DialogBackdrop, DialogContent, DialogRoot, DialogView, } from '@lynx-js/lynx-ui';
|
|
5
|
+
import { useEffect, useState } from '@lynx-js/react';
|
|
6
|
+
import { addMonths, buildDateTimeMonthPage, dateTimePartsToDate, formatDateTimeInputValue, getDateTimeDialogTitle, getDateTimeInputPlaceholder, getDefaultDateTimeParts, getWeekdayLabels, incrementDateTimePart, isDateTimeAfterMax, isDateTimeBeforeMin, normalizeDateTimeInputLabel, normalizeDateTimeInputMode, normalizeDateTimeInputValue, startOfMonth, withDate, } from './utils.js';
|
|
7
|
+
import { useChecks } from '../../react/useChecks.js';
|
|
8
|
+
import '../../../styles/catalog/DateTimeInput.css';
|
|
9
|
+
const MONTH_LABELS = [
|
|
10
|
+
'January',
|
|
11
|
+
'February',
|
|
12
|
+
'March',
|
|
13
|
+
'April',
|
|
14
|
+
'May',
|
|
15
|
+
'June',
|
|
16
|
+
'July',
|
|
17
|
+
'August',
|
|
18
|
+
'September',
|
|
19
|
+
'October',
|
|
20
|
+
'November',
|
|
21
|
+
'December',
|
|
22
|
+
];
|
|
23
|
+
function formatMonthCaption(month) {
|
|
24
|
+
return `${MONTH_LABELS[month.getMonth()]} ${month.getFullYear()}`;
|
|
25
|
+
}
|
|
26
|
+
function joinClassNames(values) {
|
|
27
|
+
return values.filter(Boolean).join(' ');
|
|
28
|
+
}
|
|
29
|
+
function getPartsKey(parts) {
|
|
30
|
+
return parts
|
|
31
|
+
? formatDateTimeInputValue(parts, 'YYYY-MM-DD HH:mm', { enableDate: true, enableTime: true })
|
|
32
|
+
: '';
|
|
33
|
+
}
|
|
34
|
+
export function DateTimeInput(props) {
|
|
35
|
+
const { dataContextPath, id, label, max, min, outputFormat, setValue, surface, } = props;
|
|
36
|
+
const mode = normalizeDateTimeInputMode(props.enableDate, props.enableTime);
|
|
37
|
+
const valueParts = normalizeDateTimeInputValue(props.value);
|
|
38
|
+
const minParts = normalizeDateTimeInputValue(min);
|
|
39
|
+
const maxParts = normalizeDateTimeInputValue(max);
|
|
40
|
+
const valueKey = getPartsKey(valueParts);
|
|
41
|
+
const initialParts = valueParts ?? getDefaultDateTimeParts();
|
|
42
|
+
const [open, setOpen] = useState(false);
|
|
43
|
+
const [draftParts, setDraftParts] = useState(initialParts);
|
|
44
|
+
const [visibleMonth, setVisibleMonth] = useState(startOfMonth(dateTimePartsToDate(initialParts)));
|
|
45
|
+
const checks = props.checks;
|
|
46
|
+
const { ok, firstFailureMessage } = useChecks({
|
|
47
|
+
checks,
|
|
48
|
+
componentId: id ?? '',
|
|
49
|
+
surface,
|
|
50
|
+
dataContextPath,
|
|
51
|
+
});
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (open)
|
|
54
|
+
return undefined;
|
|
55
|
+
const nextParts = valueParts ?? getDefaultDateTimeParts();
|
|
56
|
+
setDraftParts(nextParts);
|
|
57
|
+
setVisibleMonth(startOfMonth(dateTimePartsToDate(nextParts)));
|
|
58
|
+
return undefined;
|
|
59
|
+
}, [open, valueKey]);
|
|
60
|
+
const minDate = minParts ? dateTimePartsToDate(minParts) : null;
|
|
61
|
+
const maxDate = maxParts ? dateTimePartsToDate(maxParts) : null;
|
|
62
|
+
const draftDate = dateTimePartsToDate(draftParts);
|
|
63
|
+
const monthPage = buildDateTimeMonthPage({
|
|
64
|
+
month: visibleMonth,
|
|
65
|
+
selectedDate: draftDate,
|
|
66
|
+
today: new Date(),
|
|
67
|
+
minDate,
|
|
68
|
+
maxDate,
|
|
69
|
+
});
|
|
70
|
+
const weekdayLabels = getWeekdayLabels();
|
|
71
|
+
const draftOutOfRange = isDateTimeBeforeMin(draftParts, minParts)
|
|
72
|
+
|| isDateTimeAfterMax(draftParts, maxParts);
|
|
73
|
+
const currentOutOfRange = valueParts
|
|
74
|
+
? isDateTimeBeforeMin(valueParts, minParts)
|
|
75
|
+
|| isDateTimeAfterMax(valueParts, maxParts)
|
|
76
|
+
: false;
|
|
77
|
+
const invalid = !ok || currentOutOfRange;
|
|
78
|
+
const labelText = normalizeDateTimeInputLabel(label);
|
|
79
|
+
const displayValue = valueParts
|
|
80
|
+
? formatDateTimeInputValue(valueParts, outputFormat, mode)
|
|
81
|
+
: getDateTimeInputPlaceholder(mode);
|
|
82
|
+
const handleOpen = () => {
|
|
83
|
+
const nextParts = valueParts ?? draftParts ?? getDefaultDateTimeParts();
|
|
84
|
+
setDraftParts(nextParts);
|
|
85
|
+
setVisibleMonth(startOfMonth(dateTimePartsToDate(nextParts)));
|
|
86
|
+
setOpen(true);
|
|
87
|
+
};
|
|
88
|
+
const handleCancel = () => {
|
|
89
|
+
setOpen(false);
|
|
90
|
+
};
|
|
91
|
+
const handleConfirm = () => {
|
|
92
|
+
if (draftOutOfRange)
|
|
93
|
+
return;
|
|
94
|
+
setValue?.('value', formatDateTimeInputValue(draftParts, outputFormat, mode));
|
|
95
|
+
setOpen(false);
|
|
96
|
+
};
|
|
97
|
+
const handlePreviousMonth = () => {
|
|
98
|
+
setVisibleMonth(addMonths(visibleMonth, -1));
|
|
99
|
+
};
|
|
100
|
+
const handleNextMonth = () => {
|
|
101
|
+
setVisibleMonth(addMonths(visibleMonth, 1));
|
|
102
|
+
};
|
|
103
|
+
const handleTimeStep = (part, delta) => {
|
|
104
|
+
setDraftParts((current) => incrementDateTimePart(current, part, delta));
|
|
105
|
+
};
|
|
106
|
+
const rootClassName = joinClassNames([
|
|
107
|
+
'datetime-input',
|
|
108
|
+
invalid && 'datetime-input-invalid',
|
|
109
|
+
]);
|
|
110
|
+
return (<view key={id} className={rootClassName}>
|
|
111
|
+
{labelText
|
|
112
|
+
? <text className='datetime-input-label'>{labelText}</text>
|
|
113
|
+
: null}
|
|
114
|
+
<view className={joinClassNames([
|
|
115
|
+
'datetime-input-control',
|
|
116
|
+
!valueParts && 'datetime-input-control-placeholder',
|
|
117
|
+
])} bindtap={handleOpen} event-through={false}>
|
|
118
|
+
<text className='datetime-input-value'>{displayValue}</text>
|
|
119
|
+
<text className='datetime-input-icon'>calendar_today</text>
|
|
120
|
+
</view>
|
|
121
|
+
{invalid && firstFailureMessage
|
|
122
|
+
? <text className='datetime-input-error'>{firstFailureMessage}</text>
|
|
123
|
+
: null}
|
|
124
|
+
{currentOutOfRange
|
|
125
|
+
? <text className='datetime-input-error'>Date is out of range</text>
|
|
126
|
+
: null}
|
|
127
|
+
|
|
128
|
+
<DialogRoot show={open} onShowChange={(nextOpen) => {
|
|
129
|
+
setOpen(nextOpen);
|
|
130
|
+
}}>
|
|
131
|
+
<DialogView className='datetime-dialog-view' overlayLevel={4}>
|
|
132
|
+
<DialogBackdrop className='datetime-dialog-backdrop' clickToClose={true} transition={true}/>
|
|
133
|
+
<DialogContent className='datetime-dialog-content' transition={true}>
|
|
134
|
+
<view className='datetime-dialog-header'>
|
|
135
|
+
<text className='datetime-dialog-title'>
|
|
136
|
+
{getDateTimeDialogTitle(labelText, mode)}
|
|
137
|
+
</text>
|
|
138
|
+
<view className='datetime-dialog-close' bindtap={handleCancel} event-through={false}>
|
|
139
|
+
<text className='datetime-dialog-close-icon'>close</text>
|
|
140
|
+
</view>
|
|
141
|
+
</view>
|
|
142
|
+
|
|
143
|
+
{mode.enableDate
|
|
144
|
+
? (<view className='datetime-calendar'>
|
|
145
|
+
<view className='datetime-calendar-header'>
|
|
146
|
+
<view className='datetime-calendar-nav' bindtap={handlePreviousMonth} event-through={false}>
|
|
147
|
+
<text className='datetime-calendar-nav-icon'>
|
|
148
|
+
chevron_left
|
|
149
|
+
</text>
|
|
150
|
+
</view>
|
|
151
|
+
<text className='datetime-calendar-caption'>
|
|
152
|
+
{formatMonthCaption(visibleMonth)}
|
|
153
|
+
</text>
|
|
154
|
+
<view className='datetime-calendar-nav' bindtap={handleNextMonth} event-through={false}>
|
|
155
|
+
<text className='datetime-calendar-nav-icon'>
|
|
156
|
+
chevron_right
|
|
157
|
+
</text>
|
|
158
|
+
</view>
|
|
159
|
+
</view>
|
|
160
|
+
|
|
161
|
+
<view className='datetime-weekdays'>
|
|
162
|
+
{weekdayLabels.map((weekday, weekdayIndex) => (<view key={weekdayIndex} className='datetime-weekday'>
|
|
163
|
+
<text className='datetime-weekday-text'>
|
|
164
|
+
{weekday}
|
|
165
|
+
</text>
|
|
166
|
+
</view>))}
|
|
167
|
+
</view>
|
|
168
|
+
|
|
169
|
+
<view className='datetime-month'>
|
|
170
|
+
{monthPage.days.map((day, dayIndex) => (<view key={dayIndex} className={joinClassNames([
|
|
171
|
+
'datetime-day',
|
|
172
|
+
day.outside && 'datetime-day-outside',
|
|
173
|
+
day.selected && 'datetime-day-selected',
|
|
174
|
+
day.today && 'datetime-day-today',
|
|
175
|
+
day.disabled && 'datetime-day-disabled',
|
|
176
|
+
])} bindtap={() => {
|
|
177
|
+
if (day.disabled)
|
|
178
|
+
return;
|
|
179
|
+
setDraftParts((current) => withDate(current, day.date));
|
|
180
|
+
if (day.outside) {
|
|
181
|
+
setVisibleMonth(startOfMonth(day.date));
|
|
182
|
+
}
|
|
183
|
+
}} event-through={false}>
|
|
184
|
+
<text className='datetime-day-text'>
|
|
185
|
+
{String(day.day)}
|
|
186
|
+
</text>
|
|
187
|
+
</view>))}
|
|
188
|
+
</view>
|
|
189
|
+
</view>)
|
|
190
|
+
: null}
|
|
191
|
+
|
|
192
|
+
{mode.enableTime
|
|
193
|
+
? (<view className='datetime-time'>
|
|
194
|
+
<text className='datetime-time-label'>Time</text>
|
|
195
|
+
<view className='datetime-time-fields'>
|
|
196
|
+
<view className='datetime-time-field'>
|
|
197
|
+
<view className='datetime-time-stepper' bindtap={() => handleTimeStep('hour', 1)} event-through={false}>
|
|
198
|
+
<text className='datetime-time-stepper-icon'>
|
|
199
|
+
expand_less
|
|
200
|
+
</text>
|
|
201
|
+
</view>
|
|
202
|
+
<text className='datetime-time-value'>
|
|
203
|
+
{String(draftParts.hour).padStart(2, '0')}
|
|
204
|
+
</text>
|
|
205
|
+
<view className='datetime-time-stepper' bindtap={() => handleTimeStep('hour', -1)} event-through={false}>
|
|
206
|
+
<text className='datetime-time-stepper-icon'>
|
|
207
|
+
expand_more
|
|
208
|
+
</text>
|
|
209
|
+
</view>
|
|
210
|
+
</view>
|
|
211
|
+
<text className='datetime-time-separator'>:</text>
|
|
212
|
+
<view className='datetime-time-field'>
|
|
213
|
+
<view className='datetime-time-stepper' bindtap={() => handleTimeStep('minute', 1)} event-through={false}>
|
|
214
|
+
<text className='datetime-time-stepper-icon'>
|
|
215
|
+
expand_less
|
|
216
|
+
</text>
|
|
217
|
+
</view>
|
|
218
|
+
<text className='datetime-time-value'>
|
|
219
|
+
{String(draftParts.minute).padStart(2, '0')}
|
|
220
|
+
</text>
|
|
221
|
+
<view className='datetime-time-stepper' bindtap={() => handleTimeStep('minute', -1)} event-through={false}>
|
|
222
|
+
<text className='datetime-time-stepper-icon'>
|
|
223
|
+
expand_more
|
|
224
|
+
</text>
|
|
225
|
+
</view>
|
|
226
|
+
</view>
|
|
227
|
+
</view>
|
|
228
|
+
</view>)
|
|
229
|
+
: null}
|
|
230
|
+
|
|
231
|
+
{draftOutOfRange
|
|
232
|
+
? (<text className='datetime-dialog-error'>
|
|
233
|
+
Date is out of range
|
|
234
|
+
</text>)
|
|
235
|
+
: null}
|
|
236
|
+
|
|
237
|
+
<view className='datetime-dialog-actions'>
|
|
238
|
+
<view className='datetime-dialog-button datetime-dialog-button-secondary' bindtap={handleCancel} event-through={false}>
|
|
239
|
+
<text className='datetime-dialog-button-text-secondary'>
|
|
240
|
+
Cancel
|
|
241
|
+
</text>
|
|
242
|
+
</view>
|
|
243
|
+
<view className={joinClassNames([
|
|
244
|
+
'datetime-dialog-button',
|
|
245
|
+
'datetime-dialog-button-primary',
|
|
246
|
+
draftOutOfRange && 'datetime-dialog-button-disabled',
|
|
247
|
+
])} bindtap={handleConfirm} event-through={false}>
|
|
248
|
+
<text className='datetime-dialog-button-text-primary'>
|
|
249
|
+
Done
|
|
250
|
+
</text>
|
|
251
|
+
</view>
|
|
252
|
+
</view>
|
|
253
|
+
</DialogContent>
|
|
254
|
+
</DialogView>
|
|
255
|
+
</DialogRoot>
|
|
256
|
+
</view>);
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/catalog/DateTimeInput/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface DateTimeParts {
|
|
2
|
+
year: number;
|
|
3
|
+
month: number;
|
|
4
|
+
day: number;
|
|
5
|
+
hour: number;
|
|
6
|
+
minute: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DateTimeInputMode {
|
|
9
|
+
enableDate: boolean;
|
|
10
|
+
enableTime: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface DateTimeDayInfo {
|
|
13
|
+
date: Date;
|
|
14
|
+
dateKey: string;
|
|
15
|
+
day: number;
|
|
16
|
+
outside: boolean;
|
|
17
|
+
selected: boolean;
|
|
18
|
+
today: boolean;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface DateTimeMonthPage {
|
|
22
|
+
month: Date;
|
|
23
|
+
monthKey: string;
|
|
24
|
+
days: DateTimeDayInfo[];
|
|
25
|
+
}
|
|
26
|
+
export interface BuildDateTimeMonthPageOptions {
|
|
27
|
+
month: Date;
|
|
28
|
+
selectedDate: Date | null;
|
|
29
|
+
today: Date;
|
|
30
|
+
minDate: Date | null;
|
|
31
|
+
maxDate: Date | null;
|
|
32
|
+
weekStartsOn?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function normalizeDateTimeInputValue(value: unknown): DateTimeParts | null;
|
|
35
|
+
export declare function getDefaultDateTimeParts(now?: Date): DateTimeParts;
|
|
36
|
+
export declare function dateTimePartsToDate(parts: DateTimeParts): Date;
|
|
37
|
+
export declare function dateTimePartsToDateKey(parts: DateTimeParts): string;
|
|
38
|
+
export declare function formatDateKey(date: Date): string;
|
|
39
|
+
export declare function formatMonthKey(date: Date): string;
|
|
40
|
+
export declare function startOfMonth(date: Date): Date;
|
|
41
|
+
export declare function addMonths(date: Date, offset: number): Date;
|
|
42
|
+
export declare function getWeekdayLabels(weekStartsOn?: number, labels?: string[]): string[];
|
|
43
|
+
export declare function compareDateTimeParts(a: DateTimeParts, b: DateTimeParts): number;
|
|
44
|
+
export declare function isDateTimeBeforeMin(value: DateTimeParts, min: DateTimeParts | null): boolean;
|
|
45
|
+
export declare function isDateTimeAfterMax(value: DateTimeParts, max: DateTimeParts | null): boolean;
|
|
46
|
+
export declare function buildDateTimeMonthPage({ month, selectedDate, today, minDate, maxDate, weekStartsOn, }: BuildDateTimeMonthPageOptions): DateTimeMonthPage;
|
|
47
|
+
export declare function normalizeDateTimeInputMode(enableDate: unknown, enableTime: unknown): DateTimeInputMode;
|
|
48
|
+
export declare function normalizeDateTimeInputLabel(value: unknown): string;
|
|
49
|
+
export declare function formatDateTimeInputValue(parts: DateTimeParts, outputFormat: unknown, mode: DateTimeInputMode): string;
|
|
50
|
+
export declare function getDateTimeInputPlaceholder(mode: DateTimeInputMode): string;
|
|
51
|
+
export declare function getDateTimeDialogTitle(label: string, mode: DateTimeInputMode): string;
|
|
52
|
+
export declare function withDate(parts: DateTimeParts, date: Date): DateTimeParts;
|
|
53
|
+
export declare function incrementDateTimePart(parts: DateTimeParts, part: 'hour' | 'minute', delta: number): DateTimeParts;
|