@hitachivantara/uikit-react-core 3.68.1 → 3.68.4
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/dist/Accordion/Accordion.js.map +1 -1
- package/dist/ActionBar/ActionBar.js.map +1 -1
- package/dist/ActionsGeneric/ActionsGeneric.js.map +1 -1
- package/dist/AppSwitcher/Action/Action.js.map +1 -1
- package/dist/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/AppSwitcher/TitleWithTooltip.js.map +1 -1
- package/dist/AssetInventory/AssetInventory.js.map +1 -1
- package/dist/AssetInventory/CardView/CardView.js.map +1 -1
- package/dist/AssetInventory/ListView/ListView.js.map +1 -1
- package/dist/AssetInventory/ListView/ListViewCell/ListViewCell.js.map +1 -1
- package/dist/AssetInventory/ListView/ListViewCell/styles.js.map +1 -1
- package/dist/AssetInventory/ListView/ListViewContext/ListViewContext.js.map +1 -1
- package/dist/AssetInventory/ListView/ListViewHeaderRow/ListViewHeaderRow.js.map +1 -1
- package/dist/AssetInventory/ListView/ListViewRow/ListViewRow.js.map +1 -1
- package/dist/AssetInventory/Multibutton/Multibutton.js.map +1 -1
- package/dist/AssetInventory/Search/Search.js.map +1 -1
- package/dist/AssetInventory/Sort/Sort.js.map +1 -1
- package/dist/AssetInventory/setActionsId.js.map +1 -1
- package/dist/Avatar/Avatar.js.map +1 -1
- package/dist/Badge/Badge.js.map +1 -1
- package/dist/Banner/Banner.js.map +1 -1
- package/dist/Banner/BannerWrapper/ActionContainer/ActionContainer.js.map +1 -1
- package/dist/Banner/BannerWrapper/ActionContainer/styles.js.map +1 -1
- package/dist/Banner/BannerWrapper/BannerContentWrapper.js.map +1 -1
- package/dist/Banner/BannerWrapper/MessageContainer/MessageContainer.js.map +1 -1
- package/dist/BaseCheckBox/BaseCheckBox.js.map +1 -1
- package/dist/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/BaseDropdown/BaseDropdownContext/BaseDropdownContext.js.map +1 -1
- package/dist/BaseInput/BaseInput.js.map +1 -1
- package/dist/BaseInput/validations.js.map +1 -1
- package/dist/BaseRadio/BaseRadio.js.map +1 -1
- package/dist/BaseSwitch/BaseSwitch.js.map +1 -1
- package/dist/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/BreadCrumb/utils.js.map +1 -1
- package/dist/BulkActions/BulkActions.js.map +1 -1
- package/dist/BulkActions/styles.js.map +1 -1
- package/dist/Button/Button.js.map +1 -1
- package/dist/Button/materialConfigurarion.js.map +1 -1
- package/dist/Button/styles.js.map +1 -1
- package/dist/Calendar/Calendar.js.map +1 -1
- package/dist/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
- package/dist/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
- package/dist/Calendar/CalendarNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/Calendar/CalendarWeekLabels/CalendarWeekLabels.js.map +1 -1
- package/dist/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
- package/dist/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
- package/dist/Calendar/model.js.map +1 -1
- package/dist/Calendar/utils.js.map +1 -1
- package/dist/Card/Card.js.map +1 -1
- package/dist/Card/Content/Content.js.map +1 -1
- package/dist/Card/Header/Header.js.map +1 -1
- package/dist/Card/Media/Media.js.map +1 -1
- package/dist/Card/styles.js.map +1 -1
- package/dist/CheckBox/CheckBox.js.map +1 -1
- package/dist/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/Container/Container.js.map +1 -1
- package/dist/DatePicker/DatePicker.js.map +1 -1
- package/dist/DatePicker/useVisibleDate.js.map +1 -1
- package/dist/DatePicker/utils.js.map +1 -1
- package/dist/Dialog/Dialog.js.map +1 -1
- package/dist/Dialog/DialogActions/DialogActions.js.map +1 -1
- package/dist/Dialog/DialogContent/DialogContent.js.map +1 -1
- package/dist/Dialog/DialogTitle/DialogTitle.js.map +1 -1
- package/dist/Dialog/styles.js.map +1 -1
- package/dist/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/Dropdown/Dropdown.js.map +1 -1
- package/dist/Dropdown/List/List.js.map +1 -1
- package/dist/EmptyState/EmptyState.js.map +1 -1
- package/dist/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/FileUploader/File/File.js.map +1 -1
- package/dist/FileUploader/FileList/FileList.js.map +1 -1
- package/dist/FileUploader/FileUploader.js.map +1 -1
- package/dist/FileUploader/Preview/Preview.js.map +1 -1
- package/dist/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/FilterGroup/Counter/styles.js.map +1 -1
- package/dist/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/FilterGroup/FilterContent/styles.js.map +1 -1
- package/dist/FilterGroup/FilterGroup.js.map +1 -1
- package/dist/FilterGroup/FilterGroupContext.js.map +1 -1
- package/dist/FilterGroup/LeftPanel/LeftPanel.js.map +1 -1
- package/dist/FilterGroup/LeftPanel/styles.js.map +1 -1
- package/dist/FilterGroup/RightPanel/RightPanel.js.map +1 -1
- package/dist/FilterGroup/RightPanel/styles.js.map +1 -1
- package/dist/FilterGroup/styles.js.map +1 -1
- package/dist/Focus/Focus.js.map +1 -1
- package/dist/Focus/utils.js.map +1 -1
- package/dist/Footer/Footer.js.map +1 -1
- package/dist/Forms/Adornment/Adornment.js.map +1 -1
- package/dist/Forms/CharCounter/CharCounter.js.map +1 -1
- package/dist/Forms/FormElement/FormElement.js.map +1 -1
- package/dist/Forms/FormElement/context/FormElementContext.js.map +1 -1
- package/dist/Forms/FormElement/context/FormElementDescriptorsContext.js.map +1 -1
- package/dist/Forms/FormElement/context/FormElementValueContext.js.map +1 -1
- package/dist/Forms/FormElement/utils/FormUtils.js.map +1 -1
- package/dist/Forms/InfoMessage/InfoMessage.js.map +1 -1
- package/dist/Forms/Label/Label.js.map +1 -1
- package/dist/Forms/Suggestions/Suggestions.js.map +1 -1
- package/dist/Forms/WarningText/WarningText.js.map +1 -1
- package/dist/GlobalActions/GlobalActions.js.map +1 -1
- package/dist/Grid/Grid.js.map +1 -1
- package/dist/Header/Actions/Actions.js.map +1 -1
- package/dist/Header/Brand/Brand.js.map +1 -1
- package/dist/Header/Header.js.map +1 -1
- package/dist/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/Header/Navigation/MenuItem/MenuItem.js +29 -9
- package/dist/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/Header/Navigation/Navigation.js +5 -1
- package/dist/Header/Navigation/Navigation.js.map +1 -1
- package/dist/Header/Navigation/utils/FocusContext.js.map +1 -1
- package/dist/Header/Navigation/utils/SelectionContext.js.map +1 -1
- package/dist/Header/Navigation/utils/useSelectionPath.js.map +1 -1
- package/dist/Input/Input.js.map +1 -1
- package/dist/Kpi/Kpi.js.map +1 -1
- package/dist/Link/Link.js.map +1 -1
- package/dist/List/List.js +20 -16
- package/dist/List/List.js.map +1 -1
- package/dist/List/useSelectableList.js.map +1 -1
- package/dist/List/utils.js.map +1 -1
- package/dist/ListContainer/ListContainer.js.map +1 -1
- package/dist/ListContainer/ListContext/ListContext.js.map +1 -1
- package/dist/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/Loading/Loading.js.map +1 -1
- package/dist/Login/Login.js.map +1 -1
- package/dist/Login/styles.js.map +1 -1
- package/dist/MultiButton/MultiButton.js.map +1 -1
- package/dist/OverflowTooltip/OverflowTooltip.js.map +1 -1
- package/dist/Pagination/Pagination.js.map +1 -1
- package/dist/Pagination/Select.js.map +1 -1
- package/dist/Pagination/utils.js.map +1 -1
- package/dist/Panel/Panel.js.map +1 -1
- package/dist/Provider/Provider.js.map +1 -1
- package/dist/Provider/context.js.map +1 -1
- package/dist/Provider/useLocale.js.map +1 -1
- package/dist/Radio/Radio.js.map +1 -1
- package/dist/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -1
- package/dist/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/ScrollTo/Horizontal/styles.js.map +1 -1
- package/dist/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -1
- package/dist/ScrollTo/Vertical/styles.js.map +1 -1
- package/dist/ScrollTo/useScrollTo.js.map +1 -1
- package/dist/ScrollTo/withTooltip.js.map +1 -1
- package/dist/SelectionList/SelectionList.js.map +1 -1
- package/dist/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/SimpleGrid/styles.js.map +1 -1
- package/dist/Slider/Slider.js.map +1 -1
- package/dist/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/Slider/utils.js.map +1 -1
- package/dist/Snackbar/Snackbar.js.map +1 -1
- package/dist/Snackbar/SnackbarContentWrapper/SnackbarContentWrapper.js.map +1 -1
- package/dist/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -1
- package/dist/Stack/Stack.js.map +1 -1
- package/dist/Switch/Switch.js.map +1 -1
- package/dist/Tab/Tab.js.map +1 -1
- package/dist/Table/CellWithTooltip/index.js.map +1 -1
- package/dist/Table/Header/Header.js.map +1 -1
- package/dist/Table/NoData/index.js.map +1 -1
- package/dist/Table/NoData/styles.js.map +1 -1
- package/dist/Table/Table.js +19 -22
- package/dist/Table/Table.js.map +1 -1
- package/dist/Table/columnUtils.js.map +1 -1
- package/dist/Table/selectTable.js.map +1 -1
- package/dist/Table/styles.js.map +1 -1
- package/dist/Tabs/Tabs.js.map +1 -1
- package/dist/Tag/Tag.js.map +1 -1
- package/dist/Tag/styles.js.map +1 -1
- package/dist/TagsInput/TagsInput.js.map +1 -1
- package/dist/TextArea/TextArea.js.map +1 -1
- package/dist/TimePicker/PeriodPicker/PeriodPicker.js.map +1 -1
- package/dist/TimePicker/PeriodPicker/index.js.map +1 -1
- package/dist/TimePicker/TimePicker.js.map +1 -1
- package/dist/TimePicker/UnitTimePicker/UnitTimePicker.js.map +1 -1
- package/dist/TimePicker/UnitTimePicker/index.js.map +1 -1
- package/dist/TimePicker/timePickerConverter.js.map +1 -1
- package/dist/TimePicker/timePickerFormatter.js.map +1 -1
- package/dist/TimePicker/timePickerUtils.js.map +1 -1
- package/dist/ToggleButton/ToggleButton.js.map +1 -1
- package/dist/Tooltip/Tooltip.js.map +1 -1
- package/dist/Typography/Typography.js.map +1 -1
- package/dist/UserPreferences/Action/Action.js.map +1 -1
- package/dist/UserPreferences/Action/styles.js.map +1 -1
- package/dist/UserPreferences/Actions/Actions.js.map +1 -1
- package/dist/UserPreferences/Options/Group/Group.js.map +1 -1
- package/dist/UserPreferences/Options/Label/Label.js.map +1 -1
- package/dist/UserPreferences/Options/Option.js.map +1 -1
- package/dist/UserPreferences/Options/Options.js.map +1 -1
- package/dist/UserPreferences/Options/OptionsContext.js.map +1 -1
- package/dist/UserPreferences/Options/styles.js.map +1 -1
- package/dist/UserPreferences/UserPreferences.js.map +1 -1
- package/dist/VerticalNavigation/Actions/Action.js.map +1 -1
- package/dist/VerticalNavigation/Actions/Actions.js.map +1 -1
- package/dist/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/VerticalNavigation/Navigation/Navigation.js +10 -3
- package/dist/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/TreeView.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/TreeViewContexts.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/VerticalNavigation/TreeView/TreeViewItem.js +25 -4
- package/dist/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/descendants.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/dist/VerticalNavigation/VerticalContainer/VerticalContainer.js.map +1 -1
- package/dist/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/legacy/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuItem/MenuItem.js +25 -9
- package/dist/legacy/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/legacy/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/legacy/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/legacy/Header/Navigation/Navigation.js +5 -1
- package/dist/legacy/Header/Navigation/Navigation.js.map +1 -1
- package/dist/legacy/List/List.js +23 -19
- package/dist/legacy/List/List.js.map +1 -1
- package/dist/legacy/Table/Table.js +20 -23
- package/dist/legacy/Table/Table.js.map +1 -1
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.js +10 -3
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js +24 -4
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/legacy/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/legacy/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/dist/legacy/utils/ConditionalRenderer.js +1 -0
- package/dist/legacy/utils/ConditionalRenderer.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/modern/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuItem/MenuItem.js +24 -9
- package/dist/modern/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/modern/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/modern/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/modern/Header/Navigation/Navigation.js +5 -1
- package/dist/modern/Header/Navigation/Navigation.js.map +1 -1
- package/dist/modern/List/List.js +25 -24
- package/dist/modern/List/List.js.map +1 -1
- package/dist/modern/Table/Table.js +20 -23
- package/dist/modern/Table/Table.js.map +1 -1
- package/dist/modern/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/modern/VerticalNavigation/Navigation/Navigation.js +10 -2
- package/dist/modern/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js +23 -4
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/modern/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/modern/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/dist/modern/utils/ConditionalRenderer.js +1 -0
- package/dist/modern/utils/ConditionalRenderer.js.map +1 -1
- package/dist/theme/CssBaseline.js.map +1 -1
- package/dist/theme/ScopedCssBaseline.js.map +1 -1
- package/dist/theme/createGenerateClassName.js.map +1 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/overrides/muiButton.js.map +1 -1
- package/dist/theme/palette.js.map +1 -1
- package/dist/theme/typography.js.map +1 -1
- package/dist/useUniqueId.js.map +1 -1
- package/dist/utils/ConditionalRenderer.js +1 -0
- package/dist/utils/ConditionalRenderer.js.map +1 -1
- package/dist/utils/browser.js.map +1 -1
- package/dist/utils/hexToRgbA.js.map +1 -1
- package/dist/utils/refType.js.map +1 -1
- package/dist/utils/setId.js.map +1 -1
- package/dist/utils/useComputation.js.map +1 -1
- package/dist/utils/useDeprecated.js.map +1 -1
- package/dist/utils/useImageLoaded.js.map +1 -1
- package/dist/utils/useIsMounted.js.map +1 -1
- package/dist/utils/useLabels.js.map +1 -1
- package/dist/utils/usePropAsRef.js.map +1 -1
- package/dist/utils/useSavedState.js.map +1 -1
- package/dist/utils/useUpdated.js.map +1 -1
- package/dist/utils/useWidth.js.map +1 -1
- package/dist/withId.js.map +1 -1
- package/dist/withTooltip.js.map +1 -1
- package/package.json +6 -6
|
@@ -25,6 +25,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
25
25
|
|
|
26
26
|
require("core-js/modules/es.array.concat.js");
|
|
27
27
|
|
|
28
|
+
require("core-js/modules/es.string.link.js");
|
|
29
|
+
|
|
28
30
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
29
31
|
|
|
30
32
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
@@ -51,7 +53,7 @@ var _styles = _interopRequireDefault(require("./styles"));
|
|
|
51
53
|
|
|
52
54
|
var _DropUpXS, _DropDownXS;
|
|
53
55
|
|
|
54
|
-
var _excluded = ["id", "className", "classes", "disabled", "selectable", "nodeId", "icon", "label", "payload", "onClick", "onMouseDown", "onFocus", "children"];
|
|
56
|
+
var _excluded = ["id", "className", "classes", "disabled", "selectable", "nodeId", "icon", "label", "href", "target", "payload", "onClick", "onMouseDown", "onFocus", "children"];
|
|
55
57
|
|
|
56
58
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
57
59
|
|
|
@@ -75,6 +77,8 @@ var TreeViewItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
75
77
|
_props$icon = props.icon,
|
|
76
78
|
icon = _props$icon === void 0 ? null : _props$icon,
|
|
77
79
|
label = props.label,
|
|
80
|
+
href = props.href,
|
|
81
|
+
target = props.target,
|
|
78
82
|
payload = props.payload,
|
|
79
83
|
onClick = props.onClick,
|
|
80
84
|
onMouseDown = props.onMouseDown,
|
|
@@ -281,9 +285,11 @@ var TreeViewItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
281
285
|
var renderedContent = (0, _react.useMemo)(function () {
|
|
282
286
|
return /*#__PURE__*/_react.default.createElement(_Typography.default, (0, _extends2.default)({
|
|
283
287
|
id: (0, _utils.setId)(id, "button"),
|
|
284
|
-
component: "div",
|
|
288
|
+
component: href ? "a" : "div",
|
|
289
|
+
href: href,
|
|
290
|
+
target: target,
|
|
285
291
|
innerRef: contentRef,
|
|
286
|
-
className: classes.content,
|
|
292
|
+
className: (0, _clsx.default)(classes.content, href != null && classes.link),
|
|
287
293
|
variant: disabled ? "placeholderText" : "normalText",
|
|
288
294
|
onClick: handleClick,
|
|
289
295
|
onMouseDown: handleMouseDown,
|
|
@@ -302,7 +308,7 @@ var TreeViewItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
302
308
|
"aria-expanded": expandable ? expanded : undefined,
|
|
303
309
|
"aria-controls": expandable ? (0, _utils.setId)(id, "group") : undefined
|
|
304
310
|
}), expandable && (expanded ? _DropUpXS || (_DropUpXS = /*#__PURE__*/_react.default.createElement(_uikitReactIcons.DropUpXS, null)) : _DropDownXS || (_DropDownXS = /*#__PURE__*/_react.default.createElement(_uikitReactIcons.DropDownXS, null))), icon, label);
|
|
305
|
-
}, [id, classes.content, handleClick, handleMouseDown, expandable, level, collapsible, treeviewMode, handleFocus,
|
|
311
|
+
}, [id, href, target, classes.content, classes.link, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label]);
|
|
306
312
|
var renderedChildren = (0, _react.useMemo)(function () {
|
|
307
313
|
return children && /*#__PURE__*/_react.default.createElement("ul", {
|
|
308
314
|
id: (0, _utils.setId)(id, "group"),
|
|
@@ -351,6 +357,11 @@ process.env.NODE_ENV !== "production" ? TreeViewItem.propTypes = {
|
|
|
351
357
|
*/
|
|
352
358
|
content: _propTypes.default.string,
|
|
353
359
|
|
|
360
|
+
/**
|
|
361
|
+
* Style applied to the content when it is a link.
|
|
362
|
+
*/
|
|
363
|
+
link: _propTypes.default.string,
|
|
364
|
+
|
|
354
365
|
/**
|
|
355
366
|
* Style applied to the group.
|
|
356
367
|
*/
|
|
@@ -427,6 +438,16 @@ process.env.NODE_ENV !== "production" ? TreeViewItem.propTypes = {
|
|
|
427
438
|
*/
|
|
428
439
|
label: _propTypes.default.node.isRequired,
|
|
429
440
|
|
|
441
|
+
/**
|
|
442
|
+
* The url for the link.
|
|
443
|
+
*/
|
|
444
|
+
href: _propTypes.default.string,
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* The behavior when opening a link.
|
|
448
|
+
*/
|
|
449
|
+
target: _propTypes.default.string,
|
|
450
|
+
|
|
430
451
|
/**
|
|
431
452
|
* The node payload.
|
|
432
453
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeViewItem.js","names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","TreeViewItem","React","forwardRef","props","ref","idProp","id","className","classes","disabledProp","selectableProp","selectable","nodeId","icon","label","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","TreeViewControlContext","TreeViewStateContext","isExpanded","isSelected","isFocused","isDisabled","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","treeitemElement","setTreeitemElement","contentRef","handleRef","descendant","element","index","parentId","level","expandable","Array","isArray","expanded","focused","selected","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","target","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","content","paddingLeft","role","tabIndex","onKeyDown","renderedChildren","group","node","unselected","unselectable","collapsed","propTypes","PropTypes","string","shape","isRequired","bool","any","func","styles","name"],"sources":["../../../src/VerticalNavigation/TreeView/TreeViewItem.js"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport HvTypography from \"../../Typography\";\n\nimport { TreeViewControlContext, TreeViewStateContext } from \"./TreeViewContexts\";\n\nimport { setId, useForkRef } from \"../../utils\";\n\nimport { DescendantProvider, useDescendant } from \"./descendants\";\n\nimport styles from \"./styles\";\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nconst TreeViewItem = React.forwardRef((props, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled } = useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable = selectableProp != null ? selectableProp : !collapsible || !expandable;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (mapFirstChar && unMapFirstChar && label) {\n mapFirstChar(nodeId, contentRef.current?.textContent.substring(0, 1).toLowerCase());\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (!focused && event.currentTarget === event.target && !unfocusable) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && isExpanded(nodeId))) {\n toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n selectRange(event, { end: nodeId });\n } else {\n selectNode(event, nodeId, true);\n }\n } else {\n selectNode(event, nodeId);\n }\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [disabled, expandable, handleExpansion, handleSelection, onClick, selectable]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (event.altKey || event.ctrlKey || event.metaKey || event.currentTarget !== event.target) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event);\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event);\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <HvTypography\n id={setId(id, \"button\")}\n component=\"div\"\n innerRef={contentRef}\n className={classes.content}\n variant={disabled ? \"placeholderText\" : \"normalText\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft: (expandable || icon != null ? 0 : 10) + level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n })}\n >\n {expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {icon}\n {label}\n </HvTypography>\n ),\n [\n id,\n classes.content,\n handleClick,\n handleMouseDown,\n expandable,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n handleKeyDown,\n selectable,\n selected,\n expanded,\n icon,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id}\n className={clsx(classes.node, className, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: !disabled && selectable,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]: !disabled && selectable && selected,\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n })}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n </li>\n );\n});\n\nTreeViewItem.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n node: PropTypes.string,\n /**\n * Style applied to the content.\n */\n content: PropTypes.string,\n /**\n * Style applied to the group.\n */\n group: PropTypes.string,\n /**\n * Style applied when item is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Style applied when item is expandable.\n */\n expandable: PropTypes.string,\n /**\n * Style applied when item is collapsed.\n */\n collapsed: PropTypes.string,\n /**\n * Style applied when item is expanded.\n */\n expanded: PropTypes.string,\n /**\n * Style applied when item is selectable.\n */\n selectable: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselectable: PropTypes.string,\n /**\n * Style applied when item is selected.\n */\n selected: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselected: PropTypes.string,\n /**\n * Style applied when item is focused.\n */\n focused: PropTypes.string,\n }).isRequired,\n /**\n * Is the node disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Can the node be selected.\n */\n selectable: PropTypes.bool,\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n /**\n * The icon to display next to the node's label.\n */\n icon: PropTypes.node,\n /**\n * The item label.\n */\n label: PropTypes.node.isRequired,\n /**\n * The node payload.\n */\n // eslint-disable-next-line react/forbid-prop-types\n payload: PropTypes.any,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationTreeViewItem\",\n})(TreeViewItem);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeViewItem.js","names":["preventSelection","event","disabled","shiftKey","ctrlKey","metaKey","preventDefault","TreeViewItem","React","forwardRef","props","ref","idProp","id","className","classes","disabledProp","selectableProp","selectable","nodeId","icon","label","href","target","payload","onClick","onMouseDown","onFocus","children","others","treeViewControlContext","useContext","TreeViewControlContext","TreeViewStateContext","isExpanded","isSelected","isFocused","isDisabled","treeId","mode","collapsible","toggleExpansion","multiSelect","selectNode","selectRange","disabledItemsFocusable","registerNode","unregisterNode","mapFirstChar","unMapFirstChar","focus","treeviewMode","useState","treeitemElement","setTreeitemElement","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","useDescendant","index","parentId","level","expandable","Array","isArray","expanded","focused","selected","useEffect","idAttribute","undefined","current","textContent","substring","toLowerCase","ariaSelected","handleFocus","useCallback","currentTarget","ownerDocument","document","getElementById","preventScroll","unfocusable","handleExpansion","multiple","handleSelection","end","handleMouseDown","handleClick","handleKeyDown","isEventHandled","key","altKey","stopPropagation","renderedContent","setId","clsx","content","link","paddingLeft","role","tabIndex","onKeyDown","renderedChildren","group","node","unselected","unselectable","collapsed","propTypes","PropTypes","string","shape","isRequired","bool","any","func","withStyles","styles","name"],"sources":["../../../src/VerticalNavigation/TreeView/TreeViewItem.js"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\n\nimport { DropDownXS, DropUpXS } from \"@hitachivantara/uikit-react-icons\";\n\nimport HvTypography from \"../../Typography\";\n\nimport { TreeViewControlContext, TreeViewStateContext } from \"./TreeViewContexts\";\n\nimport { setId, useForkRef } from \"../../utils\";\n\nimport { DescendantProvider, useDescendant } from \"./descendants\";\n\nimport styles from \"./styles\";\n\nconst preventSelection = (event, disabled) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n};\n\nconst TreeViewItem = React.forwardRef((props, ref) => {\n const {\n id: idProp,\n className,\n classes,\n\n disabled: disabledProp = false,\n\n selectable: selectableProp,\n\n nodeId,\n icon = null,\n label,\n href,\n target,\n payload,\n\n onClick,\n onMouseDown,\n onFocus,\n\n children,\n\n ...others\n } = props;\n\n const treeViewControlContext = useContext(TreeViewControlContext);\n const { isExpanded, isSelected, isFocused, isDisabled } = useContext(TreeViewStateContext);\n\n const {\n treeId,\n mode,\n collapsible,\n toggleExpansion,\n multiSelect,\n selectNode,\n selectRange,\n disabledItemsFocusable,\n registerNode,\n unregisterNode,\n mapFirstChar,\n unMapFirstChar,\n focus,\n } = treeViewControlContext;\n\n const treeviewMode = mode === \"treeview\";\n\n let id = null;\n\n if (idProp != null) {\n id = idProp;\n } else if (treeId && nodeId) {\n id = `${treeId}-${nodeId}`;\n }\n\n const [treeitemElement, setTreeitemElement] = useState(null);\n const contentRef = useRef(null);\n const handleRef = useForkRef(setTreeitemElement, ref);\n\n const descendant = useMemo(\n () => ({\n element: treeitemElement,\n id: nodeId,\n }),\n [nodeId, treeitemElement]\n );\n\n const { index, parentId, level } = useDescendant(descendant);\n\n const expandable = collapsible && Array.isArray(children);\n const expanded = isExpanded ? isExpanded(nodeId) : false;\n const focused = isFocused ? isFocused(nodeId) : false;\n const selected = isSelected ? isSelected(nodeId) : false;\n const disabled = isDisabled ? isDisabled(nodeId) : false;\n\n const selectable = selectableProp != null ? selectableProp : !collapsible || !expandable;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (registerNode && unregisterNode && index !== -1) {\n registerNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n selectable,\n expandable,\n disabled: disabledProp,\n onFocus,\n payload,\n });\n\n return () => {\n unregisterNode(nodeId);\n };\n }\n\n return undefined;\n }, [\n registerNode,\n unregisterNode,\n parentId,\n index,\n nodeId,\n expandable,\n disabledProp,\n id,\n selectable,\n onFocus,\n payload,\n ]);\n\n useEffect(() => {\n if (mapFirstChar && unMapFirstChar && label) {\n mapFirstChar(nodeId, contentRef.current?.textContent.substring(0, 1).toLowerCase());\n\n return () => {\n unMapFirstChar(nodeId);\n };\n }\n return undefined;\n }, [mapFirstChar, unMapFirstChar, nodeId, label]);\n\n let ariaSelected;\n if (multiSelect) {\n ariaSelected = selected;\n } else if (selected) {\n /* single-selection trees unset aria-selected on un-selected items.\n *\n * If the tree does not support multiple selection, aria-selected\n * is set to true for the selected node and it is not present on any other node in the tree.\n * Source: https://www.w3.org/TR/wai-aria-practices/#TreeView\n */\n ariaSelected = true;\n }\n\n const handleFocus = useCallback(\n (event) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n (event.target.ownerDocument || document)\n .getElementById(treeId)\n .focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n if (!focused && event.currentTarget === event.target && !unfocusable) {\n focus(event, nodeId);\n }\n },\n [disabled, disabledItemsFocusable, focus, focused, nodeId, treeId]\n );\n\n const handleExpansion = useCallback(\n (event) => {\n if (!disabled) {\n if (treeviewMode && !focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && isExpanded(nodeId))) {\n toggleExpansion(event, nodeId);\n }\n }\n },\n [\n disabled,\n expandable,\n focus,\n focused,\n isExpanded,\n multiSelect,\n nodeId,\n toggleExpansion,\n treeviewMode,\n ]\n );\n\n const handleSelection = useCallback(\n (event) => {\n if (selectable && !disabled) {\n if (treeviewMode && !focused) {\n focus(event, nodeId);\n }\n\n const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n selectRange(event, { end: nodeId });\n } else {\n selectNode(event, nodeId, true);\n }\n } else {\n selectNode(event, nodeId);\n }\n }\n },\n [\n disabled,\n focus,\n focused,\n multiSelect,\n nodeId,\n selectNode,\n selectRange,\n selectable,\n treeviewMode,\n ]\n );\n\n const handleMouseDown = useCallback(\n (event) => {\n preventSelection(event, disabled);\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [disabled, onMouseDown]\n );\n\n const handleClick = useCallback(\n (event) => {\n if (!disabled) {\n if (expandable) {\n handleExpansion(event);\n }\n\n if (selectable) {\n handleSelection(event);\n }\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [disabled, expandable, handleExpansion, handleSelection, onClick, selectable]\n );\n\n const handleKeyDown = useCallback(\n (event) => {\n let isEventHandled = false;\n const { key } = event;\n\n if (event.altKey || event.ctrlKey || event.metaKey || event.currentTarget !== event.target) {\n return;\n }\n if (contentRef.current === event.currentTarget) {\n if (key === \"Enter\" || key === \" \") {\n if (expandable) {\n isEventHandled = handleExpansion(event);\n }\n\n if (selectable) {\n isEventHandled = handleSelection(event);\n }\n }\n\n if (isEventHandled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n [expandable, handleExpansion, handleSelection, selectable]\n );\n\n const renderedContent = useMemo(\n () => (\n <HvTypography\n id={setId(id, \"button\")}\n component={href ? \"a\" : \"div\"}\n href={href}\n target={target}\n innerRef={contentRef}\n className={clsx(classes.content, { [classes.link]: href != null })}\n variant={disabled ? \"placeholderText\" : \"normalText\"}\n onClick={handleClick}\n onMouseDown={handleMouseDown}\n style={{\n paddingLeft: (expandable || icon != null ? 0 : 10) + level * (collapsible ? 32 : 10),\n }}\n {...(treeviewMode\n ? {\n role: \"button\",\n tabIndex: -1,\n onFocus: handleFocus,\n }\n : {\n role: \"button\",\n tabIndex: selectable || expandable ? 0 : -1,\n onKeyDown: handleKeyDown,\n \"aria-current\": selectable && selected ? \"page\" : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable ? setId(id, \"group\") : undefined,\n })}\n >\n {expandable && (expanded ? <DropUpXS /> : <DropDownXS />)}\n {icon}\n {label}\n </HvTypography>\n ),\n [\n id,\n href,\n target,\n classes.content,\n classes.link,\n disabled,\n handleClick,\n handleMouseDown,\n expandable,\n icon,\n level,\n collapsible,\n treeviewMode,\n handleFocus,\n selectable,\n handleKeyDown,\n selected,\n expanded,\n label,\n ]\n );\n\n const renderedChildren = useMemo(\n () =>\n children && (\n <ul\n id={setId(id, \"group\")}\n className={classes.group}\n role={treeviewMode ? \"group\" : undefined}\n >\n {children}\n </ul>\n ),\n [children, classes.group, id, treeviewMode]\n );\n\n return (\n <li\n ref={handleRef}\n id={id}\n className={clsx(classes.node, className, {\n [classes.disabled]: disabled,\n [classes.expandable]: expandable,\n [classes.collapsed]: expandable && !expanded,\n [classes.expanded]: expandable && expanded,\n [classes.selectable]: !disabled && selectable,\n [classes.unselectable]: !disabled && !selectable,\n [classes.selected]: !disabled && selectable && selected,\n [classes.unselected]: !disabled && selectable && !selected,\n [classes.focused]: focused,\n })}\n data-hasicon={icon != null ? true : undefined}\n {...(mode === \"treeview\" && {\n role: \"treeitem\",\n \"aria-selected\": ariaSelected,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-disabled\": disabled ? true : undefined,\n })}\n {...others}\n >\n {renderedContent}\n <DescendantProvider id={nodeId} level={level + 1}>\n {renderedChildren}\n </DescendantProvider>\n </li>\n );\n});\n\nTreeViewItem.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the Radio button.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n node: PropTypes.string,\n /**\n * Style applied to the content.\n */\n content: PropTypes.string,\n /**\n * Style applied to the content when it is a link.\n */\n link: PropTypes.string,\n /**\n * Style applied to the group.\n */\n group: PropTypes.string,\n /**\n * Style applied when item is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Style applied when item is expandable.\n */\n expandable: PropTypes.string,\n /**\n * Style applied when item is collapsed.\n */\n collapsed: PropTypes.string,\n /**\n * Style applied when item is expanded.\n */\n expanded: PropTypes.string,\n /**\n * Style applied when item is selectable.\n */\n selectable: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselectable: PropTypes.string,\n /**\n * Style applied when item is selected.\n */\n selected: PropTypes.string,\n /**\n * Style applied when item is unselectable.\n */\n unselected: PropTypes.string,\n /**\n * Style applied when item is focused.\n */\n focused: PropTypes.string,\n }).isRequired,\n /**\n * Is the node disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Can the node be selected.\n */\n selectable: PropTypes.bool,\n /**\n * The id of the node.\n */\n nodeId: PropTypes.string.isRequired,\n /**\n * The icon to display next to the node's label.\n */\n icon: PropTypes.node,\n /**\n * The item label.\n */\n label: PropTypes.node.isRequired,\n /**\n * The url for the link.\n */\n href: PropTypes.string,\n /**\n * The behavior when opening a link.\n */\n target: PropTypes.string,\n /**\n * The node payload.\n */\n // eslint-disable-next-line react/forbid-prop-types\n payload: PropTypes.any,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationTreeViewItem\",\n})(TreeViewItem);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descendants.js","names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","React","createContext","level","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","useState","forceUpdate","useContext","registerDescendant","unregisterDescendant","descendants","parentId","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","propTypes","PropTypes","node","string","number"],"sources":["../../../src/VerticalNavigation/TreeView/descendants.js"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useEnhancedEffect } from \"../../utils\";\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n // eslint-disable-next-line no-bitwise\n if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = React.createContext({ level: 0 });\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = React.useRef(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = React.useState();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = React.useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(descendants, (item) => item.element === descendant.element);\n\n const previousDescendants = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some((newDescendant, position) => {\n return (\n previousDescendants &&\n previousDescendants[position] &&\n previousDescendants[position].element !== newDescendant.element\n );\n });\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]);\n\n return { parentId, index, level };\n}\n\nexport function DescendantProvider(props) {\n const { children, id, level } = props;\n\n const [items, set] = React.useState([]);\n\n const registerDescendant = React.useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n // eslint-disable-next-line no-param-reassign\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = React.useCallback((element) => {\n set((oldItems) => oldItems.filter((item) => element !== item.element));\n }, []);\n\n const value = React.useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return <DescendantContext.Provider value={value}>{children}</DescendantContext.Provider>;\n}\n\nDescendantProvider.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n level: PropTypes.number,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"descendants.js","names":["findIndex","array","comp","i","length","binaryFindElement","element","start","end","middle","Math","floor","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DescendantContext","React","createContext","level","process","env","NODE_ENV","displayName","usePrevious","value","ref","useRef","useEffect","current","noop","useDescendant","descendant","useState","forceUpdate","useContext","registerDescendant","unregisterDescendant","descendants","parentId","index","item","previousDescendants","someDescendantsHaveChanged","some","newDescendant","position","useEnhancedEffect","undefined","DescendantProvider","props","children","id","items","set","useCallback","other","oldItems","newItems","newItem","slice","splice","forEach","filter","useMemo","propTypes","PropTypes","node","string","number"],"sources":["../../../src/VerticalNavigation/TreeView/descendants.js"],"sourcesContent":["/**\n * Copied from https://github.com/mui-org/material-ui/blob/8763de1633d80295e7b83d8c21040dad333e6699/packages/material-ui-lab/src/TreeView/descendants.js\n * Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n *\n * - Added level (depth) property.\n * - Use local copy of useEnhancedEffect.\n */\n\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useEnhancedEffect } from \"../../utils\";\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction binaryFindElement(array, element) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n // eslint-disable-next-line no-bitwise\n if (array[middle].element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nconst DescendantContext = React.createContext({ level: 0 });\n\nif (process.env.NODE_ENV !== \"production\") {\n DescendantContext.displayName = \"DescendantContext\";\n}\n\nfunction usePrevious(value) {\n const ref = React.useRef(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant) {\n const [, forceUpdate] = React.useState();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = React.useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = findIndex(descendants, (item) => item.element === descendant.element);\n\n const previousDescendants = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some((newDescendant, position) => {\n return (\n previousDescendants &&\n previousDescendants[position] &&\n previousDescendants[position].element !== newDescendant.element\n );\n });\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [registerDescendant, unregisterDescendant, index, someDescendantsHaveChanged, descendant]);\n\n return { parentId, index, level };\n}\n\nexport function DescendantProvider(props) {\n const { children, id, level } = props;\n\n const [items, set] = React.useState([]);\n\n const registerDescendant = React.useCallback(({ element, ...other }) => {\n set((oldItems) => {\n let newItems;\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n // eslint-disable-next-line no-param-reassign\n item.index = position;\n });\n return newItems;\n });\n }, []);\n\n const unregisterDescendant = React.useCallback((element) => {\n set((oldItems) => oldItems.filter((item) => element !== item.element));\n }, []);\n\n const value = React.useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level]\n );\n\n return <DescendantContext.Provider value={value}>{children}</DescendantContext.Provider>;\n}\n\nDescendantProvider.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n level: PropTypes.number,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":["selected","theme","background","hv","palette","atmosphere","atmo3","borderLeft","accent","acce3","hover","styles","root","display","atmo1","padding","margin","listStyle","outline","group","node","minHeight","marginBottom","disabled","selectable","unselectable","expandable","collapsed","expanded","unselected","focused","noIcon","withIcon","content","width","justifyContent","alignItems","height","paddingRight","spacing","xs","fontWeight","outlineStyles","cursor"],"sources":["../../../src/VerticalNavigation/TreeView/styles.js"],"sourcesContent":["import { outlineStyles } from \"../../Focus/styles\";\n\nconst selected = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n borderLeft: `2px solid ${theme.hv.palette.accent.acce3}`,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst hover = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst styles = (theme) => ({\n /* role=\"tree\" root element */\n root: {\n display: \"block\",\n background: theme.hv.palette.atmosphere.atmo1,\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n\n outline: \"none\",\n },\n\n /* role=\"group\" element */\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n\n /* role=\"treeitem\" element */\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n },\n\n /* role=\"treeitem\" element states */\n disabled: {},\n selectable: {},\n unselectable: {},\n expandable: {},\n collapsed: {\n \"&>$group\": { display: \"none\" },\n },\n expanded: {\n \"&>$group\": { display: \"block\" },\n },\n selected: {},\n unselected: {},\n\n focused: {},\n\n noIcon: {},\n withIcon: {},\n\n /* role=\"button\" element */\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `2px solid transparent`,\n paddingRight: theme.hv.spacing.xs,\n\n \"$expandable>&\": {\n fontWeight: 600,\n },\n\n // selected state\n \"$selected>&\": selected(theme),\n\n // hover\n \":not($disabled):not($selected)>&:hover\": hover(theme),\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled):not($selected)>&:focus-visible\": hover(theme),\n \":not($disabled):not($selected)>&.focus-visible\": hover(theme),\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \"$focused>&\": {\n ...hover(theme),\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;EAAA,OAAY;IAC3BC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADb;IAE3BC,UAAU,sBAAeN,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBI,MAAjB,CAAwBC,KAAvC,CAFiB;IAG3B,OAAO;MACLP,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAHoB,CAAZ;AAAA,CAAjB;;AAQA,IAAMI,KAAK,GAAG,SAARA,KAAQ,CAACT,KAAD;EAAA,OAAY;IACxBC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADhB;IAExB,OAAO;MACLJ,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAFiB,CAAZ;AAAA,CAAd;;AAOA,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACV,KAAD;EAAA,OAAY;IACzB;IACAW,IAAI,EAAE;MACJC,OAAO,EAAE,OADL;MAEJX,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BS,KAFpC;MAGJC,OAAO,OAHH;MAIJC,MAAM,EAAE,GAJJ;MAKJC,SAAS,EAAE,MALP;MAOJC,OAAO,EAAE;IAPL,CAFmB;;IAYzB;IACAC,KAAK,EAAE;MACLH,MAAM,EAAE,WADH;MAELD,OAAO,EAAE;IAFJ,CAbkB;;IAkBzB;IACAK,IAAI,EAAE;MACJH,SAAS,EAAE,MADP;MAEJI,SAAS,EAAE,MAFP;MAGJ,sBAAsB;QACpBC,YAAY,EAAE;MADM;IAHlB,CAnBmB;;IA2BzB;IACAC,QAAQ,EAAE,EA5Be;IA6BzBC,UAAU,EAAE,EA7Ba;IA8BzBC,YAAY,EAAE,EA9BW;IA+BzBC,UAAU,EAAE,EA/Ba;IAgCzBC,SAAS,EAAE;MACT,YAAY;QAAEd,OAAO,EAAE;MAAX;IADH,CAhCc;IAmCzBe,QAAQ,EAAE;MACR,YAAY;QAAEf,OAAO,EAAE;MAAX;IADJ,CAnCe;IAsCzBb,QAAQ,EAAE,EAtCe;IAuCzB6B,UAAU,EAAE,EAvCa;
|
|
1
|
+
{"version":3,"file":"styles.js","names":["selected","theme","background","hv","palette","atmosphere","atmo3","borderLeft","accent","acce3","hover","styles","root","display","atmo1","padding","margin","listStyle","outline","group","node","minHeight","marginBottom","disabled","selectable","unselectable","expandable","collapsed","expanded","unselected","link","textDecoration","focused","noIcon","withIcon","content","width","justifyContent","alignItems","height","paddingRight","spacing","xs","fontWeight","outlineStyles","cursor"],"sources":["../../../src/VerticalNavigation/TreeView/styles.js"],"sourcesContent":["import { outlineStyles } from \"../../Focus/styles\";\n\nconst selected = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n borderLeft: `2px solid ${theme.hv.palette.accent.acce3}`,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst hover = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst styles = (theme) => ({\n /* role=\"tree\" root element */\n root: {\n display: \"block\",\n background: theme.hv.palette.atmosphere.atmo1,\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n\n outline: \"none\",\n },\n\n /* role=\"group\" element */\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n\n /* role=\"treeitem\" element */\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n },\n\n /* role=\"treeitem\" element states */\n disabled: {},\n selectable: {},\n unselectable: {},\n expandable: {},\n collapsed: {\n \"&>$group\": { display: \"none\" },\n },\n expanded: {\n \"&>$group\": { display: \"block\" },\n },\n selected: {},\n unselected: {},\n link: {\n textDecoration: \"none\",\n },\n\n focused: {},\n\n noIcon: {},\n withIcon: {},\n\n /* role=\"button\" element */\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `2px solid transparent`,\n paddingRight: theme.hv.spacing.xs,\n\n \"$expandable>&\": {\n fontWeight: 600,\n },\n\n // selected state\n \"$selected>&\": selected(theme),\n\n // hover\n \":not($disabled):not($selected)>&:hover\": hover(theme),\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled):not($selected)>&:focus-visible\": hover(theme),\n \":not($disabled):not($selected)>&.focus-visible\": hover(theme),\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \"$focused>&\": {\n ...hover(theme),\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n});\n\nexport default styles;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalContainer.js","names":["VerticalContainer","id","className","classes","isAnchorBarVisible","isOpen","toggleOpenCallback","buttonAriaLabel","children","position","closeOnExit","others","open","setOpen","prevPropOpen","setPrevPropOpen","containerRef","buttonRef","focusableList","setTimeout","current","toggleOpen","newState","prevState","handlerKeyContainer","event","KeyboardCodes","Tab","target","first","shiftKey","last","Esc","focus","renderedAnchorBar","anchorBar","button","renderedContainer","separator","contentContainer","root","withAnchorBar","static","relative","fixed","absolute","verticalContainer","propTypes","PropTypes","string","shape","isRequired","oneOf","bool","node","func","styles","name"],"sources":["../../../src/VerticalNavigation/VerticalContainer/VerticalContainer.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { ClickAwayListener, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport { Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { isKeypress, KeyboardCodes } from \"../../utils/KeyboardUtils\";\nimport Button from \"../../Button\";\nimport { setId } from \"../../utils\";\nimport { getFirstAndLastFocus } from \"../../utils/focusableElementFinder\";\n\nimport styles from \"./styles\";\n\n/**\n * Vertical Container.\n *\n * @constructor\n */\nconst VerticalContainer = ({\n id,\n className,\n classes,\n isAnchorBarVisible = true,\n isOpen = false,\n toggleOpenCallback,\n buttonAriaLabel,\n children,\n position = \"static\",\n closeOnExit,\n ...others\n}) => {\n const [open, setOpen] = useState(isOpen);\n const [prevPropOpen, setPrevPropOpen] = useState(null);\n const containerRef = useRef(null);\n const buttonRef = useRef(null);\n const focusableList = useRef(null);\n\n if (isOpen !== prevPropOpen) {\n setOpen(isOpen);\n setPrevPropOpen(isOpen);\n }\n\n /**\n * Fills the object with the first and last focusable element inside the container.\n * When the container is open the first focusable element is focus.\n */\n useEffect(() => {\n setTimeout(() => {\n if (open) {\n focusableList.current = getFirstAndLastFocus(containerRef.current);\n }\n });\n }, [open]);\n\n /**\n * Toggle the open state based on the received paramenter.\n *\n * @type {(...args: any[]) => any}\n */\n const toggleOpen = useCallback(\n (newState = null) => {\n if (newState !== null) {\n if (newState !== open) {\n setOpen(newState);\n } else {\n return;\n }\n } else {\n setOpen((prevState) => !prevState);\n }\n toggleOpenCallback?.(open);\n },\n [toggleOpenCallback, open]\n );\n\n /**\n * Handler of keyboard clicks.\n */\n const handlerKeyContainer = useCallback(\n (event) => {\n if (closeOnExit) {\n if (\n isKeypress(event, KeyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableList.current) &&\n !isNil(focusableList.current.first)\n ) {\n if (\n (event.shiftKey && event.target.id === focusableList.current.first.id) ||\n (!event.shiftKey && event.target.id === focusableList.current.last.id)\n ) {\n toggleOpen(false);\n }\n }\n if (isKeypress(event, KeyboardCodes.Esc) === false) {\n return;\n }\n buttonRef.current.focus();\n toggleOpen(false);\n }\n },\n [closeOnExit, toggleOpen]\n );\n const renderedAnchorBar = useMemo(\n () => (\n <div id={setId(id, \"anchor-bar\")} className={classes.anchorBar}>\n <Button\n id={setId(id, \"hamburger-button\")}\n className={classes.button}\n ref={buttonRef}\n onClick={() => toggleOpen()}\n aria-label={buttonAriaLabel || (open && \"close\") || (!open && \"open\")}\n icon\n >\n <Menu />\n </Button>\n </div>\n ),\n [buttonAriaLabel, classes.anchorBar, classes.button, id, open, toggleOpen]\n );\n\n const renderedContainer = useMemo(\n () => (\n <>\n {isAnchorBarVisible && <div className={classes.separator} />}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n id={setId(id, \"container\")}\n ref={containerRef}\n className={classes.contentContainer}\n onKeyDown={handlerKeyContainer}\n >\n {children}\n </div>\n </>\n ),\n [\n children,\n classes.contentContainer,\n classes.separator,\n handlerKeyContainer,\n id,\n isAnchorBarVisible,\n ]\n );\n\n return (\n <div\n className={clsx(className, classes.root, {\n [classes.withAnchorBar]: isAnchorBarVisible,\n [classes.static]: position === \"static\",\n [classes.relative]: position === \"relative\",\n [classes.fixed]: position === \"fixed\",\n [classes.absolute]: position === \"absolute\",\n })}\n >\n <ClickAwayListener onClickAway={() => closeOnExit && toggleOpen(false)}>\n <div id={id} className={classes.verticalContainer} {...others}>\n {isAnchorBarVisible && renderedAnchorBar}\n {open && renderedContainer}\n </div>\n </ClickAwayListener>\n </div>\n );\n};\n\nVerticalContainer.propTypes = {\n /**\n * Identifier.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Styles applied to the element.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root container.\n */\n root: PropTypes.string,\n /**\n * Styles applied when the component is in fixed positioning.\n */\n fixed: PropTypes.string,\n /**\n * Styles applied when the component is in relative positioning.\n */\n relative: PropTypes.string,\n /**\n * Styles applied when the component is in absolute positioning.\n */\n absolute: PropTypes.string,\n /**\n * Styles applied when the component is in static positioning.\n */\n static: PropTypes.string,\n /**\n * Styles applied when the component has anchor bar.\n */\n withAnchorBar: PropTypes.string,\n /**\n * Styles applied to the vertical container.\n */\n verticalContainer: PropTypes.string,\n /**\n * Styles applied to the anchor bar.\n */\n anchorBar: PropTypes.string,\n /**\n * Styles applied to the button.\n */\n button: PropTypes.string,\n /**\n * Styles applied to the separator.\n */\n separator: PropTypes.string,\n /**\n * Styles applied to the content container.\n */\n contentContainer: PropTypes.string,\n }).isRequired,\n\n /**\n * Position of the component.\n */\n position: PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n\n /**\n * Defines if a anchor bar is visible,\n */\n isAnchorBarVisible: PropTypes.bool,\n /**\n * Is the navigation open.\n */\n isOpen: PropTypes.bool,\n /**\n * Aria-label for the button.\n */\n buttonAriaLabel: PropTypes.string,\n /**\n * Children component.\n */\n children: PropTypes.node.isRequired,\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Defines if the content pane should close when losing focus / clicking outside.\n */\n closeOnExit: PropTypes.bool,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationVerticalContainer\",\n})(VerticalContainer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VerticalContainer.js","names":["VerticalContainer","id","className","classes","isAnchorBarVisible","isOpen","toggleOpenCallback","buttonAriaLabel","children","position","closeOnExit","others","useState","open","setOpen","prevPropOpen","setPrevPropOpen","containerRef","useRef","buttonRef","focusableList","useEffect","setTimeout","current","getFirstAndLastFocus","toggleOpen","useCallback","newState","prevState","handlerKeyContainer","event","isKeypress","KeyboardCodes","Tab","isNil","target","first","shiftKey","last","Esc","focus","renderedAnchorBar","useMemo","setId","anchorBar","button","renderedContainer","separator","contentContainer","clsx","root","withAnchorBar","static","relative","fixed","absolute","verticalContainer","propTypes","PropTypes","string","shape","isRequired","oneOf","bool","node","func","withStyles","styles","name"],"sources":["../../../src/VerticalNavigation/VerticalContainer/VerticalContainer.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport isNil from \"lodash/isNil\";\nimport { ClickAwayListener, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport { Menu } from \"@hitachivantara/uikit-react-icons\";\nimport { isKeypress, KeyboardCodes } from \"../../utils/KeyboardUtils\";\nimport Button from \"../../Button\";\nimport { setId } from \"../../utils\";\nimport { getFirstAndLastFocus } from \"../../utils/focusableElementFinder\";\n\nimport styles from \"./styles\";\n\n/**\n * Vertical Container.\n *\n * @constructor\n */\nconst VerticalContainer = ({\n id,\n className,\n classes,\n isAnchorBarVisible = true,\n isOpen = false,\n toggleOpenCallback,\n buttonAriaLabel,\n children,\n position = \"static\",\n closeOnExit,\n ...others\n}) => {\n const [open, setOpen] = useState(isOpen);\n const [prevPropOpen, setPrevPropOpen] = useState(null);\n const containerRef = useRef(null);\n const buttonRef = useRef(null);\n const focusableList = useRef(null);\n\n if (isOpen !== prevPropOpen) {\n setOpen(isOpen);\n setPrevPropOpen(isOpen);\n }\n\n /**\n * Fills the object with the first and last focusable element inside the container.\n * When the container is open the first focusable element is focus.\n */\n useEffect(() => {\n setTimeout(() => {\n if (open) {\n focusableList.current = getFirstAndLastFocus(containerRef.current);\n }\n });\n }, [open]);\n\n /**\n * Toggle the open state based on the received paramenter.\n *\n * @type {(...args: any[]) => any}\n */\n const toggleOpen = useCallback(\n (newState = null) => {\n if (newState !== null) {\n if (newState !== open) {\n setOpen(newState);\n } else {\n return;\n }\n } else {\n setOpen((prevState) => !prevState);\n }\n toggleOpenCallback?.(open);\n },\n [toggleOpenCallback, open]\n );\n\n /**\n * Handler of keyboard clicks.\n */\n const handlerKeyContainer = useCallback(\n (event) => {\n if (closeOnExit) {\n if (\n isKeypress(event, KeyboardCodes.Tab) &&\n !isNil(event.target) &&\n !isNil(focusableList.current) &&\n !isNil(focusableList.current.first)\n ) {\n if (\n (event.shiftKey && event.target.id === focusableList.current.first.id) ||\n (!event.shiftKey && event.target.id === focusableList.current.last.id)\n ) {\n toggleOpen(false);\n }\n }\n if (isKeypress(event, KeyboardCodes.Esc) === false) {\n return;\n }\n buttonRef.current.focus();\n toggleOpen(false);\n }\n },\n [closeOnExit, toggleOpen]\n );\n const renderedAnchorBar = useMemo(\n () => (\n <div id={setId(id, \"anchor-bar\")} className={classes.anchorBar}>\n <Button\n id={setId(id, \"hamburger-button\")}\n className={classes.button}\n ref={buttonRef}\n onClick={() => toggleOpen()}\n aria-label={buttonAriaLabel || (open && \"close\") || (!open && \"open\")}\n icon\n >\n <Menu />\n </Button>\n </div>\n ),\n [buttonAriaLabel, classes.anchorBar, classes.button, id, open, toggleOpen]\n );\n\n const renderedContainer = useMemo(\n () => (\n <>\n {isAnchorBarVisible && <div className={classes.separator} />}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n id={setId(id, \"container\")}\n ref={containerRef}\n className={classes.contentContainer}\n onKeyDown={handlerKeyContainer}\n >\n {children}\n </div>\n </>\n ),\n [\n children,\n classes.contentContainer,\n classes.separator,\n handlerKeyContainer,\n id,\n isAnchorBarVisible,\n ]\n );\n\n return (\n <div\n className={clsx(className, classes.root, {\n [classes.withAnchorBar]: isAnchorBarVisible,\n [classes.static]: position === \"static\",\n [classes.relative]: position === \"relative\",\n [classes.fixed]: position === \"fixed\",\n [classes.absolute]: position === \"absolute\",\n })}\n >\n <ClickAwayListener onClickAway={() => closeOnExit && toggleOpen(false)}>\n <div id={id} className={classes.verticalContainer} {...others}>\n {isAnchorBarVisible && renderedAnchorBar}\n {open && renderedContainer}\n </div>\n </ClickAwayListener>\n </div>\n );\n};\n\nVerticalContainer.propTypes = {\n /**\n * Identifier.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * Styles applied to the element.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root container.\n */\n root: PropTypes.string,\n /**\n * Styles applied when the component is in fixed positioning.\n */\n fixed: PropTypes.string,\n /**\n * Styles applied when the component is in relative positioning.\n */\n relative: PropTypes.string,\n /**\n * Styles applied when the component is in absolute positioning.\n */\n absolute: PropTypes.string,\n /**\n * Styles applied when the component is in static positioning.\n */\n static: PropTypes.string,\n /**\n * Styles applied when the component has anchor bar.\n */\n withAnchorBar: PropTypes.string,\n /**\n * Styles applied to the vertical container.\n */\n verticalContainer: PropTypes.string,\n /**\n * Styles applied to the anchor bar.\n */\n anchorBar: PropTypes.string,\n /**\n * Styles applied to the button.\n */\n button: PropTypes.string,\n /**\n * Styles applied to the separator.\n */\n separator: PropTypes.string,\n /**\n * Styles applied to the content container.\n */\n contentContainer: PropTypes.string,\n }).isRequired,\n\n /**\n * Position of the component.\n */\n position: PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n\n /**\n * Defines if a anchor bar is visible,\n */\n isAnchorBarVisible: PropTypes.bool,\n /**\n * Is the navigation open.\n */\n isOpen: PropTypes.bool,\n /**\n * Aria-label for the button.\n */\n buttonAriaLabel: PropTypes.string,\n /**\n * Children component.\n */\n children: PropTypes.node.isRequired,\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Defines if the content pane should close when losing focus / clicking outside.\n */\n closeOnExit: PropTypes.bool,\n};\n\nexport default withStyles(styles, {\n name: \"HvVerticalNavigationVerticalContainer\",\n})(VerticalContainer);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerticalNavigation.js","names":["VerticalNavigation","id","className","classes","children","isOpenProp","isOpen","toggleOpenCallback","isCollapsableProp","isCollapsable","positionProp","position","closeOnExitProp","closeOnExit","buttonAriaLabel","others","deprecatedMode","content","root","legacyMode","noCollapsable","propTypes","PropTypes","string","shape","isRequired","node","bool","func","oneOf","styles","name"],"sources":["../../src/VerticalNavigation/VerticalNavigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport VerticalContainer from \"./VerticalContainer\";\nimport { setId } from \"../utils\";\nimport styles from \"./styles\";\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Even thou both the hierarchically organized data and the visual style ressemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nconst VerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n // deprecated props\n isOpen: isOpenProp,\n toggleOpenCallback,\n isCollapsable: isCollapsableProp,\n position: positionProp,\n closeOnExit: closeOnExitProp,\n buttonAriaLabel,\n\n ...others\n}) => {\n const deprecatedMode =\n isOpenProp != null ||\n toggleOpenCallback != null ||\n isCollapsableProp != null ||\n positionProp != null ||\n closeOnExitProp != null ||\n buttonAriaLabel != null;\n\n let isOpen;\n let isCollapsable;\n let position;\n let closeOnExit;\n if (deprecatedMode) {\n // restore the default values if needed\n closeOnExit = closeOnExitProp ?? false;\n position = positionProp ?? \"static\";\n isCollapsable = isCollapsableProp ?? false;\n isOpen = isOpenProp ?? !isCollapsable;\n }\n\n const content = (\n <div\n id={id}\n className={clsx(className, classes.root, {\n [classes.noCollapsable]: deprecatedMode && !isCollapsable,\n [classes.legacyMode]: deprecatedMode,\n })}\n {...others}\n >\n {children}\n </div>\n );\n\n if (deprecatedMode) {\n return (\n <VerticalContainer\n id={setId(id, \"container\")}\n isOpen={isOpen}\n toggleOpenCallback={toggleOpenCallback}\n position={position}\n isAnchorBarVisible={isCollapsable}\n closeOnExit={closeOnExit}\n buttonAriaLabel={buttonAriaLabel}\n >\n {content}\n </VerticalContainer>\n );\n }\n\n return content;\n};\n\nVerticalNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the root of the component when it not collapsable.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n noCollapsable: deprecatedPropType(PropTypes.string),\n /**\n * @ignore\n */\n legacyMode: PropTypes.string,\n }).isRequired,\n\n /**\n * The content inside the actions container.\n */\n children: PropTypes.node,\n\n /**\n * Sets if the navigation should have a button to hide itself.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isCollapsable: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Is the navigation open.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isOpen: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Position of the component.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n position: deprecatedPropType(\n PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Defines if the navigation should close when losing focus / clicking outside.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n closeOnExit: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Aria-label for the button that opens the vertical navigation.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n buttonAriaLabel: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigation\" })(VerticalNavigation);\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,OAgBrB;EAAA,IAfJC,EAeI,QAfJA,EAeI;EAAA,IAdJC,SAcI,QAdJA,SAcI;EAAA,IAbJC,OAaI,QAbJA,OAaI;EAAA,IAXJC,QAWI,QAXJA,QAWI;EAAA,IARIC,UAQJ,QARJC,MAQI;EAAA,IAPJC,kBAOI,QAPJA,kBAOI;EAAA,IANWC,iBAMX,QANJC,aAMI;EAAA,IALMC,YAKN,QALJC,QAKI;EAAA,IAJSC,eAIT,QAJJC,WAII;EAAA,IAHJC,eAGI,QAHJA,eAGI;EAAA,IADDC,MACC;EACJ,IAAMC,cAAc,GAClBX,UAAU,IAAI,IAAd,IACAE,kBAAkB,IAAI,IADtB,IAEAC,iBAAiB,IAAI,IAFrB,IAGAE,YAAY,IAAI,IAHhB,IAIAE,eAAe,IAAI,IAJnB,IAKAE,eAAe,IAAI,IANrB;EAQA,IAAIR,MAAJ;EACA,IAAIG,aAAJ;EACA,IAAIE,QAAJ;EACA,IAAIE,WAAJ;;EACA,IAAIG,cAAJ,EAAoB;IAClB;IACAH,WAAW,GAAGD,eAAH,aAAGA,eAAH,cAAGA,eAAH,GAAsB,KAAjC;IACAD,QAAQ,GAAGD,YAAH,aAAGA,YAAH,cAAGA,YAAH,GAAmB,QAA3B;IACAD,aAAa,GAAGD,iBAAH,aAAGA,iBAAH,cAAGA,iBAAH,GAAwB,KAArC;IACAF,MAAM,GAAGD,UAAH,aAAGA,UAAH,cAAGA,UAAH,GAAiB,CAACI,aAAxB;EACD;;EAED,IAAMQ,OAAO,gBACX;IACE,EAAE,EAAEhB,EADN;IAEE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"VerticalNavigation.js","names":["VerticalNavigation","id","className","classes","children","isOpenProp","isOpen","toggleOpenCallback","isCollapsableProp","isCollapsable","positionProp","position","closeOnExitProp","closeOnExit","buttonAriaLabel","others","deprecatedMode","content","clsx","root","legacyMode","noCollapsable","setId","propTypes","PropTypes","string","shape","deprecatedPropType","isRequired","node","bool","func","oneOf","withStyles","styles","name"],"sources":["../../src/VerticalNavigation/VerticalNavigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport VerticalContainer from \"./VerticalContainer\";\nimport { setId } from \"../utils\";\nimport styles from \"./styles\";\n\n/**\n * Navigation enables users to move through an app to complete tasks.\n *\n * It is recommended to use vertical navigation when your application requires global navigation that is displayed on the left.\n * While vertical navigation menus generally consume more space than their horizontal counterparts, they have become more popular as desktop monitors move to wide-screen formats.\n *\n * Even thou both the hierarchically organized data and the visual style ressemble a treeview-like structure, the [Treeview Design Pattern](https://w3c.github.io/aria-practices/#TreeView)\n * isn't necessarily the most appropriate.\n *\n * The tree role provides complex functionality that is not needed for typical site navigation, and changes the most common keyboard navigation using TAB.\n *\n * The [Disclosure Design Pattern](https://w3c.github.io/aria-practices/#disclosure) is more suited for typical site navigation, with expandable groups of links.\n * However it can be tedious to TAB through all navigation items to reach the actions panel.\n *\n * Both modes are available via the `mode` property and each app should choose the most appropriate.\n */\nconst VerticalNavigation = ({\n id,\n className,\n classes,\n\n children,\n\n // deprecated props\n isOpen: isOpenProp,\n toggleOpenCallback,\n isCollapsable: isCollapsableProp,\n position: positionProp,\n closeOnExit: closeOnExitProp,\n buttonAriaLabel,\n\n ...others\n}) => {\n const deprecatedMode =\n isOpenProp != null ||\n toggleOpenCallback != null ||\n isCollapsableProp != null ||\n positionProp != null ||\n closeOnExitProp != null ||\n buttonAriaLabel != null;\n\n let isOpen;\n let isCollapsable;\n let position;\n let closeOnExit;\n if (deprecatedMode) {\n // restore the default values if needed\n closeOnExit = closeOnExitProp ?? false;\n position = positionProp ?? \"static\";\n isCollapsable = isCollapsableProp ?? false;\n isOpen = isOpenProp ?? !isCollapsable;\n }\n\n const content = (\n <div\n id={id}\n className={clsx(className, classes.root, {\n [classes.noCollapsable]: deprecatedMode && !isCollapsable,\n [classes.legacyMode]: deprecatedMode,\n })}\n {...others}\n >\n {children}\n </div>\n );\n\n if (deprecatedMode) {\n return (\n <VerticalContainer\n id={setId(id, \"container\")}\n isOpen={isOpen}\n toggleOpenCallback={toggleOpenCallback}\n position={position}\n isAnchorBarVisible={isCollapsable}\n closeOnExit={closeOnExit}\n buttonAriaLabel={buttonAriaLabel}\n >\n {content}\n </VerticalContainer>\n );\n }\n\n return content;\n};\n\nVerticalNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root of the component.\n */\n root: PropTypes.string,\n /**\n * Style applied to the root of the component when it not collapsable.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n noCollapsable: deprecatedPropType(PropTypes.string),\n /**\n * @ignore\n */\n legacyMode: PropTypes.string,\n }).isRequired,\n\n /**\n * The content inside the actions container.\n */\n children: PropTypes.node,\n\n /**\n * Sets if the navigation should have a button to hide itself.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isCollapsable: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Is the navigation open.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n isOpen: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Callback when the navigation toggles between open and close.\n */\n toggleOpenCallback: PropTypes.func,\n /**\n * Position of the component.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n position: deprecatedPropType(\n PropTypes.oneOf([\"static\", \"relative\", \"fixed\", \"absolute\"]),\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Defines if the navigation should close when losing focus / clicking outside.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n closeOnExit: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n /**\n * Aria-label for the button that opens the vertical navigation.\n *\n * @deprecated This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\n */\n buttonAriaLabel: deprecatedPropType(\n PropTypes.bool,\n \"This logic should be external, i.e. using the HvVerticalNavigation inside a Drawer component.\"\n ),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigation\" })(VerticalNavigation);\n"],"mappings":"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"}
|
|
@@ -83,10 +83,14 @@ process.env.NODE_ENV !== "production" ? MenuBar.propTypes = {
|
|
|
83
83
|
*
|
|
84
84
|
* id - the id to be applied to the root element.
|
|
85
85
|
* label - the label to be rendered on the menu item.
|
|
86
|
+
* href - the url used for navigation.
|
|
87
|
+
* target - the behavior when opening an url.
|
|
86
88
|
*/
|
|
87
89
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
88
90
|
id: PropTypes.string.isRequired,
|
|
89
|
-
label: PropTypes.string.isRequired
|
|
91
|
+
label: PropTypes.string.isRequired,
|
|
92
|
+
href: PropTypes.string,
|
|
93
|
+
target: PropTypes.string
|
|
90
94
|
})),
|
|
91
95
|
|
|
92
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuBar.js","names":["React","useContext","clsx","PropTypes","withStyles","SelectionContext","MenuItem","styles","MenuBar","classes","id","data","onClick","type","selectionPath","isMenu","isActive","filter","item","length","root","hidden","active","list","map","propTypes","shape","string","menubar","menu","isRequired","arrayOf","label","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuBar/MenuBar.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport MenuItem from \"../MenuItem\";\nimport styles from \"./styles\";\n\nconst MenuBar = ({ classes, id, data = [], onClick, type }) => {\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n const isActive = isMenu && data.filter((item) => item.id === selectionPath[1]).length > 0;\n\n return (\n <div\n className={clsx(classes.root, classes[`${type}`], {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n })}\n >\n <ul id={id} className={classes.list} onFocus={() => {}}>\n {data.map((item) => (\n <MenuItem key={item.id} item={item} type={type} onClick={onClick} />\n ))}\n </ul>\n </div>\n );\n};\n\nMenuBar.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the menu bar.\n */\n menubar: PropTypes.string,\n /**\n * Styles applied to the menu.\n */\n menu: PropTypes.string,\n /**\n * Styles applied when in menu mode.\n */\n hidden: PropTypes.string,\n /**\n * Styles applied when active.\n */\n active: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n list: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n /**\n * Callback triggered when item is clicked.\n */\n onClick: PropTypes.func,\n /**\n * The type of menu.\n */\n type: PropTypes.oneOf([\"menubar\", \"menu\"]).isRequired,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderMenuBar\" })(MenuBar);\n"],"mappings":";;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,OAAOC,gBAAP,MAA6B,2BAA7B;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,OAA+C;EAAA,IAA5CC,OAA4C,QAA5CA,OAA4C;EAAA,IAAnCC,EAAmC,QAAnCA,EAAmC;EAAA,qBAA/BC,IAA+B;EAAA,IAA/BA,IAA+B,0BAAxB,EAAwB;EAAA,IAApBC,OAAoB,QAApBA,OAAoB;EAAA,IAAXC,IAAW,QAAXA,IAAW;EAC7D,IAAMC,aAAa,GAAGb,UAAU,CAACI,gBAAD,CAAhC;EAEA,IAAMU,MAAM,GAAGF,IAAI,KAAK,MAAxB;EACA,IAAMG,QAAQ,GAAGD,MAAM,IAAIJ,IAAI,CAACM,MAAL,CAAY,UAACC,IAAD;IAAA,OAAUA,IAAI,CAACR,EAAL,KAAYI,aAAa,CAAC,CAAD,CAAnC;EAAA,CAAZ,EAAoDK,MAApD,GAA6D,CAAxF;EAEA,oBACE;IACE,SAAS,EAAEjB,IAAI,CAACO,OAAO,CAACW,IAAT,EAAeX,OAAO,WAAII,IAAJ,EAAtB,EACKE,MADL,IACZN,OAAO,CAACY,MADI,EAEKL,QAFL,IAEZP,OAAO,CAACa,MAFI;EADjB,gBAME;IAAI,EAAE,EAAEZ,EAAR;IAAY,SAAS,EAAED,OAAO,CAACc,IAA/B;IAAqC,OAAO,EAAE,mBAAM,CAAE;EAAtD,GACGZ,IAAI,CAACa,GAAL,CAAS,UAACN,IAAD;IAAA,oBACR,oBAAC,QAAD;MAAU,GAAG,EAAEA,IAAI,CAACR,EAApB;MAAwB,IAAI,EAAEQ,IAA9B;MAAoC,IAAI,EAAEL,IAA1C;MAAgD,OAAO,EAAED;IAAzD,EADQ;EAAA,CAAT,CADH,CANF,CADF;AAcD,CApBD;;AAsBA,wCAAAJ,OAAO,CAACiB,SAAR,GAAoB;EAClB;AACF;AACA;EACEhB,OAAO,EAAEN,SAAS,CAACuB,KAAV,CAAgB;IACvB;AACJ;AACA;IACIN,IAAI,EAAEjB,SAAS,CAACwB,MAJO;;IAKvB;AACJ;AACA;IACIC,OAAO,EAAEzB,SAAS,CAACwB,MARI;;IASvB;AACJ;AACA;IACIE,IAAI,EAAE1B,SAAS,CAACwB,MAZO;;IAavB;AACJ;AACA;IACIN,MAAM,EAAElB,SAAS,CAACwB,MAhBK;;IAiBvB;AACJ;AACA;IACIL,MAAM,EAAEnB,SAAS,CAACwB,MApBK;;IAqBvB;AACJ;AACA;IACIJ,IAAI,EAAEpB,SAAS,CAACwB;EAxBO,CAAhB,EAyBNG,UA7Be;;EA8BlB;AACF;AACA;EACEpB,EAAE,EAAEP,SAAS,CAACwB,MAjCI;;EAkClB;AACF;AACA;AACA;AACA;AACA;EACEhB,IAAI,EAAER,SAAS,CAAC4B,OAAV,CACJ5B,SAAS,CAACuB,KAAV,CAAgB;IACdhB,EAAE,EAAEP,SAAS,CAACwB,MAAV,CAAiBG,UADP;IAEdE,KAAK,EAAE7B,SAAS,CAACwB,MAAV,CAAiBG;
|
|
1
|
+
{"version":3,"file":"MenuBar.js","names":["React","useContext","clsx","PropTypes","withStyles","SelectionContext","MenuItem","styles","MenuBar","classes","id","data","onClick","type","selectionPath","isMenu","isActive","filter","item","length","root","hidden","active","list","map","propTypes","shape","string","menubar","menu","isRequired","arrayOf","label","href","target","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuBar/MenuBar.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport MenuItem from \"../MenuItem\";\nimport styles from \"./styles\";\n\nconst MenuBar = ({ classes, id, data = [], onClick, type }) => {\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n const isActive = isMenu && data.filter((item) => item.id === selectionPath[1]).length > 0;\n\n return (\n <div\n className={clsx(classes.root, classes[`${type}`], {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n })}\n >\n <ul id={id} className={classes.list} onFocus={() => {}}>\n {data.map((item) => (\n <MenuItem key={item.id} item={item} type={type} onClick={onClick} />\n ))}\n </ul>\n </div>\n );\n};\n\nMenuBar.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the menu bar.\n */\n menubar: PropTypes.string,\n /**\n * Styles applied to the menu.\n */\n menu: PropTypes.string,\n /**\n * Styles applied when in menu mode.\n */\n hidden: PropTypes.string,\n /**\n * Styles applied when active.\n */\n active: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n list: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n /**\n * Callback triggered when item is clicked.\n */\n onClick: PropTypes.func,\n /**\n * The type of menu.\n */\n type: PropTypes.oneOf([\"menubar\", \"menu\"]).isRequired,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderMenuBar\" })(MenuBar);\n"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import "core-js/modules/es.string.link.js";
|
|
1
3
|
import React, { useContext } from "react";
|
|
2
4
|
import clsx from "clsx";
|
|
3
5
|
import PropTypes from "prop-types";
|
|
@@ -51,6 +53,15 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
var isIe = isBrowser(["ie", "edge"]);
|
|
56
|
+
var label = /*#__PURE__*/React.createElement(HvTypography, {
|
|
57
|
+
variant: isSelected ? "selectedNavText" : "normalText"
|
|
58
|
+
}, item.label);
|
|
59
|
+
var itemProps = {
|
|
60
|
+
onClick: actionHandler,
|
|
61
|
+
onKeyDown: actionHandler,
|
|
62
|
+
tabIndex: 0,
|
|
63
|
+
onFocus: handleFocus
|
|
64
|
+
};
|
|
54
65
|
return /*#__PURE__*/React.createElement("li", {
|
|
55
66
|
id: id,
|
|
56
67
|
key: item.label,
|
|
@@ -58,16 +69,14 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
58
69
|
}, /*#__PURE__*/React.createElement(ConditionalWrapper, {
|
|
59
70
|
condition: isIe,
|
|
60
71
|
wrapper: focusWrapper
|
|
61
|
-
}, /*#__PURE__*/React.createElement("
|
|
62
|
-
|
|
72
|
+
}, item !== null && item !== void 0 && item.href ? /*#__PURE__*/React.createElement("a", _extends({
|
|
73
|
+
className: clsx(classes.button, classes.link),
|
|
74
|
+
href: item === null || item === void 0 ? void 0 : item.href,
|
|
75
|
+
target: item === null || item === void 0 ? void 0 : item.target
|
|
76
|
+
}, itemProps), label) : /*#__PURE__*/React.createElement("div", _extends({
|
|
63
77
|
className: clsx(classes.button),
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
tabIndex: 0,
|
|
67
|
-
onFocus: handleFocus
|
|
68
|
-
}, /*#__PURE__*/React.createElement(HvTypography, {
|
|
69
|
-
variant: isSelected ? "selectedNavText" : "normalText"
|
|
70
|
-
}, item.label))), hasSubLevel && /*#__PURE__*/React.createElement(MenuBar, {
|
|
78
|
+
role: "button"
|
|
79
|
+
}, itemProps), label)), hasSubLevel && /*#__PURE__*/React.createElement(MenuBar, {
|
|
71
80
|
data: data,
|
|
72
81
|
onClick: onClick,
|
|
73
82
|
type: "menu"
|
|
@@ -99,6 +108,11 @@ process.env.NODE_ENV !== "production" ? MenuItem.propTypes = {
|
|
|
99
108
|
*/
|
|
100
109
|
button: PropTypes.string,
|
|
101
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Style applied to each item button when it is behaving as a.
|
|
113
|
+
*/
|
|
114
|
+
link: PropTypes.string,
|
|
115
|
+
|
|
102
116
|
/**
|
|
103
117
|
* Style applied to the reference element used for ie focus.
|
|
104
118
|
*/
|
|
@@ -124,6 +138,8 @@ process.env.NODE_ENV !== "production" ? MenuItem.propTypes = {
|
|
|
124
138
|
item: PropTypes.shape({
|
|
125
139
|
id: PropTypes.string.isRequired,
|
|
126
140
|
label: PropTypes.string.isRequired,
|
|
141
|
+
href: PropTypes.string,
|
|
142
|
+
target: PropTypes.string,
|
|
127
143
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
128
144
|
id: PropTypes.string.isRequired,
|
|
129
145
|
label: PropTypes.string.isRequired
|