@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
package/src/private-apis.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { useDrag } from '@use-gesture/react';
|
|
|
9
9
|
import { positionToPlacement as __experimentalPopoverLegacyPositionToPlacement } from './popover/utils';
|
|
10
10
|
import { Menu } from './menu';
|
|
11
11
|
import { ComponentsContext } from './context/context-system-provider';
|
|
12
|
-
import Theme from './theme';
|
|
13
12
|
import { Tabs } from './tabs';
|
|
14
13
|
import { kebabCase, normalizeTextString } from './utils/strings';
|
|
15
14
|
import { withIgnoreIMEEvents } from './utils/with-ignore-ime-events';
|
|
@@ -39,7 +38,6 @@ lock( privateApis, {
|
|
|
39
38
|
__experimentalPopoverLegacyPositionToPlacement,
|
|
40
39
|
ComponentsContext,
|
|
41
40
|
Tabs,
|
|
42
|
-
Theme,
|
|
43
41
|
Menu,
|
|
44
42
|
kebabCase,
|
|
45
43
|
withIgnoreIMEEvents,
|
|
@@ -68,7 +68,6 @@ function UnforwardedRangeControl(
|
|
|
68
68
|
// Prevent passing legacy props to internal component.
|
|
69
69
|
__nextHasNoMarginBottom: _,
|
|
70
70
|
__next40pxDefaultSize: _next40pxDefaultSize,
|
|
71
|
-
__shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
|
|
72
71
|
afterIcon,
|
|
73
72
|
allowReset = false,
|
|
74
73
|
beforeIcon,
|
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
*/
|
|
14
14
|
import type { BaseControlProps } from '../base-control/types';
|
|
15
15
|
import type { IconType } from '../icon';
|
|
16
|
+
import type { NumberControlProps } from '../number-control/types';
|
|
16
17
|
|
|
17
18
|
export type NumericProps = {
|
|
18
19
|
/**
|
|
@@ -78,6 +79,7 @@ export type RangeControlProps = Pick<
|
|
|
78
79
|
BaseControlProps,
|
|
79
80
|
'__nextHasNoMarginBottom' | 'hideLabelFromVision' | 'help'
|
|
80
81
|
> &
|
|
82
|
+
Pick< NumberControlProps, '__next40pxDefaultSize' > &
|
|
81
83
|
MarksProps & {
|
|
82
84
|
/**
|
|
83
85
|
* If this property is added, an Icon component will be rendered
|
|
@@ -199,13 +201,6 @@ export type RangeControlProps = Pick<
|
|
|
199
201
|
* @default 10
|
|
200
202
|
*/
|
|
201
203
|
shiftStep?: number;
|
|
202
|
-
/**
|
|
203
|
-
* Start opting into the larger default height that will become the default size in a future version.
|
|
204
|
-
*
|
|
205
|
-
* @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
|
|
206
|
-
* @ignore
|
|
207
|
-
*/
|
|
208
|
-
__next40pxDefaultSize?: boolean;
|
|
209
204
|
/**
|
|
210
205
|
* Forcing the Tooltip UI to show or hide. This is overridden to `false`
|
|
211
206
|
* when `step` is set to the special string value `any`.
|
|
@@ -230,14 +225,6 @@ export type RangeControlProps = Pick<
|
|
|
230
225
|
* @default true
|
|
231
226
|
*/
|
|
232
227
|
withInputField?: boolean;
|
|
233
|
-
/**
|
|
234
|
-
* Do not throw a warning for the deprecated 36px default size.
|
|
235
|
-
* For internal components of other components that already throw the warning.
|
|
236
|
-
*
|
|
237
|
-
* @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
|
|
238
|
-
* @ignore
|
|
239
|
-
*/
|
|
240
|
-
__shouldNotWarnDeprecated36pxSize?: boolean;
|
|
241
228
|
};
|
|
242
229
|
|
|
243
230
|
export type RailProps = MarksProps & {
|
package/src/sandbox/index.tsx
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* WordPress dependencies
|
|
3
8
|
*/
|
|
@@ -262,11 +267,16 @@ function IsolatedSandBox( {
|
|
|
262
267
|
scripts = [],
|
|
263
268
|
onFocus,
|
|
264
269
|
tabIndex,
|
|
270
|
+
allowPopups = false,
|
|
265
271
|
}: SandBoxContentProps ) {
|
|
266
272
|
const ref = useRef< HTMLIFrameElement >( null );
|
|
267
273
|
const [ width, setWidth ] = useState( 0 );
|
|
268
274
|
const [ height, setHeight ] = useState( 0 );
|
|
269
275
|
|
|
276
|
+
const sandbox = clsx( 'allow-scripts', 'allow-presentation', {
|
|
277
|
+
'allow-popups': allowPopups,
|
|
278
|
+
} );
|
|
279
|
+
|
|
270
280
|
const srcDoc = useMemo(
|
|
271
281
|
() =>
|
|
272
282
|
buildSandBoxDocument( {
|
|
@@ -351,7 +361,7 @@ function IsolatedSandBox( {
|
|
|
351
361
|
title={ title }
|
|
352
362
|
tabIndex={ tabIndex }
|
|
353
363
|
className="components-sandbox"
|
|
354
|
-
sandbox=
|
|
364
|
+
sandbox={ sandbox }
|
|
355
365
|
srcDoc={ srcDoc }
|
|
356
366
|
onFocus={ onFocus }
|
|
357
367
|
width={ Math.ceil( width ) }
|
|
@@ -382,11 +392,21 @@ function SameOriginSandBox( {
|
|
|
382
392
|
scripts = [],
|
|
383
393
|
onFocus,
|
|
384
394
|
tabIndex,
|
|
395
|
+
allowPopups = false,
|
|
385
396
|
}: SandBoxContentProps ) {
|
|
386
397
|
const ref = useRef< HTMLIFrameElement >( null );
|
|
387
398
|
const [ width, setWidth ] = useState( 0 );
|
|
388
399
|
const [ height, setHeight ] = useState( 0 );
|
|
389
400
|
|
|
401
|
+
const sandbox = clsx(
|
|
402
|
+
'allow-scripts',
|
|
403
|
+
'allow-same-origin',
|
|
404
|
+
'allow-presentation',
|
|
405
|
+
{
|
|
406
|
+
'allow-popups': allowPopups,
|
|
407
|
+
}
|
|
408
|
+
);
|
|
409
|
+
|
|
390
410
|
function isFrameAccessible() {
|
|
391
411
|
try {
|
|
392
412
|
return !! ref.current?.contentDocument?.body;
|
|
@@ -510,7 +530,7 @@ function SameOriginSandBox( {
|
|
|
510
530
|
title={ title }
|
|
511
531
|
tabIndex={ tabIndex }
|
|
512
532
|
className="components-sandbox"
|
|
513
|
-
sandbox=
|
|
533
|
+
sandbox={ sandbox }
|
|
514
534
|
onFocus={ onFocus }
|
|
515
535
|
width={ Math.ceil( width ) }
|
|
516
536
|
height={ Math.ceil( height ) }
|
|
@@ -49,6 +49,27 @@ describe( 'SandBox', () => {
|
|
|
49
49
|
);
|
|
50
50
|
} );
|
|
51
51
|
|
|
52
|
+
it( 'should not include allow-popups by default', () => {
|
|
53
|
+
render( <SandBox html="<p>Hello</p>" title="No Popups" /> );
|
|
54
|
+
|
|
55
|
+
const iframe = screen.getByTitle< HTMLIFrameElement >( 'No Popups' );
|
|
56
|
+
|
|
57
|
+
expect( iframe.getAttribute( 'sandbox' ) ).not.toContain(
|
|
58
|
+
'allow-popups'
|
|
59
|
+
);
|
|
60
|
+
} );
|
|
61
|
+
|
|
62
|
+
it( 'should include allow-popups when allowPopups is set', () => {
|
|
63
|
+
render( <SandBox html="<p>Hello</p>" title="Popups" allowPopups /> );
|
|
64
|
+
|
|
65
|
+
const iframe = screen.getByTitle< HTMLIFrameElement >( 'Popups' );
|
|
66
|
+
|
|
67
|
+
expect( iframe ).toHaveAttribute(
|
|
68
|
+
'sandbox',
|
|
69
|
+
'allow-scripts allow-presentation allow-popups'
|
|
70
|
+
);
|
|
71
|
+
} );
|
|
72
|
+
|
|
52
73
|
it( 'should set srcdoc with the provided html content', () => {
|
|
53
74
|
render( <SandBox html="<p>Hello</p>" title="Test Title" /> );
|
|
54
75
|
|
package/src/sandbox/types.ts
CHANGED
|
@@ -10,6 +10,17 @@ export type SandBoxProps = {
|
|
|
10
10
|
* @default false
|
|
11
11
|
*/
|
|
12
12
|
allowSameOrigin?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Whether to include `allow-popups` in the iframe's sandbox attribute.
|
|
15
|
+
* When true, content inside the iframe is allowed to open new browsing
|
|
16
|
+
* contexts (e.g. links that open in a new tab, or `window.open`).
|
|
17
|
+
*
|
|
18
|
+
* Enable this for previews whose content includes links that should be
|
|
19
|
+
* followable, such as embeds.
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
allowPopups?: boolean;
|
|
13
24
|
/**
|
|
14
25
|
* The HTML to render in the body of the iframe document.
|
|
15
26
|
*
|
|
@@ -17,22 +17,15 @@ import deprecated from '@wordpress/deprecated';
|
|
|
17
17
|
* Internal dependencies
|
|
18
18
|
*/
|
|
19
19
|
import Button from '../button';
|
|
20
|
+
import InputControl from '../input-control';
|
|
21
|
+
import Icon from '../icon';
|
|
20
22
|
import { InputControlPrefixWrapper } from '../input-control/input-prefix-wrapper';
|
|
21
23
|
import { InputControlSuffixWrapper } from '../input-control/input-suffix-wrapper';
|
|
22
24
|
import type { WordPressComponentProps } from '../context/wordpress-component';
|
|
23
25
|
import type { SearchControlProps, SuffixItemProps } from './types';
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
function SuffixItem( {
|
|
27
|
-
searchRef,
|
|
28
|
-
value,
|
|
29
|
-
onChange,
|
|
30
|
-
onClose,
|
|
31
|
-
}: SuffixItemProps ) {
|
|
32
|
-
if ( ! onClose && ! value ) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
26
|
+
import styles from './style.module.scss';
|
|
35
27
|
|
|
28
|
+
function SuffixItem( { searchRef, onChange, onClose }: SuffixItemProps ) {
|
|
36
29
|
if ( onClose ) {
|
|
37
30
|
deprecated( '`onClose` prop in wp.components.SearchControl', {
|
|
38
31
|
since: '6.8',
|
|
@@ -86,32 +79,42 @@ function UnforwardedSearchControl(
|
|
|
86
79
|
SearchControl,
|
|
87
80
|
'components-search-control'
|
|
88
81
|
);
|
|
82
|
+
const hasSuffix = !! onClose || !! value;
|
|
89
83
|
|
|
90
84
|
return (
|
|
91
|
-
<
|
|
85
|
+
<InputControl
|
|
92
86
|
id={ instanceId }
|
|
93
87
|
hideLabelFromVision={ hideLabelFromVision }
|
|
94
88
|
label={ label }
|
|
95
89
|
ref={ useMergeRefs( [ searchRef, forwardedRef ] ) }
|
|
96
90
|
type="search"
|
|
97
91
|
size={ size }
|
|
98
|
-
className={ clsx(
|
|
92
|
+
className={ clsx(
|
|
93
|
+
styles.input,
|
|
94
|
+
'components-search-control',
|
|
95
|
+
className
|
|
96
|
+
) }
|
|
99
97
|
onChange={ ( nextValue?: string ) => onChange( nextValue ?? '' ) }
|
|
100
98
|
autoComplete="off"
|
|
101
99
|
placeholder={ placeholder }
|
|
102
100
|
value={ value ?? '' }
|
|
103
101
|
prefix={
|
|
104
102
|
<InputControlPrefixWrapper variant="icon">
|
|
105
|
-
<
|
|
103
|
+
<Icon
|
|
104
|
+
className={ styles.icon }
|
|
105
|
+
icon={ search }
|
|
106
|
+
fill="currentColor"
|
|
107
|
+
/>
|
|
106
108
|
</InputControlPrefixWrapper>
|
|
107
109
|
}
|
|
108
110
|
suffix={
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
hasSuffix && (
|
|
112
|
+
<SuffixItem
|
|
113
|
+
searchRef={ searchRef }
|
|
114
|
+
onChange={ onChange }
|
|
115
|
+
onClose={ onClose }
|
|
116
|
+
/>
|
|
117
|
+
)
|
|
115
118
|
}
|
|
116
119
|
{ ...filteredRestProps }
|
|
117
120
|
/>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.input {
|
|
2
|
+
input[type="search"] {
|
|
3
|
+
&::-webkit-search-decoration,
|
|
4
|
+
&::-webkit-search-cancel-button,
|
|
5
|
+
&::-webkit-search-results-button,
|
|
6
|
+
&::-webkit-search-results-decoration {
|
|
7
|
+
-webkit-appearance: none;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.icon {
|
|
13
|
+
&:dir(ltr) {
|
|
14
|
+
transform: scaleX(-1);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -59,16 +59,24 @@ describe( 'SearchControl', () => {
|
|
|
59
59
|
expect(
|
|
60
60
|
screen.queryByRole( 'button', { name: 'Reset search' } )
|
|
61
61
|
).not.toBeInTheDocument();
|
|
62
|
+
const paddingInlineEndWithoutSuffix =
|
|
63
|
+
getComputedStyle( searchInput ).paddingInlineEnd;
|
|
62
64
|
|
|
63
65
|
await type( 'test', searchInput );
|
|
64
66
|
const resetButton = screen.getByRole( 'button', {
|
|
65
67
|
name: 'Reset search',
|
|
66
68
|
} );
|
|
67
69
|
expect( resetButton ).toBeVisible();
|
|
70
|
+
expect( getComputedStyle( searchInput ).paddingInlineEnd ).not.toBe(
|
|
71
|
+
paddingInlineEndWithoutSuffix
|
|
72
|
+
);
|
|
68
73
|
|
|
69
74
|
await click( resetButton );
|
|
70
75
|
expect( searchInput ).toHaveValue( '' );
|
|
71
76
|
expect( onChangeSpy ).toHaveBeenLastCalledWith( '' );
|
|
77
|
+
expect( getComputedStyle( searchInput ).paddingInlineEnd ).toBe(
|
|
78
|
+
paddingInlineEndWithoutSuffix
|
|
79
|
+
);
|
|
72
80
|
} );
|
|
73
81
|
|
|
74
82
|
it( 'should render a Close button (instead of Reset) when onClose function is provided', async () => {
|
|
@@ -70,7 +70,7 @@ export type SearchControlProps = Pick< InputControlProps, 'help' | 'value' > & {
|
|
|
70
70
|
|
|
71
71
|
export type SuffixItemProps = Pick<
|
|
72
72
|
SearchControlProps,
|
|
73
|
-
'
|
|
73
|
+
'onChange' | 'onClose'
|
|
74
74
|
> & {
|
|
75
75
|
searchRef: React.RefObject< HTMLInputElement | null >;
|
|
76
76
|
};
|
|
@@ -50,7 +50,6 @@ function UnforwardedSelectControl< V extends string >(
|
|
|
50
50
|
__nextHasNoMarginBottom: _,
|
|
51
51
|
__next40pxDefaultSize: _next40pxDefaultSize,
|
|
52
52
|
__next36pxDefaultSize: _next36pxDefaultSize,
|
|
53
|
-
__shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
|
|
54
53
|
className,
|
|
55
54
|
disabled = false,
|
|
56
55
|
help,
|
|
@@ -76,12 +76,6 @@ const sizeStyles = ( { multiple, selectSize = 'default' }: SelectProps ) => {
|
|
|
76
76
|
paddingTop: 0,
|
|
77
77
|
paddingBottom: 0,
|
|
78
78
|
},
|
|
79
|
-
'__unstable-large': {
|
|
80
|
-
height: 40,
|
|
81
|
-
minHeight: 40,
|
|
82
|
-
paddingTop: 0,
|
|
83
|
-
paddingBottom: 0,
|
|
84
|
-
},
|
|
85
79
|
};
|
|
86
80
|
|
|
87
81
|
const style = sizes[ selectSize ] || sizes.default;
|
|
@@ -96,7 +90,6 @@ const sizePaddings = ( { multiple, selectSize = 'default' }: SelectProps ) => {
|
|
|
96
90
|
default: CONFIG.controlPaddingX,
|
|
97
91
|
small: CONFIG.controlPaddingXSmall,
|
|
98
92
|
compact: CONFIG.controlPaddingXSmall,
|
|
99
|
-
'__unstable-large': CONFIG.controlPaddingX,
|
|
100
93
|
};
|
|
101
94
|
|
|
102
95
|
const selectedPadding = padding[ selectSize ] || padding.default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
|
2
|
+
|
|
3
|
+
exports[`SelectControl 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[`SelectControl Legacy size support treats __unstable-large the same as default 2`] = `
|
|
9
|
+
Snapshot Diff:
|
|
10
|
+
Compared values have no visual difference.
|
|
11
|
+
`;
|
|
@@ -8,6 +8,7 @@ import userEvent from '@testing-library/user-event';
|
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
import SelectControl from '..';
|
|
11
|
+
import { InputControlPrefixWrapper } from '../../input-control/input-prefix-wrapper';
|
|
11
12
|
|
|
12
13
|
describe( 'SelectControl', () => {
|
|
13
14
|
it( 'should not render when no options or children are provided', () => {
|
|
@@ -225,4 +226,40 @@ describe( 'SelectControl', () => {
|
|
|
225
226
|
} );
|
|
226
227
|
} );
|
|
227
228
|
/* eslint-enable jest/expect-expect */
|
|
229
|
+
|
|
230
|
+
describe( 'Legacy size support', () => {
|
|
231
|
+
it( 'treats __unstable-large the same as default', () => {
|
|
232
|
+
const prefix = (
|
|
233
|
+
<InputControlPrefixWrapper>$</InputControlPrefixWrapper>
|
|
234
|
+
);
|
|
235
|
+
const options = [ { value: 'one', label: 'One' } ];
|
|
236
|
+
|
|
237
|
+
render(
|
|
238
|
+
<SelectControl
|
|
239
|
+
label="Test"
|
|
240
|
+
options={ options }
|
|
241
|
+
prefix={ prefix }
|
|
242
|
+
/>
|
|
243
|
+
);
|
|
244
|
+
render(
|
|
245
|
+
<SelectControl
|
|
246
|
+
label="Test"
|
|
247
|
+
options={ options }
|
|
248
|
+
prefix={ prefix }
|
|
249
|
+
// @ts-expect-error testing legacy runtime support for removed size type
|
|
250
|
+
size="__unstable-large"
|
|
251
|
+
/>
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
const [ defaultPrefixWrapper, legacyPrefixWrapper ] =
|
|
255
|
+
screen.getAllByText( '$' );
|
|
256
|
+
const [ defaultSelect, legacySelect ] =
|
|
257
|
+
screen.getAllByRole( 'combobox' );
|
|
258
|
+
|
|
259
|
+
expect( legacyPrefixWrapper ).toMatchStyleDiffSnapshot(
|
|
260
|
+
defaultPrefixWrapper
|
|
261
|
+
);
|
|
262
|
+
expect( legacySelect ).toMatchStyleDiffSnapshot( defaultSelect );
|
|
263
|
+
} );
|
|
264
|
+
} );
|
|
228
265
|
} );
|
|
@@ -35,13 +35,6 @@ type SelectControlBaseProps< V extends string > = Pick<
|
|
|
35
35
|
* @ignore
|
|
36
36
|
*/
|
|
37
37
|
__next40pxDefaultSize?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Do not throw a warning for the deprecated 36px default size.
|
|
40
|
-
* For internal components of other components that already throw the warning.
|
|
41
|
-
*
|
|
42
|
-
* @ignore
|
|
43
|
-
*/
|
|
44
|
-
__shouldNotWarnDeprecated36pxSize?: boolean;
|
|
45
38
|
/**
|
|
46
39
|
* An array of option property objects to be rendered,
|
|
47
40
|
* each with a `label` and `value` property, as well as any other
|
package/src/slot-fill/fill.tsx
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
1
|
import { useObservableValue } from '@wordpress/compose';
|
|
5
2
|
import {
|
|
6
3
|
useContext,
|
|
@@ -9,9 +6,6 @@ import {
|
|
|
9
6
|
createPortal,
|
|
10
7
|
} from '@wordpress/element';
|
|
11
8
|
|
|
12
|
-
/**
|
|
13
|
-
* Internal dependencies
|
|
14
|
-
*/
|
|
15
9
|
import SlotFillContext from './context';
|
|
16
10
|
import type { FillComponentProps } from './types';
|
|
17
11
|
import StyleProvider from '../style-provider';
|
|
@@ -62,9 +56,9 @@ export default function Fill( { name, children }: FillComponentProps ) {
|
|
|
62
56
|
: children;
|
|
63
57
|
|
|
64
58
|
// When using a `Fill`, the `children` will be rendered in the document of the
|
|
65
|
-
// `Slot`.
|
|
66
|
-
//
|
|
67
|
-
//
|
|
59
|
+
// `Slot`. Wrap the children in a `StyleProvider` so CSS module styles and
|
|
60
|
+
// legacy Emotion styles target that document/iframe instead of the document
|
|
61
|
+
// containing the `Fill`.
|
|
68
62
|
return createPortal(
|
|
69
63
|
<StyleProvider document={ portalEl.ownerDocument }>
|
|
70
64
|
{ wrappedChildren }
|
|
@@ -1,17 +1,34 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
1
|
import type { Meta, StoryFn } from '@storybook/react-vite';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
import {
|
|
5
|
+
createContext,
|
|
6
|
+
createPortal,
|
|
7
|
+
useContext,
|
|
8
|
+
useState,
|
|
9
|
+
} from '@wordpress/element';
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* Internal dependencies
|
|
13
|
-
*/
|
|
14
11
|
import { Slot, Fill, Provider as SlotFillProvider } from '../';
|
|
12
|
+
import { Spacer } from '../../spacer';
|
|
13
|
+
|
|
14
|
+
function IframePortal( { children }: { children: ReactNode } ) {
|
|
15
|
+
const [ bodyNode, setBodyNode ] = useState< HTMLElement | null >( null );
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<iframe
|
|
19
|
+
title="Cross-document SlotFill styles"
|
|
20
|
+
srcDoc="<!doctype html><html><body></body></html>"
|
|
21
|
+
onLoad={ ( event ) => {
|
|
22
|
+
setBodyNode(
|
|
23
|
+
event.currentTarget.contentDocument?.body ?? null
|
|
24
|
+
);
|
|
25
|
+
} }
|
|
26
|
+
style={ { border: 0, height: 160, width: '100%' } }
|
|
27
|
+
>
|
|
28
|
+
{ bodyNode && createPortal( children, bodyNode ) }
|
|
29
|
+
</iframe>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
15
32
|
|
|
16
33
|
const meta: Meta< typeof Slot > = {
|
|
17
34
|
tags: [ 'manifest' ],
|
|
@@ -143,3 +160,28 @@ export const WithContext: StoryFn< typeof Slot > = ( props ) => {
|
|
|
143
160
|
WithContext.args = {
|
|
144
161
|
...Default.args,
|
|
145
162
|
};
|
|
163
|
+
|
|
164
|
+
export const CrossDocumentStyles: StoryFn< typeof Slot > = () => {
|
|
165
|
+
return (
|
|
166
|
+
<SlotFillProvider>
|
|
167
|
+
<p>
|
|
168
|
+
The content below should have 32px of padding inside its
|
|
169
|
+
outline.
|
|
170
|
+
</p>
|
|
171
|
+
<IframePortal>
|
|
172
|
+
<Slot name="cross-document-styles" bubblesVirtually />
|
|
173
|
+
</IframePortal>
|
|
174
|
+
<Fill name="cross-document-styles">
|
|
175
|
+
<Spacer
|
|
176
|
+
padding={ 8 }
|
|
177
|
+
style={ {
|
|
178
|
+
display: 'inline-block',
|
|
179
|
+
outline: '2px solid currentColor',
|
|
180
|
+
} }
|
|
181
|
+
>
|
|
182
|
+
SCSS module styles rendered in another document
|
|
183
|
+
</Spacer>
|
|
184
|
+
</Fill>
|
|
185
|
+
</SlotFillProvider>
|
|
186
|
+
);
|
|
187
|
+
};
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { render, screen } from '@testing-library/react';
|
|
1
|
+
import { render, screen, within } from '@testing-library/react';
|
|
5
2
|
import userEvent from '@testing-library/user-event';
|
|
6
3
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
import { Component, createPortal, useState } from '@wordpress/element';
|
|
5
|
+
import { registerStyle } from '@wordpress/style-runtime';
|
|
6
|
+
|
|
10
7
|
import { Slot, Fill, Provider, useSlotFills } from '../';
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
function IframePortal( { children } ) {
|
|
10
|
+
const [ iframe, setIframe ] = useState( null );
|
|
11
|
+
const body = iframe?.contentDocument?.body;
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<iframe title="Slot document" ref={ setIframe }>
|
|
15
|
+
{ body && createPortal( children, body ) }
|
|
16
|
+
</iframe>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
16
19
|
|
|
17
20
|
class Filler extends Component {
|
|
18
21
|
constructor() {
|
|
@@ -287,6 +290,45 @@ describe( 'Slot', () => {
|
|
|
287
290
|
expect( console ).toHaveWarned();
|
|
288
291
|
} );
|
|
289
292
|
|
|
293
|
+
describe( 'cross-document styles', () => {
|
|
294
|
+
afterEach( () => {
|
|
295
|
+
delete globalThis.__wpStyleRuntime;
|
|
296
|
+
document.head.innerHTML = '';
|
|
297
|
+
} );
|
|
298
|
+
|
|
299
|
+
it( 'injects registered SCSS module styles into the Slot document', () => {
|
|
300
|
+
const styleHash = 'slot-fill-cross-document-style';
|
|
301
|
+
const css = '.slot-fill-cross-document{padding:32px;}';
|
|
302
|
+
|
|
303
|
+
// CSS module registration is skipped by the Jest transform, so mirror the
|
|
304
|
+
// generated production call explicitly.
|
|
305
|
+
registerStyle( styleHash, css );
|
|
306
|
+
|
|
307
|
+
render(
|
|
308
|
+
<Provider>
|
|
309
|
+
<IframePortal>
|
|
310
|
+
<Slot name="cross-document" bubblesVirtually />
|
|
311
|
+
</IframePortal>
|
|
312
|
+
<Fill name="cross-document">
|
|
313
|
+
<div className="slot-fill-cross-document">
|
|
314
|
+
Styled content
|
|
315
|
+
</div>
|
|
316
|
+
</Fill>
|
|
317
|
+
</Provider>
|
|
318
|
+
);
|
|
319
|
+
const iframeDocument =
|
|
320
|
+
screen.getByTitle( 'Slot document' ).contentDocument;
|
|
321
|
+
|
|
322
|
+
const styledElement = within( iframeDocument.body ).getByText(
|
|
323
|
+
'Styled content'
|
|
324
|
+
);
|
|
325
|
+
expect(
|
|
326
|
+
iframeDocument.defaultView.getComputedStyle( styledElement )
|
|
327
|
+
.padding
|
|
328
|
+
).toBe( '32px' );
|
|
329
|
+
} );
|
|
330
|
+
} );
|
|
331
|
+
|
|
290
332
|
describe.each( [ false, true ] )(
|
|
291
333
|
'bubblesVirtually %p',
|
|
292
334
|
( bubblesVirtually ) => {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
margin: 0;
|
|
24
24
|
background: $components-color-background;
|
|
25
25
|
color: $components-color-foreground;
|
|
26
|
-
@include input-control
|
|
26
|
+
@include input-control;
|
|
27
27
|
border-color: $components-color-border;
|
|
28
28
|
|
|
29
29
|
// Subtract 1px to account for the border, which isn't included on the element
|