@khanacademy/wonder-blocks-dropdown 10.3.12 → 10.4.1

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
 
2
- > @khanacademy/wonder-blocks-dropdown@10.3.12 build:css /home/runner/work/wonder-blocks/wonder-blocks/packages/wonder-blocks-dropdown
2
+ > @khanacademy/wonder-blocks-dropdown@10.4.1 build:css /home/runner/work/wonder-blocks/wonder-blocks/packages/wonder-blocks-dropdown
3
3
  > pnpm exec wonder-blocks-tokens .
4
4
 
5
5
  CSS variables generated successfully in: /home/runner/work/wonder-blocks/wonder-blocks/packages/wonder-blocks-dropdown/dist/css
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @khanacademy/wonder-blocks-dropdown
2
2
 
3
+ ## 10.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [59e0211]
8
+ - @khanacademy/wonder-blocks-clickable@8.0.0
9
+ - @khanacademy/wonder-blocks-pill@3.1.42
10
+ - @khanacademy/wonder-blocks-cell@5.0.15
11
+ - @khanacademy/wonder-blocks-form@7.3.9
12
+ - @khanacademy/wonder-blocks-icon-button@10.5.2
13
+ - @khanacademy/wonder-blocks-search-field@5.1.47
14
+ - @khanacademy/wonder-blocks-modal@8.4.4
15
+
16
+ ## 10.4.0
17
+
18
+ ### Minor Changes
19
+
20
+ - 6f24d7d: Allow ActionMenu to support any valid popper placement
21
+
3
22
  ## 10.3.12
4
23
 
5
24
  ### Patch Changes
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { type AriaProps, type StyleType } from "@khanacademy/wonder-blocks-core";
3
+ import { Placement } from "@popperjs/core";
3
4
  import DropdownOpener from "./dropdown-opener";
4
5
  import type { Item, DropdownItem, OpenerProps } from "../util/types";
5
6
  type Props = AriaProps & Readonly<{
@@ -31,10 +32,11 @@ type Props = AriaProps & Readonly<{
31
32
  */
32
33
  selectedValues?: Array<string>;
33
34
  /**
34
- * Whether this menu should be left-aligned or right-aligned with the
35
- * opener component. Defaults to left-aligned.
35
+ * The alignment of the menu component in relation to the opener
36
+ * component. Defaults to "left", which is below the opener and left
37
+ * aligned. Any valid Popper placement is also supported.
36
38
  */
37
- alignment: "left" | "right";
39
+ alignment: "left" | "right" | Placement;
38
40
  /**
39
41
  * Whether this component is disabled. A disabled dropdown may not be opened
40
42
  * and does not support interaction. Defaults to false.
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import type { StyleType } from "@khanacademy/wonder-blocks-core";
3
+ import { Placement } from "@popperjs/core";
3
4
  import type { DropdownItem } from "../util/types";
4
5
  type LabelsValues = {
5
6
  /**
@@ -89,7 +90,7 @@ type ExportProps = Readonly<{
89
90
  * Whether this menu should be left-aligned or right-aligned with the
90
91
  * opener component. Defaults to left-aligned.
91
92
  */
92
- alignment?: "left" | "right";
93
+ alignment?: "left" | "right" | Placement;
93
94
  /**
94
95
  * Whether to auto focus an option. Defaults to true.
95
96
  */
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import type { StyleType } from "@khanacademy/wonder-blocks-core";
3
+ import { Placement } from "@popperjs/core";
3
4
  type Props = {
4
5
  /**
5
6
  * The children that will be wrapped by PopperJS.
@@ -13,7 +14,7 @@ type Props = {
13
14
  * Whether this menu should be left-aligned or right-aligned with the
14
15
  * reference component. Defaults to left-aligned.
15
16
  */
16
- alignment?: "left" | "right";
17
+ alignment?: "left" | "right" | Placement;
17
18
  /**
18
19
  * The popper's reference.
19
20
  * @see https://popper.js.org/react-popper/v2/render-props/#innerref
package/dist/es/index.js CHANGED
@@ -53,7 +53,7 @@ class DropdownCoreVirtualized extends React.Component{componentDidMount(){const{
53
53
 
54
54
  function modifyMaxHeight({state,options}){const overflow=detectOverflow(state,options);const{y}=state.modifiersData.preventOverflow||{x:0,y:0};const{height}=state.rects.popper;const[basePlacement]=state.placement.split("-");const heightProp=basePlacement==="top"?"top":"bottom";const maxHeight=height-overflow[heightProp]-y;state.styles.popper={...state.styles.popper,maxHeight:`${maxHeight}px`,["--popper-max-height"]:`${maxHeight}px`};}const maxHeightModifier={name:"maxHeight",enabled:true,phase:"main",options:{padding:DROPDOWN_ITEM_HEIGHT},requiresIfExists:["offset","preventOverflow","flip"],fn:modifyMaxHeight};
55
55
 
56
- const modifiers=[{name:"preventOverflow",options:{rootBoundary:"viewport",altAxis:true,tether:false}},maxHeightModifier];const DropdownPopper=function({children,alignment="left",onPopperElement,referenceElement}){const modalHost=maybeGetPortalMountedModalHostElement(referenceElement)||document.querySelector("body");if(!modalHost){return null}return ReactDOM.createPortal(jsx(Popper,{innerRef:node=>{if(node&&onPopperElement){onPopperElement(node);}},referenceElement:referenceElement,strategy:"fixed",placement:alignment==="left"?"bottom-start":"bottom-end",modifiers:modifiers,children:({placement,ref,style,hasPopperEscaped,isReferenceHidden})=>{const shouldHidePopper=!!(hasPopperEscaped||isReferenceHidden);return jsx("div",{ref:ref,style:style,"data-testid":"dropdown-popper","data-placement":placement,children:children(shouldHidePopper)})}}),modalHost)};
56
+ const modifiers=[{name:"preventOverflow",options:{rootBoundary:"viewport",altAxis:true,tether:false}},maxHeightModifier];const DropdownPopper=function({children,alignment="left",onPopperElement,referenceElement}){const modalHost=maybeGetPortalMountedModalHostElement(referenceElement)||document.querySelector("body");if(!modalHost){return null}const placement=alignment==="left"?"bottom-start":alignment==="right"?"bottom-end":alignment;return ReactDOM.createPortal(jsx(Popper,{innerRef:node=>{if(node&&onPopperElement){onPopperElement(node);}},referenceElement:referenceElement,strategy:"fixed",placement:placement,modifiers:modifiers,children:({placement,ref,style,hasPopperEscaped,isReferenceHidden})=>{const shouldHidePopper=!!(hasPopperEscaped||isReferenceHidden);return jsx("div",{ref:ref,style:style,"data-testid":"dropdown-popper","data-placement":placement,children:children(shouldHidePopper)})}}),modalHost)};
57
57
 
58
58
  function getStringForKey(key){if(key.length===1||!/^[A-Z]/i.test(key)){return key}return ""}function debounce(callback,wait){let timeout;return function executedFunction(...args){const later=()=>{clearTimeout(timeout);callback(...args);};clearTimeout(timeout);timeout=setTimeout(later,wait);}}function isString(x){return typeof x==="string"}function getLabel(props){if(isString(props.label)){return props.label}if(isString(props.labelAsText)){return props.labelAsText}return ""}function getSelectOpenerLabel(showOpenerLabelAsText,props){if(showOpenerLabelAsText){return getLabel(props)}return props.label}
59
59
 
package/dist/index.js CHANGED
@@ -86,7 +86,7 @@ class DropdownCoreVirtualized extends React__namespace.Component{componentDidMou
86
86
 
87
87
  function modifyMaxHeight({state,options}){const overflow=core.detectOverflow(state,options);const{y}=state.modifiersData.preventOverflow||{x:0,y:0};const{height}=state.rects.popper;const[basePlacement]=state.placement.split("-");const heightProp=basePlacement==="top"?"top":"bottom";const maxHeight=height-overflow[heightProp]-y;state.styles.popper={...state.styles.popper,maxHeight:`${maxHeight}px`,["--popper-max-height"]:`${maxHeight}px`};}const maxHeightModifier={name:"maxHeight",enabled:true,phase:"main",options:{padding:DROPDOWN_ITEM_HEIGHT},requiresIfExists:["offset","preventOverflow","flip"],fn:modifyMaxHeight};
88
88
 
89
- const modifiers=[{name:"preventOverflow",options:{rootBoundary:"viewport",altAxis:true,tether:false}},maxHeightModifier];const DropdownPopper=function({children,alignment="left",onPopperElement,referenceElement}){const modalHost=wonderBlocksModal.maybeGetPortalMountedModalHostElement(referenceElement)||document.querySelector("body");if(!modalHost){return null}return ReactDOM__namespace.createPortal(jsxRuntime.jsx(reactPopper.Popper,{innerRef:node=>{if(node&&onPopperElement){onPopperElement(node);}},referenceElement:referenceElement,strategy:"fixed",placement:alignment==="left"?"bottom-start":"bottom-end",modifiers:modifiers,children:({placement,ref,style,hasPopperEscaped,isReferenceHidden})=>{const shouldHidePopper=!!(hasPopperEscaped||isReferenceHidden);return jsxRuntime.jsx("div",{ref:ref,style:style,"data-testid":"dropdown-popper","data-placement":placement,children:children(shouldHidePopper)})}}),modalHost)};
89
+ const modifiers=[{name:"preventOverflow",options:{rootBoundary:"viewport",altAxis:true,tether:false}},maxHeightModifier];const DropdownPopper=function({children,alignment="left",onPopperElement,referenceElement}){const modalHost=wonderBlocksModal.maybeGetPortalMountedModalHostElement(referenceElement)||document.querySelector("body");if(!modalHost){return null}const placement=alignment==="left"?"bottom-start":alignment==="right"?"bottom-end":alignment;return ReactDOM__namespace.createPortal(jsxRuntime.jsx(reactPopper.Popper,{innerRef:node=>{if(node&&onPopperElement){onPopperElement(node);}},referenceElement:referenceElement,strategy:"fixed",placement:placement,modifiers:modifiers,children:({placement,ref,style,hasPopperEscaped,isReferenceHidden})=>{const shouldHidePopper=!!(hasPopperEscaped||isReferenceHidden);return jsxRuntime.jsx("div",{ref:ref,style:style,"data-testid":"dropdown-popper","data-placement":placement,children:children(shouldHidePopper)})}}),modalHost)};
90
90
 
91
91
  function getStringForKey(key){if(key.length===1||!/^[A-Z]/i.test(key)){return key}return ""}function debounce(callback,wait){let timeout;return function executedFunction(...args){const later=()=>{clearTimeout(timeout);callback(...args);};clearTimeout(timeout);timeout=setTimeout(later,wait);}}function isString(x){return typeof x==="string"}function getLabel(props){if(isString(props.label)){return props.label}if(isString(props.labelAsText)){return props.labelAsText}return ""}function getSelectOpenerLabel(showOpenerLabelAsText,props){if(showOpenerLabelAsText){return getLabel(props)}return props.label}
92
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@khanacademy/wonder-blocks-dropdown",
3
- "version": "10.3.12",
3
+ "version": "10.4.1",
4
4
  "design": "v1",
5
5
  "description": "Dropdown variants for Wonder Blocks.",
6
6
  "main": "dist/index.js",
@@ -21,19 +21,19 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@khanacademy/wonder-blocks-announcer": "1.0.3",
24
- "@khanacademy/wonder-blocks-cell": "5.0.14",
25
- "@khanacademy/wonder-blocks-clickable": "7.1.26",
24
+ "@khanacademy/wonder-blocks-cell": "5.0.15",
25
+ "@khanacademy/wonder-blocks-clickable": "8.0.0",
26
26
  "@khanacademy/wonder-blocks-core": "12.4.0",
27
+ "@khanacademy/wonder-blocks-form": "7.3.9",
27
28
  "@khanacademy/wonder-blocks-icon": "5.2.20",
28
- "@khanacademy/wonder-blocks-icon-button": "10.5.1",
29
- "@khanacademy/wonder-blocks-modal": "8.4.3",
30
- "@khanacademy/wonder-blocks-pill": "3.1.41",
31
- "@khanacademy/wonder-blocks-search-field": "5.1.46",
29
+ "@khanacademy/wonder-blocks-icon-button": "10.5.2",
30
+ "@khanacademy/wonder-blocks-modal": "8.4.4",
31
+ "@khanacademy/wonder-blocks-pill": "3.1.42",
32
+ "@khanacademy/wonder-blocks-search-field": "5.1.47",
32
33
  "@khanacademy/wonder-blocks-styles": "0.2.32",
33
34
  "@khanacademy/wonder-blocks-timing": "7.0.2",
34
35
  "@khanacademy/wonder-blocks-tokens": "14.0.0",
35
- "@khanacademy/wonder-blocks-typography": "4.2.22",
36
- "@khanacademy/wonder-blocks-form": "7.3.8"
36
+ "@khanacademy/wonder-blocks-typography": "4.2.22"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@phosphor-icons/core": "^2.0.2",