@wordpress/components 35.0.0 → 35.1.1-next.v.202606191442.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -1
- package/build/alignment-matrix-control/cell.cjs +1 -1
- package/build/alignment-matrix-control/cell.cjs.map +2 -2
- package/build/alignment-matrix-control/index.cjs +1 -1
- package/build/alignment-matrix-control/index.cjs.map +2 -2
- package/build/angle-picker-control/angle-circle.cjs +1 -1
- package/build/angle-picker-control/angle-circle.cjs.map +2 -2
- package/build/angle-picker-control/index.cjs +2 -2
- package/build/autocomplete/get-autocomplete-match.cjs.map +1 -1
- package/build/autocomplete/index.cjs.map +1 -1
- package/build/base-control/styles/base-control-styles.cjs +6 -6
- package/build/base-control/styles/base-control-styles.cjs.map +2 -2
- package/build/border-control/styles.cjs +17 -14
- package/build/border-control/styles.cjs.map +2 -2
- package/build/button/index.cjs +3 -7
- package/build/button/index.cjs.map +2 -2
- package/build/card/card-divider/hook.cjs.map +2 -2
- package/build/color-palette/index.cjs +3 -0
- package/build/color-palette/index.cjs.map +2 -2
- package/build/color-picker/component.cjs.map +1 -1
- package/build/custom-gradient-picker/gradient-bar/index.cjs.map +2 -2
- package/build/date-time/utils.cjs.map +1 -1
- package/build/draggable/index.cjs +1 -1
- package/build/draggable/index.cjs.map +2 -2
- package/build/external-link/index.cjs +1 -1
- package/build/external-link/index.cjs.map +1 -1
- package/build/menu/popover.cjs.map +1 -1
- package/build/menu/styles.cjs +17 -17
- package/build/menu/styles.cjs.map +2 -2
- package/build/modal/index.cjs.map +1 -1
- package/build/modal/use-modal-exit-animation.cjs +37 -52
- package/build/modal/use-modal-exit-animation.cjs.map +2 -2
- package/build/navigable-container/container.cjs +15 -21
- package/build/navigable-container/container.cjs.map +2 -2
- package/build/palette-edit/index.cjs +1 -1
- package/build/progress-bar/index.cjs +1 -1
- package/build/progress-bar/index.cjs.map +2 -2
- package/build/query-controls/index.cjs +2 -2
- package/build/query-controls/index.cjs.map +2 -2
- package/build/range-control/index.cjs.map +1 -1
- package/build/sandbox/index.cjs +7 -1
- package/build/sandbox/index.cjs.map +2 -2
- package/build/snackbar/index.cjs +1 -1
- package/build/spinner/styles.cjs +4 -4
- package/build/spinner/styles.cjs.map +2 -2
- package/build/tabs/index.cjs +0 -18
- package/build/tabs/index.cjs.map +2 -2
- package/build/tabs/tablist.cjs +5 -15
- package/build/tabs/tablist.cjs.map +2 -2
- package/build/tools-panel/styles.cjs +13 -13
- package/build/tools-panel/styles.cjs.map +2 -2
- package/build/tools-panel/tools-panel/hook.cjs.map +1 -1
- package/build/tree-select/index.cjs +1 -1
- package/build/tree-select/index.cjs.map +1 -1
- package/build/truncate/utils.cjs +1 -1
- package/build/truncate/utils.cjs.map +1 -1
- package/build/unit-control/utils.cjs +33 -35
- package/build/unit-control/utils.cjs.map +2 -2
- package/build/utils/colors-values.cjs +12 -12
- package/build/utils/colors-values.cjs.map +2 -2
- package/build/utils/config-values.cjs +2 -2
- package/build/utils/config-values.cjs.map +2 -2
- package/build/utils/dropdown-motion.cjs.map +2 -2
- package/build/utils/strings.cjs.map +1 -1
- package/build-module/alignment-matrix-control/cell.mjs +1 -1
- package/build-module/alignment-matrix-control/cell.mjs.map +2 -2
- package/build-module/alignment-matrix-control/index.mjs +1 -1
- package/build-module/alignment-matrix-control/index.mjs.map +2 -2
- package/build-module/angle-picker-control/angle-circle.mjs +1 -1
- package/build-module/angle-picker-control/angle-circle.mjs.map +2 -2
- package/build-module/angle-picker-control/index.mjs +2 -2
- package/build-module/autocomplete/get-autocomplete-match.mjs.map +1 -1
- package/build-module/autocomplete/index.mjs.map +1 -1
- package/build-module/base-control/styles/base-control-styles.mjs +6 -6
- package/build-module/base-control/styles/base-control-styles.mjs.map +2 -2
- package/build-module/border-control/styles.mjs +17 -14
- package/build-module/border-control/styles.mjs.map +2 -2
- package/build-module/button/index.mjs +2 -5
- package/build-module/button/index.mjs.map +2 -2
- package/build-module/card/card-divider/hook.mjs.map +2 -2
- package/build-module/color-palette/index.mjs +3 -0
- package/build-module/color-palette/index.mjs.map +2 -2
- package/build-module/color-picker/component.mjs.map +1 -1
- package/build-module/custom-gradient-picker/gradient-bar/index.mjs.map +2 -2
- package/build-module/date-time/utils.mjs.map +1 -1
- package/build-module/draggable/index.mjs +1 -1
- package/build-module/draggable/index.mjs.map +2 -2
- package/build-module/external-link/index.mjs +1 -1
- package/build-module/external-link/index.mjs.map +1 -1
- package/build-module/menu/popover.mjs.map +1 -1
- package/build-module/menu/styles.mjs +17 -17
- package/build-module/menu/styles.mjs.map +2 -2
- package/build-module/modal/index.mjs.map +1 -1
- package/build-module/modal/use-modal-exit-animation.mjs +37 -52
- package/build-module/modal/use-modal-exit-animation.mjs.map +2 -2
- package/build-module/navigable-container/container.mjs +16 -22
- package/build-module/navigable-container/container.mjs.map +2 -2
- package/build-module/palette-edit/index.mjs +1 -1
- package/build-module/progress-bar/index.mjs +1 -1
- package/build-module/progress-bar/index.mjs.map +2 -2
- package/build-module/query-controls/index.mjs +2 -2
- package/build-module/query-controls/index.mjs.map +2 -2
- package/build-module/range-control/index.mjs.map +1 -1
- package/build-module/sandbox/index.mjs +3 -1
- package/build-module/sandbox/index.mjs.map +2 -2
- package/build-module/snackbar/index.mjs +1 -1
- package/build-module/spinner/styles.mjs +4 -4
- package/build-module/spinner/styles.mjs.map +2 -2
- package/build-module/tabs/index.mjs +1 -19
- package/build-module/tabs/index.mjs.map +2 -2
- package/build-module/tabs/tablist.mjs +5 -15
- package/build-module/tabs/tablist.mjs.map +2 -2
- package/build-module/tools-panel/styles.mjs +13 -13
- package/build-module/tools-panel/styles.mjs.map +2 -2
- package/build-module/tools-panel/tools-panel/hook.mjs.map +1 -1
- package/build-module/tree-select/index.mjs +1 -1
- package/build-module/tree-select/index.mjs.map +1 -1
- package/build-module/truncate/utils.mjs +1 -1
- package/build-module/truncate/utils.mjs.map +1 -1
- package/build-module/unit-control/utils.mjs +33 -35
- package/build-module/unit-control/utils.mjs.map +2 -2
- package/build-module/utils/colors-values.mjs +12 -12
- package/build-module/utils/colors-values.mjs.map +2 -2
- package/build-module/utils/config-values.mjs +2 -2
- package/build-module/utils/config-values.mjs.map +2 -2
- package/build-module/utils/dropdown-motion.mjs.map +2 -2
- package/build-module/utils/strings.mjs.map +1 -1
- package/build-style/style-rtl.css +122 -91
- package/build-style/style.css +122 -91
- package/build-types/base-control/styles/base-control-styles.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/button/index.d.ts +0 -2
- package/build-types/button/index.d.ts.map +1 -1
- package/build-types/card/card-divider/hook.d.ts +1 -274
- package/build-types/card/card-divider/hook.d.ts.map +1 -1
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/composite/stories/index.story.d.ts.map +1 -1
- package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
- package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
- package/build-types/menu/styles.d.ts.map +1 -1
- package/build-types/menu/types.d.ts +2 -2
- package/build-types/navigable-container/container.d.ts.map +1 -1
- package/build-types/sandbox/index.d.ts +15 -0
- package/build-types/sandbox/index.d.ts.map +1 -1
- package/build-types/spinner/styles.d.ts.map +1 -1
- package/build-types/tabs/index.d.ts.map +1 -1
- package/build-types/tabs/tablist.d.ts.map +1 -1
- package/build-types/tools-panel/styles.d.ts.map +1 -1
- package/build-types/unit-control/utils.d.ts.map +1 -1
- package/build-types/utils/colors-values.d.ts.map +1 -1
- package/build-types/utils/dropdown-motion.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/combobox-control.d.ts +1 -1
- package/package.json +44 -36
- package/src/angle-picker-control/angle-circle.tsx +3 -3
- package/src/base-control/README.md +2 -2
- package/src/base-control/styles/base-control-styles.ts +1 -0
- package/src/border-control/styles.ts +1 -0
- package/src/button/index.tsx +2 -4
- package/src/button/style.scss +3 -3
- package/src/card/card/README.md +4 -4
- package/src/card/card-divider/hook.ts +5 -1
- package/src/card/test/__snapshots__/index.tsx.snap +3 -3
- package/src/checkbox-control/README.md +1 -1
- package/src/clipboard-button/README.md +4 -4
- package/src/color-palette/index.tsx +5 -0
- package/src/color-palette/test/index.tsx +30 -0
- package/src/combobox-control/README.md +1 -1
- package/src/composite/stories/index.story.tsx +5 -0
- package/src/confirm-dialog/README.md +1 -1
- package/src/confirm-dialog/stories/index.story.tsx +1 -0
- package/src/custom-gradient-picker/gradient-bar/index.tsx +1 -1
- package/src/dropdown/stories/index.story.tsx +5 -0
- package/src/dropdown-menu/style.scss +1 -1
- package/src/external-link/style.scss +4 -4
- package/src/flex/flex/README.md +1 -1
- package/src/form-toggle/style.scss +1 -1
- package/src/heading/test/__snapshots__/index.tsx.snap +4 -4
- package/src/menu/README.md +2 -2
- package/src/menu/styles.ts +2 -0
- package/src/menu/test/index.tsx +120 -87
- package/src/menu/types.ts +2 -2
- package/src/modal/style.scss +1 -1
- package/src/modal/use-modal-exit-animation.ts +2 -2
- package/src/navigable-container/container.tsx +22 -30
- package/src/notice/style.scss +11 -13
- package/src/panel/README.md +2 -0
- package/src/panel/stories/index.story.tsx +2 -2
- package/src/panel/style.scss +1 -1
- package/src/popover/README.md +1 -1
- package/src/radio-control/style.scss +1 -1
- package/src/sandbox/index.tsx +18 -1
- package/src/sandbox/test/index.tsx +44 -1
- package/src/scrollable/README.md +1 -1
- package/src/spinner/styles.ts +1 -0
- package/src/tab-panel/style.scss +6 -6
- package/src/tabs/index.tsx +1 -26
- package/src/tabs/tablist.tsx +5 -21
- package/src/tabs/test/index.tsx +16 -27
- package/src/text/test/__snapshots__/index.tsx.snap +3 -3
- package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +34 -26
- package/src/toolbar/toolbar-group/style.scss +2 -2
- package/src/tools-panel/styles.ts +1 -1
- package/src/tooltip/stories/index.story.tsx +2 -2
- package/src/tooltip/style.scss +1 -1
- package/src/unit-control/utils.ts +33 -52
- package/src/utils/colors-values.js +36 -16
- package/src/utils/config-values.js +2 -2
- package/src/utils/dropdown-motion.ts +6 -4
- package/src/utils/theme-variables.scss +18 -13
- package/build/mobile/image/constants.cjs +0 -34
- package/build/mobile/image/constants.cjs.map +0 -7
- package/build-module/mobile/image/constants.mjs +0 -9
- package/build-module/mobile/image/constants.mjs.map +0 -7
- package/build-types/mobile/image/constants.d.ts +0 -5
- package/build-types/mobile/image/constants.d.ts.map +0 -1
- package/src/autocomplete/autocompleter-ui.native.js +0 -211
- package/src/autocomplete/background-view.android.js +0 -25
- package/src/autocomplete/background-view.ios.js +0 -23
- package/src/autocomplete/style.android.scss +0 -7
- package/src/autocomplete/style.native.scss +0 -74
- package/src/base-control/index.native.js +0 -14
- package/src/button/index.native.js +0 -236
- package/src/button/style.native.scss +0 -9
- package/src/color-control/index.native.js +0 -24
- package/src/color-indicator/index.native.js +0 -80
- package/src/color-indicator/style.native.scss +0 -51
- package/src/color-palette/index.native.js +0 -360
- package/src/color-palette/style.native.scss +0 -49
- package/src/color-picker/hsv-color-picker.native.js +0 -88
- package/src/color-picker/hue-picker.native.js +0 -198
- package/src/color-picker/index.native.js +0 -215
- package/src/color-picker/saturation-picker.native.js +0 -167
- package/src/color-picker/style.native.scss +0 -87
- package/src/custom-gradient-picker/index.native.js +0 -110
- package/src/custom-gradient-picker/style.native.scss +0 -3
- package/src/dashicon/index.native.js +0 -18
- package/src/disabled/index.native.js +0 -10
- package/src/draggable/index.native.js +0 -234
- package/src/draggable/style.native.scss +0 -3
- package/src/draggable/test/index.native.js +0 -138
- package/src/dropdown/index.native.js +0 -59
- package/src/dropdown-menu/index.native.js +0 -152
- package/src/external-link/index.native.js +0 -25
- package/src/focal-point-picker/focal-point.native.js +0 -30
- package/src/focal-point-picker/index.native.js +0 -281
- package/src/focal-point-picker/tooltip/index.native.js +0 -144
- package/src/focal-point-picker/tooltip/style.native.scss +0 -42
- package/src/font-size-picker/index.native.js +0 -190
- package/src/font-size-picker/style.native.scss +0 -6
- package/src/footer-message-control/index.native.js +0 -14
- package/src/higher-order/with-focus-outside/index.native.js +0 -38
- package/src/index.native.js +0 -134
- package/src/keyboard-shortcuts/index.native.js +0 -2
- package/src/mobile/README.md +0 -3
- package/src/mobile/autocompletion-items.native.js +0 -11
- package/src/mobile/badge/README.md +0 -31
- package/src/mobile/badge/index.native.js +0 -27
- package/src/mobile/badge/style.scss +0 -18
- package/src/mobile/bottom-sheet/borderStyles.android.scss +0 -8
- package/src/mobile/bottom-sheet/borderStyles.ios.scss +0 -9
- package/src/mobile/bottom-sheet/bottom-sheet-context.native.js +0 -40
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/README.md +0 -101
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/bottom-sheet-navigation-context.native.js +0 -16
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +0 -193
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +0 -146
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/styles.native.scss +0 -11
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +0 -197
- package/src/mobile/bottom-sheet/button.native.js +0 -19
- package/src/mobile/bottom-sheet/cell.native.js +0 -464
- package/src/mobile/bottom-sheet/cellStyles.android.scss +0 -15
- package/src/mobile/bottom-sheet/cellStyles.ios.scss +0 -19
- package/src/mobile/bottom-sheet/chevron-back.native.js +0 -18
- package/src/mobile/bottom-sheet/color-cell.native.js +0 -35
- package/src/mobile/bottom-sheet/cycle-picker-cell.native.js +0 -31
- package/src/mobile/bottom-sheet/footer-message-cell.native.js +0 -23
- package/src/mobile/bottom-sheet/footer-message-link/README.md +0 -37
- package/src/mobile/bottom-sheet/footer-message-link/footer-message-link.native.js +0 -26
- package/src/mobile/bottom-sheet/footer-message-link/styles.native.scss +0 -7
- package/src/mobile/bottom-sheet/index.native.js +0 -646
- package/src/mobile/bottom-sheet/keyboard-avoiding-view.native.js +0 -125
- package/src/mobile/bottom-sheet/link-cell.native.js +0 -35
- package/src/mobile/bottom-sheet/link-suggestion-item-cell.native.js +0 -92
- package/src/mobile/bottom-sheet/link-suggestion-styles.native.scss +0 -27
- package/src/mobile/bottom-sheet/lock-icon/index.native.js +0 -19
- package/src/mobile/bottom-sheet/lock-icon/styles.native.scss +0 -8
- package/src/mobile/bottom-sheet/nav-bar/README.md +0 -63
- package/src/mobile/bottom-sheet/nav-bar/action-button.native.js +0 -30
- package/src/mobile/bottom-sheet/nav-bar/apply-button.native.js +0 -53
- package/src/mobile/bottom-sheet/nav-bar/back-button.native.js +0 -94
- package/src/mobile/bottom-sheet/nav-bar/heading.native.js +0 -33
- package/src/mobile/bottom-sheet/nav-bar/index.native.js +0 -23
- package/src/mobile/bottom-sheet/nav-bar/styles.native.scss +0 -69
- package/src/mobile/bottom-sheet/picker-cell.native.js +0 -40
- package/src/mobile/bottom-sheet/radio-cell.native.js +0 -39
- package/src/mobile/bottom-sheet/range-cell.native.js +0 -274
- package/src/mobile/bottom-sheet/range-cell.native.scss +0 -40
- package/src/mobile/bottom-sheet/range-text-input.native.js +0 -248
- package/src/mobile/bottom-sheet/ripple.native.js +0 -83
- package/src/mobile/bottom-sheet/ripple.native.scss +0 -11
- package/src/mobile/bottom-sheet/stepper-cell/index.native.js +0 -264
- package/src/mobile/bottom-sheet/stepper-cell/stepper.android.js +0 -78
- package/src/mobile/bottom-sheet/stepper-cell/stepper.ios.js +0 -64
- package/src/mobile/bottom-sheet/stepper-cell/style.native.scss +0 -89
- package/src/mobile/bottom-sheet/styles.native.scss +0 -333
- package/src/mobile/bottom-sheet/sub-sheet/README.md +0 -90
- package/src/mobile/bottom-sheet/sub-sheet/index.native.js +0 -49
- package/src/mobile/bottom-sheet/switch-cell.native.js +0 -75
- package/src/mobile/bottom-sheet/test/index.native.js +0 -24
- package/src/mobile/bottom-sheet/test/range-cell.native.js +0 -73
- package/src/mobile/bottom-sheet-select-control/README.md +0 -97
- package/src/mobile/bottom-sheet-select-control/index.native.js +0 -124
- package/src/mobile/bottom-sheet-select-control/style.native.scss +0 -3
- package/src/mobile/bottom-sheet-text-control/README.md +0 -98
- package/src/mobile/bottom-sheet-text-control/index.native.js +0 -104
- package/src/mobile/bottom-sheet-text-control/styles.scss +0 -25
- package/src/mobile/clipboard/index.native.js +0 -18
- package/src/mobile/color-settings/gradient-picker-screen.native.js +0 -37
- package/src/mobile/color-settings/index.native.js +0 -88
- package/src/mobile/color-settings/palette.screen.native.js +0 -232
- package/src/mobile/color-settings/picker-screen.native.js +0 -60
- package/src/mobile/color-settings/style.native.scss +0 -62
- package/src/mobile/color-settings/utils.native.js +0 -36
- package/src/mobile/cycle-select-control/README.md +0 -3
- package/src/mobile/cycle-select-control/index.native.js +0 -39
- package/src/mobile/dashicons/index.native.js +0 -22
- package/src/mobile/focal-point-settings-panel/index.native.js +0 -84
- package/src/mobile/focal-point-settings-panel/styles.native.scss +0 -3
- package/src/mobile/gradient/index.native.js +0 -188
- package/src/mobile/gradient/style.native.scss +0 -8
- package/src/mobile/gradient/test/index.native.js +0 -114
- package/src/mobile/gridicons/index.native.js +0 -39
- package/src/mobile/html-text-input/index.native.js +0 -169
- package/src/mobile/html-text-input/style.android.scss +0 -8
- package/src/mobile/html-text-input/style.ios.scss +0 -10
- package/src/mobile/html-text-input/style.scss +0 -45
- package/src/mobile/html-text-input/test/__snapshots__/index.native.js.snap +0 -48
- package/src/mobile/html-text-input/test/index.native.js +0 -118
- package/src/mobile/image/constants.js +0 -1
- package/src/mobile/image/icon-customize.native.js +0 -10
- package/src/mobile/image/icon-retry.native.js +0 -11
- package/src/mobile/image/image-editing-button.native.js +0 -63
- package/src/mobile/image/index.native.js +0 -401
- package/src/mobile/image/style.native.scss +0 -179
- package/src/mobile/image/utils/index.native.js +0 -58
- package/src/mobile/keyboard-avoiding-view/index.android.js +0 -8
- package/src/mobile/keyboard-avoiding-view/index.ios.js +0 -143
- package/src/mobile/keyboard-avoiding-view/styles.native.scss +0 -9
- package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -81
- package/src/mobile/keyboard-aware-flat-list/index.ios.js +0 -147
- package/src/mobile/keyboard-aware-flat-list/shared.native.js +0 -26
- package/src/mobile/keyboard-aware-flat-list/styles.native.scss +0 -8
- package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +0 -203
- package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-section.native.js +0 -142
- package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +0 -71
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +0 -82
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +0 -147
- package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +0 -87
- package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +0 -41
- package/src/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js +0 -100
- package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +0 -100
- package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +0 -36
- package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +0 -54
- package/src/mobile/layout-animation/index.native.js +0 -16
- package/src/mobile/link-picker/index.native.js +0 -160
- package/src/mobile/link-picker/link-picker-results.native.js +0 -129
- package/src/mobile/link-picker/link-picker-screen.native.js +0 -60
- package/src/mobile/link-picker/styles.native.scss +0 -45
- package/src/mobile/link-picker/test/performance/index.native.js +0 -35
- package/src/mobile/link-settings/index.native.js +0 -332
- package/src/mobile/link-settings/link-rel.native.js +0 -10
- package/src/mobile/link-settings/link-settings-navigation.native.js +0 -50
- package/src/mobile/link-settings/link-settings-screen.native.js +0 -44
- package/src/mobile/link-settings/style.native.scss +0 -4
- package/src/mobile/link-settings/test/edit.native.js +0 -325
- package/src/mobile/link-settings/test/link-settings-navigation.native.js +0 -94
- package/src/mobile/media-edit/index.native.js +0 -125
- package/src/mobile/picker/index.android.js +0 -104
- package/src/mobile/picker/index.ios.js +0 -96
- package/src/mobile/picker/styles.native.scss +0 -29
- package/src/mobile/segmented-control/index.native.js +0 -186
- package/src/mobile/segmented-control/style.native.scss +0 -99
- package/src/mobile/utils/alignments.native.js +0 -78
- package/src/mobile/utils/get-px-from-css-unit.native.js +0 -329
- package/src/mobile/utils/index.native.js +0 -12
- package/src/mobile/utils/test/get-px-from-css-unit.native.js +0 -172
- package/src/mobile/utils/test/index.native.js +0 -134
- package/src/mobile/utils/use-is-floating-keyboard.native.js +0 -31
- package/src/mobile/utils/use-unit-converter-to-mobile.native.js +0 -90
- package/src/notice/index.native.js +0 -123
- package/src/notice/list.native.js +0 -55
- package/src/notice/style.native.scss +0 -60
- package/src/panel/actions.native.js +0 -46
- package/src/panel/actions.native.scss +0 -12
- package/src/panel/body.native.js +0 -29
- package/src/panel/body.native.scss +0 -11
- package/src/panel/bottom-separator-cover.native.js +0 -27
- package/src/panel/bottom-separator-cover.native.scss +0 -9
- package/src/private-apis.native.js +0 -13
- package/src/query-controls/index.native.js +0 -103
- package/src/radio-control/index.native.js +0 -24
- package/src/range-control/index.native.js +0 -73
- package/src/resizable-box/index.native.js +0 -32
- package/src/resizable-box/style.native.scss +0 -14
- package/src/sandbox/index.native.js +0 -392
- package/src/sandbox/style.native.scss +0 -7
- package/src/search-control/index.native.js +0 -274
- package/src/search-control/platform-style.android.scss +0 -57
- package/src/search-control/platform-style.ios.scss +0 -43
- package/src/search-control/style.native.scss +0 -63
- package/src/select-control/index.native.js +0 -41
- package/src/slot-fill/index.native.js +0 -25
- package/src/spinner/index.native.js +0 -22
- package/src/spinner/style.native.scss +0 -4
- package/src/style-provider/index.native.js +0 -3
- package/src/text/index.native.js +0 -13
- package/src/text/styles/emotion-css.native.js +0 -6
- package/src/text/styles/font-family.native.js +0 -1
- package/src/text/styles/text-mixins.native.js +0 -163
- package/src/text-control/index.native.js +0 -41
- package/src/textarea-control/index.native.js +0 -26
- package/src/toggle-control/index.native.js +0 -31
- package/src/toolbar/toolbar/style.native.scss +0 -11
- package/src/toolbar/toolbar/toolbar-container.native.js +0 -8
- package/src/toolbar/toolbar-button/toolbar-button-container.native.js +0 -8
- package/src/toolbar/toolbar-group/style.native.scss +0 -10
- package/src/toolbar/toolbar-group/toolbar-group-collapsed.native.js +0 -36
- package/src/toolbar/toolbar-group/toolbar-group-container.native.js +0 -26
- package/src/toolbar/toolbar-item/index.native.js +0 -17
- package/src/tooltip/index.native.js +0 -292
- package/src/tooltip/style.native.scss +0 -39
- package/src/tooltip/test/index.native.js +0 -98
- package/src/unit-control/index.native.js +0 -202
- package/src/unit-control/style.native.scss +0 -19
|
@@ -6,7 +6,7 @@ import type { ForwardedRef } from 'react';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { forwardRef, useRef, useEffect
|
|
9
|
+
import { forwardRef, useRef, useEffect } from '@wordpress/element';
|
|
10
10
|
import { useMergeRefs } from '@wordpress/compose';
|
|
11
11
|
import { focus } from '@wordpress/dom';
|
|
12
12
|
|
|
@@ -29,6 +29,21 @@ function cycleValue( value: number, total: number, offset: number ) {
|
|
|
29
29
|
return nextValue;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
function getFocusableContext(
|
|
33
|
+
container: HTMLElement,
|
|
34
|
+
target: Element,
|
|
35
|
+
tabbableOnly: boolean
|
|
36
|
+
) {
|
|
37
|
+
const finder = tabbableOnly ? focus.tabbable : focus.focusable;
|
|
38
|
+
const focusables = finder.find( container );
|
|
39
|
+
|
|
40
|
+
const index = focusables.indexOf( target as HTMLElement );
|
|
41
|
+
if ( index > -1 ) {
|
|
42
|
+
return { index, target, focusables };
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
32
47
|
function UnforwardedNavigableContainer(
|
|
33
48
|
{
|
|
34
49
|
children,
|
|
@@ -44,33 +59,6 @@ function UnforwardedNavigableContainer(
|
|
|
44
59
|
) {
|
|
45
60
|
const containerRef = useRef< HTMLDivElement | null >( null );
|
|
46
61
|
|
|
47
|
-
const getFocusableIndex = useCallback(
|
|
48
|
-
( focusables: Element[], target: Element ) => {
|
|
49
|
-
return focusables.indexOf( target );
|
|
50
|
-
},
|
|
51
|
-
[]
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
const getFocusableContext = useCallback(
|
|
55
|
-
( target: Element ) => {
|
|
56
|
-
if ( ! containerRef.current ) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const finder = onlyBrowserTabstops
|
|
61
|
-
? focus.tabbable
|
|
62
|
-
: focus.focusable;
|
|
63
|
-
const focusables = finder.find( containerRef.current );
|
|
64
|
-
|
|
65
|
-
const index = getFocusableIndex( focusables, target );
|
|
66
|
-
if ( index > -1 && target ) {
|
|
67
|
-
return { index, target, focusables };
|
|
68
|
-
}
|
|
69
|
-
return null;
|
|
70
|
-
},
|
|
71
|
-
[ onlyBrowserTabstops, getFocusableIndex ]
|
|
72
|
-
);
|
|
73
|
-
|
|
74
62
|
useEffect( () => {
|
|
75
63
|
const container = containerRef.current;
|
|
76
64
|
if ( ! container ) {
|
|
@@ -114,7 +102,11 @@ function UnforwardedNavigableContainer(
|
|
|
114
102
|
return;
|
|
115
103
|
}
|
|
116
104
|
|
|
117
|
-
const context = getFocusableContext(
|
|
105
|
+
const context = getFocusableContext(
|
|
106
|
+
container!,
|
|
107
|
+
activeElement,
|
|
108
|
+
!! onlyBrowserTabstops
|
|
109
|
+
);
|
|
118
110
|
if ( ! context ) {
|
|
119
111
|
return;
|
|
120
112
|
}
|
|
@@ -151,7 +143,7 @@ function UnforwardedNavigableContainer(
|
|
|
151
143
|
stopNavigationEvents,
|
|
152
144
|
cycle,
|
|
153
145
|
onNavigate,
|
|
154
|
-
|
|
146
|
+
onlyBrowserTabstops,
|
|
155
147
|
] );
|
|
156
148
|
|
|
157
149
|
const mergedRef = useMergeRefs( [ containerRef, ref ] );
|
package/src/notice/style.scss
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@use "@wordpress/base-styles/variables" as *;
|
|
2
2
|
|
|
3
3
|
.components-notice {
|
|
4
|
-
--wp-components-notice-background-color: var(--wpds-color-
|
|
4
|
+
--wp-components-notice-background-color: var(--wpds-color-background-surface-info-weak);
|
|
5
5
|
--wp-components-notice-border-color: var(--wpds-color-stroke-surface-info);
|
|
6
|
-
--wp-components-notice-text-color: var(--wpds-color-
|
|
6
|
+
--wp-components-notice-text-color: var(--wpds-color-foreground-content-info);
|
|
7
7
|
|
|
8
8
|
box-sizing: border-box;
|
|
9
9
|
display: grid;
|
|
@@ -19,21 +19,21 @@
|
|
|
19
19
|
line-height: var(--wpds-typography-line-height-sm);
|
|
20
20
|
|
|
21
21
|
&.is-success {
|
|
22
|
-
--wp-components-notice-background-color: var(--wpds-color-
|
|
22
|
+
--wp-components-notice-background-color: var(--wpds-color-background-surface-success-weak);
|
|
23
23
|
--wp-components-notice-border-color: var(--wpds-color-stroke-surface-success);
|
|
24
|
-
--wp-components-notice-text-color: var(--wpds-color-
|
|
24
|
+
--wp-components-notice-text-color: var(--wpds-color-foreground-content-success);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
&.is-warning {
|
|
28
|
-
--wp-components-notice-background-color: var(--wpds-color-
|
|
28
|
+
--wp-components-notice-background-color: var(--wpds-color-background-surface-warning-weak);
|
|
29
29
|
--wp-components-notice-border-color: var(--wpds-color-stroke-surface-warning);
|
|
30
|
-
--wp-components-notice-text-color: var(--wpds-color-
|
|
30
|
+
--wp-components-notice-text-color: var(--wpds-color-foreground-content-warning);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
&.is-error {
|
|
34
|
-
--wp-components-notice-background-color: var(--wpds-color-
|
|
34
|
+
--wp-components-notice-background-color: var(--wpds-color-background-surface-error-weak);
|
|
35
35
|
--wp-components-notice-border-color: var(--wpds-color-stroke-surface-error);
|
|
36
|
-
--wp-components-notice-text-color: var(--wpds-color-
|
|
36
|
+
--wp-components-notice-text-color: var(--wpds-color-foreground-content-error);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -46,9 +46,7 @@
|
|
|
46
46
|
// consistent across variants, matching `@wordpress/ui` Notice (`.title` /
|
|
47
47
|
// `.description` always use `--text-vertical-padding` whether or not `CloseIcon`
|
|
48
48
|
// is rendered).
|
|
49
|
-
|
|
50
|
-
// land in `@wordpress/theme`.
|
|
51
|
-
padding-block: calc((#{$button-size-small} - 1lh) / 2);
|
|
49
|
+
padding-block: calc((var(--wpds-dimension-size-sm) - 1lh) / 2);
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
.components-notice__actions {
|
|
@@ -65,13 +63,13 @@
|
|
|
65
63
|
.components-notice__dismiss {
|
|
66
64
|
grid-column: 2;
|
|
67
65
|
grid-row: 1;
|
|
68
|
-
color: var(--wpds-color-
|
|
66
|
+
color: var(--wpds-color-foreground-interactive-neutral);
|
|
69
67
|
margin-inline-start: var(--wpds-dimension-gap-xs);
|
|
70
68
|
|
|
71
69
|
&:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):hover,
|
|
72
70
|
&:not(:disabled):not([aria-disabled="true"]):not(.is-secondary):active,
|
|
73
71
|
&:not(:disabled):not([aria-disabled="true"]):focus {
|
|
74
|
-
color: var(--wpds-color-
|
|
72
|
+
color: var(--wpds-color-foreground-interactive-neutral-active);
|
|
75
73
|
background-color: transparent;
|
|
76
74
|
}
|
|
77
75
|
|
package/src/panel/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Panels expand and collapse multiple sections of content.
|
|
4
4
|
|
|
5
|
+
The `Panel` family is intended for the block inspector sidebar. For collapsible sections elsewhere, use the [`CollapsibleCard`](https://wordpress.github.io/gutenberg/?path=/docs/design-system-components-collapsiblecard--docs) component instead.
|
|
6
|
+
|
|
5
7
|

|
|
6
8
|
|
|
7
9
|
## Design guidelines
|
|
@@ -17,7 +17,6 @@ import PanelBody from '../body';
|
|
|
17
17
|
import InputControl from '../../input-control';
|
|
18
18
|
|
|
19
19
|
const meta: Meta< typeof Panel > = {
|
|
20
|
-
tags: [ 'manifest' ],
|
|
21
20
|
title: 'Components/Containers/Panel',
|
|
22
21
|
id: 'components-panel',
|
|
23
22
|
component: Panel,
|
|
@@ -30,7 +29,8 @@ const meta: Meta< typeof Panel > = {
|
|
|
30
29
|
docs: { canvas: { sourceState: 'shown' } },
|
|
31
30
|
componentStatus: {
|
|
32
31
|
status: 'recommended',
|
|
33
|
-
whereUsed: '
|
|
32
|
+
whereUsed: 'editor',
|
|
33
|
+
notes: 'Intended for the block inspector sidebar. For collapsible sections elsewhere, use `CollapsibleCard` from `@wordpress/ui` instead.',
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
};
|
package/src/panel/style.scss
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
justify-content: space-between;
|
|
41
41
|
align-items: center;
|
|
42
42
|
padding: 0 $grid-unit-20;
|
|
43
|
-
border-bottom: $border-width solid
|
|
43
|
+
border-bottom: $border-width solid var(--wpds-color-stroke-surface-neutral);
|
|
44
44
|
|
|
45
45
|
// This helps ensure the correct panel height, including the border, avoiding subpixel rounding issues.
|
|
46
46
|
box-sizing: content-box;
|
package/src/popover/README.md
CHANGED
|
@@ -128,7 +128,7 @@ Show the popover fullscreen on mobile viewports.
|
|
|
128
128
|
|
|
129
129
|
Specifies whether the popover should flip across its axis if there isn't space for it in the normal placement.
|
|
130
130
|
|
|
131
|
-
When
|
|
131
|
+
When using a 'top' placement, the popover will switch to a 'bottom' placement. When using a 'left' placement, the popover will switch to a 'right' placement.
|
|
132
132
|
|
|
133
133
|
The popover will retain its alignment of 'start' or 'end' when flipping.
|
|
134
134
|
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
|
|
57
57
|
&:disabled {
|
|
58
58
|
background: $components-color-gray-100;
|
|
59
|
-
border: 1px solid
|
|
59
|
+
border: 1px solid var(--wpds-color-stroke-interactive-neutral-disabled);
|
|
60
60
|
opacity: 1; // Override style from wp-admin forms.css.
|
|
61
61
|
|
|
62
62
|
&:checked::before {
|
package/src/sandbox/index.tsx
CHANGED
|
@@ -17,6 +17,23 @@ import type { SandBoxProps } from './types';
|
|
|
17
17
|
|
|
18
18
|
type SandBoxContentProps = Omit< SandBoxProps, 'allowSameOrigin' >;
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Matches CSS viewport-relative length values such as `100vh`, `50.5vw`,
|
|
22
|
+
* and `.5dvh`. Used to strip viewport units from user-supplied HTML inside
|
|
23
|
+
* the sandbox iframe, because those units are relative to the iframe's
|
|
24
|
+
* own size and would create a measurement feedback loop with the
|
|
25
|
+
* resize observer.
|
|
26
|
+
*
|
|
27
|
+
* Exported for tests. NOTE: an identical regex literal is duplicated
|
|
28
|
+
* inside `observeAndResizeJS` below because that function is serialized
|
|
29
|
+
* via `.toString()` and embedded into the iframe's `srcdoc` — it has no
|
|
30
|
+
* access to this module's scope at runtime. If you change one, change
|
|
31
|
+
* the other; the "is embedded in the sandbox iframe srcdoc" test
|
|
32
|
+
* guards against drift.
|
|
33
|
+
*/
|
|
34
|
+
export const VIEWPORT_UNIT_VALUE_REGEX =
|
|
35
|
+
/^\d*\.?\d+(?:vw|vh|svw|lvw|dvw|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax)$/;
|
|
36
|
+
|
|
20
37
|
const observeAndResizeJS = function () {
|
|
21
38
|
const { MutationObserver } = window;
|
|
22
39
|
|
|
@@ -58,7 +75,7 @@ const observeAndResizeJS = function () {
|
|
|
58
75
|
[ 'width', 'height', 'minHeight', 'maxHeight' ] as const
|
|
59
76
|
).forEach( function ( style ) {
|
|
60
77
|
if (
|
|
61
|
-
|
|
78
|
+
/^\d*\.?\d+(?:vw|vh|svw|lvw|dvw|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax)$/.test(
|
|
62
79
|
ruleOrNode.style[ style ]
|
|
63
80
|
)
|
|
64
81
|
) {
|
|
@@ -11,7 +11,7 @@ import { useState } from '@wordpress/element';
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies
|
|
13
13
|
*/
|
|
14
|
-
import SandBox from '..';
|
|
14
|
+
import SandBox, { VIEWPORT_UNIT_VALUE_REGEX } from '..';
|
|
15
15
|
|
|
16
16
|
describe( 'SandBox', () => {
|
|
17
17
|
const TestWrapper = () => {
|
|
@@ -109,4 +109,47 @@ describe( 'SandBox', () => {
|
|
|
109
109
|
expect.stringContaining( 'https://another.super.embed' )
|
|
110
110
|
);
|
|
111
111
|
} );
|
|
112
|
+
|
|
113
|
+
describe( 'VIEWPORT_UNIT_VALUE_REGEX', () => {
|
|
114
|
+
it.each( [
|
|
115
|
+
'100vh',
|
|
116
|
+
'50vw',
|
|
117
|
+
'0vh',
|
|
118
|
+
'50.5vh',
|
|
119
|
+
'.5vh',
|
|
120
|
+
'100dvh',
|
|
121
|
+
'50svw',
|
|
122
|
+
'1lvi',
|
|
123
|
+
'100vmin',
|
|
124
|
+
'100vmax',
|
|
125
|
+
] )( 'matches viewport unit value %s', ( value ) => {
|
|
126
|
+
expect( VIEWPORT_UNIT_VALUE_REGEX.test( value ) ).toBe( true );
|
|
127
|
+
} );
|
|
128
|
+
|
|
129
|
+
it.each( [
|
|
130
|
+
'100px',
|
|
131
|
+
'50%',
|
|
132
|
+
'100',
|
|
133
|
+
'vh',
|
|
134
|
+
'.vh',
|
|
135
|
+
'calc(100vh - 10px)',
|
|
136
|
+
'100 vh',
|
|
137
|
+
'',
|
|
138
|
+
] )( 'does not match %s', ( value ) => {
|
|
139
|
+
expect( VIEWPORT_UNIT_VALUE_REGEX.test( value ) ).toBe( false );
|
|
140
|
+
} );
|
|
141
|
+
|
|
142
|
+
it( 'is embedded in the sandbox iframe srcdoc', () => {
|
|
143
|
+
// Guards against drift between the exported constant and
|
|
144
|
+
// the copy inlined into `observeAndResizeJS`, which is
|
|
145
|
+
// serialized via `.toString()` into the iframe srcdoc and
|
|
146
|
+
// cannot reference module-scope values at runtime.
|
|
147
|
+
render( <SandBox html="<p>x</p>" title="Regex Sync Test" /> );
|
|
148
|
+
const iframe =
|
|
149
|
+
screen.getByTitle< HTMLIFrameElement >( 'Regex Sync Test' );
|
|
150
|
+
const srcDoc = iframe.getAttribute( 'srcdoc' ) ?? '';
|
|
151
|
+
|
|
152
|
+
expect( srcDoc ).toContain( VIEWPORT_UNIT_VALUE_REGEX.source );
|
|
153
|
+
} );
|
|
154
|
+
} );
|
|
112
155
|
} );
|
package/src/scrollable/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
|
-
`Scrollable` is a layout component that content in a scrollable container.
|
|
7
|
+
`Scrollable` is a layout component that puts content in a scrollable container.
|
|
8
8
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
package/src/spinner/styles.ts
CHANGED
|
@@ -35,6 +35,7 @@ const commonPathProps = css`
|
|
|
35
35
|
stroke-width: 1.5px;
|
|
36
36
|
`;
|
|
37
37
|
|
|
38
|
+
// TODO: should use the `stroke-surface-neutral` WPDS token when refactored to SCSS modules
|
|
38
39
|
export const SpinnerTrack = styled.circle`
|
|
39
40
|
${ commonPathProps };
|
|
40
41
|
stroke: ${ COLORS.gray[ 300 ] };
|
package/src/tab-panel/style.scss
CHANGED
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
padding: 3px var(--wpds-dimension-padding-lg); // Use padding to offset the is-active border, this benefits Windows High Contrast mode
|
|
22
22
|
margin-left: 0;
|
|
23
23
|
font-weight: var(--wpds-typography-font-weight-regular);
|
|
24
|
-
color: var(--wpds-color-
|
|
24
|
+
color: var(--wpds-color-foreground-interactive-neutral);
|
|
25
25
|
|
|
26
26
|
&:disabled,
|
|
27
27
|
&[aria-disabled="true"] {
|
|
28
|
-
color: var(--wpds-color-
|
|
28
|
+
color: var(--wpds-color-foreground-interactive-neutral-disabled);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
&:not(:disabled, [aria-disabled="true"]):is(:hover, :focus-visible) {
|
|
32
|
-
color: var(--wpds-color-
|
|
32
|
+
color: var(--wpds-color-foreground-interactive-neutral-active);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
&:focus:not(:disabled) {
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
&:focus-visible::before {
|
|
88
88
|
box-shadow:
|
|
89
89
|
0 0 0 var(--wpds-border-width-focus)
|
|
90
|
-
var(--wpds-color-stroke-focus
|
|
90
|
+
var(--wpds-color-stroke-focus);
|
|
91
91
|
|
|
92
92
|
// Windows high contrast mode.
|
|
93
93
|
outline: 2px solid transparent;
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
&.is-active {
|
|
104
|
-
background: var(--wpds-color-
|
|
104
|
+
background: var(--wpds-color-background-interactive-neutral-weak-active);
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
}
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
&:focus-visible {
|
|
116
116
|
box-shadow:
|
|
117
117
|
0 0 0 var(--wpds-border-width-focus)
|
|
118
|
-
var(--wpds-color-stroke-focus
|
|
118
|
+
var(--wpds-color-stroke-focus);
|
|
119
119
|
|
|
120
120
|
// Windows high contrast mode.
|
|
121
121
|
outline: 2px solid transparent;
|
package/src/tabs/index.tsx
CHANGED
|
@@ -7,7 +7,7 @@ import * as Ariakit from '@ariakit/react';
|
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
9
|
import { useInstanceId } from '@wordpress/compose';
|
|
10
|
-
import {
|
|
10
|
+
import { useMemo } from '@wordpress/element';
|
|
11
11
|
import { isRTL } from '@wordpress/i18n';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -84,31 +84,6 @@ export const Tabs = Object.assign(
|
|
|
84
84
|
rtl: isRTL(),
|
|
85
85
|
} );
|
|
86
86
|
|
|
87
|
-
const { items, activeId } = Ariakit.useStoreState( store );
|
|
88
|
-
const { setActiveId } = store;
|
|
89
|
-
|
|
90
|
-
useEffect( () => {
|
|
91
|
-
requestAnimationFrame( () => {
|
|
92
|
-
const focusedElement =
|
|
93
|
-
items?.[ 0 ]?.element?.ownerDocument.activeElement;
|
|
94
|
-
|
|
95
|
-
if (
|
|
96
|
-
! focusedElement ||
|
|
97
|
-
! items.some( ( item ) => focusedElement === item.element )
|
|
98
|
-
) {
|
|
99
|
-
return; // Return early if no tabs are focused.
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// If, after ariakit re-computes the active tab, that tab doesn't match
|
|
103
|
-
// the currently focused tab, then we force an update to ariakit to avoid
|
|
104
|
-
// any mismatches, especially when navigating to previous/next tab with
|
|
105
|
-
// arrow keys.
|
|
106
|
-
if ( activeId !== focusedElement.id ) {
|
|
107
|
-
setActiveId( focusedElement.id );
|
|
108
|
-
}
|
|
109
|
-
} );
|
|
110
|
-
}, [ activeId, items, setActiveId ] );
|
|
111
|
-
|
|
112
87
|
const contextValue = useMemo(
|
|
113
88
|
() => ( {
|
|
114
89
|
store,
|
package/src/tabs/tablist.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import { useStoreState } from '@ariakit/react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -73,15 +73,14 @@ export const TabList = forwardRef<
|
|
|
73
73
|
>( function TabList( { children, ...otherProps }, ref ) {
|
|
74
74
|
const { store } = useTabsContext() ?? {};
|
|
75
75
|
|
|
76
|
-
const selectedId =
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const items = Ariakit.useStoreState( store, 'items' );
|
|
76
|
+
const selectedId = useStoreState( store, 'selectedId' );
|
|
77
|
+
const selectOnMove = useStoreState( store, 'selectOnMove' );
|
|
78
|
+
const items = useStoreState( store, 'items' );
|
|
80
79
|
const [ parent, setParent ] = useState< HTMLElement >();
|
|
81
80
|
const refs = useMergeRefs( [ ref, setParent ] );
|
|
82
81
|
|
|
83
82
|
const selectedItem = store?.item( selectedId );
|
|
84
|
-
const renderedItems =
|
|
83
|
+
const renderedItems = useStoreState( store, 'renderedItems' );
|
|
85
84
|
|
|
86
85
|
const selectedItemIndex =
|
|
87
86
|
renderedItems && selectedItem
|
|
@@ -110,20 +109,6 @@ export const TabList = forwardRef<
|
|
|
110
109
|
// Make sure selected tab is scrolled into view.
|
|
111
110
|
useScrollRectIntoView( parent, selectedRect );
|
|
112
111
|
|
|
113
|
-
const onBlur = () => {
|
|
114
|
-
if ( ! selectOnMove ) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// When automatic tab selection is on, make sure that the active tab is up
|
|
119
|
-
// to date with the selected tab when leaving the tablist. This makes sure
|
|
120
|
-
// that the selected tab will receive keyboard focus when tabbing back into
|
|
121
|
-
// the tablist.
|
|
122
|
-
if ( selectedId !== activeId ) {
|
|
123
|
-
store?.setActiveId( selectedId );
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
|
|
127
112
|
if ( ! store ) {
|
|
128
113
|
warning( '`Tabs.TabList` must be wrapped in a `Tabs` component.' );
|
|
129
114
|
return null;
|
|
@@ -141,7 +126,6 @@ export const TabList = forwardRef<
|
|
|
141
126
|
tabIndex={ props.tabIndex ?? -1 }
|
|
142
127
|
/>
|
|
143
128
|
) }
|
|
144
|
-
onBlur={ onBlur }
|
|
145
129
|
data-select-on-move={ selectOnMove ? 'true' : 'false' }
|
|
146
130
|
{ ...otherProps }
|
|
147
131
|
className={ clsx(
|
package/src/tabs/test/index.tsx
CHANGED
|
@@ -1465,28 +1465,24 @@ describe( 'Tabs', () => {
|
|
|
1465
1465
|
/>
|
|
1466
1466
|
);
|
|
1467
1467
|
|
|
1468
|
-
// When the selected tab is changed
|
|
1468
|
+
// When the selected tab is changed by the controlling
|
|
1469
|
+
// component while the tablist holds focus, focus moves to
|
|
1470
|
+
// the newly selected tab (Gamma).
|
|
1469
1471
|
expect(
|
|
1470
1472
|
screen.getByRole( 'tab', {
|
|
1471
1473
|
selected: true,
|
|
1472
1474
|
name: 'Gamma',
|
|
1473
1475
|
} )
|
|
1474
|
-
).toBeVisible();
|
|
1475
|
-
expect(
|
|
1476
|
-
screen.getByRole( 'tab', {
|
|
1477
|
-
selected: false,
|
|
1478
|
-
name: 'Beta',
|
|
1479
|
-
} )
|
|
1480
1476
|
).toHaveFocus();
|
|
1481
1477
|
|
|
1482
|
-
// Arrow left should move focus to the previous tab (
|
|
1483
|
-
//
|
|
1478
|
+
// Arrow left should move focus to the previous tab (Beta).
|
|
1479
|
+
// Beta should always be focused, and should be selected
|
|
1484
1480
|
// when the `selectOnMove` prop is set to `true`.
|
|
1485
1481
|
await press.ArrowLeft();
|
|
1486
1482
|
expect(
|
|
1487
1483
|
screen.getByRole( 'tab', {
|
|
1488
1484
|
selected: selectOnMove,
|
|
1489
|
-
name: '
|
|
1485
|
+
name: 'Beta',
|
|
1490
1486
|
} )
|
|
1491
1487
|
).toHaveFocus();
|
|
1492
1488
|
} );
|
|
@@ -1530,18 +1526,15 @@ describe( 'Tabs', () => {
|
|
|
1530
1526
|
</>
|
|
1531
1527
|
);
|
|
1532
1528
|
|
|
1533
|
-
// When the selected tab is changed
|
|
1529
|
+
// When the selected tab is changed by the controlling
|
|
1530
|
+
// component while the tablist holds focus, focus moves to
|
|
1531
|
+
// the newly selected tab (Gamma), which also becomes the
|
|
1532
|
+
// active tab.
|
|
1534
1533
|
expect(
|
|
1535
1534
|
screen.getByRole( 'tab', {
|
|
1536
1535
|
selected: true,
|
|
1537
1536
|
name: 'Gamma',
|
|
1538
1537
|
} )
|
|
1539
|
-
).toBeVisible();
|
|
1540
|
-
expect(
|
|
1541
|
-
screen.getByRole( 'tab', {
|
|
1542
|
-
selected: false,
|
|
1543
|
-
name: 'Beta',
|
|
1544
|
-
} )
|
|
1545
1538
|
).toHaveFocus();
|
|
1546
1539
|
|
|
1547
1540
|
// Press shift+tab, move focus to the button before Tabs
|
|
@@ -1550,18 +1543,14 @@ describe( 'Tabs', () => {
|
|
|
1550
1543
|
screen.getByRole( 'button', { name: 'Focus me' } )
|
|
1551
1544
|
).toHaveFocus();
|
|
1552
1545
|
|
|
1553
|
-
// Press tab, move focus back to the tablist
|
|
1546
|
+
// Press tab, move focus back to the tablist. Because the
|
|
1547
|
+
// newly selected tab became the active tab, focus returns
|
|
1548
|
+
// to Gamma regardless of `selectOnMove`.
|
|
1554
1549
|
await press.Tab();
|
|
1555
|
-
|
|
1556
|
-
const betaTab = screen.getByRole( 'tab', {
|
|
1557
|
-
name: 'Beta',
|
|
1558
|
-
} );
|
|
1559
|
-
const gammaTab = screen.getByRole( 'tab', {
|
|
1560
|
-
name: 'Gamma',
|
|
1561
|
-
} );
|
|
1562
|
-
|
|
1563
1550
|
expect(
|
|
1564
|
-
|
|
1551
|
+
screen.getByRole( 'tab', {
|
|
1552
|
+
name: 'Gamma',
|
|
1553
|
+
} )
|
|
1565
1554
|
).toHaveFocus();
|
|
1566
1555
|
} );
|
|
1567
1556
|
}
|
|
@@ -6,7 +6,7 @@ Snapshot Diff:
|
|
|
6
6
|
+ Base styles
|
|
7
7
|
|
|
8
8
|
@@ -3,8 +3,9 @@
|
|
9
|
-
"color": "var(--wp-components-color-foreground, #1e1e1e)",
|
|
9
|
+
"color": "var(--wp-components-color-foreground, var(--wpds-color-foreground-content-neutral, #1e1e1e))",
|
|
10
10
|
"font-size": "calc((13 / 13) * 13px)",
|
|
11
11
|
"font-weight": "normal",
|
|
12
12
|
"line-height": "1.4",
|
|
@@ -19,7 +19,7 @@ Snapshot Diff:
|
|
|
19
19
|
|
|
20
20
|
exports[`Text should render highlighted words with highlightCaseSensitive 1`] = `
|
|
21
21
|
.emotion-0 {
|
|
22
|
-
color: var(--wp-components-color-foreground, #1e1e1e);
|
|
22
|
+
color: var(--wp-components-color-foreground, var(--wpds-color-foreground-content-neutral, #1e1e1e));
|
|
23
23
|
line-height: 1.4;
|
|
24
24
|
margin: 0;
|
|
25
25
|
text-wrap: pretty;
|
|
@@ -51,7 +51,7 @@ exports[`Text should render highlighted words with highlightCaseSensitive 1`] =
|
|
|
51
51
|
|
|
52
52
|
exports[`Text snapshot tests should render correctly 1`] = `
|
|
53
53
|
.emotion-0 {
|
|
54
|
-
color: var(--wp-components-color-foreground, #1e1e1e);
|
|
54
|
+
color: var(--wp-components-color-foreground, var(--wpds-color-foreground-content-neutral, #1e1e1e));
|
|
55
55
|
line-height: 1.4;
|
|
56
56
|
margin: 0;
|
|
57
57
|
text-wrap: pretty;
|