@entur/menu 5.0.0-alpha.0 → 5.0.0

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.
@@ -6,12 +6,13 @@ var utils = require('@entur/utils');
6
6
  var React = require('react');
7
7
  var classNames = require('classnames');
8
8
  var icons = require('@entur/icons');
9
- var expand = require('@entur/expand');
10
- var menuButton = require('@reach/menu-button');
9
+ var react = require('@floating-ui/react');
10
+ var button = require('@entur/button');
11
+ var tooltip = require('@entur/tooltip');
12
+ var tokens = require('@entur/tokens');
11
13
  var a11y = require('@entur/a11y');
12
- var layout = require('@entur/layout');
13
14
  var typography = require('@entur/typography');
14
- var button = require('@entur/button');
15
+ var expand = require('@entur/expand');
15
16
 
16
17
  var BreadcrumbNavigation = function BreadcrumbNavigation(_ref) {
17
18
  var _ref$ariaLabel = _ref['aria-label'],
@@ -78,25 +79,6 @@ var BreadcrumbItem = function BreadcrumbItem(_ref) {
78
79
  }));
79
80
  };
80
81
 
81
- var _excluded$7 = ["className", "children", "size"];
82
- var SideNavigation = function SideNavigation(_ref) {
83
- var className = _ref.className,
84
- children = _ref.children,
85
- _ref$size = _ref.size,
86
- size = _ref$size === void 0 ? 'medium' : _ref$size,
87
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
88
- if (!children || !React.Children.count(children)) {
89
- return null;
90
- }
91
- return React.createElement("ul", _extends({
92
- className: classNames('eds-side-navigation', {
93
- 'eds-side-navigation--small': size === 'small'
94
- }, className)
95
- }, rest), children);
96
- };
97
- /** This is required to check that the Menu */
98
- SideNavigation.__IS_ENTUR_MENU__ = true;
99
-
100
82
  function useControllableProp(_ref) {
101
83
  var prop = _ref.prop,
102
84
  _ref$updater = _ref.updater,
@@ -115,7 +97,7 @@ function useControllableProp(_ref) {
115
97
  return prop === undefined ? [internalState, setInternalState] : [prop, updater];
116
98
  }
117
99
 
118
- var _excluded$6 = ["className", "children", "size", "collapsed", "onCollapseToggle", "collapsibleButtonPosition", "openSideMenuAriaLabel", "closeSideMenuAriaLabel"];
100
+ var _excluded$7 = ["className", "children", "size", "collapsed", "onCollapseToggle", "collapsibleButtonPosition", "openSideMenuAriaLabel", "closeSideMenuAriaLabel"];
119
101
  var CollapsibleSideNavigation = function CollapsibleSideNavigation(_ref) {
120
102
  var className = _ref.className,
121
103
  children = _ref.children,
@@ -128,7 +110,7 @@ var CollapsibleSideNavigation = function CollapsibleSideNavigation(_ref) {
128
110
  openSideMenuAriaLabel = _ref$openSideMenuAria === void 0 ? 'Åpne sidemeny' : _ref$openSideMenuAria,
129
111
  _ref$closeSideMenuAri = _ref.closeSideMenuAriaLabel,
130
112
  closeSideMenuAriaLabel = _ref$closeSideMenuAri === void 0 ? 'Lukk sidemeny' : _ref$closeSideMenuAri,
131
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
113
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
132
114
  var _useControllableProp = useControllableProp({
133
115
  prop: collapsible,
134
116
  defaultValue: false,
@@ -171,180 +153,155 @@ var useSideNavigationContext = function useSideNavigationContext() {
171
153
  return context;
172
154
  };
173
155
 
174
- var useShowDelayedLabel = function useShowDelayedLabel(isCollapsed) {
175
- var _useState = React.useState(true),
176
- showLabel = _useState[0],
177
- setShowLabel = _useState[1];
178
- var hideDelay = 50;
179
- var showDelay = 200;
180
- React.useEffect(function () {
181
- if (isCollapsed) {
182
- setTimeout(function () {
183
- setShowLabel(false);
184
- }, hideDelay);
185
- }
186
- if (!isCollapsed) {
187
- setTimeout(function () {
188
- setShowLabel(true);
189
- }, showDelay);
190
- }
191
- return function () {
192
- return undefined;
193
- };
194
- }, [isCollapsed]);
195
- return [showLabel];
196
- };
197
-
198
- var _excluded$5 = ["className", "active", "subMenu", "icon", "children", "as"],
199
- _excluded2$1 = ["children"],
200
- _excluded3$1 = ["active", "disabled", "children", "forceExpandSubMenus", "as"];
201
- function isActiveRecursively(child) {
202
- if (!child.props) {
203
- return false;
204
- }
205
- if (child.props.active) {
206
- return true;
207
- }
208
- if (!child.props.children) {
209
- return false;
210
- }
211
- return React.Children.toArray(child.props.children).some(function (child) {
212
- return isActiveRecursively(child);
213
- });
214
- }
215
- var defaultElementBaseItem = 'a';
216
- var BaseSideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
217
- var className = _ref.className,
218
- _ref$active = _ref.active,
219
- active = _ref$active === void 0 ? false : _ref$active,
220
- subMenu = _ref.subMenu,
221
- icon = _ref.icon,
222
- children = _ref.children,
223
- as = _ref.as,
224
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
225
- var Element = as || defaultElementBaseItem;
226
- var _useSideNavigationCon = useSideNavigationContext(),
227
- isCollapsed = _useSideNavigationCon.isCollapsed;
228
- var _useShowDelayedLabel = useShowDelayedLabel(isCollapsed),
229
- showLabel = _useShowDelayedLabel[0];
230
- return React.createElement("li", {
231
- className: classNames('eds-side-navigation__item', className)
232
- }, React.createElement(Element, _extends({
233
- className: classNames('eds-side-navigation__click-target', {
234
- 'eds-side-navigation__click-target--active': active
156
+ var _excluded$6 = ["children", "className", "button", "buttonIcon", "placement", "aria-label"],
157
+ _excluded2$1 = ["children", "className", "onSelect", "href", "disabled"],
158
+ _excluded3$1 = ["href"];
159
+ var SelectContext = /*#__PURE__*/React.createContext({});
160
+ var OverflowMenu = function OverflowMenu(_ref) {
161
+ var children = _ref.children,
162
+ className = _ref.className,
163
+ button$1 = _ref.button,
164
+ buttonIcon = _ref.buttonIcon,
165
+ _ref$placement = _ref.placement,
166
+ placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
167
+ _ref$ariaLabel = _ref['aria-label'],
168
+ ariaLabel = _ref$ariaLabel === void 0 ? 'åpne valgmeny' : _ref$ariaLabel,
169
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
170
+ var _useState = React.useState(false),
171
+ isOpen = _useState[0],
172
+ setIsOpen = _useState[1];
173
+ var _useState2 = React.useState(null),
174
+ activeIndex = _useState2[0],
175
+ setActiveIndex = _useState2[1];
176
+ var listRef = React.useRef([]);
177
+ var labelsRef = React.useRef([]);
178
+ var _useFloating = react.useFloating({
179
+ whileElementsMounted: react.autoUpdate,
180
+ placement: tooltip.standardisePlacement(
181
+ // check for left is added for backwards compatibility
182
+ rest.position === 'left' ? 'bottom-end' : placement),
183
+ open: isOpen,
184
+ onOpenChange: setIsOpen,
185
+ middleware: [react.offset(tokens.space.extraSmall2), react.flip(), react.shift({
186
+ padding: tokens.space.extraSmall
187
+ })]
235
188
  }),
236
- "aria-label": icon ? children : undefined,
237
- "aria-current": active ? 'page' : undefined,
238
- ref: ref
239
- }, rest), icon, showLabel && children), subMenu);
240
- });
241
- var DisabledSideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
242
- var children = _ref2.children,
243
- rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
244
- return React.createElement(BaseSideNavigationItem, _extends({
245
- as: "button",
246
- disabled: true,
247
- "aria-disabled": true,
248
- ref: ref
249
- }, rest), children);
250
- });
251
- var defaultElementItem = 'a';
252
- var SideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
253
- var active = _ref3.active,
254
- disabled = _ref3.disabled,
255
- children = _ref3.children,
256
- forceExpandSubMenus = _ref3.forceExpandSubMenus,
257
- as = _ref3.as,
258
- rest = _objectWithoutPropertiesLoose(_ref3, _excluded3$1);
259
- var Element = as || defaultElementItem;
260
- var childrenArray = React.Children.toArray(children);
261
- var subMenu = childrenArray.find(function (child) {
262
- return child && child.type && child.type.__IS_ENTUR_MENU__;
189
+ refs = _useFloating.refs,
190
+ floatingStyles = _useFloating.floatingStyles,
191
+ context = _useFloating.context;
192
+ var listNav = react.useListNavigation(context, {
193
+ listRef: listRef,
194
+ activeIndex: activeIndex,
195
+ onNavigate: setActiveIndex
263
196
  });
264
- var label = subMenu ? childrenArray.filter(function (child) {
265
- return child !== subMenu;
266
- }) : children;
267
- if (disabled) {
268
- return React.createElement(DisabledSideNavigationItem, _extends({
269
- ref: ref
270
- }, rest), label);
271
- }
272
- if (!subMenu) {
273
- return React.createElement(BaseSideNavigationItem, _extends({
274
- as: Element,
275
- active: active,
276
- ref: ref
277
- }, rest), label);
278
- }
279
- var isExpanded = forceExpandSubMenus || isActiveRecursively({
280
- props: {
281
- children: children,
282
- active: active
197
+ var typeahead = react.useTypeahead(context, {
198
+ listRef: labelsRef,
199
+ activeIndex: activeIndex,
200
+ onMatch: function onMatch(index) {
201
+ return isOpen && setActiveIndex(index);
283
202
  }
284
203
  });
285
- return React.createElement(BaseSideNavigationItem, _extends({
286
- active: active,
287
- subMenu: isExpanded && subMenu,
288
- "aria-expanded": isExpanded,
289
- as: Element,
290
- ref: ref
291
- }, rest), label);
292
- });
293
-
294
- var _excluded$4 = ["defaultOpen", "open", "onToggle", "className", "children", "title", "icon"];
295
- var SideNavigationGroup = function SideNavigationGroup(_ref) {
296
- var _ref$defaultOpen = _ref.defaultOpen,
297
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
298
- open = _ref.open,
299
- onToggle = _ref.onToggle,
300
- className = _ref.className,
301
- children = _ref.children,
302
- title = _ref.title,
303
- icon = _ref.icon,
304
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
305
- var _useControllableProp = useControllableProp({
306
- prop: open,
307
- updater: onToggle,
308
- defaultValue: defaultOpen
309
- }),
310
- isOpen = _useControllableProp[0],
311
- setOpen = _useControllableProp[1];
312
- var _useSideNavigationCon = useSideNavigationContext(),
313
- isCollapsed = _useSideNavigationCon.isCollapsed;
314
- var _useShowDelayedLabel = useShowDelayedLabel(isCollapsed),
315
- showLabel = _useShowDelayedLabel[0];
316
- return React.createElement("div", _extends({
317
- className: classNames('eds-side-navigation-group', className)
318
- }, rest), React.createElement("button", {
204
+ var role = react.useRole(context, {
205
+ role: 'menu'
206
+ });
207
+ var _useInteractions = react.useInteractions([listNav, typeahead, role]),
208
+ getReferenceProps = _useInteractions.getReferenceProps,
209
+ getFloatingProps = _useInteractions.getFloatingProps,
210
+ getItemProps = _useInteractions.getItemProps;
211
+ var closeMenuAndReturnFocus = function closeMenuAndReturnFocus() {
212
+ var _refs$reference$curre;
213
+ setIsOpen(false);
214
+ // @ts-expect-error the reference element is actually focusable
215
+ (_refs$reference$curre = refs.reference.current) == null ? void 0 : _refs$reference$curre.focus == null ? void 0 : _refs$reference$curre.focus();
216
+ };
217
+ utils.useOnClickOutside([refs.floating, refs.reference], function () {
218
+ return setIsOpen(false);
219
+ });
220
+ utils.useOnEscape(refs.floating, closeMenuAndReturnFocus);
221
+ utils.useOnEscape(refs.reference, closeMenuAndReturnFocus);
222
+ var selectContext = React.useMemo(function () {
223
+ return {
224
+ activeIndex: activeIndex,
225
+ getItemProps: getItemProps,
226
+ closeMenuAndReturnFocus: closeMenuAndReturnFocus
227
+ };
228
+ }, [activeIndex, getItemProps, closeMenuAndReturnFocus]);
229
+ var _buttonIcon = buttonIcon != null ? buttonIcon : React.createElement(icons.VerticalDotsIcon, null);
230
+ return React.createElement(React.Fragment, null, !button$1 ? React.createElement(button.IconButton, _extends({
231
+ ref: refs.setReference
232
+ }, getReferenceProps({
319
233
  onClick: function onClick() {
320
- return setOpen(!isOpen);
234
+ return setIsOpen(!isOpen);
321
235
  },
322
- type: "button",
323
- className: "eds-side-navigation-group__trigger",
324
- "aria-label": title + ", utvidbar meny, " + (isOpen ? 'åpen' : 'lukket')
325
- }, React.createElement("span", null, icon && React.createElement("span", {
326
- className: "eds-side-navigation-group__trigger-icon"
327
- }, icon), showLabel && title), showLabel && React.createElement(expand.ExpandArrow, {
328
- open: isOpen,
329
- className: "eds-side-navigation-group__expand-icon"
330
- })), React.createElement(expand.BaseExpand, {
331
- open: isOpen
332
- }, children));
236
+ className: className,
237
+ 'aria-label': ariaLabel
238
+ }), rest), _buttonIcon) : React.cloneElement(button$1, _extends({
239
+ ref: refs.setReference
240
+ }, getReferenceProps({
241
+ onClick: function onClick() {
242
+ return setIsOpen(!isOpen);
243
+ },
244
+ className: className,
245
+ 'aria-label': ariaLabel
246
+ }), rest)), React.createElement(SelectContext.Provider, {
247
+ value: selectContext
248
+ }, React.createElement("div", _extends({
249
+ ref: refs.setFloating,
250
+ style: _extends({}, floatingStyles, {
251
+ display: isOpen ? 'initial' : 'none'
252
+ })
253
+ }, getFloatingProps({
254
+ className: 'eds-overflow-menu__menu-list'
255
+ })), React.createElement(react.FloatingList, {
256
+ elementsRef: listRef,
257
+ labelsRef: labelsRef
258
+ }, children))));
333
259
  };
334
-
335
- var _excluded$3 = ["active", "className", "as"];
336
- var defaultElement = 'a';
337
- var TopNavigationItem = function TopNavigationItem(_ref) {
338
- var _ref$active = _ref.active,
339
- active = _ref$active === void 0 ? false : _ref$active,
340
- className = _ref.className,
341
- as = _ref.as,
342
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
343
- var Element = as || defaultElement;
260
+ var OverflowMenuItem = function OverflowMenuItem(_ref2) {
261
+ var children = _ref2.children,
262
+ className = _ref2.className,
263
+ _ref2$onSelect = _ref2.onSelect,
264
+ onSelect = _ref2$onSelect === void 0 ? function () {
265
+ return undefined;
266
+ } : _ref2$onSelect,
267
+ href = _ref2.href,
268
+ disabled = _ref2.disabled,
269
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
270
+ var _useContext = React.useContext(SelectContext),
271
+ activeIndex = _useContext.activeIndex,
272
+ getItemProps = _useContext.getItemProps,
273
+ closeMenuAndReturnFocus = _useContext.closeMenuAndReturnFocus;
274
+ var _useListItem = react.useListItem({
275
+ label: !disabled ? utils.getNodeText(children) : null
276
+ }),
277
+ listItemRef = _useListItem.ref,
278
+ index = _useListItem.index;
279
+ var isHighlighted = activeIndex === index;
280
+ var isLink = href !== undefined;
281
+ var Element = isLink ? 'a' : 'button';
344
282
  return React.createElement(Element, _extends({
345
- className: classNames(['eds-top-navigation-item', className, {
346
- 'eds-top-navigation-item--active': active
347
- }])
283
+ ref: listItemRef,
284
+ className: classNames('eds-overflow-menu__item', {
285
+ 'eds-overflow-menu__item--disabled': disabled,
286
+ 'eds-overflow-menu__item--highlighted': isHighlighted
287
+ }, className),
288
+ role: "menuitem",
289
+ "aria-disabled": disabled,
290
+ "aria-selected": isHighlighted
291
+ }, getItemProps({
292
+ onClick: isLink || disabled ? undefined : function () {
293
+ onSelect();
294
+ closeMenuAndReturnFocus();
295
+ },
296
+ href: disabled ? undefined : href,
297
+ tabIndex: isHighlighted ? 0 : -1
298
+ }), rest), children);
299
+ };
300
+ var OverflowMenuLink = function OverflowMenuLink(_ref3) {
301
+ var href = _ref3.href,
302
+ rest = _objectWithoutPropertiesLoose(_ref3, _excluded3$1);
303
+ return React.createElement(OverflowMenuItem, _extends({
304
+ href: href
348
305
  }, rest));
349
306
  };
350
307
 
@@ -357,10 +314,10 @@ var PaginationPage = function PaginationPage(_ref) {
357
314
  ariaLabel = _ref['aria-label'],
358
315
  ariaDescribedby = _ref['aria-describedby'];
359
316
  return React.createElement("button", {
360
- className: classNames('eds-pagination__page', {
361
- 'eds-pagination__page--selected': selected
317
+ className: classNames('eds-pagination__controls__page', {
318
+ 'eds-pagination__controls__page--selected': selected
362
319
  }, {
363
- 'eds-pagination__page--disabled': disabled
320
+ 'eds-pagination__controls__page--disabled': disabled
364
321
  }, className),
365
322
  disabled: selected || disabled,
366
323
  type: "button",
@@ -413,83 +370,19 @@ var PaginationInput = function PaginationInput(_ref) {
413
370
  noValidate: true,
414
371
  "aria-label": "form"
415
372
  }, React.createElement("label", {
416
- className: "eds-pagination__input-wrapper"
373
+ className: "eds-pagination__controls__input__wrapper"
417
374
  }, React.createElement("span", {
418
- className: "eds-pagination__input-label"
375
+ className: "eds-pagination__controls__input__label"
419
376
  }, label), React.createElement("input", {
420
377
  type: "number",
421
378
  max: pageCount,
422
- className: "eds-pagination__input-field",
379
+ className: "eds-pagination__controls__input__field",
423
380
  value: input,
424
381
  onChange: handleChange
425
382
  })));
426
383
  };
427
384
 
428
- var _excluded$2 = ["children", "className", "button", "position"],
429
- _excluded2 = ["children", "className", "onSelect", "disabled", "as"],
430
- _excluded3 = ["children", "as", "className", "onSelect", "disabled"];
431
- var OverflowMenu = function OverflowMenu(_ref) {
432
- var children = _ref.children,
433
- className = _ref.className,
434
- button$1 = _ref.button,
435
- _ref$position = _ref.position,
436
- position = _ref$position === void 0 ? 'right' : _ref$position,
437
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
438
- return React.createElement("div", null, React.createElement(menuButton.Menu, null, !button$1 ? React.createElement(button.IconButton, _extends({
439
- as: menuButton.MenuButton,
440
- className: classNames(className, 'eds-overflow-menu__menu-button')
441
- }, rest), React.createElement(icons.VerticalDotsIcon, null)) : React.cloneElement(button$1, _extends({
442
- as: menuButton.MenuButton,
443
- className: classNames(className, 'eds-overflow-menu__menu-button')
444
- }, rest)), layout.useContrast() ? React.createElement(layout.Contrast, {
445
- className: classNames('eds-overflow-menu__menu-list'),
446
- as: menuButton.MenuList,
447
- portal: false
448
- }, [children]) : React.createElement(menuButton.MenuList, {
449
- className: classNames('eds-overflow-menu__menu-list', {
450
- 'eds-overflow-menu__menu-list--left': position === 'left'
451
- }),
452
- portal: false
453
- }, [children])));
454
- };
455
- var OverflowMenuItem = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
456
- var children = _ref2.children,
457
- className = _ref2.className,
458
- onSelect = _ref2.onSelect,
459
- disabled = _ref2.disabled,
460
- _ref2$as = _ref2.as,
461
- as = _ref2$as === void 0 ? 'div' : _ref2$as,
462
- rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
463
- return React.createElement(menuButton.MenuItem, _extends({
464
- className: classNames('eds-overflow-menu__item', {
465
- 'eds-overflow-menu__item--disabled': disabled
466
- }, className),
467
- onSelect: onSelect,
468
- disabled: disabled,
469
- ref: ref,
470
- as: as
471
- }, rest), children);
472
- });
473
- var OverflowMenuLink = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
474
- var children = _ref3.children,
475
- _ref3$as = _ref3.as,
476
- as = _ref3$as === void 0 ? 'a' : _ref3$as,
477
- className = _ref3.className,
478
- onSelect = _ref3.onSelect,
479
- disabled = _ref3.disabled,
480
- rest = _objectWithoutPropertiesLoose(_ref3, _excluded3);
481
- return React.createElement(menuButton.MenuLink, _extends({
482
- as: as,
483
- className: classNames('eds-overflow-menu__item', {
484
- 'eds-overflow-menu__item--disabled': disabled
485
- }, className),
486
- onSelect: onSelect,
487
- disabled: disabled,
488
- ref: ref
489
- }, rest), children);
490
- });
491
-
492
- var _excluded$1 = ["className", "currentPage", "inputLabel", "onPageChange", "pageCount", "pageLabel", "previousPageLabel", "currentPageLabelForScreenreader", "lastPageLabelForScreenreader", "showInput", "numberOfResults", "resultsPerPage", "resultsPerPageOptions", "onResultsPerPageChange", "showNumberOfResultsLabel", "nextPageLabel", "showingResultsLabel", "hideNextButton", "hidePrevButton"];
385
+ var _excluded$5 = ["className", "currentPage", "inputLabel", "onPageChange", "pageCount", "pageLabel", "previousPageLabel", "currentPageLabelForScreenreader", "lastPageLabelForScreenreader", "showInput", "numberOfResults", "resultsPerPage", "resultsPerPageOptions", "onResultsPerPageChange", "showNumberOfResultsLabel", "nextPageLabel", "showingResultsLabel", "changeNumberOfResultsLabelForScreenreader", "hideNextButton", "hidePrevButton"];
493
386
  var Pagination = function Pagination(_ref) {
494
387
  var className = _ref.className,
495
388
  currentPage = _ref.currentPage,
@@ -520,12 +413,13 @@ var Pagination = function Pagination(_ref) {
520
413
  showingResultsLabel = _ref$showingResultsLa === void 0 ? function (minPage, maxPage, pageCount) {
521
414
  return "Viser resultat " + minPage + "\u2013" + maxPage + " av " + pageCount;
522
415
  } : _ref$showingResultsLa,
416
+ _ref$changeNumberOfRe = _ref.changeNumberOfResultsLabelForScreenreader,
417
+ changeNumberOfResultsLabelForScreenreader = _ref$changeNumberOfRe === void 0 ? "Viser " + resultsPerPage + " resultater. Trykk for \xE5 endre antall. \xC5pner en flervalgsmeny." : _ref$changeNumberOfRe,
523
418
  _ref$hideNextButton = _ref.hideNextButton,
524
419
  hideNextButton = _ref$hideNextButton === void 0 ? false : _ref$hideNextButton,
525
420
  _ref$hidePrevButton = _ref.hidePrevButton,
526
421
  hidePrevButton = _ref$hidePrevButton === void 0 ? false : _ref$hidePrevButton,
527
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
528
- var isContrast = layout.useContrast();
422
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
529
423
  var _useState = React.useState([]),
530
424
  listedEntries = _useState[0],
531
425
  setListedEntries = _useState[1];
@@ -558,30 +452,26 @@ var Pagination = function Pagination(_ref) {
558
452
  "aria-label": "Paginering"
559
453
  }, rest), resultsPerPage && numberOfResults && React.createElement("div", {
560
454
  className: "eds-pagination__results"
561
- }, onResultsPerPageChange && React.createElement(menuButton.Menu, null, function (_ref2) {
562
- var isOpen = _ref2.isOpen;
563
- return React.createElement(React.Fragment, null, React.createElement(typography.Label, {
564
- as: "p",
565
- "aria-hidden": "true"
566
- }, showNumberOfResultsLabel), React.createElement(menuButton.MenuButton, {
567
- className: classNames('eds-pagination-menu__menu-button', {
568
- 'eds-pagination-menu__menu-button--open': isOpen
569
- })
570
- }, React.createElement(a11y.VisuallyHidden, null, showNumberOfResultsLabel, " "), resultsPerPage, isOpen ? React.createElement(icons.UpArrowIcon, null) : React.createElement(icons.DownArrowIcon, null)), React.createElement(menuButton.MenuList, {
571
- className: classNames('eds-pagination-menu__menu-list', 'eds-overflow-menu__menu-list', {
572
- 'eds-contrast': isContrast
573
- })
574
- }, resultsPerPageOptions.map(function (option, key) {
575
- return React.createElement(OverflowMenuItem, {
576
- key: key,
577
- onSelect: function onSelect() {
578
- return onResultsPerPageChange(option);
579
- }
580
- }, option);
581
- })));
582
- }), React.createElement(typography.Label, {
455
+ }, onResultsPerPageChange && React.createElement(React.Fragment, null, React.createElement(typography.Label, {
583
456
  as: "p",
584
- className: "eds-pagination__results-label"
457
+ "aria-hidden": "true"
458
+ }, showNumberOfResultsLabel), React.createElement(OverflowMenu, {
459
+ className: "eds-pagination__results__change-number-of-results",
460
+ buttonIcon: React.createElement(React.Fragment, null, resultsPerPage, ' ', React.createElement(icons.DownArrowIcon, {
461
+ className: "eds-pagination__results__change-number-of-results__arrow",
462
+ "aria-hidden": "true"
463
+ })),
464
+ "aria-label": changeNumberOfResultsLabelForScreenreader,
465
+ placement: "bottom-end"
466
+ }, resultsPerPageOptions.map(function (option, key) {
467
+ return React.createElement(OverflowMenuItem, {
468
+ key: key,
469
+ onSelect: function onSelect() {
470
+ return onResultsPerPageChange(option);
471
+ }
472
+ }, option);
473
+ }))), React.createElement(typography.Label, {
474
+ as: "p"
585
475
  }, showingResultsLabel((currentPage - 1) * resultsPerPage + 1, currentPage * resultsPerPage > numberOfResults ? numberOfResults : currentPage * resultsPerPage, numberOfResults))), React.createElement("div", {
586
476
  className: "eds-pagination__controls"
587
477
  }, !hidePrevButton && React.createElement(PaginationPage, {
@@ -591,7 +481,9 @@ var Pagination = function Pagination(_ref) {
591
481
  "aria-label": previousPageLabel,
592
482
  "aria-describedby": paginationId,
593
483
  disabled: isFirstPostSelected
594
- }, React.createElement(icons.LeftArrowIcon, null)), listedEntries.map(function (entry, index) {
484
+ }, React.createElement(icons.LeftArrowIcon, {
485
+ "aria-hidden": "true"
486
+ })), listedEntries.map(function (entry, index) {
595
487
  return entry === '…' ? React.createElement(Ellipsis, {
596
488
  key: "ellipsis-" + index
597
489
  }) : React.createElement(PaginationPage, {
@@ -610,7 +502,9 @@ var Pagination = function Pagination(_ref) {
610
502
  "aria-label": nextPageLabel,
611
503
  "aria-describedby": paginationId,
612
504
  disabled: isLastPostSelected
613
- }, React.createElement(icons.RightArrowIcon, null)), showInput && React.createElement(PaginationInput, {
505
+ }, React.createElement(icons.RightArrowIcon, {
506
+ "aria-hidden": "true"
507
+ })), showInput && React.createElement(PaginationInput, {
614
508
  pageCount: pageCount,
615
509
  currentPage: currentPage,
616
510
  onPageChange: onPageChange,
@@ -621,12 +515,194 @@ var Pagination = function Pagination(_ref) {
621
515
  };
622
516
  var Ellipsis = function Ellipsis() {
623
517
  return React.createElement("span", {
624
- className: "eds-pagination__ellipsis",
518
+ className: "eds-pagination__controls__page__ellipsis",
625
519
  "aria-hidden": "true"
626
520
  }, "\u2026");
627
521
  };
628
522
 
629
- var _excluded = ["activeIndex", "className", "interactive", "onStepClick", "showStepperIndex", "steps", "ariaLabelStep", "ariaLabelOf", "ariaLabelCompleted", "ariaLabelSummary"];
523
+ var _excluded$4 = ["className", "children", "size"];
524
+ var SideNavigation = function SideNavigation(_ref) {
525
+ var className = _ref.className,
526
+ children = _ref.children,
527
+ _ref$size = _ref.size,
528
+ size = _ref$size === void 0 ? 'medium' : _ref$size,
529
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
530
+ if (!children || !React.Children.count(children)) {
531
+ return null;
532
+ }
533
+ return React.createElement("ul", _extends({
534
+ className: classNames('eds-side-navigation', {
535
+ 'eds-side-navigation--small': size === 'small'
536
+ }, className)
537
+ }, rest), children);
538
+ };
539
+ /** This is required to check that the Menu */
540
+ SideNavigation.__IS_ENTUR_MENU__ = true;
541
+
542
+ var useShowDelayedLabel = function useShowDelayedLabel(isCollapsed) {
543
+ var _useState = React.useState(true),
544
+ showLabel = _useState[0],
545
+ setShowLabel = _useState[1];
546
+ var hideDelay = 50;
547
+ var showDelay = 200;
548
+ React.useEffect(function () {
549
+ if (isCollapsed) {
550
+ setTimeout(function () {
551
+ setShowLabel(false);
552
+ }, hideDelay);
553
+ }
554
+ if (!isCollapsed) {
555
+ setTimeout(function () {
556
+ setShowLabel(true);
557
+ }, showDelay);
558
+ }
559
+ return function () {
560
+ return undefined;
561
+ };
562
+ }, [isCollapsed]);
563
+ return [showLabel];
564
+ };
565
+
566
+ var _excluded$3 = ["className", "active", "subMenu", "icon", "children", "as"],
567
+ _excluded2 = ["children"],
568
+ _excluded3 = ["active", "disabled", "children", "forceExpandSubMenus", "as"];
569
+ function isActiveRecursively(child) {
570
+ if (!child.props) {
571
+ return false;
572
+ }
573
+ if (child.props.active) {
574
+ return true;
575
+ }
576
+ if (!child.props.children) {
577
+ return false;
578
+ }
579
+ return React.Children.toArray(child.props.children).some(function (child) {
580
+ return isActiveRecursively(child);
581
+ });
582
+ }
583
+ var defaultElementBaseItem = 'a';
584
+ var BaseSideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
585
+ var className = _ref.className,
586
+ _ref$active = _ref.active,
587
+ active = _ref$active === void 0 ? false : _ref$active,
588
+ subMenu = _ref.subMenu,
589
+ icon = _ref.icon,
590
+ children = _ref.children,
591
+ as = _ref.as,
592
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
593
+ var Element = as || defaultElementBaseItem;
594
+ var _useSideNavigationCon = useSideNavigationContext(),
595
+ isCollapsed = _useSideNavigationCon.isCollapsed;
596
+ var _useShowDelayedLabel = useShowDelayedLabel(isCollapsed),
597
+ showLabel = _useShowDelayedLabel[0];
598
+ return React.createElement("li", {
599
+ className: classNames('eds-side-navigation__item', className)
600
+ }, React.createElement(Element, _extends({
601
+ className: classNames('eds-side-navigation__click-target', {
602
+ 'eds-side-navigation__click-target--active': active
603
+ }),
604
+ "aria-label": isCollapsed ? children : undefined,
605
+ "aria-current": active ? 'page' : undefined,
606
+ ref: ref
607
+ }, rest), icon, showLabel && children), subMenu);
608
+ });
609
+ var DisabledSideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
610
+ var children = _ref2.children,
611
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
612
+ return React.createElement(BaseSideNavigationItem, _extends({
613
+ as: "button",
614
+ disabled: true,
615
+ "aria-disabled": true,
616
+ ref: ref,
617
+ type: "button"
618
+ }, rest), children);
619
+ });
620
+ var defaultElementItem = 'a';
621
+ var SideNavigationItem = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
622
+ var active = _ref3.active,
623
+ disabled = _ref3.disabled,
624
+ children = _ref3.children,
625
+ forceExpandSubMenus = _ref3.forceExpandSubMenus,
626
+ as = _ref3.as,
627
+ rest = _objectWithoutPropertiesLoose(_ref3, _excluded3);
628
+ var Element = as || defaultElementItem;
629
+ var childrenArray = React.Children.toArray(children);
630
+ var subMenu = childrenArray.find(function (child) {
631
+ return child && child.type && child.type.__IS_ENTUR_MENU__;
632
+ });
633
+ var label = subMenu ? childrenArray.filter(function (child) {
634
+ return child !== subMenu;
635
+ }) : children;
636
+ if (disabled) {
637
+ return React.createElement(DisabledSideNavigationItem, _extends({
638
+ ref: ref
639
+ }, rest), label);
640
+ }
641
+ if (!subMenu) {
642
+ return React.createElement(BaseSideNavigationItem, _extends({
643
+ as: Element,
644
+ active: active,
645
+ ref: ref
646
+ }, rest), label);
647
+ }
648
+ var isExpanded = forceExpandSubMenus || isActiveRecursively({
649
+ props: {
650
+ children: children,
651
+ active: active
652
+ }
653
+ });
654
+ return React.createElement(BaseSideNavigationItem, _extends({
655
+ active: active,
656
+ subMenu: isExpanded && subMenu,
657
+ "aria-expanded": isExpanded,
658
+ as: Element,
659
+ ref: ref
660
+ }, rest), label);
661
+ });
662
+
663
+ var _excluded$2 = ["defaultOpen", "open", "onToggle", "className", "children", "title", "icon"];
664
+ var SideNavigationGroup = function SideNavigationGroup(_ref) {
665
+ var _ref$defaultOpen = _ref.defaultOpen,
666
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
667
+ open = _ref.open,
668
+ onToggle = _ref.onToggle,
669
+ className = _ref.className,
670
+ children = _ref.children,
671
+ title = _ref.title,
672
+ icon = _ref.icon,
673
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
674
+ var _useControllableProp = useControllableProp({
675
+ prop: open,
676
+ updater: onToggle,
677
+ defaultValue: defaultOpen
678
+ }),
679
+ isOpen = _useControllableProp[0],
680
+ setOpen = _useControllableProp[1];
681
+ var _useSideNavigationCon = useSideNavigationContext(),
682
+ isCollapsed = _useSideNavigationCon.isCollapsed;
683
+ var _useShowDelayedLabel = useShowDelayedLabel(isCollapsed),
684
+ showLabel = _useShowDelayedLabel[0];
685
+ return React.createElement("div", _extends({
686
+ className: classNames('eds-side-navigation-group', className)
687
+ }, rest), React.createElement("button", {
688
+ onClick: function onClick() {
689
+ return setOpen(!isOpen);
690
+ },
691
+ type: "button",
692
+ className: "eds-side-navigation-group__trigger",
693
+ "aria-label": title + ", utvidbar meny, " + (isOpen ? 'åpen' : 'lukket')
694
+ }, React.createElement("span", null, icon && React.createElement("span", {
695
+ className: "eds-side-navigation-group__trigger-icon"
696
+ }, icon), showLabel && title), showLabel && React.createElement(expand.ExpandArrow, {
697
+ open: isOpen,
698
+ className: "eds-side-navigation-group__expand-icon"
699
+ })), React.createElement(expand.BaseExpand, {
700
+ className: "eds-side-navigation-group__expand-content",
701
+ open: isOpen
702
+ }, children));
703
+ };
704
+
705
+ var _excluded$1 = ["activeIndex", "className", "interactive", "onStepClick", "showStepperIndex", "steps", "ariaLabelStep", "ariaLabelOf", "ariaLabelCompleted", "ariaLabelSummary"];
630
706
  var Stepper = function Stepper(_ref) {
631
707
  var activeIndex = _ref.activeIndex,
632
708
  className = _ref.className,
@@ -644,7 +720,7 @@ var Stepper = function Stepper(_ref) {
644
720
  ariaLabelCompleted = _ref$ariaLabelComplet === void 0 ? 'fullført' : _ref$ariaLabelComplet,
645
721
  _ref$ariaLabelSummary = _ref.ariaLabelSummary,
646
722
  ariaLabelSummary = _ref$ariaLabelSummary === void 0 ? "Stegindikator med " + steps.length + " steg, du er p\xE5 steg " + (activeIndex + 1) + " " + steps[activeIndex] + "," : _ref$ariaLabelSummary,
647
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
723
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
648
724
  return React.createElement("ol", _extends({
649
725
  className: classNames('eds-stepper', className),
650
726
  "aria-label": ariaLabelSummary
@@ -660,7 +736,8 @@ var Stepper = function Stepper(_ref) {
660
736
  }
661
737
  } : {};
662
738
  return React.createElement("li", {
663
- key: step
739
+ key: step,
740
+ className: "eds-stepper__step__wrapper"
664
741
  }, React.createElement(Element, _extends({
665
742
  className: classNames('eds-stepper__step', {
666
743
  'eds-stepper__step--active': isCurrent
@@ -669,7 +746,8 @@ var Stepper = function Stepper(_ref) {
669
746
  }, {
670
747
  'eds-stepper__step--interactive': isInteractive
671
748
  }),
672
- "aria-current": isCurrent ? 'step' : undefined
749
+ "aria-current": isCurrent ? 'step' : undefined,
750
+ type: Element === 'button' ? 'button' : undefined
673
751
  }, props), React.createElement("div", {
674
752
  className: "eds-stepper__step__line",
675
753
  "aria-hidden": true
@@ -680,6 +758,22 @@ var Stepper = function Stepper(_ref) {
680
758
  }));
681
759
  };
682
760
 
761
+ var _excluded = ["active", "className", "as"];
762
+ var defaultElement = 'a';
763
+ var TopNavigationItem = function TopNavigationItem(_ref) {
764
+ var _ref$active = _ref.active,
765
+ active = _ref$active === void 0 ? false : _ref$active,
766
+ className = _ref.className,
767
+ as = _ref.as,
768
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
769
+ var Element = as || defaultElement;
770
+ return React.createElement(Element, _extends({
771
+ className: classNames(['eds-top-navigation-item', className, {
772
+ 'eds-top-navigation-item--active': active
773
+ }])
774
+ }, rest));
775
+ };
776
+
683
777
  utils.warnAboutMissingStyles('menu', 'expand', 'icons', 'typography', 'button', 'layout', 'a11y');
684
778
 
685
779
  exports.BreadcrumbItem = BreadcrumbItem;