@wordpress/components 35.0.0 → 35.0.1
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 +20 -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/color-palette/index.cjs +3 -0
- package/build/color-palette/index.cjs.map +2 -2
- package/build/custom-gradient-picker/gradient-bar/index.cjs.map +2 -2
- package/build/draggable/index.cjs +1 -1
- package/build/draggable/index.cjs.map +2 -2
- package/build/navigable-container/container.cjs +15 -21
- package/build/navigable-container/container.cjs.map +2 -2
- package/build/unit-control/utils.cjs +33 -35
- package/build/unit-control/utils.cjs.map +2 -2
- 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/color-palette/index.mjs +3 -0
- package/build-module/color-palette/index.mjs.map +2 -2
- package/build-module/custom-gradient-picker/gradient-bar/index.mjs.map +2 -2
- package/build-module/draggable/index.mjs +1 -1
- package/build-module/draggable/index.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/unit-control/utils.mjs +33 -35
- package/build-module/unit-control/utils.mjs.map +2 -2
- package/build-style/style-rtl.css +41 -10
- package/build-style/style.css +41 -10
- package/build-types/card/context.d.ts +3 -0
- package/build-types/card/context.d.ts.map +1 -0
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/gradient-bar/index.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/navigable-container/container.d.ts.map +1 -1
- 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/unit-control/utils.d.ts.map +1 -1
- package/build-types/validated-form-controls/components/combobox-control.d.ts +2 -2
- 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 +34 -32
- package/src/card/card/README.md +4 -4
- 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/confirm-dialog/README.md +1 -1
- package/src/custom-gradient-picker/gradient-bar/index.tsx +1 -1
- package/src/flex/flex/README.md +1 -1
- package/src/navigable-container/container.tsx +22 -30
- package/src/popover/README.md +1 -1
- package/src/scrollable/README.md +1 -1
- package/src/tooltip/style.scss +1 -1
- package/src/unit-control/utils.ts +33 -52
- 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/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
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
// noinspection DuplicatedCode
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* External dependencies
|
|
5
|
-
*/
|
|
6
|
-
import Clipboard from '@react-native-clipboard/clipboard';
|
|
7
|
-
import {
|
|
8
|
-
fireEvent,
|
|
9
|
-
initializeEditor,
|
|
10
|
-
waitForElementToBeRemoved,
|
|
11
|
-
} from 'test/helpers';
|
|
12
|
-
/**
|
|
13
|
-
* WordPress dependencies
|
|
14
|
-
*/
|
|
15
|
-
import { registerCoreBlocks } from '@wordpress/block-library';
|
|
16
|
-
import { getBlockTypes, unregisterBlockType } from '@wordpress/blocks';
|
|
17
|
-
import { __ } from '@wordpress/i18n';
|
|
18
|
-
|
|
19
|
-
// Mock debounce to prevent potentially belated state updates.
|
|
20
|
-
jest.mock( '@wordpress/compose/src/utils/debounce', () => ( {
|
|
21
|
-
debounce: ( fn ) => {
|
|
22
|
-
fn.cancel = jest.fn();
|
|
23
|
-
return fn;
|
|
24
|
-
},
|
|
25
|
-
} ) );
|
|
26
|
-
// Mock link suggestions that are fetched by the link picker
|
|
27
|
-
// when typing a search query.
|
|
28
|
-
jest.mock( '@wordpress/core-data/src/fetch', () => ( {
|
|
29
|
-
__experimentalFetchLinkSuggestions: jest.fn().mockResolvedValue( [ {} ] ),
|
|
30
|
-
} ) );
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Utility function to unregister all core block types previously registered
|
|
34
|
-
* when staging the Redux Store `beforeAll` integration tests start running.
|
|
35
|
-
*
|
|
36
|
-
* This should probably be extracted into a utility module for future tests.
|
|
37
|
-
*/
|
|
38
|
-
const unregisterBlocks = () => {
|
|
39
|
-
const blocks = getBlockTypes();
|
|
40
|
-
|
|
41
|
-
blocks.forEach( ( { name } ) => unregisterBlockType( name ) );
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* ### TODO
|
|
46
|
-
* + Try to figure out why I can't `console.log(JSON.stringify(subject.toJSON()))` anymore.
|
|
47
|
-
*/
|
|
48
|
-
describe.each( [
|
|
49
|
-
[
|
|
50
|
-
{
|
|
51
|
-
type: 'core/button',
|
|
52
|
-
initialHtml: `
|
|
53
|
-
<!-- wp:button {"style":{"border":{"radius":"5px"}}} -->
|
|
54
|
-
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" style="border-radius:5px">Link</a></div>
|
|
55
|
-
<!-- /wp:button -->
|
|
56
|
-
`,
|
|
57
|
-
toJSON: () => 'core/button',
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
[
|
|
61
|
-
{
|
|
62
|
-
type: 'core/image',
|
|
63
|
-
initialHtml: `
|
|
64
|
-
<!-- wp:image {"id":20,"sizeSlug":"large","linkDestination":"custom"} -->
|
|
65
|
-
<figure class="wp-block-image size-large">
|
|
66
|
-
<img class="wp-image-20" src="https://tonytahmouchtest.files.wordpress.com/2021/10/img_0111-2.jpg?w=1024" alt="" />
|
|
67
|
-
</figure>
|
|
68
|
-
<!-- /wp:image -->
|
|
69
|
-
`,
|
|
70
|
-
toJSON: () => 'core/image',
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
] )( '<LinkSettings/> from %j', ( { type, initialHtml } ) => {
|
|
74
|
-
beforeAll( () => {
|
|
75
|
-
registerCoreBlocks();
|
|
76
|
-
} );
|
|
77
|
-
|
|
78
|
-
afterAll( () => {
|
|
79
|
-
unregisterBlocks();
|
|
80
|
-
} );
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* GIVEN an EDITOR is displayed with an EDIT IMAGE BLOCK or EDIT BUTTON BLOCK;
|
|
84
|
-
* GIVEN the CLIPBOARD has a URL copied;
|
|
85
|
-
* WHEN the USER selects the SETTINGS BUTTON on the EDIT IMAGE BLOCK or EDIT BUTTON BLOCK;
|
|
86
|
-
*/
|
|
87
|
-
it( 'should display the LINK SETTINGS with an EMPTY LINK TO field.', async () => {
|
|
88
|
-
// Arrange.
|
|
89
|
-
const url = 'https://tonytahmouchtest.files.wordpress.com';
|
|
90
|
-
const subject = await initializeEditor( { initialHtml } );
|
|
91
|
-
Clipboard.getString.mockReturnValue( url );
|
|
92
|
-
|
|
93
|
-
// Act.
|
|
94
|
-
const [ block ] = await subject.findAllByLabelText(
|
|
95
|
-
type === 'core/image' ? /Image Block/ : /Button Block/
|
|
96
|
-
);
|
|
97
|
-
fireEvent.press( block );
|
|
98
|
-
fireEvent.press( block );
|
|
99
|
-
fireEvent.press( await subject.findByLabelText( 'Open Settings' ) );
|
|
100
|
-
|
|
101
|
-
// Assert.
|
|
102
|
-
const linkToField = await subject.findByLabelText(
|
|
103
|
-
`Link to, ${
|
|
104
|
-
type === 'core/image' ? 'None' : 'Search or type URL'
|
|
105
|
-
}`
|
|
106
|
-
);
|
|
107
|
-
expect( linkToField ).toBeTruthy();
|
|
108
|
-
} );
|
|
109
|
-
|
|
110
|
-
describe( '<LinkPicker/>', () => {
|
|
111
|
-
describe( 'Hide Clipboard Link Suggestion - Invalid URL in Clipboard', () => {
|
|
112
|
-
/**
|
|
113
|
-
* GIVEN a SETTINGS BOTTOM SHEET is displayed;
|
|
114
|
-
* GIVEN the CLIPBOARD has a NON-URL copied;
|
|
115
|
-
* GIVEN the STATE has NO URL;
|
|
116
|
-
* WHEN the USER selects the LINK TO cell;
|
|
117
|
-
*/
|
|
118
|
-
it( 'should display the LINK PICKER with NO FROM CLIPBOARD CELL.', async () => {
|
|
119
|
-
// Arrange.
|
|
120
|
-
const url = 'tonytahmouchtest.files.wordpress.com';
|
|
121
|
-
const subject = await initializeEditor( { initialHtml } );
|
|
122
|
-
Clipboard.getString.mockReturnValue( url );
|
|
123
|
-
|
|
124
|
-
// Act.
|
|
125
|
-
const [ block ] = await subject.findAllByLabelText(
|
|
126
|
-
type === 'core/image' ? /Image Block/ : /Button Block/
|
|
127
|
-
);
|
|
128
|
-
fireEvent.press( block );
|
|
129
|
-
fireEvent.press( block );
|
|
130
|
-
fireEvent.press( subject.getByLabelText( 'Open Settings' ) );
|
|
131
|
-
fireEvent.press(
|
|
132
|
-
subject.getByLabelText(
|
|
133
|
-
`Link to, ${
|
|
134
|
-
type === 'core/image'
|
|
135
|
-
? 'None'
|
|
136
|
-
: 'Search or type URL'
|
|
137
|
-
}`
|
|
138
|
-
)
|
|
139
|
-
);
|
|
140
|
-
if ( type === 'core/image' ) {
|
|
141
|
-
fireEvent.press( subject.getByLabelText( /Custom URL/ ) );
|
|
142
|
-
}
|
|
143
|
-
await subject.findByLabelText( 'Apply' );
|
|
144
|
-
|
|
145
|
-
// Assert.
|
|
146
|
-
expect(
|
|
147
|
-
subject.queryByLabelText( /Copy URL from the clipboard[,]/ )
|
|
148
|
-
).toBeNull();
|
|
149
|
-
} );
|
|
150
|
-
} );
|
|
151
|
-
|
|
152
|
-
describe( 'Hide Clipboard Link Suggestion - Valid and Same URL in Clipboard', () => {
|
|
153
|
-
/**
|
|
154
|
-
* GIVEN a SETTINGS BOTTOM SHEET is displayed;
|
|
155
|
-
* GIVEN the CLIPBOARD has a URL copied;
|
|
156
|
-
* GIVEN the STATE has the SAME URL as the CLIPBOARD;
|
|
157
|
-
* WHEN the USER selects the LINK TO cell;
|
|
158
|
-
*/
|
|
159
|
-
it( 'should display the LINK PICKER with NO FROM CLIPBOARD CELL.', async () => {
|
|
160
|
-
// Arrange.
|
|
161
|
-
const url = 'https://tonytahmouchtest.files.wordpress.com';
|
|
162
|
-
const subject = await initializeEditor( { initialHtml } );
|
|
163
|
-
Clipboard.getString.mockReturnValue( url );
|
|
164
|
-
|
|
165
|
-
// Act.
|
|
166
|
-
const [ block ] = await subject.findAllByLabelText(
|
|
167
|
-
type === 'core/image' ? /Image Block/ : /Button Block/
|
|
168
|
-
);
|
|
169
|
-
fireEvent.press( block );
|
|
170
|
-
fireEvent.press( block );
|
|
171
|
-
fireEvent.press( subject.getByLabelText( 'Open Settings' ) );
|
|
172
|
-
fireEvent.press(
|
|
173
|
-
subject.getByLabelText(
|
|
174
|
-
`Link to, ${
|
|
175
|
-
type === 'core/image'
|
|
176
|
-
? 'None'
|
|
177
|
-
: 'Search or type URL'
|
|
178
|
-
}`
|
|
179
|
-
)
|
|
180
|
-
);
|
|
181
|
-
if ( type === 'core/image' ) {
|
|
182
|
-
fireEvent.press(
|
|
183
|
-
subject.getByLabelText( 'Custom URL. Empty' )
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
fireEvent.press(
|
|
187
|
-
await subject.findByLabelText(
|
|
188
|
-
`Copy URL from the clipboard, ${ url }`
|
|
189
|
-
)
|
|
190
|
-
);
|
|
191
|
-
fireEvent.press(
|
|
192
|
-
await subject.findByLabelText(
|
|
193
|
-
`Link to, ${
|
|
194
|
-
type === 'core/image' ? 'Custom URL' : url
|
|
195
|
-
}`
|
|
196
|
-
)
|
|
197
|
-
);
|
|
198
|
-
|
|
199
|
-
if ( type === 'core/image' ) {
|
|
200
|
-
fireEvent.press(
|
|
201
|
-
subject.getByLabelText( `Custom URL, ${ url }` )
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
await waitForElementToBeRemoved( () =>
|
|
205
|
-
subject.getByTestId( 'link-picker-loading' )
|
|
206
|
-
);
|
|
207
|
-
await subject.findByLabelText( 'Apply' );
|
|
208
|
-
|
|
209
|
-
// Assert.
|
|
210
|
-
expect(
|
|
211
|
-
subject.queryByLabelText( /Copy URL from the clipboard[,]/ )
|
|
212
|
-
).toBeNull();
|
|
213
|
-
} );
|
|
214
|
-
} );
|
|
215
|
-
|
|
216
|
-
describe( 'Show Clipboard Link Suggestion - Valid and Different URL in Clipboard', () => {
|
|
217
|
-
/**
|
|
218
|
-
* GIVEN a SETTINGS BOTTOM SHEET is displayed;
|
|
219
|
-
* GIVEN the CLIPBOARD has a URL copied;
|
|
220
|
-
* GIVEN the STATE has NO URL;
|
|
221
|
-
* WHEN the USER selects the LINK TO cell;
|
|
222
|
-
*/
|
|
223
|
-
it(
|
|
224
|
-
'should display the LINK PICKER with the FROM CLIPBOARD CELL populated' +
|
|
225
|
-
' with the URL from the CLIPBOARD.',
|
|
226
|
-
async () => {
|
|
227
|
-
// Arrange.
|
|
228
|
-
const url = 'https://tonytahmouchtest.files.wordpress.com';
|
|
229
|
-
const subject = await initializeEditor( { initialHtml } );
|
|
230
|
-
Clipboard.getString.mockReturnValue( url );
|
|
231
|
-
|
|
232
|
-
// Act.
|
|
233
|
-
const [ block ] = await subject.findAllByLabelText(
|
|
234
|
-
type === 'core/image' ? /Image Block/ : /Button Block/
|
|
235
|
-
);
|
|
236
|
-
fireEvent.press( block );
|
|
237
|
-
fireEvent.press( block );
|
|
238
|
-
fireEvent.press(
|
|
239
|
-
subject.getByLabelText( 'Open Settings' )
|
|
240
|
-
);
|
|
241
|
-
fireEvent.press(
|
|
242
|
-
subject.getByLabelText(
|
|
243
|
-
`Link to, ${
|
|
244
|
-
type === 'core/image'
|
|
245
|
-
? 'None'
|
|
246
|
-
: 'Search or type URL'
|
|
247
|
-
}`
|
|
248
|
-
)
|
|
249
|
-
);
|
|
250
|
-
if ( type === 'core/image' ) {
|
|
251
|
-
fireEvent.press(
|
|
252
|
-
subject.getByLabelText( /Custom URL/ )
|
|
253
|
-
);
|
|
254
|
-
}
|
|
255
|
-
await subject.findByLabelText(
|
|
256
|
-
`Copy URL from the clipboard, ${ url }`
|
|
257
|
-
);
|
|
258
|
-
|
|
259
|
-
// Assert.
|
|
260
|
-
const clipboardUrl = await subject.findByText( url );
|
|
261
|
-
expect( clipboardUrl ).toBeTruthy();
|
|
262
|
-
const clipboardNote = await subject.findByText(
|
|
263
|
-
__( 'From clipboard' )
|
|
264
|
-
);
|
|
265
|
-
expect( clipboardNote ).toBeTruthy();
|
|
266
|
-
}
|
|
267
|
-
);
|
|
268
|
-
} );
|
|
269
|
-
|
|
270
|
-
describe( 'Press Clipboard Link Suggestion', () => {
|
|
271
|
-
/**
|
|
272
|
-
* GIVEN a LINK PICKER SHEET is displayed;
|
|
273
|
-
* GIVEN the FROM CLIPBOARD CELL is displayed;
|
|
274
|
-
* WHEN the FROM CLIPBOARD CELL is pressed;
|
|
275
|
-
*/
|
|
276
|
-
it(
|
|
277
|
-
'should display the LINK SETTINGS with the URL from the CLIPBOARD' +
|
|
278
|
-
' populated in the LINK TO field.',
|
|
279
|
-
async () => {
|
|
280
|
-
// Arrange.
|
|
281
|
-
const url = 'https://tonytahmouchtest.files.wordpress.com';
|
|
282
|
-
const subject = await initializeEditor( { initialHtml } );
|
|
283
|
-
Clipboard.getString.mockReturnValue( url );
|
|
284
|
-
|
|
285
|
-
// Act.
|
|
286
|
-
const [ block ] = await subject.findAllByLabelText(
|
|
287
|
-
type === 'core/image' ? /Image Block/ : /Button Block/
|
|
288
|
-
);
|
|
289
|
-
fireEvent.press( block );
|
|
290
|
-
fireEvent.press( block );
|
|
291
|
-
fireEvent.press(
|
|
292
|
-
subject.getByLabelText( 'Open Settings' )
|
|
293
|
-
);
|
|
294
|
-
fireEvent.press(
|
|
295
|
-
subject.getByLabelText(
|
|
296
|
-
`Link to, ${
|
|
297
|
-
type === 'core/image'
|
|
298
|
-
? 'None'
|
|
299
|
-
: 'Search or type URL'
|
|
300
|
-
}`
|
|
301
|
-
)
|
|
302
|
-
);
|
|
303
|
-
if ( type === 'core/image' ) {
|
|
304
|
-
fireEvent.press(
|
|
305
|
-
subject.getByLabelText( /Custom URL/ )
|
|
306
|
-
);
|
|
307
|
-
}
|
|
308
|
-
fireEvent.press(
|
|
309
|
-
await subject.findByLabelText(
|
|
310
|
-
`Copy URL from the clipboard, ${ url }`
|
|
311
|
-
)
|
|
312
|
-
);
|
|
313
|
-
|
|
314
|
-
// Assert.
|
|
315
|
-
const linkToField = await subject.findByLabelText(
|
|
316
|
-
`Link to, ${
|
|
317
|
-
type === 'core/image' ? 'Custom URL' : url
|
|
318
|
-
}`
|
|
319
|
-
);
|
|
320
|
-
expect( linkToField ).toBeTruthy();
|
|
321
|
-
}
|
|
322
|
-
);
|
|
323
|
-
} );
|
|
324
|
-
} );
|
|
325
|
-
} );
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Keyboard, Platform } from 'react-native';
|
|
5
|
-
import { render, fireEvent } from 'test/helpers';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Internal dependencies
|
|
9
|
-
*/
|
|
10
|
-
import LinkSettingsNavigation from '../link-settings-navigation';
|
|
11
|
-
|
|
12
|
-
beforeAll( () => {
|
|
13
|
-
jest.useFakeTimers( { legacyFakeTimers: true } );
|
|
14
|
-
} );
|
|
15
|
-
|
|
16
|
-
afterAll( () => {
|
|
17
|
-
jest.runOnlyPendingTimers();
|
|
18
|
-
jest.useRealTimers();
|
|
19
|
-
} );
|
|
20
|
-
|
|
21
|
-
jest.spyOn( Keyboard, 'dismiss' );
|
|
22
|
-
|
|
23
|
-
const subject = (
|
|
24
|
-
<LinkSettingsNavigation
|
|
25
|
-
setAttributes={ () => {} }
|
|
26
|
-
hasPicker
|
|
27
|
-
options={ {
|
|
28
|
-
url: {
|
|
29
|
-
label: 'Link URL',
|
|
30
|
-
placeholder: 'Add URL',
|
|
31
|
-
autoFocus: false,
|
|
32
|
-
},
|
|
33
|
-
} }
|
|
34
|
-
isVisible
|
|
35
|
-
withBottomSheet
|
|
36
|
-
/>
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
describe( 'Android', () => {
|
|
40
|
-
it( 'improves back animation performance by dismissing keyboard beforehand', async () => {
|
|
41
|
-
const screen = render( subject );
|
|
42
|
-
fireEvent.press( screen.getByText( 'Link to' ) );
|
|
43
|
-
// Await back button to allow async state updates to complete
|
|
44
|
-
const backButton = await screen.findByLabelText( 'Go back' );
|
|
45
|
-
Keyboard.dismiss.mockClear();
|
|
46
|
-
fireEvent.press( backButton );
|
|
47
|
-
|
|
48
|
-
expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
|
|
49
|
-
} );
|
|
50
|
-
|
|
51
|
-
it( 'improves apply animation performance by dismissing keyboard beforehand', async () => {
|
|
52
|
-
const screen = render( subject );
|
|
53
|
-
fireEvent.press( screen.getByText( 'Link to' ) );
|
|
54
|
-
// Await back button to allow async state updates to complete
|
|
55
|
-
const backButton = await screen.findByLabelText( 'Apply' );
|
|
56
|
-
Keyboard.dismiss.mockClear();
|
|
57
|
-
fireEvent.press( backButton );
|
|
58
|
-
|
|
59
|
-
expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
|
|
60
|
-
} );
|
|
61
|
-
} );
|
|
62
|
-
|
|
63
|
-
describe( 'iOS', () => {
|
|
64
|
-
const originalPlatform = Platform.OS;
|
|
65
|
-
beforeAll( () => {
|
|
66
|
-
Platform.OS = 'ios';
|
|
67
|
-
} );
|
|
68
|
-
|
|
69
|
-
afterAll( () => {
|
|
70
|
-
Platform.OS = originalPlatform;
|
|
71
|
-
} );
|
|
72
|
-
|
|
73
|
-
it( 'improves back animation performance by dismissing keyboard beforehand', async () => {
|
|
74
|
-
const screen = render( subject );
|
|
75
|
-
fireEvent.press( screen.getByText( 'Link to' ) );
|
|
76
|
-
// Await back button to allow async state updates to complete
|
|
77
|
-
const backButton = await screen.findByLabelText( 'Go back' );
|
|
78
|
-
Keyboard.dismiss.mockClear();
|
|
79
|
-
fireEvent.press( backButton );
|
|
80
|
-
|
|
81
|
-
expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
|
|
82
|
-
} );
|
|
83
|
-
|
|
84
|
-
it( 'improves apply animation performance by dismissing keyboard beforehand', async () => {
|
|
85
|
-
const screen = render( subject );
|
|
86
|
-
fireEvent.press( screen.getByText( 'Link to' ) );
|
|
87
|
-
// Await back button to allow async state updates to complete
|
|
88
|
-
const backButton = await screen.findByLabelText( 'Apply' );
|
|
89
|
-
Keyboard.dismiss.mockClear();
|
|
90
|
-
fireEvent.press( backButton );
|
|
91
|
-
|
|
92
|
-
expect( Keyboard.dismiss ).toHaveBeenCalledTimes( 1 );
|
|
93
|
-
} );
|
|
94
|
-
} );
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Component } from '@wordpress/element';
|
|
5
|
-
import { __ } from '@wordpress/i18n';
|
|
6
|
-
import {
|
|
7
|
-
requestMediaEditor,
|
|
8
|
-
mediaSources,
|
|
9
|
-
} from '@wordpress/react-native-bridge';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Internal dependencies
|
|
13
|
-
*/
|
|
14
|
-
import Picker from '../picker';
|
|
15
|
-
|
|
16
|
-
export const MEDIA_TYPE_IMAGE = 'image';
|
|
17
|
-
|
|
18
|
-
export const MEDIA_EDITOR = 'MEDIA_EDITOR';
|
|
19
|
-
|
|
20
|
-
const editOption = {
|
|
21
|
-
id: MEDIA_EDITOR,
|
|
22
|
-
value: MEDIA_EDITOR,
|
|
23
|
-
label: __( 'Edit' ),
|
|
24
|
-
requiresModal: true,
|
|
25
|
-
types: [ MEDIA_TYPE_IMAGE ],
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const replaceOption = {
|
|
29
|
-
id: mediaSources.deviceLibrary,
|
|
30
|
-
value: mediaSources.deviceLibrary,
|
|
31
|
-
label: __( 'Replace' ),
|
|
32
|
-
types: [ MEDIA_TYPE_IMAGE ],
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export class MediaEdit extends Component {
|
|
36
|
-
constructor( props ) {
|
|
37
|
-
super( props );
|
|
38
|
-
this.onPickerPresent = this.onPickerPresent.bind( this );
|
|
39
|
-
this.onPickerSelect = this.onPickerSelect.bind( this );
|
|
40
|
-
this.getMediaOptionsItems = this.getMediaOptionsItems.bind( this );
|
|
41
|
-
this.getDestructiveButtonIndex =
|
|
42
|
-
this.getDestructiveButtonIndex.bind( this );
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
getMediaOptionsItems() {
|
|
46
|
-
const { pickerOptions, openReplaceMediaOptions, source } = this.props;
|
|
47
|
-
|
|
48
|
-
return [
|
|
49
|
-
source?.uri && editOption,
|
|
50
|
-
openReplaceMediaOptions && replaceOption,
|
|
51
|
-
...( pickerOptions ? pickerOptions : [] ),
|
|
52
|
-
].filter( Boolean );
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getDestructiveButtonIndex() {
|
|
56
|
-
const options = this.getMediaOptionsItems();
|
|
57
|
-
const destructiveButtonIndex = options.findIndex(
|
|
58
|
-
( option ) => option?.destructiveButton
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
return destructiveButtonIndex !== -1
|
|
62
|
-
? destructiveButtonIndex + 1
|
|
63
|
-
: undefined;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
onPickerPresent() {
|
|
67
|
-
if ( this.picker ) {
|
|
68
|
-
this.picker.presentPicker();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
onPickerSelect( value ) {
|
|
73
|
-
const {
|
|
74
|
-
onSelect,
|
|
75
|
-
pickerOptions,
|
|
76
|
-
multiple = false,
|
|
77
|
-
openReplaceMediaOptions,
|
|
78
|
-
} = this.props;
|
|
79
|
-
|
|
80
|
-
switch ( value ) {
|
|
81
|
-
case MEDIA_EDITOR:
|
|
82
|
-
requestMediaEditor( this.props.source.uri, ( media ) => {
|
|
83
|
-
if ( ( multiple && media ) || ( media && media.id ) ) {
|
|
84
|
-
onSelect( media );
|
|
85
|
-
}
|
|
86
|
-
} );
|
|
87
|
-
break;
|
|
88
|
-
default:
|
|
89
|
-
const optionSelected =
|
|
90
|
-
pickerOptions &&
|
|
91
|
-
pickerOptions.find( ( option ) => option.id === value );
|
|
92
|
-
|
|
93
|
-
if ( optionSelected && optionSelected.onPress ) {
|
|
94
|
-
optionSelected.onPress();
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if ( openReplaceMediaOptions ) {
|
|
99
|
-
openReplaceMediaOptions();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
render() {
|
|
105
|
-
const mediaOptions = () => (
|
|
106
|
-
<Picker
|
|
107
|
-
hideCancelButton
|
|
108
|
-
ref={ ( instance ) => ( this.picker = instance ) }
|
|
109
|
-
options={ this.getMediaOptionsItems() }
|
|
110
|
-
leftAlign
|
|
111
|
-
onChange={ this.onPickerSelect }
|
|
112
|
-
// translators: %s: block title e.g: "Paragraph".
|
|
113
|
-
title={ __( 'Media options' ) }
|
|
114
|
-
destructiveButtonIndex={ this.getDestructiveButtonIndex() }
|
|
115
|
-
/>
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
return this.props.render( {
|
|
119
|
-
open: this.onPickerPresent,
|
|
120
|
-
mediaOptions,
|
|
121
|
-
} );
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export default MediaEdit;
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* External dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { View } from 'react-native';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* WordPress dependencies
|
|
8
|
-
*/
|
|
9
|
-
import { __ } from '@wordpress/i18n';
|
|
10
|
-
import { Component, Fragment } from '@wordpress/element';
|
|
11
|
-
import { usePreferredColorSchemeStyle } from '@wordpress/compose';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Internal dependencies
|
|
15
|
-
*/
|
|
16
|
-
import BottomSheet from '../bottom-sheet';
|
|
17
|
-
import styles from './styles.scss';
|
|
18
|
-
import PanelBody from '../../panel/body';
|
|
19
|
-
import TextControl from '../../text-control';
|
|
20
|
-
|
|
21
|
-
function Separator() {
|
|
22
|
-
const separatorStyle = usePreferredColorSchemeStyle(
|
|
23
|
-
styles[ 'components-picker__separator' ],
|
|
24
|
-
styles[ 'components-picker__separator--dark' ]
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
return <View style={ separatorStyle } />;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default class Picker extends Component {
|
|
31
|
-
constructor() {
|
|
32
|
-
super( ...arguments );
|
|
33
|
-
this.onClose = this.onClose.bind( this );
|
|
34
|
-
this.onCellPress = this.onCellPress.bind( this );
|
|
35
|
-
|
|
36
|
-
this.state = {
|
|
37
|
-
isVisible: false,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
presentPicker() {
|
|
42
|
-
this.setState( { isVisible: true } );
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
onClose() {
|
|
46
|
-
this.setState( { isVisible: false } );
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
onCellPress( value ) {
|
|
50
|
-
const { onChange } = this.props;
|
|
51
|
-
onChange( value );
|
|
52
|
-
this.onClose();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getOptions() {
|
|
56
|
-
const { options, leftAlign } = this.props;
|
|
57
|
-
|
|
58
|
-
return options.map( ( option ) => (
|
|
59
|
-
<Fragment key={ `${ option.label }-${ option.value }` }>
|
|
60
|
-
{ options.length > 1 && option.separated && <Separator /> }
|
|
61
|
-
<BottomSheet.Cell
|
|
62
|
-
icon={ option.icon }
|
|
63
|
-
leftAlign={ leftAlign }
|
|
64
|
-
label={ option.label }
|
|
65
|
-
separatorType="none"
|
|
66
|
-
onPress={ () => this.onCellPress( option.value ) }
|
|
67
|
-
disabled={ option.disabled }
|
|
68
|
-
style={
|
|
69
|
-
option.disabled &&
|
|
70
|
-
styles[ 'components-picker__button--disabled' ]
|
|
71
|
-
}
|
|
72
|
-
/>
|
|
73
|
-
</Fragment>
|
|
74
|
-
) );
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
render() {
|
|
78
|
-
const { hideCancelButton, title, testID } = this.props;
|
|
79
|
-
const { isVisible } = this.state;
|
|
80
|
-
|
|
81
|
-
return (
|
|
82
|
-
<BottomSheet
|
|
83
|
-
isVisible={ isVisible }
|
|
84
|
-
onClose={ this.onClose }
|
|
85
|
-
hideHeader
|
|
86
|
-
testID={ testID }
|
|
87
|
-
>
|
|
88
|
-
<PanelBody
|
|
89
|
-
title={ title }
|
|
90
|
-
style={ styles[ 'components-picker__panel' ] }
|
|
91
|
-
>
|
|
92
|
-
{ this.getOptions() }
|
|
93
|
-
{ ! hideCancelButton && (
|
|
94
|
-
<TextControl
|
|
95
|
-
label={ __( 'Cancel' ) }
|
|
96
|
-
onPress={ this.onClose }
|
|
97
|
-
separatorType="none"
|
|
98
|
-
/>
|
|
99
|
-
) }
|
|
100
|
-
</PanelBody>
|
|
101
|
-
</BottomSheet>
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
}
|