@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
package/src/tabs/types.ts
CHANGED
|
@@ -78,8 +78,10 @@ export type TabListProps = {
|
|
|
78
78
|
export type TabProps = {
|
|
79
79
|
/**
|
|
80
80
|
* The id of the tab, which is prepended with the `Tabs` instanceId.
|
|
81
|
+
* The value of this prop should match with the value of the `tabId` prop on
|
|
82
|
+
* the corresponding `Tabs.TabPanel` component.
|
|
81
83
|
*/
|
|
82
|
-
|
|
84
|
+
tabId: string;
|
|
83
85
|
/**
|
|
84
86
|
* The children elements, generally the text to display on the tab.
|
|
85
87
|
*/
|
|
@@ -103,9 +105,12 @@ export type TabPanelProps = {
|
|
|
103
105
|
*/
|
|
104
106
|
children?: React.ReactNode;
|
|
105
107
|
/**
|
|
106
|
-
* A unique identifier for the tabpanel, which is used to generate
|
|
108
|
+
* A unique identifier for the tabpanel, which is used to generate an
|
|
109
|
+
* instanced id for the underlying element.
|
|
110
|
+
* The value of this prop should match with the value of the `tabId` prop on
|
|
111
|
+
* the corresponding `Tabs.Tab` component.
|
|
107
112
|
*/
|
|
108
|
-
|
|
113
|
+
tabId: string;
|
|
109
114
|
/**
|
|
110
115
|
* Determines whether or not the tabpanel element should be focusable.
|
|
111
116
|
* If `false`, pressing the tab key will skip over the tabpanel, and instead
|
package/src/text/README.md
CHANGED
|
@@ -132,6 +132,8 @@ function Example() {
|
|
|
132
132
|
|
|
133
133
|
Sets `Text` to have `display: block`.
|
|
134
134
|
|
|
135
|
+
Note: text truncation only works when `isBlock` is `false`.
|
|
136
|
+
|
|
135
137
|
### isDestructive
|
|
136
138
|
|
|
137
139
|
**Type**: `boolean`
|
|
@@ -196,7 +198,9 @@ function Example() {
|
|
|
196
198
|
|
|
197
199
|
**Type**: `boolean`
|
|
198
200
|
|
|
199
|
-
Enables text truncation. When `truncate` is set,we are able to truncate the long text in a variety of ways.
|
|
201
|
+
Enables text truncation. When `truncate` is set, we are able to truncate the long text in a variety of ways.
|
|
202
|
+
|
|
203
|
+
Note: text truncation won't work if the `isBlock` property is set to `true`
|
|
200
204
|
|
|
201
205
|
```jsx
|
|
202
206
|
import { __experimentalText as Text } from '@wordpress/components';
|
package/src/text/types.ts
CHANGED
|
@@ -46,10 +46,14 @@ export interface Props extends TruncateProps {
|
|
|
46
46
|
isDestructive?: boolean;
|
|
47
47
|
/**
|
|
48
48
|
* Escape characters in `highlightWords` which are meaningful in regular expressions.
|
|
49
|
+
*
|
|
50
|
+
* @default false
|
|
49
51
|
*/
|
|
50
52
|
highlightEscape?: boolean;
|
|
51
53
|
/**
|
|
52
54
|
* Determines if `highlightWords` should be case sensitive.
|
|
55
|
+
*
|
|
56
|
+
* @default false
|
|
53
57
|
*/
|
|
54
58
|
highlightCaseSensitive?: boolean;
|
|
55
59
|
/**
|
|
@@ -57,7 +61,10 @@ export interface Props extends TruncateProps {
|
|
|
57
61
|
*/
|
|
58
62
|
highlightSanitize?: FindAllArgs[ 'sanitize' ];
|
|
59
63
|
/**
|
|
60
|
-
* Sets `Text` to have `display: block`.
|
|
64
|
+
* Sets `Text` to have `display: block`. Note: text truncation only works
|
|
65
|
+
* when `isBlock` is `false`.
|
|
66
|
+
*
|
|
67
|
+
* @default false
|
|
61
68
|
*/
|
|
62
69
|
isBlock?: boolean;
|
|
63
70
|
/**
|
|
@@ -73,11 +80,15 @@ export interface Props extends TruncateProps {
|
|
|
73
80
|
*/
|
|
74
81
|
size?: CSSProperties[ 'fontSize' ] | TextSize;
|
|
75
82
|
/**
|
|
76
|
-
* Enables text truncation. When `truncate` is set,we are able to truncate the long text in a variety of ways.
|
|
83
|
+
* Enables text truncation. When `truncate` is set, we are able to truncate the long text in a variety of ways. Note: text truncation won't work if the `isBlock` property is set to `true`
|
|
84
|
+
*
|
|
85
|
+
* @default false
|
|
77
86
|
*/
|
|
78
87
|
truncate?: boolean;
|
|
79
88
|
/**
|
|
80
89
|
* Uppercases the text content.
|
|
90
|
+
*
|
|
91
|
+
* @default false
|
|
81
92
|
*/
|
|
82
93
|
upperCase?: boolean;
|
|
83
94
|
/**
|
|
@@ -86,6 +97,8 @@ export interface Props extends TruncateProps {
|
|
|
86
97
|
variant?: TextVariant;
|
|
87
98
|
/**
|
|
88
99
|
* Adjusts font-weight of the text.
|
|
100
|
+
*
|
|
101
|
+
* @default 'normal'
|
|
89
102
|
*/
|
|
90
103
|
weight?: CSSProperties[ 'fontWeight' ] | TextWeight;
|
|
91
104
|
/**
|
|
@@ -22,8 +22,8 @@ const MyToggleControl = () => {
|
|
|
22
22
|
: 'No fixed background.'
|
|
23
23
|
}
|
|
24
24
|
checked={ hasFixedBackground }
|
|
25
|
-
onChange={ () => {
|
|
26
|
-
setHasFixedBackground(
|
|
25
|
+
onChange={ (newValue) => {
|
|
26
|
+
setHasFixedBackground( newValue );
|
|
27
27
|
} }
|
|
28
28
|
/>
|
|
29
29
|
);
|
|
@@ -25,8 +25,11 @@ import cleanupTooltip from '../../tooltip/test/utils';
|
|
|
25
25
|
const ControlledToggleGroupControl = ( {
|
|
26
26
|
value: valueProp,
|
|
27
27
|
onChange,
|
|
28
|
+
extraButtonOptions,
|
|
28
29
|
...props
|
|
29
|
-
}: ToggleGroupControlProps
|
|
30
|
+
}: ToggleGroupControlProps & {
|
|
31
|
+
extraButtonOptions?: { name: string; value: string }[];
|
|
32
|
+
} ) => {
|
|
30
33
|
const [ value, setValue ] = useState( valueProp );
|
|
31
34
|
|
|
32
35
|
return (
|
|
@@ -40,6 +43,14 @@ const ControlledToggleGroupControl = ( {
|
|
|
40
43
|
value={ value }
|
|
41
44
|
/>
|
|
42
45
|
<Button onClick={ () => setValue( undefined ) }>Reset</Button>
|
|
46
|
+
{ extraButtonOptions?.map( ( obj ) => (
|
|
47
|
+
<Button
|
|
48
|
+
key={ obj.value }
|
|
49
|
+
onClick={ () => setValue( obj.value ) }
|
|
50
|
+
>
|
|
51
|
+
{ obj.name }
|
|
52
|
+
</Button>
|
|
53
|
+
) ) }
|
|
43
54
|
</>
|
|
44
55
|
);
|
|
45
56
|
};
|
|
@@ -192,6 +203,48 @@ describe.each( [
|
|
|
192
203
|
expect( rigasOption ).not.toBeChecked();
|
|
193
204
|
expect( jackOption ).not.toBeChecked();
|
|
194
205
|
} );
|
|
206
|
+
|
|
207
|
+
it( 'should update correctly when triggered by external updates', async () => {
|
|
208
|
+
const user = userEvent.setup();
|
|
209
|
+
|
|
210
|
+
render(
|
|
211
|
+
<Component
|
|
212
|
+
value="rigas"
|
|
213
|
+
label="Test Toggle Group Control"
|
|
214
|
+
extraButtonOptions={ [
|
|
215
|
+
{ name: 'Rigas', value: 'rigas' },
|
|
216
|
+
{ name: 'Jack', value: 'jack' },
|
|
217
|
+
] }
|
|
218
|
+
>
|
|
219
|
+
{ options }
|
|
220
|
+
</Component>
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
expect( screen.getByRole( 'radio', { name: 'R' } ) ).toBeChecked();
|
|
224
|
+
expect(
|
|
225
|
+
screen.getByRole( 'radio', { name: 'J' } )
|
|
226
|
+
).not.toBeChecked();
|
|
227
|
+
|
|
228
|
+
await user.click( screen.getByRole( 'button', { name: 'Jack' } ) );
|
|
229
|
+
expect( screen.getByRole( 'radio', { name: 'J' } ) ).toBeChecked();
|
|
230
|
+
expect(
|
|
231
|
+
screen.getByRole( 'radio', { name: 'R' } )
|
|
232
|
+
).not.toBeChecked();
|
|
233
|
+
|
|
234
|
+
await user.click( screen.getByRole( 'button', { name: 'Rigas' } ) );
|
|
235
|
+
expect( screen.getByRole( 'radio', { name: 'R' } ) ).toBeChecked();
|
|
236
|
+
expect(
|
|
237
|
+
screen.getByRole( 'radio', { name: 'J' } )
|
|
238
|
+
).not.toBeChecked();
|
|
239
|
+
|
|
240
|
+
await user.click( screen.getByRole( 'button', { name: 'Reset' } ) );
|
|
241
|
+
expect(
|
|
242
|
+
screen.getByRole( 'radio', { name: 'R' } )
|
|
243
|
+
).not.toBeChecked();
|
|
244
|
+
expect(
|
|
245
|
+
screen.getByRole( 'radio', { name: 'J' } )
|
|
246
|
+
).not.toBeChecked();
|
|
247
|
+
} );
|
|
195
248
|
}
|
|
196
249
|
|
|
197
250
|
describe( 'isDeselectable', () => {
|
|
@@ -21,30 +21,25 @@ type ValueProp = ToggleGroupControlProps[ 'value' ];
|
|
|
21
21
|
export function useComputeControlledOrUncontrolledValue(
|
|
22
22
|
valueProp: ValueProp
|
|
23
23
|
): { value: ValueProp; defaultValue: ValueProp } {
|
|
24
|
-
const
|
|
25
|
-
const
|
|
24
|
+
const prevValueProp = usePrevious( valueProp );
|
|
25
|
+
const prevIsControlled = useRef( false );
|
|
26
26
|
|
|
27
|
+
// Assume the component is being used in controlled mode on the first re-render
|
|
28
|
+
// that has a different `valueProp` from the previous render.
|
|
29
|
+
const isControlled =
|
|
30
|
+
prevIsControlled.current ||
|
|
31
|
+
( prevValueProp !== undefined &&
|
|
32
|
+
valueProp !== undefined &&
|
|
33
|
+
prevValueProp !== valueProp );
|
|
27
34
|
useEffect( () => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// - the `value` prop is not `undefined`
|
|
31
|
-
// - the `value` prop was not previously `undefined` and was given a new value
|
|
32
|
-
hasEverBeenUsedInControlledMode.current =
|
|
33
|
-
valueProp !== undefined &&
|
|
34
|
-
previousValueProp !== undefined &&
|
|
35
|
-
valueProp !== previousValueProp;
|
|
36
|
-
}
|
|
37
|
-
}, [ valueProp, previousValueProp ] );
|
|
35
|
+
prevIsControlled.current = isControlled;
|
|
36
|
+
}, [ isControlled ] );
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if ( hasEverBeenUsedInControlledMode.current ) {
|
|
38
|
+
if ( isControlled ) {
|
|
42
39
|
// When in controlled mode, use `''` instead of `undefined`
|
|
43
|
-
value
|
|
44
|
-
} else {
|
|
45
|
-
// When in uncontrolled mode, the `value` should be intended as the initial value
|
|
46
|
-
defaultValue = valueProp;
|
|
40
|
+
return { value: valueProp ?? '', defaultValue: undefined };
|
|
47
41
|
}
|
|
48
42
|
|
|
49
|
-
|
|
43
|
+
// When in uncontrolled mode, the `value` should be intended as the initial value
|
|
44
|
+
return { value: undefined, defaultValue: valueProp };
|
|
50
45
|
}
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { usePrevious } from '@wordpress/compose';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
useCallback,
|
|
7
|
+
useEffect,
|
|
8
|
+
useLayoutEffect,
|
|
9
|
+
useMemo,
|
|
10
|
+
} from '@wordpress/element';
|
|
6
11
|
|
|
7
12
|
/**
|
|
8
13
|
* Internal dependencies
|
|
@@ -47,11 +52,14 @@ export function useToolsPanelItem(
|
|
|
47
52
|
__experimentalLastVisibleItemClass,
|
|
48
53
|
} = useToolsPanelContext();
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
// hasValue is a new function on every render, so do not add it as a
|
|
56
|
+
// dependency to the useCallback hook! If needed, we should use a ref.
|
|
57
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
|
+
const hasValueCallback = useCallback( hasValue, [ panelId ] );
|
|
59
|
+
// resetAllFilter is a new function on every render, so do not add it as a
|
|
60
|
+
// dependency to the useCallback hook! If needed, we should use a ref.
|
|
61
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
|
+
const resetAllFilterCallback = useCallback( resetAllFilter, [ panelId ] );
|
|
55
63
|
const previousPanelId = usePrevious( currentPanelId );
|
|
56
64
|
|
|
57
65
|
const hasMatchingPanel =
|
|
@@ -59,7 +67,11 @@ export function useToolsPanelItem(
|
|
|
59
67
|
|
|
60
68
|
// Registering the panel item allows the panel to include it in its
|
|
61
69
|
// automatically generated menu and determine its initial checked status.
|
|
62
|
-
|
|
70
|
+
//
|
|
71
|
+
// This is performed in a layout effect to ensure that the panel item
|
|
72
|
+
// is registered before it is rendered preventing a rendering glitch.
|
|
73
|
+
// See: https://github.com/WordPress/gutenberg/issues/56470
|
|
74
|
+
useLayoutEffect( () => {
|
|
63
75
|
if ( hasMatchingPanel && previousPanelId !== null ) {
|
|
64
76
|
registerPanelItem( {
|
|
65
77
|
hasValue: hasValueCallback,
|
|
@@ -117,27 +129,13 @@ export function useToolsPanelItem(
|
|
|
117
129
|
const newValueSet = isValueSet && ! wasValueSet;
|
|
118
130
|
|
|
119
131
|
// Notify the panel when an item's value has been set.
|
|
120
|
-
//
|
|
121
|
-
// 1. For default controls, this is so "reset" appears beside its menu item.
|
|
122
|
-
// 2. For optional controls, when the panel ID is `null`, it allows the
|
|
123
|
-
// panel to ensure the item is toggled on for display in the menu, given the
|
|
124
|
-
// value has been set external to the control.
|
|
125
132
|
useEffect( () => {
|
|
126
133
|
if ( ! newValueSet ) {
|
|
127
134
|
return;
|
|
128
135
|
}
|
|
129
136
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
}, [
|
|
134
|
-
currentPanelId,
|
|
135
|
-
newValueSet,
|
|
136
|
-
isShownByDefault,
|
|
137
|
-
menuGroup,
|
|
138
|
-
label,
|
|
139
|
-
flagItemCustomization,
|
|
140
|
-
] );
|
|
137
|
+
flagItemCustomization( label, menuGroup );
|
|
138
|
+
}, [ newValueSet, menuGroup, label, flagItemCustomization ] );
|
|
141
139
|
|
|
142
140
|
// Determine if the panel item's corresponding menu is being toggled and
|
|
143
141
|
// trigger appropriate callback if it is.
|