@semcore/icon 4.0.0 → 4.1.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.
package/CHANGELOG.md CHANGED
@@ -2,7 +2,13 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [4.0.0] - 2023-07-15
5
+ ## [4.1.0] - 2023-07-27
6
+
7
+ ### Changed
8
+
9
+ - Use `event.key` instead of `event.code` for better support of non QWERTY keyboard layouts.
10
+
11
+ ## [4.0.0] - 2023-07-17
6
12
 
7
13
  ### BREAK
8
14
 
package/lib/cjs/Icon.js CHANGED
@@ -22,12 +22,12 @@ var _ref = require("@semcore/utils/lib/ref");
22
22
  var _hasLabels = _interopRequireDefault(require("@semcore/utils/lib/hasLabels"));
23
23
  var _excluded = ["keyboardFocused"];
24
24
  /*__reshadow-styles__:"./style/icon.shadow.css"*/
25
- var styles = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SIcon_1o8n5_gg_{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;shape-rendering:geometricPrecision;box-sizing:content-box;fill:currentColor;flex-shrink:0;outline:0;color:var(--color_1o8n5)}.___SIcon_1o8n5_gg_.__keyboardFocused_1o8n5_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SIcon_1o8n5_gg_.__interactive_1o8n5_gg_{cursor:pointer}@media (hover:hover){.___SIcon_1o8n5_gg_.__interactive_1o8n5_gg_:hover{color:var(--color-interactive_1o8n5)}}" /*__inner_css_end__*/, "1o8n5_gg_") /*__reshadow_css_end__*/, {
26
- "__SIcon": "___SIcon_1o8n5_gg_",
27
- "--color": "--color_1o8n5",
28
- "_keyboardFocused": "__keyboardFocused_1o8n5_gg_",
29
- "_interactive": "__interactive_1o8n5_gg_",
30
- "--color-interactive": "--color-interactive_1o8n5"
25
+ var styles = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SIcon_hki02_gg_{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;shape-rendering:geometricPrecision;box-sizing:content-box;fill:currentColor;flex-shrink:0;outline:0;color:var(--color_hki02)}.___SIcon_hki02_gg_.__keyboardFocused_hki02_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SIcon_hki02_gg_.__interactive_hki02_gg_{cursor:pointer}@media (hover:hover){.___SIcon_hki02_gg_.__interactive_hki02_gg_:hover{color:var(--color-interactive_hki02)}}" /*__inner_css_end__*/, "hki02_gg_") /*__reshadow_css_end__*/, {
26
+ "__SIcon": "___SIcon_hki02_gg_",
27
+ "--color": "--color_hki02",
28
+ "_keyboardFocused": "__keyboardFocused_hki02_gg_",
29
+ "_interactive": "__interactive_hki02_gg_",
30
+ "--color-interactive": "--color-interactive_hki02"
31
31
  });
32
32
  function Icon(props, ref) {
33
33
  var _useBox = (0, _flexBox.useBox)((0, _objectSpread2["default"])({
@@ -62,7 +62,7 @@ function Icon(props, ref) {
62
62
  if (propsEnhance.onKeyDown) {
63
63
  return propsEnhance.onKeyDown(event);
64
64
  }
65
- if (interactive && event.code === 'Enter') {
65
+ if (interactive && event.key === 'Enter') {
66
66
  var _propsEnhance$onClick;
67
67
  (_propsEnhance$onClick = propsEnhance.onClick) === null || _propsEnhance$onClick === void 0 ? void 0 : _propsEnhance$onClick.call(propsEnhance, event);
68
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":["_core","require","_react","_interopRequireDefault","_classnames","_flexBox","_color","_interopRequireWildcard","_keyboardFocusEnhance2","_propsForElement","_logger","_ref","_hasLabels","_excluded","styles","sstyled","insert","Icon","props","ref","_useBox","useBox","_objectSpread2","tag","width","height","viewBox","focusable","interactive","_useBox2","_slicedToArray2","SIcon","other","colorProps","color","resolveColor","_keyboardFocusEnhance","keyboardFocusEnhance","disabled","keyboardFocused","propsEnhance","_objectWithoutProperties2","sstyles","_sstyles$cn","cn","shade","className","style","onKeyDown","event","code","_propsEnhance$onClick","onClick","call","labelCheckRef","React","useRef","useEffect","process","env","NODE_ENV","logger","warn","hasLabels","current","displayName","forkedRef","useForkRef","createElement","_extends2","role","undefined","propsForElement","Object","assign","_default","createBaseComponent","exports"],"sources":["../../src/Icon.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createBaseComponent, sstyled } from '@semcore/core';\nimport { useBox } from '@semcore/flex-box';\nimport resolveColor, { shade } from '@semcore/utils/lib/color';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\nimport logger from '@semcore/utils/lib/logger';\nimport { useForkRef } from '@semcore/utils/lib/ref';\nimport hasLabels from '@semcore/utils/lib/hasLabels';\n\nimport styles from './style/icon.shadow.css';\n\nfunction Icon(props, ref) {\n const [SIcon, other] = useBox(\n {\n tag: 'svg',\n 'data-ui-name': 'Icon',\n width: 16,\n height: 16,\n viewBox: '0 0 16 16',\n focusable: props.interactive,\n ...props,\n },\n ref,\n );\n\n const { interactive, color: colorProps } = props;\n const color = resolveColor(colorProps);\n const { keyboardFocused, ...propsEnhance } = keyboardFocusEnhance()({\n disabled: !interactive,\n ...other,\n });\n const sstyles = sstyled(styles);\n const { className, style } = sstyles.cn('SIcon', {\n 'color-interactive': shade(color, -0.12),\n 'use:color': color,\n interactive: interactive,\n keyboardFocused: keyboardFocused,\n });\n\n function onKeyDown(event) {\n if (propsEnhance.onKeyDown) {\n return propsEnhance.onKeyDown(event);\n }\n\n if (interactive && event.code === 'Enter') {\n propsEnhance.onClick?.(event);\n }\n }\n\n const labelCheckRef = React.useRef();\n React.useEffect(() => {\n if (!interactive) return;\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n !hasLabels(labelCheckRef.current),\n `'aria-label' or 'aria-labelledby' are required props for interactive icons`,\n props['data-ui-name'] || Icon.displayName,\n );\n }\n }, [interactive]);\n const forkedRef = useForkRef(ref, labelCheckRef);\n\n return (\n <SIcon\n role={interactive ? 'button' : undefined}\n aria-hidden={interactive ? undefined : 'true'}\n {...propsForElement(propsEnhance)}\n style={Object.assign({}, style, propsEnhance.style)}\n className={cn(className, propsEnhance.className) || undefined}\n onKeyDown={onKeyDown}\n ref={forkedRef}\n />\n );\n}\n\nIcon.displayName = 'Icon';\n\nexport default createBaseComponent(Icon);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Icon.js","names":["_core","require","_react","_interopRequireDefault","_classnames","_flexBox","_color","_interopRequireWildcard","_keyboardFocusEnhance2","_propsForElement","_logger","_ref","_hasLabels","_excluded","styles","sstyled","insert","Icon","props","ref","_useBox","useBox","_objectSpread2","tag","width","height","viewBox","focusable","interactive","_useBox2","_slicedToArray2","SIcon","other","colorProps","color","resolveColor","_keyboardFocusEnhance","keyboardFocusEnhance","disabled","keyboardFocused","propsEnhance","_objectWithoutProperties2","sstyles","_sstyles$cn","cn","shade","className","style","onKeyDown","event","key","_propsEnhance$onClick","onClick","call","labelCheckRef","React","useRef","useEffect","process","env","NODE_ENV","logger","warn","hasLabels","current","displayName","forkedRef","useForkRef","createElement","_extends2","role","undefined","propsForElement","Object","assign","_default","createBaseComponent","exports"],"sources":["../../src/Icon.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createBaseComponent, sstyled } from '@semcore/core';\nimport { useBox } from '@semcore/flex-box';\nimport resolveColor, { shade } from '@semcore/utils/lib/color';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\nimport logger from '@semcore/utils/lib/logger';\nimport { useForkRef } from '@semcore/utils/lib/ref';\nimport hasLabels from '@semcore/utils/lib/hasLabels';\n\nimport styles from './style/icon.shadow.css';\n\nfunction Icon(props, ref) {\n const [SIcon, other] = useBox(\n {\n tag: 'svg',\n 'data-ui-name': 'Icon',\n width: 16,\n height: 16,\n viewBox: '0 0 16 16',\n focusable: props.interactive,\n ...props,\n },\n ref,\n );\n\n const { interactive, color: colorProps } = props;\n const color = resolveColor(colorProps);\n const { keyboardFocused, ...propsEnhance } = keyboardFocusEnhance()({\n disabled: !interactive,\n ...other,\n });\n const sstyles = sstyled(styles);\n const { className, style } = sstyles.cn('SIcon', {\n 'color-interactive': shade(color, -0.12),\n 'use:color': color,\n interactive: interactive,\n keyboardFocused: keyboardFocused,\n });\n\n function onKeyDown(event) {\n if (propsEnhance.onKeyDown) {\n return propsEnhance.onKeyDown(event);\n }\n\n if (interactive && event.key === 'Enter') {\n propsEnhance.onClick?.(event);\n }\n }\n\n const labelCheckRef = React.useRef();\n React.useEffect(() => {\n if (!interactive) return;\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n !hasLabels(labelCheckRef.current),\n `'aria-label' or 'aria-labelledby' are required props for interactive icons`,\n props['data-ui-name'] || Icon.displayName,\n );\n }\n }, [interactive]);\n const forkedRef = useForkRef(ref, labelCheckRef);\n\n return (\n <SIcon\n role={interactive ? 'button' : undefined}\n aria-hidden={interactive ? undefined : 'true'}\n {...propsForElement(propsEnhance)}\n style={Object.assign({}, style, propsEnhance.style)}\n className={cn(className, propsEnhance.className) || undefined}\n onKeyDown={onKeyDown}\n ref={forkedRef}\n />\n );\n}\n\nIcon.displayName = 'Icon';\n\nexport default createBaseComponent(Icon);\n"],"mappings":"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"}
package/lib/es6/Icon.js CHANGED
@@ -15,12 +15,12 @@ import logger from '@semcore/utils/lib/logger';
15
15
  import { useForkRef } from '@semcore/utils/lib/ref';
16
16
  import hasLabels from '@semcore/utils/lib/hasLabels';
17
17
  /*__reshadow-styles__:"./style/icon.shadow.css"*/
18
- var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SIcon_1o8n5_gg_{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;shape-rendering:geometricPrecision;box-sizing:content-box;fill:currentColor;flex-shrink:0;outline:0;color:var(--color_1o8n5)}.___SIcon_1o8n5_gg_.__keyboardFocused_1o8n5_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SIcon_1o8n5_gg_.__interactive_1o8n5_gg_{cursor:pointer}@media (hover:hover){.___SIcon_1o8n5_gg_.__interactive_1o8n5_gg_:hover{color:var(--color-interactive_1o8n5)}}" /*__inner_css_end__*/, "1o8n5_gg_") /*__reshadow_css_end__*/, {
19
- "__SIcon": "___SIcon_1o8n5_gg_",
20
- "--color": "--color_1o8n5",
21
- "_keyboardFocused": "__keyboardFocused_1o8n5_gg_",
22
- "_interactive": "__interactive_1o8n5_gg_",
23
- "--color-interactive": "--color-interactive_1o8n5"
18
+ var styles = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SIcon_hki02_gg_{display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;shape-rendering:geometricPrecision;box-sizing:content-box;fill:currentColor;flex-shrink:0;outline:0;color:var(--color_hki02)}.___SIcon_hki02_gg_.__keyboardFocused_hki02_gg_{box-shadow:var(--intergalactic-keyboard-focus, 0px 0px 0px 3px rgba(0, 143, 248, 0.5))}.___SIcon_hki02_gg_.__interactive_hki02_gg_{cursor:pointer}@media (hover:hover){.___SIcon_hki02_gg_.__interactive_hki02_gg_:hover{color:var(--color-interactive_hki02)}}" /*__inner_css_end__*/, "hki02_gg_") /*__reshadow_css_end__*/, {
19
+ "__SIcon": "___SIcon_hki02_gg_",
20
+ "--color": "--color_hki02",
21
+ "_keyboardFocused": "__keyboardFocused_hki02_gg_",
22
+ "_interactive": "__interactive_hki02_gg_",
23
+ "--color-interactive": "--color-interactive_hki02"
24
24
  });
25
25
  function Icon(props, ref) {
26
26
  var _useBox = useBox(_objectSpread({
@@ -55,7 +55,7 @@ function Icon(props, ref) {
55
55
  if (propsEnhance.onKeyDown) {
56
56
  return propsEnhance.onKeyDown(event);
57
57
  }
58
- if (interactive && event.code === 'Enter') {
58
+ if (interactive && event.key === 'Enter') {
59
59
  var _propsEnhance$onClick;
60
60
  (_propsEnhance$onClick = propsEnhance.onClick) === null || _propsEnhance$onClick === void 0 ? void 0 : _propsEnhance$onClick.call(propsEnhance, event);
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":["React","cn","createBaseComponent","sstyled","useBox","resolveColor","shade","keyboardFocusEnhance","propsForElement","logger","useForkRef","hasLabels","styles","_sstyled","insert","Icon","props","ref","_useBox","_objectSpread","tag","width","height","viewBox","focusable","interactive","_useBox2","_slicedToArray","SIcon","other","colorProps","color","_keyboardFocusEnhance","disabled","keyboardFocused","propsEnhance","_objectWithoutProperties","_excluded","sstyles","_sstyles$cn","className","style","onKeyDown","event","code","_propsEnhance$onClick","onClick","call","labelCheckRef","useRef","useEffect","process","env","NODE_ENV","warn","current","displayName","forkedRef","createElement","_extends","role","undefined","Object","assign"],"sources":["../../src/Icon.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createBaseComponent, sstyled } from '@semcore/core';\nimport { useBox } from '@semcore/flex-box';\nimport resolveColor, { shade } from '@semcore/utils/lib/color';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\nimport logger from '@semcore/utils/lib/logger';\nimport { useForkRef } from '@semcore/utils/lib/ref';\nimport hasLabels from '@semcore/utils/lib/hasLabels';\n\nimport styles from './style/icon.shadow.css';\n\nfunction Icon(props, ref) {\n const [SIcon, other] = useBox(\n {\n tag: 'svg',\n 'data-ui-name': 'Icon',\n width: 16,\n height: 16,\n viewBox: '0 0 16 16',\n focusable: props.interactive,\n ...props,\n },\n ref,\n );\n\n const { interactive, color: colorProps } = props;\n const color = resolveColor(colorProps);\n const { keyboardFocused, ...propsEnhance } = keyboardFocusEnhance()({\n disabled: !interactive,\n ...other,\n });\n const sstyles = sstyled(styles);\n const { className, style } = sstyles.cn('SIcon', {\n 'color-interactive': shade(color, -0.12),\n 'use:color': color,\n interactive: interactive,\n keyboardFocused: keyboardFocused,\n });\n\n function onKeyDown(event) {\n if (propsEnhance.onKeyDown) {\n return propsEnhance.onKeyDown(event);\n }\n\n if (interactive && event.code === 'Enter') {\n propsEnhance.onClick?.(event);\n }\n }\n\n const labelCheckRef = React.useRef();\n React.useEffect(() => {\n if (!interactive) return;\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n !hasLabels(labelCheckRef.current),\n `'aria-label' or 'aria-labelledby' are required props for interactive icons`,\n props['data-ui-name'] || Icon.displayName,\n );\n }\n }, [interactive]);\n const forkedRef = useForkRef(ref, labelCheckRef);\n\n return (\n <SIcon\n role={interactive ? 'button' : undefined}\n aria-hidden={interactive ? undefined : 'true'}\n {...propsForElement(propsEnhance)}\n style={Object.assign({}, style, propsEnhance.style)}\n className={cn(className, propsEnhance.className) || undefined}\n onKeyDown={onKeyDown}\n ref={forkedRef}\n />\n );\n}\n\nIcon.displayName = 'Icon';\n\nexport default createBaseComponent(Icon);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Icon.js","names":["React","cn","createBaseComponent","sstyled","useBox","resolveColor","shade","keyboardFocusEnhance","propsForElement","logger","useForkRef","hasLabels","styles","_sstyled","insert","Icon","props","ref","_useBox","_objectSpread","tag","width","height","viewBox","focusable","interactive","_useBox2","_slicedToArray","SIcon","other","colorProps","color","_keyboardFocusEnhance","disabled","keyboardFocused","propsEnhance","_objectWithoutProperties","_excluded","sstyles","_sstyles$cn","className","style","onKeyDown","event","key","_propsEnhance$onClick","onClick","call","labelCheckRef","useRef","useEffect","process","env","NODE_ENV","warn","current","displayName","forkedRef","createElement","_extends","role","undefined","Object","assign"],"sources":["../../src/Icon.jsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { createBaseComponent, sstyled } from '@semcore/core';\nimport { useBox } from '@semcore/flex-box';\nimport resolveColor, { shade } from '@semcore/utils/lib/color';\nimport keyboardFocusEnhance from '@semcore/utils/lib/enhances/keyboardFocusEnhance';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\nimport logger from '@semcore/utils/lib/logger';\nimport { useForkRef } from '@semcore/utils/lib/ref';\nimport hasLabels from '@semcore/utils/lib/hasLabels';\n\nimport styles from './style/icon.shadow.css';\n\nfunction Icon(props, ref) {\n const [SIcon, other] = useBox(\n {\n tag: 'svg',\n 'data-ui-name': 'Icon',\n width: 16,\n height: 16,\n viewBox: '0 0 16 16',\n focusable: props.interactive,\n ...props,\n },\n ref,\n );\n\n const { interactive, color: colorProps } = props;\n const color = resolveColor(colorProps);\n const { keyboardFocused, ...propsEnhance } = keyboardFocusEnhance()({\n disabled: !interactive,\n ...other,\n });\n const sstyles = sstyled(styles);\n const { className, style } = sstyles.cn('SIcon', {\n 'color-interactive': shade(color, -0.12),\n 'use:color': color,\n interactive: interactive,\n keyboardFocused: keyboardFocused,\n });\n\n function onKeyDown(event) {\n if (propsEnhance.onKeyDown) {\n return propsEnhance.onKeyDown(event);\n }\n\n if (interactive && event.key === 'Enter') {\n propsEnhance.onClick?.(event);\n }\n }\n\n const labelCheckRef = React.useRef();\n React.useEffect(() => {\n if (!interactive) return;\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(\n !hasLabels(labelCheckRef.current),\n `'aria-label' or 'aria-labelledby' are required props for interactive icons`,\n props['data-ui-name'] || Icon.displayName,\n );\n }\n }, [interactive]);\n const forkedRef = useForkRef(ref, labelCheckRef);\n\n return (\n <SIcon\n role={interactive ? 'button' : undefined}\n aria-hidden={interactive ? undefined : 'true'}\n {...propsForElement(propsEnhance)}\n style={Object.assign({}, style, propsEnhance.style)}\n className={cn(className, propsEnhance.className) || undefined}\n onKeyDown={onKeyDown}\n ref={forkedRef}\n />\n );\n}\n\nIcon.displayName = 'Icon';\n\nexport default createBaseComponent(Icon);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/icon",
3
3
  "description": "Semrush Icon Component",
4
- "version": "4.0.0",
4
+ "version": "4.1.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@semcore/flex-box": "5.0.0",
13
- "@semcore/icon": "4.0.0",
13
+ "@semcore/icon": "4.1.0",
14
14
  "@semcore/utils": "4.0.0",
15
15
  "classnames": "2.2.6"
16
16
  },