@lynx-js/genui 0.0.1-rc.0 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/a2ui/README.md +777 -100
- 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.js +66 -0
- package/a2ui/dist/catalog/ChoicePicker/index.js.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 +3 -7
- package/a2ui/dist/catalog/Column/index.js.map +1 -1
- 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.js +147 -0
- package/a2ui/dist/catalog/DateTimeInput/index.js.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/Icon/catalog.json +173 -2
- package/a2ui/dist/catalog/Icon/index.d.ts +2 -2
- package/a2ui/dist/catalog/Icon/index.js.map +1 -1
- 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.js +3 -11
- package/a2ui/dist/catalog/Image/index.js.map +1 -1
- package/a2ui/dist/catalog/LineChart/index.js +3 -3
- package/a2ui/dist/catalog/LineChart/index.js.map +1 -1
- package/a2ui/dist/catalog/Modal/index.js +1 -1
- package/a2ui/dist/catalog/Modal/index.js.map +1 -1
- package/a2ui/dist/catalog/index.d.ts +4 -0
- package/a2ui/dist/catalog/index.js +2046 -3
- 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/A2UIRenderer.d.ts +1 -0
- package/a2ui/dist/react/A2UIRenderer.js +8 -6
- package/a2ui/dist/react/A2UIRenderer.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/Text.css +11 -11
- 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 +65 -31
- package/cli/bin/cli.js +5 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ChoicePicker": {
|
|
3
|
+
"properties": {
|
|
4
|
+
"label": {
|
|
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
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"call": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"args": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": true
|
|
30
|
+
},
|
|
31
|
+
"returnType": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": [
|
|
34
|
+
"string",
|
|
35
|
+
"number",
|
|
36
|
+
"boolean",
|
|
37
|
+
"object",
|
|
38
|
+
"array",
|
|
39
|
+
"any",
|
|
40
|
+
"void"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"required": [
|
|
45
|
+
"call",
|
|
46
|
+
"args"
|
|
47
|
+
],
|
|
48
|
+
"additionalProperties": false
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"description": "The label for the group of options."
|
|
52
|
+
},
|
|
53
|
+
"variant": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"enum": [
|
|
56
|
+
"multipleSelection",
|
|
57
|
+
"mutuallyExclusive"
|
|
58
|
+
],
|
|
59
|
+
"description": "A hint for how the choice picker should be displayed and behave."
|
|
60
|
+
},
|
|
61
|
+
"options": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"properties": {
|
|
66
|
+
"label": {
|
|
67
|
+
"oneOf": [
|
|
68
|
+
{
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "object",
|
|
73
|
+
"properties": {
|
|
74
|
+
"path": {
|
|
75
|
+
"type": "string"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"required": [
|
|
79
|
+
"path"
|
|
80
|
+
],
|
|
81
|
+
"additionalProperties": false
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "object",
|
|
85
|
+
"properties": {
|
|
86
|
+
"call": {
|
|
87
|
+
"type": "string"
|
|
88
|
+
},
|
|
89
|
+
"args": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": true
|
|
92
|
+
},
|
|
93
|
+
"returnType": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"enum": [
|
|
96
|
+
"string",
|
|
97
|
+
"number",
|
|
98
|
+
"boolean",
|
|
99
|
+
"object",
|
|
100
|
+
"array",
|
|
101
|
+
"any",
|
|
102
|
+
"void"
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"required": [
|
|
107
|
+
"call",
|
|
108
|
+
"args"
|
|
109
|
+
],
|
|
110
|
+
"additionalProperties": false
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"description": "The text to display for this option."
|
|
114
|
+
},
|
|
115
|
+
"value": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"description": "The stable value associated with this option."
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"required": [
|
|
121
|
+
"label",
|
|
122
|
+
"value"
|
|
123
|
+
],
|
|
124
|
+
"additionalProperties": false
|
|
125
|
+
},
|
|
126
|
+
"description": "The list of available options to choose from."
|
|
127
|
+
},
|
|
128
|
+
"value": {
|
|
129
|
+
"oneOf": [
|
|
130
|
+
{
|
|
131
|
+
"type": "array",
|
|
132
|
+
"items": {
|
|
133
|
+
"type": "string"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"type": "object",
|
|
138
|
+
"properties": {
|
|
139
|
+
"path": {
|
|
140
|
+
"type": "string"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"required": [
|
|
144
|
+
"path"
|
|
145
|
+
],
|
|
146
|
+
"additionalProperties": false
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"type": "object",
|
|
150
|
+
"properties": {
|
|
151
|
+
"call": {
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"args": {
|
|
155
|
+
"type": "object",
|
|
156
|
+
"additionalProperties": true
|
|
157
|
+
},
|
|
158
|
+
"returnType": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"enum": [
|
|
161
|
+
"string",
|
|
162
|
+
"number",
|
|
163
|
+
"boolean",
|
|
164
|
+
"object",
|
|
165
|
+
"array",
|
|
166
|
+
"any",
|
|
167
|
+
"void"
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"required": [
|
|
172
|
+
"call",
|
|
173
|
+
"args"
|
|
174
|
+
],
|
|
175
|
+
"additionalProperties": false
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
"description": "The list of currently selected values."
|
|
179
|
+
},
|
|
180
|
+
"displayStyle": {
|
|
181
|
+
"type": "string",
|
|
182
|
+
"enum": [
|
|
183
|
+
"checkbox",
|
|
184
|
+
"chips"
|
|
185
|
+
],
|
|
186
|
+
"description": "The display style of the component."
|
|
187
|
+
},
|
|
188
|
+
"filterable": {
|
|
189
|
+
"type": "boolean",
|
|
190
|
+
"description": "If true, displays a search input to filter the options."
|
|
191
|
+
},
|
|
192
|
+
"checks": {
|
|
193
|
+
"type": "array",
|
|
194
|
+
"items": {
|
|
195
|
+
"type": "object",
|
|
196
|
+
"properties": {
|
|
197
|
+
"condition": {
|
|
198
|
+
"oneOf": [
|
|
199
|
+
{
|
|
200
|
+
"type": "boolean"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"type": "object",
|
|
204
|
+
"properties": {
|
|
205
|
+
"path": {
|
|
206
|
+
"type": "string"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"required": [
|
|
210
|
+
"path"
|
|
211
|
+
],
|
|
212
|
+
"additionalProperties": false
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"type": "object",
|
|
216
|
+
"properties": {
|
|
217
|
+
"call": {
|
|
218
|
+
"type": "string"
|
|
219
|
+
},
|
|
220
|
+
"args": {
|
|
221
|
+
"type": "object",
|
|
222
|
+
"additionalProperties": true
|
|
223
|
+
},
|
|
224
|
+
"returnType": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"enum": [
|
|
227
|
+
"string",
|
|
228
|
+
"number",
|
|
229
|
+
"boolean",
|
|
230
|
+
"object",
|
|
231
|
+
"array",
|
|
232
|
+
"any",
|
|
233
|
+
"void"
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"required": [
|
|
238
|
+
"call",
|
|
239
|
+
"args"
|
|
240
|
+
],
|
|
241
|
+
"additionalProperties": false
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
"description": "The condition that indicates whether the check passes."
|
|
245
|
+
},
|
|
246
|
+
"message": {
|
|
247
|
+
"type": "string",
|
|
248
|
+
"description": "The error message to display if the check fails."
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
"required": [
|
|
252
|
+
"condition",
|
|
253
|
+
"message"
|
|
254
|
+
],
|
|
255
|
+
"additionalProperties": false
|
|
256
|
+
},
|
|
257
|
+
"description": "A list of checks to perform."
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"required": [
|
|
261
|
+
"options",
|
|
262
|
+
"value"
|
|
263
|
+
]
|
|
264
|
+
}
|
|
265
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { GenericComponentProps } from '../../store/types.js';
|
|
2
|
+
import '../../../styles/catalog/ChoicePicker.css';
|
|
3
|
+
/**
|
|
4
|
+
* @a2uiCatalog ChoicePicker
|
|
5
|
+
*/
|
|
6
|
+
export interface ChoicePickerProps extends GenericComponentProps {
|
|
7
|
+
/** The label for the group of options. */
|
|
8
|
+
label?: string | {
|
|
9
|
+
path: string;
|
|
10
|
+
} | {
|
|
11
|
+
call: string;
|
|
12
|
+
args: Record<string, unknown>;
|
|
13
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
14
|
+
};
|
|
15
|
+
/** A hint for how the choice picker should be displayed and behave. */
|
|
16
|
+
variant?: 'multipleSelection' | 'mutuallyExclusive';
|
|
17
|
+
/** The list of available options to choose from. */
|
|
18
|
+
options: Array<{
|
|
19
|
+
/** The text to display for this option. */
|
|
20
|
+
label: string | {
|
|
21
|
+
path: string;
|
|
22
|
+
} | {
|
|
23
|
+
call: string;
|
|
24
|
+
args: Record<string, unknown>;
|
|
25
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
26
|
+
};
|
|
27
|
+
/** The stable value associated with this option. */
|
|
28
|
+
value: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** The list of currently selected values. */
|
|
31
|
+
value: string[] | {
|
|
32
|
+
path: string;
|
|
33
|
+
} | {
|
|
34
|
+
call: string;
|
|
35
|
+
args: Record<string, unknown>;
|
|
36
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
37
|
+
};
|
|
38
|
+
/** The display style of the component. */
|
|
39
|
+
displayStyle?: 'checkbox' | 'chips';
|
|
40
|
+
/** If true, displays a search input to filter the options. */
|
|
41
|
+
filterable?: boolean;
|
|
42
|
+
/** A list of checks to perform. */
|
|
43
|
+
checks?: Array<{
|
|
44
|
+
/** The condition that indicates whether the check passes. */
|
|
45
|
+
condition: boolean | {
|
|
46
|
+
path: string;
|
|
47
|
+
} | {
|
|
48
|
+
call: string;
|
|
49
|
+
args: Record<string, unknown>;
|
|
50
|
+
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
|
|
51
|
+
};
|
|
52
|
+
/** The error message to display if the check fails. */
|
|
53
|
+
message: string;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
export declare function ChoicePicker(props: ChoicePickerProps): import('@lynx-js/react').ReactNode;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@lynx-js/react/jsx-runtime";
|
|
2
|
+
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
3
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
4
|
+
// LICENSE file in the root directory of this source tree.
|
|
5
|
+
import { Checkbox, CheckboxIndicator, Input, Radio, RadioGroupRoot, RadioIndicator, } from '@lynx-js/lynx-ui';
|
|
6
|
+
import { useState } from '@lynx-js/react';
|
|
7
|
+
import { filterChoicePickerOptions, normalizeChoicePickerDisplayStyle, normalizeChoicePickerLabel, normalizeChoicePickerOptions, normalizeChoicePickerValue, normalizeChoicePickerVariant, toggleChoicePickerValue, } from './utils.js';
|
|
8
|
+
import { useChecks } from '../../react/useChecks.js';
|
|
9
|
+
import '../../../styles/catalog/ChoicePicker.css';
|
|
10
|
+
const HitSlop = {
|
|
11
|
+
'hit-slop': {
|
|
12
|
+
top: '8px',
|
|
13
|
+
left: '8px',
|
|
14
|
+
right: '8px',
|
|
15
|
+
bottom: '8px',
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export function ChoicePicker(props) {
|
|
19
|
+
const { dataContextPath, filterable = false, id, label, setValue, surface, } = props;
|
|
20
|
+
const [query, setQuery] = useState('');
|
|
21
|
+
const options = normalizeChoicePickerOptions(props.options);
|
|
22
|
+
const variant = normalizeChoicePickerVariant(props.variant);
|
|
23
|
+
const displayStyle = normalizeChoicePickerDisplayStyle(props.displayStyle);
|
|
24
|
+
const selectedValues = normalizeChoicePickerValue(props.value, options);
|
|
25
|
+
const selectedValue = selectedValues[0] ?? '';
|
|
26
|
+
const visibleOptions = filterChoicePickerOptions(options, query);
|
|
27
|
+
const checks = props.checks;
|
|
28
|
+
const { ok, firstFailureMessage } = useChecks({
|
|
29
|
+
checks,
|
|
30
|
+
componentId: id ?? '',
|
|
31
|
+
surface,
|
|
32
|
+
dataContextPath,
|
|
33
|
+
});
|
|
34
|
+
const handleExclusiveChange = (nextValue) => {
|
|
35
|
+
if (!nextValue || selectedValue === nextValue)
|
|
36
|
+
return;
|
|
37
|
+
setValue?.('value', [nextValue]);
|
|
38
|
+
};
|
|
39
|
+
const handleMultipleChange = (optionValue) => {
|
|
40
|
+
setValue?.('value', toggleChoicePickerValue(selectedValues, optionValue, variant));
|
|
41
|
+
};
|
|
42
|
+
const rootClassName = [
|
|
43
|
+
'choice-picker',
|
|
44
|
+
`choice-picker-${displayStyle}`,
|
|
45
|
+
`choice-picker-${variant}`,
|
|
46
|
+
ok ? '' : 'choice-picker-invalid',
|
|
47
|
+
].filter(Boolean).join(' ');
|
|
48
|
+
const labelText = normalizeChoicePickerLabel(label);
|
|
49
|
+
return (_jsxs("view", { className: rootClassName, children: [labelText
|
|
50
|
+
? _jsx("text", { className: 'choice-picker-label', children: labelText })
|
|
51
|
+
: null, filterable
|
|
52
|
+
? (_jsx(Input, { className: 'choice-picker-filter', value: query, type: 'text', confirmType: 'done', onInput: setQuery }))
|
|
53
|
+
: null, variant === 'mutuallyExclusive'
|
|
54
|
+
? (_jsx(RadioGroupRoot, { value: selectedValue, onValueChange: handleExclusiveChange, children: _jsx("view", { className: 'choice-picker-options', children: visibleOptions.map((option) => displayStyle === 'chips'
|
|
55
|
+
? (_jsx(Radio, { className: 'choice-picker-chip', value: option.value, radioProps: HitSlop, children: _jsx("text", { className: 'choice-picker-chip-text', children: option.label }) }, option.value))
|
|
56
|
+
: (_jsxs(Radio, { className: 'choice-picker-option', value: option.value, radioProps: HitSlop, children: [_jsx(RadioIndicator, { forceMount: true, className: 'choice-picker-radio-indicator', children: _jsx("view", { className: 'choice-picker-radio-dot' }) }), _jsx("text", { className: 'choice-picker-option-text', children: option.label })] }, option.value))) }) }))
|
|
57
|
+
: (_jsx("view", { className: 'choice-picker-options', children: visibleOptions.map((option) => {
|
|
58
|
+
const checked = selectedValues.includes(option.value);
|
|
59
|
+
return displayStyle === 'chips'
|
|
60
|
+
? (_jsx(Checkbox, { className: 'choice-picker-chip', checked: checked, onChange: () => handleMultipleChange(option.value), checkboxProps: HitSlop, children: _jsx("text", { className: 'choice-picker-chip-text', children: option.label }) }, option.value))
|
|
61
|
+
: (_jsxs(Checkbox, { className: 'choice-picker-option', checked: checked, onChange: () => handleMultipleChange(option.value), checkboxProps: HitSlop, children: [_jsx(CheckboxIndicator, { forceMount: true, className: 'choice-picker-checkbox-indicator', children: _jsx("text", { className: 'choice-picker-checkmark', children: "\u2713" }) }), _jsx("text", { className: 'choice-picker-option-text', children: option.label })] }, option.value));
|
|
62
|
+
}) })), !ok && firstFailureMessage
|
|
63
|
+
? _jsx("text", { className: 'choice-picker-error', children: firstFailureMessage })
|
|
64
|
+
: null] }, id));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/catalog/ChoicePicker/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ChoicePickerOption {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
export type ChoicePickerVariant = 'multipleSelection' | 'mutuallyExclusive';
|
|
6
|
+
export type ChoicePickerDisplayStyle = 'checkbox' | 'chips';
|
|
7
|
+
export declare function normalizeChoicePickerLabel(value: unknown): string;
|
|
8
|
+
export declare function normalizeChoicePickerVariant(value: unknown): ChoicePickerVariant;
|
|
9
|
+
export declare function normalizeChoicePickerDisplayStyle(value: unknown): ChoicePickerDisplayStyle;
|
|
10
|
+
export declare function normalizeChoicePickerOptions(value: unknown): ChoicePickerOption[];
|
|
11
|
+
export declare function normalizeChoicePickerValue(value: unknown, options?: readonly ChoicePickerOption[]): string[];
|
|
12
|
+
export declare function toggleChoicePickerValue(currentValue: readonly string[], optionValue: string, variant: ChoicePickerVariant): string[];
|
|
13
|
+
export declare function filterChoicePickerOptions(options: readonly ChoicePickerOption[], query: string): ChoicePickerOption[];
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
export function normalizeChoicePickerLabel(value) {
|
|
5
|
+
if (typeof value === 'string'
|
|
6
|
+
|| typeof value === 'number'
|
|
7
|
+
|| typeof value === 'boolean') {
|
|
8
|
+
return String(value);
|
|
9
|
+
}
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
export function normalizeChoicePickerVariant(value) {
|
|
13
|
+
return value === 'multipleSelection' || value === 'multiSelect'
|
|
14
|
+
? 'multipleSelection'
|
|
15
|
+
: 'mutuallyExclusive';
|
|
16
|
+
}
|
|
17
|
+
export function normalizeChoicePickerDisplayStyle(value) {
|
|
18
|
+
return value === 'chips' ? 'chips' : 'checkbox';
|
|
19
|
+
}
|
|
20
|
+
export function normalizeChoicePickerOptions(value) {
|
|
21
|
+
if (!Array.isArray(value))
|
|
22
|
+
return [];
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
const options = [];
|
|
25
|
+
for (const item of value) {
|
|
26
|
+
if (item === null || typeof item !== 'object')
|
|
27
|
+
continue;
|
|
28
|
+
const record = item;
|
|
29
|
+
const optionValue = record['value'];
|
|
30
|
+
if (typeof optionValue !== 'string' || seen.has(optionValue))
|
|
31
|
+
continue;
|
|
32
|
+
seen.add(optionValue);
|
|
33
|
+
options.push({
|
|
34
|
+
label: normalizeChoicePickerLabel(record['label']) || optionValue,
|
|
35
|
+
value: optionValue,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return options;
|
|
39
|
+
}
|
|
40
|
+
export function normalizeChoicePickerValue(value, options) {
|
|
41
|
+
const allowed = options
|
|
42
|
+
? new Set(options.map((option) => option.value))
|
|
43
|
+
: null;
|
|
44
|
+
let rawValues = [];
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
rawValues = value;
|
|
47
|
+
}
|
|
48
|
+
else if (typeof value === 'string') {
|
|
49
|
+
rawValues = [value];
|
|
50
|
+
}
|
|
51
|
+
const seen = new Set();
|
|
52
|
+
const selected = [];
|
|
53
|
+
for (const item of rawValues) {
|
|
54
|
+
if (typeof item !== 'string')
|
|
55
|
+
continue;
|
|
56
|
+
if (allowed && !allowed.has(item))
|
|
57
|
+
continue;
|
|
58
|
+
if (seen.has(item))
|
|
59
|
+
continue;
|
|
60
|
+
seen.add(item);
|
|
61
|
+
selected.push(item);
|
|
62
|
+
}
|
|
63
|
+
return selected;
|
|
64
|
+
}
|
|
65
|
+
export function toggleChoicePickerValue(currentValue, optionValue, variant) {
|
|
66
|
+
if (variant === 'mutuallyExclusive') {
|
|
67
|
+
return [optionValue];
|
|
68
|
+
}
|
|
69
|
+
return currentValue.includes(optionValue)
|
|
70
|
+
? currentValue.filter((value) => value !== optionValue)
|
|
71
|
+
: [...currentValue, optionValue];
|
|
72
|
+
}
|
|
73
|
+
export function filterChoicePickerOptions(options, query) {
|
|
74
|
+
const normalizedQuery = query.trim().toLowerCase();
|
|
75
|
+
if (!normalizedQuery)
|
|
76
|
+
return [...options];
|
|
77
|
+
return options.filter((option) => option.label.toLowerCase().includes(normalizedQuery)
|
|
78
|
+
|| option.value.toLowerCase().includes(normalizedQuery));
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/catalog/ChoicePicker/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { jsx as _jsx } from "@lynx-js/react/jsx-runtime";
|
|
|
2
2
|
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
3
3
|
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
4
4
|
// LICENSE file in the root directory of this source tree.
|
|
5
|
-
import { useMemo } from '@lynx-js/react';
|
|
6
5
|
import { NodeRenderer } from '../../react/A2UIRenderer.js';
|
|
7
6
|
import { useDataBinding } from '../../react/useDataBinding.js';
|
|
8
7
|
import '../../../styles/catalog/Column.css';
|
|
@@ -30,18 +29,15 @@ export function Column(props) {
|
|
|
30
29
|
? children
|
|
31
30
|
: undefined;
|
|
32
31
|
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) => {
|
|
32
|
+
const childList = Array.isArray(children)
|
|
33
|
+
? children.map((childId) => buildChild(surface, childId, dataContextPath))
|
|
34
|
+
: (Array.isArray(columnData) ? columnData : []).map((item, index) => {
|
|
38
35
|
const key = item && typeof item === 'object' && 'key' in item
|
|
39
36
|
? String(item['key'])
|
|
40
37
|
: `${index}`;
|
|
41
38
|
const itemPath = `${fullPath}/${index}`;
|
|
42
39
|
return buildChild(surface, template?.componentId ?? '', dataContextPath, itemPath, key);
|
|
43
40
|
});
|
|
44
|
-
}, [children, surface, dataContextPath, columnData, fullPath, template]);
|
|
45
41
|
return (_jsx("view", { className: `column alignment-${align} distribution-${justify}`, children: childList.map((item) => {
|
|
46
42
|
if (!item)
|
|
47
43
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/catalog/Column/index.tsx"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/catalog/Column/index.tsx"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D,OAAO,oCAAoC,CAAC;AAE5C,MAAM,UAAU,GAAG,CACjB,OAAgB,EAChB,OAAe,EACf,eAAmC,EACnC,SAAkB,EAClB,GAAG,GAAG,OAAO,EAIN,EAAE;IACT,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,SAAS,EAAE,CAAC;QACd,gBAAgB,GAAG,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;IAC9D,CAAC;SAAM,IAAI,eAAe,EAAE,CAAC;QAC3B,gBAAgB,GAAG,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,CAAC;IACnD,CAAC;IACD,OAAO;QACL,GAAG;QACH,SAAS,EAAE,gBAAgB;KAC5B,CAAC;AACJ,CAAC,CAAC;AAmBF,MAAM,UAAU,MAAM,CACpB,KAAkB;IAElB,MAAM,EACJ,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,SAAS,GAClB,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;WACjD,OAAO,QAAQ,KAAK,QAAQ,CAAC;IAClC,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,CAAC,UAAU,EAAE,AAAD,EAAG,QAAQ,CAAC,GAAG,cAAc,CAC7C,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,EACP,eAAe,EACf,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CACjC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAC9C;QACD,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAClE,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI;gBAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;YACxC,OAAO,UAAU,CACf,OAAO,EACP,QAAQ,EAAE,WAAW,IAAI,EAAE,EAC3B,eAAe,EACf,QAAQ,EACR,GAAG,CACJ,CAAC;QACJ,CAAC,CAAC,CAAC;IAEL,OAAO,CACL,eACE,SAAS,EAAE,oBAAoB,KAAK,iBAAiB,OAAO,EAAE,YAE7D,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,CACL,eAEE,SAAS,EAAE,6CAA6C,MAAM,EAAE,EAChE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,YAEtD,KAAC,YAAY,IACX,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,OAAO,GAChB,IAPG,IAAI,CAAC,GAAG,CAQR,CACR,CAAC;YACJ,CAAC;YACD,OAAO,CACL,KAAC,YAAY,IAEX,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,OAAO,IAFX,IAAI,CAAC,GAAG,CAGb,CACH,CAAC;QACJ,CAAC,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
|