@wordpress/components 28.8.4 → 28.8.6
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 +9 -3
- package/build/composite/group-label.js +7 -1
- package/build/composite/group-label.js.map +1 -1
- package/build/composite/group.js +7 -1
- package/build/composite/group.js.map +1 -1
- package/build/composite/hover.js +8 -2
- package/build/composite/hover.js.map +1 -1
- package/build/composite/index.js +5 -1
- package/build/composite/index.js.map +1 -1
- package/build/composite/item.js +16 -1
- package/build/composite/item.js.map +1 -1
- package/build/composite/row.js +7 -1
- package/build/composite/row.js.map +1 -1
- package/build/composite/typeahead.js +8 -2
- package/build/composite/typeahead.js.map +1 -1
- package/build/date-time/date/index.js +4 -2
- package/build/date-time/date/index.js.map +1 -1
- package/build/drop-zone/index.js +1 -2
- package/build/drop-zone/index.js.map +1 -1
- package/build/palette-edit/index.js +24 -1
- package/build/palette-edit/index.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js +2 -1
- package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-base/component.js +8 -10
- package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build/toggle-group-control/types.js.map +1 -1
- package/build/tooltip/index.js +5 -1
- package/build/tooltip/index.js.map +1 -1
- package/build-module/composite/group-label.js +7 -1
- package/build-module/composite/group-label.js.map +1 -1
- package/build-module/composite/group.js +7 -1
- package/build-module/composite/group.js.map +1 -1
- package/build-module/composite/hover.js +8 -2
- package/build-module/composite/hover.js.map +1 -1
- package/build-module/composite/index.js +5 -1
- package/build-module/composite/index.js.map +1 -1
- package/build-module/composite/item.js +16 -1
- package/build-module/composite/item.js.map +1 -1
- package/build-module/composite/row.js +7 -1
- package/build-module/composite/row.js.map +1 -1
- package/build-module/composite/typeahead.js +8 -2
- package/build-module/composite/typeahead.js.map +1 -1
- package/build-module/date-time/date/index.js +4 -2
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/drop-zone/index.js +1 -2
- package/build-module/drop-zone/index.js.map +1 -1
- package/build-module/palette-edit/index.js +23 -1
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +2 -1
- package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +8 -10
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
- package/build-module/toggle-group-control/types.js.map +1 -1
- package/build-module/tooltip/index.js +5 -1
- package/build-module/tooltip/index.js.map +1 -1
- package/build-style/style-rtl.css +4 -4
- package/build-style/style.css +4 -4
- package/build-types/composite/group-label.d.ts.map +1 -1
- package/build-types/composite/index.d.ts.map +1 -1
- package/build-types/composite/item.d.ts.map +1 -1
- package/build-types/composite/test/index.d.ts +2 -0
- package/build-types/composite/test/index.d.ts.map +1 -0
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/drop-zone/index.d.ts.map +1 -1
- package/build-types/palette-edit/index.d.ts +3 -0
- package/build-types/palette-edit/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/types.d.ts +1 -0
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/composite/group-label.tsx +7 -5
- package/src/composite/group.tsx +7 -7
- package/src/composite/hover.tsx +7 -7
- package/src/composite/index.tsx +6 -1
- package/src/composite/item.tsx +19 -1
- package/src/composite/row.tsx +7 -7
- package/src/composite/test/index.tsx +123 -0
- package/src/composite/typeahead.tsx +7 -7
- package/src/date-time/date/index.tsx +2 -0
- package/src/drop-zone/index.tsx +1 -2
- package/src/drop-zone/style.scss +1 -1
- package/src/palette-edit/index.tsx +30 -5
- package/src/palette-edit/test/index.tsx +50 -1
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +6 -6
- package/src/toggle-group-control/test/index.tsx +13 -0
- package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +3 -1
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +11 -15
- package/src/toggle-group-control/types.ts +1 -0
- package/src/tooltip/index.tsx +8 -1
- package/src/tooltip/test/index.tsx +78 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -66,7 +66,6 @@ function ToggleGroupControlOptionBase(props, forwardedRef) {
|
|
|
66
66
|
value,
|
|
67
67
|
children,
|
|
68
68
|
showTooltip = false,
|
|
69
|
-
onFocus: onFocusProp,
|
|
70
69
|
disabled,
|
|
71
70
|
...otherButtonProps
|
|
72
71
|
} = buttonProps;
|
|
@@ -101,7 +100,6 @@ function ToggleGroupControlOptionBase(props, forwardedRef) {
|
|
|
101
100
|
children: isDeselectable ? /*#__PURE__*/_jsx("button", {
|
|
102
101
|
...commonProps,
|
|
103
102
|
disabled: disabled,
|
|
104
|
-
onFocus: onFocusProp,
|
|
105
103
|
"aria-pressed": isPressed,
|
|
106
104
|
type: "button",
|
|
107
105
|
onClick: buttonOnClick,
|
|
@@ -110,16 +108,16 @@ function ToggleGroupControlOptionBase(props, forwardedRef) {
|
|
|
110
108
|
})
|
|
111
109
|
}) : /*#__PURE__*/_jsx(Ariakit.Radio, {
|
|
112
110
|
disabled: disabled,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
onFocusProp?.(event);
|
|
118
|
-
if (event.defaultPrevented) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
111
|
+
onFocusVisible: () => {
|
|
112
|
+
// Conditions ensure that the first visible focus to a radio group
|
|
113
|
+
// without a selected option will not automatically select the option.
|
|
114
|
+
if (toggleGroupControlContext.value !== null || toggleGroupControlContext.activeItemIsNotFirstItem?.()) {
|
|
121
115
|
toggleGroupControlContext.setValue(value);
|
|
122
116
|
}
|
|
117
|
+
},
|
|
118
|
+
render: /*#__PURE__*/_jsx("button", {
|
|
119
|
+
type: "button",
|
|
120
|
+
...commonProps
|
|
123
121
|
}),
|
|
124
122
|
value: value,
|
|
125
123
|
children: /*#__PURE__*/_jsx(ButtonContentView, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Ariakit","motion","useReducedMotion","useInstanceId","useMemo","contextConnect","useContextSystem","useToggleGroupControlContext","styles","useCx","Tooltip","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ButtonContentView","LabelView","REDUCED_MOTION_TRANSITION_CONFIG","duration","LAYOUT_ID","WithToolTip","showTooltip","text","children","placement","ToggleGroupControlOptionBase","props","forwardedRef","shouldReduceMotion","toggleGroupControlContext","id","baseId","buttonProps","isBlock","isDeselectable","size","className","isIcon","value","onFocus","onFocusProp","disabled","otherButtonProps","isPressed","cx","labelViewClasses","labelBlock","itemClasses","buttonView","backdropClasses","backdropView","buttonOnClick","setValue","undefined","commonProps","ref","type","onClick","Radio","render","event","defaultPrevented","div","layout","layoutRoot","transition","role","layoutId","ConnectedToggleGroupControlOptionBase"],"sources":["@wordpress/components/src/toggle-group-control/toggle-group-control-option-base/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\nimport * as Ariakit from '@ariakit/react';\nimport { motion } from 'framer-motion';\n\n/**\n * WordPress dependencies\n */\nimport { useReducedMotion, useInstanceId } from '@wordpress/compose';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport type {\n\tToggleGroupControlOptionBaseProps,\n\tWithToolTipProps,\n} from '../types';\nimport { useToggleGroupControlContext } from '../context';\nimport * as styles from './styles';\nimport { useCx } from '../../utils/hooks';\nimport Tooltip from '../../tooltip';\n\nconst { ButtonContentView, LabelView } = styles;\n\nconst REDUCED_MOTION_TRANSITION_CONFIG = {\n\tduration: 0,\n};\n\nconst LAYOUT_ID = 'toggle-group-backdrop-shared-layout-id';\n\nconst WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {\n\tif ( showTooltip && text ) {\n\t\treturn (\n\t\t\t<Tooltip text={ text } placement=\"top\">\n\t\t\t\t{ children }\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\treturn <>{ children }</>;\n};\n\nfunction ToggleGroupControlOptionBase(\n\tprops: Omit<\n\t\tWordPressComponentProps<\n\t\t\tToggleGroupControlOptionBaseProps,\n\t\t\t'button',\n\t\t\tfalse\n\t\t>,\n\t\t// the element's id is generated internally\n\t\t| 'id'\n\t\t// due to how the component works, only the `disabled` prop should be used\n\t\t| 'aria-disabled'\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst shouldReduceMotion = useReducedMotion();\n\tconst toggleGroupControlContext = useToggleGroupControlContext();\n\n\tconst id = useInstanceId(\n\t\tToggleGroupControlOptionBase,\n\t\ttoggleGroupControlContext.baseId || 'toggle-group-control-option-base'\n\t);\n\n\tconst buttonProps = useContextSystem(\n\t\t{ ...props, id },\n\t\t'ToggleGroupControlOptionBase'\n\t);\n\n\tconst {\n\t\tisBlock = false,\n\t\tisDeselectable = false,\n\t\tsize = 'default',\n\t} = toggleGroupControlContext;\n\n\tconst {\n\t\tclassName,\n\t\tisIcon = false,\n\t\tvalue,\n\t\tchildren,\n\t\tshowTooltip = false,\n\t\tonFocus: onFocusProp,\n\t\tdisabled,\n\t\t...otherButtonProps\n\t} = buttonProps;\n\n\tconst isPressed = toggleGroupControlContext.value === value;\n\tconst cx = useCx();\n\tconst labelViewClasses = useMemo(\n\t\t() => cx( isBlock && styles.labelBlock ),\n\t\t[ cx, isBlock ]\n\t);\n\tconst itemClasses = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tstyles.buttonView( {\n\t\t\t\t\tisDeselectable,\n\t\t\t\t\tisIcon,\n\t\t\t\t\tisPressed,\n\t\t\t\t\tsize,\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ cx, isDeselectable, isIcon, isPressed, size, className ]\n\t);\n\tconst backdropClasses = useMemo( () => cx( styles.backdropView ), [ cx ] );\n\n\tconst buttonOnClick = () => {\n\t\tif ( isDeselectable && isPressed ) {\n\t\t\ttoggleGroupControlContext.setValue( undefined );\n\t\t} else {\n\t\t\ttoggleGroupControlContext.setValue( value );\n\t\t}\n\t};\n\n\tconst commonProps = {\n\t\t...otherButtonProps,\n\t\tclassName: itemClasses,\n\t\t'data-value': value,\n\t\tref: forwardedRef,\n\t};\n\n\treturn (\n\t\t<LabelView className={ labelViewClasses }>\n\t\t\t<WithToolTip\n\t\t\t\tshowTooltip={ showTooltip }\n\t\t\t\ttext={ otherButtonProps[ 'aria-label' ] }\n\t\t\t>\n\t\t\t\t{ isDeselectable ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tonFocus={ onFocusProp }\n\t\t\t\t\t\taria-pressed={ isPressed }\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ buttonOnClick }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ButtonContentView>{ children }</ButtonContentView>\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<Ariakit.Radio\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\t\tonFocus={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonFocusProp?.( event );\n\t\t\t\t\t\t\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttoggleGroupControlContext.setValue( value );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ButtonContentView>{ children }</ButtonContentView>\n\t\t\t\t\t</Ariakit.Radio>\n\t\t\t\t) }\n\t\t\t</WithToolTip>\n\t\t\t{ /* Animated backdrop using framer motion's shared layout animation */ }\n\t\t\t{ isPressed ? (\n\t\t\t\t<motion.div layout layoutRoot>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName={ backdropClasses }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tshouldReduceMotion\n\t\t\t\t\t\t\t\t? REDUCED_MOTION_TRANSITION_CONFIG\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\tlayoutId={ LAYOUT_ID }\n\t\t\t\t\t/>\n\t\t\t\t</motion.div>\n\t\t\t) : null }\n\t\t</LabelView>\n\t);\n}\n\n/**\n * `ToggleGroupControlOptionBase` is a form component and is meant to be used as an internal,\n * generic component for any children of `ToggleGroupControl`.\n *\n * @example\n * ```jsx\n * import {\n * __experimentalToggleGroupControl as ToggleGroupControl,\n * __experimentalToggleGroupControlOptionBase as ToggleGroupControlOptionBase,\n * } from '@wordpress/components';\n *\n * function Example() {\n * return (\n * <ToggleGroupControl label=\"my label\" value=\"vertical\" isBlock>\n * <ToggleGroupControlOption value=\"horizontal\" label=\"Horizontal\" />\n * <ToggleGroupControlOption value=\"vertical\" label=\"Vertical\" />\n * </ToggleGroupControl>\n * );\n * }\n * ```\n */\nconst ConnectedToggleGroupControlOptionBase = contextConnect(\n\tToggleGroupControlOptionBase,\n\t'ToggleGroupControlOptionBase'\n);\n\nexport default ConnectedToggleGroupControlOptionBase;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Ariakit","motion","useReducedMotion","useInstanceId","useMemo","contextConnect","useContextSystem","useToggleGroupControlContext","styles","useCx","Tooltip","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ButtonContentView","LabelView","REDUCED_MOTION_TRANSITION_CONFIG","duration","LAYOUT_ID","WithToolTip","showTooltip","text","children","placement","ToggleGroupControlOptionBase","props","forwardedRef","shouldReduceMotion","toggleGroupControlContext","id","baseId","buttonProps","isBlock","isDeselectable","size","className","isIcon","value","disabled","otherButtonProps","isPressed","cx","labelViewClasses","labelBlock","itemClasses","buttonView","backdropClasses","backdropView","buttonOnClick","setValue","undefined","commonProps","ref","type","onClick","Radio","onFocusVisible","activeItemIsNotFirstItem","render","div","layout","layoutRoot","transition","role","layoutId","ConnectedToggleGroupControlOptionBase"],"sources":["@wordpress/components/src/toggle-group-control/toggle-group-control-option-base/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\nimport * as Ariakit from '@ariakit/react';\nimport { motion } from 'framer-motion';\n\n/**\n * WordPress dependencies\n */\nimport { useReducedMotion, useInstanceId } from '@wordpress/compose';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport type {\n\tToggleGroupControlOptionBaseProps,\n\tWithToolTipProps,\n} from '../types';\nimport { useToggleGroupControlContext } from '../context';\nimport * as styles from './styles';\nimport { useCx } from '../../utils/hooks';\nimport Tooltip from '../../tooltip';\n\nconst { ButtonContentView, LabelView } = styles;\n\nconst REDUCED_MOTION_TRANSITION_CONFIG = {\n\tduration: 0,\n};\n\nconst LAYOUT_ID = 'toggle-group-backdrop-shared-layout-id';\n\nconst WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {\n\tif ( showTooltip && text ) {\n\t\treturn (\n\t\t\t<Tooltip text={ text } placement=\"top\">\n\t\t\t\t{ children }\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\treturn <>{ children }</>;\n};\n\nfunction ToggleGroupControlOptionBase(\n\tprops: Omit<\n\t\tWordPressComponentProps<\n\t\t\tToggleGroupControlOptionBaseProps,\n\t\t\t'button',\n\t\t\tfalse\n\t\t>,\n\t\t// the element's id is generated internally\n\t\t| 'id'\n\t\t// due to how the component works, only the `disabled` prop should be used\n\t\t| 'aria-disabled'\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst shouldReduceMotion = useReducedMotion();\n\tconst toggleGroupControlContext = useToggleGroupControlContext();\n\n\tconst id = useInstanceId(\n\t\tToggleGroupControlOptionBase,\n\t\ttoggleGroupControlContext.baseId || 'toggle-group-control-option-base'\n\t);\n\n\tconst buttonProps = useContextSystem(\n\t\t{ ...props, id },\n\t\t'ToggleGroupControlOptionBase'\n\t);\n\n\tconst {\n\t\tisBlock = false,\n\t\tisDeselectable = false,\n\t\tsize = 'default',\n\t} = toggleGroupControlContext;\n\n\tconst {\n\t\tclassName,\n\t\tisIcon = false,\n\t\tvalue,\n\t\tchildren,\n\t\tshowTooltip = false,\n\t\tdisabled,\n\t\t...otherButtonProps\n\t} = buttonProps;\n\n\tconst isPressed = toggleGroupControlContext.value === value;\n\tconst cx = useCx();\n\tconst labelViewClasses = useMemo(\n\t\t() => cx( isBlock && styles.labelBlock ),\n\t\t[ cx, isBlock ]\n\t);\n\tconst itemClasses = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tstyles.buttonView( {\n\t\t\t\t\tisDeselectable,\n\t\t\t\t\tisIcon,\n\t\t\t\t\tisPressed,\n\t\t\t\t\tsize,\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ cx, isDeselectable, isIcon, isPressed, size, className ]\n\t);\n\tconst backdropClasses = useMemo( () => cx( styles.backdropView ), [ cx ] );\n\n\tconst buttonOnClick = () => {\n\t\tif ( isDeselectable && isPressed ) {\n\t\t\ttoggleGroupControlContext.setValue( undefined );\n\t\t} else {\n\t\t\ttoggleGroupControlContext.setValue( value );\n\t\t}\n\t};\n\n\tconst commonProps = {\n\t\t...otherButtonProps,\n\t\tclassName: itemClasses,\n\t\t'data-value': value,\n\t\tref: forwardedRef,\n\t};\n\n\treturn (\n\t\t<LabelView className={ labelViewClasses }>\n\t\t\t<WithToolTip\n\t\t\t\tshowTooltip={ showTooltip }\n\t\t\t\ttext={ otherButtonProps[ 'aria-label' ] }\n\t\t\t>\n\t\t\t\t{ isDeselectable ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\taria-pressed={ isPressed }\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ buttonOnClick }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ButtonContentView>{ children }</ButtonContentView>\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<Ariakit.Radio\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tonFocusVisible={ () => {\n\t\t\t\t\t\t\t// Conditions ensure that the first visible focus to a radio group\n\t\t\t\t\t\t\t// without a selected option will not automatically select the option.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttoggleGroupControlContext.value !== null ||\n\t\t\t\t\t\t\t\ttoggleGroupControlContext.activeItemIsNotFirstItem?.()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\ttoggleGroupControlContext.setValue( value );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trender={ <button type=\"button\" { ...commonProps } /> }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ButtonContentView>{ children }</ButtonContentView>\n\t\t\t\t\t</Ariakit.Radio>\n\t\t\t\t) }\n\t\t\t</WithToolTip>\n\t\t\t{ /* Animated backdrop using framer motion's shared layout animation */ }\n\t\t\t{ isPressed ? (\n\t\t\t\t<motion.div layout layoutRoot>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName={ backdropClasses }\n\t\t\t\t\t\ttransition={\n\t\t\t\t\t\t\tshouldReduceMotion\n\t\t\t\t\t\t\t\t? REDUCED_MOTION_TRANSITION_CONFIG\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\tlayoutId={ LAYOUT_ID }\n\t\t\t\t\t/>\n\t\t\t\t</motion.div>\n\t\t\t) : null }\n\t\t</LabelView>\n\t);\n}\n\n/**\n * `ToggleGroupControlOptionBase` is a form component and is meant to be used as an internal,\n * generic component for any children of `ToggleGroupControl`.\n *\n * @example\n * ```jsx\n * import {\n * __experimentalToggleGroupControl as ToggleGroupControl,\n * __experimentalToggleGroupControlOptionBase as ToggleGroupControlOptionBase,\n * } from '@wordpress/components';\n *\n * function Example() {\n * return (\n * <ToggleGroupControl label=\"my label\" value=\"vertical\" isBlock>\n * <ToggleGroupControlOption value=\"horizontal\" label=\"Horizontal\" />\n * <ToggleGroupControlOption value=\"vertical\" label=\"Vertical\" />\n * </ToggleGroupControl>\n * );\n * }\n * ```\n */\nconst ConnectedToggleGroupControlOptionBase = contextConnect(\n\tToggleGroupControlOptionBase,\n\t'ToggleGroupControlOptionBase'\n);\n\nexport default ConnectedToggleGroupControlOptionBase;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["@wordpress/components/src/toggle-group-control/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { BaseControlProps } from '../base-control/types';\nimport type { TooltipProps } from '../tooltip/types';\n\nexport type ToggleGroupControlOptionBaseProps = {\n\tchildren: ReactNode;\n\t/**\n\t * Style the option as an icon option.\n\t *\n\t * @default false\n\t */\n\tisIcon?: boolean;\n\tvalue: string | number;\n\t/**\n\t * Whether to display a Tooltip for the control option. If set to `true`, the tooltip will\n\t * show the aria-label or the label prop text.\n\t *\n\t * @default false\n\t */\n\tshowTooltip?: boolean;\n};\n\nexport type ToggleGroupControlOptionIconProps = Pick<\n\tToggleGroupControlOptionBaseProps,\n\t'value'\n> & {\n\t/**\n\t * Icon displayed as the content of the option. Usually one of the icons from\n\t * the `@wordpress/icons` package, or a custom React `<svg>` icon.\n\t */\n\ticon: JSX.Element;\n\t/**\n\t * The text to accessibly label the icon option. Will also be shown in a tooltip.\n\t */\n\tlabel: string;\n};\n\nexport type ToggleGroupControlOptionProps = Pick<\n\tToggleGroupControlOptionBaseProps,\n\t'value' | 'showTooltip'\n> & {\n\t/**\n\t * Label for the option. If needed, the `aria-label` prop can be used in addition\n\t * to specify a different label for assistive technologies.\n\t */\n\tlabel: string;\n};\n\nexport type WithToolTipProps = {\n\t/**\n\t * React children\n\t */\n\tchildren: TooltipProps[ 'children' ];\n\t/**\n\t * Label for the Tooltip component.\n\t */\n\ttext?: string;\n\t/**\n\t * Whether to wrap the control option in a Tooltip component.\n\t *\n\t * @default false\n\t */\n\tshowTooltip?: boolean;\n};\n\nexport type ToggleGroupControlProps = Pick<\n\tBaseControlProps,\n\t'help' | '__nextHasNoMarginBottom'\n> & {\n\t/**\n\t * Label for the control.\n\t */\n\tlabel: string;\n\t/**\n\t * If true, the label will only be visible to screen readers.\n\t *\n\t * @default false\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Determines if segments should be rendered with equal widths.\n\t *\n\t * @default false\n\t */\n\tisAdaptiveWidth?: boolean;\n\t/**\n\t * Renders `ToggleGroupControl` as a (CSS) block element, spanning the entire width of\n\t * the available space. This is the recommended style when the options are text-based and not icons.\n\t *\n\t * @default false\n\t */\n\tisBlock?: boolean;\n\t/**\n\t * Whether an option can be deselected by clicking it again.\n\t *\n\t * @default false\n\t */\n\tisDeselectable?: boolean;\n\t/**\n\t * Callback when a segment is selected.\n\t */\n\tonChange?: ( value: string | number | undefined ) => void;\n\t/**\n\t * The selected value.\n\t */\n\tvalue?: string | number;\n\t/**\n\t * The options to render in the `ToggleGroupControl`, using either the `ToggleGroupControlOption` or\n\t * `ToggleGroupControlOptionIcon` components.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * The size variant of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: 'default' | '__unstable-large';\n\t/**\n\t * Start opting into the larger default height that will become the default size in a future version.\n\t *\n\t * @default false\n\t */\n\t__next40pxDefaultSize?: boolean;\n};\n\nexport type ToggleGroupControlContextProps = {\n\tisDeselectable?: boolean;\n\tbaseId: string;\n\tisBlock: ToggleGroupControlProps[ 'isBlock' ];\n\tsize: ToggleGroupControlProps[ 'size' ];\n\tvalue: ToggleGroupControlProps[ 'value' ];\n\tsetValue: ( newValue: string | number | undefined ) => void;\n};\n\nexport type ToggleGroupControlMainControlProps = Pick<\n\tToggleGroupControlProps,\n\t'children' | 'isAdaptiveWidth' | 'label' | 'size' | 'onChange' | 'value'\n>;\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["@wordpress/components/src/toggle-group-control/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { BaseControlProps } from '../base-control/types';\nimport type { TooltipProps } from '../tooltip/types';\n\nexport type ToggleGroupControlOptionBaseProps = {\n\tchildren: ReactNode;\n\t/**\n\t * Style the option as an icon option.\n\t *\n\t * @default false\n\t */\n\tisIcon?: boolean;\n\tvalue: string | number;\n\t/**\n\t * Whether to display a Tooltip for the control option. If set to `true`, the tooltip will\n\t * show the aria-label or the label prop text.\n\t *\n\t * @default false\n\t */\n\tshowTooltip?: boolean;\n};\n\nexport type ToggleGroupControlOptionIconProps = Pick<\n\tToggleGroupControlOptionBaseProps,\n\t'value'\n> & {\n\t/**\n\t * Icon displayed as the content of the option. Usually one of the icons from\n\t * the `@wordpress/icons` package, or a custom React `<svg>` icon.\n\t */\n\ticon: JSX.Element;\n\t/**\n\t * The text to accessibly label the icon option. Will also be shown in a tooltip.\n\t */\n\tlabel: string;\n};\n\nexport type ToggleGroupControlOptionProps = Pick<\n\tToggleGroupControlOptionBaseProps,\n\t'value' | 'showTooltip'\n> & {\n\t/**\n\t * Label for the option. If needed, the `aria-label` prop can be used in addition\n\t * to specify a different label for assistive technologies.\n\t */\n\tlabel: string;\n};\n\nexport type WithToolTipProps = {\n\t/**\n\t * React children\n\t */\n\tchildren: TooltipProps[ 'children' ];\n\t/**\n\t * Label for the Tooltip component.\n\t */\n\ttext?: string;\n\t/**\n\t * Whether to wrap the control option in a Tooltip component.\n\t *\n\t * @default false\n\t */\n\tshowTooltip?: boolean;\n};\n\nexport type ToggleGroupControlProps = Pick<\n\tBaseControlProps,\n\t'help' | '__nextHasNoMarginBottom'\n> & {\n\t/**\n\t * Label for the control.\n\t */\n\tlabel: string;\n\t/**\n\t * If true, the label will only be visible to screen readers.\n\t *\n\t * @default false\n\t */\n\thideLabelFromVision?: boolean;\n\t/**\n\t * Determines if segments should be rendered with equal widths.\n\t *\n\t * @default false\n\t */\n\tisAdaptiveWidth?: boolean;\n\t/**\n\t * Renders `ToggleGroupControl` as a (CSS) block element, spanning the entire width of\n\t * the available space. This is the recommended style when the options are text-based and not icons.\n\t *\n\t * @default false\n\t */\n\tisBlock?: boolean;\n\t/**\n\t * Whether an option can be deselected by clicking it again.\n\t *\n\t * @default false\n\t */\n\tisDeselectable?: boolean;\n\t/**\n\t * Callback when a segment is selected.\n\t */\n\tonChange?: ( value: string | number | undefined ) => void;\n\t/**\n\t * The selected value.\n\t */\n\tvalue?: string | number;\n\t/**\n\t * The options to render in the `ToggleGroupControl`, using either the `ToggleGroupControlOption` or\n\t * `ToggleGroupControlOptionIcon` components.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * The size variant of the control.\n\t *\n\t * @default 'default'\n\t */\n\tsize?: 'default' | '__unstable-large';\n\t/**\n\t * Start opting into the larger default height that will become the default size in a future version.\n\t *\n\t * @default false\n\t */\n\t__next40pxDefaultSize?: boolean;\n};\n\nexport type ToggleGroupControlContextProps = {\n\tactiveItemIsNotFirstItem?: () => boolean;\n\tisDeselectable?: boolean;\n\tbaseId: string;\n\tisBlock: ToggleGroupControlProps[ 'isBlock' ];\n\tsize: ToggleGroupControlProps[ 'size' ];\n\tvalue: ToggleGroupControlProps[ 'value' ];\n\tsetValue: ( newValue: string | number | undefined ) => void;\n};\n\nexport type ToggleGroupControlMainControlProps = Pick<\n\tToggleGroupControlProps,\n\t'children' | 'isAdaptiveWidth' | 'label' | 'size' | 'onChange' | 'value'\n>;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -87,9 +87,13 @@ function UnforwardedTooltip(props, ref) {
|
|
|
87
87
|
// TODO: this is a temporary workaround to minimize the effects of the
|
|
88
88
|
// Ariakit upgrade. Ariakit doesn't pass the `aria-describedby` prop to
|
|
89
89
|
// the tooltip anchor anymore since 0.4.0, so we need to add it manually.
|
|
90
|
+
// The `aria-describedby` attribute is added only if the anchor doesn't have
|
|
91
|
+
// one already, and if the tooltip text is not the same as the anchor's
|
|
92
|
+
// `aria-label`
|
|
90
93
|
// See: https://github.com/WordPress/gutenberg/pull/64066
|
|
94
|
+
// See: https://github.com/WordPress/gutenberg/pull/65989
|
|
91
95
|
function addDescribedById(element) {
|
|
92
|
-
return describedById && mounted ? cloneElement(element, {
|
|
96
|
+
return describedById && mounted && element.props['aria-describedby'] === undefined && element.props['aria-label'] !== text ? cloneElement(element, {
|
|
93
97
|
'aria-describedby': describedById
|
|
94
98
|
}) : element;
|
|
95
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Ariakit","useStoreState","clsx","useInstanceId","Children","useContext","createContext","forwardRef","cloneElement","deprecated","Shortcut","positionToPlacement","jsx","_jsx","jsxs","_jsxs","TooltipInternalContext","isNestedInTooltip","TOOLTIP_DELAY","CONTEXT_VALUE","UnforwardedTooltip","props","ref","children","className","delay","hideOnClick","placement","position","shortcut","text","restProps","baseId","Tooltip","describedById","undefined","isOnlyChild","count","process","env","NODE_ENV","console","error","computedPlacement","since","alternative","tooltipStore","useTooltipStore","showTimeout","mounted","Role","render","addDescribedById","element","Provider","value","TooltipAnchor","onClick","hide","store","unmountOnHide","gutter","id","overflowPadding"],"sources":["@wordpress/components/src/tooltip/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport { useStoreState } from '@ariakit/react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tChildren,\n\tuseContext,\n\tcreateContext,\n\tforwardRef,\n\tcloneElement,\n} from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tTooltipProps,\n\tTooltipInternalContext as TooltipInternalContextType,\n} from './types';\nimport Shortcut from '../shortcut';\nimport { positionToPlacement } from '../popover/utils';\n\nconst TooltipInternalContext = createContext< TooltipInternalContextType >( {\n\tisNestedInTooltip: false,\n} );\n\n/**\n * Time over anchor to wait before showing tooltip\n */\nexport const TOOLTIP_DELAY = 700;\n\nconst CONTEXT_VALUE = {\n\tisNestedInTooltip: true,\n};\n\nfunction UnforwardedTooltip(\n\tprops: TooltipProps,\n\tref: React.ForwardedRef< any >\n) {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tdelay = TOOLTIP_DELAY,\n\t\thideOnClick = true,\n\t\tplacement,\n\t\tposition,\n\t\tshortcut,\n\t\ttext,\n\n\t\t...restProps\n\t} = props;\n\n\tconst { isNestedInTooltip } = useContext( TooltipInternalContext );\n\n\tconst baseId = useInstanceId( Tooltip, 'tooltip' );\n\tconst describedById = text || shortcut ? baseId : undefined;\n\n\tconst isOnlyChild = Children.count( children ) === 1;\n\t// console error if more than one child element is added\n\tif ( ! isOnlyChild ) {\n\t\tif ( 'development' === process.env.NODE_ENV ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'wp-components.Tooltip should be called with only a single child element.'\n\t\t\t);\n\t\t}\n\t}\n\n\t// Compute tooltip's placement:\n\t// - give priority to `placement` prop, if defined\n\t// - otherwise, compute it from the legacy `position` prop (if defined)\n\t// - finally, fallback to the default placement: 'bottom'\n\tlet computedPlacement;\n\tif ( placement !== undefined ) {\n\t\tcomputedPlacement = placement;\n\t} else if ( position !== undefined ) {\n\t\tcomputedPlacement = positionToPlacement( position );\n\t\tdeprecated( '`position` prop in wp.components.tooltip', {\n\t\t\tsince: '6.4',\n\t\t\talternative: '`placement` prop',\n\t\t} );\n\t}\n\tcomputedPlacement = computedPlacement || 'bottom';\n\n\tconst tooltipStore = Ariakit.useTooltipStore( {\n\t\tplacement: computedPlacement,\n\t\tshowTimeout: delay,\n\t} );\n\tconst mounted = useStoreState( tooltipStore, 'mounted' );\n\n\tif ( isNestedInTooltip ) {\n\t\treturn isOnlyChild ? (\n\t\t\t<Ariakit.Role { ...restProps } render={ children } />\n\t\t) : (\n\t\t\tchildren\n\t\t);\n\t}\n\n\t// TODO: this is a temporary workaround to minimize the effects of the\n\t// Ariakit upgrade. Ariakit doesn't pass the `aria-describedby` prop to\n\t// the tooltip anchor anymore since 0.4.0, so we need to add it manually.\n\t// See: https://github.com/WordPress/gutenberg/pull/64066\n\tfunction addDescribedById( element: React.ReactElement ) {\n\t\treturn describedById
|
|
1
|
+
{"version":3,"names":["Ariakit","useStoreState","clsx","useInstanceId","Children","useContext","createContext","forwardRef","cloneElement","deprecated","Shortcut","positionToPlacement","jsx","_jsx","jsxs","_jsxs","TooltipInternalContext","isNestedInTooltip","TOOLTIP_DELAY","CONTEXT_VALUE","UnforwardedTooltip","props","ref","children","className","delay","hideOnClick","placement","position","shortcut","text","restProps","baseId","Tooltip","describedById","undefined","isOnlyChild","count","process","env","NODE_ENV","console","error","computedPlacement","since","alternative","tooltipStore","useTooltipStore","showTimeout","mounted","Role","render","addDescribedById","element","Provider","value","TooltipAnchor","onClick","hide","store","unmountOnHide","gutter","id","overflowPadding"],"sources":["@wordpress/components/src/tooltip/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport { useStoreState } from '@ariakit/react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tChildren,\n\tuseContext,\n\tcreateContext,\n\tforwardRef,\n\tcloneElement,\n} from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tTooltipProps,\n\tTooltipInternalContext as TooltipInternalContextType,\n} from './types';\nimport Shortcut from '../shortcut';\nimport { positionToPlacement } from '../popover/utils';\n\nconst TooltipInternalContext = createContext< TooltipInternalContextType >( {\n\tisNestedInTooltip: false,\n} );\n\n/**\n * Time over anchor to wait before showing tooltip\n */\nexport const TOOLTIP_DELAY = 700;\n\nconst CONTEXT_VALUE = {\n\tisNestedInTooltip: true,\n};\n\nfunction UnforwardedTooltip(\n\tprops: TooltipProps,\n\tref: React.ForwardedRef< any >\n) {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tdelay = TOOLTIP_DELAY,\n\t\thideOnClick = true,\n\t\tplacement,\n\t\tposition,\n\t\tshortcut,\n\t\ttext,\n\n\t\t...restProps\n\t} = props;\n\n\tconst { isNestedInTooltip } = useContext( TooltipInternalContext );\n\n\tconst baseId = useInstanceId( Tooltip, 'tooltip' );\n\tconst describedById = text || shortcut ? baseId : undefined;\n\n\tconst isOnlyChild = Children.count( children ) === 1;\n\t// console error if more than one child element is added\n\tif ( ! isOnlyChild ) {\n\t\tif ( 'development' === process.env.NODE_ENV ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'wp-components.Tooltip should be called with only a single child element.'\n\t\t\t);\n\t\t}\n\t}\n\n\t// Compute tooltip's placement:\n\t// - give priority to `placement` prop, if defined\n\t// - otherwise, compute it from the legacy `position` prop (if defined)\n\t// - finally, fallback to the default placement: 'bottom'\n\tlet computedPlacement;\n\tif ( placement !== undefined ) {\n\t\tcomputedPlacement = placement;\n\t} else if ( position !== undefined ) {\n\t\tcomputedPlacement = positionToPlacement( position );\n\t\tdeprecated( '`position` prop in wp.components.tooltip', {\n\t\t\tsince: '6.4',\n\t\t\talternative: '`placement` prop',\n\t\t} );\n\t}\n\tcomputedPlacement = computedPlacement || 'bottom';\n\n\tconst tooltipStore = Ariakit.useTooltipStore( {\n\t\tplacement: computedPlacement,\n\t\tshowTimeout: delay,\n\t} );\n\tconst mounted = useStoreState( tooltipStore, 'mounted' );\n\n\tif ( isNestedInTooltip ) {\n\t\treturn isOnlyChild ? (\n\t\t\t<Ariakit.Role { ...restProps } render={ children } />\n\t\t) : (\n\t\t\tchildren\n\t\t);\n\t}\n\n\t// TODO: this is a temporary workaround to minimize the effects of the\n\t// Ariakit upgrade. Ariakit doesn't pass the `aria-describedby` prop to\n\t// the tooltip anchor anymore since 0.4.0, so we need to add it manually.\n\t// The `aria-describedby` attribute is added only if the anchor doesn't have\n\t// one already, and if the tooltip text is not the same as the anchor's\n\t// `aria-label`\n\t// See: https://github.com/WordPress/gutenberg/pull/64066\n\t// See: https://github.com/WordPress/gutenberg/pull/65989\n\tfunction addDescribedById( element: React.ReactElement ) {\n\t\treturn describedById &&\n\t\t\tmounted &&\n\t\t\telement.props[ 'aria-describedby' ] === undefined &&\n\t\t\telement.props[ 'aria-label' ] !== text\n\t\t\t? cloneElement( element, { 'aria-describedby': describedById } )\n\t\t\t: element;\n\t}\n\n\treturn (\n\t\t<TooltipInternalContext.Provider value={ CONTEXT_VALUE }>\n\t\t\t<Ariakit.TooltipAnchor\n\t\t\t\tonClick={ hideOnClick ? tooltipStore.hide : undefined }\n\t\t\t\tstore={ tooltipStore }\n\t\t\t\trender={\n\t\t\t\t\tisOnlyChild ? addDescribedById( children ) : undefined\n\t\t\t\t}\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t{ isOnlyChild ? undefined : children }\n\t\t\t</Ariakit.TooltipAnchor>\n\t\t\t{ isOnlyChild && ( text || shortcut ) && (\n\t\t\t\t<Ariakit.Tooltip\n\t\t\t\t\t{ ...restProps }\n\t\t\t\t\tclassName={ clsx( 'components-tooltip', className ) }\n\t\t\t\t\tunmountOnHide\n\t\t\t\t\tgutter={ 4 }\n\t\t\t\t\tid={ describedById }\n\t\t\t\t\toverflowPadding={ 0.5 }\n\t\t\t\t\tstore={ tooltipStore }\n\t\t\t\t>\n\t\t\t\t\t{ text }\n\t\t\t\t\t{ shortcut && (\n\t\t\t\t\t\t<Shortcut\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\ttext ? 'components-tooltip__shortcut' : ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshortcut={ shortcut }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Ariakit.Tooltip>\n\t\t\t) }\n\t\t</TooltipInternalContext.Provider>\n\t);\n}\nexport const Tooltip = forwardRef( UnforwardedTooltip );\n\nexport default Tooltip;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1132,22 +1132,22 @@ body.is-dragging-components-draggable {
|
|
|
1132
1132
|
opacity: 0;
|
|
1133
1133
|
transform: scale(0.9);
|
|
1134
1134
|
}
|
|
1135
|
-
.components-drop-zone.is-active
|
|
1135
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content {
|
|
1136
1136
|
opacity: 1;
|
|
1137
1137
|
transition: opacity 0.2s ease-in-out;
|
|
1138
1138
|
}
|
|
1139
1139
|
@media (prefers-reduced-motion) {
|
|
1140
|
-
.components-drop-zone.is-active
|
|
1140
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content {
|
|
1141
1141
|
transition: none;
|
|
1142
1142
|
}
|
|
1143
1143
|
}
|
|
1144
|
-
.components-drop-zone.is-active
|
|
1144
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner {
|
|
1145
1145
|
opacity: 1;
|
|
1146
1146
|
transform: scale(1);
|
|
1147
1147
|
transition: opacity 0.1s ease-in-out 0.1s, transform 0.1s ease-in-out 0.1s;
|
|
1148
1148
|
}
|
|
1149
1149
|
@media (prefers-reduced-motion) {
|
|
1150
|
-
.components-drop-zone.is-active
|
|
1150
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner {
|
|
1151
1151
|
transition: none;
|
|
1152
1152
|
}
|
|
1153
1153
|
}
|
package/build-style/style.css
CHANGED
|
@@ -1137,22 +1137,22 @@ body.is-dragging-components-draggable {
|
|
|
1137
1137
|
opacity: 0;
|
|
1138
1138
|
transform: scale(0.9);
|
|
1139
1139
|
}
|
|
1140
|
-
.components-drop-zone.is-active
|
|
1140
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content {
|
|
1141
1141
|
opacity: 1;
|
|
1142
1142
|
transition: opacity 0.2s ease-in-out;
|
|
1143
1143
|
}
|
|
1144
1144
|
@media (prefers-reduced-motion) {
|
|
1145
|
-
.components-drop-zone.is-active
|
|
1145
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content {
|
|
1146
1146
|
transition: none;
|
|
1147
1147
|
}
|
|
1148
1148
|
}
|
|
1149
|
-
.components-drop-zone.is-active
|
|
1149
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner {
|
|
1150
1150
|
opacity: 1;
|
|
1151
1151
|
transform: scale(1);
|
|
1152
1152
|
transition: opacity 0.1s ease-in-out 0.1s, transform 0.1s ease-in-out 0.1s;
|
|
1153
1153
|
}
|
|
1154
1154
|
@media (prefers-reduced-motion) {
|
|
1155
|
-
.components-drop-zone.is-active
|
|
1155
|
+
.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner {
|
|
1156
1156
|
transition: none;
|
|
1157
1157
|
}
|
|
1158
1158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-label.d.ts","sourceRoot":"","sources":["../../src/composite/group-label.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"group-label.d.ts","sourceRoot":"","sources":["../../src/composite/group-label.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,eAAO,MAAM,mBAAmB,mRAc7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composite/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAqB1C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composite/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAqB1C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgEpB;;;;;;;;;;;;;;;OAeG;;;;IAIH;;;;;;;;;;;;;;;;;OAiBG;;;;IAIH;;;;;;;;;;;;;OAaG;;;;IAEH;;;;;;;;;;;;;;;;;;;;;;OAsBG;;;;IAEH;;;;;;;;;;;;;;;;;;OAkBG;;;;IAIH;;;;;;;;;;;;;;OAcG;;;;IAIH;;;;;;;;;;;;;OAaG;;;;CAKJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/composite/item.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/composite/item.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,aAAa,sRA8BvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composite/test/index.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/date-time/date/index.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAahD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAE,EAC3B,WAAW,EACX,QAAQ,EACR,MAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EAAE,YAAgB,GAC7B,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/date-time/date/index.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAahD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAE,EAC3B,WAAW,EACX,QAAQ,EACR,MAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EAAE,YAAgB,GAC7B,EAAE,eAAe,+BAoMjB;AAmGD,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drop-zone/index.tsx"],"names":[],"mappings":"AAcA;;GAEG;AACH,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAE,EAClC,SAAS,EACT,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,GAAG,SAAS,EACZ,EAAE,uBAAuB,CAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAE,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drop-zone/index.tsx"],"names":[],"mappings":"AAcA;;GAEG;AACH,OAAO,KAAK,EAAY,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAE,EAClC,SAAS,EACT,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,GAAG,SAAS,EACZ,EAAE,uBAAuB,CAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAE,+BAyFxD;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { PaletteEditProps, PaletteElement } from './types';
|
|
2
|
+
export declare function deduplicateElementSlugs<T extends PaletteElement>(elements: T[]): (T & {
|
|
3
|
+
slug: string;
|
|
4
|
+
})[];
|
|
2
5
|
/**
|
|
3
6
|
* Returns a name and slug for a palette item. The name takes the format "Color + id".
|
|
4
7
|
* To ensure there are no duplicate ids, this function checks all slugs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/palette-edit/index.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/palette-edit/index.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAMX,gBAAgB,EAChB,cAAc,EACd,MAAM,SAAS,CAAC;AAkBjB,wBAAgB,uBAAuB,CAAE,CAAC,SAAS,cAAc,EAChE,QAAQ,EAAE,CAAC,EAAE;;KAgBb;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,cAAc,EAAE,EAC1B,UAAU,EAAE,MAAM;;;EAwBlB;AAiOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAE,EAC5B,SAAS,EACT,MAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,wBAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,UAAe,EACf,YAAY,GACZ,EAAE,gBAAgB,+BA8OlB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"as-radio-group.d.ts","sourceRoot":"","sources":["../../../src/toggle-group-control/toggle-group-control/as-radio-group.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACX,kCAAkC,EAElC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"as-radio-group.d.ts","sourceRoot":"","sources":["../../../src/toggle-group-control/toggle-group-control/as-radio-group.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACX,kCAAkC,EAElC,MAAM,UAAU,CAAC;AAgFlB,eAAO,MAAM,8BAA8B,uUAE1C,CAAC"}
|
package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/toggle-group-control/toggle-group-control-option-base/component.tsx"],"names":[],"mappings":"AAaA;;GAEG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EACX,iCAAiC,EAEjC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/toggle-group-control/toggle-group-control-option-base/component.tsx"],"names":[],"mappings":"AAaA;;GAEG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EACX,iCAAiC,EAEjC,MAAM,UAAU,CAAC;AA+JlB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,qCAAqC,2RAG1C,CAAC;AAEF,eAAe,qCAAqC,CAAC"}
|
|
@@ -115,6 +115,7 @@ export type ToggleGroupControlProps = Pick<BaseControlProps, 'help' | '__nextHas
|
|
|
115
115
|
__next40pxDefaultSize?: boolean;
|
|
116
116
|
};
|
|
117
117
|
export type ToggleGroupControlContextProps = {
|
|
118
|
+
activeItemIsNotFirstItem?: () => boolean;
|
|
118
119
|
isDeselectable?: boolean;
|
|
119
120
|
baseId: string;
|
|
120
121
|
isBlock: ToggleGroupControlProps['isBlock'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/toggle-group-control/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,CACnD,iCAAiC,EACjC,OAAO,CACP,GAAG;IACH;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC/C,iCAAiC,EACjC,OAAO,GAAG,aAAa,CACvB,GAAG;IACH;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAE,UAAU,CAAE,CAAC;IACrC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACzC,gBAAgB,EAChB,MAAM,GAAG,yBAAyB,CAClC,GAAG;IACH;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAM,IAAI,CAAC;IAC1D;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACtC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,uBAAuB,CAAE,SAAS,CAAE,CAAC;IAC9C,IAAI,EAAE,uBAAuB,CAAE,MAAM,CAAE,CAAC;IACxC,KAAK,EAAE,uBAAuB,CAAE,OAAO,CAAE,CAAC;IAC1C,QAAQ,EAAE,CAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAM,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACpD,uBAAuB,EACvB,UAAU,GAAG,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/toggle-group-control/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,CACnD,iCAAiC,EACjC,OAAO,CACP,GAAG;IACH;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC/C,iCAAiC,EACjC,OAAO,GAAG,aAAa,CACvB,GAAG;IACH;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAE,UAAU,CAAE,CAAC;IACrC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACzC,gBAAgB,EAChB,MAAM,GAAG,yBAAyB,CAClC,GAAG;IACH;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAM,IAAI,CAAC;IAC1D;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACtC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC5C,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,uBAAuB,CAAE,SAAS,CAAE,CAAC;IAC9C,IAAI,EAAE,uBAAuB,CAAE,MAAM,CAAE,CAAC;IACxC,KAAK,EAAE,uBAAuB,CAAE,OAAO,CAAE,CAAC;IAC1C,QAAQ,EAAE,CAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAM,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACpD,uBAAuB,EACvB,UAAU,GAAG,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CACxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooltip/index.tsx"],"names":[],"mappings":"AAoBA;;GAEG;AACH,OAAO,KAAK,EACX,YAAY,EAEZ,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tooltip/index.tsx"],"names":[],"mappings":"AAoBA;;GAEG;AACH,OAAO,KAAK,EACX,YAAY,EAEZ,MAAM,SAAS,CAAC;AAQjB;;GAEG;AACH,eAAO,MAAM,aAAa,MAAM,CAAC;AA0HjC,eAAO,MAAM,OAAO,8FAAmC,CAAC;AAExD,eAAe,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/components",
|
|
3
|
-
"version": "28.8.
|
|
3
|
+
"version": "28.8.6",
|
|
4
4
|
"description": "UI components for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"publishConfig": {
|
|
85
85
|
"access": "public"
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "b7af02f8431034ee19cdc33dd105d21705823eed"
|
|
88
88
|
}
|
|
@@ -20,11 +20,13 @@ export const CompositeGroupLabel = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeGroupLabelProps, 'div', false >
|
|
21
21
|
>( function CompositeGroupLabel( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
23
29
|
return (
|
|
24
|
-
<Ariakit.CompositeGroupLabel
|
|
25
|
-
store={ context.store as Ariakit.CompositeStore }
|
|
26
|
-
{ ...props }
|
|
27
|
-
ref={ ref }
|
|
28
|
-
/>
|
|
30
|
+
<Ariakit.CompositeGroupLabel store={ store } { ...props } ref={ ref } />
|
|
29
31
|
);
|
|
30
32
|
} );
|
package/src/composite/group.tsx
CHANGED
|
@@ -20,11 +20,11 @@ export const CompositeGroup = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeGroupProps, 'div', false >
|
|
21
21
|
>( function CompositeGroup( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeGroup store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|
package/src/composite/hover.tsx
CHANGED
|
@@ -20,11 +20,11 @@ export const CompositeHover = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeHoverProps, 'div', false >
|
|
21
21
|
>( function CompositeHover( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeGroup store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|
package/src/composite/index.tsx
CHANGED
|
@@ -73,7 +73,10 @@ export const Composite = Object.assign(
|
|
|
73
73
|
},
|
|
74
74
|
ref
|
|
75
75
|
) {
|
|
76
|
-
|
|
76
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
77
|
+
// legacy compat layer.
|
|
78
|
+
const storeProp = props.store as Ariakit.CompositeStore;
|
|
79
|
+
const internalStore = Ariakit.useCompositeStore( {
|
|
77
80
|
activeId,
|
|
78
81
|
defaultActiveId,
|
|
79
82
|
setActiveId,
|
|
@@ -85,6 +88,8 @@ export const Composite = Object.assign(
|
|
|
85
88
|
rtl,
|
|
86
89
|
} );
|
|
87
90
|
|
|
91
|
+
const store = storeProp ?? internalStore;
|
|
92
|
+
|
|
88
93
|
const contextValue = useMemo(
|
|
89
94
|
() => ( {
|
|
90
95
|
store,
|
package/src/composite/item.tsx
CHANGED
|
@@ -20,9 +20,27 @@ export const CompositeItem = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeItemProps, 'button', false >
|
|
21
21
|
>( function CompositeItem( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
// If the active item is not connected, Composite may end up in a state
|
|
30
|
+
// where none of the items are tabbable. In this case, we force all items to
|
|
31
|
+
// be tabbable, so that as soon as an item received focus, it becomes active
|
|
32
|
+
// and Composite goes back to working as expected.
|
|
33
|
+
const tabbable = Ariakit.useStoreState( store, ( state ) => {
|
|
34
|
+
return (
|
|
35
|
+
state?.activeId !== null &&
|
|
36
|
+
! store?.item( state?.activeId )?.element?.isConnected
|
|
37
|
+
);
|
|
38
|
+
} );
|
|
39
|
+
|
|
23
40
|
return (
|
|
24
41
|
<Ariakit.CompositeItem
|
|
25
|
-
store={
|
|
42
|
+
store={ store }
|
|
43
|
+
tabbable={ tabbable }
|
|
26
44
|
{ ...props }
|
|
27
45
|
ref={ ref }
|
|
28
46
|
/>
|
package/src/composite/row.tsx
CHANGED
|
@@ -20,11 +20,11 @@ export const CompositeRow = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeRowProps, 'div', false >
|
|
21
21
|
>( function CompositeRow( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeRow store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { queryByAttribute, render, screen } from '@testing-library/react';
|
|
5
|
+
import { click, press, waitFor } from '@ariakit/test';
|
|
6
|
+
import type { ComponentProps } from 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* WordPress dependencies
|
|
10
|
+
*/
|
|
11
|
+
import { useState } from '@wordpress/element';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { Composite } from '..';
|
|
17
|
+
|
|
18
|
+
// This is necessary because of how Ariakit calculates page up and
|
|
19
|
+
// page down. Without this, nothing has a height, and so paging up
|
|
20
|
+
// and down doesn't behave as expected in tests.
|
|
21
|
+
|
|
22
|
+
let clientHeightSpy: jest.SpiedGetter<
|
|
23
|
+
typeof HTMLElement.prototype.clientHeight
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
beforeAll( () => {
|
|
27
|
+
clientHeightSpy = jest
|
|
28
|
+
.spyOn( HTMLElement.prototype, 'clientHeight', 'get' )
|
|
29
|
+
.mockImplementation( function getClientHeight( this: HTMLElement ) {
|
|
30
|
+
if ( this.tagName === 'BODY' ) {
|
|
31
|
+
return window.outerHeight;
|
|
32
|
+
}
|
|
33
|
+
return 50;
|
|
34
|
+
} );
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
afterAll( () => {
|
|
38
|
+
clientHeightSpy?.mockRestore();
|
|
39
|
+
} );
|
|
40
|
+
|
|
41
|
+
async function renderAndValidate( ...args: Parameters< typeof render > ) {
|
|
42
|
+
const view = render( ...args );
|
|
43
|
+
await waitFor( () => {
|
|
44
|
+
const activeButton = queryByAttribute(
|
|
45
|
+
'data-active-item',
|
|
46
|
+
view.baseElement,
|
|
47
|
+
'true'
|
|
48
|
+
);
|
|
49
|
+
expect( activeButton ).not.toBeNull();
|
|
50
|
+
} );
|
|
51
|
+
return view;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function RemoveItemTest( props: ComponentProps< typeof Composite > ) {
|
|
55
|
+
const [ showThirdItem, setShowThirdItem ] = useState( true );
|
|
56
|
+
return (
|
|
57
|
+
<>
|
|
58
|
+
<button>Focus trap before composite</button>
|
|
59
|
+
<Composite { ...props }>
|
|
60
|
+
<Composite.Item>Item 1</Composite.Item>
|
|
61
|
+
<Composite.Item>Item 2</Composite.Item>
|
|
62
|
+
{ showThirdItem && <Composite.Item>Item 3</Composite.Item> }
|
|
63
|
+
</Composite>
|
|
64
|
+
<button onClick={ () => setShowThirdItem( ( value ) => ! value ) }>
|
|
65
|
+
Toggle third item
|
|
66
|
+
</button>
|
|
67
|
+
</>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
describe( 'Composite', () => {
|
|
72
|
+
it( 'should remain focusable even when there are no elements in the DOM associated with the currently active ID', async () => {
|
|
73
|
+
await renderAndValidate( <RemoveItemTest /> );
|
|
74
|
+
|
|
75
|
+
const toggleButton = screen.getByRole( 'button', {
|
|
76
|
+
name: 'Toggle third item',
|
|
77
|
+
} );
|
|
78
|
+
|
|
79
|
+
await press.Tab();
|
|
80
|
+
await press.Tab();
|
|
81
|
+
|
|
82
|
+
expect(
|
|
83
|
+
screen.getByRole( 'button', { name: 'Item 1' } )
|
|
84
|
+
).toHaveFocus();
|
|
85
|
+
|
|
86
|
+
await press.ArrowRight();
|
|
87
|
+
await press.ArrowRight();
|
|
88
|
+
|
|
89
|
+
expect(
|
|
90
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
91
|
+
).toHaveFocus();
|
|
92
|
+
|
|
93
|
+
await click( toggleButton );
|
|
94
|
+
|
|
95
|
+
expect(
|
|
96
|
+
screen.queryByRole( 'button', { name: 'Item 3' } )
|
|
97
|
+
).not.toBeInTheDocument();
|
|
98
|
+
|
|
99
|
+
await press.ShiftTab();
|
|
100
|
+
|
|
101
|
+
expect(
|
|
102
|
+
screen.getByRole( 'button', { name: 'Item 2' } )
|
|
103
|
+
).toHaveFocus();
|
|
104
|
+
|
|
105
|
+
await click( toggleButton );
|
|
106
|
+
|
|
107
|
+
expect(
|
|
108
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
109
|
+
).toBeVisible();
|
|
110
|
+
|
|
111
|
+
await press.ShiftTab();
|
|
112
|
+
|
|
113
|
+
expect(
|
|
114
|
+
screen.getByRole( 'button', { name: 'Item 2' } )
|
|
115
|
+
).toHaveFocus();
|
|
116
|
+
|
|
117
|
+
await press.ArrowRight();
|
|
118
|
+
|
|
119
|
+
expect(
|
|
120
|
+
screen.getByRole( 'button', { name: 'Item 3' } )
|
|
121
|
+
).toHaveFocus();
|
|
122
|
+
} );
|
|
123
|
+
} );
|
|
@@ -20,11 +20,11 @@ export const CompositeTypeahead = forwardRef<
|
|
|
20
20
|
WordPressComponentProps< CompositeTypeaheadProps, 'div', false >
|
|
21
21
|
>( function CompositeTypeahead( props, ref ) {
|
|
22
22
|
const context = useCompositeContext();
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error The store prop is undocumented and only used by the
|
|
25
|
+
// legacy compat layer. The `store` prop is documented, but its type is
|
|
26
|
+
// obfuscated to discourage its use outside of the component's internals.
|
|
27
|
+
const store = ( props.store ?? context.store ) as Ariakit.CompositeStore;
|
|
28
|
+
|
|
29
|
+
return <Ariakit.CompositeRow store={ store } { ...props } ref={ ref } />;
|
|
30
30
|
} );
|