@khanacademy/wonder-blocks-search-field 5.1.85 → 5.2.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
@@ -1,5 +1,20 @@
1
1
  # @khanacademy/wonder-blocks-search-field
2
2
 
3
+ ## 5.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 355f6e1: The default `aria-label` for the SearchField clear button now reads a translated string from `WonderBlocksConfigProvider`. The `clearAriaLabel` prop overrides the built-in translation.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [9ec3189]
12
+ - Updated dependencies [9ec3189]
13
+ - Updated dependencies [f070142]
14
+ - Updated dependencies [355f6e1]
15
+ - @khanacademy/wonder-blocks-form@7.7.0
16
+ - @khanacademy/wonder-blocks-config@0.4.0
17
+
3
18
  ## 5.1.85
4
19
 
5
20
  ### Patch Changes
@@ -2,7 +2,8 @@ import * as React from "react";
2
2
  import type { StyleType, AriaProps } from "@khanacademy/wonder-blocks-core";
3
3
  type Props = AriaProps & {
4
4
  /**
5
- * ARIA label for the clear button. Defaults to "Clear search".
5
+ * ARIA label for the clear button. This overrides the default label
6
+ * provided by `WonderBlocksConfigProvider` ("Clear search" by default).
6
7
  */
7
8
  clearAriaLabel?: string;
8
9
  /**
package/dist/es/index.js CHANGED
@@ -7,11 +7,10 @@ import { styles as styles$1 } from '@khanacademy/wonder-blocks-typography';
7
7
  import { Id, View } from '@khanacademy/wonder-blocks-core';
8
8
  import IconButton from '@khanacademy/wonder-blocks-icon-button';
9
9
  import { TextField } from '@khanacademy/wonder-blocks-form';
10
+ import { useWonderBlocksI18n } from '@khanacademy/wonder-blocks-config';
10
11
  import { PhosphorIcon } from '@khanacademy/wonder-blocks-icon';
11
12
  import { semanticColor, border, sizing } from '@khanacademy/wonder-blocks-tokens';
12
13
 
13
- const defaultLabels={clearSearch:"Clear search"};
14
-
15
- const SearchField=React.forwardRef(function SearchField(props,ref){const{clearAriaLabel=defaultLabels.clearSearch,autoFocus,disabled=false,id,value,placeholder,style,testId,error,instantValidation=true,validate,onValidate,onClick,onChange,onFocus,onBlur,...otherProps}=props;const innerRef=React.useRef(null);const handleClear=()=>{onChange("");innerRef?.current?.focus();};const maybeRenderClearIconButton=()=>{if(!value.length||disabled){return null}return jsx(IconButton,{icon:xIcon,size:"small",kind:"tertiary",actionType:"neutral",onClick:handleClear,style:styles.dismissIcon,"aria-label":clearAriaLabel})};return jsx(Id,{id:id,children:uniqueId=>jsxs(View,{onClick:onClick,style:[styles.inputContainer,style],children:[jsx(PhosphorIcon,{icon:magnifyingGlassIcon,size:"small",color:disabled?semanticColor.core.foreground.disabled.strong:error?semanticColor.core.foreground.critical.default:semanticColor.core.foreground.neutral.subtle,style:styles.searchIcon,"aria-hidden":"true"}),jsx(TextField,{id:uniqueId,type:"text",autoFocus:autoFocus,disabled:disabled,instantValidation:instantValidation,validate:validate,onValidate:onValidate,onChange:onChange,onFocus:onFocus,onBlur:onBlur,placeholder:placeholder,error:error,ref:node=>{if(ref){ref.current=node;}innerRef.current=node;},value:value,style:[styles.inputStyleReset,styles$1.BodyTextMediumMediumWeight],testId:testId,...otherProps}),maybeRenderClearIconButton()]})})});const styles=StyleSheet.create({inputContainer:{boxSizing:"border-box",flexDirection:"row",borderRadius:border.radius.radius_040,alignItems:"center",height:40},searchIcon:{marginInlineStart:sizing.size_080,marginInlineEnd:sizing.size_080,position:"absolute"},dismissIcon:{margin:0,position:"absolute",insetInlineEnd:sizing.size_040},inputStyleReset:{display:"flex",flex:1,width:"100%",paddingInlineStart:sizing.size_320,paddingInlineEnd:sizing.size_400}});
14
+ const SearchField=React.forwardRef(function SearchField(props,ref){const{clearAriaLabel,autoFocus,disabled=false,id,value,placeholder,style,testId,error,instantValidation=true,validate,onValidate,onClick,onChange,onFocus,onBlur,...otherProps}=props;const{strings}=useWonderBlocksI18n();const innerRef=React.useRef(null);const handleClear=()=>{onChange("");innerRef?.current?.focus();};const maybeRenderClearIconButton=()=>{if(!value.length||disabled){return null}return jsx(IconButton,{icon:xIcon,size:"small",kind:"tertiary",actionType:"neutral",onClick:handleClear,style:styles.dismissIcon,"aria-label":clearAriaLabel||strings.iconAltClearSearch})};return jsx(Id,{id:id,children:uniqueId=>jsxs(View,{onClick:onClick,style:[styles.inputContainer,style],children:[jsx(PhosphorIcon,{icon:magnifyingGlassIcon,size:"small",color:disabled?semanticColor.core.foreground.disabled.strong:error?semanticColor.core.foreground.critical.default:semanticColor.core.foreground.neutral.subtle,style:styles.searchIcon,"aria-hidden":"true"}),jsx(TextField,{id:uniqueId,type:"text",autoFocus:autoFocus,disabled:disabled,instantValidation:instantValidation,validate:validate,onValidate:onValidate,onChange:onChange,onFocus:onFocus,onBlur:onBlur,placeholder:placeholder,error:error,ref:node=>{if(ref){ref.current=node;}innerRef.current=node;},value:value,style:[styles.inputStyleReset,styles$1.BodyTextMediumMediumWeight],testId:testId,...otherProps}),maybeRenderClearIconButton()]})})});const styles=StyleSheet.create({inputContainer:{boxSizing:"border-box",flexDirection:"row",borderRadius:border.radius.radius_040,alignItems:"center",height:40},searchIcon:{marginInlineStart:sizing.size_080,marginInlineEnd:sizing.size_080,position:"absolute"},dismissIcon:{margin:0,position:"absolute",insetInlineEnd:sizing.size_040},inputStyleReset:{display:"flex",flex:1,width:"100%",paddingInlineStart:sizing.size_320,paddingInlineEnd:sizing.size_400}});
16
15
 
17
16
  export { SearchField as default };
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ var wonderBlocksTypography = require('@khanacademy/wonder-blocks-typography');
9
9
  var wonderBlocksCore = require('@khanacademy/wonder-blocks-core');
10
10
  var IconButton = require('@khanacademy/wonder-blocks-icon-button');
11
11
  var wonderBlocksForm = require('@khanacademy/wonder-blocks-form');
12
+ var wonderBlocksConfig = require('@khanacademy/wonder-blocks-config');
12
13
  var wonderBlocksIcon = require('@khanacademy/wonder-blocks-icon');
13
14
  var wonderBlocksTokens = require('@khanacademy/wonder-blocks-tokens');
14
15
 
@@ -37,8 +38,6 @@ var xIcon__default = /*#__PURE__*/_interopDefaultLegacy(xIcon);
37
38
  var magnifyingGlassIcon__default = /*#__PURE__*/_interopDefaultLegacy(magnifyingGlassIcon);
38
39
  var IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);
39
40
 
40
- const defaultLabels={clearSearch:"Clear search"};
41
-
42
- const SearchField=React__namespace.forwardRef(function SearchField(props,ref){const{clearAriaLabel=defaultLabels.clearSearch,autoFocus,disabled=false,id,value,placeholder,style,testId,error,instantValidation=true,validate,onValidate,onClick,onChange,onFocus,onBlur,...otherProps}=props;const innerRef=React__namespace.useRef(null);const handleClear=()=>{onChange("");innerRef?.current?.focus();};const maybeRenderClearIconButton=()=>{if(!value.length||disabled){return null}return jsxRuntime.jsx(IconButton__default["default"],{icon:xIcon__default["default"],size:"small",kind:"tertiary",actionType:"neutral",onClick:handleClear,style:styles.dismissIcon,"aria-label":clearAriaLabel})};return jsxRuntime.jsx(wonderBlocksCore.Id,{id:id,children:uniqueId=>jsxRuntime.jsxs(wonderBlocksCore.View,{onClick:onClick,style:[styles.inputContainer,style],children:[jsxRuntime.jsx(wonderBlocksIcon.PhosphorIcon,{icon:magnifyingGlassIcon__default["default"],size:"small",color:disabled?wonderBlocksTokens.semanticColor.core.foreground.disabled.strong:error?wonderBlocksTokens.semanticColor.core.foreground.critical.default:wonderBlocksTokens.semanticColor.core.foreground.neutral.subtle,style:styles.searchIcon,"aria-hidden":"true"}),jsxRuntime.jsx(wonderBlocksForm.TextField,{id:uniqueId,type:"text",autoFocus:autoFocus,disabled:disabled,instantValidation:instantValidation,validate:validate,onValidate:onValidate,onChange:onChange,onFocus:onFocus,onBlur:onBlur,placeholder:placeholder,error:error,ref:node=>{if(ref){ref.current=node;}innerRef.current=node;},value:value,style:[styles.inputStyleReset,wonderBlocksTypography.styles.BodyTextMediumMediumWeight],testId:testId,...otherProps}),maybeRenderClearIconButton()]})})});const styles=aphrodite.StyleSheet.create({inputContainer:{boxSizing:"border-box",flexDirection:"row",borderRadius:wonderBlocksTokens.border.radius.radius_040,alignItems:"center",height:40},searchIcon:{marginInlineStart:wonderBlocksTokens.sizing.size_080,marginInlineEnd:wonderBlocksTokens.sizing.size_080,position:"absolute"},dismissIcon:{margin:0,position:"absolute",insetInlineEnd:wonderBlocksTokens.sizing.size_040},inputStyleReset:{display:"flex",flex:1,width:"100%",paddingInlineStart:wonderBlocksTokens.sizing.size_320,paddingInlineEnd:wonderBlocksTokens.sizing.size_400}});
41
+ const SearchField=React__namespace.forwardRef(function SearchField(props,ref){const{clearAriaLabel,autoFocus,disabled=false,id,value,placeholder,style,testId,error,instantValidation=true,validate,onValidate,onClick,onChange,onFocus,onBlur,...otherProps}=props;const{strings}=wonderBlocksConfig.useWonderBlocksI18n();const innerRef=React__namespace.useRef(null);const handleClear=()=>{onChange("");innerRef?.current?.focus();};const maybeRenderClearIconButton=()=>{if(!value.length||disabled){return null}return jsxRuntime.jsx(IconButton__default["default"],{icon:xIcon__default["default"],size:"small",kind:"tertiary",actionType:"neutral",onClick:handleClear,style:styles.dismissIcon,"aria-label":clearAriaLabel||strings.iconAltClearSearch})};return jsxRuntime.jsx(wonderBlocksCore.Id,{id:id,children:uniqueId=>jsxRuntime.jsxs(wonderBlocksCore.View,{onClick:onClick,style:[styles.inputContainer,style],children:[jsxRuntime.jsx(wonderBlocksIcon.PhosphorIcon,{icon:magnifyingGlassIcon__default["default"],size:"small",color:disabled?wonderBlocksTokens.semanticColor.core.foreground.disabled.strong:error?wonderBlocksTokens.semanticColor.core.foreground.critical.default:wonderBlocksTokens.semanticColor.core.foreground.neutral.subtle,style:styles.searchIcon,"aria-hidden":"true"}),jsxRuntime.jsx(wonderBlocksForm.TextField,{id:uniqueId,type:"text",autoFocus:autoFocus,disabled:disabled,instantValidation:instantValidation,validate:validate,onValidate:onValidate,onChange:onChange,onFocus:onFocus,onBlur:onBlur,placeholder:placeholder,error:error,ref:node=>{if(ref){ref.current=node;}innerRef.current=node;},value:value,style:[styles.inputStyleReset,wonderBlocksTypography.styles.BodyTextMediumMediumWeight],testId:testId,...otherProps}),maybeRenderClearIconButton()]})})});const styles=aphrodite.StyleSheet.create({inputContainer:{boxSizing:"border-box",flexDirection:"row",borderRadius:wonderBlocksTokens.border.radius.radius_040,alignItems:"center",height:40},searchIcon:{marginInlineStart:wonderBlocksTokens.sizing.size_080,marginInlineEnd:wonderBlocksTokens.sizing.size_080,position:"absolute"},dismissIcon:{margin:0,position:"absolute",insetInlineEnd:wonderBlocksTokens.sizing.size_040},inputStyleReset:{display:"flex",flex:1,width:"100%",paddingInlineStart:wonderBlocksTokens.sizing.size_320,paddingInlineEnd:wonderBlocksTokens.sizing.size_400}});
43
42
 
44
43
  module.exports = SearchField;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Search Field components for Wonder Blocks.",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "5.1.85",
6
+ "version": "5.2.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -20,8 +20,9 @@
20
20
  "module": "dist/es/index.js",
21
21
  "types": "dist/index.d.ts",
22
22
  "dependencies": {
23
+ "@khanacademy/wonder-blocks-config": "0.4.0",
23
24
  "@khanacademy/wonder-blocks-core": "12.5.0",
24
- "@khanacademy/wonder-blocks-form": "7.6.15",
25
+ "@khanacademy/wonder-blocks-form": "7.7.0",
25
26
  "@khanacademy/wonder-blocks-icon": "6.0.2",
26
27
  "@khanacademy/wonder-blocks-icon-button": "12.0.1",
27
28
  "@khanacademy/wonder-blocks-tokens": "18.0.0",
@@ -1,3 +0,0 @@
1
- export declare const defaultLabels: {
2
- readonly clearSearch: "Clear search";
3
- };