@proyecto-viviana/solidaria 0.2.5 → 0.2.8
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/LICENSE +21 -0
- package/dist/actiongroup/createActionGroup.d.ts +29 -0
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
- package/dist/actiongroup/index.d.ts +2 -0
- package/dist/actiongroup/index.d.ts.map +1 -0
- package/dist/autocomplete/createAutocomplete.d.ts +6 -2
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +2 -0
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/button/createToggleButtonGroup.d.ts +32 -0
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
- package/dist/button/index.d.ts +2 -0
- package/dist/button/index.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +2 -0
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +3 -1
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +5 -1
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/collections/index.d.ts +56 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +6 -0
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +6 -0
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateRangePicker.d.ts +40 -0
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
- package/dist/datepicker/createDateSegment.d.ts +1 -1
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +29 -0
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +2 -0
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +2 -1
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +4 -0
- package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +32 -1
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts.map +1 -1
- package/dist/dnd/index.d.ts +1 -1
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/grid/createGrid.d.ts.map +1 -1
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4659 -3452
- package/dist/index.js.map +1 -7
- package/dist/index.ssr.js +4659 -3452
- package/dist/index.ssr.js.map +1 -7
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/link/createLink.d.ts +10 -0
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/listbox/createListBox.d.ts +1 -0
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/menu/createMenu.d.ts +1 -0
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/numberfield/createNumberField.d.ts +18 -0
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +16 -0
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/index.d.ts +1 -1
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +2 -2
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +1 -1
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +4 -0
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/types.d.ts +4 -0
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/env.d.ts +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/package.json +8 -6
- package/src/actiongroup/createActionGroup.ts +324 -0
- package/src/actiongroup/index.ts +8 -0
- package/src/autocomplete/createAutocomplete.ts +32 -9
- package/src/breadcrumbs/createBreadcrumbs.ts +10 -15
- package/src/button/createButton.ts +1 -1
- package/src/button/createToggleButtonGroup.ts +128 -0
- package/src/button/index.ts +9 -0
- package/src/calendar/createCalendarCell.ts +6 -4
- package/src/calendar/createCalendarGrid.ts +27 -18
- package/src/calendar/createRangeCalendarCell.ts +26 -9
- package/src/checkbox/createCheckboxGroup.ts +21 -4
- package/src/collections/index.ts +242 -0
- package/src/color/createColorArea.ts +380 -314
- package/src/color/createColorField.ts +137 -137
- package/src/color/createColorSlider.ts +286 -197
- package/src/color/createColorSwatch.ts +40 -40
- package/src/color/createColorWheel.ts +218 -208
- package/src/color/index.ts +24 -24
- package/src/color/types.ts +116 -116
- package/src/combobox/createComboBox.ts +670 -647
- package/src/combobox/index.ts +6 -6
- package/src/datepicker/createDatePicker.ts +54 -16
- package/src/datepicker/createDateRangePicker.ts +246 -0
- package/src/datepicker/createDateSegment.ts +185 -31
- package/src/datepicker/createTimeSegment.ts +370 -0
- package/src/datepicker/index.ts +14 -0
- package/src/dialog/createDialog.ts +120 -120
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +19 -19
- package/src/disclosure/createDisclosureGroup.ts +5 -2
- package/src/dnd/createDrag.ts +224 -209
- package/src/dnd/createDraggableCollection.ts +96 -63
- package/src/dnd/createDraggableItem.ts +259 -243
- package/src/dnd/createDrop.ts +322 -321
- package/src/dnd/createDroppableCollection.ts +682 -293
- package/src/dnd/createDroppableItem.ts +215 -213
- package/src/dnd/index.ts +55 -47
- package/src/dnd/types.ts +89 -89
- package/src/dnd/utils.ts +294 -294
- package/src/focus/createAutoFocus.ts +321 -321
- package/src/focus/createFocusRestore.ts +313 -313
- package/src/focus/createVirtualFocus.ts +396 -396
- package/src/form/createFormValidation.ts +224 -224
- package/src/form/index.ts +11 -11
- package/src/grid/createGrid.ts +3 -1
- package/src/gridlist/createGridList.ts +16 -0
- package/src/gridlist/createGridListItem.ts +1 -1
- package/src/i18n/NumberFormatter.ts +266 -266
- package/src/i18n/createCollator.ts +79 -79
- package/src/i18n/createDateFormatter.ts +83 -83
- package/src/i18n/createFilter.ts +131 -131
- package/src/i18n/createNumberFormatter.ts +52 -52
- package/src/i18n/index.ts +40 -40
- package/src/i18n/locale.tsx +188 -188
- package/src/i18n/utils.ts +99 -99
- package/src/index.ts +51 -0
- package/src/interactions/createFocus.ts +6 -5
- package/src/interactions/createFocusWithin.ts +6 -5
- package/src/interactions/createLongPress.ts +174 -174
- package/src/interactions/createMove.ts +289 -289
- package/src/interactions/createPress.ts +5 -5
- package/src/landmark/createLandmark.ts +377 -377
- package/src/landmark/index.ts +8 -8
- package/src/link/createLink.ts +23 -8
- package/src/listbox/createListBox.ts +308 -269
- package/src/listbox/createOption.ts +162 -151
- package/src/listbox/index.ts +12 -12
- package/src/live-announcer/announce.ts +322 -322
- package/src/live-announcer/index.ts +9 -9
- package/src/menu/createMenu.ts +405 -396
- package/src/menu/createMenuItem.ts +149 -149
- package/src/menu/createMenuTrigger.ts +88 -88
- package/src/menu/index.ts +18 -18
- package/src/meter/createMeter.ts +1 -6
- package/src/numberfield/createNumberField.ts +311 -268
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/ariaHideOutside.ts +219 -219
- package/src/overlays/createInteractOutside.ts +149 -149
- package/src/overlays/createModal.tsx +238 -202
- package/src/overlays/createOverlay.ts +165 -155
- package/src/overlays/createOverlayTrigger.ts +85 -85
- package/src/overlays/createPreventScroll.ts +266 -266
- package/src/overlays/index.ts +48 -44
- package/src/popover/calculatePosition.ts +6 -6
- package/src/popover/createOverlayPosition.ts +7 -4
- package/src/popover/createPopover.ts +21 -7
- package/src/progress/createProgressBar.ts +6 -1
- package/src/radio/createRadioGroup.ts +88 -14
- package/src/searchfield/createSearchField.ts +241 -186
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +263 -236
- package/src/select/createSelect.ts +373 -395
- package/src/select/index.ts +14 -14
- package/src/slider/createSlider.ts +364 -349
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +370 -370
- package/src/table/createTable.ts +3 -1
- package/src/table/createTableColumnHeader.ts +1 -1
- package/src/table/createTableRow.ts +1 -1
- package/src/tabs/createTabs.ts +80 -51
- package/src/tag/createTag.ts +135 -6
- package/src/tag/createTagGroup.ts +7 -2
- package/src/toast/createToast.ts +8 -2
- package/src/toast/createToastRegion.ts +0 -1
- package/src/toolbar/createToolbar.ts +75 -1
- package/src/tooltip/createTooltip.ts +79 -79
- package/src/tooltip/createTooltipTrigger.ts +226 -222
- package/src/tooltip/index.ts +6 -6
- package/src/tree/createTree.ts +261 -246
- package/src/tree/createTreeItem.ts +282 -233
- package/src/tree/createTreeSelectionCheckbox.ts +68 -68
- package/src/tree/index.ts +16 -16
- package/src/tree/types.ts +91 -87
- package/src/utils/env.ts +55 -54
- package/src/utils/platform.ts +16 -6
- package/src/visually-hidden/createVisuallyHidden.ts +139 -124
- package/src/visually-hidden/index.ts +6 -6
package/src/i18n/utils.ts
CHANGED
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* i18n utilities for solidaria
|
|
3
|
-
*
|
|
4
|
-
* RTL detection and locale utilities.
|
|
5
|
-
*
|
|
6
|
-
* Port of @react-aria/i18n utils.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
// https://en.wikipedia.org/wiki/Right-to-left
|
|
10
|
-
const RTL_SCRIPTS = new Set([
|
|
11
|
-
'Arab',
|
|
12
|
-
'Syrc',
|
|
13
|
-
'Samr',
|
|
14
|
-
'Mand',
|
|
15
|
-
'Thaa',
|
|
16
|
-
'Mend',
|
|
17
|
-
'Nkoo',
|
|
18
|
-
'Adlm',
|
|
19
|
-
'Rohg',
|
|
20
|
-
'Hebr',
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
const RTL_LANGS = new Set([
|
|
24
|
-
'ae',
|
|
25
|
-
'ar',
|
|
26
|
-
'arc',
|
|
27
|
-
'bcc',
|
|
28
|
-
'bqi',
|
|
29
|
-
'ckb',
|
|
30
|
-
'dv',
|
|
31
|
-
'fa',
|
|
32
|
-
'glk',
|
|
33
|
-
'he',
|
|
34
|
-
'ku',
|
|
35
|
-
'mzn',
|
|
36
|
-
'nqo',
|
|
37
|
-
'pnb',
|
|
38
|
-
'ps',
|
|
39
|
-
'sd',
|
|
40
|
-
'ug',
|
|
41
|
-
'ur',
|
|
42
|
-
'yi',
|
|
43
|
-
]);
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Determines if a locale is read right to left.
|
|
47
|
-
* Uses Intl.Locale API when available for accurate detection.
|
|
48
|
-
*/
|
|
49
|
-
export function isRTL(localeString: string): boolean {
|
|
50
|
-
// If the Intl.Locale API is available, use it to get the locale's text direction.
|
|
51
|
-
if (typeof Intl !== 'undefined' && Intl.Locale) {
|
|
52
|
-
try {
|
|
53
|
-
const locale = new Intl.Locale(localeString).maximize();
|
|
54
|
-
|
|
55
|
-
// Use the text info object to get the direction if possible.
|
|
56
|
-
// getTextInfo() was implemented as a property by some browsers before it was standardized as a function.
|
|
57
|
-
const localeAny = locale as unknown as {
|
|
58
|
-
getTextInfo?: () => { direction: string };
|
|
59
|
-
textInfo?: { direction: string };
|
|
60
|
-
};
|
|
61
|
-
const textInfo = typeof localeAny.getTextInfo === 'function'
|
|
62
|
-
? localeAny.getTextInfo()
|
|
63
|
-
: localeAny.textInfo;
|
|
64
|
-
|
|
65
|
-
if (textInfo) {
|
|
66
|
-
return textInfo.direction === 'rtl';
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Fallback: guess using the script.
|
|
70
|
-
if (locale.script) {
|
|
71
|
-
return RTL_SCRIPTS.has(locale.script);
|
|
72
|
-
}
|
|
73
|
-
} catch {
|
|
74
|
-
// Fall through to language-based detection
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// If not, just guess by the language (first part of the locale)
|
|
79
|
-
const lang = localeString.split('-')[0];
|
|
80
|
-
return RTL_LANGS.has(lang);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Creates a cache key for formatter options.
|
|
85
|
-
*/
|
|
86
|
-
export function createCacheKey(
|
|
87
|
-
locale: string,
|
|
88
|
-
options?: Record<string, unknown>
|
|
89
|
-
): string {
|
|
90
|
-
if (!options) {
|
|
91
|
-
return locale;
|
|
92
|
-
}
|
|
93
|
-
return (
|
|
94
|
-
locale +
|
|
95
|
-
Object.entries(options)
|
|
96
|
-
.sort((a, b) => (a[0] < b[0] ? -1 : 1))
|
|
97
|
-
.join()
|
|
98
|
-
);
|
|
99
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* i18n utilities for solidaria
|
|
3
|
+
*
|
|
4
|
+
* RTL detection and locale utilities.
|
|
5
|
+
*
|
|
6
|
+
* Port of @react-aria/i18n utils.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// https://en.wikipedia.org/wiki/Right-to-left
|
|
10
|
+
const RTL_SCRIPTS = new Set([
|
|
11
|
+
'Arab',
|
|
12
|
+
'Syrc',
|
|
13
|
+
'Samr',
|
|
14
|
+
'Mand',
|
|
15
|
+
'Thaa',
|
|
16
|
+
'Mend',
|
|
17
|
+
'Nkoo',
|
|
18
|
+
'Adlm',
|
|
19
|
+
'Rohg',
|
|
20
|
+
'Hebr',
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
const RTL_LANGS = new Set([
|
|
24
|
+
'ae',
|
|
25
|
+
'ar',
|
|
26
|
+
'arc',
|
|
27
|
+
'bcc',
|
|
28
|
+
'bqi',
|
|
29
|
+
'ckb',
|
|
30
|
+
'dv',
|
|
31
|
+
'fa',
|
|
32
|
+
'glk',
|
|
33
|
+
'he',
|
|
34
|
+
'ku',
|
|
35
|
+
'mzn',
|
|
36
|
+
'nqo',
|
|
37
|
+
'pnb',
|
|
38
|
+
'ps',
|
|
39
|
+
'sd',
|
|
40
|
+
'ug',
|
|
41
|
+
'ur',
|
|
42
|
+
'yi',
|
|
43
|
+
]);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Determines if a locale is read right to left.
|
|
47
|
+
* Uses Intl.Locale API when available for accurate detection.
|
|
48
|
+
*/
|
|
49
|
+
export function isRTL(localeString: string): boolean {
|
|
50
|
+
// If the Intl.Locale API is available, use it to get the locale's text direction.
|
|
51
|
+
if (typeof Intl !== 'undefined' && Intl.Locale) {
|
|
52
|
+
try {
|
|
53
|
+
const locale = new Intl.Locale(localeString).maximize();
|
|
54
|
+
|
|
55
|
+
// Use the text info object to get the direction if possible.
|
|
56
|
+
// getTextInfo() was implemented as a property by some browsers before it was standardized as a function.
|
|
57
|
+
const localeAny = locale as unknown as {
|
|
58
|
+
getTextInfo?: () => { direction: string };
|
|
59
|
+
textInfo?: { direction: string };
|
|
60
|
+
};
|
|
61
|
+
const textInfo = typeof localeAny.getTextInfo === 'function'
|
|
62
|
+
? localeAny.getTextInfo()
|
|
63
|
+
: localeAny.textInfo;
|
|
64
|
+
|
|
65
|
+
if (textInfo) {
|
|
66
|
+
return textInfo.direction === 'rtl';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Fallback: guess using the script.
|
|
70
|
+
if (locale.script) {
|
|
71
|
+
return RTL_SCRIPTS.has(locale.script);
|
|
72
|
+
}
|
|
73
|
+
} catch {
|
|
74
|
+
// Fall through to language-based detection
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If not, just guess by the language (first part of the locale)
|
|
79
|
+
const lang = localeString.split('-')[0];
|
|
80
|
+
return RTL_LANGS.has(lang);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Creates a cache key for formatter options.
|
|
85
|
+
*/
|
|
86
|
+
export function createCacheKey(
|
|
87
|
+
locale: string,
|
|
88
|
+
options?: Record<string, unknown>
|
|
89
|
+
): string {
|
|
90
|
+
if (!options) {
|
|
91
|
+
return locale;
|
|
92
|
+
}
|
|
93
|
+
return (
|
|
94
|
+
locale +
|
|
95
|
+
Object.entries(options)
|
|
96
|
+
.sort((a, b) => (a[0] < b[0] ? -1 : 1))
|
|
97
|
+
.join()
|
|
98
|
+
);
|
|
99
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -2,12 +2,48 @@
|
|
|
2
2
|
export {
|
|
3
3
|
createButton,
|
|
4
4
|
createToggleButton,
|
|
5
|
+
createToggleButtonGroup,
|
|
6
|
+
createToggleButtonGroupItem,
|
|
5
7
|
type AriaButtonProps,
|
|
6
8
|
type ButtonAria,
|
|
7
9
|
type AriaToggleButtonProps,
|
|
8
10
|
type ToggleButtonAria,
|
|
11
|
+
type AriaToggleButtonGroupProps,
|
|
12
|
+
type ToggleButtonGroupAria,
|
|
13
|
+
type AriaToggleButtonGroupItemProps,
|
|
9
14
|
} from './button';
|
|
10
15
|
|
|
16
|
+
// ActionGroup
|
|
17
|
+
export {
|
|
18
|
+
createActionGroup,
|
|
19
|
+
createActionGroupItem,
|
|
20
|
+
type AriaActionGroupProps,
|
|
21
|
+
type ActionGroupAria,
|
|
22
|
+
type AriaActionGroupItemProps,
|
|
23
|
+
type ActionGroupItemAria,
|
|
24
|
+
} from './actiongroup';
|
|
25
|
+
|
|
26
|
+
// Collections
|
|
27
|
+
export {
|
|
28
|
+
CollectionBuilder,
|
|
29
|
+
Collection,
|
|
30
|
+
createLeafComponent,
|
|
31
|
+
createBranchComponent,
|
|
32
|
+
createHideableComponent,
|
|
33
|
+
useIsHidden,
|
|
34
|
+
useCachedChildren,
|
|
35
|
+
BaseCollection,
|
|
36
|
+
type CollectionBuilderProps,
|
|
37
|
+
type CollectionProps,
|
|
38
|
+
type CachedChildrenOptions,
|
|
39
|
+
type CollectionNode,
|
|
40
|
+
type ItemNode,
|
|
41
|
+
type SectionNode,
|
|
42
|
+
type FilterableNode,
|
|
43
|
+
type LoaderNode,
|
|
44
|
+
type HeaderNode,
|
|
45
|
+
} from './collections';
|
|
46
|
+
|
|
11
47
|
// Checkbox
|
|
12
48
|
export {
|
|
13
49
|
createCheckbox,
|
|
@@ -204,11 +240,15 @@ export {
|
|
|
204
240
|
ModalProvider,
|
|
205
241
|
OverlayProvider,
|
|
206
242
|
OverlayContainer,
|
|
243
|
+
UNSAFE_PortalProvider,
|
|
207
244
|
useModalProvider,
|
|
245
|
+
useUNSAFE_PortalContext,
|
|
208
246
|
createModal,
|
|
209
247
|
type ModalProviderProps,
|
|
210
248
|
type ModalProviderAria,
|
|
211
249
|
type OverlayContainerProps,
|
|
250
|
+
type PortalProviderProps,
|
|
251
|
+
type PortalProviderContextValue,
|
|
212
252
|
type AriaModalOptions,
|
|
213
253
|
type ModalAria,
|
|
214
254
|
} from './overlays';
|
|
@@ -443,11 +483,18 @@ export {
|
|
|
443
483
|
createTimeField,
|
|
444
484
|
type AriaTimeFieldProps,
|
|
445
485
|
type TimeFieldAria,
|
|
486
|
+
// Time Segment
|
|
487
|
+
createTimeSegment,
|
|
488
|
+
type AriaTimeSegmentProps,
|
|
489
|
+
type TimeSegmentAria,
|
|
446
490
|
// Date Picker
|
|
447
491
|
createDatePicker,
|
|
492
|
+
createDateRangePicker,
|
|
448
493
|
type AriaDatePickerProps,
|
|
449
494
|
type DatePickerAria,
|
|
450
495
|
type DatePickerState,
|
|
496
|
+
type AriaDateRangePickerProps,
|
|
497
|
+
type DateRangePickerAria,
|
|
451
498
|
} from './datepicker';
|
|
452
499
|
|
|
453
500
|
// Grid
|
|
@@ -555,6 +602,10 @@ export {
|
|
|
555
602
|
// Global state
|
|
556
603
|
setGlobalDraggingCollectionRef,
|
|
557
604
|
getGlobalDraggingCollectionRef,
|
|
605
|
+
setGlobalDraggingKeys,
|
|
606
|
+
getGlobalDraggingKeys,
|
|
607
|
+
setGlobalDraggingTypes,
|
|
608
|
+
getGlobalDraggingTypes,
|
|
558
609
|
setGlobalDropCollectionRef,
|
|
559
610
|
getGlobalDropCollectionRef,
|
|
560
611
|
// Types
|
|
@@ -40,9 +40,7 @@ export interface FocusResult {
|
|
|
40
40
|
* Most browsers fire a native focusout event in this case, except for Firefox.
|
|
41
41
|
* We use a MutationObserver to watch for the disabled attribute.
|
|
42
42
|
*/
|
|
43
|
-
function createSyntheticBlurHandler(
|
|
44
|
-
onBlur: ((e: FocusEvent) => void) | undefined
|
|
45
|
-
): (_e: FocusEvent, target: Element) => (() => void) | undefined {
|
|
43
|
+
function createSyntheticBlurHandler(): (_e: FocusEvent, target: Element) => (() => void) | undefined {
|
|
46
44
|
let isFocused = false;
|
|
47
45
|
let observer: MutationObserver | null = null;
|
|
48
46
|
|
|
@@ -68,8 +66,11 @@ function createSyntheticBlurHandler(
|
|
|
68
66
|
|
|
69
67
|
observer = new MutationObserver(() => {
|
|
70
68
|
if (isFocused && (target as HTMLButtonElement).disabled) {
|
|
69
|
+
isFocused = false;
|
|
71
70
|
observer?.disconnect();
|
|
72
|
-
|
|
71
|
+
observer = null;
|
|
72
|
+
const ownerDocument = target.ownerDocument;
|
|
73
|
+
const relatedTarget = target === ownerDocument.activeElement ? null : ownerDocument.activeElement;
|
|
73
74
|
target.dispatchEvent(new FocusEvent('blur', { relatedTarget }));
|
|
74
75
|
target.dispatchEvent(new FocusEvent('focusout', { bubbles: true, relatedTarget }));
|
|
75
76
|
}
|
|
@@ -100,7 +101,7 @@ export function createFocus(props: CreateFocusProps = {}): FocusResult {
|
|
|
100
101
|
const { isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange } = props;
|
|
101
102
|
|
|
102
103
|
let cleanupRef: (() => void) | undefined;
|
|
103
|
-
const syntheticBlurHandler = createSyntheticBlurHandler(
|
|
104
|
+
const syntheticBlurHandler = createSyntheticBlurHandler();
|
|
104
105
|
|
|
105
106
|
// Cleanup on unmount
|
|
106
107
|
onCleanup(() => {
|
|
@@ -32,9 +32,7 @@ function getActiveElement(doc: Document): Element | null {
|
|
|
32
32
|
return activeElement;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function createSyntheticBlurHandler(
|
|
36
|
-
onBlurWithin: ((e: FocusEvent) => void) | undefined
|
|
37
|
-
): (_e: FocusEvent, target: Element) => (() => void) | undefined {
|
|
35
|
+
function createSyntheticBlurHandler(): (_e: FocusEvent, target: Element) => (() => void) | undefined {
|
|
38
36
|
let isFocused = false;
|
|
39
37
|
let observer: MutationObserver | null = null;
|
|
40
38
|
|
|
@@ -60,8 +58,11 @@ function createSyntheticBlurHandler(
|
|
|
60
58
|
|
|
61
59
|
observer = new MutationObserver(() => {
|
|
62
60
|
if (isFocused && (target as HTMLButtonElement).disabled) {
|
|
61
|
+
isFocused = false;
|
|
63
62
|
observer?.disconnect();
|
|
64
|
-
|
|
63
|
+
observer = null;
|
|
64
|
+
const ownerDocument = target.ownerDocument;
|
|
65
|
+
const relatedTarget = target === ownerDocument.activeElement ? null : ownerDocument.activeElement;
|
|
65
66
|
target.dispatchEvent(new FocusEvent('blur', { relatedTarget }));
|
|
66
67
|
target.dispatchEvent(new FocusEvent('focusout', { bubbles: true, relatedTarget }));
|
|
67
68
|
}
|
|
@@ -94,7 +95,7 @@ export function createFocusWithin(props: FocusWithinProps = {}): FocusWithinResu
|
|
|
94
95
|
|
|
95
96
|
// Global listeners manager
|
|
96
97
|
const { addGlobalListener, removeAllGlobalListeners } = createGlobalListeners();
|
|
97
|
-
const syntheticBlurHandler = createSyntheticBlurHandler(
|
|
98
|
+
const syntheticBlurHandler = createSyntheticBlurHandler();
|
|
98
99
|
let cleanupRef: (() => void) | undefined;
|
|
99
100
|
|
|
100
101
|
// Cleanup on unmount
|