@mui/lab 5.0.0-alpha.106 → 5.0.0-alpha.108
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/AdapterDateFns/AdapterDateFns.js +2 -4
- package/AdapterDayjs/AdapterDayjs.js +2 -4
- package/AdapterLuxon/AdapterLuxon.js +2 -4
- package/AdapterMoment/AdapterMoment.js +2 -4
- package/Alert/Alert.js +1 -2
- package/AlertTitle/AlertTitle.js +1 -2
- package/Autocomplete/Autocomplete.js +1 -2
- package/AvatarGroup/AvatarGroup.js +1 -2
- package/CHANGELOG.md +127 -1
- package/CalendarPicker/CalendarPicker.js +0 -2
- package/CalendarPickerSkeleton/CalendarPickerSkeleton.js +0 -2
- package/ClockPicker/ClockPicker.js +0 -2
- package/DatePicker/DatePicker.js +0 -2
- package/DateRangePicker/DateRangePicker.js +0 -2
- package/DateRangePickerDay/DateRangePickerDay.js +0 -2
- package/DateTimePicker/DateTimePicker.js +0 -2
- package/DesktopDatePicker/DesktopDatePicker.js +0 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -2
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +0 -2
- package/DesktopTimePicker/DesktopTimePicker.js +0 -2
- package/LoadingButton/LoadingButton.js +13 -34
- package/LocalizationProvider/LocalizationProvider.js +0 -2
- package/Masonry/Masonry.js +27 -68
- package/MobileDatePicker/MobileDatePicker.js +0 -2
- package/MobileDateRangePicker/MobileDateRangePicker.js +0 -2
- package/MobileDateTimePicker/MobileDateTimePicker.js +0 -2
- package/MobileTimePicker/MobileTimePicker.js +0 -2
- package/MonthPicker/MonthPicker.js +0 -2
- package/Pagination/Pagination.js +1 -2
- package/PaginationItem/PaginationItem.js +1 -2
- package/PickersDay/PickersDay.js +0 -2
- package/Rating/Rating.js +1 -2
- package/Skeleton/Skeleton.js +1 -2
- package/SpeedDial/SpeedDial.js +1 -2
- package/SpeedDialAction/SpeedDialAction.js +1 -2
- package/SpeedDialIcon/SpeedDialIcon.js +1 -2
- package/StaticDatePicker/StaticDatePicker.js +0 -2
- package/StaticDateRangePicker/StaticDateRangePicker.js +0 -2
- package/StaticDateTimePicker/StaticDateTimePicker.js +0 -2
- package/StaticTimePicker/StaticTimePicker.js +0 -2
- package/TabContext/TabContext.js +3 -14
- package/TabList/TabList.js +4 -11
- package/TabPanel/TabPanel.js +6 -20
- package/TimePicker/TimePicker.js +0 -2
- package/Timeline/Timeline.js +9 -20
- package/Timeline/TimelineContext.js +1 -3
- package/TimelineConnector/TimelineConnector.js +4 -14
- package/TimelineContent/TimelineContent.js +4 -16
- package/TimelineDot/TimelineDot.js +8 -25
- package/TimelineItem/TimelineItem.js +5 -18
- package/TimelineOppositeContent/TimelineOppositeContent.js +4 -16
- package/TimelineSeparator/TimelineSeparator.js +4 -14
- package/ToggleButton/ToggleButton.js +1 -2
- package/ToggleButtonGroup/ToggleButtonGroup.js +1 -2
- package/TreeItem/TreeItem.js +19 -58
- package/TreeItem/TreeItemContent.js +12 -28
- package/TreeItem/useTreeItem.js +2 -8
- package/TreeView/TreeView.js +51 -195
- package/TreeView/TreeViewContext.js +1 -3
- package/TreeView/descendants.js +19 -31
- package/YearPicker/YearPicker.js +1 -3
- package/index.js +3 -2
- package/internal/svg-icons/ArrowDropDown.js +1 -1
- package/internal/svg-icons/ArrowLeft.js +1 -1
- package/internal/svg-icons/ArrowRight.js +1 -1
- package/internal/svg-icons/Calendar.js +1 -1
- package/internal/svg-icons/Clock.js +1 -1
- package/internal/svg-icons/DateRange.js +1 -1
- package/internal/svg-icons/Pen.js +1 -1
- package/internal/svg-icons/Time.js +1 -1
- package/legacy/AdapterDateFns/AdapterDateFns.js +2 -5
- package/legacy/AdapterDayjs/AdapterDayjs.js +2 -5
- package/legacy/AdapterLuxon/AdapterLuxon.js +2 -5
- package/legacy/AdapterMoment/AdapterMoment.js +2 -5
- package/legacy/Alert/Alert.js +1 -2
- package/legacy/AlertTitle/AlertTitle.js +1 -2
- package/legacy/Autocomplete/Autocomplete.js +1 -2
- package/legacy/AvatarGroup/AvatarGroup.js +1 -2
- package/legacy/CalendarPicker/CalendarPicker.js +0 -2
- package/legacy/CalendarPickerSkeleton/CalendarPickerSkeleton.js +0 -2
- package/legacy/ClockPicker/ClockPicker.js +0 -2
- package/legacy/DatePicker/DatePicker.js +0 -2
- package/legacy/DateRangePicker/DateRangePicker.js +0 -2
- package/legacy/DateRangePickerDay/DateRangePickerDay.js +0 -2
- package/legacy/DateTimePicker/DateTimePicker.js +0 -2
- package/legacy/DesktopDatePicker/DesktopDatePicker.js +0 -2
- package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -2
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +0 -2
- package/legacy/DesktopTimePicker/DesktopTimePicker.js +0 -2
- package/legacy/LoadingButton/LoadingButton.js +19 -40
- package/legacy/LocalizationProvider/LocalizationProvider.js +0 -2
- package/legacy/Masonry/Masonry.js +33 -77
- package/legacy/MobileDatePicker/MobileDatePicker.js +0 -2
- package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -2
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +0 -2
- package/legacy/MobileTimePicker/MobileTimePicker.js +0 -2
- package/legacy/MonthPicker/MonthPicker.js +0 -2
- package/legacy/Pagination/Pagination.js +1 -2
- package/legacy/PaginationItem/PaginationItem.js +1 -2
- package/legacy/PickersDay/PickersDay.js +0 -2
- package/legacy/Rating/Rating.js +1 -2
- package/legacy/Skeleton/Skeleton.js +1 -2
- package/legacy/SpeedDial/SpeedDial.js +1 -2
- package/legacy/SpeedDialAction/SpeedDialAction.js +1 -2
- package/legacy/SpeedDialIcon/SpeedDialIcon.js +1 -2
- package/legacy/StaticDatePicker/StaticDatePicker.js +0 -2
- package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -2
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +0 -2
- package/legacy/StaticTimePicker/StaticTimePicker.js +0 -2
- package/legacy/TabContext/TabContext.js +6 -18
- package/legacy/TabList/TabList.js +2 -9
- package/legacy/TabPanel/TabPanel.js +4 -18
- package/legacy/TimePicker/TimePicker.js +0 -2
- package/legacy/Timeline/Timeline.js +9 -20
- package/legacy/Timeline/TimelineContext.js +1 -3
- package/legacy/TimelineConnector/TimelineConnector.js +2 -12
- package/legacy/TimelineContent/TimelineContent.js +4 -16
- package/legacy/TimelineDot/TimelineDot.js +11 -28
- package/legacy/TimelineItem/TimelineItem.js +6 -21
- package/legacy/TimelineOppositeContent/TimelineOppositeContent.js +4 -16
- package/legacy/TimelineSeparator/TimelineSeparator.js +2 -12
- package/legacy/ToggleButton/ToggleButton.js +1 -2
- package/legacy/ToggleButtonGroup/ToggleButtonGroup.js +1 -2
- package/legacy/TreeItem/TreeItem.js +37 -81
- package/legacy/TreeItem/TreeItemContent.js +17 -34
- package/legacy/TreeItem/useTreeItem.js +12 -19
- package/legacy/TreeView/TreeView.js +83 -236
- package/legacy/TreeView/TreeViewContext.js +1 -3
- package/legacy/TreeView/descendants.js +26 -44
- package/legacy/YearPicker/YearPicker.js +1 -3
- package/legacy/index.js +3 -2
- package/legacy/internal/svg-icons/ArrowDropDown.js +1 -1
- package/legacy/internal/svg-icons/ArrowLeft.js +1 -1
- package/legacy/internal/svg-icons/ArrowRight.js +1 -1
- package/legacy/internal/svg-icons/Calendar.js +1 -1
- package/legacy/internal/svg-icons/Clock.js +1 -1
- package/legacy/internal/svg-icons/DateRange.js +1 -1
- package/legacy/internal/svg-icons/Pen.js +1 -1
- package/legacy/internal/svg-icons/Time.js +1 -1
- package/modern/AdapterDateFns/AdapterDateFns.js +2 -4
- package/modern/AdapterDayjs/AdapterDayjs.js +2 -4
- package/modern/AdapterLuxon/AdapterLuxon.js +2 -4
- package/modern/AdapterMoment/AdapterMoment.js +2 -4
- package/modern/Alert/Alert.js +1 -2
- package/modern/AlertTitle/AlertTitle.js +1 -2
- package/modern/Autocomplete/Autocomplete.js +1 -2
- package/modern/AvatarGroup/AvatarGroup.js +1 -2
- package/modern/CalendarPicker/CalendarPicker.js +0 -2
- package/modern/CalendarPickerSkeleton/CalendarPickerSkeleton.js +0 -2
- package/modern/ClockPicker/ClockPicker.js +0 -2
- package/modern/DatePicker/DatePicker.js +0 -2
- package/modern/DateRangePicker/DateRangePicker.js +0 -2
- package/modern/DateRangePickerDay/DateRangePickerDay.js +0 -2
- package/modern/DateTimePicker/DateTimePicker.js +0 -2
- package/modern/DesktopDatePicker/DesktopDatePicker.js +0 -2
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -2
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +0 -2
- package/modern/DesktopTimePicker/DesktopTimePicker.js +0 -2
- package/modern/LoadingButton/LoadingButton.js +13 -35
- package/modern/LocalizationProvider/LocalizationProvider.js +0 -2
- package/modern/Masonry/Masonry.js +27 -68
- package/modern/MobileDatePicker/MobileDatePicker.js +0 -2
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +0 -2
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +0 -2
- package/modern/MobileTimePicker/MobileTimePicker.js +0 -2
- package/modern/MonthPicker/MonthPicker.js +0 -2
- package/modern/Pagination/Pagination.js +1 -2
- package/modern/PaginationItem/PaginationItem.js +1 -2
- package/modern/PickersDay/PickersDay.js +0 -2
- package/modern/Rating/Rating.js +1 -2
- package/modern/Skeleton/Skeleton.js +1 -2
- package/modern/SpeedDial/SpeedDial.js +1 -2
- package/modern/SpeedDialAction/SpeedDialAction.js +1 -2
- package/modern/SpeedDialIcon/SpeedDialIcon.js +1 -2
- package/modern/StaticDatePicker/StaticDatePicker.js +0 -2
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -2
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +0 -2
- package/modern/StaticTimePicker/StaticTimePicker.js +0 -2
- package/modern/TabContext/TabContext.js +3 -14
- package/modern/TabList/TabList.js +4 -11
- package/modern/TabPanel/TabPanel.js +6 -20
- package/modern/TimePicker/TimePicker.js +0 -2
- package/modern/Timeline/Timeline.js +9 -20
- package/modern/Timeline/TimelineContext.js +1 -3
- package/modern/TimelineConnector/TimelineConnector.js +4 -14
- package/modern/TimelineContent/TimelineContent.js +4 -16
- package/modern/TimelineDot/TimelineDot.js +8 -25
- package/modern/TimelineItem/TimelineItem.js +5 -18
- package/modern/TimelineOppositeContent/TimelineOppositeContent.js +4 -16
- package/modern/TimelineSeparator/TimelineSeparator.js +4 -14
- package/modern/ToggleButton/ToggleButton.js +1 -2
- package/modern/ToggleButtonGroup/ToggleButtonGroup.js +1 -2
- package/modern/TreeItem/TreeItem.js +19 -58
- package/modern/TreeItem/TreeItemContent.js +12 -28
- package/modern/TreeItem/useTreeItem.js +2 -8
- package/modern/TreeView/TreeView.js +51 -195
- package/modern/TreeView/TreeViewContext.js +1 -3
- package/modern/TreeView/descendants.js +19 -31
- package/modern/YearPicker/YearPicker.js +1 -3
- package/modern/index.js +3 -2
- package/modern/internal/svg-icons/ArrowDropDown.js +1 -1
- package/modern/internal/svg-icons/ArrowLeft.js +1 -1
- package/modern/internal/svg-icons/ArrowRight.js +1 -1
- package/modern/internal/svg-icons/Calendar.js +1 -1
- package/modern/internal/svg-icons/Clock.js +1 -1
- package/modern/internal/svg-icons/DateRange.js +1 -1
- package/modern/internal/svg-icons/Pen.js +1 -1
- package/modern/internal/svg-icons/Time.js +1 -1
- package/node/AdapterDateFns/AdapterDateFns.js +2 -5
- package/node/AdapterDateFns/index.js +0 -2
- package/node/AdapterDayjs/AdapterDayjs.js +2 -5
- package/node/AdapterDayjs/index.js +0 -2
- package/node/AdapterLuxon/AdapterLuxon.js +2 -5
- package/node/AdapterLuxon/index.js +0 -2
- package/node/AdapterMoment/AdapterMoment.js +2 -5
- package/node/AdapterMoment/index.js +0 -2
- package/node/Alert/Alert.js +1 -11
- package/node/Alert/index.js +0 -2
- package/node/AlertTitle/AlertTitle.js +1 -11
- package/node/AlertTitle/index.js +0 -2
- package/node/Autocomplete/Autocomplete.js +1 -11
- package/node/Autocomplete/index.js +0 -2
- package/node/AvatarGroup/AvatarGroup.js +1 -11
- package/node/AvatarGroup/index.js +0 -2
- package/node/CalendarPicker/CalendarPicker.js +1 -6
- package/node/CalendarPicker/index.js +0 -4
- package/node/CalendarPickerSkeleton/CalendarPickerSkeleton.js +1 -8
- package/node/CalendarPickerSkeleton/index.js +0 -4
- package/node/ClockPicker/ClockPicker.js +1 -6
- package/node/ClockPicker/index.js +0 -4
- package/node/DatePicker/DatePicker.js +1 -6
- package/node/DatePicker/index.js +0 -4
- package/node/DateRangePicker/DateRangePicker.js +1 -6
- package/node/DateRangePicker/index.js +0 -4
- package/node/DateRangePickerDay/DateRangePickerDay.js +1 -8
- package/node/DateRangePickerDay/index.js +0 -4
- package/node/DateTimePicker/DateTimePicker.js +1 -6
- package/node/DateTimePicker/index.js +0 -4
- package/node/DesktopDatePicker/DesktopDatePicker.js +1 -6
- package/node/DesktopDatePicker/index.js +0 -4
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +1 -6
- package/node/DesktopDateRangePicker/index.js +0 -4
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -6
- package/node/DesktopDateTimePicker/index.js +0 -4
- package/node/DesktopTimePicker/DesktopTimePicker.js +1 -6
- package/node/DesktopTimePicker/index.js +0 -4
- package/node/LoadingButton/LoadingButton.js +13 -46
- package/node/LoadingButton/index.js +0 -6
- package/node/LoadingButton/loadingButtonClasses.js +0 -5
- package/node/LocalizationProvider/LocalizationProvider.js +0 -6
- package/node/LocalizationProvider/index.js +0 -4
- package/node/Masonry/Masonry.js +27 -83
- package/node/Masonry/index.js +0 -6
- package/node/Masonry/masonryClasses.js +0 -5
- package/node/MobileDatePicker/MobileDatePicker.js +1 -6
- package/node/MobileDatePicker/index.js +0 -4
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +1 -6
- package/node/MobileDateRangePicker/index.js +0 -4
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -6
- package/node/MobileDateTimePicker/index.js +0 -4
- package/node/MobileTimePicker/MobileTimePicker.js +1 -6
- package/node/MobileTimePicker/index.js +0 -4
- package/node/MonthPicker/MonthPicker.js +1 -8
- package/node/MonthPicker/index.js +0 -4
- package/node/Pagination/Pagination.js +1 -11
- package/node/Pagination/index.js +0 -3
- package/node/Pagination/usePagination.js +0 -2
- package/node/PaginationItem/PaginationItem.js +1 -11
- package/node/PaginationItem/index.js +0 -2
- package/node/PickersDay/PickersDay.js +1 -8
- package/node/PickersDay/index.js +0 -4
- package/node/Rating/Rating.js +1 -11
- package/node/Rating/index.js +0 -2
- package/node/Skeleton/Skeleton.js +1 -11
- package/node/Skeleton/index.js +0 -2
- package/node/SpeedDial/SpeedDial.js +1 -11
- package/node/SpeedDial/index.js +0 -2
- package/node/SpeedDialAction/SpeedDialAction.js +1 -11
- package/node/SpeedDialAction/index.js +0 -2
- package/node/SpeedDialIcon/SpeedDialIcon.js +1 -11
- package/node/SpeedDialIcon/index.js +0 -2
- package/node/StaticDatePicker/StaticDatePicker.js +1 -6
- package/node/StaticDatePicker/index.js +0 -4
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +1 -6
- package/node/StaticDateRangePicker/index.js +0 -4
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -6
- package/node/StaticDateTimePicker/index.js +0 -4
- package/node/StaticTimePicker/StaticTimePicker.js +1 -6
- package/node/StaticTimePicker/index.js +0 -4
- package/node/TabContext/TabContext.js +2 -23
- package/node/TabContext/index.js +0 -4
- package/node/TabList/TabList.js +4 -22
- package/node/TabList/index.js +0 -2
- package/node/TabPanel/TabPanel.js +6 -31
- package/node/TabPanel/index.js +0 -6
- package/node/TabPanel/tabPanelClasses.js +0 -5
- package/node/TimePicker/TimePicker.js +1 -6
- package/node/TimePicker/index.js +0 -4
- package/node/Timeline/Timeline.js +9 -32
- package/node/Timeline/TimelineContext.js +0 -6
- package/node/Timeline/index.js +0 -6
- package/node/Timeline/timelineClasses.js +0 -5
- package/node/TimelineConnector/TimelineConnector.js +4 -25
- package/node/TimelineConnector/index.js +0 -6
- package/node/TimelineConnector/timelineConnectorClasses.js +0 -5
- package/node/TimelineContent/TimelineContent.js +4 -28
- package/node/TimelineContent/index.js +0 -6
- package/node/TimelineContent/timelineContentClasses.js +0 -5
- package/node/TimelineDot/TimelineDot.js +8 -36
- package/node/TimelineDot/index.js +0 -6
- package/node/TimelineDot/timelineDotClasses.js +0 -5
- package/node/TimelineItem/TimelineItem.js +5 -31
- package/node/TimelineItem/index.js +0 -6
- package/node/TimelineItem/timelineItemClasses.js +0 -5
- package/node/TimelineOppositeContent/TimelineOppositeContent.js +4 -28
- package/node/TimelineOppositeContent/index.js +0 -6
- package/node/TimelineOppositeContent/timelineOppositeContentClasses.js +0 -5
- package/node/TimelineSeparator/TimelineSeparator.js +4 -25
- package/node/TimelineSeparator/index.js +0 -6
- package/node/TimelineSeparator/timelineSeparatorClasses.js +0 -5
- package/node/ToggleButton/ToggleButton.js +1 -11
- package/node/ToggleButton/index.js +0 -2
- package/node/ToggleButtonGroup/ToggleButtonGroup.js +1 -11
- package/node/ToggleButtonGroup/index.js +0 -2
- package/node/TreeItem/TreeItem.js +19 -73
- package/node/TreeItem/TreeItemContent.js +11 -38
- package/node/TreeItem/index.js +0 -7
- package/node/TreeItem/treeItemClasses.js +0 -5
- package/node/TreeItem/useTreeItem.js +2 -14
- package/node/TreeView/TreeView.js +51 -205
- package/node/TreeView/TreeViewContext.js +0 -6
- package/node/TreeView/descendants.js +18 -40
- package/node/TreeView/index.js +0 -6
- package/node/TreeView/treeViewClasses.js +0 -5
- package/node/YearPicker/YearPicker.js +1 -6
- package/node/YearPicker/index.js +0 -4
- package/node/index.js +1 -107
- package/node/internal/svg-icons/ArrowDropDown.js +0 -7
- package/node/internal/svg-icons/ArrowLeft.js +0 -7
- package/node/internal/svg-icons/ArrowRight.js +0 -7
- package/node/internal/svg-icons/Calendar.js +0 -7
- package/node/internal/svg-icons/Clock.js +0 -7
- package/node/internal/svg-icons/DateRange.js +0 -7
- package/node/internal/svg-icons/Pen.js +0 -7
- package/node/internal/svg-icons/Time.js +0 -7
- package/node/useAutocomplete/index.js +0 -1
- package/package.json +6 -6
|
@@ -11,7 +11,6 @@ import TreeViewContext from './TreeViewContext';
|
|
|
11
11
|
import { DescendantProvider } from './descendants';
|
|
12
12
|
import { getTreeViewUtilityClass } from './treeViewClasses';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
-
|
|
15
14
|
var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
16
15
|
var classes = ownerState.classes;
|
|
17
16
|
var slots = {
|
|
@@ -19,7 +18,6 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
|
19
18
|
};
|
|
20
19
|
return composeClasses(slots, getTreeViewUtilityClass, classes);
|
|
21
20
|
};
|
|
22
|
-
|
|
23
21
|
var TreeViewRoot = styled('ul', {
|
|
24
22
|
name: 'MuiTreeView',
|
|
25
23
|
slot: 'Root',
|
|
@@ -32,25 +30,20 @@ var TreeViewRoot = styled('ul', {
|
|
|
32
30
|
listStyle: 'none',
|
|
33
31
|
outline: 0
|
|
34
32
|
});
|
|
35
|
-
|
|
36
33
|
function isPrintableCharacter(string) {
|
|
37
34
|
return string && string.length === 1 && string.match(/\S/);
|
|
38
35
|
}
|
|
39
|
-
|
|
40
36
|
function findNextFirstChar(firstChars, startIndex, char) {
|
|
41
37
|
for (var i = startIndex; i < firstChars.length; i += 1) {
|
|
42
38
|
if (char === firstChars[i]) {
|
|
43
39
|
return i;
|
|
44
40
|
}
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
return -1;
|
|
48
43
|
}
|
|
49
|
-
|
|
50
44
|
function noopSelection() {
|
|
51
45
|
return false;
|
|
52
46
|
}
|
|
53
|
-
|
|
54
47
|
var defaultDefaultExpanded = [];
|
|
55
48
|
var defaultDefaultSelected = [];
|
|
56
49
|
var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
@@ -58,37 +51,34 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
58
51
|
props: inProps,
|
|
59
52
|
name: 'MuiTreeView'
|
|
60
53
|
});
|
|
61
|
-
|
|
62
54
|
var children = props.children,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
55
|
+
className = props.className,
|
|
56
|
+
defaultCollapseIcon = props.defaultCollapseIcon,
|
|
57
|
+
defaultEndIcon = props.defaultEndIcon,
|
|
58
|
+
_props$defaultExpande = props.defaultExpanded,
|
|
59
|
+
defaultExpanded = _props$defaultExpande === void 0 ? defaultDefaultExpanded : _props$defaultExpande,
|
|
60
|
+
defaultExpandIcon = props.defaultExpandIcon,
|
|
61
|
+
defaultParentIcon = props.defaultParentIcon,
|
|
62
|
+
_props$defaultSelecte = props.defaultSelected,
|
|
63
|
+
defaultSelected = _props$defaultSelecte === void 0 ? defaultDefaultSelected : _props$defaultSelecte,
|
|
64
|
+
_props$disabledItemsF = props.disabledItemsFocusable,
|
|
65
|
+
disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,
|
|
66
|
+
_props$disableSelecti = props.disableSelection,
|
|
67
|
+
disableSelection = _props$disableSelecti === void 0 ? false : _props$disableSelecti,
|
|
68
|
+
expandedProp = props.expanded,
|
|
69
|
+
idProp = props.id,
|
|
70
|
+
_props$multiSelect = props.multiSelect,
|
|
71
|
+
multiSelect = _props$multiSelect === void 0 ? false : _props$multiSelect,
|
|
72
|
+
onBlur = props.onBlur,
|
|
73
|
+
onFocus = props.onFocus,
|
|
74
|
+
onKeyDown = props.onKeyDown,
|
|
75
|
+
onNodeFocus = props.onNodeFocus,
|
|
76
|
+
onNodeSelect = props.onNodeSelect,
|
|
77
|
+
onNodeToggle = props.onNodeToggle,
|
|
78
|
+
selectedProp = props.selected,
|
|
79
|
+
other = _objectWithoutProperties(props, ["children", "className", "defaultCollapseIcon", "defaultEndIcon", "defaultExpanded", "defaultExpandIcon", "defaultParentIcon", "defaultSelected", "disabledItemsFocusable", "disableSelection", "expanded", "id", "multiSelect", "onBlur", "onFocus", "onKeyDown", "onNodeFocus", "onNodeSelect", "onNodeToggle", "selected"]);
|
|
89
80
|
var theme = useTheme();
|
|
90
81
|
var isRtl = theme.direction === 'rtl';
|
|
91
|
-
|
|
92
82
|
var ownerState = _extends({}, props, {
|
|
93
83
|
defaultExpanded: defaultExpanded,
|
|
94
84
|
defaultSelected: defaultSelected,
|
|
@@ -96,43 +86,36 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
96
86
|
disableSelection: disableSelection,
|
|
97
87
|
multiSelect: multiSelect
|
|
98
88
|
});
|
|
99
|
-
|
|
100
89
|
var classes = useUtilityClasses(ownerState);
|
|
101
90
|
var treeId = useId(idProp);
|
|
102
91
|
var treeRef = React.useRef(null);
|
|
103
92
|
var handleRef = useForkRef(treeRef, ref);
|
|
104
|
-
|
|
105
93
|
var _React$useState = React.useState(null),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
94
|
+
focusedNodeId = _React$useState[0],
|
|
95
|
+
setFocusedNodeId = _React$useState[1];
|
|
109
96
|
var nodeMap = React.useRef({});
|
|
110
97
|
var firstCharMap = React.useRef({});
|
|
111
|
-
|
|
112
98
|
var _useControlled = useControlled({
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
99
|
+
controlled: expandedProp,
|
|
100
|
+
default: defaultExpanded,
|
|
101
|
+
name: 'TreeView',
|
|
102
|
+
state: 'expanded'
|
|
103
|
+
}),
|
|
104
|
+
_useControlled2 = _slicedToArray(_useControlled, 2),
|
|
105
|
+
expanded = _useControlled2[0],
|
|
106
|
+
setExpandedState = _useControlled2[1];
|
|
122
107
|
var _useControlled3 = useControlled({
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
108
|
+
controlled: selectedProp,
|
|
109
|
+
default: defaultSelected,
|
|
110
|
+
name: 'TreeView',
|
|
111
|
+
state: 'selected'
|
|
112
|
+
}),
|
|
113
|
+
_useControlled4 = _slicedToArray(_useControlled3, 2),
|
|
114
|
+
selected = _useControlled4[0],
|
|
115
|
+
setSelectedState = _useControlled4[1];
|
|
131
116
|
/*
|
|
132
117
|
* Status Helpers
|
|
133
118
|
*/
|
|
134
|
-
|
|
135
|
-
|
|
136
119
|
var isExpanded = React.useCallback(function (id) {
|
|
137
120
|
return Array.isArray(expanded) ? expanded.indexOf(id) !== -1 : false;
|
|
138
121
|
}, [expanded]);
|
|
@@ -143,36 +126,32 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
143
126
|
return Array.isArray(selected) ? selected.indexOf(id) !== -1 : selected === id;
|
|
144
127
|
}, [selected]);
|
|
145
128
|
var isDisabled = React.useCallback(function (id) {
|
|
146
|
-
var node = nodeMap.current[id];
|
|
129
|
+
var node = nodeMap.current[id];
|
|
147
130
|
|
|
131
|
+
// This can be called before the node has been added to the node map.
|
|
148
132
|
if (!node) {
|
|
149
133
|
return false;
|
|
150
134
|
}
|
|
151
|
-
|
|
152
135
|
if (node.disabled) {
|
|
153
136
|
return true;
|
|
154
137
|
}
|
|
155
|
-
|
|
156
138
|
while (node.parentId != null) {
|
|
157
139
|
node = nodeMap.current[node.parentId];
|
|
158
|
-
|
|
159
140
|
if (node.disabled) {
|
|
160
141
|
return true;
|
|
161
142
|
}
|
|
162
143
|
}
|
|
163
|
-
|
|
164
144
|
return false;
|
|
165
145
|
}, []);
|
|
166
|
-
|
|
167
146
|
var isFocused = function isFocused(id) {
|
|
168
147
|
return focusedNodeId === id;
|
|
169
148
|
};
|
|
149
|
+
|
|
170
150
|
/*
|
|
171
151
|
* Child Helpers
|
|
172
152
|
*/
|
|
173
|
-
// Using Object.keys -> .map to mimic Object.values we should replace with Object.values() once we stop IE11 support.
|
|
174
|
-
|
|
175
153
|
|
|
154
|
+
// Using Object.keys -> .map to mimic Object.values we should replace with Object.values() once we stop IE11 support.
|
|
176
155
|
var getChildrenIds = function getChildrenIds(id) {
|
|
177
156
|
return Object.keys(nodeMap.current).map(function (key) {
|
|
178
157
|
return nodeMap.current[key];
|
|
@@ -184,82 +163,66 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
184
163
|
return child.id;
|
|
185
164
|
});
|
|
186
165
|
};
|
|
187
|
-
|
|
188
166
|
var getNavigableChildrenIds = function getNavigableChildrenIds(id) {
|
|
189
167
|
var childrenIds = getChildrenIds(id);
|
|
190
|
-
|
|
191
168
|
if (!disabledItemsFocusable) {
|
|
192
169
|
childrenIds = childrenIds.filter(function (node) {
|
|
193
170
|
return !isDisabled(node);
|
|
194
171
|
});
|
|
195
172
|
}
|
|
196
|
-
|
|
197
173
|
return childrenIds;
|
|
198
174
|
};
|
|
175
|
+
|
|
199
176
|
/*
|
|
200
177
|
* Node Helpers
|
|
201
178
|
*/
|
|
202
179
|
|
|
203
|
-
|
|
204
180
|
var getNextNode = function getNextNode(id) {
|
|
205
181
|
// If expanded get first child
|
|
206
182
|
if (isExpanded(id) && getNavigableChildrenIds(id).length > 0) {
|
|
207
183
|
return getNavigableChildrenIds(id)[0];
|
|
208
184
|
}
|
|
209
|
-
|
|
210
185
|
var node = nodeMap.current[id];
|
|
211
|
-
|
|
212
186
|
while (node != null) {
|
|
213
187
|
// Try to get next sibling
|
|
214
188
|
var siblings = getNavigableChildrenIds(node.parentId);
|
|
215
189
|
var nextSibling = siblings[siblings.indexOf(node.id) + 1];
|
|
216
|
-
|
|
217
190
|
if (nextSibling) {
|
|
218
191
|
return nextSibling;
|
|
219
|
-
}
|
|
220
|
-
|
|
192
|
+
}
|
|
221
193
|
|
|
194
|
+
// If the sibling does not exist, go up a level to the parent and try again.
|
|
222
195
|
node = nodeMap.current[node.parentId];
|
|
223
196
|
}
|
|
224
|
-
|
|
225
197
|
return null;
|
|
226
198
|
};
|
|
227
|
-
|
|
228
199
|
var getPreviousNode = function getPreviousNode(id) {
|
|
229
200
|
var node = nodeMap.current[id];
|
|
230
201
|
var siblings = getNavigableChildrenIds(node.parentId);
|
|
231
202
|
var nodeIndex = siblings.indexOf(id);
|
|
232
|
-
|
|
233
203
|
if (nodeIndex === 0) {
|
|
234
204
|
return node.parentId;
|
|
235
205
|
}
|
|
236
|
-
|
|
237
206
|
var currentNode = siblings[nodeIndex - 1];
|
|
238
|
-
|
|
239
207
|
while (isExpanded(currentNode) && getNavigableChildrenIds(currentNode).length > 0) {
|
|
240
208
|
currentNode = getNavigableChildrenIds(currentNode).pop();
|
|
241
209
|
}
|
|
242
|
-
|
|
243
210
|
return currentNode;
|
|
244
211
|
};
|
|
245
|
-
|
|
246
212
|
var getLastNode = function getLastNode() {
|
|
247
213
|
var lastNode = getNavigableChildrenIds(null).pop();
|
|
248
|
-
|
|
249
214
|
while (isExpanded(lastNode)) {
|
|
250
215
|
lastNode = getNavigableChildrenIds(lastNode).pop();
|
|
251
216
|
}
|
|
252
|
-
|
|
253
217
|
return lastNode;
|
|
254
218
|
};
|
|
255
|
-
|
|
256
219
|
var getFirstNode = function getFirstNode() {
|
|
257
220
|
return getNavigableChildrenIds(null)[0];
|
|
258
221
|
};
|
|
259
|
-
|
|
260
222
|
var getParent = function getParent(id) {
|
|
261
223
|
return nodeMap.current[id].parentId;
|
|
262
224
|
};
|
|
225
|
+
|
|
263
226
|
/**
|
|
264
227
|
* This is used to determine the start and end of a selection range so
|
|
265
228
|
* we can get the nodes between the two border nodes.
|
|
@@ -274,20 +237,15 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
274
237
|
* Another way to put it is which node is shallower in a trémaux tree
|
|
275
238
|
* https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree
|
|
276
239
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
240
|
var findOrderInTremauxTree = function findOrderInTremauxTree(nodeAId, nodeBId) {
|
|
280
241
|
if (nodeAId === nodeBId) {
|
|
281
242
|
return [nodeAId, nodeBId];
|
|
282
243
|
}
|
|
283
|
-
|
|
284
244
|
var nodeA = nodeMap.current[nodeAId];
|
|
285
245
|
var nodeB = nodeMap.current[nodeBId];
|
|
286
|
-
|
|
287
246
|
if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {
|
|
288
247
|
return nodeB.parentId === nodeA.id ? [nodeA.id, nodeB.id] : [nodeB.id, nodeA.id];
|
|
289
248
|
}
|
|
290
|
-
|
|
291
249
|
var aFamily = [nodeA.id];
|
|
292
250
|
var bFamily = [nodeB.id];
|
|
293
251
|
var aAncestor = nodeA.parentId;
|
|
@@ -296,129 +254,113 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
296
254
|
var bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
|
|
297
255
|
var continueA = true;
|
|
298
256
|
var continueB = true;
|
|
299
|
-
|
|
300
257
|
while (!bAncestorIsCommon && !aAncestorIsCommon) {
|
|
301
258
|
if (continueA) {
|
|
302
259
|
aFamily.push(aAncestor);
|
|
303
260
|
aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
|
|
304
261
|
continueA = aAncestor !== null;
|
|
305
|
-
|
|
306
262
|
if (!aAncestorIsCommon && continueA) {
|
|
307
263
|
aAncestor = nodeMap.current[aAncestor].parentId;
|
|
308
264
|
}
|
|
309
265
|
}
|
|
310
|
-
|
|
311
266
|
if (continueB && !aAncestorIsCommon) {
|
|
312
267
|
bFamily.push(bAncestor);
|
|
313
268
|
bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
|
|
314
269
|
continueB = bAncestor !== null;
|
|
315
|
-
|
|
316
270
|
if (!bAncestorIsCommon && continueB) {
|
|
317
271
|
bAncestor = nodeMap.current[bAncestor].parentId;
|
|
318
272
|
}
|
|
319
273
|
}
|
|
320
274
|
}
|
|
321
|
-
|
|
322
275
|
var commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;
|
|
323
276
|
var ancestorFamily = getChildrenIds(commonAncestor);
|
|
324
277
|
var aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];
|
|
325
278
|
var bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];
|
|
326
279
|
return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [nodeAId, nodeBId] : [nodeBId, nodeAId];
|
|
327
280
|
};
|
|
328
|
-
|
|
329
281
|
var getNodesInRange = function getNodesInRange(nodeA, nodeB) {
|
|
330
282
|
var _findOrderInTremauxTr = findOrderInTremauxTree(nodeA, nodeB),
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
283
|
+
_findOrderInTremauxTr2 = _slicedToArray(_findOrderInTremauxTr, 2),
|
|
284
|
+
first = _findOrderInTremauxTr2[0],
|
|
285
|
+
last = _findOrderInTremauxTr2[1];
|
|
335
286
|
var nodes = [first];
|
|
336
287
|
var current = first;
|
|
337
|
-
|
|
338
288
|
while (current !== last) {
|
|
339
289
|
current = getNextNode(current);
|
|
340
290
|
nodes.push(current);
|
|
341
291
|
}
|
|
342
|
-
|
|
343
292
|
return nodes;
|
|
344
293
|
};
|
|
294
|
+
|
|
345
295
|
/*
|
|
346
296
|
* Focus Helpers
|
|
347
297
|
*/
|
|
348
298
|
|
|
349
|
-
|
|
350
299
|
var focus = function focus(event, id) {
|
|
351
300
|
if (id) {
|
|
352
301
|
setFocusedNodeId(id);
|
|
353
|
-
|
|
354
302
|
if (onNodeFocus) {
|
|
355
303
|
onNodeFocus(event, id);
|
|
356
304
|
}
|
|
357
305
|
}
|
|
358
306
|
};
|
|
359
|
-
|
|
360
307
|
var focusNextNode = function focusNextNode(event, id) {
|
|
361
308
|
return focus(event, getNextNode(id));
|
|
362
309
|
};
|
|
363
|
-
|
|
364
310
|
var focusPreviousNode = function focusPreviousNode(event, id) {
|
|
365
311
|
return focus(event, getPreviousNode(id));
|
|
366
312
|
};
|
|
367
|
-
|
|
368
313
|
var focusFirstNode = function focusFirstNode(event) {
|
|
369
314
|
return focus(event, getFirstNode());
|
|
370
315
|
};
|
|
371
|
-
|
|
372
316
|
var focusLastNode = function focusLastNode(event) {
|
|
373
317
|
return focus(event, getLastNode());
|
|
374
318
|
};
|
|
375
|
-
|
|
376
319
|
var focusByFirstCharacter = function focusByFirstCharacter(event, id, char) {
|
|
377
320
|
var start;
|
|
378
321
|
var index;
|
|
379
322
|
var lowercaseChar = char.toLowerCase();
|
|
380
323
|
var firstCharIds = [];
|
|
381
|
-
var firstChars = [];
|
|
382
|
-
|
|
324
|
+
var firstChars = [];
|
|
325
|
+
// This really only works since the ids are strings
|
|
383
326
|
Object.keys(firstCharMap.current).forEach(function (nodeId) {
|
|
384
327
|
var firstChar = firstCharMap.current[nodeId];
|
|
385
328
|
var map = nodeMap.current[nodeId];
|
|
386
329
|
var visible = map.parentId ? isExpanded(map.parentId) : true;
|
|
387
330
|
var shouldBeSkipped = disabledItemsFocusable ? false : isDisabled(nodeId);
|
|
388
|
-
|
|
389
331
|
if (visible && !shouldBeSkipped) {
|
|
390
332
|
firstCharIds.push(nodeId);
|
|
391
333
|
firstChars.push(firstChar);
|
|
392
334
|
}
|
|
393
|
-
});
|
|
335
|
+
});
|
|
394
336
|
|
|
337
|
+
// Get start index for search based on position of currentItem
|
|
395
338
|
start = firstCharIds.indexOf(id) + 1;
|
|
396
|
-
|
|
397
339
|
if (start >= firstCharIds.length) {
|
|
398
340
|
start = 0;
|
|
399
|
-
}
|
|
400
|
-
|
|
341
|
+
}
|
|
401
342
|
|
|
402
|
-
|
|
343
|
+
// Check remaining slots in the menu
|
|
344
|
+
index = findNextFirstChar(firstChars, start, lowercaseChar);
|
|
403
345
|
|
|
346
|
+
// If not found in remaining slots, check from beginning
|
|
404
347
|
if (index === -1) {
|
|
405
348
|
index = findNextFirstChar(firstChars, 0, lowercaseChar);
|
|
406
|
-
}
|
|
407
|
-
|
|
349
|
+
}
|
|
408
350
|
|
|
351
|
+
// If match was found...
|
|
409
352
|
if (index > -1) {
|
|
410
353
|
focus(event, firstCharIds[index]);
|
|
411
354
|
}
|
|
412
355
|
};
|
|
356
|
+
|
|
413
357
|
/*
|
|
414
358
|
* Expansion Helpers
|
|
415
359
|
*/
|
|
416
360
|
|
|
417
|
-
|
|
418
361
|
var toggleExpansion = function toggleExpansion(event) {
|
|
419
362
|
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : focusedNodeId;
|
|
420
363
|
var newExpanded;
|
|
421
|
-
|
|
422
364
|
if (expanded.indexOf(value) !== -1) {
|
|
423
365
|
newExpanded = expanded.filter(function (id) {
|
|
424
366
|
return id !== value;
|
|
@@ -426,14 +368,11 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
426
368
|
} else {
|
|
427
369
|
newExpanded = [value].concat(expanded);
|
|
428
370
|
}
|
|
429
|
-
|
|
430
371
|
if (onNodeToggle) {
|
|
431
372
|
onNodeToggle(event, newExpanded);
|
|
432
373
|
}
|
|
433
|
-
|
|
434
374
|
setExpandedState(newExpanded);
|
|
435
375
|
};
|
|
436
|
-
|
|
437
376
|
var expandAllSiblings = function expandAllSiblings(event, id) {
|
|
438
377
|
var map = nodeMap.current[id];
|
|
439
378
|
var siblings = getChildrenIds(map.parentId);
|
|
@@ -441,38 +380,32 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
441
380
|
return isExpandable(child) && !isExpanded(child);
|
|
442
381
|
});
|
|
443
382
|
var newExpanded = expanded.concat(diff);
|
|
444
|
-
|
|
445
383
|
if (diff.length > 0) {
|
|
446
384
|
setExpandedState(newExpanded);
|
|
447
|
-
|
|
448
385
|
if (onNodeToggle) {
|
|
449
386
|
onNodeToggle(event, newExpanded);
|
|
450
387
|
}
|
|
451
388
|
}
|
|
452
389
|
};
|
|
390
|
+
|
|
453
391
|
/*
|
|
454
392
|
* Selection Helpers
|
|
455
393
|
*/
|
|
456
394
|
|
|
457
|
-
|
|
458
395
|
var lastSelectedNode = React.useRef(null);
|
|
459
396
|
var lastSelectionWasRange = React.useRef(false);
|
|
460
397
|
var currentRangeSelection = React.useRef([]);
|
|
461
|
-
|
|
462
398
|
var handleRangeArrowSelect = function handleRangeArrowSelect(event, nodes) {
|
|
463
399
|
var base = selected.slice();
|
|
464
400
|
var start = nodes.start,
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
401
|
+
next = nodes.next,
|
|
402
|
+
current = nodes.current;
|
|
468
403
|
if (!next || !current) {
|
|
469
404
|
return;
|
|
470
405
|
}
|
|
471
|
-
|
|
472
406
|
if (currentRangeSelection.current.indexOf(current) === -1) {
|
|
473
407
|
currentRangeSelection.current = [];
|
|
474
408
|
}
|
|
475
|
-
|
|
476
409
|
if (lastSelectionWasRange.current) {
|
|
477
410
|
if (currentRangeSelection.current.indexOf(next) !== -1) {
|
|
478
411
|
base = base.filter(function (id) {
|
|
@@ -489,25 +422,20 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
489
422
|
base.push(next);
|
|
490
423
|
currentRangeSelection.current.push(current, next);
|
|
491
424
|
}
|
|
492
|
-
|
|
493
425
|
if (onNodeSelect) {
|
|
494
426
|
onNodeSelect(event, base);
|
|
495
427
|
}
|
|
496
|
-
|
|
497
428
|
setSelectedState(base);
|
|
498
429
|
};
|
|
499
|
-
|
|
500
430
|
var handleRangeSelect = function handleRangeSelect(event, nodes) {
|
|
501
431
|
var base = selected.slice();
|
|
502
432
|
var start = nodes.start,
|
|
503
|
-
|
|
504
|
-
|
|
433
|
+
end = nodes.end; // If last selection was a range selection ignore nodes that were selected.
|
|
505
434
|
if (lastSelectionWasRange.current) {
|
|
506
435
|
base = base.filter(function (id) {
|
|
507
436
|
return currentRangeSelection.current.indexOf(id) === -1;
|
|
508
437
|
});
|
|
509
438
|
}
|
|
510
|
-
|
|
511
439
|
var range = getNodesInRange(start, end);
|
|
512
440
|
range = range.filter(function (node) {
|
|
513
441
|
return !isDisabled(node);
|
|
@@ -517,17 +445,13 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
517
445
|
newSelected = newSelected.filter(function (id, i) {
|
|
518
446
|
return newSelected.indexOf(id) === i;
|
|
519
447
|
});
|
|
520
|
-
|
|
521
448
|
if (onNodeSelect) {
|
|
522
449
|
onNodeSelect(event, newSelected);
|
|
523
450
|
}
|
|
524
|
-
|
|
525
451
|
setSelectedState(newSelected);
|
|
526
452
|
};
|
|
527
|
-
|
|
528
453
|
var handleMultipleSelect = function handleMultipleSelect(event, value) {
|
|
529
454
|
var newSelected;
|
|
530
|
-
|
|
531
455
|
if (selected.indexOf(value) !== -1) {
|
|
532
456
|
newSelected = selected.filter(function (id) {
|
|
533
457
|
return id !== value;
|
|
@@ -535,50 +459,39 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
535
459
|
} else {
|
|
536
460
|
newSelected = [value].concat(selected);
|
|
537
461
|
}
|
|
538
|
-
|
|
539
462
|
if (onNodeSelect) {
|
|
540
463
|
onNodeSelect(event, newSelected);
|
|
541
464
|
}
|
|
542
|
-
|
|
543
465
|
setSelectedState(newSelected);
|
|
544
466
|
};
|
|
545
|
-
|
|
546
467
|
var handleSingleSelect = function handleSingleSelect(event, value) {
|
|
547
468
|
var newSelected = multiSelect ? [value] : value;
|
|
548
|
-
|
|
549
469
|
if (onNodeSelect) {
|
|
550
470
|
onNodeSelect(event, newSelected);
|
|
551
471
|
}
|
|
552
|
-
|
|
553
472
|
setSelectedState(newSelected);
|
|
554
473
|
};
|
|
555
|
-
|
|
556
474
|
var selectNode = function selectNode(event, id) {
|
|
557
475
|
var multiple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
558
|
-
|
|
559
476
|
if (id) {
|
|
560
477
|
if (multiple) {
|
|
561
478
|
handleMultipleSelect(event, id);
|
|
562
479
|
} else {
|
|
563
480
|
handleSingleSelect(event, id);
|
|
564
481
|
}
|
|
565
|
-
|
|
566
482
|
lastSelectedNode.current = id;
|
|
567
483
|
lastSelectionWasRange.current = false;
|
|
568
484
|
currentRangeSelection.current = [];
|
|
569
485
|
return true;
|
|
570
486
|
}
|
|
571
|
-
|
|
572
487
|
return false;
|
|
573
488
|
};
|
|
574
|
-
|
|
575
489
|
var selectRange = function selectRange(event, nodes) {
|
|
576
490
|
var stacked = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
577
491
|
var _nodes$start = nodes.start,
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
492
|
+
start = _nodes$start === void 0 ? lastSelectedNode.current : _nodes$start,
|
|
493
|
+
end = nodes.end,
|
|
494
|
+
current = nodes.current;
|
|
582
495
|
if (stacked) {
|
|
583
496
|
handleRangeArrowSelect(event, {
|
|
584
497
|
start: start,
|
|
@@ -591,34 +504,28 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
591
504
|
end: end
|
|
592
505
|
});
|
|
593
506
|
}
|
|
594
|
-
|
|
595
507
|
lastSelectionWasRange.current = true;
|
|
596
508
|
};
|
|
597
|
-
|
|
598
509
|
var rangeSelectToFirst = function rangeSelectToFirst(event, id) {
|
|
599
510
|
if (!lastSelectedNode.current) {
|
|
600
511
|
lastSelectedNode.current = id;
|
|
601
512
|
}
|
|
602
|
-
|
|
603
513
|
var start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
|
|
604
514
|
selectRange(event, {
|
|
605
515
|
start: start,
|
|
606
516
|
end: getFirstNode()
|
|
607
517
|
});
|
|
608
518
|
};
|
|
609
|
-
|
|
610
519
|
var rangeSelectToLast = function rangeSelectToLast(event, id) {
|
|
611
520
|
if (!lastSelectedNode.current) {
|
|
612
521
|
lastSelectedNode.current = id;
|
|
613
522
|
}
|
|
614
|
-
|
|
615
523
|
var start = lastSelectionWasRange.current ? lastSelectedNode.current : id;
|
|
616
524
|
selectRange(event, {
|
|
617
525
|
start: start,
|
|
618
526
|
end: getLastNode()
|
|
619
527
|
});
|
|
620
528
|
};
|
|
621
|
-
|
|
622
529
|
var selectNextNode = function selectNextNode(event, id) {
|
|
623
530
|
if (!isDisabled(getNextNode(id))) {
|
|
624
531
|
selectRange(event, {
|
|
@@ -627,7 +534,6 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
627
534
|
}, true);
|
|
628
535
|
}
|
|
629
536
|
};
|
|
630
|
-
|
|
631
537
|
var selectPreviousNode = function selectPreviousNode(event, id) {
|
|
632
538
|
if (!isDisabled(getPreviousNode(id))) {
|
|
633
539
|
selectRange(event, {
|
|
@@ -636,25 +542,23 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
636
542
|
}, true);
|
|
637
543
|
}
|
|
638
544
|
};
|
|
639
|
-
|
|
640
545
|
var selectAllNodes = function selectAllNodes(event) {
|
|
641
546
|
selectRange(event, {
|
|
642
547
|
start: getFirstNode(),
|
|
643
548
|
end: getLastNode()
|
|
644
549
|
});
|
|
645
550
|
};
|
|
551
|
+
|
|
646
552
|
/*
|
|
647
553
|
* Mapping Helpers
|
|
648
554
|
*/
|
|
649
|
-
|
|
650
|
-
|
|
651
555
|
var registerNode = React.useCallback(function (node) {
|
|
652
556
|
var id = node.id,
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
557
|
+
index = node.index,
|
|
558
|
+
parentId = node.parentId,
|
|
559
|
+
expandable = node.expandable,
|
|
560
|
+
idAttribute = node.idAttribute,
|
|
561
|
+
disabled = node.disabled;
|
|
658
562
|
nodeMap.current[id] = {
|
|
659
563
|
id: id,
|
|
660
564
|
index: index,
|
|
@@ -666,14 +570,12 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
666
570
|
}, []);
|
|
667
571
|
var unregisterNode = React.useCallback(function (id) {
|
|
668
572
|
var newMap = _extends({}, nodeMap.current);
|
|
669
|
-
|
|
670
573
|
delete newMap[id];
|
|
671
574
|
nodeMap.current = newMap;
|
|
672
575
|
setFocusedNodeId(function (oldFocusedNodeId) {
|
|
673
576
|
if (oldFocusedNodeId === id && treeRef.current === ownerDocument(treeRef.current).activeElement) {
|
|
674
577
|
return getChildrenIds(null)[0];
|
|
675
578
|
}
|
|
676
|
-
|
|
677
579
|
return oldFocusedNodeId;
|
|
678
580
|
});
|
|
679
581
|
}, []);
|
|
@@ -682,10 +584,10 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
682
584
|
}, []);
|
|
683
585
|
var unMapFirstChar = React.useCallback(function (id) {
|
|
684
586
|
var newMap = _extends({}, firstCharMap.current);
|
|
685
|
-
|
|
686
587
|
delete newMap[id];
|
|
687
588
|
firstCharMap.current = newMap;
|
|
688
589
|
}, []);
|
|
590
|
+
|
|
689
591
|
/**
|
|
690
592
|
* Event handlers and Navigation
|
|
691
593
|
*/
|
|
@@ -698,36 +600,29 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
698
600
|
toggleExpansion(event);
|
|
699
601
|
}
|
|
700
602
|
}
|
|
701
|
-
|
|
702
603
|
return true;
|
|
703
604
|
};
|
|
704
|
-
|
|
705
605
|
var handlePreviousArrow = function handlePreviousArrow(event) {
|
|
706
606
|
if (isExpanded(focusedNodeId) && !isDisabled(focusedNodeId)) {
|
|
707
607
|
toggleExpansion(event, focusedNodeId);
|
|
708
608
|
return true;
|
|
709
609
|
}
|
|
710
|
-
|
|
711
610
|
var parent = getParent(focusedNodeId);
|
|
712
|
-
|
|
713
611
|
if (parent) {
|
|
714
612
|
focus(event, parent);
|
|
715
613
|
return true;
|
|
716
614
|
}
|
|
717
|
-
|
|
718
615
|
return false;
|
|
719
616
|
};
|
|
720
|
-
|
|
721
617
|
var handleKeyDown = function handleKeyDown(event) {
|
|
722
618
|
var flag = false;
|
|
723
|
-
var key = event.key;
|
|
619
|
+
var key = event.key;
|
|
724
620
|
|
|
621
|
+
// If the tree is empty there will be no focused node
|
|
725
622
|
if (event.altKey || event.currentTarget !== event.target || !focusedNodeId) {
|
|
726
623
|
return;
|
|
727
624
|
}
|
|
728
|
-
|
|
729
625
|
var ctrlPressed = event.ctrlKey || event.metaKey;
|
|
730
|
-
|
|
731
626
|
switch (key) {
|
|
732
627
|
case ' ':
|
|
733
628
|
if (!disableSelection && !isDisabled(focusedNodeId)) {
|
|
@@ -742,10 +637,8 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
742
637
|
flag = selectNode(event, focusedNodeId);
|
|
743
638
|
}
|
|
744
639
|
}
|
|
745
|
-
|
|
746
640
|
event.stopPropagation();
|
|
747
641
|
break;
|
|
748
|
-
|
|
749
642
|
case 'Enter':
|
|
750
643
|
if (!isDisabled(focusedNodeId)) {
|
|
751
644
|
if (isExpandable(focusedNodeId)) {
|
|
@@ -757,64 +650,50 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
757
650
|
flag = selectNode(event, focusedNodeId);
|
|
758
651
|
}
|
|
759
652
|
}
|
|
760
|
-
|
|
761
653
|
event.stopPropagation();
|
|
762
654
|
break;
|
|
763
|
-
|
|
764
655
|
case 'ArrowDown':
|
|
765
656
|
if (multiSelect && event.shiftKey && !disableSelection) {
|
|
766
657
|
selectNextNode(event, focusedNodeId);
|
|
767
658
|
}
|
|
768
|
-
|
|
769
659
|
focusNextNode(event, focusedNodeId);
|
|
770
660
|
flag = true;
|
|
771
661
|
break;
|
|
772
|
-
|
|
773
662
|
case 'ArrowUp':
|
|
774
663
|
if (multiSelect && event.shiftKey && !disableSelection) {
|
|
775
664
|
selectPreviousNode(event, focusedNodeId);
|
|
776
665
|
}
|
|
777
|
-
|
|
778
666
|
focusPreviousNode(event, focusedNodeId);
|
|
779
667
|
flag = true;
|
|
780
668
|
break;
|
|
781
|
-
|
|
782
669
|
case 'ArrowRight':
|
|
783
670
|
if (isRtl) {
|
|
784
671
|
flag = handlePreviousArrow(event);
|
|
785
672
|
} else {
|
|
786
673
|
flag = handleNextArrow(event);
|
|
787
674
|
}
|
|
788
|
-
|
|
789
675
|
break;
|
|
790
|
-
|
|
791
676
|
case 'ArrowLeft':
|
|
792
677
|
if (isRtl) {
|
|
793
678
|
flag = handleNextArrow(event);
|
|
794
679
|
} else {
|
|
795
680
|
flag = handlePreviousArrow(event);
|
|
796
681
|
}
|
|
797
|
-
|
|
798
682
|
break;
|
|
799
|
-
|
|
800
683
|
case 'Home':
|
|
801
684
|
if (multiSelect && ctrlPressed && event.shiftKey && !disableSelection && !isDisabled(focusedNodeId)) {
|
|
802
685
|
rangeSelectToFirst(event, focusedNodeId);
|
|
803
686
|
}
|
|
804
|
-
|
|
805
687
|
focusFirstNode(event);
|
|
806
688
|
flag = true;
|
|
807
689
|
break;
|
|
808
|
-
|
|
809
690
|
case 'End':
|
|
810
691
|
if (multiSelect && ctrlPressed && event.shiftKey && !disableSelection && !isDisabled(focusedNodeId)) {
|
|
811
692
|
rangeSelectToLast(event, focusedNodeId);
|
|
812
693
|
}
|
|
813
|
-
|
|
814
694
|
focusLastNode(event);
|
|
815
695
|
flag = true;
|
|
816
696
|
break;
|
|
817
|
-
|
|
818
697
|
default:
|
|
819
698
|
if (key === '*') {
|
|
820
699
|
expandAllSiblings(event, focusedNodeId);
|
|
@@ -826,39 +705,31 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
826
705
|
focusByFirstCharacter(event, focusedNodeId, key);
|
|
827
706
|
flag = true;
|
|
828
707
|
}
|
|
829
|
-
|
|
830
708
|
}
|
|
831
|
-
|
|
832
709
|
if (flag) {
|
|
833
710
|
event.preventDefault();
|
|
834
711
|
event.stopPropagation();
|
|
835
712
|
}
|
|
836
|
-
|
|
837
713
|
if (onKeyDown) {
|
|
838
714
|
onKeyDown(event);
|
|
839
715
|
}
|
|
840
716
|
};
|
|
841
|
-
|
|
842
717
|
var handleFocus = function handleFocus(event) {
|
|
843
718
|
// if the event bubbled (which is React specific) we don't want to steal focus
|
|
844
719
|
if (event.target === event.currentTarget) {
|
|
845
720
|
var firstSelected = Array.isArray(selected) ? selected[0] : selected;
|
|
846
721
|
focus(event, firstSelected || getNavigableChildrenIds(null)[0]);
|
|
847
722
|
}
|
|
848
|
-
|
|
849
723
|
if (onFocus) {
|
|
850
724
|
onFocus(event);
|
|
851
725
|
}
|
|
852
726
|
};
|
|
853
|
-
|
|
854
727
|
var handleBlur = function handleBlur(event) {
|
|
855
728
|
setFocusedNodeId(null);
|
|
856
|
-
|
|
857
729
|
if (onBlur) {
|
|
858
730
|
onBlur(event);
|
|
859
731
|
}
|
|
860
732
|
};
|
|
861
|
-
|
|
862
733
|
var activeDescendant = nodeMap.current[focusedNodeId] ? nodeMap.current[focusedNodeId].idAttribute : null;
|
|
863
734
|
return /*#__PURE__*/_jsx(TreeViewContext.Provider, {
|
|
864
735
|
// TODO: fix lint error:
|
|
@@ -906,108 +777,88 @@ var TreeView = /*#__PURE__*/React.forwardRef(function TreeView(inProps, ref) {
|
|
|
906
777
|
})
|
|
907
778
|
});
|
|
908
779
|
});
|
|
909
|
-
process.env.NODE_ENV !== "production" ? TreeView.propTypes
|
|
910
|
-
/* remove-proptypes */
|
|
911
|
-
= {
|
|
780
|
+
process.env.NODE_ENV !== "production" ? TreeView.propTypes /* remove-proptypes */ = {
|
|
912
781
|
// ----------------------------- Warning --------------------------------
|
|
913
782
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
914
783
|
// | To update them edit the d.ts file and run "yarn proptypes" |
|
|
915
784
|
// ----------------------------------------------------------------------
|
|
916
|
-
|
|
917
785
|
/**
|
|
918
786
|
* The content of the component.
|
|
919
787
|
*/
|
|
920
788
|
children: PropTypes.node,
|
|
921
|
-
|
|
922
789
|
/**
|
|
923
790
|
* Override or extend the styles applied to the component.
|
|
924
791
|
*/
|
|
925
792
|
classes: PropTypes.object,
|
|
926
|
-
|
|
927
793
|
/**
|
|
928
794
|
* @ignore
|
|
929
795
|
*/
|
|
930
796
|
className: PropTypes.string,
|
|
931
|
-
|
|
932
797
|
/**
|
|
933
798
|
* The default icon used to collapse the node.
|
|
934
799
|
*/
|
|
935
800
|
defaultCollapseIcon: PropTypes.node,
|
|
936
|
-
|
|
937
801
|
/**
|
|
938
802
|
* The default icon displayed next to a end node. This is applied to all
|
|
939
803
|
* tree nodes and can be overridden by the TreeItem `icon` prop.
|
|
940
804
|
*/
|
|
941
805
|
defaultEndIcon: PropTypes.node,
|
|
942
|
-
|
|
943
806
|
/**
|
|
944
807
|
* Expanded node ids. (Uncontrolled)
|
|
945
808
|
* @default []
|
|
946
809
|
*/
|
|
947
810
|
defaultExpanded: PropTypes.arrayOf(PropTypes.string),
|
|
948
|
-
|
|
949
811
|
/**
|
|
950
812
|
* The default icon used to expand the node.
|
|
951
813
|
*/
|
|
952
814
|
defaultExpandIcon: PropTypes.node,
|
|
953
|
-
|
|
954
815
|
/**
|
|
955
816
|
* The default icon displayed next to a parent node. This is applied to all
|
|
956
817
|
* parent nodes and can be overridden by the TreeItem `icon` prop.
|
|
957
818
|
*/
|
|
958
819
|
defaultParentIcon: PropTypes.node,
|
|
959
|
-
|
|
960
820
|
/**
|
|
961
821
|
* Selected node ids. (Uncontrolled)
|
|
962
822
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
963
823
|
* @default []
|
|
964
824
|
*/
|
|
965
825
|
defaultSelected: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
|
|
966
|
-
|
|
967
826
|
/**
|
|
968
827
|
* If `true`, will allow focus on disabled items.
|
|
969
828
|
* @default false
|
|
970
829
|
*/
|
|
971
830
|
disabledItemsFocusable: PropTypes.bool,
|
|
972
|
-
|
|
973
831
|
/**
|
|
974
832
|
* If `true` selection is disabled.
|
|
975
833
|
* @default false
|
|
976
834
|
*/
|
|
977
835
|
disableSelection: PropTypes.bool,
|
|
978
|
-
|
|
979
836
|
/**
|
|
980
837
|
* Expanded node ids. (Controlled)
|
|
981
838
|
*/
|
|
982
839
|
expanded: PropTypes.arrayOf(PropTypes.string),
|
|
983
|
-
|
|
984
840
|
/**
|
|
985
841
|
* This prop is used to help implement the accessibility logic.
|
|
986
842
|
* If you don't provide this prop. It falls back to a randomly generated id.
|
|
987
843
|
*/
|
|
988
844
|
id: PropTypes.string,
|
|
989
|
-
|
|
990
845
|
/**
|
|
991
846
|
* If true `ctrl` and `shift` will trigger multiselect.
|
|
992
847
|
* @default false
|
|
993
848
|
*/
|
|
994
849
|
multiSelect: PropTypes.bool,
|
|
995
|
-
|
|
996
850
|
/**
|
|
997
851
|
* @ignore
|
|
998
852
|
*/
|
|
999
853
|
onBlur: PropTypes.func,
|
|
1000
|
-
|
|
1001
854
|
/**
|
|
1002
855
|
* @ignore
|
|
1003
856
|
*/
|
|
1004
857
|
onFocus: PropTypes.func,
|
|
1005
|
-
|
|
1006
858
|
/**
|
|
1007
859
|
* @ignore
|
|
1008
860
|
*/
|
|
1009
861
|
onKeyDown: PropTypes.func,
|
|
1010
|
-
|
|
1011
862
|
/**
|
|
1012
863
|
* Callback fired when tree items are focused.
|
|
1013
864
|
*
|
|
@@ -1015,7 +866,6 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes
|
|
|
1015
866
|
* @param {string} value of the focused node.
|
|
1016
867
|
*/
|
|
1017
868
|
onNodeFocus: PropTypes.func,
|
|
1018
|
-
|
|
1019
869
|
/**
|
|
1020
870
|
* Callback fired when tree items are selected/unselected.
|
|
1021
871
|
*
|
|
@@ -1024,7 +874,6 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes
|
|
|
1024
874
|
* this is an array of strings; when false (default) a string.
|
|
1025
875
|
*/
|
|
1026
876
|
onNodeSelect: PropTypes.func,
|
|
1027
|
-
|
|
1028
877
|
/**
|
|
1029
878
|
* Callback fired when tree items are expanded/collapsed.
|
|
1030
879
|
*
|
|
@@ -1032,13 +881,11 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes
|
|
|
1032
881
|
* @param {array} nodeIds The ids of the expanded nodes.
|
|
1033
882
|
*/
|
|
1034
883
|
onNodeToggle: PropTypes.func,
|
|
1035
|
-
|
|
1036
884
|
/**
|
|
1037
885
|
* Selected node ids. (Controlled)
|
|
1038
886
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
1039
887
|
*/
|
|
1040
888
|
selected: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),
|
|
1041
|
-
|
|
1042
889
|
/**
|
|
1043
890
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
1044
891
|
*/
|