@astryxdesign/core 0.4.6 → 0.4.7-canary.0b6762d
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/CHANGELOG.md +35 -0
- package/dist/AspectRatio/AspectRatio.d.ts +24 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +23 -4
- package/dist/BottomSheet/BottomSheet.d.ts +1 -0
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +54 -15
- package/dist/BottomSheet/BottomSheetEdgeTint.d.ts +6 -0
- package/dist/BottomSheet/BottomSheetEdgeTint.d.ts.map +1 -0
- package/dist/BottomSheet/BottomSheetEdgeTint.js +62 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +1 -0
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts +1 -0
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +10 -4
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +23 -5
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +5 -5
- package/dist/Calendar/Calendar.d.ts +3 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +13 -14
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +34 -1
- package/dist/Dialog/Dialog.d.ts +7 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +48 -22
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +10 -3
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +149 -23
- package/dist/MultiSelector/MultiSelector.d.ts +15 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +17 -6
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +5 -0
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +5 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +4 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +20 -8
- package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +19 -5
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -2
- package/dist/astryx.css +43 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +10 -3
- package/dist/hooks/useListFocus.d.ts +5 -2
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +12 -6
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/en.json +23 -7
- package/locales/pseudo.json +12 -0
- package/package.json +8 -3
- package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
- package/src/AspectRatio/AspectRatio.test.tsx +57 -10
- package/src/AspectRatio/AspectRatio.tsx +40 -1
- package/src/Avatar/Avatar.doc.mjs +2 -1
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +36 -4
- package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +225 -0
- package/src/BottomSheet/BottomSheetEdgeTint.tsx +82 -0
- package/src/BottomSheet/BottomSheetPanel.test.tsx +66 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +19 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +13 -0
- package/src/BottomSheet/useSheetGestures.test.ts +27 -0
- package/src/BottomSheet/useSheetGestures.ts +25 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +2 -1
- package/src/Button/Button.doc.mjs +22 -0
- package/src/Calendar/Calendar.doc.mjs +4 -3
- package/src/Calendar/Calendar.test.tsx +52 -0
- package/src/Calendar/Calendar.tsx +18 -15
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/CodeBlock/CodeBlock.doc.mjs +6 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/DateInput/DateInputTouch.test.tsx +36 -0
- package/src/DateInput/TouchDateField.tsx +35 -1
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +71 -0
- package/src/Dialog/Dialog.tsx +72 -20
- package/src/Field/Field.doc.mjs +11 -0
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -2
- package/src/Kbd/Kbd.test.tsx +17 -0
- package/src/Kbd/Kbd.tsx +10 -3
- package/src/Link/Link.doc.mjs +11 -0
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +71 -1
- package/src/Markdown/parser.test.ts +145 -2
- package/src/Markdown/parser.ts +208 -22
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +10 -0
- package/src/MultiSelector/MultiSelector.test.tsx +105 -0
- package/src/MultiSelector/MultiSelector.tsx +50 -6
- package/src/MultiSelector/index.ts +1 -0
- package/src/NumberInput/NumberInput.doc.mjs +5 -0
- package/src/Popover/Popover.test.tsx +27 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +10 -0
- package/src/Selector/Selector.doc.mjs +11 -0
- package/src/Selector/Selector.test.tsx +21 -0
- package/src/Selector/Selector.tsx +11 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/TabList/Tab.tsx +5 -1
- package/src/TabList/TabList.test.tsx +21 -4
- package/src/Table/BaseTable.tsx +6 -3
- package/src/Table/Table.test.tsx +35 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +17 -8
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
- package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +76 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +40 -7
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTablePagination.doc.mjs +7 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +23 -1
- package/src/Text/Text.tsx +6 -2
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/Toast/Toast.doc.mjs +6 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -0
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useHotkeys.test.ts +18 -0
- package/src/hooks/useHotkeys.ts +10 -3
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useListFocus.test.tsx +65 -3
- package/src/hooks/useListFocus.ts +15 -7
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/index.ts +1 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
- package/src/__tests__/inputWidthContract.test.tsx +0 -69
|
@@ -68,7 +68,7 @@ export const docs = {
|
|
|
68
68
|
{
|
|
69
69
|
guidance: true,
|
|
70
70
|
description:
|
|
71
|
-
'Prefer mode="auto" when the surface color comes from a theme token. A token named "inverted" is not guaranteed to be inverted, and auto measures what was actually painted instead of trusting the name
|
|
71
|
+
'Prefer mode="auto" when the surface color comes from a theme token. A token named "inverted" is not guaranteed to be inverted, and auto measures what was actually painted instead of trusting the name. It can even decide that a surface needs no media context at all.',
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
guidance: true,
|
|
@@ -93,14 +93,14 @@ export const docs = {
|
|
|
93
93
|
type: "'dark' | 'light' | 'auto' | 'off'",
|
|
94
94
|
required: true,
|
|
95
95
|
description:
|
|
96
|
-
'Surface luminance context: dark for content over dark backgrounds (light text, white-tinted interactions), light for content over light backgrounds (dark text, black-tinted interactions), auto to decide from the painted surface
|
|
96
|
+
'Surface luminance context: dark for content over dark backgrounds (light text, white-tinted interactions), light for content over light backgrounds (dark text, black-tinted interactions), auto to decide from the painted surface (no media context when the ambient text already reads on the surface at 3:1, otherwise the side that reads better), and off to turn it off explicitly. The element renders either way, so a surface can switch contexts without remounting children.',
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
name: 'fallback',
|
|
100
100
|
type: "'dark' | 'light'",
|
|
101
101
|
default: "'dark'",
|
|
102
102
|
description:
|
|
103
|
-
'Which side auto uses when the surface cannot be measured: during SSR, on the first client frame, and whenever the backdrop is not knowable from CSS
|
|
103
|
+
'Which side auto uses when the surface cannot be measured: during SSR, on the first client frame, and whenever the backdrop is not knowable from CSS, most often a background-image, whose pixels need sampling (useImageMode) rather than a computed style. Ignored unless mode is auto.',
|
|
104
104
|
},
|
|
105
105
|
{
|
|
106
106
|
name: 'children',
|
|
@@ -126,7 +126,7 @@ export const docsDense = {
|
|
|
126
126
|
{
|
|
127
127
|
guidance: true,
|
|
128
128
|
description:
|
|
129
|
-
'Prefer mode="auto" when surface color comes from a theme token
|
|
129
|
+
'Prefer mode="auto" when surface color comes from a theme token; a token named "inverted" is not guaranteed to be; auto measures what was painted.',
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
guidance: true,
|
|
@@ -148,6 +148,6 @@ export const docsDense = {
|
|
|
148
148
|
propDescriptions: {
|
|
149
149
|
mode: 'surface luminance context: dark for content over dark backgrounds (light text, white-tinted interactions), light for content over light backgrounds (dark text, black-tinted interactions), auto to decide from painted surface (none if ambient text already reads at 3:1, else better-reading side), off to turn off explicitly (element still renders, so children never remount)',
|
|
150
150
|
fallback:
|
|
151
|
-
'side auto uses when surface is unmeasurable (SSR, first frame, background-image
|
|
151
|
+
'side auto uses when surface is unmeasurable (SSR, first frame, background-image, which needs useImageMode sampling); ignored unless mode is auto',
|
|
152
152
|
},
|
|
153
153
|
};
|
|
@@ -135,6 +135,9 @@ describe('parseTimeInput', () => {
|
|
|
135
135
|
it('parses compact formats', () => {
|
|
136
136
|
expect(parseTimeInput('1430')).toBe('14:30');
|
|
137
137
|
expect(parseTimeInput('0000')).toBe('00:00');
|
|
138
|
+
expect(parseTimeInput('0230pm')).toBe('14:30');
|
|
139
|
+
expect(parseTimeInput('1230am')).toBe('00:30');
|
|
140
|
+
expect(parseTimeInput('023045pm', true)).toBe('14:30:45');
|
|
138
141
|
});
|
|
139
142
|
|
|
140
143
|
it('parses hour-only with meridiem', () => {
|
|
@@ -259,7 +262,9 @@ describe('adjustTime', () => {
|
|
|
259
262
|
|
|
260
263
|
it('wraps large negative deltas in constant time', () => {
|
|
261
264
|
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7)).toBe('10:00');
|
|
262
|
-
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
265
|
+
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
266
|
+
'09:30',
|
|
267
|
+
);
|
|
263
268
|
});
|
|
264
269
|
|
|
265
270
|
it('adds minutes', () => {
|
package/src/utils/timeParser.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @file timeParser.ts
|
|
5
5
|
* @input Uses string parsing
|
|
6
6
|
* @output Exports time parsing and formatting utilities
|
|
7
|
-
* @position Shared utility; used by
|
|
7
|
+
* @position Shared utility; used by TimeInput and DateTimeInput
|
|
8
8
|
*
|
|
9
9
|
* SYNC: When modified, update this header
|
|
10
10
|
*/
|
|
@@ -175,16 +175,29 @@ export function parseTimeInput(
|
|
|
175
175
|
// Remove AM/PM suffix
|
|
176
176
|
const timeStr = trimmed.replace(/\s*[ap]\.?m?\.?\s*$/i, '').trim();
|
|
177
177
|
|
|
178
|
+
const convertHourTo24Hour = (hour: number): number | null => {
|
|
179
|
+
if (!hasMeridiem) {
|
|
180
|
+
return hour;
|
|
181
|
+
}
|
|
182
|
+
if (hour < 1 || hour > 12) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (isPM && hour !== 12) {
|
|
186
|
+
return hour + 12;
|
|
187
|
+
}
|
|
188
|
+
if (isAM && hour === 12) {
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
return hour;
|
|
192
|
+
};
|
|
193
|
+
|
|
178
194
|
// Handle formats like "2pm" -> "2"
|
|
179
195
|
if (/^\d{1,2}$/.test(timeStr)) {
|
|
180
196
|
const hour = parseInt(timeStr, 10);
|
|
181
|
-
if (
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
if (isAM && hour === 12) {
|
|
187
|
-
hour24 = 0;
|
|
197
|
+
if (hasMeridiem) {
|
|
198
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
199
|
+
if (hour24 === null) {
|
|
200
|
+
return null;
|
|
188
201
|
}
|
|
189
202
|
return formatISOTime(
|
|
190
203
|
{hour: hour24, minute: 0, second: 0},
|
|
@@ -201,8 +214,15 @@ export function parseTimeInput(
|
|
|
201
214
|
if (/^\d{4}$/.test(timeStr)) {
|
|
202
215
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
203
216
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
204
|
-
|
|
205
|
-
|
|
217
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
218
|
+
if (
|
|
219
|
+
hour24 !== null &&
|
|
220
|
+
hour24 >= 0 &&
|
|
221
|
+
hour24 <= 23 &&
|
|
222
|
+
minute >= 0 &&
|
|
223
|
+
minute <= 59
|
|
224
|
+
) {
|
|
225
|
+
return formatISOTime({hour: hour24, minute, second: 0}, includeSeconds);
|
|
206
226
|
}
|
|
207
227
|
return null;
|
|
208
228
|
}
|
|
@@ -212,15 +232,17 @@ export function parseTimeInput(
|
|
|
212
232
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
213
233
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
214
234
|
const second = parseInt(timeStr.slice(4, 6), 10);
|
|
235
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
215
236
|
if (
|
|
216
|
-
|
|
217
|
-
|
|
237
|
+
hour24 !== null &&
|
|
238
|
+
hour24 >= 0 &&
|
|
239
|
+
hour24 <= 23 &&
|
|
218
240
|
minute >= 0 &&
|
|
219
241
|
minute <= 59 &&
|
|
220
242
|
second >= 0 &&
|
|
221
243
|
second <= 59
|
|
222
244
|
) {
|
|
223
|
-
return formatISOTime({hour, minute, second}, includeSeconds);
|
|
245
|
+
return formatISOTime({hour: hour24, minute, second}, includeSeconds);
|
|
224
246
|
}
|
|
225
247
|
return null;
|
|
226
248
|
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
import {describe, it, expect} from 'vitest';
|
|
4
|
-
|
|
5
|
-
import {docs as CheckboxInputDocs} from '../CheckboxInput/CheckboxInput.doc.mjs';
|
|
6
|
-
import {docs as CheckboxListDocs} from '../CheckboxList/CheckboxList.doc.mjs';
|
|
7
|
-
import {docs as DateInputDocs} from '../DateInput/DateInput.doc.mjs';
|
|
8
|
-
import {docs as DateRangeInputDocs} from '../DateRangeInput/DateRangeInput.doc.mjs';
|
|
9
|
-
import {docs as DateTimeInputDocs} from '../DateTimeInput/DateTimeInput.doc.mjs';
|
|
10
|
-
import {docs as FileInputDocs} from '../FileInput/FileInput.doc.mjs';
|
|
11
|
-
import {docs as MultiSelectorDocs} from '../MultiSelector/MultiSelector.doc.mjs';
|
|
12
|
-
import {docs as NumberInputDocs} from '../NumberInput/NumberInput.doc.mjs';
|
|
13
|
-
import {docs as RadioListDocs} from '../RadioList/RadioList.doc.mjs';
|
|
14
|
-
import {docs as SelectorDocs} from '../Selector/Selector.doc.mjs';
|
|
15
|
-
import {docs as SliderDocs} from '../Slider/Slider.doc.mjs';
|
|
16
|
-
import {docs as SwitchDocs} from '../Switch/Switch.doc.mjs';
|
|
17
|
-
import {docs as TextAreaDocs} from '../TextArea/TextArea.doc.mjs';
|
|
18
|
-
import {docs as TextInputDocs} from '../TextInput/TextInput.doc.mjs';
|
|
19
|
-
import {docs as TimeInputDocs} from '../TimeInput/TimeInput.doc.mjs';
|
|
20
|
-
import {docs as TokenizerDocs} from '../Tokenizer/Tokenizer.doc.mjs';
|
|
21
|
-
import {docs as TypeaheadDocs} from '../Typeahead/Typeahead.doc.mjs';
|
|
22
|
-
|
|
23
|
-
const inputDocsSuite = [
|
|
24
|
-
{name: 'CheckboxInput', docs: CheckboxInputDocs},
|
|
25
|
-
{name: 'CheckboxList', docs: CheckboxListDocs},
|
|
26
|
-
{name: 'DateInput', docs: DateInputDocs},
|
|
27
|
-
{name: 'DateRangeInput', docs: DateRangeInputDocs},
|
|
28
|
-
{name: 'DateTimeInput', docs: DateTimeInputDocs},
|
|
29
|
-
{name: 'FileInput', docs: FileInputDocs},
|
|
30
|
-
{name: 'MultiSelector', docs: MultiSelectorDocs},
|
|
31
|
-
{name: 'NumberInput', docs: NumberInputDocs},
|
|
32
|
-
{name: 'RadioList', docs: RadioListDocs},
|
|
33
|
-
{name: 'Selector', docs: SelectorDocs},
|
|
34
|
-
{name: 'Slider', docs: SliderDocs},
|
|
35
|
-
{name: 'Switch', docs: SwitchDocs},
|
|
36
|
-
{name: 'TextArea', docs: TextAreaDocs},
|
|
37
|
-
{name: 'TextInput', docs: TextInputDocs},
|
|
38
|
-
{name: 'TimeInput', docs: TimeInputDocs},
|
|
39
|
-
{name: 'Tokenizer', docs: TokenizerDocs},
|
|
40
|
-
{name: 'Typeahead', docs: TypeaheadDocs},
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
describe('Input Family width Prop Contract (#4163)', () => {
|
|
44
|
-
inputDocsSuite.forEach(({name, docs}) => {
|
|
45
|
-
it(`documents the width prop for ${name}`, () => {
|
|
46
|
-
// `docs` is the ComponentDoc union (single vs multi component); narrow it
|
|
47
|
-
// for structural access to either the top-level props or the first
|
|
48
|
-
// sub-component's props.
|
|
49
|
-
const doc = docs as {
|
|
50
|
-
props?: {name: string; type: string}[];
|
|
51
|
-
components?: {props?: {name: string; type: string}[]}[];
|
|
52
|
-
};
|
|
53
|
-
const propsList = (doc.props || doc.components?.[0]?.props) as {
|
|
54
|
-
name: string;
|
|
55
|
-
type: string;
|
|
56
|
-
}[];
|
|
57
|
-
expect(
|
|
58
|
-
propsList,
|
|
59
|
-
`${name}.doc.mjs must expose a props array`,
|
|
60
|
-
).toBeDefined();
|
|
61
|
-
const widthProp = propsList.find(p => p.name === 'width');
|
|
62
|
-
expect(
|
|
63
|
-
widthProp,
|
|
64
|
-
`${name}.doc.mjs must document the width prop`,
|
|
65
|
-
).toBeDefined();
|
|
66
|
-
expect(widthProp?.type).toBe('SizeValue');
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|