@ilo-org/react 0.17.6 → 0.17.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, useCallback, useEffect } from 'react';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
3
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
4
4
  import ContextMenu from '../ContextMenu/ContextMenu.js';
5
5
  import SearchField from '../SearchField/SearchField.js';
@@ -30,6 +30,12 @@ const Navigation = ({ logo, mobilelogo, siteurl, tagline, primarynav, subnav, me
30
30
  [`${prefix}--select--open`]: toggleLanguageOpen,
31
31
  [`${prefix}--context--open`]: toggleLanguageOpen,
32
32
  });
33
+ const searchInputRef = useRef(null);
34
+ const handleSearchInputFocus = () => {
35
+ if (searchInputRef.current) {
36
+ searchInputRef.current.focus();
37
+ }
38
+ };
33
39
  const handleMenuToggle = () => {
34
40
  setMenuToggleOpen(!toggleMenuOpen);
35
41
  };
@@ -44,6 +50,7 @@ const Navigation = ({ logo, mobilelogo, siteurl, tagline, primarynav, subnav, me
44
50
  }
45
51
  setSearchTabbable(true);
46
52
  setTimeout(() => setSearchToggleOpen(true), 10);
53
+ setTimeout(() => handleSearchInputFocus(), 50);
47
54
  };
48
55
  const handleSubnavToggle = () => {
49
56
  if (toggleSubnavOpen) {
@@ -68,7 +75,7 @@ const Navigation = ({ logo, mobilelogo, siteurl, tagline, primarynav, subnav, me
68
75
  return (jsxs("header", Object.assign({ className: NavigationClasses }, { children: [jsx("div", Object.assign({ className: `${baseClass}--utility-bar` }, { children: jsx("div", Object.assign({ className: `${prefix}--language-switcher` }, { children: jsxs("div", Object.assign({ className: `${prefix}--language-switcher--wrap` }, { children: [jsx("button", Object.assign({ className: `${prefix}--language-switcher--button`, type: "button", onClick: handleLanguageToggle }, { children: languagelabel })), jsx(ContextMenu, { links: languagecontextmenu === null || languagecontextmenu === void 0 ? void 0 : languagecontextmenu.links })] })) })) })), jsx("div", Object.assign({ className: `${baseClass}--logo-bar` }, { children: jsxs("div", Object.assign({ className: `${baseClass}--inner ${prefix}--container` }, { children: [jsx("a", Object.assign({ href: siteurl, className: `${baseClass}--logo-link` }, { children: jsx("img", { className: `${baseClass}--logo`, src: logo, alt: "ILO Logo" }) })), jsxs("p", Object.assign({ className: `${baseClass}--logo-tagline` }, { children: [tagline === null || tagline === void 0 ? void 0 : tagline.tag, jsx("span", Object.assign({ className: `${baseClass}--logo-tagline--small` }, { children: tagline === null || tagline === void 0 ? void 0 : tagline.small }))] })), jsx("button", Object.assign({ className: `${baseClass}--menu`, onClick: handleMenuToggle }, { children: menulabel }))] })) })), jsxs("div", Object.assign({ className: `${baseClass}--navigation` }, { children: [jsxs("div", Object.assign({ className: `${baseClass}--inner ${prefix}--container` }, { children: [jsxs("div", Object.assign({ className: `${prefix}--mobile--nav` }, { children: [jsxs("div", Object.assign({ className: `${prefix}--mobile--nav--logo` }, { children: [jsx("a", Object.assign({ href: siteurl, className: `${baseClass}--logo-link` }, { children: jsx("img", { className: `${baseClass}--logo`, src: mobilelogo, alt: "ILO Logo" }) })), jsx("button", Object.assign({ className: `${baseClass}--menu--close`, onClick: handleMenuToggle }, { children: menucloselabel }))] })), jsx("div", Object.assign({ className: `${prefix}--mobile--nav--search` }, { children: jsx(SearchField, { input: searchfield === null || searchfield === void 0 ? void 0 : searchfield.input, action: searchfield === null || searchfield === void 0 ? void 0 : searchfield.action }) })), jsx("div", Object.assign({ className: `${prefix}--mobile--nav--language--switcher` }, { children: jsx("button", Object.assign({ className: `${prefix}--mobile--nav--language--switcher--button`, onClick: handleLanguageToggle, type: "button" }, { children: languagelabel })) })), jsx("div", Object.assign({ className: `${prefix}--mobile--nav--language--select` }, { children: jsxs("div", Object.assign({ className: `${baseClass}--inner ${prefix}--container` }, { children: [jsxs("div", Object.assign({ className: `${prefix}--mobile--subnav--menu` }, { children: [jsx("button", Object.assign({ className: `${prefix}--mobile--subnav--back`, onClick: handleLanguageToggle, type: "button" }, { children: subnav === null || subnav === void 0 ? void 0 : subnav.mobilebacklabel })), jsx("button", Object.assign({ className: `${baseClass}--menu--close`, onClick: handleMenuToggle }, { children: subnav === null || subnav === void 0 ? void 0 : subnav.mobilecloselabel })), jsx("h6", Object.assign({ className: `${prefix}--mobile--subnav--label` }, { children: languagelabel }))] })), jsx("ul", Object.assign({ className: `${prefix}--nav--set` }, { children: (languagecontextmenu === null || languagecontextmenu === void 0 ? void 0 : languagecontextmenu.links) &&
69
76
  languagecontextmenu.links.map((item, index) => (jsx("li", Object.assign({ className: `${prefix}--nav--items` }, { children: jsx("a", Object.assign({ href: item.url, className: `${prefix}--nav--link ${prefix}--nav--language` }, { children: item.label })) }), index))) }))] })) }))] })), jsxs("nav", Object.assign({ className: `${prefix}--nav`, "aria-labelledby": "primary-navigation" }, { children: [jsx("h2", Object.assign({ className: `${prefix}--nav--label`, id: "primary-navigation" }, { children: primarynav === null || primarynav === void 0 ? void 0 : primarynav.navlabel })), jsxs("ul", Object.assign({ className: `${prefix}--nav--set` }, { children: [(primarynav === null || primarynav === void 0 ? void 0 : primarynav.items) &&
70
77
  primarynav.items.map((item, index) => (jsx("li", Object.assign({ className: `${prefix}--nav--items` }, { children: jsx("a", Object.assign({ href: item.url, className: `${prefix}--nav--link` }, { children: item.label })) }), index))), subnav && (jsx("li", Object.assign({ className: `${prefix}--nav--items` }, { children: jsx("button", Object.assign({ className: `${prefix}--nav--trigger`, onClick: handleSubnavToggle }, { children: subnav.buttonlabel })) })))] }))] })), jsx("div", Object.assign({ className: `${prefix}--search` }, { children: jsx("button", Object.assign({ className: `${prefix}--search--button`, type: "button", onClick: handleSearchToggle }, { children: searchlabel })) }))] })), subnav && (jsx("nav", Object.assign({ style: { display: subnavTabbable ? "block" : "none" }, className: `${prefix}--subnav`, "aria-labelledby": "secondary-navigation" }, { children: jsxs("div", Object.assign({ className: `${prefix}--subnav--inner ${prefix}--container` }, { children: [jsx("div", Object.assign({ className: `${prefix}--mobile--subnav` }, { children: jsxs("div", Object.assign({ className: `${prefix}--mobile--subnav--menu` }, { children: [jsx("button", Object.assign({ className: `${prefix}--mobile--subnav--back`, onClick: handleSubnavToggle, type: "button" }, { children: subnav.mobilebacklabel })), jsx("button", Object.assign({ className: `${prefix}--header--menu--close`, onClick: handleMenuToggle }, { children: subnav.mobilecloselabel })), jsx("h6", Object.assign({ className: `${prefix}--mobile--subnav--label` }, { children: subnav.buttonlabel }))] })) })), jsx("h2", Object.assign({ className: `${prefix}--nav--label`, id: "secondary-navigation" }, { children: subnav.navlabel })), jsx("ul", Object.assign({ className: `${prefix}--subnav--set` }, { children: (subnav === null || subnav === void 0 ? void 0 : subnav.items) &&
71
- subnav.items.map((item, index) => (jsx("li", Object.assign({ className: `${prefix}--subnav--items` }, { children: jsx("a", Object.assign({ href: item.url, className: `${prefix}--subnav--link` }, { children: item.label })) }), index))) }))] })) }))), jsx("div", Object.assign({ style: { display: searchTabbable ? "block" : "none" }, className: `${prefix}--search-box` }, { children: jsx("div", Object.assign({ className: `${prefix}--header--inner ${prefix}--container` }, { children: jsx(SearchField, { input: searchfield === null || searchfield === void 0 ? void 0 : searchfield.input, action: searchfield === null || searchfield === void 0 ? void 0 : searchfield.action }) })) }))] }))] })));
78
+ subnav.items.map((item, index) => (jsx("li", Object.assign({ className: `${prefix}--subnav--items` }, { children: jsx("a", Object.assign({ href: item.url, className: `${prefix}--subnav--link` }, { children: item.label })) }), index))) }))] })) }))), jsx("div", Object.assign({ style: { display: searchTabbable ? "block" : "none" }, className: `${prefix}--search-box` }, { children: jsx("div", Object.assign({ className: `${prefix}--header--inner ${prefix}--container` }, { children: jsx(SearchField, { input: searchfield === null || searchfield === void 0 ? void 0 : searchfield.input, action: searchfield === null || searchfield === void 0 ? void 0 : searchfield.action, ref: searchInputRef }) })) }))] }))] })));
72
79
  };
73
80
 
74
81
  export { Navigation as default };
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
2
+ import { forwardRef, useState } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import useGlobalSettings from '../../hooks/useGlobalSettings.js';
5
5
  import Input from '../Input/Input.js';
@@ -12,7 +12,7 @@ import '@popperjs/core';
12
12
  import '../FormElement/FormElement.js';
13
13
  import '@ilo-org/icons-react';
14
14
 
15
- const SearchField = ({ action, callback, className, input, }) => {
15
+ const SearchField = forwardRef(({ action, callback, className, input }, ref) => {
16
16
  const [searchValue, setSearchValue] = useState("");
17
17
  const { prefix } = useGlobalSettings();
18
18
  const baseClass = `${prefix}--searchfield`;
@@ -40,7 +40,7 @@ const SearchField = ({ action, callback, className, input, }) => {
40
40
  if (!inputHasType) {
41
41
  throw new Error("SearchField: Input must have type prop");
42
42
  }
43
- return inputHasType ? (jsxs("form", Object.assign({ className: SearchFieldClasses, action: action }, { children: [jsxs("div", Object.assign({ className: fieldSetClass }, { children: [jsx(Input, { id: input === null || input === void 0 ? void 0 : input.id, name: input === null || input === void 0 ? void 0 : input.name, disabled: input === null || input === void 0 ? void 0 : input.disabled, callback: onKeyPress, error: input === null || input === void 0 ? void 0 : input.error, helper: input === null || input === void 0 ? void 0 : input.helper, label: input === null || input === void 0 ? void 0 : input.label, placeholder: input === null || input === void 0 ? void 0 : input.placeholder, type: input === null || input === void 0 ? void 0 : input.type, value: searchValue, className: `${prefix}--input` }), jsx("span", Object.assign({ onClick: handleClearButtonClick, className: clearButtonClass }, { children: jsx(Icon, { name: "close", hidden: true }) }))] })), jsx("input", { className: buttonClass, disabled: input === null || input === void 0 ? void 0 : input.disabled, type: "submit", onClick: handleClick })] }))) : null;
44
- };
43
+ return inputHasType ? (jsxs("form", Object.assign({ className: SearchFieldClasses, action: action }, { children: [jsxs("div", Object.assign({ className: fieldSetClass }, { children: [jsx(Input, { id: input === null || input === void 0 ? void 0 : input.id, name: input === null || input === void 0 ? void 0 : input.name, disabled: input === null || input === void 0 ? void 0 : input.disabled, callback: onKeyPress, error: input === null || input === void 0 ? void 0 : input.error, helper: input === null || input === void 0 ? void 0 : input.helper, label: input === null || input === void 0 ? void 0 : input.label, placeholder: input === null || input === void 0 ? void 0 : input.placeholder, type: input === null || input === void 0 ? void 0 : input.type, value: searchValue, className: `${prefix}--input`, ref: ref }), jsx("span", Object.assign({ onClick: handleClearButtonClick, className: clearButtonClass }, { children: jsx(Icon, { name: "close", hidden: true }) }))] })), jsx("input", { className: buttonClass, disabled: input === null || input === void 0 ? void 0 : input.disabled, type: "submit", onClick: handleClick })] }))) : null;
44
+ });
45
45
 
46
46
  export { SearchField as default };
@@ -1 +1 @@
1
- .ilo--logo-grid--logos{display:flex;flex-flow:row wrap;grid-gap:.857449089rem}.ilo--logo-grid--link{text-decoration:none;transition:background-color .2s ease-in-out}.ilo--logo-grid__theme__dark .ilo--logo-grid--link:hover,.ilo--logo-grid__theme__light .ilo--logo-grid--link:hover{background-color:#ebf5fd}.ilo--logo-grid--item{display:flex;align-items:center;justify-content:center;height:7.18113612rem;flex:100%}.ilo--logo-grid__theme__light .ilo--logo-grid--item{background-color:#edf0f2}.ilo--logo-grid__theme__dark .ilo--logo-grid--item{background-color:#fff}.ilo--logo-grid--item img{width:auto;height:auto;max-width:8.038585209rem;max-height:2.679528403rem}
1
+ .ilo--logo-grid{--grid-gap:0.857449089rem}.ilo--logo-grid--logos{display:grid;grid-template-columns:1fr;gap:var(--grid-gap)}@media screen and (min-width:414px){.ilo--logo-grid--logos{grid-template-columns:repeat(2,1fr)}}@media screen and (min-width:610px){.ilo--logo-grid--logos{grid-template-columns:repeat(2,1fr)}.ilo--logo-grid--logos:has(>:nth-child(3)){grid-template-columns:repeat(3,1fr)}}.ilo--logo-grid--link{text-decoration:none;transition:background-color .2s ease-in-out}.ilo--logo-grid__theme__dark .ilo--logo-grid--link:hover,.ilo--logo-grid__theme__light .ilo--logo-grid--link:hover{background-color:#ebf5fd}.ilo--logo-grid--item{display:flex;align-items:center;justify-content:center;height:7.18113612rem;padding:0 12px;grid-column:span 1}.ilo--logo-grid__theme__light .ilo--logo-grid--item{background-color:#edf0f2}.ilo--logo-grid__theme__dark .ilo--logo-grid--item{background-color:#fff}.ilo--logo-grid--item img{width:100%;height:auto;max-width:9.6463022508rem;max-height:5.6806002144rem;object-fit:contain}
@@ -1 +1 @@
1
- .ilo--card__type__multilink{--max-width:28.7245444802rem;padding:calc(6 * var(--ilo-spacing-base))}.ilo--card__type__multilink .ilo--card--image--wrapper{display:none}.ilo--card__type__multilink .ilo--card--content .ilo--card--image--wrapper{display:block;margin-bottom:calc(8 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink{padding:calc(10 * var(--ilo-spacing-base))}}@media screen and (min-width:1024px){.ilo--card__type__multilink{padding:calc(14 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}}.ilo--card__type__multilink .ilo--card--title{font-size:23.32px;letter-spacing:-.035em;line-height:29.15px;margin-bottom:calc(8 * var(--ilo-spacing-base));color:#2d2d2d}@media screen and (min-width:610px){.ilo--card__type__multilink .ilo--card--title{font-size:29.16px;letter-spacing:-.035em;line-height:36.45px}}.ilo--card__type__multilink .ilo--card--intro{font-size:16px;letter-spacing:normal;line-height:23.36px;margin-bottom:calc(8 * var(--ilo-spacing-base));color:#2d2d2d}@media screen and (min-width:610px){.ilo--card__type__multilink .ilo--card--intro{font-size:18.66px;letter-spacing:normal;line-height:27.24px}}.ilo--card__type__multilink.ilo--card__size__standard{--max-width:28.7245444802rem;padding:calc(12 * var(--ilo-spacing-base)) calc(10 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__narrow{--max-width:20.0964630225rem;padding:calc(10 * var(--ilo-spacing-base)) calc(6 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--image--wrapper{display:none}.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--content .ilo--card--image--wrapper{display:block;margin-bottom:calc(6 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--title{font-size:23.32px;letter-spacing:-.035em;line-height:29.15px;margin-bottom:calc(6 * var(--ilo-spacing-base))}}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--intro{font-size:16px;letter-spacing:normal;line-height:23.36px;margin-bottom:calc(6 * var(--ilo-spacing-base))}}.ilo--card__type__multilink.ilo--card__size__fluid,.ilo--card__type__multilink.ilo--card__size__wide{--max-width:59.1639871383rem;padding:calc(10 * var(--ilo-spacing-base)) calc(6 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--title,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--title{margin-bottom:calc(3 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__fluid,.ilo--card__type__multilink.ilo--card__size__wide{padding:calc(14 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__fluid.ilo--card__align__right .ilo--card--wrap,.ilo--card__type__multilink.ilo--card__size__wide.ilo--card__align__right .ilo--card--wrap{flex-direction:row-reverse}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--wrap,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--wrap{display:flex;column-gap:1.7148981779rem}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--image--wrapper,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--image--wrapper{display:block;width:50%}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--content,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--content{width:50%}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--content .ilo--card--image--wrapper,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--content .ilo--card--image--wrapper{display:none}}.ilo--card__type__multilink .ilo--link-list{position:relative;z-index:3}
1
+ .ilo--card__type__multilink{--max-width:28.7245444802rem;padding:calc(6 * var(--ilo-spacing-base))}.ilo--card__type__multilink .ilo--card--image--wrapper{display:none}.ilo--card__type__multilink .ilo--card--content .ilo--card--image--wrapper{display:block;margin-bottom:calc(8 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink{padding:calc(10 * var(--ilo-spacing-base))}}@media screen and (min-width:1024px){.ilo--card__type__multilink{padding:calc(14 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}}.ilo--card__type__multilink .ilo--card--title{font-size:23.32px;letter-spacing:-.035em;line-height:29.15px;margin-bottom:calc(8 * var(--ilo-spacing-base));color:#2d2d2d}@media screen and (min-width:610px){.ilo--card__type__multilink .ilo--card--title{font-size:29.16px;letter-spacing:-.035em;line-height:36.45px}}.ilo--card__type__multilink .ilo--card--intro{font-size:16px;letter-spacing:normal;line-height:23.36px;margin-bottom:calc(8 * var(--ilo-spacing-base));color:#2d2d2d}@media screen and (min-width:610px){.ilo--card__type__multilink .ilo--card--intro{font-size:18.66px;letter-spacing:normal;line-height:27.24px}}.ilo--card__type__multilink.ilo--card__size__standard{--max-width:28.7245444802rem;padding:calc(12 * var(--ilo-spacing-base)) calc(10 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__narrow{--max-width:20.0964630225rem;padding:calc(10 * var(--ilo-spacing-base)) calc(6 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--image--wrapper{display:none}.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--content .ilo--card--image--wrapper{display:block;margin-bottom:calc(6 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--title{font-size:23.32px;letter-spacing:-.035em;line-height:29.15px;margin-bottom:calc(6 * var(--ilo-spacing-base))}}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__narrow .ilo--card--intro{font-size:16px;letter-spacing:normal;line-height:23.36px;margin-bottom:calc(6 * var(--ilo-spacing-base))}}.ilo--card__type__multilink.ilo--card__size__fluid,.ilo--card__type__multilink.ilo--card__size__wide{--max-width:59.1639871383rem;padding:calc(10 * var(--ilo-spacing-base)) calc(6 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--title,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--title{margin-bottom:calc(3 * var(--ilo-spacing-base))}@media screen and (min-width:610px){.ilo--card__type__multilink.ilo--card__size__fluid,.ilo--card__type__multilink.ilo--card__size__wide{padding:calc(14 * var(--ilo-spacing-base)) calc(12 * var(--ilo-spacing-base))}.ilo--card__type__multilink.ilo--card__size__fluid.ilo--card__align__right .ilo--card--wrap,.ilo--card__type__multilink.ilo--card__size__wide.ilo--card__align__right .ilo--card--wrap{flex-direction:row-reverse}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--wrap,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--wrap{display:flex;column-gap:1.7148981779rem}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--image--wrapper,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--image--wrapper{display:block;width:50%}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--content,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--content{width:50%}.ilo--card__type__multilink.ilo--card__size__fluid .ilo--card--content .ilo--card--image--wrapper,.ilo--card__type__multilink.ilo--card__size__wide .ilo--card--content .ilo--card--image--wrapper{display:none}.ilo--card__type__multilink.ilo--card__size__fluid.ilo--card--no-image,.ilo--card__type__multilink.ilo--card__size__wide.ilo--card--no-image{--max-width:49.3033226152rem}.ilo--card__type__multilink.ilo--card__size__fluid.ilo--card--no-image .ilo--card--content,.ilo--card__type__multilink.ilo--card__size__wide.ilo--card--no-image .ilo--card--content{width:100%}}.ilo--card__type__multilink .ilo--link-list{position:relative;z-index:3}