@wordpress/components 25.12.0 → 25.14.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 +65 -0
- package/build/angle-picker-control/index.js +0 -1
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +4 -2
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/hook.js +3 -2
- package/build/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build/border-control/styles.js +17 -17
- package/build/border-control/styles.js.map +1 -1
- package/build/checkbox-control/index.js +1 -1
- package/build/checkbox-control/index.js.map +1 -1
- package/build/checkbox-control/types.js.map +1 -1
- package/build/custom-select-control-v2/index.js +87 -0
- package/build/custom-select-control-v2/index.js.map +1 -0
- package/build/custom-select-control-v2/styles.js +85 -0
- package/build/custom-select-control-v2/styles.js.map +1 -0
- package/build/custom-select-control-v2/types.js +6 -0
- package/build/custom-select-control-v2/types.js.map +1 -0
- package/build/date-time/time/timezone.js +11 -2
- package/build/date-time/time/timezone.js.map +1 -1
- package/build/dimension-control/index.js +2 -0
- package/build/dimension-control/index.js.map +1 -1
- package/build/dimension-control/types.js.map +1 -1
- package/build/dropdown-menu-v2-ariakit/index.js +49 -20
- package/build/dropdown-menu-v2-ariakit/index.js.map +1 -1
- package/build/dropdown-menu-v2-ariakit/styles.js +82 -59
- package/build/dropdown-menu-v2-ariakit/styles.js.map +1 -1
- package/build/dropdown-menu-v2-ariakit/types.js.map +1 -1
- package/build/focal-point-picker/controls.js +5 -1
- package/build/focal-point-picker/controls.js.map +1 -1
- package/build/focal-point-picker/index.js +2 -0
- package/build/focal-point-picker/index.js.map +1 -1
- package/build/focal-point-picker/styles/focal-point-picker-style.js +15 -15
- package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
- package/build/focal-point-picker/types.js.map +1 -1
- package/build/font-size-picker/font-size-picker-select.js +2 -0
- package/build/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build/font-size-picker/font-size-picker-toggle-group.js +2 -0
- package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
- package/build/font-size-picker/index.js +6 -1
- package/build/font-size-picker/index.js.map +1 -1
- package/build/font-size-picker/types.js.map +1 -1
- package/build/form-token-field/index.js +6 -2
- package/build/form-token-field/index.js.map +1 -1
- package/build/form-token-field/token-input.js.map +1 -1
- package/build/form-token-field/types.js.map +1 -1
- package/build/heading/hook.js +6 -3
- package/build/heading/hook.js.map +1 -1
- package/build/heading/types.js.map +1 -1
- package/build/index.native.js +0 -16
- package/build/index.native.js.map +1 -1
- package/build/mobile/global-styles-context/utils.native.js +13 -0
- package/build/mobile/global-styles-context/utils.native.js.map +1 -1
- package/build/mobile/utils/alignments.native.js +1 -1
- package/build/mobile/utils/alignments.native.js.map +1 -1
- package/build/palette-edit/index.js +21 -1
- package/build/palette-edit/index.js.map +1 -1
- package/build/private-apis.js +3 -2
- package/build/private-apis.js.map +1 -1
- package/build/query-controls/author-select.js +3 -1
- package/build/query-controls/author-select.js.map +1 -1
- package/build/query-controls/category-select.js +3 -1
- package/build/query-controls/category-select.js.map +1 -1
- package/build/query-controls/index.js +6 -1
- package/build/query-controls/index.js.map +1 -1
- package/build/query-controls/types.js.map +1 -1
- package/build/slot-fill/types.js.map +1 -1
- package/build/tabs/index.js +24 -5
- package/build/tabs/index.js.map +1 -1
- package/build/tabs/tab.js +4 -4
- package/build/tabs/tab.js.map +1 -1
- package/build/tabs/tabpanel.js +4 -3
- package/build/tabs/tabpanel.js.map +1 -1
- package/build/tabs/types.js.map +1 -1
- package/build/text/types.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/utils.js +17 -17
- package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -1
- package/build/tools-panel/tools-panel-item/hook.js +16 -12
- package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
- package/build-module/angle-picker-control/index.js +0 -1
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +4 -2
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/hook.js +3 -2
- package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build-module/border-control/styles.js +17 -17
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/checkbox-control/index.js +1 -1
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/checkbox-control/types.js.map +1 -1
- package/build-module/custom-select-control-v2/index.js +74 -0
- package/build-module/custom-select-control-v2/index.js.map +1 -0
- package/build-module/custom-select-control-v2/styles.js +71 -0
- package/build-module/custom-select-control-v2/styles.js.map +1 -0
- package/build-module/custom-select-control-v2/types.js +2 -0
- package/build-module/custom-select-control-v2/types.js.map +1 -0
- package/build-module/date-time/time/timezone.js +11 -2
- package/build-module/date-time/time/timezone.js.map +1 -1
- package/build-module/dimension-control/index.js +2 -0
- package/build-module/dimension-control/index.js.map +1 -1
- package/build-module/dimension-control/types.js.map +1 -1
- package/build-module/dropdown-menu-v2-ariakit/index.js +46 -18
- package/build-module/dropdown-menu-v2-ariakit/index.js.map +1 -1
- package/build-module/dropdown-menu-v2-ariakit/styles.js +69 -40
- package/build-module/dropdown-menu-v2-ariakit/styles.js.map +1 -1
- package/build-module/dropdown-menu-v2-ariakit/types.js.map +1 -1
- package/build-module/focal-point-picker/controls.js +5 -1
- package/build-module/focal-point-picker/controls.js.map +1 -1
- package/build-module/focal-point-picker/index.js +2 -0
- package/build-module/focal-point-picker/index.js.map +1 -1
- package/build-module/focal-point-picker/styles/focal-point-picker-style.js +15 -15
- package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
- package/build-module/focal-point-picker/types.js.map +1 -1
- package/build-module/font-size-picker/font-size-picker-select.js +2 -0
- package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build-module/font-size-picker/font-size-picker-toggle-group.js +2 -0
- package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
- package/build-module/font-size-picker/index.js +6 -1
- package/build-module/font-size-picker/index.js.map +1 -1
- package/build-module/font-size-picker/types.js.map +1 -1
- package/build-module/form-token-field/index.js +6 -2
- package/build-module/form-token-field/index.js.map +1 -1
- package/build-module/form-token-field/token-input.js.map +1 -1
- package/build-module/form-token-field/types.js.map +1 -1
- package/build-module/heading/hook.js +6 -3
- package/build-module/heading/hook.js.map +1 -1
- package/build-module/heading/types.js.map +1 -1
- package/build-module/index.native.js +0 -2
- package/build-module/index.native.js.map +1 -1
- package/build-module/mobile/global-styles-context/utils.native.js +13 -0
- package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
- package/build-module/mobile/utils/alignments.native.js +1 -1
- package/build-module/mobile/utils/alignments.native.js.map +1 -1
- package/build-module/palette-edit/index.js +20 -3
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/private-apis.js +4 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/query-controls/author-select.js +3 -1
- package/build-module/query-controls/author-select.js.map +1 -1
- package/build-module/query-controls/category-select.js +3 -1
- package/build-module/query-controls/category-select.js.map +1 -1
- package/build-module/query-controls/index.js +6 -1
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/query-controls/types.js.map +1 -1
- package/build-module/slot-fill/types.js.map +1 -1
- package/build-module/tabs/index.js +25 -6
- package/build-module/tabs/index.js.map +1 -1
- package/build-module/tabs/tab.js +6 -6
- package/build-module/tabs/tab.js.map +1 -1
- package/build-module/tabs/tabpanel.js +6 -5
- package/build-module/tabs/tabpanel.js.map +1 -1
- package/build-module/tabs/types.js.map +1 -1
- package/build-module/text/types.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/utils.js +17 -17
- package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -1
- package/build-module/tools-panel/tools-panel-item/hook.js +17 -13
- package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
- package/build-style/style-rtl.css +32 -6
- package/build-style/style.css +32 -6
- package/build-types/angle-picker-control/index.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/box-control/stories/index.story.d.ts +1944 -0
- package/build-types/box-control/stories/index.story.d.ts.map +1 -0
- package/build-types/checkbox-control/index.d.ts.map +1 -1
- package/build-types/checkbox-control/types.d.ts +3 -2
- package/build-types/checkbox-control/types.d.ts.map +1 -1
- package/build-types/color-palette/styles.d.ts +4 -1
- package/build-types/color-palette/styles.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/index.d.ts +6 -0
- package/build-types/custom-select-control-v2/index.d.ts.map +1 -0
- package/build-types/custom-select-control-v2/stories/index.story.d.ts +19 -0
- package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -0
- package/build-types/custom-select-control-v2/styles.d.ts +47 -0
- package/build-types/custom-select-control-v2/styles.d.ts.map +1 -0
- package/build-types/custom-select-control-v2/types.d.ts +57 -0
- package/build-types/custom-select-control-v2/types.d.ts.map +1 -0
- package/build-types/date-time/date/styles.d.ts +4 -1
- package/build-types/date-time/date/styles.d.ts.map +1 -1
- package/build-types/date-time/time/timezone.d.ts.map +1 -1
- package/build-types/dimension-control/index.d.ts.map +1 -1
- package/build-types/dimension-control/types.d.ts +6 -0
- package/build-types/dimension-control/types.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2-ariakit/index.d.ts +11 -2
- package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +26 -18
- package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +1 -1
- package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -6
- package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +1 -1
- package/build-types/focal-point-picker/controls.d.ts +1 -1
- package/build-types/focal-point-picker/controls.d.ts.map +1 -1
- package/build-types/focal-point-picker/index.d.ts +1 -1
- package/build-types/focal-point-picker/index.d.ts.map +1 -1
- package/build-types/focal-point-picker/stories/index.story.d.ts +8 -4
- package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/focal-point-picker/types.d.ts +7 -0
- package/build-types/focal-point-picker/types.d.ts.map +1 -1
- package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
- package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
- package/build-types/font-size-picker/index.d.ts.map +1 -1
- package/build-types/font-size-picker/types.d.ts +8 -1
- package/build-types/font-size-picker/types.d.ts.map +1 -1
- package/build-types/form-token-field/index.d.ts.map +1 -1
- package/build-types/form-token-field/token-input.d.ts.map +1 -1
- package/build-types/form-token-field/types.d.ts +1 -1
- package/build-types/form-token-field/types.d.ts.map +1 -1
- package/build-types/heading/component.d.ts +4 -1
- package/build-types/heading/component.d.ts.map +1 -1
- package/build-types/heading/hook.d.ts.map +1 -1
- package/build-types/heading/types.d.ts +20 -1
- package/build-types/heading/types.d.ts.map +1 -1
- package/build-types/navigation/styles/navigation-styles.d.ts +4 -1
- package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
- package/build-types/palette-edit/index.d.ts +6 -1
- package/build-types/palette-edit/index.d.ts.map +1 -1
- package/build-types/palette-edit/styles.d.ts +4 -1
- package/build-types/palette-edit/styles.d.ts.map +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/query-controls/author-select.d.ts +1 -1
- package/build-types/query-controls/author-select.d.ts.map +1 -1
- package/build-types/query-controls/category-select.d.ts +1 -1
- package/build-types/query-controls/category-select.d.ts.map +1 -1
- package/build-types/query-controls/index.d.ts +1 -1
- package/build-types/query-controls/index.d.ts.map +1 -1
- package/build-types/query-controls/types.d.ts +9 -0
- package/build-types/query-controls/types.d.ts.map +1 -1
- package/build-types/slot-fill/bubbles-virtually/slot.d.ts +1 -1
- package/build-types/slot-fill/types.d.ts +16 -6
- package/build-types/slot-fill/types.d.ts.map +1 -1
- package/build-types/tabs/index.d.ts +3 -2
- package/build-types/tabs/index.d.ts.map +1 -1
- package/build-types/tabs/stories/index.story.d.ts.map +1 -1
- package/build-types/tabs/tab.d.ts +2 -1
- package/build-types/tabs/tab.d.ts.map +1 -1
- package/build-types/tabs/tabpanel.d.ts +2 -1
- package/build-types/tabs/tabpanel.d.ts.map +1 -1
- package/build-types/tabs/types.d.ts +8 -3
- package/build-types/tabs/types.d.ts.map +1 -1
- package/build-types/text/types.d.ts +15 -2
- package/build-types/text/types.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/angle-picker-control/index.tsx +0 -1
- package/src/border-control/border-control-dropdown/component.tsx +3 -1
- package/src/border-control/border-control-dropdown/hook.ts +3 -2
- package/src/border-control/styles.ts +2 -9
- package/src/box-control/stories/index.story.tsx +82 -0
- package/src/button/style.scss +10 -2
- package/src/checkbox-control/README.md +2 -1
- package/src/checkbox-control/index.tsx +8 -6
- package/src/checkbox-control/test/__snapshots__/index.tsx.snap +3 -8
- package/src/checkbox-control/test/index.tsx +7 -0
- package/src/checkbox-control/types.ts +3 -2
- package/src/combobox-control/README.md +1 -3
- package/src/custom-select-control/test/index.js +367 -35
- package/src/custom-select-control-v2/README.md +73 -0
- package/src/custom-select-control-v2/index.tsx +99 -0
- package/src/custom-select-control-v2/stories/index.story.tsx +149 -0
- package/src/custom-select-control-v2/styles.ts +76 -0
- package/src/custom-select-control-v2/types.ts +63 -0
- package/src/date-time/time/timezone.tsx +15 -3
- package/src/dimension-control/index.tsx +2 -0
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +2 -2
- package/src/dimension-control/types.ts +6 -0
- package/src/dropdown-menu-v2-ariakit/README.md +19 -5
- package/src/dropdown-menu-v2-ariakit/index.tsx +85 -36
- package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +204 -90
- package/src/dropdown-menu-v2-ariakit/styles.ts +165 -117
- package/src/dropdown-menu-v2-ariakit/test/index.tsx +5 -10
- package/src/dropdown-menu-v2-ariakit/types.ts +0 -7
- package/src/focal-point-picker/controls.tsx +4 -0
- package/src/focal-point-picker/index.tsx +2 -0
- package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
- package/src/focal-point-picker/types.ts +7 -0
- package/src/font-size-picker/font-size-picker-select.tsx +2 -0
- package/src/font-size-picker/font-size-picker-toggle-group.tsx +9 -1
- package/src/font-size-picker/index.tsx +11 -3
- package/src/font-size-picker/types.ts +8 -1
- package/src/form-toggle/style.scss +40 -8
- package/src/form-token-field/index.tsx +11 -3
- package/src/form-token-field/token-input.tsx +1 -3
- package/src/form-token-field/types.ts +1 -0
- package/src/heading/README.md +6 -1
- package/src/heading/hook.ts +6 -3
- package/src/heading/types.ts +23 -1
- package/src/index.native.js +0 -2
- package/src/mobile/global-styles-context/test/utils.native.js +22 -0
- package/src/mobile/global-styles-context/utils.native.js +14 -0
- package/src/mobile/link-settings/style.native.scss +0 -17
- package/src/mobile/utils/alignments.native.js +1 -0
- package/src/navigable-container/README.md +1 -1
- package/src/palette-edit/index.tsx +22 -8
- package/src/palette-edit/style.scss +2 -2
- package/src/palette-edit/test/index.tsx +75 -1
- package/src/private-apis.ts +4 -2
- package/src/query-controls/author-select.tsx +2 -0
- package/src/query-controls/category-select.tsx +2 -0
- package/src/query-controls/index.tsx +6 -1
- package/src/query-controls/types.ts +9 -0
- package/src/search-control/README.md +2 -0
- package/src/slot-fill/README.md +1 -1
- package/src/slot-fill/types.ts +18 -6
- package/src/spinner/README.md +2 -0
- package/src/tabs/README.md +4 -4
- package/src/tabs/index.tsx +34 -3
- package/src/tabs/stories/index.story.tsx +56 -48
- package/src/tabs/tab.tsx +7 -7
- package/src/tabs/tabpanel.tsx +10 -6
- package/src/tabs/test/index.tsx +180 -87
- package/src/tabs/types.ts +8 -3
- package/src/text/README.md +5 -1
- package/src/text/types.ts +15 -2
- package/src/toggle-control/README.md +2 -2
- package/src/toggle-group-control/test/index.tsx +54 -1
- package/src/toggle-group-control/toggle-group-control/utils.ts +15 -20
- package/src/tools-panel/tools-panel-item/hook.ts +21 -23
- package/tsconfig.tsbuildinfo +1 -1
- package/build/mobile/inserter-button/index.native.js +0 -98
- package/build/mobile/inserter-button/index.native.js.map +0 -1
- package/build/mobile/inserter-button/sparkles.js +0 -23
- package/build/mobile/inserter-button/sparkles.js.map +0 -1
- package/build/mobile/link-settings/image-link-destinations-screen.native.js +0 -119
- package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
- package/build-module/mobile/inserter-button/index.native.js +0 -89
- package/build-module/mobile/inserter-button/index.native.js.map +0 -1
- package/build-module/mobile/inserter-button/sparkles.js +0 -15
- package/build-module/mobile/inserter-button/sparkles.js.map +0 -1
- package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +0 -110
- package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
- package/build-types/mobile/inserter-button/sparkles.d.ts +0 -3
- package/build-types/mobile/inserter-button/sparkles.d.ts.map +0 -1
- package/src/box-control/stories/index.story.js +0 -75
- package/src/mobile/inserter-button/README.md +0 -62
- package/src/mobile/inserter-button/index.native.js +0 -116
- package/src/mobile/inserter-button/sparkles.js +0 -15
- package/src/mobile/inserter-button/style.native.scss +0 -72
- package/src/mobile/link-settings/image-link-destinations-screen.native.js +0 -152
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { Meta, StoryFn } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { useState } from '@wordpress/element';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import { CustomSelect, CustomSelectItem } from '..';
|
|
15
|
+
|
|
16
|
+
const meta: Meta< typeof CustomSelect > = {
|
|
17
|
+
title: 'Components (Experimental)/CustomSelectControl v2',
|
|
18
|
+
component: CustomSelect,
|
|
19
|
+
subcomponents: {
|
|
20
|
+
// @ts-expect-error - See https://github.com/storybookjs/storybook/issues/23170
|
|
21
|
+
CustomSelectItem,
|
|
22
|
+
},
|
|
23
|
+
argTypes: {
|
|
24
|
+
children: { control: { type: null } },
|
|
25
|
+
renderSelectedValue: { control: { type: null } },
|
|
26
|
+
value: { control: { type: null } },
|
|
27
|
+
},
|
|
28
|
+
parameters: {
|
|
29
|
+
actions: { argTypesRegex: '^on.*' },
|
|
30
|
+
controls: { expanded: true },
|
|
31
|
+
docs: {
|
|
32
|
+
canvas: { sourceState: 'shown' },
|
|
33
|
+
source: { excludeDecorators: true },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
decorators: [
|
|
37
|
+
( Story ) => (
|
|
38
|
+
<div
|
|
39
|
+
style={ {
|
|
40
|
+
minHeight: '150px',
|
|
41
|
+
} }
|
|
42
|
+
>
|
|
43
|
+
<Story />
|
|
44
|
+
</div>
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
export default meta;
|
|
49
|
+
|
|
50
|
+
const Template: StoryFn< typeof CustomSelect > = ( props ) => {
|
|
51
|
+
return <CustomSelect { ...props } />;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const ControlledTemplate: StoryFn< typeof CustomSelect > = ( props ) => {
|
|
55
|
+
const [ value, setValue ] = useState< string | string[] >();
|
|
56
|
+
return (
|
|
57
|
+
<CustomSelect
|
|
58
|
+
{ ...props }
|
|
59
|
+
onChange={ ( nextValue ) => {
|
|
60
|
+
setValue( nextValue );
|
|
61
|
+
props.onChange?.( nextValue );
|
|
62
|
+
} }
|
|
63
|
+
value={ value }
|
|
64
|
+
/>
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const Default = Template.bind( {} );
|
|
69
|
+
Default.args = {
|
|
70
|
+
label: 'Label',
|
|
71
|
+
children: (
|
|
72
|
+
<>
|
|
73
|
+
<CustomSelectItem value="Small">
|
|
74
|
+
<span style={ { fontSize: '75%' } }>Small</span>
|
|
75
|
+
</CustomSelectItem>
|
|
76
|
+
<CustomSelectItem value="Something bigger">
|
|
77
|
+
<span style={ { fontSize: '200%' } }>Something bigger</span>
|
|
78
|
+
</CustomSelectItem>
|
|
79
|
+
</>
|
|
80
|
+
),
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Multiple selection can be enabled by using an array for the `value` and
|
|
85
|
+
* `defaultValue` props. The argument of the `onChange` function will also
|
|
86
|
+
* change accordingly.
|
|
87
|
+
*/
|
|
88
|
+
export const MultiSelect = Template.bind( {} );
|
|
89
|
+
MultiSelect.args = {
|
|
90
|
+
defaultValue: [ 'lavender', 'tangerine' ],
|
|
91
|
+
label: 'Select Colors',
|
|
92
|
+
renderSelectedValue: ( currentValue: string | string[] ) => {
|
|
93
|
+
if ( ! Array.isArray( currentValue ) ) {
|
|
94
|
+
return currentValue;
|
|
95
|
+
}
|
|
96
|
+
if ( currentValue.length === 0 ) return 'No colors selected';
|
|
97
|
+
if ( currentValue.length === 1 ) return currentValue[ 0 ];
|
|
98
|
+
return `${ currentValue.length } colors selected`;
|
|
99
|
+
},
|
|
100
|
+
children: (
|
|
101
|
+
<>
|
|
102
|
+
{ [
|
|
103
|
+
'amber',
|
|
104
|
+
'aquamarine',
|
|
105
|
+
'flamingo pink',
|
|
106
|
+
'lavender',
|
|
107
|
+
'maroon',
|
|
108
|
+
'tangerine',
|
|
109
|
+
].map( ( item ) => (
|
|
110
|
+
<CustomSelectItem key={ item } value={ item }>
|
|
111
|
+
{ item }
|
|
112
|
+
</CustomSelectItem>
|
|
113
|
+
) ) }
|
|
114
|
+
</>
|
|
115
|
+
),
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const renderControlledValue = ( gravatar: string | string[] ) => {
|
|
119
|
+
const avatar = `https://gravatar.com/avatar?d=${ gravatar }`;
|
|
120
|
+
return (
|
|
121
|
+
<div style={ { display: 'flex', alignItems: 'center' } }>
|
|
122
|
+
<img
|
|
123
|
+
style={ { maxHeight: '75px', marginRight: '10px' } }
|
|
124
|
+
key={ avatar }
|
|
125
|
+
src={ avatar }
|
|
126
|
+
alt=""
|
|
127
|
+
aria-hidden="true"
|
|
128
|
+
/>
|
|
129
|
+
<span>{ gravatar }</span>
|
|
130
|
+
</div>
|
|
131
|
+
);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export const Controlled = ControlledTemplate.bind( {} );
|
|
135
|
+
Controlled.args = {
|
|
136
|
+
label: 'Default Gravatars',
|
|
137
|
+
renderSelectedValue: renderControlledValue,
|
|
138
|
+
children: (
|
|
139
|
+
<>
|
|
140
|
+
{ [ 'mystery-person', 'identicon', 'wavatar', 'retro' ].map(
|
|
141
|
+
( option ) => (
|
|
142
|
+
<CustomSelectItem key={ option } value={ option }>
|
|
143
|
+
{ renderControlledValue( option ) }
|
|
144
|
+
</CustomSelectItem>
|
|
145
|
+
)
|
|
146
|
+
) }
|
|
147
|
+
</>
|
|
148
|
+
),
|
|
149
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import styled from '@emotion/styled';
|
|
5
|
+
// eslint-disable-next-line no-restricted-imports
|
|
6
|
+
import * as Ariakit from '@ariakit/react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import { COLORS } from '../utils';
|
|
12
|
+
import { space } from '../utils/space';
|
|
13
|
+
import type { CustomSelectProps } from './types';
|
|
14
|
+
|
|
15
|
+
export const CustomSelectLabel = styled( Ariakit.SelectLabel )`
|
|
16
|
+
font-size: 11px;
|
|
17
|
+
font-weight: 500;
|
|
18
|
+
line-height: 1.4;
|
|
19
|
+
text-transform: uppercase;
|
|
20
|
+
margin-bottom: ${ space( 2 ) };
|
|
21
|
+
`;
|
|
22
|
+
|
|
23
|
+
const inputHeights = {
|
|
24
|
+
default: 40,
|
|
25
|
+
small: 24,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const CustomSelectButton = styled( Ariakit.Select, {
|
|
29
|
+
// Do not forward `hasCustomRenderProp` to the underlying Ariakit.Select component
|
|
30
|
+
shouldForwardProp: ( prop ) => prop !== 'hasCustomRenderProp',
|
|
31
|
+
} )( ( {
|
|
32
|
+
size,
|
|
33
|
+
hasCustomRenderProp,
|
|
34
|
+
}: {
|
|
35
|
+
size: NonNullable< CustomSelectProps[ 'size' ] >;
|
|
36
|
+
hasCustomRenderProp: boolean;
|
|
37
|
+
} ) => {
|
|
38
|
+
const isSmallSize = size === 'small' && ! hasCustomRenderProp;
|
|
39
|
+
const heightProperty = hasCustomRenderProp ? 'minHeight' : 'height';
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
display: 'flex',
|
|
43
|
+
justifyContent: 'space-between',
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
backgroundColor: COLORS.white,
|
|
46
|
+
border: `1px solid ${ COLORS.gray[ 600 ] }`,
|
|
47
|
+
borderRadius: space( 0.5 ),
|
|
48
|
+
cursor: 'pointer',
|
|
49
|
+
width: '100%',
|
|
50
|
+
[ heightProperty ]: `${ inputHeights[ size ] }px`,
|
|
51
|
+
padding: isSmallSize ? space( 2 ) : space( 4 ),
|
|
52
|
+
fontSize: isSmallSize ? '11px' : '13px',
|
|
53
|
+
'&[data-focus-visible]': {
|
|
54
|
+
outlineStyle: 'solid',
|
|
55
|
+
},
|
|
56
|
+
'&[aria-expanded="true"]': {
|
|
57
|
+
outlineStyle: `1.5px solid ${ COLORS.theme.accent }`,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
} );
|
|
61
|
+
|
|
62
|
+
export const CustomSelectPopover = styled( Ariakit.SelectPopover )`
|
|
63
|
+
border-radius: ${ space( 0.5 ) };
|
|
64
|
+
background: ${ COLORS.white };
|
|
65
|
+
border: 1px solid ${ COLORS.gray[ 900 ] };
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
export const CustomSelectItem = styled( Ariakit.SelectItem )`
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
justify-content: space-between;
|
|
72
|
+
padding: ${ space( 2 ) };
|
|
73
|
+
&[data-active-item] {
|
|
74
|
+
background-color: ${ COLORS.gray[ 300 ] };
|
|
75
|
+
}
|
|
76
|
+
`;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
// eslint-disable-next-line no-restricted-imports
|
|
5
|
+
import type * as Ariakit from '@ariakit/react';
|
|
6
|
+
|
|
7
|
+
export type CustomSelectContext =
|
|
8
|
+
| {
|
|
9
|
+
/**
|
|
10
|
+
* The store object returned by Ariakit's `useSelectStore` hook.
|
|
11
|
+
*/
|
|
12
|
+
store: Ariakit.SelectStore;
|
|
13
|
+
}
|
|
14
|
+
| undefined;
|
|
15
|
+
|
|
16
|
+
export type CustomSelectProps = {
|
|
17
|
+
/**
|
|
18
|
+
* The child elements. This should be composed of CustomSelectItem components.
|
|
19
|
+
*/
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* An optional default value for the control. If left `undefined`, the first
|
|
23
|
+
* non-disabled item will be used.
|
|
24
|
+
*/
|
|
25
|
+
defaultValue?: string | string[];
|
|
26
|
+
/**
|
|
27
|
+
* Label for the control.
|
|
28
|
+
*/
|
|
29
|
+
label: string;
|
|
30
|
+
/**
|
|
31
|
+
* A function that receives the new value of the input.
|
|
32
|
+
*/
|
|
33
|
+
onChange?: ( newValue: string | string[] ) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Can be used to render select UI with custom styled values.
|
|
36
|
+
*/
|
|
37
|
+
renderSelectedValue?: (
|
|
38
|
+
selectedValue: string | string[]
|
|
39
|
+
) => React.ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* The size of the control.
|
|
42
|
+
*
|
|
43
|
+
* @default 'default'
|
|
44
|
+
*/
|
|
45
|
+
size?: 'default' | 'small';
|
|
46
|
+
/**
|
|
47
|
+
* Can be used to externally control the value of the control.
|
|
48
|
+
*/
|
|
49
|
+
value?: string | string[];
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type CustomSelectItemProps = {
|
|
53
|
+
/**
|
|
54
|
+
* The value of the select item. This will be used as the children if
|
|
55
|
+
* children are left `undefined`.
|
|
56
|
+
*/
|
|
57
|
+
value: string;
|
|
58
|
+
/**
|
|
59
|
+
* The children to display for each select item. The `value` will be
|
|
60
|
+
* used if left `undefined`.
|
|
61
|
+
*/
|
|
62
|
+
children?: React.ReactNode;
|
|
63
|
+
};
|
|
@@ -32,12 +32,24 @@ const TimeZone = () => {
|
|
|
32
32
|
? timezone.abbr
|
|
33
33
|
: `UTC${ offsetSymbol }${ timezone.offset }`;
|
|
34
34
|
|
|
35
|
+
// Replace underscore with space in strings like `America/Costa_Rica`.
|
|
36
|
+
const prettyTimezoneString = timezone.string.replace( '_', ' ' );
|
|
37
|
+
|
|
35
38
|
const timezoneDetail =
|
|
36
39
|
'UTC' === timezone.string
|
|
37
40
|
? __( 'Coordinated Universal Time' )
|
|
38
|
-
: `(${ zoneAbbr }) ${
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
: `(${ zoneAbbr }) ${ prettyTimezoneString }`;
|
|
42
|
+
|
|
43
|
+
// When the prettyTimezoneString is empty, there is no additional timezone
|
|
44
|
+
// detail information to show in a Tooltip.
|
|
45
|
+
const hasNoAdditionalTimezoneDetail =
|
|
46
|
+
prettyTimezoneString.trim().length === 0;
|
|
47
|
+
|
|
48
|
+
return hasNoAdditionalTimezoneDetail ? (
|
|
49
|
+
<StyledComponent className="components-datetime__timezone">
|
|
50
|
+
{ zoneAbbr }
|
|
51
|
+
</StyledComponent>
|
|
52
|
+
) : (
|
|
41
53
|
<Tooltip placement="top" text={ timezoneDetail }>
|
|
42
54
|
<StyledComponent className="components-datetime__timezone">
|
|
43
55
|
{ zoneAbbr }
|
|
@@ -42,6 +42,7 @@ import type { SelectControlSingleSelectionProps } from '../select-control/types'
|
|
|
42
42
|
*/
|
|
43
43
|
export function DimensionControl( props: DimensionControlProps ) {
|
|
44
44
|
const {
|
|
45
|
+
__next40pxDefaultSize = false,
|
|
45
46
|
label,
|
|
46
47
|
value,
|
|
47
48
|
sizes = sizesTable,
|
|
@@ -85,6 +86,7 @@ export function DimensionControl( props: DimensionControlProps ) {
|
|
|
85
86
|
|
|
86
87
|
return (
|
|
87
88
|
<SelectControl
|
|
89
|
+
__next40pxDefaultSize={ __next40pxDefaultSize }
|
|
88
90
|
className={ classnames(
|
|
89
91
|
className,
|
|
90
92
|
'block-editor-dimension-control'
|
|
@@ -764,7 +764,7 @@ exports[`DimensionControl rendering renders with icon and custom icon label 1`]
|
|
|
764
764
|
xmlns="http://www.w3.org/2000/svg"
|
|
765
765
|
>
|
|
766
766
|
<path
|
|
767
|
-
d="
|
|
767
|
+
d="M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"
|
|
768
768
|
/>
|
|
769
769
|
</svg>
|
|
770
770
|
Margin
|
|
@@ -1057,7 +1057,7 @@ exports[`DimensionControl rendering renders with icon and default icon label 1`]
|
|
|
1057
1057
|
xmlns="http://www.w3.org/2000/svg"
|
|
1058
1058
|
>
|
|
1059
1059
|
<path
|
|
1060
|
-
d="
|
|
1060
|
+
d="M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"
|
|
1061
1061
|
/>
|
|
1062
1062
|
</svg>
|
|
1063
1063
|
Margin
|
|
@@ -45,4 +45,10 @@ export type DimensionControlProps = {
|
|
|
45
45
|
* @default ''
|
|
46
46
|
*/
|
|
47
47
|
className?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Start opting into the larger default height that will become the default size in a future version.
|
|
50
|
+
*
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
53
|
+
__next40pxDefaultSize?: boolean;
|
|
48
54
|
};
|
|
@@ -284,9 +284,9 @@ Event handler called when the checked radio menu item changes.
|
|
|
284
284
|
|
|
285
285
|
- Required: no
|
|
286
286
|
|
|
287
|
-
### `
|
|
287
|
+
### `DropdownMenuItemLabel`
|
|
288
288
|
|
|
289
|
-
Used to
|
|
289
|
+
Used to render the menu item's label.
|
|
290
290
|
|
|
291
291
|
#### Props
|
|
292
292
|
|
|
@@ -294,13 +294,27 @@ The component accepts the following props:
|
|
|
294
294
|
|
|
295
295
|
##### `children`: `React.ReactNode`
|
|
296
296
|
|
|
297
|
-
The contents
|
|
297
|
+
The label contents.
|
|
298
|
+
|
|
299
|
+
- Required: yes
|
|
300
|
+
|
|
301
|
+
### `DropdownMenuItemHelpText`
|
|
302
|
+
|
|
303
|
+
Used to render the menu item's help text.
|
|
304
|
+
|
|
305
|
+
#### Props
|
|
306
|
+
|
|
307
|
+
The component accepts the following props:
|
|
308
|
+
|
|
309
|
+
##### `children`: `React.ReactNode`
|
|
310
|
+
|
|
311
|
+
The help text contents.
|
|
298
312
|
|
|
299
313
|
- Required: yes
|
|
300
314
|
|
|
301
|
-
### `
|
|
315
|
+
### `DropdownMenuGroup`
|
|
302
316
|
|
|
303
|
-
Used to
|
|
317
|
+
Used to group menu items.
|
|
304
318
|
|
|
305
319
|
#### Props
|
|
306
320
|
|
|
@@ -30,7 +30,6 @@ import type {
|
|
|
30
30
|
DropdownMenuContext as DropdownMenuContextType,
|
|
31
31
|
DropdownMenuProps,
|
|
32
32
|
DropdownMenuGroupProps,
|
|
33
|
-
DropdownMenuGroupLabelProps,
|
|
34
33
|
DropdownMenuItemProps,
|
|
35
34
|
DropdownMenuCheckboxItemProps,
|
|
36
35
|
DropdownMenuRadioItemProps,
|
|
@@ -55,16 +54,23 @@ export const DropdownMenuItem = forwardRef<
|
|
|
55
54
|
<Styled.DropdownMenuItem
|
|
56
55
|
ref={ ref }
|
|
57
56
|
{ ...props }
|
|
57
|
+
accessibleWhenDisabled
|
|
58
58
|
hideOnClick={ hideOnClick }
|
|
59
59
|
store={ dropdownMenuContext?.store }
|
|
60
60
|
>
|
|
61
|
-
{ prefix
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
<Styled.ItemPrefixWrapper>{ prefix }</Styled.ItemPrefixWrapper>
|
|
62
|
+
|
|
63
|
+
<Styled.DropdownMenuItemContentWrapper>
|
|
64
|
+
<Styled.DropdownMenuItemChildrenWrapper>
|
|
65
|
+
{ children }
|
|
66
|
+
</Styled.DropdownMenuItemChildrenWrapper>
|
|
67
|
+
|
|
68
|
+
{ suffix && (
|
|
69
|
+
<Styled.ItemSuffixWrapper>
|
|
70
|
+
{ suffix }
|
|
71
|
+
</Styled.ItemSuffixWrapper>
|
|
72
|
+
) }
|
|
73
|
+
</Styled.DropdownMenuItemContentWrapper>
|
|
68
74
|
</Styled.DropdownMenuItem>
|
|
69
75
|
);
|
|
70
76
|
} );
|
|
@@ -82,20 +88,30 @@ export const DropdownMenuCheckboxItem = forwardRef<
|
|
|
82
88
|
<Styled.DropdownMenuCheckboxItem
|
|
83
89
|
ref={ ref }
|
|
84
90
|
{ ...props }
|
|
91
|
+
accessibleWhenDisabled
|
|
85
92
|
hideOnClick={ hideOnClick }
|
|
86
93
|
store={ dropdownMenuContext?.store }
|
|
87
94
|
>
|
|
88
95
|
<Ariakit.MenuItemCheck
|
|
89
96
|
store={ dropdownMenuContext?.store }
|
|
90
97
|
render={ <Styled.ItemPrefixWrapper /> }
|
|
98
|
+
// Override some ariakit inline styles
|
|
99
|
+
style={ { width: 'auto', height: 'auto' } }
|
|
91
100
|
>
|
|
92
101
|
<Icon icon={ check } size={ 24 } />
|
|
93
102
|
</Ariakit.MenuItemCheck>
|
|
94
103
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
<Styled.DropdownMenuItemContentWrapper>
|
|
105
|
+
<Styled.DropdownMenuItemChildrenWrapper>
|
|
106
|
+
{ children }
|
|
107
|
+
</Styled.DropdownMenuItemChildrenWrapper>
|
|
108
|
+
|
|
109
|
+
{ suffix && (
|
|
110
|
+
<Styled.ItemSuffixWrapper>
|
|
111
|
+
{ suffix }
|
|
112
|
+
</Styled.ItemSuffixWrapper>
|
|
113
|
+
) }
|
|
114
|
+
</Styled.DropdownMenuItemContentWrapper>
|
|
99
115
|
</Styled.DropdownMenuCheckboxItem>
|
|
100
116
|
);
|
|
101
117
|
} );
|
|
@@ -119,17 +135,30 @@ export const DropdownMenuRadioItem = forwardRef<
|
|
|
119
135
|
<Styled.DropdownMenuRadioItem
|
|
120
136
|
ref={ ref }
|
|
121
137
|
{ ...props }
|
|
138
|
+
accessibleWhenDisabled
|
|
122
139
|
hideOnClick={ hideOnClick }
|
|
123
140
|
store={ dropdownMenuContext?.store }
|
|
124
141
|
>
|
|
125
142
|
<Ariakit.MenuItemCheck
|
|
126
143
|
store={ dropdownMenuContext?.store }
|
|
127
144
|
render={ <Styled.ItemPrefixWrapper /> }
|
|
145
|
+
// Override some ariakit inline styles
|
|
146
|
+
style={ { width: 'auto', height: 'auto' } }
|
|
128
147
|
>
|
|
129
148
|
<Icon icon={ radioCheck } size={ 24 } />
|
|
130
149
|
</Ariakit.MenuItemCheck>
|
|
131
|
-
|
|
132
|
-
|
|
150
|
+
|
|
151
|
+
<Styled.DropdownMenuItemContentWrapper>
|
|
152
|
+
<Styled.DropdownMenuItemChildrenWrapper>
|
|
153
|
+
{ children }
|
|
154
|
+
</Styled.DropdownMenuItemChildrenWrapper>
|
|
155
|
+
|
|
156
|
+
{ suffix && (
|
|
157
|
+
<Styled.ItemSuffixWrapper>
|
|
158
|
+
{ suffix }
|
|
159
|
+
</Styled.ItemSuffixWrapper>
|
|
160
|
+
) }
|
|
161
|
+
</Styled.DropdownMenuItemContentWrapper>
|
|
133
162
|
</Styled.DropdownMenuRadioItem>
|
|
134
163
|
);
|
|
135
164
|
} );
|
|
@@ -148,20 +177,6 @@ export const DropdownMenuGroup = forwardRef<
|
|
|
148
177
|
);
|
|
149
178
|
} );
|
|
150
179
|
|
|
151
|
-
export const DropdownMenuGroupLabel = forwardRef<
|
|
152
|
-
HTMLDivElement,
|
|
153
|
-
WordPressComponentProps< DropdownMenuGroupLabelProps, 'div', false >
|
|
154
|
-
>( function DropdownMenuGroupLabel( props, ref ) {
|
|
155
|
-
const dropdownMenuContext = useContext( DropdownMenuContext );
|
|
156
|
-
return (
|
|
157
|
-
<Styled.DropdownMenuGroupLabel
|
|
158
|
-
ref={ ref }
|
|
159
|
-
{ ...props }
|
|
160
|
-
store={ dropdownMenuContext?.store }
|
|
161
|
-
/>
|
|
162
|
-
);
|
|
163
|
-
} );
|
|
164
|
-
|
|
165
180
|
const UnconnectedDropdownMenu = (
|
|
166
181
|
props: WordPressComponentProps< DropdownMenuProps, 'div', false >,
|
|
167
182
|
ref: React.ForwardedRef< HTMLDivElement >
|
|
@@ -280,12 +295,16 @@ const UnconnectedDropdownMenu = (
|
|
|
280
295
|
dropdownMenuStore.parent
|
|
281
296
|
? cloneElement( trigger, {
|
|
282
297
|
// Add submenu arrow, unless a `suffix` is explicitly specified
|
|
283
|
-
suffix:
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
298
|
+
suffix: (
|
|
299
|
+
<>
|
|
300
|
+
{ trigger.props.suffix }
|
|
301
|
+
<Styled.SubmenuChevronIcon
|
|
302
|
+
aria-hidden="true"
|
|
303
|
+
icon={ chevronRightSmall }
|
|
304
|
+
size={ 24 }
|
|
305
|
+
preserveAspectRatio="xMidYMid slice"
|
|
306
|
+
/>
|
|
307
|
+
</>
|
|
289
308
|
),
|
|
290
309
|
} )
|
|
291
310
|
: trigger
|
|
@@ -297,8 +316,12 @@ const UnconnectedDropdownMenu = (
|
|
|
297
316
|
{ ...otherProps }
|
|
298
317
|
modal={ modal }
|
|
299
318
|
store={ dropdownMenuStore }
|
|
300
|
-
|
|
301
|
-
|
|
319
|
+
// Root menu has an 8px distance from its trigger,
|
|
320
|
+
// otherwise 0 (which causes the submenu to slightly overlap)
|
|
321
|
+
gutter={ gutter ?? ( dropdownMenuStore.parent ? 0 : 8 ) }
|
|
322
|
+
// Align nested menu by the same (but opposite) amount
|
|
323
|
+
// as the menu container's padding.
|
|
324
|
+
shift={ shift ?? ( dropdownMenuStore.parent ? -4 : 0 ) }
|
|
302
325
|
hideOnHoverOutside={ false }
|
|
303
326
|
data-side={ appliedPlacementSide }
|
|
304
327
|
variant={ variant }
|
|
@@ -332,3 +355,29 @@ export const DropdownMenuSeparator = forwardRef<
|
|
|
332
355
|
/>
|
|
333
356
|
);
|
|
334
357
|
} );
|
|
358
|
+
|
|
359
|
+
export const DropdownMenuItemLabel = forwardRef<
|
|
360
|
+
HTMLSpanElement,
|
|
361
|
+
WordPressComponentProps< { children: React.ReactNode }, 'span', true >
|
|
362
|
+
>( function DropdownMenuItemLabel( props, ref ) {
|
|
363
|
+
return (
|
|
364
|
+
<Styled.DropdownMenuItemLabel
|
|
365
|
+
numberOfLines={ 1 }
|
|
366
|
+
ref={ ref }
|
|
367
|
+
{ ...props }
|
|
368
|
+
/>
|
|
369
|
+
);
|
|
370
|
+
} );
|
|
371
|
+
|
|
372
|
+
export const DropdownMenuItemHelpText = forwardRef<
|
|
373
|
+
HTMLSpanElement,
|
|
374
|
+
WordPressComponentProps< { children: React.ReactNode }, 'span', true >
|
|
375
|
+
>( function DropdownMenuItemHelpText( props, ref ) {
|
|
376
|
+
return (
|
|
377
|
+
<Styled.DropdownMenuItemHelpText
|
|
378
|
+
numberOfLines={ 2 }
|
|
379
|
+
ref={ ref }
|
|
380
|
+
{ ...props }
|
|
381
|
+
/>
|
|
382
|
+
);
|
|
383
|
+
} );
|