@wordpress/components 37.0.0 → 38.0.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/AGENTS.md +2 -2
- package/CHANGELOG.md +46 -0
- package/build/autocomplete/index.cjs +3 -1
- package/build/autocomplete/index.cjs.map +2 -2
- package/build/color-picker/component.cjs +14 -5
- package/build/color-picker/component.cjs.map +2 -2
- package/build/color-picker/picker.cjs +95 -23
- package/build/color-picker/picker.cjs.map +2 -2
- package/build/confirm-dialog/component.cjs +86 -4
- package/build/confirm-dialog/component.cjs.map +3 -3
- package/build/content-editable-control/index.cjs +19 -9
- package/build/content-editable-control/index.cjs.map +3 -3
- package/build/custom-select-control/index.cjs +1 -2
- package/build/custom-select-control/index.cjs.map +2 -2
- package/build/disabled/index.cjs +87 -4
- package/build/disabled/index.cjs.map +4 -4
- package/build/form-token-field/index.cjs +87 -2
- package/build/form-token-field/index.cjs.map +3 -3
- package/build/gradient-picker/index.cjs +26 -20
- package/build/gradient-picker/index.cjs.map +2 -2
- package/build/input-control/index.cjs +0 -1
- package/build/input-control/index.cjs.map +2 -2
- package/build/input-control/styles/input-control-styles.cjs +23 -31
- package/build/input-control/styles/input-control-styles.cjs.map +2 -2
- package/build/private-apis.cjs +0 -2
- package/build/private-apis.cjs.map +3 -3
- package/build/range-control/index.cjs +0 -1
- package/build/range-control/index.cjs.map +2 -2
- package/build/sandbox/index.cjs +23 -4
- package/build/sandbox/index.cjs.map +3 -3
- package/build/search-control/index.cjs +93 -10
- package/build/search-control/index.cjs.map +4 -4
- package/build/select-control/index.cjs +0 -1
- package/build/select-control/index.cjs.map +2 -2
- package/build/select-control/styles/select-control-styles.cjs +9 -16
- package/build/select-control/styles/select-control-styles.cjs.map +2 -2
- package/build/slot-fill/fill.cjs.map +2 -2
- package/build/toggle-group-control/toggle-group-control/component.cjs +91 -8
- package/build/toggle-group-control/toggle-group-control/component.cjs.map +4 -4
- package/build/toggle-group-control/toggle-group-control-option-base/component.cjs +98 -17
- package/build/toggle-group-control/toggle-group-control-option-base/component.cjs.map +4 -4
- package/build/tools-panel/tools-panel/component.cjs +6 -0
- package/build/tools-panel/tools-panel/component.cjs.map +2 -2
- package/build/tools-panel/tools-panel/hook.cjs +87 -11
- package/build/tools-panel/tools-panel/hook.cjs.map +4 -4
- package/build/tools-panel/tools-panel-header/component.cjs +87 -2
- package/build/tools-panel/tools-panel-header/component.cjs.map +3 -3
- package/build/tools-panel/tools-panel-header/hook.cjs +90 -20
- package/build/tools-panel/tools-panel-header/hook.cjs.map +4 -4
- package/build/tools-panel/tools-panel-item/hook.cjs +88 -9
- package/build/tools-panel/tools-panel-item/hook.cjs.map +4 -4
- package/build/validated-form-controls/control-with-error.cjs +3 -0
- package/build/validated-form-controls/control-with-error.cjs.map +2 -2
- package/build-module/autocomplete/index.mjs +3 -1
- package/build-module/autocomplete/index.mjs.map +2 -2
- package/build-module/color-picker/component.mjs +14 -5
- package/build-module/color-picker/component.mjs.map +2 -2
- package/build-module/color-picker/picker.mjs +96 -24
- package/build-module/color-picker/picker.mjs.map +2 -2
- package/build-module/confirm-dialog/component.mjs +86 -4
- package/build-module/confirm-dialog/component.mjs.map +3 -3
- package/build-module/content-editable-control/index.mjs +21 -11
- package/build-module/content-editable-control/index.mjs.map +2 -2
- package/build-module/custom-select-control/index.mjs +1 -2
- package/build-module/custom-select-control/index.mjs.map +2 -2
- package/build-module/disabled/index.mjs +87 -4
- package/build-module/disabled/index.mjs.map +3 -3
- package/build-module/form-token-field/index.mjs +88 -3
- package/build-module/form-token-field/index.mjs.map +3 -3
- package/build-module/gradient-picker/index.mjs +26 -20
- package/build-module/gradient-picker/index.mjs.map +2 -2
- package/build-module/input-control/index.mjs +0 -1
- package/build-module/input-control/index.mjs.map +2 -2
- package/build-module/input-control/styles/input-control-styles.mjs +23 -31
- package/build-module/input-control/styles/input-control-styles.mjs.map +2 -2
- package/build-module/private-apis.mjs +0 -2
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/range-control/index.mjs +0 -1
- package/build-module/range-control/index.mjs.map +2 -2
- package/build-module/sandbox/index.mjs +13 -4
- package/build-module/sandbox/index.mjs.map +2 -2
- package/build-module/search-control/index.mjs +93 -10
- package/build-module/search-control/index.mjs.map +3 -3
- package/build-module/select-control/index.mjs +0 -1
- package/build-module/select-control/index.mjs.map +2 -2
- package/build-module/select-control/styles/select-control-styles.mjs +9 -16
- package/build-module/select-control/styles/select-control-styles.mjs.map +2 -2
- package/build-module/slot-fill/fill.mjs.map +2 -2
- package/build-module/toggle-group-control/toggle-group-control/component.mjs +92 -9
- package/build-module/toggle-group-control/toggle-group-control/component.mjs.map +3 -3
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs +99 -18
- package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs.map +3 -3
- package/build-module/tools-panel/tools-panel/component.mjs +6 -0
- package/build-module/tools-panel/tools-panel/component.mjs.map +2 -2
- package/build-module/tools-panel/tools-panel/hook.mjs +87 -11
- package/build-module/tools-panel/tools-panel/hook.mjs.map +3 -3
- package/build-module/tools-panel/tools-panel-header/component.mjs +87 -2
- package/build-module/tools-panel/tools-panel-header/component.mjs.map +3 -3
- package/build-module/tools-panel/tools-panel-header/hook.mjs +90 -20
- package/build-module/tools-panel/tools-panel-header/hook.mjs.map +3 -3
- package/build-module/tools-panel/tools-panel-item/hook.mjs +89 -10
- package/build-module/tools-panel/tools-panel-item/hook.mjs.map +3 -3
- package/build-module/validated-form-controls/control-with-error.mjs +3 -0
- package/build-module/validated-form-controls/control-with-error.mjs.map +2 -2
- package/build-style/style-rtl.css +20 -24
- package/build-style/style.css +20 -24
- package/build-types/autocomplete/index.d.ts +7 -3
- package/build-types/autocomplete/index.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/component.d.ts +1 -3
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/stories/index.story.d.ts +1 -3
- package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
- package/build-types/border-box-control/types.d.ts +1 -15
- package/build-types/border-box-control/types.d.ts.map +1 -1
- package/build-types/box-control/input-control.d.ts +3 -0
- package/build-types/box-control/input-control.d.ts.map +1 -0
- package/build-types/box-control/styles/box-control-styles.d.ts +4 -8
- package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
- package/build-types/box-control/types.d.ts +1 -8
- package/build-types/box-control/types.d.ts.map +1 -1
- package/build-types/card/context.d.ts +3 -0
- package/build-types/card/context.d.ts.map +1 -0
- package/build-types/color-picker/component.d.ts.map +1 -1
- package/build-types/color-picker/picker.d.ts +17 -1
- package/build-types/color-picker/picker.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts +4 -8
- package/build-types/color-picker/styles.d.ts.map +1 -1
- package/build-types/color-picker/types.d.ts +2 -0
- package/build-types/color-picker/types.d.ts.map +1 -1
- package/build-types/confirm-dialog/component.d.ts.map +1 -1
- package/build-types/content-editable-control/index.d.ts.map +1 -1
- package/build-types/context/wordpress-component.d.ts +2 -1
- package/build-types/context/wordpress-component.d.ts.map +1 -1
- package/build-types/custom-select-control/index.d.ts.map +1 -1
- package/build-types/custom-select-control/types.d.ts +1 -8
- package/build-types/custom-select-control/types.d.ts.map +1 -1
- package/build-types/date-time/date/index.d.ts +23 -0
- package/build-types/date-time/date/index.d.ts.map +1 -0
- package/build-types/date-time/date/styles.d.ts +45 -0
- package/build-types/date-time/date/styles.d.ts.map +1 -0
- package/build-types/date-time/date/test/index.d.ts +2 -0
- package/build-types/date-time/date/test/index.d.ts.map +1 -0
- package/build-types/date-time/date/test/use-lilius.d.ts +2 -0
- package/build-types/date-time/date/test/use-lilius.d.ts.map +1 -0
- package/build-types/date-time/date/use-lilius/index.d.ts +169 -0
- package/build-types/date-time/date/use-lilius/index.d.ts.map +1 -0
- package/build-types/date-time/time/index.d.ts +27 -0
- package/build-types/date-time/time/index.d.ts.map +1 -0
- package/build-types/date-time/time/styles.d.ts +93 -0
- package/build-types/date-time/time/styles.d.ts.map +1 -0
- package/build-types/date-time/time/test/index.d.ts +2 -0
- package/build-types/date-time/time/test/index.d.ts.map +1 -0
- package/build-types/date-time/time/time-input/index.d.ts +4 -0
- package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
- package/build-types/date-time/time/time-input/test/index.d.ts +2 -0
- package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
- package/build-types/date-time/time/timezone.d.ts +7 -0
- package/build-types/date-time/time/timezone.d.ts.map +1 -0
- package/build-types/date-time/time-picker/styles.d.ts +8 -16
- package/build-types/date-time/time-picker/styles.d.ts.map +1 -1
- package/build-types/disabled/index.d.ts.map +1 -1
- package/build-types/divider/styles.d.ts +10 -0
- package/build-types/divider/styles.d.ts.map +1 -0
- package/build-types/flex/styles.d.ts +17 -0
- package/build-types/flex/styles.d.ts.map +1 -0
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -4
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
- package/build-types/font-size-picker/index.d.ts +12 -2
- package/build-types/font-size-picker/index.d.ts.map +1 -1
- package/build-types/font-size-picker/stories/e2e/index.story.d.ts +12 -1
- package/build-types/font-size-picker/stories/e2e/index.story.d.ts.map +1 -1
- package/build-types/font-size-picker/types.d.ts +2 -15
- 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/gradient-picker/index.d.ts.map +1 -1
- package/build-types/gradient-picker/stories/index.story.d.ts +1 -0
- package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
- package/build-types/gradient-picker/test/index.d.ts +2 -0
- package/build-types/gradient-picker/test/index.d.ts.map +1 -0
- package/build-types/gradient-picker/types.d.ts +19 -4
- package/build-types/gradient-picker/types.d.ts.map +1 -1
- package/build-types/input-control/index.d.ts.map +1 -1
- package/build-types/input-control/styles/input-control-styles.d.ts +0 -6
- package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
- package/build-types/input-control/types.d.ts +1 -8
- package/build-types/input-control/types.d.ts.map +1 -1
- package/build-types/mobile/image/constants.d.ts +5 -0
- package/build-types/mobile/image/constants.d.ts.map +1 -0
- package/build-types/navigation/back-button/index.d.ts +7 -0
- package/build-types/navigation/back-button/index.d.ts.map +1 -0
- package/build-types/navigation/constants.d.ts +3 -0
- package/build-types/navigation/constants.d.ts.map +1 -0
- package/build-types/navigation/context.d.ts +4 -0
- package/build-types/navigation/context.d.ts.map +1 -0
- package/build-types/navigation/group/context.d.ts +7 -0
- package/build-types/navigation/group/context.d.ts.map +1 -0
- package/build-types/navigation/group/index.d.ts +7 -0
- package/build-types/navigation/group/index.d.ts.map +1 -0
- package/build-types/navigation/index.d.ts +46 -0
- package/build-types/navigation/index.d.ts.map +1 -0
- package/build-types/navigation/item/base-content.d.ts +3 -0
- package/build-types/navigation/item/base-content.d.ts.map +1 -0
- package/build-types/navigation/item/base.d.ts +3 -0
- package/build-types/navigation/item/base.d.ts.map +1 -0
- package/build-types/navigation/item/index.d.ts +7 -0
- package/build-types/navigation/item/index.d.ts.map +1 -0
- package/build-types/navigation/item/use-navigation-tree-item.d.ts +3 -0
- package/build-types/navigation/item/use-navigation-tree-item.d.ts.map +1 -0
- package/build-types/navigation/menu/context.d.ts +7 -0
- package/build-types/navigation/menu/context.d.ts.map +1 -0
- package/build-types/navigation/menu/index.d.ts +7 -0
- package/build-types/navigation/menu/index.d.ts.map +1 -0
- package/build-types/navigation/menu/menu-title-search.d.ts +3 -0
- package/build-types/navigation/menu/menu-title-search.d.ts.map +1 -0
- package/build-types/navigation/menu/menu-title.d.ts +3 -0
- package/build-types/navigation/menu/menu-title.d.ts.map +1 -0
- package/build-types/navigation/menu/search-no-results-found.d.ts +3 -0
- package/build-types/navigation/menu/search-no-results-found.d.ts.map +1 -0
- package/build-types/navigation/menu/use-navigation-tree-menu.d.ts +3 -0
- package/build-types/navigation/menu/use-navigation-tree-menu.d.ts.map +1 -0
- package/build-types/navigation/stories/index.story.d.ts +23 -0
- package/build-types/navigation/stories/index.story.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/controlled-state.d.ts +7 -0
- package/build-types/navigation/stories/utils/controlled-state.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/default.d.ts +10 -0
- package/build-types/navigation/stories/utils/default.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/group.d.ts +10 -0
- package/build-types/navigation/stories/utils/group.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/hide-if-empty.d.ts +10 -0
- package/build-types/navigation/stories/utils/hide-if-empty.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/more-examples.d.ts +10 -0
- package/build-types/navigation/stories/utils/more-examples.d.ts.map +1 -0
- package/build-types/navigation/stories/utils/search.d.ts +10 -0
- package/build-types/navigation/stories/utils/search.d.ts.map +1 -0
- package/build-types/navigation/styles/navigation-styles.d.ts +55 -0
- package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -0
- package/build-types/navigation/test/index.d.ts +2 -0
- package/build-types/navigation/test/index.d.ts.map +1 -0
- package/build-types/navigation/types.d.ts +266 -0
- package/build-types/navigation/types.d.ts.map +1 -0
- package/build-types/navigation/use-create-navigation-tree.d.ts +15 -0
- package/build-types/navigation/use-create-navigation-tree.d.ts.map +1 -0
- package/build-types/navigation/use-navigation-tree-nodes.d.ts +10 -0
- package/build-types/navigation/use-navigation-tree-nodes.d.ts.map +1 -0
- package/build-types/navigation/utils.d.ts +3 -0
- package/build-types/navigation/utils.d.ts.map +1 -0
- package/build-types/number-control/index.d.ts +2 -4
- package/build-types/number-control/index.d.ts.map +1 -1
- package/build-types/number-control/stories/index.story.d.ts +2 -4
- package/build-types/number-control/stories/index.story.d.ts.map +1 -1
- package/build-types/number-control/types.d.ts +1 -15
- package/build-types/number-control/types.d.ts.map +1 -1
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts +2 -4
- package/build-types/range-control/index.d.ts.map +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +2 -4
- package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
- package/build-types/range-control/types.d.ts +2 -16
- package/build-types/range-control/types.d.ts.map +1 -1
- package/build-types/sandbox/index.d.ts.map +1 -1
- package/build-types/sandbox/types.d.ts +11 -0
- package/build-types/sandbox/types.d.ts.map +1 -1
- package/build-types/search-control/index.d.ts.map +1 -1
- package/build-types/search-control/types.d.ts +1 -1
- package/build-types/search-control/types.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
- package/build-types/select-control/types.d.ts +0 -7
- package/build-types/select-control/types.d.ts.map +1 -1
- package/build-types/slot-fill/fill.d.ts.map +1 -1
- package/build-types/slot-fill/stories/index.story.d.ts +1 -6
- package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
- package/build-types/surface/styles.d.ts +11 -0
- package/build-types/surface/styles.d.ts.map +1 -0
- package/build-types/theme/styles.d.ts +10 -0
- package/build-types/theme/styles.d.ts.map +1 -0
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts +0 -1
- package/build-types/toggle-group-control/toggle-group-control/component.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 +0 -7
- package/build-types/toggle-group-control/types.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
- package/build-types/tree-select/types.d.ts +1 -8
- package/build-types/tree-select/types.d.ts.map +1 -1
- package/build-types/truncate/styles.d.ts +2 -0
- package/build-types/truncate/styles.d.ts.map +1 -0
- package/build-types/unit-control/index.d.ts +2 -4
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -4
- package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
- package/build-types/unit-control/types.d.ts +1 -15
- package/build-types/unit-control/types.d.ts.map +1 -1
- package/build-types/utils/deprecated-36px-size.d.ts +7 -0
- package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
- package/build-types/validated-form-controls/components/number-control.d.ts +2 -4
- package/build-types/validated-form-controls/components/number-control.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/range-control.d.ts +2 -4
- package/build-types/validated-form-controls/components/range-control.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/stories/overview.story.d.ts +5 -0
- package/build-types/validated-form-controls/components/stories/overview.story.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/toggle-group-control.d.ts +1 -2
- package/build-types/validated-form-controls/components/toggle-group-control.d.ts.map +1 -1
- package/build-types/validated-form-controls/control-with-error.d.ts.map +1 -1
- package/build-types/visually-hidden/test/index.d.ts +2 -0
- package/build-types/visually-hidden/test/index.d.ts.map +1 -0
- package/package.json +27 -27
- package/src/autocomplete/index.tsx +16 -3
- package/src/base-control/README.md +2 -2
- package/src/border-box-control/types.ts +4 -15
- package/src/box-control/types.ts +4 -8
- package/src/card/test/__snapshots__/index.tsx.snap +1 -1
- package/src/checkbox-control/test/__snapshots__/index.tsx.snap +1 -1
- package/src/color-indicator/test/__snapshots__/index.tsx.snap +1 -1
- package/src/color-picker/component.tsx +23 -19
- package/src/color-picker/picker.tsx +144 -21
- package/src/color-picker/test/index.tsx +502 -0
- package/src/color-picker/types.ts +2 -0
- package/src/combobox-control/style.scss +2 -2
- package/src/confirm-dialog/component.tsx +2 -4
- package/src/confirm-dialog/style.module.scss +7 -0
- package/src/confirm-dialog/test/index.tsx +5 -0
- package/src/content-editable-control/index.tsx +24 -5
- package/src/content-editable-control/style.module.scss +1 -1
- package/src/content-editable-control/test/index.tsx +20 -8
- package/src/context/test/__snapshots__/context-system-provider.js.snap +1 -1
- package/src/context/wordpress-component.ts +7 -2
- package/src/custom-gradient-picker/test/index.tsx +111 -1
- package/src/custom-select-control/index.tsx +1 -2
- package/src/custom-select-control/test/__snapshots__/index.tsx.snap +6 -0
- package/src/custom-select-control/test/index.tsx +23 -0
- package/src/custom-select-control/types.ts +1 -8
- package/src/disabled/index.tsx +7 -5
- package/src/disabled/style.module.scss +15 -0
- package/src/disabled/test/index.tsx +6 -4
- package/src/elevation/test/__snapshots__/index.tsx.snap +1 -1
- package/src/external-link/style.scss +6 -12
- package/src/flex/test/__snapshots__/index.tsx.snap +1 -1
- package/src/font-size-picker/types.ts +6 -15
- package/src/form-toggle/test/__snapshots__/index.tsx.snap +1 -1
- package/src/form-token-field/index.tsx +5 -4
- package/src/form-token-field/style.module.scss +6 -0
- package/src/form-token-field/style.scss +2 -2
- package/src/gradient-picker/README.md +21 -3
- package/src/gradient-picker/index.tsx +43 -28
- package/src/gradient-picker/stories/index.story.tsx +41 -5
- package/src/gradient-picker/test/index.tsx +148 -0
- package/src/gradient-picker/types.ts +24 -4
- package/src/h-stack/test/__snapshots__/index.tsx.snap +1 -1
- package/src/heading/test/__snapshots__/index.tsx.snap +1 -1
- package/src/higher-order/with-filters/test/__snapshots__/index.tsx.snap +1 -1
- package/src/input-control/index.tsx +0 -1
- package/src/input-control/styles/input-control-styles.tsx +0 -8
- package/src/input-control/test/__snapshots__/index.js.snap +11 -0
- package/src/input-control/test/index.js +28 -0
- package/src/input-control/types.ts +1 -8
- package/src/item-group/test/__snapshots__/index.js.snap +1 -1
- package/src/menu/README.md +2 -2
- package/src/menu-item/test/__snapshots__/index.js.snap +1 -1
- package/src/modal/test/index.tsx +42 -0
- package/src/notice/test/__snapshots__/index.tsx.snap +1 -1
- package/src/number-control/types.ts +1 -22
- package/src/panel/test/__snapshots__/body.tsx.snap +1 -1
- package/src/panel/test/__snapshots__/header.tsx.snap +1 -1
- package/src/panel/test/__snapshots__/index.tsx.snap +1 -1
- package/src/panel/test/__snapshots__/row.tsx.snap +1 -1
- package/src/private-apis.ts +0 -2
- package/src/range-control/index.tsx +0 -1
- package/src/range-control/types.ts +2 -15
- package/src/sandbox/index.tsx +22 -2
- package/src/sandbox/test/index.tsx +21 -0
- package/src/sandbox/types.ts +11 -0
- package/src/scrollable/test/__snapshots__/index.tsx.snap +1 -1
- package/src/search-control/index.tsx +23 -20
- package/src/search-control/style.module.scss +16 -0
- package/src/search-control/test/index.tsx +8 -0
- package/src/search-control/types.ts +1 -1
- package/src/select-control/index.tsx +0 -1
- package/src/select-control/styles/select-control-styles.ts +0 -7
- package/src/select-control/test/__snapshots__/select-control.tsx.snap +11 -0
- package/src/select-control/test/select-control.tsx +37 -0
- package/src/select-control/types.ts +0 -7
- package/src/shortcut/test/__snapshots__/index.tsx.snap +1 -1
- package/src/slot-fill/fill.tsx +3 -9
- package/src/slot-fill/stories/index.story.tsx +52 -10
- package/src/slot-fill/test/__snapshots__/slot.js.snap +1 -1
- package/src/slot-fill/test/slot.js +53 -11
- package/src/spacer/test/__snapshots__/index.tsx.snap +1 -1
- package/src/text/test/__snapshots__/index.tsx.snap +1 -1
- package/src/text-control/style.scss +1 -1
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +29 -707
- package/src/toggle-group-control/test/index.tsx +33 -3
- package/src/toggle-group-control/toggle-group-control/component.tsx +11 -16
- package/src/toggle-group-control/toggle-group-control/style.module.scss +63 -0
- package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +22 -24
- package/src/toggle-group-control/toggle-group-control-option-base/style.module.scss +88 -0
- package/src/toggle-group-control/types.ts +0 -7
- package/src/tools-panel/style.module.scss +117 -0
- package/src/tools-panel/test/index.tsx +105 -39
- package/src/tools-panel/tools-panel/component.tsx +12 -1
- package/src/tools-panel/tools-panel/hook.ts +13 -15
- package/src/tools-panel/tools-panel-header/component.tsx +6 -2
- package/src/tools-panel/tools-panel-header/hook.ts +7 -25
- package/src/tools-panel/tools-panel-item/hook.ts +16 -34
- package/src/tooltip/test/index.tsx +1 -1
- package/src/tree-grid/test/__snapshots__/cell.tsx.snap +1 -1
- package/src/tree-grid/test/__snapshots__/index.tsx.snap +1 -1
- package/src/tree-grid/test/__snapshots__/roving-tab-index-item.tsx.snap +1 -1
- package/src/tree-grid/test/__snapshots__/roving-tab-index.tsx.snap +1 -1
- package/src/tree-grid/test/__snapshots__/row.tsx.snap +1 -1
- package/src/tree-select/README.md +1 -1
- package/src/tree-select/types.ts +1 -8
- package/src/unit-control/types.ts +1 -18
- package/src/utils/theme-variables.scss +1 -0
- package/src/v-stack/test/__snapshots__/index.tsx.snap +1 -1
- package/src/validated-form-controls/components/stories/overview.story.tsx +51 -0
- package/src/validated-form-controls/control-with-error.tsx +9 -0
- package/src/validated-form-controls/style.scss +3 -3
- package/src/validated-form-controls/test/control-with-error.tsx +42 -0
- package/src/view/test/__snapshots__/index.js.snap +1 -1
- package/build/confirm-dialog/styles.cjs +0 -42
- package/build/confirm-dialog/styles.cjs.map +0 -7
- package/build/disabled/styles/disabled-styles.cjs +0 -42
- package/build/disabled/styles/disabled-styles.cjs.map +0 -7
- package/build/form-token-field/styles.cjs +0 -49
- package/build/form-token-field/styles.cjs.map +0 -7
- package/build/search-control/styles.cjs +0 -74
- package/build/search-control/styles.cjs.map +0 -7
- package/build/theme/color-algorithms.cjs +0 -131
- package/build/theme/color-algorithms.cjs.map +0 -7
- package/build/theme/index.cjs +0 -160
- package/build/theme/index.cjs.map +0 -7
- package/build/theme/types.cjs +0 -19
- package/build/theme/types.cjs.map +0 -7
- package/build/toggle-group-control/toggle-group-control/styles.cjs +0 -53
- package/build/toggle-group-control/toggle-group-control/styles.cjs.map +0 -7
- package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs +0 -94
- package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs.map +0 -7
- package/build/tools-panel/styles.cjs +0 -129
- package/build/tools-panel/styles.cjs.map +0 -7
- package/build/utils/use-deprecated-props.cjs +0 -41
- package/build/utils/use-deprecated-props.cjs.map +0 -7
- package/build-module/confirm-dialog/styles.mjs +0 -17
- package/build-module/confirm-dialog/styles.mjs.map +0 -7
- package/build-module/disabled/styles/disabled-styles.mjs +0 -17
- package/build-module/disabled/styles/disabled-styles.mjs.map +0 -7
- package/build-module/form-token-field/styles.mjs +0 -14
- package/build-module/form-token-field/styles.mjs.map +0 -7
- package/build-module/search-control/styles.mjs +0 -38
- package/build-module/search-control/styles.mjs.map +0 -7
- package/build-module/theme/color-algorithms.mjs +0 -94
- package/build-module/theme/color-algorithms.mjs.map +0 -7
- package/build-module/theme/index.mjs +0 -129
- package/build-module/theme/index.mjs.map +0 -7
- package/build-module/theme/types.mjs +0 -1
- package/build-module/theme/types.mjs.map +0 -7
- package/build-module/toggle-group-control/toggle-group-control/styles.mjs +0 -27
- package/build-module/toggle-group-control/toggle-group-control/styles.mjs.map +0 -7
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs +0 -56
- package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs.map +0 -7
- package/build-module/tools-panel/styles.mjs +0 -84
- package/build-module/tools-panel/styles.mjs.map +0 -7
- package/build-module/utils/use-deprecated-props.mjs +0 -16
- package/build-module/utils/use-deprecated-props.mjs.map +0 -7
- package/src/confirm-dialog/styles.ts +0 -18
- package/src/disabled/styles/disabled-styles.tsx +0 -23
- package/src/form-token-field/styles.ts +0 -15
- package/src/search-control/styles.ts +0 -27
- package/src/theme/README.md +0 -47
- package/src/theme/color-algorithms.ts +0 -142
- package/src/theme/index.tsx +0 -80
- package/src/theme/stories/index.story.tsx +0 -127
- package/src/theme/style.module.scss +0 -4
- package/src/theme/test/color-algorithms.ts +0 -100
- package/src/theme/test/index.tsx +0 -151
- package/src/theme/types.ts +0 -61
- package/src/toggle-group-control/toggle-group-control/styles.ts +0 -84
- package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -109
- package/src/tools-panel/styles.ts +0 -176
- package/src/utils/use-deprecated-props.ts +0 -14
|
@@ -141,11 +141,29 @@ Only used when `asButtons` is not true.
|
|
|
141
141
|
|
|
142
142
|
### `onChange`
|
|
143
143
|
|
|
144
|
-
- Type: `(currentGradient: string | undefined) => void`
|
|
144
|
+
- Type: `(currentGradient: string | undefined, index?: number | undefined, slug?: string | undefined) => void`
|
|
145
145
|
- Required: Yes
|
|
146
146
|
|
|
147
|
-
The function called when a new gradient has been defined. It is passed
|
|
148
|
-
the `currentGradient` as an argument.
|
|
147
|
+
The function called when a new gradient has been defined. It is passed
|
|
148
|
+
the `currentGradient` as an argument. When a predefined gradient is
|
|
149
|
+
selected, the second argument is its index (or, for multiple-origin
|
|
150
|
+
gradients, the origin index) and the third argument is its slug.
|
|
151
|
+
|
|
152
|
+
### `selectedSlug`
|
|
153
|
+
|
|
154
|
+
- Type: `string`
|
|
155
|
+
- Required: No
|
|
156
|
+
|
|
157
|
+
The slug of the currently selected predefined gradient.
|
|
158
|
+
|
|
159
|
+
When set to a non-empty string, selection is determined by slug rather
|
|
160
|
+
than by gradient value, which correctly handles palettes where two
|
|
161
|
+
entries share the same gradient. Entries whose slug does not match will
|
|
162
|
+
not appear selected in this mode, even if their gradient value matches
|
|
163
|
+
`value`.
|
|
164
|
+
|
|
165
|
+
An empty string is treated the same as `undefined`: selection falls
|
|
166
|
+
back to matching by gradient value.
|
|
149
167
|
|
|
150
168
|
### `value`
|
|
151
169
|
|
|
@@ -41,35 +41,48 @@ function SingleOrigin( {
|
|
|
41
41
|
gradients,
|
|
42
42
|
onChange,
|
|
43
43
|
value,
|
|
44
|
+
selectedSlug,
|
|
44
45
|
...additionalProps
|
|
45
46
|
}: PickerProps< GradientObject > ) {
|
|
46
47
|
const gradientOptions = useMemo( () => {
|
|
47
|
-
return gradients.map( ( { gradient, name, slug }, index ) =>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
return gradients.map( ( { gradient, name, slug }, index ) => {
|
|
49
|
+
// When a non-empty selectedSlug is provided, selection is decided
|
|
50
|
+
// strictly by slug, which keeps two entries with the same gradient
|
|
51
|
+
// value apart. Otherwise selection falls back to matching the
|
|
52
|
+
// gradient value.
|
|
53
|
+
const isSelected = selectedSlug
|
|
54
|
+
? slug === selectedSlug
|
|
55
|
+
: value === gradient;
|
|
56
|
+
return (
|
|
57
|
+
<CircularOptionPicker.Option
|
|
58
|
+
key={ slug }
|
|
59
|
+
value={ gradient }
|
|
60
|
+
isSelected={ isSelected }
|
|
61
|
+
tooltipText={
|
|
62
|
+
name ||
|
|
63
|
+
// translators: %s: gradient code e.g: "linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);".
|
|
64
|
+
sprintf( __( 'Gradient code: %s' ), gradient )
|
|
65
|
+
}
|
|
66
|
+
style={ {
|
|
67
|
+
color: 'rgba( 0,0,0,0 )',
|
|
68
|
+
background: gradient,
|
|
69
|
+
} }
|
|
70
|
+
onClick={
|
|
71
|
+
isSelected
|
|
72
|
+
? clearGradient
|
|
73
|
+
: () => onChange( gradient, index, slug )
|
|
74
|
+
}
|
|
75
|
+
aria-label={
|
|
76
|
+
name
|
|
77
|
+
? // translators: %s: The name of the gradient e.g: "Angular red to blue".
|
|
78
|
+
sprintf( __( 'Gradient: %s' ), name )
|
|
79
|
+
: // translators: %s: gradient code e.g: "linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);".
|
|
80
|
+
sprintf( __( 'Gradient code: %s' ), gradient )
|
|
81
|
+
}
|
|
82
|
+
/>
|
|
83
|
+
);
|
|
84
|
+
} );
|
|
85
|
+
}, [ gradients, value, onChange, clearGradient, selectedSlug ] );
|
|
73
86
|
return (
|
|
74
87
|
<CircularOptionPicker.OptionGroup
|
|
75
88
|
className={ className }
|
|
@@ -85,6 +98,7 @@ function MultipleOrigin( {
|
|
|
85
98
|
gradients,
|
|
86
99
|
onChange,
|
|
87
100
|
value,
|
|
101
|
+
selectedSlug,
|
|
88
102
|
headingLevel,
|
|
89
103
|
}: PickerProps< OriginObject > ) {
|
|
90
104
|
const instanceId = useInstanceId( MultipleOrigin );
|
|
@@ -101,10 +115,11 @@ function MultipleOrigin( {
|
|
|
101
115
|
<SingleOrigin
|
|
102
116
|
clearGradient={ clearGradient }
|
|
103
117
|
gradients={ gradientSet }
|
|
104
|
-
onChange={ ( gradient ) =>
|
|
105
|
-
onChange( gradient, index )
|
|
118
|
+
onChange={ ( gradient, _index, slug ) =>
|
|
119
|
+
onChange( gradient, index, slug )
|
|
106
120
|
}
|
|
107
121
|
value={ value }
|
|
122
|
+
selectedSlug={ selectedSlug }
|
|
108
123
|
aria-labelledby={ id }
|
|
109
124
|
/>
|
|
110
125
|
</VStack>
|
|
@@ -31,6 +31,7 @@ const meta: Meta< typeof GradientPicker > = {
|
|
|
31
31
|
onChange: fn(),
|
|
32
32
|
},
|
|
33
33
|
argTypes: {
|
|
34
|
+
selectedSlug: { control: false },
|
|
34
35
|
value: { control: false },
|
|
35
36
|
},
|
|
36
37
|
};
|
|
@@ -91,17 +92,23 @@ const GRADIENTS = [
|
|
|
91
92
|
|
|
92
93
|
const Template = ( {
|
|
93
94
|
onChange,
|
|
95
|
+
value,
|
|
96
|
+
selectedSlug,
|
|
94
97
|
...props
|
|
95
98
|
}: React.ComponentProps< typeof GradientPicker > ) => {
|
|
96
|
-
const [ gradient, setGradient ] =
|
|
97
|
-
|
|
99
|
+
const [ gradient, setGradient ] = useState<
|
|
100
|
+
React.ComponentProps< typeof GradientPicker >[ 'value' ]
|
|
101
|
+
>( value ?? null );
|
|
102
|
+
const [ slug, setSlug ] = useState< string | undefined >( selectedSlug );
|
|
98
103
|
return (
|
|
99
104
|
<GradientPicker
|
|
100
105
|
{ ...props }
|
|
101
106
|
value={ gradient }
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
selectedSlug={ slug }
|
|
108
|
+
onChange={ ( currentGradient, index, newSlug ) => {
|
|
109
|
+
setGradient( currentGradient );
|
|
110
|
+
setSlug( newSlug );
|
|
111
|
+
onChange?.( currentGradient, index, newSlug );
|
|
105
112
|
} }
|
|
106
113
|
/>
|
|
107
114
|
);
|
|
@@ -121,6 +128,35 @@ export const WithNoExistingGradients: GradientPickerStory = {
|
|
|
121
128
|
},
|
|
122
129
|
};
|
|
123
130
|
|
|
131
|
+
export const DuplicateGradients: GradientPickerStory = {
|
|
132
|
+
render: Template,
|
|
133
|
+
args: {
|
|
134
|
+
gradients: [
|
|
135
|
+
{
|
|
136
|
+
name: 'Dark Background',
|
|
137
|
+
slug: 'dark-background',
|
|
138
|
+
gradient:
|
|
139
|
+
'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'Dark Text',
|
|
143
|
+
slug: 'dark-text',
|
|
144
|
+
gradient:
|
|
145
|
+
'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'Brand',
|
|
149
|
+
slug: 'brand',
|
|
150
|
+
gradient:
|
|
151
|
+
'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)',
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
value: 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
|
|
155
|
+
selectedSlug: 'dark-text',
|
|
156
|
+
disableCustomGradients: true,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
|
|
124
160
|
export const MultipleOrigins: GradientPickerStory = {
|
|
125
161
|
render: Template,
|
|
126
162
|
args: {
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { render, screen } from '@testing-library/react';
|
|
5
|
+
import userEvent from '@testing-library/user-event';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import GradientPicker from '..';
|
|
11
|
+
|
|
12
|
+
const GRADIENT_A =
|
|
13
|
+
'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)';
|
|
14
|
+
const GRADIENT_B =
|
|
15
|
+
'linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)';
|
|
16
|
+
|
|
17
|
+
const DUPLICATE_GRADIENTS = [
|
|
18
|
+
{ name: 'Dark Background', slug: 'dark-background', gradient: GRADIENT_A },
|
|
19
|
+
{ name: 'Dark Text', slug: 'dark-text', gradient: GRADIENT_A },
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
describe( 'GradientPicker', () => {
|
|
23
|
+
describe( 'duplicate gradients in palette', () => {
|
|
24
|
+
it( 'should render all swatches even when two entries share the same gradient value', () => {
|
|
25
|
+
render(
|
|
26
|
+
<GradientPicker
|
|
27
|
+
aria-label="Gradient"
|
|
28
|
+
gradients={ DUPLICATE_GRADIENTS }
|
|
29
|
+
value={ undefined }
|
|
30
|
+
onChange={ jest.fn() }
|
|
31
|
+
disableCustomGradients
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
expect( screen.getAllByRole( 'option' ) ).toHaveLength( 2 );
|
|
36
|
+
} );
|
|
37
|
+
|
|
38
|
+
it( 'should select by slug when selectedSlug is provided, marking only the matching entry', () => {
|
|
39
|
+
render(
|
|
40
|
+
<GradientPicker
|
|
41
|
+
aria-label="Gradient"
|
|
42
|
+
gradients={ DUPLICATE_GRADIENTS }
|
|
43
|
+
value={ GRADIENT_A }
|
|
44
|
+
selectedSlug="dark-text"
|
|
45
|
+
onChange={ jest.fn() }
|
|
46
|
+
disableCustomGradients
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const options = screen.getAllByRole( 'option' );
|
|
51
|
+
// "dark-background" is index 0, "dark-text" is index 1.
|
|
52
|
+
expect( options[ 0 ] ).toHaveAttribute( 'aria-selected', 'false' );
|
|
53
|
+
expect( options[ 1 ] ).toHaveAttribute( 'aria-selected', 'true' );
|
|
54
|
+
} );
|
|
55
|
+
|
|
56
|
+
it( 'should fall back to value selection and mark all matching duplicates when no selectedSlug is provided', () => {
|
|
57
|
+
render(
|
|
58
|
+
<GradientPicker
|
|
59
|
+
aria-label="Gradient"
|
|
60
|
+
gradients={ DUPLICATE_GRADIENTS }
|
|
61
|
+
value={ GRADIENT_A }
|
|
62
|
+
onChange={ jest.fn() }
|
|
63
|
+
disableCustomGradients
|
|
64
|
+
/>
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const options = screen.getAllByRole( 'option' );
|
|
68
|
+
expect( options[ 0 ] ).toHaveAttribute( 'aria-selected', 'true' );
|
|
69
|
+
expect( options[ 1 ] ).toHaveAttribute( 'aria-selected', 'true' );
|
|
70
|
+
} );
|
|
71
|
+
|
|
72
|
+
it( 'should treat an empty-string selectedSlug as no slug and fall back to value selection', () => {
|
|
73
|
+
render(
|
|
74
|
+
<GradientPicker
|
|
75
|
+
aria-label="Gradient"
|
|
76
|
+
gradients={ DUPLICATE_GRADIENTS }
|
|
77
|
+
value={ GRADIENT_A }
|
|
78
|
+
selectedSlug=""
|
|
79
|
+
onChange={ jest.fn() }
|
|
80
|
+
disableCustomGradients
|
|
81
|
+
/>
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const options = screen.getAllByRole( 'option' );
|
|
85
|
+
expect( options[ 0 ] ).toHaveAttribute( 'aria-selected', 'true' );
|
|
86
|
+
expect( options[ 1 ] ).toHaveAttribute( 'aria-selected', 'true' );
|
|
87
|
+
} );
|
|
88
|
+
|
|
89
|
+
it( 'should pass slug as third argument to onChange when a swatch is clicked', async () => {
|
|
90
|
+
const user = userEvent.setup();
|
|
91
|
+
const onChange = jest.fn();
|
|
92
|
+
|
|
93
|
+
render(
|
|
94
|
+
<GradientPicker
|
|
95
|
+
aria-label="Gradient"
|
|
96
|
+
gradients={ DUPLICATE_GRADIENTS }
|
|
97
|
+
value={ undefined }
|
|
98
|
+
onChange={ onChange }
|
|
99
|
+
disableCustomGradients
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
await user.click(
|
|
104
|
+
screen.getByRole( 'option', { name: 'Gradient: Dark Text' } )
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
expect( onChange ).toHaveBeenCalledWith(
|
|
108
|
+
GRADIENT_A,
|
|
109
|
+
1,
|
|
110
|
+
'dark-text'
|
|
111
|
+
);
|
|
112
|
+
} );
|
|
113
|
+
|
|
114
|
+
it( 'should pass slug as third argument to onChange for multiple-origin gradients', async () => {
|
|
115
|
+
const user = userEvent.setup();
|
|
116
|
+
const onChange = jest.fn();
|
|
117
|
+
|
|
118
|
+
render(
|
|
119
|
+
<GradientPicker
|
|
120
|
+
aria-label="Gradient"
|
|
121
|
+
gradients={ [
|
|
122
|
+
{
|
|
123
|
+
name: 'Theme',
|
|
124
|
+
gradients: [
|
|
125
|
+
{
|
|
126
|
+
name: 'Blush',
|
|
127
|
+
slug: 'blush',
|
|
128
|
+
gradient: GRADIENT_B,
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
] }
|
|
133
|
+
value={ undefined }
|
|
134
|
+
onChange={ onChange }
|
|
135
|
+
disableCustomGradients
|
|
136
|
+
/>
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
await user.click(
|
|
140
|
+
screen.getByRole( 'option', { name: 'Gradient: Blush' } )
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
// The second argument is the origin index, mirroring the existing
|
|
144
|
+
// multiple-origin behavior.
|
|
145
|
+
expect( onChange ).toHaveBeenCalledWith( GRADIENT_B, 0, 'blush' );
|
|
146
|
+
} );
|
|
147
|
+
} );
|
|
148
|
+
} );
|
|
@@ -17,10 +17,16 @@ type GradientPickerBaseProps = {
|
|
|
17
17
|
*/
|
|
18
18
|
className?: string;
|
|
19
19
|
/**
|
|
20
|
-
* The function called when a new gradient has been defined. It is passed
|
|
21
|
-
* the `currentGradient` as an argument.
|
|
20
|
+
* The function called when a new gradient has been defined. It is passed
|
|
21
|
+
* the `currentGradient` as an argument. When a predefined gradient is
|
|
22
|
+
* selected, the second argument is its index (or, for multiple-origin
|
|
23
|
+
* gradients, the origin index) and the third argument is its slug.
|
|
22
24
|
*/
|
|
23
|
-
onChange: (
|
|
25
|
+
onChange: (
|
|
26
|
+
currentGradient: string | undefined,
|
|
27
|
+
index?: number,
|
|
28
|
+
slug?: string
|
|
29
|
+
) => void;
|
|
24
30
|
/**
|
|
25
31
|
* The current value of the gradient. Pass a css gradient string (See default value for example).
|
|
26
32
|
* Optionally pass in a `null` value to specify no gradient is currently selected.
|
|
@@ -28,6 +34,19 @@ type GradientPickerBaseProps = {
|
|
|
28
34
|
* @default 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)'
|
|
29
35
|
*/
|
|
30
36
|
value?: GradientObject[ 'gradient' ] | null;
|
|
37
|
+
/**
|
|
38
|
+
* The slug of the currently selected predefined gradient.
|
|
39
|
+
*
|
|
40
|
+
* When set to a non-empty string, selection is determined by slug rather
|
|
41
|
+
* than by gradient value, which correctly handles palettes where two
|
|
42
|
+
* entries share the same gradient. Entries whose slug does not match will
|
|
43
|
+
* not appear selected in this mode, even if their gradient value matches
|
|
44
|
+
* `value`.
|
|
45
|
+
*
|
|
46
|
+
* An empty string is treated the same as `undefined`: selection falls
|
|
47
|
+
* back to matching by gradient value.
|
|
48
|
+
*/
|
|
49
|
+
selectedSlug?: string;
|
|
31
50
|
/**
|
|
32
51
|
* Whether the palette should have a clearing button or not.
|
|
33
52
|
*
|
|
@@ -121,7 +140,8 @@ export type PickerProps< TOriginType extends GradientObject | OriginObject > =
|
|
|
121
140
|
clearGradient: () => void;
|
|
122
141
|
onChange: (
|
|
123
142
|
currentGradient: string | undefined,
|
|
124
|
-
index: number
|
|
143
|
+
index: number,
|
|
144
|
+
slug?: string
|
|
125
145
|
) => void;
|
|
126
146
|
actions?: React.ReactNode;
|
|
127
147
|
gradients: TOriginType[];
|
|
@@ -37,7 +37,6 @@ export function UnforwardedInputControl(
|
|
|
37
37
|
// Prevent passing legacy props to internal components.
|
|
38
38
|
__next40pxDefaultSize: _next40pxDefaultSize,
|
|
39
39
|
__next36pxDefaultSize: _next36pxDefaultSize,
|
|
40
|
-
__shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
|
|
41
40
|
__unstableStateReducer: stateReducer = ( state ) => state,
|
|
42
41
|
__unstableInputWidth,
|
|
43
42
|
className,
|
|
@@ -157,7 +157,6 @@ export const fontSizeStyles = ( { inputSize: size }: InputProps ) => {
|
|
|
157
157
|
default: '13px',
|
|
158
158
|
small: '11px',
|
|
159
159
|
compact: '13px',
|
|
160
|
-
'__unstable-large': '13px',
|
|
161
160
|
};
|
|
162
161
|
|
|
163
162
|
const fontSize = sizes[ size as Size ] || sizes.default;
|
|
@@ -200,13 +199,6 @@ export const getSizeConfig = ( { inputSize: size }: InputProps ) => {
|
|
|
200
199
|
paddingLeft: CONFIG.controlPaddingXSmall,
|
|
201
200
|
paddingRight: CONFIG.controlPaddingXSmall,
|
|
202
201
|
},
|
|
203
|
-
'__unstable-large': {
|
|
204
|
-
height: 40,
|
|
205
|
-
lineHeight: 1,
|
|
206
|
-
minHeight: 40,
|
|
207
|
-
paddingLeft: CONFIG.controlPaddingX,
|
|
208
|
-
paddingRight: CONFIG.controlPaddingX,
|
|
209
|
-
},
|
|
210
202
|
};
|
|
211
203
|
|
|
212
204
|
return sizes[ size as Size ] || sizes.default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
|
2
|
+
|
|
3
|
+
exports[`InputControl Legacy size support treats __unstable-large the same as default 1`] = `
|
|
4
|
+
Snapshot Diff:
|
|
5
|
+
Compared values have no visual difference.
|
|
6
|
+
`;
|
|
7
|
+
|
|
8
|
+
exports[`InputControl Legacy size support treats __unstable-large the same as default 2`] = `
|
|
9
|
+
Snapshot Diff:
|
|
10
|
+
Compared values have no visual difference.
|
|
11
|
+
`;
|
|
@@ -13,6 +13,7 @@ import { useState } from '@wordpress/element';
|
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
15
|
import BaseInputControl from '../';
|
|
16
|
+
import InputControlPrefixWrapper from '../input-prefix-wrapper';
|
|
16
17
|
|
|
17
18
|
const getInput = () => screen.getByTestId( 'input' );
|
|
18
19
|
|
|
@@ -207,4 +208,31 @@ describe( 'InputControl', () => {
|
|
|
207
208
|
expect( spyChange ).toHaveBeenLastCalledWith( 'this is meow' );
|
|
208
209
|
} );
|
|
209
210
|
} );
|
|
211
|
+
|
|
212
|
+
describe( 'Legacy size support', () => {
|
|
213
|
+
it( 'treats __unstable-large the same as default', () => {
|
|
214
|
+
const prefix = (
|
|
215
|
+
<InputControlPrefixWrapper>$</InputControlPrefixWrapper>
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
render( <InputControl label="Test" prefix={ prefix } /> );
|
|
219
|
+
render(
|
|
220
|
+
<InputControl
|
|
221
|
+
label="Test"
|
|
222
|
+
prefix={ prefix }
|
|
223
|
+
{ ...{ size: '__unstable-large' } }
|
|
224
|
+
/>
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
const [ defaultPrefixWrapper, legacyPrefixWrapper ] =
|
|
228
|
+
screen.getAllByText( '$' );
|
|
229
|
+
const [ defaultInput, legacyInput ] =
|
|
230
|
+
screen.getAllByTestId( 'input' );
|
|
231
|
+
|
|
232
|
+
expect( legacyPrefixWrapper ).toMatchStyleDiffSnapshot(
|
|
233
|
+
defaultPrefixWrapper
|
|
234
|
+
);
|
|
235
|
+
expect( legacyInput ).toMatchStyleDiffSnapshot( defaultInput );
|
|
236
|
+
} );
|
|
237
|
+
} );
|
|
210
238
|
} );
|
|
@@ -23,7 +23,7 @@ export type DragDirection = 'n' | 's' | 'e' | 'w';
|
|
|
23
23
|
|
|
24
24
|
export type DragProps = Parameters< Parameters< typeof useDrag >[ 0 ] >[ 0 ];
|
|
25
25
|
|
|
26
|
-
export type Size = 'default' | 'small' | 'compact'
|
|
26
|
+
export type Size = 'default' | 'small' | 'compact';
|
|
27
27
|
|
|
28
28
|
interface BaseProps {
|
|
29
29
|
__unstableInputWidth?: CSSProperties[ 'width' ];
|
|
@@ -199,13 +199,6 @@ export interface InputControlProps
|
|
|
199
199
|
* @ignore
|
|
200
200
|
*/
|
|
201
201
|
__next40pxDefaultSize?: boolean;
|
|
202
|
-
/**
|
|
203
|
-
* Do not throw a warning for the deprecated 36px default size.
|
|
204
|
-
* For internal components of other components that already throw the warning.
|
|
205
|
-
*
|
|
206
|
-
* @ignore
|
|
207
|
-
*/
|
|
208
|
-
__shouldNotWarnDeprecated36pxSize?: boolean;
|
|
209
202
|
__unstableStateReducer?: InputFieldProps[ 'stateReducer' ];
|
|
210
203
|
}
|
|
211
204
|
|
package/src/menu/README.md
CHANGED
|
@@ -19,8 +19,8 @@ component, and the `Menu.Popover` component.
|
|
|
19
19
|
|
|
20
20
|
### `as`
|
|
21
21
|
|
|
22
|
-
- Type: `
|
|
23
|
-
- Required:
|
|
22
|
+
- Type: `ElementType<any, keyof IntrinsicElements>`
|
|
23
|
+
- Required: Yes
|
|
24
24
|
|
|
25
25
|
The HTML element or React component to render the component as.
|
|
26
26
|
|
package/src/modal/test/index.tsx
CHANGED
|
@@ -8,6 +8,10 @@ import userEvent from '@testing-library/user-event';
|
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
import { useEffect, useState } from '@wordpress/element';
|
|
11
|
+
import {
|
|
12
|
+
getWpCompatOverlaySlot,
|
|
13
|
+
useEnableWpCompatOverlaySlot,
|
|
14
|
+
} from '@wordpress/ui';
|
|
11
15
|
|
|
12
16
|
/**
|
|
13
17
|
* Internal dependencies
|
|
@@ -254,6 +258,44 @@ describe( 'Modal', () => {
|
|
|
254
258
|
expect( container ).not.toHaveAttribute( 'aria-hidden' );
|
|
255
259
|
} );
|
|
256
260
|
|
|
261
|
+
it( 'keeps the @wordpress/ui compat overlay slot exposed while open', async () => {
|
|
262
|
+
const user = userEvent.setup();
|
|
263
|
+
|
|
264
|
+
const CompatOverlayDemo = () => {
|
|
265
|
+
useEnableWpCompatOverlaySlot();
|
|
266
|
+
useEffect( () => {
|
|
267
|
+
const slot = getWpCompatOverlaySlot();
|
|
268
|
+
return () => slot?.remove();
|
|
269
|
+
}, [] );
|
|
270
|
+
|
|
271
|
+
const [ isShown, setIsShown ] = useState( false );
|
|
272
|
+
return (
|
|
273
|
+
<>
|
|
274
|
+
<button onClick={ () => setIsShown( true ) }>
|
|
275
|
+
Open Modal
|
|
276
|
+
</button>
|
|
277
|
+
{ isShown && (
|
|
278
|
+
<Modal onRequestClose={ () => setIsShown( false ) }>
|
|
279
|
+
<p>Modal content</p>
|
|
280
|
+
</Modal>
|
|
281
|
+
) }
|
|
282
|
+
</>
|
|
283
|
+
);
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const { container } = render( <CompatOverlayDemo /> );
|
|
287
|
+
// Disable reason: The infrastructure slot has no semantic role.
|
|
288
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
289
|
+
const slot = document.querySelector( '[data-wp-compat-overlay-slot]' );
|
|
290
|
+
|
|
291
|
+
await user.click(
|
|
292
|
+
screen.getByRole( 'button', { name: 'Open Modal' } )
|
|
293
|
+
);
|
|
294
|
+
|
|
295
|
+
expect( container ).toHaveAttribute( 'aria-hidden', 'true' );
|
|
296
|
+
expect( slot ).toHaveAttribute( 'aria-hidden', 'false' );
|
|
297
|
+
} );
|
|
298
|
+
|
|
257
299
|
it( 'should render `headerActions` React nodes', async () => {
|
|
258
300
|
render(
|
|
259
301
|
<Modal
|
|
@@ -5,14 +5,7 @@ import type { InputControlProps } from '../input-control/types';
|
|
|
5
5
|
|
|
6
6
|
export type NumberControlProps = Omit<
|
|
7
7
|
InputControlProps,
|
|
8
|
-
| '
|
|
9
|
-
| 'min'
|
|
10
|
-
| 'max'
|
|
11
|
-
| 'required'
|
|
12
|
-
| 'step'
|
|
13
|
-
| 'type'
|
|
14
|
-
| 'value'
|
|
15
|
-
| '__next40pxDefaultSize'
|
|
8
|
+
'isDragEnabled' | 'min' | 'max' | 'required' | 'step' | 'type' | 'value'
|
|
16
9
|
> & {
|
|
17
10
|
/**
|
|
18
11
|
* If true, the default `input` HTML arrows will be hidden.
|
|
@@ -98,18 +91,4 @@ export type NumberControlProps = Omit<
|
|
|
98
91
|
* The value of the input.
|
|
99
92
|
*/
|
|
100
93
|
value?: number | string;
|
|
101
|
-
/**
|
|
102
|
-
* Do not throw a warning for the deprecated 36px default size.
|
|
103
|
-
* For internal components of other components that already throw the warning.
|
|
104
|
-
*
|
|
105
|
-
* @ignore
|
|
106
|
-
*/
|
|
107
|
-
__shouldNotWarnDeprecated36pxSize?: boolean;
|
|
108
|
-
/**
|
|
109
|
-
* Start opting into the larger default height that will become the default size in a future version.
|
|
110
|
-
*
|
|
111
|
-
* @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
|
|
112
|
-
* @ignore
|
|
113
|
-
*/
|
|
114
|
-
__next40pxDefaultSize?: boolean;
|
|
115
94
|
};
|